@annotorious/react 3.0.0-rc.8 → 3.0.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.
- package/dist/Annotorious.d.ts +11 -40
- package/dist/Annotorious.d.ts.map +1 -1
- package/dist/AnnotoriousPlugin.d.ts +9 -6
- package/dist/AnnotoriousPlugin.d.ts.map +1 -1
- package/dist/AnnotoriousPopup.d.ts +2 -2
- package/dist/AnnotoriousPopup.d.ts.map +1 -1
- package/dist/ImageAnnotator.d.ts +1 -2
- package/dist/ImageAnnotator.d.ts.map +1 -1
- package/dist/annotorious-react.css +1 -1
- package/dist/annotorious-react.es.js +35 -32
- package/dist/annotorious-react.es.js.map +1 -1
- package/dist/annotorious-react.es10.js +14 -27
- package/dist/annotorious-react.es10.js.map +1 -1
- package/dist/annotorious-react.es11.js +6 -36
- package/dist/annotorious-react.es11.js.map +1 -1
- package/dist/annotorious-react.es12.js +8 -16
- package/dist/annotorious-react.es12.js.map +1 -1
- package/dist/annotorious-react.es13.js +134 -4
- package/dist/annotorious-react.es13.js.map +1 -1
- package/dist/annotorious-react.es14.js +31 -7
- package/dist/annotorious-react.es14.js.map +1 -1
- package/dist/annotorious-react.es15.js +2 -153
- package/dist/annotorious-react.es15.js.map +1 -1
- package/dist/annotorious-react.es16.js +26 -6
- package/dist/annotorious-react.es16.js.map +1 -1
- package/dist/annotorious-react.es17.js +550 -20652
- package/dist/annotorious-react.es17.js.map +1 -1
- package/dist/annotorious-react.es18.js +2 -32
- package/dist/annotorious-react.es18.js.map +1 -1
- package/dist/annotorious-react.es19.js +2 -2
- package/dist/annotorious-react.es2.js +87 -68
- package/dist/annotorious-react.es2.js.map +1 -1
- package/dist/annotorious-react.es3.js +12 -13
- 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 -20
- package/dist/annotorious-react.es5.js.map +1 -1
- package/dist/annotorious-react.es8.js +27 -80
- package/dist/annotorious-react.es8.js.map +1 -1
- package/dist/annotorious-react.es9.js +32 -3921
- package/dist/annotorious-react.es9.js.map +1 -1
- package/dist/index.d.ts +8 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts +3 -3
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts.map +1 -1
- package/dist/openseadragon/OpenSeadragonPopup.d.ts +1 -1
- package/dist/openseadragon/OpenSeadragonViewer.d.ts +2 -3
- package/dist/openseadragon/OpenSeadragonViewer.d.ts.map +1 -1
- package/dist/openseadragon/setPosition.d.ts +1 -1
- package/dist/openseadragon/setPosition.d.ts.map +1 -1
- package/package.json +14 -11
- package/dist/annotorious-react.es20.js +0 -33
- package/dist/annotorious-react.es20.js.map +0 -1
- package/dist/annotorious-react.es21.js +0 -602
- package/dist/annotorious-react.es21.js.map +0 -1
- package/dist/annotorious-react.es22.js +0 -5
- package/dist/annotorious-react.es22.js.map +0 -1
- package/dist/annotorious-react.es23.js +0 -5
- package/dist/annotorious-react.es23.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,35 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const L = (i, h) => {
|
|
3
|
-
const e = i.element.getBoundingClientRect(), { minX: n, minY: l, maxX: t, maxY: c } = h.target.selector.geometry.bounds, s = i.viewport.imageToViewerElementCoordinates(new w.Point(n, l)), x = i.viewport.imageToViewerElementCoordinates(new w.Point(t, c));
|
|
4
|
-
return {
|
|
5
|
-
x: s.x + e.x,
|
|
6
|
-
right: x.x + e.x,
|
|
7
|
-
y: s.y + e.y,
|
|
8
|
-
bottom: x.y + e.y,
|
|
9
|
-
width: x.x - s.x,
|
|
10
|
-
height: x.y - s.y
|
|
11
|
-
};
|
|
12
|
-
}, T = (i, h, e, n = 5) => {
|
|
13
|
-
const l = i.element.getBoundingClientRect(), t = L(i, h), c = t.y - l.y, s = l.right - t.x, x = l.bottom - t.bottom, d = t.x - l.left, o = e.firstElementChild.getBoundingClientRect(), g = c / o.height, y = s / o.width, a = x / o.height, r = d / o.width, $ = () => {
|
|
14
|
-
e.style.left = `${t.x}px`, e.style.top = `${t.y - n - o.height}px`;
|
|
15
|
-
}, f = () => {
|
|
16
|
-
e.style.left = `${t.right - o.width}px`, e.style.top = `${t.y - n - o.height}px`;
|
|
17
|
-
}, B = () => {
|
|
18
|
-
e.style.left = `${t.x - o.width - n}px`, e.style.top = `${t.y}px`;
|
|
19
|
-
}, v = () => {
|
|
20
|
-
e.style.left = `${t.right + n}px`, e.style.top = `${t.y}px`;
|
|
21
|
-
}, R = () => {
|
|
22
|
-
e.style.left = `${t.x - o.width - n}px`, e.style.top = `${t.bottom - o.height}px`;
|
|
23
|
-
}, C = () => {
|
|
24
|
-
e.style.left = `${t.x + t.width + n}px`, e.style.top = `${t.bottom - o.height}px`;
|
|
25
|
-
}, E = () => {
|
|
26
|
-
e.style.left = `${t.x}px`, e.style.top = `${t.bottom + n}px`;
|
|
27
|
-
}, A = () => {
|
|
28
|
-
e.style.left = `${t.right - o.width}px`, e.style.top = `${t.bottom + n}px`;
|
|
29
|
-
}, b = [g, y, a, r], m = b.indexOf(Math.max(...b));
|
|
30
|
-
m === 0 ? y > r ? $() : f() : m === 1 ? g > a ? C() : v() : m === 2 ? y > r ? E() : A() : g > a ? R() : B();
|
|
31
|
-
};
|
|
1
|
+
var r = {};
|
|
32
2
|
export {
|
|
33
|
-
|
|
3
|
+
r as __exports
|
|
34
4
|
};
|
|
35
5
|
//# sourceMappingURL=annotorious-react.es18.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es18.js","sources":[
|
|
1
|
+
{"version":3,"file":"annotorious-react.es18.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,97 +1,116 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { useDebounce as
|
|
4
|
-
|
|
1
|
+
import { j as E } from "./annotorious-react.es11.js";
|
|
2
|
+
import { onUserSelect as I } from "@annotorious/core";
|
|
3
|
+
import { useDebounce as _ } from "./annotorious-react.es12.js";
|
|
4
|
+
import { createContext as O, forwardRef as R, useState as b, useImperativeHandle as H, useEffect as V, useContext as a } from "react";
|
|
5
|
+
const c = O({
|
|
5
6
|
anno: void 0,
|
|
6
7
|
setAnno: void 0,
|
|
7
8
|
annotations: [],
|
|
8
9
|
selection: { selected: [] }
|
|
9
|
-
}),
|
|
10
|
-
const [n,
|
|
11
|
-
return H(
|
|
10
|
+
}), K = R((t, o) => {
|
|
11
|
+
const [n, i] = b(null), [u, s] = b([]), [d, r] = b({ selected: [] });
|
|
12
|
+
return H(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 ? I(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 '.';\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 { onUserSelect } from '@annotorious/core';\nimport type { StoreObserveOptions, UserSelectActionExpression} from '@annotorious/core';\nimport { useDebounce } from './useDebounce';\nimport { \n createContext, \n forwardRef, \n type ReactNode, \n useContext, \n useEffect, \n useImperativeHandle, \n useState \n} from 'react';\nimport type {\n Annotation,\n Annotator,\n Selection as CoreSelection,\n Store,\n StoreChangeEvent,\n User\n} from '@annotorious/annotorious';\n\ninterface Selection<T extends Annotation = Annotation> extends Omit<CoreSelection, 'selected'> {\n\n selected: { annotation: T, editable?: boolean }[];\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":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { useEffect as
|
|
2
|
-
import { useAnnotator as
|
|
3
|
-
const m = (
|
|
4
|
-
const { plugin: u, opts: r } =
|
|
5
|
-
return
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
1
|
+
import { forwardRef as s, useEffect as c } from "react";
|
|
2
|
+
import { useAnnotator as e } from "./annotorious-react.es2.js";
|
|
3
|
+
const m = s((i, n) => {
|
|
4
|
+
const { plugin: u, opts: r } = i, t = e();
|
|
5
|
+
return c(() => {
|
|
6
|
+
if (!t) return;
|
|
7
|
+
const o = u(t, r);
|
|
8
|
+
return n && (n.current = o), () => {
|
|
9
|
+
o && "unmount" in o && o.unmount(), n && (n.current = null);
|
|
10
|
+
};
|
|
11
|
+
}, [t, u, r, n]), null;
|
|
12
|
+
});
|
|
14
13
|
export {
|
|
15
14
|
m as AnnotoriousPlugin
|
|
16
15
|
};
|
|
@@ -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 { forwardRef, 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\ntype PluginReturnType<T> = ReturnType<AnnotatorPlugin<T>>;\n\nexport const AnnotoriousPlugin = forwardRef(<T extends unknown = Annotator<any, unknown>>(\n props: AnnotoriousPluginProps<T>,\n ref: React.MutableRefObject<PluginReturnType<T>>\n) => {\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\n if (ref)\n ref.current = p;\n\n return () => {\n if (p && 'unmount' in p) {\n p.unmount();\n }\n\n if (ref)\n ref.current = null;\n }\n }, [anno, plugin, opts, ref]);\n\n return null;\n\n});\n"],"names":["AnnotoriousPlugin","forwardRef","props","ref","plugin","opts","anno","useAnnotator","useEffect","p"],"mappings":";;AAiBO,MAAMA,IAAoBC,EAAW,CAC1CC,GACAC,MACG;AACG,QAAA,EAAE,QAAAC,GAAQ,MAAAC,EAAS,IAAAH,GAEnBI,IAAOC;AAEb,SAAAC,EAAU,MAAM;AACd,QAAI,CAACF,EAAM;AAEL,UAAAG,IAAIL,EAAOE,GAAMD,CAAI;AAEvB,WAAAF,MACFA,EAAI,UAAUM,IAET,MAAM;AACP,MAAAA,KAAK,aAAaA,KACpBA,EAAE,QAAQ,GAGRN,MACFA,EAAI,UAAU;AAAA,IAAA;AAAA,KAEjB,CAACG,GAAMF,GAAQC,GAAMF,CAAG,CAAC,GAErB;AAET,CAAC;"}
|
|
@@ -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 '
|
|
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,26 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Children as
|
|
3
|
-
import {
|
|
4
|
-
import "./annotorious-react.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
if (!o) {
|
|
11
|
-
const f = c.target, s = y(f, i);
|
|
12
|
-
l(s);
|
|
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);
|
|
13
10
|
}
|
|
14
11
|
};
|
|
15
|
-
return
|
|
16
|
-
t.tool &&
|
|
17
|
-
}, [t.tool,
|
|
18
|
-
|
|
19
|
-
}, [t.filter]),
|
|
20
|
-
|
|
21
|
-
}, [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 }) });
|
|
22
21
|
};
|
|
23
22
|
export {
|
|
24
|
-
|
|
23
|
+
E as ImageAnnotator
|
|
25
24
|
};
|
|
26
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 '
|
|
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,85 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return o[t[r + 0]] + o[t[r + 1]] + o[t[r + 2]] + o[t[r + 3]] + "-" + o[t[r + 4]] + o[t[r + 5]] + "-" + o[t[r + 6]] + o[t[r + 7]] + "-" + o[t[r + 8]] + o[t[r + 9]] + "-" + o[t[r + 10]] + o[t[r + 11]] + o[t[r + 12]] + o[t[r + 13]] + o[t[r + 14]] + o[t[r + 15]];
|
|
14
|
-
}
|
|
15
|
-
const m = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), i = {
|
|
16
|
-
randomUUID: m
|
|
17
|
-
};
|
|
18
|
-
function U(t, r, e) {
|
|
19
|
-
if (i.randomUUID && !r && !t)
|
|
20
|
-
return i.randomUUID();
|
|
21
|
-
t = t || {};
|
|
22
|
-
const a = t.random || (t.rng || g)();
|
|
23
|
-
if (a[6] = a[6] & 15 | 64, a[8] = a[8] & 63 | 128, r) {
|
|
24
|
-
e = e || 0;
|
|
25
|
-
for (let n = 0; n < 16; ++n)
|
|
26
|
-
r[e + n] = a[n];
|
|
27
|
-
return r;
|
|
28
|
-
}
|
|
29
|
-
return y(a);
|
|
30
|
-
}
|
|
31
|
-
const b = (t, r, e, a) => ({
|
|
32
|
-
id: U(),
|
|
33
|
-
annotation: t.id,
|
|
34
|
-
created: e || /* @__PURE__ */ new Date(),
|
|
35
|
-
creator: a,
|
|
36
|
-
...r
|
|
37
|
-
});
|
|
38
|
-
var h = /* @__PURE__ */ ((t) => (t.LOCAL = "LOCAL", t.REMOTE = "REMOTE", t))(h || {});
|
|
39
|
-
let E = (t) => crypto.getRandomValues(new Uint8Array(t)), C = (t, r, e) => {
|
|
40
|
-
let a = (2 << Math.log(t.length - 1) / Math.LN2) - 1, n = -~(1.6 * a * r / t.length);
|
|
41
|
-
return (d = r) => {
|
|
42
|
-
let s = "";
|
|
43
|
-
for (; ; ) {
|
|
44
|
-
let l = e(n), u = n;
|
|
45
|
-
for (; u--; )
|
|
46
|
-
if (s += t[l[u] & a] || "", s.length === d)
|
|
47
|
-
return s;
|
|
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
|
+
};
|
|
48
13
|
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// brown
|
|
62
|
-
"#f14cc1",
|
|
63
|
-
// pink
|
|
64
|
-
"#ffc400",
|
|
65
|
-
// khaki
|
|
66
|
-
"#00d7ff",
|
|
67
|
-
// cyan
|
|
68
|
-
"#023eff"
|
|
69
|
-
// blue
|
|
70
|
-
], I = () => {
|
|
71
|
-
const t = [...O];
|
|
72
|
-
return { assignRandomColor: () => {
|
|
73
|
-
const r = Math.floor(Math.random() * t.length), e = t[r];
|
|
74
|
-
return t.splice(r, 1), e;
|
|
75
|
-
}, releaseColor: (r) => t.push(r) };
|
|
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;
|
|
76
26
|
};
|
|
77
|
-
R();
|
|
78
27
|
export {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
A as
|
|
82
|
-
b as createBody,
|
|
83
|
-
I as defaultColorProvider
|
|
28
|
+
S as OpenSeadragonAnnotator,
|
|
29
|
+
d as OpenSeadragonAnnotatorContext,
|
|
30
|
+
A as useViewer
|
|
84
31
|
};
|
|
85
32
|
//# sourceMappingURL=annotorious-react.es8.js.map
|