@annotorious/react 3.0.0-rc.3 → 3.0.0-rc.5

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.
Files changed (33) hide show
  1. package/dist/annotorious-react.es10.js +1 -1
  2. package/dist/annotorious-react.es13.js +1 -1
  3. package/dist/annotorious-react.es14.js +1 -1
  4. package/dist/annotorious-react.es15.js +1 -1
  5. package/dist/annotorious-react.es18.js +1537 -1472
  6. package/dist/annotorious-react.es18.js.map +1 -1
  7. package/dist/annotorious-react.es19.js +7 -7
  8. package/dist/annotorious-react.es2.js.map +1 -1
  9. package/dist/annotorious-react.es20.js +1 -1
  10. package/dist/annotorious-react.es22.js +1 -1
  11. package/dist/annotorious-react.es24.js.map +1 -1
  12. package/dist/annotorious-react.es25.js +20131 -6
  13. package/dist/annotorious-react.es25.js.map +1 -1
  14. package/dist/annotorious-react.es26.js +31 -20661
  15. package/dist/annotorious-react.es26.js.map +1 -1
  16. package/dist/annotorious-react.es27.js +6 -32
  17. package/dist/annotorious-react.es27.js.map +1 -1
  18. package/dist/annotorious-react.es29.js.map +1 -1
  19. package/dist/annotorious-react.es30.js.map +1 -1
  20. package/dist/annotorious-react.es33.js +16 -17
  21. package/dist/annotorious-react.es33.js.map +1 -1
  22. package/dist/annotorious-react.es34.js +15 -25
  23. package/dist/annotorious-react.es34.js.map +1 -1
  24. package/dist/annotorious-react.es35.js +26 -15
  25. package/dist/annotorious-react.es35.js.map +1 -1
  26. package/dist/annotorious-react.es37.js.map +1 -1
  27. package/dist/annotorious-react.es38.js.map +1 -1
  28. package/dist/annotorious-react.es39.js.map +1 -1
  29. package/dist/annotorious-react.es40.js.map +1 -1
  30. package/dist/annotorious-react.es5.js +2 -2
  31. package/dist/annotorious-react.es8.js +50 -39
  32. package/dist/annotorious-react.es8.js.map +1 -1
  33. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es37.js","sources":["../../../node_modules/.pnpm/nanoevents@8.0.0/node_modules/nanoevents/index.js"],"sourcesContent":["export let createNanoEvents = () => ({\n emit(event, ...args) {\n let callbacks = this.events[event] || []\n for (let i = 0, length = callbacks.length; i < length; i++) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n this.events[event]?.push(cb) || (this.events[event] = [cb])\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n"],"names":["createNanoEvents","event","args","callbacks","i","length","cb","_a"],"mappings":"AAAU,IAACA,IAAmB,OAAO;AAAA,EACnC,KAAKC,MAAUC,GAAM;AACnB,QAAIC,IAAY,KAAK,OAAOF,CAAK,KAAK,CAAE;AACxC,aAASG,IAAI,GAAGC,IAASF,EAAU,QAAQC,IAAIC,GAAQD;AACrD,MAAAD,EAAUC,CAAC,EAAE,GAAGF,CAAI;AAAA,EAEvB;AAAA,EACD,QAAQ,CAAE;AAAA,EACV,GAAGD,GAAOK,GAAI;AARN,QAAAC;AASN,YAAAA,IAAA,KAAK,OAAON,CAAK,MAAjB,QAAAM,EAAoB,KAAKD,OAAQ,KAAK,OAAOL,CAAK,IAAI,CAACK,CAAE,IAClD,MAAM;AAVP,UAAAC;AAWJ,WAAK,OAAON,CAAK,KAAIM,IAAA,KAAK,OAAON,CAAK,MAAjB,gBAAAM,EAAoB,OAAO,CAAAH,MAAKE,MAAOF;AAAA,IAC7D;AAAA,EACF;AACH;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"annotorious-react.es37.js","sources":["../../../node_modules/nanoevents/index.js"],"sourcesContent":["export let createNanoEvents = () => ({\n emit(event, ...args) {\n let callbacks = this.events[event] || []\n for (let i = 0, length = callbacks.length; i < length; i++) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n this.events[event]?.push(cb) || (this.events[event] = [cb])\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n"],"names":["createNanoEvents","event","args","callbacks","i","length","cb","_a"],"mappings":"AAAU,IAACA,IAAmB,OAAO;AAAA,EACnC,KAAKC,MAAUC,GAAM;AACnB,QAAIC,IAAY,KAAK,OAAOF,CAAK,KAAK,CAAE;AACxC,aAASG,IAAI,GAAGC,IAASF,EAAU,QAAQC,IAAIC,GAAQD;AACrD,MAAAD,EAAUC,CAAC,EAAE,GAAGF,CAAI;AAAA,EAEvB;AAAA,EACD,QAAQ,CAAE;AAAA,EACV,GAAGD,GAAOK,GAAI;AARN,QAAAC;AASN,YAAAA,IAAA,KAAK,OAAON,CAAK,MAAjB,QAAAM,EAAoB,KAAKD,OAAQ,KAAK,OAAOL,CAAK,IAAI,CAACK,CAAE,IAClD,MAAM;AAVP,UAAAC;AAWJ,WAAK,OAAON,CAAK,KAAIM,IAAA,KAAK,OAAON,CAAK,MAAjB,gBAAAM,EAAoB,OAAO,CAAAH,MAAKE,MAAOF;AAAA,IAC7D;AAAA,EACF;AACH;","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es38.js","sources":["../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};"],"names":["randomUUID","native"],"mappings":"AAAA,MAAMA,IAAa,OAAO,SAAW,OAAe,OAAO,cAAc,OAAO,WAAW,KAAK,MAAM,GACvFC,IAAA;AAAA,EACb,YAAAD;AACF;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"annotorious-react.es38.js","sources":["../../../node_modules/uuid/dist/esm-browser/native.js"],"sourcesContent":["const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};"],"names":["randomUUID","native"],"mappings":"AAAA,MAAMA,IAAa,OAAO,SAAW,OAAe,OAAO,cAAc,OAAO,WAAW,KAAK,MAAM,GACvFC,IAAA;AAAA,EACb,YAAAD;AACF;","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es39.js","sources":["../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}"],"names":["getRandomValues","rnds8","rng"],"mappings":"AAGA,IAAIA;AACJ,MAAMC,IAAQ,IAAI,WAAW,EAAE;AAChB,SAASC,IAAM;AAE5B,MAAI,CAACF,MAEHA,IAAkB,OAAO,SAAW,OAAe,OAAO,mBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAE3G,CAACA;AACH,UAAM,IAAI,MAAM,0GAA0G;AAI9H,SAAOA,EAAgBC,CAAK;AAC9B;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"annotorious-react.es39.js","sources":["../../../node_modules/uuid/dist/esm-browser/rng.js"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}"],"names":["getRandomValues","rnds8","rng"],"mappings":"AAGA,IAAIA;AACJ,MAAMC,IAAQ,IAAI,WAAW,EAAE;AAChB,SAASC,IAAM;AAE5B,MAAI,CAACF,MAEHA,IAAkB,OAAO,SAAW,OAAe,OAAO,mBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAE3G,CAACA;AACH,UAAM,IAAI,MAAM,0GAA0G;AAI9H,SAAOA,EAAgBC,CAAK;AAC9B;","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es40.js","sources":["../../../node_modules/.pnpm/uuid@9.0.1/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
+ {"version":3,"file":"annotorious-react.es40.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]}
@@ -2,7 +2,7 @@ import { jsx as a, Fragment as g } from "./annotorious-react.es22.js";
2
2
  import { Children as d, useContext as x, useEffect as e, cloneElement as h } from "react";
3
3
  import { createImageAnnotator as u } from "./annotorious-react.es18.js";
4
4
  import { AnnotoriousContext as y } from "./annotorious-react.es2.js";
5
- const S = (t) => {
5
+ const j = (t) => {
6
6
  const { children: n, tool: A, ...i } = t, l = d.only(n), { anno: o, setAnno: r } = x(y), c = (m) => {
7
7
  if (!o) {
8
8
  const f = m.target, s = u(f, i);
@@ -18,6 +18,6 @@ const S = (t) => {
18
18
  }, [t.style]), /* @__PURE__ */ a(g, { children: h(l, { onLoad: c }) });
19
19
  };
20
20
  export {
21
- S as ImageAnnotator
21
+ j as ImageAnnotator
22
22
  };
23
23
  //# sourceMappingURL=annotorious-react.es5.js.map
@@ -1,52 +1,63 @@
1
- import { Origin as s } from "./annotorious-react.es17.js";
2
- import { parseAll as m } from "./annotorious-react.es9.js";
3
- const O = (t, l, i) => {
4
- const A = (o) => {
5
- if (i) {
6
- const { parsed: n, error: e } = i.parse(o);
7
- n ? t.addAnnotation(n, s.REMOTE) : console.error(e);
1
+ import { Origin as l } from "./annotorious-react.es17.js";
2
+ import { parseAll as v } from "./annotorious-react.es9.js";
3
+ const p = (d, i, t) => {
4
+ const { store: o, selection: c } = d, a = (e) => {
5
+ if (t) {
6
+ const { parsed: n, error: s } = t.parse(e);
7
+ n ? o.addAnnotation(n, l.REMOTE) : console.error(s);
8
8
  } else
9
- t.addAnnotation(o, s.REMOTE);
10
- }, r = () => t.clear(), a = (o) => {
11
- const n = t.getAnnotation(o);
12
- return i && n ? i.serialize(n) : n;
13
- }, u = () => i ? t.all().map(i.serialize) : t.all(), d = (o) => fetch(o).then((n) => n.json()).then((n) => (c(n), n)), f = (o) => {
14
- if (typeof o == "string") {
15
- const n = t.getAnnotation(o);
16
- return t.deleteAnnotation(o), i ? i.serialize(n) : n;
9
+ o.addAnnotation(e, l.REMOTE);
10
+ }, u = () => c.clear(), f = () => o.clear(), m = (e) => {
11
+ const n = o.getAnnotation(e);
12
+ return t && n ? t.serialize(n) : n;
13
+ }, E = () => t ? o.all().map(t.serialize) : o.all(), g = () => {
14
+ var s;
15
+ const n = (((s = c.selected) == null ? void 0 : s.map((r) => r.id)) || []).map((r) => o.getAnnotation(r));
16
+ return t ? n.map(t.serialize) : n;
17
+ }, R = (e) => fetch(e).then((n) => n.json()).then((n) => (A(n), n)), h = (e) => {
18
+ if (typeof e == "string") {
19
+ const n = o.getAnnotation(e);
20
+ return o.deleteAnnotation(e), t ? t.serialize(n) : n;
17
21
  } else {
18
- const n = i ? i.parse(o).parsed : o;
19
- return t.deleteAnnotation(n), o;
22
+ const n = t ? t.parse(e).parsed : e;
23
+ return o.deleteAnnotation(n), e;
20
24
  }
21
- }, c = (o) => {
22
- if (i) {
23
- const { parsed: n, failed: e } = m(i)(o);
24
- e.length > 0 && console.warn(`Discarded ${e.length} invalid annotations`, e), t.bulkAddAnnotation(n, !0, s.REMOTE);
25
+ }, A = (e) => {
26
+ if (t) {
27
+ const { parsed: n, failed: s } = v(t)(e);
28
+ s.length > 0 && console.warn(`Discarded ${s.length} invalid annotations`, s), o.bulkAddAnnotation(n, !0, l.REMOTE);
25
29
  } else
26
- t.bulkAddAnnotation(o, !0, s.REMOTE);
27
- }, E = (o) => {
28
- if (i) {
29
- const n = i.parse(o).parsed, e = i.serialize(t.getAnnotation(n.id));
30
- return t.updateAnnotation(n), e;
30
+ o.bulkAddAnnotation(e, !0, l.REMOTE);
31
+ }, z = (e) => {
32
+ e ? c.setSelected(e) : c.clear();
33
+ }, O = (e) => {
34
+ if (t) {
35
+ const n = t.parse(e).parsed, s = t.serialize(o.getAnnotation(n.id));
36
+ return o.updateAnnotation(n), s;
31
37
  } else {
32
- const n = t.getAnnotation(o.id);
33
- return t.updateAnnotation(o), n;
38
+ const n = o.getAnnotation(e.id);
39
+ return o.updateAnnotation(e), n;
34
40
  }
35
41
  };
36
42
  return {
37
- addAnnotation: A,
38
- clearAnnotations: r,
39
- getAnnotationById: a,
40
- getAnnotations: u,
41
- loadAnnotations: d,
42
- redo: l.redo,
43
- removeAnnotation: f,
44
- setAnnotations: c,
45
- undo: l.undo,
46
- updateAnnotation: E
43
+ addAnnotation: a,
44
+ cancelSelected: u,
45
+ canRedo: i.canRedo,
46
+ canUndo: i.canUndo,
47
+ clearAnnotations: f,
48
+ getAnnotationById: m,
49
+ getAnnotations: E,
50
+ getSelected: g,
51
+ loadAnnotations: R,
52
+ redo: i.redo,
53
+ removeAnnotation: h,
54
+ setAnnotations: A,
55
+ setSelected: z,
56
+ undo: i.undo,
57
+ updateAnnotation: O
47
58
  };
48
59
  };
49
60
  export {
50
- O as createBaseAnnotator
61
+ p as createBaseAnnotator
51
62
  };
52
63
  //# sourceMappingURL=annotorious-react.es8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es8.js","sources":["../../annotorious-core/src/model/Annotator.ts"],"sourcesContent":["import type { Annotation } from './Annotation';\nimport type { User } from './User';\nimport type { PresenceProvider } from '../presence';\nimport { Origin, type HoverState, type SelectionState, type Store, type UndoStack, type ViewportState } from '../state';\nimport type { LifecycleEvents } from '../lifecycle';\nimport { parseAll, type FormatAdapter } from './FormatAdapter';\nimport type { DrawingStyle } from './DrawingStyle';\nimport type { Filter } from './Filter';\n\n/**\n * Base annotator interface.\n * I ... internal core data model \n * E ... external adapted representation\n */\nexport interface Annotator<I extends Annotation = Annotation, E extends unknown = Annotation> {\n\n addAnnotation(annotation: E): void;\n\n clearAnnotations(): void;\n\n destroy(): void;\n\n getAnnotationById(id: string): E | undefined;\n\n getAnnotations(): E[];\n\n getUser(): User;\n\n loadAnnotations(url: string): Promise<E[]>;\n\n redo(): void;\n\n removeAnnotation(arg: E | string): E;\n\n setAnnotations(annotations: E[]): void;\n\n setFilter(filter: Filter): void;\n\n setPresenceProvider?(provider: PresenceProvider): void;\n\n setSelected(arg?: string | string[]): void;\n\n setStyle(arg: DrawingStyle | ((annotation: I) => DrawingStyle) | undefined): void;\n\n setUser(user: User): void;\n\n undo(): void;\n\n updateAnnotation(annotation: E): E;\n \n on<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;\n\n off<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;\n\n state: AnnotatorState<I>;\n\n}\n\nexport interface AnnotatorState<A extends Annotation> {\n\n store: Store<A>;\n\n selection: SelectionState<A>;\n\n hover: HoverState<A>;\n\n viewport: ViewportState;\n\n}\n\nexport const createBaseAnnotator = <I extends Annotation, E extends unknown>(\n store: Store<I>, \n undoStack: UndoStack,\n adapter?: FormatAdapter<I, E>\n) => {\n\n const addAnnotation = (annotation: E) => {\n if (adapter) {\n const { parsed, error } = adapter.parse(annotation);\n if (parsed) {\n store.addAnnotation(parsed, Origin.REMOTE);\n } else {\n console.error(error);\n }\n } else {\n store.addAnnotation(annotation as unknown as I, Origin.REMOTE);\n }\n }\n\n const clearAnnotations = () => store.clear();\n\n const getAnnotationById = (id: string): E | undefined => {\n const annotation = store.getAnnotation(id);\n return (adapter && annotation) ?\n adapter.serialize(annotation) as E : annotation as unknown as E;\n }\n\n const getAnnotations = () =>\n (adapter ? store.all().map(adapter.serialize) : store.all()) as E[];\n\n const loadAnnotations = (url: string) =>\n fetch(url)\n .then((response) => response.json())\n .then((annotations) => {\n setAnnotations(annotations);\n return annotations;\n });\n\n const removeAnnotation = (arg: E | string): E => {\n if (typeof arg === 'string') {\n const annotation = store.getAnnotation(arg);\n store.deleteAnnotation(arg);\n\n return adapter ? adapter.serialize(annotation) : annotation as unknown as E;\n } else {\n const annotation = adapter ? adapter.parse(arg).parsed : (arg as unknown as I);\n store.deleteAnnotation(annotation);\n return arg;\n }\n }\n\n const setAnnotations = (annotations: E[]) => {\n if (adapter) {\n const { parsed, failed } = parseAll(adapter)(annotations);\n\n if (failed.length > 0)\n console.warn(`Discarded ${failed.length} invalid annotations`, failed);\n\n store.bulkAddAnnotation(parsed, true, Origin.REMOTE);\n } else {\n store.bulkAddAnnotation(annotations as unknown as I[], true, Origin.REMOTE);\n }\n }\n\n const updateAnnotation = (updated: E): E => {\n if (adapter) {\n const crosswalked = adapter.parse(updated).parsed;\n const previous = adapter.serialize(store.getAnnotation(crosswalked.id));\n store.updateAnnotation(crosswalked);\n return previous;\n } else {\n const previous = store.getAnnotation((updated as unknown as I).id);\n store.updateAnnotation(updated as unknown as I);\n return previous as unknown as E;\n }\n }\n\n return { \n addAnnotation,\n clearAnnotations,\n getAnnotationById,\n getAnnotations,\n loadAnnotations,\n redo: undoStack.redo,\n removeAnnotation,\n setAnnotations,\n undo: undoStack.undo,\n updateAnnotation\n }\n\n}"],"names":["createBaseAnnotator","store","undoStack","adapter","addAnnotation","annotation","parsed","error","Origin","clearAnnotations","getAnnotationById","id","getAnnotations","loadAnnotations","url","response","annotations","setAnnotations","removeAnnotation","arg","failed","parseAll","updateAnnotation","updated","crosswalked","previous"],"mappings":";;AAsEO,MAAMA,IAAsB,CACjCC,GACAC,GACAC,MACG;AAEG,QAAAC,IAAgB,CAACC,MAAkB;AACvC,QAAIF,GAAS;AACX,YAAM,EAAE,QAAAG,GAAQ,OAAAC,EAAA,IAAUJ,EAAQ,MAAME,CAAU;AAClD,MAAIC,IACIL,EAAA,cAAcK,GAAQE,EAAO,MAAM,IAEzC,QAAQ,MAAMD,CAAK;AAAA,IACrB;AAEM,MAAAN,EAAA,cAAcI,GAA4BG,EAAO,MAAM;AAAA,EAC/D,GAGIC,IAAmB,MAAMR,EAAM,SAE/BS,IAAoB,CAACC,MAA8B;AACjD,UAAAN,IAAaJ,EAAM,cAAcU,CAAE;AACzC,WAAQR,KAAWE,IACjBF,EAAQ,UAAUE,CAAU,IAASA;AAAA,EAAA,GAGnCO,IAAiB,MACpBT,IAAUF,EAAM,IAAM,EAAA,IAAIE,EAAQ,SAAS,IAAIF,EAAM,IAAI,GAEtDY,IAAkB,CAACC,MACvB,MAAMA,CAAG,EACN,KAAK,CAACC,MAAaA,EAAS,KAAK,CAAC,EAClC,KAAK,CAACC,OACLC,EAAeD,CAAW,GACnBA,EACR,GAECE,IAAmB,CAACC,MAAuB;AAC3C,QAAA,OAAOA,KAAQ,UAAU;AACrB,YAAAd,IAAaJ,EAAM,cAAckB,CAAG;AAC1C,aAAAlB,EAAM,iBAAiBkB,CAAG,GAEnBhB,IAAUA,EAAQ,UAAUE,CAAU,IAAIA;AAAA,IAAA,OAC5C;AACL,YAAMA,IAAaF,IAAUA,EAAQ,MAAMgB,CAAG,EAAE,SAAUA;AAC1D,aAAAlB,EAAM,iBAAiBI,CAAU,GAC1Bc;AAAA,IACT;AAAA,EAAA,GAGIF,IAAiB,CAACD,MAAqB;AAC3C,QAAIb,GAAS;AACX,YAAM,EAAE,QAAAG,GAAQ,QAAAc,MAAWC,EAASlB,CAAO,EAAEa,CAAW;AAExD,MAAII,EAAO,SAAS,KAClB,QAAQ,KAAK,aAAaA,EAAO,MAAM,wBAAwBA,CAAM,GAEvEnB,EAAM,kBAAkBK,GAAQ,IAAME,EAAO,MAAM;AAAA,IAAA;AAEnD,MAAAP,EAAM,kBAAkBe,GAA+B,IAAMR,EAAO,MAAM;AAAA,EAC5E,GAGIc,IAAmB,CAACC,MAAkB;AAC1C,QAAIpB,GAAS;AACX,YAAMqB,IAAcrB,EAAQ,MAAMoB,CAAO,EAAE,QACrCE,IAAWtB,EAAQ,UAAUF,EAAM,cAAcuB,EAAY,EAAE,CAAC;AACtE,aAAAvB,EAAM,iBAAiBuB,CAAW,GAC3BC;AAAA,IAAA,OACF;AACL,YAAMA,IAAWxB,EAAM,cAAesB,EAAyB,EAAE;AACjE,aAAAtB,EAAM,iBAAiBsB,CAAuB,GACvCE;AAAA,IACT;AAAA,EAAA;AAGK,SAAA;AAAA,IACL,eAAArB;AAAA,IACA,kBAAAK;AAAA,IACA,mBAAAC;AAAA,IACA,gBAAAE;AAAA,IACA,iBAAAC;AAAA,IACA,MAAMX,EAAU;AAAA,IAChB,kBAAAgB;AAAA,IACA,gBAAAD;AAAA,IACA,MAAMf,EAAU;AAAA,IAChB,kBAAAoB;AAAA,EAAA;AAGJ;"}
1
+ {"version":3,"file":"annotorious-react.es8.js","sources":["../../annotorious-core/src/model/Annotator.ts"],"sourcesContent":["import type { Annotation } from './Annotation';\nimport type { User } from './User';\nimport type { PresenceProvider } from '../presence';\nimport { Origin, type HoverState, type SelectionState, type Store, type UndoStack, type ViewportState } from '../state';\nimport type { LifecycleEvents } from '../lifecycle';\nimport { parseAll, type FormatAdapter } from './FormatAdapter';\nimport type { DrawingStyle } from './DrawingStyle';\nimport type { Filter } from './Filter';\n\n/**\n * Base annotator interface.\n * I ... internal core data model \n * E ... external adapted representation\n */\nexport interface Annotator<I extends Annotation = Annotation, E extends unknown = Annotation> {\n\n addAnnotation(annotation: E): void;\n\n cancelSelected(): void;\n\n canRedo(): boolean;\n\n canUndo(): boolean;\n\n clearAnnotations(): void;\n\n destroy(): void;\n\n getAnnotationById(id: string): E | undefined;\n\n getAnnotations(): E[];\n\n getSelected(): E[];\n\n getUser(): User;\n\n loadAnnotations(url: string): Promise<E[]>;\n\n redo(): void;\n\n removeAnnotation(arg: E | string): E;\n\n setAnnotations(annotations: E[]): void;\n\n setFilter(filter: Filter): void;\n\n setPresenceProvider?(provider: PresenceProvider): void;\n\n setSelected(arg?: string | string[]): void;\n\n setStyle(arg: DrawingStyle | ((annotation: I) => DrawingStyle) | undefined): void;\n\n setUser(user: User): void;\n\n undo(): void;\n\n updateAnnotation(annotation: E): E;\n \n on<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;\n\n off<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;\n\n state: AnnotatorState<I>;\n\n}\n\nexport interface AnnotatorState<A extends Annotation> {\n\n store: Store<A>;\n\n selection: SelectionState<A>;\n\n hover: HoverState<A>;\n\n viewport: ViewportState;\n\n}\n\nexport const createBaseAnnotator = <I extends Annotation, E extends unknown>(\n state: AnnotatorState<I>, \n undoStack: UndoStack<I>,\n adapter?: FormatAdapter<I, E>\n) => {\n\n const { store, selection } = state;\n\n const addAnnotation = (annotation: E) => {\n if (adapter) {\n const { parsed, error } = adapter.parse(annotation);\n if (parsed) {\n store.addAnnotation(parsed, Origin.REMOTE);\n } else {\n console.error(error);\n }\n } else {\n store.addAnnotation(annotation as unknown as I, Origin.REMOTE);\n }\n }\n\n const cancelSelected = () => selection.clear();\n\n const clearAnnotations = () => store.clear();\n\n const getAnnotationById = (id: string): E | undefined => {\n const annotation = store.getAnnotation(id);\n return (adapter && annotation) ?\n adapter.serialize(annotation) as E : annotation as unknown as E;\n }\n\n const getAnnotations = () =>\n (adapter ? store.all().map(adapter.serialize) : store.all()) as E[];\n\n const getSelected = () => {\n const selectedIds = selection.selected?.map(s => s.id) || [];\n\n const selected = selectedIds.map(id => store.getAnnotation(id));\n\n return adapter \n ? selected.map(adapter.serialize) \n : selected as unknown as E[];\n }\n\n const loadAnnotations = (url: string) =>\n fetch(url)\n .then((response) => response.json())\n .then((annotations) => {\n setAnnotations(annotations);\n return annotations;\n });\n\n const removeAnnotation = (arg: E | string): E => {\n if (typeof arg === 'string') {\n const annotation = store.getAnnotation(arg);\n store.deleteAnnotation(arg);\n\n return adapter ? adapter.serialize(annotation) : annotation as unknown as E;\n } else {\n const annotation = adapter ? adapter.parse(arg).parsed : (arg as unknown as I);\n store.deleteAnnotation(annotation);\n return arg;\n }\n }\n\n const setAnnotations = (annotations: E[]) => {\n if (adapter) {\n const { parsed, failed } = parseAll(adapter)(annotations);\n\n if (failed.length > 0)\n console.warn(`Discarded ${failed.length} invalid annotations`, failed);\n\n store.bulkAddAnnotation(parsed, true, Origin.REMOTE);\n } else {\n store.bulkAddAnnotation(annotations as unknown as I[], true, Origin.REMOTE);\n }\n }\n\n const setSelected = (arg?: string | string[]) => {\n if (arg) {\n selection.setSelected(arg);\n } else {\n selection.clear();\n }\n }\n\n const updateAnnotation = (updated: E): E => {\n if (adapter) {\n const crosswalked = adapter.parse(updated).parsed;\n const previous = adapter.serialize(store.getAnnotation(crosswalked.id));\n store.updateAnnotation(crosswalked);\n return previous;\n } else {\n const previous = store.getAnnotation((updated as unknown as I).id);\n store.updateAnnotation(updated as unknown as I);\n return previous as unknown as E;\n }\n }\n\n // Note that we don't spread the undoStack - it has a .destroy()\n // method that would likely get overwritten by other Annotator implementations\n // if people are not careful.\n return { \n addAnnotation,\n cancelSelected,\n canRedo: undoStack.canRedo,\n canUndo: undoStack.canUndo,\n clearAnnotations,\n getAnnotationById,\n getAnnotations,\n getSelected,\n loadAnnotations,\n redo: undoStack.redo,\n removeAnnotation,\n setAnnotations,\n setSelected,\n undo: undoStack.undo,\n updateAnnotation\n }\n\n}"],"names":["createBaseAnnotator","state","undoStack","adapter","store","selection","addAnnotation","annotation","parsed","error","Origin","cancelSelected","clearAnnotations","getAnnotationById","id","getAnnotations","getSelected","selected","_a","s","loadAnnotations","url","response","annotations","setAnnotations","removeAnnotation","arg","failed","parseAll","setSelected","updateAnnotation","updated","crosswalked","previous"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annotorious/react",
3
- "version": "3.0.0-rc.3",
3
+ "version": "3.0.0-rc.5",
4
4
  "description": "Annotorious React bindings",
5
5
  "author": "Rainer Simon",
6
6
  "license": "BSD-3-Clause",
@@ -33,6 +33,7 @@
33
33
  "vite-tsconfig-paths": "^4.2.1"
34
34
  },
35
35
  "peerDependencies": {
36
+ "@annotorious/core": "*",
36
37
  "openseadragon": "^3.0.0 || ^4.0.0",
37
38
  "react": "16.8.0 || >=17.x || >=18.x",
38
39
  "react-dom": "16.8.0 || >=17.x || >=18.x"