@soomo/react-text-annotator 3.2.0-staging.5 → 3.2.0-staging.7

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.
Files changed (74) hide show
  1. package/dist/TextAnnotationPopup/TextAnnotationPopup.d.ts.map +1 -1
  2. package/dist/TextAnnotationPopup/useAnnouncePopupNavigation.d.ts.map +1 -0
  3. package/dist/hooks/index.d.ts +1 -2
  4. package/dist/hooks/index.d.ts.map +1 -1
  5. package/dist/hooks/useAnnotationQuoteIdle.d.ts +4 -0
  6. package/dist/hooks/useAnnotationQuoteIdle.d.ts.map +1 -0
  7. package/dist/react-text-annotator.css +1 -31
  8. package/dist/react-text-annotator.es.js +212 -25
  9. package/dist/react-text-annotator.es.js.map +1 -1
  10. package/package.json +14 -13
  11. package/dist/hooks/useAnnotationQuoteIdling.d.ts +0 -4
  12. package/dist/hooks/useAnnotationQuoteIdling.d.ts.map +0 -1
  13. package/dist/hooks/useAnnouncePopupNavigation.d.ts.map +0 -1
  14. package/dist/react-text-annotator.es10.js +0 -504
  15. package/dist/react-text-annotator.es10.js.map +0 -1
  16. package/dist/react-text-annotator.es11.js +0 -85
  17. package/dist/react-text-annotator.es11.js.map +0 -1
  18. package/dist/react-text-annotator.es12.js +0 -48
  19. package/dist/react-text-annotator.es12.js.map +0 -1
  20. package/dist/react-text-annotator.es13.js +0 -28
  21. package/dist/react-text-annotator.es13.js.map +0 -1
  22. package/dist/react-text-annotator.es14.js +0 -1646
  23. package/dist/react-text-annotator.es14.js.map +0 -1
  24. package/dist/react-text-annotator.es15.js +0 -13
  25. package/dist/react-text-annotator.es15.js.map +0 -1
  26. package/dist/react-text-annotator.es17.js +0 -607
  27. package/dist/react-text-annotator.es17.js.map +0 -1
  28. package/dist/react-text-annotator.es18.js +0 -285
  29. package/dist/react-text-annotator.es18.js.map +0 -1
  30. package/dist/react-text-annotator.es19.js +0 -18
  31. package/dist/react-text-annotator.es19.js.map +0 -1
  32. package/dist/react-text-annotator.es2.js +0 -67
  33. package/dist/react-text-annotator.es2.js.map +0 -1
  34. package/dist/react-text-annotator.es20.js +0 -5
  35. package/dist/react-text-annotator.es20.js.map +0 -1
  36. package/dist/react-text-annotator.es21.js +0 -34
  37. package/dist/react-text-annotator.es21.js.map +0 -1
  38. package/dist/react-text-annotator.es22.js +0 -891
  39. package/dist/react-text-annotator.es22.js.map +0 -1
  40. package/dist/react-text-annotator.es23.js +0 -5
  41. package/dist/react-text-annotator.es23.js.map +0 -1
  42. package/dist/react-text-annotator.es24.js +0 -5
  43. package/dist/react-text-annotator.es24.js.map +0 -1
  44. package/dist/react-text-annotator.es25.js +0 -117
  45. package/dist/react-text-annotator.es25.js.map +0 -1
  46. package/dist/react-text-annotator.es26.js +0 -312
  47. package/dist/react-text-annotator.es26.js.map +0 -1
  48. package/dist/react-text-annotator.es27.js +0 -61
  49. package/dist/react-text-annotator.es27.js.map +0 -1
  50. package/dist/react-text-annotator.es28.js +0 -23
  51. package/dist/react-text-annotator.es28.js.map +0 -1
  52. package/dist/react-text-annotator.es29.js +0 -130
  53. package/dist/react-text-annotator.es29.js.map +0 -1
  54. package/dist/react-text-annotator.es3.js +0 -29
  55. package/dist/react-text-annotator.es3.js.map +0 -1
  56. package/dist/react-text-annotator.es30.js +0 -167
  57. package/dist/react-text-annotator.es30.js.map +0 -1
  58. package/dist/react-text-annotator.es31.js +0 -314
  59. package/dist/react-text-annotator.es31.js.map +0 -1
  60. package/dist/react-text-annotator.es32.js +0 -152
  61. package/dist/react-text-annotator.es32.js.map +0 -1
  62. package/dist/react-text-annotator.es33.js +0 -629
  63. package/dist/react-text-annotator.es33.js.map +0 -1
  64. package/dist/react-text-annotator.es4.js +0 -43
  65. package/dist/react-text-annotator.es4.js.map +0 -1
  66. package/dist/react-text-annotator.es5.js +0 -48
  67. package/dist/react-text-annotator.es5.js.map +0 -1
  68. package/dist/react-text-annotator.es6.js +0 -29
  69. package/dist/react-text-annotator.es6.js.map +0 -1
  70. package/dist/react-text-annotator.es7.js +0 -143
  71. package/dist/react-text-annotator.es7.js.map +0 -1
  72. package/dist/react-text-annotator.es8.js +0 -6
  73. package/dist/react-text-annotator.es8.js.map +0 -1
  74. /package/dist/{hooks → TextAnnotationPopup}/useAnnouncePopupNavigation.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TextAnnotationPopup.d.ts","sourceRoot":"","sources":["../../src/TextAnnotationPopup/TextAnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,SAAS,EAAqD,MAAM,OAAO,CAAC;AAEhG,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,kBAAkB,EAUnB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,2BAA2B,CAAC;AAEnC,UAAU,wBAAwB;IAEhC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAEzD,KAAK,CAAC,KAAK,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAE1D;AAED,MAAM,WAAW,+BAA+B;IAE9C,UAAU,EAAE,cAAc,CAAC;IAE3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;CAEtC;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAmJ5D,CAAC;AAEF;;;;;;;;;;EAUE;AAEF,mCAAmC;AACnC,kDAAkD;AAClD,eAAO,MAAM,kBAAkB,GAAI,OAAO,wBAAwB,4CAOjE,CAAC"}
1
+ {"version":3,"file":"TextAnnotationPopup.d.ts","sourceRoot":"","sources":["../../src/TextAnnotationPopup/TextAnnotationPopup.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,SAAS,EAAqD,MAAM,OAAO,CAAC;AAEhG,OAAO,EAEL,KAAK,cAAc,EAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAKL,kBAAkB,EAUnB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,2BAA2B,CAAC;AAEnC,UAAU,wBAAwB;IAEhC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAEzD,KAAK,CAAC,KAAK,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAE1D;AAED,MAAM,WAAW,+BAA+B;IAE9C,UAAU,EAAE,cAAc,CAAC;IAE3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;CAEtC;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAmJ5D,CAAC;AAEF;;;;;;;;;;EAUE;AAEF,mCAAmC;AACnC,kDAAkD;AAClD,eAAO,MAAM,kBAAkB,GAAI,OAAO,wBAAwB,4CAOjE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnouncePopupNavigation.d.ts","sourceRoot":"","sources":["../../src/TextAnnotationPopup/useAnnouncePopupNavigation.ts"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,wBAAwB,SA2DxE,CAAC"}
@@ -1,3 +1,2 @@
1
- export { useAnnouncePopupNavigation } from './useAnnouncePopupNavigation';
2
- export { useAnnotationQuoteIdling } from './useAnnotationQuoteIdling';
1
+ export * from './useAnnotationQuoteIdle';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const useAnnotationQuoteIdle: (annotationId: string | undefined, options?: {
2
+ timeout: number;
3
+ }) => boolean;
4
+ //# sourceMappingURL=useAnnotationQuoteIdle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnotationQuoteIdle.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnotationQuoteIdle.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,GACjC,cAAc,MAAM,GAAG,SAAS,EAChC,UAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAqB,YA0ChD,CAAC"}
@@ -1,31 +1 @@
1
- .r6o-canvas-highlight-layer{position:fixed;top:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none}.r6o-canvas-highlight-layer.bg{mix-blend-mode:multiply;z-index:1}.r6o-annotatable .r6o-span-highlight-layer{position:absolute;top:0;left:0;width:100%;height:100%;mix-blend-mode:multiply;pointer-events:none;overflow:hidden;z-index:1}.r6o-annotatable .r6o-span-highlight-layer.hidden{display:none}.r6o-annotatable .r6o-span-highlight-layer .r6o-annotation{position:absolute;display:block;border-style:solid;border-width:0;box-sizing:content-box}.r6o-presence-layer{left:0;position:fixed;top:0;bottom:0;width:100vw;pointer-events:none}html,body{overscroll-behavior-y:none}.r6o-annotatable{position:relative;-webkit-tap-highlight-color:transparent}.r6o-annotatable.no-focus-outline{outline:none}.hovered *{cursor:pointer}*::selection,::selection{background:#0080ff2e}::-moz-selection{background:#0080ff2e}
2
- /*
3
- * Close message should be visible only to the keyboard
4
- * or the screen reader users as the popup behavior hint
5
- * Inspired by https://gist.github.com/ffoodd/000b59f431e3e64e4ce1a24d5bb36034
6
- */
7
- .r6o-popup-sr-only {
8
- border: 0 !important;
9
- clip: rect(1px, 1px, 1px, 1px);
10
- -webkit-clip-path: inset(50%);
11
- clip-path: inset(50%);
12
- height: 1px;
13
- margin: -1px;
14
- overflow: hidden;
15
- padding: 0;
16
- position: absolute;
17
- width: 1px;
18
- white-space: nowrap;
19
- }
20
-
21
- .r6o-popup-sr-only:focus,
22
- .r6o-popup-sr-only:active {
23
- clip: auto;
24
- -webkit-clip-path: none;
25
- clip-path: none;
26
- height: auto;
27
- margin: auto;
28
- overflow: visible;
29
- width: auto;
30
- white-space: normal;
31
- }
1
+ .r6o-popup-sr-only{border:0!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.r6o-popup-sr-only:focus,.r6o-popup-sr-only:active{clip:auto;-webkit-clip-path:none;clip-path:none;height:auto;margin:auto;overflow:visible;width:auto;white-space:normal}
@@ -1,28 +1,215 @@
1
- import { CETEIcean } from "./react-text-annotator.es2.js";
2
- import { TEIAnnotator } from "./react-text-annotator.es3.js";
3
- import { useAnnouncePopupNavigation } from "./react-text-annotator.es4.js";
4
- import { useAnnotationQuoteIdling } from "./react-text-annotator.es5.js";
5
- import { TextAnnotator } from "./react-text-annotator.es6.js";
6
- import { TextAnnotationPopup, TextAnnotatorPopup } from "./react-text-annotator.es7.js";
7
- import { Origin, UserSelectAction, createBody } from "@annotorious/core";
8
- import { AnnotoriousPlugin } from "@annotorious/react";
9
- import { W3CTextFormat, parseW3CTextAnnotation, serializeW3CTextAnnotation } from "@soomo/text-annotator";
10
- import { serializeW3CTEIAnnotation } from "@recogito/text-annotator-tei";
1
+ import { jsx as g, Fragment as U, jsxs as W } from "react/jsx-runtime";
2
+ import { useRef as y, useEffect as c, useContext as P, useCallback as x, Children as _, cloneElement as j, useState as S, useMemo as D } from "react";
3
+ import H from "CETEIcean";
4
+ import { AnnotoriousContext as R, useAnnotationStore as Q, Origin as z, useAnnotator as V, useSelection as Y } from "@annotorious/react";
5
+ import { AnnotoriousPlugin as Oe } from "@annotorious/react";
6
+ import { TEIPlugin as $ } from "@recogito/text-annotator-tei";
7
+ import { serializeW3CTEIAnnotation as Pe } from "@recogito/text-annotator-tei";
8
+ import { createTextAnnotator as I, toViewportBounds as F, toDomRectList as J, NOT_ANNOTATABLE_CLASS as q } from "@soomo/text-annotator";
9
+ import { W3CTextFormat as Ie, parseW3CTextAnnotation as Be, serializeW3CTextAnnotation as Ne } from "@soomo/text-annotator";
10
+ import "@soomo/text-annotator/dist/text-annotator.css";
11
+ import { Ignore as G } from "@annotorious/core";
12
+ import { Origin as ke, UserSelectAction as Ue, createBody as We } from "@annotorious/core";
13
+ import { useFloating as K, autoUpdate as X, inline as Z, offset as ee, flip as te, shift as ne, arrow as oe, useDismiss as re, useRole as se, useInteractions as ie, FloatingPortal as le, FloatingFocusManager as ce, FloatingArrow as ae } from "@floating-ui/react";
14
+ const O = {
15
+ tei: {
16
+ ref: (e) => {
17
+ const r = document.createElement("a");
18
+ for (; e.firstChild; )
19
+ r.appendChild(e.removeChild(e.firstChild));
20
+ r.setAttribute("href", e.getAttribute("target")), e.appendChild(r);
21
+ },
22
+ // Cf. https://github.com/TEIC/CETEIcean/issues/67
23
+ graphic: (e) => {
24
+ var l;
25
+ const r = new Image();
26
+ r.src = (l = e.getAttribute("url")) == null ? void 0 : l.trim(), e.hasAttribute("width") && r.setAttribute("width", e.getAttribute("width")), e.hasAttribute("height") && r.setAttribute("height", e.getAttribute("height")), e.appendChild(r);
27
+ },
28
+ list: null,
29
+ note: null,
30
+ table: null,
31
+ teiHeader: (e) => {
32
+ e.hidden = !0;
33
+ }
34
+ }
35
+ }, ve = (e) => {
36
+ const r = y(null);
37
+ return c(() => {
38
+ var l;
39
+ if (e.tei) {
40
+ const n = new H(e.initArgs);
41
+ n.addBehaviors({
42
+ ...O,
43
+ ...e.behaviors || {},
44
+ tei: {
45
+ ...O.tei,
46
+ ...((l = e.behaviors) == null ? void 0 : l.tei) || {}
47
+ }
48
+ }), n.makeHTML5(e.tei, (s) => {
49
+ r.current.appendChild(s), e.onLoad(r.current);
50
+ });
51
+ }
52
+ return () => {
53
+ r.current.innerHTML = "";
54
+ };
55
+ }, [e.tei, JSON.stringify(e.initArgs), e.onLoad]), /* @__PURE__ */ g(
56
+ "div",
57
+ {
58
+ ref: r,
59
+ className: "tei-container"
60
+ }
61
+ );
62
+ }, xe = (e) => {
63
+ const { children: r, ...l } = e, { anno: n, setAnno: s } = P(R), i = x((t) => {
64
+ const a = $(I(t, l));
65
+ s(a);
66
+ }, []);
67
+ return c(() => {
68
+ n && n.setStyle(e.style);
69
+ }, [e.style]), c(() => {
70
+ n && n.setFilter(e.filter);
71
+ }, [e.filter]), e.children ? /* @__PURE__ */ g(U, { children: _.toArray(e.children).map((t) => j(t, { onLoad: i })) }) : null;
72
+ }, v = (e, r = { timeout: 250 }) => {
73
+ const l = Q(), [n, s] = S(!0);
74
+ return c(() => {
75
+ if (!l || !e) return;
76
+ let i;
77
+ const t = (a) => {
78
+ const { changes: { updated: u } } = a;
79
+ (u == null ? void 0 : u.some((o) => {
80
+ const { targetUpdated: f } = o;
81
+ if (f) {
82
+ const { oldTarget: p, newTarget: m } = f;
83
+ return ue(p, m);
84
+ }
85
+ })) && (s(!1), clearTimeout(i), i = setTimeout(() => s(!0), r.timeout));
86
+ };
87
+ return l.observe(t, {
88
+ annotations: e,
89
+ ignore: G.BODY_ONLY,
90
+ origin: z.LOCAL
91
+ }), () => {
92
+ clearTimeout(i), l.unobserve(t);
93
+ };
94
+ }, [l, e, r.timeout]), n;
95
+ }, ue = (e, r) => {
96
+ const { selector: l } = e, n = l.map(({ quote: t }) => t), { selector: s } = r, i = s.map(({ quote: t }) => t);
97
+ return n.join() !== i.join();
98
+ }, Se = (e) => {
99
+ const r = y(null), { className: l, children: n, ...s } = e, { style: i, filter: t, user: a, annotatingEnabled: u, userSelectAction: A } = s, { anno: o, setAnno: f } = P(R);
100
+ return c(() => {
101
+ if (!f) return;
102
+ const p = typeof s.adapter == "function" ? s.adapter(r.current) : s.adapter, m = I(r.current, { ...s, adapter: p });
103
+ return f(m), () => m.destroy();
104
+ }, [f]), c(() => o == null ? void 0 : o.setStyle(i), [o, i]), c(() => o == null ? void 0 : o.setFilter(t), [o, t]), c(() => o == null ? void 0 : o.setFilter(t), [o, t]), c(() => o == null ? void 0 : o.setUserSelectAction(A), [o, A]), c(() => o == null ? void 0 : o.setUser(a), [o, a]), c(() => o == null ? void 0 : o.setAnnotatingEnabled(u), [o, u]), /* @__PURE__ */ g("div", { ref: r, className: `r6o-annotatable no-focus-outline ${l}`, children: n });
105
+ }, L = () => {
106
+ if (typeof navigator > "u") return !1;
107
+ var e = navigator.userAgent || navigator.vendor || (window == null ? void 0 : window.opera);
108
+ return !!(/android/i.test(e) || /iPad|iPhone/.test(e) && !window.MSStream);
109
+ }, de = (e) => {
110
+ var E;
111
+ const { popup: r, ariaNavigationMessage: l } = e, n = V(), { selected: s, event: i } = Y(), t = (E = s[0]) == null ? void 0 : E.annotation;
112
+ v(t == null ? void 0 : t.id);
113
+ const [a, u] = S((s == null ? void 0 : s.length) > 0), A = () => n == null ? void 0 : n.cancelSelected(), [o, f] = S(!1);
114
+ x(() => f(!0), []);
115
+ const p = x(() => f(!1), []);
116
+ c(() => {
117
+ a || p();
118
+ }, [a, p]);
119
+ const m = y(null), { refs: T, floatingStyles: B, update: C, context: w } = K({
120
+ placement: L() ? "bottom" : "top",
121
+ open: a,
122
+ onOpenChange: (d, h, b) => {
123
+ !d && (b === "escape-key" || b === "focus-out") && (u(d), A());
124
+ },
125
+ middleware: [
126
+ Z(),
127
+ ee(10),
128
+ te({ crossAxis: !0 }),
129
+ ne({ crossAxis: !0, padding: 10 }),
130
+ oe({ element: m })
131
+ ],
132
+ whileElementsMounted: X
133
+ }), N = re(w), M = se(w, { role: "dialog" }), { getFloatingProps: fe } = ie([N, M]);
134
+ c(() => {
135
+ if (!n) return;
136
+ const d = t == null ? void 0 : t.id, h = t == null ? void 0 : t.target.selector.length;
137
+ if (d && h > 0 && v) {
138
+ const b = n == null ? void 0 : n.state.store.getAnnotationBounds(t.id);
139
+ u(!!b);
140
+ } else
141
+ u(!1);
142
+ }, [t == null ? void 0 : t.id, t == null ? void 0 : t.target.selector, v, n == null ? void 0 : n.state.store]), c(() => {
143
+ n && (a && (t != null && t.id) ? T.setPositionReference({
144
+ getBoundingClientRect: () => {
145
+ const d = n.state.store.getAnnotationBounds(t.id);
146
+ return d ? F(d, n.element.getBoundingClientRect()) : new DOMRect();
147
+ },
148
+ getClientRects: () => {
149
+ const h = n.state.store.getAnnotationRects(t.id).map(
150
+ (b) => F(b, n.element.getBoundingClientRect())
151
+ );
152
+ return J(h);
153
+ }
154
+ }) : T.setPositionReference(null));
155
+ }, [a, t == null ? void 0 : t.id, t == null ? void 0 : t.target, n]), c(() => {
156
+ const d = { attributes: !0, childList: !0, subtree: !0 }, h = new MutationObserver(() => C());
157
+ return h.observe(document.body, d), window.document.addEventListener("scroll", C, !0), () => {
158
+ h.disconnect(), window.document.removeEventListener("scroll", C, !0);
159
+ };
160
+ }, [C]);
161
+ const k = D(() => (i == null ? void 0 : i.type) === "keyup" || (i == null ? void 0 : i.type) === "contextmenu" || L() ? -1 : 0, [i]);
162
+ return a && t ? /* @__PURE__ */ g(le, { children: /* @__PURE__ */ g(
163
+ ce,
164
+ {
165
+ context: w,
166
+ modal: !1,
167
+ closeOnFocusOut: !0,
168
+ returnFocus: !1,
169
+ initialFocus: k,
170
+ children: /* @__PURE__ */ W(
171
+ "div",
172
+ {
173
+ className: `a9s-popup r6o-popup annotation-popup r6o-text-popup ${q}`,
174
+ ref: T.setFloating,
175
+ style: B,
176
+ children: [
177
+ e.popup({
178
+ annotation: s[0].annotation,
179
+ editable: s[0].editable,
180
+ event: i
181
+ }),
182
+ e.arrow && /* @__PURE__ */ g(
183
+ ae,
184
+ {
185
+ ref: m,
186
+ context: w,
187
+ ...e.arrowProps || {}
188
+ }
189
+ ),
190
+ /* @__PURE__ */ g("button", { className: "r6o-popup-sr-only", "aria-live": "assertive", onClick: A, children: e.ariaCloseWarning || "Click or leave this dialog to close it." })
191
+ ]
192
+ }
193
+ )
194
+ }
195
+ ) }) : null;
196
+ }, ye = (e) => (c(() => {
197
+ console.warn("TextAnnotatorPopup is deprecated and will be removed in a future version. Please use TextAnnotationPopup instead.");
198
+ }, []), /* @__PURE__ */ g(de, { ...e }));
11
199
  export {
12
- AnnotoriousPlugin,
13
- CETEIcean,
14
- Origin,
15
- TEIAnnotator,
16
- TextAnnotationPopup,
17
- TextAnnotator,
18
- TextAnnotatorPopup,
19
- UserSelectAction,
20
- W3CTextFormat,
21
- createBody,
22
- parseW3CTextAnnotation,
23
- serializeW3CTEIAnnotation,
24
- serializeW3CTextAnnotation,
25
- useAnnotationQuoteIdling,
26
- useAnnouncePopupNavigation
200
+ Oe as AnnotoriousPlugin,
201
+ ve as CETEIcean,
202
+ ke as Origin,
203
+ xe as TEIAnnotator,
204
+ de as TextAnnotationPopup,
205
+ Se as TextAnnotator,
206
+ ye as TextAnnotatorPopup,
207
+ Ue as UserSelectAction,
208
+ Ie as W3CTextFormat,
209
+ We as createBody,
210
+ Be as parseW3CTextAnnotation,
211
+ Pe as serializeW3CTEIAnnotation,
212
+ Ne as serializeW3CTextAnnotation,
213
+ v as useAnnotationQuoteIdle
27
214
  };
28
215
  //# sourceMappingURL=react-text-annotator.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-text-annotator.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"react-text-annotator.es.js","sources":["../src/tei/CETEIcean.tsx","../src/tei/TEIAnnotator.tsx","../src/hooks/useAnnotationQuoteIdle.ts","../src/TextAnnotator.tsx","../src/TextAnnotationPopup/isMobile.ts","../src/TextAnnotationPopup/TextAnnotationPopup.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport CETEI from 'CETEIcean';\n\ninterface CETEIceanProps {\n\n initArgs?: any;\n\n tei?: string;\n\n onLoad?(element: Element): void;\n\n behaviors?: any;\n\n}\n\n// Override default list, note, table, and ref behaviors \n// so they don't introduce text into the DOM that interferes\n// with annotation. Apply a patch to graphics for robustness.\nconst PRESET_BEHAVIORS = {\n tei: {\n ref: (elem: Element) => {\n const a = document.createElement('a');\n\n while(elem.firstChild) {\n a.appendChild(elem.removeChild(elem.firstChild));\n }\n\n a.setAttribute('href', elem.getAttribute('target'));\n\n elem.appendChild(a);\n },\n // Cf. https://github.com/TEIC/CETEIcean/issues/67\n graphic: (elem: Element) => {\n const content = new Image();\n content.src = elem.getAttribute('url')?.trim();\n\n if (elem.hasAttribute('width'))\n content.setAttribute('width', elem.getAttribute('width'));\n\n if (elem.hasAttribute('height'))\n content.setAttribute('height', elem.getAttribute('height'));\n\n elem.appendChild(content);\n },\n list: null,\n note: null,\n table: null,\n teiHeader: (elem: HTMLElement) => {\n elem.hidden = true;\n }\n }\n}\n\nexport const CETEIcean = (props: CETEIceanProps) => {\n\n const el = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (props.tei) {\n const ceteicean = new CETEI(props.initArgs);\n\n ceteicean.addBehaviors({\n ...PRESET_BEHAVIORS,\n ...(props.behaviors || {}),\n tei: {\n ...PRESET_BEHAVIORS.tei,\n ...(props.behaviors?.tei || {})\n }\n });\n\n ceteicean.makeHTML5(props.tei, (data: Element) => {\n el.current.appendChild(data);\n props.onLoad(el.current);\n });\n }\n\n return () => {\n el.current.innerHTML = '';\n }\n }, [props.tei, JSON.stringify(props.initArgs), props.onLoad]);\n\n return (\n <div \n ref={el}\n className=\"tei-container\" />\n )\n\n}","import { Children, JSX, ReactElement, ReactNode, cloneElement, useCallback, useContext, useEffect } from 'react';\nimport { AnnotoriousContext, Filter } from '@annotorious/react';\nimport { TEIPlugin } from '@recogito/text-annotator-tei';\nimport { createTextAnnotator, HighlightStyleExpression } from '@soomo/text-annotator';\nimport type { TextAnnotatorOptions } from '@soomo/text-annotator';\n\nimport '@soomo/text-annotator/dist/text-annotator.css';\n\nexport type TEIAnnotatorProps = TextAnnotatorOptions & {\n\n children?: ReactNode | JSX.Element;\n\n filter?: Filter;\n\n style?: HighlightStyleExpression\n\n}\n\nexport const TEIAnnotator = (props: TEIAnnotatorProps) => {\n\n const { children, ...opts } = props;\n\n const { anno, setAnno } = useContext(AnnotoriousContext);\n\n const onLoad = useCallback((element: HTMLElement) => {\n const anno = TEIPlugin(createTextAnnotator(element, opts));\n setAnno(anno);\n }, []);\n\n useEffect(() => {\n if (!anno)\n return;\n \n anno.setStyle(props.style);\n }, [props.style]);\n\n useEffect(() => {\n if (!anno)\n return;\n \n anno.setFilter(props.filter);\n }, [props.filter]);\n\n return props.children ? (\n <>\n {Children.toArray(props.children).map(child => \n cloneElement(child as ReactElement, { onLoad } as any))}\n </>\n ) : null;\n\n}\n","import { useEffect, useState } from 'react';\nimport { Origin, useAnnotationStore } from '@annotorious/react';\nimport { Ignore, type StoreChangeEvent } from '@annotorious/core';\nimport type { TextAnnotation, TextAnnotationStore, TextAnnotationTarget } from '@soomo/text-annotator';\n\nexport const useAnnotationQuoteIdle = (\n annotationId: string | undefined,\n options: { timeout: number } = { timeout: 250 }\n) => {\n const store = useAnnotationStore<TextAnnotationStore>();\n\n const [isIdle, setIsIdle] = useState(true);\n\n useEffect(() => {\n if (!store || !annotationId) return;\n\n let idleTimeout: ReturnType<typeof setTimeout>;\n\n const scheduleSetIsIdle = (event: StoreChangeEvent<TextAnnotation>) => {\n const { changes: { updated } } = event;\n\n const hasChanged = updated?.some(update => {\n const { targetUpdated } = update;\n if (targetUpdated) {\n const { oldTarget, newTarget } = targetUpdated;\n return hasQuoteChanged(oldTarget, newTarget);\n }\n });\n\n if (hasChanged) {\n setIsIdle(false);\n clearTimeout(idleTimeout);\n idleTimeout = setTimeout(() => setIsIdle(true), options.timeout);\n }\n };\n\n store.observe(scheduleSetIsIdle, {\n annotations: annotationId,\n ignore: Ignore.BODY_ONLY,\n origin: Origin.LOCAL\n });\n\n return () => {\n clearTimeout(idleTimeout);\n store.unobserve(scheduleSetIsIdle);\n };\n }, [store, annotationId, options.timeout]);\n\n return isIdle;\n};\n\nconst hasQuoteChanged = (oldValue: TextAnnotationTarget, newValue: TextAnnotationTarget) => {\n const { selector: oldSelector } = oldValue;\n const oldQuotes = oldSelector.map(({ quote }) => quote);\n\n const { selector: newSelector } = newValue;\n const newQuotes = newSelector.map(({ quote }) => quote);\n\n return oldQuotes.join() !== newQuotes.join();\n};\n","import { JSX, ReactNode, useContext, useEffect, useRef } from 'react';\nimport { AnnotoriousContext, Filter } from '@annotorious/react';\nimport type { FormatAdapter } from '@annotorious/core';\nimport type { HighlightStyleExpression, TextAnnotation, TextAnnotatorOptions } from '@soomo/text-annotator';\nimport { createTextAnnotator } from '@soomo/text-annotator';\n\nimport '@soomo/text-annotator/dist/text-annotator.css';\n\nexport interface TextAnnotatorProps<I extends TextAnnotation = TextAnnotation, E extends unknown = TextAnnotation> extends Omit<TextAnnotatorOptions<I, E>, 'adapter'> {\n\n children?: ReactNode | JSX.Element;\n\n adapter?: FormatAdapter<I, E> | ((container: HTMLElement) => FormatAdapter<I, E>) | null;\n\n filter?: Filter<I>;\n\n style?: HighlightStyleExpression;\n\n className?: string;\n\n}\n\nexport const TextAnnotator = <I extends TextAnnotation = TextAnnotation, E extends unknown = TextAnnotation>(\n props: TextAnnotatorProps<I, E>\n) => {\n\n const el = useRef<HTMLDivElement>(null);\n\n const { className, children, ...opts } = props;\n const { style, filter, user, annotatingEnabled, userSelectAction } = opts;\n\n const { anno, setAnno } = useContext(AnnotoriousContext);\n\n useEffect(() => {\n if (!setAnno) return;\n\n const adapter = typeof opts.adapter === 'function' ? opts.adapter(el.current) : opts.adapter;\n\n const anno = createTextAnnotator(el.current, { ...opts, adapter });\n setAnno(anno);\n\n return () => anno.destroy();\n }, [setAnno]);\n\n useEffect(() => anno?.setStyle(style), [anno, style]);\n\n useEffect(() => anno?.setFilter(filter), [anno, filter]);\n\n useEffect(() => anno?.setFilter(filter), [anno, filter]);\n\n useEffect(() => anno?.setUserSelectAction(userSelectAction), [anno, userSelectAction]);\n\n useEffect(() => anno?.setUser(user), [anno, user]);\n\n useEffect(() => anno?.setAnnotatingEnabled(annotatingEnabled), [anno, annotatingEnabled]);\n\n return (\n <div ref={el} className={`r6o-annotatable no-focus-outline ${className}`}>\n {children}\n </div>\n );\n\n};\n","// https://stackoverflow.com/questions/21741841/detecting-ios-android-operating-system\nexport const isMobile = () => {\n if (typeof navigator === 'undefined') return false;\n\n // @ts-ignore\n var userAgent: string = navigator.userAgent || navigator.vendor || window?.opera;\n\n if (/android/i.test(userAgent)) \n return true;\n\n // @ts-ignore\n // Note: as of recently, this NO LONGER DETECTS FIREFOX ON iOS!\n // This means FF/iOS will behave like on the desktop, and loose\n // selection handlebars after the popup opens.\n if (/iPad|iPhone/.test(userAgent) && !window.MSStream)\n return true;\n\n return false;\n}","import React, { FC, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useAnnotator, useSelection } from '@annotorious/react';\nimport {\n NOT_ANNOTATABLE_CLASS,\n type TextAnnotation,\n type TextAnnotator,\n toDomRectList,\n toViewportBounds\n} from '@soomo/text-annotator';\nimport {\n arrow,\n autoUpdate,\n flip,\n FloatingArrow,\n FloatingArrowProps,\n FloatingFocusManager,\n FloatingPortal,\n inline,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole\n} from '@floating-ui/react';\nimport { isMobile } from './isMobile';\nimport { useAnnotationQuoteIdle } from '../hooks';\n\nimport './TextAnnotationPopup.css';\n\ninterface TextAnnotationPopupProps {\n\n ariaNavigationMessage?: string;\n\n ariaCloseWarning?: string;\n\n arrow?: boolean;\n\n arrowProps?: Omit<FloatingArrowProps, 'context' | 'ref'>;\n\n popup(props: TextAnnotationPopupContentProps): ReactNode;\n\n}\n\nexport interface TextAnnotationPopupContentProps {\n\n annotation: TextAnnotation;\n\n editable?: boolean;\n\n event?: PointerEvent | KeyboardEvent;\n\n}\n\nexport const TextAnnotationPopup: FC<TextAnnotationPopupProps> = (props) => {\n\n const { popup, ariaNavigationMessage } = props;\n\n const r = useAnnotator<TextAnnotator>();\n\n const { selected, event } = useSelection<TextAnnotation>();\n const annotation = selected[0]?.annotation;\n\n const isAnnotationQuoteIdle = useAnnotationQuoteIdle(annotation?.id);\n\n const [isOpen, setOpen] = useState(selected?.length > 0);\n const handleClose = () => r?.cancelSelected();\n\n const [isFocused, setFocused] = useState(false);\n const handleFocus = useCallback(() => setFocused(true), []);\n const handleBlur = useCallback(() => setFocused(false), []);\n useEffect(() => {\n if (!isOpen) handleBlur();\n }, [isOpen, handleBlur]);\n\n const arrowRef = useRef(null);\n\n const { refs, floatingStyles, update, context } = useFloating({\n placement: isMobile() ? 'bottom' : 'top',\n open: isOpen,\n onOpenChange: (open, _event, reason) => {\n if (!open && (reason === 'escape-key' || reason === 'focus-out')) {\n setOpen(open);\n handleClose();\n }\n },\n middleware: [\n inline(),\n offset(10),\n flip({ crossAxis: true }),\n shift({ crossAxis: true, padding: 10 }),\n arrow({ element: arrowRef })\n ],\n whileElementsMounted: autoUpdate\n });\n\n const dismiss = useDismiss(context);\n\n const role = useRole(context, { role: 'dialog' });\n\n const { getFloatingProps } = useInteractions([dismiss, role]);\n\n useEffect(() => {\n if (!r) return;\n\n const annotationId = annotation?.id;\n const annotationSelectorsLength = annotation?.target.selector.length;\n\n if (annotationId && annotationSelectorsLength > 0 && useAnnotationQuoteIdle) {\n const bounds = r?.state.store.getAnnotationBounds(annotation.id);\n setOpen(Boolean(bounds));\n } else {\n setOpen(false);\n }\n }, [annotation?.id, annotation?.target.selector, useAnnotationQuoteIdle, r?.state.store]);\n\n useEffect(() => {\n if (!r) return;\n\n if (isOpen && annotation?.id) {\n refs.setPositionReference({\n getBoundingClientRect: () => {\n const bounds = r.state.store.getAnnotationBounds(annotation.id);\n return bounds\n ? toViewportBounds(bounds, r.element.getBoundingClientRect())\n : new DOMRect();\n },\n getClientRects: () => {\n const rects = r.state.store.getAnnotationRects(annotation.id);\n const denormalizedRects = rects.map((rect) =>\n toViewportBounds(rect, r.element.getBoundingClientRect())\n );\n return toDomRectList(denormalizedRects);\n }\n });\n } else {\n refs.setPositionReference(null);\n }\n }, [isOpen, annotation?.id, annotation?.target, r]);\n\n useEffect(() => {\n const config: MutationObserverInit = { attributes: true, childList: true, subtree: true };\n\n const mutationObserver = new MutationObserver(() => update());\n mutationObserver.observe(document.body, config);\n\n window.document.addEventListener('scroll', update, true);\n\n return () => {\n mutationObserver.disconnect();\n window.document.removeEventListener('scroll', update, true);\n };\n }, [update]);\n\n // Don't shift focus to the floating element if selected via keyboard or on mobile.\n const initialFocus = useMemo(() => {\n return (event?.type === 'keyup' || event?.type === 'contextmenu' || isMobile()) ? -1 : 0;\n }, [event]);\n\n /**\n * Announce the navigation hint only on the keyboard selection,\n * because the focus isn't shifted to the popup automatically then\n */\n // useAnnouncePopupNavigation({\n // disabled: isFocused,\n // floatingOpen: isOpen,\n // message: ariaNavigationMessage,\n // });\n\n return isOpen && annotation ? (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n modal={false}\n closeOnFocusOut={true}\n returnFocus={false}\n initialFocus={initialFocus}>\n <div\n className={`a9s-popup r6o-popup annotation-popup r6o-text-popup ${NOT_ANNOTATABLE_CLASS}`}\n ref={refs.setFloating}\n style={floatingStyles}>\n {props.popup({\n annotation: selected[0].annotation,\n editable: selected[0].editable,\n event\n })}\n{props.arrow && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n {...(props.arrowProps || {})} />\n )}\n\n <button className=\"r6o-popup-sr-only\" aria-live=\"assertive\" onClick={handleClose}>\n {props.ariaCloseWarning || 'Click or leave this dialog to close it.'}\n </button>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n ) : null;\n\n};\n\n/**\n * Prevent text-annotator from handling the irrelevant events\n * triggered from the popup/toolbar/dialog\n *\nconst getStopEventsPropagationProps = <T extends HTMLElement = HTMLElement>() => ({\n onPointerUp: (event: React.PointerEvent<T>) => event.stopPropagation(),\n onPointerDown: (event: React.PointerEvent<T>) => event.stopPropagation(),\n onMouseDown: (event: React.MouseEvent<T>) => event.stopPropagation(),\n onMouseUp: (event: React.MouseEvent<T>) => event.stopPropagation()\n});\n*/\n\n/** For backwards compatibility **/\n/** @deprecated Use TextAnnotationPopup instead */\nexport const TextAnnotatorPopup = (props: TextAnnotationPopupProps) => {\n\n useEffect(() => {\n console.warn('TextAnnotatorPopup is deprecated and will be removed in a future version. Please use TextAnnotationPopup instead.');\n }, []);\n\n return <TextAnnotationPopup {...props} />;\n};\n"],"names":["PRESET_BEHAVIORS","elem","a","content","_a","CETEIcean","props","el","useRef","useEffect","ceteicean","CETEI","data","jsx","TEIAnnotator","children","opts","anno","setAnno","useContext","AnnotoriousContext","onLoad","useCallback","element","TEIPlugin","createTextAnnotator","Fragment","Children","child","cloneElement","useAnnotationQuoteIdle","annotationId","options","store","useAnnotationStore","isIdle","setIsIdle","useState","idleTimeout","scheduleSetIsIdle","event","updated","update","targetUpdated","oldTarget","newTarget","hasQuoteChanged","Ignore","Origin","oldValue","newValue","oldSelector","oldQuotes","quote","newSelector","newQuotes","TextAnnotator","className","style","filter","user","annotatingEnabled","userSelectAction","adapter","isMobile","userAgent","TextAnnotationPopup","popup","ariaNavigationMessage","r","useAnnotator","selected","useSelection","annotation","isOpen","setOpen","handleClose","isFocused","setFocused","handleBlur","arrowRef","refs","floatingStyles","context","useFloating","open","_event","reason","inline","offset","flip","shift","arrow","autoUpdate","dismiss","useDismiss","role","useRole","getFloatingProps","useInteractions","annotationSelectorsLength","bounds","toViewportBounds","denormalizedRects","rect","toDomRectList","config","mutationObserver","initialFocus","useMemo","FloatingPortal","FloatingFocusManager","jsxs","NOT_ANNOTATABLE_CLASS","FloatingArrow","TextAnnotatorPopup"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soomo/react-text-annotator",
3
- "version": "3.2.0-staging.5",
3
+ "version": "3.2.0-staging.7",
4
4
  "description": "Recogito Text Annotator React bindings",
5
5
  "author": "Rainer Simon",
6
6
  "license": "BSD-3-Clause",
@@ -24,14 +24,15 @@
24
24
  "module": "./dist/react-text-annotator.es.js",
25
25
  "types": "./dist/index.d.ts",
26
26
  "devDependencies": {
27
- "@types/react": "^19.1.0",
28
- "@types/react-dom": "^19.1.1",
29
- "@vitejs/plugin-react": "^4.3.4",
27
+ "@types/react": "^19.1.4",
28
+ "@types/react-dom": "^19.1.5",
29
+ "@vitejs/plugin-react": "^4.4.1",
30
30
  "react": "^18.3.1",
31
31
  "react-dom": "^18.3.1",
32
- "typescript": "5.8.2",
33
- "vite": "^6.2.5",
34
- "vite-plugin-dts": "^4.5.3",
32
+ "typescript": "5.8.3",
33
+ "vite": "^6.3.5",
34
+ "vite-plugin-dts": "^4.5.4",
35
+ "vite-plugin-externalize-deps": "^0.9.0",
35
36
  "vite-tsconfig-paths": "^5.1.4"
36
37
  },
37
38
  "peerDependencies": {
@@ -45,13 +46,13 @@
45
46
  }
46
47
  },
47
48
  "dependencies": {
48
- "@annotorious/core": "^3.3.3",
49
- "@annotorious/react": "^3.3.3",
50
- "@floating-ui/react": "^0.27.6",
49
+ "@annotorious/core": "^3.3.6",
50
+ "@annotorious/react": "^3.3.6",
51
+ "@floating-ui/react": "^0.27.8",
51
52
  "@react-aria/live-announcer": "^3.3.4",
52
- "@soomo/text-annotator": "3.2.0-staging.5",
53
- "@recogito/text-annotator-tei": "3.0.1",
54
- "CETEIcean": "^1.9.3",
53
+ "@soomo/text-annotator": "3.2.0-staging.7",
54
+ "@recogito/text-annotator-tei": "3.0.3",
55
+ "CETEIcean": "^1.9.4",
55
56
  "dequal": "^2.0.3",
56
57
  "unique-random": "^4.0.0"
57
58
  }
@@ -1,4 +0,0 @@
1
- export declare const useAnnotationQuoteIdling: (annotationId: string | undefined, options?: {
2
- timeout: number;
3
- }) => boolean;
4
- //# sourceMappingURL=useAnnotationQuoteIdling.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnnotationQuoteIdling.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnotationQuoteIdling.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,GACnC,cAAc,MAAM,GAAG,SAAS,EAChC,UAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAqB,YA2ChD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAnnouncePopupNavigation.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnouncePopupNavigation.ts"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,0BAA0B,GAAI,MAAM,wBAAwB,SA2DxE,CAAC"}