@annotorious/react-manifold 3.7.22 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Origin, Annotation, AnnotationBody, Annotator } from '@annotorious/react';
1
+ import { Origin, Annotation, AnnotationBody, Annotator, Filter } from '@annotorious/react';
2
2
  export interface AnnotoriousManifoldInstance<I extends Annotation = Annotation, E extends {
3
3
  id: string;
4
4
  } = Annotation> {
@@ -16,6 +16,7 @@ export interface AnnotoriousManifoldInstance<I extends Annotation = Annotation,
16
16
  getAnnotation(id: string): I | undefined;
17
17
  getAnnotations(): I[];
18
18
  getAnnotator(id: string): Annotator<I, E> | undefined;
19
+ setFilter(filter?: Filter<I>): void;
19
20
  setSelected(annotationId: string | string[], editable?: boolean): void;
20
21
  updateAnnotation(arg1: string | I, arg2?: I | Origin, arg3?: Origin): void;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotoriousManifoldInstance.d.ts","sourceRoot":"","sources":["../src/AnnotoriousManifoldInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhF,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU;IAEnH,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAE9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErD,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/E,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/D,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE7D,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExD,OAAO,IAAI,IAAI,CAAC;IAEhB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAEjE,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAErD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEzC,cAAc,IAAI,CAAC,EAAE,CAAC;IAEtB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAEtD,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAE5E;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAC7G,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KACvC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CA0JlC,CAAA"}
1
+ {"version":3,"file":"AnnotoriousManifoldInstance.d.ts","sourceRoot":"","sources":["../src/AnnotoriousManifoldInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAExF,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU;IAEnH,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAE9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErD,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/E,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/D,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE7D,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExD,OAAO,IAAI,IAAI,CAAC;IAEhB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAEjE,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAErD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEzC,cAAc,IAAI,CAAC,EAAE,CAAC;IAEtB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAEtD,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEpC,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEvE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAE5E;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,EAC7G,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KACvC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CA8JlC,CAAA"}
@@ -1,80 +1,81 @@
1
1
  import { Origin as d } from "@annotorious/react";
2
- const k = (a) => {
3
- const i = (t) => Array.from(a.entries()).reduce((e, [n, r]) => {
2
+ const j = (s) => {
3
+ const i = (t) => Array.from(s.entries()).reduce((e, [n, c]) => {
4
4
  if (e)
5
5
  return e;
6
- const s = r.state.store.getAnnotation(t);
7
- if (s)
8
- return { annotation: s, annotator: r, source: n };
6
+ const r = c.state.store.getAnnotation(t);
7
+ if (r)
8
+ return { annotation: r, annotator: c, source: n };
9
9
  }, void 0) || { annotation: void 0, annotator: void 0, source: void 0 }, f = (t, e = d.LOCAL) => {
10
10
  const { annotator: n } = i(t.annotation);
11
11
  n && n.state.store.addBody(t, e);
12
- }, A = (t = d.LOCAL) => Array.from(a.values()).forEach((e) => e.state.store.clear(t)), p = (t, e = d.LOCAL) => {
13
- const r = t.map((o) => typeof o == "string" ? o : o.id).map((o) => {
14
- const { source: c } = i(o);
15
- return { source: c, id: o };
16
- }).filter((o) => o.source), s = Object.groupBy(r, (o) => o.source);
17
- Object.entries(s).forEach(([o, c]) => {
18
- const u = a.get(o);
19
- u && u.state.store.bulkDeleteAnnotations(c.map((l) => l.id), e);
12
+ }, A = (t = d.LOCAL) => Array.from(s.values()).forEach((e) => e.state.store.clear(t)), y = (t, e = d.LOCAL) => {
13
+ const c = t.map((o) => typeof o == "string" ? o : o.id).map((o) => {
14
+ const { source: a } = i(o);
15
+ return { source: a, id: o };
16
+ }).filter((o) => o.source), r = Object.groupBy(c, (o) => o.source);
17
+ Object.entries(r).forEach(([o, a]) => {
18
+ const u = s.get(o);
19
+ u && u.state.store.bulkDeleteAnnotations(a.map((l) => l.id), e);
20
20
  });
21
- }, y = (t, e = d.LOCAL) => {
22
- const n = t.map((s) => {
23
- const { source: o } = i(s.id);
24
- return { source: o, annotation: s };
25
- }).filter((s) => s.source), r = Object.groupBy(n, (s) => s.source);
26
- Object.entries(r).forEach(([s, o]) => {
27
- const c = a.get(s);
28
- if (!c) return;
21
+ }, p = (t, e = d.LOCAL) => {
22
+ const n = t.map((r) => {
23
+ const { source: o } = i(r.id);
24
+ return { source: o, annotation: r };
25
+ }).filter((r) => r.source), c = Object.groupBy(n, (r) => r.source);
26
+ Object.entries(c).forEach(([r, o]) => {
27
+ const a = s.get(r);
28
+ if (!a) return;
29
29
  const u = o.map((l) => l.annotation).filter(Boolean);
30
- c.state.store.bulkUpdateAnnotations(u, e);
30
+ a.state.store.bulkUpdateAnnotations(u, e);
31
31
  });
32
32
  }, m = (t, e = d.LOCAL) => {
33
- const { annotation: n, annotator: r } = i(t);
34
- if (r)
35
- return r.state.store.deleteAnnotation(t, e), n;
36
- }, L = (t, e = d.LOCAL) => {
33
+ const { annotation: n, annotator: c } = i(t);
34
+ if (c)
35
+ return c.state.store.deleteAnnotation(t, e), n;
36
+ }, h = (t, e = d.LOCAL) => {
37
37
  const { annotator: n } = i(t.annotation);
38
38
  n && n.state.store.deleteBody(t, e);
39
- }, h = () => Array.from(a.values()).forEach((t) => t.destroy()), O = (t) => {
39
+ }, L = () => Array.from(s.values()).forEach((t) => t.destroy()), O = (t) => {
40
40
  const { annotator: e } = i(t);
41
41
  return e;
42
42
  }, b = (t) => {
43
43
  const { source: e } = i(t);
44
44
  return e;
45
- }, g = (t) => i(t).annotation, v = () => Array.from(a.values()).reduce((t, e) => [...t, ...e.state.store.all()], []), C = (t) => a.get(t), B = (t, e, n) => {
46
- const r = typeof t == "string" ? t : t.id, { annotator: s } = i(r);
47
- s && s.state.store.updateAnnotation(t, e, n);
48
- }, E = (t, e) => {
45
+ }, g = (t) => i(t).annotation, v = () => Array.from(s.values()).reduce((t, e) => [...t, ...e.state.store.all()], []), C = (t) => s.get(t), E = (t, e, n) => {
46
+ const c = typeof t == "string" ? t : t.id, { annotator: r } = i(c);
47
+ r && r.state.store.updateAnnotation(t, e, n);
48
+ }, B = (t) => Array.from(s.values()).forEach((e) => e.setFilter(t)), S = (t, e) => {
49
49
  const n = /* @__PURE__ */ new Map();
50
50
  (Array.isArray(t) ? t : [t]).forEach((o) => {
51
- const { source: c } = i(o), u = [...n.get(c) || [], o];
52
- n.set(c, u);
53
- }), a.entries().filter(([o, c]) => !n.has(o)).map((o) => o[1]).forEach((o) => o.cancelSelected()), n.entries().forEach(([o, c]) => {
54
- const u = a.get(o);
55
- u && u.setSelected(c, e);
51
+ const { source: a } = i(o), u = [...n.get(a) || [], o];
52
+ n.set(a, u);
53
+ }), s.entries().filter(([o, a]) => !n.has(o)).map((o) => o[1]).forEach((o) => o.cancelSelected()), n.entries().forEach(([o, a]) => {
54
+ const u = s.get(o);
55
+ u && u.setSelected(a, e);
56
56
  });
57
57
  };
58
58
  return {
59
- annotators: [...a.values()],
60
- sources: [...a.keys()],
59
+ annotators: [...s.values()],
60
+ sources: [...s.keys()],
61
61
  addBody: f,
62
- bulkDeleteAnnotations: p,
63
- bulkUpdateAnnotations: y,
62
+ bulkDeleteAnnotations: y,
63
+ bulkUpdateAnnotations: p,
64
64
  clear: A,
65
65
  deleteAnnotation: m,
66
- deleteBody: L,
67
- destroy: h,
66
+ deleteBody: h,
67
+ destroy: L,
68
68
  findAnnotator: O,
69
69
  findSource: b,
70
70
  getAnnotation: g,
71
71
  getAnnotations: v,
72
72
  getAnnotator: C,
73
- setSelected: E,
74
- updateAnnotation: B
73
+ setFilter: B,
74
+ setSelected: S,
75
+ updateAnnotation: E
75
76
  };
76
77
  };
77
78
  export {
78
- k as createManifoldInstance
79
+ j as createManifoldInstance
79
80
  };
80
81
  //# sourceMappingURL=annotorious-react-manifold.es8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react-manifold.es8.js","sources":["../src/AnnotoriousManifoldInstance.ts"],"sourcesContent":["import { Origin } from '@annotorious/react';\nimport type { Annotation, AnnotationBody, Annotator } from '@annotorious/react';\n\nexport interface AnnotoriousManifoldInstance<I extends Annotation = Annotation, E extends { id: string } = Annotation> {\n\n annotators: Annotator<I, E>[];\n\n sources: string[];\n\n addBody(body: AnnotationBody, origin?: Origin): void;\n\n bulkDeleteAnnotations(annotationsOrIds: (I | string)[], origin?: Origin): void;\n\n bulkUpdateAnnotations(annotations: I[], origin?: Origin): void; \n\n clear(origin: Origin): void;\n\n deleteAnnotation(id: string, origin?: Origin): I | undefined;\n\n deleteBody(body: AnnotationBody, origin?: Origin): void;\n\n destroy(): void;\n\n findAnnotator(annotationId: string): Annotator<I, E> | undefined;\n\n findSource(annotationId: string): string | undefined;\n\n getAnnotation(id: string): I | undefined;\n \n getAnnotations(): I[];\n\n getAnnotator(id: string): Annotator<I, E> | undefined;\n \n setSelected(annotationId: string | string[], editable?: boolean): void;\n\n updateAnnotation(arg1: string | I, arg2?: I | Origin, arg3?: Origin): void;\n\n}\n\nexport const createManifoldInstance = <I extends Annotation = Annotation, E extends { id: string } = Annotation>(\n annotators: Map<string, Annotator<I, E>>\n): AnnotoriousManifoldInstance<I, E> => {\n\n const find = (annotationId: string): { annotation?: I, source?: string, annotator?: Annotator<I, E> } =>\n Array.from(annotators.entries()).reduce((found, [source, annotator]) => {\n if (found)\n return found;\n\n const annotation = annotator.state.store.getAnnotation(annotationId);\n if (annotation) \n return { annotation, annotator, source };\n }, undefined as { annotation: I, annotator: Annotator<I, E> } | undefined ) || \n\n { annotation: undefined, annotator: undefined, source: undefined };\n\n /*********/\n /** API **/\n /*********/\n\n const addBody = (body: AnnotationBody, origin = Origin.LOCAL) => {\n const { annotator } = find(body.annotation);\n if (annotator)\n annotator.state.store.addBody(body, origin);\n }\n\n const clear = (origin = Origin.LOCAL) =>\n Array.from(annotators.values()).forEach(a => a.state.store.clear(origin));\n\n const bulkDeleteAnnotations = (annotationsOrIds: (I | string)[], origin = Origin.LOCAL) => {\n const ids = annotationsOrIds.map(arg => typeof arg === 'string' ? arg : arg.id);\n\n const withAnnotator = ids.map(id => {\n const { source } = find(id);\n return { source, id };\n }).filter(t => t.source);\n\n const bySource = Object.groupBy(withAnnotator, t => t.source);\n\n Object.entries(bySource).forEach(([source, data]) => {\n const annotator = annotators.get(source);\n if (annotator)\n annotator.state.store.bulkDeleteAnnotations(data.map(d => d.id), origin);\n });\n }\n\n const bulkUpdateAnnotations = (annotations: I[], origin = Origin.LOCAL) => {\n const withAnnotator = annotations.map(annotation => {\n // Keep source and annotator, but replace annotation\n const { source } = find(annotation.id);\n return { source, annotation };\n }).filter(t => t.source);\n\n const bySource = Object.groupBy(withAnnotator, t => t.source);\n\n Object.entries(bySource).forEach(([source, data]) => {\n const annotator = annotators.get(source);\n if (!annotator) return;\n\n const toUpdate: I[] = data.map(d => d.annotation).filter(Boolean);\n annotator.state.store.bulkUpdateAnnotations(toUpdate, origin);\n })\n }\n\n const deleteAnnotation = (id: string, origin = Origin.LOCAL) => {\n const { annotation, annotator } = find(id);\n\n if (annotator) {\n annotator.state.store.deleteAnnotation(id, origin);\n return annotation;\n }\n }\n\n const deleteBody = (body: AnnotationBody, origin = Origin.LOCAL) => {\n const { annotator } = find(body.annotation);\n if (annotator)\n annotator.state.store.deleteBody(body, origin);\n }\n\n const destroy = () =>\n Array.from(annotators.values()).forEach(a => a.destroy());\n\n const findAnnotator = (annotationId: string) => {\n const { annotator } = find(annotationId);\n return annotator;\n }\n\n const findSource = (annotationId: string) => {\n const { source } = find(annotationId);\n return source;\n }\n\n const getAnnotation = (annotationId: string) => \n find(annotationId).annotation;\n\n const getAnnotations = () => \n Array.from(annotators.values()).reduce((all, annotator) =>\n [...all, ...annotator.state.store.all()], [] as I[]);\n\n const getAnnotator = (id: string) => annotators.get(id);\n\n const updateAnnotation = (arg1: string | I, arg2?: I | Origin, arg3?: Origin) => {\n const oldId: string = typeof arg1 === 'string' ? arg1 : arg1.id;\n\n const { annotator } = find(oldId);\n if (annotator)\n annotator.state.store.updateAnnotation(arg1, arg2, arg3);\n }\n\n const setSelected = (id: string | string[], editable?: boolean) => {\n const byAnnotator = new Map<string, string[]>();\n\n // Group annotations by annotator source\n const ids = Array.isArray(id) ? id : [id];\n ids.forEach(id => {\n const { source } = find(id);\n const atThisSource = [...(byAnnotator.get(source) || []), id];\n byAnnotator.set(source, atThisSource);\n });\n\n // byAnnotator will now include all annotators that have selected\n // annotations. But there may be an existing selection on annotators\n // that are not in byAnnotator. We need to clear it.\n const toClear = annotators\n .entries()\n .filter(([source, _]) => !byAnnotator.has(source))\n .map(t => t[1]);\n\n toClear.forEach(annotator => annotator.cancelSelected());\n\n byAnnotator.entries().forEach(([source, ids]) => {\n const annotator = annotators.get(source);\n if (annotator)\n annotator.setSelected(ids, editable);\n });\n }\n\n return {\n annotators: [...annotators.values()],\n sources: [...annotators.keys()],\n addBody,\n bulkDeleteAnnotations,\n bulkUpdateAnnotations,\n clear,\n deleteAnnotation,\n deleteBody,\n destroy,\n findAnnotator,\n findSource,\n getAnnotation,\n getAnnotations,\n getAnnotator,\n setSelected,\n updateAnnotation\n }\n\n}"],"names":["createManifoldInstance","annotators","find","annotationId","found","source","annotator","annotation","addBody","body","origin","Origin","clear","a","bulkDeleteAnnotations","annotationsOrIds","withAnnotator","arg","id","t","bySource","data","d","bulkUpdateAnnotations","annotations","toUpdate","deleteAnnotation","deleteBody","destroy","findAnnotator","findSource","getAnnotation","getAnnotations","all","getAnnotator","updateAnnotation","arg1","arg2","arg3","oldId","setSelected","editable","byAnnotator","atThisSource","_","ids"],"mappings":"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"}
1
+ {"version":3,"file":"annotorious-react-manifold.es8.js","sources":["../src/AnnotoriousManifoldInstance.ts"],"sourcesContent":["import { Origin } from '@annotorious/react';\nimport type { Annotation, AnnotationBody, Annotator, Filter } from '@annotorious/react';\n\nexport interface AnnotoriousManifoldInstance<I extends Annotation = Annotation, E extends { id: string } = Annotation> {\n\n annotators: Annotator<I, E>[];\n\n sources: string[];\n\n addBody(body: AnnotationBody, origin?: Origin): void;\n\n bulkDeleteAnnotations(annotationsOrIds: (I | string)[], origin?: Origin): void;\n\n bulkUpdateAnnotations(annotations: I[], origin?: Origin): void; \n\n clear(origin: Origin): void;\n\n deleteAnnotation(id: string, origin?: Origin): I | undefined;\n\n deleteBody(body: AnnotationBody, origin?: Origin): void;\n\n destroy(): void;\n\n findAnnotator(annotationId: string): Annotator<I, E> | undefined;\n\n findSource(annotationId: string): string | undefined;\n\n getAnnotation(id: string): I | undefined;\n \n getAnnotations(): I[];\n\n getAnnotator(id: string): Annotator<I, E> | undefined;\n\n setFilter(filter?: Filter<I>): void;\n \n setSelected(annotationId: string | string[], editable?: boolean): void;\n\n updateAnnotation(arg1: string | I, arg2?: I | Origin, arg3?: Origin): void;\n\n}\n\nexport const createManifoldInstance = <I extends Annotation = Annotation, E extends { id: string } = Annotation>(\n annotators: Map<string, Annotator<I, E>>\n): AnnotoriousManifoldInstance<I, E> => {\n\n const find = (annotationId: string): { annotation?: I, source?: string, annotator?: Annotator<I, E> } =>\n Array.from(annotators.entries()).reduce((found, [source, annotator]) => {\n if (found)\n return found;\n\n const annotation = annotator.state.store.getAnnotation(annotationId);\n if (annotation) \n return { annotation, annotator, source };\n }, undefined as { annotation: I, annotator: Annotator<I, E> } | undefined ) || \n\n { annotation: undefined, annotator: undefined, source: undefined };\n\n /*********/\n /** API **/\n /*********/\n\n const addBody = (body: AnnotationBody, origin = Origin.LOCAL) => {\n const { annotator } = find(body.annotation);\n if (annotator)\n annotator.state.store.addBody(body, origin);\n }\n\n const clear = (origin = Origin.LOCAL) =>\n Array.from(annotators.values()).forEach(a => a.state.store.clear(origin));\n\n const bulkDeleteAnnotations = (annotationsOrIds: (I | string)[], origin = Origin.LOCAL) => {\n const ids = annotationsOrIds.map(arg => typeof arg === 'string' ? arg : arg.id);\n\n const withAnnotator = ids.map(id => {\n const { source } = find(id);\n return { source, id };\n }).filter(t => t.source);\n\n const bySource = Object.groupBy(withAnnotator, t => t.source);\n\n Object.entries(bySource).forEach(([source, data]) => {\n const annotator = annotators.get(source);\n if (annotator)\n annotator.state.store.bulkDeleteAnnotations(data.map(d => d.id), origin);\n });\n }\n\n const bulkUpdateAnnotations = (annotations: I[], origin = Origin.LOCAL) => {\n const withAnnotator = annotations.map(annotation => {\n // Keep source and annotator, but replace annotation\n const { source } = find(annotation.id);\n return { source, annotation };\n }).filter(t => t.source);\n\n const bySource = Object.groupBy(withAnnotator, t => t.source);\n\n Object.entries(bySource).forEach(([source, data]) => {\n const annotator = annotators.get(source);\n if (!annotator) return;\n\n const toUpdate: I[] = data.map(d => d.annotation).filter(Boolean);\n annotator.state.store.bulkUpdateAnnotations(toUpdate, origin);\n })\n }\n\n const deleteAnnotation = (id: string, origin = Origin.LOCAL) => {\n const { annotation, annotator } = find(id);\n\n if (annotator) {\n annotator.state.store.deleteAnnotation(id, origin);\n return annotation;\n }\n }\n\n const deleteBody = (body: AnnotationBody, origin = Origin.LOCAL) => {\n const { annotator } = find(body.annotation);\n if (annotator)\n annotator.state.store.deleteBody(body, origin);\n }\n\n const destroy = () =>\n Array.from(annotators.values()).forEach(a => a.destroy());\n\n const findAnnotator = (annotationId: string) => {\n const { annotator } = find(annotationId);\n return annotator;\n }\n\n const findSource = (annotationId: string) => {\n const { source } = find(annotationId);\n return source;\n }\n\n const getAnnotation = (annotationId: string) => \n find(annotationId).annotation;\n\n const getAnnotations = () => \n Array.from(annotators.values()).reduce((all, annotator) =>\n [...all, ...annotator.state.store.all()], [] as I[]);\n\n const getAnnotator = (id: string) => annotators.get(id);\n\n const updateAnnotation = (arg1: string | I, arg2?: I | Origin, arg3?: Origin) => {\n const oldId: string = typeof arg1 === 'string' ? arg1 : arg1.id;\n\n const { annotator } = find(oldId);\n if (annotator)\n annotator.state.store.updateAnnotation(arg1, arg2, arg3);\n }\n\n const setFilter = (filter?: Filter<I>) =>\n Array.from(annotators.values()).forEach(a => a.setFilter(filter));\n\n const setSelected = (id: string | string[], editable?: boolean) => {\n const byAnnotator = new Map<string, string[]>();\n\n // Group annotations by annotator source\n const ids = Array.isArray(id) ? id : [id];\n ids.forEach(id => {\n const { source } = find(id);\n const atThisSource = [...(byAnnotator.get(source) || []), id];\n byAnnotator.set(source, atThisSource);\n });\n\n // byAnnotator will now include all annotators that have selected\n // annotations. But there may be an existing selection on annotators\n // that are not in byAnnotator. We need to clear it.\n const toClear = annotators\n .entries()\n .filter(([source, _]) => !byAnnotator.has(source))\n .map(t => t[1]);\n\n toClear.forEach(annotator => annotator.cancelSelected());\n\n byAnnotator.entries().forEach(([source, ids]) => {\n const annotator = annotators.get(source);\n if (annotator)\n annotator.setSelected(ids, editable);\n });\n }\n\n return {\n annotators: [...annotators.values()],\n sources: [...annotators.keys()],\n addBody,\n bulkDeleteAnnotations,\n bulkUpdateAnnotations,\n clear,\n deleteAnnotation,\n deleteBody,\n destroy,\n findAnnotator,\n findSource,\n getAnnotation,\n getAnnotations,\n getAnnotator,\n setFilter,\n setSelected,\n updateAnnotation\n }\n\n}"],"names":["createManifoldInstance","annotators","find","annotationId","found","source","annotator","annotation","addBody","body","origin","Origin","clear","a","bulkDeleteAnnotations","annotationsOrIds","withAnnotator","arg","id","t","bySource","data","d","bulkUpdateAnnotations","annotations","toUpdate","deleteAnnotation","deleteBody","destroy","findAnnotator","findSource","getAnnotation","getAnnotations","all","getAnnotator","updateAnnotation","arg1","arg2","arg3","oldId","setFilter","filter","setSelected","editable","byAnnotator","atThisSource","_","ids"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annotorious/react-manifold",
3
- "version": "3.7.22",
3
+ "version": "3.8.0",
4
4
  "description": "A utility to manage multiple parallel Annotorious instances more efficiently",
5
5
  "author": "Rainer Simon",
6
6
  "license": "BSD-3-Clause",
@@ -50,7 +50,7 @@
50
50
  "vite-tsconfig-paths": "^5.1.4"
51
51
  },
52
52
  "peerDependencies": {
53
- "@annotorious/react": "3.7.22",
53
+ "@annotorious/react": "3.8.0",
54
54
  "openseadragon": ">= ^4.0.0 || >= ^5.0.0 || >= ^6.0.0",
55
55
  "react": "^16.8.0 || >= ^17.x || >= ^18.x || >= ^19.x",
56
56
  "react-dom": "^16.8.0 || >= ^17.x || >= ^18.x|| >= ^19.x"