@semiont/react-ui 0.2.35-build.99 → 0.2.36

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 (210) hide show
  1. package/README.md +1 -0
  2. package/dist/{EventBusContext-DMI4uwYk.d.mts → EventBusContext-CLnb2LmB.d.mts} +5 -5
  3. package/dist/{PdfAnnotationCanvas.client-HNYRKFDS.mjs → PdfAnnotationCanvas.client-COQREPXU.mjs} +7 -7
  4. package/dist/PdfAnnotationCanvas.client-COQREPXU.mjs.map +1 -0
  5. package/dist/ar-7SUXNE34.mjs +376 -0
  6. package/dist/ar-7SUXNE34.mjs.map +1 -0
  7. package/dist/bn-XOET3DOI.mjs +376 -0
  8. package/dist/bn-XOET3DOI.mjs.map +1 -0
  9. package/dist/{chunk-YI5IX5ZA.mjs → chunk-2HGWOLVN.mjs} +1 -1
  10. package/dist/{chunk-YI5IX5ZA.mjs.map → chunk-2HGWOLVN.mjs.map} +1 -1
  11. package/dist/{chunk-3FIQXKQF.mjs → chunk-Q2KV6Y2J.mjs} +28 -28
  12. package/dist/{chunk-MWQ5CNKW.mjs → chunk-ZPV43WN2.mjs} +11 -11
  13. package/dist/chunk-ZPV43WN2.mjs.map +1 -0
  14. package/dist/cs-X63DXX7L.mjs +376 -0
  15. package/dist/cs-X63DXX7L.mjs.map +1 -0
  16. package/dist/da-OWTCV57A.mjs +376 -0
  17. package/dist/da-OWTCV57A.mjs.map +1 -0
  18. package/dist/de-77BMFDVF.mjs +376 -0
  19. package/dist/de-77BMFDVF.mjs.map +1 -0
  20. package/dist/el-FIBNLH2V.mjs +376 -0
  21. package/dist/el-FIBNLH2V.mjs.map +1 -0
  22. package/dist/fa-3N4CIWE6.mjs +376 -0
  23. package/dist/fa-3N4CIWE6.mjs.map +1 -0
  24. package/dist/fi-JOM3M7Z4.mjs +376 -0
  25. package/dist/fi-JOM3M7Z4.mjs.map +1 -0
  26. package/dist/fr-56QSXS7E.mjs +376 -0
  27. package/dist/fr-56QSXS7E.mjs.map +1 -0
  28. package/dist/he-SNAXPJEK.mjs +376 -0
  29. package/dist/he-SNAXPJEK.mjs.map +1 -0
  30. package/dist/hi-CRBRD5TB.mjs +376 -0
  31. package/dist/hi-CRBRD5TB.mjs.map +1 -0
  32. package/dist/id-BRCVLICF.mjs +376 -0
  33. package/dist/id-BRCVLICF.mjs.map +1 -0
  34. package/dist/index.d.mts +169 -165
  35. package/dist/index.mjs +317 -313
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/it-M2Z27BNB.mjs +376 -0
  38. package/dist/it-M2Z27BNB.mjs.map +1 -0
  39. package/dist/ja-TZUKW7HD.mjs +376 -0
  40. package/dist/ja-TZUKW7HD.mjs.map +1 -0
  41. package/dist/ko-NKBGGOL6.mjs +376 -0
  42. package/dist/ko-NKBGGOL6.mjs.map +1 -0
  43. package/dist/ms-XFXPN6RX.mjs +376 -0
  44. package/dist/ms-XFXPN6RX.mjs.map +1 -0
  45. package/dist/nl-MVYXAS5C.mjs +379 -0
  46. package/dist/nl-MVYXAS5C.mjs.map +1 -0
  47. package/dist/no-XOLO4JPV.mjs +376 -0
  48. package/dist/no-XOLO4JPV.mjs.map +1 -0
  49. package/dist/pl-TRWLMMC4.mjs +376 -0
  50. package/dist/pl-TRWLMMC4.mjs.map +1 -0
  51. package/dist/pt-M3TE24UI.mjs +376 -0
  52. package/dist/pt-M3TE24UI.mjs.map +1 -0
  53. package/dist/ro-QBFG2T64.mjs +376 -0
  54. package/dist/ro-QBFG2T64.mjs.map +1 -0
  55. package/dist/sv-IUECBXWX.mjs +376 -0
  56. package/dist/sv-IUECBXWX.mjs.map +1 -0
  57. package/dist/test-utils.d.mts +2 -2
  58. package/dist/test-utils.mjs +2 -2
  59. package/dist/th-US7KIN5Q.mjs +376 -0
  60. package/dist/th-US7KIN5Q.mjs.map +1 -0
  61. package/dist/tr-DWJ2FFUK.mjs +376 -0
  62. package/dist/tr-DWJ2FFUK.mjs.map +1 -0
  63. package/dist/uk-M4ZE4DPZ.mjs +376 -0
  64. package/dist/uk-M4ZE4DPZ.mjs.map +1 -0
  65. package/dist/vi-FERZNPSH.mjs +376 -0
  66. package/dist/vi-FERZNPSH.mjs.map +1 -0
  67. package/dist/zh-3J2I3WYK.mjs +376 -0
  68. package/dist/zh-3J2I3WYK.mjs.map +1 -0
  69. package/package.json +3 -3
  70. package/src/components/AnnotateReferencesProgressWidget.tsx +5 -5
  71. package/src/components/CodeMirrorRenderer.tsx +5 -5
  72. package/src/components/Toolbar.tsx +2 -2
  73. package/src/components/annotation/AnnotateToolbar.tsx +9 -9
  74. package/src/components/annotation/__tests__/AnnotateToolbar.test.tsx +17 -17
  75. package/src/components/image-annotation/AnnotationOverlay.tsx +10 -10
  76. package/src/components/image-annotation/SvgDrawingCanvas.tsx +4 -4
  77. package/src/components/navigation/CollapsibleResourceNavigation.tsx +7 -7
  78. package/src/components/navigation/ObservableLink.tsx +3 -3
  79. package/src/components/navigation/SimpleNavigation.tsx +2 -2
  80. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +8 -8
  81. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +2 -0
  82. package/src/components/resource/AnnotateView.tsx +12 -12
  83. package/src/components/resource/BrowseView.tsx +9 -9
  84. package/src/components/resource/ResourceViewer.tsx +23 -23
  85. package/src/components/resource/__tests__/BrowseView.test.tsx +27 -27
  86. package/src/components/resource/__tests__/ResourceViewer.mode-switch.test.tsx +1 -1
  87. package/src/components/resource/panels/AssessmentEntry.tsx +2 -2
  88. package/src/components/resource/panels/AssessmentPanel.tsx +7 -7
  89. package/src/components/resource/panels/AssistSection.tsx +5 -5
  90. package/src/components/resource/panels/CommentEntry.tsx +2 -2
  91. package/src/components/resource/panels/CommentsPanel.tsx +7 -7
  92. package/src/components/resource/panels/HighlightEntry.tsx +2 -2
  93. package/src/components/resource/panels/HighlightPanel.tsx +5 -5
  94. package/src/components/resource/panels/ReferenceEntry.tsx +8 -8
  95. package/src/components/resource/panels/ReferencesPanel.tsx +10 -10
  96. package/src/components/resource/panels/ResourceInfoPanel.tsx +6 -6
  97. package/src/components/resource/panels/TagEntry.tsx +2 -2
  98. package/src/components/resource/panels/TaggingPanel.tsx +8 -8
  99. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +2 -2
  100. package/src/components/resource/panels/__tests__/AssessmentPanel.test.tsx +4 -4
  101. package/src/components/resource/panels/__tests__/AssistSection.test.tsx +4 -4
  102. package/src/components/resource/panels/__tests__/CommentEntry.test.tsx +8 -8
  103. package/src/components/resource/panels/__tests__/CommentsPanel.test.tsx +3 -3
  104. package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +1 -1
  105. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +3 -3
  106. package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +9 -9
  107. package/src/components/resource/panels/__tests__/TaggingPanel.test.tsx +5 -5
  108. package/src/features/admin-devops/components/AdminDevOpsPage.tsx +2 -1
  109. package/src/features/admin-security/components/AdminSecurityPage.tsx +2 -1
  110. package/src/features/admin-users/components/AdminUsersPage.tsx +2 -1
  111. package/src/features/moderate-entity-tags/components/EntityTagsPage.tsx +2 -1
  112. package/src/features/moderate-recent/components/RecentDocumentsPage.tsx +2 -1
  113. package/src/features/moderate-tag-schemas/components/TagSchemasPage.tsx +2 -1
  114. package/src/features/resource-compose/components/ResourceComposePage.tsx +2 -1
  115. package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +2 -1
  116. package/src/features/resource-viewer/__tests__/AnnotationCreationPending.test.tsx +26 -26
  117. package/src/features/resource-viewer/__tests__/AnnotationDeletionIntegration.test.tsx +21 -21
  118. package/src/features/resource-viewer/__tests__/AnnotationProgressDismissal.test.tsx +23 -23
  119. package/src/features/resource-viewer/__tests__/{ResolutionFlowIntegration.test.tsx → BindFlowIntegration.test.tsx} +49 -49
  120. package/src/features/resource-viewer/__tests__/DetectionFlowBug.test.tsx +18 -18
  121. package/src/features/resource-viewer/__tests__/DetectionFlowIntegration.test.tsx +19 -19
  122. package/src/features/resource-viewer/__tests__/ResourceMutations.test.tsx +19 -19
  123. package/src/features/resource-viewer/__tests__/ToastNotifications.test.tsx +13 -13
  124. package/src/features/resource-viewer/__tests__/{GenerationFlowIntegration.test.tsx → YieldFlowIntegration.test.tsx} +34 -34
  125. package/src/features/resource-viewer/__tests__/annotation-progress-flow.test.tsx +11 -11
  126. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +55 -55
  127. package/translations/ar.json +298 -298
  128. package/translations/bn.json +298 -298
  129. package/translations/cs.json +295 -295
  130. package/translations/da.json +282 -282
  131. package/translations/de.json +281 -281
  132. package/translations/el.json +298 -298
  133. package/translations/fa.json +298 -298
  134. package/translations/fi.json +298 -298
  135. package/translations/fr.json +279 -279
  136. package/translations/he.json +298 -298
  137. package/translations/hi.json +298 -298
  138. package/translations/id.json +295 -295
  139. package/translations/it.json +299 -299
  140. package/translations/ja.json +298 -298
  141. package/translations/ko.json +298 -298
  142. package/translations/ms.json +296 -296
  143. package/translations/nl.json +299 -296
  144. package/translations/no.json +292 -292
  145. package/translations/pl.json +297 -297
  146. package/translations/pt.json +294 -294
  147. package/translations/ro.json +298 -298
  148. package/translations/sv.json +293 -293
  149. package/translations/th.json +298 -298
  150. package/translations/tr.json +298 -298
  151. package/translations/uk.json +298 -298
  152. package/translations/vi.json +298 -298
  153. package/translations/zh.json +298 -298
  154. package/dist/PdfAnnotationCanvas.client-HNYRKFDS.mjs.map +0 -1
  155. package/dist/ar-MDB7HC5S.mjs +0 -376
  156. package/dist/ar-MDB7HC5S.mjs.map +0 -1
  157. package/dist/bn-3SAV2ZEM.mjs +0 -376
  158. package/dist/bn-3SAV2ZEM.mjs.map +0 -1
  159. package/dist/chunk-MWQ5CNKW.mjs.map +0 -1
  160. package/dist/cs-AWCETEUV.mjs +0 -376
  161. package/dist/cs-AWCETEUV.mjs.map +0 -1
  162. package/dist/da-UZZHXYLC.mjs +0 -376
  163. package/dist/da-UZZHXYLC.mjs.map +0 -1
  164. package/dist/de-LQFWN6S5.mjs +0 -376
  165. package/dist/de-LQFWN6S5.mjs.map +0 -1
  166. package/dist/el-IWOETBJ7.mjs +0 -376
  167. package/dist/el-IWOETBJ7.mjs.map +0 -1
  168. package/dist/fa-BVEJZT5S.mjs +0 -376
  169. package/dist/fa-BVEJZT5S.mjs.map +0 -1
  170. package/dist/fi-JBNCGGA6.mjs +0 -376
  171. package/dist/fi-JBNCGGA6.mjs.map +0 -1
  172. package/dist/fr-OLH7PNGI.mjs +0 -376
  173. package/dist/fr-OLH7PNGI.mjs.map +0 -1
  174. package/dist/he-KOJQ4HMA.mjs +0 -376
  175. package/dist/he-KOJQ4HMA.mjs.map +0 -1
  176. package/dist/hi-BKJFZXAY.mjs +0 -376
  177. package/dist/hi-BKJFZXAY.mjs.map +0 -1
  178. package/dist/id-DPLHJVNP.mjs +0 -376
  179. package/dist/id-DPLHJVNP.mjs.map +0 -1
  180. package/dist/it-JXHAM7NL.mjs +0 -376
  181. package/dist/it-JXHAM7NL.mjs.map +0 -1
  182. package/dist/ja-DQRAO3PU.mjs +0 -376
  183. package/dist/ja-DQRAO3PU.mjs.map +0 -1
  184. package/dist/ko-6IFCOP6F.mjs +0 -376
  185. package/dist/ko-6IFCOP6F.mjs.map +0 -1
  186. package/dist/ms-KF5S2TLL.mjs +0 -376
  187. package/dist/ms-KF5S2TLL.mjs.map +0 -1
  188. package/dist/nl-2GUUZLQM.mjs +0 -376
  189. package/dist/nl-2GUUZLQM.mjs.map +0 -1
  190. package/dist/no-2IBCZGEF.mjs +0 -376
  191. package/dist/no-2IBCZGEF.mjs.map +0 -1
  192. package/dist/pl-ZEUBJ7YU.mjs +0 -376
  193. package/dist/pl-ZEUBJ7YU.mjs.map +0 -1
  194. package/dist/pt-WLAFIZWQ.mjs +0 -376
  195. package/dist/pt-WLAFIZWQ.mjs.map +0 -1
  196. package/dist/ro-K56IXFGU.mjs +0 -376
  197. package/dist/ro-K56IXFGU.mjs.map +0 -1
  198. package/dist/sv-VFJLMJRY.mjs +0 -376
  199. package/dist/sv-VFJLMJRY.mjs.map +0 -1
  200. package/dist/th-RICLQ2GW.mjs +0 -376
  201. package/dist/th-RICLQ2GW.mjs.map +0 -1
  202. package/dist/tr-SALXWE2M.mjs +0 -376
  203. package/dist/tr-SALXWE2M.mjs.map +0 -1
  204. package/dist/uk-3U3T3O2E.mjs +0 -376
  205. package/dist/uk-3U3T3O2E.mjs.map +0 -1
  206. package/dist/vi-LIVNZXOB.mjs +0 -376
  207. package/dist/vi-LIVNZXOB.mjs.map +0 -1
  208. package/dist/zh-KDUAZPX3.mjs +0 -376
  209. package/dist/zh-KDUAZPX3.mjs.map +0 -1
  210. /package/dist/{chunk-3FIQXKQF.mjs.map → chunk-Q2KV6Y2J.mjs.map} +0 -0
package/README.md CHANGED
@@ -242,6 +242,7 @@ See [docs/TESTING.md](docs/TESTING.md) for details.
242
242
  - [STYLES.md](docs/STYLES.md) - CSS architecture and styling guide
243
243
  - [FAVICON.md](docs/FAVICON.md) - Favicon assets and usage
244
244
  - [ANNOTATIONS.md](docs/ANNOTATIONS.md) - Annotation system (coming soon)
245
+ - [ACCESSIBILITY.md](docs/ACCESSIBILITY.md) - Accessibility architecture and WCAG compliance
245
246
 
246
247
  ## Examples
247
248
 
@@ -143,7 +143,7 @@ interface EventBusProviderProps {
143
143
  * same global bus.
144
144
  *
145
145
  * Operation handlers (API calls triggered by events) are set up separately via
146
- * the useResolutionFlow hook, which should be called at the resource page level.
146
+ * the useBindFlow hook, which should be called at the resource page level.
147
147
  */
148
148
  declare function EventBusProvider({ children }: EventBusProviderProps): react_jsx_runtime.JSX.Element;
149
149
  /**
@@ -159,13 +159,13 @@ declare function EventBusProvider({ children }: EventBusProviderProps): react_js
159
159
  * const eventBus = useEventBus();
160
160
  *
161
161
  * // Emit any event
162
- * eventBus.get('attend:hover').next({ annotationId: '123' });
163
- * eventBus.get('navigation:sidebar-toggle').next(undefined);
162
+ * eventBus.get('beckon:hover').next({ annotationId: '123' });
163
+ * eventBus.get('browse:sidebar-toggle').next(undefined);
164
164
  * eventBus.get('settings:theme-changed').next({ theme: 'dark' });
165
165
  *
166
166
  * // Subscribe to any event
167
167
  * useEffect(() => {
168
- * const unsubscribe = eventBus.on('attend:hover', ({ annotationId }) => {
168
+ * const unsubscribe = eventBus.on('beckon:hover', ({ annotationId }) => {
169
169
  * console.log(annotationId);
170
170
  * });
171
171
  * return () => unsubscribe();
@@ -174,4 +174,4 @@ declare function EventBusProvider({ children }: EventBusProviderProps): react_js
174
174
  */
175
175
  declare function useEventBus(): EventBus;
176
176
 
177
- export { type EventBusProviderProps as E, type OpenResourcesManager as O, type SessionManager as S, type TranslationManager as T, type OpenResource as a, type SessionState as b, EventBusProvider as c, resetEventBusForTesting as r, useEventBus as u };
177
+ export { EventBusProvider as E, type OpenResourcesManager as O, type SessionManager as S, type TranslationManager as T, type EventBusProviderProps as a, type OpenResource as b, type SessionState as c, resetEventBusForTesting as r, useEventBus as u };
@@ -2,8 +2,8 @@
2
2
  "use client";
3
3
  import {
4
4
  createHoverHandlers
5
- } from "./chunk-MWQ5CNKW.mjs";
6
- import "./chunk-YI5IX5ZA.mjs";
5
+ } from "./chunk-ZPV43WN2.mjs";
6
+ import "./chunk-2HGWOLVN.mjs";
7
7
  import "./chunk-3JTO27MH.mjs";
8
8
 
9
9
  // src/components/pdf-annotation/PdfAnnotationCanvas.tsx
@@ -305,7 +305,7 @@ function PdfAnnotationCanvas({
305
305
  return selection.endX >= displayX && selection.endX <= displayX + displayWidth && selection.endY >= displayY && selection.endY <= displayY + displayHeight;
306
306
  });
307
307
  if (clickedAnnotation) {
308
- eventBus?.get("attend:click").next({ annotationId: clickedAnnotation.id, motivation: clickedAnnotation.motivation });
308
+ eventBus?.get("browse:click").next({ annotationId: clickedAnnotation.id, motivation: clickedAnnotation.motivation });
309
309
  setIsDrawing(false);
310
310
  setSelection(null);
311
311
  return;
@@ -333,7 +333,7 @@ function PdfAnnotationCanvas({
333
333
  );
334
334
  const fragmentSelector = createFragmentSelector(pdfCoord);
335
335
  if (selectedMotivation) {
336
- eventBus.get("annotate:requested").next({
336
+ eventBus.get("mark:requested").next({
337
337
  selector: {
338
338
  type: "FragmentSelector",
339
339
  conformsTo: "http://tools.ietf.org/rfc/rfc3778",
@@ -359,7 +359,7 @@ function PdfAnnotationCanvas({
359
359
  return page === pageNumber;
360
360
  });
361
361
  const { handleMouseEnter, handleMouseLeave } = useMemo(
362
- () => createHoverHandlers((annotationId) => eventBus?.get("attend:hover").next({ annotationId }), hoverDelayMs),
362
+ () => createHoverHandlers((annotationId) => eventBus?.get("beckon:hover").next({ annotationId }), hoverDelayMs),
363
363
  [eventBus, hoverDelayMs]
364
364
  );
365
365
  const { stroke, fill } = getMotivationColor(selectedMotivation ?? null);
@@ -442,7 +442,7 @@ function PdfAnnotationCanvas({
442
442
  cursor: "pointer",
443
443
  opacity: isSelected ? 1 : isHovered ? 0.9 : 0.7
444
444
  },
445
- onClick: () => eventBus?.get("attend:click").next({ annotationId: ann.id, motivation: ann.motivation }),
445
+ onClick: () => eventBus?.get("browse:click").next({ annotationId: ann.id, motivation: ann.motivation }),
446
446
  onMouseEnter: () => handleMouseEnter(ann.id),
447
447
  onMouseLeave: handleMouseLeave
448
448
  },
@@ -506,4 +506,4 @@ function PdfAnnotationCanvas({
506
506
  export {
507
507
  PdfAnnotationCanvas
508
508
  };
509
- //# sourceMappingURL=PdfAnnotationCanvas.client-HNYRKFDS.mjs.map
509
+ //# sourceMappingURL=PdfAnnotationCanvas.client-COQREPXU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/pdf-annotation/PdfAnnotationCanvas.tsx","../src/lib/pdf-coordinates.ts","../src/lib/browser-pdfjs.ts"],"sourcesContent":["'use client';\n\nimport React, { useRef, useState, useCallback, useEffect, useMemo } from 'react';\nimport { createHoverHandlers } from '../../hooks/useBeckonFlow';\nimport type { components, ResourceUri } from '@semiont/core';\nimport { getTargetSelector } from '@semiont/api-client';\nimport type { SelectionMotivation } from '../annotation/AnnotateToolbar';\nimport type { EventBus } from \"@semiont/core\"\nimport {\n canvasToPdfCoordinates,\n pdfToCanvasCoordinates,\n createFragmentSelector,\n parseFragmentSelector,\n getPageFromFragment,\n type CanvasRectangle\n} from '../../lib/pdf-coordinates';\nimport {\n loadPdfDocument,\n renderPdfPageToDataUrl,\n type PDFDocumentProxy\n} from '../../lib/browser-pdfjs';\nimport './PdfAnnotationCanvas.css';\n\ntype Annotation = components['schemas']['Annotation'];\n\nexport type DrawingMode = 'rectangle' | 'circle' | 'polygon' | null;\n\n/**\n * Get color for annotation based on motivation\n */\nfunction getMotivationColor(motivation: SelectionMotivation | null): { stroke: string; fill: string } {\n if (!motivation) {\n return { stroke: 'rgb(156, 163, 175)', fill: 'rgba(156, 163, 175, 0.2)' };\n }\n\n switch (motivation) {\n case 'highlighting':\n return { stroke: 'rgb(250, 204, 21)', fill: 'rgba(250, 204, 21, 0.3)' };\n case 'linking':\n return { stroke: 'rgb(59, 130, 246)', fill: 'rgba(59, 130, 246, 0.2)' };\n case 'assessing':\n return { stroke: 'rgb(239, 68, 68)', fill: 'rgba(239, 68, 68, 0.2)' };\n case 'commenting':\n return { stroke: 'rgb(255, 255, 255)', fill: 'rgba(255, 255, 255, 0.2)' };\n default:\n return { stroke: 'rgb(156, 163, 175)', fill: 'rgba(156, 163, 175, 0.2)' };\n }\n}\n\ninterface PdfAnnotationCanvasProps {\n resourceUri: ResourceUri;\n existingAnnotations?: Annotation[];\n drawingMode: DrawingMode;\n selectedMotivation?: SelectionMotivation | null;\n eventBus?: EventBus;\n hoveredAnnotationId?: string | null;\n selectedAnnotationId?: string | null;\n hoverDelayMs?: number;\n}\n\n/**\n * PDF annotation canvas with page navigation and rectangle drawing\n *\n * @emits browse:click - Annotation clicked on PDF. Payload: { annotationId: string, motivation: Motivation }\n * @emits mark:requested - New annotation drawn on PDF. Payload: { selector: FragmentSelector, motivation: SelectionMotivation }\n * @emits beckon:hover - Annotation hovered or unhovered. Payload: { annotationId: string | null }\n */\nexport function PdfAnnotationCanvas({\n resourceUri,\n existingAnnotations = [],\n drawingMode,\n selectedMotivation,\n eventBus,\n hoveredAnnotationId,\n selectedAnnotationId,\n hoverDelayMs = 150\n}: PdfAnnotationCanvasProps) {\n const pdfUrl = useMemo(() => {\n const resourceId = resourceUri.split('/').pop();\n return `/api/resources/${resourceId}`;\n }, [resourceUri]);\n\n // Removed excessive logging\n\n // PDF state\n const [pdfDoc, setPdfDoc] = useState<PDFDocumentProxy | null>(null);\n const [numPages, setNumPages] = useState<number>(0);\n const [pageNumber, setPageNumber] = useState(1);\n const [pageImageUrl, setPageImageUrl] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [pageDimensions, setPageDimensions] = useState<{ width: number; height: number } | null>(null);\n const [displayDimensions, setDisplayDimensions] = useState<{ width: number; height: number } | null>(null);\n const [scale] = useState(1.5); // Fixed scale for better quality\n\n // Drawing state\n const [isDrawing, setIsDrawing] = useState(false);\n const [selection, setSelection] = useState<CanvasRectangle | null>(null);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const imageRef = useRef<HTMLImageElement>(null);\n\n // Load PDF document on mount\n useEffect(() => {\n let cancelled = false;\n\n async function loadPdf() {\n try {\n setIsLoading(true);\n setError(null);\n\n const doc = await loadPdfDocument(pdfUrl);\n\n if (cancelled) return;\n\n setPdfDoc(doc);\n setNumPages(doc.numPages);\n setIsLoading(false);\n } catch (err) {\n if (cancelled) return;\n\n console.error('Error loading PDF:', err);\n setError('Failed to load PDF');\n setIsLoading(false);\n }\n }\n\n loadPdf();\n\n return () => {\n cancelled = true;\n };\n }, [pdfUrl]);\n\n // Load current page when page number changes\n useEffect(() => {\n if (!pdfDoc) return;\n\n let cancelled = false;\n const doc = pdfDoc;\n\n async function loadPage() {\n try {\n const page = await doc.getPage(pageNumber);\n\n if (cancelled) return;\n\n // Get page dimensions (at scale 1.0)\n const viewport = page.getViewport({ scale: 1.0 });\n setPageDimensions({\n width: viewport.width,\n height: viewport.height\n });\n\n // Render page to image\n const { dataUrl } = await renderPdfPageToDataUrl(page, scale);\n\n if (cancelled) return;\n\n setPageImageUrl(dataUrl);\n } catch (err) {\n if (cancelled) return;\n\n console.error('Error loading page:', err);\n setError('Failed to load page');\n }\n }\n\n loadPage();\n\n return () => {\n cancelled = true;\n };\n }, [pdfDoc, pageNumber, scale]);\n\n // Update display dimensions on resize\n useEffect(() => {\n const updateDisplayDimensions = () => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n };\n\n updateDisplayDimensions();\n\n // Use ResizeObserver to detect image element size changes\n // This catches: sidebar open/close, window resize, font size changes, etc.\n let resizeObserver: ResizeObserver | null = null;\n\n try {\n resizeObserver = new ResizeObserver(updateDisplayDimensions);\n if (imageRef.current) {\n resizeObserver.observe(imageRef.current);\n }\n } catch (error) {\n // Fallback for browsers without ResizeObserver support\n console.warn('ResizeObserver not supported, falling back to window resize listener');\n window.addEventListener('resize', updateDisplayDimensions);\n }\n\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else {\n window.removeEventListener('resize', updateDisplayDimensions);\n }\n };\n }, [pageImageUrl]);\n\n // Mouse event handlers for drawing\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n if (!drawingMode) return;\n if (!imageRef.current) return;\n\n const rect = imageRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Clear any previous selection when starting new drawing\n setIsDrawing(true);\n setSelection({\n startX: x,\n startY: y,\n endX: x,\n endY: y\n });\n }, [drawingMode]);\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!isDrawing || !selection || !imageRef.current) return;\n\n const rect = imageRef.current.getBoundingClientRect();\n\n setSelection({\n ...selection,\n endX: e.clientX - rect.left,\n endY: e.clientY - rect.top\n });\n }, [isDrawing, selection]);\n\n const handleMouseUp = useCallback(() => {\n if (!isDrawing || !selection || !pageDimensions || !displayDimensions || !eventBus) {\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n\n // Calculate drag distance\n const dragDistance = Math.sqrt(\n Math.pow(selection.endX - selection.startX, 2) +\n Math.pow(selection.endY - selection.startY, 2)\n );\n\n // Minimum drag threshold in pixels (10px)\n const MIN_DRAG_DISTANCE = 10;\n\n if (dragDistance < MIN_DRAG_DISTANCE) {\n // This was a click, not a drag - check if we clicked an existing annotation\n if (existingAnnotations.length > 0) {\n const clickedAnnotation = pageAnnotations.find(ann => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n\n const pdfCoord = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord) return false;\n\n const rect = pdfToCanvasCoordinates(pdfCoord, pageDimensions.height, 1.0);\n\n // Scale to display coordinates\n const scaleX = displayDimensions.width / pageDimensions.width;\n const scaleY = displayDimensions.height / pageDimensions.height;\n\n const displayX = rect.x * scaleX;\n const displayY = rect.y * scaleY;\n const displayWidth = rect.width * scaleX;\n const displayHeight = rect.height * scaleY;\n\n return (\n selection.endX >= displayX &&\n selection.endX <= displayX + displayWidth &&\n selection.endY >= displayY &&\n selection.endY <= displayY + displayHeight\n );\n });\n\n if (clickedAnnotation) {\n eventBus?.get('browse:click').next({ annotationId: clickedAnnotation.id, motivation: clickedAnnotation.motivation });\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n }\n\n // Click on empty space - do nothing\n setIsDrawing(false);\n setSelection(null);\n return;\n }\n\n // This was a drag - create new annotation\n // Scale selection from display coordinates to native page coordinates\n const scaleX = pageDimensions.width / displayDimensions.width;\n const scaleY = pageDimensions.height / displayDimensions.height;\n\n const nativeSelection: CanvasRectangle = {\n startX: selection.startX * scaleX,\n startY: selection.startY * scaleY,\n endX: selection.endX * scaleX,\n endY: selection.endY * scaleY\n };\n\n // Convert canvas coordinates to PDF coordinates\n const pdfCoord = canvasToPdfCoordinates(\n nativeSelection,\n pageNumber,\n pageDimensions.width,\n pageDimensions.height,\n 1.0 // Use scale 1.0 since we already scaled to native coords\n );\n\n // Create FragmentSelector\n const fragmentSelector = createFragmentSelector(pdfCoord);\n\n // Emit annotation:requested event with FragmentSelector\n if (selectedMotivation) {\n eventBus.get('mark:requested').next({\n selector: {\n type: 'FragmentSelector',\n conformsTo: 'http://tools.ietf.org/rfc/rfc3778',\n value: fragmentSelector\n },\n motivation: selectedMotivation\n });\n }\n\n // Keep drawing state active to show preview until annotation is persisted\n // The parent component should clear this by changing drawingMode after save\n setIsDrawing(false);\n // Note: We keep selection so the preview remains visible\n // It will be cleared when drawingMode changes or user starts new selection\n }, [isDrawing, selection, pageNumber, pageDimensions, displayDimensions, selectedMotivation, existingAnnotations]);\n\n // Helper to get FragmentSelector from annotation target\n const getFragmentSelector = (target: Annotation['target']) => {\n const selector = getTargetSelector(target);\n if (!selector) return null;\n const selectors = Array.isArray(selector) ? selector : [selector];\n\n const found = selectors.find(s => s.type === 'FragmentSelector');\n if (!found || found.type !== 'FragmentSelector') return null;\n return found as { type: 'FragmentSelector'; value: string; conformsTo?: string };\n };\n\n // Filter annotations for current page\n const pageAnnotations = existingAnnotations.filter(ann => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return false;\n const page = getPageFromFragment(fragmentSel.value);\n return page === pageNumber;\n });\n\n // Hover handlers with currentHover guard and dwell delay\n const { handleMouseEnter, handleMouseLeave } = useMemo(\n () => createHoverHandlers((annotationId) => eventBus?.get('beckon:hover').next({ annotationId }), hoverDelayMs),\n [eventBus, hoverDelayMs]\n );\n\n // Calculate motivation color\n const { stroke, fill } = getMotivationColor(selectedMotivation ?? null);\n\n if (error) {\n return <div className=\"semiont-pdf-annotation-canvas__error\">{error}</div>;\n }\n\n return (\n <div className=\"semiont-pdf-annotation-canvas\">\n {isLoading && <div className=\"semiont-pdf-annotation-canvas__loading\">Loading PDF...</div>}\n\n <div\n ref={containerRef}\n className=\"semiont-pdf-annotation-canvas__container\"\n style={{ display: isLoading ? 'none' : undefined }}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={() => {\n if (isDrawing) {\n setIsDrawing(false);\n setSelection(null);\n }\n }}\n data-drawing-mode={drawingMode || 'none'}\n >\n {/* PDF page rendered as image */}\n {pageImageUrl && (\n <img\n ref={imageRef}\n src={pageImageUrl}\n alt={`PDF page ${pageNumber}`}\n className=\"semiont-pdf-annotation-canvas__image\"\n draggable={false}\n style={{ pointerEvents: 'none' }}\n onLoad={() => {\n // Use double RAF to ensure layout is complete even in onLoad\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (imageRef.current) {\n setDisplayDimensions({\n width: imageRef.current.clientWidth,\n height: imageRef.current.clientHeight\n });\n }\n });\n });\n }}\n />\n )}\n\n {/* SVG overlay for annotations */}\n {displayDimensions && pageDimensions && (\n <div className=\"semiont-pdf-annotation-canvas__overlay-container\">\n <div className=\"semiont-pdf-annotation-canvas__overlay\">\n <svg\n className=\"semiont-pdf-annotation-canvas__svg\"\n width={displayDimensions.width}\n height={displayDimensions.height}\n >\n {/* Render existing annotations for this page */}\n {pageAnnotations.map(ann => {\n const fragmentSel = getFragmentSelector(ann.target);\n if (!fragmentSel) return null;\n\n const pdfCoord = parseFragmentSelector(fragmentSel.value);\n if (!pdfCoord) return null;\n\n const rect = pdfToCanvasCoordinates(pdfCoord, pageDimensions.height, 1.0);\n\n // Scale to display coordinates\n const scaleX = displayDimensions.width / pageDimensions.width;\n const scaleY = displayDimensions.height / pageDimensions.height;\n\n const isHovered = ann.id === hoveredAnnotationId;\n const isSelected = ann.id === selectedAnnotationId;\n\n // Get color for this annotation's motivation (not the selected motivation)\n const annMotivation = ann.motivation as SelectionMotivation | null;\n const { stroke: annStroke, fill: annFill } = getMotivationColor(annMotivation);\n\n return (\n <rect\n key={ann.id}\n x={rect.x * scaleX}\n y={rect.y * scaleY}\n width={rect.width * scaleX}\n height={rect.height * scaleY}\n stroke={annStroke}\n strokeWidth={isSelected ? 4 : isHovered ? 3 : 2}\n fill={annFill}\n style={{\n pointerEvents: 'auto',\n cursor: 'pointer',\n opacity: isSelected ? 1 : isHovered ? 0.9 : 0.7\n }}\n onClick={() => eventBus?.get('browse:click').next({ annotationId: ann.id, motivation: ann.motivation })}\n onMouseEnter={() => handleMouseEnter(ann.id)}\n onMouseLeave={handleMouseLeave}\n />\n );\n })}\n\n {/* Render current selection while drawing or awaiting save */}\n {selection && (() => {\n const rectX = Math.min(selection.startX, selection.endX);\n const rectY = Math.min(selection.startY, selection.endY);\n const rectWidth = Math.abs(selection.endX - selection.startX);\n const rectHeight = Math.abs(selection.endY - selection.startY);\n\n // PDF only supports rectangle shapes (FragmentSelector with viewrect)\n // Circle/polygon are disabled in the UI for PDF media types\n return (\n <rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={stroke}\n strokeWidth={2}\n strokeDasharray=\"5,5\"\n fill={fill}\n pointerEvents=\"none\"\n />\n );\n })()}\n </svg>\n </div>\n </div>\n )}\n </div>\n\n {/* Page navigation controls */}\n {numPages > 0 && (\n <div className=\"semiont-pdf-annotation-canvas__controls\">\n <button\n disabled={pageNumber <= 1}\n onClick={() => setPageNumber(pageNumber - 1)}\n className=\"semiont-pdf-annotation-canvas__button\"\n >\n Previous\n </button>\n <span className=\"semiont-pdf-annotation-canvas__page-info\">\n Page {pageNumber} of {numPages}\n </span>\n <button\n disabled={pageNumber >= numPages}\n onClick={() => setPageNumber(pageNumber + 1)}\n className=\"semiont-pdf-annotation-canvas__button\"\n >\n Next\n </button>\n </div>\n )}\n </div>\n );\n}\n","/**\n * PDF Coordinate Utilities\n *\n * Handles coordinate transformations between:\n * - Canvas space (pixels, top-left origin, Y increases downward)\n * - PDF space (points, bottom-left origin, Y increases upward)\n *\n * Based on RFC 3778 PDF Fragment Identifiers:\n * https://tools.ietf.org/html/rfc3778\n */\n\nexport interface Rectangle {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface PdfCoordinate {\n page: number;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface CanvasRectangle {\n startX: number;\n startY: number;\n endX: number;\n endY: number;\n}\n\n/**\n * Convert canvas coordinates to PDF coordinates\n *\n * Canvas: Origin at top-left, Y increases downward\n * PDF: Origin at bottom-left, Y increases upward\n *\n * @param canvasRect - Rectangle in canvas pixel coordinates\n * @param page - PDF page number (1-indexed)\n * @param pageWidth - PDF page width in points\n * @param pageHeight - PDF page height in points\n * @param scale - Current canvas scale factor\n */\nexport function canvasToPdfCoordinates(\n canvasRect: CanvasRectangle,\n page: number,\n _pageWidth: number,\n pageHeight: number,\n scale: number = 1\n): PdfCoordinate {\n // Normalize rectangle (handle drag in any direction)\n const x1 = Math.min(canvasRect.startX, canvasRect.endX);\n const y1 = Math.min(canvasRect.startY, canvasRect.endY);\n const x2 = Math.max(canvasRect.startX, canvasRect.endX);\n const y2 = Math.max(canvasRect.startY, canvasRect.endY);\n\n // Convert from canvas pixels to PDF points\n const pdfX = x1 / scale;\n const pdfWidth = (x2 - x1) / scale;\n\n // Flip Y coordinate (canvas top-left to PDF bottom-left)\n const pdfY = pageHeight - (y2 / scale);\n const pdfHeight = (y2 - y1) / scale;\n\n return {\n page,\n x: Math.round(pdfX),\n y: Math.round(pdfY),\n width: Math.round(pdfWidth),\n height: Math.round(pdfHeight)\n };\n}\n\n/**\n * Convert PDF coordinates to canvas coordinates\n *\n * @param pdfCoord - Coordinates in PDF space\n * @param pageHeight - PDF page height in points\n * @param scale - Current canvas scale factor\n */\nexport function pdfToCanvasCoordinates(\n pdfCoord: PdfCoordinate,\n pageHeight: number,\n scale: number = 1\n): Rectangle {\n // Convert from PDF points to canvas pixels\n const canvasX = pdfCoord.x * scale;\n const canvasWidth = pdfCoord.width * scale;\n\n // Flip Y coordinate (PDF bottom-left to canvas top-left)\n const canvasY = (pageHeight - pdfCoord.y - pdfCoord.height) * scale;\n const canvasHeight = pdfCoord.height * scale;\n\n return {\n x: canvasX,\n y: canvasY,\n width: canvasWidth,\n height: canvasHeight\n };\n}\n\n/**\n * Generate RFC 3778 FragmentSelector value\n *\n * Format: page=N&viewrect=left,top,width,height\n * All coordinates in PDF points\n */\nexport function createFragmentSelector(coord: PdfCoordinate): string {\n return `page=${coord.page}&viewrect=${coord.x},${coord.y},${coord.width},${coord.height}`;\n}\n\n/**\n * Parse RFC 3778 FragmentSelector value\n *\n * @param fragment - Fragment string like \"page=5&viewrect=100,200,300,400\"\n * @returns Parsed PDF coordinates or null if invalid\n */\nexport function parseFragmentSelector(fragment: string): PdfCoordinate | null {\n try {\n // Parse page number\n const pageMatch = fragment.match(/page=(\\d+)/);\n if (!pageMatch) return null;\n const page = parseInt(pageMatch[1], 10);\n\n // Parse viewrect coordinates\n const viewrectMatch = fragment.match(/viewrect=([\\d.]+),([\\d.]+),([\\d.]+),([\\d.]+)/);\n if (!viewrectMatch) return null;\n\n return {\n page,\n x: parseFloat(viewrectMatch[1]),\n y: parseFloat(viewrectMatch[2]),\n width: parseFloat(viewrectMatch[3]),\n height: parseFloat(viewrectMatch[4])\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Extract page number from FragmentSelector\n */\nexport function getPageFromFragment(fragment: string): number | null {\n const match = fragment.match(/page=(\\d+)/);\n return match ? parseInt(match[1], 10) : null;\n}\n","/**\n * Browser PDF.js utilities\n *\n * Uses native browser PDF.js when available, falls back to CDN.\n * Zero npm dependencies - no webpack bundling issues.\n */\n\n// Type definitions for PDF.js API\nexport interface PDFDocumentProxy {\n numPages: number;\n getPage(pageNumber: number): Promise<PDFPageProxy>;\n}\n\nexport interface PDFPageProxy {\n getViewport(params: { scale: number; rotation?: number }): PDFViewport;\n render(params: PDFRenderParams): PDFRenderTask;\n getTextContent(): Promise<TextContent>;\n}\n\nexport interface PDFViewport {\n width: number;\n height: number;\n scale: number;\n rotation: number;\n}\n\nexport interface PDFRenderParams {\n canvasContext: CanvasRenderingContext2D;\n viewport: PDFViewport;\n}\n\nexport interface PDFRenderTask {\n promise: Promise<void>;\n cancel(): void;\n}\n\nexport interface PDFLib {\n getDocument(params: { data: ArrayBuffer } | { url: string }): PDFLoadingTask;\n GlobalWorkerOptions: {\n workerSrc: string;\n };\n version: string;\n}\n\nexport interface PDFLoadingTask {\n promise: Promise<PDFDocumentProxy>;\n destroy(): void;\n}\n\n/**\n * Text content types (for Phase 2)\n */\nexport interface TextItem {\n str: string;\n dir: string;\n transform: number[]; // [scaleX, skewX, skewY, scaleY, x, y]\n width: number;\n height: number;\n fontName: string;\n hasEOL: boolean;\n}\n\nexport interface TextContent {\n items: TextItem[];\n styles: Record<string, any>;\n}\n\n/**\n * Ensure PDF.js is available, loading from local public folder if needed\n */\nexport async function ensurePdfJs(): Promise<PDFLib> {\n // Check if already available (browser native or already loaded)\n if (typeof window !== 'undefined' && (window as any).pdfjsLib) {\n return (window as any).pdfjsLib as PDFLib;\n }\n\n // Load from local public folder (staged during build)\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = '/pdfjs/pdf.min.mjs';\n script.type = 'module';\n\n script.onload = () => {\n const pdfjsLib = (window as any).pdfjsLib as PDFLib;\n\n if (!pdfjsLib) {\n reject(new Error('PDF.js loaded but pdfjsLib not available'));\n return;\n }\n\n // Configure worker (also served from local public folder)\n pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdfjs/pdf.worker.min.mjs';\n\n resolve(pdfjsLib);\n };\n\n script.onerror = () => {\n reject(new Error('Failed to load PDF.js from /pdfjs/pdf.min.mjs'));\n };\n\n document.head.appendChild(script);\n });\n}\n\n/**\n * Load PDF document from URL or ArrayBuffer\n *\n * When given a URL string, fetches the PDF as ArrayBuffer with credentials\n * to ensure authentication cookies are included in the request.\n */\nexport async function loadPdfDocument(\n source: string | ArrayBuffer\n): Promise<PDFDocumentProxy> {\n const pdfjsLib = await ensurePdfJs();\n\n if (typeof source === 'string') {\n // Fetch as ArrayBuffer first to include authentication cookies\n const response = await fetch(source, {\n credentials: 'include',\n headers: {\n 'Accept': 'application/pdf',\n },\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch PDF: ${response.status} ${response.statusText}`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const loadingTask = pdfjsLib.getDocument({ data: arrayBuffer });\n return loadingTask.promise;\n } else {\n const loadingTask = pdfjsLib.getDocument({ data: source });\n return loadingTask.promise;\n }\n}\n\n/**\n * Render PDF page to canvas and return as data URL\n */\nexport async function renderPdfPageToDataUrl(\n page: PDFPageProxy,\n scale = 1.0\n): Promise<{ dataUrl: string; width: number; height: number }> {\n const viewport = page.getViewport({ scale });\n\n // Create canvas\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) {\n throw new Error('Failed to get 2D context');\n }\n\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n\n // Render PDF page to canvas\n const renderTask = page.render({\n canvasContext: context,\n viewport: viewport\n });\n\n await renderTask.promise;\n\n // Convert to data URL\n return {\n dataUrl: canvas.toDataURL('image/png'),\n width: viewport.width,\n height: viewport.height\n };\n}\n\n/**\n * Render PDF page with text content extraction (Phase 2)\n *\n * This function extracts text in parallel with rendering for future\n * text layer support. Currently the text content is available but not used.\n */\nexport async function renderPdfPageWithText(\n page: PDFPageProxy,\n scale = 1.0\n): Promise<{\n dataUrl: string;\n width: number;\n height: number;\n textContent: TextContent;\n}> {\n const viewport = page.getViewport({ scale });\n\n // Create canvas for rendering\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (!context) {\n throw new Error('Failed to get 2D context');\n }\n\n canvas.width = viewport.width;\n canvas.height = viewport.height;\n\n // Render PDF page to canvas\n const renderTask = page.render({\n canvasContext: context,\n viewport: viewport\n });\n\n // Extract text content in parallel (for future text layer support)\n const [, textContent] = await Promise.all([\n renderTask.promise,\n page.getTextContent()\n ]);\n\n // Convert to data URL\n return {\n dataUrl: canvas.toDataURL('image/png'),\n width: viewport.width,\n height: viewport.height,\n textContent\n };\n}\n"],"mappings":"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","names":["error","pdfCoord","scaleX","scaleY"]}
@@ -0,0 +1,376 @@
1
+ 'use client';
2
+ import "./chunk-3JTO27MH.mjs";
3
+
4
+ // translations/ar.json
5
+ var Toolbar = {
6
+ annotations: "\u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u0629",
7
+ history: "\u0627\u0644\u0633\u062C\u0644",
8
+ resourceInfo: "\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0627\u0644\u0645\u0648\u0631\u062F",
9
+ collaboration: "\u0627\u0644\u062A\u0639\u0627\u0648\u0646",
10
+ userAccount: "\u062D\u0633\u0627\u0628 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
11
+ settings: "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A"
12
+ };
13
+ var ResourceInfoPanel = {
14
+ title: "\u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0627\u0644\u0645\u0648\u0631\u062F",
15
+ locale: "\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0645\u062D\u0644\u064A\u0629",
16
+ notSpecified: "\u063A\u064A\u0631 \u0645\u062D\u062F\u062F",
17
+ entityTypeTags: "\u0639\u0644\u0627\u0645\u0627\u062A \u0646\u0648\u0639 \u0627\u0644\u0643\u064A\u0627\u0646",
18
+ representation: "\u0627\u0644\u062A\u0645\u062B\u064A\u0644",
19
+ mediaType: "\u0646\u0648\u0639 \u0627\u0644\u0648\u0633\u0627\u0626\u0637",
20
+ byteSize: "\u0627\u0644\u062D\u062C\u0645",
21
+ clone: "\u0627\u0633\u062A\u0646\u0633\u0627\u062E",
22
+ cloneDescription: "\u0625\u0646\u0634\u0627\u0621 \u0631\u0627\u0628\u0637 \u0627\u0633\u062A\u0646\u0633\u0627\u062E \u0642\u0627\u0628\u0644 \u0644\u0644\u0645\u0634\u0627\u0631\u0643\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0631\u062F",
23
+ archive: "\u0623\u0631\u0634\u0641\u0629",
24
+ archiveDescription: "\u0646\u0642\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0631\u062F \u0625\u0644\u0649 \u062D\u0627\u0644\u0629 \u0627\u0644\u0623\u0631\u0634\u064A\u0641",
25
+ unarchive: "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0623\u0631\u0634\u0641\u0629",
26
+ unarchiveDescription: "\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0631\u062F \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0644\u0629 \u0627\u0644\u0646\u0634\u0637\u0629"
27
+ };
28
+ var CollaborationPanel = {
29
+ title: "\u0627\u0644\u062A\u0639\u0627\u0648\u0646",
30
+ connectionStatus: "\u062D\u0627\u0644\u0629 \u0627\u0644\u0627\u062A\u0635\u0627\u0644",
31
+ live: "\u0645\u0628\u0627\u0634\u0631",
32
+ disconnected: "\u063A\u064A\u0631 \u0645\u062A\u0635\u0644",
33
+ events: "{count} \u0623\u062D\u062F\u0627\u062B",
34
+ lastSync: "\u0622\u062E\u0631 \u0645\u0632\u0627\u0645\u0646\u0629:",
35
+ noActivity: "\u0644\u0627 \u064A\u0648\u062C\u062F \u0646\u0634\u0627\u0637 \u0628\u0639\u062F",
36
+ justNow: "\u0627\u0644\u0622\u0646",
37
+ secondsAgo: "\u0645\u0646\u0630 {count} \u062B\u0648\u0627\u0646\u064D",
38
+ minuteAgo: "\u0645\u0646\u0630 \u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629",
39
+ minutesAgo: "\u0645\u0646\u0630 {count} \u062F\u0642\u0627\u0626\u0642",
40
+ hourAgo: "\u0645\u0646\u0630 \u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629",
41
+ hoursAgo: "\u0645\u0646\u0630 {count} \u0633\u0627\u0639\u0627\u062A",
42
+ realtimeActive: "\u0627\u0644\u062A\u062D\u062F\u064A\u062B\u0627\u062A \u0641\u064A \u0627\u0644\u0648\u0642\u062A \u0627\u0644\u0641\u0639\u0644\u064A \u0646\u0634\u0637\u0629",
43
+ reconnecting: "\u062C\u0627\u0631\u064D \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0627\u062A\u0635\u0627\u0644 \u0628\u0627\u0644\u062E\u0627\u062F\u0645...",
44
+ sharing: "\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0629",
45
+ collaborationComingSoon: "\u0645\u064A\u0632\u0627\u062A \u0627\u0644\u062A\u0639\u0627\u0648\u0646 \u0642\u0627\u062F\u0645\u0629 \u0642\u0631\u064A\u0628\u064B\u0627"
46
+ };
47
+ var AnnotationHistory = {
48
+ history: "\u0627\u0644\u0633\u062C\u0644",
49
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644...",
50
+ user: "\u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
51
+ method: "\u0627\u0644\u0637\u0631\u064A\u0642\u0629",
52
+ viewOriginal: "\u0639\u0631\u0636 \u0627\u0644\u0623\u0635\u0644",
53
+ viewAnnotation: "\u0639\u0631\u0636 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A: {content}",
54
+ resourceCreated: "\u062A\u0645 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0648\u0631\u062F",
55
+ resourceCloned: "\u062A\u0645 \u0627\u0644\u0627\u0633\u062A\u0646\u0633\u0627\u062E",
56
+ resourceArchived: "\u062A\u0645\u062A \u0627\u0644\u0623\u0631\u0634\u0641\u0629",
57
+ resourceUnarchived: "\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0623\u0631\u0634\u0641\u0629",
58
+ highlightAdded: "\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 \u062A\u0645\u064A\u064A\u0632",
59
+ highlightRemoved: "\u062A\u0645\u062A \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062A\u0645\u064A\u064A\u0632",
60
+ referenceCreated: "\u062A\u0645 \u0625\u0646\u0634\u0627\u0621 \u0645\u0631\u062C\u0639",
61
+ referenceResolved: "\u062A\u0645 \u062D\u0644 \u0627\u0644\u0645\u0631\u062C\u0639",
62
+ referenceDeleted: "\u062A\u0645 \u062D\u0630\u0641 \u0627\u0644\u0645\u0631\u062C\u0639",
63
+ entitytagAdded: "\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 \u0639\u0644\u0627\u0645\u0629",
64
+ entitytagRemoved: "\u062A\u0645\u062A \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0629",
65
+ assessmentAdded: "\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 \u062A\u0642\u064A\u064A\u0645",
66
+ assessmentRemoved: "\u062A\u0645\u062A \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062A\u0642\u064A\u064A\u0645",
67
+ annotationAdded: "\u062A\u0645\u062A \u0625\u0636\u0627\u0641\u0629 \u062A\u0639\u0644\u064A\u0642 \u062A\u0648\u0636\u064A\u062D\u064A",
68
+ annotationRemoved: "\u062A\u0645\u062A \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A",
69
+ annotationBodyUpdated: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062B \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A",
70
+ jobEvent: "\u062D\u062F\u062B \u0645\u0647\u0645\u0629",
71
+ justNow: "\u0627\u0644\u0622\u0646",
72
+ minutesAgo: "\u0645\u0646\u0630 {count}\u062F",
73
+ hoursAgo: "\u0645\u0646\u0630 {count}\u0633",
74
+ daysAgo: "\u0645\u0646\u0630 {count}\u064A"
75
+ };
76
+ var CommentsPanel = {
77
+ title: "\u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A",
78
+ noComments: "\u0644\u0627 \u062A\u0648\u062C\u062F \u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0628\u0639\u062F. \u062D\u062F\u062F \u0646\u0635\u064B\u0627 \u0648\u0627\u0646\u0642\u0631 \u0639\u0644\u0649 \u062A\u0639\u0644\u064A\u0642 \u0644\u0625\u0636\u0627\u0641\u0629 \u0648\u0627\u062D\u062F.",
79
+ commentPlaceholder: "\u0627\u0643\u062A\u0628 \u062A\u0639\u0644\u064A\u0642\u0643 \u0647\u0646\u0627...",
80
+ save: "\u062D\u0641\u0638",
81
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
82
+ edit: "\u062A\u0639\u062F\u064A\u0644",
83
+ annotateComments: "\u062A\u0648\u0636\u064A\u062D \u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A",
84
+ instructions: "\u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A",
85
+ optional: "(\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
86
+ instructionsPlaceholder: "\u0645\u062B\u0627\u0644: \u0627\u0644\u062A\u0631\u0643\u064A\u0632 \u0639\u0644\u0649 \u0627\u0644\u0645\u0635\u0637\u0644\u062D\u0627\u062A \u0627\u0644\u062A\u0642\u0646\u064A\u0629...",
87
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
88
+ annotating: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0648\u0636\u064A\u062D...",
89
+ toneLabel: "\u0627\u0644\u0646\u0628\u0631\u0629",
90
+ toneOptional: "(\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
91
+ toneScholarly: "\u0623\u0643\u0627\u062F\u064A\u0645\u064A",
92
+ toneExplanatory: "\u062A\u0648\u0636\u064A\u062D\u064A",
93
+ toneConversational: "\u062D\u0648\u0627\u0631\u064A",
94
+ toneTechnical: "\u062A\u0642\u0646\u064A",
95
+ densityLabel: "\u0627\u0644\u0643\u062B\u0627\u0641\u0629",
96
+ densitySparse: "\u0645\u062A\u0641\u0631\u0642",
97
+ densityDense: "\u0643\u062B\u064A\u0641",
98
+ fragmentSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u062C\u0632\u0621",
99
+ imageRegionSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0645\u0646\u0637\u0642\u0629 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631\u0629",
100
+ closeProgress: "\u0625\u063A\u0644\u0627\u0642"
101
+ };
102
+ var HighlightPanel = {
103
+ title: "\u0627\u0644\u062A\u0645\u064A\u064A\u0632\u0627\u062A",
104
+ noHighlights: "\u0644\u0627 \u062A\u0648\u062C\u062F \u062A\u0645\u064A\u064A\u0632\u0627\u062A \u0628\u0639\u062F. \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u062A\u0648\u0636\u064A\u062D \u0628\u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0641\u0642\u0631\u0627\u062A \u0627\u0644\u0645\u0647\u0645\u0629.",
105
+ annotateHighlights: "\u062A\u0648\u0636\u064A\u062D \u0627\u0644\u062A\u0645\u064A\u064A\u0632\u0627\u062A",
106
+ instructions: "\u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A",
107
+ optional: "(\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
108
+ instructionsPlaceholder: "\u0645\u062B\u0627\u0644: \u0627\u0644\u062A\u0631\u0643\u064A\u0632 \u0639\u0644\u0649 \u0627\u0644\u0645\u0641\u0627\u0647\u064A\u0645 \u0627\u0644\u062A\u0642\u0646\u064A\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629...",
109
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
110
+ annotating: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0648\u0636\u064A\u062D...",
111
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
112
+ densityLabel: "\u0627\u0644\u0643\u062B\u0627\u0641\u0629",
113
+ densitySparse: "\u0645\u062A\u0641\u0631\u0642",
114
+ densityDense: "\u0643\u062B\u064A\u0641",
115
+ closeProgress: "\u0625\u063A\u0644\u0627\u0642"
116
+ };
117
+ var AssessmentPanel = {
118
+ title: "\u0627\u0644\u062A\u0642\u064A\u064A\u0645\u0627\u062A",
119
+ noAssessments: "\u0644\u0627 \u062A\u0648\u062C\u062F \u062A\u0642\u064A\u064A\u0645\u0627\u062A \u0628\u0639\u062F. \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u062A\u0648\u0636\u064A\u062D \u0628\u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0641\u0642\u0631\u0627\u062A.",
120
+ assessmentPlaceholder: "\u0627\u0643\u062A\u0628 \u062A\u0642\u064A\u064A\u0645\u0643 \u0647\u0646\u0627...",
121
+ save: "\u062D\u0641\u0638",
122
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
123
+ annotateAssessments: "\u062A\u0648\u0636\u064A\u062D \u0627\u0644\u062A\u0642\u064A\u064A\u0645\u0627\u062A",
124
+ instructions: "\u0627\u0644\u062A\u0639\u0644\u064A\u0645\u0627\u062A",
125
+ optional: "(\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
126
+ instructionsPlaceholder: "\u0645\u062B\u0627\u0644: \u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0627\u062F\u0639\u0627\u0621\u0627\u062A \u0645\u0646 \u062D\u064A\u062B \u0627\u0644\u062F\u0642\u0629 \u0648\u0627\u0644\u0623\u062F\u0644\u0629...",
127
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
128
+ annotating: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0648\u0636\u064A\u062D...",
129
+ toneLabel: "\u0627\u0644\u0646\u0628\u0631\u0629",
130
+ toneOptional: "(\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
131
+ toneAnalytical: "\u062A\u062D\u0644\u064A\u0644\u064A",
132
+ toneCritical: "\u0646\u0642\u062F\u064A",
133
+ toneBalanced: "\u0645\u062A\u0648\u0627\u0632\u0646",
134
+ toneConstructive: "\u0628\u0646\u0651\u0627\u0621",
135
+ densityLabel: "\u0627\u0644\u0643\u062B\u0627\u0641\u0629",
136
+ densitySparse: "\u0645\u062A\u0641\u0631\u0642",
137
+ densityDense: "\u0643\u062B\u064A\u0641",
138
+ fragmentSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u062C\u0632\u0621",
139
+ imageRegionSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0645\u0646\u0637\u0642\u0629 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631\u0629",
140
+ closeProgress: "\u0625\u063A\u0644\u0627\u0642"
141
+ };
142
+ var TaggingPanel = {
143
+ title: "\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",
144
+ noTags: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0639\u0644\u0627\u0645\u0627\u062A \u0628\u0639\u062F. \u0627\u0633\u062A\u062E\u062F\u0645 \u0627\u0644\u062A\u0648\u0636\u064A\u062D \u0628\u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A \u0644\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0623\u062F\u0648\u0627\u0631 \u0627\u0644\u0647\u064A\u0643\u0644\u064A\u0629.",
145
+ annotateTags: "\u062A\u0648\u0636\u064A\u062D \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",
146
+ selectSchema: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0625\u0637\u0627\u0631",
147
+ schemaLegal: "\u0627\u0644\u062A\u062D\u0644\u064A\u0644 \u0627\u0644\u0642\u0627\u0646\u0648\u0646\u064A (IRAC)",
148
+ schemaScientific: "\u0627\u0644\u0648\u0631\u0642\u0629 \u0627\u0644\u0639\u0644\u0645\u064A\u0629 (IMRAD)",
149
+ schemaArgument: "\u0628\u0646\u064A\u0629 \u0627\u0644\u062D\u062C\u0629 (Toulmin)",
150
+ selectCategories: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0641\u0626\u0627\u062A",
151
+ categoryIssue: "\u0627\u0644\u0642\u0636\u064A\u0629",
152
+ categoryRule: "\u0627\u0644\u0642\u0627\u0639\u062F\u0629",
153
+ categoryApplication: "\u0627\u0644\u062A\u0637\u0628\u064A\u0642",
154
+ categoryConclusion: "\u0627\u0644\u062E\u0627\u062A\u0645\u0629",
155
+ categoryIntroduction: "\u0627\u0644\u0645\u0642\u062F\u0645\u0629",
156
+ categoryMethods: "\u0627\u0644\u0645\u0646\u0627\u0647\u062C",
157
+ categoryResults: "\u0627\u0644\u0646\u062A\u0627\u0626\u062C",
158
+ categoryDiscussion: "\u0627\u0644\u0645\u0646\u0627\u0642\u0634\u0629",
159
+ categoryClaim: "\u0627\u0644\u0627\u062F\u0639\u0627\u0621",
160
+ categoryEvidence: "\u0627\u0644\u062F\u0644\u064A\u0644",
161
+ categoryWarrant: "\u0627\u0644\u0645\u0628\u0631\u0631",
162
+ categoryCounterargument: "\u0627\u0644\u062D\u062C\u0629 \u0627\u0644\u0645\u0636\u0627\u062F\u0629",
163
+ categoryRebuttal: "\u0627\u0644\u062F\u062D\u0636",
164
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
165
+ annotating: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0648\u0636\u064A\u062D...",
166
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
167
+ selectAll: "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",
168
+ deselectAll: "\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",
169
+ categoriesSelected: "{count, plural, =0 {\u0644\u0645 \u064A\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0641\u0626\u0627\u062A} =1 {\u0641\u0626\u0629 \u0648\u0627\u062D\u062F\u0629 \u0645\u062D\u062F\u062F\u0629} other {# \u0641\u0626\u0627\u062A \u0645\u062D\u062F\u062F\u0629}}",
170
+ createTagForSelection: "\u0625\u0646\u0634\u0627\u0621 \u0639\u0644\u0627\u0645\u0629 \u0644\u0644\u062A\u062D\u062F\u064A\u062F",
171
+ selectCategory: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0641\u0626\u0629",
172
+ chooseCategory: "\u0627\u062E\u062A\u0631 \u0641\u0626\u0629...",
173
+ fragmentSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u062C\u0632\u0621",
174
+ imageRegionSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0645\u0646\u0637\u0642\u0629 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631\u0629"
175
+ };
176
+ var UnifiedAnnotationsPanel = {
177
+ title: "\u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u0629",
178
+ statistics: "\u0627\u0644\u0625\u062D\u0635\u0627\u0626\u064A\u0627\u062A",
179
+ highlight: "\u0627\u0644\u062A\u0645\u064A\u064A\u0632\u0627\u062A",
180
+ reference: "\u0627\u0644\u0645\u0631\u0627\u062C\u0639",
181
+ assessment: "\u0627\u0644\u062A\u0642\u064A\u064A\u0645\u0627\u062A",
182
+ comment: "\u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A",
183
+ tag: "\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A"
184
+ };
185
+ var StatisticsPanel = {
186
+ title: "\u0627\u0644\u0625\u062D\u0635\u0627\u0626\u064A\u0627\u062A",
187
+ highlights: "\u0627\u0644\u062A\u0645\u064A\u064A\u0632\u0627\u062A",
188
+ comments: "\u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A",
189
+ assessments: "\u0627\u0644\u062A\u0642\u064A\u064A\u0645\u0627\u062A",
190
+ tags: "\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",
191
+ references: "\u0627\u0644\u0645\u0631\u0627\u062C\u0639",
192
+ stub: "\u0645\u0628\u062F\u0626\u064A",
193
+ resolved: "\u0645\u062D\u0644\u0648\u0644",
194
+ entityTypes: "\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u064A\u0627\u0646\u0627\u062A"
195
+ };
196
+ var ReferencesPanel = {
197
+ title: "\u0627\u0644\u0645\u0631\u0627\u062C\u0639",
198
+ noReferences: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0631\u0627\u062C\u0639 \u0628\u0639\u062F. \u062D\u062F\u062F \u0646\u0635\u064B\u0627 \u0644\u0625\u0646\u0634\u0627\u0621 \u0645\u0631\u0627\u062C\u0639 \u0644\u0645\u0648\u0627\u0631\u062F \u0623\u062E\u0631\u0649.",
199
+ outgoingReferences: "\u0627\u0644\u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u0635\u0627\u062F\u0631\u0629",
200
+ incomingReferences: "\u0627\u0644\u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u0648\u0627\u0631\u062F\u0629",
201
+ noIncomingReferences: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0631\u0627\u062C\u0639 \u0648\u0627\u0631\u062F\u0629",
202
+ stub: "\u0645\u0631\u062C\u0639 \u0645\u0628\u062F\u0626\u064A (\u063A\u064A\u0631 \u0645\u0631\u0628\u0648\u0637)",
203
+ resolved: "\u0645\u0631\u062C\u0639 \u0645\u062D\u0644\u0648\u0644 (\u0645\u0631\u0628\u0648\u0637)",
204
+ open: "\u0641\u062A\u062D",
205
+ unlink: "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0628\u0637",
206
+ generate: "\u062A\u0648\u0644\u064A\u062F",
207
+ find: "\u0628\u062D\u062B",
208
+ create: "\u0625\u0646\u0634\u0627\u0621",
209
+ cancel: "\u0625\u0644\u063A\u0627\u0621",
210
+ createReference: "\u0625\u0646\u0634\u0627\u0621 \u0645\u0631\u062C\u0639",
211
+ entityTypesOptional: "\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u064A\u0627\u0646\u0627\u062A (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
212
+ fragmentSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u062C\u0632\u0621",
213
+ imageRegionSelected: "\u062A\u0645 \u062A\u062D\u062F\u064A\u062F \u0645\u0646\u0637\u0642\u0629 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631\u0629",
214
+ annotateReferences: "\u062A\u0648\u0636\u064A\u062D \u0627\u0644\u0645\u0631\u0627\u062C\u0639",
215
+ selectEntityTypes: "\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u064A\u0627\u0646\u0627\u062A:",
216
+ select: "\u062A\u062D\u062F\u064A\u062F",
217
+ deselect: "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u062D\u062F\u064A\u062F",
218
+ noEntityTypes: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u0646\u0648\u0627\u0639 \u0643\u064A\u0627\u0646\u0627\u062A \u0645\u062A\u0627\u062D\u0629",
219
+ typesSelected: "{count, plural, =1 {\u0646\u0648\u0639 \u0648\u0627\u062D\u062F \u0645\u062D\u062F\u062F} other {# \u0623\u0646\u0648\u0627\u0639 \u0645\u062D\u062F\u062F\u0629}}",
220
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
221
+ annotating: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0648\u0636\u064A\u062D...",
222
+ includeDescriptiveReferences: "\u062A\u0636\u0645\u064A\u0646 \u0627\u0644\u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u0648\u0635\u0641\u064A\u0629",
223
+ descriptiveReferencesTooltip: "\u0627\u0644\u0628\u062D\u062B \u0623\u064A\u0636\u064B\u0627 \u0639\u0646 \u0639\u0628\u0627\u0631\u0627\u062A \u0645\u062B\u0644 '\u0627\u0644\u0631\u0626\u064A\u0633 \u0627\u0644\u062A\u0646\u0641\u064A\u0630\u064A'\u060C '\u0639\u0645\u0644\u0627\u0642 \u0627\u0644\u062A\u0643\u0646\u0648\u0644\u0648\u062C\u064A\u0627'\u060C '\u0627\u0644\u0641\u064A\u0632\u064A\u0627\u0626\u064A' (\u0628\u0627\u0644\u0625\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u0633\u0645\u0627\u0621)",
224
+ annotationProgressTitle: "\u062A\u0648\u0636\u064A\u062D \u0645\u0631\u0627\u062C\u0639 \u0627\u0644\u0643\u064A\u0627\u0646\u0627\u062A",
225
+ cancelAnnotation: "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062A\u0648\u0636\u064A\u062D",
226
+ found: "\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 {count}",
227
+ complete: "\u0627\u0643\u062A\u0645\u0644 \u0627\u0644\u062A\u0648\u0636\u064A\u062D!",
228
+ failed: "\u0641\u0634\u0644 \u0627\u0644\u062A\u0648\u0636\u064A\u062D",
229
+ current: "\u0627\u0644\u062D\u0627\u0644\u064A: {entityType}",
230
+ closeProgress: "\u0625\u063A\u0644\u0627\u0642",
231
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644...",
232
+ loadingEllipsis: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644...",
233
+ untitledResource: "\u0645\u0648\u0631\u062F \u0628\u062F\u0648\u0646 \u0639\u0646\u0648\u0627\u0646",
234
+ noText: "\u0644\u0627 \u064A\u0648\u062C\u062F \u0646\u0635"
235
+ };
236
+ var KeyboardShortcuts = {
237
+ title: "\u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D",
238
+ closeDialog: "\u0625\u063A\u0644\u0627\u0642 \u0645\u0631\u0628\u0639 \u0627\u0644\u062D\u0648\u0627\u0631",
239
+ or: "\u0623\u0648",
240
+ navigationTitle: "\u0627\u0644\u062A\u0646\u0642\u0644",
241
+ navOpenSearch: "\u0641\u062A\u062D \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u0634\u0627\u0645\u0644",
242
+ navOpenSearchAlt: "\u0641\u062A\u062D \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u0634\u0627\u0645\u0644 (\u0628\u062F\u064A\u0644)",
243
+ navCreateResource: "\u0625\u0646\u0634\u0627\u0621 \u0645\u0648\u0631\u062F \u062C\u062F\u064A\u062F",
244
+ navCloseOverlays: "\u0625\u063A\u0644\u0627\u0642 \u062C\u0645\u064A\u0639 \u0627\u0644\u0637\u0628\u0642\u0627\u062A \u0627\u0644\u0639\u0644\u0648\u064A\u0629 (\u0636\u063A\u0637 \u0645\u0632\u062F\u0648\u062C)",
245
+ navShowHelp: "\u0639\u0631\u0636 \u0645\u0633\u0627\u0639\u062F\u0629 \u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D",
246
+ sidebarTitle: "\u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A \u0644\u0644\u0645\u0639\u0631\u0641\u0629",
247
+ sidebarCollapse: "\u0637\u064A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
248
+ sidebarExpand: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
249
+ sidebarPickup: "\u0627\u0644\u062A\u0642\u0627\u0637 \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u0627\u0644\u0645\u0648\u0631\u062F (\u0639\u0646\u062F \u0627\u0644\u062A\u0631\u0643\u064A\u0632)",
250
+ sidebarMove: "\u0646\u0642\u0644 \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u0627\u0644\u0645\u0648\u0631\u062F (\u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0633\u062D\u0628)",
251
+ sidebarDrop: "\u0625\u0641\u0644\u0627\u062A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u0627\u0644\u0645\u0648\u0631\u062F (\u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0633\u062D\u0628)",
252
+ sidebarCancel: "\u0625\u0644\u063A\u0627\u0621 \u0639\u0645\u0644\u064A\u0629 \u0627\u0644\u0633\u062D\u0628",
253
+ annotationsTitle: "\u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u0648\u0631\u062F \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u0629",
254
+ annotHighlight: "\u0625\u0646\u0634\u0627\u0621 \u062A\u0645\u064A\u064A\u0632 \u0645\u0646 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A (\u0645\u0628\u0627\u0634\u0631)",
255
+ annotReference: "\u0641\u062A\u062D \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u0631\u062C\u0639 \u0627\u0644\u0645\u0646\u0628\u062B\u0642\u0629 \u0644\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A",
256
+ annotDelete: "\u062D\u0630\u0641 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A \u0627\u0644\u0645\u0631\u0643\u0651\u0632 \u0639\u0644\u064A\u0647",
257
+ annotNavigate: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0639\u0628\u0631 \u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u0629",
258
+ annotNavigateBack: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0639\u0628\u0631 \u0627\u0644\u062A\u0639\u0644\u064A\u0642\u0627\u062A \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u0629 \u0644\u0644\u062E\u0644\u0641",
259
+ listsTitle: "\u0627\u0644\u0642\u0648\u0627\u0626\u0645 \u0648\u0627\u0644\u0634\u0628\u0643\u0627\u062A",
260
+ listsFilterNav: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0628\u064A\u0646 \u0645\u0631\u0634\u062D\u0627\u062A \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0643\u064A\u0627\u0646\u0627\u062A",
261
+ listsGridNav: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0641\u064A \u0634\u0628\u0643\u0629 \u0627\u0644\u0645\u0648\u0627\u0631\u062F",
262
+ listsJumpFirst: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0623\u0648\u0644",
263
+ listsJumpLast: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0639\u0646\u0635\u0631 \u0627\u0644\u0623\u062E\u064A\u0631",
264
+ searchModalTitle: "\u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0628\u062D\u062B",
265
+ searchNav: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0641\u064A \u0646\u062A\u0627\u0626\u062C \u0627\u0644\u0628\u062D\u062B",
266
+ searchSelect: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0646\u062A\u064A\u062C\u0629",
267
+ searchClose: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0628\u062D\u062B",
268
+ modalTitle: "\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u062A\u062D\u0643\u0645 \u0641\u064A \u0627\u0644\u0646\u0648\u0627\u0641\u0630 \u0627\u0644\u0645\u0646\u0628\u062B\u0642\u0629",
269
+ modalClose: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0645\u0646\u0628\u062B\u0642\u0629 \u0627\u0644\u0646\u0634\u0637\u0629",
270
+ modalNavForward: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0644\u0644\u0623\u0645\u0627\u0645 \u0639\u0628\u0631 \u0627\u0644\u0623\u0632\u0631\u0627\u0631",
271
+ modalNavBackward: "\u0627\u0644\u062A\u0646\u0642\u0644 \u0644\u0644\u062E\u0644\u0641 \u0639\u0628\u0631 \u0627\u0644\u0623\u0632\u0631\u0627\u0631",
272
+ modalActivate: "\u062A\u0641\u0639\u064A\u0644 \u0627\u0644\u0632\u0631 \u0627\u0644\u0645\u0631\u0643\u0651\u0632 \u0639\u0644\u064A\u0647",
273
+ accessibilityTitle: "\u0625\u0645\u0643\u0627\u0646\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644",
274
+ a11ySkipLinks: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0631\u0648\u0627\u0628\u0637 \u0627\u0644\u062A\u062E\u0637\u064A (\u0639\u0646\u062F \u0628\u062F\u0627\u064A\u0629 \u0627\u0644\u0635\u0641\u062D\u0629)",
275
+ a11yFollowLink: "\u0627\u062A\u0628\u0627\u0639 \u0631\u0627\u0628\u0637 \u0627\u0644\u062A\u062E\u0637\u064A",
276
+ macNote: "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0645\u0641\u0627\u062A\u064A\u062D Mac. \u2318 \u0647\u0648 \u0645\u0641\u062A\u0627\u062D Command.",
277
+ windowsNote: "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0645\u0641\u0627\u062A\u064A\u062D Windows/Linux. Ctrl \u0647\u0648 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u062A\u062D\u0643\u0645.",
278
+ footerHint: "\u0627\u0636\u063A\u0637 {key} \u0641\u064A \u0623\u064A \u0648\u0642\u062A \u0644\u0639\u0631\u0636 \u0647\u0630\u0647 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
279
+ close: "\u0625\u063A\u0644\u0627\u0642"
280
+ };
281
+ var AnnotateToolbar = {
282
+ modeGroup: "\u0627\u0644\u0648\u0636\u0639",
283
+ browse: "\u062A\u0635\u0641\u062D",
284
+ annotate: "\u062A\u0648\u0636\u064A\u062D",
285
+ selectionGroup: "\u0627\u0644\u062F\u0627\u0641\u0639",
286
+ clickGroup: "\u0627\u0644\u0646\u0642\u0631",
287
+ shapeGroup: "\u0627\u0644\u0634\u0643\u0644",
288
+ none: "\u0644\u0627 \u0634\u064A\u0621",
289
+ linking: "\u0645\u0631\u062C\u0639",
290
+ highlighting: "\u062A\u0645\u064A\u064A\u0632",
291
+ assessing: "\u062A\u0642\u064A\u064A\u0645",
292
+ commenting: "\u062A\u0639\u0644\u064A\u0642",
293
+ tagging: "\u0639\u0644\u0627\u0645\u0629",
294
+ detail: "\u062A\u0641\u0635\u064A\u0644",
295
+ follow: "\u0645\u062A\u0627\u0628\u0639\u0629",
296
+ deleting: "\u062D\u0630\u0641",
297
+ jsonld: "JSON-LD",
298
+ rectangle: "\u0645\u0633\u062A\u0637\u064A\u0644",
299
+ circle: "\u062F\u0627\u0626\u0631\u0629",
300
+ polygon: "\u0645\u0636\u0644\u0639"
301
+ };
302
+ var CollapsibleResourceNavigation = {
303
+ title: "\u0627\u0644\u062A\u0646\u0642\u0644",
304
+ collapseSidebar: "\u0637\u064A \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
305
+ expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
306
+ dragToReorder: "\u0627\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0631\u062A\u064A\u0628",
307
+ dragToReorderDoc: "\u0627\u0633\u062D\u0628 \u0644\u0625\u0639\u0627\u062F\u0629 \u062A\u0631\u062A\u064A\u0628 {name}",
308
+ closeResource: "\u0625\u063A\u0644\u0627\u0642 \u0627\u0644\u0645\u0648\u0631\u062F",
309
+ dragInstructions: "\u0644\u0625\u0639\u0627\u062F\u0629 \u062A\u0631\u062A\u064A\u0628 \u0627\u0644\u0645\u0648\u0627\u0631\u062F: \u0627\u0633\u062A\u062E\u062F\u0645 Tab \u0644\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0645\u0648\u0631\u062F. \u0627\u0636\u063A\u0637 Alt+\u0633\u0647\u0645 \u0644\u0623\u0639\u0644\u0649 \u0644\u0644\u062A\u062D\u0631\u064A\u0643 \u0644\u0623\u0639\u0644\u0649 \u0623\u0648 Alt+\u0633\u0647\u0645 \u0644\u0623\u0633\u0641\u0644 \u0644\u0644\u062A\u062D\u0631\u064A\u0643 \u0644\u0623\u0633\u0641\u0644. \u0644\u0644\u0633\u062D\u0628 \u0648\u0627\u0644\u0625\u0641\u0644\u0627\u062A: \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0634\u0631\u064A\u0637 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0644\u0627\u0644\u062A\u0642\u0627\u0637 \u0627\u0644\u0639\u0646\u0635\u0631. \u0627\u0633\u062A\u062E\u062F\u0645 \u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0623\u0633\u0647\u0645 \u0644\u062A\u062D\u0631\u064A\u0643\u0647. \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0634\u0631\u064A\u0637 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0644\u0625\u0641\u0644\u0627\u062A."
310
+ };
311
+ var ResourceViewer = {
312
+ deleteConfirmationTitle: "\u062D\u0630\u0641 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A",
313
+ deleteConfirmationMessage: "\u0647\u0644 \u0623\u0646\u062A \u0645\u062A\u0623\u0643\u062F \u0623\u0646\u0643 \u062A\u0631\u064A\u062F \u062D\u0630\u0641 \u0647\u0630\u0627 \u0627\u0644\u062A\u0639\u0644\u064A\u0642 \u0627\u0644\u062A\u0648\u0636\u064A\u062D\u064A\u061F \u0644\u0627 \u064A\u0645\u0643\u0646 \u0627\u0644\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621.",
314
+ deleteConfirmationCancel: "\u0625\u0644\u063A\u0627\u0621",
315
+ deleteConfirmationDelete: "\u062D\u0630\u0641"
316
+ };
317
+ var Settings = {
318
+ title: "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
319
+ lineNumbers: "\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0623\u0633\u0637\u0631",
320
+ lineNumbersVisible: "\u0645\u0631\u0626\u064A\u0629",
321
+ lineNumbersHidden: "\u0645\u062E\u0641\u064A\u0629",
322
+ theme: "\u0627\u0644\u0633\u0645\u0629",
323
+ themeLight: "\u0641\u0627\u062A\u062D",
324
+ themeDark: "\u062F\u0627\u0643\u0646",
325
+ themeSystem: "\u0627\u0644\u0646\u0638\u0627\u0645",
326
+ themeSystemActive: "\u0627\u0644\u0646\u0638\u0627\u0645 ({mode})",
327
+ themeModeActive: "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0648\u0636\u0639 {mode}",
328
+ language: "\u0627\u0644\u0644\u063A\u0629",
329
+ languageHint: "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0644\u063A\u0629 \u0641\u064A \u0634\u0631\u064A\u0637 \u0627\u0644\u062A\u0646\u0642\u0644 \u0627\u0644\u0631\u0626\u064A\u0633\u064A",
330
+ languageChanging: "\u062C\u0627\u0631\u064D \u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0644\u063A\u0629...",
331
+ hoverDelay: "\u062A\u0623\u062E\u064A\u0631 \u0627\u0644\u062A\u0645\u0631\u064A\u0631",
332
+ hoverDelayFast: "\u0633\u0631\u064A\u0639",
333
+ hoverDelaySlow: "\u0628\u0637\u064A\u0621",
334
+ hoverDelayDescription: "\u062A\u0623\u062E\u064A\u0631 {delay} \u0645\u064A\u0644\u064A \u062B\u0627\u0646\u064A\u0629 \u0642\u0628\u0644 \u0638\u0647\u0648\u0631 \u062A\u0623\u062B\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u0645\u0631\u064A\u0631"
335
+ };
336
+ var AnnotateView = {};
337
+ var ar_default = {
338
+ Toolbar,
339
+ ResourceInfoPanel,
340
+ CollaborationPanel,
341
+ AnnotationHistory,
342
+ CommentsPanel,
343
+ HighlightPanel,
344
+ AssessmentPanel,
345
+ TaggingPanel,
346
+ UnifiedAnnotationsPanel,
347
+ StatisticsPanel,
348
+ ReferencesPanel,
349
+ KeyboardShortcuts,
350
+ AnnotateToolbar,
351
+ CollapsibleResourceNavigation,
352
+ ResourceViewer,
353
+ Settings,
354
+ AnnotateView
355
+ };
356
+ export {
357
+ AnnotateToolbar,
358
+ AnnotateView,
359
+ AnnotationHistory,
360
+ AssessmentPanel,
361
+ CollaborationPanel,
362
+ CollapsibleResourceNavigation,
363
+ CommentsPanel,
364
+ HighlightPanel,
365
+ KeyboardShortcuts,
366
+ ReferencesPanel,
367
+ ResourceInfoPanel,
368
+ ResourceViewer,
369
+ Settings,
370
+ StatisticsPanel,
371
+ TaggingPanel,
372
+ Toolbar,
373
+ UnifiedAnnotationsPanel,
374
+ ar_default as default
375
+ };
376
+ //# sourceMappingURL=ar-7SUXNE34.mjs.map