@annotorious/core 3.0.0-rc.24 → 3.0.0-rc.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  var j = Object.prototype.hasOwnProperty;
2
- function x(e, n) {
2
+ function B(e, n) {
3
3
  var t, o;
4
4
  if (e === n)
5
5
  return !0;
@@ -10,14 +10,14 @@ function x(e, n) {
10
10
  return e.toString() === n.toString();
11
11
  if (t === Array) {
12
12
  if ((o = e.length) === n.length)
13
- for (; o-- && x(e[o], n[o]); )
13
+ for (; o-- && B(e[o], n[o]); )
14
14
  ;
15
15
  return o === -1;
16
16
  }
17
17
  if (!t || typeof e == "object") {
18
18
  o = 0;
19
19
  for (t in e)
20
- if (j.call(e, t) && ++o && !j.call(n, t) || !(t in n) || !x(e[t], n[t]))
20
+ if (j.call(e, t) && ++o && !j.call(n, t) || !(t in n) || !B(e[t], n[t]))
21
21
  return !1;
22
22
  return Object.keys(n).length === o;
23
23
  }
@@ -26,44 +26,44 @@ function x(e, n) {
26
26
  }
27
27
  function z() {
28
28
  }
29
- function G(e, n) {
29
+ function q(e, n) {
30
30
  return e != e ? n == n : e !== n || e && typeof e == "object" || typeof e == "function";
31
31
  }
32
- const N = [];
33
- function Y(e, n = z) {
32
+ const k = [];
33
+ function _(e, n = z) {
34
34
  let t;
35
35
  const o = /* @__PURE__ */ new Set();
36
36
  function i(b) {
37
- if (G(e, b) && (e = b, t)) {
38
- const y = !N.length;
37
+ if (q(e, b) && (e = b, t)) {
38
+ const v = !k.length;
39
39
  for (const u of o)
40
- u[1](), N.push(u, e);
41
- if (y) {
42
- for (let u = 0; u < N.length; u += 2)
43
- N[u][0](N[u + 1]);
44
- N.length = 0;
40
+ u[1](), k.push(u, e);
41
+ if (v) {
42
+ for (let u = 0; u < k.length; u += 2)
43
+ k[u][0](k[u + 1]);
44
+ k.length = 0;
45
45
  }
46
46
  }
47
47
  }
48
- function h(b) {
48
+ function p(b) {
49
49
  i(b(e));
50
50
  }
51
- function L(b, y = z) {
52
- const u = [b, y];
53
- return o.add(u), o.size === 1 && (t = n(i, h) || z), b(e), () => {
51
+ function w(b, v = z) {
52
+ const u = [b, v];
53
+ return o.add(u), o.size === 1 && (t = n(i, p) || z), b(e), () => {
54
54
  o.delete(u), o.size === 0 && t && (t(), t = null);
55
55
  };
56
56
  }
57
- return { set: i, update: h, subscribe: L };
57
+ return { set: i, update: p, subscribe: w };
58
58
  }
59
- const Ce = (e) => {
60
- const { subscribe: n, set: t } = Y();
59
+ const we = (e) => {
60
+ const { subscribe: n, set: t } = _();
61
61
  let o;
62
62
  return n((i) => o = i), e.observe(({ changes: i }) => {
63
63
  if (o) {
64
64
  (i.deleted || []).some((b) => b.id === o) && t(void 0);
65
- const L = (i.updated || []).find(({ oldValue: b }) => b.id === o);
66
- L && t(L.newValue.id);
65
+ const w = (i.updated || []).find(({ oldValue: b }) => b.id === o);
66
+ w && t(w.newValue.id);
67
67
  }
68
68
  }), {
69
69
  get current() {
@@ -73,82 +73,82 @@ const Ce = (e) => {
73
73
  set: t
74
74
  };
75
75
  };
76
- var H = /* @__PURE__ */ ((e) => (e.EDIT = "EDIT", e.SELECT = "SELECT", e.NONE = "NONE", e))(H || {});
77
- const V = { selected: [] }, we = (e, n = "EDIT") => {
78
- const { subscribe: t, set: o } = Y(V);
76
+ var G = /* @__PURE__ */ ((e) => (e.EDIT = "EDIT", e.SELECT = "SELECT", e.NONE = "NONE", e))(G || {});
77
+ const V = { selected: [] }, Ce = (e, n = "EDIT") => {
78
+ const { subscribe: t, set: o } = _(V);
79
79
  let i = V;
80
80
  t((s) => i = s);
81
- const h = () => o(V), L = () => {
81
+ const p = () => o(V), w = () => {
82
82
  var s;
83
83
  return ((s = i.selected) == null ? void 0 : s.length) === 0;
84
84
  }, b = (s) => {
85
85
  if (i.selected.length === 0)
86
86
  return !1;
87
- const g = typeof s == "string" ? s : s.id;
88
- return i.selected.some((w) => w.id === g);
89
- }, y = (s, g) => {
90
- const w = e.getAnnotation(s);
91
- if (w) {
92
- const E = F(w, n);
93
- o(E === "EDIT" ? { selected: [{ id: s, editable: !0 }], pointerEvent: g } : E === "SELECT" ? { selected: [{ id: s }], pointerEvent: g } : { selected: [], pointerEvent: g });
87
+ const h = typeof s == "string" ? s : s.id;
88
+ return i.selected.some((L) => L.id === h);
89
+ }, v = (s, h) => {
90
+ const L = e.getAnnotation(s);
91
+ if (L) {
92
+ const E = H(L, n);
93
+ o(E === "EDIT" ? { selected: [{ id: s, editable: !0 }], pointerEvent: h } : E === "SELECT" ? { selected: [{ id: s }], pointerEvent: h } : { selected: [], pointerEvent: h });
94
94
  } else
95
95
  console.warn("Invalid selection: " + s);
96
- }, u = (s, g = !0) => {
97
- const w = Array.isArray(s) ? s : [s], E = w.map((S) => e.getAnnotation(S)).filter(Boolean);
98
- o({ selected: E.map(({ id: S }) => ({ id: S, editable: g })) }), E.length !== w.length && console.warn("Invalid selection", s);
96
+ }, u = (s, h = !0) => {
97
+ const L = Array.isArray(s) ? s : [s], E = L.map((S) => e.getAnnotation(S)).filter(Boolean);
98
+ o({ selected: E.map(({ id: S }) => ({ id: S, editable: h })) }), E.length !== L.length && console.warn("Invalid selection", s);
99
99
  }, U = (s) => {
100
100
  if (i.selected.length === 0)
101
101
  return !1;
102
- const { selected: g } = i;
103
- g.filter(({ id: E }) => s.includes(E)).length > 0 && o({ selected: g.filter(({ id: E }) => !s.includes(E)) });
102
+ const { selected: h } = i;
103
+ h.filter(({ id: E }) => s.includes(E)).length > 0 && o({ selected: h.filter(({ id: E }) => !s.includes(E)) });
104
104
  };
105
- return e.observe(({ changes: s }) => U((s.deleted || []).map((g) => g.id))), {
106
- clear: h,
107
- clickSelect: y,
105
+ return e.observe(({ changes: s }) => U((s.deleted || []).map((h) => h.id))), {
106
+ clear: p,
107
+ clickSelect: v,
108
108
  get selected() {
109
109
  return i ? [...i.selected] : null;
110
110
  },
111
111
  get pointerEvent() {
112
112
  return i ? i.pointerEvent : null;
113
113
  },
114
- isEmpty: L,
114
+ isEmpty: w,
115
115
  isSelected: b,
116
116
  setSelected: u,
117
117
  subscribe: t
118
118
  };
119
- }, F = (e, n) => typeof n == "function" ? n(e) || "EDIT" : n || "EDIT";
119
+ }, H = (e, n) => typeof n == "function" ? n(e) || "EDIT" : n || "EDIT";
120
120
  let $;
121
- const J = new Uint8Array(16);
122
- function Q() {
121
+ const F = new Uint8Array(16);
122
+ function J() {
123
123
  if (!$ && ($ = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !$))
124
124
  throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
125
- return $(J);
125
+ return $(F);
126
126
  }
127
- const R = [];
127
+ const D = [];
128
128
  for (let e = 0; e < 256; ++e)
129
- R.push((e + 256).toString(16).slice(1));
130
- function X(e, n = 0) {
131
- return R[e[n + 0]] + R[e[n + 1]] + R[e[n + 2]] + R[e[n + 3]] + "-" + R[e[n + 4]] + R[e[n + 5]] + "-" + R[e[n + 6]] + R[e[n + 7]] + "-" + R[e[n + 8]] + R[e[n + 9]] + "-" + R[e[n + 10]] + R[e[n + 11]] + R[e[n + 12]] + R[e[n + 13]] + R[e[n + 14]] + R[e[n + 15]];
129
+ D.push((e + 256).toString(16).slice(1));
130
+ function Q(e, n = 0) {
131
+ return D[e[n + 0]] + D[e[n + 1]] + D[e[n + 2]] + D[e[n + 3]] + "-" + D[e[n + 4]] + D[e[n + 5]] + "-" + D[e[n + 6]] + D[e[n + 7]] + "-" + D[e[n + 8]] + D[e[n + 9]] + "-" + D[e[n + 10]] + D[e[n + 11]] + D[e[n + 12]] + D[e[n + 13]] + D[e[n + 14]] + D[e[n + 15]];
132
132
  }
133
- const Z = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), M = {
134
- randomUUID: Z
133
+ const X = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), M = {
134
+ randomUUID: X
135
135
  };
136
- function P(e, n, t) {
136
+ function Z(e, n, t) {
137
137
  if (M.randomUUID && !n && !e)
138
138
  return M.randomUUID();
139
139
  e = e || {};
140
- const o = e.random || (e.rng || Q)();
141
- return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, X(o);
140
+ const o = e.random || (e.rng || J)();
141
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, Q(o);
142
142
  }
143
143
  const Le = (e) => {
144
- const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((i, h) => [...i, h.creator, h.updatedBy].filter(Boolean), []);
144
+ const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((i, p) => [...i, p.creator, p.updatedBy].filter(Boolean), []);
145
145
  return [
146
146
  n,
147
147
  t,
148
148
  ...o
149
149
  ].filter((i) => i);
150
150
  }, Ue = (e, n, t, o) => ({
151
- id: P(),
151
+ id: Z(),
152
152
  annotation: e.id,
153
153
  created: t || /* @__PURE__ */ new Date(),
154
154
  creator: o,
@@ -161,8 +161,8 @@ const Le = (e) => {
161
161
  return e.bodies.filter((o) => !t.has(o.id));
162
162
  }, te = (e, n) => n.bodies.map((t) => {
163
163
  const o = e.bodies.find((i) => i.id === t.id);
164
- return { newBody: t, oldBody: o && !x(o, t) ? o : void 0 };
165
- }).filter(({ oldBody: t }) => t).map(({ oldBody: t, newBody: o }) => ({ oldBody: t, newBody: o })), ne = (e, n) => !x(e.target, n.target), W = (e, n) => {
164
+ return { newBody: t, oldBody: o && !B(o, t) ? o : void 0 };
165
+ }).filter(({ oldBody: t }) => t).map(({ oldBody: t, newBody: o }) => ({ oldBody: t, newBody: o })), ne = (e, n) => !B(e.target, n.target), P = (e, n) => {
166
166
  const t = K(e, n), o = ee(e, n), i = te(e, n);
167
167
  return {
168
168
  oldValue: e,
@@ -175,14 +175,14 @@ const Le = (e) => {
175
175
  };
176
176
  var oe = /* @__PURE__ */ ((e) => (e.BODY_ONLY = "BODY_ONLY", e.TARGET_ONLY = "TARGET_ONLY", e))(oe || {}), O = /* @__PURE__ */ ((e) => (e.LOCAL = "LOCAL", e.REMOTE = "REMOTE", e))(O || {});
177
177
  const se = (e, n) => {
178
- var h, L;
178
+ var p, w;
179
179
  const { changes: t, origin: o } = n;
180
180
  if (!(!e.options.origin || e.options.origin === o))
181
181
  return !1;
182
182
  if (e.options.ignore) {
183
- const { ignore: b } = e.options, y = (U) => U && U.length > 0;
184
- if (!(y(t.created) || y(t.deleted))) {
185
- const U = (h = t.updated) == null ? void 0 : h.some((g) => y(g.bodiesCreated) || y(g.bodiesDeleted) || y(g.bodiesUpdated)), s = (L = t.updated) == null ? void 0 : L.some((g) => g.targetUpdated);
183
+ const { ignore: b } = e.options, v = (U) => U && U.length > 0;
184
+ if (!(v(t.created) || v(t.deleted))) {
185
+ const U = (p = t.updated) == null ? void 0 : p.some((h) => v(h.bodiesCreated) || v(h.bodiesDeleted) || v(h.bodiesUpdated)), s = (w = t.updated) == null ? void 0 : w.some((h) => h.targetUpdated);
186
186
  if (b === "BODY_ONLY" && U && !s || b === "TARGET_ONLY" && s && !U)
187
187
  return !1;
188
188
  }
@@ -197,183 +197,183 @@ const se = (e, n) => {
197
197
  } else
198
198
  return !0;
199
199
  }, ie = (e, n) => {
200
- const t = new Set((e.created || []).map((s) => s.id)), o = new Set((e.updated || []).map(({ newValue: s }) => s.id)), i = new Set((n.created || []).map((s) => s.id)), h = new Set((n.deleted || []).map((s) => s.id)), L = new Set((n.updated || []).map(({ oldValue: s }) => s.id)), b = new Set((n.updated || []).filter(({ oldValue: s }) => t.has(s.id) || o.has(s.id)).map(({ oldValue: s }) => s.id)), y = [
201
- ...(e.created || []).filter((s) => !h.has(s.id)).map((s) => L.has(s.id) ? n.updated.find(({ oldValue: g }) => g.id === s.id).newValue : s),
200
+ const t = new Set((e.created || []).map((s) => s.id)), o = new Set((e.updated || []).map(({ newValue: s }) => s.id)), i = new Set((n.created || []).map((s) => s.id)), p = new Set((n.deleted || []).map((s) => s.id)), w = new Set((n.updated || []).map(({ oldValue: s }) => s.id)), b = new Set((n.updated || []).filter(({ oldValue: s }) => t.has(s.id) || o.has(s.id)).map(({ oldValue: s }) => s.id)), v = [
201
+ ...(e.created || []).filter((s) => !p.has(s.id)).map((s) => w.has(s.id) ? n.updated.find(({ oldValue: h }) => h.id === s.id).newValue : s),
202
202
  ...n.created || []
203
203
  ], u = [
204
204
  ...(e.deleted || []).filter((s) => !i.has(s.id)),
205
205
  ...(n.deleted || []).filter((s) => !t.has(s.id))
206
206
  ], U = [
207
- ...(e.updated || []).filter(({ newValue: s }) => !h.has(s.id)).map((s) => {
208
- const { oldValue: g, newValue: w } = s;
209
- if (L.has(w.id)) {
210
- const E = n.updated.find((S) => S.oldValue.id === w.id).newValue;
211
- return W(g, E);
207
+ ...(e.updated || []).filter(({ newValue: s }) => !p.has(s.id)).map((s) => {
208
+ const { oldValue: h, newValue: L } = s;
209
+ if (w.has(L.id)) {
210
+ const E = n.updated.find((S) => S.oldValue.id === L.id).newValue;
211
+ return P(h, E);
212
212
  } else
213
213
  return s;
214
214
  }),
215
215
  ...(n.updated || []).filter(({ oldValue: s }) => !b.has(s.id))
216
216
  ];
217
- return { created: y, deleted: u, updated: U };
217
+ return { created: v, deleted: u, updated: U };
218
218
  }, de = (e) => e.id !== void 0, Se = () => {
219
- const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (d, a = {}) => t.push({ onChange: d, options: a }), i = (d) => {
220
- const a = t.findIndex((r) => r.onChange == d);
221
- a > -1 && t.splice(a, 1);
222
- }, h = (d, a) => {
223
- const r = {
219
+ const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (d, r = {}) => t.push({ onChange: d, options: r }), i = (d) => {
220
+ const r = t.findIndex((c) => c.onChange == d);
221
+ r > -1 && t.splice(r, 1);
222
+ }, p = (d, r) => {
223
+ const c = {
224
224
  origin: d,
225
225
  changes: {
226
- created: a.created || [],
227
- updated: a.updated || [],
228
- deleted: a.deleted || []
226
+ created: r.created || [],
227
+ updated: r.updated || [],
228
+ deleted: r.deleted || []
229
229
  },
230
230
  state: [...e.values()]
231
231
  };
232
- t.forEach((p) => {
233
- se(p, r) && p.onChange(r);
232
+ t.forEach((f) => {
233
+ se(f, c) && f.onChange(c);
234
234
  });
235
- }, L = (d, a = O.LOCAL) => {
235
+ }, w = (d, r = O.LOCAL) => {
236
236
  if (e.get(d.id))
237
237
  throw Error(`Cannot add annotation ${d.id} - exists already`);
238
- e.set(d.id, d), d.bodies.forEach((p) => n.set(p.id, d.id)), h(a, { created: [d] });
239
- }, b = (d, a) => {
240
- const r = typeof d == "string" ? a : d, p = typeof d == "string" ? d : d.id, C = e.get(p);
238
+ e.set(d.id, d), d.bodies.forEach((f) => n.set(f.id, d.id)), p(r, { created: [d] });
239
+ }, b = (d, r) => {
240
+ const c = typeof d == "string" ? r : d, f = typeof d == "string" ? d : d.id, C = e.get(f);
241
241
  if (C) {
242
- const D = W(C, r);
243
- return p === r.id ? e.set(p, r) : (e.delete(p), e.set(r.id, r)), C.bodies.forEach((k) => n.delete(k.id)), r.bodies.forEach((k) => n.set(k.id, r.id)), D;
242
+ const T = P(C, c);
243
+ return f === c.id ? e.set(f, c) : (e.delete(f), e.set(c.id, c)), C.bodies.forEach((I) => n.delete(I.id)), c.bodies.forEach((I) => n.set(I.id, c.id)), T;
244
244
  } else
245
- console.warn(`Cannot update annotation ${p} - does not exist`);
246
- }, y = (d, a = O.LOCAL, r = O.LOCAL) => {
247
- const p = de(a) ? r : a, C = b(d, a);
248
- C && h(p, { updated: [C] });
249
- }, u = (d, a = O.LOCAL) => {
250
- const r = d.reduce((p, C) => {
251
- const D = b(C);
252
- return D ? [...p, D] : p;
245
+ console.warn(`Cannot update annotation ${f} - does not exist`);
246
+ }, v = (d, r = O.LOCAL, c = O.LOCAL) => {
247
+ const f = de(r) ? c : r, C = b(d, r);
248
+ C && p(f, { updated: [C] });
249
+ }, u = (d, r = O.LOCAL) => {
250
+ const c = d.reduce((f, C) => {
251
+ const T = b(C);
252
+ return T ? [...f, T] : f;
253
253
  }, []);
254
- r.length > 0 && h(a, { updated: r });
255
- }, U = (d, a = O.LOCAL) => {
256
- const r = e.get(d.annotation);
257
- if (r) {
258
- const p = {
259
- ...r,
260
- bodies: [...r.bodies, d]
254
+ c.length > 0 && p(r, { updated: c });
255
+ }, U = (d, r = O.LOCAL) => {
256
+ const c = e.get(d.annotation);
257
+ if (c) {
258
+ const f = {
259
+ ...c,
260
+ bodies: [...c.bodies, d]
261
261
  };
262
- e.set(r.id, p), n.set(d.id, p.id), h(a, { updated: [{
263
- oldValue: r,
264
- newValue: p,
262
+ e.set(c.id, f), n.set(d.id, f.id), p(r, { updated: [{
263
+ oldValue: c,
264
+ newValue: f,
265
265
  bodiesCreated: [d]
266
266
  }] });
267
267
  } else
268
268
  console.warn(`Attempt to add body to missing annotation: ${d.annotation}`);
269
- }, s = () => [...e.values()], g = (d = O.LOCAL) => {
270
- const a = [...e.values()];
271
- e.clear(), n.clear(), h(d, { deleted: a });
272
- }, w = (d, a = !0, r = O.LOCAL) => {
273
- if (a) {
274
- const p = [...e.values()];
269
+ }, s = () => [...e.values()], h = (d = O.LOCAL) => {
270
+ const r = [...e.values()];
271
+ e.clear(), n.clear(), p(d, { deleted: r });
272
+ }, L = (d, r = !0, c = O.LOCAL) => {
273
+ if (r) {
274
+ const f = [...e.values()];
275
275
  e.clear(), n.clear(), d.forEach((C) => {
276
- e.set(C.id, C), C.bodies.forEach((D) => n.set(D.id, C.id));
277
- }), h(r, { created: d, deleted: p });
276
+ e.set(C.id, C), C.bodies.forEach((T) => n.set(T.id, C.id));
277
+ }), p(c, { created: d, deleted: f });
278
278
  } else {
279
- const p = d.reduce((C, D) => {
280
- const k = e.get(D.id);
281
- return k ? [...C, k] : C;
279
+ const f = d.reduce((C, T) => {
280
+ const I = e.get(T.id);
281
+ return I ? [...C, I] : C;
282
282
  }, []);
283
- if (p.length > 0)
284
- throw Error(`Bulk insert would overwrite the following annotations: ${p.map((C) => C.id).join(", ")}`);
283
+ if (f.length > 0)
284
+ throw Error(`Bulk insert would overwrite the following annotations: ${f.map((C) => C.id).join(", ")}`);
285
285
  d.forEach((C) => {
286
- e.set(C.id, C), C.bodies.forEach((D) => n.set(D.id, C.id));
287
- }), h(r, { created: d });
286
+ e.set(C.id, C), C.bodies.forEach((T) => n.set(T.id, C.id));
287
+ }), p(c, { created: d });
288
288
  }
289
289
  }, E = (d) => {
290
- const a = typeof d == "string" ? d : d.id, r = e.get(a);
291
- if (r)
292
- return e.delete(a), r.bodies.forEach((p) => n.delete(p.id)), r;
293
- console.warn(`Attempt to delete missing annotation: ${a}`);
294
- }, S = (d, a = O.LOCAL) => {
295
- const r = E(d);
296
- r && h(a, { deleted: [r] });
297
- }, v = (d, a = O.LOCAL) => {
298
- const r = d.reduce((p, C) => {
299
- const D = E(C);
300
- return D ? [...p, D] : p;
290
+ const r = typeof d == "string" ? d : d.id, c = e.get(r);
291
+ if (c)
292
+ return e.delete(r), c.bodies.forEach((f) => n.delete(f.id)), c;
293
+ console.warn(`Attempt to delete missing annotation: ${r}`);
294
+ }, S = (d, r = O.LOCAL) => {
295
+ const c = E(d);
296
+ c && p(r, { deleted: [c] });
297
+ }, y = (d, r = O.LOCAL) => {
298
+ const c = d.reduce((f, C) => {
299
+ const T = E(C);
300
+ return T ? [...f, T] : f;
301
301
  }, []);
302
- r.length > 0 && h(a, { deleted: r });
303
- }, c = (d) => {
304
- const a = e.get(d.annotation);
305
- if (a) {
306
- const r = a.bodies.find((p) => p.id === d.id);
307
- if (r) {
308
- n.delete(r.id);
309
- const p = {
310
- ...a,
311
- bodies: a.bodies.filter((D) => D.id !== d.id)
302
+ c.length > 0 && p(r, { deleted: c });
303
+ }, l = (d) => {
304
+ const r = e.get(d.annotation);
305
+ if (r) {
306
+ const c = r.bodies.find((f) => f.id === d.id);
307
+ if (c) {
308
+ n.delete(c.id);
309
+ const f = {
310
+ ...r,
311
+ bodies: r.bodies.filter((T) => T.id !== d.id)
312
312
  };
313
- return e.set(a.id, p), {
314
- oldValue: a,
315
- newValue: p,
316
- bodiesDeleted: [r]
313
+ return e.set(r.id, f), {
314
+ oldValue: r,
315
+ newValue: f,
316
+ bodiesDeleted: [c]
317
317
  };
318
318
  } else
319
319
  console.warn(`Attempt to delete missing body ${d.id} from annotation ${d.annotation}`);
320
320
  } else
321
321
  console.warn(`Attempt to delete body from missing annotation ${d.annotation}`);
322
- }, m = (d, a = O.LOCAL) => {
323
- const r = c(d);
324
- r && h(a, { updated: [r] });
325
- }, A = (d, a = O.LOCAL) => {
326
- const r = d.map((p) => c(p)).filter(Boolean);
327
- r.length > 0 && h(a, { updated: r });
328
- }, l = (d) => {
329
- const a = e.get(d);
330
- return a ? { ...a } : void 0;
331
- }, f = (d) => {
332
- const a = n.get(d);
333
- if (a) {
334
- const p = l(a).bodies.find((C) => C.id === d);
335
- if (p)
336
- return p;
322
+ }, g = (d, r = O.LOCAL) => {
323
+ const c = l(d);
324
+ c && p(r, { updated: [c] });
325
+ }, a = (d, r = O.LOCAL) => {
326
+ const c = d.map((f) => l(f)).filter(Boolean);
327
+ c.length > 0 && p(r, { updated: c });
328
+ }, A = (d) => {
329
+ const r = e.get(d);
330
+ return r ? { ...r } : void 0;
331
+ }, m = (d) => {
332
+ const r = n.get(d);
333
+ if (r) {
334
+ const f = A(r).bodies.find((C) => C.id === d);
335
+ if (f)
336
+ return f;
337
337
  console.error(`Store integrity error: body ${d} in index, but not in annotation`);
338
338
  } else
339
339
  console.warn(`Attempt to retrieve missing body: ${d}`);
340
- }, T = (d, a) => {
341
- if (d.annotation !== a.annotation)
340
+ }, R = (d, r) => {
341
+ if (d.annotation !== r.annotation)
342
342
  throw "Annotation integrity violation: annotation ID must be the same when updating bodies";
343
- const r = e.get(d.annotation);
344
- if (r) {
345
- const p = r.bodies.find((D) => D.id === d.id), C = {
346
- ...r,
347
- bodies: r.bodies.map((D) => D.id === p.id ? a : D)
343
+ const c = e.get(d.annotation);
344
+ if (c) {
345
+ const f = c.bodies.find((T) => T.id === d.id), C = {
346
+ ...c,
347
+ bodies: c.bodies.map((T) => T.id === f.id ? r : T)
348
348
  };
349
- return e.set(r.id, C), p.id !== a.id && (n.delete(p.id), n.set(a.id, C.id)), {
350
- oldValue: r,
349
+ return e.set(c.id, C), f.id !== r.id && (n.delete(f.id), n.set(r.id, C.id)), {
350
+ oldValue: c,
351
351
  newValue: C,
352
- bodiesUpdated: [{ oldBody: p, newBody: a }]
352
+ bodiesUpdated: [{ oldBody: f, newBody: r }]
353
353
  };
354
354
  } else
355
355
  console.warn(`Attempt to add body to missing annotation ${d.annotation}`);
356
- }, B = (d, a, r = O.LOCAL) => {
357
- const p = T(d, a);
358
- p && h(r, { updated: [p] });
359
- }, I = (d, a = O.LOCAL) => {
360
- const r = d.map((p) => T({ id: p.id, annotation: p.annotation }, p)).filter(Boolean);
361
- h(a, { updated: r });
362
- }, _ = (d) => {
363
- const a = e.get(d.annotation);
364
- if (a) {
365
- const r = {
366
- ...a,
356
+ }, N = (d, r, c = O.LOCAL) => {
357
+ const f = R(d, r);
358
+ f && p(c, { updated: [f] });
359
+ }, x = (d, r = O.LOCAL) => {
360
+ const c = d.map((f) => R({ id: f.id, annotation: f.annotation }, f)).filter(Boolean);
361
+ p(r, { updated: c });
362
+ }, Y = (d) => {
363
+ const r = e.get(d.annotation);
364
+ if (r) {
365
+ const c = {
366
+ ...r,
367
367
  target: {
368
- ...a.target,
368
+ ...r.target,
369
369
  ...d
370
370
  }
371
371
  };
372
- return e.set(a.id, r), {
373
- oldValue: a,
374
- newValue: r,
372
+ return e.set(r.id, c), {
373
+ oldValue: r,
374
+ newValue: c,
375
375
  targetUpdated: {
376
- oldTarget: a.target,
376
+ oldTarget: r.target,
377
377
  newTarget: d
378
378
  }
379
379
  };
@@ -381,30 +381,30 @@ const se = (e, n) => {
381
381
  console.warn(`Attempt to update target on missing annotation: ${d.annotation}`);
382
382
  };
383
383
  return {
384
- addAnnotation: L,
384
+ addAnnotation: w,
385
385
  addBody: U,
386
386
  all: s,
387
- bulkAddAnnotation: w,
388
- bulkDeleteAnnotation: v,
389
- bulkDeleteBodies: A,
387
+ bulkAddAnnotation: L,
388
+ bulkDeleteAnnotation: y,
389
+ bulkDeleteBodies: a,
390
390
  bulkUpdateAnnotation: u,
391
- bulkUpdateBodies: I,
392
- bulkUpdateTargets: (d, a = O.LOCAL) => {
393
- const r = d.map((p) => _(p)).filter(Boolean);
394
- r.length > 0 && h(a, { updated: r });
391
+ bulkUpdateBodies: x,
392
+ bulkUpdateTargets: (d, r = O.LOCAL) => {
393
+ const c = d.map((f) => Y(f)).filter(Boolean);
394
+ c.length > 0 && p(r, { updated: c });
395
395
  },
396
- clear: g,
396
+ clear: h,
397
397
  deleteAnnotation: S,
398
- deleteBody: m,
399
- getAnnotation: l,
400
- getBody: f,
398
+ deleteBody: g,
399
+ getAnnotation: A,
400
+ getBody: m,
401
401
  observe: o,
402
402
  unobserve: i,
403
- updateAnnotation: y,
404
- updateBody: B,
405
- updateTarget: (d, a = O.LOCAL) => {
406
- const r = _(d);
407
- r && h(a, { updated: [r] });
403
+ updateAnnotation: v,
404
+ updateBody: N,
405
+ updateTarget: (d, r = O.LOCAL) => {
406
+ const c = Y(d);
407
+ c && p(r, { updated: [c] });
408
408
  }
409
409
  };
410
410
  }, Oe = (e) => ({
@@ -414,7 +414,7 @@ const se = (e, n) => {
414
414
  return e.observe(o), t(e.all()), () => e.unobserve(o);
415
415
  }
416
416
  });
417
- let q = () => ({
417
+ let W = () => ({
418
418
  emit(e, ...n) {
419
419
  for (let t = 0, o = this.events[e] || [], i = o.length; t < i; t++)
420
420
  o[t](...n);
@@ -429,133 +429,130 @@ let q = () => ({
429
429
  }
430
430
  });
431
431
  const ae = 250, Te = (e) => {
432
- const n = q(), t = [];
433
- let o = -1, i = !1, h = 0;
434
- const L = (l) => {
432
+ const n = W(), t = [];
433
+ let o = -1, i = !1, p = 0;
434
+ const w = (a) => {
435
435
  if (!i) {
436
- const { changes: f } = l, T = performance.now();
437
- if (T - h > ae)
438
- t.splice(o + 1), t.push(f), o = t.length - 1;
436
+ const { changes: A } = a, m = performance.now();
437
+ if (m - p > ae)
438
+ t.splice(o + 1), t.push(A), o = t.length - 1;
439
439
  else {
440
- const B = t.length - 1;
441
- t[B] = ie(t[B], f);
440
+ const R = t.length - 1;
441
+ t[R] = ie(t[R], A);
442
442
  }
443
- h = T;
443
+ p = m;
444
444
  }
445
445
  i = !1;
446
446
  };
447
- e.observe(L, { origin: O.LOCAL });
448
- const b = (l) => l.map((f) => ({
449
- ...f,
450
- id: P()
451
- })), y = (l) => l && l.length > 0 && e.bulkDeleteAnnotation(l), u = (l) => l && l.length > 0 && e.bulkAddAnnotation(b(l), !1), U = (l) => l && l.length > 0 && e.bulkUpdateAnnotation(l.map(({ oldValue: f }) => f)), s = (l) => l && l.length > 0 && e.bulkUpdateAnnotation(l.map(({ newValue: f }) => f)), g = (l) => l && l.length > 0 && e.bulkAddAnnotation(b(l), !1), w = (l) => l && l.length > 0 && e.bulkDeleteAnnotation(l);
447
+ e.observe(w, { origin: O.LOCAL });
448
+ const b = (a) => a && a.length > 0 && e.bulkDeleteAnnotation(a), v = (a) => a && a.length > 0 && e.bulkAddAnnotation(a, !1), u = (a) => a && a.length > 0 && e.bulkUpdateAnnotation(a.map(({ oldValue: A }) => A)), U = (a) => a && a.length > 0 && e.bulkUpdateAnnotation(a.map(({ newValue: A }) => A)), s = (a) => a && a.length > 0 && e.bulkAddAnnotation(a, !1), h = (a) => a && a.length > 0 && e.bulkDeleteAnnotation(a);
452
449
  return {
453
450
  canRedo: () => t.length - 1 > o,
454
451
  canUndo: () => o > -1,
455
- destroy: () => e.unobserve(L),
456
- on: (l, f) => n.on(l, f),
452
+ destroy: () => e.unobserve(w),
453
+ on: (a, A) => n.on(a, A),
457
454
  redo: () => {
458
455
  if (t.length - 1 > o) {
459
456
  i = !0;
460
- const { created: l, updated: f, deleted: T } = t[o + 1];
461
- u(l), s(f), w(T), n.emit("redo", t[o + 1]), o += 1;
457
+ const { created: a, updated: A, deleted: m } = t[o + 1];
458
+ v(a), U(A), h(m), n.emit("redo", t[o + 1]), o += 1;
462
459
  }
463
460
  },
464
461
  undo: () => {
465
462
  if (o > -1) {
466
463
  i = !0;
467
- const { created: l, updated: f, deleted: T } = t[o];
468
- y(l), U(f), g(T), n.emit("undo", t[o]), o -= 1;
464
+ const { created: a, updated: A, deleted: m } = t[o];
465
+ b(a), u(A), s(m), n.emit("undo", t[o]), o -= 1;
469
466
  }
470
467
  }
471
468
  };
472
469
  }, De = () => {
473
- const { subscribe: e, set: n } = Y([]);
470
+ const { subscribe: e, set: n } = _([]);
474
471
  return {
475
472
  subscribe: e,
476
473
  set: n
477
474
  };
478
475
  }, Re = (e, n, t, o) => {
479
- const { store: i, selection: h, hover: L, viewport: b } = e, y = /* @__PURE__ */ new Map();
476
+ const { store: i, selection: p, hover: w, viewport: b } = e, v = /* @__PURE__ */ new Map();
480
477
  let u = [], U, s;
481
- const g = (c, m) => {
482
- y.has(c) ? y.get(c).push(m) : y.set(c, [m]);
483
- }, w = (c, m) => {
484
- const A = y.get(c);
485
- A && A.indexOf(m) > 0 && A.splice(A.indexOf(m), 1);
486
- }, E = (c, m, A) => {
487
- y.has(c) && setTimeout(() => {
488
- y.get(c).forEach((l) => {
478
+ const h = (l, g) => {
479
+ v.has(l) ? v.get(l).push(g) : v.set(l, [g]);
480
+ }, L = (l, g) => {
481
+ const a = v.get(l);
482
+ a && a.indexOf(g) > 0 && a.splice(a.indexOf(g), 1);
483
+ }, E = (l, g, a) => {
484
+ v.has(l) && setTimeout(() => {
485
+ v.get(l).forEach((A) => {
489
486
  if (t) {
490
- const f = Array.isArray(m) ? m.map((B) => t.serialize(B)) : t.serialize(m), T = A ? A instanceof PointerEvent ? A : t.serialize(A) : void 0;
491
- l(f, T);
487
+ const m = Array.isArray(g) ? g.map((N) => t.serialize(N)) : t.serialize(g), R = a ? a instanceof PointerEvent ? a : t.serialize(a) : void 0;
488
+ A(m, R);
492
489
  } else
493
- l(m, A);
490
+ A(g, a);
494
491
  });
495
492
  }, 1);
496
493
  }, S = () => {
497
- const { selected: c } = h, m = (c || []).map(({ id: A }) => i.getAnnotation(A));
498
- m.forEach((A) => {
499
- const l = u.find((f) => f.id === A.id);
500
- (!l || !x(l, A)) && E("updateAnnotation", A, l);
501
- }), u = u.map((A) => {
502
- const l = m.find(({ id: f }) => f === A.id);
503
- return l || A;
494
+ const { selected: l } = p, g = (l || []).map(({ id: a }) => i.getAnnotation(a));
495
+ g.forEach((a) => {
496
+ const A = u.find((m) => m.id === a.id);
497
+ (!A || !B(A, a)) && E("updateAnnotation", a, A);
498
+ }), u = u.map((a) => {
499
+ const A = g.find(({ id: m }) => m === a.id);
500
+ return A || a;
504
501
  });
505
502
  };
506
- h.subscribe(({ selected: c }) => {
507
- if (!(u.length === 0 && c.length === 0)) {
508
- if (u.length === 0 && c.length > 0)
509
- u = c.map(({ id: m }) => i.getAnnotation(m));
510
- else if (u.length > 0 && c.length === 0)
511
- u.forEach((m) => {
512
- const A = i.getAnnotation(m.id);
513
- A && !x(A, m) && E("updateAnnotation", A, m);
503
+ p.subscribe(({ selected: l }) => {
504
+ if (!(u.length === 0 && l.length === 0)) {
505
+ if (u.length === 0 && l.length > 0)
506
+ u = l.map(({ id: g }) => i.getAnnotation(g));
507
+ else if (u.length > 0 && l.length === 0)
508
+ u.forEach((g) => {
509
+ const a = i.getAnnotation(g.id);
510
+ a && !B(a, g) && E("updateAnnotation", a, g);
514
511
  }), u = [];
515
512
  else {
516
- const m = new Set(u.map((f) => f.id)), A = new Set(c.map(({ id: f }) => f));
517
- u.filter((f) => !A.has(f.id)).forEach((f) => {
518
- const T = i.getAnnotation(f.id);
519
- T && !x(T, f) && E("updateAnnotation", T, f);
513
+ const g = new Set(u.map((m) => m.id)), a = new Set(l.map(({ id: m }) => m));
514
+ u.filter((m) => !a.has(m.id)).forEach((m) => {
515
+ const R = i.getAnnotation(m.id);
516
+ R && !B(R, m) && E("updateAnnotation", R, m);
520
517
  }), u = [
521
518
  // Remove annotations that were deselected
522
- ...u.filter((f) => A.has(f.id)),
519
+ ...u.filter((m) => a.has(m.id)),
523
520
  // Add editable annotations that were selected
524
- ...c.filter(({ id: f }) => !m.has(f)).map(({ id: f }) => i.getAnnotation(f))
521
+ ...l.filter(({ id: m }) => !g.has(m)).map(({ id: m }) => i.getAnnotation(m))
525
522
  ];
526
523
  }
527
524
  E("selectionChanged", u);
528
525
  }
529
- }), L.subscribe((c) => {
530
- !U && c ? E("mouseEnterAnnotation", i.getAnnotation(c)) : U && !c ? E("mouseLeaveAnnotation", i.getAnnotation(U)) : U && c && (E("mouseLeaveAnnotation", i.getAnnotation(U)), E("mouseEnterAnnotation", i.getAnnotation(c))), U = c;
531
- }), b == null || b.subscribe((c) => E("viewportIntersect", c.map((m) => i.getAnnotation(m)))), i.observe((c) => {
526
+ }), w.subscribe((l) => {
527
+ !U && l ? E("mouseEnterAnnotation", i.getAnnotation(l)) : U && !l ? E("mouseLeaveAnnotation", i.getAnnotation(U)) : U && l && (E("mouseLeaveAnnotation", i.getAnnotation(U)), E("mouseEnterAnnotation", i.getAnnotation(l))), U = l;
528
+ }), b == null || b.subscribe((l) => E("viewportIntersect", l.map((g) => i.getAnnotation(g)))), i.observe((l) => {
532
529
  o && (s && clearTimeout(s), s = setTimeout(S, 1e3));
533
- const { created: m, deleted: A } = c.changes;
534
- (m || []).forEach((f) => E("createAnnotation", f)), (A || []).forEach((f) => E("deleteAnnotation", f)), (c.changes.updated || []).filter((f) => [
535
- ...f.bodiesCreated || [],
536
- ...f.bodiesDeleted || [],
537
- ...f.bodiesUpdated || []
538
- ].length > 0).forEach(({ oldValue: f, newValue: T }) => {
539
- const B = u.find((I) => I.id === f.id) || f;
540
- u = u.map((I) => I.id === f.id ? T : I), E("updateAnnotation", T, B);
530
+ const { created: g, deleted: a } = l.changes;
531
+ (g || []).forEach((m) => E("createAnnotation", m)), (a || []).forEach((m) => E("deleteAnnotation", m)), (l.changes.updated || []).filter((m) => [
532
+ ...m.bodiesCreated || [],
533
+ ...m.bodiesDeleted || [],
534
+ ...m.bodiesUpdated || []
535
+ ].length > 0).forEach(({ oldValue: m, newValue: R }) => {
536
+ const N = u.find((x) => x.id === m.id) || m;
537
+ u = u.map((x) => x.id === m.id ? R : x), E("updateAnnotation", R, N);
541
538
  });
542
- }, { origin: O.LOCAL }), i.observe((c) => {
539
+ }, { origin: O.LOCAL }), i.observe((l) => {
543
540
  if (u) {
544
- const m = new Set(u.map((l) => l.id)), A = (c.changes.updated || []).filter(({ newValue: l }) => m.has(l.id)).map(({ newValue: l }) => l);
545
- A.length > 0 && (u = u.map((l) => {
546
- const f = A.find((T) => T.id === l.id);
547
- return f || l;
541
+ const g = new Set(u.map((A) => A.id)), a = (l.changes.updated || []).filter(({ newValue: A }) => g.has(A.id)).map(({ newValue: A }) => A);
542
+ a.length > 0 && (u = u.map((A) => {
543
+ const m = a.find((R) => R.id === A.id);
544
+ return m || A;
548
545
  }));
549
546
  }
550
547
  }, { origin: O.REMOTE });
551
- const v = (c) => (m) => {
552
- const { updated: A } = m;
553
- c ? (A || []).forEach((l) => E("updateAnnotation", l.oldValue, l.newValue)) : (A || []).forEach((l) => E("updateAnnotation", l.newValue, l.oldValue));
548
+ const y = (l) => (g) => {
549
+ const { updated: a } = g;
550
+ l ? (a || []).forEach((A) => E("updateAnnotation", A.oldValue, A.newValue)) : (a || []).forEach((A) => E("updateAnnotation", A.newValue, A.oldValue));
554
551
  };
555
- return n.on("undo", v(!0)), n.on("redo", v(!1)), { on: g, off: w, emit: E };
552
+ return n.on("undo", y(!0)), n.on("redo", y(!1)), { on: h, off: L, emit: E };
556
553
  }, Be = (e) => (n) => n.map((t) => e.serialize(t)), re = (e) => (n) => n.reduce((t, o) => {
557
- const { parsed: i, error: h } = e.parse(o);
558
- return h ? {
554
+ const { parsed: i, error: p } = e.parse(o);
555
+ return p ? {
559
556
  parsed: t.parsed,
560
557
  failed: [...t.failed, o]
561
558
  } : i ? {
@@ -565,59 +562,59 @@ const ae = 250, Te = (e) => {
565
562
  ...t
566
563
  };
567
564
  }, { parsed: [], failed: [] }), xe = (e, n, t) => {
568
- const { store: o, selection: i } = e, h = (v) => {
565
+ const { store: o, selection: i } = e, p = (y) => {
569
566
  if (t) {
570
- const { parsed: c, error: m } = t.parse(v);
571
- c ? o.addAnnotation(c, O.REMOTE) : console.error(m);
567
+ const { parsed: l, error: g } = t.parse(y);
568
+ l ? o.addAnnotation(l, O.REMOTE) : console.error(g);
572
569
  } else
573
- o.addAnnotation(v, O.REMOTE);
574
- }, L = () => i.clear(), b = () => o.clear(), y = (v) => {
575
- const c = o.getAnnotation(v);
576
- return t && c ? t.serialize(c) : c;
570
+ o.addAnnotation(y, O.REMOTE);
571
+ }, w = () => i.clear(), b = () => o.clear(), v = (y) => {
572
+ const l = o.getAnnotation(y);
573
+ return t && l ? t.serialize(l) : l;
577
574
  }, u = () => t ? o.all().map(t.serialize) : o.all(), U = () => {
578
- var m;
579
- const c = (((m = i.selected) == null ? void 0 : m.map((A) => A.id)) || []).map((A) => o.getAnnotation(A)).filter(Boolean);
580
- return t ? c.map(t.serialize) : c;
581
- }, s = (v, c = !0) => fetch(v).then((m) => m.json()).then((m) => (w(m, c), m)), g = (v) => {
582
- if (typeof v == "string") {
583
- const c = o.getAnnotation(v);
584
- if (o.deleteAnnotation(v), c)
585
- return t ? t.serialize(c) : c;
575
+ var g;
576
+ const l = (((g = i.selected) == null ? void 0 : g.map((a) => a.id)) || []).map((a) => o.getAnnotation(a)).filter(Boolean);
577
+ return t ? l.map(t.serialize) : l;
578
+ }, s = (y, l = !0) => fetch(y).then((g) => g.json()).then((g) => (L(g, l), g)), h = (y) => {
579
+ if (typeof y == "string") {
580
+ const l = o.getAnnotation(y);
581
+ if (o.deleteAnnotation(y), l)
582
+ return t ? t.serialize(l) : l;
586
583
  } else {
587
- const c = t ? t.parse(v).parsed : v;
588
- if (c)
589
- return o.deleteAnnotation(c), v;
584
+ const l = t ? t.parse(y).parsed : y;
585
+ if (l)
586
+ return o.deleteAnnotation(l), y;
590
587
  }
591
- }, w = (v, c = !0) => {
588
+ }, L = (y, l = !0) => {
592
589
  if (t) {
593
- const { parsed: m, failed: A } = re(t)(v);
594
- A.length > 0 && console.warn(`Discarded ${A.length} invalid annotations`, A), o.bulkAddAnnotation(m, c, O.REMOTE);
590
+ const { parsed: g, failed: a } = re(t)(y);
591
+ a.length > 0 && console.warn(`Discarded ${a.length} invalid annotations`, a), o.bulkAddAnnotation(g, l, O.REMOTE);
595
592
  } else
596
- o.bulkAddAnnotation(v, c, O.REMOTE);
597
- }, E = (v) => {
598
- v ? i.setSelected(v) : i.clear();
599
- }, S = (v) => {
593
+ o.bulkAddAnnotation(y, l, O.REMOTE);
594
+ }, E = (y) => {
595
+ y ? i.setSelected(y) : i.clear();
596
+ }, S = (y) => {
600
597
  if (t) {
601
- const c = t.parse(v).parsed, m = t.serialize(o.getAnnotation(c.id));
602
- return o.updateAnnotation(c), m;
598
+ const l = t.parse(y).parsed, g = t.serialize(o.getAnnotation(l.id));
599
+ return o.updateAnnotation(l), g;
603
600
  } else {
604
- const c = o.getAnnotation(v.id);
605
- return o.updateAnnotation(v), c;
601
+ const l = o.getAnnotation(y.id);
602
+ return o.updateAnnotation(y), l;
606
603
  }
607
604
  };
608
605
  return {
609
- addAnnotation: h,
610
- cancelSelected: L,
606
+ addAnnotation: p,
607
+ cancelSelected: w,
611
608
  canRedo: n.canRedo,
612
609
  canUndo: n.canUndo,
613
610
  clearAnnotations: b,
614
- getAnnotationById: y,
611
+ getAnnotationById: v,
615
612
  getAnnotations: u,
616
613
  getSelected: U,
617
614
  loadAnnotations: s,
618
615
  redo: n.redo,
619
- removeAnnotation: g,
620
- setAnnotations: w,
616
+ removeAnnotation: h,
617
+ setAnnotations: L,
621
618
  setSelected: E,
622
619
  undo: n.undo,
623
620
  updateAnnotation: S
@@ -625,13 +622,13 @@ const ae = 250, Te = (e) => {
625
622
  }, ce = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
626
623
  let le = (e) => crypto.getRandomValues(new Uint8Array(e)), ue = (e, n, t) => {
627
624
  let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, i = -~(1.6 * o * n / e.length);
628
- return (h = n) => {
629
- let L = "";
625
+ return (p = n) => {
626
+ let w = "";
630
627
  for (; ; ) {
631
- let b = t(i), y = i;
632
- for (; y--; )
633
- if (L += e[b[y] & o] || "", L.length === h)
634
- return L;
628
+ let b = t(i), v = i;
629
+ for (; v--; )
630
+ if (w += e[b[v] & o] || "", w.length === p)
631
+ return w;
635
632
  }
636
633
  };
637
634
  }, fe = (e, n = 21) => ue(e, n, le), pe = (e = 21) => {
@@ -644,26 +641,31 @@ const Ie = () => ({ isGuest: !0, id: fe("1234567890abcdefghijklmnopqrstuvwxyzABC
644
641
  const n = JSON.stringify(e);
645
642
  let t = 0;
646
643
  for (let o = 0, i = n.length; o < i; o++) {
647
- let h = n.charCodeAt(o);
648
- t = (t << 5) - t + h, t |= 0;
644
+ let p = n.charCodeAt(o);
645
+ t = (t << 5) - t + p, t |= 0;
649
646
  }
650
647
  return `${t}`;
651
648
  }, ge = (e) => e ? typeof e == "object" ? { ...e } : e : void 0, ke = (e, n) => (Array.isArray(e) ? e : [e]).map((t) => {
652
- const { id: o, type: i, purpose: h, value: L, created: b, creator: y, ...u } = t;
649
+ const { id: o, type: i, purpose: p, value: w, created: b, modified: v, creator: u, ...U } = t;
653
650
  return {
654
651
  id: o || `temp-${he(t)}`,
655
652
  annotation: n,
656
653
  type: i,
657
- purpose: h,
658
- value: L,
654
+ purpose: p,
655
+ value: w,
656
+ creator: ge(u),
659
657
  created: b ? new Date(b) : void 0,
660
- creator: ge(y),
661
- ...u
658
+ updated: v ? new Date(v) : void 0,
659
+ ...U
662
660
  };
663
661
  }), Ne = (e) => e.map((n) => {
664
- var o, i;
665
- const t = { ...n };
666
- return delete t.annotation, (o = t.id) != null && o.startsWith("temp-") && delete t.id, { ...t, created: (i = t.created) == null ? void 0 : i.toISOString() };
662
+ var b;
663
+ const { annotation: t, created: o, updated: i, ...p } = n, w = {
664
+ ...p,
665
+ created: o == null ? void 0 : o.toISOString(),
666
+ modified: i == null ? void 0 : i.toISOString()
667
+ };
668
+ return (b = w.id) != null && b.startsWith("temp-") && delete w.id, w;
667
669
  }), me = [
668
670
  "#ff7c00",
669
671
  // orange
@@ -692,83 +694,83 @@ const Ie = () => ({ isGuest: !0, id: fe("1234567890abcdefghijklmnopqrstuvwxyzABC
692
694
  }, be = () => {
693
695
  const e = Ae();
694
696
  return { addUser: (o, i) => {
695
- const h = e.assignRandomColor();
697
+ const p = e.assignRandomColor();
696
698
  return {
697
699
  label: i.name || i.id,
698
700
  avatar: i.avatar,
699
- color: h
701
+ color: p
700
702
  };
701
703
  }, removeUser: (o) => e.releaseColor(o.appearance.color) };
702
704
  }, Ee = (e, n) => e.every((t) => e.includes(t)) && n.every((t) => e.includes(t)), $e = pe(), ze = (e = be()) => {
703
- const n = q(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = (s, g) => {
705
+ const n = W(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = (s, h) => {
704
706
  if (t.has(s)) {
705
- console.warn("Attempt to add user that is already present", s, g);
707
+ console.warn("Attempt to add user that is already present", s, h);
706
708
  return;
707
709
  }
708
- const w = e.addUser(s, g);
710
+ const L = e.addUser(s, h);
709
711
  t.set(s, {
710
- ...g,
712
+ ...h,
711
713
  presenceKey: s,
712
- appearance: w
714
+ appearance: L
713
715
  });
714
- }, h = (s) => {
715
- const g = t.get(s);
716
- if (!g) {
716
+ }, p = (s) => {
717
+ const h = t.get(s);
718
+ if (!h) {
717
719
  console.warn("Attempt to remove user that is not present", s);
718
720
  return;
719
721
  }
720
- e.removeUser(g), t.delete(s);
721
- }, L = (s) => {
722
- const g = new Set(s.map((S) => S.presenceKey)), w = s.filter(({ presenceKey: S }) => !t.has(S)), E = Array.from(t.values()).filter((S) => !g.has(S.presenceKey));
723
- w.forEach(({ presenceKey: S, user: v }) => i(S, v)), E.forEach((S) => {
724
- const { presenceKey: v } = S;
725
- o.has(v) && n.emit("selectionChange", S, null), h(v);
726
- }), (w.length > 0 || E.length > 0) && n.emit("presence", u());
727
- }, b = (s, g) => {
728
- const w = t.get(s);
729
- if (!w) {
722
+ e.removeUser(h), t.delete(s);
723
+ }, w = (s) => {
724
+ const h = new Set(s.map((S) => S.presenceKey)), L = s.filter(({ presenceKey: S }) => !t.has(S)), E = Array.from(t.values()).filter((S) => !h.has(S.presenceKey));
725
+ L.forEach(({ presenceKey: S, user: y }) => i(S, y)), E.forEach((S) => {
726
+ const { presenceKey: y } = S;
727
+ o.has(y) && n.emit("selectionChange", S, null), p(y);
728
+ }), (L.length > 0 || E.length > 0) && n.emit("presence", u());
729
+ }, b = (s, h) => {
730
+ const L = t.get(s);
731
+ if (!L) {
730
732
  console.warn("Activity notification from user that is not present");
731
733
  return;
732
734
  }
733
735
  const E = o.get(s);
734
- (!E || !Ee(E, g)) && (o.set(s, g), n.emit("selectionChange", w, g));
735
- }, y = (s, g) => {
736
- const w = t.get(s);
737
- if (!w) {
736
+ (!E || !Ee(E, h)) && (o.set(s, h), n.emit("selectionChange", L, h));
737
+ }, v = (s, h) => {
738
+ const L = t.get(s);
739
+ if (!L) {
738
740
  console.warn("Selection change for user that is not present", s);
739
741
  return;
740
742
  }
741
- g ? o.set(s, g) : o.delete(s), n.emit("selectionChange", w, g);
743
+ h ? o.set(s, h) : o.delete(s), n.emit("selectionChange", L, h);
742
744
  }, u = () => [...Array.from(t.values())];
743
745
  return {
744
746
  getPresentUsers: u,
745
747
  notifyActivity: b,
746
- on: (s, g) => n.on(s, g),
747
- syncUsers: L,
748
- updateSelection: y
748
+ on: (s, h) => n.on(s, h),
749
+ syncUsers: w,
750
+ updateSelection: v
749
751
  };
750
752
  };
751
753
  export {
752
754
  oe as Ignore,
753
755
  O as Origin,
754
756
  $e as PRESENCE_KEY,
755
- H as PointerSelectAction,
757
+ G as PointerSelectAction,
756
758
  Ie as createAnonymousGuest,
757
759
  xe as createBaseAnnotator,
758
760
  Ue as createBody,
759
761
  be as createDefaultAppearenceProvider,
760
- Ce as createHoverState,
762
+ we as createHoverState,
761
763
  Re as createLifecyleObserver,
762
764
  ze as createPresenceState,
763
- we as createSelectionState,
765
+ Ce as createSelectionState,
764
766
  Se as createStore,
765
767
  Te as createUndoStack,
766
768
  De as createViewportState,
767
769
  Ae as defaultColorProvider,
768
- W as diffAnnotations,
770
+ P as diffAnnotations,
769
771
  Le as getContributors,
770
772
  ie as mergeChanges,
771
- F as onPointerSelect,
773
+ H as onPointerSelect,
772
774
  re as parseAll,
773
775
  ke as parseW3CBodies,
774
776
  ge as parseW3CUser,