@annotorious/core 3.0.11 → 3.0.12

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