@annotorious/core 3.0.6 → 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,43 +21,43 @@ 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
27
  const x = [];
28
28
  function M(e, n = _) {
29
29
  let t;
30
30
  const o = /* @__PURE__ */ new Set();
31
- function r(v) {
32
- if (X(e, v) && (e = v, t)) {
31
+ function d(v) {
32
+ if (Z(e, v) && (e = v, t)) {
33
33
  const w = !x.length;
34
- for (const p of o)
35
- p[1](), x.push(p, e);
34
+ for (const g of o)
35
+ g[1](), x.push(g, e);
36
36
  if (w) {
37
- for (let p = 0; p < x.length; p += 2)
38
- x[p][0](x[p + 1]);
37
+ for (let g = 0; g < x.length; g += 2)
38
+ x[g][0](x[g + 1]);
39
39
  x.length = 0;
40
40
  }
41
41
  }
42
42
  }
43
- function g(v) {
44
- r(v(e));
43
+ function p(v) {
44
+ d(v(e));
45
45
  }
46
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);
47
+ const g = [v, w];
48
+ return o.add(g), o.size === 1 && (t = n(d, p) || _), v(e), () => {
49
+ o.delete(g), o.size === 0 && t && (t(), t = null);
50
50
  };
51
51
  }
52
- return { set: r, update: g, subscribe: m };
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((r) => o = r), e.observe(({ changes: r }) => {
57
+ return n((d) => o = d), e.observe(({ changes: d }) => {
58
58
  if (o) {
59
- (r.deleted || []).some((v) => v.id === o) && t(void 0);
60
- const m = (r.updated || []).find(({ oldValue: v }) => v.id === o);
59
+ (d.deleted || []).some((v) => v.id === o) && t(void 0);
60
+ const m = (d.updated || []).find(({ oldValue: v }) => v.id === o);
61
61
  m && t(m.newValue.id);
62
62
  }
63
63
  }), {
@@ -68,53 +68,53 @@ 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 || {});
71
+ var F = /* @__PURE__ */ ((e) => (e.EDIT = "EDIT", e.SELECT = "SELECT", e.NONE = "NONE", e))(F || {});
72
72
  const z = { selected: [] }, Te = (e, n, t) => {
73
- const { subscribe: o, set: r } = M(z);
74
- let g = n, m = z;
73
+ const { subscribe: o, set: d } = M(z);
74
+ let p = n, m = z;
75
75
  o((h) => m = h);
76
76
  const v = () => {
77
- I(m, z) || r(z);
77
+ I(m, z) || d(z);
78
78
  }, w = () => {
79
79
  var h;
80
80
  return ((h = m.selected) == null ? void 0 : h.length) === 0;
81
- }, p = (h) => {
81
+ }, g = (h) => {
82
82
  if (w())
83
83
  return !1;
84
- const y = typeof h == "string" ? h : h.id;
85
- return m.selected.some((O) => O.id === y);
86
- }, L = (h, y) => {
84
+ const C = typeof h == "string" ? h : h.id;
85
+ return m.selected.some((O) => O.id === C);
86
+ }, L = (h, C) => {
87
87
  const O = e.getAnnotation(h);
88
88
  if (!O) {
89
89
  console.warn("Invalid selection: " + h);
90
90
  return;
91
91
  }
92
- switch (G(O, g, t)) {
92
+ switch (G(O, p, t)) {
93
93
  case "EDIT":
94
- r({ selected: [{ id: h, editable: !0 }], event: y });
94
+ d({ selected: [{ id: h, editable: !0 }], event: C });
95
95
  break;
96
96
  case "SELECT":
97
- r({ selected: [{ id: h }], event: y });
97
+ d({ selected: [{ id: h }], event: C });
98
98
  break;
99
99
  default:
100
- r({ selected: [], event: y });
100
+ d({ selected: [], event: C });
101
101
  }
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;
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
107
  return { id: u.id, editable: s };
108
108
  })
109
- }), d.length !== O.length && console.warn("Invalid selection", h);
109
+ }), r.length !== O.length && console.warn("Invalid selection", h);
110
110
  }, E = (h) => {
111
111
  if (w())
112
112
  return !1;
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;
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: h }) => E((h.deleted || []).map((y) => y.id))
117
+ ({ changes: h }) => E((h.deleted || []).map((C) => C.id))
118
118
  ), {
119
119
  get event() {
120
120
  return m ? m.event : null;
@@ -123,11 +123,11 @@ const z = { selected: [] }, Te = (e, n, t) => {
123
123
  return m ? [...m.selected] : null;
124
124
  },
125
125
  get userSelectAction() {
126
- return g;
126
+ return p;
127
127
  },
128
128
  clear: v,
129
129
  isEmpty: w,
130
- isSelected: p,
130
+ isSelected: g,
131
131
  setSelected: a,
132
132
  setUserSelectAction: U,
133
133
  subscribe: o,
@@ -153,7 +153,7 @@ var ne = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(cryp
153
153
  const H = {
154
154
  randomUUID: ne
155
155
  };
156
- function F(e, n, t) {
156
+ function J(e, n, t) {
157
157
  if (H.randomUUID && !n && !e)
158
158
  return H.randomUUID();
159
159
  e = e || {};
@@ -161,12 +161,12 @@ function F(e, n, t) {
161
161
  return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, K(o);
162
162
  }
163
163
  const Oe = (e) => {
164
- const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((r, g) => [...r, g.creator, g.updatedBy].filter(Boolean), []);
164
+ const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((d, p) => [...d, p.creator, p.updatedBy].filter(Boolean), []);
165
165
  return [
166
166
  n,
167
167
  t,
168
168
  ...o
169
- ].filter((r) => r);
169
+ ].filter((d) => d);
170
170
  }, j = (e) => {
171
171
  const n = (t) => {
172
172
  const o = { ...t };
@@ -178,7 +178,7 @@ const Oe = (e) => {
178
178
  target: n(e.target)
179
179
  };
180
180
  }, De = (e, n, t, o) => ({
181
- id: F(),
181
+ id: J(),
182
182
  annotation: typeof e == "string" ? e : e.id,
183
183
  created: t || /* @__PURE__ */ new Date(),
184
184
  creator: o,
@@ -190,63 +190,63 @@ const Oe = (e) => {
190
190
  const t = new Set(n.bodies.map((o) => o.id));
191
191
  return e.bodies.filter((o) => !t.has(o.id));
192
192
  }, ie = (e, n) => n.bodies.map((t) => {
193
- const o = e.bodies.find((r) => r.id === t.id);
193
+ const o = e.bodies.find((d) => d.id === t.id);
194
194
  return { newBody: t, oldBody: o && !I(o, t) ? o : void 0 };
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) => {
196
- const t = oe(e, n), o = se(e, n), r = 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);
197
197
  return {
198
198
  oldValue: e,
199
199
  newValue: n,
200
200
  bodiesCreated: t.length > 0 ? t : void 0,
201
201
  bodiesDeleted: o.length > 0 ? o : void 0,
202
- bodiesUpdated: r.length > 0 ? r : void 0,
202
+ bodiesUpdated: d.length > 0 ? d : void 0,
203
203
  targetUpdated: de(e, n) ? { oldTarget: e.target, newTarget: n.target } : void 0
204
204
  };
205
205
  };
206
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
207
  const ae = (e, n) => {
208
- var g, m;
208
+ var p, m;
209
209
  const { changes: t, origin: o } = n;
210
210
  if (!(e.options.origin ? e.options.origin === o : o !== "SILENT"))
211
211
  return !1;
212
212
  if (e.options.ignore) {
213
213
  const { ignore: v } = e.options, w = (L) => L && L.length > 0;
214
214
  if (!(w(t.created) || w(t.deleted))) {
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);
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
216
  if (v === "BODY_ONLY" && L && !a || v === "TARGET_ONLY" && a && !L)
217
217
  return !1;
218
218
  }
219
219
  }
220
220
  if (e.options.annotations) {
221
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
+ ...(t.created || []).map((g) => g.id),
223
+ ...(t.deleted || []).map((g) => g.id),
224
+ ...(t.updated || []).map(({ oldValue: g }) => g.id)
225
225
  ]);
226
- return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((p) => v.has(p));
226
+ return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((g) => v.has(g));
227
227
  } else
228
228
  return !0;
229
229
  }, ce = (e, n) => {
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),
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),
232
232
  ...n.created || []
233
- ], p = [
234
- ...(e.deleted || []).filter((a) => !r.has(a.id)),
233
+ ], g = [
234
+ ...(e.deleted || []).filter((a) => !d.has(a.id)),
235
235
  ...(n.deleted || []).filter((a) => !t.has(a.id))
236
236
  ], L = [
237
- ...(e.updated || []).filter(({ newValue: a }) => !g.has(a.id)).map((a) => {
237
+ ...(e.updated || []).filter(({ newValue: a }) => !p.has(a.id)).map((a) => {
238
238
  const { oldValue: E, newValue: U } = a;
239
239
  if (m.has(U.id)) {
240
- const h = n.updated.find((y) => y.oldValue.id === U.id).newValue;
241
- return J(E, h);
240
+ const h = n.updated.find((C) => C.oldValue.id === U.id).newValue;
241
+ return Q(E, h);
242
242
  } else
243
243
  return a;
244
244
  }),
245
245
  ...(n.updated || []).filter(({ oldValue: a }) => !v.has(a.id))
246
246
  ];
247
- return { created: w, deleted: p, updated: L };
247
+ return { created: w, deleted: g, updated: L };
248
248
  }, V = (e) => {
249
- const n = e.id === void 0 ? F() : e.id;
249
+ const n = e.id === void 0 ? J() : e.id;
250
250
  return {
251
251
  ...e,
252
252
  id: n,
@@ -262,10 +262,10 @@ const ae = (e, n) => {
262
262
  }, le = (e) => e.id !== void 0, Re = () => {
263
263
  const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (i, c = {}) => {
264
264
  t.push({ onChange: i, options: c });
265
- }, r = (i) => {
265
+ }, d = (i) => {
266
266
  const c = t.findIndex((l) => l.onChange == i);
267
267
  c > -1 && t.splice(c, 1);
268
- }, g = (i, c) => {
268
+ }, p = (i, c) => {
269
269
  const l = {
270
270
  origin: i,
271
271
  changes: {
@@ -283,24 +283,24 @@ const ae = (e, n) => {
283
283
  throw Error(`Cannot add annotation ${i.id} - exists already`);
284
284
  {
285
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] });
286
+ e.set(f.id, f), f.bodies.forEach((S) => n.set(S.id, f.id)), p(c, { created: [f] });
287
287
  }
288
288
  }, v = (i, c) => {
289
289
  const l = V(typeof i == "string" ? c : i), f = typeof i == "string" ? i : i.id, S = f && e.get(f);
290
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;
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;
293
293
  } else
294
294
  console.warn(`Cannot update annotation ${f} - does not exist`);
295
295
  }, w = (i, c = T.LOCAL, l = T.LOCAL) => {
296
296
  const f = le(c) ? l : c, S = v(i, c);
297
- S && g(f, { updated: [S] });
298
- }, p = (i, c = T.LOCAL) => {
297
+ S && p(f, { updated: [S] });
298
+ }, g = (i, c = T.LOCAL) => {
299
299
  const l = i.reduce((f, S) => {
300
- const C = v(S);
301
- return C ? [...f, C] : f;
300
+ const y = v(S);
301
+ return y ? [...f, y] : f;
302
302
  }, []);
303
- l.length > 0 && g(c, { updated: l });
303
+ l.length > 0 && p(c, { updated: l });
304
304
  }, L = (i, c = T.LOCAL) => {
305
305
  const l = e.get(i.annotation);
306
306
  if (l) {
@@ -308,7 +308,7 @@ const ae = (e, n) => {
308
308
  ...l,
309
309
  bodies: [...l.bodies, i]
310
310
  };
311
- e.set(l.id, f), n.set(i.id, f.id), g(c, { updated: [{
311
+ e.set(l.id, f), n.set(i.id, f.id), p(c, { updated: [{
312
312
  oldValue: l,
313
313
  newValue: f,
314
314
  bodiesCreated: [i]
@@ -317,40 +317,40 @@ const ae = (e, n) => {
317
317
  console.warn(`Attempt to add body to missing annotation: ${i.annotation}`);
318
318
  }, a = () => [...e.values()], E = (i = T.LOCAL) => {
319
319
  const c = [...e.values()];
320
- e.clear(), n.clear(), g(i, { deleted: c });
320
+ e.clear(), n.clear(), p(i, { deleted: c });
321
321
  }, U = (i, c = !0, l = T.LOCAL) => {
322
322
  const f = i.map(V);
323
323
  if (c) {
324
324
  const S = [...e.values()];
325
- e.clear(), n.clear(), f.forEach((C) => {
326
- e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
327
- }), g(l, { created: f, deleted: S });
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 });
328
328
  } else {
329
- const S = i.reduce((C, B) => {
329
+ const S = i.reduce((y, B) => {
330
330
  const W = B.id && e.get(B.id);
331
- return W ? [...C, W] : C;
331
+ return W ? [...y, W] : y;
332
332
  }, []);
333
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) => {
336
- e.set(C.id, C), C.bodies.forEach((B) => n.set(B.id, C.id));
337
- }), g(l, { created: f });
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 });
338
338
  }
339
339
  }, h = (i) => {
340
340
  const c = typeof i == "string" ? i : i.id, l = e.get(c);
341
341
  if (l)
342
342
  return e.delete(c), l.bodies.forEach((f) => n.delete(f.id)), l;
343
343
  console.warn(`Attempt to delete missing annotation: ${c}`);
344
- }, y = (i, c = T.LOCAL) => {
344
+ }, C = (i, c = T.LOCAL) => {
345
345
  const l = h(i);
346
- l && g(c, { deleted: [l] });
346
+ l && p(c, { deleted: [l] });
347
347
  }, O = (i, c = T.LOCAL) => {
348
348
  const l = i.reduce((f, S) => {
349
- const C = h(S);
350
- return C ? [...f, C] : f;
349
+ const y = h(S);
350
+ return y ? [...f, y] : f;
351
351
  }, []);
352
- l.length > 0 && g(c, { deleted: l });
353
- }, d = (i) => {
352
+ l.length > 0 && p(c, { deleted: l });
353
+ }, r = (i) => {
354
354
  const c = e.get(i.annotation);
355
355
  if (c) {
356
356
  const l = c.bodies.find((f) => f.id === i.id);
@@ -358,7 +358,7 @@ const ae = (e, n) => {
358
358
  n.delete(l.id);
359
359
  const f = {
360
360
  ...c,
361
- bodies: c.bodies.filter((C) => C.id !== i.id)
361
+ bodies: c.bodies.filter((y) => y.id !== i.id)
362
362
  };
363
363
  return e.set(c.id, f), {
364
364
  oldValue: c,
@@ -370,11 +370,11 @@ const ae = (e, n) => {
370
370
  } else
371
371
  console.warn(`Attempt to delete body from missing annotation ${i.annotation}`);
372
372
  }, u = (i, c = T.LOCAL) => {
373
- const l = d(i);
374
- l && g(c, { updated: [l] });
373
+ const l = r(i);
374
+ l && p(c, { updated: [l] });
375
375
  }, s = (i, c = T.LOCAL) => {
376
- const l = i.map((f) => d(f)).filter(Boolean);
377
- l.length > 0 && g(c, { updated: l });
376
+ const l = i.map((f) => r(f)).filter(Boolean);
377
+ l.length > 0 && p(c, { updated: l });
378
378
  }, A = (i) => {
379
379
  const c = e.get(i);
380
380
  return c ? { ...c } : void 0;
@@ -392,9 +392,9 @@ const ae = (e, n) => {
392
392
  throw "Annotation integrity violation: annotation ID must be the same when updating bodies";
393
393
  const l = e.get(i.annotation);
394
394
  if (l) {
395
- const f = l.bodies.find((C) => C.id === i.id), S = {
395
+ const f = l.bodies.find((y) => y.id === i.id), S = {
396
396
  ...l,
397
- bodies: l.bodies.map((C) => C.id === f.id ? c : C)
397
+ bodies: l.bodies.map((y) => y.id === f.id ? c : y)
398
398
  };
399
399
  return e.set(l.id, S), f.id !== c.id && (n.delete(f.id), n.set(c.id, S.id)), {
400
400
  oldValue: l,
@@ -405,10 +405,10 @@ const ae = (e, n) => {
405
405
  console.warn(`Attempt to add body to missing annotation ${i.annotation}`);
406
406
  }, N = (i, c, l = T.LOCAL) => {
407
407
  const f = R(i, c);
408
- f && g(l, { updated: [f] });
408
+ f && p(l, { updated: [f] });
409
409
  }, k = (i, c = T.LOCAL) => {
410
410
  const l = i.map((f) => R({ id: f.id, annotation: f.annotation }, f)).filter(Boolean);
411
- g(c, { updated: l });
411
+ p(c, { updated: l });
412
412
  }, P = (i) => {
413
413
  const c = e.get(i.annotation);
414
414
  if (c) {
@@ -437,36 +437,36 @@ const ae = (e, n) => {
437
437
  bulkAddAnnotation: U,
438
438
  bulkDeleteAnnotation: O,
439
439
  bulkDeleteBodies: s,
440
- bulkUpdateAnnotation: p,
440
+ bulkUpdateAnnotation: g,
441
441
  bulkUpdateBodies: k,
442
442
  bulkUpdateTargets: (i, c = T.LOCAL) => {
443
443
  const l = i.map((f) => P(f)).filter(Boolean);
444
- l.length > 0 && g(c, { updated: l });
444
+ l.length > 0 && p(c, { updated: l });
445
445
  },
446
446
  clear: E,
447
- deleteAnnotation: y,
447
+ deleteAnnotation: C,
448
448
  deleteBody: u,
449
449
  getAnnotation: A,
450
450
  getBody: b,
451
451
  observe: o,
452
- unobserve: r,
452
+ unobserve: d,
453
453
  updateAnnotation: w,
454
454
  updateBody: N,
455
455
  updateTarget: (i, c = T.LOCAL) => {
456
456
  const l = P(i);
457
- l && g(c, { updated: [l] });
457
+ l && p(c, { updated: [l] });
458
458
  }
459
459
  };
460
460
  }, Be = (e) => ({
461
461
  ...e,
462
462
  subscribe: (t) => {
463
- const o = (r) => t(r.state);
463
+ const o = (d) => t(d.state);
464
464
  return e.observe(o), t(e.all()), () => e.unobserve(o);
465
465
  }
466
466
  });
467
- let Q = () => ({
467
+ let X = () => ({
468
468
  emit(e, ...n) {
469
- for (let t = 0, o = this.events[e] || [], r = o.length; t < r; t++)
469
+ for (let t = 0, o = this.events[e] || [], d = o.length; t < d; t++)
470
470
  o[t](...n);
471
471
  },
472
472
  events: {},
@@ -474,28 +474,28 @@ let Q = () => ({
474
474
  var t;
475
475
  return ((t = this.events)[e] || (t[e] = [])).push(n), () => {
476
476
  var o;
477
- this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((r) => n !== r);
477
+ this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((d) => n !== d);
478
478
  };
479
479
  }
480
480
  });
481
481
  const ue = 250, Ie = (e) => {
482
- const n = Q(), t = [];
483
- let o = -1, r = !1, g = 0;
482
+ const n = X(), t = [];
483
+ let o = -1, d = !1, p = 0;
484
484
  const m = (s) => {
485
- if (!r) {
485
+ if (!d) {
486
486
  const { changes: A } = s, b = performance.now();
487
- if (b - g > ue)
487
+ if (b - p > ue)
488
488
  t.splice(o + 1), t.push(A), o = t.length - 1;
489
489
  else {
490
490
  const R = t.length - 1;
491
491
  t[R] = ce(t[R], A);
492
492
  }
493
- g = b;
493
+ p = b;
494
494
  }
495
- r = !1;
495
+ d = !1;
496
496
  };
497
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);
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);
499
499
  return {
500
500
  canRedo: () => t.length - 1 > o,
501
501
  canUndo: () => o > -1,
@@ -503,16 +503,16 @@ const ue = 250, Ie = (e) => {
503
503
  on: (s, A) => n.on(s, A),
504
504
  redo: () => {
505
505
  if (t.length - 1 > o) {
506
- r = !0;
506
+ d = !0;
507
507
  const { created: s, updated: A, deleted: b } = t[o + 1];
508
508
  w(s), L(A), E(b), n.emit("redo", t[o + 1]), o += 1;
509
509
  }
510
510
  },
511
511
  undo: () => {
512
512
  if (o > -1) {
513
- r = !0;
513
+ d = !0;
514
514
  const { created: s, updated: A, deleted: b } = t[o];
515
- v(s), p(A), a(b), n.emit("undo", t[o]), o -= 1;
515
+ v(s), g(A), a(b), n.emit("undo", t[o]), o -= 1;
516
516
  }
517
517
  }
518
518
  };
@@ -523,19 +523,19 @@ const ue = 250, Ie = (e) => {
523
523
  set: n
524
524
  };
525
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);
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);
532
532
  if (s) {
533
533
  const A = s.indexOf(u);
534
534
  A !== -1 && s.splice(A, 1);
535
535
  }
536
- }, h = (d, u, s) => {
537
- w.has(d) && setTimeout(() => {
538
- w.get(d).forEach((A) => {
536
+ }, h = (r, u, s) => {
537
+ w.has(r) && setTimeout(() => {
538
+ w.get(r).forEach((A) => {
539
539
  if (t) {
540
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
541
  A(b, R);
@@ -543,147 +543,156 @@ const ue = 250, Ie = (e) => {
543
543
  A(u, s);
544
544
  });
545
545
  }, 1);
546
- }, y = () => {
547
- const { selected: d } = g, u = (d || []).map(({ id: s }) => m.getAnnotation(s));
546
+ }, C = () => {
547
+ const { selected: r } = p, u = (r || []).map(({ id: s }) => m.getAnnotation(s));
548
548
  u.forEach((s) => {
549
- const A = p.find((b) => b.id === s.id);
549
+ const A = g.find((b) => b.id === s.id);
550
550
  (!A || !I(A, s)) && h("updateAnnotation", s, A);
551
- }), p = p.map((s) => {
551
+ }), g = g.map((s) => {
552
552
  const A = u.find(({ id: b }) => b === s.id);
553
553
  return A || s;
554
554
  });
555
555
  };
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) => {
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)
561
+ g.forEach((u) => {
562
562
  const s = m.getAnnotation(u.id);
563
563
  s && !I(s, u) && h("updateAnnotation", s, u);
564
- }), p = [];
564
+ }), g = [];
565
565
  else {
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) => {
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
568
  const R = m.getAnnotation(b.id);
569
569
  R && !I(R, b) && h("updateAnnotation", R, b);
570
- }), p = [
570
+ }), g = [
571
571
  // Remove annotations that were deselected
572
- ...p.filter((b) => s.has(b.id)),
572
+ ...g.filter((b) => s.has(b.id)),
573
573
  // Add editable annotations that were selected
574
- ...d.filter(({ id: b }) => !u.has(b)).map(({ id: b }) => m.getAnnotation(b))
574
+ ...r.filter(({ id: b }) => !u.has(b)).map(({ id: b }) => m.getAnnotation(b))
575
575
  ];
576
576
  }
577
- h("selectionChanged", p);
577
+ h("selectionChanged", g);
578
578
  }
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) => [
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
585
  ...b.bodiesCreated || [],
586
586
  ...b.bodiesDeleted || [],
587
587
  ...b.bodiesUpdated || []
588
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);
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);
591
591
  });
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) => {
592
+ }, { origin: T.LOCAL }), m.observe((r) => {
593
+ if (g) {
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
596
  const b = s.find((R) => R.id === A.id);
597
597
  return b || A;
598
598
  }));
599
599
  }
600
600
  }, { origin: T.REMOTE });
601
- const O = (d) => (u) => {
601
+ const O = (r) => (u) => {
602
602
  const { updated: s } = u;
603
- d ? (s || []).forEach((A) => h("updateAnnotation", A.oldValue, A.newValue)) : (s || []).forEach((A) => h("updateAnnotation", A.newValue, A.oldValue));
603
+ r ? (s || []).forEach((A) => h("updateAnnotation", A.oldValue, A.newValue)) : (s || []).forEach((A) => h("updateAnnotation", A.newValue, A.oldValue));
604
604
  };
605
605
  return n.on("undo", O(!0)), n.on("redo", O(!1)), { on: E, off: U, emit: h };
606
606
  }, Ne = (e) => (n) => n.map((t) => e.serialize(t)), fe = (e) => (n) => n.reduce((t, o) => {
607
- const { parsed: r, error: g } = e.parse(o);
608
- return g ? {
607
+ const { parsed: d, error: p } = e.parse(o);
608
+ return p ? {
609
609
  parsed: t.parsed,
610
610
  failed: [...t.failed, o]
611
- } : r ? {
612
- parsed: [...t.parsed, r],
611
+ } : d ? {
612
+ parsed: [...t.parsed, d],
613
613
  failed: t.failed
614
614
  } : {
615
615
  ...t
616
616
  };
617
617
  }, { parsed: [], failed: [] }), ze = (e, n, t) => {
618
- const { store: o, selection: r } = e, g = (d) => {
618
+ const { store: o, selection: d } = e, p = (r) => {
619
619
  if (t) {
620
- const { parsed: u, error: s } = t.parse(d);
620
+ const { parsed: u, error: s } = t.parse(r);
621
621
  u ? o.addAnnotation(u, T.REMOTE) : console.error(s);
622
622
  } else
623
- o.addAnnotation(j(d), T.REMOTE);
624
- }, m = () => r.clear(), v = () => o.clear(), w = (d) => {
625
- const u = o.getAnnotation(d);
623
+ o.addAnnotation(j(r), T.REMOTE);
624
+ }, m = () => d.clear(), v = () => o.clear(), w = (r) => {
625
+ const u = o.getAnnotation(r);
626
626
  return t && u ? t.serialize(u) : u;
627
- }, p = () => t ? o.all().map(t.serialize) : o.all(), L = () => {
627
+ }, g = () => t ? o.all().map(t.serialize) : o.all(), L = () => {
628
628
  var s;
629
- const u = (((s = r.selected) == null ? void 0 : s.map((A) => A.id)) || []).map((A) => o.getAnnotation(A)).filter(Boolean);
629
+ const u = (((s = d.selected) == null ? void 0 : s.map((A) => A.id)) || []).map((A) => o.getAnnotation(A)).filter(Boolean);
630
630
  return t ? u.map(t.serialize) : 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)
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)
635
635
  return t ? t.serialize(u) : u;
636
636
  } else {
637
- const u = t ? t.parse(d).parsed : d;
637
+ const u = t ? t.parse(r).parsed : r;
638
638
  if (u)
639
- return o.deleteAnnotation(u), d;
639
+ return o.deleteAnnotation(u), r;
640
640
  }
641
- }, U = (d, u = !0) => {
641
+ }, U = (r, u = !0) => {
642
642
  if (t) {
643
- const s = t.parseAll || fe(t), { parsed: A, failed: b } = s(d);
643
+ const s = t.parseAll || fe(t), { parsed: A, failed: b } = s(r);
644
644
  b.length > 0 && console.warn(`Discarded ${b.length} invalid annotations`, b), o.bulkAddAnnotation(A, u, T.REMOTE);
645
645
  } else
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) => {
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) => {
652
652
  if (t) {
653
- const u = t.parse(d).parsed, s = t.serialize(o.getAnnotation(u.id));
653
+ const u = t.parse(r).parsed, s = t.serialize(o.getAnnotation(u.id));
654
654
  return o.updateAnnotation(u), s;
655
655
  } else {
656
- const u = o.getAnnotation(d.id);
657
- return o.updateAnnotation(j(d)), u;
656
+ const u = o.getAnnotation(r.id);
657
+ return o.updateAnnotation(j(r)), u;
658
658
  }
659
659
  };
660
660
  return {
661
- addAnnotation: g,
661
+ addAnnotation: p,
662
662
  cancelSelected: m,
663
663
  canRedo: n.canRedo,
664
664
  canUndo: n.canUndo,
665
665
  clearAnnotations: v,
666
666
  getAnnotationById: w,
667
- getAnnotations: p,
667
+ getAnnotations: g,
668
668
  getSelected: L,
669
669
  loadAnnotations: a,
670
670
  redo: n.redo,
671
671
  removeAnnotation: E,
672
672
  setAnnotations: U,
673
673
  setSelected: h,
674
- setUserSelectAction: y,
674
+ setUserSelectAction: C,
675
675
  undo: n.undo,
676
676
  updateAnnotation: O
677
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
+ };
678
687
  }, pe = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
679
688
  let ge = (e) => crypto.getRandomValues(new Uint8Array(e)), he = (e, n, t) => {
680
- let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, r = -~(1.6 * o * n / e.length);
681
- return (g = n) => {
689
+ let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, d = -~(1.6 * o * n / e.length);
690
+ return (p = n) => {
682
691
  let m = "";
683
692
  for (; ; ) {
684
- let v = t(r), w = r;
693
+ let v = t(d), w = d;
685
694
  for (; w--; )
686
- if (m += e[v[w] & o] || "", m.length === g) return m;
695
+ if (m += e[v[w] & o] || "", m.length === p) return m;
687
696
  }
688
697
  };
689
698
  }, me = (e, n = 21) => he(e, n, ge), Ae = (e = 21) => {
@@ -692,33 +701,33 @@ let ge = (e) => crypto.getRandomValues(new Uint8Array(e)), he = (e, n, t) => {
692
701
  n += pe[t[e] & 63];
693
702
  return n;
694
703
  };
695
- const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), be = (e) => {
704
+ const _e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), be = (e) => {
696
705
  const n = JSON.stringify(e);
697
706
  let 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;
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;
701
710
  }
702
711
  return `${t}`;
703
- }, ve = (e) => e ? typeof e == "object" ? { ...e } : e : void 0, Ve = (e, n) => (Array.isArray(e) ? e : [e]).map((t) => {
704
- const { id: o, type: r, purpose: g, value: m, created: v, modified: w, creator: p, ...L } = 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;
705
714
  return {
706
715
  id: o || `temp-${be(t)}`,
707
716
  annotation: n,
708
- type: r,
709
- purpose: g,
717
+ type: d,
718
+ purpose: p,
710
719
  value: m,
711
- creator: ve(p),
720
+ creator: ve(g),
712
721
  created: v ? new Date(v) : void 0,
713
722
  updated: w ? new Date(w) : void 0,
714
723
  ...L
715
724
  };
716
- }), _e = (e) => e.map((n) => {
725
+ }), je = (e) => e.map((n) => {
717
726
  var v;
718
- const { annotation: t, created: o, updated: r, ...g } = n, m = {
719
- ...g,
727
+ const { annotation: t, created: o, updated: d, ...p } = n, m = {
728
+ ...p,
720
729
  created: o == null ? void 0 : o.toISOString(),
721
- modified: r == null ? void 0 : r.toISOString()
730
+ modified: d == null ? void 0 : d.toISOString()
722
731
  };
723
732
  return (v = m.id) != null && v.startsWith("temp-") && delete m.id, m;
724
733
  }), Ee = [
@@ -743,21 +752,21 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
743
752
  ], we = () => {
744
753
  const e = [...Ee];
745
754
  return { assignRandomColor: () => {
746
- const o = Math.floor(Math.random() * e.length), r = e[o];
747
- return e.splice(o, 1), r;
755
+ const o = Math.floor(Math.random() * e.length), d = e[o];
756
+ return e.splice(o, 1), d;
748
757
  }, releaseColor: (o) => e.push(o) };
749
- }, ye = () => {
758
+ }, Ce = () => {
750
759
  const e = we();
751
- return { addUser: (o, r) => {
752
- const g = e.assignRandomColor();
760
+ return { addUser: (o, d) => {
761
+ const p = e.assignRandomColor();
753
762
  return {
754
- label: r.name || r.id,
755
- avatar: r.avatar,
756
- color: g
763
+ label: d.name || d.id,
764
+ avatar: d.avatar,
765
+ color: p
757
766
  };
758
767
  }, removeUser: (o) => e.releaseColor(o.appearance.color) };
759
- }, Ce = (e, n) => e.every((t) => e.includes(t)) && n.every((t) => e.includes(t)), Ye = Ae(), je = (e = ye()) => {
760
- const n = Q(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), r = (a, 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) => {
761
770
  if (t.has(a)) {
762
771
  console.warn("Attempt to add user that is already present", a, E);
763
772
  return;
@@ -768,7 +777,7 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
768
777
  presenceKey: a,
769
778
  appearance: U
770
779
  });
771
- }, g = (a) => {
780
+ }, p = (a) => {
772
781
  const E = t.get(a);
773
782
  if (!E) {
774
783
  console.warn("Attempt to remove user that is not present", a);
@@ -776,11 +785,11 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
776
785
  }
777
786
  e.removeUser(E), t.delete(a);
778
787
  }, 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());
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());
784
793
  }, v = (a, E) => {
785
794
  const U = t.get(a);
786
795
  if (!U) {
@@ -788,7 +797,7 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
788
797
  return;
789
798
  }
790
799
  const h = o.get(a);
791
- (!h || !Ce(h, E)) && (o.set(a, E), n.emit("selectionChange", U, E));
800
+ (!h || !ye(h, E)) && (o.set(a, E), n.emit("selectionChange", U, E));
792
801
  }, w = (a, E) => {
793
802
  const U = t.get(a);
794
803
  if (!U) {
@@ -796,9 +805,9 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
796
805
  return;
797
806
  }
798
807
  E ? o.set(a, E) : o.delete(a), n.emit("selectionChange", U, E);
799
- }, p = () => [...Array.from(t.values())];
808
+ }, g = () => [...Array.from(t.values())];
800
809
  return {
801
- getPresentUsers: p,
810
+ getPresentUsers: g,
802
811
  notifyActivity: v,
803
812
  on: (a, E) => n.on(a, E),
804
813
  syncUsers: m,
@@ -808,30 +817,32 @@ const $e = () => ({ isGuest: !0, id: me("1234567890abcdefghijklmnopqrstuvwxyzABC
808
817
  export {
809
818
  re as Ignore,
810
819
  T as Origin,
811
- Ye as PRESENCE_KEY,
812
- Z as UserSelectAction,
813
- $e as createAnonymousGuest,
820
+ Me as PRESENCE_KEY,
821
+ F as UserSelectAction,
822
+ Ve as chainStyles,
823
+ $e as computeStyle,
824
+ _e as createAnonymousGuest,
814
825
  ze as createBaseAnnotator,
815
826
  De as createBody,
816
- ye as createDefaultAppearanceProvider,
827
+ Ce as createDefaultAppearanceProvider,
817
828
  Ue as createHoverState,
818
829
  xe as createLifecycleObserver,
819
- je as createPresenceState,
830
+ Pe as createPresenceState,
820
831
  Te as createSelectionState,
821
832
  Re as createStore,
822
833
  Ie as createUndoStack,
823
834
  ke as createViewportState,
824
835
  we as defaultColorProvider,
825
- J as diffAnnotations,
836
+ Q as diffAnnotations,
826
837
  Oe as getContributors,
827
838
  ce as mergeChanges,
828
839
  G as onUserSelect,
829
840
  fe as parseAll,
830
- Ve as parseW3CBodies,
841
+ Ye as parseW3CBodies,
831
842
  ve as parseW3CUser,
832
843
  j as reviveDates,
833
844
  Ne as serializeAll,
834
- _e as serializeW3CBodies,
845
+ je as serializeW3CBodies,
835
846
  ae as shouldNotify,
836
847
  Be as toSvelteStore
837
848
  };