@annotorious/core 3.0.4 → 3.0.6

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