@annotorious/core 3.0.15 → 3.0.17

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