@semiont/react-ui 0.5.24 → 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.
- package/dist/PdfAnnotationCanvas.client-6ZSF6ZTJ.js +677 -0
- package/dist/PdfAnnotationCanvas.client-6ZSF6ZTJ.js.map +1 -0
- package/dist/PdfAnnotationCanvas.client-JCJMXWWJ.css +180 -0
- package/dist/PdfAnnotationCanvas.client-JCJMXWWJ.css.map +1 -0
- package/dist/{ar-JRTKCMTF.js → ar-YTUUGK2O.js} +32 -6
- package/dist/ar-YTUUGK2O.js.map +1 -0
- package/dist/{bn-LO6EDSCC.js → bn-ASGNGPMD.js} +32 -6
- package/dist/bn-ASGNGPMD.js.map +1 -0
- package/dist/{chunk-4QMTEPQ3.js → chunk-BTUG3VJJ.js} +18 -298
- package/dist/chunk-BTUG3VJJ.js.map +1 -0
- package/dist/{chunk-5Y5JDCKC.js → chunk-L3WKRWP3.js} +32 -6
- package/dist/chunk-L3WKRWP3.js.map +1 -0
- package/dist/chunk-OBQOZCJE.js +287 -0
- package/dist/chunk-OBQOZCJE.js.map +1 -0
- package/dist/{cs-LCHHOR4O.js → cs-WMYVAOZY.js} +32 -6
- package/dist/cs-WMYVAOZY.js.map +1 -0
- package/dist/{da-TARGPMJR.js → da-FSHHN4D6.js} +32 -6
- package/dist/da-FSHHN4D6.js.map +1 -0
- package/dist/{de-SBH4QBPJ.js → de-FJFO3TPT.js} +32 -6
- package/dist/de-FJFO3TPT.js.map +1 -0
- package/dist/{el-2D2OLGWB.js → el-XOH4QIAG.js} +32 -6
- package/dist/el-XOH4QIAG.js.map +1 -0
- package/dist/{en-QFIEG3CA.js → en-3FCBW3YD.js} +6 -2
- package/dist/{es-U6YK2LX6.js → es-HDX4QI7E.js} +32 -6
- package/dist/es-HDX4QI7E.js.map +1 -0
- package/dist/{fa-S7SZE37M.js → fa-DJ6WTFTJ.js} +32 -6
- package/dist/fa-DJ6WTFTJ.js.map +1 -0
- package/dist/{fi-CBL3NIXN.js → fi-4S7H7W7U.js} +32 -6
- package/dist/fi-4S7H7W7U.js.map +1 -0
- package/dist/{fr-EABUHV6S.js → fr-6UJSYHXC.js} +32 -6
- package/dist/fr-6UJSYHXC.js.map +1 -0
- package/dist/{he-THWD244Y.js → he-ZZJOHJX2.js} +32 -6
- package/dist/he-ZZJOHJX2.js.map +1 -0
- package/dist/{hi-GHGFZJ44.js → hi-HZJTAW7U.js} +32 -6
- package/dist/hi-HZJTAW7U.js.map +1 -0
- package/dist/{id-POZOUMDW.js → id-E3I6ILEM.js} +32 -6
- package/dist/id-E3I6ILEM.js.map +1 -0
- package/dist/index.css +140 -94
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +85 -24
- package/dist/index.js +1782 -1697
- package/dist/index.js.map +1 -1
- package/dist/{it-KDYJADSH.js → it-ULAPAD7U.js} +32 -6
- package/dist/it-ULAPAD7U.js.map +1 -0
- package/dist/{ja-Z5Z6ZF3P.js → ja-SAHZQ4CZ.js} +32 -6
- package/dist/ja-SAHZQ4CZ.js.map +1 -0
- package/dist/{ko-7X3XUXRN.js → ko-DFU2ADQ4.js} +32 -6
- package/dist/ko-DFU2ADQ4.js.map +1 -0
- package/dist/{ms-BTWEIW43.js → ms-NWL76XNT.js} +32 -6
- package/dist/ms-NWL76XNT.js.map +1 -0
- package/dist/{nl-IS2CGF5I.js → nl-ATCM76WN.js} +32 -6
- package/dist/nl-ATCM76WN.js.map +1 -0
- package/dist/{no-AAMEVA26.js → no-UIAQ5RJF.js} +32 -6
- package/dist/no-UIAQ5RJF.js.map +1 -0
- package/dist/{pl-PVXUQYFT.js → pl-NOECQDXD.js} +32 -6
- package/dist/pl-NOECQDXD.js.map +1 -0
- package/dist/{pt-3ITQ76TL.js → pt-SVWIIUPC.js} +32 -6
- package/dist/pt-SVWIIUPC.js.map +1 -0
- package/dist/{ro-FRB4IIVS.js → ro-NR2DRTZG.js} +32 -6
- package/dist/ro-NR2DRTZG.js.map +1 -0
- package/dist/{sv-DS3RO24M.js → sv-STVJ37JP.js} +32 -6
- package/dist/sv-STVJ37JP.js.map +1 -0
- package/dist/test-utils.js +5 -3
- package/dist/test-utils.js.map +1 -1
- package/dist/{th-AX66MWWB.js → th-UWQR4K54.js} +32 -6
- package/dist/th-UWQR4K54.js.map +1 -0
- package/dist/{tr-7KTB67TT.js → tr-WNXZSD27.js} +32 -6
- package/dist/tr-WNXZSD27.js.map +1 -0
- package/dist/{uk-SMQS2MAQ.js → uk-SJRMB47Y.js} +32 -6
- package/dist/uk-SJRMB47Y.js.map +1 -0
- package/dist/{vi-D3JXL2EZ.js → vi-TMRQFES2.js} +32 -6
- package/dist/vi-TMRQFES2.js.map +1 -0
- package/dist/{zh-S754AWFS.js → zh-QOL3LYEM.js} +32 -6
- package/dist/zh-QOL3LYEM.js.map +1 -0
- package/package.json +8 -8
- package/src/components/AssistProgress.tsx +42 -30
- package/src/components/EntityFoundLog.tsx +38 -0
- package/src/components/StatusDisplay.css +35 -35
- package/src/components/__tests__/AssistProgress.test.tsx +86 -28
- package/src/components/annotation/annotations.css +1 -1
- package/src/components/modals/SearchModal.css +5 -5
- package/src/components/pdf-annotation/PdfAnnotationCanvas.css +143 -6
- package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +689 -198
- package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +1008 -3
- package/src/components/pdf-annotation/__tests__/estimate-slot-height.test.ts +53 -0
- package/src/components/pdf-annotation/estimate-slot-height.ts +31 -0
- package/src/components/resource/AnnotateView.tsx +14 -7
- package/src/components/resource/BrowseView.tsx +2 -7
- package/src/components/resource/DownloadFileLink.tsx +49 -0
- package/src/components/resource/__tests__/AnnotateView.focus.test.tsx +58 -0
- package/src/components/resource/__tests__/browse-renderers.dispatch.test.tsx +33 -0
- package/src/components/resource/__tests__/download-link.test.tsx +129 -0
- package/src/components/resource/annotate-renderers.tsx +10 -1
- package/src/components/resource/browse-renderers.tsx +10 -1
- package/src/components/resource/panels/AssistSection.css +0 -43
- package/src/components/resource/panels/AssistSection.tsx +11 -2
- package/src/components/resource/panels/AssistShell.tsx +5 -1
- package/src/components/resource/panels/ReferencesPanel.tsx +12 -13
- package/src/components/resource/panels/TaggingPanel.tsx +21 -1
- package/src/components/resource/panels/__tests__/AssistSection.test.tsx +2 -2
- package/src/components/resource/panels/__tests__/AssistShell.test.tsx +9 -4
- package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +1 -1
- package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +26 -0
- package/src/features/auth/auth.css +10 -10
- package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +58 -3
- package/src/features/resource-viewer/components/ResourceViewerPage.tsx +18 -7
- package/src/styles/core/inputs.css +1 -1
- package/src/styles/features/compose.css +1 -1
- package/src/styles/features/resource-viewer.css +1 -1
- package/src/styles/features/static-pages.css +11 -11
- package/src/styles/motivations/motivation-comment.css +2 -2
- package/src/styles/motivations/motivation-reference.css +2 -2
- package/src/styles/patterns/panels-base.css +4 -4
- package/src/styles/utilities/motion.css +15 -15
- package/src/styles/variables.css +29 -1
- package/translations/ar.json +27 -5
- package/translations/bn.json +27 -5
- package/translations/cs.json +27 -5
- package/translations/da.json +27 -5
- package/translations/de.json +27 -5
- package/translations/el.json +27 -5
- package/translations/en.json +27 -5
- package/translations/es.json +27 -5
- package/translations/fa.json +27 -5
- package/translations/fi.json +27 -5
- package/translations/fr.json +27 -5
- package/translations/he.json +27 -5
- package/translations/hi.json +27 -5
- package/translations/id.json +27 -5
- package/translations/it.json +27 -5
- package/translations/ja.json +27 -5
- package/translations/ko.json +27 -5
- package/translations/ms.json +27 -5
- package/translations/nl.json +27 -5
- package/translations/no.json +27 -5
- package/translations/pl.json +27 -5
- package/translations/pt.json +27 -5
- package/translations/ro.json +27 -5
- package/translations/sv.json +27 -5
- package/translations/th.json +27 -5
- package/translations/tr.json +27 -5
- package/translations/uk.json +27 -5
- package/translations/vi.json +27 -5
- package/translations/zh.json +27 -5
- package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css +0 -98
- package/dist/PdfAnnotationCanvas.client-SU5KNT7G.css.map +0 -1
- package/dist/PdfAnnotationCanvas.client-V7Q3BEEQ.js +0 -427
- package/dist/PdfAnnotationCanvas.client-V7Q3BEEQ.js.map +0 -1
- package/dist/ar-JRTKCMTF.js.map +0 -1
- package/dist/bn-LO6EDSCC.js.map +0 -1
- package/dist/chunk-4QMTEPQ3.js.map +0 -1
- package/dist/chunk-5Y5JDCKC.js.map +0 -1
- package/dist/cs-LCHHOR4O.js.map +0 -1
- package/dist/da-TARGPMJR.js.map +0 -1
- package/dist/de-SBH4QBPJ.js.map +0 -1
- package/dist/el-2D2OLGWB.js.map +0 -1
- package/dist/es-U6YK2LX6.js.map +0 -1
- package/dist/fa-S7SZE37M.js.map +0 -1
- package/dist/fi-CBL3NIXN.js.map +0 -1
- package/dist/fr-EABUHV6S.js.map +0 -1
- package/dist/he-THWD244Y.js.map +0 -1
- package/dist/hi-GHGFZJ44.js.map +0 -1
- package/dist/id-POZOUMDW.js.map +0 -1
- package/dist/it-KDYJADSH.js.map +0 -1
- package/dist/ja-Z5Z6ZF3P.js.map +0 -1
- package/dist/ko-7X3XUXRN.js.map +0 -1
- package/dist/ms-BTWEIW43.js.map +0 -1
- package/dist/nl-IS2CGF5I.js.map +0 -1
- package/dist/no-AAMEVA26.js.map +0 -1
- package/dist/pl-PVXUQYFT.js.map +0 -1
- package/dist/pt-3ITQ76TL.js.map +0 -1
- package/dist/ro-FRB4IIVS.js.map +0 -1
- package/dist/sv-DS3RO24M.js.map +0 -1
- package/dist/th-AX66MWWB.js.map +0 -1
- package/dist/tr-7KTB67TT.js.map +0 -1
- package/dist/uk-SMQS2MAQ.js.map +0 -1
- package/dist/vi-D3JXL2EZ.js.map +0 -1
- package/dist/zh-S754AWFS.js.map +0 -1
- /package/dist/{en-QFIEG3CA.js.map → en-3FCBW3YD.js.map} +0 -0
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
// translations/en.json
|
|
4
|
+
var AssistProgress = {
|
|
5
|
+
close: "Close",
|
|
6
|
+
paramsTitle: "Request Parameters:",
|
|
7
|
+
processing: "Current: {{label}}"
|
|
8
|
+
};
|
|
9
|
+
var PdfViewer = {
|
|
10
|
+
loadFailed: "Failed to load PDF",
|
|
11
|
+
loading: "Loading PDF...",
|
|
12
|
+
next: "Next",
|
|
13
|
+
pageLoadFailed: "Failed to load page",
|
|
14
|
+
pageOf: "Page {{page}} of {{total}}",
|
|
15
|
+
pagination: "Page navigation",
|
|
16
|
+
previous: "Previous",
|
|
17
|
+
viewerLoading: "Loading PDF viewer..."
|
|
18
|
+
};
|
|
4
19
|
var Toolbar = {
|
|
5
20
|
annotations: "Annotations",
|
|
6
21
|
history: "History",
|
|
@@ -107,7 +122,9 @@ var CommentsPanel = {
|
|
|
107
122
|
densityDense: "Dense",
|
|
108
123
|
fragmentSelected: "Fragment selected",
|
|
109
124
|
imageRegionSelected: "Image region selected",
|
|
110
|
-
|
|
125
|
+
complete: "Annotation complete!",
|
|
126
|
+
failed: "Annotation failed",
|
|
127
|
+
densityPerWords: "{{density}} per 2000 words"
|
|
111
128
|
};
|
|
112
129
|
var HighlightPanel = {
|
|
113
130
|
title: "Highlights",
|
|
@@ -122,7 +139,9 @@ var HighlightPanel = {
|
|
|
122
139
|
densityLabel: "Density",
|
|
123
140
|
densitySparse: "Sparse",
|
|
124
141
|
densityDense: "Dense",
|
|
125
|
-
|
|
142
|
+
complete: "Annotation complete!",
|
|
143
|
+
failed: "Annotation failed",
|
|
144
|
+
densityPerWords: "{{density}} per 2000 words"
|
|
126
145
|
};
|
|
127
146
|
var AssessmentPanel = {
|
|
128
147
|
title: "Assessments",
|
|
@@ -147,7 +166,9 @@ var AssessmentPanel = {
|
|
|
147
166
|
densityDense: "Dense",
|
|
148
167
|
fragmentSelected: "Fragment selected",
|
|
149
168
|
imageRegionSelected: "Image region selected",
|
|
150
|
-
|
|
169
|
+
complete: "Annotation complete!",
|
|
170
|
+
failed: "Annotation failed",
|
|
171
|
+
densityPerWords: "{{density}} per 2000 words"
|
|
151
172
|
};
|
|
152
173
|
var TaggingPanel = {
|
|
153
174
|
title: "Tags",
|
|
@@ -166,7 +187,9 @@ var TaggingPanel = {
|
|
|
166
187
|
selectCategory: "Select Category",
|
|
167
188
|
chooseCategory: "Choose a category...",
|
|
168
189
|
fragmentSelected: "Fragment selected",
|
|
169
|
-
imageRegionSelected: "Image region selected"
|
|
190
|
+
imageRegionSelected: "Image region selected",
|
|
191
|
+
complete: "Annotation complete!",
|
|
192
|
+
failed: "Annotation failed"
|
|
170
193
|
};
|
|
171
194
|
var UnifiedAnnotationsPanel = {
|
|
172
195
|
title: "Annotations",
|
|
@@ -222,7 +245,6 @@ var ReferencesPanel = {
|
|
|
222
245
|
complete: "Annotation complete!",
|
|
223
246
|
failed: "Annotation failed",
|
|
224
247
|
current: "Current: {{entityType}}",
|
|
225
|
-
closeProgress: "Close",
|
|
226
248
|
loading: "loading...",
|
|
227
249
|
loadingEllipsis: "Loading...",
|
|
228
250
|
untitledResource: "Untitled Resource",
|
|
@@ -407,6 +429,8 @@ var ReferenceWizard = {
|
|
|
407
429
|
search: "Search"
|
|
408
430
|
};
|
|
409
431
|
var en_default = {
|
|
432
|
+
AssistProgress,
|
|
433
|
+
PdfViewer,
|
|
410
434
|
Toolbar,
|
|
411
435
|
ResourceInfoPanel,
|
|
412
436
|
CollaborationPanel,
|
|
@@ -429,6 +453,8 @@ var en_default = {
|
|
|
429
453
|
};
|
|
430
454
|
|
|
431
455
|
export {
|
|
456
|
+
AssistProgress,
|
|
457
|
+
PdfViewer,
|
|
432
458
|
Toolbar,
|
|
433
459
|
ResourceInfoPanel,
|
|
434
460
|
CollaborationPanel,
|
|
@@ -450,4 +476,4 @@ export {
|
|
|
450
476
|
ReferenceWizard,
|
|
451
477
|
en_default
|
|
452
478
|
};
|
|
453
|
-
//# sourceMappingURL=chunk-
|
|
479
|
+
//# sourceMappingURL=chunk-L3WKRWP3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../translations/en.json"],"sourcesContent":["{\n \"AssistProgress\": {\n \"close\": \"Close\",\n \"paramsTitle\": \"Request Parameters:\",\n \"processing\": \"Current: {{label}}\"\n },\n \"PdfViewer\": {\n \"loadFailed\": \"Failed to load PDF\",\n \"loading\": \"Loading PDF...\",\n \"next\": \"Next\",\n \"pageLoadFailed\": \"Failed to load page\",\n \"pageOf\": \"Page {{page}} of {{total}}\",\n \"pagination\": \"Page navigation\",\n \"previous\": \"Previous\",\n \"viewerLoading\": \"Loading PDF viewer...\"\n },\n \"Toolbar\": {\n \"annotations\": \"Annotations\",\n \"history\": \"History\",\n \"resourceInfo\": \"Resource Info\",\n \"collaboration\": \"Collaboration\",\n \"userAccount\": \"User Account\",\n \"settings\": \"Settings\",\n \"knowledgeBase\": \"Knowledge Base\"\n },\n \"ResourceInfoPanel\": {\n \"title\": \"Resource Info\",\n \"locale\": \"Locale\",\n \"notSpecified\": \"Not specified\",\n \"entityTypeTags\": \"Entity Type Tags\",\n \"representation\": \"Representation\",\n \"mediaType\": \"Media Type\",\n \"byteSize\": \"Size\",\n \"storageUri\": \"Storage\",\n \"clone\": \"Clone\",\n \"cloneDescription\": \"Generate a shareable clone link for this resource\",\n \"generate\": \"Generate\",\n \"generateDescription\": \"Generate a new resource from this one's context\",\n \"archive\": \"Archive\",\n \"archiveDescription\": \"Move this resource to archived status\",\n \"unarchive\": \"Unarchive\",\n \"unarchiveDescription\": \"Restore this resource to active status\",\n \"provenance\": \"Provenance\",\n \"createdAt\": \"Created\",\n \"modifiedAt\": \"Modified\",\n \"attributedTo\": \"Attributed to\",\n \"derivedFrom\": \"Derived from\"\n },\n \"CollaborationPanel\": {\n \"title\": \"Collaboration\",\n \"connectionStatus\": \"Connection Status\",\n \"live\": \"Live\",\n \"disconnected\": \"Disconnected\",\n \"events\": \"{{count}} events\",\n \"lastSync\": \"Last sync:\",\n \"noActivity\": \"No activity yet\",\n \"justNow\": \"Just now\",\n \"secondsAgo\": \"{{count}} seconds ago\",\n \"minuteAgo\": \"1 minute ago\",\n \"minutesAgo\": \"{{count}} minutes ago\",\n \"hourAgo\": \"1 hour ago\",\n \"hoursAgo\": \"{{count}} hours ago\",\n \"realtimeActive\": \"Real-time updates are active\",\n \"reconnecting\": \"Reconnecting to server...\",\n \"sharing\": \"Sharing\",\n \"collaborationComingSoon\": \"Collaboration features coming soon\"\n },\n \"AnnotationHistory\": {\n \"history\": \"History\",\n \"loading\": \"Loading...\",\n \"user\": \"User\",\n \"viewOriginal\": \"View original\",\n \"viewAnnotation\": \"View annotation: {{content}}\",\n \"resourceCreated\": \"Created Resource\",\n \"resourceCloned\": \"Cloned\",\n \"resourceArchived\": \"Archived\",\n \"resourceUnarchived\": \"Unarchived\",\n \"highlightAdded\": \"Highlight Added\",\n \"highlightRemoved\": \"Highlight Removed\",\n \"referenceCreated\": \"Reference Created\",\n \"referenceResolved\": \"Reference Resolved\",\n \"referenceDeleted\": \"Reference Deleted\",\n \"entitytagAdded\": \"Tag Added\",\n \"entitytagRemoved\": \"Tag Removed\",\n \"assessmentAdded\": \"Assessment Added\",\n \"assessmentRemoved\": \"Assessment Removed\",\n \"annotationAdded\": \"Annotation Added\",\n \"annotationRemoved\": \"Annotation Removed\",\n \"annotationBodyUpdated\": \"Annotation Updated\",\n \"jobEvent\": \"Job Event\",\n \"embeddingComputed\": \"Embedding Computed\",\n \"justNow\": \"just now\",\n \"minutesAgo\": \"{{count}}m ago\",\n \"hoursAgo\": \"{{count}}h ago\",\n \"daysAgo\": \"{{count}}d ago\",\n \"failed\": \"Could not load history.\",\n \"retry\": \"Try again\"\n },\n \"CommentsPanel\": {\n \"title\": \"Comments\",\n \"noComments\": \"No comments yet. Select text and click Comment to add one.\",\n \"commentPlaceholder\": \"Type your comment here...\",\n \"save\": \"Save\",\n \"cancel\": \"Cancel\",\n \"edit\": \"Edit\",\n \"annotateComments\": \"Annotate Comments\",\n \"instructions\": \"Instructions\",\n \"optional\": \"(optional)\",\n \"instructionsPlaceholder\": \"e.g., Focus on technical terminology...\",\n \"annotate\": \"Annotate\",\n \"annotating\": \"Annotating...\",\n \"toneLabel\": \"Tone\",\n \"toneOptional\": \"(optional)\",\n \"toneScholarly\": \"Scholarly\",\n \"toneExplanatory\": \"Explanatory\",\n \"toneConversational\": \"Conversational\",\n \"toneTechnical\": \"Technical\",\n \"densityLabel\": \"Density\",\n \"densitySparse\": \"Sparse\",\n \"densityDense\": \"Dense\",\n \"fragmentSelected\": \"Fragment selected\",\n \"imageRegionSelected\": \"Image region selected\",\n \"complete\": \"Annotation complete!\",\n \"failed\": \"Annotation failed\",\n \"densityPerWords\": \"{{density}} per 2000 words\"\n },\n \"HighlightPanel\": {\n \"title\": \"Highlights\",\n \"noHighlights\": \"No highlights yet. Use AI annotation to find important passages.\",\n \"annotateHighlights\": \"Annotate Highlights\",\n \"instructions\": \"Instructions\",\n \"optional\": \"(optional)\",\n \"instructionsPlaceholder\": \"e.g., Focus on key technical concepts...\",\n \"annotate\": \"Annotate\",\n \"annotating\": \"Annotating...\",\n \"cancel\": \"Cancel\",\n \"densityLabel\": \"Density\",\n \"densitySparse\": \"Sparse\",\n \"densityDense\": \"Dense\",\n \"complete\": \"Annotation complete!\",\n \"failed\": \"Annotation failed\",\n \"densityPerWords\": \"{{density}} per 2000 words\"\n },\n \"AssessmentPanel\": {\n \"title\": \"Assessments\",\n \"noAssessments\": \"No assessments yet. Use AI annotation to evaluate passages.\",\n \"assessmentPlaceholder\": \"Type your assessment here...\",\n \"save\": \"Save\",\n \"cancel\": \"Cancel\",\n \"annotateAssessments\": \"Annotate Assessments\",\n \"instructions\": \"Instructions\",\n \"optional\": \"(optional)\",\n \"instructionsPlaceholder\": \"e.g., Evaluate claims for accuracy and evidence...\",\n \"annotate\": \"Annotate\",\n \"annotating\": \"Annotating...\",\n \"toneLabel\": \"Tone\",\n \"toneOptional\": \"(optional)\",\n \"toneAnalytical\": \"Analytical\",\n \"toneCritical\": \"Critical\",\n \"toneBalanced\": \"Balanced\",\n \"toneConstructive\": \"Constructive\",\n \"densityLabel\": \"Density\",\n \"densitySparse\": \"Sparse\",\n \"densityDense\": \"Dense\",\n \"fragmentSelected\": \"Fragment selected\",\n \"imageRegionSelected\": \"Image region selected\",\n \"complete\": \"Annotation complete!\",\n \"failed\": \"Annotation failed\",\n \"densityPerWords\": \"{{density}} per 2000 words\"\n },\n \"TaggingPanel\": {\n \"title\": \"Tags\",\n \"noTags\": \"No tags yet. Use AI annotation to identify structural roles.\",\n \"noSchemas\": \"No tag schemas registered for this knowledge base. A KB administrator must register at least one structural-analysis schema (e.g. via the `register-tag-schemas` skill) before tagging can be used.\",\n \"annotateTags\": \"Annotate Tags\",\n \"selectSchema\": \"Select Framework\",\n \"selectCategories\": \"Select Categories\",\n \"annotate\": \"Annotate\",\n \"annotating\": \"Annotating...\",\n \"cancel\": \"Cancel\",\n \"selectAll\": \"Select All\",\n \"deselectAll\": \"Deselect All\",\n \"categoriesSelected\": \"{count, plural, =0 {No categories selected} =1 {1 category selected} other {# categories selected}}\",\n \"createTagForSelection\": \"Create Tag for Selection\",\n \"selectCategory\": \"Select Category\",\n \"chooseCategory\": \"Choose a category...\",\n \"fragmentSelected\": \"Fragment selected\",\n \"imageRegionSelected\": \"Image region selected\",\n \"complete\": \"Annotation complete!\",\n \"failed\": \"Annotation failed\"\n },\n \"UnifiedAnnotationsPanel\": {\n \"title\": \"Annotations\",\n \"statistics\": \"Statistics\",\n \"highlight\": \"Highlights\",\n \"reference\": \"References\",\n \"assessment\": \"Assessments\",\n \"comment\": \"Comments\",\n \"tag\": \"Tags\",\n \"annotationsFailed\": \"Could not load annotations.\",\n \"retry\": \"Try again\"\n },\n \"StatisticsPanel\": {\n \"title\": \"Statistics\",\n \"highlights\": \"Highlights\",\n \"comments\": \"Comments\",\n \"assessments\": \"Assessments\",\n \"tags\": \"Tags\",\n \"references\": \"References\",\n \"stub\": \"Stub\",\n \"resolved\": \"Resolved\",\n \"entityTypes\": \"Entity Types\"\n },\n \"ReferencesPanel\": {\n \"title\": \"References\",\n \"noReferences\": \"No references yet. Select text to create references to other resources.\",\n \"outgoingReferences\": \"Outgoing References\",\n \"incomingReferences\": \"Incoming References\",\n \"noIncomingReferences\": \"No incoming references\",\n \"stub\": \"Stub reference (not linked)\",\n \"resolved\": \"Resolved reference (linked)\",\n \"open\": \"Open\",\n \"unlink\": \"Unlink\",\n \"resolve\": \"Resolve Reference\",\n \"cancel\": \"Cancel\",\n \"createReference\": \"Create Reference\",\n \"entityTypesOptional\": \"Entity Types (Optional)\",\n \"fragmentSelected\": \"Fragment selected\",\n \"imageRegionSelected\": \"Image region selected\",\n \"annotateReferences\": \"Annotate References\",\n \"selectEntityTypes\": \"Entity types:\",\n \"select\": \"Select\",\n \"deselect\": \"Deselect\",\n \"noEntityTypes\": \"No entity types available\",\n \"typesSelected\": \"{count, plural, =1 {1 type selected} other {# types selected}}\",\n \"annotate\": \"Annotate\",\n \"annotating\": \"Annotating...\",\n \"includeDescriptiveReferences\": \"Include descriptive references\",\n \"descriptiveReferencesTooltip\": \"Also find phrases like 'the CEO', 'the tech giant', 'the physicist' (in addition to names)\",\n \"annotationProgressTitle\": \"Annotating Entity References\",\n \"cancelAnnotation\": \"Cancel annotation\",\n \"found\": \"{{count}} found\",\n \"complete\": \"Annotation complete!\",\n \"failed\": \"Annotation failed\",\n \"current\": \"Current: {{entityType}}\",\n \"loading\": \"loading...\",\n \"loadingEllipsis\": \"Loading...\",\n \"untitledResource\": \"Untitled Resource\",\n \"noText\": \"No text\",\n \"incomingReferencesFailed\": \"Could not load incoming references.\",\n \"retry\": \"Try again\",\n \"entityTypesFailed\": \"Could not load entity types.\"\n },\n \"KeyboardShortcuts\": {\n \"title\": \"Keyboard Shortcuts\",\n \"closeDialog\": \"Close dialog\",\n \"or\": \"or\",\n \"navigationTitle\": \"Navigation\",\n \"navOpenSearch\": \"Open global search\",\n \"navOpenSearchAlt\": \"Open global search (alternative)\",\n \"navCreateResource\": \"Create new resource\",\n \"navCloseOverlays\": \"Close all overlays (double press)\",\n \"navShowHelp\": \"Show keyboard shortcuts help\",\n \"sidebarTitle\": \"Knowledge Sidebar\",\n \"sidebarCollapse\": \"Collapse sidebar\",\n \"sidebarExpand\": \"Expand sidebar\",\n \"sidebarPickup\": \"Pick up resource tab (when focused)\",\n \"sidebarMove\": \"Move resource tab (when dragging)\",\n \"sidebarDrop\": \"Drop resource tab (when dragging)\",\n \"sidebarCancel\": \"Cancel drag operation\",\n \"annotationsTitle\": \"Resource Annotations\",\n \"annotHighlight\": \"Create highlight from annotation (direct)\",\n \"annotReference\": \"Open reference popup for annotation\",\n \"annotDelete\": \"Delete focused annotation\",\n \"annotNavigate\": \"Navigate through annotations\",\n \"annotNavigateBack\": \"Navigate annotations backward\",\n \"listsTitle\": \"Lists & Grids\",\n \"listsFilterNav\": \"Navigate entity type filters\",\n \"listsGridNav\": \"Navigate resource grid\",\n \"listsJumpFirst\": \"Jump to first item\",\n \"listsJumpLast\": \"Jump to last item\",\n \"searchModalTitle\": \"In Search Modal\",\n \"searchNav\": \"Navigate search results\",\n \"searchSelect\": \"Select result\",\n \"searchClose\": \"Close search\",\n \"modalTitle\": \"Modal Controls\",\n \"modalClose\": \"Close active modal\",\n \"modalNavForward\": \"Navigate forward through buttons\",\n \"modalNavBackward\": \"Navigate backward through buttons\",\n \"modalActivate\": \"Activate focused button\",\n \"accessibilityTitle\": \"Accessibility\",\n \"a11ySkipLinks\": \"Navigate to skip links (when at page start)\",\n \"a11yFollowLink\": \"Follow skip link\",\n \"macNote\": \"Using Mac keyboard shortcuts. ⌘ is the Command key.\",\n \"windowsNote\": \"Using Windows/Linux keyboard shortcuts. Ctrl is the Control key.\",\n \"footerHint\": \"Press {{key}} anytime to show this help\",\n \"close\": \"Close\"\n },\n \"AnnotateToolbar\": {\n \"modeGroup\": \"Mode\",\n \"browse\": \"Browse\",\n \"annotate\": \"Annotate\",\n \"selectionGroup\": \"Motivation\",\n \"clickGroup\": \"Click\",\n \"shapeGroup\": \"Shape\",\n \"none\": \"None\",\n \"linking\": \"Reference\",\n \"highlighting\": \"Highlight\",\n \"assessing\": \"Assess\",\n \"commenting\": \"Comment\",\n \"tagging\": \"Tag\",\n \"detail\": \"Detail\",\n \"follow\": \"Follow\",\n \"deleting\": \"Delete\",\n \"jsonld\": \"JSON-LD\",\n \"rectangle\": \"Rectangle\",\n \"circle\": \"Circle\",\n \"polygon\": \"Polygon\"\n },\n \"CollapsibleResourceNavigation\": {\n \"title\": \"Navigation\",\n \"collapseSidebar\": \"Collapse sidebar\",\n \"expandSidebar\": \"Expand sidebar\",\n \"dragToReorder\": \"Drag to reorder\",\n \"dragToReorderDoc\": \"Drag to reorder {{name}}\",\n \"closeResource\": \"Close resource\",\n \"dragInstructions\": \"To reorder resources: Use Tab to navigate to a resource. Press Alt+Up arrow to move up or Alt+Down arrow to move down. For drag and drop: Press space bar to pick up the item. Use arrow keys to move it. Press space bar again to drop.\"\n },\n \"ResourceViewer\": {\n \"deleteConfirmationTitle\": \"Delete Annotation\",\n \"deleteConfirmationMessage\": \"Are you sure you want to delete this annotation? This action cannot be undone.\",\n \"deleteConfirmationCancel\": \"Cancel\",\n \"deleteConfirmationDelete\": \"Delete\"\n },\n \"Settings\": {\n \"title\": \"Settings\",\n \"lineNumbers\": \"Line Numbers\",\n \"lineNumbersVisible\": \"Visible\",\n \"lineNumbersHidden\": \"Hidden\",\n \"theme\": \"Theme\",\n \"themeLight\": \"Light\",\n \"themeDark\": \"Dark\",\n \"themeSystem\": \"System\",\n \"themeSystemActive\": \"System ({{mode}})\",\n \"themeModeActive\": \"Using {{mode}} mode\",\n \"language\": \"Language\",\n \"languageHint\": \"Change language in the main navigation\",\n \"languageChanging\": \"Changing language...\",\n \"hoverDelay\": \"Hover Delay\",\n \"hoverDelayFast\": \"Fast\",\n \"hoverDelaySlow\": \"Slow\",\n \"hoverDelayDescription\": \"{{delay}}ms delay before hover effects appear\"\n },\n \"AnnotateView\": {},\n \"ResourceGenerate\": {\n \"gatherTitle\": \"Configure Gather\",\n \"reviewTitle\": \"Review Context\",\n \"configureTitle\": \"Configure Generation\",\n \"next\": \"Next\",\n \"back\": \"Back\",\n \"cancel\": \"Cancel\",\n \"gatherIntro\": \"Choose what to include in the gathered context.\",\n \"includeContent\": \"Include resource content\",\n \"includeSummary\": \"Include summary\",\n \"gatherDepth\": \"Depth\",\n \"gatherMaxResources\": \"Max resources\",\n \"gatherButton\": \"Gather\",\n \"excludeLabel\": \"Exclude from recall\",\n \"loadingContext\": \"Gathering context...\",\n \"failedContext\": \"Failed to gather context\",\n \"sourceContextLabel\": \"Resource\",\n \"connectionsLabel\": \"Connections\",\n \"citedByLabel\": \"Cited by\",\n \"resourceTitle\": \"New resource title\",\n \"resourceTitlePlaceholder\": \"Title for the generated resource...\",\n \"additionalInstructions\": \"Additional Instructions\",\n \"additionalInstructionsPlaceholder\": \"Optional guidance for the generation...\",\n \"language\": \"Language\",\n \"languageHelp\": \"Language for the generated resource\",\n \"creativity\": \"Creativity\",\n \"creativityFocused\": \"Focused\",\n \"creativityCreative\": \"Creative\",\n \"maxLength\": \"Max Length\",\n \"maxLengthHelp\": \"Maximum number of tokens\",\n \"generate\": \"Generate\",\n \"progressTitle\": \"Generating Resource\",\n \"progressCancel\": \"Cancel generation\",\n \"progressInProgress\": \"Generating…\",\n \"progressComplete\": \"Generation complete!\",\n \"progressFailed\": \"Generation failed\"\n },\n \"ReferenceWizard\": {\n \"gatherTitle\": \"Gathered Context\",\n \"configureGenerationTitle\": \"Configure Generation\",\n \"configureSearchTitle\": \"Configure Search\",\n \"searchResultsTitle\": \"Search Results\",\n \"sourceContextLabel\": \"Annotation context in resource\",\n \"connectionsLabel\": \"Peer Annotations\",\n \"citedByLabel\": \"Resource Cited By\",\n \"userHintLabel\": \"Hint\",\n \"userHintPlaceholder\": \"Describe what this annotation refers to...\",\n \"loadingContext\": \"Gathering context...\",\n \"failedContext\": \"Failed to gather context\",\n \"cancel\": \"Cancel\",\n \"generate\": \"Generate\",\n \"compose\": \"Compose\",\n \"resolutionStrategyLabel\": \"Resolution Strategy\",\n \"back\": \"Back\",\n \"link\": \"Link\",\n \"score\": \"Score\",\n \"noResults\": \"No results found\",\n \"resourceTitle\": \"Resource Title\",\n \"resourceTitlePlaceholder\": \"Enter resource title...\",\n \"additionalInstructions\": \"Additional Instructions\",\n \"additionalInstructionsPlaceholder\": \"Enter additional instructions...\",\n \"language\": \"Language\",\n \"languageHelp\": \"Language for generated content\",\n \"creativity\": \"Creativity\",\n \"creativityFocused\": \"Focused\",\n \"creativityCreative\": \"Creative\",\n \"maxLength\": \"Max Length\",\n \"maxLengthHelp\": \"Maximum number of tokens\",\n \"maxResults\": \"Max Results\",\n \"semanticScoring\": \"Semantic Scoring\",\n \"semanticScoringHelp\": \"Use AI to score results by semantic relevance\",\n \"searching\": \"Searching...\",\n \"search\": \"Search\"\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import {
|
|
3
|
+
en_default
|
|
4
|
+
} from "./chunk-L3WKRWP3.js";
|
|
5
|
+
import {
|
|
6
|
+
__glob
|
|
7
|
+
} from "./chunk-O23TLLXW.js";
|
|
8
|
+
|
|
9
|
+
// src/contexts/TranslationContext.tsx
|
|
10
|
+
import { createContext, useContext, useState, useEffect, useMemo } from "react";
|
|
11
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
12
|
+
|
|
13
|
+
// import("../../translations/**/*.json") in src/contexts/TranslationContext.tsx
|
|
14
|
+
var globImport_translations_json = __glob({
|
|
15
|
+
"../../translations/ar.json": () => import("./ar-YTUUGK2O.js"),
|
|
16
|
+
"../../translations/bn.json": () => import("./bn-ASGNGPMD.js"),
|
|
17
|
+
"../../translations/cs.json": () => import("./cs-WMYVAOZY.js"),
|
|
18
|
+
"../../translations/da.json": () => import("./da-FSHHN4D6.js"),
|
|
19
|
+
"../../translations/de.json": () => import("./de-FJFO3TPT.js"),
|
|
20
|
+
"../../translations/el.json": () => import("./el-XOH4QIAG.js"),
|
|
21
|
+
"../../translations/en.json": () => import("./en-3FCBW3YD.js"),
|
|
22
|
+
"../../translations/es.json": () => import("./es-HDX4QI7E.js"),
|
|
23
|
+
"../../translations/fa.json": () => import("./fa-DJ6WTFTJ.js"),
|
|
24
|
+
"../../translations/fi.json": () => import("./fi-4S7H7W7U.js"),
|
|
25
|
+
"../../translations/fr.json": () => import("./fr-6UJSYHXC.js"),
|
|
26
|
+
"../../translations/he.json": () => import("./he-ZZJOHJX2.js"),
|
|
27
|
+
"../../translations/hi.json": () => import("./hi-HZJTAW7U.js"),
|
|
28
|
+
"../../translations/id.json": () => import("./id-E3I6ILEM.js"),
|
|
29
|
+
"../../translations/it.json": () => import("./it-ULAPAD7U.js"),
|
|
30
|
+
"../../translations/ja.json": () => import("./ja-SAHZQ4CZ.js"),
|
|
31
|
+
"../../translations/ko.json": () => import("./ko-DFU2ADQ4.js"),
|
|
32
|
+
"../../translations/ms.json": () => import("./ms-NWL76XNT.js"),
|
|
33
|
+
"../../translations/nl.json": () => import("./nl-ATCM76WN.js"),
|
|
34
|
+
"../../translations/no.json": () => import("./no-UIAQ5RJF.js"),
|
|
35
|
+
"../../translations/pl.json": () => import("./pl-NOECQDXD.js"),
|
|
36
|
+
"../../translations/pt.json": () => import("./pt-SVWIIUPC.js"),
|
|
37
|
+
"../../translations/ro.json": () => import("./ro-NR2DRTZG.js"),
|
|
38
|
+
"../../translations/sv.json": () => import("./sv-STVJ37JP.js"),
|
|
39
|
+
"../../translations/th.json": () => import("./th-UWQR4K54.js"),
|
|
40
|
+
"../../translations/tr.json": () => import("./tr-WNXZSD27.js"),
|
|
41
|
+
"../../translations/uk.json": () => import("./uk-SJRMB47Y.js"),
|
|
42
|
+
"../../translations/vi.json": () => import("./vi-TMRQFES2.js"),
|
|
43
|
+
"../../translations/zh.json": () => import("./zh-QOL3LYEM.js")
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// src/contexts/TranslationContext.tsx
|
|
47
|
+
var TranslationContext = createContext(null);
|
|
48
|
+
var translationCache = /* @__PURE__ */ new Map();
|
|
49
|
+
function processPluralFormat(text, params) {
|
|
50
|
+
const pluralMatch = text.match(/\{(\w+),\s*plural,\s*/);
|
|
51
|
+
if (!pluralMatch) {
|
|
52
|
+
return text;
|
|
53
|
+
}
|
|
54
|
+
const paramName = pluralMatch[1];
|
|
55
|
+
const count = params[paramName];
|
|
56
|
+
if (count === void 0) {
|
|
57
|
+
return text;
|
|
58
|
+
}
|
|
59
|
+
let startPos = pluralMatch[0].length;
|
|
60
|
+
let braceCount = 1;
|
|
61
|
+
let endPos = startPos;
|
|
62
|
+
for (let i = startPos; i < text.length; i++) {
|
|
63
|
+
if (text[i] === "{") braceCount++;
|
|
64
|
+
else if (text[i] === "}") {
|
|
65
|
+
braceCount--;
|
|
66
|
+
if (braceCount === 0) {
|
|
67
|
+
endPos = i;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const pluralCases = text.substring(startPos, endPos);
|
|
73
|
+
const cases = {};
|
|
74
|
+
const caseRegex = /(?:=(\d+)|(\w+))\s*\{([^}]+)\}/g;
|
|
75
|
+
let caseMatch;
|
|
76
|
+
while ((caseMatch = caseRegex.exec(pluralCases)) !== null) {
|
|
77
|
+
const [, exactNumber, keyword, textContent] = caseMatch;
|
|
78
|
+
const key = exactNumber !== void 0 ? `=${exactNumber}` : keyword;
|
|
79
|
+
cases[key] = textContent;
|
|
80
|
+
}
|
|
81
|
+
const exactMatch = cases[`=${count}`];
|
|
82
|
+
if (exactMatch !== void 0) {
|
|
83
|
+
const result = exactMatch.replace(/#/g, String(count));
|
|
84
|
+
return text.substring(0, pluralMatch.index) + result + text.substring(endPos + 1);
|
|
85
|
+
}
|
|
86
|
+
const otherCase = cases["other"];
|
|
87
|
+
if (otherCase !== void 0) {
|
|
88
|
+
const result = otherCase.replace(/#/g, String(count));
|
|
89
|
+
return text.substring(0, pluralMatch.index) + result + text.substring(endPos + 1);
|
|
90
|
+
}
|
|
91
|
+
return text;
|
|
92
|
+
}
|
|
93
|
+
var AVAILABLE_LOCALES = [
|
|
94
|
+
"ar",
|
|
95
|
+
// Arabic
|
|
96
|
+
"bn",
|
|
97
|
+
// Bengali
|
|
98
|
+
"cs",
|
|
99
|
+
// Czech
|
|
100
|
+
"da",
|
|
101
|
+
// Danish
|
|
102
|
+
"de",
|
|
103
|
+
// German
|
|
104
|
+
"el",
|
|
105
|
+
// Greek
|
|
106
|
+
"en",
|
|
107
|
+
// English
|
|
108
|
+
"es",
|
|
109
|
+
// Spanish
|
|
110
|
+
"fa",
|
|
111
|
+
// Persian/Farsi
|
|
112
|
+
"fi",
|
|
113
|
+
// Finnish
|
|
114
|
+
"fr",
|
|
115
|
+
// French
|
|
116
|
+
"he",
|
|
117
|
+
// Hebrew
|
|
118
|
+
"hi",
|
|
119
|
+
// Hindi
|
|
120
|
+
"id",
|
|
121
|
+
// Indonesian
|
|
122
|
+
"it",
|
|
123
|
+
// Italian
|
|
124
|
+
"ja",
|
|
125
|
+
// Japanese
|
|
126
|
+
"ko",
|
|
127
|
+
// Korean
|
|
128
|
+
"ms",
|
|
129
|
+
// Malay
|
|
130
|
+
"nl",
|
|
131
|
+
// Dutch
|
|
132
|
+
"no",
|
|
133
|
+
// Norwegian
|
|
134
|
+
"pl",
|
|
135
|
+
// Polish
|
|
136
|
+
"pt",
|
|
137
|
+
// Portuguese
|
|
138
|
+
"ro",
|
|
139
|
+
// Romanian
|
|
140
|
+
"sv",
|
|
141
|
+
// Swedish
|
|
142
|
+
"th",
|
|
143
|
+
// Thai
|
|
144
|
+
"tr",
|
|
145
|
+
// Turkish
|
|
146
|
+
"uk",
|
|
147
|
+
// Ukrainian
|
|
148
|
+
"vi",
|
|
149
|
+
// Vietnamese
|
|
150
|
+
"zh"
|
|
151
|
+
// Chinese
|
|
152
|
+
];
|
|
153
|
+
async function loadTranslations(locale) {
|
|
154
|
+
if (translationCache.has(locale)) {
|
|
155
|
+
return translationCache.get(locale);
|
|
156
|
+
}
|
|
157
|
+
if (locale === "en") {
|
|
158
|
+
translationCache.set("en", en_default);
|
|
159
|
+
return en_default;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
const translations = await globImport_translations_json(`../../translations/${locale}.json`);
|
|
163
|
+
const translationData = translations.default || translations;
|
|
164
|
+
translationCache.set(locale, translationData);
|
|
165
|
+
return translationData;
|
|
166
|
+
} catch (error) {
|
|
167
|
+
console.error(`Failed to load translations for locale: ${locale}`, error);
|
|
168
|
+
return en_default;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
var defaultTranslationManager = {
|
|
172
|
+
t: (namespace, key, params) => {
|
|
173
|
+
const translations = en_default;
|
|
174
|
+
const translation = translations[namespace]?.[key];
|
|
175
|
+
if (!translation) {
|
|
176
|
+
console.warn(`Translation not found for ${namespace}.${key}`);
|
|
177
|
+
return `${namespace}.${key}`;
|
|
178
|
+
}
|
|
179
|
+
if (params && typeof translation === "string") {
|
|
180
|
+
let result = translation;
|
|
181
|
+
result = processPluralFormat(result, params);
|
|
182
|
+
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
|
183
|
+
result = result.replace(new RegExp(`\\{\\{${paramKey}\\}\\}`, "g"), String(paramValue));
|
|
184
|
+
});
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
return translation;
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
function TranslationProvider({
|
|
191
|
+
translationManager,
|
|
192
|
+
locale,
|
|
193
|
+
loadingComponent = null,
|
|
194
|
+
children
|
|
195
|
+
}) {
|
|
196
|
+
const [loadedTranslations, setLoadedTranslations] = useState(null);
|
|
197
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
198
|
+
useEffect(() => {
|
|
199
|
+
if (locale && !translationManager) {
|
|
200
|
+
setIsLoading(true);
|
|
201
|
+
loadTranslations(locale).then((translations) => {
|
|
202
|
+
setLoadedTranslations(translations);
|
|
203
|
+
setIsLoading(false);
|
|
204
|
+
}).catch((error) => {
|
|
205
|
+
console.error("Failed to load translations:", error);
|
|
206
|
+
setLoadedTranslations(en_default);
|
|
207
|
+
setIsLoading(false);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}, [locale, translationManager]);
|
|
211
|
+
const localeManager = useMemo(() => {
|
|
212
|
+
if (!loadedTranslations) return null;
|
|
213
|
+
return {
|
|
214
|
+
t: (namespace, key, params) => {
|
|
215
|
+
const translation = loadedTranslations[namespace]?.[key];
|
|
216
|
+
if (!translation) {
|
|
217
|
+
console.warn(`Translation not found for ${namespace}.${key} in locale ${locale}`);
|
|
218
|
+
return `${namespace}.${key}`;
|
|
219
|
+
}
|
|
220
|
+
if (params && typeof translation === "string") {
|
|
221
|
+
let result = translation;
|
|
222
|
+
result = processPluralFormat(result, params);
|
|
223
|
+
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
|
224
|
+
result = result.replace(new RegExp(`\\{\\{${paramKey}\\}\\}`, "g"), String(paramValue));
|
|
225
|
+
});
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
return translation;
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}, [loadedTranslations, locale]);
|
|
232
|
+
if (translationManager) {
|
|
233
|
+
return /* @__PURE__ */ jsx(TranslationContext.Provider, { value: translationManager, children });
|
|
234
|
+
}
|
|
235
|
+
if (locale && isLoading) {
|
|
236
|
+
return /* @__PURE__ */ jsx(Fragment, { children: loadingComponent });
|
|
237
|
+
}
|
|
238
|
+
if (locale && localeManager) {
|
|
239
|
+
return /* @__PURE__ */ jsx(TranslationContext.Provider, { value: localeManager, children });
|
|
240
|
+
}
|
|
241
|
+
return /* @__PURE__ */ jsx(TranslationContext.Provider, { value: defaultTranslationManager, children });
|
|
242
|
+
}
|
|
243
|
+
function useTranslations(namespace) {
|
|
244
|
+
const context = useContext(TranslationContext);
|
|
245
|
+
if (!context) {
|
|
246
|
+
return (key, params) => {
|
|
247
|
+
const translations = en_default;
|
|
248
|
+
const translation = translations[namespace]?.[key];
|
|
249
|
+
if (!translation) {
|
|
250
|
+
console.warn(`Translation not found for ${namespace}.${key}`);
|
|
251
|
+
return `${namespace}.${key}`;
|
|
252
|
+
}
|
|
253
|
+
if (params && typeof translation === "string") {
|
|
254
|
+
let result = translation;
|
|
255
|
+
result = processPluralFormat(result, params);
|
|
256
|
+
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
|
257
|
+
result = result.replace(new RegExp(`\\{\\{${paramKey}\\}\\}`, "g"), String(paramValue));
|
|
258
|
+
});
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
return translation;
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return (key, params) => context.t(namespace, key, params);
|
|
265
|
+
}
|
|
266
|
+
function usePreloadTranslations() {
|
|
267
|
+
return {
|
|
268
|
+
preload: async (locale) => {
|
|
269
|
+
try {
|
|
270
|
+
await loadTranslations(locale);
|
|
271
|
+
return true;
|
|
272
|
+
} catch (error) {
|
|
273
|
+
console.error(`Failed to preload translations for ${locale}:`, error);
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
isLoaded: (locale) => translationCache.has(locale)
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export {
|
|
282
|
+
AVAILABLE_LOCALES,
|
|
283
|
+
TranslationProvider,
|
|
284
|
+
useTranslations,
|
|
285
|
+
usePreloadTranslations
|
|
286
|
+
};
|
|
287
|
+
//# sourceMappingURL=chunk-OBQOZCJE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/contexts/TranslationContext.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, ReactNode, useState, useEffect, useMemo } from 'react';\nimport type { TranslationManager } from '../types/TranslationManager';\n\n// Static import for default English only - always needed as fallback\nimport enTranslations from '../../translations/en.json';\n\nconst TranslationContext = createContext<TranslationManager | null>(null);\n\n// Cache for dynamically loaded translations\nconst translationCache = new Map<string, any>();\n\n/**\n * Process ICU MessageFormat plural syntax\n * Supports: {count, plural, =0 {text} =1 {text} other {text}}\n */\nfunction processPluralFormat(text: string, params: Record<string, any>): string {\n // Match {paramName, plural, ...} with proper brace counting\n const pluralMatch = text.match(/\\{(\\w+),\\s*plural,\\s*/);\n if (!pluralMatch) {\n return text;\n }\n\n const paramName = pluralMatch[1];\n const count = params[paramName];\n if (count === undefined) {\n return text;\n }\n\n // Find the matching closing brace by counting\n let startPos = pluralMatch[0].length;\n let braceCount = 1; // We're inside the first {\n let endPos = startPos;\n\n for (let i = startPos; i < text.length; i++) {\n if (text[i] === '{') braceCount++;\n else if (text[i] === '}') {\n braceCount--;\n if (braceCount === 0) {\n endPos = i;\n break;\n }\n }\n }\n\n const pluralCases = text.substring(startPos, endPos);\n\n // Parse plural cases: =0 {text} =1 {text} other {text}\n const cases: Record<string, string> = {};\n const caseRegex = /(?:=(\\d+)|(\\w+))\\s*\\{([^}]+)\\}/g;\n let caseMatch;\n\n while ((caseMatch = caseRegex.exec(pluralCases)) !== null) {\n const [, exactNumber, keyword, textContent] = caseMatch;\n const key = exactNumber !== undefined ? `=${exactNumber}` : keyword;\n cases[key] = textContent;\n }\n\n // Select appropriate case\n const exactMatch = cases[`=${count}`];\n if (exactMatch !== undefined) {\n const result = exactMatch.replace(/#/g, String(count));\n return text.substring(0, pluralMatch.index!) + result + text.substring(endPos + 1);\n }\n\n const otherCase = cases['other'];\n if (otherCase !== undefined) {\n const result = otherCase.replace(/#/g, String(count));\n return text.substring(0, pluralMatch.index!) + result + text.substring(endPos + 1);\n }\n\n return text;\n}\n\n// List of available locales (can be extended without importing all files)\nexport const AVAILABLE_LOCALES = [\n 'ar', // Arabic\n 'bn', // Bengali\n 'cs', // Czech\n 'da', // Danish\n 'de', // German\n 'el', // Greek\n 'en', // English\n 'es', // Spanish\n 'fa', // Persian/Farsi\n 'fi', // Finnish\n 'fr', // French\n 'he', // Hebrew\n 'hi', // Hindi\n 'id', // Indonesian\n 'it', // Italian\n 'ja', // Japanese\n 'ko', // Korean\n 'ms', // Malay\n 'nl', // Dutch\n 'no', // Norwegian\n 'pl', // Polish\n 'pt', // Portuguese\n 'ro', // Romanian\n 'sv', // Swedish\n 'th', // Thai\n 'tr', // Turkish\n 'uk', // Ukrainian\n 'vi', // Vietnamese\n 'zh', // Chinese\n] as const;\nexport type AvailableLocale = typeof AVAILABLE_LOCALES[number];\n\n// Lazy load translations for a specific locale\nasync function loadTranslations(locale: string): Promise<any> {\n // Check cache first\n if (translationCache.has(locale)) {\n return translationCache.get(locale);\n }\n\n // English is already loaded statically\n if (locale === 'en') {\n translationCache.set('en', enTranslations);\n return enTranslations;\n }\n\n try {\n // Dynamic import for all other locales\n const translations = await import(`../../translations/${locale}.json`);\n const translationData = translations.default || translations;\n translationCache.set(locale, translationData);\n return translationData;\n } catch (error) {\n console.error(`Failed to load translations for locale: ${locale}`, error);\n // Fall back to English\n return enTranslations;\n }\n}\n\n// Default English translation manager (using static import)\nconst defaultTranslationManager: TranslationManager = {\n t: (namespace: string, key: string, params?: Record<string, any>) => {\n const translations = enTranslations as Record<string, Record<string, string>>;\n const translation = translations[namespace]?.[key];\n\n if (!translation) {\n console.warn(`Translation not found for ${namespace}.${key}`);\n return `${namespace}.${key}`;\n }\n\n // Handle parameter interpolation and plural format\n if (params && typeof translation === 'string') {\n let result = translation;\n // First process plural format\n result = processPluralFormat(result, params);\n // Then handle simple parameter interpolation\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n result = result.replace(new RegExp(`\\\\{\\\\{${paramKey}\\\\}\\\\}`, 'g'), String(paramValue));\n });\n return result;\n }\n\n return translation;\n },\n};\n\nexport interface TranslationProviderProps {\n /**\n * Option 1: Provide a complete TranslationManager implementation\n */\n translationManager?: TranslationManager;\n\n /**\n * Option 2: Use built-in translations by specifying a locale\n * When adding new locales, just add the JSON file and update AVAILABLE_LOCALES\n */\n locale?: string;\n\n /**\n * Loading component to show while translations are being loaded\n * Only relevant when using dynamic locale loading\n */\n loadingComponent?: ReactNode;\n\n children: ReactNode;\n}\n\n/**\n * Provider for translation management with dynamic loading\n *\n * Three modes of operation:\n * 1. No provider: Components use default English strings\n * 2. With locale prop: Dynamically loads translations for that locale\n * 3. With translationManager: Use custom translation implementation\n */\nexport function TranslationProvider({\n translationManager,\n locale,\n loadingComponent = null,\n children,\n}: TranslationProviderProps) {\n const [loadedTranslations, setLoadedTranslations] = useState<any>(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // Load translations when locale changes\n useEffect(() => {\n if (locale && !translationManager) {\n setIsLoading(true);\n loadTranslations(locale)\n .then(translations => {\n setLoadedTranslations(translations);\n setIsLoading(false);\n })\n .catch(error => {\n console.error('Failed to load translations:', error);\n setLoadedTranslations(enTranslations); // Fall back to English\n setIsLoading(false);\n });\n }\n }, [locale, translationManager]);\n\n // Create translation manager from loaded translations\n const localeManager = useMemo<TranslationManager | null>(() => {\n if (!loadedTranslations) return null;\n\n return {\n t: (namespace: string, key: string, params?: Record<string, any>) => {\n const translation = loadedTranslations[namespace]?.[key];\n\n if (!translation) {\n console.warn(`Translation not found for ${namespace}.${key} in locale ${locale}`);\n return `${namespace}.${key}`;\n }\n\n // Handle parameter interpolation and plural format\n if (params && typeof translation === 'string') {\n let result = translation;\n // First process plural format\n result = processPluralFormat(result, params);\n // Then handle simple parameter interpolation\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n result = result.replace(new RegExp(`\\\\{\\\\{${paramKey}\\\\}\\\\}`, 'g'), String(paramValue));\n });\n return result;\n }\n\n return translation;\n },\n };\n }, [loadedTranslations, locale]);\n\n // If custom translation manager provided, use it\n if (translationManager) {\n return (\n <TranslationContext.Provider value={translationManager}>\n {children}\n </TranslationContext.Provider>\n );\n }\n\n // If locale provided and still loading, show loading component\n if (locale && isLoading) {\n return <>{loadingComponent}</>;\n }\n\n // If locale provided and translations loaded, use them\n if (locale && localeManager) {\n return (\n <TranslationContext.Provider value={localeManager}>\n {children}\n </TranslationContext.Provider>\n );\n }\n\n // Default: use English translations\n return (\n <TranslationContext.Provider value={defaultTranslationManager}>\n {children}\n </TranslationContext.Provider>\n );\n}\n\n/**\n * Hook to access translations within a namespace\n *\n * Works in three modes:\n * 1. Without provider: Returns default English translations\n * 2. With provider using locale: Returns dynamically loaded translations for that locale\n * 3. With custom provider: Uses the custom translation manager\n *\n * @param namespace - Translation namespace (e.g., 'Toolbar', 'ResourceViewer')\n * @returns Function to translate keys within the namespace\n */\nexport function useTranslations(namespace: string) {\n const context = useContext(TranslationContext);\n\n // If no context (no provider), use default English translations\n if (!context) {\n return (key: string, params?: Record<string, any>) => {\n const translations = enTranslations as Record<string, Record<string, string>>;\n const translation = translations[namespace]?.[key];\n\n if (!translation) {\n console.warn(`Translation not found for ${namespace}.${key}`);\n return `${namespace}.${key}`;\n }\n\n // Handle parameter interpolation and plural format\n if (params && typeof translation === 'string') {\n let result = translation;\n // First process plural format\n result = processPluralFormat(result, params);\n // Then handle simple parameter interpolation\n Object.entries(params).forEach(([paramKey, paramValue]) => {\n result = result.replace(new RegExp(`\\\\{\\\\{${paramKey}\\\\}\\\\}`, 'g'), String(paramValue));\n });\n return result;\n }\n\n return translation;\n };\n }\n\n // Return a function that translates keys within this namespace\n return (key: string, params?: Record<string, any>) => context.t(namespace, key, params);\n}\n\n/**\n * Hook to preload translations for a locale\n * Useful for preloading translations before navigation\n */\nexport function usePreloadTranslations() {\n return {\n preload: async (locale: string) => {\n try {\n await loadTranslations(locale);\n return true;\n } catch (error) {\n console.error(`Failed to preload translations for ${locale}:`, error);\n return false;\n }\n },\n isLoaded: (locale: string) => translationCache.has(locale),\n };\n}"],"mappings":";;;;;;;;;AAEA,SAAS,eAAe,YAAuB,UAAU,WAAW,eAAe;AAwP7E,SAQK,UARL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAlPN,IAAM,qBAAqB,cAAyC,IAAI;AAGxE,IAAM,mBAAmB,oBAAI,IAAiB;AAM9C,SAAS,oBAAoB,MAAc,QAAqC;AAE9E,QAAM,cAAc,KAAK,MAAM,uBAAuB;AACtD,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,YAAY,CAAC;AAC/B,QAAM,QAAQ,OAAO,SAAS;AAC9B,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAGA,MAAI,WAAW,YAAY,CAAC,EAAE;AAC9B,MAAI,aAAa;AACjB,MAAI,SAAS;AAEb,WAAS,IAAI,UAAU,IAAI,KAAK,QAAQ,KAAK;AAC3C,QAAI,KAAK,CAAC,MAAM,IAAK;AAAA,aACZ,KAAK,CAAC,MAAM,KAAK;AACxB;AACA,UAAI,eAAe,GAAG;AACpB,iBAAS;AACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,KAAK,UAAU,UAAU,MAAM;AAGnD,QAAM,QAAgC,CAAC;AACvC,QAAM,YAAY;AAClB,MAAI;AAEJ,UAAQ,YAAY,UAAU,KAAK,WAAW,OAAO,MAAM;AACzD,UAAM,CAAC,EAAE,aAAa,SAAS,WAAW,IAAI;AAC9C,UAAM,MAAM,gBAAgB,SAAY,IAAI,WAAW,KAAK;AAC5D,UAAM,GAAG,IAAI;AAAA,EACf;AAGA,QAAM,aAAa,MAAM,IAAI,KAAK,EAAE;AACpC,MAAI,eAAe,QAAW;AAC5B,UAAM,SAAS,WAAW,QAAQ,MAAM,OAAO,KAAK,CAAC;AACrD,WAAO,KAAK,UAAU,GAAG,YAAY,KAAM,IAAI,SAAS,KAAK,UAAU,SAAS,CAAC;AAAA,EACnF;AAEA,QAAM,YAAY,MAAM,OAAO;AAC/B,MAAI,cAAc,QAAW;AAC3B,UAAM,SAAS,UAAU,QAAQ,MAAM,OAAO,KAAK,CAAC;AACpD,WAAO,KAAK,UAAU,GAAG,YAAY,KAAM,IAAI,SAAS,KAAK,UAAU,SAAS,CAAC;AAAA,EACnF;AAEA,SAAO;AACT;AAGO,IAAM,oBAAoB;AAAA,EAC/B;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACF;AAIA,eAAe,iBAAiB,QAA8B;AAE5D,MAAI,iBAAiB,IAAI,MAAM,GAAG;AAChC,WAAO,iBAAiB,IAAI,MAAM;AAAA,EACpC;AAGA,MAAI,WAAW,MAAM;AACnB,qBAAiB,IAAI,MAAM,UAAc;AACzC,WAAO;AAAA,EACT;AAEA,MAAI;AAEF,UAAM,eAAe,MAAa,mDAAsB,MAAM;AAC9D,UAAM,kBAAkB,aAAa,WAAW;AAChD,qBAAiB,IAAI,QAAQ,eAAe;AAC5C,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,2CAA2C,MAAM,IAAI,KAAK;AAExE,WAAO;AAAA,EACT;AACF;AAGA,IAAM,4BAAgD;AAAA,EACpD,GAAG,CAAC,WAAmB,KAAa,WAAiC;AACnE,UAAM,eAAe;AACrB,UAAM,cAAc,aAAa,SAAS,IAAI,GAAG;AAEjD,QAAI,CAAC,aAAa;AAChB,cAAQ,KAAK,6BAA6B,SAAS,IAAI,GAAG,EAAE;AAC5D,aAAO,GAAG,SAAS,IAAI,GAAG;AAAA,IAC5B;AAGA,QAAI,UAAU,OAAO,gBAAgB,UAAU;AAC7C,UAAI,SAAS;AAEb,eAAS,oBAAoB,QAAQ,MAAM;AAE3C,aAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACzD,iBAAS,OAAO,QAAQ,IAAI,OAAO,SAAS,QAAQ,UAAU,GAAG,GAAG,OAAO,UAAU,CAAC;AAAA,MACxF,CAAC;AACD,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AACF;AA+BO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB;AACF,GAA6B;AAC3B,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAc,IAAI;AACtE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAGhD,YAAU,MAAM;AACd,QAAI,UAAU,CAAC,oBAAoB;AACjC,mBAAa,IAAI;AACjB,uBAAiB,MAAM,EACpB,KAAK,kBAAgB;AACpB,8BAAsB,YAAY;AAClC,qBAAa,KAAK;AAAA,MACpB,CAAC,EACA,MAAM,WAAS;AACd,gBAAQ,MAAM,gCAAgC,KAAK;AACnD,8BAAsB,UAAc;AACpC,qBAAa,KAAK;AAAA,MACpB,CAAC;AAAA,IACL;AAAA,EACF,GAAG,CAAC,QAAQ,kBAAkB,CAAC;AAG/B,QAAM,gBAAgB,QAAmC,MAAM;AAC7D,QAAI,CAAC,mBAAoB,QAAO;AAEhC,WAAO;AAAA,MACL,GAAG,CAAC,WAAmB,KAAa,WAAiC;AACnE,cAAM,cAAc,mBAAmB,SAAS,IAAI,GAAG;AAEvD,YAAI,CAAC,aAAa;AAChB,kBAAQ,KAAK,6BAA6B,SAAS,IAAI,GAAG,cAAc,MAAM,EAAE;AAChF,iBAAO,GAAG,SAAS,IAAI,GAAG;AAAA,QAC5B;AAGA,YAAI,UAAU,OAAO,gBAAgB,UAAU;AAC7C,cAAI,SAAS;AAEb,mBAAS,oBAAoB,QAAQ,MAAM;AAE3C,iBAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACzD,qBAAS,OAAO,QAAQ,IAAI,OAAO,SAAS,QAAQ,UAAU,GAAG,GAAG,OAAO,UAAU,CAAC;AAAA,UACxF,CAAC;AACD,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,GAAG,CAAC,oBAAoB,MAAM,CAAC;AAG/B,MAAI,oBAAoB;AACtB,WACE,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,oBACjC,UACH;AAAA,EAEJ;AAGA,MAAI,UAAU,WAAW;AACvB,WAAO,gCAAG,4BAAiB;AAAA,EAC7B;AAGA,MAAI,UAAU,eAAe;AAC3B,WACE,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,eACjC,UACH;AAAA,EAEJ;AAGA,SACE,oBAAC,mBAAmB,UAAnB,EAA4B,OAAO,2BACjC,UACH;AAEJ;AAaO,SAAS,gBAAgB,WAAmB;AACjD,QAAM,UAAU,WAAW,kBAAkB;AAG7C,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,KAAa,WAAiC;AACpD,YAAM,eAAe;AACrB,YAAM,cAAc,aAAa,SAAS,IAAI,GAAG;AAEjD,UAAI,CAAC,aAAa;AAChB,gBAAQ,KAAK,6BAA6B,SAAS,IAAI,GAAG,EAAE;AAC5D,eAAO,GAAG,SAAS,IAAI,GAAG;AAAA,MAC5B;AAGA,UAAI,UAAU,OAAO,gBAAgB,UAAU;AAC7C,YAAI,SAAS;AAEb,iBAAS,oBAAoB,QAAQ,MAAM;AAE3C,eAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,UAAU,MAAM;AACzD,mBAAS,OAAO,QAAQ,IAAI,OAAO,SAAS,QAAQ,UAAU,GAAG,GAAG,OAAO,UAAU,CAAC;AAAA,QACxF,CAAC;AACD,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO,CAAC,KAAa,WAAiC,QAAQ,EAAE,WAAW,KAAK,MAAM;AACxF;AAMO,SAAS,yBAAyB;AACvC,SAAO;AAAA,IACL,SAAS,OAAO,WAAmB;AACjC,UAAI;AACF,cAAM,iBAAiB,MAAM;AAC7B,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,sCAAsC,MAAM,KAAK,KAAK;AACpE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,UAAU,CAAC,WAAmB,iBAAiB,IAAI,MAAM;AAAA,EAC3D;AACF;","names":[]}
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
import "./chunk-O23TLLXW.js";
|
|
3
3
|
|
|
4
4
|
// translations/cs.json
|
|
5
|
+
var AssistProgress = {
|
|
6
|
+
close: "Zav\u0159\xEDt",
|
|
7
|
+
paramsTitle: "Parametry po\u017Eadavku:",
|
|
8
|
+
processing: "Aktu\xE1ln\xED: {{label}}"
|
|
9
|
+
};
|
|
10
|
+
var PdfViewer = {
|
|
11
|
+
loadFailed: "Nepoda\u0159ilo se na\u010D\xEDst PDF",
|
|
12
|
+
loading: "Na\u010D\xEDt\xE1n\xED PDF...",
|
|
13
|
+
next: "Dal\u0161\xED",
|
|
14
|
+
pageLoadFailed: "Nepoda\u0159ilo se na\u010D\xEDst str\xE1nku",
|
|
15
|
+
pageOf: "Strana {{page}} z {{total}}",
|
|
16
|
+
pagination: "Str\xE1nkov\xE1n\xED",
|
|
17
|
+
previous: "P\u0159edchoz\xED",
|
|
18
|
+
viewerLoading: "Na\u010D\xEDt\xE1n\xED prohl\xED\u017Ee\u010De PDF..."
|
|
19
|
+
};
|
|
5
20
|
var Toolbar = {
|
|
6
21
|
annotations: "Anotace",
|
|
7
22
|
history: "Historie",
|
|
@@ -108,7 +123,9 @@ var CommentsPanel = {
|
|
|
108
123
|
densityDense: "Hust\xE1",
|
|
109
124
|
fragmentSelected: "Fragment vybr\xE1n",
|
|
110
125
|
imageRegionSelected: "Oblast obr\xE1zku vybr\xE1na",
|
|
111
|
-
|
|
126
|
+
complete: "Anotace dokon\u010Dena!",
|
|
127
|
+
failed: "Anotace selhala",
|
|
128
|
+
densityPerWords: "{{density}} na 2000 slov"
|
|
112
129
|
};
|
|
113
130
|
var HighlightPanel = {
|
|
114
131
|
title: "Zv\xFDrazn\u011Bn\xED",
|
|
@@ -123,7 +140,9 @@ var HighlightPanel = {
|
|
|
123
140
|
densityLabel: "Hustota",
|
|
124
141
|
densitySparse: "\u0158\xEDdk\xE1",
|
|
125
142
|
densityDense: "Hust\xE1",
|
|
126
|
-
|
|
143
|
+
complete: "Anotace dokon\u010Dena!",
|
|
144
|
+
failed: "Anotace selhala",
|
|
145
|
+
densityPerWords: "{{density}} na 2000 slov"
|
|
127
146
|
};
|
|
128
147
|
var AssessmentPanel = {
|
|
129
148
|
title: "Hodnocen\xED",
|
|
@@ -148,7 +167,9 @@ var AssessmentPanel = {
|
|
|
148
167
|
densityDense: "Hust\xE1",
|
|
149
168
|
fragmentSelected: "Fragment vybr\xE1n",
|
|
150
169
|
imageRegionSelected: "Oblast obr\xE1zku vybr\xE1na",
|
|
151
|
-
|
|
170
|
+
complete: "Anotace dokon\u010Dena!",
|
|
171
|
+
failed: "Anotace selhala",
|
|
172
|
+
densityPerWords: "{{density}} na 2000 slov"
|
|
152
173
|
};
|
|
153
174
|
var TaggingPanel = {
|
|
154
175
|
title: "\u0160t\xEDtky",
|
|
@@ -167,7 +188,9 @@ var TaggingPanel = {
|
|
|
167
188
|
selectCategory: "Vybrat kategorii",
|
|
168
189
|
chooseCategory: "Zvolte kategorii...",
|
|
169
190
|
fragmentSelected: "Fragment vybr\xE1n",
|
|
170
|
-
imageRegionSelected: "Oblast obr\xE1zku vybr\xE1na"
|
|
191
|
+
imageRegionSelected: "Oblast obr\xE1zku vybr\xE1na",
|
|
192
|
+
complete: "Anotace dokon\u010Dena!",
|
|
193
|
+
failed: "Anotace selhala"
|
|
171
194
|
};
|
|
172
195
|
var UnifiedAnnotationsPanel = {
|
|
173
196
|
title: "Anotace",
|
|
@@ -223,7 +246,6 @@ var ReferencesPanel = {
|
|
|
223
246
|
complete: "Anotace dokon\u010Dena!",
|
|
224
247
|
failed: "Anotace selhala",
|
|
225
248
|
current: "Aktu\xE1ln\xED: {{entityType}}",
|
|
226
|
-
closeProgress: "Zav\u0159\xEDt",
|
|
227
249
|
loading: "na\u010D\xEDt\xE1n\xED...",
|
|
228
250
|
loadingEllipsis: "Na\u010D\xEDt\xE1n\xED...",
|
|
229
251
|
untitledResource: "Zdroj bez n\xE1zvu",
|
|
@@ -408,6 +430,8 @@ var ReferenceWizard = {
|
|
|
408
430
|
search: "Hledat"
|
|
409
431
|
};
|
|
410
432
|
var cs_default = {
|
|
433
|
+
AssistProgress,
|
|
434
|
+
PdfViewer,
|
|
411
435
|
Toolbar,
|
|
412
436
|
ResourceInfoPanel,
|
|
413
437
|
CollaborationPanel,
|
|
@@ -433,11 +457,13 @@ export {
|
|
|
433
457
|
AnnotateView,
|
|
434
458
|
AnnotationHistory,
|
|
435
459
|
AssessmentPanel,
|
|
460
|
+
AssistProgress,
|
|
436
461
|
CollaborationPanel,
|
|
437
462
|
CollapsibleResourceNavigation,
|
|
438
463
|
CommentsPanel,
|
|
439
464
|
HighlightPanel,
|
|
440
465
|
KeyboardShortcuts,
|
|
466
|
+
PdfViewer,
|
|
441
467
|
ReferenceWizard,
|
|
442
468
|
ReferencesPanel,
|
|
443
469
|
ResourceGenerate,
|
|
@@ -450,4 +476,4 @@ export {
|
|
|
450
476
|
UnifiedAnnotationsPanel,
|
|
451
477
|
cs_default as default
|
|
452
478
|
};
|
|
453
|
-
//# sourceMappingURL=cs-
|
|
479
|
+
//# sourceMappingURL=cs-WMYVAOZY.js.map
|