@annotorious/core 3.0.0 → 3.0.2

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