@annotorious/svelte 3.0.0-rc.21 → 3.0.0-rc.4
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.
- package/dist/annotorious-svelte.es.js +14 -17
- package/dist/annotorious-svelte.es.js.map +1 -1
- package/dist/annotorious-svelte.es10.js +119 -23
- package/dist/annotorious-svelte.es10.js.map +1 -1
- package/dist/annotorious-svelte.es11.js +2 -111
- package/dist/annotorious-svelte.es11.js.map +1 -1
- package/dist/annotorious-svelte.es12.js +19 -2
- package/dist/annotorious-svelte.es12.js.map +1 -1
- package/dist/annotorious-svelte.es13.js +4 -2
- package/dist/annotorious-svelte.es13.js.map +1 -1
- package/dist/annotorious-svelte.es14.js +6 -27434
- package/dist/annotorious-svelte.es14.js.map +1 -1
- package/dist/annotorious-svelte.es15.js +6 -119
- package/dist/annotorious-svelte.es15.js.map +1 -1
- package/dist/annotorious-svelte.es2.js +25 -30
- package/dist/annotorious-svelte.es2.js.map +1 -1
- package/dist/annotorious-svelte.es3.js +2 -95
- package/dist/annotorious-svelte.es3.js.map +1 -1
- package/dist/annotorious-svelte.es4.js +8 -4238
- package/dist/annotorious-svelte.es4.js.map +1 -1
- package/dist/annotorious-svelte.es5.js +1263 -86
- package/dist/annotorious-svelte.es5.js.map +1 -1
- package/dist/annotorious-svelte.es6.js +86 -104
- package/dist/annotorious-svelte.es6.js.map +1 -1
- package/dist/annotorious-svelte.es7.js +118 -92
- package/dist/annotorious-svelte.es7.js.map +1 -1
- package/dist/annotorious-svelte.es8.js +303 -31
- package/dist/annotorious-svelte.es8.js.map +1 -1
- package/dist/annotorious-svelte.es9.js +20115 -21
- package/dist/annotorious-svelte.es9.js.map +1 -1
- package/dist/index.d.ts +8 -11
- package/dist/index.d.ts.map +1 -1
- package/package.json +11 -22
- package/src/index.ts +21 -40
- package/vite.config.js +0 -1
- package/dist/annotorious-svelte.es16.js +0 -2
- package/dist/annotorious-svelte.es16.js.map +0 -1
- package/dist/annotorious-svelte.es17.js +0 -59
- package/dist/annotorious-svelte.es17.js.map +0 -1
- /package/dist/{annotorious-svelte.css → style.css} +0 -0
|
@@ -1,123 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (e === void 0)
|
|
7
|
-
return;
|
|
8
|
-
if (J(e))
|
|
9
|
-
return e.getBoundingClientRect();
|
|
10
|
-
if (typeof e == "object") {
|
|
11
|
-
const { top: d = 0, left: u = 0, right: y = 0, bottom: f = 0 } = e;
|
|
12
|
-
return { top: d, right: window.innerWidth - y, bottom: window.innerHeight - f, left: u };
|
|
13
|
-
}
|
|
14
|
-
if (e === "parent")
|
|
15
|
-
return s.parentNode.getBoundingClientRect();
|
|
16
|
-
const i = document.querySelector(e);
|
|
17
|
-
if (i === null)
|
|
18
|
-
throw new Error("The selector provided for bound doesn't exists in the document.");
|
|
19
|
-
return i.getBoundingClientRect();
|
|
1
|
+
const i = [];
|
|
2
|
+
for (let n = 0; n < 256; ++n)
|
|
3
|
+
i.push((n + 256).toString(16).slice(1));
|
|
4
|
+
function c(n, u = 0) {
|
|
5
|
+
return i[n[u + 0]] + i[n[u + 1]] + i[n[u + 2]] + i[n[u + 3]] + "-" + i[n[u + 4]] + i[n[u + 5]] + "-" + i[n[u + 6]] + i[n[u + 7]] + "-" + i[n[u + 8]] + i[n[u + 9]] + "-" + i[n[u + 10]] + i[n[u + 11]] + i[n[u + 12]] + i[n[u + 13]] + i[n[u + 14]] + i[n[u + 15]];
|
|
20
6
|
}
|
|
21
|
-
var H = (e, s, i) => e.style.setProperty(s, i), J = (e) => e instanceof HTMLElement, ut = (e, s = {}) => {
|
|
22
|
-
let i, d, { bounds: u, axis: y = "both", gpuAcceleration: f = !0, legacyTranslate: K = !0, transform: L, applyUserSelectHack: P = !0, disabled: O = !1, ignoreMultitouch: Q = !1, recomputeBounds: x = F, grid: T, position: p, cancel: N, handle: D, defaultClass: M = "neodrag", defaultClassDragging: X = "neodrag-dragging", defaultClassDragged: S = "neodrag-dragged", defaultPosition: it = { x: 0, y: 0 }, onDragStart: at, onDrag: st, onDragEnd: lt } = s, B = !1, b = 0, w = 0, A = 0, C = 0, Y = 0, q = 0, { x: $, y: R } = p ? { x: (p == null ? void 0 : p.x) ?? 0, y: (p == null ? void 0 : p.y) ?? 0 } : it;
|
|
23
|
-
W($, R);
|
|
24
|
-
let g, v, E, k, V, Z = "", ct = !!p;
|
|
25
|
-
x = { ...F, ...x };
|
|
26
|
-
const U = document.body.style, m = e.classList;
|
|
27
|
-
function W(t = b, r = w) {
|
|
28
|
-
if (!L) {
|
|
29
|
-
if (K) {
|
|
30
|
-
let a = `${+t}px, ${+r}px`;
|
|
31
|
-
return H(e, "transform", f ? `translate3d(${a}, 0)` : `translate(${a})`);
|
|
32
|
-
}
|
|
33
|
-
return H(e, "translate", `${+t}px ${+r}px ${f ? "1px" : ""}`);
|
|
34
|
-
}
|
|
35
|
-
const o = L({ offsetX: t, offsetY: r, rootNode: e });
|
|
36
|
-
G(o) && H(e, "transform", o);
|
|
37
|
-
}
|
|
38
|
-
const j = (t, r) => {
|
|
39
|
-
const o = { offsetX: b, offsetY: w, rootNode: e, currentNode: V };
|
|
40
|
-
e.dispatchEvent(new CustomEvent(t, { detail: o })), r == null || r(o);
|
|
41
|
-
}, z = addEventListener;
|
|
42
|
-
z("pointerdown", tt, !1), z("pointerup", et, !1), z("pointermove", nt, !1), H(e, "touch-action", "none");
|
|
43
|
-
const _ = () => {
|
|
44
|
-
let t = e.offsetWidth / v.width;
|
|
45
|
-
return isNaN(t) && (t = 1), t;
|
|
46
|
-
};
|
|
47
|
-
function tt(t) {
|
|
48
|
-
if (O || t.button === 2 || Q && !t.isPrimary)
|
|
49
|
-
return;
|
|
50
|
-
if (x.dragStart && (g = I(u, e)), G(D) && G(N) && D === N)
|
|
51
|
-
throw new Error("`handle` selector can't be same as `cancel` selector");
|
|
52
|
-
if (m.add(M), E = function(n, c) {
|
|
53
|
-
if (!n)
|
|
54
|
-
return [c];
|
|
55
|
-
if (J(n))
|
|
56
|
-
return [n];
|
|
57
|
-
if (Array.isArray(n))
|
|
58
|
-
return n;
|
|
59
|
-
const h = c.querySelectorAll(n);
|
|
60
|
-
if (h === null)
|
|
61
|
-
throw new Error("Selector passed for `handle` option should be child of the element on which the action is applied");
|
|
62
|
-
return Array.from(h.values());
|
|
63
|
-
}(D, e), k = function(n, c) {
|
|
64
|
-
if (!n)
|
|
65
|
-
return [];
|
|
66
|
-
if (J(n))
|
|
67
|
-
return [n];
|
|
68
|
-
if (Array.isArray(n))
|
|
69
|
-
return n;
|
|
70
|
-
const h = c.querySelectorAll(n);
|
|
71
|
-
if (h === null)
|
|
72
|
-
throw new Error("Selector passed for `cancel` option should be child of the element on which the action is applied");
|
|
73
|
-
return Array.from(h.values());
|
|
74
|
-
}(N, e), i = /(both|x)/.test(y), d = /(both|y)/.test(y), ot(k, E))
|
|
75
|
-
throw new Error("Element being dragged can't be a child of the element on which `cancel` is applied");
|
|
76
|
-
const r = t.composedPath()[0];
|
|
77
|
-
if (!E.some((n) => {
|
|
78
|
-
var c;
|
|
79
|
-
return n.contains(r) || ((c = n.shadowRoot) == null ? void 0 : c.contains(r));
|
|
80
|
-
}) || ot(k, [r]))
|
|
81
|
-
return;
|
|
82
|
-
V = E.length === 1 ? e : E.find((n) => n.contains(r)), B = !0, v = e.getBoundingClientRect(), P && (Z = U.userSelect, U.userSelect = "none"), j("neodrag:start", at);
|
|
83
|
-
const { clientX: o, clientY: a } = t, l = _();
|
|
84
|
-
i && (A = o - $ / l), d && (C = a - R / l), g && (Y = o - v.left, q = a - v.top);
|
|
85
|
-
}
|
|
86
|
-
function et() {
|
|
87
|
-
B && (x.dragEnd && (g = I(u, e)), m.remove(X), m.add(S), P && (U.userSelect = Z), j("neodrag:end", lt), i && (A = b), d && (C = w), B = !1);
|
|
88
|
-
}
|
|
89
|
-
function nt(t) {
|
|
90
|
-
if (!B)
|
|
91
|
-
return;
|
|
92
|
-
x.drag && (g = I(u, e)), m.add(X), t.preventDefault(), v = e.getBoundingClientRect();
|
|
93
|
-
let r = t.clientX, o = t.clientY;
|
|
94
|
-
const a = _();
|
|
95
|
-
if (g) {
|
|
96
|
-
const l = { left: g.left + Y, top: g.top + q, right: g.right + Y - v.width, bottom: g.bottom + q - v.height };
|
|
97
|
-
r = rt(r, l.left, l.right), o = rt(o, l.top, l.bottom);
|
|
98
|
-
}
|
|
99
|
-
if (Array.isArray(T)) {
|
|
100
|
-
let [l, n] = T;
|
|
101
|
-
if (isNaN(+l) || l < 0)
|
|
102
|
-
throw new Error("1st argument of `grid` must be a valid positive number");
|
|
103
|
-
if (isNaN(+n) || n < 0)
|
|
104
|
-
throw new Error("2nd argument of `grid` must be a valid positive number");
|
|
105
|
-
let c = r - A, h = o - C;
|
|
106
|
-
[c, h] = dt([l / a, n / a], c, h), r = A + c, o = C + h;
|
|
107
|
-
}
|
|
108
|
-
i && (b = Math.round((r - A) * a)), d && (w = Math.round((o - C) * a)), $ = b, R = w, j("neodrag", st), W();
|
|
109
|
-
}
|
|
110
|
-
return { destroy: () => {
|
|
111
|
-
const t = removeEventListener;
|
|
112
|
-
t("pointerdown", tt, !1), t("pointerup", et, !1), t("pointermove", nt, !1);
|
|
113
|
-
}, update: (t) => {
|
|
114
|
-
var o, a;
|
|
115
|
-
y = t.axis || "both", O = t.disabled ?? !1, Q = t.ignoreMultitouch ?? !1, D = t.handle, u = t.bounds, x = t.recomputeBounds ?? F, N = t.cancel, P = t.applyUserSelectHack ?? !0, T = t.grid, f = t.gpuAcceleration ?? !0, K = t.legacyTranslate ?? !0, L = t.transform;
|
|
116
|
-
const r = m.contains(S);
|
|
117
|
-
m.remove(M, S), M = t.defaultClass ?? "neodrag", X = t.defaultClassDragging ?? "neodrag-dragging", S = t.defaultClassDragged ?? "neodrag-dragged", m.add(M), r && m.add(S), ct && ($ = b = ((o = t.position) == null ? void 0 : o.x) ?? b, R = w = ((a = t.position) == null ? void 0 : a.y) ?? w, W());
|
|
118
|
-
} };
|
|
119
|
-
};
|
|
120
7
|
export {
|
|
121
|
-
|
|
8
|
+
c as unsafeStringify
|
|
122
9
|
};
|
|
123
10
|
//# sourceMappingURL=annotorious-svelte.es15.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-svelte.es15.js","sources":["../../../node_modules/@neodrag/svelte/dist/min/index.js"],"sourcesContent":["var t={dragStart:!0},e=(t,e,n)=>Math.min(Math.max(t,e),n),n=t=>\"string\"==typeof t,r=([t,e],n,r)=>{const o=(t,e)=>0===e?0:Math.ceil(t/e)*e;return[o(n,t),o(r,e)]};var o=(t,e)=>t.some((t=>e.some((e=>t.contains(e)))));function i(t,e){if(void 0===t)return;if(s(t))return t.getBoundingClientRect();if(\"object\"==typeof t){const{top:e=0,left:n=0,right:r=0,bottom:o=0}=t;return{top:e,right:window.innerWidth-r,bottom:window.innerHeight-o,left:n}}if(\"parent\"===t)return e.parentNode.getBoundingClientRect();const n=document.querySelector(t);if(null===n)throw new Error(\"The selector provided for bound doesn't exists in the document.\");return n.getBoundingClientRect()}var a=(t,e,n)=>t.style.setProperty(e,n),s=t=>t instanceof HTMLElement,d=(d,l={})=>{let c,u,{bounds:f,axis:g=\"both\",gpuAcceleration:h=!0,legacyTranslate:p=!0,transform:m,applyUserSelectHack:y=!0,disabled:b=!1,ignoreMultitouch:w=!1,recomputeBounds:v=t,grid:x,position:E,cancel:S,handle:A,defaultClass:C=\"neodrag\",defaultClassDragging:N=\"neodrag-dragging\",defaultClassDragged:D=\"neodrag-dragged\",defaultPosition:M={x:0,y:0},onDragStart:B,onDrag:$,onDragEnd:R}=l,H=!1,L=0,P=0,T=0,X=0,Y=0,q=0,{x:k,y:U}=E?{x:E?.x??0,y:E?.y??0}:M;Q(k,U);let W,j,z,F,G,I=\"\",J=!!E;v={...t,...v};const K=document.body.style,O=d.classList;function Q(t=L,e=P){if(!m){if(p){let n=`${+t}px, ${+e}px`;return a(d,\"transform\",h?`translate3d(${n}, 0)`:`translate(${n})`)}return a(d,\"translate\",`${+t}px ${+e}px ${h?\"1px\":\"\"}`)}const r=m({offsetX:t,offsetY:e,rootNode:d});n(r)&&a(d,\"transform\",r)}const V=(t,e)=>{const n={offsetX:L,offsetY:P,rootNode:d,currentNode:G};d.dispatchEvent(new CustomEvent(t,{detail:n})),e?.(n)};const Z=addEventListener;Z(\"pointerdown\",tt,!1),Z(\"pointerup\",et,!1),Z(\"pointermove\",nt,!1),a(d,\"touch-action\",\"none\");const _=()=>{let t=d.offsetWidth/j.width;return isNaN(t)&&(t=1),t};function tt(t){if(b)return;if(2===t.button)return;if(w&&!t.isPrimary)return;if(v.dragStart&&(W=i(f,d)),n(A)&&n(S)&&A===S)throw new Error(\"`handle` selector can't be same as `cancel` selector\");if(O.add(C),z=function(t,e){if(!t)return[e];if(s(t))return[t];if(Array.isArray(t))return t;const n=e.querySelectorAll(t);if(null===n)throw new Error(\"Selector passed for `handle` option should be child of the element on which the action is applied\");return Array.from(n.values())}(A,d),F=function(t,e){if(!t)return[];if(s(t))return[t];if(Array.isArray(t))return t;const n=e.querySelectorAll(t);if(null===n)throw new Error(\"Selector passed for `cancel` option should be child of the element on which the action is applied\");return Array.from(n.values())}(S,d),c=/(both|x)/.test(g),u=/(both|y)/.test(g),o(F,z))throw new Error(\"Element being dragged can't be a child of the element on which `cancel` is applied\");const e=t.composedPath()[0];if(!z.some((t=>t.contains(e)||t.shadowRoot?.contains(e)))||o(F,[e]))return;G=1===z.length?d:z.find((t=>t.contains(e))),H=!0,j=d.getBoundingClientRect(),y&&(I=K.userSelect,K.userSelect=\"none\"),V(\"neodrag:start\",B);const{clientX:r,clientY:a}=t,l=_();c&&(T=r-k/l),u&&(X=a-U/l),W&&(Y=r-j.left,q=a-j.top)}function et(){H&&(v.dragEnd&&(W=i(f,d)),O.remove(N),O.add(D),y&&(K.userSelect=I),V(\"neodrag:end\",R),c&&(T=L),u&&(X=P),H=!1)}function nt(t){if(!H)return;v.drag&&(W=i(f,d)),O.add(N),t.preventDefault(),j=d.getBoundingClientRect();let n=t.clientX,o=t.clientY;const a=_();if(W){const t={left:W.left+Y,top:W.top+q,right:W.right+Y-j.width,bottom:W.bottom+q-j.height};n=e(n,t.left,t.right),o=e(o,t.top,t.bottom)}if(Array.isArray(x)){let[t,e]=x;if(isNaN(+t)||t<0)throw new Error(\"1st argument of `grid` must be a valid positive number\");if(isNaN(+e)||e<0)throw new Error(\"2nd argument of `grid` must be a valid positive number\");let i=n-T,s=o-X;[i,s]=r([t/a,e/a],i,s),n=T+i,o=X+s}c&&(L=Math.round((n-T)*a)),u&&(P=Math.round((o-X)*a)),k=L,U=P,V(\"neodrag\",$),Q()}return{destroy:()=>{const t=removeEventListener;t(\"pointerdown\",tt,!1),t(\"pointerup\",et,!1),t(\"pointermove\",nt,!1)},update:e=>{g=e.axis||\"both\",b=e.disabled??!1,w=e.ignoreMultitouch??!1,A=e.handle,f=e.bounds,v=e.recomputeBounds??t,S=e.cancel,y=e.applyUserSelectHack??!0,x=e.grid,h=e.gpuAcceleration??!0,p=e.legacyTranslate??!0,m=e.transform;const n=O.contains(D);O.remove(C,D),C=e.defaultClass??\"neodrag\",N=e.defaultClassDragging??\"neodrag-dragging\",D=e.defaultClassDragged??\"neodrag-dragged\",O.add(C),n&&O.add(D),J&&(k=L=e.position?.x??L,U=P=e.position?.y??P,Q())}}};export{d as draggable};"],"names":["t","e","n","r","o","i","s","a","d","l","c","u","f","g","h","p","m","y","b","w","v","x","E","S","A","C","N","D","M","B","$","R","H","L","P","T","X","k","U","Q","W","j","z","F","G","I","J","K","O","V","Z","_a","_b"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"annotorious-svelte.es15.js","sources":["../../../node_modules/uuid/dist/esm-browser/stringify.js"],"sourcesContent":["import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;"],"names":["byteToHex","i","unsafeStringify","arr","offset"],"mappings":"AAMA,MAAMA,IAAY,CAAA;AAElB,SAASC,IAAI,GAAGA,IAAI,KAAK,EAAEA;AACzB,EAAAD,EAAU,MAAMC,IAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAG3C,SAASC,EAAgBC,GAAKC,IAAS,GAAG;AAG/C,SAAOJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,CAAC,CAAC,IAAI,MAAMJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC,IAAIJ,EAAUG,EAAIC,IAAS,EAAE,CAAC;AACnf;","x_google_ignoreList":[0]}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { empty as S, insert as E, detach as L, element as X, attr as c } from "./annotorious-svelte.es8.js";
|
|
3
|
-
import { transition_in as u, transition_out as p, check_outros as Y, group_outros as j } from "./annotorious-svelte.es9.js";
|
|
4
|
-
import { getContext as z, onMount as B } from "./annotorious-svelte.es10.js";
|
|
5
|
-
import { SvelteComponent as D, init as F } from "./annotorious-svelte.es11.js";
|
|
6
|
-
import "./annotorious-svelte.es12.js";
|
|
1
|
+
import { SvelteComponent as O, init as T, safe_not_equal as q, empty as w, insert as E, transition_in as u, transition_out as _, check_outros as A, detach as L, getContext as N, component_subscribe as S, onMount as X, create_slot as Y, element as j, attr as c, update_slot_base as z, get_all_dirty_from_scope as B, get_slot_changes as D, group_outros as F } from "./annotorious-svelte.es8.js";
|
|
7
2
|
const G = (o) => ({ hovered: o & /*hovered*/
|
|
8
3
|
16 }), b = (o) => ({ hovered: (
|
|
9
4
|
/*hovered*/
|
|
@@ -14,7 +9,7 @@ function g(o) {
|
|
|
14
9
|
const t = (
|
|
15
10
|
/*#slots*/
|
|
16
11
|
o[8].default
|
|
17
|
-
), n =
|
|
12
|
+
), n = Y(
|
|
18
13
|
t,
|
|
19
14
|
o,
|
|
20
15
|
/*$$scope*/
|
|
@@ -23,7 +18,7 @@ function g(o) {
|
|
|
23
18
|
);
|
|
24
19
|
return {
|
|
25
20
|
c() {
|
|
26
|
-
r =
|
|
21
|
+
r = j("div"), n && n.c(), c(r, "class", "a9s-tooltip"), c(r, "style", s = `left:${/*left*/
|
|
27
22
|
o[2]}px; top:${/*top*/
|
|
28
23
|
o[1]}px; position: absolute;`);
|
|
29
24
|
},
|
|
@@ -32,19 +27,19 @@ function g(o) {
|
|
|
32
27
|
},
|
|
33
28
|
p(i, l) {
|
|
34
29
|
n && n.p && (!e || l & /*$$scope, hovered*/
|
|
35
|
-
144) &&
|
|
30
|
+
144) && z(
|
|
36
31
|
n,
|
|
37
32
|
t,
|
|
38
33
|
i,
|
|
39
34
|
/*$$scope*/
|
|
40
35
|
i[7],
|
|
41
|
-
e ?
|
|
36
|
+
e ? D(
|
|
42
37
|
t,
|
|
43
38
|
/*$$scope*/
|
|
44
39
|
i[7],
|
|
45
40
|
l,
|
|
46
41
|
G
|
|
47
|
-
) :
|
|
42
|
+
) : B(
|
|
48
43
|
/*$$scope*/
|
|
49
44
|
i[7]
|
|
50
45
|
),
|
|
@@ -58,7 +53,7 @@ function g(o) {
|
|
|
58
53
|
e || (u(n, i), e = !0);
|
|
59
54
|
},
|
|
60
55
|
o(i) {
|
|
61
|
-
|
|
56
|
+
_(n, i), e = !1;
|
|
62
57
|
},
|
|
63
58
|
d(i) {
|
|
64
59
|
i && L(r), n && n.d(i);
|
|
@@ -73,7 +68,7 @@ function H(o) {
|
|
|
73
68
|
);
|
|
74
69
|
return {
|
|
75
70
|
c() {
|
|
76
|
-
e && e.c(), r =
|
|
71
|
+
e && e.c(), r = w();
|
|
77
72
|
},
|
|
78
73
|
m(t, n) {
|
|
79
74
|
e && e.m(t, n), E(t, r, n), s = !0;
|
|
@@ -82,52 +77,52 @@ function H(o) {
|
|
|
82
77
|
/*$hover*/
|
|
83
78
|
t[0] && /*show*/
|
|
84
79
|
t[3] ? e ? (e.p(t, n), n & /*$hover, show*/
|
|
85
|
-
9 && u(e, 1)) : (e = g(t), e.c(), u(e, 1), e.m(r.parentNode, r)) : e && (
|
|
80
|
+
9 && u(e, 1)) : (e = g(t), e.c(), u(e, 1), e.m(r.parentNode, r)) : e && (F(), _(e, 1, 1, () => {
|
|
86
81
|
e = null;
|
|
87
|
-
}),
|
|
82
|
+
}), A());
|
|
88
83
|
},
|
|
89
84
|
i(t) {
|
|
90
85
|
s || (u(e), s = !0);
|
|
91
86
|
},
|
|
92
87
|
o(t) {
|
|
93
|
-
|
|
88
|
+
_(e), s = !1;
|
|
94
89
|
},
|
|
95
90
|
d(t) {
|
|
96
|
-
|
|
91
|
+
e && e.d(t), t && L(r);
|
|
97
92
|
}
|
|
98
93
|
};
|
|
99
94
|
}
|
|
100
95
|
function I(o, r, s) {
|
|
101
96
|
let e, t, { $$slots: n = {}, $$scope: i } = r, { container: l } = r;
|
|
102
|
-
const k =
|
|
103
|
-
|
|
104
|
-
let
|
|
105
|
-
return
|
|
97
|
+
const k = N("anno"), { store: M, hover: p } = k.state;
|
|
98
|
+
S(o, p, (f) => s(0, t = f));
|
|
99
|
+
let v, d, a = !0;
|
|
100
|
+
return X(() => {
|
|
106
101
|
const f = () => {
|
|
107
102
|
s(3, a = !0);
|
|
108
|
-
},
|
|
103
|
+
}, m = (y) => {
|
|
109
104
|
const { offsetX: P, offsetY: C } = y;
|
|
110
|
-
s(2,
|
|
105
|
+
s(2, d = P), s(1, v = C);
|
|
111
106
|
}, h = () => {
|
|
112
107
|
s(3, a = !1);
|
|
113
108
|
};
|
|
114
|
-
return l.addEventListener("pointerenter", f), l.addEventListener("pointermove",
|
|
115
|
-
l.removeEventListener("pointerenter", f), l.removeEventListener("pointermove",
|
|
109
|
+
return l.addEventListener("pointerenter", f), l.addEventListener("pointermove", m), l.addEventListener("pointerleave", h), () => {
|
|
110
|
+
l.removeEventListener("pointerenter", f), l.removeEventListener("pointermove", m), l.removeEventListener("pointerleave", h);
|
|
116
111
|
};
|
|
117
112
|
}), o.$$set = (f) => {
|
|
118
113
|
"container" in f && s(6, l = f.container), "$$scope" in f && s(7, i = f.$$scope);
|
|
119
114
|
}, o.$$.update = () => {
|
|
120
115
|
o.$$.dirty & /*$hover*/
|
|
121
116
|
1 && s(4, e = t ? M.getAnnotation(t) : void 0);
|
|
122
|
-
}, [t,
|
|
117
|
+
}, [t, v, d, a, e, p, l, i, n];
|
|
123
118
|
}
|
|
124
|
-
class J extends
|
|
119
|
+
class J extends O {
|
|
125
120
|
constructor(r) {
|
|
126
|
-
super(),
|
|
121
|
+
super(), T(this, r, I, H, q, { container: 6 });
|
|
127
122
|
}
|
|
128
123
|
}
|
|
129
|
-
const
|
|
124
|
+
const Q = J;
|
|
130
125
|
export {
|
|
131
|
-
|
|
126
|
+
Q as default
|
|
132
127
|
};
|
|
133
128
|
//# sourceMappingURL=annotorious-svelte.es2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-svelte.es2.js","sources":["../src/MouseOverTooltip.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { getContext, onMount } from 'svelte';\n import type { ImageAnnotation } from '@annotorious/annotorious';\n import type { SvelteAnnotator } from '@annotorious/core';\n\n export let container: Element;\n\n const anno = getContext<SvelteAnnotator<ImageAnnotation>>('anno');\n\n const { store, hover } = anno.state;\n\n let top: number;\n\n let left: number;\n\n let show = true;\n\n $: hovered = $hover ? store.getAnnotation($hover) : undefined;\n \n onMount(() => {\n const onPointerEnter = () => {\n show = true;\n }\n\n const onPointerMove = (event: PointerEvent) => {\n const { offsetX, offsetY } = event;\n left = offsetX;\n top = offsetY;\n }\n\n const onPointerLeave = () => {\n show = false;\n }\n\n container.addEventListener('pointerenter', onPointerEnter);\n container.addEventListener('pointermove', onPointerMove);\n container.addEventListener('pointerleave', onPointerLeave);\n\n return () => {\n container.removeEventListener('pointerenter', onPointerEnter);\n container.removeEventListener('pointermove', onPointerMove);\n container.removeEventListener('pointerleave', onPointerLeave);\n }\n });\n</script>\n\n{#if $hover && show}\n <div \n class=\"a9s-tooltip\" \n style={`left:${left}px; top:${top}px; position: absolute;`}>\n\n <slot hovered={hovered} />\n\n </div>\n{/if}"],"names":["ctx","attr","div","div_style_value","insert","target","anchor","current","dirty","if_block","create_if_block","container","$$props","anno","getContext","store","hover","top","left","show","onMount","onPointerEnter","$$invalidate","onPointerMove","event","offsetX","offsetY","onPointerLeave","hovered","$hover"],"mappings":"
|
|
1
|
+
{"version":3,"file":"annotorious-svelte.es2.js","sources":["../src/MouseOverTooltip.svelte"],"sourcesContent":["<script lang=\"ts\">\n import { getContext, onMount } from 'svelte';\n import type { ImageAnnotation } from '@annotorious/annotorious';\n import type { SvelteAnnotator } from '@annotorious/core';\n\n export let container: Element;\n\n const anno = getContext<SvelteAnnotator<ImageAnnotation>>('anno');\n\n const { store, hover } = anno.state;\n\n let top: number;\n\n let left: number;\n\n let show = true;\n\n $: hovered = $hover ? store.getAnnotation($hover) : undefined;\n \n onMount(() => {\n const onPointerEnter = () => {\n show = true;\n }\n\n const onPointerMove = (event: PointerEvent) => {\n const { offsetX, offsetY } = event;\n left = offsetX;\n top = offsetY;\n }\n\n const onPointerLeave = () => {\n show = false;\n }\n\n container.addEventListener('pointerenter', onPointerEnter);\n container.addEventListener('pointermove', onPointerMove);\n container.addEventListener('pointerleave', onPointerLeave);\n\n return () => {\n container.removeEventListener('pointerenter', onPointerEnter);\n container.removeEventListener('pointermove', onPointerMove);\n container.removeEventListener('pointerleave', onPointerLeave);\n }\n });\n</script>\n\n{#if $hover && show}\n <div \n class=\"a9s-tooltip\" \n style={`left:${left}px; top:${top}px; position: absolute;`}>\n\n <slot hovered={hovered} />\n\n </div>\n{/if}"],"names":["ctx","attr","div","div_style_value","insert","target","anchor","current","dirty","if_block","create_if_block","container","$$props","anno","getContext","store","hover","top","left","show","onMount","onPointerEnter","$$invalidate","onPointerMove","event","offsetX","offsetY","onPointerLeave","hovered","$hover"],"mappings":";;;;EAmDmBA,EAAO,CAAA;AAAA,EAAA;;;;;;;;;;;;;;;8DAFPC,EAAAC,GAAA,SAAAC,IAAA;AAAA,MAAAH;MAAeA,EAAG,CAAA,CAAA,yBAAA;AAAA;;AAFnC,MAAAI,EAMKC,GAAAH,GAAAI,CAAA;;;;;;;;;;;;;;;;;;;;;UAJY,CAAAC,KAAAC;AAAA,MAAA,KAAAL,OAAAA,IAAA;AAAA,MAAAH;MAAeA,EAAG,CAAA,CAAA;;;;;;;;;;;;;;YAHhCS;AAAA;AAAA,IAAAT;IAAUA,EAAI,CAAA,KAAAU,EAAAV,CAAA;AAAA;;;;;;;;;AAAd;AAAA,MAAAA;MAAUA,EAAI,CAAA;;;;;;;;;;;;;;;;;mDAzCN,WAAAW,EAAkB,IAAAC;QAEvBC,IAAOC,EAA6C,MAAM,GAExD,EAAA,OAAAC,GAAO,OAAAC,MAAUH,EAAK;;MAE1BI,GAEAC,GAEAC,IAAO;AAIX,SAAAC,EAAO,MAAA;UACCC,IAAc,MAAA;AAClB,MAAAC,EAAA,GAAAH,IAAO,EAAI;AAAA,OAGPI,IAAiB,CAAAC,MAAmB;cAChC,SAAAC,GAAS,SAAAC,EAAO,IAAKF;AAC7B,MAAAF,EAAA,GAAAJ,IAAOO,CAAO,GACdH,EAAA,GAAAL,IAAMS,CAAO;AAAA,OAGTC,IAAc,MAAA;AAClB,MAAAL,EAAA,GAAAH,IAAO,EAAK;AAAA;AAGd,WAAAR,EAAU,iBAAiB,gBAAgBU,CAAc,GACzDV,EAAU,iBAAiB,eAAeY,CAAa,GACvDZ,EAAU,iBAAiB,gBAAgBgB,CAAc;AAGvD,MAAAhB,EAAU,oBAAoB,gBAAgBU,CAAc,GAC5DV,EAAU,oBAAoB,eAAeY,CAAa,GAC1DZ,EAAU,oBAAoB,gBAAgBgB,CAAc;AAAA;;;;;SAxB/DL,EAAA,GAAEM,IAAUC,IAASd,EAAM,cAAcc,CAAM,IAAI,MAAS;AAAA;;;;;;;;"}
|
|
@@ -1,98 +1,5 @@
|
|
|
1
|
-
var
|
|
2
|
-
let s;
|
|
3
|
-
const p = new Uint8Array(16);
|
|
4
|
-
function y() {
|
|
5
|
-
if (!s && (s = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !s))
|
|
6
|
-
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
7
|
-
return s(p);
|
|
8
|
-
}
|
|
9
|
-
const r = [];
|
|
10
|
-
for (let t = 0; t < 256; ++t)
|
|
11
|
-
r.push((t + 256).toString(16).slice(1));
|
|
12
|
-
function g(t, o = 0) {
|
|
13
|
-
return r[t[o + 0]] + r[t[o + 1]] + r[t[o + 2]] + r[t[o + 3]] + "-" + r[t[o + 4]] + r[t[o + 5]] + "-" + r[t[o + 6]] + r[t[o + 7]] + "-" + r[t[o + 8]] + r[t[o + 9]] + "-" + r[t[o + 10]] + r[t[o + 11]] + r[t[o + 12]] + r[t[o + 13]] + r[t[o + 14]] + r[t[o + 15]];
|
|
14
|
-
}
|
|
15
|
-
const m = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), i = {
|
|
16
|
-
randomUUID: m
|
|
17
|
-
};
|
|
18
|
-
function E(t, o, e) {
|
|
19
|
-
if (i.randomUUID && !o && !t)
|
|
20
|
-
return i.randomUUID();
|
|
21
|
-
t = t || {};
|
|
22
|
-
const n = t.random || (t.rng || y)();
|
|
23
|
-
if (n[6] = n[6] & 15 | 64, n[8] = n[8] & 63 | 128, o) {
|
|
24
|
-
e = e || 0;
|
|
25
|
-
for (let a = 0; a < 16; ++a)
|
|
26
|
-
o[e + a] = n[a];
|
|
27
|
-
return o;
|
|
28
|
-
}
|
|
29
|
-
return g(n);
|
|
30
|
-
}
|
|
31
|
-
const R = (t, o, e, n) => ({
|
|
32
|
-
id: E(),
|
|
33
|
-
annotation: t.id,
|
|
34
|
-
created: e || /* @__PURE__ */ new Date(),
|
|
35
|
-
creator: n,
|
|
36
|
-
...o
|
|
37
|
-
});
|
|
38
|
-
var U = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(U || {});
|
|
39
|
-
const v = (t) => ({
|
|
40
|
-
...t,
|
|
41
|
-
subscribe: (o) => {
|
|
42
|
-
const e = (n) => o(n.state);
|
|
43
|
-
return t.observe(e), o(t.all()), () => t.unobserve(e);
|
|
44
|
-
}
|
|
45
|
-
}), h = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
46
|
-
let b = (t) => crypto.getRandomValues(new Uint8Array(t)), D = (t, o, e) => {
|
|
47
|
-
let n = (2 << Math.log(t.length - 1) / Math.LN2) - 1, a = -~(1.6 * n * o / t.length);
|
|
48
|
-
return (l = o) => {
|
|
49
|
-
let c = "";
|
|
50
|
-
for (; ; ) {
|
|
51
|
-
let d = e(a), u = a;
|
|
52
|
-
for (; u--; )
|
|
53
|
-
if (c += t[d[u] & n] || "", c.length === l)
|
|
54
|
-
return c;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}, C = (t, o = 21) => D(t, o, b), L = (t = 21) => {
|
|
58
|
-
let o = "", e = crypto.getRandomValues(new Uint8Array(t));
|
|
59
|
-
for (; t--; )
|
|
60
|
-
o += h[e[t] & 63];
|
|
61
|
-
return o;
|
|
62
|
-
};
|
|
63
|
-
const w = () => ({ isGuest: !0, id: C("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", 20)() }), O = [
|
|
64
|
-
"#ff7c00",
|
|
65
|
-
// orange
|
|
66
|
-
"#1ac938",
|
|
67
|
-
// green
|
|
68
|
-
"#e8000b",
|
|
69
|
-
// red
|
|
70
|
-
"#8b2be2",
|
|
71
|
-
// purple
|
|
72
|
-
"#9f4800",
|
|
73
|
-
// brown
|
|
74
|
-
"#f14cc1",
|
|
75
|
-
// pink
|
|
76
|
-
"#ffc400",
|
|
77
|
-
// khaki
|
|
78
|
-
"#00d7ff",
|
|
79
|
-
// cyan
|
|
80
|
-
"#023eff"
|
|
81
|
-
// blue
|
|
82
|
-
], A = () => {
|
|
83
|
-
const t = [...O];
|
|
84
|
-
return { assignRandomColor: () => {
|
|
85
|
-
const o = Math.floor(Math.random() * t.length), e = t[o];
|
|
86
|
-
return t.splice(o, 1), e;
|
|
87
|
-
}, releaseColor: (o) => t.push(o) };
|
|
88
|
-
};
|
|
89
|
-
L();
|
|
1
|
+
var N = /* @__PURE__ */ ((E) => (E.EDIT = "EDIT", E.SELECT = "SELECT", E.NONE = "NONE", E))(N || {});
|
|
90
2
|
export {
|
|
91
|
-
|
|
92
|
-
f as PointerSelectAction,
|
|
93
|
-
w as createAnonymousGuest,
|
|
94
|
-
R as createBody,
|
|
95
|
-
A as defaultColorProvider,
|
|
96
|
-
v as toSvelteStore
|
|
3
|
+
N as PointerSelectAction
|
|
97
4
|
};
|
|
98
5
|
//# sourceMappingURL=annotorious-svelte.es3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-svelte.es3.js","sources":["../../annotorious-core/dist/annotorious-core.es.js"],"sourcesContent":["var _ = Object.prototype.hasOwnProperty;\nfunction x(e, n) {\n var t, o;\n if (e === n)\n return !0;\n if (e && n && (t = e.constructor) === n.constructor) {\n if (t === Date)\n return e.getTime() === n.getTime();\n if (t === RegExp)\n return e.toString() === n.toString();\n if (t === Array) {\n if ((o = e.length) === n.length)\n for (; o-- && x(e[o], n[o]); )\n ;\n return o === -1;\n }\n if (!t || typeof e == \"object\") {\n o = 0;\n for (t in e)\n if (_.call(e, t) && ++o && !_.call(n, t) || !(t in n) || !x(e[t], n[t]))\n return !1;\n return Object.keys(n).length === o;\n }\n }\n return e !== e && n !== n;\n}\nfunction z() {\n}\nfunction W(e, n) {\n return e != e ? n == n : e !== n || e && typeof e == \"object\" || typeof e == \"function\";\n}\nconst k = [];\nfunction Y(e, n = z) {\n let t;\n const o = /* @__PURE__ */ new Set();\n function i(E) {\n if (W(e, E) && (e = E, t)) {\n const w = !k.length;\n for (const u of o)\n u[1](), k.push(u, e);\n if (w) {\n for (let u = 0; u < k.length; u += 2)\n k[u][0](k[u + 1]);\n k.length = 0;\n }\n }\n }\n function p(E) {\n i(E(e));\n }\n function U(E, w = z) {\n const u = [E, w];\n return o.add(u), o.size === 1 && (t = n(i, p) || z), E(e), () => {\n o.delete(u), o.size === 0 && t && (t(), t = null);\n };\n }\n return { set: i, update: p, subscribe: U };\n}\nconst ve = (e) => {\n const { subscribe: n, set: t } = Y();\n let o;\n return n((i) => o = i), e.observe(({ changes: i }) => {\n if (o) {\n (i.deleted || []).some((E) => E.id === o) && t(void 0);\n const U = (i.updated || []).find(({ oldValue: E }) => E.id === o);\n U && t(U.newValue.id);\n }\n }), {\n get current() {\n return o;\n },\n subscribe: n,\n set: t\n };\n};\nvar q = /* @__PURE__ */ ((e) => (e.EDIT = \"EDIT\", e.SELECT = \"SELECT\", e.NONE = \"NONE\", e))(q || {});\nconst V = { selected: [] }, ye = (e, n = \"EDIT\") => {\n const { subscribe: t, set: o } = Y(V);\n let i = V;\n t((s) => i = s);\n const p = () => o(V), U = () => {\n var s;\n return ((s = i.selected) == null ? void 0 : s.length) === 0;\n }, E = (s) => {\n if (i.selected.length === 0)\n return !1;\n const h = typeof s == \"string\" ? s : s.id;\n return i.selected.some((C) => C.id === h);\n }, w = (s, h) => {\n const C = e.getAnnotation(s);\n if (C) {\n const b = G(C, n);\n o(b === \"EDIT\" ? { selected: [{ id: s, editable: !0 }], pointerEvent: h } : b === \"SELECT\" ? { selected: [{ id: s }], pointerEvent: h } : { selected: [], pointerEvent: h });\n } else\n console.warn(\"Invalid selection: \" + s);\n }, u = (s, h = !0) => {\n const C = Array.isArray(s) ? s : [s], b = C.map((S) => e.getAnnotation(S)).filter(Boolean);\n o({ selected: b.map(({ id: S }) => ({ id: S, editable: h })) }), b.length !== C.length && console.warn(\"Invalid selection\", s);\n }, L = (s) => {\n if (i.selected.length === 0)\n return !1;\n const { selected: h } = i;\n h.filter(({ id: b }) => s.includes(b)).length > 0 && o({ selected: h.filter(({ id: b }) => !s.includes(b)) });\n };\n return e.observe(({ changes: s }) => L((s.deleted || []).map((h) => h.id))), {\n clear: p,\n clickSelect: w,\n get selected() {\n return i ? [...i.selected] : null;\n },\n get pointerEvent() {\n return i ? i.pointerEvent : null;\n },\n isEmpty: U,\n isSelected: E,\n setSelected: u,\n subscribe: t\n };\n}, G = (e, n) => typeof n == \"function\" ? n(e) || \"EDIT\" : n || \"EDIT\";\nlet $;\nconst H = new Uint8Array(16);\nfunction F() {\n if (!$ && ($ = typeof crypto < \"u\" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !$))\n throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");\n return $(H);\n}\nconst D = [];\nfor (let e = 0; e < 256; ++e)\n D.push((e + 256).toString(16).slice(1));\nfunction J(e, n = 0) {\n 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]];\n}\nconst Q = typeof crypto < \"u\" && crypto.randomUUID && crypto.randomUUID.bind(crypto), j = {\n randomUUID: Q\n};\nfunction X(e, n, t) {\n if (j.randomUUID && !n && !e)\n return j.randomUUID();\n e = e || {};\n const o = e.random || (e.rng || F)();\n if (o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, n) {\n t = t || 0;\n for (let i = 0; i < 16; ++i)\n n[t + i] = o[i];\n return n;\n }\n return J(o);\n}\nconst we = (e) => {\n const { creator: n, updatedBy: t } = e.target, o = e.bodies.reduce((i, p) => [...i, p.creator, p.updatedBy].filter(Boolean), []);\n return [\n n,\n t,\n ...o\n ].filter((i) => i);\n}, Ce = (e, n, t, o) => ({\n id: X(),\n annotation: e.id,\n created: t || /* @__PURE__ */ new Date(),\n creator: o,\n ...n\n}), Z = (e, n) => {\n const t = new Set(e.bodies.map((o) => o.id));\n return n.bodies.filter((o) => !t.has(o.id));\n}, K = (e, n) => {\n const t = new Set(n.bodies.map((o) => o.id));\n return e.bodies.filter((o) => !t.has(o.id));\n}, ee = (e, n) => n.bodies.map((t) => {\n const o = e.bodies.find((i) => i.id === t.id);\n return { newBody: t, oldBody: o && !x(o, t) ? o : void 0 };\n}).filter(({ oldBody: t }) => t).map(({ oldBody: t, newBody: o }) => ({ oldBody: t, newBody: o })), te = (e, n) => !x(e.target, n.target), M = (e, n) => {\n const t = Z(e, n), o = K(e, n), i = ee(e, n);\n return {\n oldValue: e,\n newValue: n,\n bodiesCreated: t.length > 0 ? t : void 0,\n bodiesDeleted: o.length > 0 ? o : void 0,\n bodiesUpdated: i.length > 0 ? i : void 0,\n targetUpdated: te(e, n) ? { oldTarget: e.target, newTarget: n.target } : void 0\n };\n};\nvar ne = /* @__PURE__ */ ((e) => (e.BODY_ONLY = \"BODY_ONLY\", e.TARGET_ONLY = \"TARGET_ONLY\", e))(ne || {}), O = /* @__PURE__ */ ((e) => (e.LOCAL = \"LOCAL\", e.REMOTE = \"REMOTE\", e))(O || {});\nconst oe = (e, n) => {\n var p, U;\n const { changes: t, origin: o } = n;\n if (!(!e.options.origin || e.options.origin === o))\n return !1;\n if (e.options.ignore) {\n const { ignore: E } = e.options, w = (L) => L && L.length > 0;\n if (!(w(t.created) || w(t.deleted))) {\n const L = (p = t.updated) == null ? void 0 : p.some((h) => w(h.bodiesCreated) || w(h.bodiesDeleted) || w(h.bodiesUpdated)), s = (U = t.updated) == null ? void 0 : U.some((h) => h.targetUpdated);\n if (E === \"BODY_ONLY\" && L && !s || E === \"TARGET_ONLY\" && s && !L)\n return !1;\n }\n }\n if (e.options.annotations) {\n const E = /* @__PURE__ */ new Set([\n ...(t.created || []).map((u) => u.id),\n ...(t.deleted || []).map((u) => u.id),\n ...(t.updated || []).map(({ oldValue: u }) => u.id)\n ]);\n return !!(Array.isArray(e.options.annotations) ? e.options.annotations : [e.options.annotations]).find((u) => E.has(u));\n } else\n return !0;\n}, se = (e, n) => {\n const t = new Set((e.created || []).map((s) => s.id)), o = new Set((e.updated || []).map(({ newValue: s }) => s.id)), i = new Set((n.created || []).map((s) => s.id)), p = new Set((n.deleted || []).map((s) => s.id)), U = new Set((n.updated || []).map(({ oldValue: s }) => s.id)), E = new Set((n.updated || []).filter(({ oldValue: s }) => t.has(s.id) || o.has(s.id)).map(({ oldValue: s }) => s.id)), w = [\n ...(e.created || []).filter((s) => !p.has(s.id)).map((s) => U.has(s.id) ? n.updated.find(({ oldValue: h }) => h.id === s.id).newValue : s),\n ...n.created || []\n ], u = [\n ...(e.deleted || []).filter((s) => !i.has(s.id)),\n ...(n.deleted || []).filter((s) => !t.has(s.id))\n ], L = [\n ...(e.updated || []).filter(({ newValue: s }) => !p.has(s.id)).map((s) => {\n const { oldValue: h, newValue: C } = s;\n if (U.has(C.id)) {\n const b = n.updated.find((S) => S.oldValue.id === C.id).newValue;\n return M(h, b);\n } else\n return s;\n }),\n ...(n.updated || []).filter(({ oldValue: s }) => !E.has(s.id))\n ];\n return { created: w, deleted: u, updated: L };\n}, ie = (e) => e.id !== void 0, Ue = () => {\n const e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), t = [], o = (d, l = {}) => t.push({ onChange: d, options: l }), i = (d) => {\n const l = t.findIndex((a) => a.onChange == d);\n l > -1 && t.splice(l, 1);\n }, p = (d, l) => {\n const a = {\n origin: d,\n changes: {\n created: l.created || [],\n updated: l.updated || [],\n deleted: l.deleted || []\n },\n state: [...e.values()]\n };\n t.forEach((f) => {\n oe(f, a) && f.onChange(a);\n });\n }, U = (d, l = O.LOCAL) => {\n if (e.get(d.id))\n throw Error(`Cannot add annotation ${d.id} - exists already`);\n e.set(d.id, d), d.bodies.forEach((f) => n.set(f.id, d.id)), p(l, { created: [d] });\n }, E = (d, l) => {\n const a = typeof d == \"string\" ? l : d, f = typeof d == \"string\" ? d : d.id, v = e.get(f);\n if (v) {\n const T = M(v, a);\n return f === a.id ? e.set(f, a) : (e.delete(f), e.set(a.id, a)), v.bodies.forEach((B) => n.delete(B.id)), a.bodies.forEach((B) => n.set(B.id, a.id)), T;\n } else\n console.warn(`Cannot update annotation ${f} - does not exist`);\n }, w = (d, l = O.LOCAL, a = O.LOCAL) => {\n const f = ie(l) ? a : l, v = E(d, l);\n v && p(f, { updated: [v] });\n }, u = (d, l = O.LOCAL) => {\n const a = d.reduce((f, v) => {\n const T = E(v);\n return T ? [...f, T] : f;\n }, []);\n a.length > 0 && p(l, { updated: a });\n }, L = (d, l = O.LOCAL) => {\n const a = e.get(d.annotation);\n if (a) {\n const f = {\n ...a,\n bodies: [...a.bodies, d]\n };\n e.set(a.id, f), n.set(d.id, f.id), p(l, { updated: [{\n oldValue: a,\n newValue: f,\n bodiesCreated: [d]\n }] });\n } else\n console.warn(`Attempt to add body to missing annotation: ${d.annotation}`);\n }, s = () => [...e.values()], h = (d = O.LOCAL) => {\n const l = [...e.values()];\n e.clear(), n.clear(), p(d, { deleted: l });\n }, C = (d, l = !0, a = O.LOCAL) => {\n if (l) {\n const f = [...e.values()];\n e.clear(), n.clear(), d.forEach((v) => {\n e.set(v.id, v), v.bodies.forEach((T) => n.set(T.id, v.id));\n }), p(a, { created: d, deleted: f });\n } else {\n const f = d.reduce((v, T) => {\n const B = e.get(T.id);\n return B ? [...v, B] : v;\n }, []);\n if (f.length > 0)\n throw Error(`Bulk insert would overwrite the following annotations: ${f.map((v) => v.id).join(\", \")}`);\n d.forEach((v) => {\n e.set(v.id, v), v.bodies.forEach((T) => n.set(T.id, v.id));\n }), p(a, { created: d });\n }\n }, b = (d) => {\n const l = typeof d == \"string\" ? d : d.id, a = e.get(l);\n if (a)\n return e.delete(l), a.bodies.forEach((f) => n.delete(f.id)), a;\n console.warn(`Attempt to delete missing annotation: ${l}`);\n }, S = (d, l = O.LOCAL) => {\n const a = b(d);\n a && p(l, { deleted: [a] });\n }, y = (d, l = O.LOCAL) => {\n const a = d.reduce((f, v) => {\n const T = b(v);\n return T ? [...f, T] : f;\n }, []);\n a.length > 0 && p(l, { deleted: a });\n }, c = (d, l = O.LOCAL) => {\n const a = e.get(d.annotation);\n if (a) {\n const f = a.bodies.find((v) => v.id === d.id);\n if (f) {\n n.delete(f.id);\n const v = {\n ...a,\n bodies: a.bodies.filter((B) => B.id !== d.id)\n };\n e.set(a.id, v), p(l, { updated: [{\n oldValue: a,\n newValue: v,\n bodiesDeleted: [f]\n }] });\n } else\n console.warn(`Attempt to delete missing body ${d.id} from annotation ${d.annotation}`);\n } else\n console.warn(`Attempt to delete body from missing annotation ${d.annotation}`);\n }, g = (d) => {\n const l = e.get(d);\n return l ? { ...l } : void 0;\n }, r = (d) => {\n const l = n.get(d);\n if (l) {\n const f = g(l).bodies.find((v) => v.id === d);\n if (f)\n return f;\n console.error(`Store integrity error: body ${d} in index, but not in annotation`);\n } else\n console.warn(`Attempt to retrieve missing body: ${d}`);\n }, A = (d, l) => {\n if (d.annotation !== l.annotation)\n throw \"Annotation integrity violation: annotation ID must be the same when updating bodies\";\n const a = e.get(d.annotation);\n if (a) {\n const f = a.bodies.find((T) => T.id === d.id), v = {\n ...a,\n bodies: a.bodies.map((T) => T.id === f.id ? l : T)\n };\n return e.set(a.id, v), f.id !== l.id && (n.delete(f.id), n.set(l.id, v.id)), {\n oldValue: a,\n newValue: v,\n bodiesUpdated: [{ oldBody: f, newBody: l }]\n };\n } else\n console.warn(`Attempt to add body to missing annotation ${d.annotation}`);\n }, m = (d, l, a = O.LOCAL) => {\n const f = A(d, l);\n f && p(a, { updated: [f] });\n }, R = (d, l = O.LOCAL) => {\n const a = d.map((f) => A({ id: f.id, annotation: f.annotation }, f)).filter(Boolean);\n p(l, { updated: a });\n }, I = (d) => {\n const l = e.get(d.annotation);\n if (l) {\n const a = {\n ...l,\n target: {\n ...l.target,\n ...d\n }\n };\n return e.set(l.id, a), {\n oldValue: l,\n newValue: a,\n targetUpdated: {\n oldTarget: l.target,\n newTarget: d\n }\n };\n } else\n console.warn(`Attempt to update target on missing annotation: ${d.annotation}`);\n };\n return {\n addAnnotation: U,\n addBody: L,\n all: s,\n bulkAddAnnotation: C,\n bulkDeleteAnnotation: y,\n bulkUpdateAnnotation: u,\n bulkUpdateBodies: R,\n bulkUpdateTargets: (d, l = O.LOCAL) => {\n const a = d.map((f) => I(f)).filter(Boolean);\n a.length > 0 && p(l, { updated: a });\n },\n clear: h,\n deleteAnnotation: S,\n deleteBody: c,\n getAnnotation: g,\n getBody: r,\n observe: o,\n unobserve: i,\n updateAnnotation: w,\n updateBody: m,\n updateTarget: (d, l = O.LOCAL) => {\n const a = I(d);\n a && p(l, { updated: [a] });\n }\n };\n}, Le = (e) => ({\n ...e,\n subscribe: (t) => {\n const o = (i) => t(i.state);\n return e.observe(o), t(e.all()), () => e.unobserve(o);\n }\n});\nlet P = () => ({\n emit(e, ...n) {\n for (let t = 0, o = this.events[e] || [], i = o.length; t < i; t++)\n o[t](...n);\n },\n events: {},\n on(e, n) {\n var t;\n return ((t = this.events)[e] || (t[e] = [])).push(n), () => {\n var o;\n this.events[e] = (o = this.events[e]) == null ? void 0 : o.filter((i) => n !== i);\n };\n }\n});\nconst de = 250, Se = (e) => {\n const n = P(), t = [];\n let o = -1, i = !1, p = 0;\n const U = (r) => {\n if (!i) {\n const { changes: A } = r, m = performance.now();\n if (m - p > de)\n t.splice(o + 1), t.push(A), o = t.length - 1;\n else {\n const R = t.length - 1;\n t[R] = se(t[R], A);\n }\n p = m;\n }\n i = !1;\n };\n e.observe(U, { origin: O.LOCAL });\n const E = (r) => r && r.length > 0 && e.bulkDeleteAnnotation(r), w = (r) => r && r.length > 0 && e.bulkAddAnnotation(r, !1), u = (r) => r && r.length > 0 && e.bulkUpdateAnnotation(r.map(({ oldValue: A }) => A)), L = (r) => r && r.length > 0 && e.bulkUpdateAnnotation(r.map(({ newValue: A }) => A)), s = (r) => r && r.length > 0 && e.bulkAddAnnotation(r, !1), h = (r) => r && r.length > 0 && e.bulkDeleteAnnotation(r);\n return {\n canRedo: () => t.length - 1 > o,\n canUndo: () => o > -1,\n destroy: () => e.unobserve(U),\n on: (r, A) => n.on(r, A),\n redo: () => {\n if (t.length - 1 > o) {\n i = !0;\n const { created: r, updated: A, deleted: m } = t[o + 1];\n w(r), L(A), h(m), n.emit(\"redo\", t[o + 1]), o += 1;\n }\n },\n undo: () => {\n if (o > -1) {\n i = !0;\n const { created: r, updated: A, deleted: m } = t[o];\n E(r), u(A), s(m), n.emit(\"undo\", t[o]), o -= 1;\n }\n }\n };\n}, Oe = () => {\n const { subscribe: e, set: n } = Y([]);\n return {\n subscribe: e,\n set: n\n };\n}, Te = (e, n, t, o) => {\n const { store: i, selection: p, hover: U, viewport: E } = e, w = /* @__PURE__ */ new Map();\n let u = [], L, s;\n const h = (c, g) => {\n w.has(c) ? w.get(c).push(g) : w.set(c, [g]);\n }, C = (c, g) => {\n const r = w.get(c);\n r && r.indexOf(g) > 0 && r.splice(r.indexOf(g), 1);\n }, b = (c, g, r) => {\n w.has(c) && setTimeout(() => {\n w.get(c).forEach((A) => {\n if (t) {\n const m = Array.isArray(g) ? g.map((I) => t.serialize(I)) : t.serialize(g), R = r ? r instanceof PointerEvent ? r : t.serialize(r) : void 0;\n A(m, R);\n } else\n A(g, r);\n });\n }, 1);\n }, S = () => {\n const { selected: c } = p, g = (c || []).map(({ id: r }) => i.getAnnotation(r));\n g.forEach((r) => {\n const A = u.find((m) => m.id === r.id);\n (!A || !x(A, r)) && b(\"updateAnnotation\", r, A);\n }), u = u.map((r) => {\n const A = g.find(({ id: m }) => m === r.id);\n return A || r;\n });\n };\n p.subscribe(({ selected: c }) => {\n if (!(u.length === 0 && c.length === 0)) {\n if (u.length === 0 && c.length > 0)\n u = c.map(({ id: g }) => i.getAnnotation(g));\n else if (u.length > 0 && c.length === 0)\n u.forEach((g) => {\n const r = i.getAnnotation(g.id);\n r && !x(r, g) && b(\"updateAnnotation\", r, g);\n }), u = [];\n else {\n const g = new Set(u.map((m) => m.id)), r = new Set(c.map(({ id: m }) => m));\n u.filter((m) => !r.has(m.id)).forEach((m) => {\n const R = i.getAnnotation(m.id);\n R && !x(R, m) && b(\"updateAnnotation\", R, m);\n }), u = [\n // Remove annotations that were deselected\n ...u.filter((m) => r.has(m.id)),\n // Add editable annotations that were selected\n ...c.filter(({ id: m }) => !g.has(m)).map(({ id: m }) => i.getAnnotation(m))\n ];\n }\n b(\"selectionChanged\", u);\n }\n }), U.subscribe((c) => {\n !L && c ? b(\"mouseEnterAnnotation\", i.getAnnotation(c)) : L && !c ? b(\"mouseLeaveAnnotation\", i.getAnnotation(L)) : L && c && (b(\"mouseLeaveAnnotation\", i.getAnnotation(L)), b(\"mouseEnterAnnotation\", i.getAnnotation(c))), L = c;\n }), E == null || E.subscribe((c) => b(\"viewportIntersect\", c.map((g) => i.getAnnotation(g)))), i.observe((c) => {\n o && (s && clearTimeout(s), s = setTimeout(S, 1e3));\n const { created: g, deleted: r } = c.changes;\n (g || []).forEach((m) => b(\"createAnnotation\", m)), (r || []).forEach((m) => b(\"deleteAnnotation\", m)), (c.changes.updated || []).filter((m) => [\n ...m.bodiesCreated || [],\n ...m.bodiesDeleted || [],\n ...m.bodiesUpdated || []\n ].length > 0).forEach(({ oldValue: m, newValue: R }) => {\n const I = u.find((N) => N.id === m.id) || m;\n u = u.map((N) => N.id === m.id ? R : N), b(\"updateAnnotation\", R, I);\n });\n }, { origin: O.LOCAL }), i.observe((c) => {\n if (u) {\n const g = new Set(u.map((A) => A.id)), r = (c.changes.updated || []).filter(({ newValue: A }) => g.has(A.id)).map(({ newValue: A }) => A);\n r.length > 0 && (u = u.map((A) => {\n const m = r.find((R) => R.id === A.id);\n return m || A;\n }));\n }\n }, { origin: O.REMOTE });\n const y = (c) => (g) => {\n const { updated: r } = g;\n c ? (r || []).forEach((A) => b(\"updateAnnotation\", A.oldValue, A.newValue)) : (r || []).forEach((A) => b(\"updateAnnotation\", A.newValue, A.oldValue));\n };\n return n.on(\"undo\", y(!0)), n.on(\"redo\", y(!1)), { on: h, off: C, emit: b };\n}, De = (e) => (n) => n.map((t) => e.serialize(t)), re = (e) => (n) => n.reduce((t, o) => {\n const { parsed: i, error: p } = e.parse(o);\n return p ? {\n parsed: t.parsed,\n failed: [...t.failed, o]\n } : i ? {\n parsed: [...t.parsed, i],\n failed: t.failed\n } : {\n ...t\n };\n}, { parsed: [], failed: [] }), Re = (e, n, t) => {\n const { store: o, selection: i } = e, p = (y) => {\n if (t) {\n const { parsed: c, error: g } = t.parse(y);\n c ? o.addAnnotation(c, O.REMOTE) : console.error(g);\n } else\n o.addAnnotation(y, O.REMOTE);\n }, U = () => i.clear(), E = () => o.clear(), w = (y) => {\n const c = o.getAnnotation(y);\n return t && c ? t.serialize(c) : c;\n }, u = () => t ? o.all().map(t.serialize) : o.all(), L = () => {\n var g;\n const c = (((g = i.selected) == null ? void 0 : g.map((r) => r.id)) || []).map((r) => o.getAnnotation(r)).filter(Boolean);\n return t ? c.map(t.serialize) : c;\n }, s = (y, c = !0) => fetch(y).then((g) => g.json()).then((g) => (C(g, c), g)), h = (y) => {\n if (typeof y == \"string\") {\n const c = o.getAnnotation(y);\n if (o.deleteAnnotation(y), c)\n return t ? t.serialize(c) : c;\n } else {\n const c = t ? t.parse(y).parsed : y;\n if (c)\n return o.deleteAnnotation(c), y;\n }\n }, C = (y, c = !0) => {\n if (t) {\n const { parsed: g, failed: r } = re(t)(y);\n r.length > 0 && console.warn(`Discarded ${r.length} invalid annotations`, r), o.bulkAddAnnotation(g, c, O.REMOTE);\n } else\n o.bulkAddAnnotation(y, c, O.REMOTE);\n }, b = (y) => {\n y ? i.setSelected(y) : i.clear();\n }, S = (y) => {\n if (t) {\n const c = t.parse(y).parsed, g = t.serialize(o.getAnnotation(c.id));\n return o.updateAnnotation(c), g;\n } else {\n const c = o.getAnnotation(y.id);\n return o.updateAnnotation(y), c;\n }\n };\n return {\n addAnnotation: p,\n cancelSelected: U,\n canRedo: n.canRedo,\n canUndo: n.canUndo,\n clearAnnotations: E,\n getAnnotationById: w,\n getAnnotations: u,\n getSelected: L,\n loadAnnotations: s,\n redo: n.redo,\n removeAnnotation: h,\n setAnnotations: C,\n setSelected: b,\n undo: n.undo,\n updateAnnotation: S\n };\n}, ae = \"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\";\nlet ce = (e) => crypto.getRandomValues(new Uint8Array(e)), le = (e, n, t) => {\n let o = (2 << Math.log(e.length - 1) / Math.LN2) - 1, i = -~(1.6 * o * n / e.length);\n return (p = n) => {\n let U = \"\";\n for (; ; ) {\n let E = t(i), w = i;\n for (; w--; )\n if (U += e[E[w] & o] || \"\", U.length === p)\n return U;\n }\n };\n}, ue = (e, n = 21) => le(e, n, ce), fe = (e = 21) => {\n let n = \"\", t = crypto.getRandomValues(new Uint8Array(e));\n for (; e--; )\n n += ae[t[e] & 63];\n return n;\n};\nconst Be = () => ({ isGuest: !0, id: ue(\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_\", 20)() }), pe = (e) => {\n const n = JSON.stringify(e);\n let t = 0;\n for (let o = 0, i = n.length; o < i; o++) {\n let p = n.charCodeAt(o);\n t = (t << 5) - t + p, t |= 0;\n }\n return `${t}`;\n}, he = (e) => e ? typeof e == \"object\" ? { ...e } : e : void 0, xe = (e, n) => (Array.isArray(e) ? e : [e]).map((t) => {\n const { id: o, type: i, purpose: p, value: U, created: E, creator: w, ...u } = t;\n return {\n id: o || `temp-${pe(t)}`,\n annotation: n,\n type: i,\n purpose: p,\n value: U,\n created: E ? new Date(E) : void 0,\n creator: he(w),\n ...u\n };\n}), Ie = (e) => e.map((n) => {\n var o, i;\n const t = { ...n };\n return delete t.annotation, (o = t.id) != null && o.startsWith(\"temp-\") && delete t.id, { ...t, created: (i = t.created) == null ? void 0 : i.toISOString() };\n}), ge = [\n \"#ff7c00\",\n // orange\n \"#1ac938\",\n // green\n \"#e8000b\",\n // red\n \"#8b2be2\",\n // purple\n \"#9f4800\",\n // brown\n \"#f14cc1\",\n // pink\n \"#ffc400\",\n // khaki\n \"#00d7ff\",\n // cyan\n \"#023eff\"\n // blue\n], me = () => {\n const e = [...ge];\n return { assignRandomColor: () => {\n const o = Math.floor(Math.random() * e.length), i = e[o];\n return e.splice(o, 1), i;\n }, releaseColor: (o) => e.push(o) };\n}, Ae = () => {\n const e = me();\n return { addUser: (o, i) => {\n const p = e.assignRandomColor();\n return {\n label: i.name || i.id,\n avatar: i.avatar,\n color: p\n };\n }, removeUser: (o) => e.releaseColor(o.appearance.color) };\n}, be = (e, n) => e.every((t) => e.includes(t)) && n.every((t) => e.includes(t)), ke = fe(), Ne = (e = Ae()) => {\n const n = P(), t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = (s, h) => {\n if (t.has(s)) {\n console.warn(\"Attempt to add user that is already present\", s, h);\n return;\n }\n const C = e.addUser(s, h);\n t.set(s, {\n ...h,\n presenceKey: s,\n appearance: C\n });\n }, p = (s) => {\n const h = t.get(s);\n if (!h) {\n console.warn(\"Attempt to remove user that is not present\", s);\n return;\n }\n e.removeUser(h), t.delete(s);\n }, U = (s) => {\n const h = new Set(s.map((S) => S.presenceKey)), C = s.filter(({ presenceKey: S }) => !t.has(S)), b = Array.from(t.values()).filter((S) => !h.has(S.presenceKey));\n C.forEach(({ presenceKey: S, user: y }) => i(S, y)), b.forEach((S) => {\n const { presenceKey: y } = S;\n o.has(y) && n.emit(\"selectionChange\", S, null), p(y);\n }), (C.length > 0 || b.length > 0) && n.emit(\"presence\", u());\n }, E = (s, h) => {\n const C = t.get(s);\n if (!C) {\n console.warn(\"Activity notification from user that is not present\");\n return;\n }\n const b = o.get(s);\n (!b || !be(b, h)) && (o.set(s, h), n.emit(\"selectionChange\", C, h));\n }, w = (s, h) => {\n const C = t.get(s);\n if (!C) {\n console.warn(\"Selection change for user that is not present\", s);\n return;\n }\n h ? o.set(s, h) : o.delete(s), n.emit(\"selectionChange\", C, h);\n }, u = () => [...Array.from(t.values())];\n return {\n getPresentUsers: u,\n notifyActivity: E,\n on: (s, h) => n.on(s, h),\n syncUsers: U,\n updateSelection: w\n };\n};\nexport {\n ne as Ignore,\n O as Origin,\n ke as PRESENCE_KEY,\n q as PointerSelectAction,\n Be as createAnonymousGuest,\n Re as createBaseAnnotator,\n Ce as createBody,\n Ae as createDefaultAppearenceProvider,\n ve as createHoverState,\n Te as createLifecyleObserver,\n Ne as createPresenceState,\n ye as createSelectionState,\n Ue as createStore,\n Se as createUndoStack,\n Oe as createViewportState,\n me as defaultColorProvider,\n M as diffAnnotations,\n we as getContributors,\n se as mergeChanges,\n G as onPointerSelect,\n re as parseAll,\n xe as parseW3CBodies,\n he as parseW3CUser,\n De as serializeAll,\n Ie as serializeW3CBodies,\n oe as shouldNotify,\n Le as toSvelteStore\n};\n//# sourceMappingURL=annotorious-core.es.js.map\n"],"names":["q","e","$","H","F","D","J","n","Q","j","X","t","o","i","Ce","O","Le","ae","ce","le","p","U","E","w","ue","fe","Be","ge","me"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"annotorious-svelte.es3.js","sources":["../../annotorious-core/src/state/Selection.ts"],"sourcesContent":["import { writable } from 'svelte/store';\nimport type { Annotation } from '../model';\nimport type { Store } from './Store';\n \nexport type Selection = {\n\n selected: { id: string, editable?: boolean }[],\n\n pointerEvent?: PointerEvent;\n\n}\n\nexport type SelectionState<T extends Annotation> = ReturnType<typeof createSelectionState<T>>;\n\nexport enum PointerSelectAction {\n\n EDIT = 'EDIT', // Make annotation target(s) editable on pointer select\n \n SELECT = 'SELECT', // Just select, but don't make editable\n\n NONE = 'NONE' // Click won't select - annotation is completely inert\n\n}\n\nconst EMPTY: Selection = { selected: [] };\n\nexport const createSelectionState = <T extends Annotation>(\n store: Store<T>,\n selectAction: PointerSelectAction | ((a: Annotation) => PointerSelectAction) = PointerSelectAction.EDIT\n) => {\n const { subscribe, set } = writable<Selection>(EMPTY);\n\n let currentSelection: Selection = EMPTY;\n\n subscribe(updated => currentSelection = updated);\n\n const clear = () => set(EMPTY);\n\n const isEmpty = () => currentSelection.selected?.length === 0;\n\n const isSelected = (annotationOrId: T | string) => {\n if (currentSelection.selected.length === 0)\n return false;\n\n const id = typeof annotationOrId === 'string' ? annotationOrId : annotationOrId.id;\n return currentSelection.selected.some(i => i.id === id);\n }\n\n // TODO enable CTRL select\n const clickSelect = (id: string, pointerEvent: PointerEvent) => {\n const annotation = store.getAnnotation(id);\n if (annotation) {\n const action = onPointerSelect(annotation, selectAction);\n if (action === PointerSelectAction.EDIT)\n set({ selected: [{ id, editable: true }], pointerEvent }); \n else if (action === PointerSelectAction.SELECT)\n set({ selected: [{ id }], pointerEvent }); \n else\n set({ selected: [], pointerEvent });\n } else {\n console.warn('Invalid selection: ' + id);\n }\n }\n\n const setSelected = (idOrIds: string | string[], editable: boolean = true) => {\n const ids = Array.isArray(idOrIds) ? idOrIds : [idOrIds];\n\n // Remove invalid\n const annotations = \n ids.map(id => store.getAnnotation(id)).filter(a => a); \n\n set({ selected: annotations.map(({ id }) => ({ id, editable })) });\n \n if (annotations.length !== ids.length)\n console.warn('Invalid selection', idOrIds);\n }\n\n const removeFromSelection = (ids: string[]) => {\n if (currentSelection.selected.length === 0)\n return false;\n\n const { selected } = currentSelection;\n\n // Checks which of the given annotations are actually in the selection\n const toRemove = selected.filter(({ id }) => ids.includes(id))\n\n if (toRemove.length > 0)\n set({ selected: selected.filter(({ id }) => !ids.includes(id)) });\n }\n\n // Track store delete and update events\n store.observe(({ changes }) =>\n removeFromSelection(changes.deleted.map(a => a.id)));\n\n return { \n clear, \n clickSelect, \n get selected() { return currentSelection ? [...currentSelection.selected ] : null},\n get pointerEvent() { return currentSelection ? currentSelection.pointerEvent : null },\n isEmpty, \n isSelected, \n setSelected, \n subscribe \n };\n\n}\n\nexport const onPointerSelect = (\n annotation: Annotation, \n action?: PointerSelectAction | ((a: Annotation) => PointerSelectAction)\n): PointerSelectAction => (typeof action === 'function') ?\n (action(annotation) || PointerSelectAction.EDIT) : \n (action || PointerSelectAction.EDIT);\n"],"names":["PointerSelectAction"],"mappings":"AAcY,IAAAA,sBAAAA,OAEVA,EAAA,OAAO,QAEPA,EAAA,SAAS,UAETA,EAAA,OAAO,QANGA,IAAAA,KAAA,CAAA,CAAA;"}
|