@annotorious/react 3.7.11 → 3.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,67 +1,73 @@
1
- import { jsxs as O, jsx as P } from "react/jsx-runtime";
2
- import { useState as A, useRef as D, useEffect as L } from "react";
3
- import { createPortal as S } from "react-dom";
4
- import w from "openseadragon";
5
- import { useAnnotator as b, useSelection as U } from "./annotorious-react.es2.js";
1
+ import { jsxs as E, jsx as h } from "react/jsx-runtime";
2
+ import { useState as O, useRef as P, useMemo as A, useEffect as L } from "react";
3
+ import { createPortal as D } from "react-dom";
4
+ import f from "openseadragon";
5
+ import { useAnnotator as S, useSelection as b } from "./annotorious-react.es2.js";
6
6
  /* empty css */
7
7
  /* empty css */
8
8
  import "@annotorious/core";
9
9
  import "@annotorious/annotorious";
10
- import { toClientRects as F } from "./annotorious-react.es15.js";
11
- import { useFloating as M, FloatingArrow as V } from "./annotorious-react.es14.js";
12
- import { useViewer as j } from "./annotorious-react.es8.js";
13
- import { inline as z, offset as H, flip as T, shift as X, arrow as Y } from "./annotorious-react.es17.js";
14
- import { autoUpdate as I } from "./annotorious-react.es16.js";
15
- import y from "./annotorious-react.es18.js";
16
- const N = (n, r) => {
17
- const { minX: d, minY: a, maxX: t, maxY: m } = r.bounds, { top: s, left: p } = n.element.getBoundingClientRect(), o = n.viewport.imageToViewerElementCoordinates(new w.Point(d, a)), l = n.viewport.imageToViewerElementCoordinates(new w.Point(t, m));
10
+ import { toClientRects as M } from "./annotorious-react.es15.js";
11
+ import { useFloating as U, FloatingArrow as F } from "./annotorious-react.es14.js";
12
+ import { useViewer as V } from "./annotorious-react.es8.js";
13
+ import { inline as j, offset as z, flip as H, shift as I, arrow as T } from "./annotorious-react.es17.js";
14
+ import { autoUpdate as X } from "./annotorious-react.es16.js";
15
+ import g from "./annotorious-react.es18.js";
16
+ const Y = (t, r) => {
17
+ const { minX: d, minY: a, maxX: n, maxY: m } = r.bounds, { top: s, left: c } = t.element.getBoundingClientRect(), o = t.viewport.imageToViewerElementCoordinates(new f.Point(d, a)), l = t.viewport.imageToViewerElementCoordinates(new f.Point(n, m));
18
18
  return new DOMRect(
19
- o.x + p,
19
+ o.x + c,
20
20
  o.y + s,
21
21
  l.x - o.x,
22
22
  l.y - o.y
23
23
  );
24
- }, ie = (n) => {
25
- var u, f, g;
26
- const r = b(), [d, a] = A(!1), t = j(), m = D(null), { selected: s, event: p } = U(), o = (u = s[0]) == null ? void 0 : u.annotation, l = (f = s[0]) == null ? void 0 : f.editable, { refs: c, floatingStyles: v, context: x } = M({
24
+ }, k = (t) => {
25
+ var r;
26
+ return ((r = t == null ? void 0 : t.target) == null ? void 0 : r.selector) && "geometry" in t.target.selector;
27
+ }, ie = (t) => {
28
+ var u;
29
+ const r = S(), [d, a] = O(!1), n = V(), m = P(null), { selected: s, event: c } = b(), [o, l] = A(() => {
30
+ const e = s[0];
31
+ return k(e == null ? void 0 : e.annotation) ? [e.annotation, e.editable] : [void 0, void 0];
32
+ }, [s]), { refs: p, floatingStyles: w, context: v } = U({
27
33
  open: d,
28
34
  onOpenChange: a,
29
- placement: n.placement,
35
+ placement: t.placement,
30
36
  middleware: [
31
- z(),
32
- H(10),
33
- T({ crossAxis: !0 }),
34
- X({
37
+ j(),
38
+ z(10),
39
+ H({ crossAxis: !0 }),
40
+ I({
35
41
  crossAxis: !0,
36
- boundary: t == null ? void 0 : t.element,
42
+ boundary: n == null ? void 0 : n.element,
37
43
  padding: { right: 5, left: 5, top: 10, bottom: 10 }
38
44
  }),
39
- Y({
45
+ T({
40
46
  element: m,
41
- padding: ((g = n.arrowProps) == null ? void 0 : g.padding) || 5
47
+ padding: ((u = t.arrowProps) == null ? void 0 : u.padding) || 5
42
48
  })
43
49
  ],
44
- whileElementsMounted: I
50
+ whileElementsMounted: X
45
51
  });
46
52
  L(() => {
47
- if (s.length === 0)
53
+ if (s.length === 0 || !o)
48
54
  a(!1);
49
55
  else {
50
56
  const e = () => {
51
- if (!t.element) return;
52
- const i = N(t, o.target.selector.geometry);
53
- c.setReference({
57
+ if (!n.element) return;
58
+ const i = Y(n, o.target.selector.geometry);
59
+ p.setReference({
54
60
  getBoundingClientRect: () => i,
55
- getClientRects: () => F(i)
61
+ getClientRects: () => M(i)
56
62
  });
57
63
  };
58
- return window.addEventListener("scroll", e, !0), window.addEventListener("resize", e), t.addHandler("update-viewport", e), e(), a(!0), () => {
59
- window.removeEventListener("scroll", e, !0), window.removeEventListener("resize", e), t.removeHandler("update-viewport", e);
64
+ return window.addEventListener("scroll", e, !0), window.addEventListener("resize", e), n.addHandler("update-viewport", e), e(), a(!0), () => {
65
+ window.removeEventListener("scroll", e, !0), window.removeEventListener("resize", e), n.removeHandler("update-viewport", e);
60
66
  };
61
67
  }
62
- }, [n.popup, s, t]);
63
- const R = (e) => {
64
- const i = e.id || y();
68
+ }, [t.popup, s, n]);
69
+ const y = (e) => {
70
+ const i = e.id || g();
65
71
  r.state.store.addBody({
66
72
  ...e,
67
73
  id: i,
@@ -69,46 +75,46 @@ const N = (n, r) => {
69
75
  created: e.created || /* @__PURE__ */ new Date(),
70
76
  creator: r.getUser()
71
77
  });
72
- }, B = (e) => {
78
+ }, x = (e) => {
73
79
  r.state.store.deleteBody({ id: e, annotation: o.id });
74
- }, C = (e, i) => {
75
- const E = i.id || y(), h = {
80
+ }, R = (e, i) => {
81
+ const B = i.id || g(), C = {
76
82
  updated: /* @__PURE__ */ new Date(),
77
83
  updatedBy: r.getUser(),
78
84
  ...i,
79
- id: E,
85
+ id: B,
80
86
  annotation: o.id
81
87
  };
82
- r.state.store.updateBody(e, h);
88
+ r.state.store.updateBody(e, C);
83
89
  };
84
- return d && o ? S(
85
- /* @__PURE__ */ O(
90
+ return d && o ? D(
91
+ /* @__PURE__ */ E(
86
92
  "div",
87
93
  {
88
94
  className: "a9s-popup a9s-image-popup",
89
- ref: c.setFloating,
90
- style: v,
95
+ ref: p.setFloating,
96
+ style: w,
91
97
  children: [
92
- n.arrow && /* @__PURE__ */ P(
93
- V,
98
+ t.arrow && /* @__PURE__ */ h(
99
+ F,
94
100
  {
95
101
  ref: m,
96
- context: x,
97
- ...n.arrowProps || {}
102
+ context: v,
103
+ ...t.arrowProps || {}
98
104
  }
99
105
  ),
100
- n.popup({
106
+ t.popup({
101
107
  annotation: o,
102
108
  editable: l,
103
- event: p,
104
- onCreateBody: R,
105
- onDeleteBody: B,
106
- onUpdateBody: C
109
+ event: c,
110
+ onCreateBody: y,
111
+ onDeleteBody: x,
112
+ onUpdateBody: R
107
113
  })
108
114
  ]
109
115
  }
110
116
  ),
111
- t.element
117
+ n.element
112
118
  ) : null;
113
119
  };
114
120
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"annotorious-react.es9.js","sources":["../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\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'> & { padding?: number };\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: props.arrowProps?.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) ? createPortal(\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 , viewer.element) : 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","_c","autoUpdate","useEffect","setPosition","rect","toClientRects","onCreateBody","body","id","uuidv4","onDeleteBody","onUpdateBody","current","next","updated","createPortal","jsxs","jsx","FloatingArrow"],"mappings":"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"}
1
+ {"version":3,"file":"annotorious-react.es9.js","sources":["../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"sourcesContent":["import { ReactNode, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\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 { Annotation, 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\n/**\n * Note that the store may hold different types of annotations.\n * Ignore any that the popup cannot handle.\n */\nconst isImageAnnotationLike = (annotation?: Annotation) =>\n annotation?.target?.selector && 'geometry' in annotation.target.selector;\n\ninterface OpenSeadragonAnnotationPopupProps {\n\n arrow?: boolean;\n\n arrowProps?: Omit<FloatingArrowProps, 'context' | 'ref'> & { padding?: number };\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, editable]= useMemo(() => {\n const first = selected[0];\n \n if (isImageAnnotationLike(first?.annotation)) {\n return [first.annotation, first.editable];\n } else {\n return [undefined, undefined];\n }\n }, [selected]);\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: props.arrowProps?.padding || 5\n })\n ],\n whileElementsMounted: autoUpdate\n });\n\n useEffect(() => {\n if (selected.length === 0 || !annotation) {\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) ? createPortal(\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 , viewer.element) : null;\n\n}"],"names":["toDOMRect","viewer","geometry","minX","minY","maxX","maxY","top","left","topLeft","OpenSeadragon","bottomRight","isImageAnnotationLike","annotation","_a","OpenSeadragonAnnotationPopup","props","anno","useAnnotator","isOpen","setIsOpen","useState","useViewer","arrowRef","useRef","selected","event","useSelection","editable","useMemo","first","refs","floatingStyles","context","useFloating","inline","offset","flip","shift","arrow","autoUpdate","useEffect","setPosition","rect","toClientRects","onCreateBody","body","id","uuidv4","onDeleteBody","onUpdateBody","current","next","updated","createPortal","jsxs","jsx","FloatingArrow"],"mappings":"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"}
@@ -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;AAK/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,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEhF,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;CAEzC;AAED,eAAO,MAAM,4BAA4B,GAAI,OAAO,iCAAiC,gCA4HpF,CAAA"}
1
+ {"version":3,"file":"OpenSeadragonAnnotationPopup.d.ts","sourceRoot":"","sources":["../../src/openseadragon/OpenSeadragonAnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwC,MAAM,OAAO,CAAC;AAKxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EASL,kBAAkB,EAClB,SAAS,EACV,MAAM,oBAAoB,CAAC;AAyB5B,UAAU,iCAAiC;IAEzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEhF,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;CAEzC;AAED,eAAO,MAAM,4BAA4B,GAAI,OAAO,iCAAiC,gCAkIpF,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annotorious/react",
3
- "version": "3.7.11",
3
+ "version": "3.7.12",
4
4
  "description": "Annotorious React bindings",
5
5
  "author": "Rainer Simon",
6
6
  "license": "BSD-3-Clause",
@@ -45,9 +45,9 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@annotorious/annotorious": "3.7.11",
49
- "@annotorious/core": "3.7.11",
50
- "@annotorious/openseadragon": "3.7.11",
48
+ "@annotorious/annotorious": "3.7.12",
49
+ "@annotorious/core": "3.7.12",
50
+ "@annotorious/openseadragon": "3.7.12",
51
51
  "@floating-ui/react": "^0.27.16",
52
52
  "dequal": "^2.0.3",
53
53
  "zustand": "^5.0.8"