@semiont/react-ui 0.2.46 → 0.3.0
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-COQREPXU.mjs → PdfAnnotationCanvas.client-PVTVPDBQ.mjs} +3 -4
- package/dist/PdfAnnotationCanvas.client-PVTVPDBQ.mjs.map +1 -0
- package/dist/{ar-7SUXNE34.mjs → ar-APUOG2AP.mjs} +46 -6
- package/dist/ar-APUOG2AP.mjs.map +1 -0
- package/dist/{bn-XOET3DOI.mjs → bn-EFK2LJGK.mjs} +46 -6
- package/dist/bn-EFK2LJGK.mjs.map +1 -0
- package/dist/{chunk-JH7BXE2P.mjs → chunk-7DW2P4UE.mjs} +45 -5
- package/dist/chunk-7DW2P4UE.mjs.map +1 -0
- package/dist/{chunk-Q2KV6Y2J.mjs → chunk-7GEYABC6.mjs} +32 -32
- package/dist/{chunk-3JTO27MH.mjs → chunk-D4GAAQMM.mjs} +2 -9
- package/dist/{cs-X63DXX7L.mjs → cs-A26MEEQE.mjs} +46 -6
- package/dist/cs-A26MEEQE.mjs.map +1 -0
- package/dist/{da-OWTCV57A.mjs → da-U3L2FHSZ.mjs} +46 -6
- package/dist/da-U3L2FHSZ.mjs.map +1 -0
- package/dist/{de-77BMFDVF.mjs → de-Y5BHEBT7.mjs} +46 -6
- package/dist/de-Y5BHEBT7.mjs.map +1 -0
- package/dist/dist-YLEIY3JJ.mjs +547 -0
- package/dist/dist-YLEIY3JJ.mjs.map +1 -0
- package/dist/{el-FIBNLH2V.mjs → el-HU7LAWQY.mjs} +46 -6
- package/dist/el-HU7LAWQY.mjs.map +1 -0
- package/dist/{en-XWEPVTB4.mjs → en-HAKDCFKL.mjs} +5 -3
- package/dist/{es-726NTS53.mjs → es-4BN64QH5.mjs} +46 -6
- package/dist/es-4BN64QH5.mjs.map +1 -0
- package/dist/{fa-3N4CIWE6.mjs → fa-6ELTBARU.mjs} +46 -6
- package/dist/fa-6ELTBARU.mjs.map +1 -0
- package/dist/{fi-JOM3M7Z4.mjs → fi-DJ4WGIFW.mjs} +46 -6
- package/dist/fi-DJ4WGIFW.mjs.map +1 -0
- package/dist/{fr-56QSXS7E.mjs → fr-23XM6H6H.mjs} +46 -6
- package/dist/fr-23XM6H6H.mjs.map +1 -0
- package/dist/{he-SNAXPJEK.mjs → he-JSWJC2XU.mjs} +46 -6
- package/dist/he-JSWJC2XU.mjs.map +1 -0
- package/dist/{hi-CRBRD5TB.mjs → hi-BENHG3OJ.mjs} +46 -6
- package/dist/hi-BENHG3OJ.mjs.map +1 -0
- package/dist/{id-BRCVLICF.mjs → id-4HHQJQNF.mjs} +46 -6
- package/dist/id-4HHQJQNF.mjs.map +1 -0
- package/dist/index.css +108 -12
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +351 -107
- package/dist/index.mjs +3111 -1811
- package/dist/index.mjs.map +1 -1
- package/dist/{it-M2Z27BNB.mjs → it-U6I5PDKU.mjs} +46 -6
- package/dist/it-U6I5PDKU.mjs.map +1 -0
- package/dist/{ja-TZUKW7HD.mjs → ja-K3YBDWDP.mjs} +46 -6
- package/dist/ja-K3YBDWDP.mjs.map +1 -0
- package/dist/{ko-NKBGGOL6.mjs → ko-KC2HXRXG.mjs} +46 -6
- package/dist/ko-KC2HXRXG.mjs.map +1 -0
- package/dist/{magic-string.es-7FJ3LUGB.mjs → magic-string.es-K77I4ZQN.mjs} +2 -2
- package/dist/{ms-XFXPN6RX.mjs → ms-KY5QGBNN.mjs} +46 -6
- package/dist/ms-KY5QGBNN.mjs.map +1 -0
- package/dist/{nl-MVYXAS5C.mjs → nl-6PZFLGY2.mjs} +46 -6
- package/dist/nl-6PZFLGY2.mjs.map +1 -0
- package/dist/{no-XOLO4JPV.mjs → no-5QR7PLVJ.mjs} +46 -6
- package/dist/no-5QR7PLVJ.mjs.map +1 -0
- package/dist/{pl-TRWLMMC4.mjs → pl-4GV2NQXE.mjs} +46 -6
- package/dist/pl-4GV2NQXE.mjs.map +1 -0
- package/dist/{pt-M3TE24UI.mjs → pt-F3F5QD2P.mjs} +46 -6
- package/dist/pt-F3F5QD2P.mjs.map +1 -0
- package/dist/{ro-QBFG2T64.mjs → ro-TFYL2IQB.mjs} +46 -6
- package/dist/ro-TFYL2IQB.mjs.map +1 -0
- package/dist/{sv-IUECBXWX.mjs → sv-PRVF2QLR.mjs} +46 -6
- package/dist/sv-PRVF2QLR.mjs.map +1 -0
- package/dist/test-utils.mjs +16994 -22140
- package/dist/test-utils.mjs.map +1 -1
- package/dist/{th-US7KIN5Q.mjs → th-SUQOQFUZ.mjs} +46 -6
- package/dist/th-SUQOQFUZ.mjs.map +1 -0
- package/dist/{tr-DWJ2FFUK.mjs → tr-AYUJZOFJ.mjs} +46 -6
- package/dist/tr-AYUJZOFJ.mjs.map +1 -0
- package/dist/{uk-M4ZE4DPZ.mjs → uk-YY5WGLBM.mjs} +46 -6
- package/dist/uk-YY5WGLBM.mjs.map +1 -0
- package/dist/{vi-FERZNPSH.mjs → vi-6RO77ITD.mjs} +46 -6
- package/dist/{vi-FERZNPSH.mjs.map → vi-6RO77ITD.mjs.map} +1 -1
- package/dist/{zh-3J2I3WYK.mjs → zh-L6GA65H6.mjs} +46 -6
- package/dist/zh-L6GA65H6.mjs.map +1 -0
- package/package.json +18 -14
- package/src/components/Button/Button.tsx +23 -25
- package/src/components/annotation/AnnotateToolbar.tsx +1 -1
- package/src/components/annotation-popups/SharedPopupElements.tsx +5 -7
- package/src/components/image-annotation/SvgDrawingCanvas.tsx +3 -4
- package/src/components/modals/ConfigureGenerationStep.tsx +190 -0
- package/src/components/modals/ConfigureSearchStep.tsx +105 -0
- package/src/components/modals/ContextSummary.tsx +183 -0
- package/src/components/modals/GatherContextStep.tsx +89 -0
- package/src/components/modals/KeyboardShortcutsHelpModal.tsx +4 -6
- package/src/components/modals/ProposeEntitiesModal.tsx +4 -6
- package/src/components/modals/ReferenceWizardModal.tsx +326 -0
- package/src/components/modals/ResourceSearchModal.tsx +4 -6
- package/src/components/modals/SearchModal.css +43 -0
- package/src/components/modals/SearchModal.tsx +4 -6
- package/src/components/modals/SearchResultsStep.tsx +126 -0
- package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +3 -4
- package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +36 -14
- package/src/components/resource/AnnotateView.tsx +4 -4
- package/src/components/resource/AnnotationHistory.tsx +2 -2
- package/src/components/resource/BrowseView.tsx +4 -4
- package/src/components/resource/ResourceViewer.tsx +4 -7
- package/src/components/resource/__tests__/AnnotationHistory.test.tsx +16 -16
- package/src/components/resource/__tests__/BrowseView.test.tsx +2 -2
- package/src/components/resource/__tests__/HistoryEvent.test.tsx +1 -1
- package/src/components/resource/__tests__/ResourceViewer.mode-switch.test.tsx +1 -1
- package/src/components/resource/panels/AssessmentEntry.tsx +9 -11
- package/src/components/resource/panels/CommentEntry.tsx +10 -12
- package/src/components/resource/panels/HighlightEntry.tsx +9 -11
- package/src/components/resource/panels/ReferenceEntry.tsx +57 -104
- package/src/components/resource/panels/ReferencesPanel.css +85 -13
- package/src/components/resource/panels/ReferencesPanel.tsx +1 -2
- package/src/components/resource/panels/TagEntry.tsx +9 -11
- package/src/components/resource/panels/__tests__/AssistSection.test.tsx +7 -7
- package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +2 -2
- package/src/components/resource/panels/__tests__/ReferenceEntry.test.tsx +64 -101
- package/src/components/resource/panels/__tests__/StatisticsPanel.test.tsx +1 -1
- package/src/components/resource/panels/__tests__/TaggingPanel.test.tsx +3 -3
- package/src/components/viewers/ImageViewer.tsx +3 -6
- package/src/components/viewers/__tests__/ImageViewer.test.tsx +3 -3
- package/src/features/admin-devops/__tests__/AdminDevOpsPage.test.tsx +5 -5
- package/src/features/admin-exchange/__tests__/AdminExchangePage.test.tsx +141 -0
- package/src/features/admin-exchange/__tests__/ExportCard.test.tsx +41 -0
- package/src/features/admin-exchange/__tests__/ImportCard.test.tsx +148 -0
- package/src/features/admin-exchange/__tests__/ImportProgress.test.tsx +106 -0
- package/src/features/admin-exchange/components/AdminExchangePage.tsx +120 -0
- package/src/features/admin-exchange/components/ExportCard.tsx +35 -0
- package/src/features/admin-exchange/components/ImportCard.tsx +188 -0
- package/src/features/admin-exchange/components/ImportProgress.tsx +86 -0
- package/src/features/admin-security/__tests__/AdminSecurityPage.test.tsx +3 -3
- package/src/features/moderate-entity-tags/__tests__/EntityTagsPage.test.tsx +2 -2
- package/src/features/moderate-recent/__tests__/RecentDocumentsPage.test.tsx +4 -4
- package/src/features/moderate-tag-schemas/__tests__/TagSchemasPage.test.tsx +3 -3
- package/src/features/moderation-linked-data/__tests__/LinkedDataPage.test.tsx +117 -0
- package/src/features/moderation-linked-data/components/LinkedDataPage.tsx +121 -0
- package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +5 -5
- package/src/features/resource-compose/components/ResourceComposePage.tsx +56 -1
- package/src/features/resource-discovery/__tests__/ResourceCard.test.tsx +1 -1
- package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +2 -2
- package/src/features/resource-viewer/__tests__/AnnotationCreationPending.test.tsx +3 -3
- package/src/features/resource-viewer/__tests__/AnnotationDeletionIntegration.test.tsx +11 -10
- package/src/features/resource-viewer/__tests__/AnnotationProgressDismissal.test.tsx +2 -2
- package/src/features/resource-viewer/__tests__/BindFlowIntegration.test.tsx +22 -115
- package/src/features/resource-viewer/__tests__/DetectionFlowBug.test.tsx +3 -3
- package/src/features/resource-viewer/__tests__/DetectionFlowIntegration.test.tsx +20 -20
- package/src/features/resource-viewer/__tests__/ResourceMutations.test.tsx +7 -7
- package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +5 -21
- package/src/features/resource-viewer/__tests__/ToastNotifications.test.tsx +2 -2
- package/src/features/resource-viewer/__tests__/YieldFlowIntegration.test.tsx +45 -82
- package/src/features/resource-viewer/__tests__/annotation-progress-flow.test.tsx +4 -4
- package/src/features/resource-viewer/components/ResourceViewerPage.tsx +144 -72
- package/src/integrations/tailwind-plugin.js +3 -3
- package/src/styles/core/buttons.css +31 -0
- package/src/styles/features/exchange.css +404 -0
- package/src/styles/index.css +1 -0
- package/translations/ar.json +42 -4
- package/translations/bn.json +42 -4
- package/translations/cs.json +42 -4
- package/translations/da.json +128 -90
- package/translations/de.json +122 -84
- package/translations/el.json +42 -4
- package/translations/en.json +42 -4
- package/translations/es.json +42 -4
- package/translations/fa.json +42 -4
- package/translations/fi.json +68 -30
- package/translations/fr.json +42 -4
- package/translations/he.json +42 -4
- package/translations/hi.json +42 -4
- package/translations/id.json +43 -5
- package/translations/it.json +62 -24
- package/translations/ja.json +43 -5
- package/translations/ko.json +42 -4
- package/translations/ms.json +43 -5
- package/translations/nl.json +41 -3
- package/translations/no.json +104 -66
- package/translations/pl.json +42 -4
- package/translations/pt.json +43 -5
- package/translations/ro.json +42 -4
- package/translations/sv.json +42 -4
- package/translations/th.json +42 -4
- package/translations/tr.json +42 -4
- package/translations/uk.json +42 -4
- package/translations/vi.json +42 -4
- package/translations/zh.json +42 -4
- package/dist/PdfAnnotationCanvas.client-COQREPXU.mjs.map +0 -1
- package/dist/ar-7SUXNE34.mjs.map +0 -1
- package/dist/bn-XOET3DOI.mjs.map +0 -1
- package/dist/chunk-JH7BXE2P.mjs.map +0 -1
- package/dist/cs-X63DXX7L.mjs.map +0 -1
- package/dist/da-OWTCV57A.mjs.map +0 -1
- package/dist/de-77BMFDVF.mjs.map +0 -1
- package/dist/el-FIBNLH2V.mjs.map +0 -1
- package/dist/es-726NTS53.mjs.map +0 -1
- package/dist/fa-3N4CIWE6.mjs.map +0 -1
- package/dist/fi-JOM3M7Z4.mjs.map +0 -1
- package/dist/fr-56QSXS7E.mjs.map +0 -1
- package/dist/he-SNAXPJEK.mjs.map +0 -1
- package/dist/hi-CRBRD5TB.mjs.map +0 -1
- package/dist/id-BRCVLICF.mjs.map +0 -1
- package/dist/it-M2Z27BNB.mjs.map +0 -1
- package/dist/ja-TZUKW7HD.mjs.map +0 -1
- package/dist/ko-NKBGGOL6.mjs.map +0 -1
- package/dist/ms-XFXPN6RX.mjs.map +0 -1
- package/dist/nl-MVYXAS5C.mjs.map +0 -1
- package/dist/no-XOLO4JPV.mjs.map +0 -1
- package/dist/pl-TRWLMMC4.mjs.map +0 -1
- package/dist/pt-M3TE24UI.mjs.map +0 -1
- package/dist/ro-QBFG2T64.mjs.map +0 -1
- package/dist/sv-IUECBXWX.mjs.map +0 -1
- package/dist/th-US7KIN5Q.mjs.map +0 -1
- package/dist/tr-DWJ2FFUK.mjs.map +0 -1
- package/dist/uk-M4ZE4DPZ.mjs.map +0 -1
- package/dist/zh-3J2I3WYK.mjs.map +0 -1
- package/src/examples/ButtonUsageExample.tsx +0 -242
- package/src/examples/button-css-modules.module.css +0 -164
- package/src/examples/button-styled-components.tsx +0 -215
- package/src/examples/button-tailwind.css +0 -51
- /package/dist/{chunk-Q2KV6Y2J.mjs.map → chunk-7GEYABC6.mjs.map} +0 -0
- /package/dist/{chunk-3JTO27MH.mjs.map → chunk-D4GAAQMM.mjs.map} +0 -0
- /package/dist/{en-XWEPVTB4.mjs.map → en-HAKDCFKL.mjs.map} +0 -0
- /package/dist/{magic-string.es-7FJ3LUGB.mjs.map → magic-string.es-K77I4ZQN.mjs.map} +0 -0
package/translations/pl.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Referencja rozwiązana (połączona)",
|
|
201
201
|
"open": "Otwórz",
|
|
202
202
|
"unlink": "Odłącz",
|
|
203
|
-
"
|
|
204
|
-
"find": "Znajdź",
|
|
205
|
-
"create": "Utwórz",
|
|
203
|
+
"resolve": "Rozwiąż referencję",
|
|
206
204
|
"cancel": "Anuluj",
|
|
207
205
|
"createReference": "Utwórz referencję",
|
|
208
206
|
"entityTypesOptional": "Typy encji (opcjonalne)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Wolne",
|
|
331
329
|
"hoverDelayDescription": "{delay}ms opóźnienia przed pojawieniem się efektów najechania"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Zebrany kontekst",
|
|
334
|
+
"configureGenerationTitle": "Skonfiguruj generowanie",
|
|
335
|
+
"configureSearchTitle": "Konfiguruj wyszukiwanie",
|
|
336
|
+
"searchResultsTitle": "Wyniki wyszukiwania",
|
|
337
|
+
"annotationLabel": "Adnotacja",
|
|
338
|
+
"sourceResourceLabel": "Zasób źródłowy",
|
|
339
|
+
"motivationLabel": "Motywacja",
|
|
340
|
+
"sourceContextLabel": "Kontekst źródła",
|
|
341
|
+
"entityTypesLabel": "Typy encji",
|
|
342
|
+
"graphContextLabel": "Kontekst grafu",
|
|
343
|
+
"connectionsLabel": "Połączenia",
|
|
344
|
+
"citedByLabel": "Cytowane przez",
|
|
345
|
+
"siblingTypesLabel": "Typy pokrewne",
|
|
346
|
+
"loadingContext": "Zbieranie kontekstu...",
|
|
347
|
+
"failedContext": "Nie udało się zebrać kontekstu",
|
|
348
|
+
"cancel": "Anuluj",
|
|
349
|
+
"generate": "Generuj",
|
|
350
|
+
"compose": "Komponuj",
|
|
351
|
+
"back": "Wstecz",
|
|
352
|
+
"link": "Link",
|
|
353
|
+
"score": "Wynik",
|
|
354
|
+
"noResults": "Nie znaleziono wyników",
|
|
355
|
+
"resourceTitle": "Tytuł zasobu",
|
|
356
|
+
"resourceTitlePlaceholder": "Wpisz tytuł zasobu...",
|
|
357
|
+
"additionalInstructions": "Dodatkowe instrukcje",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Wpisz dodatkowe instrukcje...",
|
|
359
|
+
"language": "Język",
|
|
360
|
+
"languageHelp": "Język generowanej treści",
|
|
361
|
+
"creativity": "Kreatywność",
|
|
362
|
+
"creativityFocused": "Skupiona",
|
|
363
|
+
"creativityCreative": "Kreatywna",
|
|
364
|
+
"maxLength": "Maksymalna długość",
|
|
365
|
+
"maxLengthHelp": "Maksymalna liczba tokenów",
|
|
366
|
+
"maxResults": "Maksymalna liczba wyników",
|
|
367
|
+
"semanticScoring": "Ocena semantyczna",
|
|
368
|
+
"semanticScoringHelp": "Użyj AI do oceny wyników według semantycznego dopasowania",
|
|
369
|
+
"searching": "Wyszukiwanie...",
|
|
370
|
+
"search": "Szukaj"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/pt.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Referencia resolvida (vinculada)",
|
|
201
201
|
"open": "Abrir",
|
|
202
202
|
"unlink": "Desvincular",
|
|
203
|
-
"
|
|
204
|
-
"find": "Encontrar",
|
|
205
|
-
"create": "Criar",
|
|
203
|
+
"resolve": "Resolver referência",
|
|
206
204
|
"cancel": "Cancelar",
|
|
207
205
|
"createReference": "Criar Referencia",
|
|
208
206
|
"entityTypesOptional": "Tipos de Entidade (Opcional)",
|
|
@@ -270,7 +268,7 @@
|
|
|
270
268
|
"accessibilityTitle": "Acessibilidade",
|
|
271
269
|
"a11ySkipLinks": "Navegar para links de pular (quando no inicio da pagina)",
|
|
272
270
|
"a11yFollowLink": "Seguir link de pular",
|
|
273
|
-
"macNote": "Usando atalhos de teclado do Mac.
|
|
271
|
+
"macNote": "Usando atalhos de teclado do Mac. ⌘ e a tecla Command.",
|
|
274
272
|
"windowsNote": "Usando atalhos de teclado do Windows/Linux. Ctrl e a tecla Control.",
|
|
275
273
|
"footerHint": "Pressione {key} a qualquer momento para mostrar esta ajuda",
|
|
276
274
|
"close": "Fechar"
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Lento",
|
|
331
329
|
"hoverDelayDescription": "{delay}ms de atraso antes dos efeitos ao passar o mouse aparecerem"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Contexto Coletado",
|
|
334
|
+
"configureGenerationTitle": "Configurar Geração",
|
|
335
|
+
"configureSearchTitle": "Configurar pesquisa",
|
|
336
|
+
"searchResultsTitle": "Resultados da pesquisa",
|
|
337
|
+
"annotationLabel": "Anotação",
|
|
338
|
+
"sourceResourceLabel": "Recurso de origem",
|
|
339
|
+
"motivationLabel": "Motivação",
|
|
340
|
+
"sourceContextLabel": "Contexto de Origem",
|
|
341
|
+
"entityTypesLabel": "Tipos de Entidade",
|
|
342
|
+
"graphContextLabel": "Contexto do Grafo",
|
|
343
|
+
"connectionsLabel": "Conexões",
|
|
344
|
+
"citedByLabel": "Citado por",
|
|
345
|
+
"siblingTypesLabel": "Tipos Irmãos",
|
|
346
|
+
"loadingContext": "Coletando contexto...",
|
|
347
|
+
"failedContext": "Falha ao coletar contexto",
|
|
348
|
+
"cancel": "Cancelar",
|
|
349
|
+
"generate": "Gerar",
|
|
350
|
+
"compose": "Compor",
|
|
351
|
+
"back": "Voltar",
|
|
352
|
+
"link": "Link",
|
|
353
|
+
"score": "Pontuação",
|
|
354
|
+
"noResults": "Nenhum resultado encontrado",
|
|
355
|
+
"resourceTitle": "Título do Recurso",
|
|
356
|
+
"resourceTitlePlaceholder": "Insira o título do recurso...",
|
|
357
|
+
"additionalInstructions": "Instruções Adicionais",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Insira instruções adicionais...",
|
|
359
|
+
"language": "Idioma",
|
|
360
|
+
"languageHelp": "Idioma para o conteúdo gerado",
|
|
361
|
+
"creativity": "Criatividade",
|
|
362
|
+
"creativityFocused": "Focada",
|
|
363
|
+
"creativityCreative": "Criativa",
|
|
364
|
+
"maxLength": "Comprimento Máximo",
|
|
365
|
+
"maxLengthHelp": "Número máximo de tokens",
|
|
366
|
+
"maxResults": "Resultados Máximos",
|
|
367
|
+
"semanticScoring": "Pontuação Semântica",
|
|
368
|
+
"semanticScoringHelp": "Usar IA para pontuar resultados por relevância semântica",
|
|
369
|
+
"searching": "Pesquisando...",
|
|
370
|
+
"search": "Pesquisar"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/ro.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Referință rezolvată (legată)",
|
|
201
201
|
"open": "Deschide",
|
|
202
202
|
"unlink": "Deconectează",
|
|
203
|
-
"
|
|
204
|
-
"find": "Găsește",
|
|
205
|
-
"create": "Creează",
|
|
203
|
+
"resolve": "Rezolvă referința",
|
|
206
204
|
"cancel": "Anulare",
|
|
207
205
|
"createReference": "Creează referință",
|
|
208
206
|
"entityTypesOptional": "Tipuri de entitate (opțional)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Lentă",
|
|
331
329
|
"hoverDelayDescription": "Întârziere de {delay}ms înainte de apariția efectelor de trecere"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Context Colectat",
|
|
334
|
+
"configureGenerationTitle": "Configurare Generare",
|
|
335
|
+
"configureSearchTitle": "Configurare căutare",
|
|
336
|
+
"searchResultsTitle": "Rezultatele căutării",
|
|
337
|
+
"annotationLabel": "Adnotare",
|
|
338
|
+
"sourceResourceLabel": "Resursă sursă",
|
|
339
|
+
"motivationLabel": "Motivație",
|
|
340
|
+
"sourceContextLabel": "Context Sursă",
|
|
341
|
+
"entityTypesLabel": "Tipuri de Entități",
|
|
342
|
+
"graphContextLabel": "Context Graf",
|
|
343
|
+
"connectionsLabel": "Conexiuni",
|
|
344
|
+
"citedByLabel": "Citat de",
|
|
345
|
+
"siblingTypesLabel": "Tipuri Înrudite",
|
|
346
|
+
"loadingContext": "Se colectează contextul...",
|
|
347
|
+
"failedContext": "Colectarea contextului a eșuat",
|
|
348
|
+
"cancel": "Anulare",
|
|
349
|
+
"generate": "Generează",
|
|
350
|
+
"compose": "Compune",
|
|
351
|
+
"back": "Înapoi",
|
|
352
|
+
"link": "Link",
|
|
353
|
+
"score": "Scor",
|
|
354
|
+
"noResults": "Niciun rezultat găsit",
|
|
355
|
+
"resourceTitle": "Titlul Resursei",
|
|
356
|
+
"resourceTitlePlaceholder": "Introduceți titlul resursei...",
|
|
357
|
+
"additionalInstructions": "Instrucțiuni Suplimentare",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Introduceți instrucțiuni suplimentare...",
|
|
359
|
+
"language": "Limbă",
|
|
360
|
+
"languageHelp": "Limba pentru conținutul generat",
|
|
361
|
+
"creativity": "Creativitate",
|
|
362
|
+
"creativityFocused": "Concentrată",
|
|
363
|
+
"creativityCreative": "Creativă",
|
|
364
|
+
"maxLength": "Lungime Maximă",
|
|
365
|
+
"maxLengthHelp": "Număr maxim de jetoane",
|
|
366
|
+
"maxResults": "Rezultate Maxime",
|
|
367
|
+
"semanticScoring": "Evaluare Semantică",
|
|
368
|
+
"semanticScoringHelp": "Folosiți AI pentru a evalua rezultatele după relevanța semantică",
|
|
369
|
+
"searching": "Se caută...",
|
|
370
|
+
"search": "Caută"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/sv.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Löst referens (länkad)",
|
|
201
201
|
"open": "Öppna",
|
|
202
202
|
"unlink": "Ta bort länk",
|
|
203
|
-
"
|
|
204
|
-
"find": "Hitta",
|
|
205
|
-
"create": "Skapa",
|
|
203
|
+
"resolve": "Lös referens",
|
|
206
204
|
"cancel": "Avbryt",
|
|
207
205
|
"createReference": "Skapa referens",
|
|
208
206
|
"entityTypesOptional": "Entitetstyper (valfritt)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Långsam",
|
|
331
329
|
"hoverDelayDescription": "{delay}ms fördröjning innan hovringseffekter visas"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Samlad kontext",
|
|
334
|
+
"configureGenerationTitle": "Konfigurera generering",
|
|
335
|
+
"configureSearchTitle": "Konfigurera sökning",
|
|
336
|
+
"searchResultsTitle": "Sökresultat",
|
|
337
|
+
"annotationLabel": "Anteckning",
|
|
338
|
+
"sourceResourceLabel": "Källresurs",
|
|
339
|
+
"motivationLabel": "Motivation",
|
|
340
|
+
"sourceContextLabel": "Källkontext",
|
|
341
|
+
"entityTypesLabel": "Entitetstyper",
|
|
342
|
+
"graphContextLabel": "Grafkontext",
|
|
343
|
+
"connectionsLabel": "Anslutningar",
|
|
344
|
+
"citedByLabel": "Citerad av",
|
|
345
|
+
"siblingTypesLabel": "Systertyper",
|
|
346
|
+
"loadingContext": "Samlar kontext...",
|
|
347
|
+
"failedContext": "Misslyckades med att samla kontext",
|
|
348
|
+
"cancel": "Avbryt",
|
|
349
|
+
"generate": "Generera",
|
|
350
|
+
"compose": "Komponera",
|
|
351
|
+
"back": "Tillbaka",
|
|
352
|
+
"link": "Länk",
|
|
353
|
+
"score": "Poäng",
|
|
354
|
+
"noResults": "Inga resultat hittades",
|
|
355
|
+
"resourceTitle": "Resursnamn",
|
|
356
|
+
"resourceTitlePlaceholder": "Ange resursnamn...",
|
|
357
|
+
"additionalInstructions": "Ytterligare instruktioner",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Ange ytterligare instruktioner...",
|
|
359
|
+
"language": "Språk",
|
|
360
|
+
"languageHelp": "Språk för genererat innehåll",
|
|
361
|
+
"creativity": "Kreativitet",
|
|
362
|
+
"creativityFocused": "Fokuserad",
|
|
363
|
+
"creativityCreative": "Kreativ",
|
|
364
|
+
"maxLength": "Max längd",
|
|
365
|
+
"maxLengthHelp": "Maximalt antal tokens",
|
|
366
|
+
"maxResults": "Max resultat",
|
|
367
|
+
"semanticScoring": "Semantisk poängsättning",
|
|
368
|
+
"semanticScoringHelp": "Använd AI för att poängsätta resultat efter semantisk relevans",
|
|
369
|
+
"searching": "Söker...",
|
|
370
|
+
"search": "Sök"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/th.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "การอ้างอิงที่เชื่อมโยงแล้ว (เชื่อมโยง)",
|
|
201
201
|
"open": "เปิด",
|
|
202
202
|
"unlink": "ยกเลิกการเชื่อมโยง",
|
|
203
|
-
"
|
|
204
|
-
"find": "ค้นหา",
|
|
205
|
-
"create": "สร้าง",
|
|
203
|
+
"resolve": "แก้ไขการอ้างอิง",
|
|
206
204
|
"cancel": "ยกเลิก",
|
|
207
205
|
"createReference": "สร้างการอ้างอิง",
|
|
208
206
|
"entityTypesOptional": "ประเภทเอนทิตี (ไม่บังคับ)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "ช้า",
|
|
331
329
|
"hoverDelayDescription": "ความหน่วง {delay} มิลลิวินาทีก่อนที่เอฟเฟกต์วางเมาส์จะปรากฏ"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "บริบทที่รวบรวมแล้ว",
|
|
334
|
+
"configureGenerationTitle": "กำหนดค่าการสร้าง",
|
|
335
|
+
"configureSearchTitle": "กำหนดค่าการค้นหา",
|
|
336
|
+
"searchResultsTitle": "ผลการค้นหา",
|
|
337
|
+
"annotationLabel": "คำอธิบายประกอบ",
|
|
338
|
+
"sourceResourceLabel": "ทรัพยากรต้นทาง",
|
|
339
|
+
"motivationLabel": "แรงจูงใจ",
|
|
340
|
+
"sourceContextLabel": "บริบทแหล่งที่มา",
|
|
341
|
+
"entityTypesLabel": "ประเภทเอนทิตี",
|
|
342
|
+
"graphContextLabel": "บริบทกราฟ",
|
|
343
|
+
"connectionsLabel": "การเชื่อมต่อ",
|
|
344
|
+
"citedByLabel": "อ้างอิงโดย",
|
|
345
|
+
"siblingTypesLabel": "ประเภทพี่น้อง",
|
|
346
|
+
"loadingContext": "กำลังรวบรวมบริบท...",
|
|
347
|
+
"failedContext": "ไม่สามารถรวบรวมบริบทได้",
|
|
348
|
+
"cancel": "ยกเลิก",
|
|
349
|
+
"generate": "สร้าง",
|
|
350
|
+
"compose": "เรียบเรียง",
|
|
351
|
+
"back": "กลับ",
|
|
352
|
+
"link": "ลิงก์",
|
|
353
|
+
"score": "คะแนน",
|
|
354
|
+
"noResults": "ไม่พบผลลัพธ์",
|
|
355
|
+
"resourceTitle": "ชื่อทรัพยากร",
|
|
356
|
+
"resourceTitlePlaceholder": "ป้อนชื่อทรัพยากร...",
|
|
357
|
+
"additionalInstructions": "คำแนะนำเพิ่มเติม",
|
|
358
|
+
"additionalInstructionsPlaceholder": "ป้อนคำแนะนำเพิ่มเติม...",
|
|
359
|
+
"language": "ภาษา",
|
|
360
|
+
"languageHelp": "ภาษาสำหรับเนื้อหาที่สร้าง",
|
|
361
|
+
"creativity": "ความคิดสร้างสรรค์",
|
|
362
|
+
"creativityFocused": "มุ่งเน้น",
|
|
363
|
+
"creativityCreative": "สร้างสรรค์",
|
|
364
|
+
"maxLength": "ความยาวสูงสุด",
|
|
365
|
+
"maxLengthHelp": "จำนวนโทเค็นสูงสุด",
|
|
366
|
+
"maxResults": "ผลลัพธ์สูงสุด",
|
|
367
|
+
"semanticScoring": "การให้คะแนนเชิงความหมาย",
|
|
368
|
+
"semanticScoringHelp": "ใช้ AI เพื่อให้คะแนนผลลัพธ์ตามความเกี่ยวข้องเชิงความหมาย",
|
|
369
|
+
"searching": "กำลังค้นหา...",
|
|
370
|
+
"search": "ค้นหา"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/tr.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Çözümlenmiş referans (bağlı)",
|
|
201
201
|
"open": "Aç",
|
|
202
202
|
"unlink": "Bağlantıyı Kaldır",
|
|
203
|
-
"
|
|
204
|
-
"find": "Bul",
|
|
205
|
-
"create": "Oluştur",
|
|
203
|
+
"resolve": "Referansı çöz",
|
|
206
204
|
"cancel": "İptal",
|
|
207
205
|
"createReference": "Referans Oluştur",
|
|
208
206
|
"entityTypesOptional": "Varlık Türleri (İsteğe Bağlı)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Yavaş",
|
|
331
329
|
"hoverDelayDescription": "Üzerine gelme efektleri görünmeden önce {delay}ms gecikme"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Toplanan Bağlam",
|
|
334
|
+
"configureGenerationTitle": "Oluşturmayı Yapılandır",
|
|
335
|
+
"configureSearchTitle": "Aramayı yapılandır",
|
|
336
|
+
"searchResultsTitle": "Arama sonuçları",
|
|
337
|
+
"annotationLabel": "Açıklama",
|
|
338
|
+
"sourceResourceLabel": "Kaynak kaynak",
|
|
339
|
+
"motivationLabel": "Motivasyon",
|
|
340
|
+
"sourceContextLabel": "Kaynak Bağlamı",
|
|
341
|
+
"entityTypesLabel": "Varlık Türleri",
|
|
342
|
+
"graphContextLabel": "Grafik Bağlamı",
|
|
343
|
+
"connectionsLabel": "Bağlantılar",
|
|
344
|
+
"citedByLabel": "Alıntılayan",
|
|
345
|
+
"siblingTypesLabel": "Kardeş Türler",
|
|
346
|
+
"loadingContext": "Bağlam toplanıyor...",
|
|
347
|
+
"failedContext": "Bağlam toplanamadı",
|
|
348
|
+
"cancel": "İptal",
|
|
349
|
+
"generate": "Oluştur",
|
|
350
|
+
"compose": "Derle",
|
|
351
|
+
"back": "Geri",
|
|
352
|
+
"link": "Bağlantı",
|
|
353
|
+
"score": "Puan",
|
|
354
|
+
"noResults": "Sonuç bulunamadı",
|
|
355
|
+
"resourceTitle": "Kaynak Başlığı",
|
|
356
|
+
"resourceTitlePlaceholder": "Kaynak başlığını girin...",
|
|
357
|
+
"additionalInstructions": "Ek Talimatlar",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Ek talimatları girin...",
|
|
359
|
+
"language": "Dil",
|
|
360
|
+
"languageHelp": "Oluşturulan içeriğin dili",
|
|
361
|
+
"creativity": "Yaratıcılık",
|
|
362
|
+
"creativityFocused": "Odaklı",
|
|
363
|
+
"creativityCreative": "Yaratıcı",
|
|
364
|
+
"maxLength": "Maksimum Uzunluk",
|
|
365
|
+
"maxLengthHelp": "Maksimum jeton sayısı",
|
|
366
|
+
"maxResults": "Maksimum Sonuç",
|
|
367
|
+
"semanticScoring": "Anlamsal Puanlama",
|
|
368
|
+
"semanticScoringHelp": "Sonuçları anlamsal alaka düzeyine göre puanlamak için yapay zeka kullanın",
|
|
369
|
+
"searching": "Aranıyor...",
|
|
370
|
+
"search": "Ara"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/uk.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Розв'язане посилання (прив'язано)",
|
|
201
201
|
"open": "Відкрити",
|
|
202
202
|
"unlink": "Від'єднати",
|
|
203
|
-
"
|
|
204
|
-
"find": "Знайти",
|
|
205
|
-
"create": "Створити",
|
|
203
|
+
"resolve": "Вирішити посилання",
|
|
206
204
|
"cancel": "Скасувати",
|
|
207
205
|
"createReference": "Створити посилання",
|
|
208
206
|
"entityTypesOptional": "Типи сутностей (необов'язково)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Повільна",
|
|
331
329
|
"hoverDelayDescription": "Затримка {delay}мс перед появою ефектів наведення"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Зібраний контекст",
|
|
334
|
+
"configureGenerationTitle": "Налаштувати генерацію",
|
|
335
|
+
"configureSearchTitle": "Налаштувати пошук",
|
|
336
|
+
"searchResultsTitle": "Результати пошуку",
|
|
337
|
+
"annotationLabel": "Анотація",
|
|
338
|
+
"sourceResourceLabel": "Вихідний ресурс",
|
|
339
|
+
"motivationLabel": "Мотивація",
|
|
340
|
+
"sourceContextLabel": "Контекст джерела",
|
|
341
|
+
"entityTypesLabel": "Типи сутностей",
|
|
342
|
+
"graphContextLabel": "Контекст графа",
|
|
343
|
+
"connectionsLabel": "Зв'язки",
|
|
344
|
+
"citedByLabel": "Цитується",
|
|
345
|
+
"siblingTypesLabel": "Споріднені типи",
|
|
346
|
+
"loadingContext": "Збирається контекст...",
|
|
347
|
+
"failedContext": "Не вдалося зібрати контекст",
|
|
348
|
+
"cancel": "Скасувати",
|
|
349
|
+
"generate": "Згенерувати",
|
|
350
|
+
"compose": "Скласти",
|
|
351
|
+
"back": "Назад",
|
|
352
|
+
"link": "Посилання",
|
|
353
|
+
"score": "Оцінка",
|
|
354
|
+
"noResults": "Результатів не знайдено",
|
|
355
|
+
"resourceTitle": "Назва ресурсу",
|
|
356
|
+
"resourceTitlePlaceholder": "Введіть назву ресурсу...",
|
|
357
|
+
"additionalInstructions": "Додаткові інструкції",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Введіть додаткові інструкції...",
|
|
359
|
+
"language": "Мова",
|
|
360
|
+
"languageHelp": "Мова згенерованого вмісту",
|
|
361
|
+
"creativity": "Креативність",
|
|
362
|
+
"creativityFocused": "Зосереджена",
|
|
363
|
+
"creativityCreative": "Креативна",
|
|
364
|
+
"maxLength": "Максимальна довжина",
|
|
365
|
+
"maxLengthHelp": "Максимальна кількість токенів",
|
|
366
|
+
"maxResults": "Максимум результатів",
|
|
367
|
+
"semanticScoring": "Семантична оцінка",
|
|
368
|
+
"semanticScoringHelp": "Використовувати ШІ для оцінки результатів за семантичною релевантністю",
|
|
369
|
+
"searching": "Пошук...",
|
|
370
|
+
"search": "Пошук"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/vi.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "Tham chiếu đã phân giải (đã liên kết)",
|
|
201
201
|
"open": "Mở",
|
|
202
202
|
"unlink": "Hủy liên kết",
|
|
203
|
-
"
|
|
204
|
-
"find": "Tìm",
|
|
205
|
-
"create": "Tạo",
|
|
203
|
+
"resolve": "Giải quyết tham chiếu",
|
|
206
204
|
"cancel": "Hủy",
|
|
207
205
|
"createReference": "Tạo tham chiếu",
|
|
208
206
|
"entityTypesOptional": "Loại thực thể (Tùy chọn)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "Chậm",
|
|
331
329
|
"hoverDelayDescription": "Độ trễ {delay}ms trước khi hiệu ứng di chuột xuất hiện"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "Ngữ cảnh đã thu thập",
|
|
334
|
+
"configureGenerationTitle": "Cấu hình Tạo sinh",
|
|
335
|
+
"configureSearchTitle": "Cấu hình tìm kiếm",
|
|
336
|
+
"searchResultsTitle": "Kết quả tìm kiếm",
|
|
337
|
+
"annotationLabel": "Chú thích",
|
|
338
|
+
"sourceResourceLabel": "Tài nguyên nguồn",
|
|
339
|
+
"motivationLabel": "Động lực",
|
|
340
|
+
"sourceContextLabel": "Ngữ cảnh Nguồn",
|
|
341
|
+
"entityTypesLabel": "Loại Thực thể",
|
|
342
|
+
"graphContextLabel": "Ngữ cảnh Đồ thị",
|
|
343
|
+
"connectionsLabel": "Kết nối",
|
|
344
|
+
"citedByLabel": "Được trích dẫn bởi",
|
|
345
|
+
"siblingTypesLabel": "Loại Anh em",
|
|
346
|
+
"loadingContext": "Đang thu thập ngữ cảnh...",
|
|
347
|
+
"failedContext": "Không thể thu thập ngữ cảnh",
|
|
348
|
+
"cancel": "Hủy",
|
|
349
|
+
"generate": "Tạo sinh",
|
|
350
|
+
"compose": "Soạn",
|
|
351
|
+
"back": "Quay lại",
|
|
352
|
+
"link": "Liên kết",
|
|
353
|
+
"score": "Điểm",
|
|
354
|
+
"noResults": "Không tìm thấy kết quả",
|
|
355
|
+
"resourceTitle": "Tiêu đề Tài nguyên",
|
|
356
|
+
"resourceTitlePlaceholder": "Nhập tiêu đề tài nguyên...",
|
|
357
|
+
"additionalInstructions": "Hướng dẫn Bổ sung",
|
|
358
|
+
"additionalInstructionsPlaceholder": "Nhập hướng dẫn bổ sung...",
|
|
359
|
+
"language": "Ngôn ngữ",
|
|
360
|
+
"languageHelp": "Ngôn ngữ cho nội dung được tạo",
|
|
361
|
+
"creativity": "Sáng tạo",
|
|
362
|
+
"creativityFocused": "Tập trung",
|
|
363
|
+
"creativityCreative": "Sáng tạo",
|
|
364
|
+
"maxLength": "Độ dài Tối đa",
|
|
365
|
+
"maxLengthHelp": "Số lượng token tối đa",
|
|
366
|
+
"maxResults": "Kết quả Tối đa",
|
|
367
|
+
"semanticScoring": "Chấm điểm Ngữ nghĩa",
|
|
368
|
+
"semanticScoringHelp": "Sử dụng AI để chấm điểm kết quả theo mức độ liên quan ngữ nghĩa",
|
|
369
|
+
"searching": "Đang tìm kiếm...",
|
|
370
|
+
"search": "Tìm kiếm"
|
|
371
|
+
}
|
|
334
372
|
}
|
package/translations/zh.json
CHANGED
|
@@ -200,9 +200,7 @@
|
|
|
200
200
|
"resolved": "已解析引用(已链接)",
|
|
201
201
|
"open": "打开",
|
|
202
202
|
"unlink": "取消链接",
|
|
203
|
-
"
|
|
204
|
-
"find": "查找",
|
|
205
|
-
"create": "创建",
|
|
203
|
+
"resolve": "解析引用",
|
|
206
204
|
"cancel": "取消",
|
|
207
205
|
"createReference": "创建引用",
|
|
208
206
|
"entityTypesOptional": "实体类型(可选)",
|
|
@@ -330,5 +328,45 @@
|
|
|
330
328
|
"hoverDelaySlow": "慢速",
|
|
331
329
|
"hoverDelayDescription": "悬停效果出现前延迟 {delay}ms"
|
|
332
330
|
},
|
|
333
|
-
"AnnotateView": {}
|
|
331
|
+
"AnnotateView": {},
|
|
332
|
+
"ReferenceWizard": {
|
|
333
|
+
"gatherTitle": "已收集的上下文",
|
|
334
|
+
"configureGenerationTitle": "配置生成",
|
|
335
|
+
"configureSearchTitle": "配置搜索",
|
|
336
|
+
"searchResultsTitle": "搜索结果",
|
|
337
|
+
"annotationLabel": "注释",
|
|
338
|
+
"sourceResourceLabel": "源资源",
|
|
339
|
+
"motivationLabel": "动机",
|
|
340
|
+
"sourceContextLabel": "源上下文",
|
|
341
|
+
"entityTypesLabel": "实体类型",
|
|
342
|
+
"graphContextLabel": "图谱上下文",
|
|
343
|
+
"connectionsLabel": "连接",
|
|
344
|
+
"citedByLabel": "被引用",
|
|
345
|
+
"siblingTypesLabel": "同级类型",
|
|
346
|
+
"loadingContext": "正在收集上下文...",
|
|
347
|
+
"failedContext": "收集上下文失败",
|
|
348
|
+
"cancel": "取消",
|
|
349
|
+
"generate": "生成",
|
|
350
|
+
"compose": "编写",
|
|
351
|
+
"back": "返回",
|
|
352
|
+
"link": "链接",
|
|
353
|
+
"score": "评分",
|
|
354
|
+
"noResults": "未找到结果",
|
|
355
|
+
"resourceTitle": "资源标题",
|
|
356
|
+
"resourceTitlePlaceholder": "输入资源标题...",
|
|
357
|
+
"additionalInstructions": "附加说明",
|
|
358
|
+
"additionalInstructionsPlaceholder": "输入附加说明...",
|
|
359
|
+
"language": "语言",
|
|
360
|
+
"languageHelp": "生成内容的语言",
|
|
361
|
+
"creativity": "创造力",
|
|
362
|
+
"creativityFocused": "专注",
|
|
363
|
+
"creativityCreative": "创造性",
|
|
364
|
+
"maxLength": "最大长度",
|
|
365
|
+
"maxLengthHelp": "最大令牌数",
|
|
366
|
+
"maxResults": "最大结果数",
|
|
367
|
+
"semanticScoring": "语义评分",
|
|
368
|
+
"semanticScoringHelp": "使用 AI 按语义相关性对结果进行评分",
|
|
369
|
+
"searching": "搜索中...",
|
|
370
|
+
"search": "搜索"
|
|
371
|
+
}
|
|
334
372
|
}
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|