@annotorious/react 3.0.12 → 3.0.14
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-react.es13.js.map +1 -1
- package/dist/annotorious-react.es4.js +7 -7
- package/dist/annotorious-react.es4.js.map +1 -1
- package/dist/annotorious-react.es8.js +31 -27
- package/dist/annotorious-react.es8.js.map +1 -1
- package/dist/annotorious-react.es9.js +33 -32
- package/dist/annotorious-react.es9.js.map +1 -1
- package/dist/openseadragon/OpenSeadragonAnnotationPopup.d.ts +3 -0
- package/dist/openseadragon/OpenSeadragonAnnotationPopup.d.ts.map +1 -1
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts +2 -1
- package/dist/openseadragon/OpenSeadragonAnnotator.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -7,16 +7,16 @@ import { inline as U, offset as F, flip as M, shift as b, arrow as k } from "./a
|
|
|
7
7
|
import { autoUpdate as z } from "./annotorious-react.es16.js";
|
|
8
8
|
import w from "./annotorious-react.es17.js";
|
|
9
9
|
const H = (a, t) => {
|
|
10
|
-
const n = t.querySelector("img"), { left: i, top: d } = n.getBoundingClientRect(), s = n.offsetWidth / n.naturalWidth, c = n.offsetHeight / n.naturalHeight, { minX: o, minY: l, maxX: p, maxY:
|
|
10
|
+
const n = t.querySelector("img"), { left: i, top: d } = n.getBoundingClientRect(), s = n.offsetWidth / n.naturalWidth, c = n.offsetHeight / n.naturalHeight, { minX: o, minY: l, maxX: p, maxY: u } = a.bounds;
|
|
11
11
|
return new DOMRect(
|
|
12
12
|
i + s * o,
|
|
13
13
|
d + c * l,
|
|
14
14
|
s * (p - o),
|
|
15
|
-
c * (
|
|
15
|
+
c * (u - l)
|
|
16
16
|
);
|
|
17
17
|
}, K = (a) => {
|
|
18
|
-
var
|
|
19
|
-
const t = j(), [n, i] = E(!1), d = C(null), { selected: s, event: c } = L(), o = (
|
|
18
|
+
var m, f;
|
|
19
|
+
const t = j(), [n, i] = E(!1), d = C(null), { selected: s, event: c } = L(), o = (m = s[0]) == null ? void 0 : m.annotation, l = (f = s[0]) == null ? void 0 : f.editable, { refs: p, floatingStyles: u, context: h, update: I } = D({
|
|
20
20
|
open: n,
|
|
21
21
|
onOpenChange: i,
|
|
22
22
|
middleware: [
|
|
@@ -71,12 +71,12 @@ const H = (a, t) => {
|
|
|
71
71
|
};
|
|
72
72
|
t.state.store.updateBody(e, B);
|
|
73
73
|
};
|
|
74
|
-
return n && o
|
|
74
|
+
return n && o ? /* @__PURE__ */ g.jsxs(
|
|
75
75
|
"div",
|
|
76
76
|
{
|
|
77
77
|
className: "a9s-popup a9s-image-popup",
|
|
78
78
|
ref: p.setFloating,
|
|
79
|
-
style:
|
|
79
|
+
style: u,
|
|
80
80
|
children: [
|
|
81
81
|
/* @__PURE__ */ g.jsx(
|
|
82
82
|
O,
|
|
@@ -95,7 +95,7 @@ const H = (a, t) => {
|
|
|
95
95
|
})
|
|
96
96
|
]
|
|
97
97
|
}
|
|
98
|
-
);
|
|
98
|
+
) : null;
|
|
99
99
|
};
|
|
100
100
|
export {
|
|
101
101
|
K as ImageAnnotationPopup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es4.js","sources":["../src/ImageAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useRef, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AnnotationBody, Geometry } from '@annotorious/annotorious';\nimport {\n useFloating,\n arrow,\n shift,\n inline,\n autoUpdate,\n flip,\n offset,\n FloatingArrow\n} from '@floating-ui/react';\nimport { useAnnotator, useSelection } from './Annotorious';\nimport { PopupProps } from './PopupProps';\nimport { toClientRects } from './utils/toClientRects';\nimport { ImageAnnotator } from '@annotorious/openseadragon';\n\nconst toDOMRect = (geometry: Geometry, container: HTMLDivElement) => {\n const img = container.querySelector('img');\n\n const { left, top } = img.getBoundingClientRect();\n\n const kx = img.offsetWidth / img.naturalWidth;\n const ky = img.offsetHeight / img.naturalHeight;\n\n const { minX, minY, maxX, maxY } = geometry.bounds;\n\n return new DOMRect(\n left + kx * minX,\n top + ky * minY,\n kx * (maxX - minX),\n ky * (maxY - minY)\n );\n}\n\ninterface ImageAnnotationPopupProps {\n\n arrow?: boolean;\n\n popup: (props: PopupProps) => ReactNode;\n\n}\n\nexport const ImageAnnotationPopup = (props: ImageAnnotationPopupProps) => {\n\n const anno = useAnnotator<ImageAnnotator>();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { selected, event } = useSelection();\n\n const annotation = selected[0]?.annotation;\n\n const editable = selected[0]?.editable;\n\n const { refs, floatingStyles, context, update } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n inline(), \n offset(10),\n flip({ crossAxis: true }),\n shift({ \n crossAxis: true,\n padding: { right: 5, left: 5, top: 10, bottom: 10 }\n }),\n arrow({\n element: arrowRef,\n padding: 5\n })\n ],\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n if (selected.length === 0) {\n setIsOpen(false);\n } else {\n const setPosition = () => { \n const rect = toDOMRect(annotation.target.selector.geometry, anno.element);\n\n refs.setReference({\n getBoundingClientRect: () => rect,\n getClientRects: () => toClientRects(rect)\n });\n }\n\n window.addEventListener('scroll', setPosition, true);\n window.addEventListener('resize', setPosition);\n\n setPosition();\n\n setIsOpen(true);\n\n return () => {\n window.removeEventListener('scroll', setPosition, true);\n window.removeEventListener('resize', setPosition);\n };\n }\n }, [anno, props.popup, selected]);\n\n const onCreateBody = (body: Partial<AnnotationBody>) => {\n const id = body.id || uuidv4();\n \n anno.state.store.addBody({\n ...body,\n id,\n annotation: annotation.id,\n created: body.created || new Date(),\n creator: anno.getUser()\n });\n }\n\n const onDeleteBody = (id: string) => {\n anno.state.store.deleteBody({ id, annotation: annotation.id });\n }\n\n const onUpdateBody = (current: AnnotationBody, next: AnnotationBody) => {\n const id = next.id || uuidv4();\n\n const updated: AnnotationBody = {\n updated: new Date(),\n updatedBy: anno.getUser(),\n ...next,\n id,\n annotation: annotation.id\n }\n\n anno.state.store.updateBody(current, updated);\n }\n\n return isOpen && annotation
|
|
1
|
+
{"version":3,"file":"annotorious-react.es4.js","sources":["../src/ImageAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useRef, useState } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AnnotationBody, Geometry } from '@annotorious/annotorious';\nimport {\n useFloating,\n arrow,\n shift,\n inline,\n autoUpdate,\n flip,\n offset,\n FloatingArrow\n} from '@floating-ui/react';\nimport { useAnnotator, useSelection } from './Annotorious';\nimport { PopupProps } from './PopupProps';\nimport { toClientRects } from './utils/toClientRects';\nimport { ImageAnnotator } from '@annotorious/openseadragon';\n\nconst toDOMRect = (geometry: Geometry, container: HTMLDivElement) => {\n const img = container.querySelector('img');\n\n const { left, top } = img.getBoundingClientRect();\n\n const kx = img.offsetWidth / img.naturalWidth;\n const ky = img.offsetHeight / img.naturalHeight;\n\n const { minX, minY, maxX, maxY } = geometry.bounds;\n\n return new DOMRect(\n left + kx * minX,\n top + ky * minY,\n kx * (maxX - minX),\n ky * (maxY - minY)\n );\n}\n\ninterface ImageAnnotationPopupProps {\n\n arrow?: boolean;\n\n popup: (props: PopupProps) => ReactNode;\n\n}\n\nexport const ImageAnnotationPopup = (props: ImageAnnotationPopupProps) => {\n\n const anno = useAnnotator<ImageAnnotator>();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const arrowRef = useRef(null);\n\n const { selected, event } = useSelection();\n\n const annotation = selected[0]?.annotation;\n\n const editable = selected[0]?.editable;\n\n const { refs, floatingStyles, context, update } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n inline(), \n offset(10),\n flip({ crossAxis: true }),\n shift({ \n crossAxis: true,\n padding: { right: 5, left: 5, top: 10, bottom: 10 }\n }),\n arrow({\n element: arrowRef,\n padding: 5\n })\n ],\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n if (selected.length === 0) {\n setIsOpen(false);\n } else {\n const setPosition = () => { \n const rect = toDOMRect(annotation.target.selector.geometry, anno.element);\n\n refs.setReference({\n getBoundingClientRect: () => rect,\n getClientRects: () => toClientRects(rect)\n });\n }\n\n window.addEventListener('scroll', setPosition, true);\n window.addEventListener('resize', setPosition);\n\n setPosition();\n\n setIsOpen(true);\n\n return () => {\n window.removeEventListener('scroll', setPosition, true);\n window.removeEventListener('resize', setPosition);\n };\n }\n }, [anno, props.popup, selected]);\n\n const onCreateBody = (body: Partial<AnnotationBody>) => {\n const id = body.id || uuidv4();\n \n anno.state.store.addBody({\n ...body,\n id,\n annotation: annotation.id,\n created: body.created || new Date(),\n creator: anno.getUser()\n });\n }\n\n const onDeleteBody = (id: string) => {\n anno.state.store.deleteBody({ id, annotation: annotation.id });\n }\n\n const onUpdateBody = (current: AnnotationBody, next: AnnotationBody) => {\n const id = next.id || uuidv4();\n\n const updated: AnnotationBody = {\n updated: new Date(),\n updatedBy: anno.getUser(),\n ...next,\n id,\n annotation: annotation.id\n }\n\n anno.state.store.updateBody(current, updated);\n }\n\n return (isOpen && annotation) ? (\n <div\n className=\"a9s-popup a9s-image-popup\"\n ref={refs.setFloating}\n style={floatingStyles}>\n\n <FloatingArrow \n ref={arrowRef} \n context={context} />\n\n {props.popup({ \n annotation, \n editable, \n event,\n onCreateBody,\n onDeleteBody,\n onUpdateBody\n })}\n </div>\n ) : null;\n\n}\n"],"names":["toDOMRect","geometry","container","img","left","top","kx","ky","minX","minY","maxX","maxY","ImageAnnotationPopup","props","anno","useAnnotator","isOpen","setIsOpen","useState","arrowRef","useRef","selected","event","useSelection","annotation","_a","editable","_b","refs","floatingStyles","context","update","useFloating","inline","offset","flip","shift","arrow","autoUpdate","useEffect","setPosition","rect","toClientRects","onCreateBody","body","id","uuidv4","onDeleteBody","onUpdateBody","current","next","updated","jsxs","jsx","FloatingArrow"],"mappings":"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"}
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import { createContext as u, useState as
|
|
3
|
-
import { createOSDAnnotator as
|
|
4
|
-
import { AnnotoriousContext as
|
|
5
|
-
const s = u({ viewer: null, setViewer: null }),
|
|
6
|
-
const { children:
|
|
7
|
-
return
|
|
8
|
-
if (
|
|
9
|
-
const
|
|
10
|
-
return
|
|
11
|
-
|
|
1
|
+
import { j as f } from "./annotorious-react.es11.js";
|
|
2
|
+
import { createContext as u, useState as m, useContext as a, useEffect as n } from "react";
|
|
3
|
+
import { createOSDAnnotator as S } from "@annotorious/openseadragon";
|
|
4
|
+
import { AnnotoriousContext as w } from "./annotorious-react.es2.js";
|
|
5
|
+
const s = u({ viewer: null, setViewer: null }), y = (t) => {
|
|
6
|
+
const { children: x, tool: r, ...c } = t, [o, d] = m(), { anno: e, setAnno: i } = a(w);
|
|
7
|
+
return n(() => {
|
|
8
|
+
if (o != null && o.element) {
|
|
9
|
+
const l = S(o, c);
|
|
10
|
+
return i(l), () => {
|
|
11
|
+
l.destroy(), i(void 0);
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
}, [
|
|
15
|
-
|
|
16
|
-
}, [e.drawingEnabled]),
|
|
17
|
-
|
|
18
|
-
}, [e.filter]),
|
|
19
|
-
|
|
20
|
-
}, [e.style]),
|
|
21
|
-
|
|
22
|
-
}, [
|
|
23
|
-
|
|
24
|
-
}, [e.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
}, [o]), n(() => {
|
|
15
|
+
e && e.setDrawingEnabled(t.drawingEnabled);
|
|
16
|
+
}, [e, t.drawingEnabled]), n(() => {
|
|
17
|
+
e && e.setFilter(t.filter);
|
|
18
|
+
}, [e, t.filter]), n(() => {
|
|
19
|
+
e && e.setStyle(t.style);
|
|
20
|
+
}, [e, t.style]), n(() => {
|
|
21
|
+
e && e.setDrawingTool(r);
|
|
22
|
+
}, [e, r]), n(() => {
|
|
23
|
+
e && e.setModalSelect(t.modalSelect);
|
|
24
|
+
}, [e, t.modalSelect]), n(() => {
|
|
25
|
+
e && e.setUser(t.user);
|
|
26
|
+
}, [e, t.user]), n(() => {
|
|
27
|
+
e && e.setUserSelectAction(t.userSelectAction);
|
|
28
|
+
}, [e, t.userSelectAction]), /* @__PURE__ */ f.jsx(s.Provider, { value: { viewer: o, setViewer: d }, children: t.children });
|
|
29
|
+
}, C = () => {
|
|
30
|
+
const { viewer: t } = a(s);
|
|
31
|
+
return t;
|
|
28
32
|
};
|
|
29
33
|
export {
|
|
30
|
-
|
|
34
|
+
y as OpenSeadragonAnnotator,
|
|
31
35
|
s as OpenSeadragonAnnotatorContext,
|
|
32
|
-
|
|
36
|
+
C as useViewer
|
|
33
37
|
};
|
|
34
38
|
//# sourceMappingURL=annotorious-react.es8.js.map
|
|
@@ -1 +1 @@
|
|
|
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 { Annotation, AnnotoriousOpts, DrawingStyle, Filter } 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<I extends Annotation, E extends unknown> = AnnotoriousOpts<I, E> & {\n\n children?: ReactNode;\n\n filter?: Filter<I>;\n\n style?: DrawingStyle | ((annotation: I) => DrawingStyle);\n\n tool?: string | null;\n\n}\n\nexport const OpenSeadragonAnnotator = <I extends Annotation, E extends unknown>(props: OpenSeadragonAnnotatorProps<I, 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?.element) {\n const anno = createOSDAnnotator<I, E>(viewer, opts as AnnotoriousOpts<I, E>);\n
|
|
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 { Annotation, AnnotoriousOpts, DrawingStyle, Filter, User} 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<I extends Annotation, E extends unknown> = AnnotoriousOpts<I, E> & {\n\n children?: ReactNode;\n\n filter?: Filter<I>;\n\n style?: DrawingStyle | ((annotation: I) => DrawingStyle);\n\n tool?: string | null;\n\n user?: User;\n\n}\n\nexport const OpenSeadragonAnnotator = <I extends Annotation, E extends unknown>(props: OpenSeadragonAnnotatorProps<I, 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?.element) {\n const anno = createOSDAnnotator<I, E>(viewer, opts as AnnotoriousOpts<I, E>);\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 }, [anno, props.drawingEnabled]);\n\n useEffect(() => {\n if (anno) anno.setFilter(props.filter);\n }, [anno, props.filter]);\n\n useEffect(() => {\n if (anno) anno.setStyle(props.style);\n }, [anno, props.style]);\n\n useEffect(() => {\n if (anno) anno.setDrawingTool(tool);\n }, [anno, tool]);\n\n useEffect(() => {\n if (anno) anno.setModalSelect(props.modalSelect);\n }, [anno, props.modalSelect]);\n\n useEffect(() => {\n if (anno) anno.setUser(props.user);\n }, [anno, props.user]);\n\n useEffect(() => {\n if (anno) anno.setUserSelectAction(props.userSelectAction);\n }, [anno, props.userSelectAction]);\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,KAAM,CAAA,GAgBvBC,IAAyB,CAA0CC,MAA6C;AAE3H,QAAM,EAAE,UAAAC,GAAU,MAAAC,GAAM,GAAGC,EAAS,IAAAH,GAE9B,CAACI,GAAQC,CAAS,IAAIC,EAA+B,GAErD,EAAE,MAAAC,GAAM,SAAAC,MAAYC,EAAWC,CAAkB;AAEvD,SAAAC,EAAU,MAAM;AACd,QAAIP,KAAA,QAAAA,EAAQ,SAAS;AACbG,YAAAA,IAAOK,EAAyBR,GAAQD,CAA6B;AAC3E,aAAAK,EAAQD,CAAI,GAEL,MAAM;AACXA,QAAAA,EAAK,QAAQ,GACbC,EAAQ,MAAS;AAAA,MACnB;AAAA,IAAA;AAAA,EACF,GACC,CAACJ,CAAM,CAAC,GAEXO,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,kBAAkBP,EAAM,cAAc;AAAA,EACpD,GAAA,CAACO,GAAMP,EAAM,cAAc,CAAC,GAE/BW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,UAAUP,EAAM,MAAM;AAAA,EACpC,GAAA,CAACO,GAAMP,EAAM,MAAM,CAAC,GAEvBW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,SAASP,EAAM,KAAK;AAAA,EAClC,GAAA,CAACO,GAAMP,EAAM,KAAK,CAAC,GAEtBW,EAAU,MAAM;AACV,IAAAJ,KAAWA,EAAA,eAAeL,CAAI;AAAA,EAAA,GACjC,CAACK,GAAML,CAAI,CAAC,GAEfS,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,eAAeP,EAAM,WAAW;AAAA,EAC9C,GAAA,CAACO,GAAMP,EAAM,WAAW,CAAC,GAE5BW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,QAAQP,EAAM,IAAI;AAAA,EAChC,GAAA,CAACO,GAAMP,EAAM,IAAI,CAAC,GAErBW,EAAU,MAAM;AACd,IAAIJ,KAAMA,EAAK,oBAAoBP,EAAM,gBAAgB;AAAA,EACxD,GAAA,CAACO,GAAMP,EAAM,gBAAgB,CAAC,GAG/Ba,gBAAAA,MAAChB,EAA8B,UAA9B,EAAuC,OAAO,EAAE,QAAAO,GAAQ,WAAAC,KACtD,UAAAL,EAAM,SACT,CAAA;AAGJ,GAEac,IAAY,MAAM;AAC7B,QAAM,EAAE,QAAAV,EAAA,IAAWK,EAAWZ,CAA6B;AACpD,SAAAO;AACT;"}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
import { j as g } from "./annotorious-react.es11.js";
|
|
2
2
|
import { useState as O, useRef as A, useEffect as D } from "react";
|
|
3
3
|
import w from "openseadragon";
|
|
4
|
-
import { useAnnotator as L, useSelection as
|
|
4
|
+
import { useAnnotator as L, useSelection as P } from "./annotorious-react.es2.js";
|
|
5
5
|
/* empty css */
|
|
6
6
|
/* empty css */
|
|
7
7
|
import "@annotorious/core";
|
|
8
8
|
import "@annotorious/annotorious";
|
|
9
|
-
import { toClientRects as
|
|
10
|
-
import { useFloating as
|
|
9
|
+
import { toClientRects as S } from "./annotorious-react.es14.js";
|
|
10
|
+
import { useFloating as b, FloatingArrow as j } from "./annotorious-react.es13.js";
|
|
11
11
|
import { useViewer as U } from "./annotorious-react.es8.js";
|
|
12
12
|
import { inline as F, offset as M, flip as V, shift as z, arrow as H } from "./annotorious-react.es15.js";
|
|
13
13
|
import { autoUpdate as T } from "./annotorious-react.es16.js";
|
|
14
14
|
import x from "./annotorious-react.es17.js";
|
|
15
|
-
const X = (
|
|
16
|
-
const { minX: d, minY: a, maxX: o, maxY:
|
|
15
|
+
const X = (n, r) => {
|
|
16
|
+
const { minX: d, minY: a, maxX: o, maxY: m } = r.bounds, { top: s, left: l } = n.element.getBoundingClientRect(), t = n.viewport.imageToViewerElementCoordinates(new w.Point(d, a)), p = n.viewport.imageToViewerElementCoordinates(new w.Point(o, m));
|
|
17
17
|
return new DOMRect(
|
|
18
18
|
t.x + l,
|
|
19
19
|
t.y + s,
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
p.x - t.x,
|
|
21
|
+
p.y - t.y
|
|
22
22
|
);
|
|
23
|
-
}, te = (
|
|
23
|
+
}, te = (n) => {
|
|
24
24
|
var u, f;
|
|
25
|
-
const
|
|
25
|
+
const r = L(), [d, a] = O(!1), o = U(), m = A(null), { selected: s, event: l } = P(), t = (u = s[0]) == null ? void 0 : u.annotation, p = (f = s[0]) == null ? void 0 : f.editable, { refs: c, floatingStyles: y, context: v } = b({
|
|
26
26
|
open: d,
|
|
27
27
|
onOpenChange: a,
|
|
28
|
+
placement: n.placement,
|
|
28
29
|
middleware: [
|
|
29
30
|
F(),
|
|
30
31
|
M(10),
|
|
@@ -35,7 +36,7 @@ const X = (i, n) => {
|
|
|
35
36
|
padding: { right: 5, left: 5, top: 10, bottom: 10 }
|
|
36
37
|
}),
|
|
37
38
|
H({
|
|
38
|
-
element:
|
|
39
|
+
element: m,
|
|
39
40
|
padding: 5
|
|
40
41
|
})
|
|
41
42
|
],
|
|
@@ -47,56 +48,56 @@ const X = (i, n) => {
|
|
|
47
48
|
else {
|
|
48
49
|
const e = () => {
|
|
49
50
|
if (!o.element) return;
|
|
50
|
-
const
|
|
51
|
+
const i = X(o, t.target.selector.geometry);
|
|
51
52
|
c.setReference({
|
|
52
|
-
getBoundingClientRect: () =>
|
|
53
|
-
getClientRects: () =>
|
|
53
|
+
getBoundingClientRect: () => i,
|
|
54
|
+
getClientRects: () => S(i)
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
return window.addEventListener("scroll", e, !0), window.addEventListener("resize", e), o.addHandler("update-viewport", e), e(), a(!0), () => {
|
|
57
58
|
window.removeEventListener("scroll", e, !0), window.removeEventListener("resize", e), o.removeHandler("update-viewport", e);
|
|
58
59
|
};
|
|
59
60
|
}
|
|
60
|
-
}, [
|
|
61
|
+
}, [n.popup, s, o]);
|
|
61
62
|
const R = (e) => {
|
|
62
|
-
const
|
|
63
|
-
|
|
63
|
+
const i = e.id || x();
|
|
64
|
+
r.state.store.addBody({
|
|
64
65
|
...e,
|
|
65
|
-
id:
|
|
66
|
+
id: i,
|
|
66
67
|
annotation: t.id,
|
|
67
68
|
created: e.created || /* @__PURE__ */ new Date(),
|
|
68
|
-
creator:
|
|
69
|
+
creator: r.getUser()
|
|
69
70
|
});
|
|
70
71
|
}, B = (e) => {
|
|
71
|
-
|
|
72
|
-
}, E = (e,
|
|
73
|
-
const C =
|
|
72
|
+
r.state.store.deleteBody({ id: e, annotation: t.id });
|
|
73
|
+
}, E = (e, i) => {
|
|
74
|
+
const C = i.id || x(), h = {
|
|
74
75
|
updated: /* @__PURE__ */ new Date(),
|
|
75
|
-
updatedBy:
|
|
76
|
-
...
|
|
76
|
+
updatedBy: r.getUser(),
|
|
77
|
+
...i,
|
|
77
78
|
id: C,
|
|
78
79
|
annotation: t.id
|
|
79
80
|
};
|
|
80
|
-
|
|
81
|
+
r.state.store.updateBody(e, h);
|
|
81
82
|
};
|
|
82
|
-
return d && t
|
|
83
|
+
return d && t ? /* @__PURE__ */ g.jsxs(
|
|
83
84
|
"div",
|
|
84
85
|
{
|
|
85
86
|
className: "a9s-popup a9s-image-popup",
|
|
86
87
|
ref: c.setFloating,
|
|
87
88
|
style: y,
|
|
88
89
|
children: [
|
|
89
|
-
/* @__PURE__ */ g.jsx(
|
|
90
|
-
|
|
90
|
+
n.arrow && /* @__PURE__ */ g.jsx(
|
|
91
|
+
j,
|
|
91
92
|
{
|
|
92
|
-
ref:
|
|
93
|
+
ref: m,
|
|
93
94
|
context: v,
|
|
94
|
-
|
|
95
|
+
...n.arrowProps || {}
|
|
95
96
|
}
|
|
96
97
|
),
|
|
97
|
-
|
|
98
|
+
n.popup({
|
|
98
99
|
annotation: t,
|
|
99
|
-
editable:
|
|
100
|
+
editable: p,
|
|
100
101
|
event: l,
|
|
101
102
|
onCreateBody: R,
|
|
102
103
|
onDeleteBody: B,
|
|
@@ -104,7 +105,7 @@ const X = (i, n) => {
|
|
|
104
105
|
})
|
|
105
106
|
]
|
|
106
107
|
}
|
|
107
|
-
);
|
|
108
|
+
) : null;
|
|
108
109
|
};
|
|
109
110
|
export {
|
|
110
111
|
te as OpenSeadragonAnnotationPopup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotorious-react.es9.js","sources":["../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useRef, useState } from 'react';\nimport OpenSeadragon from 'openseadragon';\nimport { v4 as uuidv4 } from 'uuid';\nimport { useAnnotator, useSelection, useViewer} from '@annotorious/react';\nimport type { PopupProps } from '@annotorious/react';\nimport type { AnnotationBody, Annotator, Geometry, ImageAnnotation } from '@annotorious/annotorious';\nimport { toClientRects } from '../utils/toClientRects';\nimport {\n useFloating,\n arrow,\n shift,\n inline,\n autoUpdate,\n flip,\n offset,\n FloatingArrow\n} from '@floating-ui/react';\n\nconst toDOMRect = (viewer: OpenSeadragon.Viewer, geometry: Geometry) => {\n const { minX, minY, maxX, maxY } = geometry.bounds;\n\n const { top, left } = viewer.element.getBoundingClientRect();\n\n const topLeft = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(minX, minY));\n const bottomRight = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(maxX, maxY));\n\n return new DOMRect(\n topLeft.x + left,\n topLeft.y + top,\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n}\n\ninterface OpenSeadragonAnnotationPopupProps {\n\n arrow?: boolean;\n\n popup: (props: PopupProps) => ReactNode;\n\n}\n\nexport const OpenSeadragonAnnotationPopup = (props: OpenSeadragonAnnotationPopupProps) => {\n \n const anno = useAnnotator<Annotator<ImageAnnotation>>();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const viewer = useViewer();\n\n const arrowRef = useRef(null);\n\n const { selected, event } = useSelection();\n\n const annotation = selected[0]?.annotation;\n\n const editable = selected[0]?.editable;\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n middleware: [\n inline(), \n offset(10),\n flip({ crossAxis: true }),\n shift({ \n crossAxis: true,\n boundary: viewer?.element,\n padding: { right: 5, left: 5, top: 10, bottom: 10 }\n }),\n arrow({\n element: arrowRef,\n padding: 5\n })\n ],\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n if (selected.length === 0) {\n setIsOpen(false);\n } else { \n const setPosition = () => { \n // This avoids issues when new viewer instances are mounted/unmounted \n // while the popup is open\n if (!viewer.element) return;\n\n const rect = toDOMRect(viewer, annotation.target.selector.geometry);\n \n refs.setReference({\n getBoundingClientRect: () => rect,\n getClientRects: () => toClientRects(rect)\n });\n }\n\n window.addEventListener('scroll', setPosition, true);\n window.addEventListener('resize', setPosition);\n viewer.addHandler('update-viewport', setPosition);\n\n setPosition();\n\n setIsOpen(true);\n\n return () => {\n window.removeEventListener('scroll', setPosition, true);\n window.removeEventListener('resize', setPosition);\n viewer.removeHandler('update-viewport', setPosition);\n };\n }\n }, [props.popup, selected, viewer]);\n\n const onCreateBody = (body: Partial<AnnotationBody>) => {\n const id = body.id || uuidv4();\n \n anno.state.store.addBody({\n ...body,\n id,\n annotation: annotation.id,\n created: body.created || new Date(),\n creator: anno.getUser()\n });\n }\n\n const onDeleteBody = (id: string) => {\n anno.state.store.deleteBody({ id, annotation: annotation.id });\n }\n\n const onUpdateBody = (current: AnnotationBody, next: AnnotationBody) => {\n const id = next.id || uuidv4();\n\n const updated: AnnotationBody = {\n updated: new Date(),\n updatedBy: anno.getUser(),\n ...next,\n id,\n annotation: annotation.id\n }\n\n anno.state.store.updateBody(current, updated);\n }\n\n return isOpen && annotation
|
|
1
|
+
{"version":3,"file":"annotorious-react.es9.js","sources":["../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useRef, useState } from 'react';\nimport OpenSeadragon from 'openseadragon';\nimport { v4 as uuidv4 } from 'uuid';\nimport { useAnnotator, useSelection, useViewer} from '@annotorious/react';\nimport type { PopupProps } from '@annotorious/react';\nimport type { AnnotationBody, Annotator, Geometry, ImageAnnotation } from '@annotorious/annotorious';\nimport { toClientRects } from '../utils/toClientRects';\nimport {\n useFloating,\n arrow,\n shift,\n inline,\n autoUpdate,\n flip,\n offset,\n FloatingArrow,\n FloatingArrowProps,\n Placement\n} from '@floating-ui/react';\n\nconst toDOMRect = (viewer: OpenSeadragon.Viewer, geometry: Geometry) => {\n const { minX, minY, maxX, maxY } = geometry.bounds;\n\n const { top, left } = viewer.element.getBoundingClientRect();\n\n const topLeft = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(minX, minY));\n const bottomRight = viewer.viewport.imageToViewerElementCoordinates(new OpenSeadragon.Point(maxX, maxY));\n\n return new DOMRect(\n topLeft.x + left,\n topLeft.y + top,\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n}\n\ninterface OpenSeadragonAnnotationPopupProps {\n\n arrow?: boolean;\n\n arrowProps?: Omit<FloatingArrowProps, 'context' | 'ref'>;\n\n placement?: Placement;\n\n popup: (props: PopupProps) => ReactNode;\n\n}\n\nexport const OpenSeadragonAnnotationPopup = (props: OpenSeadragonAnnotationPopupProps) => {\n \n const anno = useAnnotator<Annotator<ImageAnnotation>>();\n\n const [isOpen, setIsOpen] = useState(false);\n\n const viewer = useViewer();\n\n const arrowRef = useRef(null);\n\n const { selected, event } = useSelection();\n\n const annotation = selected[0]?.annotation;\n\n const editable = selected[0]?.editable;\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement: props.placement,\n middleware: [\n inline(), \n offset(10),\n flip({ crossAxis: true }),\n shift({ \n crossAxis: true,\n boundary: viewer?.element,\n padding: { right: 5, left: 5, top: 10, bottom: 10 }\n }),\n arrow({\n element: arrowRef,\n padding: 5\n })\n ],\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n if (selected.length === 0) {\n setIsOpen(false);\n } else { \n const setPosition = () => { \n // This avoids issues when new viewer instances are mounted/unmounted \n // while the popup is open\n if (!viewer.element) return;\n\n const rect = toDOMRect(viewer, annotation.target.selector.geometry);\n \n refs.setReference({\n getBoundingClientRect: () => rect,\n getClientRects: () => toClientRects(rect)\n });\n }\n\n window.addEventListener('scroll', setPosition, true);\n window.addEventListener('resize', setPosition);\n viewer.addHandler('update-viewport', setPosition);\n\n setPosition();\n\n setIsOpen(true);\n\n return () => {\n window.removeEventListener('scroll', setPosition, true);\n window.removeEventListener('resize', setPosition);\n viewer.removeHandler('update-viewport', setPosition);\n };\n }\n }, [props.popup, selected, viewer]);\n\n const onCreateBody = (body: Partial<AnnotationBody>) => {\n const id = body.id || uuidv4();\n \n anno.state.store.addBody({\n ...body,\n id,\n annotation: annotation.id,\n created: body.created || new Date(),\n creator: anno.getUser()\n });\n }\n\n const onDeleteBody = (id: string) => {\n anno.state.store.deleteBody({ id, annotation: annotation.id });\n }\n\n const onUpdateBody = (current: AnnotationBody, next: AnnotationBody) => {\n const id = next.id || uuidv4();\n\n const updated: AnnotationBody = {\n updated: new Date(),\n updatedBy: anno.getUser(),\n ...next,\n id,\n annotation: annotation.id\n }\n\n anno.state.store.updateBody(current, updated);\n }\n\n return (isOpen && annotation) ? (\n <div\n className=\"a9s-popup a9s-image-popup\"\n ref={refs.setFloating}\n style={floatingStyles}>\n \n {props.arrow && (\n <FloatingArrow \n ref={arrowRef} \n context={context} \n {...(props.arrowProps || {})} />\n )}\n\n {props.popup({ \n annotation, \n editable, \n event,\n onCreateBody,\n onDeleteBody,\n onUpdateBody\n })}\n </div>\n ) : null;\n\n}"],"names":["toDOMRect","viewer","geometry","minX","minY","maxX","maxY","top","left","topLeft","OpenSeadragon","bottomRight","OpenSeadragonAnnotationPopup","props","anno","useAnnotator","isOpen","setIsOpen","useState","useViewer","arrowRef","useRef","selected","event","useSelection","annotation","_a","editable","_b","refs","floatingStyles","context","useFloating","inline","offset","flip","shift","arrow","autoUpdate","useEffect","setPosition","rect","toClientRects","onCreateBody","body","id","uuidv4","onDeleteBody","onUpdateBody","current","next","updated","jsxs","jsx","FloatingArrow"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { PopupProps } from '../index.ts';
|
|
3
|
+
import { FloatingArrowProps, Placement } from '@floating-ui/react';
|
|
3
4
|
interface OpenSeadragonAnnotationPopupProps {
|
|
4
5
|
arrow?: boolean;
|
|
6
|
+
arrowProps?: Omit<FloatingArrowProps, 'context' | 'ref'>;
|
|
7
|
+
placement?: Placement;
|
|
5
8
|
popup: (props: PopupProps) => ReactNode;
|
|
6
9
|
}
|
|
7
10
|
export declare const OpenSeadragonAnnotationPopup: (props: OpenSeadragonAnnotationPopupProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenSeadragonAnnotationPopup.d.ts","sourceRoot":"","sources":["../../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAI/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenSeadragonAnnotationPopup.d.ts","sourceRoot":"","sources":["../../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAI/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EASL,kBAAkB,EAClB,SAAS,EACV,MAAM,oBAAoB,CAAC;AAkB5B,UAAU,iCAAiC;IAEzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAEzD,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;CAEzC;AAED,eAAO,MAAM,4BAA4B,UAAW,iCAAiC,4CA4HpF,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { default as OpenSeadragon } from 'openseadragon';
|
|
3
|
-
import { Annotation, AnnotoriousOpts, DrawingStyle, Filter } from '@annotorious/annotorious';
|
|
3
|
+
import { Annotation, AnnotoriousOpts, DrawingStyle, Filter, User } from '@annotorious/annotorious';
|
|
4
4
|
export declare const OpenSeadragonAnnotatorContext: import('react').Context<{
|
|
5
5
|
viewer: OpenSeadragon.Viewer;
|
|
6
6
|
setViewer(viewer: OpenSeadragon.Viewer): void;
|
|
@@ -10,6 +10,7 @@ export type OpenSeadragonAnnotatorProps<I extends Annotation, E extends unknown>
|
|
|
10
10
|
filter?: Filter<I>;
|
|
11
11
|
style?: DrawingStyle | ((annotation: I) => DrawingStyle);
|
|
12
12
|
tool?: string | null;
|
|
13
|
+
user?: User;
|
|
13
14
|
};
|
|
14
15
|
export declare const OpenSeadragonAnnotator: <I extends Annotation, E extends unknown>(props: OpenSeadragonAnnotatorProps<I, E>) => import("react/jsx-runtime").JSX.Element;
|
|
15
16
|
export declare const useViewer: () => OpenSeadragon.Viewer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenSeadragonAnnotator.d.ts","sourceRoot":"","sources":["../../src/openseadragon/OpenSeadragonAnnotator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAmC,MAAM,OAAO,CAAC;AAClF,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenSeadragonAnnotator.d.ts","sourceRoot":"","sources":["../../src/openseadragon/OpenSeadragonAnnotator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAmC,MAAM,OAAO,CAAC;AAClF,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAGlG,eAAO,MAAM,6BAA6B;YAChC,aAAa,CAAC,MAAM;sBACV,aAAa,CAAC,MAAM,GAAG,IAAI;EACV,CAAC;AAEtC,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAEzG,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnB,KAAK,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC;IAEzD,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,IAAI,CAAC,EAAE,IAAI,CAAC;CAEb,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO,SAAS,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,4CAsDvH,CAAA;AAED,eAAO,MAAM,SAAS,4BAGrB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@annotorious/react",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.14",
|
|
4
4
|
"description": "Annotorious React bindings",
|
|
5
5
|
"author": "Rainer Simon",
|
|
6
6
|
"license": "BSD-3-Clause",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"typescript": "5.6.3",
|
|
33
33
|
"vite": "^5.4.11",
|
|
34
34
|
"vite-plugin-dts": "^4.3.0",
|
|
35
|
-
"vite-tsconfig-paths": "^5.1.
|
|
35
|
+
"vite-tsconfig-paths": "^5.1.3"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"openseadragon": "^3.0.0 || ^4.0.0 || ^5.0.0",
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@annotorious/annotorious": "3.0.
|
|
49
|
-
"@annotorious/core": "3.0.
|
|
50
|
-
"@annotorious/openseadragon": "3.0.
|
|
51
|
-
"@floating-ui/react": "^0.26.
|
|
48
|
+
"@annotorious/annotorious": "3.0.14",
|
|
49
|
+
"@annotorious/core": "3.0.14",
|
|
50
|
+
"@annotorious/openseadragon": "3.0.14",
|
|
51
|
+
"@floating-ui/react": "^0.26.28",
|
|
52
52
|
"zustand": "^5.0.1"
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false
|