@annotorious/react 3.0.0-rc.3 → 3.0.0-rc.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Annotorious.d.ts +12 -34
- package/dist/Annotorious.d.ts.map +1 -1
- package/dist/AnnotoriousPlugin.d.ts +8 -6
- package/dist/AnnotoriousPlugin.d.ts.map +1 -1
- package/dist/AnnotoriousPopup.d.ts +2 -1
- package/dist/ImageAnnotator.d.ts +2 -2
- package/dist/ImageAnnotator.d.ts.map +1 -1
- package/dist/annotorious-react.css +1 -1
- package/dist/annotorious-react.es.js +37 -52
- package/dist/annotorious-react.es.js.map +1 -1
- package/dist/annotorious-react.es10.js +16 -3
- package/dist/annotorious-react.es10.js.map +1 -1
- package/dist/annotorious-react.es11.js +6 -27
- package/dist/annotorious-react.es11.js.map +1 -1
- package/dist/annotorious-react.es12.js +7 -19
- package/dist/annotorious-react.es12.js.map +1 -1
- package/dist/annotorious-react.es13.js +131 -51
- package/dist/annotorious-react.es13.js.map +1 -1
- package/dist/annotorious-react.es14.js +32 -17
- package/dist/annotorious-react.es14.js.map +1 -1
- package/dist/annotorious-react.es15.js +2 -22
- package/dist/annotorious-react.es15.js.map +1 -1
- package/dist/annotorious-react.es16.js +26 -2
- package/dist/annotorious-react.es16.js.map +1 -1
- package/dist/annotorious-react.es17.js +606 -2
- package/dist/annotorious-react.es17.js.map +1 -1
- package/dist/annotorious-react.es18.js +2 -3859
- package/dist/annotorious-react.es18.js.map +1 -1
- package/dist/annotorious-react.es19.js +2 -29
- package/dist/annotorious-react.es19.js.map +1 -1
- package/dist/annotorious-react.es2.js +87 -68
- package/dist/annotorious-react.es2.js.map +1 -1
- package/dist/annotorious-react.es3.js +6 -7
- package/dist/annotorious-react.es3.js.map +1 -1
- package/dist/annotorious-react.es4.js +8 -8
- package/dist/annotorious-react.es4.js.map +1 -1
- package/dist/annotorious-react.es5.js +19 -17
- package/dist/annotorious-react.es5.js.map +1 -1
- package/dist/annotorious-react.es8.js +27 -47
- package/dist/annotorious-react.es8.js.map +1 -1
- package/dist/annotorious-react.es9.js +35 -12
- package/dist/annotorious-react.es9.js.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts +3 -2
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts.map +1 -1
- package/dist/openseadragon/OpenSeadragonPopup.d.ts +2 -1
- package/dist/openseadragon/OpenSeadragonViewer.d.ts +3 -3
- package/dist/openseadragon/OpenSeadragonViewer.d.ts.map +1 -1
- package/dist/openseadragon/setPosition.d.ts +2 -1
- package/dist/openseadragon/setPosition.d.ts.map +1 -1
- package/package.json +18 -10
- package/dist/annotorious-react.es20.js +0 -39
- package/dist/annotorious-react.es20.js.map +0 -1
- package/dist/annotorious-react.es21.js +0 -19
- package/dist/annotorious-react.es21.js.map +0 -1
- package/dist/annotorious-react.es22.js +0 -7
- package/dist/annotorious-react.es22.js.map +0 -1
- package/dist/annotorious-react.es23.js +0 -11
- package/dist/annotorious-react.es23.js.map +0 -1
- package/dist/annotorious-react.es24.js +0 -156
- package/dist/annotorious-react.es24.js.map +0 -1
- package/dist/annotorious-react.es25.js +0 -9
- package/dist/annotorious-react.es25.js.map +0 -1
- package/dist/annotorious-react.es26.js +0 -20665
- package/dist/annotorious-react.es26.js.map +0 -1
- package/dist/annotorious-react.es27.js +0 -35
- package/dist/annotorious-react.es27.js.map +0 -1
- package/dist/annotorious-react.es28.js +0 -5
- package/dist/annotorious-react.es28.js.map +0 -1
- package/dist/annotorious-react.es29.js +0 -33
- package/dist/annotorious-react.es29.js.map +0 -1
- package/dist/annotorious-react.es30.js +0 -602
- package/dist/annotorious-react.es30.js.map +0 -1
- package/dist/annotorious-react.es31.js +0 -5
- package/dist/annotorious-react.es31.js.map +0 -1
- package/dist/annotorious-react.es32.js +0 -5
- package/dist/annotorious-react.es32.js.map +0 -1
- package/dist/annotorious-react.es33.js +0 -20
- package/dist/annotorious-react.es33.js.map +0 -1
- package/dist/annotorious-react.es34.js +0 -30
- package/dist/annotorious-react.es34.js.map +0 -1
- package/dist/annotorious-react.es35.js +0 -19
- package/dist/annotorious-react.es35.js.map +0 -1
- package/dist/annotorious-react.es36.js +0 -24
- package/dist/annotorious-react.es36.js.map +0 -1
- package/dist/annotorious-react.es37.js +0 -19
- package/dist/annotorious-react.es37.js.map +0 -1
- package/dist/annotorious-react.es38.js +0 -7
- package/dist/annotorious-react.es38.js.map +0 -1
- package/dist/annotorious-react.es39.js +0 -11
- package/dist/annotorious-react.es39.js.map +0 -1
- package/dist/annotorious-react.es40.js +0 -10
- package/dist/annotorious-react.es40.js.map +0 -1
- package/dist/annotorious-react.es6.js +0 -5
- package/dist/annotorious-react.es6.js.map +0 -1
- package/dist/annotorious-react.es7.js +0 -5
- package/dist/annotorious-react.es7.js.map +0 -1
|
@@ -1,32 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { createContext as u, useState as w, useContext as l, useEffect as n } from "react";
|
|
3
|
-
import { createOSDAnnotator as m } from "./annotorious-react.es26.js";
|
|
4
|
-
import { AnnotoriousContext as g } from "./annotorious-react.es2.js";
|
|
5
|
-
const s = u({ viewer: null, setViewer: null }), y = (e) => {
|
|
6
|
-
const { children: v, tool: i, ...c } = e, [o, f] = w(), { anno: t, setAnno: a } = l(g);
|
|
7
|
-
return n(() => {
|
|
8
|
-
if (o) {
|
|
9
|
-
const r = m(o, c);
|
|
10
|
-
return e.tool && r.setDrawingTool(e.tool), a(r), () => {
|
|
11
|
-
r.destroy(), a(void 0);
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
}, [o]), n(() => {
|
|
15
|
-
t && t.setDrawingTool(i);
|
|
16
|
-
}, [i]), n(() => {
|
|
17
|
-
t && t.setDrawingEnabled(e.drawingEnabled);
|
|
18
|
-
}, [e.drawingEnabled]), n(() => {
|
|
19
|
-
t && t.setFilter(e.filter);
|
|
20
|
-
}, [e.filter]), n(() => {
|
|
21
|
-
t && t.setStyle(e.style);
|
|
22
|
-
}, [e.style]), /* @__PURE__ */ d(s.Provider, { value: { viewer: o, setViewer: f }, children: e.children });
|
|
23
|
-
}, C = () => {
|
|
24
|
-
const { viewer: e } = l(s);
|
|
25
|
-
return e;
|
|
26
|
-
};
|
|
1
|
+
var e = {};
|
|
27
2
|
export {
|
|
28
|
-
|
|
29
|
-
s as OpenSeadragonAnnotatorContext,
|
|
30
|
-
C as useViewer
|
|
3
|
+
e as __exports
|
|
31
4
|
};
|
|
32
5
|
//# sourceMappingURL=annotorious-react.es19.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es19.js","sources":[
|
|
1
|
+
{"version":3,"file":"annotorious-react.es19.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,97 +1,116 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createContext as
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { j as E } from "./annotorious-react.es11.js";
|
|
2
|
+
import { createContext as I, forwardRef as O, useState as b, useImperativeHandle as R, useEffect as V, useContext as a } from "react";
|
|
3
|
+
import { onUserSelect as H } from "@annotorious/core";
|
|
4
|
+
import { useDebounce as _ } from "./annotorious-react.es12.js";
|
|
5
|
+
const c = I({
|
|
5
6
|
anno: void 0,
|
|
6
7
|
setAnno: void 0,
|
|
7
8
|
annotations: [],
|
|
8
9
|
selection: { selected: [] }
|
|
9
|
-
}),
|
|
10
|
-
const [n,
|
|
11
|
-
return
|
|
10
|
+
}), K = O((t, o) => {
|
|
11
|
+
const [n, i] = b(null), [u, s] = b([]), [d, r] = b({ selected: [] });
|
|
12
|
+
return R(o, () => n), V(() => {
|
|
12
13
|
if (n) {
|
|
13
14
|
const { selection: m, store: e } = n.state;
|
|
14
|
-
e.all().length > 0 &&
|
|
15
|
-
const
|
|
16
|
-
e.observe(
|
|
17
|
-
let
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const D = (
|
|
21
|
-
|
|
22
|
-
const { updated: S } =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
e.all().length > 0 && s(e.all());
|
|
16
|
+
const f = () => s(() => e.all());
|
|
17
|
+
e.observe(f);
|
|
18
|
+
let l;
|
|
19
|
+
const A = m.subscribe(({ selected: p, ...w }) => {
|
|
20
|
+
l && e.unobserve(l);
|
|
21
|
+
const D = (p || []).map(({ id: v, editable: S }) => ({ annotation: e.getAnnotation(v), editable: S }));
|
|
22
|
+
r({ selected: D, ...w }), l = (v) => {
|
|
23
|
+
const { updated: S } = v.changes;
|
|
24
|
+
r((g) => ({
|
|
25
|
+
...g,
|
|
26
|
+
selected: g.selected.map(({ annotation: h, editable: x }) => {
|
|
27
|
+
const C = S.find((U) => U.oldValue.id === h.id);
|
|
28
|
+
return C ? { annotation: C.newValue, editable: x } : { annotation: h, editable: x };
|
|
27
29
|
})
|
|
28
30
|
}));
|
|
29
|
-
}, e.observe(
|
|
31
|
+
}, e.observe(l, { annotations: p.map(({ id: v }) => v) });
|
|
30
32
|
});
|
|
31
33
|
return () => {
|
|
32
|
-
e.unobserve(
|
|
34
|
+
e.unobserve(f), A();
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
|
-
}, [n]), /* @__PURE__ */
|
|
37
|
+
}, [n]), /* @__PURE__ */ E.jsx(c.Provider, { value: {
|
|
36
38
|
anno: n,
|
|
37
|
-
setAnno:
|
|
38
|
-
annotations:
|
|
39
|
-
selection:
|
|
39
|
+
setAnno: i,
|
|
40
|
+
annotations: u,
|
|
41
|
+
selection: d
|
|
40
42
|
}, children: t.children });
|
|
41
|
-
}),
|
|
42
|
-
const { anno: t } = c
|
|
43
|
+
}), L = () => {
|
|
44
|
+
const { anno: t } = a(c);
|
|
43
45
|
return t;
|
|
44
|
-
}, G = () => {
|
|
45
|
-
const { anno: t } = c(o);
|
|
46
|
-
return t == null ? void 0 : t.state.store;
|
|
47
46
|
}, P = () => {
|
|
48
|
-
const {
|
|
47
|
+
const { anno: t } = a(c);
|
|
48
|
+
return t == null ? void 0 : t.state.store;
|
|
49
|
+
}, k = () => {
|
|
50
|
+
const { annotations: t } = a(c);
|
|
49
51
|
return t;
|
|
50
|
-
},
|
|
51
|
-
const { annotations:
|
|
52
|
-
return
|
|
53
|
-
},
|
|
54
|
-
const
|
|
52
|
+
}, q = (t) => {
|
|
53
|
+
const { annotations: o } = a(c);
|
|
54
|
+
return _(o, t);
|
|
55
|
+
}, M = (t) => t ? q(t) : k(), y = (t, o) => {
|
|
56
|
+
const n = P(), [i, u] = b(
|
|
57
|
+
n == null ? void 0 : n.getAnnotation(t)
|
|
58
|
+
);
|
|
59
|
+
return V(() => {
|
|
60
|
+
if (!n) return;
|
|
61
|
+
const s = (d) => {
|
|
62
|
+
const r = d.changes.updated[0];
|
|
63
|
+
r && u(r.newValue);
|
|
64
|
+
};
|
|
65
|
+
return n.observe(s, { ...o, annotations: t }), () => n.unobserve(s);
|
|
66
|
+
}, []), i;
|
|
67
|
+
}, N = (t, o) => {
|
|
68
|
+
const n = y(t);
|
|
69
|
+
return n ? H(n, o) : void 0;
|
|
70
|
+
}, Q = () => {
|
|
71
|
+
const { selection: t } = a(c);
|
|
55
72
|
return t;
|
|
56
|
-
},
|
|
57
|
-
const { anno: t } = c
|
|
73
|
+
}, T = () => {
|
|
74
|
+
const { anno: t } = a(c);
|
|
58
75
|
return t == null ? void 0 : t.getUser();
|
|
59
|
-
},
|
|
60
|
-
const { anno: t } = c
|
|
61
|
-
return
|
|
76
|
+
}, j = () => {
|
|
77
|
+
const { anno: t } = a(c), [o, n] = b([]);
|
|
78
|
+
return V(() => {
|
|
62
79
|
if (t) {
|
|
63
|
-
const { store:
|
|
64
|
-
if (!
|
|
80
|
+
const { store: i, viewport: u } = t.state;
|
|
81
|
+
if (!u)
|
|
65
82
|
return;
|
|
66
|
-
let
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
const m =
|
|
70
|
-
n(m),
|
|
71
|
-
const { updated:
|
|
72
|
-
n((
|
|
73
|
-
const
|
|
74
|
-
return
|
|
83
|
+
let s;
|
|
84
|
+
const d = u.subscribe((r) => {
|
|
85
|
+
s && i.unobserve(s);
|
|
86
|
+
const m = r.map((e) => i.getAnnotation(e));
|
|
87
|
+
n(m), s = (e) => {
|
|
88
|
+
const { updated: f } = e.changes;
|
|
89
|
+
n((l) => l.map((A) => {
|
|
90
|
+
const p = f.find((w) => w.oldValue.id === A.id);
|
|
91
|
+
return p ? p.newValue : A;
|
|
75
92
|
}));
|
|
76
|
-
},
|
|
93
|
+
}, i.observe(s, { annotations: r });
|
|
77
94
|
});
|
|
78
95
|
return () => {
|
|
79
|
-
|
|
96
|
+
d();
|
|
80
97
|
};
|
|
81
98
|
}
|
|
82
|
-
}, [t]),
|
|
83
|
-
},
|
|
84
|
-
const
|
|
85
|
-
return
|
|
86
|
-
},
|
|
99
|
+
}, [t]), o;
|
|
100
|
+
}, z = (t) => {
|
|
101
|
+
const o = j();
|
|
102
|
+
return _(o, t);
|
|
103
|
+
}, W = (t) => t ? z(t) : j();
|
|
87
104
|
export {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
105
|
+
K as Annotorious,
|
|
106
|
+
c as AnnotoriousContext,
|
|
107
|
+
y as useAnnotation,
|
|
108
|
+
N as useAnnotationSelectAction,
|
|
109
|
+
P as useAnnotationStore,
|
|
110
|
+
M as useAnnotations,
|
|
111
|
+
L as useAnnotator,
|
|
112
|
+
T as useAnnotatorUser,
|
|
113
|
+
Q as useSelection,
|
|
114
|
+
W as useViewportState
|
|
96
115
|
};
|
|
97
116
|
//# sourceMappingURL=annotorious-react.es2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es2.js","sources":["../src/Annotorious.tsx"],"sourcesContent":["import { createContext, forwardRef, ReactNode} from 'react';\nimport { useContext, useEffect, useImperativeHandle, useState } from 'react';\nimport { Annotation, Annotator, Store, StoreChangeEvent } from '@annotorious/core';\nimport { useDebounce } from './useDebounce';\n\ninterface Selection<T extends Annotation = Annotation> {\n\n selected: { annotation: T, editable?: boolean }[];\n\n pointerEvent?: PointerEvent;\n\n}\n\nexport interface AnnotoriousContextState {\n\n anno: Annotator;\n\n setAnno(anno: Annotator<Annotation, unknown>): void;\n\n annotations: Annotation[];\n\n selection: Selection;\n\n}\n\nexport const AnnotoriousContext = createContext({ \n\n anno: undefined, \n\n setAnno: undefined, \n\n annotations: [], \n\n selection: { selected: [] }\n\n});\n\nexport const Annotorious = forwardRef<Annotator, { children: ReactNode }>((props: { children: ReactNode }, ref) => {\n\n const [anno, setAnno] = useState<Annotator>(null);\n\n const [annotations, setAnnotations] = useState<Annotation[]>([]);\n\n const [selection, setSelection] = useState<Selection>({ selected: [] });\n\n useImperativeHandle(ref, () => anno);\n\n useEffect(() => {\n if (anno) {\n const { selection, store } = anno.state;\n\n // Components below <Annotorious /> may have\n // loaded annotations into the store already! \n if (store.all().length > 0)\n setAnnotations(store.all());\n\n // Keeps annotations in sync with a React state,\n // so clients can render components the usual React way.\n const onStoreChange = (event: StoreChangeEvent<Annotation>) =>\n setAnnotations(() => store.all());\n\n store.observe(onStoreChange);\n\n // Keep selection in sync with a react state, and resolve them\n // from IDs to annotations automatically, for convenience\n let selectionStoreObserver: (event: StoreChangeEvent<Annotation>) => void;\n\n const unsubscribeSelection = selection.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 setSelection({ selected: resolved, pointerEvent });\n\n selectionStoreObserver = event => {\n const { updated } = event.changes;\n\n setSelection(({ selected }) => ({\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 }));\n }\n\n store.observe(selectionStoreObserver, { annotations: selected.map(({ id }) => id) });\n });\n\n return () => {\n store.unobserve(onStoreChange);\n unsubscribeSelection();\n }\n }\n }, [anno]);\n\n return (\n <AnnotoriousContext.Provider value={{ \n anno, \n setAnno,\n annotations, \n selection \n }}>\n {props.children}\n </AnnotoriousContext.Provider>\n )\n\n});\n\nexport const useAnnotator = <T extends Annotator<any, unknown>>() => {\n const { anno } = useContext(AnnotoriousContext);\n return anno as T;\n}\n\nexport const useAnnotationStore = <T extends Store<Annotation>>() => {\n const { anno } = useContext(AnnotoriousContext);\n return anno?.state.store as T | undefined;\n}\n\nconst _useAnnotations = <T extends Annotation>() => {\n const { annotations } = useContext(AnnotoriousContext);\n return annotations as T[];\n}\n\nconst _useAnnotationsDebouced = <T extends Annotation>(debounce: number) => {\n const { annotations } = useContext(AnnotoriousContext);\n return useDebounce(annotations, debounce) as T[];\n}\n\nexport const useAnnotations = <T extends Annotation>(debounce?: number) =>\n debounce ? _useAnnotationsDebouced<T>(debounce) : _useAnnotations<T>();\n\nexport const useSelection = <T extends Annotation>() => {\n const { selection } = useContext(AnnotoriousContext);\n return selection as Selection<T>;\n}\n\nexport const useAnnotatorUser = () => {\n const { anno } = useContext(AnnotoriousContext);\n return anno?.getUser();\n}\n\nconst _useViewportState = <T extends Annotation>() => {\n const { anno } = useContext(AnnotoriousContext);\n\n const [inViewport, setInViewport] = useState<T[]>([]);\n\n useEffect(() => {\n if (anno) {\n const { store, viewport} = anno.state;\n\n if (!viewport)\n return;\n\n // Keep viewport annotations in sync with a react state, and resolve them\n // from IDs to annotations automatically, for convenience\n let viewportStoreObserver: (event: StoreChangeEvent<T>) => void;\n\n const unsubscribeViewport = viewport.subscribe(ids => {\n if (viewportStoreObserver) \n store.unobserve(viewportStoreObserver);\n\n const resolved = ids.map(id => store.getAnnotation(id)) as T[];\n setInViewport(resolved);\n\n viewportStoreObserver = event => {\n const { updated } = event.changes;\n\n setInViewport(annotations => annotations.map(annotation => {\n const next = updated.find(u => u.oldValue.id === annotation.id);\n return next ? next.newValue : annotation;\n }));\n }\n\n store.observe(viewportStoreObserver, { annotations: ids });\n });\n\n return () => {\n unsubscribeViewport();\n }\n }\n }, [anno]);\n\n return inViewport;\n}\n\nconst _useViewportStateDebounced = <T extends Annotation>(debounce: number) => {\n const inViewport = _useViewportState();\n return useDebounce(inViewport, debounce) as T[];\n}\n\nexport const useViewportState = <T extends Annotation>(debounce?: number) =>\n debounce ? _useViewportStateDebounced<T>(debounce) : _useViewportState<T>();\n"],"names":["AnnotoriousContext","createContext","Annotorious","forwardRef","props","ref","anno","setAnno","useState","annotations","setAnnotations","selection","setSelection","useImperativeHandle","useEffect","store","onStoreChange","event","selectionStoreObserver","unsubscribeSelection","selected","pointerEvent","resolved","id","editable","updated","annotation","next","u","jsx","useAnnotator","useContext","useAnnotationStore","_useAnnotations","_useAnnotationsDebouced","debounce","useDebounce","useAnnotations","useSelection","useAnnotatorUser","_useViewportState","inViewport","setInViewport","viewport","viewportStoreObserver","unsubscribeViewport","ids","_useViewportStateDebounced","useViewportState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"annotorious-react.es2.js","sources":["../src/Annotorious.tsx"],"sourcesContent":["import { createContext, forwardRef, type ReactNode, useContext, useEffect, useImperativeHandle, useState } from 'react';\nimport type {\n Annotation,\n Annotator,\n Selection as CoreSelection,\n Store,\n StoreChangeEvent,\n User\n} from '@annotorious/annotorious';\nimport {\n onUserSelect,\n type StoreObserveOptions,\n type UserSelectActionExpression\n} from '@annotorious/core';\n\nimport { useDebounce } from './useDebounce';\n\ninterface Selection<T extends Annotation = Annotation> extends Omit<CoreSelection, 'selected'> {\n\n selected: { annotation: T, editable?: boolean }[];\n\n}\n\nexport interface AnnotoriousContextState {\n\n anno: Annotator;\n\n setAnno(anno: Annotator<Annotation, unknown>): void;\n\n annotations: Annotation[];\n\n selection: Selection;\n\n}\n\nexport const AnnotoriousContext = createContext({ \n\n anno: undefined, \n\n setAnno: undefined, \n\n annotations: [], \n\n selection: { selected: [] }\n\n});\n\nexport const Annotorious = forwardRef<Annotator, { children: ReactNode }>((props: { children: ReactNode }, ref) => {\n\n const [anno, setAnno] = useState<Annotator>(null);\n\n const [annotations, setAnnotations] = useState<Annotation[]>([]);\n\n const [selection, setSelection] = useState<Selection>({ selected: [] });\n\n useImperativeHandle(ref, () => anno);\n\n useEffect(() => {\n if (anno) {\n const { selection, store } = anno.state;\n\n // Components below <Annotorious /> may have\n // loaded annotations into the store already! \n if (store.all().length > 0)\n setAnnotations(store.all());\n\n // Keeps annotations in sync with a React state,\n // so clients can render components the usual React way.\n const onStoreChange = () => setAnnotations(() => store.all());\n\n store.observe(onStoreChange);\n\n // Keep selection in sync with a react state, and resolve them\n // from IDs to annotations automatically, for convenience\n let selectionStoreObserver: (event: StoreChangeEvent<Annotation>) => void;\n\n const unsubscribeSelection = selection.subscribe(({ selected, ...rest }) => {\n if (selectionStoreObserver) \n store.unobserve(selectionStoreObserver);\n\n const resolved = (selected || [])\n .map(({ id, editable }) => ({ annotation: store.getAnnotation(id), editable }));\n\n setSelection({ selected: resolved, ...rest });\n\n selectionStoreObserver = event => {\n const { updated } = event.changes;\n\n setSelection((selection) => ({\n ...selection,\n selected: selection.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 }));\n }\n\n store.observe(selectionStoreObserver, { annotations: selected.map(({ id }) => id) });\n });\n\n return () => {\n store.unobserve(onStoreChange);\n unsubscribeSelection();\n }\n }\n }, [anno]);\n\n return (\n <AnnotoriousContext.Provider value={{ \n anno, \n setAnno,\n annotations, \n selection \n }}>\n {props.children}\n </AnnotoriousContext.Provider>\n )\n\n});\n\nexport const useAnnotator = <T extends unknown = Annotator<any, unknown>>() => {\n const { anno } = useContext(AnnotoriousContext);\n return anno as T;\n}\n\nexport const useAnnotationStore = <T extends unknown = Store<Annotation>>() => {\n const { anno } = useContext(AnnotoriousContext);\n return anno?.state.store as T | undefined;\n}\n\nconst _useAnnotations = <T extends Annotation>() => {\n const { annotations } = useContext(AnnotoriousContext);\n return annotations as T[];\n}\n\nconst _useAnnotationsDebounced = <T extends Annotation>(debounce: number) => {\n const { annotations } = useContext(AnnotoriousContext);\n return useDebounce(annotations, debounce) as T[];\n}\n\nexport const useAnnotations = <T extends Annotation>(debounce?: number) =>\n debounce ? _useAnnotationsDebounced<T>(debounce) : _useAnnotations<T>();\n\nexport const useAnnotation = <T extends Annotation>(id: string, options?: Omit<StoreObserveOptions, 'annotations'>) => {\n const store = useAnnotationStore<Store<T>>();\n\n const [annotation, setAnnotation] = useState<T | undefined>(\n store?.getAnnotation(id)\n );\n\n useEffect(() => {\n if (!store) return;\n\n const handleChange = (event: StoreChangeEvent<T>) => {\n const updated = event.changes.updated[0];\n if (updated) {\n setAnnotation(updated.newValue);\n }\n };\n\n store.observe(handleChange, { ...options, annotations: id });\n return () => store.unobserve(handleChange);\n }, []);\n\n return annotation;\n}\n\nexport const useAnnotationSelectAction = <T extends Annotation>(id: string, action: UserSelectActionExpression<T>) => {\n const annotation = useAnnotation(id);\n return annotation ? onUserSelect(annotation, action) : undefined;\n}\n\nexport const useSelection = <T extends Annotation>() => {\n const { selection } = useContext(AnnotoriousContext);\n return selection as Selection<T>;\n}\n\nexport const useAnnotatorUser = (): User => {\n const { anno } = useContext(AnnotoriousContext);\n return anno?.getUser();\n}\n\nconst _useViewportState = <T extends Annotation>() => {\n const { anno } = useContext(AnnotoriousContext);\n\n const [inViewport, setInViewport] = useState<T[]>([]);\n\n useEffect(() => {\n if (anno) {\n const { store, viewport } = anno.state;\n\n if (!viewport)\n return;\n\n // Keep viewport annotations in sync with a react state, and resolve them\n // from IDs to annotations automatically, for convenience\n let viewportStoreObserver: (event: StoreChangeEvent<T>) => void;\n\n const unsubscribeViewport = viewport.subscribe(ids => {\n if (viewportStoreObserver) \n store.unobserve(viewportStoreObserver);\n\n const resolved = ids.map(id => store.getAnnotation(id)) as T[];\n setInViewport(resolved);\n\n viewportStoreObserver = event => {\n const { updated } = event.changes;\n\n setInViewport(annotations => annotations.map(annotation => {\n const next = updated.find(u => u.oldValue.id === annotation.id);\n return next ? next.newValue : annotation;\n }));\n }\n\n store.observe(viewportStoreObserver, { annotations: ids });\n });\n\n return () => {\n unsubscribeViewport();\n }\n }\n }, [anno]);\n\n return inViewport;\n}\n\nconst _useViewportStateDebounced = <T extends Annotation>(debounce: number) => {\n const inViewport = _useViewportState();\n return useDebounce(inViewport, debounce) as T[];\n}\n\nexport const useViewportState = <T extends Annotation>(debounce?: number) =>\n debounce ? _useViewportStateDebounced<T>(debounce) : _useViewportState<T>();\n"],"names":["AnnotoriousContext","createContext","Annotorious","forwardRef","props","ref","anno","setAnno","useState","annotations","setAnnotations","selection","setSelection","useImperativeHandle","useEffect","store","onStoreChange","selectionStoreObserver","unsubscribeSelection","selected","rest","resolved","id","editable","event","updated","annotation","next","u","jsx","useAnnotator","useContext","useAnnotationStore","_useAnnotations","_useAnnotationsDebounced","debounce","useDebounce","useAnnotations","useAnnotation","options","setAnnotation","handleChange","useAnnotationSelectAction","action","onUserSelect","useSelection","useAnnotatorUser","_useViewportState","inViewport","setInViewport","viewport","viewportStoreObserver","unsubscribeViewport","ids","_useViewportStateDebounced","useViewportState"],"mappings":";;;;AAmCO,MAAMA,IAAqBC,EAAc;AAAA,EAE9C,MAAM;AAAA,EAEN,SAAS;AAAA,EAET,aAAa,CAAC;AAAA,EAEd,WAAW,EAAE,UAAU,GAAG;AAE5B,CAAC,GAEYC,IAAcC,EAA+C,CAACC,GAAgCC,MAAQ;AAEjH,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAoB,IAAI,GAE1C,CAACC,GAAaC,CAAc,IAAIF,EAAuB,CAAE,CAAA,GAEzD,CAACG,GAAWC,CAAY,IAAIJ,EAAoB,EAAE,UAAU,CAAC,EAAA,CAAG;AAElD,SAAAK,EAAAR,GAAK,MAAMC,CAAI,GAEnCQ,EAAU,MAAM;AACd,QAAIR,GAAM;AACR,YAAM,EAAE,WAAAK,GAAW,OAAAI,EAAA,IAAUT,EAAK;AAI9B,MAAAS,EAAM,MAAM,SAAS,KACRL,EAAAK,EAAM,KAAK;AAI5B,YAAMC,IAAgB,MAAMN,EAAe,MAAMK,EAAM,IAAK,CAAA;AAE5D,MAAAA,EAAM,QAAQC,CAAa;AAIvB,UAAAC;AAEE,YAAAC,IAAuBP,EAAU,UAAU,CAAC,EAAE,UAAAQ,GAAU,GAAGC,QAAW;AACtE,QAAAH,KACFF,EAAM,UAAUE,CAAsB;AAExC,cAAMI,KAAYF,KAAY,CAC3B,GAAA,IAAI,CAAC,EAAE,IAAAG,GAAI,UAAAC,EAAS,OAAO,EAAE,YAAYR,EAAM,cAAcO,CAAE,GAAG,UAAAC,EAAW,EAAA;AAEhF,QAAAX,EAAa,EAAE,UAAUS,GAAU,GAAGD,EAAM,CAAA,GAE5CH,IAAyB,CAASO,MAAA;AAC1B,gBAAA,EAAE,SAAAC,EAAQ,IAAID,EAAM;AAE1B,UAAAZ,EAAa,CAACD,OAAe;AAAA,YAC3B,GAAGA;AAAAA,YACH,UAAUA,EAAU,SAAS,IAAI,CAAC,EAAE,YAAAe,GAAY,UAAAH,QAAe;AACvD,oBAAAI,IAAOF,EAAQ,KAAK,CAAAG,MAAKA,EAAE,SAAS,OAAOF,EAAW,EAAE;AACvD,qBAAAC,IAAO,EAAE,YAAYA,EAAK,UAAU,UAAAJ,MAAa,EAAE,YAAAG,GAAY,UAAAH;YAAS,CAChF;AAAA,UACD,EAAA;AAAA,QAAA,GAGJR,EAAM,QAAQE,GAAwB,EAAE,aAAaE,EAAS,IAAI,CAAC,EAAE,IAAAG,EAAG,MAAMA,CAAE,EAAG,CAAA;AAAA,MAAA,CACpF;AAED,aAAO,MAAM;AACX,QAAAP,EAAM,UAAUC,CAAa,GACRE;MAAA;AAAA,IAEzB;AAAA,EAAA,GACC,CAACZ,CAAI,CAAC,GAGNuB,gBAAAA,MAAA7B,EAAmB,UAAnB,EAA4B,OAAO;AAAA,IAClC,MAAAM;AAAA,IACA,SAAAC;AAAA,IACA,aAAAE;AAAA,IACA,WAAAE;AAAA,EACF,GACI,YAAM,SACV,CAAA;AAGJ,CAAC,GAEYmB,IAAe,MAAmD;AAC7E,QAAM,EAAE,MAAAxB,EAAA,IAASyB,EAAW/B,CAAkB;AACvC,SAAAM;AACT,GAEa0B,IAAqB,MAA6C;AAC7E,QAAM,EAAE,MAAA1B,EAAA,IAASyB,EAAW/B,CAAkB;AAC9C,SAAOM,KAAA,gBAAAA,EAAM,MAAM;AACrB,GAEM2B,IAAkB,MAA4B;AAClD,QAAM,EAAE,aAAAxB,EAAA,IAAgBsB,EAAW/B,CAAkB;AAC9C,SAAAS;AACT,GAEMyB,IAA2B,CAAuBC,MAAqB;AAC3E,QAAM,EAAE,aAAA1B,EAAA,IAAgBsB,EAAW/B,CAAkB;AAC9C,SAAAoC,EAAY3B,GAAa0B,CAAQ;AAC1C,GAEaE,IAAiB,CAAuBF,MACnDA,IAAWD,EAA4BC,CAAQ,IAAIF,EAAmB,GAE3DK,IAAgB,CAAuBhB,GAAYiB,MAAuD;AACrH,QAAMxB,IAAQiB,KAER,CAACN,GAAYc,CAAa,IAAIhC;AAAA,IAClCO,KAAA,gBAAAA,EAAO,cAAcO;AAAA,EAAE;AAGzB,SAAAR,EAAU,MAAM;AACd,QAAI,CAACC,EAAO;AAEN,UAAA0B,IAAe,CAACjB,MAA+B;AACnD,YAAMC,IAAUD,EAAM,QAAQ,QAAQ,CAAC;AACvC,MAAIC,KACFe,EAAcf,EAAQ,QAAQ;AAAA,IAChC;AAGF,WAAAV,EAAM,QAAQ0B,GAAc,EAAE,GAAGF,GAAS,aAAajB,GAAI,GACpD,MAAMP,EAAM,UAAU0B,CAAY;AAAA,EAC3C,GAAG,CAAE,CAAA,GAEEf;AACT,GAEagB,IAA4B,CAAuBpB,GAAYqB,MAA0C;AAC9G,QAAAjB,IAAaY,EAAchB,CAAE;AACnC,SAAOI,IAAakB,EAAalB,GAAYiB,CAAM,IAAI;AACzD,GAEaE,IAAe,MAA4B;AACtD,QAAM,EAAE,WAAAlC,EAAA,IAAcoB,EAAW/B,CAAkB;AAC5C,SAAAW;AACT,GAEamC,IAAmB,MAAY;AAC1C,QAAM,EAAE,MAAAxC,EAAA,IAASyB,EAAW/B,CAAkB;AAC9C,SAAOM,KAAA,gBAAAA,EAAM;AACf,GAEMyC,IAAoB,MAA4B;AACpD,QAAM,EAAE,MAAAzC,EAAA,IAASyB,EAAW/B,CAAkB,GAExC,CAACgD,GAAYC,CAAa,IAAIzC,EAAc,CAAE,CAAA;AAEpD,SAAAM,EAAU,MAAM;AACd,QAAIR,GAAM;AACR,YAAM,EAAE,OAAAS,GAAO,UAAAmC,MAAa5C,EAAK;AAEjC,UAAI,CAAC4C;AACH;AAIE,UAAAC;AAEE,YAAAC,IAAsBF,EAAS,UAAU,CAAOG,MAAA;AAChD,QAAAF,KACFpC,EAAM,UAAUoC,CAAqB;AAEvC,cAAM9B,IAAWgC,EAAI,IAAI,OAAMtC,EAAM,cAAcO,CAAE,CAAC;AACtD,QAAA2B,EAAc5B,CAAQ,GAEtB8B,IAAwB,CAAS3B,MAAA;AACzB,gBAAA,EAAE,SAAAC,EAAQ,IAAID,EAAM;AAEZ,UAAAyB,EAAA,CAAAxC,MAAeA,EAAY,IAAI,CAAciB,MAAA;AACnD,kBAAAC,IAAOF,EAAQ,KAAK,CAAAG,MAAKA,EAAE,SAAS,OAAOF,EAAW,EAAE;AACvD,mBAAAC,IAAOA,EAAK,WAAWD;AAAA,UAC/B,CAAA,CAAC;AAAA,QAAA,GAGJX,EAAM,QAAQoC,GAAuB,EAAE,aAAaE,EAAK,CAAA;AAAA,MAAA,CAC1D;AAED,aAAO,MAAM;AACS,QAAAD;MAAA;AAAA,IAExB;AAAA,EAAA,GACC,CAAC9C,CAAI,CAAC,GAEF0C;AACT,GAEMM,IAA8B,CAAuBnB,MAAqB;AAC9E,QAAMa,IAAaD;AACZ,SAAAX,EAAYY,GAAYb,CAAQ;AACzC,GAEaoB,IAAoB,CAAuBpB,MACtDA,IAAWmB,EAA8BnB,CAAQ,IAAIY,EAAqB;"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { useEffect as i } from "react";
|
|
2
2
|
import { useAnnotator as s } from "./annotorious-react.es2.js";
|
|
3
3
|
const m = (t) => {
|
|
4
|
-
const { plugin:
|
|
4
|
+
const { plugin: r, opts: u } = t, n = s();
|
|
5
5
|
return i(() => {
|
|
6
|
-
if (n)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
6
|
+
if (!n) return;
|
|
7
|
+
const o = r(n, u);
|
|
8
|
+
return () => {
|
|
9
|
+
o && "unmount" in o && o.unmount();
|
|
10
|
+
};
|
|
12
11
|
}, [n]), null;
|
|
13
12
|
};
|
|
14
13
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es3.js","sources":["../src/AnnotoriousPlugin.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"annotorious-react.es3.js","sources":["../src/AnnotoriousPlugin.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { Annotator } from '@annotorious/annotorious';\nimport { useAnnotator } from './Annotorious';\n\nexport type AnnotatorPlugin<T extends unknown = Annotator<any, unknown>> =\n (anno: T, opts?: Object) => ({ unmount?: () => void }) | void;\n\nexport interface AnnotoriousPluginProps<T extends unknown = Annotator<any, unknown>> {\n\n plugin: AnnotatorPlugin<T>;\n\n opts?: Object;\n\n}\n\nexport const AnnotoriousPlugin = <T extends unknown = Annotator<any, unknown>>(props: AnnotoriousPluginProps<T>) => {\n const { plugin, opts } = props;\n\n const anno = useAnnotator<T>();\n\n useEffect(() => {\n if (!anno) return;\n\n const p = plugin(anno, opts);\n return () => {\n if (p && 'unmount' in p)\n p.unmount();\n };\n }, [anno]);\n\n return null;\n\n};\n"],"names":["AnnotoriousPlugin","props","plugin","opts","anno","useAnnotator","useEffect","p"],"mappings":";;AAea,MAAAA,IAAoB,CAA8CC,MAAqC;AAC5G,QAAA,EAAE,QAAAC,GAAQ,MAAAC,EAAS,IAAAF,GAEnBG,IAAOC;AAEb,SAAAC,EAAU,MAAM;AACd,QAAI,CAACF,EAAM;AAEL,UAAAG,IAAIL,EAAOE,GAAMD,CAAI;AAC3B,WAAO,MAAM;AACX,MAAII,KAAK,aAAaA,KACpBA,EAAE,QAAQ;AAAA,IAAA;AAAA,EACd,GACC,CAACH,CAAI,CAAC,GAEF;AAET;"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { j as e } from "./annotorious-react.es11.js";
|
|
2
2
|
import { forwardRef as g } from "react";
|
|
3
|
-
import { useDraggable as i } from "./annotorious-react.
|
|
4
|
-
const
|
|
5
|
-
const { children:
|
|
6
|
-
return i(o, { onDragStart:
|
|
3
|
+
import { useDraggable as i } from "./annotorious-react.es13.js";
|
|
4
|
+
const p = g((r, o) => {
|
|
5
|
+
const { children: t, className: a, onDragStart: s, onDragEnd: n } = r;
|
|
6
|
+
return i(o, { onDragStart: s, onDragEnd: n, cancel: "button, .no-drag" }), /* @__PURE__ */ e.jsx(
|
|
7
7
|
"div",
|
|
8
8
|
{
|
|
9
9
|
ref: o,
|
|
10
|
-
className:
|
|
10
|
+
className: a,
|
|
11
11
|
style: { position: "absolute" },
|
|
12
|
-
children:
|
|
12
|
+
children: t
|
|
13
13
|
}
|
|
14
14
|
);
|
|
15
15
|
});
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
p as Draggable
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=annotorious-react.es4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es4.js","sources":["../src/AnnotoriousPopup.tsx"],"sourcesContent":["import { forwardRef, ReactNode } from 'react';\nimport { ImageAnnotation } from '@annotorious/annotorious';\nimport { useDraggable } from '@neodrag/react';\n\nexport interface AnnotoriousPopupProps {\n\n selected: { annotation: ImageAnnotation, editable?: boolean }[];\n\n}\n\nexport interface DraggableProps {\n\n children: ReactNode;\n\n className?: string;\n\n onDragStart?(): void;\n\n onDragEnd?(): void;\n\n}\n\nexport const Draggable = forwardRef((props: DraggableProps, ref: React.MutableRefObject<HTMLDivElement>) => {\n\n const { children, className, onDragStart, onDragEnd } = props;\n\n useDraggable(ref, { onDragStart, onDragEnd, cancel: 'button, .no-drag' });\n\n return (\n <div \n ref={ref} \n className={className} \n style={{ position: 'absolute' }}>\n {children}\n </div>\n )\n\n});"],"names":["Draggable","forwardRef","props","ref","children","className","onDragStart","onDragEnd","useDraggable","jsx"],"mappings":";;;AAsBO,MAAMA,IAAYC,EAAW,CAACC,GAAuBC,MAAiD;AAE3G,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,aAAAC,GAAa,WAAAC,MAAcL;AAExDM,SAAAA,EAAaL,GAAK,EAAE,aAAAG,GAAa,WAAAC,GAAW,QAAQ,oBAAoB,
|
|
1
|
+
{"version":3,"file":"annotorious-react.es4.js","sources":["../src/AnnotoriousPopup.tsx"],"sourcesContent":["import { forwardRef, ReactNode } from 'react';\nimport { ImageAnnotation } from '@annotorious/annotorious';\nimport { useDraggable } from '@neodrag/react';\n\nexport interface AnnotoriousPopupProps {\n\n selected: { annotation: ImageAnnotation, editable?: boolean }[];\n\n}\n\nexport interface DraggableProps {\n\n children: ReactNode;\n\n className?: string;\n\n onDragStart?(): void;\n\n onDragEnd?(): void;\n\n}\n\nexport const Draggable = forwardRef((props: DraggableProps, ref: React.MutableRefObject<HTMLDivElement>) => {\n\n const { children, className, onDragStart, onDragEnd } = props;\n\n useDraggable(ref, { onDragStart, onDragEnd, cancel: 'button, .no-drag' });\n\n return (\n <div \n ref={ref} \n className={className} \n style={{ position: 'absolute' }}>\n {children}\n </div>\n )\n\n});"],"names":["Draggable","forwardRef","props","ref","children","className","onDragStart","onDragEnd","useDraggable","jsx"],"mappings":";;;AAsBO,MAAMA,IAAYC,EAAW,CAACC,GAAuBC,MAAiD;AAE3G,QAAM,EAAE,UAAAC,GAAU,WAAAC,GAAW,aAAAC,GAAa,WAAAC,MAAcL;AAExDM,SAAAA,EAAaL,GAAK,EAAE,aAAAG,GAAa,WAAAC,GAAW,QAAQ,oBAAoB,GAGtEE,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,WAAAE;AAAA,MACA,OAAO,EAAE,UAAU,WAAW;AAAA,MAC7B,UAAAD;AAAA,IAAA;AAAA,EAAA;AAIP,CAAC;"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Children as
|
|
3
|
-
import { createImageAnnotator as
|
|
4
|
-
import { AnnotoriousContext as
|
|
5
|
-
const
|
|
6
|
-
const { children:
|
|
7
|
-
if (!
|
|
8
|
-
const f = m.target,
|
|
9
|
-
r(
|
|
1
|
+
import { j as n } from "./annotorious-react.es11.js";
|
|
2
|
+
import { Children as u, useContext as x, useEffect as o, cloneElement as A } from "react";
|
|
3
|
+
import { createImageAnnotator as g } from "@annotorious/annotorious";
|
|
4
|
+
import { AnnotoriousContext as d } from "./annotorious-react.es2.js";
|
|
5
|
+
const E = (t) => {
|
|
6
|
+
const { children: i, tool: h, ...l } = t, c = u.only(i), { anno: e, setAnno: r } = x(d), s = (m) => {
|
|
7
|
+
if (!e) {
|
|
8
|
+
const f = m.target, a = g(f, l);
|
|
9
|
+
r(a);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
|
-
return
|
|
13
|
-
t.tool &&
|
|
14
|
-
}, [t.tool,
|
|
15
|
-
|
|
16
|
-
}, [t.filter]),
|
|
17
|
-
|
|
18
|
-
}, [t.style]),
|
|
12
|
+
return o(() => {
|
|
13
|
+
t.tool && e && e.setDrawingTool(t.tool);
|
|
14
|
+
}, [t.tool, e]), o(() => {
|
|
15
|
+
e && e.setFilter(t.filter);
|
|
16
|
+
}, [t.filter]), o(() => {
|
|
17
|
+
e && e.setStyle(t.style);
|
|
18
|
+
}, [t.style]), o(() => {
|
|
19
|
+
e && e.setUserSelectAction(t.userSelectAction);
|
|
20
|
+
}, [t.userSelectAction]), /* @__PURE__ */ n.jsx(n.Fragment, { children: A(c, { onLoad: s }) });
|
|
19
21
|
};
|
|
20
22
|
export {
|
|
21
|
-
|
|
23
|
+
E as ImageAnnotator
|
|
22
24
|
};
|
|
23
25
|
//# sourceMappingURL=annotorious-react.es5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es5.js","sources":["../src/ImageAnnotator.tsx"],"sourcesContent":["import { Children, ReactElement, cloneElement, useContext, useEffect } from 'react';\nimport { AnnotoriousOpts, createImageAnnotator } from '@annotorious/annotorious';\nimport type { DrawingStyle, DrawingTool, Filter, ImageAnnotation } from '@annotorious/annotorious';\nimport { AnnotoriousContext } from './Annotorious';\n\nexport interface ImageAnnotatorProps<E extends unknown> extends AnnotoriousOpts<ImageAnnotation, E> {\n\n children: ReactElement<HTMLImageElement>;\n\n filter?: Filter<ImageAnnotation>;\n\n style?: DrawingStyle | ((annotation: ImageAnnotation) => DrawingStyle);\n\n tool?: DrawingTool
|
|
1
|
+
{"version":3,"file":"annotorious-react.es5.js","sources":["../src/ImageAnnotator.tsx"],"sourcesContent":["import { Children, ReactElement, cloneElement, useContext, useEffect } from 'react';\nimport { AnnotoriousOpts, createImageAnnotator } from '@annotorious/annotorious';\nimport type { DrawingStyle, DrawingTool, Filter, ImageAnnotation } from '@annotorious/annotorious';\nimport { AnnotoriousContext } from './Annotorious';\n\nexport interface ImageAnnotatorProps<E extends unknown> extends AnnotoriousOpts<ImageAnnotation, E> {\n\n children: ReactElement<HTMLImageElement>;\n\n filter?: Filter<ImageAnnotation>;\n\n style?: DrawingStyle | ((annotation: ImageAnnotation) => DrawingStyle);\n\n tool?: DrawingTool;\n\n}\n\nexport const ImageAnnotator = <E extends unknown>(props: ImageAnnotatorProps<E>) => {\n\n const { children, tool, ...opts } = props;\n\n const child = Children.only(children);\n\n const { anno, setAnno } = useContext(AnnotoriousContext);\n\n const onLoad = (evt: Event) => {\n if (!anno) {\n const img = evt.target as HTMLImageElement;\n\n const next = createImageAnnotator(img, opts);\n setAnno(next); \n }\n };\n\n useEffect(() => {\n if (props.tool && anno) anno.setDrawingTool(props.tool);\n }, [props.tool, anno]);\n\n useEffect(() => {\n if (anno) anno.setFilter(props.filter);\n }, [props.filter]);\n\n useEffect(() => {\n if (anno) anno.setStyle(props.style);\n }, [props.style]);\n\n useEffect(() => {\n if (anno) anno.setUserSelectAction(props.userSelectAction);\n }, [props.userSelectAction]);\n \n return <>{cloneElement(child, { onLoad } as Partial<HTMLImageElement>)}</>\n\n}\n"],"names":["ImageAnnotator","props","children","tool","opts","child","Children","anno","setAnno","useContext","AnnotoriousContext","onLoad","evt","img","next","createImageAnnotator","useEffect","cloneElement"],"mappings":";;;;AAiBa,MAAAA,IAAiB,CAAoBC,MAAkC;AAElF,QAAM,EAAE,UAAAC,GAAU,MAAAC,GAAM,GAAGC,MAASH,GAE9BI,IAAQC,EAAS,KAAKJ,CAAQ,GAE9B,EAAE,MAAAK,GAAM,SAAAC,EAAQ,IAAIC,EAAWC,CAAkB,GAEjDC,IAAS,CAACC,MAAe;AAC7B,QAAI,CAACL,GAAM;AACT,YAAMM,IAAMD,EAAI,QAEVE,IAAOC,EAAqBF,GAAKT,CAAI;AAC3C,MAAAI,EAAQM,CAAI;AAAA,IACd;AAAA,EAAA;AAGF,SAAAE,EAAU,MAAM;AACd,IAAIf,EAAM,QAAQM,KAAWA,EAAA,eAAeN,EAAM,IAAI;AAAA,EACrD,GAAA,CAACA,EAAM,MAAMM,CAAI,CAAC,GAErBS,EAAU,MAAM;AACd,IAAIT,KAAMA,EAAK,UAAUN,EAAM,MAAM;AAAA,EAAA,GACpC,CAACA,EAAM,MAAM,CAAC,GAEjBe,EAAU,MAAM;AACd,IAAIT,KAAMA,EAAK,SAASN,EAAM,KAAK;AAAA,EAAA,GAClC,CAACA,EAAM,KAAK,CAAC,GAEhBe,EAAU,MAAM;AACd,IAAIT,KAAMA,EAAK,oBAAoBN,EAAM,gBAAgB;AAAA,EAAA,GACxD,CAACA,EAAM,gBAAgB,CAAC,uCAEjB,UAAagB,EAAAZ,GAAO,EAAE,QAAAM,GAAsC,EAAE,CAAA;AAE1E;"}
|
|
@@ -1,52 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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;
|
|
17
|
-
} else {
|
|
18
|
-
const n = i ? i.parse(o).parsed : o;
|
|
19
|
-
return t.deleteAnnotation(n), o;
|
|
1
|
+
import { j as c } from "./annotorious-react.es11.js";
|
|
2
|
+
import { createContext as w, useState as u, useContext as a, useEffect as i } from "react";
|
|
3
|
+
import { createOSDAnnotator as g } from "@annotorious/openseadragon";
|
|
4
|
+
import { AnnotoriousContext as m } from "./annotorious-react.es2.js";
|
|
5
|
+
const d = w({ viewer: null, setViewer: null }), S = (e) => {
|
|
6
|
+
const { children: x, tool: r, ...f } = e, [o, s] = u(), { anno: t, setAnno: l } = a(m);
|
|
7
|
+
return i(() => {
|
|
8
|
+
if (o) {
|
|
9
|
+
const n = g(o, f);
|
|
10
|
+
return e.drawingEnabled !== void 0 && n.setDrawingEnabled(e.drawingEnabled), e.filter && n.setFilter(e.filter), e.style && n.setStyle(e.style), e.tool && n.setDrawingTool(e.tool), l(n), () => {
|
|
11
|
+
n.destroy(), l(void 0);
|
|
12
|
+
};
|
|
20
13
|
}
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return t.updateAnnotation(o), n;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
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
|
|
47
|
-
};
|
|
14
|
+
}, [o]), i(() => {
|
|
15
|
+
t && t.setDrawingEnabled(e.drawingEnabled);
|
|
16
|
+
}, [e.drawingEnabled]), i(() => {
|
|
17
|
+
t && t.setFilter(e.filter);
|
|
18
|
+
}, [e.filter]), i(() => {
|
|
19
|
+
t && t.setStyle(e.style);
|
|
20
|
+
}, [e.style]), i(() => {
|
|
21
|
+
t && t.setDrawingTool(r);
|
|
22
|
+
}, [r]), /* @__PURE__ */ c.jsx(d.Provider, { value: { viewer: o, setViewer: s }, children: e.children });
|
|
23
|
+
}, A = () => {
|
|
24
|
+
const { viewer: e } = a(d);
|
|
25
|
+
return e;
|
|
48
26
|
};
|
|
49
27
|
export {
|
|
50
|
-
|
|
28
|
+
S as OpenSeadragonAnnotator,
|
|
29
|
+
d as OpenSeadragonAnnotatorContext,
|
|
30
|
+
A as useViewer
|
|
51
31
|
};
|
|
52
32
|
//# sourceMappingURL=annotorious-react.es8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es8.js","sources":["
|
|
1
|
+
{"version":3,"file":"annotorious-react.es8.js","sources":["../src/openseadragon/OpenSeadragonAnnotator.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext, useEffect, useState } from 'react';\nimport OpenSeadragon from 'openseadragon';\nimport { createOSDAnnotator } from '@annotorious/openseadragon';\nimport { AnnotoriousOpts, DrawingStyle, Filter, ImageAnnotation } from '@annotorious/annotorious';\nimport { AnnotoriousContext } from '../Annotorious';\n\nexport const OpenSeadragonAnnotatorContext = createContext<{ \n viewer: OpenSeadragon.Viewer,\n setViewer(viewer: OpenSeadragon.Viewer): void\n}>({ viewer: null, setViewer: null });\n\nexport type OpenSeadragonAnnotatorProps<E extends unknown> = AnnotoriousOpts<ImageAnnotation, E> & {\n\n children?: ReactNode;\n\n drawingEnabled?: boolean;\n\n filter?: Filter<ImageAnnotation>;\n\n style?: DrawingStyle | ((annotation: ImageAnnotation) => DrawingStyle);\n\n tool?: string | null;\n\n}\n\nexport const OpenSeadragonAnnotator = <E extends unknown>(props: OpenSeadragonAnnotatorProps<E>) => {\n\n const { children, tool, ...opts } = props;\n\n const [viewer, setViewer] = useState<OpenSeadragon.Viewer>();\n\n const { anno, setAnno } = useContext(AnnotoriousContext);\n\n useEffect(() => {\n if (viewer) {\n const anno = createOSDAnnotator<E>(viewer, opts);\n\n if (props.drawingEnabled !== undefined) anno.setDrawingEnabled(props.drawingEnabled);\n if (props.filter) anno.setFilter(props.filter);\n if (props.style) anno.setStyle(props.style);\n if (props.tool) anno.setDrawingTool(props.tool);\n\n setAnno(anno);\n\n return () => {\n anno.destroy();\n setAnno(undefined);\n }\n }\n }, [viewer]);\n\n useEffect(() => {\n if (anno) anno.setDrawingEnabled(props.drawingEnabled);\n }, [props.drawingEnabled]);\n\n useEffect(() => {\n if (anno) anno.setFilter(props.filter);\n }, [props.filter]);\n\n useEffect(() => {\n if (anno) anno.setStyle(props.style);\n }, [props.style]);\n\n useEffect(() => {\n if (anno) anno.setDrawingTool(tool);\n }, [tool]);\n\n return (\n <OpenSeadragonAnnotatorContext.Provider value={{ viewer, setViewer }}>\n {props.children}\n </OpenSeadragonAnnotatorContext.Provider>\n )\n\n}\n\nexport const useViewer = () => {\n const { viewer } = useContext(OpenSeadragonAnnotatorContext);\n return viewer;\n}"],"names":["OpenSeadragonAnnotatorContext","createContext","OpenSeadragonAnnotator","props","children","tool","opts","viewer","setViewer","useState","anno","setAnno","useContext","AnnotoriousContext","useEffect","createOSDAnnotator","jsx","useViewer"],"mappings":";;;;AAMO,MAAMA,IAAgCC,EAG1C,EAAE,QAAQ,MAAM,WAAW,MAAM,GAgBvBC,IAAyB,CAAoBC,MAA0C;AAElG,QAAM,EAAE,UAAAC,GAAU,MAAAC,GAAM,GAAGC,MAASH,GAE9B,CAACI,GAAQC,CAAS,IAAIC,EAA+B,GAErD,EAAE,MAAAC,GAAM,SAAAC,EAAQ,IAAIC,EAAWC,CAAkB;AAEvD,SAAAC,EAAU,MAAM;AACd,QAAIP,GAAQ;AACJG,YAAAA,IAAOK,EAAsBR,GAAQD,CAAI;AAE/C,aAAIH,EAAM,mBAAmB,UAAWO,EAAK,kBAAkBP,EAAM,cAAc,GAC/EA,EAAM,UAAQO,EAAK,UAAUP,EAAM,MAAM,GACzCA,EAAM,SAAOO,EAAK,SAASP,EAAM,KAAK,GACtCA,EAAM,QAAMO,EAAK,eAAeP,EAAM,IAAI,GAE9CQ,EAAQD,CAAI,GAEL,MAAM;AACXA,QAAAA,EAAK,QAAQ,GACbC,EAAQ,MAAS;AAAA,MAAA;AAAA,IAErB;AAAA,EAAA,GACC,CAACJ,CAAM,CAAC,GAEXO,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,kBAAkBP,EAAM,cAAc;AAAA,EAAA,GACpD,CAACA,EAAM,cAAc,CAAC,GAEzBW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,UAAUP,EAAM,MAAM;AAAA,EAAA,GACpC,CAACA,EAAM,MAAM,CAAC,GAEjBW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,SAASP,EAAM,KAAK;AAAA,EAAA,GAClC,CAACA,EAAM,KAAK,CAAC,GAEhBW,EAAU,MAAM;AACV,IAAAJ,KAAWA,EAAA,eAAeL,CAAI;AAAA,EAAA,GACjC,CAACA,CAAI,CAAC,GAGPW,gBAAAA,MAAChB,EAA8B,UAA9B,EAAuC,OAAO,EAAE,QAAAO,GAAQ,WAAAC,EACtD,GAAA,UAAAL,EAAM,SACT,CAAA;AAGJ,GAEac,IAAY,MAAM;AAC7B,QAAM,EAAE,QAAAV,EAAA,IAAWK,EAAWZ,CAA6B;AACpD,SAAAO;AACT;"}
|
|
@@ -1,15 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { j as v } from "./annotorious-react.es11.js";
|
|
2
|
+
import { useRef as w, useState as d, useEffect as u } from "react";
|
|
3
|
+
import { Draggable as x } from "./annotorious-react.es4.js";
|
|
4
|
+
import { useViewer as S } from "./annotorious-react.es8.js";
|
|
5
|
+
import { useSelection as j } from "./annotorious-react.es2.js";
|
|
6
|
+
import { setPosition as D } from "./annotorious-react.es14.js";
|
|
7
|
+
const R = (c) => {
|
|
8
|
+
const n = w(null), o = S(), { selected: t } = j(), [l, m] = d([]), [s, i] = d(!1), f = () => i(!0), p = () => {
|
|
9
|
+
const e = t[0].annotation;
|
|
10
|
+
D(o, e, n.current);
|
|
11
|
+
}, g = (e, r) => e.every((a) => r.includes(a)) && r.every((a) => e.includes(a));
|
|
12
|
+
return u(() => {
|
|
13
|
+
const e = t.map(({ annotation: r }) => r.id);
|
|
14
|
+
g(l, e) || (i(!1), m(e));
|
|
15
|
+
}, [t]), u(() => {
|
|
16
|
+
if (!n.current) return;
|
|
17
|
+
s || p();
|
|
18
|
+
const e = () => {
|
|
19
|
+
s || p();
|
|
20
|
+
};
|
|
21
|
+
return o.addHandler("update-viewport", e), () => {
|
|
22
|
+
o.removeHandler("update-viewport", e);
|
|
23
|
+
};
|
|
24
|
+
}, [t, s]), t.length > 0 ? /* @__PURE__ */ v.jsx(
|
|
25
|
+
x,
|
|
26
|
+
{
|
|
27
|
+
ref: n,
|
|
28
|
+
className: "a9s-popup a9s-osd-popup",
|
|
29
|
+
onDragStart: f,
|
|
30
|
+
children: c.popup({ viewer: o, selected: t })
|
|
31
|
+
},
|
|
32
|
+
t.map(({ annotation: e }) => e.id).join("-")
|
|
33
|
+
) : null;
|
|
34
|
+
};
|
|
11
35
|
export {
|
|
12
|
-
|
|
13
|
-
i as serializeAll
|
|
36
|
+
R as OpenSeadragonPopup
|
|
14
37
|
};
|
|
15
38
|
//# sourceMappingURL=annotorious-react.es9.js.map
|