@semiont/react-ui 0.5.27 → 0.5.29
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/README.md +3 -3
- package/dist/{PdfAnnotationCanvas.client-EVUPTUWZ.js → PdfAnnotationCanvas.client-LSH3PZPY.js} +32 -5
- package/dist/{ar-OU3DQGC6.js → ar-AZBRADEB.js} +43 -23
- package/dist/{bn-PHWCR6AZ.js → bn-CCEW6AOS.js} +43 -23
- package/dist/{chunk-VXASXU4K.js → chunk-3ZBKCWUZ.js} +1 -1
- package/dist/{chunk-5VDTWRXJ.js → chunk-G4VHL4UA.js} +31 -31
- package/dist/{chunk-PCRRBU7H.js → chunk-SDKFZLEX.js} +43 -23
- package/dist/{cs-NEXYZ62I.js → cs-HXPF2CTE.js} +43 -23
- package/dist/{da-FAT43YCU.js → da-K5NTK7LH.js} +43 -23
- package/dist/{de-KRQ3WBCU.js → de-GMRQEDZI.js} +43 -23
- package/dist/{el-Q4IU3EKC.js → el-EUB4CI4G.js} +43 -23
- package/dist/{en-2KADE7N4.js → en-R5XA26NF.js} +2 -2
- package/dist/{es-2IO3R2MK.js → es-Z32DAZ6W.js} +43 -23
- package/dist/{fa-Q5GOQFXX.js → fa-G7HN6B32.js} +43 -23
- package/dist/{fi-R6NMRWBE.js → fi-3YBLZO7I.js} +43 -23
- package/dist/{fr-QY4D5E6J.js → fr-VUBH7BBS.js} +43 -23
- package/dist/{he-X6Y77XHY.js → he-WQQEY26B.js} +43 -23
- package/dist/{hi-XL7IOEQM.js → hi-HJZ6W4JB.js} +43 -23
- package/dist/{id-QZ4ZZS67.js → id-ZOGZ37MI.js} +43 -23
- package/dist/index.css +279 -74
- package/dist/index.d.ts +318 -393
- package/dist/index.js +2619 -2687
- package/dist/{it-ME2Q7OB6.js → it-DT6UW66F.js} +43 -23
- package/dist/{ja-HX7QASRI.js → ja-RUKQCOLO.js} +43 -23
- package/dist/{ko-EQO5AHAV.js → ko-ZH5ADKZM.js} +43 -23
- package/dist/{ms-UILFSF3I.js → ms-Y2AFPZTU.js} +43 -23
- package/dist/{nl-NNI45PMK.js → nl-OQEWIXNA.js} +43 -23
- package/dist/{no-MAL5F6P6.js → no-KPAYJZWY.js} +43 -23
- package/dist/{pl-4RMY6JAJ.js → pl-WSXK2UUD.js} +43 -23
- package/dist/{pt-VQH2X3QQ.js → pt-NWRJRUCK.js} +43 -23
- package/dist/{ro-XXCQO2OG.js → ro-3CGVMOC6.js} +43 -23
- package/dist/{sv-7Z6EJ6U4.js → sv-HGSEBA7S.js} +43 -23
- package/dist/test-utils.js +16 -7
- package/dist/{th-L3DXXYVQ.js → th-NZ4G352Z.js} +43 -23
- package/dist/{tr-P3DFVLFJ.js → tr-LGGS4DLW.js} +43 -23
- package/dist/{uk-7C5D3PXS.js → uk-AIX536L4.js} +43 -23
- package/dist/{vi-ZLTLEO7P.js → vi-V6CVQZLQ.js} +43 -23
- package/dist/{zh-5FHVWDIN.js → zh-AGKPGI3L.js} +43 -23
- package/package.json +16 -15
- package/src/components/AssistProgress.tsx +36 -2
- package/src/components/CodeMirrorRenderer.tsx +8 -8
- package/src/components/StatusDisplay.tsx +13 -13
- package/src/components/__tests__/AssistProgress.test.tsx +59 -0
- package/src/components/__tests__/StatusDisplay.test.tsx +9 -9
- package/src/components/modals/ComposeStep.tsx +233 -0
- package/src/components/modals/ConfigureGatherStep.tsx +10 -18
- package/src/components/modals/ConfigureGenerationStep.tsx +178 -34
- package/src/components/modals/ConfigureSearchStep.tsx +19 -0
- package/src/components/modals/ContextSummary.tsx +185 -72
- package/src/components/modals/CorpusPane.tsx +75 -0
- package/src/components/modals/DiscardPrompt.tsx +38 -0
- package/src/components/modals/GatherContextStep.tsx +237 -107
- package/src/components/modals/ReferenceWizardModal.tsx +252 -59
- package/src/components/modals/ResourceGenerateModal.tsx +225 -112
- package/src/components/modals/SearchModal.css +337 -101
- package/src/components/modals/SearchResultsStep.tsx +61 -68
- package/src/components/modals/WizardFooter.tsx +7 -1
- package/src/components/modals/__tests__/ComposeStep.test.tsx +152 -0
- package/src/components/modals/__tests__/ConfigureGatherStep.test.tsx +14 -26
- package/src/components/modals/__tests__/ConfigureGenerationStep.test.tsx +206 -8
- package/src/components/modals/__tests__/ConfigureSearchStep.test.tsx +24 -1
- package/src/components/modals/__tests__/GatherContextStep.resource.test.tsx +463 -25
- package/src/components/modals/__tests__/ReferenceWizardModal.test.tsx +442 -39
- package/src/components/modals/__tests__/ResourceGenerateModal.test.tsx +300 -86
- package/src/components/modals/__tests__/SearchResultsStep.test.tsx +61 -0
- package/src/components/modals/__tests__/WizardFooter.test.tsx +116 -9
- package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +34 -1
- package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +38 -1
- package/src/components/resource/AnnotateView.tsx +3 -3
- package/src/components/resource/BrowseView.tsx +8 -8
- package/src/components/resource/DownloadFileLink.tsx +1 -1
- package/src/components/resource/ResourceViewer.tsx +4 -4
- package/src/components/resource/__tests__/AnnotateView.embeddable.test.tsx +1 -1
- package/src/components/resource/__tests__/BrowseView.embeddable.test.tsx +1 -1
- package/src/components/resource/__tests__/BrowseView.reference-hover.test.tsx +1 -1
- package/src/components/resource/__tests__/BrowseView.test.tsx +11 -11
- package/src/components/resource/__tests__/download-link.test.tsx +6 -6
- package/src/components/resource/annotate-renderers.tsx +3 -3
- package/src/components/resource/panels/AssistSection.css +35 -0
- package/src/components/resource/panels/ReferenceEntry.tsx +11 -4
- package/src/components/resource/panels/ReferencesPanel.tsx +9 -1
- package/src/components/resource/panels/ResourceInfoPanel.tsx +89 -20
- package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +7 -2
- package/src/components/resource/panels/__tests__/ReferenceEntry.test.tsx +41 -0
- package/src/components/resource/panels/__tests__/ReferencesPanel.observable-flow.test.tsx +1 -1
- package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +84 -3
- package/src/components/resource/panels/__tests__/ResourceInfoPanel.test.tsx +149 -7
- package/src/features/auth/__tests__/SignInForm.a11y.test.tsx +12 -12
- package/src/features/auth/components/SignInForm.tsx +53 -53
- package/src/features/auth-welcome/state/__tests__/welcome-state-unit.test.ts +2 -2
- package/src/features/resource-compose/__tests__/ResourceComposePage.test.tsx +0 -65
- package/src/features/resource-compose/components/ResourceComposePage.tsx +35 -133
- package/src/features/resource-compose/state/__tests__/compose-page-state-unit.test.ts +1 -100
- package/src/features/resource-compose/state/compose-page-state-unit.ts +5 -57
- package/src/features/resource-discovery/__tests__/ResourceDiscoveryPage.test.tsx +1 -1
- package/src/features/resource-discovery/components/ResourceDiscoveryPage.tsx +2 -2
- package/src/features/resource-discovery/state/discover-state-unit.ts +1 -1
- package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +73 -17
- package/src/features/resource-viewer/__tests__/generation-options.test.ts +53 -0
- package/src/features/resource-viewer/components/ResourceViewerPage.tsx +148 -83
- package/src/features/resource-viewer/generation-options.ts +29 -0
- package/src/styles/core/forms.css +35 -8
- package/src/styles/features/resource-viewer.css +0 -22
- package/src/styles/features/resource.css +0 -4
- package/src/styles/index.css +0 -1
- package/translations/ar.json +42 -22
- package/translations/bn.json +42 -22
- package/translations/cs.json +42 -22
- package/translations/da.json +42 -22
- package/translations/de.json +42 -22
- package/translations/el.json +42 -22
- package/translations/en.json +42 -22
- package/translations/es.json +42 -22
- package/translations/fa.json +42 -22
- package/translations/fi.json +42 -22
- package/translations/fr.json +42 -22
- package/translations/he.json +42 -22
- package/translations/hi.json +42 -22
- package/translations/id.json +42 -22
- package/translations/it.json +42 -22
- package/translations/ja.json +42 -22
- package/translations/ko.json +42 -22
- package/translations/ms.json +42 -22
- package/translations/nl.json +42 -22
- package/translations/no.json +42 -22
- package/translations/pl.json +42 -22
- package/translations/pt.json +42 -22
- package/translations/ro.json +42 -22
- package/translations/sv.json +42 -22
- package/translations/th.json +42 -22
- package/translations/tr.json +42 -22
- package/translations/uk.json +42 -22
- package/translations/vi.json +42 -22
- package/translations/zh.json +42 -22
- package/dist/PdfAnnotationCanvas.client-EVUPTUWZ.js.map +0 -1
- package/dist/PdfAnnotationCanvas.client-TGDPPGXJ.css.map +0 -1
- package/dist/ar-OU3DQGC6.js.map +0 -1
- package/dist/bn-PHWCR6AZ.js.map +0 -1
- package/dist/chunk-5VDTWRXJ.js.map +0 -1
- package/dist/chunk-BTUG3VJJ.js.map +0 -1
- package/dist/chunk-O23TLLXW.js.map +0 -1
- package/dist/chunk-PCRRBU7H.js.map +0 -1
- package/dist/chunk-QT7LYM72.js.map +0 -1
- package/dist/chunk-VXASXU4K.js.map +0 -1
- package/dist/cs-NEXYZ62I.js.map +0 -1
- package/dist/da-FAT43YCU.js.map +0 -1
- package/dist/de-KRQ3WBCU.js.map +0 -1
- package/dist/el-Q4IU3EKC.js.map +0 -1
- package/dist/en-2KADE7N4.js.map +0 -1
- package/dist/es-2IO3R2MK.js.map +0 -1
- package/dist/fa-Q5GOQFXX.js.map +0 -1
- package/dist/fi-R6NMRWBE.js.map +0 -1
- package/dist/fr-QY4D5E6J.js.map +0 -1
- package/dist/he-X6Y77XHY.js.map +0 -1
- package/dist/hi-XL7IOEQM.js.map +0 -1
- package/dist/id-QZ4ZZS67.js.map +0 -1
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integrations/css-modules-helper.js.map +0 -1
- package/dist/integrations/styled-components-theme.js.map +0 -1
- package/dist/it-ME2Q7OB6.js.map +0 -1
- package/dist/ja-HX7QASRI.js.map +0 -1
- package/dist/ko-EQO5AHAV.js.map +0 -1
- package/dist/ms-UILFSF3I.js.map +0 -1
- package/dist/nl-NNI45PMK.js.map +0 -1
- package/dist/no-MAL5F6P6.js.map +0 -1
- package/dist/pl-4RMY6JAJ.js.map +0 -1
- package/dist/pt-VQH2X3QQ.js.map +0 -1
- package/dist/ro-XXCQO2OG.js.map +0 -1
- package/dist/sv-7Z6EJ6U4.js.map +0 -1
- package/dist/test-utils.css.map +0 -1
- package/dist/test-utils.js.map +0 -1
- package/dist/th-L3DXXYVQ.js.map +0 -1
- package/dist/tr-P3DFVLFJ.js.map +0 -1
- package/dist/uk-7C5D3PXS.js.map +0 -1
- package/dist/vi-ZLTLEO7P.js.map +0 -1
- package/dist/zh-5FHVWDIN.js.map +0 -1
- package/src/components/modals/ResourceSearchModal.tsx +0 -224
- package/src/components/modals/__tests__/ResourceSearchModal.test.tsx +0 -163
- package/src/features/admin-exchange/__tests__/AdminExchangePage.test.tsx +0 -137
- package/src/features/admin-exchange/__tests__/ExportCard.test.tsx +0 -41
- package/src/features/admin-exchange/__tests__/ImportCard.test.tsx +0 -148
- package/src/features/admin-exchange/__tests__/ImportProgress.test.tsx +0 -117
- package/src/features/admin-exchange/components/AdminExchangePage.tsx +0 -117
- package/src/features/admin-exchange/components/ExportCard.tsx +0 -35
- package/src/features/admin-exchange/components/ImportCard.tsx +0 -183
- package/src/features/admin-exchange/components/ImportProgress.tsx +0 -80
- package/src/features/admin-exchange/state/__tests__/exchange-state-unit.test.ts +0 -185
- package/src/features/admin-exchange/state/exchange-state-unit.ts +0 -133
- package/src/features/moderation-linked-data/__tests__/LinkedDataPage.test.tsx +0 -118
- package/src/features/moderation-linked-data/components/LinkedDataPage.tsx +0 -118
- package/src/styles/features/exchange.css +0 -374
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as _semiont_react_ui from '@semiont/react-ui';
|
|
2
2
|
import { BrowseMediaRenderers as BrowseMediaRenderers$1, AnnotateMediaRenderers as AnnotateMediaRenderers$1 } from '@semiont/react-ui';
|
|
3
|
-
import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit,
|
|
3
|
+
import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit, CollaboratorEntry, EventMap, DiscoveredKB, AnnotationId, AnchorStrategy, AnchorConfidence, StoredEventLike, ConnectionState, GatheredContext, AccessToken } from '@semiont/core';
|
|
4
4
|
export { Annotation } from '@semiont/core';
|
|
5
5
|
import * as React$1 from 'react';
|
|
6
6
|
import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo, MouseEvent, Ref } from 'react';
|
|
7
7
|
import * as _codemirror_state from '@codemirror/state';
|
|
8
8
|
import { HighlightStyle } from '@codemirror/language';
|
|
9
9
|
import { WidgetType } from '@codemirror/view';
|
|
10
|
-
import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, OpenResource, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
|
|
11
|
-
export { BeckonStateUnit, GatherStateUnit,
|
|
10
|
+
import { SemiontClient, SemiontSession, DiscoveryTransport, DiscoveryState, SemiontBrowser, SessionStorage, SessionFactory, YieldOutcome, OpenResource, GenerationOptions, ResourceGatherOptions, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
|
|
11
|
+
export { BeckonStateUnit, GatherStateUnit, GenerationOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, TagSchema, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
|
|
12
12
|
import { Observable } from 'rxjs';
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -558,12 +558,13 @@ type SelectorType = 'fragment' | 'svg' | 'text';
|
|
|
558
558
|
* This set is the host-facing CONTRACT for "which shapes can this medium
|
|
559
559
|
* draw" — gate shape UI on it directly.
|
|
560
560
|
*
|
|
561
|
-
*
|
|
562
|
-
*
|
|
563
|
-
*
|
|
564
|
-
*
|
|
565
|
-
*
|
|
566
|
-
*
|
|
561
|
+
* The registry's anchoring model decides, never the type name: a spatially
|
|
562
|
+
* anchored medium draws what its renderer can carry — rectangles only for
|
|
563
|
+
* PDF (FragmentSelector, RFC 3778 viewrect; circle and polygon would need an
|
|
564
|
+
* SvgSelector, which loses page context), all three for images (SvgSelector).
|
|
565
|
+
* Everything else draws nothing — text media anchor by character offsets and
|
|
566
|
+
* no selector there can carry a shape, and storage-tier rows are not
|
|
567
|
+
* annotated at all.
|
|
567
568
|
*
|
|
568
569
|
* @param mediaType - MIME type of the resource (e.g., 'application/pdf', 'image/png')
|
|
569
570
|
* @returns Array of supported shape types for annotation
|
|
@@ -578,7 +579,17 @@ declare function getSupportedShapes(mediaType: string | undefined | null): Shape
|
|
|
578
579
|
*/
|
|
579
580
|
declare function isShapeSupported(mediaType: string | undefined | null, shape: ShapeType): boolean;
|
|
580
581
|
/**
|
|
581
|
-
* Get the selector type used for a given media type
|
|
582
|
+
* Get the selector type used for a given media type.
|
|
583
|
+
*
|
|
584
|
+
* Keyed off the registry's anchoring model, in step with
|
|
585
|
+
* `getSupportedShapes`: spatial + PDF render → FragmentSelector (RFC 3778),
|
|
586
|
+
* spatial + image render → SvgSelector.
|
|
587
|
+
*
|
|
588
|
+
* Everything else answers 'text' — text media because they genuinely anchor
|
|
589
|
+
* by character offset, storage-tier rows and registry misses because
|
|
590
|
+
* `SelectorType` has no "not annotatable" member. That catch-all is harmless
|
|
591
|
+
* rather than a claim: `getSupportedShapes` offers those types no shapes, and
|
|
592
|
+
* the write path refuses them outright (MEDIA-CAPABILITY-DISPATCH D6).
|
|
582
593
|
*
|
|
583
594
|
* @param mediaType - MIME type of the resource
|
|
584
595
|
* @returns Selector type (fragment, svg, or text)
|
|
@@ -612,7 +623,7 @@ declare function saveSelectedShapeForSelectorType(selectorType: SelectorType, sh
|
|
|
612
623
|
* `<a download>` — none of which can attach an Authorization header. Auth is
|
|
613
624
|
* bearer + `?token=` only, no cookie, so a bare URL 401s.
|
|
614
625
|
* - **It must be absolute.** react-ui embeds into a host app with its own
|
|
615
|
-
* origin, so a relative path resolves against the HOST, not the
|
|
626
|
+
* origin, so a relative path resolves against the HOST, not the gateway.
|
|
616
627
|
*
|
|
617
628
|
* Returns `undefined` when either input is missing — no client, or a token
|
|
618
629
|
* that has not landed yet. There is no partially-correct URL worth rendering;
|
|
@@ -627,11 +638,23 @@ declare function mediaUrl(client: SemiontClient | null | undefined, id: Resource
|
|
|
627
638
|
* (which forces O(ASTnodes × annotations) work on every render), this module:
|
|
628
639
|
*
|
|
629
640
|
* 1. Builds a source→rendered offset map once after the markdown DOM paints
|
|
630
|
-
* 2. Resolves W3C TextPositionSelector offsets to
|
|
631
|
-
* 3.
|
|
641
|
+
* 2. Resolves W3C TextPositionSelector offsets to rendered-text offset spans
|
|
642
|
+
* 3. Rebuilds each annotated text node ONCE, off-DOM, into segments wrapped by
|
|
643
|
+
* <span> elements carrying data-annotation-* attributes
|
|
632
644
|
*
|
|
633
645
|
* Markdown renders once (cached by React.memo). Annotation changes only touch
|
|
634
646
|
* the overlay spans — no markdown re-parse, no AST walk.
|
|
647
|
+
*
|
|
648
|
+
* The application step deliberately never uses live DOM Ranges. A previous
|
|
649
|
+
* implementation resolved every annotation to a Range up front and then wrapped
|
|
650
|
+
* them one `surroundContents` at a time. Each wrap is a DOM mutation, and DOM
|
|
651
|
+
* mutations re-target every OTHER still-live Range: overlapping annotations —
|
|
652
|
+
* the normal result of repeated annotation on the same passage — had their
|
|
653
|
+
* ranges collapsed or inflated by earlier wraps, painting whole paragraphs and
|
|
654
|
+
* fragmenting text nodes so hard that 36 annotations produced 2,554 wraps and
|
|
655
|
+
* a 10-second main-thread freeze (measured 2026-08-28, e2e specs 08/09).
|
|
656
|
+
* Working in offset space against the pristine text-node index makes overlap
|
|
657
|
+
* geometry exact, and costs one `replaceChild` per annotated text node.
|
|
635
658
|
*/
|
|
636
659
|
|
|
637
660
|
interface OverlayAnnotation {
|
|
@@ -647,6 +670,12 @@ interface TextNodeEntry {
|
|
|
647
670
|
start: number;
|
|
648
671
|
end: number;
|
|
649
672
|
}
|
|
673
|
+
/** An annotation resolved to rendered-text offsets: `[start, end)`. */
|
|
674
|
+
interface ResolvedAnnotationSpan {
|
|
675
|
+
annotation: OverlayAnnotation;
|
|
676
|
+
start: number;
|
|
677
|
+
end: number;
|
|
678
|
+
}
|
|
650
679
|
/**
|
|
651
680
|
* Build a map from markdown source offsets to rendered text offsets.
|
|
652
681
|
* Character-by-character alignment: walks source and rendered text in parallel,
|
|
@@ -656,32 +685,37 @@ interface TextNodeEntry {
|
|
|
656
685
|
*/
|
|
657
686
|
declare function buildSourceToRenderedMap(markdownSource: string, container: HTMLElement): Map<number, number>;
|
|
658
687
|
/**
|
|
659
|
-
* Build a sorted array of text nodes with cumulative rendered offsets
|
|
660
|
-
* for efficient offset→node lookups via binary search.
|
|
688
|
+
* Build a sorted array of text nodes with cumulative rendered offsets.
|
|
661
689
|
*
|
|
662
690
|
* Complexity: O(textNodes) — runs once per overlay application.
|
|
663
691
|
*/
|
|
664
692
|
declare function buildTextNodeIndex(container: HTMLElement): TextNodeEntry[];
|
|
665
693
|
/**
|
|
666
|
-
* Resolve annotations to
|
|
694
|
+
* Resolve annotations to rendered-text offset spans using the cached offset
|
|
695
|
+
* map. Annotations whose offsets don't map (content changed under them) are
|
|
696
|
+
* skipped, as are empty ones.
|
|
667
697
|
*
|
|
668
|
-
* Complexity: O(annotations
|
|
698
|
+
* Complexity: O(annotations).
|
|
669
699
|
*/
|
|
670
|
-
declare function
|
|
671
|
-
range: Range;
|
|
672
|
-
annotation: OverlayAnnotation;
|
|
673
|
-
}>;
|
|
700
|
+
declare function resolveAnnotationSpans(annotations: OverlayAnnotation[], offsetMap: Map<number, number>): ResolvedAnnotationSpan[];
|
|
674
701
|
/**
|
|
675
|
-
* Wrap
|
|
676
|
-
*
|
|
702
|
+
* Wrap annotated stretches of text with styled <span> elements.
|
|
703
|
+
*
|
|
704
|
+
* Each text node the spans touch is rebuilt off-DOM as a run of segments —
|
|
705
|
+
* one per distinct overlap region — and swapped in with a single
|
|
706
|
+
* `replaceChild`. A segment covered by several annotations gets nested spans,
|
|
707
|
+
* one per annotation; the later annotation in the input order ends up
|
|
708
|
+
* innermost, so `closest('[data-annotation-id]')` resolves to it (interactive
|
|
709
|
+
* types — references, comments, tags — are listed after plain highlights).
|
|
710
|
+
* An annotation cut by segment or node boundaries yields sibling spans
|
|
711
|
+
* sharing its data-annotation-id, as the Range-based predecessor also did.
|
|
712
|
+
*
|
|
713
|
+
* Complexity: O(textNodes × spans) comparisons, O(annotated nodes) mutations.
|
|
677
714
|
*/
|
|
678
|
-
declare function applyHighlights(
|
|
679
|
-
range: Range;
|
|
680
|
-
annotation: OverlayAnnotation;
|
|
681
|
-
}>): void;
|
|
715
|
+
declare function applyHighlights(spans: ResolvedAnnotationSpan[], textNodeIndex: TextNodeEntry[]): void;
|
|
682
716
|
/**
|
|
683
717
|
* Remove all annotation highlight spans, restoring the original DOM.
|
|
684
|
-
* Unwraps
|
|
718
|
+
* Unwraps every span, then merges adjacent text nodes in one pass.
|
|
685
719
|
*/
|
|
686
720
|
declare function clearHighlights(container: HTMLElement): void;
|
|
687
721
|
/**
|
|
@@ -729,7 +763,7 @@ declare function supportsDetection(mediaType: string | undefined): boolean;
|
|
|
729
763
|
* The worker can't be resolved inside this tsup-built library (Vite's `?url`
|
|
730
764
|
* lives in the app), so the host hands us the worker URL via `setPdfWorkerSrc`
|
|
731
765
|
* once at startup; it is applied to `GlobalWorkerOptions` when pdf.js loads.
|
|
732
|
-
* See `apps/
|
|
766
|
+
* See `apps/browser/src/main.tsx`.
|
|
733
767
|
*/
|
|
734
768
|
|
|
735
769
|
/**
|
|
@@ -1072,28 +1106,6 @@ interface UseResourceContentResult {
|
|
|
1072
1106
|
*/
|
|
1073
1107
|
declare function useResourceContent(client: SemiontClient | null, rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
|
|
1074
1108
|
|
|
1075
|
-
interface ResourceGatherOptions {
|
|
1076
|
-
depth?: number;
|
|
1077
|
-
maxResources?: number;
|
|
1078
|
-
includeContent?: boolean;
|
|
1079
|
-
includeSummary?: boolean;
|
|
1080
|
-
/** Entity types to exclude from the gather's semantic recall (e.g. ['Question']). */
|
|
1081
|
-
excludeEntityTypes?: string[];
|
|
1082
|
-
}
|
|
1083
|
-
interface UseResourceGatherResult {
|
|
1084
|
-
context: GatheredContext | null;
|
|
1085
|
-
loading: boolean;
|
|
1086
|
-
error: Error | null;
|
|
1087
|
-
/** Run a resource gather (`gather.resource`) and store the result. */
|
|
1088
|
-
gather: (resourceId: string, options?: ResourceGatherOptions) => Promise<void>;
|
|
1089
|
-
reset: () => void;
|
|
1090
|
-
}
|
|
1091
|
-
/**
|
|
1092
|
-
* Drives a whole-resource gather (`client.gather.resource`, a Promise — no progress
|
|
1093
|
-
* stream) into React state. The home for the GENERATE-FROM-BUTTON resource-gather flow.
|
|
1094
|
-
*/
|
|
1095
|
-
declare function useResourceGather(): UseResourceGatherResult;
|
|
1096
|
-
|
|
1097
1109
|
interface UseResourceLoaderResult {
|
|
1098
1110
|
resource: ResourceDescriptor | undefined;
|
|
1099
1111
|
annotations: AnnotationsCollection;
|
|
@@ -1139,7 +1151,7 @@ interface UseCollaboratorsResult {
|
|
|
1139
1151
|
*
|
|
1140
1152
|
* SUBSCRIBES rather than fetching once. `browse.agents()` is a `CacheObservable`
|
|
1141
1153
|
* whose only refresh triggers are `bus:resume-gap` and an explicit `fresh()` —
|
|
1142
|
-
* a
|
|
1154
|
+
* a gateway restart with a changed roster necessarily presents as an SSE gap, so
|
|
1143
1155
|
* a one-shot read would pin the UI to a roster that no longer exists. Awaiting
|
|
1144
1156
|
* it instead would also force a network round trip on every mount, which is
|
|
1145
1157
|
* exactly what the cache exists to avoid.
|
|
@@ -1354,9 +1366,9 @@ declare function useEventSubscriptions(subscriptions: {
|
|
|
1354
1366
|
}): void;
|
|
1355
1367
|
|
|
1356
1368
|
interface ResourceAnnotationsContextType {
|
|
1357
|
-
|
|
1369
|
+
sparkleAnnotationIds: Set<string>;
|
|
1358
1370
|
markAnnotation: (rUri: ResourceId, motivation: 'highlighting' | 'linking' | 'assessing' | 'commenting' | 'tagging', selector: Selector | Selector[], body?: any[]) => Promise<string | undefined>;
|
|
1359
|
-
|
|
1371
|
+
clearSparkle: (id: AnnotationId) => void;
|
|
1360
1372
|
triggerSparkleAnimation: (annotationId: string) => void;
|
|
1361
1373
|
}
|
|
1362
1374
|
declare function ResourceAnnotationsProvider({ children }: {
|
|
@@ -1501,7 +1513,7 @@ interface Props$c {
|
|
|
1501
1513
|
}) => void;
|
|
1502
1514
|
onChange?: (content: string) => void;
|
|
1503
1515
|
editable?: boolean;
|
|
1504
|
-
|
|
1516
|
+
sparkleAnnotationIds?: Set<string>;
|
|
1505
1517
|
hoveredAnnotationId?: string | null;
|
|
1506
1518
|
scrollToAnnotationId?: string | null;
|
|
1507
1519
|
sourceView?: boolean;
|
|
@@ -1512,9 +1524,9 @@ interface Props$c {
|
|
|
1512
1524
|
generatingReferenceId?: string | null;
|
|
1513
1525
|
hoverDelayMs: number;
|
|
1514
1526
|
}
|
|
1515
|
-
declare function CodeMirrorRenderer({ content, segments, onChange, editable,
|
|
1527
|
+
declare function CodeMirrorRenderer({ content, segments, onChange, editable, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, sourceView, showLineNumbers, enableWidgets, session, getTargetResourceName, generatingReferenceId, hoverDelayMs }: Props$c): React$1.JSX.Element;
|
|
1516
1528
|
|
|
1517
|
-
type JobProgress$
|
|
1529
|
+
type JobProgress$9 = components['schemas']['JobProgress'];
|
|
1518
1530
|
type JobProgressMessage = components['schemas']['JobProgressMessage'];
|
|
1519
1531
|
/**
|
|
1520
1532
|
* Every string this component renders. Required by default and with NO English
|
|
@@ -1545,7 +1557,7 @@ interface AssistProgressTranslations {
|
|
|
1545
1557
|
* Takes the wire's `{ kind, value }` — the localized name for `kind` is the
|
|
1546
1558
|
* translation layer's business, not this component's.
|
|
1547
1559
|
*/
|
|
1548
|
-
subject: (current: NonNullable<JobProgress$
|
|
1560
|
+
subject: (current: NonNullable<JobProgress$9['current']>, done?: number, total?: number) => string;
|
|
1549
1561
|
/**
|
|
1550
1562
|
* Localized NAME for an echoed request parameter. The wire sends a code
|
|
1551
1563
|
* (`instructions`, `tone`, …); the VALUE beside it is the user's own words
|
|
@@ -1562,8 +1574,27 @@ interface AssistProgressTranslations {
|
|
|
1562
1574
|
*/
|
|
1563
1575
|
type AssistDataType = 'highlight' | 'comment' | 'assessment' | 'reference' | 'tag' | 'generation';
|
|
1564
1576
|
interface AssistProgressProps {
|
|
1565
|
-
progress: JobProgress$
|
|
1577
|
+
progress: JobProgress$9;
|
|
1566
1578
|
dataType: AssistDataType;
|
|
1579
|
+
/**
|
|
1580
|
+
* What the finished run produced, offered as a link in the ended frame
|
|
1581
|
+
* (GENERATE-FROM-RESOURCE D8). The label is the artifact's own name — user
|
|
1582
|
+
* content, never translated. Rendered only once `ended`: mid-run there is no
|
|
1583
|
+
* outcome to offer, whatever the caller has wired.
|
|
1584
|
+
*/
|
|
1585
|
+
outcome?: {
|
|
1586
|
+
label: string;
|
|
1587
|
+
onOpen: () => void;
|
|
1588
|
+
} | undefined;
|
|
1589
|
+
/**
|
|
1590
|
+
* The owner's terminal sentence, rendered in place of the payload message
|
|
1591
|
+
* once `ended` (GENERATION-ARRIVAL P1). The producer's final frame is a
|
|
1592
|
+
* fire-and-forget emit that can lose the race with `job:complete`, so an
|
|
1593
|
+
* ended frame must not trust the last payload to describe the ending —
|
|
1594
|
+
* the owner, which signalled `ended`, supplies the words too. Inert while
|
|
1595
|
+
* the run is live.
|
|
1596
|
+
*/
|
|
1597
|
+
endedMessage?: string;
|
|
1567
1598
|
/**
|
|
1568
1599
|
* The run has ENDED. The owner's fact, not the payload's
|
|
1569
1600
|
* (ASSIST-PROGRESS-CONSOLIDATION D7): terminality is signalled on
|
|
@@ -1598,16 +1629,16 @@ interface AssistProgressProps {
|
|
|
1598
1629
|
* opt-ins produced four unrelated layouts from one component, which is what
|
|
1599
1630
|
* generated the duplicate renders and doubled chrome this replaces.
|
|
1600
1631
|
*/
|
|
1601
|
-
declare function AssistProgress({ progress, dataType, ended, onCancel, onDismiss, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
|
|
1632
|
+
declare function AssistProgress({ progress, dataType, ended, outcome, endedMessage, onCancel, onDismiss, translations: tr, }: AssistProgressProps): React$1.JSX.Element;
|
|
1602
1633
|
|
|
1603
|
-
type JobProgress$
|
|
1634
|
+
type JobProgress$8 = components['schemas']['JobProgress'];
|
|
1604
1635
|
interface AssistShellProps {
|
|
1605
1636
|
/** localStorage persist-key suffix and CSS `data-type`. */
|
|
1606
1637
|
assistType: AssistDataType;
|
|
1607
1638
|
/** Collapsible section title (already translated). */
|
|
1608
1639
|
title: string;
|
|
1609
1640
|
isAssisting: boolean;
|
|
1610
|
-
progress: JobProgress$
|
|
1641
|
+
progress: JobProgress$8 | null | undefined;
|
|
1611
1642
|
/** The per-motivation form (fields + submit) — shown when no progress is displayed. */
|
|
1612
1643
|
form: ReactNode;
|
|
1613
1644
|
/**
|
|
@@ -1956,7 +1987,7 @@ interface AnnotateMediaRendererProps {
|
|
|
1956
1987
|
selectedMotivation: SelectionMotivation | null;
|
|
1957
1988
|
hoveredAnnotationId?: string | null;
|
|
1958
1989
|
hoverDelayMs?: number;
|
|
1959
|
-
|
|
1990
|
+
sparkleAnnotationIds?: Set<string>;
|
|
1960
1991
|
scrollToAnnotationId?: string | null;
|
|
1961
1992
|
showLineNumbers?: boolean;
|
|
1962
1993
|
enableWidgets?: boolean;
|
|
@@ -1965,7 +1996,7 @@ interface AnnotateMediaRendererProps {
|
|
|
1965
1996
|
}
|
|
1966
1997
|
/** Annotating media dispatch, keyed by the registry render mode. */
|
|
1967
1998
|
type AnnotateMediaRenderers = Partial<Record<string, ComponentType<AnnotateMediaRendererProps>>>;
|
|
1968
|
-
declare function TextAnnotateRenderer({ content, annotations, session,
|
|
1999
|
+
declare function TextAnnotateRenderer({ content, annotations, session, sparkleAnnotationIds, hoveredAnnotationId, scrollToAnnotationId, showLineNumbers, hoverDelayMs, enableWidgets, getTargetResourceName, generatingReferenceId, }: AnnotateMediaRendererProps): React$1.JSX.Element;
|
|
1969
2000
|
declare function ImageAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
|
|
1970
2001
|
declare function PdfAnnotateRenderer({ content, resourceUri, annotations, session, drawingMode, selectedMotivation, hoveredAnnotationId, hoverDelayMs, }: AnnotateMediaRendererProps): React$1.JSX.Element | null;
|
|
1971
2002
|
/**
|
|
@@ -1994,7 +2025,7 @@ interface Props$9 {
|
|
|
1994
2025
|
/** Session for the shown resource — its client emits mark:* / mark.request; its bus feeds toolbar + beckon events. */
|
|
1995
2026
|
session: SemiontSession | null;
|
|
1996
2027
|
/** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
|
|
1997
|
-
|
|
2028
|
+
sparkleAnnotationIds?: Set<string>;
|
|
1998
2029
|
/** The bar's Mode control reports the chosen mode here (the owner applies it). */
|
|
1999
2030
|
onModeChange?: (mode: boolean) => void;
|
|
2000
2031
|
/** Render the built-in bar (default). false → no bar; selection capture and drawing stay live. */
|
|
@@ -2009,7 +2040,7 @@ interface Props$9 {
|
|
|
2009
2040
|
* @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
|
|
2010
2041
|
* @subscribes beckon:focus - Scroll to and highlight annotation, unless `resourceId` names a different resource (D7). Payload: { annotationId: string, resourceId?: string }
|
|
2011
2042
|
*/
|
|
2012
|
-
declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session,
|
|
2043
|
+
declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, sparkleAnnotationIds, onModeChange, showToolbar, renderers, }: Props$9): React$1.JSX.Element;
|
|
2013
2044
|
|
|
2014
2045
|
interface Props$8 {
|
|
2015
2046
|
/**
|
|
@@ -2076,7 +2107,7 @@ interface Props$7 {
|
|
|
2076
2107
|
/** Session for the shown resource — emits browse:click / beckon:hover; its bus feeds beckon events. */
|
|
2077
2108
|
session: SemiontSession | null;
|
|
2078
2109
|
/** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
|
|
2079
|
-
|
|
2110
|
+
sparkleAnnotationIds?: Set<string>;
|
|
2080
2111
|
/** Override the read-only media renderers (render mode → renderer); merged over the defaults. */
|
|
2081
2112
|
renderers?: BrowseMediaRenderers;
|
|
2082
2113
|
/** A content link (`<a href>` in the rendered content) was clicked. The viewer preventDefaults and
|
|
@@ -2117,12 +2148,12 @@ interface ReferenceHover {
|
|
|
2117
2148
|
* @subscribes beckon:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
|
|
2118
2149
|
* @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
|
|
2119
2150
|
*/
|
|
2120
|
-
declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, onModeChange, onClickActionChange, showToolbar, annotateMode, hoverDelayMs, session,
|
|
2151
|
+
declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, onModeChange, onClickActionChange, showToolbar, annotateMode, hoverDelayMs, session, sparkleAnnotationIds, renderers, onLinkClick, onReferenceHover, inline, }: Props$7) => React$1.JSX.Element>;
|
|
2121
2152
|
|
|
2122
2153
|
interface Props$6 {
|
|
2123
2154
|
/** The '@id' of the resource whose bytes to offer. */
|
|
2124
2155
|
resourceUri: string;
|
|
2125
|
-
/** Session for that resource — its client mints the media token and supplies the
|
|
2156
|
+
/** Session for that resource — its client mints the media token and supplies the gateway origin. */
|
|
2126
2157
|
session: SemiontSession | null;
|
|
2127
2158
|
}
|
|
2128
2159
|
/**
|
|
@@ -2198,7 +2229,7 @@ interface Props$4 {
|
|
|
2198
2229
|
/** Inline display variant: auto-height, no inner scroll, no pane chrome (browse path). Default: fill-the-pane. */
|
|
2199
2230
|
inline?: boolean;
|
|
2200
2231
|
/** Recently-created annotation ids to sparkle (threaded to the browse/annotate subtree). */
|
|
2201
|
-
|
|
2232
|
+
sparkleAnnotationIds?: Set<string>;
|
|
2202
2233
|
generatingReferenceId?: string | null;
|
|
2203
2234
|
showLineNumbers?: boolean;
|
|
2204
2235
|
hoverDelayMs?: number;
|
|
@@ -2254,7 +2285,7 @@ interface Props$4 {
|
|
|
2254
2285
|
* the motivation is derived from the annotation the id names, and an id this
|
|
2255
2286
|
* viewer has not loaded is a no-op.
|
|
2256
2287
|
*/
|
|
2257
|
-
declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline,
|
|
2288
|
+
declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, sparkleAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, browseRenderers, annotateRenderers, }: Props$4): React__default.JSX.Element;
|
|
2258
2289
|
|
|
2259
2290
|
interface AssessmentEntryProps {
|
|
2260
2291
|
/** Session for interaction routing (browse.click etc.); the panel threads it. */
|
|
@@ -2267,7 +2298,7 @@ interface AssessmentEntryProps {
|
|
|
2267
2298
|
declare function AssessmentEntry({ session, assessment, isFocused, isHovered, ref, }: AssessmentEntryProps): React$1.JSX.Element;
|
|
2268
2299
|
|
|
2269
2300
|
type Motivation$5 = components['schemas']['Motivation'];
|
|
2270
|
-
type JobProgress$
|
|
2301
|
+
type JobProgress$7 = components['schemas']['JobProgress'];
|
|
2271
2302
|
interface PendingAnnotation$5 {
|
|
2272
2303
|
selector: Selector | Selector[];
|
|
2273
2304
|
motivation: Motivation$5;
|
|
@@ -2280,7 +2311,7 @@ interface AssessmentPanelProps {
|
|
|
2280
2311
|
annotations: Annotation[];
|
|
2281
2312
|
pendingAnnotation: PendingAnnotation$5 | null;
|
|
2282
2313
|
isAssisting?: boolean;
|
|
2283
|
-
progress?: JobProgress$
|
|
2314
|
+
progress?: JobProgress$7 | null;
|
|
2284
2315
|
locale?: string;
|
|
2285
2316
|
/** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
|
|
2286
2317
|
sourceLanguage?: string;
|
|
@@ -2345,7 +2376,7 @@ interface CommentEntryProps {
|
|
|
2345
2376
|
declare function CommentEntry({ session, comment, isFocused, isHovered, annotateMode, ref, }: CommentEntryProps): React$1.JSX.Element;
|
|
2346
2377
|
|
|
2347
2378
|
type Motivation$4 = components['schemas']['Motivation'];
|
|
2348
|
-
type JobProgress$
|
|
2379
|
+
type JobProgress$6 = components['schemas']['JobProgress'];
|
|
2349
2380
|
interface PendingAnnotation$4 {
|
|
2350
2381
|
selector: Selector | Selector[];
|
|
2351
2382
|
motivation: Motivation$4;
|
|
@@ -2359,7 +2390,7 @@ interface CommentsPanelProps {
|
|
|
2359
2390
|
pendingAnnotation: PendingAnnotation$4 | null;
|
|
2360
2391
|
annotateMode?: boolean;
|
|
2361
2392
|
isAssisting?: boolean;
|
|
2362
|
-
progress?: JobProgress$
|
|
2393
|
+
progress?: JobProgress$6 | null;
|
|
2363
2394
|
locale?: string;
|
|
2364
2395
|
/** BCP-47 tag of the resource being analyzed — forwarded to the assist call. */
|
|
2365
2396
|
sourceLanguage?: string;
|
|
@@ -2376,7 +2407,7 @@ interface CommentsPanelProps {
|
|
|
2376
2407
|
*/
|
|
2377
2408
|
declare function CommentsPanel({ session, resourceId, annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): React$1.JSX.Element;
|
|
2378
2409
|
|
|
2379
|
-
type JobProgress$
|
|
2410
|
+
type JobProgress$5 = components['schemas']['JobProgress'];
|
|
2380
2411
|
interface AssistSectionProps {
|
|
2381
2412
|
/** Session carrying the client and event bus; null renders inert. */
|
|
2382
2413
|
session: SemiontSession | null;
|
|
@@ -2386,7 +2417,7 @@ interface AssistSectionProps {
|
|
|
2386
2417
|
locale?: string;
|
|
2387
2418
|
/** BCP-47 tag of the resource being analyzed. Forwarded to the prompt so the LLM analyzes non-English source correctly. */
|
|
2388
2419
|
sourceLanguage?: string;
|
|
2389
|
-
progress?: JobProgress$
|
|
2420
|
+
progress?: JobProgress$5 | null | undefined;
|
|
2390
2421
|
}
|
|
2391
2422
|
/**
|
|
2392
2423
|
* Assist fields for the text motivations (highlight, assessment, comment):
|
|
@@ -2410,7 +2441,7 @@ interface HighlightEntryProps {
|
|
|
2410
2441
|
declare function HighlightEntry({ session, highlight, isFocused, isHovered, ref, }: HighlightEntryProps): React$1.JSX.Element;
|
|
2411
2442
|
|
|
2412
2443
|
type Motivation$3 = components['schemas']['Motivation'];
|
|
2413
|
-
type JobProgress$
|
|
2444
|
+
type JobProgress$4 = components['schemas']['JobProgress'];
|
|
2414
2445
|
interface PendingAnnotation$3 {
|
|
2415
2446
|
selector: Selector | Selector[];
|
|
2416
2447
|
motivation: Motivation$3;
|
|
@@ -2423,7 +2454,7 @@ interface HighlightPanelProps {
|
|
|
2423
2454
|
annotations: Annotation[];
|
|
2424
2455
|
pendingAnnotation: PendingAnnotation$3 | null;
|
|
2425
2456
|
isAssisting?: boolean;
|
|
2426
|
-
progress?: JobProgress$
|
|
2457
|
+
progress?: JobProgress$4 | null;
|
|
2427
2458
|
annotateMode?: boolean;
|
|
2428
2459
|
scrollToAnnotationId?: string | null;
|
|
2429
2460
|
onScrollCompleted?: () => void;
|
|
@@ -2474,11 +2505,13 @@ interface ReferenceEntryProps {
|
|
|
2474
2505
|
onOpenResource?: (resourceId: string) => void;
|
|
2475
2506
|
annotateMode?: boolean;
|
|
2476
2507
|
isGenerating?: boolean;
|
|
2508
|
+
/** The reference just got attention-worthy (created or resolved) — glow the icon (RESOLUTION-SPARKLE D6). */
|
|
2509
|
+
sparkle?: boolean;
|
|
2477
2510
|
ref?: Ref<HTMLDivElement>;
|
|
2478
2511
|
}
|
|
2479
|
-
declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, ref, }: ReferenceEntryProps): React$1.JSX.Element;
|
|
2512
|
+
declare function ReferenceEntry({ session, reference, isFocused, isHovered, onOpenResource, annotateMode, isGenerating, sparkle, ref, }: ReferenceEntryProps): React$1.JSX.Element;
|
|
2480
2513
|
|
|
2481
|
-
type JobProgress$
|
|
2514
|
+
type JobProgress$3 = components['schemas']['JobProgress'];
|
|
2482
2515
|
|
|
2483
2516
|
type Motivation$2 = components['schemas']['Motivation'];
|
|
2484
2517
|
type ReferencedBy = components['schemas']['GetReferencedByResponse']['referencedBy'][number];
|
|
@@ -2495,7 +2528,7 @@ interface Props$1 {
|
|
|
2495
2528
|
resourceId: string;
|
|
2496
2529
|
annotations?: Annotation[];
|
|
2497
2530
|
isAssisting: boolean;
|
|
2498
|
-
progress: JobProgress$
|
|
2531
|
+
progress: JobProgress$3 | null;
|
|
2499
2532
|
annotateMode?: boolean;
|
|
2500
2533
|
Link: React__default.ComponentType<LinkComponentProps>;
|
|
2501
2534
|
routes: RouteBuilder;
|
|
@@ -2523,6 +2556,8 @@ interface Props$1 {
|
|
|
2523
2556
|
scrollToAnnotationId?: string | null;
|
|
2524
2557
|
onScrollCompleted?: () => void;
|
|
2525
2558
|
hoveredAnnotationId?: string | null;
|
|
2559
|
+
/** Annotations currently sparkling (recently created or resolved) — entries in the set glow their icon (RESOLUTION-SPARKLE D6). */
|
|
2560
|
+
sparkleAnnotationIds?: Set<string>;
|
|
2526
2561
|
/** User UI locale — stamped on the unresolved-reference body's `language` field. */
|
|
2527
2562
|
locale?: string;
|
|
2528
2563
|
/** BCP-47 tag of the resource being analyzed — fed into the prompt for source-aware analysis. */
|
|
@@ -2536,9 +2571,10 @@ interface Props$1 {
|
|
|
2536
2571
|
* @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
|
|
2537
2572
|
* @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
|
|
2538
2573
|
*/
|
|
2539
|
-
declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, entityTypesError, generatingReferenceId, referencedBy, referencedByLoading, referencedByError, onRetryReferencedBy, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
|
|
2574
|
+
declare function ReferencesPanel({ session, onOpenResource, resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, entityTypesError, generatingReferenceId, referencedBy, referencedByLoading, referencedByError, onRetryReferencedBy, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sparkleAnnotationIds, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
|
|
2540
2575
|
|
|
2541
2576
|
type Agent = components['schemas']['Agent'];
|
|
2577
|
+
type JobProgress$2 = components['schemas']['JobProgress'];
|
|
2542
2578
|
interface Props {
|
|
2543
2579
|
/** Session carrying the client and event bus; null renders inert. */
|
|
2544
2580
|
session: SemiontSession | null;
|
|
@@ -2560,6 +2596,17 @@ interface Props {
|
|
|
2560
2596
|
* to a verb). Omit to hide the Generate action.
|
|
2561
2597
|
*/
|
|
2562
2598
|
onGenerate?: () => void;
|
|
2599
|
+
/**
|
|
2600
|
+
* Generation lifecycle, page-held (`yield.isGenerating$` / `yield.progress$`
|
|
2601
|
+
* / `yield.outcome$`): this panel is generation's progress surface
|
|
2602
|
+
* (GENERATE-FROM-RESOURCE D7) — the run reports where it was started.
|
|
2603
|
+
*/
|
|
2604
|
+
isGenerating?: boolean;
|
|
2605
|
+
generationProgress?: JobProgress$2 | null;
|
|
2606
|
+
/** The finished run's result; the ended frame links it by name (D8). */
|
|
2607
|
+
generationOutcome?: YieldOutcome | null;
|
|
2608
|
+
/** Clear the finished display — wires `yield.dismissProgress()`. */
|
|
2609
|
+
onDismissProgress?: () => void;
|
|
2563
2610
|
}
|
|
2564
2611
|
/**
|
|
2565
2612
|
* Panel for displaying resource metadata and management actions
|
|
@@ -2568,7 +2615,7 @@ interface Props {
|
|
|
2568
2615
|
* @emits mark:unarchive - Unarchive this resource
|
|
2569
2616
|
* @emits mark:archive - Archive this resource
|
|
2570
2617
|
*/
|
|
2571
|
-
declare function ResourceInfoPanel({ session, resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, onGenerate, }: Props): React$1.JSX.Element;
|
|
2618
|
+
declare function ResourceInfoPanel({ session, resourceId, documentEntityTypes, documentLocale, primaryMediaType, primaryByteSize, storageUri, isArchived, dateCreated, dateModified, wasAttributedTo, wasDerivedFrom, generator, onGenerate, isGenerating, generationProgress, generationOutcome, onDismissProgress, }: Props): React$1.JSX.Element;
|
|
2572
2619
|
|
|
2573
2620
|
interface StatisticsPanelProps {
|
|
2574
2621
|
highlights: Annotation[];
|
|
@@ -2626,7 +2673,7 @@ declare function TaggingPanel({ session, resourceId, annotations, annotateMode,
|
|
|
2626
2673
|
type JobProgress = components['schemas']['JobProgress'];
|
|
2627
2674
|
|
|
2628
2675
|
type Motivation = components['schemas']['Motivation'];
|
|
2629
|
-
type TabKey = 'statistics' |
|
|
2676
|
+
type TabKey = 'statistics' | AnnotatorKey;
|
|
2630
2677
|
interface PendingAnnotation {
|
|
2631
2678
|
selector: Selector | Selector[];
|
|
2632
2679
|
motivation: Motivation;
|
|
@@ -2666,6 +2713,8 @@ interface UnifiedAnnotationsPanelProps {
|
|
|
2666
2713
|
entityTypesError?: Error | null;
|
|
2667
2714
|
referencedByError?: Error | null;
|
|
2668
2715
|
onRetryReferencedBy?: () => void;
|
|
2716
|
+
/** Annotations currently sparkling (recently created or resolved) — RESOLUTION-SPARKLE D6. */
|
|
2717
|
+
sparkleAnnotationIds?: Set<string>;
|
|
2669
2718
|
resourceId: string;
|
|
2670
2719
|
initialTab?: TabKey;
|
|
2671
2720
|
initialTabGeneration?: number;
|
|
@@ -2894,14 +2943,46 @@ interface SimpleNavigationProps {
|
|
|
2894
2943
|
dropdownContent?: ((onClose: () => void) => ReactNode) | undefined;
|
|
2895
2944
|
}
|
|
2896
2945
|
|
|
2897
|
-
|
|
2898
|
-
|
|
2946
|
+
/**
|
|
2947
|
+
* What this form fills in. Named here, but TYPED by the SDK (P2b).
|
|
2948
|
+
*
|
|
2949
|
+
* `storageUri` is on this list rather than a local `storagePath: string`
|
|
2950
|
+
* because the two were the same thing under different names — a divergence
|
|
2951
|
+
* that survived precisely because nothing tied them together (D8).
|
|
2952
|
+
*/
|
|
2953
|
+
type FormFilled = 'title' | 'storageUri' | 'language' | 'temperature' | 'maxTokens' | 'outputMediaType';
|
|
2954
|
+
/**
|
|
2955
|
+
* The submitted payload: the SDK's own generation options, DERIVED rather
|
|
2956
|
+
* than restated (P2b), plus the grounding context.
|
|
2957
|
+
*
|
|
2958
|
+
* This was a hand-written interface listing the same fields with independent
|
|
2959
|
+
* types — the shape `## Duplicated Shape` forbids — and it drifted exactly as
|
|
2960
|
+
* predicted: `storagePath: string` held a `storageUri`, so every consumer
|
|
2961
|
+
* re-mapped it by hand and silently dropped whatever the mapping forgot.
|
|
2962
|
+
* Deriving means a rename or retype in `GenerationOptions` is a compile
|
|
2963
|
+
* error here instead of a quiet gap at the wire.
|
|
2964
|
+
*
|
|
2965
|
+
* NARROWED on purpose: the SDK also carries `task`, `structure`, `cite` and
|
|
2966
|
+
* `stallDeadlineMs`, which this form does not collect, and a payload type
|
|
2967
|
+
* that advertised them would promise more than the UI delivers. Surfacing one
|
|
2968
|
+
* later is a one-word edit to `FormFilled` plus its control — the door is
|
|
2969
|
+
* unlocked, not open.
|
|
2970
|
+
*
|
|
2971
|
+
* `Required` because the form always fills these, even where the SDK lets
|
|
2972
|
+
* them be absent; `prompt` stays optional, because a blank instruction field
|
|
2973
|
+
* is omitted rather than sent empty.
|
|
2974
|
+
*/
|
|
2975
|
+
type GenerationConfig = Required<Pick<GenerationOptions, FormFilled>> & Pick<GenerationOptions, 'prompt'> & {
|
|
2976
|
+
context: GatheredContext;
|
|
2977
|
+
};
|
|
2978
|
+
|
|
2979
|
+
interface ComposeParams$1 {
|
|
2980
|
+
name: string;
|
|
2981
|
+
/** Full file:// URI. */
|
|
2899
2982
|
storagePath: string;
|
|
2900
|
-
|
|
2983
|
+
content: string;
|
|
2984
|
+
entityTypes: string[];
|
|
2901
2985
|
language: string;
|
|
2902
|
-
temperature: number;
|
|
2903
|
-
maxTokens: number;
|
|
2904
|
-
context: GatheredContext;
|
|
2905
2986
|
}
|
|
2906
2987
|
|
|
2907
2988
|
interface ReferenceWizardModalProps {
|
|
@@ -2919,8 +3000,16 @@ interface ReferenceWizardModalProps {
|
|
|
2919
3000
|
resourceId: string | null;
|
|
2920
3001
|
/** Default title (selected text) */
|
|
2921
3002
|
defaultTitle: string;
|
|
3003
|
+
/** Folder of the source resource, so new files land beside it (D11). */
|
|
3004
|
+
defaultFolder?: string;
|
|
2922
3005
|
/** Entity types from the annotation */
|
|
2923
3006
|
entityTypes: string[];
|
|
3007
|
+
/**
|
|
3008
|
+
* The source resource's display name — a page fact (the wizard opens FROM
|
|
3009
|
+
* that resource), shown in the gather skeleton's source line before the
|
|
3010
|
+
* gathered context can say it itself.
|
|
3011
|
+
*/
|
|
3012
|
+
resourceName?: string;
|
|
2924
3013
|
/** Current locale for generation defaults */
|
|
2925
3014
|
locale: string;
|
|
2926
3015
|
/** Gathered context state */
|
|
@@ -2930,21 +3019,36 @@ interface ReferenceWizardModalProps {
|
|
|
2930
3019
|
/** Callbacks */
|
|
2931
3020
|
onGenerateSubmit: (referenceId: string, config: GenerationConfig) => void;
|
|
2932
3021
|
onLinkResource: (referenceId: string, targetResourceId: string) => void;
|
|
2933
|
-
|
|
3022
|
+
/**
|
|
3023
|
+
* Create-and-link (COMPOSE-IN-MODAL): the host runs `yield.resource` then
|
|
3024
|
+
* `bind.body` and settles the promise; rejection keeps the modal open with
|
|
3025
|
+
* the compose footer re-enabled. Replaces the old navigate-to-page flow.
|
|
3026
|
+
*/
|
|
3027
|
+
onComposeSubmit: (referenceId: string, params: ComposeParams$1) => Promise<void>;
|
|
3028
|
+
/** Picker vocabulary for compose when the reference fixed no entity types. */
|
|
3029
|
+
entityTypeOptions?: string[];
|
|
3030
|
+
/** Editor hover delay for the compose step's CodeMirror. */
|
|
3031
|
+
hoverDelayMs?: number;
|
|
2934
3032
|
/** Translation strings */
|
|
2935
3033
|
translations: {
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
searchResultsTitle: string;
|
|
3034
|
+
/** The ONE title, all steps — the flow is resolving a reference; the
|
|
3035
|
+
strategy band below says where in it you are. */
|
|
3036
|
+
resolveTitle: string;
|
|
2940
3037
|
sourceContextLabel: string;
|
|
2941
3038
|
connectionsLabel: string;
|
|
2942
3039
|
citedByLabel: string;
|
|
3040
|
+
graphPaneTitle: string;
|
|
3041
|
+
graphEmpty: string;
|
|
3042
|
+
resourceLinkLabel: string;
|
|
3043
|
+
corpusPaneTitle: string;
|
|
3044
|
+
corpusEmpty: string;
|
|
3045
|
+
excludedReceipt: string;
|
|
3046
|
+
machineRead: string;
|
|
2943
3047
|
userHintLabel: string;
|
|
3048
|
+
userHintEffect: string;
|
|
2944
3049
|
userHintPlaceholder: string;
|
|
2945
3050
|
loadingContext: string;
|
|
2946
3051
|
failedContext: string;
|
|
2947
|
-
cancel: string;
|
|
2948
3052
|
search: string;
|
|
2949
3053
|
searching: string;
|
|
2950
3054
|
generate: string;
|
|
@@ -2956,6 +3060,7 @@ interface ReferenceWizardModalProps {
|
|
|
2956
3060
|
noResults: string;
|
|
2957
3061
|
resourceTitle: string;
|
|
2958
3062
|
resourceTitlePlaceholder: string;
|
|
3063
|
+
saveLocation: string;
|
|
2959
3064
|
additionalInstructions: string;
|
|
2960
3065
|
additionalInstructionsPlaceholder: string;
|
|
2961
3066
|
language: string;
|
|
@@ -2966,41 +3071,52 @@ interface ReferenceWizardModalProps {
|
|
|
2966
3071
|
maxLength: string;
|
|
2967
3072
|
maxLengthHelp: string;
|
|
2968
3073
|
maxLengthCeiling: string;
|
|
3074
|
+
outputFormat: string;
|
|
3075
|
+
formatExtensionMismatch: string;
|
|
2969
3076
|
maxResults: string;
|
|
2970
3077
|
semanticScoring: string;
|
|
2971
3078
|
semanticScoringHelp: string;
|
|
3079
|
+
searchFailed: string;
|
|
3080
|
+
entityTypes: string;
|
|
3081
|
+
contentLabel: string;
|
|
3082
|
+
createAndLink: string;
|
|
3083
|
+
creatingAndLinking: string;
|
|
3084
|
+
discardDraftPrompt: string;
|
|
3085
|
+
discardDraft: string;
|
|
3086
|
+
keepEditing: string;
|
|
2972
3087
|
};
|
|
2973
3088
|
}
|
|
2974
|
-
declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, entityTypes, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource,
|
|
2975
|
-
|
|
2976
|
-
interface ResourceGatherConfig {
|
|
2977
|
-
depth: number;
|
|
2978
|
-
maxResources: number;
|
|
2979
|
-
includeContent: boolean;
|
|
2980
|
-
includeSummary: boolean;
|
|
2981
|
-
}
|
|
3089
|
+
declare function ReferenceWizardModal({ isOpen, onClose, annotationId, resourceId, defaultTitle, defaultFolder, entityTypes, resourceName, locale, context, contextLoading, contextError, onGenerateSubmit, onLinkResource, onComposeSubmit, entityTypeOptions, hoverDelayMs, translations: t, generationAgent, }: ReferenceWizardModalProps): React$1.JSX.Element;
|
|
2982
3090
|
|
|
2983
3091
|
interface ResourceGenerateModalTranslations {
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
configureTitle: string;
|
|
2987
|
-
next: string;
|
|
2988
|
-
back: string;
|
|
2989
|
-
cancel: string;
|
|
3092
|
+
/** The ONE modal title — names the flow, not a step. */
|
|
3093
|
+
title: string;
|
|
2990
3094
|
gatherIntro: string;
|
|
2991
3095
|
includeContent: string;
|
|
2992
3096
|
includeSummary: string;
|
|
2993
3097
|
gatherDepth: string;
|
|
2994
3098
|
gatherMaxResources: string;
|
|
2995
3099
|
gatherButton: string;
|
|
2996
|
-
|
|
3100
|
+
/** Labels the recall chips: every type included until deselected. */
|
|
3101
|
+
recallLabel: string;
|
|
3102
|
+
/** Affordance on the post-gather receipt row (title/tooltip). */
|
|
3103
|
+
editGather: string;
|
|
2997
3104
|
loadingContext: string;
|
|
2998
3105
|
failedContext: string;
|
|
2999
3106
|
sourceContextLabel: string;
|
|
3000
3107
|
connectionsLabel: string;
|
|
3001
3108
|
citedByLabel: string;
|
|
3109
|
+
graphPaneTitle: string;
|
|
3110
|
+
graphEmpty: string;
|
|
3111
|
+
resourceLinkLabel: string;
|
|
3112
|
+
corpusPaneTitle: string;
|
|
3113
|
+
corpusEmpty: string;
|
|
3114
|
+
excludedReceipt: string;
|
|
3115
|
+
machineRead: string;
|
|
3116
|
+
score: string;
|
|
3002
3117
|
resourceTitle: string;
|
|
3003
3118
|
resourceTitlePlaceholder: string;
|
|
3119
|
+
saveLocation: string;
|
|
3004
3120
|
additionalInstructions: string;
|
|
3005
3121
|
additionalInstructionsPlaceholder: string;
|
|
3006
3122
|
language: string;
|
|
@@ -3011,7 +3127,12 @@ interface ResourceGenerateModalTranslations {
|
|
|
3011
3127
|
maxLength: string;
|
|
3012
3128
|
maxLengthHelp: string;
|
|
3013
3129
|
maxLengthCeiling: string;
|
|
3130
|
+
outputFormat: string;
|
|
3131
|
+
formatExtensionMismatch: string;
|
|
3014
3132
|
generate: string;
|
|
3133
|
+
discardDraftPrompt: string;
|
|
3134
|
+
discardDraft: string;
|
|
3135
|
+
keepEditing: string;
|
|
3015
3136
|
}
|
|
3016
3137
|
interface ResourceGenerateModalProps {
|
|
3017
3138
|
/**
|
|
@@ -3024,8 +3145,9 @@ interface ResourceGenerateModalProps {
|
|
|
3024
3145
|
onClose: () => void;
|
|
3025
3146
|
resourceId: string;
|
|
3026
3147
|
defaultTitle: string;
|
|
3148
|
+
/** Folder of the source resource, so the artifact lands beside it (D11). */
|
|
3149
|
+
defaultFolder?: string;
|
|
3027
3150
|
locale: string;
|
|
3028
|
-
gatherDefaults?: Partial<ResourceGatherConfig>;
|
|
3029
3151
|
/**
|
|
3030
3152
|
* Entity types offered in the exclusion picker. Owner-supplied so the
|
|
3031
3153
|
* modal cannot present a failed load as an empty vocabulary.
|
|
@@ -3037,14 +3159,35 @@ interface ResourceGenerateModalProps {
|
|
|
3037
3159
|
* annotation wizard delegates generation to its parent.
|
|
3038
3160
|
*/
|
|
3039
3161
|
onGenerateSubmit: (resourceId: string, config: GenerationConfig) => void;
|
|
3162
|
+
/**
|
|
3163
|
+
* Resource-gather state, verbatim from the SDK's gather unit slots
|
|
3164
|
+
* (`gather.resourceContext$` / `resourceLoading$` / `resourceError$`) — the
|
|
3165
|
+
* page reads the observables and threads them here, the same shape the
|
|
3166
|
+
* reference wizard has always had (FLOW-LIFECYCLE-CONVERGENCE D3/A6). The
|
|
3167
|
+
* modal renders this state; it never owns it.
|
|
3168
|
+
*/
|
|
3169
|
+
gatherContext: GatheredContext | null;
|
|
3170
|
+
gatherLoading: boolean;
|
|
3171
|
+
gatherError: Error | null;
|
|
3172
|
+
/**
|
|
3173
|
+
* Run the gather — the page wires `gather.gatherResource(resourceId, …)`.
|
|
3174
|
+
* No resourceId in the payload: the owner already holds it. `gatherResource`
|
|
3175
|
+
* clears its slots at start, so no reset threading is needed.
|
|
3176
|
+
*/
|
|
3177
|
+
onGather: (options: ResourceGatherOptions) => void;
|
|
3040
3178
|
translations: ResourceGenerateModalTranslations;
|
|
3041
3179
|
}
|
|
3042
3180
|
/**
|
|
3043
|
-
* Resource-generate flow (GENERATE-FROM-BUTTON
|
|
3044
|
-
*
|
|
3045
|
-
*
|
|
3181
|
+
* Resource-generate flow (GENERATE-FROM-BUTTON, folded by GATHER-AT-THE-TOP):
|
|
3182
|
+
* one composite stack in a single scroll pane — the gather controls at the
|
|
3183
|
+
* top, the gathered `GatheredContext` below them once gather fires, and the
|
|
3184
|
+
* generation params beneath the evidence once context arrives. Re-gathering
|
|
3185
|
+
* is scroll-up → tweak → Gather; `gatherResource` clears its slots at start,
|
|
3186
|
+
* so the evidence refreshes in place. [gather zone] → [evidence] → [act
|
|
3187
|
+
* zone]: the same grammar the resolve wizard expresses, whose gather zone
|
|
3188
|
+
* happens to be automatic and whose act zone has a strategy choice.
|
|
3046
3189
|
*/
|
|
3047
|
-
declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle,
|
|
3190
|
+
declare function ResourceGenerateModal({ isOpen, onClose, resourceId, defaultTitle, defaultFolder, locale, entityTypeOptions, onGenerateSubmit, gatherContext, gatherLoading, gatherError, onGather, translations: t, generationAgent, }: ResourceGenerateModalProps): React$1.JSX.Element;
|
|
3048
3191
|
|
|
3049
3192
|
interface SearchModalProps$1 {
|
|
3050
3193
|
isOpen: boolean;
|
|
@@ -3064,21 +3207,6 @@ interface SearchModalProps$1 {
|
|
|
3064
3207
|
}
|
|
3065
3208
|
declare function SearchModal({ isOpen, onClose, onNavigate, translations }: SearchModalProps$1): React__default.JSX.Element;
|
|
3066
3209
|
|
|
3067
|
-
interface ResourceSearchModalProps$1 {
|
|
3068
|
-
isOpen: boolean;
|
|
3069
|
-
onClose: () => void;
|
|
3070
|
-
onSelect: (resourceId: string) => void;
|
|
3071
|
-
searchTerm?: string;
|
|
3072
|
-
translations?: {
|
|
3073
|
-
title?: string;
|
|
3074
|
-
placeholder?: string;
|
|
3075
|
-
searching?: string;
|
|
3076
|
-
noResults?: string;
|
|
3077
|
-
close?: string;
|
|
3078
|
-
};
|
|
3079
|
-
}
|
|
3080
|
-
declare function ResourceSearchModal({ isOpen, onClose, onSelect, searchTerm, translations }: ResourceSearchModalProps$1): React$1.JSX.Element;
|
|
3081
|
-
|
|
3082
3210
|
/**
|
|
3083
3211
|
* Base modal props that all modals share
|
|
3084
3212
|
*/
|
|
@@ -3112,22 +3240,6 @@ interface SearchModalProps extends BaseModalProps, NavigableModalProps {
|
|
|
3112
3240
|
close?: string;
|
|
3113
3241
|
};
|
|
3114
3242
|
}
|
|
3115
|
-
/**
|
|
3116
|
-
* Resource search modal props
|
|
3117
|
-
*/
|
|
3118
|
-
interface ResourceSearchModalProps extends BaseModalProps {
|
|
3119
|
-
/** Callback when a resource is selected */
|
|
3120
|
-
onSelect: (resourceId: string) => void;
|
|
3121
|
-
/** Initial search term */
|
|
3122
|
-
searchTerm?: string;
|
|
3123
|
-
/** Optional translation support */
|
|
3124
|
-
translations?: {
|
|
3125
|
-
title?: string;
|
|
3126
|
-
placeholder?: string;
|
|
3127
|
-
searching?: string;
|
|
3128
|
-
noResults?: string;
|
|
3129
|
-
};
|
|
3130
|
-
}
|
|
3131
3243
|
|
|
3132
3244
|
/**
|
|
3133
3245
|
* Skip links for keyboard navigation accessibility
|
|
@@ -3139,9 +3251,9 @@ declare function SkipLinks(): React$1.JSX.Element;
|
|
|
3139
3251
|
interface StatusDisplayProps {
|
|
3140
3252
|
isFullyAuthenticated?: boolean;
|
|
3141
3253
|
isAuthenticated?: boolean;
|
|
3142
|
-
|
|
3254
|
+
hasValidGatewayToken?: boolean;
|
|
3143
3255
|
}
|
|
3144
|
-
declare function StatusDisplay({ isFullyAuthenticated, isAuthenticated,
|
|
3256
|
+
declare function StatusDisplay({ isFullyAuthenticated, isAuthenticated, hasValidGatewayToken }: StatusDisplayProps): React$1.JSX.Element;
|
|
3145
3257
|
|
|
3146
3258
|
declare function SessionTimer(): React$1.JSX.Element | null;
|
|
3147
3259
|
|
|
@@ -3543,168 +3655,6 @@ interface AdminDevOpsPageProps {
|
|
|
3543
3655
|
}
|
|
3544
3656
|
declare function AdminDevOpsPage({ suggestedFeatures, theme, activePanel, translations: t, StatusDisplay, ToolbarPanels, Toolbar, }: AdminDevOpsPageProps): React__default.JSX.Element;
|
|
3545
3657
|
|
|
3546
|
-
/**
|
|
3547
|
-
* ExportCard — Backup trigger
|
|
3548
|
-
*
|
|
3549
|
-
* Pure React component. All state and handlers passed as props.
|
|
3550
|
-
*/
|
|
3551
|
-
interface ExportCardTranslations {
|
|
3552
|
-
title: string;
|
|
3553
|
-
description: string;
|
|
3554
|
-
exportButton: string;
|
|
3555
|
-
exporting: string;
|
|
3556
|
-
}
|
|
3557
|
-
interface ExportCardProps {
|
|
3558
|
-
onExport: () => void;
|
|
3559
|
-
isExporting: boolean;
|
|
3560
|
-
translations: ExportCardTranslations;
|
|
3561
|
-
}
|
|
3562
|
-
declare function ExportCard({ onExport, isExporting, translations: t }: ExportCardProps): React$1.JSX.Element;
|
|
3563
|
-
|
|
3564
|
-
/**
|
|
3565
|
-
* ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
|
|
3566
|
-
* coordination helpers, scroll-to-annotation signals. Lives on
|
|
3567
|
-
* `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
|
|
3568
|
-
* because panel toggles and shell chrome must work regardless of
|
|
3569
|
-
* whether a KB session is active.
|
|
3570
|
-
*
|
|
3571
|
-
* Channels: `panel:toggle`, `panel:open`, `panel:close`.
|
|
3572
|
-
*/
|
|
3573
|
-
|
|
3574
|
-
type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
|
|
3575
|
-
declare const COMMON_PANELS: readonly ToolbarPanelType[];
|
|
3576
|
-
declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
|
|
3577
|
-
interface ShellStateUnit extends StateUnit {
|
|
3578
|
-
activePanel$: Observable<ToolbarPanelType | null>;
|
|
3579
|
-
scrollToAnnotationId$: Observable<string | null>;
|
|
3580
|
-
panelInitialTab$: Observable<{
|
|
3581
|
-
tab: string;
|
|
3582
|
-
generation: number;
|
|
3583
|
-
} | null>;
|
|
3584
|
-
openPanel(panel: string): void;
|
|
3585
|
-
closePanel(): void;
|
|
3586
|
-
togglePanel(panel: string): void;
|
|
3587
|
-
onScrollCompleted(): void;
|
|
3588
|
-
}
|
|
3589
|
-
interface ShellStateUnitOptions {
|
|
3590
|
-
initialPanel?: ToolbarPanelType | null;
|
|
3591
|
-
onPanelChange?: (panel: ToolbarPanelType | null) => void;
|
|
3592
|
-
}
|
|
3593
|
-
declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
|
|
3594
|
-
|
|
3595
|
-
interface ImportPreview {
|
|
3596
|
-
format: string;
|
|
3597
|
-
version: number;
|
|
3598
|
-
sourceUrl: string;
|
|
3599
|
-
stats: Record<string, number>;
|
|
3600
|
-
}
|
|
3601
|
-
interface ExchangeStateUnit extends StateUnit {
|
|
3602
|
-
browse: ShellStateUnit;
|
|
3603
|
-
selectedFile$: Observable<File | null>;
|
|
3604
|
-
preview$: Observable<ImportPreview | null>;
|
|
3605
|
-
importPhase$: Observable<string | null>;
|
|
3606
|
-
importMessage$: Observable<string | undefined>;
|
|
3607
|
-
importResult$: Observable<Record<string, unknown> | undefined>;
|
|
3608
|
-
isExporting$: Observable<boolean>;
|
|
3609
|
-
isImporting$: Observable<boolean>;
|
|
3610
|
-
selectFile(file: File): void;
|
|
3611
|
-
cancelImport(): void;
|
|
3612
|
-
doExport(): Promise<{
|
|
3613
|
-
blob: Blob;
|
|
3614
|
-
filename: string;
|
|
3615
|
-
}>;
|
|
3616
|
-
doImport(): Promise<void>;
|
|
3617
|
-
}
|
|
3618
|
-
declare function createExchangeStateUnit(browse: ShellStateUnit, exportFn: (params?: {
|
|
3619
|
-
includeArchived?: boolean;
|
|
3620
|
-
}) => Promise<BackendDownload>, importFn: (file: File) => Observable<ProgressEvent>): ExchangeStateUnit;
|
|
3621
|
-
|
|
3622
|
-
/**
|
|
3623
|
-
* ImportCard — File drop zone, preview, and import trigger
|
|
3624
|
-
*
|
|
3625
|
-
* Pure React component. All state and handlers passed as props.
|
|
3626
|
-
*/
|
|
3627
|
-
|
|
3628
|
-
interface ImportCardTranslations {
|
|
3629
|
-
title: string;
|
|
3630
|
-
description: string;
|
|
3631
|
-
dropzoneLabel: string;
|
|
3632
|
-
dropzoneActive: string;
|
|
3633
|
-
detectedFormat: string;
|
|
3634
|
-
statsPreview: string;
|
|
3635
|
-
importButton: string;
|
|
3636
|
-
importing: string;
|
|
3637
|
-
importConfirmTitle: string;
|
|
3638
|
-
importConfirmMessage: string;
|
|
3639
|
-
confirmImport: string;
|
|
3640
|
-
cancelImport: string;
|
|
3641
|
-
}
|
|
3642
|
-
interface ImportCardProps {
|
|
3643
|
-
onFileSelected: (file: File) => void;
|
|
3644
|
-
onImport: () => void;
|
|
3645
|
-
onCancel: () => void;
|
|
3646
|
-
selectedFile: File | null;
|
|
3647
|
-
preview: ImportPreview | null;
|
|
3648
|
-
isImporting: boolean;
|
|
3649
|
-
translations: ImportCardTranslations;
|
|
3650
|
-
}
|
|
3651
|
-
declare function ImportCard({ onFileSelected, onImport, onCancel, selectedFile, preview, isImporting, translations: t, }: ImportCardProps): React__default.JSX.Element;
|
|
3652
|
-
|
|
3653
|
-
/**
|
|
3654
|
-
* ImportProgress — Shows SSE-driven progress during restore
|
|
3655
|
-
*
|
|
3656
|
-
* Pure React component. All state passed as props.
|
|
3657
|
-
*/
|
|
3658
|
-
interface ImportProgressTranslations {
|
|
3659
|
-
phaseStarted: string;
|
|
3660
|
-
phaseComplete: string;
|
|
3661
|
-
phaseError: string;
|
|
3662
|
-
statsEventsReplayed: string;
|
|
3663
|
-
statsResourcesCreated: string;
|
|
3664
|
-
statsAnnotationsCreated: string;
|
|
3665
|
-
statsEntityTypesAdded: string;
|
|
3666
|
-
}
|
|
3667
|
-
interface ImportProgressProps {
|
|
3668
|
-
phase: string;
|
|
3669
|
-
message?: string;
|
|
3670
|
-
result?: Record<string, unknown>;
|
|
3671
|
-
translations: ImportProgressTranslations;
|
|
3672
|
-
}
|
|
3673
|
-
declare function ImportProgress({ phase, message, result, translations: t }: ImportProgressProps): React$1.JSX.Element;
|
|
3674
|
-
|
|
3675
|
-
/**
|
|
3676
|
-
* AdminExchangePage — Backup/Restore admin page
|
|
3677
|
-
*
|
|
3678
|
-
* Pure React component. All state and handlers passed as props.
|
|
3679
|
-
*/
|
|
3680
|
-
|
|
3681
|
-
interface AdminExchangePageTranslations {
|
|
3682
|
-
title: string;
|
|
3683
|
-
subtitle: string;
|
|
3684
|
-
export: ExportCardTranslations;
|
|
3685
|
-
import: ImportCardTranslations;
|
|
3686
|
-
progress: ImportProgressTranslations;
|
|
3687
|
-
}
|
|
3688
|
-
interface AdminExchangePageProps {
|
|
3689
|
-
onExport: () => void;
|
|
3690
|
-
isExporting: boolean;
|
|
3691
|
-
onFileSelected: (file: File) => void;
|
|
3692
|
-
onImport: () => void;
|
|
3693
|
-
onCancelImport: () => void;
|
|
3694
|
-
selectedFile: File | null;
|
|
3695
|
-
preview: ImportCardProps['preview'];
|
|
3696
|
-
isImporting: boolean;
|
|
3697
|
-
importPhase: string | null;
|
|
3698
|
-
importMessage?: string | undefined;
|
|
3699
|
-
importResult?: Record<string, unknown> | undefined;
|
|
3700
|
-
theme: 'light' | 'dark' | 'system';
|
|
3701
|
-
activePanel: string | null;
|
|
3702
|
-
translations: AdminExchangePageTranslations;
|
|
3703
|
-
ToolbarPanels: React__default.ComponentType<any>;
|
|
3704
|
-
Toolbar: React__default.ComponentType<any>;
|
|
3705
|
-
}
|
|
3706
|
-
declare function AdminExchangePage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminExchangePageProps): React__default.JSX.Element;
|
|
3707
|
-
|
|
3708
3658
|
/**
|
|
3709
3659
|
* AdminSecurityPage Component
|
|
3710
3660
|
*
|
|
@@ -3746,40 +3696,6 @@ interface AdminSecurityPageProps {
|
|
|
3746
3696
|
}
|
|
3747
3697
|
declare function AdminSecurityPage({ providers, allowedDomains, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: AdminSecurityPageProps): React__default.JSX.Element;
|
|
3748
3698
|
|
|
3749
|
-
/**
|
|
3750
|
-
* LinkedDataPage — JSON-LD Export/Import moderation page
|
|
3751
|
-
*
|
|
3752
|
-
* Pure React component. All state and handlers passed as props.
|
|
3753
|
-
* Reuses ExportCard, ImportCard, and ImportProgress from admin-exchange.
|
|
3754
|
-
*/
|
|
3755
|
-
|
|
3756
|
-
interface LinkedDataPageTranslations {
|
|
3757
|
-
title: string;
|
|
3758
|
-
subtitle: string;
|
|
3759
|
-
export: ExportCardTranslations;
|
|
3760
|
-
import: ImportCardTranslations;
|
|
3761
|
-
progress: ImportProgressTranslations;
|
|
3762
|
-
}
|
|
3763
|
-
interface LinkedDataPageProps {
|
|
3764
|
-
onExport: () => void;
|
|
3765
|
-
isExporting: boolean;
|
|
3766
|
-
onFileSelected: (file: File) => void;
|
|
3767
|
-
onImport: () => void;
|
|
3768
|
-
onCancelImport: () => void;
|
|
3769
|
-
selectedFile: File | null;
|
|
3770
|
-
preview: ImportCardProps['preview'];
|
|
3771
|
-
isImporting: boolean;
|
|
3772
|
-
importPhase: string | null;
|
|
3773
|
-
importMessage?: string | undefined;
|
|
3774
|
-
importResult?: Record<string, unknown> | undefined;
|
|
3775
|
-
theme: 'light' | 'dark' | 'system';
|
|
3776
|
-
activePanel: string | null;
|
|
3777
|
-
translations: LinkedDataPageTranslations;
|
|
3778
|
-
ToolbarPanels: React__default.ComponentType<any>;
|
|
3779
|
-
Toolbar: React__default.ComponentType<any>;
|
|
3780
|
-
}
|
|
3781
|
-
declare function LinkedDataPage({ onExport, isExporting, onFileSelected, onImport, onCancelImport, selectedFile, preview, isImporting, importPhase, importMessage, importResult, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: LinkedDataPageProps): React__default.JSX.Element;
|
|
3782
|
-
|
|
3783
3699
|
/**
|
|
3784
3700
|
* AdminUsersPage Component
|
|
3785
3701
|
*
|
|
@@ -3873,26 +3789,26 @@ declare function AdminUsersPage({ users, userStats, isLoadingUsers, isLoadingSta
|
|
|
3873
3789
|
* Supports both Google OAuth and email/password credentials.
|
|
3874
3790
|
* No Next.js dependencies - all data via props.
|
|
3875
3791
|
*
|
|
3876
|
-
* When
|
|
3877
|
-
* When
|
|
3792
|
+
* When gatewayUrl is provided it is shown as a locked read-only field.
|
|
3793
|
+
* When gatewayUrl is omitted the user must enter a gateway URL to connect to.
|
|
3878
3794
|
*/
|
|
3879
3795
|
|
|
3880
3796
|
interface SignInFormProps {
|
|
3881
3797
|
/**
|
|
3882
3798
|
* Callback when user clicks Google sign-in.
|
|
3883
|
-
* Receives the
|
|
3799
|
+
* Receives the gateway URL (either the locked one or what the user typed).
|
|
3884
3800
|
*/
|
|
3885
|
-
onGoogleSignIn: (
|
|
3801
|
+
onGoogleSignIn: (gatewayUrl: string) => Promise<void>;
|
|
3886
3802
|
/**
|
|
3887
3803
|
* Callback when user submits email/password credentials.
|
|
3888
|
-
* Receives the
|
|
3804
|
+
* Receives the gateway URL along with email and password.
|
|
3889
3805
|
*/
|
|
3890
|
-
onCredentialsSignIn?: ((
|
|
3806
|
+
onCredentialsSignIn?: ((gatewayUrl: string, email: string, password: string) => Promise<void>) | undefined;
|
|
3891
3807
|
/**
|
|
3892
|
-
* Pre-filled
|
|
3808
|
+
* Pre-filled gateway URL. When provided the field is read-only (re-auth to known workspace).
|
|
3893
3809
|
* When omitted the user enters the URL themselves (new connection).
|
|
3894
3810
|
*/
|
|
3895
|
-
|
|
3811
|
+
gatewayUrl?: string;
|
|
3896
3812
|
/**
|
|
3897
3813
|
* Error message to display (if any)
|
|
3898
3814
|
*/
|
|
@@ -3917,8 +3833,8 @@ interface SignInFormProps {
|
|
|
3917
3833
|
welcomeBack: string;
|
|
3918
3834
|
signInPrompt: string;
|
|
3919
3835
|
continueWithGoogle: string;
|
|
3920
|
-
|
|
3921
|
-
|
|
3836
|
+
gatewayUrlLabel: string;
|
|
3837
|
+
gatewayUrlPlaceholder: string;
|
|
3922
3838
|
emailLabel: string;
|
|
3923
3839
|
emailPlaceholder: string;
|
|
3924
3840
|
passwordLabel: string;
|
|
@@ -3930,9 +3846,9 @@ interface SignInFormProps {
|
|
|
3930
3846
|
backToHome: string;
|
|
3931
3847
|
learnMore: string;
|
|
3932
3848
|
signUpInstead: string;
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
3849
|
+
errorGatewayUrlRequired: string;
|
|
3850
|
+
errorGatewayUrlInvalid: string;
|
|
3851
|
+
errorGatewayUrlUnreachable: string;
|
|
3936
3852
|
errorEmailRequired: string;
|
|
3937
3853
|
errorPasswordRequired: string;
|
|
3938
3854
|
tagline: string;
|
|
@@ -3941,10 +3857,10 @@ interface SignInFormProps {
|
|
|
3941
3857
|
/**
|
|
3942
3858
|
* SignInForm - Main sign-in / connect component.
|
|
3943
3859
|
*
|
|
3944
|
-
* When
|
|
3945
|
-
* When
|
|
3860
|
+
* When gatewayUrl is provided (re-auth to known workspace) the URL field is locked.
|
|
3861
|
+
* When gatewayUrl is omitted (new connection) the user enters the URL themselves.
|
|
3946
3862
|
*/
|
|
3947
|
-
declare function SignInForm({ onGoogleSignIn, onCredentialsSignIn,
|
|
3863
|
+
declare function SignInForm({ onGoogleSignIn, onCredentialsSignIn, gatewayUrl, error, showCredentialsAuth, isLoading, translations: t, }: SignInFormProps): React__default.JSX.Element;
|
|
3948
3864
|
|
|
3949
3865
|
/**
|
|
3950
3866
|
* SignUpForm - Pure React component for Google OAuth sign-up
|
|
@@ -4161,6 +4077,37 @@ interface TagSchemasPageProps {
|
|
|
4161
4077
|
}
|
|
4162
4078
|
declare function TagSchemasPage({ schemas, isLoading, theme, activePanel, translations: t, ToolbarPanels, Toolbar, }: TagSchemasPageProps): React__default.JSX.Element;
|
|
4163
4079
|
|
|
4080
|
+
/**
|
|
4081
|
+
* ShellStateUnit — app-shell state: which toolbar panel is open, tab-bar
|
|
4082
|
+
* coordination helpers, scroll-to-annotation signals. Lives on
|
|
4083
|
+
* `SemiontBrowser`'s app-scoped bus (not the per-session client bus)
|
|
4084
|
+
* because panel toggles and shell chrome must work regardless of
|
|
4085
|
+
* whether a KB session is active.
|
|
4086
|
+
*
|
|
4087
|
+
* Channels: `panel:toggle`, `panel:open`, `panel:close`.
|
|
4088
|
+
*/
|
|
4089
|
+
|
|
4090
|
+
type ToolbarPanelType = 'history' | 'info' | 'annotations' | 'settings' | 'collaboration' | 'user' | 'jsonld' | 'knowledge-base';
|
|
4091
|
+
declare const COMMON_PANELS: readonly ToolbarPanelType[];
|
|
4092
|
+
declare const RESOURCE_PANELS: readonly ToolbarPanelType[];
|
|
4093
|
+
interface ShellStateUnit extends StateUnit {
|
|
4094
|
+
activePanel$: Observable<ToolbarPanelType | null>;
|
|
4095
|
+
scrollToAnnotationId$: Observable<string | null>;
|
|
4096
|
+
panelInitialTab$: Observable<{
|
|
4097
|
+
tab: AnnotatorKey;
|
|
4098
|
+
generation: number;
|
|
4099
|
+
} | null>;
|
|
4100
|
+
openPanel(panel: string): void;
|
|
4101
|
+
closePanel(): void;
|
|
4102
|
+
togglePanel(panel: string): void;
|
|
4103
|
+
onScrollCompleted(): void;
|
|
4104
|
+
}
|
|
4105
|
+
interface ShellStateUnitOptions {
|
|
4106
|
+
initialPanel?: ToolbarPanelType | null;
|
|
4107
|
+
onPanelChange?: (panel: ToolbarPanelType | null) => void;
|
|
4108
|
+
}
|
|
4109
|
+
declare function createShellStateUnit(browser: SemiontBrowser, options?: ShellStateUnitOptions): ShellStateUnit;
|
|
4110
|
+
|
|
4164
4111
|
/**
|
|
4165
4112
|
* A cache-backed list in its real states.
|
|
4166
4113
|
*
|
|
@@ -4198,26 +4145,15 @@ interface ListState<T> {
|
|
|
4198
4145
|
retry(): void;
|
|
4199
4146
|
}
|
|
4200
4147
|
|
|
4201
|
-
type ComposeMode = 'new' | 'clone'
|
|
4148
|
+
type ComposeMode = 'new' | 'clone';
|
|
4202
4149
|
interface ComposeParams {
|
|
4203
4150
|
mode?: string | undefined;
|
|
4204
4151
|
token?: string | undefined;
|
|
4205
|
-
annotationUri?: string | undefined;
|
|
4206
|
-
sourceDocumentId?: string | undefined;
|
|
4207
|
-
name?: string | undefined;
|
|
4208
|
-
entityTypes?: string | undefined;
|
|
4209
|
-
storedContext?: string | undefined;
|
|
4210
4152
|
}
|
|
4211
4153
|
interface CloneData {
|
|
4212
4154
|
sourceResource: ResourceDescriptor;
|
|
4213
4155
|
sourceContent: string;
|
|
4214
4156
|
}
|
|
4215
|
-
interface ReferenceData {
|
|
4216
|
-
annotationUri: string;
|
|
4217
|
-
sourceDocumentId: string;
|
|
4218
|
-
name: string;
|
|
4219
|
-
entityTypes: string[];
|
|
4220
|
-
}
|
|
4221
4157
|
interface SaveResourceParams$1 {
|
|
4222
4158
|
mode: ComposeMode;
|
|
4223
4159
|
name: string;
|
|
@@ -4229,16 +4165,12 @@ interface SaveResourceParams$1 {
|
|
|
4229
4165
|
entityTypes?: string[];
|
|
4230
4166
|
language: string;
|
|
4231
4167
|
archiveOriginal?: boolean;
|
|
4232
|
-
annotationUri?: string;
|
|
4233
|
-
sourceDocumentId?: string;
|
|
4234
4168
|
}
|
|
4235
4169
|
interface ComposePageStateUnit extends StateUnit {
|
|
4236
4170
|
browse: ShellStateUnit;
|
|
4237
4171
|
mode$: Observable<ComposeMode>;
|
|
4238
4172
|
loading$: Observable<boolean>;
|
|
4239
4173
|
cloneData$: Observable<CloneData | null>;
|
|
4240
|
-
referenceData$: Observable<ReferenceData | null>;
|
|
4241
|
-
gatheredContext$: Observable<GatheredContext | null>;
|
|
4242
4174
|
entityTypes: ListState<string[]>;
|
|
4243
4175
|
/**
|
|
4244
4176
|
* Live upload-progress for the in-flight `save(...)` call. Emits the
|
|
@@ -4255,15 +4187,14 @@ declare function createComposePageStateUnit(session: SemiontSession, browse: She
|
|
|
4255
4187
|
* ResourceComposePage Component
|
|
4256
4188
|
*
|
|
4257
4189
|
* Pure React component for creating and editing resources.
|
|
4258
|
-
* Supports
|
|
4190
|
+
* Supports two modes: new resource and clone. (Reference completion moved
|
|
4191
|
+
* into the resolve wizard — COMPOSE-IN-MODAL.)
|
|
4259
4192
|
* All dependencies passed as props - no Next.js hooks!
|
|
4260
4193
|
*/
|
|
4261
4194
|
|
|
4262
4195
|
interface ResourceComposePageProps {
|
|
4263
|
-
mode: 'new' | 'clone'
|
|
4196
|
+
mode: 'new' | 'clone';
|
|
4264
4197
|
cloneData?: CloneData | null;
|
|
4265
|
-
referenceData?: ReferenceData | null;
|
|
4266
|
-
gatheredContext?: GatheredContext | null;
|
|
4267
4198
|
availableEntityTypes: string[];
|
|
4268
4199
|
initialLocale: string;
|
|
4269
4200
|
theme: 'light' | 'dark';
|
|
@@ -4281,10 +4212,7 @@ interface ResourceComposePageProps {
|
|
|
4281
4212
|
translations: {
|
|
4282
4213
|
title: string;
|
|
4283
4214
|
titleEditClone: string;
|
|
4284
|
-
titleCompleteReference: string;
|
|
4285
4215
|
subtitleClone: string;
|
|
4286
|
-
subtitleReference: string;
|
|
4287
|
-
linkedNoticePrefix: string;
|
|
4288
4216
|
resourceName: string;
|
|
4289
4217
|
resourceNamePlaceholder: string;
|
|
4290
4218
|
entityTypes: string;
|
|
@@ -4306,16 +4234,14 @@ interface ResourceComposePageProps {
|
|
|
4306
4234
|
cancel: string;
|
|
4307
4235
|
saving: string;
|
|
4308
4236
|
creating: string;
|
|
4309
|
-
creatingAndLinking: string;
|
|
4310
4237
|
saveClonedResource: string;
|
|
4311
|
-
createAndLinkResource: string;
|
|
4312
4238
|
createResource: string;
|
|
4313
4239
|
};
|
|
4314
4240
|
ToolbarPanels: React__default.ComponentType<any>;
|
|
4315
4241
|
Toolbar: React__default.ComponentType<any>;
|
|
4316
4242
|
}
|
|
4317
4243
|
interface SaveResourceParams {
|
|
4318
|
-
mode: 'new' | 'clone'
|
|
4244
|
+
mode: 'new' | 'clone';
|
|
4319
4245
|
name: string;
|
|
4320
4246
|
storageUri: string;
|
|
4321
4247
|
content?: string;
|
|
@@ -4325,10 +4251,8 @@ interface SaveResourceParams {
|
|
|
4325
4251
|
entityTypes?: string[];
|
|
4326
4252
|
language: string;
|
|
4327
4253
|
archiveOriginal?: boolean;
|
|
4328
|
-
annotationUri?: string;
|
|
4329
|
-
sourceDocumentId?: string;
|
|
4330
4254
|
}
|
|
4331
|
-
declare function ResourceComposePage({ mode, cloneData,
|
|
4255
|
+
declare function ResourceComposePage({ mode, cloneData, availableEntityTypes, initialLocale, theme, hoverDelayMs, activePanel, onSaveResource, onCancel, uploadProgress, translations: t, ToolbarPanels, Toolbar, }: ResourceComposePageProps): React__default.JSX.Element;
|
|
4332
4256
|
|
|
4333
4257
|
/**
|
|
4334
4258
|
* Inline upload-progress affordance for the compose page.
|
|
@@ -4499,6 +4423,7 @@ interface ResourceViewerPageProps {
|
|
|
4499
4423
|
* @subscribes yield:clone - Clone the current resource
|
|
4500
4424
|
* @subscribes beckon:sparkle - Trigger sparkle animation
|
|
4501
4425
|
* @subscribes mark:added - Annotation was created (sparkle)
|
|
4426
|
+
* @subscribes mark:body-updated - Reference resolved via a linking-add operation (sparkle, both loci)
|
|
4502
4427
|
* @subscribes browse:resource-open - Open a resource in the viewer (local links + the launcher's tour verbs)
|
|
4503
4428
|
* @subscribes browse:entity-type-clicked - Navigate filtered by entity type
|
|
4504
4429
|
*
|
|
@@ -4684,5 +4609,5 @@ declare function useShellStateUnit(): ShellStateUnit;
|
|
|
4684
4609
|
*/
|
|
4685
4610
|
declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
|
|
4686
4611
|
|
|
4687
|
-
export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage,
|
|
4688
|
-
export type { AdminDevOpsPageProps,
|
|
4612
|
+
export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminSecurityPage, AdminUsersPage, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistProgress, AssistSection, AssistShell, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, DownloadFileLink, EntityTagsPage, EntityTypeBadges, ErrorBoundary, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageAnnotateRenderer, ImageBrowseRenderer, ImageURLSchema, ImageViewer, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LineNumbersProvider, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfAnnotateRenderer, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextAnnotateRenderer, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, annotatorKeyForMotivation, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultAnnotateRenderers, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, mediaUrl, resolveAnnotationSpans, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useCollaborators, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKBDiscovery, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useSessionStateUnit, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
|
|
4613
|
+
export type { AdminDevOpsPageProps, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotateMediaRendererProps, AnnotateMediaRenderers, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AnnotatorKey, AssistDataType, AssistProgressProps, AssistProgressTranslations, AssistShellProps, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, HoverEmitterProps, KBDiscoveryOptions, KBDiscoveryResult, KeyboardShortcut, LinkComponentProps, MediaRendererProps, Motivation$7 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceHover, ReferenceWizardModalProps, ResolvedAnnotationSpan, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceViewerPageProps, ResourceViewerPageStateUnit, RouteBuilder, SaveResourceParams$1 as SaveResourceParams, SearchModalProps, SelectionMotivation, SelectorType, SemiontProviderProps, SemiontResource$1 as SemiontResource, SessionStateUnit, ShadowToken, ShapeType, ShellStateUnit, ShellStateUnitOptions, SignInFormProps, SignUpFormProps, SimpleNavigationItem, SimpleNavigationProps, SortableResourceTabProps, SpacingToken, TagSchemasPageProps, TextNodeEntry, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseCollaboratorsResult, UseMediaTokenResult, UseResourceContentResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };
|