@semiont/react-ui 0.5.25 → 0.5.26

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 (161) hide show
  1. package/dist/PdfAnnotationCanvas.client-6ZSF6ZTJ.js +677 -0
  2. package/dist/PdfAnnotationCanvas.client-6ZSF6ZTJ.js.map +1 -0
  3. package/dist/PdfAnnotationCanvas.client-JCJMXWWJ.css +180 -0
  4. package/dist/PdfAnnotationCanvas.client-JCJMXWWJ.css.map +1 -0
  5. package/dist/{ar-CULRHLNG.js → ar-YTUUGK2O.js} +13 -1
  6. package/dist/ar-YTUUGK2O.js.map +1 -0
  7. package/dist/{bn-HYR7CEL2.js → bn-ASGNGPMD.js} +13 -1
  8. package/dist/bn-ASGNGPMD.js.map +1 -0
  9. package/dist/{chunk-TG2XQEC4.js → chunk-BTUG3VJJ.js} +18 -298
  10. package/dist/chunk-BTUG3VJJ.js.map +1 -0
  11. package/dist/{chunk-NH6L2GIL.js → chunk-L3WKRWP3.js} +13 -1
  12. package/dist/chunk-L3WKRWP3.js.map +1 -0
  13. package/dist/chunk-OBQOZCJE.js +287 -0
  14. package/dist/chunk-OBQOZCJE.js.map +1 -0
  15. package/dist/{cs-YBRWY7NH.js → cs-WMYVAOZY.js} +13 -1
  16. package/dist/cs-WMYVAOZY.js.map +1 -0
  17. package/dist/{da-PHDEOBV3.js → da-FSHHN4D6.js} +13 -1
  18. package/dist/da-FSHHN4D6.js.map +1 -0
  19. package/dist/{de-O4UCCVLJ.js → de-FJFO3TPT.js} +13 -1
  20. package/dist/de-FJFO3TPT.js.map +1 -0
  21. package/dist/{el-MVGO6WZV.js → el-XOH4QIAG.js} +13 -1
  22. package/dist/el-XOH4QIAG.js.map +1 -0
  23. package/dist/{en-2KQILFKQ.js → en-3FCBW3YD.js} +4 -2
  24. package/dist/{es-USSLXQY7.js → es-HDX4QI7E.js} +13 -1
  25. package/dist/es-HDX4QI7E.js.map +1 -0
  26. package/dist/{fa-WMAREFWY.js → fa-DJ6WTFTJ.js} +13 -1
  27. package/dist/fa-DJ6WTFTJ.js.map +1 -0
  28. package/dist/{fi-B3NBNOTS.js → fi-4S7H7W7U.js} +13 -1
  29. package/dist/fi-4S7H7W7U.js.map +1 -0
  30. package/dist/{fr-TXYK5T5W.js → fr-6UJSYHXC.js} +13 -1
  31. package/dist/fr-6UJSYHXC.js.map +1 -0
  32. package/dist/{he-JCJACW5D.js → he-ZZJOHJX2.js} +13 -1
  33. package/dist/he-ZZJOHJX2.js.map +1 -0
  34. package/dist/{hi-VOQLZNJU.js → hi-HZJTAW7U.js} +13 -1
  35. package/dist/hi-HZJTAW7U.js.map +1 -0
  36. package/dist/{id-BFN5RZNZ.js → id-E3I6ILEM.js} +13 -1
  37. package/dist/id-E3I6ILEM.js.map +1 -0
  38. package/dist/index.css +140 -58
  39. package/dist/index.css.map +1 -1
  40. package/dist/index.js +67 -55
  41. package/dist/index.js.map +1 -1
  42. package/dist/{it-TWWDHKKM.js → it-ULAPAD7U.js} +13 -1
  43. package/dist/it-ULAPAD7U.js.map +1 -0
  44. package/dist/{ja-YRQLEBFM.js → ja-SAHZQ4CZ.js} +13 -1
  45. package/dist/ja-SAHZQ4CZ.js.map +1 -0
  46. package/dist/{ko-PG6B3CRB.js → ko-DFU2ADQ4.js} +13 -1
  47. package/dist/ko-DFU2ADQ4.js.map +1 -0
  48. package/dist/{ms-7EZECVKM.js → ms-NWL76XNT.js} +13 -1
  49. package/dist/ms-NWL76XNT.js.map +1 -0
  50. package/dist/{nl-HP753YAP.js → nl-ATCM76WN.js} +13 -1
  51. package/dist/nl-ATCM76WN.js.map +1 -0
  52. package/dist/{no-JUD5WX3N.js → no-UIAQ5RJF.js} +13 -1
  53. package/dist/no-UIAQ5RJF.js.map +1 -0
  54. package/dist/{pl-RVUL4CBM.js → pl-NOECQDXD.js} +13 -1
  55. package/dist/pl-NOECQDXD.js.map +1 -0
  56. package/dist/{pt-RPOVD4QM.js → pt-SVWIIUPC.js} +13 -1
  57. package/dist/pt-SVWIIUPC.js.map +1 -0
  58. package/dist/{ro-DMYWQTRD.js → ro-NR2DRTZG.js} +13 -1
  59. package/dist/ro-NR2DRTZG.js.map +1 -0
  60. package/dist/{sv-DMZ4FGXD.js → sv-STVJ37JP.js} +13 -1
  61. package/dist/sv-STVJ37JP.js.map +1 -0
  62. package/dist/test-utils.js +5 -3
  63. package/dist/test-utils.js.map +1 -1
  64. package/dist/{th-4HVBJBQ2.js → th-UWQR4K54.js} +13 -1
  65. package/dist/th-UWQR4K54.js.map +1 -0
  66. package/dist/{tr-6BDPU5ML.js → tr-WNXZSD27.js} +13 -1
  67. package/dist/tr-WNXZSD27.js.map +1 -0
  68. package/dist/{uk-TBZBT2TL.js → uk-SJRMB47Y.js} +13 -1
  69. package/dist/uk-SJRMB47Y.js.map +1 -0
  70. package/dist/{vi-UMKZKZL3.js → vi-TMRQFES2.js} +13 -1
  71. package/dist/vi-TMRQFES2.js.map +1 -0
  72. package/dist/{zh-YBJWJJYB.js → zh-QOL3LYEM.js} +13 -1
  73. package/dist/zh-QOL3LYEM.js.map +1 -0
  74. package/package.json +4 -4
  75. package/src/components/StatusDisplay.css +35 -35
  76. package/src/components/annotation/annotations.css +1 -1
  77. package/src/components/modals/SearchModal.css +5 -5
  78. package/src/components/pdf-annotation/PdfAnnotationCanvas.css +143 -6
  79. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +622 -231
  80. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +761 -2
  81. package/src/components/pdf-annotation/__tests__/estimate-slot-height.test.ts +53 -0
  82. package/src/components/pdf-annotation/estimate-slot-height.ts +31 -0
  83. package/src/components/resource/__tests__/browse-renderers.dispatch.test.tsx +33 -0
  84. package/src/components/resource/annotate-renderers.tsx +10 -1
  85. package/src/components/resource/browse-renderers.tsx +10 -1
  86. package/src/features/auth/auth.css +10 -10
  87. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +26 -0
  88. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +1 -1
  89. package/src/styles/core/inputs.css +1 -1
  90. package/src/styles/features/compose.css +1 -1
  91. package/src/styles/features/resource-viewer.css +1 -1
  92. package/src/styles/features/static-pages.css +11 -11
  93. package/src/styles/motivations/motivation-comment.css +2 -2
  94. package/src/styles/motivations/motivation-reference.css +2 -2
  95. package/src/styles/patterns/panels-base.css +4 -4
  96. package/src/styles/utilities/motion.css +15 -15
  97. package/src/styles/variables.css +29 -1
  98. package/translations/ar.json +10 -0
  99. package/translations/bn.json +10 -0
  100. package/translations/cs.json +10 -0
  101. package/translations/da.json +10 -0
  102. package/translations/de.json +10 -0
  103. package/translations/el.json +10 -0
  104. package/translations/en.json +10 -0
  105. package/translations/es.json +10 -0
  106. package/translations/fa.json +10 -0
  107. package/translations/fi.json +10 -0
  108. package/translations/fr.json +10 -0
  109. package/translations/he.json +10 -0
  110. package/translations/hi.json +10 -0
  111. package/translations/id.json +10 -0
  112. package/translations/it.json +10 -0
  113. package/translations/ja.json +10 -0
  114. package/translations/ko.json +10 -0
  115. package/translations/ms.json +10 -0
  116. package/translations/nl.json +10 -0
  117. package/translations/no.json +10 -0
  118. package/translations/pl.json +10 -0
  119. package/translations/pt.json +10 -0
  120. package/translations/ro.json +10 -0
  121. package/translations/sv.json +10 -0
  122. package/translations/th.json +10 -0
  123. package/translations/tr.json +10 -0
  124. package/translations/uk.json +10 -0
  125. package/translations/vi.json +10 -0
  126. package/translations/zh.json +10 -0
  127. package/dist/PdfAnnotationCanvas.client-EHQWF6BR.js +0 -462
  128. package/dist/PdfAnnotationCanvas.client-EHQWF6BR.js.map +0 -1
  129. package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css +0 -98
  130. package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css.map +0 -1
  131. package/dist/ar-CULRHLNG.js.map +0 -1
  132. package/dist/bn-HYR7CEL2.js.map +0 -1
  133. package/dist/chunk-NH6L2GIL.js.map +0 -1
  134. package/dist/chunk-TG2XQEC4.js.map +0 -1
  135. package/dist/cs-YBRWY7NH.js.map +0 -1
  136. package/dist/da-PHDEOBV3.js.map +0 -1
  137. package/dist/de-O4UCCVLJ.js.map +0 -1
  138. package/dist/el-MVGO6WZV.js.map +0 -1
  139. package/dist/es-USSLXQY7.js.map +0 -1
  140. package/dist/fa-WMAREFWY.js.map +0 -1
  141. package/dist/fi-B3NBNOTS.js.map +0 -1
  142. package/dist/fr-TXYK5T5W.js.map +0 -1
  143. package/dist/he-JCJACW5D.js.map +0 -1
  144. package/dist/hi-VOQLZNJU.js.map +0 -1
  145. package/dist/id-BFN5RZNZ.js.map +0 -1
  146. package/dist/it-TWWDHKKM.js.map +0 -1
  147. package/dist/ja-YRQLEBFM.js.map +0 -1
  148. package/dist/ko-PG6B3CRB.js.map +0 -1
  149. package/dist/ms-7EZECVKM.js.map +0 -1
  150. package/dist/nl-HP753YAP.js.map +0 -1
  151. package/dist/no-JUD5WX3N.js.map +0 -1
  152. package/dist/pl-RVUL4CBM.js.map +0 -1
  153. package/dist/pt-RPOVD4QM.js.map +0 -1
  154. package/dist/ro-DMYWQTRD.js.map +0 -1
  155. package/dist/sv-DMZ4FGXD.js.map +0 -1
  156. package/dist/th-4HVBJBQ2.js.map +0 -1
  157. package/dist/tr-6BDPU5ML.js.map +0 -1
  158. package/dist/uk-TBZBT2TL.js.map +0 -1
  159. package/dist/vi-UMKZKZL3.js.map +0 -1
  160. package/dist/zh-YBJWJJYB.js.map +0 -1
  161. /package/dist/{en-2KQILFKQ.js.map → en-3FCBW3YD.js.map} +0 -0
package/dist/index.js CHANGED
@@ -4,12 +4,10 @@ import {
4
4
  toViewportAnchorRect
5
5
  } from "./chunk-VXASXU4K.js";
6
6
  import {
7
- AVAILABLE_LOCALES,
8
7
  LineNumbersProvider,
9
8
  SemiontProvider,
10
9
  ToastContainer,
11
10
  ToastProvider,
12
- TranslationProvider,
13
11
  WebBrowserStorage,
14
12
  require_argsOrArgArray,
15
13
  require_audit,
@@ -126,11 +124,15 @@ import {
126
124
  require_zipAll,
127
125
  require_zipWith,
128
126
  useLineNumbers,
129
- usePreloadTranslations,
130
127
  useSemiont,
131
- useToast,
128
+ useToast
129
+ } from "./chunk-BTUG3VJJ.js";
130
+ import {
131
+ AVAILABLE_LOCALES,
132
+ TranslationProvider,
133
+ usePreloadTranslations,
132
134
  useTranslations
133
- } from "./chunk-TG2XQEC4.js";
135
+ } from "./chunk-OBQOZCJE.js";
134
136
  import {
135
137
  clsx
136
138
  } from "./chunk-XUDKYAVC.js";
@@ -139,7 +141,7 @@ import {
139
141
  generateCSSVariables,
140
142
  tokens
141
143
  } from "./chunk-QT7LYM72.js";
142
- import "./chunk-NH6L2GIL.js";
144
+ import "./chunk-L3WKRWP3.js";
143
145
  import {
144
146
  __commonJS,
145
147
  __toESM
@@ -30609,9 +30611,13 @@ function logDegradedAnchorOnce(annotationId2, strategy, confidence) {
30609
30611
  }
30610
30612
 
30611
30613
  // src/components/resource/annotate-renderers.tsx
30612
- import { jsx as jsx24 } from "react/jsx-runtime";
30614
+ import { Fragment as Fragment5, jsx as jsx24 } from "react/jsx-runtime";
30615
+ function PdfViewerLoading() {
30616
+ const t12 = useTranslations("PdfViewer");
30617
+ return /* @__PURE__ */ jsx24(Fragment5, { children: t12("viewerLoading") });
30618
+ }
30613
30619
  var PdfAnnotationCanvas = lazy(
30614
- () => import("./PdfAnnotationCanvas.client-EHQWF6BR.js").then((mod) => ({ default: mod.PdfAnnotationCanvas }))
30620
+ () => import("./PdfAnnotationCanvas.client-6ZSF6ZTJ.js").then((mod) => ({ default: mod.PdfAnnotationCanvas }))
30615
30621
  );
30616
30622
  function TextAnnotateRenderer({
30617
30623
  content: content2,
@@ -30682,7 +30688,7 @@ function PdfAnnotateRenderer({
30682
30688
  hoverDelayMs = 150
30683
30689
  }) {
30684
30690
  if (!content2) return null;
30685
- return /* @__PURE__ */ jsx24(Suspense, { fallback: /* @__PURE__ */ jsx24("div", { className: "semiont-annotate-view__loading", children: "Loading PDF viewer..." }), children: /* @__PURE__ */ jsx24(
30691
+ return /* @__PURE__ */ jsx24(Suspense, { fallback: /* @__PURE__ */ jsx24("div", { className: "semiont-annotate-view__loading", children: /* @__PURE__ */ jsx24(PdfViewerLoading, {}) }), children: /* @__PURE__ */ jsx24(
30686
30692
  PdfAnnotationCanvas,
30687
30693
  {
30688
30694
  pdfUrl: content2,
@@ -30692,7 +30698,8 @@ function PdfAnnotateRenderer({
30692
30698
  selectedMotivation,
30693
30699
  session,
30694
30700
  hoveredAnnotationId: hoveredAnnotationId || null,
30695
- hoverDelayMs
30701
+ hoverDelayMs,
30702
+ pageLayout: "scroll"
30696
30703
  }
30697
30704
  ) });
30698
30705
  }
@@ -31220,7 +31227,7 @@ function HistoryEvent({
31220
31227
  }
31221
31228
 
31222
31229
  // src/components/resource/AnnotationHistory.tsx
31223
- import { Fragment as Fragment5, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
31230
+ import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
31224
31231
  function AnnotationHistory({
31225
31232
  events: eventsData,
31226
31233
  eventsLoading = false,
@@ -31266,7 +31273,7 @@ function AnnotationHistory({
31266
31273
  /* @__PURE__ */ jsx28("h3", { className: "semiont-history-panel__title", children: t12("history") }),
31267
31274
  /* @__PURE__ */ jsxs20("p", { className: "semiont-history-panel__error", children: [
31268
31275
  t12("failed"),
31269
- onRetryEvents && /* @__PURE__ */ jsxs20(Fragment5, { children: [
31276
+ onRetryEvents && /* @__PURE__ */ jsxs20(Fragment6, { children: [
31270
31277
  " ",
31271
31278
  /* @__PURE__ */ jsx28("button", { type: "button", onClick: onRetryEvents, className: "semiont-panel__inline-action", children: t12("retry") })
31272
31279
  ] })
@@ -31326,8 +31333,12 @@ import { createHoverHandlers as createHoverHandlers3 } from "@semiont/sdk";
31326
31333
  import { lazy as lazy2, Suspense as Suspense2, memo } from "react";
31327
31334
  import ReactMarkdown from "react-markdown";
31328
31335
  import remarkGfm from "remark-gfm";
31329
- import { jsx as jsx29 } from "react/jsx-runtime";
31330
- var PdfAnnotationCanvas2 = lazy2(() => import("./PdfAnnotationCanvas.client-EHQWF6BR.js").then((mod) => ({ default: mod.PdfAnnotationCanvas })));
31336
+ import { Fragment as Fragment7, jsx as jsx29 } from "react/jsx-runtime";
31337
+ function PdfViewerLoading2() {
31338
+ const t12 = useTranslations("PdfViewer");
31339
+ return /* @__PURE__ */ jsx29(Fragment7, { children: t12("viewerLoading") });
31340
+ }
31341
+ var PdfAnnotationCanvas2 = lazy2(() => import("./PdfAnnotationCanvas.client-6ZSF6ZTJ.js").then((mod) => ({ default: mod.PdfAnnotationCanvas })));
31331
31342
  var MemoizedMarkdown = memo(function MemoizedMarkdown2({ content: content2 }) {
31332
31343
  return /* @__PURE__ */ jsx29(ReactMarkdown, { remarkPlugins: [remarkGfm], children: content2 });
31333
31344
  });
@@ -31348,7 +31359,7 @@ function ImageBrowseRenderer({ content: content2, resourceUri, annotations, sess
31348
31359
  );
31349
31360
  }
31350
31361
  function PdfBrowseRenderer({ content: content2, resourceUri, annotations, session }) {
31351
- return /* @__PURE__ */ jsx29(Suspense2, { fallback: /* @__PURE__ */ jsx29("div", { className: "semiont-browse-view__loading", children: "Loading PDF viewer..." }), children: /* @__PURE__ */ jsx29(
31362
+ return /* @__PURE__ */ jsx29(Suspense2, { fallback: /* @__PURE__ */ jsx29("div", { className: "semiont-browse-view__loading", children: /* @__PURE__ */ jsx29(PdfViewerLoading2, {}) }), children: /* @__PURE__ */ jsx29(
31352
31363
  PdfAnnotationCanvas2,
31353
31364
  {
31354
31365
  pdfUrl: content2,
@@ -31356,7 +31367,8 @@ function PdfBrowseRenderer({ content: content2, resourceUri, annotations, sessio
31356
31367
  existingAnnotations: annotations,
31357
31368
  drawingMode: null,
31358
31369
  selectedMotivation: null,
31359
- session
31370
+ session,
31371
+ pageLayout: "scroll"
31360
31372
  }
31361
31373
  ) });
31362
31374
  }
@@ -31906,7 +31918,7 @@ import { getTextPositionSelector as getTextPositionSelector3, getTargetSelector
31906
31918
 
31907
31919
  // src/components/resource/panels/AssistSection.tsx
31908
31920
  import { useState as useState26, useCallback as useCallback19 } from "react";
31909
- import { Fragment as Fragment6, jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
31921
+ import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
31910
31922
  function AssistSection({
31911
31923
  session,
31912
31924
  annotationType,
@@ -31961,7 +31973,7 @@ function AssistSection({
31961
31973
  close: ta("close")
31962
31974
  }
31963
31975
  },
31964
- form: /* @__PURE__ */ jsxs24(Fragment6, { children: [
31976
+ form: /* @__PURE__ */ jsxs24(Fragment8, { children: [
31965
31977
  /* @__PURE__ */ jsxs24("div", { className: "semiont-form-field", children: [
31966
31978
  /* @__PURE__ */ jsxs24("label", { className: "semiont-form-field__label", children: [
31967
31979
  t12("instructions"),
@@ -31998,13 +32010,13 @@ function AssistSection({
31998
32010
  className: "semiont-select",
31999
32011
  children: [
32000
32012
  /* @__PURE__ */ jsx33("option", { value: "", children: "Default" }),
32001
- annotationType === "comment" && /* @__PURE__ */ jsxs24(Fragment6, { children: [
32013
+ annotationType === "comment" && /* @__PURE__ */ jsxs24(Fragment8, { children: [
32002
32014
  /* @__PURE__ */ jsx33("option", { value: "scholarly", children: t12("toneScholarly") }),
32003
32015
  /* @__PURE__ */ jsx33("option", { value: "explanatory", children: t12("toneExplanatory") }),
32004
32016
  /* @__PURE__ */ jsx33("option", { value: "conversational", children: t12("toneConversational") }),
32005
32017
  /* @__PURE__ */ jsx33("option", { value: "technical", children: t12("toneTechnical") })
32006
32018
  ] }),
32007
- annotationType === "assessment" && /* @__PURE__ */ jsxs24(Fragment6, { children: [
32019
+ annotationType === "assessment" && /* @__PURE__ */ jsxs24(Fragment8, { children: [
32008
32020
  /* @__PURE__ */ jsx33("option", { value: "analytical", children: t12("toneAnalytical") }),
32009
32021
  /* @__PURE__ */ jsx33("option", { value: "critical", children: t12("toneCritical") }),
32010
32022
  /* @__PURE__ */ jsx33("option", { value: "balanced", children: t12("toneBalanced") }),
@@ -32031,7 +32043,7 @@ function AssistSection({
32031
32043
  ] }),
32032
32044
  useDensity && /* @__PURE__ */ jsx33("span", { className: "semiont-form-field__info", children: t12("densityPerWords", { density }) })
32033
32045
  ] }),
32034
- useDensity && /* @__PURE__ */ jsxs24(Fragment6, { children: [
32046
+ useDensity && /* @__PURE__ */ jsxs24(Fragment8, { children: [
32035
32047
  /* @__PURE__ */ jsx33(
32036
32048
  "input",
32037
32049
  {
@@ -33144,7 +33156,7 @@ function ReferenceEntry({
33144
33156
  // src/components/resource/panels/ReferencesPanel.tsx
33145
33157
  import { useState as useState32, useRef as useRef25, useEffect as useEffect37, useCallback as useCallback23, useMemo as useMemo12 } from "react";
33146
33158
  import { getTextPositionSelector as getTextPositionSelector6, getTargetSelector as getTargetSelector9 } from "@semiont/core";
33147
- import { Fragment as Fragment7, jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
33159
+ import { Fragment as Fragment9, jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
33148
33160
  function getSelectorDisplayText3(selector) {
33149
33161
  if (Array.isArray(selector)) {
33150
33162
  const quoteSelector = selector.find((s11) => s11.type === "TextQuoteSelector");
@@ -33373,7 +33385,7 @@ function ReferencesPanel({
33373
33385
  close: ta("close")
33374
33386
  }
33375
33387
  },
33376
- form: /* @__PURE__ */ jsxs34(Fragment7, { children: [
33388
+ form: /* @__PURE__ */ jsxs34(Fragment9, { children: [
33377
33389
  lastAnnotationLog && /* @__PURE__ */ jsx42(
33378
33390
  EntityFoundLog,
33379
33391
  {
@@ -33470,7 +33482,7 @@ function ReferencesPanel({
33470
33482
  ] }) }),
33471
33483
  referencedByError ? /* @__PURE__ */ jsxs34("p", { className: "semiont-panel__empty-message semiont-panel__empty-message--small", children: [
33472
33484
  t12("incomingReferencesFailed"),
33473
- onRetryReferencedBy && /* @__PURE__ */ jsxs34(Fragment7, { children: [
33485
+ onRetryReferencedBy && /* @__PURE__ */ jsxs34(Fragment9, { children: [
33474
33486
  " ",
33475
33487
  /* @__PURE__ */ jsx42(
33476
33488
  "button",
@@ -33512,7 +33524,7 @@ function ReferencesPanel({
33512
33524
  // src/components/resource/panels/ResourceInfoPanel.tsx
33513
33525
  import { formatLocaleDisplay } from "@semiont/core";
33514
33526
  import { resourceId as makeResourceId } from "@semiont/core";
33515
- import { Fragment as Fragment8, jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
33527
+ import { Fragment as Fragment10, jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
33516
33528
  function ResourceInfoPanel({
33517
33529
  session,
33518
33530
  resourceId: resourceId2,
@@ -33629,7 +33641,7 @@ function ResourceInfoPanel({
33629
33641
  ),
33630
33642
  /* @__PURE__ */ jsx43("p", { className: "semiont-resource-info-panel__description", children: t12("cloneDescription") })
33631
33643
  ] }),
33632
- /* @__PURE__ */ jsx43("div", { className: "semiont-resource-info-panel__action-section", children: isArchived ? /* @__PURE__ */ jsxs35(Fragment8, { children: [
33644
+ /* @__PURE__ */ jsx43("div", { className: "semiont-resource-info-panel__action-section", children: isArchived ? /* @__PURE__ */ jsxs35(Fragment10, { children: [
33633
33645
  /* @__PURE__ */ jsxs35(
33634
33646
  "button",
33635
33647
  {
@@ -33642,7 +33654,7 @@ function ResourceInfoPanel({
33642
33654
  }
33643
33655
  ),
33644
33656
  /* @__PURE__ */ jsx43("p", { className: "semiont-resource-info-panel__description", children: t12("unarchiveDescription") })
33645
- ] }) : /* @__PURE__ */ jsxs35(Fragment8, { children: [
33657
+ ] }) : /* @__PURE__ */ jsxs35(Fragment10, { children: [
33646
33658
  /* @__PURE__ */ jsxs35(
33647
33659
  "button",
33648
33660
  {
@@ -33788,7 +33800,7 @@ function TagEntry({
33788
33800
  import { useState as useState33, useEffect as useEffect38, useRef as useRef26, useCallback as useCallback24, useMemo as useMemo14 } from "react";
33789
33801
  import { isReady as isReady2 } from "@semiont/sdk";
33790
33802
  import { getTextPositionSelector as getTextPositionSelector7, getTargetSelector as getTargetSelector10 } from "@semiont/core";
33791
- import { Fragment as Fragment9, jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
33803
+ import { Fragment as Fragment11, jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
33792
33804
  function getSelectorDisplayText4(selector) {
33793
33805
  if (Array.isArray(selector)) {
33794
33806
  const quoteSelector = selector.find((s11) => s11.type === "TextQuoteSelector");
@@ -34027,7 +34039,7 @@ function TaggingPanel({
34027
34039
  close: ta("close")
34028
34040
  }
34029
34041
  },
34030
- form: /* @__PURE__ */ jsxs38(Fragment9, { children: [
34042
+ form: /* @__PURE__ */ jsxs38(Fragment11, { children: [
34031
34043
  noSchemasRegistered && /* @__PURE__ */ jsx46("p", { className: "semiont-form__help", "data-type": "tag-no-schemas", children: t12("noSchemas") }),
34032
34044
  !noSchemasRegistered && /* @__PURE__ */ jsxs38("div", { className: "semiont-form-field", children: [
34033
34045
  /* @__PURE__ */ jsx46("label", { className: "semiont-form-field__label", children: t12("selectSchema") }),
@@ -34126,7 +34138,7 @@ function TaggingPanel({
34126
34138
 
34127
34139
  // src/components/resource/panels/UnifiedAnnotationsPanel.tsx
34128
34140
  import { useState as useState34, useEffect as useEffect39 } from "react";
34129
- import { Fragment as Fragment10, jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
34141
+ import { Fragment as Fragment12, jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
34130
34142
  var TAB_ORDER = ["statistics", "reference", "highlight", "assessment", "comment", "tag"];
34131
34143
  function UnifiedAnnotationsPanel(props) {
34132
34144
  const t12 = useTranslations("UnifiedAnnotationsPanel");
@@ -34184,7 +34196,7 @@ function UnifiedAnnotationsPanel(props) {
34184
34196
  /* @__PURE__ */ jsx47("h3", { className: "semiont-unified-panel__title", children: t12("title") }),
34185
34197
  /* @__PURE__ */ jsxs39("p", { className: "semiont-unified-panel__error", children: [
34186
34198
  t12("annotationsFailed"),
34187
- props.onRetryAnnotations && /* @__PURE__ */ jsxs39(Fragment10, { children: [
34199
+ props.onRetryAnnotations && /* @__PURE__ */ jsxs39(Fragment12, { children: [
34188
34200
  " ",
34189
34201
  /* @__PURE__ */ jsx47(
34190
34202
  "button",
@@ -34343,7 +34355,7 @@ function ImageViewer({ imageUrl, alt = "Resource image" }) {
34343
34355
 
34344
34356
  // src/components/navigation/Footer.tsx
34345
34357
  import { useState as useState35 } from "react";
34346
- import { Fragment as Fragment11, jsx as jsx49, jsxs as jsxs40 } from "react/jsx-runtime";
34358
+ import { Fragment as Fragment13, jsx as jsx49, jsxs as jsxs40 } from "react/jsx-runtime";
34347
34359
  function Footer({
34348
34360
  Link,
34349
34361
  routes,
@@ -34354,11 +34366,11 @@ function Footer({
34354
34366
  showPolicyLinks = true
34355
34367
  }) {
34356
34368
  const [showCookiePreferences, setShowCookiePreferences] = useState35(false);
34357
- return /* @__PURE__ */ jsxs40(Fragment11, { children: [
34369
+ return /* @__PURE__ */ jsxs40(Fragment13, { children: [
34358
34370
  /* @__PURE__ */ jsx49("footer", { role: "contentinfo", className: "semiont-footer", children: /* @__PURE__ */ jsx49("div", { className: "semiont-footer__container", children: /* @__PURE__ */ jsxs40("div", { className: "semiont-footer__content", children: [
34359
34371
  /* @__PURE__ */ jsx49("div", { className: "semiont-footer__copyright", children: t12("copyright", { year: (/* @__PURE__ */ new Date()).getFullYear() }) }),
34360
34372
  /* @__PURE__ */ jsxs40("div", { className: "semiont-footer__links", children: [
34361
- showPolicyLinks && /* @__PURE__ */ jsxs40(Fragment11, { children: [
34373
+ showPolicyLinks && /* @__PURE__ */ jsxs40(Fragment13, { children: [
34362
34374
  /* @__PURE__ */ jsx49(
34363
34375
  Link,
34364
34376
  {
@@ -34426,7 +34438,7 @@ function Footer({
34426
34438
  }
34427
34439
 
34428
34440
  // src/components/navigation/NavigationMenu.tsx
34429
- import { Fragment as Fragment12, jsx as jsx50, jsxs as jsxs41 } from "react/jsx-runtime";
34441
+ import { Fragment as Fragment14, jsx as jsx50, jsxs as jsxs41 } from "react/jsx-runtime";
34430
34442
  function NavigationMenu({
34431
34443
  Link,
34432
34444
  routes,
@@ -34453,7 +34465,7 @@ function NavigationMenu({
34453
34465
  children: t12("know")
34454
34466
  }
34455
34467
  ),
34456
- (isModerator || isAdmin) && /* @__PURE__ */ jsxs41(Fragment12, { children: [
34468
+ (isModerator || isAdmin) && /* @__PURE__ */ jsxs41(Fragment14, { children: [
34457
34469
  /* @__PURE__ */ jsx50("hr", { className: "semiont-navigation-menu__divider" }),
34458
34470
  /* @__PURE__ */ jsx50(
34459
34471
  Link,
@@ -34466,7 +34478,7 @@ function NavigationMenu({
34466
34478
  }
34467
34479
  )
34468
34480
  ] }),
34469
- isAdmin && /* @__PURE__ */ jsxs41(Fragment12, { children: [
34481
+ isAdmin && /* @__PURE__ */ jsxs41(Fragment14, { children: [
34470
34482
  /* @__PURE__ */ jsx50("hr", { className: "semiont-navigation-menu__divider" }),
34471
34483
  /* @__PURE__ */ jsx50(
34472
34484
  Link,
@@ -38969,7 +38981,7 @@ import { useState as useState41, useEffect as useEffect47, useRef as useRef34 }
38969
38981
 
38970
38982
  // src/components/modals/ContextSummary.tsx
38971
38983
  import { deriveViews } from "@semiont/core";
38972
- import { Fragment as Fragment13, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
38984
+ import { Fragment as Fragment15, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
38973
38985
  function ContextSummary({ context, translations: t12 }) {
38974
38986
  const mainResourceId = context.focus.kind === "annotation" ? String(context.focus.sourceResource.id) : String(context.focus.resource.id);
38975
38987
  const focalAnnotationId = context.focus.kind === "annotation" ? context.focus.annotation.id : void 0;
@@ -38978,7 +38990,7 @@ function ContextSummary({ context, translations: t12 }) {
38978
38990
  mainResourceId,
38979
38991
  focalAnnotationId
38980
38992
  );
38981
- return /* @__PURE__ */ jsx55(Fragment13, { children: (connections.length > 0 || citedByCount > 0) && /* @__PURE__ */ jsxs45("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: [
38993
+ return /* @__PURE__ */ jsx55(Fragment15, { children: (connections.length > 0 || citedByCount > 0) && /* @__PURE__ */ jsxs45("div", { style: { display: "flex", flexDirection: "column", gap: "1rem" }, children: [
38982
38994
  connections.length > 0 && /* @__PURE__ */ jsxs45("div", { children: [
38983
38995
  /* @__PURE__ */ jsx55("div", { style: {
38984
38996
  fontSize: "var(--semiont-text-xs)",
@@ -39020,7 +39032,7 @@ function ContextSummary({ context, translations: t12 }) {
39020
39032
  }
39021
39033
 
39022
39034
  // src/components/modals/GatherContextStep.tsx
39023
- import { Fragment as Fragment14, jsx as jsx56, jsxs as jsxs46 } from "react/jsx-runtime";
39035
+ import { Fragment as Fragment16, jsx as jsx56, jsxs as jsxs46 } from "react/jsx-runtime";
39024
39036
  function GatherContextStep({
39025
39037
  context,
39026
39038
  contextLoading,
@@ -39052,7 +39064,7 @@ function GatherContextStep({
39052
39064
  /* @__PURE__ */ jsx56("span", { className: "semiont-gather__loading-text", children: t12.loadingContext })
39053
39065
  ] }),
39054
39066
  !!contextError && /* @__PURE__ */ jsx56("div", { style: { textAlign: "center", padding: "1rem 0", color: "var(--semiont-color-red-600)" }, children: t12.failedContext }),
39055
- context && /* @__PURE__ */ jsxs46(Fragment14, { children: [
39067
+ context && /* @__PURE__ */ jsxs46(Fragment16, { children: [
39056
39068
  focus?.selected && /* @__PURE__ */ jsxs46("div", { className: "semiont-gather__source-strip", children: [
39057
39069
  /* @__PURE__ */ jsxs46("label", { className: "semiont-form__label", style: { marginBottom: "0.375rem" }, children: [
39058
39070
  t12.sourceContextLabel,
@@ -39444,7 +39456,7 @@ function ConfigureSearchStep({
39444
39456
  }
39445
39457
 
39446
39458
  // src/components/modals/SearchResultsStep.tsx
39447
- import { Fragment as Fragment15, jsx as jsx59, jsxs as jsxs49 } from "react/jsx-runtime";
39459
+ import { Fragment as Fragment17, jsx as jsx59, jsxs as jsxs49 } from "react/jsx-runtime";
39448
39460
  function SearchResultsStep({
39449
39461
  results,
39450
39462
  context,
@@ -39453,7 +39465,7 @@ function SearchResultsStep({
39453
39465
  onCancel,
39454
39466
  translations: t12
39455
39467
  }) {
39456
- return /* @__PURE__ */ jsxs49(Fragment15, { children: [
39468
+ return /* @__PURE__ */ jsxs49(Fragment17, { children: [
39457
39469
  /* @__PURE__ */ jsxs49("div", { className: "semiont-search-results__two-pane", children: [
39458
39470
  /* @__PURE__ */ jsx59("div", { className: "semiont-search-results__context-pane", children: /* @__PURE__ */ jsx59(ContextSummary, { context, translations: t12 }) }),
39459
39471
  /* @__PURE__ */ jsx59("div", { className: "semiont-search-results__results-pane", children: results.length === 0 ? /* @__PURE__ */ jsx59("div", { className: "semiont-modal__empty-state", style: { textAlign: "center", padding: "2rem 0" }, children: t12.noResults }) : results.map((result) => {
@@ -39819,7 +39831,7 @@ function ConfigureGatherStep({ defaults, onGather, onCancel, translations: t12,
39819
39831
  }
39820
39832
 
39821
39833
  // src/components/modals/ResourceGenerateModal.tsx
39822
- import { Fragment as Fragment16, jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
39834
+ import { Fragment as Fragment18, jsx as jsx62, jsxs as jsxs52 } from "react/jsx-runtime";
39823
39835
  function ResourceGenerateModal({
39824
39836
  isOpen,
39825
39837
  onClose,
@@ -39915,7 +39927,7 @@ function ResourceGenerateModal({
39915
39927
  ] })
39916
39928
  }
39917
39929
  ),
39918
- step === "review" && /* @__PURE__ */ jsxs52(Fragment16, { children: [
39930
+ step === "review" && /* @__PURE__ */ jsxs52(Fragment18, { children: [
39919
39931
  /* @__PURE__ */ jsx62(
39920
39932
  GatherContextStep,
39921
39933
  {
@@ -42120,7 +42132,7 @@ function LinkedDataPage({
42120
42132
 
42121
42133
  // src/features/admin-users/components/AdminUsersPage.tsx
42122
42134
  import { useState as useState53 } from "react";
42123
- import { Fragment as Fragment17, jsx as jsx85, jsxs as jsxs73 } from "react/jsx-runtime";
42135
+ import { Fragment as Fragment19, jsx as jsx85, jsxs as jsxs73 } from "react/jsx-runtime";
42124
42136
  function UserTableRow({
42125
42137
  user,
42126
42138
  onUpdate,
@@ -42229,7 +42241,7 @@ function AdminUsersPage({
42229
42241
  /* @__PURE__ */ jsx85("div", { className: "semiont-skeleton semiont-skeleton--text" }),
42230
42242
  /* @__PURE__ */ jsx85("div", { className: "semiont-skeleton semiont-skeleton--number" })
42231
42243
  ] })
42232
- ] }) }, i13)) : /* @__PURE__ */ jsxs73(Fragment17, { children: [
42244
+ ] }) }, i13)) : /* @__PURE__ */ jsxs73(Fragment19, { children: [
42233
42245
  /* @__PURE__ */ jsx85("div", { className: "semiont-stat-card", children: /* @__PURE__ */ jsxs73("div", { className: "semiont-stat-card__content", children: [
42234
42246
  /* @__PURE__ */ jsx85("div", { className: "semiont-stat-card__icon-wrapper", children: /* @__PURE__ */ jsx85(UserCircleIcon_default, { className: "semiont-stat-card__icon semiont-stat-card__icon--primary" }) }),
42235
42247
  /* @__PURE__ */ jsxs73("div", { className: "semiont-stat-card__text", children: [
@@ -42366,7 +42378,7 @@ function AdminUsersPage({
42366
42378
 
42367
42379
  // src/features/auth/components/SignInForm.tsx
42368
42380
  import React46 from "react";
42369
- import { Fragment as Fragment18, jsx as jsx86, jsxs as jsxs74 } from "react/jsx-runtime";
42381
+ import { Fragment as Fragment20, jsx as jsx86, jsxs as jsxs74 } from "react/jsx-runtime";
42370
42382
  function GoogleIcon() {
42371
42383
  return /* @__PURE__ */ jsxs74("svg", { className: "semiont-icon semiont-icon--small semiont-icon--inline", viewBox: "0 0 24 24", children: [
42372
42384
  /* @__PURE__ */ jsx86(
@@ -42465,7 +42477,7 @@ function CredentialsAuthForm({
42465
42477
  ]
42466
42478
  }
42467
42479
  ) : null;
42468
- return /* @__PURE__ */ jsxs74(Fragment18, { children: [
42480
+ return /* @__PURE__ */ jsxs74(Fragment20, { children: [
42469
42481
  validationError && /* @__PURE__ */ jsx86("div", { className: "semiont-auth__error", role: "alert", "aria-live": "polite", children: /* @__PURE__ */ jsx86("div", { className: "semiont-auth__error-text", children: validationError }) }),
42470
42482
  /* @__PURE__ */ jsxs74("form", { onSubmit: handleSubmit, className: "semiont-auth__form", noValidate: true, children: [
42471
42483
  /* @__PURE__ */ jsxs74("div", { className: "semiont-form__field", children: [
@@ -42570,7 +42582,7 @@ function SignInForm({
42570
42582
  /* @__PURE__ */ jsx86("p", { className: "semiont-auth__subtitle", children: t12.signInPrompt })
42571
42583
  ] }),
42572
42584
  error && /* @__PURE__ */ jsx86("div", { className: "semiont-auth__error-container", children: /* @__PURE__ */ jsx86("div", { className: "semiont-auth__error", children: /* @__PURE__ */ jsx86("div", { className: "semiont-auth__error-text", children: error }) }) }),
42573
- /* @__PURE__ */ jsx86("div", { className: "semiont-auth__forms", children: !isLoading ? /* @__PURE__ */ jsxs74(Fragment18, { children: [
42585
+ /* @__PURE__ */ jsx86("div", { className: "semiont-auth__forms", children: !isLoading ? /* @__PURE__ */ jsxs74(Fragment20, { children: [
42574
42586
  showCredentialsAuth && onCredentialsSignIn && /* @__PURE__ */ jsx86(
42575
42587
  CredentialsAuthForm,
42576
42588
  {
@@ -42829,7 +42841,7 @@ function WelcomePage({
42829
42841
  }
42830
42842
 
42831
42843
  // src/features/moderate-entity-tags/components/EntityTagsPage.tsx
42832
- import { Fragment as Fragment19, jsx as jsx90, jsxs as jsxs78 } from "react/jsx-runtime";
42844
+ import { Fragment as Fragment21, jsx as jsx90, jsxs as jsxs78 } from "react/jsx-runtime";
42833
42845
  function EntityTagsPage({
42834
42846
  entityTypes,
42835
42847
  error,
@@ -42889,7 +42901,7 @@ function EntityTagsPage({
42889
42901
  onClick: onAddTag,
42890
42902
  disabled: isAddingTag || !newTag.trim(),
42891
42903
  className: "semiont-button semiont-button--primary",
42892
- children: isAddingTag ? t12.adding : /* @__PURE__ */ jsxs78(Fragment19, { children: [
42904
+ children: isAddingTag ? t12.adding : /* @__PURE__ */ jsxs78(Fragment21, { children: [
42893
42905
  /* @__PURE__ */ jsx90(PlusIcon_default, { className: "semiont-icon semiont-icon--small semiont-icon--inline" }),
42894
42906
  t12.addTag
42895
42907
  ] })
@@ -43080,7 +43092,7 @@ import { deriveViews as deriveViews2 } from "@semiont/core";
43080
43092
  import { capabilitiesOf as capabilitiesOf5, AUTHORABLE_MEDIA_TYPES, MEDIA_TYPES, mediaTypeForExtension, isSupportedMediaType, LOCALES as LOCALES3 } from "@semiont/core";
43081
43093
 
43082
43094
  // src/features/resource-compose/components/UploadProgressBar.tsx
43083
- import { Fragment as Fragment20, jsx as jsx93, jsxs as jsxs81 } from "react/jsx-runtime";
43095
+ import { Fragment as Fragment22, jsx as jsx93, jsxs as jsxs81 } from "react/jsx-runtime";
43084
43096
  function formatBytes(bytes) {
43085
43097
  if (bytes < 1024) return `${bytes} B`;
43086
43098
  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
@@ -43107,7 +43119,7 @@ function UploadProgressBar({ progress, label = "Upload" }) {
43107
43119
  ": ",
43108
43120
  formatBytes(progress.bytesUploaded),
43109
43121
  "\u2026"
43110
- ] }) : /* @__PURE__ */ jsxs81(Fragment20, { children: [
43122
+ ] }) : /* @__PURE__ */ jsxs81(Fragment22, { children: [
43111
43123
  /* @__PURE__ */ jsxs81("span", { children: [
43112
43124
  label,
43113
43125
  ": ",
@@ -44323,7 +44335,7 @@ function ResourceViewerPage({
44323
44335
  browser2.emit("nav:push", { path, reason: "entity-type-filter" });
44324
44336
  }
44325
44337
  }, [routes.know, browser2]);
44326
- useOutcomeToasts(resource.id);
44338
+ useOutcomeToasts(rUri);
44327
44339
  useEventSubscriptions({
44328
44340
  "mark:archive": handleResourceArchive,
44329
44341
  "mark:unarchive": handleResourceUnarchive,