@annotorious/react-manifold 0.5.0 → 0.7.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.
@@ -26,6 +26,9 @@ export declare const AnnotoriousManifold: (props: {
26
26
  export declare const useAnnotoriousManifold: <I extends Annotation = Annotation, E extends {
27
27
  id: string;
28
28
  } = Annotation>() => AnnotoriousManifoldInstance<I, E>;
29
+ export declare const useAnnotator: <I extends Annotation = Annotation, E extends {
30
+ id: string;
31
+ } = Annotation>(id: string) => Annotator<I, E>;
29
32
  export declare const useAnnotations: <T extends Annotation>() => Map<string, T[]>;
30
33
  export declare const useSelection: <T extends Annotation>() => ManifoldSelection<T>;
31
34
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotoriousManifold.d.ts","sourceRoot":"","sources":["../src/AnnotoriousManifold.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0D,MAAM,OAAO,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAA0B,MAAM,+BAA+B,CAAC;AAEpG,UAAU,+BAA+B;IAEvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAExD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAEvC,SAAS,EAAE,iBAAiB,CAAC;IAE7B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,IAAI,CAAC;CAEpF;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAE3D,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAElD,YAAY,CAAC,EAAE,YAAY,CAAC;CAE7B;AAGD,eAAO,MAAM,0BAA0B,0DAAmD,CAAC;AAE3F,eAAO,MAAM,mBAAmB,UAAW;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CA+FjE,CAAA;AAED,eAAO,MAAM,sBAAsB;QAAuD,MAAM;sDAG/F,CAAA;AAED,eAAO,MAAM,cAAc,8CAG1B,CAAA;AAED,eAAO,MAAM,YAAY,kDAGxB,CAAA"}
1
+ {"version":3,"file":"AnnotoriousManifold.d.ts","sourceRoot":"","sources":["../src/AnnotoriousManifold.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0D,MAAM,OAAO,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAA0B,MAAM,+BAA+B,CAAC;AAEpG,UAAU,+BAA+B;IAEvC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAExD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAEvC,SAAS,EAAE,iBAAiB,CAAC;IAE7B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,IAAI,CAAC;CAEpF;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAE3D,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE;QAAE,UAAU,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAElD,YAAY,CAAC,EAAE,YAAY,CAAC;CAE7B;AAGD,eAAO,MAAM,0BAA0B,0DAAmD,CAAC;AAE3F,eAAO,MAAM,mBAAmB,UAAW;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CA+FjE,CAAA;AAED,eAAO,MAAM,sBAAsB;QAAuD,MAAM;sDAG/F,CAAA;AAED,eAAO,MAAM,YAAY;QAAuD,MAAM;oBAAqB,MAAM,oBAGhH,CAAA;AAED,eAAO,MAAM,cAAc,8CAG1B,CAAA;AAED,eAAO,MAAM,YAAY,kDAGxB,CAAA"}
@@ -14,6 +14,7 @@ export interface AnnotoriousManifoldInstance<I extends Annotation = Annotation,
14
14
  findSource(annotationId: string): string | undefined;
15
15
  getAnnotation(id: string): I | undefined;
16
16
  getAnnotations(): I[];
17
+ getAnnotator(id: string): Annotator<I, E> | undefined;
17
18
  setSelected(annotationId: string): void;
18
19
  updateAnnotation(arg1: string | I, arg2?: I | Origin, arg3?: Origin): void;
19
20
  }
@@ -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,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,oBAAoB,CAAC;AAE5B,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,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,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,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;QAAuD,MAAM;8FA4H/F,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,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACV,MAAM,oBAAoB,CAAC;AAE5B,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,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,IAAI,CAAC;IAExC,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;QAAuD,MAAM;8FAiG/F,CAAA"}
@@ -1,19 +1,20 @@
1
1
  import { Annotorious as n } from "./annotorious-react-manifold.es2.js";
2
- import { AnnotoriousManifold as t, AnnotoriousManifoldContext as i, useAnnotations as s, useAnnotoriousManifold as a, useSelection as f } from "./annotorious-react-manifold.es3.js";
3
- import { createManifoldInstance as x } from "./annotorious-react-manifold.es4.js";
4
- import { OpenSeadragonViewer as l } from "./annotorious-react-manifold.es5.js";
5
- import { OSDViewerContext as m, OSDViewerManifold as A, useViewers as M } from "./annotorious-react-manifold.es6.js";
2
+ import { AnnotoriousManifold as t, AnnotoriousManifoldContext as i, useAnnotations as s, useAnnotator as a, useAnnotoriousManifold as f, useSelection as u } from "./annotorious-react-manifold.es3.js";
3
+ import { createManifoldInstance as d } from "./annotorious-react-manifold.es4.js";
4
+ import { OpenSeadragonViewer as p } from "./annotorious-react-manifold.es5.js";
5
+ import { OSDViewerContext as m, OSDViewerManifold as M, useViewers as w } from "./annotorious-react-manifold.es6.js";
6
6
  export {
7
7
  n as Annotorious,
8
8
  t as AnnotoriousManifold,
9
9
  i as AnnotoriousManifoldContext,
10
10
  m as OSDViewerContext,
11
- A as OSDViewerManifold,
12
- l as OpenSeadragonViewer,
13
- x as createManifoldInstance,
11
+ M as OSDViewerManifold,
12
+ p as OpenSeadragonViewer,
13
+ d as createManifoldInstance,
14
14
  s as useAnnotations,
15
- a as useAnnotoriousManifold,
16
- f as useSelection,
17
- M as useViewers
15
+ a as useAnnotator,
16
+ f as useAnnotoriousManifold,
17
+ u as useSelection,
18
+ w as useViewers
18
19
  };
19
20
  //# sourceMappingURL=annotorious-react-manifold.es.js.map
@@ -1,58 +1,62 @@
1
1
  import { j as _ } from "./annotorious-react-manifold.es7.js";
2
- import { createContext as I, useState as A, useRef as O, useEffect as P, useContext as M } from "react";
2
+ import { createContext as I, useState as M, useRef as O, useEffect as P, useContext as f } from "react";
3
3
  import { createManifoldInstance as k } from "./annotorious-react-manifold.es4.js";
4
- const l = I(), D = (n) => {
5
- const [u, S] = A(/* @__PURE__ */ new Map()), [C, f] = A(/* @__PURE__ */ new Map()), [c, b] = A({ selected: [] }), d = O(!1), g = (t, r) => {
6
- S((e) => new Map(e.entries()).set(t, r));
7
- const { store: o } = r.state, j = r.state.selection;
8
- f((e) => new Map(e.entries()).set(t, o.all()));
9
- const v = () => f((e) => new Map(e.entries()).set(t, o.all()));
4
+ const i = I(), D = (t) => {
5
+ const [r, S] = M(/* @__PURE__ */ new Map()), [g, d] = M(/* @__PURE__ */ new Map()), [u, b] = M({ selected: [] }), p = O(!1), C = (n, a) => {
6
+ S((e) => new Map(e.entries()).set(n, a));
7
+ const { store: o } = a.state, j = a.state.selection;
8
+ d((e) => new Map(e.entries()).set(n, o.all()));
9
+ const v = () => d((e) => new Map(e.entries()).set(n, o.all()));
10
10
  o.observe(v);
11
- let i;
11
+ let l;
12
12
  const y = j.subscribe(({ selected: e, pointerEvent: s }) => {
13
- i && o.unobserve(i);
14
- const p = (e || []).map(({ id: a, editable: m }) => ({ annotation: o.getAnnotation(a), editable: m }));
15
- d.current || b({ id: t, selected: p, pointerEvent: s }), i = (a) => {
16
- const { updated: m } = a.changes;
13
+ l && o.unobserve(l);
14
+ const m = (e || []).map(({ id: c, editable: A }) => ({ annotation: o.getAnnotation(c), editable: A }));
15
+ p.current || b({ id: n, selected: m, pointerEvent: s }), l = (c) => {
16
+ const { updated: A } = c.changes;
17
17
  b(({ id: E, selected: R }) => ({
18
18
  id: E,
19
19
  selected: R.map(({ annotation: w, editable: x }) => {
20
- const h = m.find((V) => V.oldValue.id === w.id);
20
+ const h = A.find((V) => V.oldValue.id === w.id);
21
21
  return h ? { annotation: h.newValue, editable: x } : { annotation: w, editable: x };
22
22
  }),
23
23
  pointerEvent: s
24
24
  }));
25
- }, o.observe(i, { annotations: e.map(({ id: a }) => a) });
25
+ }, o.observe(l, { annotations: e.map(({ id: c }) => c) });
26
26
  });
27
27
  return () => {
28
- S((e) => new Map(Array.from(e.entries()).filter(([s, p]) => s !== t))), f((e) => new Map(Array.from(e.entries()).filter(([s, p]) => s !== t))), o.unobserve(v), y();
28
+ S((e) => new Map(Array.from(e.entries()).filter(([s, m]) => s !== n))), d((e) => new Map(Array.from(e.entries()).filter(([s, m]) => s !== n))), o.unobserve(v), y();
29
29
  };
30
30
  };
31
31
  return P(() => {
32
- c.id && (d.current = !0, Array.from(u.entries()).forEach(([t, r]) => {
33
- t !== c.id && r.setSelected();
34
- }), d.current = !1);
35
- }, [c, u]), /* @__PURE__ */ _.jsx(l.Provider, { value: {
36
- annotators: u,
37
- annotations: C,
38
- selection: c,
39
- connectAnnotator: g
40
- }, children: n.children });
32
+ u.id && (p.current = !0, Array.from(r.entries()).forEach(([n, a]) => {
33
+ n !== u.id && a.setSelected();
34
+ }), p.current = !1);
35
+ }, [u, r]), /* @__PURE__ */ _.jsx(i.Provider, { value: {
36
+ annotators: r,
37
+ annotations: g,
38
+ selection: u,
39
+ connectAnnotator: C
40
+ }, children: t.children });
41
41
  }, F = () => {
42
- const { annotators: n } = M(l);
43
- return k(n);
44
- }, G = () => {
45
- const { annotations: n } = M(l);
46
- return n;
42
+ const { annotators: t } = f(i);
43
+ return k(t);
44
+ }, G = (t) => {
45
+ const { annotators: r } = f(i);
46
+ return r.get(t);
47
47
  }, H = () => {
48
- const { selection: n } = M(l);
49
- return n;
48
+ const { annotations: t } = f(i);
49
+ return t;
50
+ }, J = () => {
51
+ const { selection: t } = f(i);
52
+ return t;
50
53
  };
51
54
  export {
52
55
  D as AnnotoriousManifold,
53
- l as AnnotoriousManifoldContext,
54
- G as useAnnotations,
56
+ i as AnnotoriousManifoldContext,
57
+ H as useAnnotations,
58
+ G as useAnnotator,
55
59
  F as useAnnotoriousManifold,
56
- H as useSelection
60
+ J as useSelection
57
61
  };
58
62
  //# sourceMappingURL=annotorious-react-manifold.es3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react-manifold.es3.js","sources":["../src/AnnotoriousManifold.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext, useEffect, useRef, useState } from 'react';\nimport type { Annotation, Annotator } from '@annotorious/react';\nimport type { StoreChangeEvent } from '@annotorious/react';\nimport { AnnotoriousManifoldInstance, createManifoldInstance } from './AnnotoriousManifoldInstance';\n\ninterface AnnotoriousManifoldContextValue {\n\n annotators: Map<string, Annotator<any, { id: string }>>;\n\n annotations: Map<string, Annotation[]>;\n\n selection: ManifoldSelection;\n\n connectAnnotator(source: string, anno: Annotator<any, { id: string }>): () => void;\n\n}\n\ninterface ManifoldSelection<T extends Annotation = Annotation> {\n\n id?: string;\n\n selected: { annotation: T, editable?: boolean }[],\n\n pointerEvent?: PointerEvent;\n\n}\n\n// @ts-ignore\nexport const AnnotoriousManifoldContext = createContext<AnnotoriousManifoldContextValue>();\n\nexport const AnnotoriousManifold = (props: { children: ReactNode }) => {\n\n const [annotators, setAnnotators] = useState<Map<string, Annotator<any, { id: string }>>>(new Map());\n\n const [annotations, setAnnotations] = useState<Map<string, Annotation[]>>(new Map());\n\n const [selection, setSelection] = \n useState<ManifoldSelection>({ selected: [] });\n\n // To prevent selection state updates when de-selecting other annotators\n const muteSelectionEvents = useRef<boolean>(false);\n\n const connectAnnotator = (id: string, anno: Annotator<any, { id: string }>) => {\n // Add the annotator to the state\n setAnnotators(m => new Map(m.entries()).set(id, anno))\n\n const { store } = anno.state;\n const selectionState = anno.state.selection;\n\n // Add the annotations to the state\n setAnnotations(m => new Map(m.entries()).set(id, store.all()));\n\n const onStoreChange = () =>\n setAnnotations(m => new Map(m.entries()).set(id, store.all()));\n\n store.observe(onStoreChange);\n\n // Track selection\n let selectionStoreObserver: (event: StoreChangeEvent<Annotation>) => void;\n\n const unsubscribeSelection = selectionState.subscribe(({ selected, pointerEvent }) => {\n if (selectionStoreObserver) \n store.unobserve(selectionStoreObserver);\n\n const resolved = (selected || [])\n .map(({ id, editable }) => ({ annotation: store.getAnnotation(id), editable }));\n\n // Set the new selection\n if (!muteSelectionEvents.current)\n setSelection({ id, selected: resolved, pointerEvent });\n\n // Track the state of the selected annotations in the store\n selectionStoreObserver = event => {\n const { updated } = event.changes;\n\n setSelection(({ id, selected }) => ({\n id,\n selected: selected.map(({ annotation, editable }) => {\n const next = updated.find(u => u.oldValue.id === annotation.id);\n return next ? { annotation: next.newValue, editable } : { annotation, editable };\n }),\n pointerEvent\n }));\n }\n\n store.observe(selectionStoreObserver, { annotations: selected.map(({ id }) => id) });\n });\n\n return () => {\n // Remove annotator\n setAnnotators(m => new Map(Array.from(m.entries()).filter(([key, _]) => key !== id)));\n\n // Remove & untrack annotations\n setAnnotations(m => new Map(Array.from(m.entries()).filter(([key, _]) => key !== id)));\n store.unobserve(onStoreChange);\n\n // Un-track selection\n unsubscribeSelection();\n }\n }\n\n useEffect(() => {\n if (selection.id) {\n muteSelectionEvents.current = true;\n\n Array.from(annotators.entries()).forEach(([source, anno]) => {\n if (source !== selection.id)\n anno.setSelected();\n });\n\n muteSelectionEvents.current = false;\n }\n }, [selection, annotators]);\n\n return (\n <AnnotoriousManifoldContext.Provider value={{ \n annotators, \n annotations,\n selection,\n connectAnnotator \n }}>\n {props.children}\n </AnnotoriousManifoldContext.Provider>\n )\n\n}\n\nexport const useAnnotoriousManifold = <I extends Annotation = Annotation, E extends { id: string } = Annotation>() => {\n const { annotators } = useContext(AnnotoriousManifoldContext);\n return createManifoldInstance(annotators) as AnnotoriousManifoldInstance<I, E>;\n}\n\nexport const useAnnotations = <T extends Annotation>() => {\n const { annotations } = useContext(AnnotoriousManifoldContext);\n return annotations as Map<string, T[]>;\n}\n\nexport const useSelection = <T extends Annotation>() => {\n const { selection } = useContext(AnnotoriousManifoldContext);\n return selection as ManifoldSelection<T>;\n}\n"],"names":["AnnotoriousManifoldContext","createContext","AnnotoriousManifold","props","annotators","setAnnotators","useState","annotations","setAnnotations","selection","setSelection","muteSelectionEvents","useRef","connectAnnotator","id","anno","m","store","selectionState","onStoreChange","selectionStoreObserver","unsubscribeSelection","selected","pointerEvent","resolved","editable","event","updated","annotation","next","u","key","_","useEffect","source","jsx","useAnnotoriousManifold","useContext","createManifoldInstance","useAnnotations","useSelection"],"mappings":"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"}
1
+ {"version":3,"file":"annotorious-react-manifold.es3.js","sources":["../src/AnnotoriousManifold.tsx"],"sourcesContent":["import { ReactNode, createContext, useContext, useEffect, useRef, useState } from 'react';\nimport type { Annotation, Annotator } from '@annotorious/react';\nimport type { StoreChangeEvent } from '@annotorious/react';\nimport { AnnotoriousManifoldInstance, createManifoldInstance } from './AnnotoriousManifoldInstance';\n\ninterface AnnotoriousManifoldContextValue {\n\n annotators: Map<string, Annotator<any, { id: string }>>;\n\n annotations: Map<string, Annotation[]>;\n\n selection: ManifoldSelection;\n\n connectAnnotator(source: string, anno: Annotator<any, { id: string }>): () => void;\n\n}\n\ninterface ManifoldSelection<T extends Annotation = Annotation> {\n\n id?: string;\n\n selected: { annotation: T, editable?: boolean }[],\n\n pointerEvent?: PointerEvent;\n\n}\n\n// @ts-ignore\nexport const AnnotoriousManifoldContext = createContext<AnnotoriousManifoldContextValue>();\n\nexport const AnnotoriousManifold = (props: { children: ReactNode }) => {\n\n const [annotators, setAnnotators] = useState<Map<string, Annotator<any, { id: string }>>>(new Map());\n\n const [annotations, setAnnotations] = useState<Map<string, Annotation[]>>(new Map());\n\n const [selection, setSelection] = \n useState<ManifoldSelection>({ selected: [] });\n\n // To prevent selection state updates when de-selecting other annotators\n const muteSelectionEvents = useRef<boolean>(false);\n\n const connectAnnotator = (id: string, anno: Annotator<any, { id: string }>) => {\n // Add the annotator to the state\n setAnnotators(m => new Map(m.entries()).set(id, anno))\n\n const { store } = anno.state;\n const selectionState = anno.state.selection;\n\n // Add the annotations to the state\n setAnnotations(m => new Map(m.entries()).set(id, store.all()));\n\n const onStoreChange = () =>\n setAnnotations(m => new Map(m.entries()).set(id, store.all()));\n\n store.observe(onStoreChange);\n\n // Track selection\n let selectionStoreObserver: (event: StoreChangeEvent<Annotation>) => void;\n\n const unsubscribeSelection = selectionState.subscribe(({ selected, pointerEvent }) => {\n if (selectionStoreObserver) \n store.unobserve(selectionStoreObserver);\n\n const resolved = (selected || [])\n .map(({ id, editable }) => ({ annotation: store.getAnnotation(id), editable }));\n\n // Set the new selection\n if (!muteSelectionEvents.current)\n setSelection({ id, selected: resolved, pointerEvent });\n\n // Track the state of the selected annotations in the store\n selectionStoreObserver = event => {\n const { updated } = event.changes;\n\n setSelection(({ id, selected }) => ({\n id,\n selected: selected.map(({ annotation, editable }) => {\n const next = updated.find(u => u.oldValue.id === annotation.id);\n return next ? { annotation: next.newValue, editable } : { annotation, editable };\n }),\n pointerEvent\n }));\n }\n\n store.observe(selectionStoreObserver, { annotations: selected.map(({ id }) => id) });\n });\n\n return () => {\n // Remove annotator\n setAnnotators(m => new Map(Array.from(m.entries()).filter(([key, _]) => key !== id)));\n\n // Remove & untrack annotations\n setAnnotations(m => new Map(Array.from(m.entries()).filter(([key, _]) => key !== id)));\n store.unobserve(onStoreChange);\n\n // Un-track selection\n unsubscribeSelection();\n }\n }\n\n useEffect(() => {\n if (selection.id) {\n muteSelectionEvents.current = true;\n\n Array.from(annotators.entries()).forEach(([source, anno]) => {\n if (source !== selection.id)\n anno.setSelected();\n });\n\n muteSelectionEvents.current = false;\n }\n }, [selection, annotators]);\n\n return (\n <AnnotoriousManifoldContext.Provider value={{ \n annotators, \n annotations,\n selection,\n connectAnnotator \n }}>\n {props.children}\n </AnnotoriousManifoldContext.Provider>\n )\n\n}\n\nexport const useAnnotoriousManifold = <I extends Annotation = Annotation, E extends { id: string } = Annotation>() => {\n const { annotators } = useContext(AnnotoriousManifoldContext);\n return createManifoldInstance(annotators) as AnnotoriousManifoldInstance<I, E>;\n}\n\nexport const useAnnotator = <I extends Annotation = Annotation, E extends { id: string } = Annotation>(id: string) => {\n const { annotators } = useContext(AnnotoriousManifoldContext);\n return annotators.get(id) as Annotator<I, E>;\n}\n\nexport const useAnnotations = <T extends Annotation>() => {\n const { annotations } = useContext(AnnotoriousManifoldContext);\n return annotations as Map<string, T[]>;\n}\n\nexport const useSelection = <T extends Annotation>() => {\n const { selection } = useContext(AnnotoriousManifoldContext);\n return selection as ManifoldSelection<T>;\n}\n"],"names":["AnnotoriousManifoldContext","createContext","AnnotoriousManifold","props","annotators","setAnnotators","useState","annotations","setAnnotations","selection","setSelection","muteSelectionEvents","useRef","connectAnnotator","id","anno","m","store","selectionState","onStoreChange","selectionStoreObserver","unsubscribeSelection","selected","pointerEvent","resolved","editable","event","updated","annotation","next","u","key","_","useEffect","source","jsx","useAnnotoriousManifold","useContext","createManifoldInstance","useAnnotator","useAnnotations","useSelection"],"mappings":"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"}
@@ -1,48 +1,49 @@
1
1
  import { Origin as c } from "@annotorious/react";
2
- const B = (s) => {
3
- const e = (t) => Array.from(s.entries()).reduce((o, [n, r]) => {
2
+ const B = (r) => {
3
+ const e = (t) => Array.from(r.entries()).reduce((o, [n, s]) => {
4
4
  if (o)
5
5
  return o;
6
- const a = r.state.store.getAnnotation(t);
6
+ const a = s.state.store.getAnnotation(t);
7
7
  if (a)
8
- return { annotation: a, annotator: r, source: n };
8
+ return { annotation: a, annotator: s, source: n };
9
9
  }, void 0) || { annotation: void 0, annotator: void 0, source: void 0 }, i = (t, o = c.LOCAL) => {
10
10
  const { annotator: n } = e(t.annotation);
11
11
  n && n.state.store.addBody(t, o);
12
- }, d = (t = c.LOCAL) => Array.from(s.values()).forEach((o) => o.state.store.clear(t)), f = (t, o = c.LOCAL) => {
13
- const { annotation: n, annotator: r } = e(t);
14
- if (r)
15
- return r.state.store.deleteAnnotation(t, o), n;
12
+ }, d = (t = c.LOCAL) => Array.from(r.values()).forEach((o) => o.state.store.clear(t)), f = (t, o = c.LOCAL) => {
13
+ const { annotation: n, annotator: s } = e(t);
14
+ if (s)
15
+ return s.state.store.deleteAnnotation(t, o), n;
16
16
  }, u = (t, o = c.LOCAL) => {
17
17
  const { annotator: n } = e(t.annotation);
18
18
  n && n.state.store.deleteBody(t, o);
19
- }, l = () => Array.from(s.values()).forEach((t) => t.destroy()), A = (t) => {
19
+ }, A = () => Array.from(r.values()).forEach((t) => t.destroy()), l = (t) => {
20
20
  const { annotator: o } = e(t);
21
21
  return o;
22
22
  }, y = (t) => {
23
23
  const { source: o } = e(t);
24
24
  return o;
25
- }, v = (t) => e(t).annotation, L = () => Array.from(s.values()).reduce((t, o) => [...t, ...o.state.store.all()], []), m = (t, o, n) => {
26
- const r = typeof t == "string" ? t : t.id, { annotator: a } = e(r);
25
+ }, v = (t) => e(t).annotation, L = () => Array.from(r.values()).reduce((t, o) => [...t, ...o.state.store.all()], []), m = (t) => r.get(t), p = (t, o, n) => {
26
+ const s = typeof t == "string" ? t : t.id, { annotator: a } = e(s);
27
27
  a && a.state.store.updateAnnotation(t, o, n);
28
- }, p = (t) => {
28
+ }, O = (t) => {
29
29
  const { annotator: o } = e(t);
30
30
  o && o.setSelected(t);
31
31
  };
32
32
  return {
33
- annotators: [...s.values()],
34
- sources: [...s.keys()],
33
+ annotators: [...r.values()],
34
+ sources: [...r.keys()],
35
35
  addBody: i,
36
36
  clear: d,
37
37
  deleteAnnotation: f,
38
38
  deleteBody: u,
39
- destroy: l,
40
- findAnnotator: A,
39
+ destroy: A,
40
+ findAnnotator: l,
41
41
  findSource: y,
42
42
  getAnnotation: v,
43
43
  getAnnotations: L,
44
- setSelected: p,
45
- updateAnnotation: m
44
+ getAnnotator: m,
45
+ setSelected: O,
46
+ updateAnnotation: p
46
47
  };
47
48
  };
48
49
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react-manifold.es4.js","sources":["../src/AnnotoriousManifoldInstance.ts"],"sourcesContent":["import { Origin } from '@annotorious/react';\nimport type { \n Annotation, \n AnnotationBody, \n Annotator\n} 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 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 setSelected(annotationId: string): 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 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 = (id: string) => \n find(id).annotation;\n\n const getAnnotations = () => \n Array.from(annotators.values()).reduce((all, annotator) =>\n [...all, ...annotator.state.store.all()], [] as I[]);\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) => {\n // Note: keeping this for later - but needs handling in the \n // context provider, because we need to mute selection events!\n /*\n if (Array.isArray(idOrIds)) {\n const resolved = idOrIds.map(find).filter(t => t.annotator);\n\n const groupedByAnnotator = resolved.reduce((grouped, { annotator, annotation }) => {\n const existing = grouped.find(t => t.annotator === annotator);\n if (existing) {\n // Append this annotation\n return grouped.map(t => t.annotator === existing.annotator ? \n { \n annotator, \n annotations: [...t.annotations, annotation ] \n } : t);\n } else {\n // New entry\n return [...grouped, {\n annotator,\n annotations: [ annotation ]\n }];\n } \n }, [] as { annotator: Annotator<I, E>, annotations: I[] }[]);\n\n groupedByAnnotator.forEach(({ annotator, annotations }) => {\n \n })\n } else { \n */\n const { annotator } = find(id);\n if (annotator)\n annotator.setSelected(id);\n // }\n }\n\n return {\n annotators: [...annotators.values()],\n sources: [...annotators.keys()],\n addBody,\n clear,\n deleteAnnotation,\n deleteBody,\n destroy,\n findAnnotator,\n findSource,\n getAnnotation,\n getAnnotations,\n setSelected,\n updateAnnotation\n }\n\n}"],"names":["createManifoldInstance","annotators","find","annotationId","found","source","annotator","annotation","addBody","body","origin","Origin","clear","a","deleteAnnotation","id","deleteBody","destroy","findAnnotator","findSource","getAnnotation","getAnnotations","all","updateAnnotation","arg1","arg2","arg3","oldId","setSelected"],"mappings":";AAqCa,MAAAA,IAAyB,CACpCC,MACsC;AAEtC,QAAMC,IAAO,CAACC,MACZ,MAAM,KAAKF,EAAW,SAAS,EAAE,OAAO,CAACG,GAAO,CAACC,GAAQC,CAAS,MAAM;AAClE,QAAAF;AACK,aAAAA;AAET,UAAMG,IAAaD,EAAU,MAAM,MAAM,cAAcH,CAAY;AAC/D,QAAAI;AACK,aAAA,EAAE,YAAAA,GAAY,WAAAD,GAAW,QAAAD;EACpC,GAAG,MAAuE,KAE1E,EAAE,YAAY,QAAW,WAAW,QAAW,QAAQ,OAAU,GAM7DG,IAAU,CAACC,GAAsBC,IAASC,EAAO,UAAU;AAC/D,UAAM,EAAE,WAAAL,EAAc,IAAAJ,EAAKO,EAAK,UAAU;AACtC,IAAAH,KACFA,EAAU,MAAM,MAAM,QAAQG,GAAMC,CAAM;AAAA,EAAA,GAGxCE,IAAQ,CAACF,IAASC,EAAO,UAC7B,MAAM,KAAKV,EAAW,OAAA,CAAQ,EAAE,QAAQ,CAAKY,MAAAA,EAAE,MAAM,MAAM,MAAMH,CAAM,CAAC,GAEpEI,IAAmB,CAACC,GAAYL,IAASC,EAAO,UAAU;AAC9D,UAAM,EAAE,YAAAJ,GAAY,WAAAD,EAAU,IAAIJ,EAAKa,CAAE;AAEzC,QAAIT;AACF,aAAAA,EAAU,MAAM,MAAM,iBAAiBS,GAAIL,CAAM,GAC1CH;AAAA,EACT,GAGIS,IAAa,CAACP,GAAsBC,IAASC,EAAO,UAAU;AAClE,UAAM,EAAE,WAAAL,EAAc,IAAAJ,EAAKO,EAAK,UAAU;AACtC,IAAAH,KACFA,EAAU,MAAM,MAAM,WAAWG,GAAMC,CAAM;AAAA,EAAA,GAG3CO,IAAU,MACd,MAAM,KAAKhB,EAAW,OAAA,CAAQ,EAAE,QAAQ,CAAAY,MAAKA,EAAE,QAAS,CAAA,GAEpDK,IAAgB,CAACf,MAAyB;AAC9C,UAAM,EAAE,WAAAG,EAAA,IAAcJ,EAAKC,CAAY;AAChC,WAAAG;AAAA,EAAA,GAGHa,IAAa,CAAChB,MAAyB;AAC3C,UAAM,EAAE,QAAAE,EAAA,IAAWH,EAAKC,CAAY;AAC7B,WAAAE;AAAA,EAAA,GAGHe,IAAgB,CAACL,MACrBb,EAAKa,CAAE,EAAE,YAELM,IAAiB,MACrB,MAAM,KAAKpB,EAAW,OAAQ,CAAA,EAAE,OAAO,CAACqB,GAAKhB,MAC3C,CAAC,GAAGgB,GAAK,GAAGhB,EAAU,MAAM,MAAM,IAAI,CAAC,GAAG,CAAA,CAAS,GAEjDiB,IAAmB,CAACC,GAAkBC,GAAmBC,MAAkB;AAC/E,UAAMC,IAAgB,OAAOH,KAAS,WAAWA,IAAOA,EAAK,IAEvD,EAAE,WAAAlB,EAAA,IAAcJ,EAAKyB,CAAK;AAC5B,IAAArB,KACFA,EAAU,MAAM,MAAM,iBAAiBkB,GAAMC,GAAMC,CAAI;AAAA,EAAA,GAGrDE,IAAc,CAACb,MAAe;AA8BhC,UAAM,EAAE,WAAAT,EAAA,IAAcJ,EAAKa,CAAE;AACzB,IAAAT,KACFA,EAAU,YAAYS,CAAE;AAAA,EAAA;AAIvB,SAAA;AAAA,IACL,YAAY,CAAC,GAAGd,EAAW,QAAQ;AAAA,IACnC,SAAS,CAAC,GAAGA,EAAW,MAAM;AAAA,IAC9B,SAAAO;AAAA,IACA,OAAAI;AAAA,IACA,kBAAAE;AAAA,IACA,YAAAE;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAO;AAAA,IACA,kBAAAL;AAAA,EAAA;AAGJ;"}
1
+ {"version":3,"file":"annotorious-react-manifold.es4.js","sources":["../src/AnnotoriousManifoldInstance.ts"],"sourcesContent":["import { Origin } from '@annotorious/react';\nimport type {\n Annotation, \n AnnotationBody, \n Annotator\n} 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 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): 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 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) => {\n const { annotator } = find(id);\n if (annotator)\n annotator.setSelected(id);\n }\n\n return {\n annotators: [...annotators.values()],\n sources: [...annotators.keys()],\n addBody,\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","deleteAnnotation","id","deleteBody","destroy","findAnnotator","findSource","getAnnotation","getAnnotations","all","getAnnotator","updateAnnotation","arg1","arg2","arg3","oldId","setSelected"],"mappings":";AAuCa,MAAAA,IAAyB,CACpCC,MACsC;AAEtC,QAAMC,IAAO,CAACC,MACZ,MAAM,KAAKF,EAAW,SAAS,EAAE,OAAO,CAACG,GAAO,CAACC,GAAQC,CAAS,MAAM;AAClE,QAAAF;AACK,aAAAA;AAET,UAAMG,IAAaD,EAAU,MAAM,MAAM,cAAcH,CAAY;AAC/D,QAAAI;AACK,aAAA,EAAE,YAAAA,GAAY,WAAAD,GAAW,QAAAD;EACpC,GAAG,MAAuE,KAE1E,EAAE,YAAY,QAAW,WAAW,QAAW,QAAQ,OAAU,GAM7DG,IAAU,CAACC,GAAsBC,IAASC,EAAO,UAAU;AAC/D,UAAM,EAAE,WAAAL,EAAc,IAAAJ,EAAKO,EAAK,UAAU;AACtC,IAAAH,KACFA,EAAU,MAAM,MAAM,QAAQG,GAAMC,CAAM;AAAA,EAAA,GAGxCE,IAAQ,CAACF,IAASC,EAAO,UAC7B,MAAM,KAAKV,EAAW,OAAA,CAAQ,EAAE,QAAQ,CAAKY,MAAAA,EAAE,MAAM,MAAM,MAAMH,CAAM,CAAC,GAEpEI,IAAmB,CAACC,GAAYL,IAASC,EAAO,UAAU;AAC9D,UAAM,EAAE,YAAAJ,GAAY,WAAAD,EAAU,IAAIJ,EAAKa,CAAE;AAEzC,QAAIT;AACF,aAAAA,EAAU,MAAM,MAAM,iBAAiBS,GAAIL,CAAM,GAC1CH;AAAA,EACT,GAGIS,IAAa,CAACP,GAAsBC,IAASC,EAAO,UAAU;AAClE,UAAM,EAAE,WAAAL,EAAc,IAAAJ,EAAKO,EAAK,UAAU;AACtC,IAAAH,KACFA,EAAU,MAAM,MAAM,WAAWG,GAAMC,CAAM;AAAA,EAAA,GAG3CO,IAAU,MACd,MAAM,KAAKhB,EAAW,OAAA,CAAQ,EAAE,QAAQ,CAAAY,MAAKA,EAAE,QAAS,CAAA,GAEpDK,IAAgB,CAACf,MAAyB;AAC9C,UAAM,EAAE,WAAAG,EAAA,IAAcJ,EAAKC,CAAY;AAChC,WAAAG;AAAA,EAAA,GAGHa,IAAa,CAAChB,MAAyB;AAC3C,UAAM,EAAE,QAAAE,EAAA,IAAWH,EAAKC,CAAY;AAC7B,WAAAE;AAAA,EAAA,GAGHe,IAAgB,CAACjB,MACrBD,EAAKC,CAAY,EAAE,YAEfkB,IAAiB,MACrB,MAAM,KAAKpB,EAAW,OAAQ,CAAA,EAAE,OAAO,CAACqB,GAAKhB,MAC3C,CAAC,GAAGgB,GAAK,GAAGhB,EAAU,MAAM,MAAM,IAAI,CAAC,GAAG,CAAA,CAAS,GAEjDiB,IAAe,CAACR,MAAed,EAAW,IAAIc,CAAE,GAEhDS,IAAmB,CAACC,GAAkBC,GAAmBC,MAAkB;AAC/E,UAAMC,IAAgB,OAAOH,KAAS,WAAWA,IAAOA,EAAK,IAEvD,EAAE,WAAAnB,EAAA,IAAcJ,EAAK0B,CAAK;AAC5B,IAAAtB,KACFA,EAAU,MAAM,MAAM,iBAAiBmB,GAAMC,GAAMC,CAAI;AAAA,EAAA,GAGrDE,IAAc,CAACd,MAAe;AAClC,UAAM,EAAE,WAAAT,EAAA,IAAcJ,EAAKa,CAAE;AACzB,IAAAT,KACFA,EAAU,YAAYS,CAAE;AAAA,EAAA;AAGrB,SAAA;AAAA,IACL,YAAY,CAAC,GAAGd,EAAW,QAAQ;AAAA,IACnC,SAAS,CAAC,GAAGA,EAAW,MAAM;AAAA,IAC9B,SAAAO;AAAA,IACA,OAAAI;AAAA,IACA,kBAAAE;AAAA,IACA,YAAAE;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAE;AAAA,IACA,aAAAM;AAAA,IACA,kBAAAL;AAAA,EAAA;AAGJ;"}
@@ -1,3 +1,3 @@
1
- import { Annotation, Annotator } from '@annotorious/core/src/model';
1
+ import { Annotator } from '@annotorious/react';
2
2
  export declare const synchronizeInstances: <I extends Annotation = Annotation, E extends unknown = Annotation>(instances: Annotator<I, E>[]) => any;
3
3
  //# sourceMappingURL=synchronizeInstances.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synchronizeInstances.d.ts","sourceRoot":"","sources":["../src/synchronizeInstances.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEpE,eAAO,MAAM,oBAAoB,0GAQhC,CAAA"}
1
+ {"version":3,"file":"synchronizeInstances.d.ts","sourceRoot":"","sources":["../src/synchronizeInstances.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,oBAAoB,0GAQhC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annotorious/react-manifold",
3
- "version": "0.5.0",
3
+ "version": "0.7.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",
@@ -32,19 +32,15 @@
32
32
  "@types/react": "^18.2.35",
33
33
  "@types/react-dom": "^18.2.14",
34
34
  "@vitejs/plugin-react": "^4.1.1",
35
- "svelte": "^3.59.2",
36
35
  "typescript": "^4.9.5",
37
36
  "vite": "^4.5.0",
38
37
  "vite-plugin-dts": "^3.6.3",
39
38
  "vite-tsconfig-paths": "^4.2.1"
40
39
  },
41
- "peerDependencies": {
42
- "@annotorious/react": "^3.0.0-rc.2",
40
+ "peerDependencies": {
41
+ "@annotorious/react": "^3.0.0-rc.7",
43
42
  "react": "16.8.0 || >=17.x || >=18.x",
44
43
  "react-dom": "16.8.0 || >=17.x || >=18.x"
45
44
  },
46
- "dependencies": {
47
- "@annotorious/core": "^3.0.0-rc.2"
48
- },
49
45
  "sideEffects": false
50
46
  }