@semiont/react-ui 0.5.10 → 0.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +1 -1
  2. package/dist/{PdfAnnotationCanvas.client-P37SXBWQ.js → PdfAnnotationCanvas.client-KWQ7XDWT.js} +4 -1
  3. package/dist/PdfAnnotationCanvas.client-KWQ7XDWT.js.map +1 -0
  4. package/dist/{chunk-5LFFAVDI.js → chunk-PFUXQPWJ.js} +96 -96
  5. package/dist/{chunk-5LFFAVDI.js.map → chunk-PFUXQPWJ.js.map} +1 -1
  6. package/dist/index.css +150 -112
  7. package/dist/index.css.map +1 -1
  8. package/dist/index.d.ts +287 -39
  9. package/dist/index.js +2525 -2284
  10. package/dist/index.js.map +1 -1
  11. package/dist/test-utils.js +7 -2
  12. package/dist/test-utils.js.map +1 -1
  13. package/package.json +6 -6
  14. package/src/components/ResourceTagsInline.tsx +94 -11
  15. package/src/components/StatusDisplay.css +36 -0
  16. package/src/components/__tests__/ResourceTagsInline.test.tsx +101 -3
  17. package/src/components/annotation/AnnotateToolbar.tsx +53 -28
  18. package/src/components/annotation/__tests__/AnnotateToolbar.display.test.tsx +76 -0
  19. package/src/components/annotation/__tests__/AnnotateToolbar.test.tsx +124 -360
  20. package/src/components/image-annotation/SvgDrawingCanvas.tsx +5 -1
  21. package/src/components/pdf-annotation/PdfAnnotationCanvas.tsx +5 -0
  22. package/src/components/pdf-annotation/__tests__/PdfAnnotationCanvas.test.tsx +6 -6
  23. package/src/components/resource/AnnotateView.tsx +59 -38
  24. package/src/components/resource/BrowseView.tsx +159 -133
  25. package/src/components/resource/ResourceViewer.tsx +119 -128
  26. package/src/components/resource/__tests__/AnnotateView.embeddable.test.tsx +55 -0
  27. package/src/components/resource/__tests__/BrowseView.embeddable.test.tsx +49 -0
  28. package/src/components/resource/__tests__/BrowseView.links.test.tsx +60 -0
  29. package/src/components/resource/__tests__/BrowseView.overlay-async.test.tsx +113 -0
  30. package/src/components/resource/__tests__/BrowseView.reference-hover.test.tsx +161 -0
  31. package/src/components/resource/__tests__/BrowseView.registry.test.tsx +43 -0
  32. package/src/components/resource/__tests__/BrowseView.test.tsx +35 -22
  33. package/src/components/resource/__tests__/ResourceViewer.embeddable.test.tsx +63 -0
  34. package/src/components/resource/__tests__/ResourceViewer.mode-switch.test.tsx +12 -7
  35. package/src/components/resource/__tests__/ResourceViewer.toolbar-opt-out.test.tsx +135 -0
  36. package/src/components/resource/__tests__/ResourceViewer.toolbar-prefs.test.tsx +200 -0
  37. package/src/components/resource/__tests__/browse-renderers.test.tsx +34 -0
  38. package/src/components/resource/__tests__/inline-embedding.test.tsx +81 -0
  39. package/src/components/resource/__tests__/media-completeness.test.tsx +88 -0
  40. package/src/components/resource/browse-renderers.tsx +63 -0
  41. package/src/components/resource/panels/AssessmentPanel.tsx +4 -0
  42. package/src/components/resource/panels/CommentsPanel.tsx +4 -0
  43. package/src/components/resource/panels/HighlightPanel.tsx +4 -0
  44. package/src/components/resource/panels/ReferencesPanel.tsx +4 -0
  45. package/src/components/resource/panels/TaggingPanel.tsx +4 -0
  46. package/src/components/resource/panels/UnifiedAnnotationsPanel.tsx +5 -2
  47. package/src/components/resource/panels/__tests__/AssessmentPanel.test.tsx +1 -0
  48. package/src/components/resource/panels/__tests__/CommentsPanel.test.tsx +1 -0
  49. package/src/components/resource/panels/__tests__/HighlightPanel.annotationProgress.test.tsx +16 -16
  50. package/src/components/resource/panels/__tests__/ReferencesPanel.observable-flow.test.tsx +1 -1
  51. package/src/components/resource/panels/__tests__/ReferencesPanel.test.tsx +1 -0
  52. package/src/components/resource/panels/__tests__/TaggingPanel.test.tsx +1 -0
  53. package/src/components/toolbar/Toolbar.css +14 -0
  54. package/src/features/resource-viewer/__tests__/ResourceViewerPage.test.tsx +7 -17
  55. package/src/features/resource-viewer/components/ResourceViewerPage.tsx +40 -17
  56. package/src/features/resource-viewer/state/resource-viewer-page-state-unit.ts +2 -14
  57. package/src/styles/features/resource-viewer.css +19 -0
  58. package/dist/PdfAnnotationCanvas.client-P37SXBWQ.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -2,11 +2,11 @@ import * as _semiont_react_ui from '@semiont/react-ui';
2
2
  import { Annotation, ResourceId, Selector, components, ResourceDescriptor, ValidationResult, StateUnit, GatheredContext, EventMap, AnnotationId, AnchorStrategy, AnchorConfidence, StoredEventLike, ConnectionState, BackendDownload, ProgressEvent, AccessToken } from '@semiont/core';
3
3
  export { Annotation } from '@semiont/core';
4
4
  import * as React$1 from 'react';
5
- import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo, Ref } from 'react';
5
+ import React__default, { ComponentType, ReactNode, KeyboardEvent as KeyboardEvent$1, Component, ErrorInfo, MouseEvent, Ref } from 'react';
6
6
  import * as _codemirror_state from '@codemirror/state';
7
7
  import { HighlightStyle } from '@codemirror/language';
8
8
  import { WidgetType } from '@codemirror/view';
9
- import { SemiontBrowser, SessionStorage, SessionFactory, SemiontSession, OpenResource, TagSchema, UploadProgress, SemiontClient, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
9
+ import { SemiontClient, SemiontSession, SemiontBrowser, SessionStorage, SessionFactory, OpenResource, TagSchema, UploadProgress, BeckonStateUnit, MarkStateUnit, GatherStateUnit, YieldStateUnit, ReferencedByEntry } from '@semiont/sdk';
10
10
  export { BeckonStateUnit, GatherStateUnit, GenerateDocumentOptions, HOVER_DELAY_MS, HoverHandlers, MarkStateUnit, MatchStateUnit, PendingAnnotation, SearchPipeline, SearchPipelineOptions, SearchState, TagSchema, YieldStateUnit, createBeckonStateUnit, createGatherStateUnit, createHoverHandlers, createMarkStateUnit, createMatchStateUnit, createSearchPipeline, createYieldStateUnit } from '@semiont/sdk';
11
11
  import { Observable } from 'rxjs';
12
12
 
@@ -359,26 +359,38 @@ declare function hideWidgetPreview(container: HTMLElement): void;
359
359
  type SelectionMotivation = 'linking' | 'highlighting' | 'assessing' | 'commenting' | 'tagging';
360
360
  type ClickAction = 'detail' | 'follow' | 'jsonld' | 'deleting';
361
361
  type ShapeType = 'rectangle' | 'circle' | 'polygon';
362
+ /** The bar's composable controls, in fixed render order. */
363
+ type ToolbarPart = 'clickAction' | 'mode' | 'selection' | 'shape';
362
364
  interface AnnotateToolbarProps {
363
365
  selectedMotivation: SelectionMotivation | null;
364
366
  selectedClick: ClickAction;
365
- showSelectionGroup?: boolean;
366
367
  showDeleteButton?: boolean;
367
- showShapeGroup?: boolean;
368
368
  selectedShape?: ShapeType;
369
369
  mediaType?: string | null;
370
370
  annotateMode: boolean;
371
371
  annotators: Record<string, Annotator>;
372
+ /**
373
+ * Which controls to render (composition over CSS hiding). Default: all four.
374
+ * Order is fixed (click, mode, selection, shape); shape stays media-gated.
375
+ */
376
+ parts?: ToolbarPart[];
377
+ /**
378
+ * Purely presentational: each control reports the chosen value via its
379
+ * callback; the owner (viewer instance or host) applies it. The bar holds no
380
+ * pref state, emits no bus events, and touches no storage.
381
+ */
382
+ onModeChange?: (mode: boolean) => void;
383
+ onClickActionChange?: (action: ClickAction) => void;
384
+ onSelectionChange?: (motivation: SelectionMotivation | null) => void;
385
+ onShapeChange?: (shape: ShapeType) => void;
386
+ compact?: boolean;
372
387
  }
373
388
  /**
374
- * Toolbar for annotation controls with mode, selection, click, and shape options
375
- *
376
- * @emits mark:selection-changed - Selection motivation changed. Payload: { motivation: SelectionMotivation | null }
377
- * @emits mark:click-changed - Click action mode changed. Payload: { action: ClickAction }
378
- * @emits mark:shape-changed - Drawing shape changed. Payload: { shape: ShapeType }
379
- * @emits mark:mode-toggled - View mode toggled between browse and annotate. Payload: undefined
389
+ * Toolbar for annotation controls with mode, selection, click, and shape options.
390
+ * Purely presentational (TOOLBAR-PREFS-AS-PROPS): renders the given values for the
391
+ * given `parts` and reports choices via the on*Change callbacks no bus, no storage.
380
392
  */
381
- declare function AnnotateToolbar({ selectedMotivation, selectedClick, showSelectionGroup, showDeleteButton, showShapeGroup, selectedShape, mediaType, annotateMode, annotators }: AnnotateToolbarProps): React__default.JSX.Element;
393
+ declare function AnnotateToolbar({ selectedMotivation, selectedClick, showDeleteButton, selectedShape, mediaType, annotateMode, annotators, parts, onModeChange, onClickActionChange, onSelectionChange, onShapeChange, compact, }: AnnotateToolbarProps): React__default.JSX.Element;
382
394
 
383
395
  /**
384
396
  * Media Type Shape Support
@@ -392,10 +404,17 @@ declare function AnnotateToolbar({ selectedMotivation, selectedClick, showSelect
392
404
  */
393
405
  type SelectorType = 'fragment' | 'svg' | 'text';
394
406
  /**
395
- * Get supported annotation shapes for a given media type
407
+ * Get supported annotation shapes for a given media type.
396
408
  *
397
- * PDF: Only rectangles (FragmentSelector with RFC 3778 viewrect)
398
- * Images: All shapes (SvgSelector supports rect, circle, polygon)
409
+ * This set is the host-facing CONTRACT for "which shapes can this medium
410
+ * draw" gate shape UI on it directly.
411
+ *
412
+ * PDF: only rectangles (FragmentSelector with RFC 3778 viewrect).
413
+ * Images: all shapes (SvgSelector supports rect, circle, polygon).
414
+ * Everything else — including text media and absent/unknown types — supports
415
+ * NONE: those anchor by character offsets (TextPositionSelector /
416
+ * TextQuoteSelector), and no selector can carry a shape. Mirrors
417
+ * `getSelectorType`'s 'text' fallback.
399
418
  *
400
419
  * @param mediaType - MIME type of the resource (e.g., 'application/pdf', 'image/png')
401
420
  * @returns Array of supported shape types for annotation
@@ -840,8 +859,16 @@ declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T
840
859
  interface UseResourceContentResult {
841
860
  content: string;
842
861
  loading: boolean;
862
+ error: Error | null;
843
863
  }
844
- declare function useResourceContent(rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
864
+ /**
865
+ * Fetch + decode a resource's primary representation from a bare client — the
866
+ * content sibling of `useResourceLoader`/`useMediaToken` (bring-your-own-client;
867
+ * `null` → idle). Headless: errors are RETURNED, never toasted — the host
868
+ * decides chrome (the Browser page toasts; an embedded host may render inline
869
+ * or ignore). `enabled=false` fetches nothing (the binary/media-token path).
870
+ */
871
+ declare function useResourceContent(client: SemiontClient | null, rUri: ResourceId, resource: ResourceDescriptor, enabled?: boolean): UseResourceContentResult;
845
872
 
846
873
  interface ResourceGatherOptions {
847
874
  depth?: number;
@@ -865,6 +892,104 @@ interface UseResourceGatherResult {
865
892
  */
866
893
  declare function useResourceGather(): UseResourceGatherResult;
867
894
 
895
+ interface UseResourceLoaderResult {
896
+ resource: ResourceDescriptor | undefined;
897
+ annotations: AnnotationsCollection;
898
+ loading: boolean;
899
+ error: Error | null;
900
+ }
901
+ /**
902
+ * Load a resource + its annotations from a bare client — no page, no composite
903
+ * state unit, no providers. The lightweight alternative to `ResourceViewerPage`
904
+ * for a bring-your-own-session host; feed the result straight into `<ResourceViewer>`.
905
+ *
906
+ * `loading` is true until BOTH the resource and its annotation list have first
907
+ * emitted; `annotations` is bucketed via the shared `groupAnnotations`. A null
908
+ * client subscribes to nothing (stays loading) and re-subscribes when one arrives.
909
+ */
910
+ declare function useResourceLoader(client: SemiontClient | null, resourceId: ResourceId): UseResourceLoaderResult;
911
+
912
+ interface UseMediaTokenResult {
913
+ token: string | undefined;
914
+ loading: boolean;
915
+ }
916
+ /**
917
+ * Mint (and periodically refresh) a short-lived authed media token for a
918
+ * resource — the query param that makes `<img>` / PDF URLs load. Takes the
919
+ * client explicitly (not `useSemiont()`), so a bring-your-own-session host can
920
+ * use it with a bare session; the batteries-included page passes `session.client`.
921
+ */
922
+ declare function useMediaToken(client: SemiontClient | null, id: ResourceId): UseMediaTokenResult;
923
+
924
+ /**
925
+ * Subscribe to session-scoped bus events on an explicit `SemiontSession` — the
926
+ * provider-free counterpart to `useEventSubscriptions`. The embeddable viewer
927
+ * path takes its session as a prop (bring-your-own-session), so it can't reach
928
+ * the app-scoped `SemiontBrowser` bus; every channel it needs (`mark:*`,
929
+ * `browse:click`) is session-scoped anyway and reaches it via `session.subscribe`.
930
+ *
931
+ * Same stable-handler / stable-key semantics as `useEventSubscriptions`:
932
+ * handlers may change every render without re-subscribing; re-subscription
933
+ * happens only when the set of channel names or the session changes. A null
934
+ * session subscribes to nothing, and cleanly re-subscribes when one arrives.
935
+ */
936
+ declare function useSessionEventSubscriptions(session: SemiontSession | null, subscriptions: {
937
+ [K in keyof EventMap]?: (payload: EventMap[K]) => void;
938
+ }): void;
939
+
940
+ interface ToolbarPrefs {
941
+ annotateMode: boolean;
942
+ setAnnotateMode: (mode: boolean) => void;
943
+ clickAction: ClickAction;
944
+ setClickAction: (action: ClickAction) => void;
945
+ selectionMotivation: SelectionMotivation | null;
946
+ setSelectionMotivation: (motivation: SelectionMotivation | null) => void;
947
+ shape: ShapeType;
948
+ setShape: (shape: ShapeType) => void;
949
+ }
950
+ /**
951
+ * The POLICY layer for toolbar preferences (TOOLBAR-PREFS-AS-PROPS): one shared,
952
+ * localStorage-persisted prefs state — the Semiont Browser's global-toolbar UX,
953
+ * relocated from inside the components to a visible page-layer hook. Feed the
954
+ * returned values/setters to every viewer you compose (as its controlled props)
955
+ * and they stay in lockstep and survive remounts. The components themselves hold
956
+ * no persistence and no cross-instance sync; this hook is the one legitimate home
957
+ * for both. Keys are the historical ones, so existing users' prefs carry over.
958
+ *
959
+ * `selectorType` scopes the SHAPE pref exactly as before: per selector type
960
+ * (persisted only for 'svg'; 'fragment' is always rectangle).
961
+ */
962
+ declare function useToolbarPrefs(selectorType?: SelectorType): ToolbarPrefs;
963
+
964
+ /**
965
+ * A claimed `mark:requested` — the typed event payload (selector + motivation +
966
+ * source), re-exported rather than a parallel shape.
967
+ */
968
+ type PendingCreation = EventMap['mark:requested'];
969
+ /**
970
+ * The consuming half of the viewer's capture/policy split (HEADLESS-CREATION-SEAM).
971
+ *
972
+ * The viewer captures gestures and emits source-scoped `mark:requested`; this
973
+ * hook claims them for ONE viewer: an event is claimed iff
974
+ * `enabled && event.source === resourceId` — N mounted hooks on one session each
975
+ * claim only their own (the multi-mount contract MARK-REQUESTED-RESOURCE-SCOPE
976
+ * created). A new request for the same resource REPLACES an unresolved pending
977
+ * (the user reselected; the stale pending is abandoned).
978
+ *
979
+ * Headless by contract: no creation call, no UI, no toast in here — resolution
980
+ * (chooser flows, body forms, `mark.annotation`) is host policy. Session-first
981
+ * like every subscribing primitive (`session.subscribe` is the sanctioned
982
+ * generic-channel path); `null` → inert.
983
+ *
984
+ * @param session Session whose bus carries this viewer's events; null → inert.
985
+ * @param resourceId Claim only events whose `source` is this resource.
986
+ * @param enabled The host's annotate-mode gate — browse-mode viewers never claim.
987
+ */
988
+ declare function usePendingCreation(session: SemiontSession | null, resourceId: ResourceId, enabled: boolean): {
989
+ pending: PendingCreation | null;
990
+ clearPending: () => void;
991
+ };
992
+
868
993
  interface SemiontProviderProps {
869
994
  /** Inject a fully-constructed browser (tests, embedded hosts that build their own). Omit to use the default. */
870
995
  browser?: SemiontBrowser;
@@ -1305,10 +1430,23 @@ interface ResourceTagsInlineProps {
1305
1430
  resourceId: string;
1306
1431
  tags: string[];
1307
1432
  isEditing: boolean;
1433
+ /**
1434
+ * Commit: called ONCE per edit with the FULL new tag set (the host diffs —
1435
+ * its SDK call takes `(current, updated)`). Awaited; the editor renders
1436
+ * inert while the returned promise is pending.
1437
+ */
1308
1438
  onUpdate: (tags: string[]) => Promise<void>;
1309
1439
  disabled?: boolean;
1440
+ /**
1441
+ * The KB's registered entity types — the CONTROLLED VOCABULARY, host-supplied
1442
+ * (the component is session-less; hosts fetch via `browse.entityTypes()`).
1443
+ * Adds are a picker constrained to it: no free-text minting. Without it the
1444
+ * editor is REMOVAL-ONLY (it cannot offer valid candidates). Removal is never
1445
+ * vocabulary-gated — stale/unregistered tags must stay removable.
1446
+ */
1447
+ vocabulary?: string[];
1310
1448
  }
1311
- declare function ResourceTagsInline({ tags }: ResourceTagsInlineProps): React$1.JSX.Element | null;
1449
+ declare function ResourceTagsInline({ tags, isEditing, onUpdate, disabled, vocabulary, }: ResourceTagsInlineProps): React$1.JSX.Element | null;
1312
1450
 
1313
1451
  type ToastType = 'success' | 'error' | 'info' | 'warning';
1314
1452
  interface ToastMessage {
@@ -1418,6 +1556,8 @@ declare function AnnotationOverlay({ annotations, imageWidth, imageHeight, displ
1418
1556
  type DrawingMode = 'rectangle' | 'polygon' | 'circle' | 'freeform' | null;
1419
1557
  interface SvgDrawingCanvasProps {
1420
1558
  imageUrl: string;
1559
+ /** The '@id' of the annotated resource — stamped as `source` on mark:requested (multi-viewer routing). */
1560
+ resourceUri: string;
1421
1561
  existingAnnotations?: Annotation[];
1422
1562
  drawingMode: DrawingMode;
1423
1563
  selectedMotivation?: SelectionMotivation | null;
@@ -1432,7 +1572,7 @@ interface SvgDrawingCanvasProps {
1432
1572
  * @emits browse:click - Annotation clicked on canvas. Payload: { annotationId: string, motivation: Motivation }
1433
1573
  * @emits mark:requested - New annotation drawn on canvas. Payload: { selector: SvgSelector, motivation: SelectionMotivation }
1434
1574
  */
1435
- declare function SvgDrawingCanvas({ imageUrl, existingAnnotations, drawingMode, selectedMotivation, session, hoveredAnnotationId, selectedAnnotationId }: SvgDrawingCanvasProps): React__default.JSX.Element;
1575
+ declare function SvgDrawingCanvas({ imageUrl, resourceUri, existingAnnotations, drawingMode, selectedMotivation, session, hoveredAnnotationId, selectedAnnotationId }: SvgDrawingCanvasProps): React__default.JSX.Element;
1436
1576
 
1437
1577
  interface KeyboardShortcutsHelpModalProps {
1438
1578
  isOpen: boolean;
@@ -1467,7 +1607,8 @@ declare function SessionExpiredModal(): React$1.JSX.Element;
1467
1607
  interface Props$8 {
1468
1608
  content: string;
1469
1609
  mimeType?: string;
1470
- resourceUri?: string;
1610
+ /** The '@id' of the shown resource — stamped as `source` on mark:requested (multi-viewer routing). */
1611
+ resourceUri: string;
1471
1612
  annotations: AnnotationsCollection;
1472
1613
  uiState: AnnotationUIState;
1473
1614
  onUIStateChange?: (state: Partial<AnnotationUIState>) => void;
@@ -1478,17 +1619,22 @@ interface Props$8 {
1478
1619
  showLineNumbers?: boolean;
1479
1620
  hoverDelayMs?: number;
1480
1621
  annotateMode: boolean;
1622
+ /** Session for the shown resource — its client emits mark:* / mark.request; its bus feeds toolbar + beckon events. */
1623
+ session: SemiontSession | null;
1624
+ /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
1625
+ newAnnotationIds?: Set<string>;
1626
+ /** The bar's Mode control reports the chosen mode here (the owner applies it). */
1627
+ onModeChange?: (mode: boolean) => void;
1628
+ /** Render the built-in bar (default). false → no bar; selection capture and drawing stay live. */
1629
+ showToolbar?: boolean;
1481
1630
  }
1482
1631
  /**
1483
1632
  * View component for annotating resources with text selection and drawing
1484
1633
  *
1485
1634
  * @emits mark:requested - User requested to create annotation. Payload: { selector: Selector | Selector[], motivation: SelectionMotivation }
1486
- * @subscribes mark:selection-changed - Toolbar selection changed. Payload: { motivation: string | null }
1487
- * @subscribes mark:click-changed - Toolbar click action changed. Payload: { action: string }
1488
- * @subscribes mark:shape-changed - Toolbar shape changed. Payload: { shape: string }
1489
1635
  * @subscribes beckon:hover - Annotation hovered. Payload: { annotationId: string | null }
1490
1636
  */
1491
- declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode }: Props$8): React$1.JSX.Element;
1637
+ declare function AnnotateView({ content, mimeType, resourceUri, annotations, uiState, onUIStateChange, enableWidgets, getTargetResourceName, generatingReferenceId, showLineNumbers, hoverDelayMs, annotateMode, session, newAnnotationIds, onModeChange, showToolbar, }: Props$8): React$1.JSX.Element;
1492
1638
 
1493
1639
  interface Props$7 {
1494
1640
  rUri: ResourceId;
@@ -1500,6 +1646,29 @@ interface Props$7 {
1500
1646
  }
1501
1647
  declare function AnnotationHistory({ rUri, hoveredAnnotationId, onEventHover, onEventClick, Link, routes }: Props$7): React__default.JSX.Element | null;
1502
1648
 
1649
+ /**
1650
+ * Common props for a read-only ("browse") media renderer. `content` is decoded
1651
+ * text for the text renderer, or a media URL for the image / PDF renderers.
1652
+ * A consumer can implement this interface to swap in a custom renderer.
1653
+ */
1654
+ interface MediaRendererProps {
1655
+ content: string;
1656
+ mimeType: string;
1657
+ resourceUri: string;
1658
+ annotations: Annotation[];
1659
+ }
1660
+ /** Read-only media dispatch, keyed by the registry render mode. */
1661
+ type BrowseMediaRenderers = Partial<Record<string, ComponentType<MediaRendererProps>>>;
1662
+ declare function TextBrowseRenderer({ content }: MediaRendererProps): React$1.JSX.Element;
1663
+ declare function ImageBrowseRenderer({ content, mimeType }: MediaRendererProps): React$1.JSX.Element;
1664
+ declare function PdfBrowseRenderer({ content, resourceUri, annotations }: MediaRendererProps): React$1.JSX.Element;
1665
+ /**
1666
+ * Default read-only media renderers. `BrowseView` merges a caller's `renderers`
1667
+ * override on top of these, so a host can swap one renderer (e.g. its own PDF
1668
+ * viewer) or add a mode without forking the view.
1669
+ */
1670
+ declare const defaultBrowseRenderers: Record<'text' | 'image' | 'pdf', ComponentType<MediaRendererProps>>;
1671
+
1503
1672
  interface Props$6 {
1504
1673
  content: string;
1505
1674
  mimeType: string;
@@ -1509,6 +1678,36 @@ interface Props$6 {
1509
1678
  selectedClick?: ClickAction;
1510
1679
  annotateMode: boolean;
1511
1680
  hoverDelayMs?: number;
1681
+ /** Session for the shown resource — emits browse:click / beckon:hover; its bus feeds beckon events. */
1682
+ session: SemiontSession | null;
1683
+ /** Recently-created annotation ids to sparkle (host-provided; was ResourceAnnotationsContext). */
1684
+ newAnnotationIds?: Set<string>;
1685
+ /** Override the read-only media renderers (render mode → renderer); merged over the defaults. */
1686
+ renderers?: BrowseMediaRenderers;
1687
+ /** A content link (`<a href>` in the rendered content) was clicked. The viewer preventDefaults and
1688
+ * delegates; it never navigates on its own. Omit → the click is still blocked (nothing happens). */
1689
+ onLinkClick?: (link: {
1690
+ href: string;
1691
+ event: MouseEvent;
1692
+ }) => void;
1693
+ /** A RESOLVED reference span is hovered: fires after the dwell AND the referent's cached descriptor
1694
+ * resolves; `null` on leave (only if a hover fired — stubs stay silent). Host renders its own preview. */
1695
+ onReferenceHover?: (hover: ReferenceHover | null) => void;
1696
+ /** Inline display variant: auto-height to content, no inner scroll container, no pane chrome —
1697
+ * drops into a chat bubble / card / list item. Default: fill-the-pane (unchanged). */
1698
+ inline?: boolean;
1699
+ /** The bar's Mode control reports the chosen mode here (the owner applies it). */
1700
+ onModeChange?: (mode: boolean) => void;
1701
+ /** The bar's Click control reports the chosen action here (the owner applies it). */
1702
+ onClickActionChange?: (action: ClickAction) => void;
1703
+ /** Render the built-in bar (default). false → no bar; all other seams stay live. */
1704
+ showToolbar?: boolean;
1705
+ }
1706
+ /** Payload for `onReferenceHover` — the hovered linking annotation, its resolved referent, and where the span is. */
1707
+ interface ReferenceHover {
1708
+ annotation: Annotation;
1709
+ referent: ResourceDescriptor;
1710
+ anchorRect: DOMRect;
1512
1711
  }
1513
1712
  /**
1514
1713
  * View component for browsing annotated resources in read-only mode.
@@ -1523,7 +1722,7 @@ interface Props$6 {
1523
1722
  * @subscribes beckon:hover - Highlight annotation on hover. Payload: { annotationId: string | null }
1524
1723
  * @subscribes beckon:focus - Scroll to and highlight annotation. Payload: { annotationId: string }
1525
1724
  */
1526
- declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, annotateMode, hoverDelayMs }: Props$6) => React$1.JSX.Element>;
1725
+ declare const BrowseView: React$1.MemoExoticComponent<({ content, mimeType, resourceUri, annotations, selectedClick, onModeChange, onClickActionChange, showToolbar, annotateMode, hoverDelayMs, session, newAnnotationIds, renderers, onLinkClick, onReferenceHover, inline, }: Props$6) => React$1.JSX.Element>;
1527
1726
 
1528
1727
  type TranslateFn$4 = (key: string, params?: Record<string, string | number>) => string;
1529
1728
  interface Props$5 {
@@ -1548,9 +1747,11 @@ declare function HistoryEvent({ event, annotations, allEvents, isRelated, t, Lin
1548
1747
  * - Automatically invalidates cache when annotations change
1549
1748
  * - No manual refetch needed - events handle cache invalidation
1550
1749
  *
1551
- * Requirements:
1552
- * - Must be wrapped in SemiontProvider (which owns the session's event bus)
1553
- * - Must be wrapped in CacheContext (provides cache manager)
1750
+ * Bring-your-own-session: the `session` (SemiontSession) and the host's
1751
+ * navigation / panel callbacks come in as props no SemiontProvider required.
1752
+ * Every event it subscribes to is session-scoped (mark:*, browse:click) and
1753
+ * reaches it via `session.subscribe`. Translations fall back to built-in English
1754
+ * when no TranslationProvider is mounted; caching flows through `session.client.browse.*`.
1554
1755
  *
1555
1756
  * Event flow:
1556
1757
  * make-meaning → EventLog → SSE → EventBus → ResourceViewer → Cache invalidation
@@ -1563,25 +1764,62 @@ interface Props$4 {
1563
1764
  content: string;
1564
1765
  };
1565
1766
  annotations: AnnotationsCollection;
1767
+ /** Session for the shown resource — its client mutates/invalidates, its bus feeds annotation events. */
1768
+ session: SemiontSession | null;
1769
+ /** Host-owned navigation: a resolved reference was followed. Omit for a view with no follow behavior. */
1770
+ onOpenResource?: (resourceId: string) => void;
1771
+ /** Host-owned panel control (annotation clicks open a panel). Omit for hosts without side panels. */
1772
+ onOpenPanel?: (event: EventMap['panel:open']) => void;
1773
+ /** A content link in the rendered content was clicked — the viewer preventDefaults and delegates; it never navigates on its own. */
1774
+ onLinkClick?: (link: {
1775
+ href: string;
1776
+ event: React__default.MouseEvent;
1777
+ }) => void;
1778
+ /** A resolved reference span is hovered (after dwell + referent descriptor resolve); `null` on leave. Host renders its own preview. */
1779
+ onReferenceHover?: (hover: ReferenceHover | null) => void;
1780
+ /** Inline display variant: auto-height, no inner scroll, no pane chrome (browse path). Default: fill-the-pane. */
1781
+ inline?: boolean;
1782
+ /** Recently-created annotation ids to sparkle (threaded to the browse/annotate subtree). */
1783
+ newAnnotationIds?: Set<string>;
1566
1784
  generatingReferenceId?: string | null;
1567
1785
  showLineNumbers?: boolean;
1568
1786
  hoverDelayMs?: number;
1569
1787
  hoveredAnnotationId?: string | null;
1788
+ /**
1789
+ * Toolbar preferences as controlled props (TOOLBAR-PREFS-AS-PROPS). Supply a value
1790
+ * to own that pref: the instance renders it and reports intents via the callback —
1791
+ * it never self-mutates, never persists, never listens to other instances. Omit for
1792
+ * a plain uncontrolled default (false / 'detail' / 'linking' / 'rectangle').
1793
+ * Hosts wanting the shared+persisted Browser UX compose `useToolbarPrefs()`.
1794
+ */
1795
+ annotateMode?: boolean;
1796
+ onAnnotateModeChange?: (mode: boolean) => void;
1797
+ clickAction?: ClickAction;
1798
+ onClickActionChange?: (action: ClickAction) => void;
1799
+ selectionMotivation?: SelectionMotivation | null;
1800
+ onSelectionMotivationChange?: (motivation: SelectionMotivation | null) => void;
1801
+ shape?: ShapeType;
1802
+ onShapeChange?: (shape: ShapeType) => void;
1803
+ /**
1804
+ * Render the built-in AnnotateToolbar (default true — today's behavior,
1805
+ * byte-identical). `false` → no bar at any internal site (browse + every
1806
+ * annotate render mode), while every seam stays live: annotate-mode selection
1807
+ * capture, image/pdf drawing, `mark.request` emission, and the controlled
1808
+ * props. Tier-2 hosts compose their own controls from the controlled props;
1809
+ * this makes that opt-out a contract instead of a CSS override.
1810
+ */
1811
+ showToolbar?: boolean;
1570
1812
  }
1571
1813
  /**
1572
1814
  * @emits mark:delete - User requested to delete annotation. Payload: { annotationId: string }
1573
1815
  * @emits panel:open - Request to open panel with annotation. Payload: { panel: string, scrollToAnnotationId?: string, motivation?: Motivation }
1574
1816
  *
1575
- * @subscribes mark:mode-toggled - Toggles between browse and annotate mode. Payload: { mode: 'browse' | 'annotate' }
1576
1817
  * @subscribes mark:added - New annotation was added. Payload: { annotation: Annotation }
1577
1818
  * @subscribes mark:removed - Annotation was removed. Payload: { annotationId: string }
1578
1819
  * @subscribes mark:body-updated - Annotation was updated. Payload: { annotation: Annotation }
1579
- * @subscribes mark:selection-changed - Text selection tool changed. Payload: { selection: boolean }
1580
- * @subscribes mark:click-changed - Click annotation tool changed. Payload: { click: 'detail' | 'scroll' | null }
1581
- * @subscribes mark:shape-changed - Drawing shape changed. Payload: { shape: string }
1582
1820
  * @subscribes browse:click - User clicked on annotation. Payload: { annotationId: string }
1583
1821
  */
1584
- declare function ResourceViewer({ resource, annotations, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp }: Props$4): React__default.JSX.Element;
1822
+ declare function ResourceViewer({ resource, annotations, session, onOpenResource, onOpenPanel, onLinkClick, onReferenceHover, inline, newAnnotationIds, generatingReferenceId, showLineNumbers, hoverDelayMs, hoveredAnnotationId: hoveredAnnotationIdProp, annotateMode: annotateModeProp, onAnnotateModeChange, clickAction: clickActionProp, onClickActionChange, selectionMotivation: selectionMotivationProp, onSelectionMotivationChange, shape: shapeProp, onShapeChange, showToolbar, }: Props$4): React__default.JSX.Element;
1585
1823
 
1586
1824
  interface AssessmentEntryProps {
1587
1825
  assessment: Annotation;
@@ -1598,6 +1836,8 @@ interface PendingAnnotation$5 {
1598
1836
  motivation: Motivation$5;
1599
1837
  }
1600
1838
  interface AssessmentPanelProps {
1839
+ /** The '@id' of the panel's resource — stamped as `source` on mark:submit (multi-viewer routing). */
1840
+ resourceId: string;
1601
1841
  annotations: Annotation[];
1602
1842
  pendingAnnotation: PendingAnnotation$5 | null;
1603
1843
  isAssisting?: boolean;
@@ -1617,7 +1857,7 @@ interface AssessmentPanelProps {
1617
1857
  * @emits mark:cancel-pending - Cancel pending assessment annotation. Payload: undefined
1618
1858
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1619
1859
  */
1620
- declare function AssessmentPanel({ annotations, pendingAnnotation, isAssisting, progress, locale, sourceLanguage, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): React$1.JSX.Element;
1860
+ declare function AssessmentPanel({ resourceId, annotations, pendingAnnotation, isAssisting, progress, locale, sourceLanguage, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: AssessmentPanelProps): React$1.JSX.Element;
1621
1861
 
1622
1862
  interface Props$3 {
1623
1863
  /**
@@ -1660,6 +1900,8 @@ interface PendingAnnotation$4 {
1660
1900
  motivation: Motivation$4;
1661
1901
  }
1662
1902
  interface CommentsPanelProps {
1903
+ /** The '@id' of the panel's resource — stamped as `source` on mark:submit (multi-viewer routing). */
1904
+ resourceId: string;
1663
1905
  annotations: Annotation[];
1664
1906
  pendingAnnotation: PendingAnnotation$4 | null;
1665
1907
  annotateMode?: boolean;
@@ -1679,7 +1921,7 @@ interface CommentsPanelProps {
1679
1921
  * @emits mark:cancel-pending - Cancel pending comment annotation. Payload: undefined
1680
1922
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1681
1923
  */
1682
- declare function CommentsPanel({ annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): React$1.JSX.Element;
1924
+ declare function CommentsPanel({ resourceId, annotations, pendingAnnotation, annotateMode, isAssisting, progress, locale, sourceLanguage, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, }: CommentsPanelProps): React$1.JSX.Element;
1683
1925
 
1684
1926
  type JobProgress$4 = components['schemas']['JobProgress'];
1685
1927
  interface AssistSectionProps {
@@ -1720,6 +1962,8 @@ interface PendingAnnotation$3 {
1720
1962
  motivation: Motivation$3;
1721
1963
  }
1722
1964
  interface HighlightPanelProps {
1965
+ /** The '@id' of the panel's resource — stamped as `source` on mark:submit (multi-viewer routing). */
1966
+ resourceId: string;
1723
1967
  annotations: Annotation[];
1724
1968
  pendingAnnotation: PendingAnnotation$3 | null;
1725
1969
  isAssisting?: boolean;
@@ -1737,7 +1981,7 @@ interface HighlightPanelProps {
1737
1981
  * @emits mark:create - Create new highlight annotation (auto-triggered). Payload: { motivation: 'highlighting', selector: Selector | Selector[], body: Body[] }
1738
1982
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1739
1983
  */
1740
- declare function HighlightPanel({ annotations, pendingAnnotation, isAssisting, progress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sourceLanguage, }: HighlightPanelProps): React$1.JSX.Element;
1984
+ declare function HighlightPanel({ resourceId, annotations, pendingAnnotation, isAssisting, progress, annotateMode, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, sourceLanguage, }: HighlightPanelProps): React$1.JSX.Element;
1741
1985
 
1742
1986
  interface Props$2 {
1743
1987
  resourceId: ResourceId;
@@ -1784,6 +2028,8 @@ interface PendingAnnotation$2 {
1784
2028
  motivation: Motivation$2;
1785
2029
  }
1786
2030
  interface Props$1 {
2031
+ /** The '@id' of the panel's resource — stamped as `source` on mark:submit (multi-viewer routing). */
2032
+ resourceId: string;
1787
2033
  annotations?: Annotation[];
1788
2034
  isAssisting: boolean;
1789
2035
  progress: JobProgress$2 | null;
@@ -1811,7 +2057,7 @@ interface Props$1 {
1811
2057
  * @emits mark:cancel-pending - Cancel pending reference annotation. Payload: undefined
1812
2058
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1813
2059
  */
1814
- declare function ReferencesPanel({ annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
2060
+ declare function ReferencesPanel({ resourceId, annotations, isAssisting, progress, annotateMode, Link, routes, allEntityTypes, generatingReferenceId, referencedBy, referencedByLoading, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: Props$1): React__default.JSX.Element;
1815
2061
 
1816
2062
  type Agent = components['schemas']['Agent'];
1817
2063
  interface Props {
@@ -1867,6 +2113,8 @@ interface PendingAnnotation$1 {
1867
2113
  motivation: Motivation$1;
1868
2114
  }
1869
2115
  interface TaggingPanelProps {
2116
+ /** The '@id' of the panel's resource — stamped as `source` on mark:submit (multi-viewer routing). */
2117
+ resourceId: string;
1870
2118
  annotations: Annotation[];
1871
2119
  annotateMode?: boolean;
1872
2120
  isAssisting?: boolean;
@@ -1888,7 +2136,7 @@ interface TaggingPanelProps {
1888
2136
  * @emits mark:create - Create new tag annotation. Payload: { motivation: 'tagging', selector: Selector | Selector[], body: Body[] }
1889
2137
  * @subscribes browse:click - Annotation clicked. Payload: { annotationId: string }
1890
2138
  */
1891
- declare function TaggingPanel({ annotations, annotateMode, isAssisting, progress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: TaggingPanelProps): React$1.JSX.Element;
2139
+ declare function TaggingPanel({ resourceId, annotations, annotateMode, isAssisting, progress, pendingAnnotation, scrollToAnnotationId, onScrollCompleted, hoveredAnnotationId, locale, sourceLanguage, }: TaggingPanelProps): React$1.JSX.Element;
1892
2140
 
1893
2141
  type JobProgress = components['schemas']['JobProgress'];
1894
2142
 
@@ -1918,7 +2166,7 @@ interface UnifiedAnnotationsPanelProps {
1918
2166
  generatingReferenceId?: string | null;
1919
2167
  referencedBy?: any[];
1920
2168
  referencedByLoading?: boolean;
1921
- resourceId?: string;
2169
+ resourceId: string;
1922
2170
  initialTab?: TabKey;
1923
2171
  initialTabGeneration?: number;
1924
2172
  scrollToAnnotationId?: string | null;
@@ -3840,5 +4088,5 @@ declare function useShellStateUnit(): ShellStateUnit;
3840
4088
  */
3841
4089
  declare function useObservable<T>(obs$: Observable<T> | null | undefined): T | undefined;
3842
4090
 
3843
- export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateReferencesProgressWidget, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistSection, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceGather, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionExpiry, useShellStateUnit, useStateUnit, useTheme, useToast, useTranslations };
3844
- export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, JobProgressWidgetTranslations, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, Motivation$8 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, RecentDocumentsPageProps, ReferenceData, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGatherOptions, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceSearchModalProps, 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, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseResourceContentResult, UseResourceGatherResult, WelcomePageProps, WelcomeStateUnit, WizardState };
4091
+ export { ANNOTATORS, AVAILABLE_LOCALES, AdminDevOpsPage, AdminExchangePage, AdminSecurityPage, AdminUsersPage, AnnotateReferencesProgressWidget, AnnotateToolbar, AnnotateView, AnnotationHistory, AnnotationOverlay, AnnotationProvider, AssessmentEntry, AssessmentPanel, AssistSection, AsyncErrorBoundary, AuthErrorDisplay, BrowseView, Button, ButtonGroup, COMMON_PANELS, CodeMirrorRenderer, CollaborationPanel, CollapsibleResourceNavigation, CommentEntry, CommentsPanel, ComposeLoadingState, EntityTagsPage, EntityTypeBadges, ErrorBoundary, ExportCard, Footer, HighlightEntry, HighlightPanel, HistoryEvent, ImageBrowseRenderer, ImageURLSchema, ImageViewer, ImportCard, ImportProgress, JsonLdPanel, JsonLdView, KeyboardShortcutsHelpModal, LeftSidebar, LinkedDataPage, LiveRegionProvider, NavigationMenu, OAuthUserSchema, ObservableLink, PageLayout, PanelHeader, PdfBrowseRenderer, PermissionDeniedModal, PopupContainer, PopupHeader, ProtectedErrorBoundary, RESOURCE_PANELS, RecentDocumentsPage, ReferenceEntry, ReferenceResolutionWidget, ReferenceWizardModal, ReferencesPanel, ResizeHandle, ResourceAnnotationsProvider, ResourceCard, ResourceComposePage, ResourceDiscoveryPage, ResourceErrorState, ResourceGenerateModal, ResourceInfoPanel, ResourceLoadingState, ResourceSearchModal, ResourceTagsInline, ResourceViewer, ResourceViewerPage, SearchModal, SelectedTextDisplay, SemiontBranding, SemiontFavicon, SemiontProvider, SessionExpiredModal, SessionExpiryBanner, SessionTimer, SettingsPanel, SignInForm, SignUpForm, SimpleNavigation, SkipLinks, SortableResourceTab, StatisticsPanel, StatusDisplay, SvgDrawingCanvas, TagEntry, TagSchemasPage, TaggingPanel, TextBrowseRenderer, ThemeProvider, ToastContainer, ToastProvider, Toolbar, TranslationProvider, UnifiedAnnotationsPanel, UnifiedHeader, UploadProgressBar, UserMenuSkeleton, WebBrowserStorage, WelcomePage, applyHighlights, buildSourceToRenderedMap, buildTextNodeIndex, buttonStyles, clearHighlights, createAdminSecurityStateUnit, createAdminUsersStateUnit, createComposePageStateUnit, createDiscoverStateUnit, createEntityTagsStateUnit, createExchangeStateUnit, createResourceLoaderStateUnit, createResourceViewerPageStateUnit, createSessionStateUnit, createShellStateUnit, createWelcomeStateUnit, cssVariables, defaultBrowseRenderers, faviconPaths, formatTime, generateCSSVariables, getResourceIcon, getSelectedShapeForSelectorType, getSelectorType, getShortcutDisplay, getSupportedShapes, hideWidgetPreview, isShapeSupported, jsonLightHighlightStyle, jsonLightTheme, resolveAnnotationRanges, sanitizeImageURL, saveSelectedShapeForSelectorType, setPdfWorkerSrc, showWidgetPreview, supportsDetection, toOverlayAnnotations, tokens, useAnnotationManager, useDebounce, useDebouncedCallback, useDocumentAnnouncements, useDoubleKeyPress, useDropdown, useEventSubscription, useEventSubscriptions, useFormAnnouncements, useHoverDelay, useHoverEmitter, useIsTyping, useKeyboardShortcuts, useLanguageChangeAnnouncements, useLineNumbers, useLiveRegion, useLoadingState, useLocalStorage, useMediaToken, useObservable, useObservableExternalNavigation, useObservableRouter, usePanelWidth, usePendingCreation, usePreloadTranslations, useResourceAnnotations, useResourceContent, useResourceGather, useResourceLoader, useResourceLoadingAnnouncements, useRovingTabIndex, useSearchAnnouncements, useSemiont, useSessionEventSubscriptions, useSessionExpiry, useShellStateUnit, useStateUnit, useTheme, useToast, useToolbarPrefs, useTranslations };
4092
+ export type { AdminDevOpsPageProps, AdminExchangePageProps, AdminExchangePageTranslations, AdminSecurityPageProps, AdminSecurityStateUnit, AdminUser, AdminUserStats, AdminUsersPageProps, AdminUsersStateUnit, AnnotationConfig, AnnotationCreationHandler, AnnotationGroups, AnnotationHandlers, AnnotationManager, AnnotationProviderProps, AnnotationUIState, AnnotationsCollection, Annotator, AuthErrorDisplayProps, AvailableLocale, BorderRadiusToken, BrowseMediaRenderers, ButtonGroupProps, ButtonProps, ClickAction, CloneData, CollapsibleResourceNavigationProps, ColorToken, ComposeLoadingStateProps, ComposeMode, ComposePageStateUnit, ComposeParams, CreateAnnotationParams, CreateConfig, DeleteAnnotationParams, DetectionConfig, DevOpsFeature, DiscoverStateUnit, DrawingMode, EntityTagsPageProps, EntityTagsStateUnit, ExchangeStateUnit, ExportCardProps, ExportCardTranslations, HoverEmitterProps, ImportCardProps, ImportCardTranslations, ImportPreview, ImportProgressProps, ImportProgressTranslations, JobProgressWidgetTranslations, KeyboardShortcut, LinkComponentProps, LinkedDataPageProps, LinkedDataPageTranslations, MediaRendererProps, Motivation$8 as Motivation, NavigationItem, NavigationMenuHelper, NavigationProps, OAuthProvider, OAuthUser, ObservableLinkProps, OverlayAnnotation, PendingCreation, RecentDocumentsPageProps, ReferenceData, ReferenceHover, ReferenceWizardModalProps, ResolvedTheme, ResourceCardProps, ResourceComposePageProps, ResourceDiscoveryPageProps, ResourceErrorStateProps, ResourceGatherOptions, ResourceGenerateModalProps, ResourceGenerateModalTranslations, ResourceLoaderStateUnit, ResourceSearchModalProps, 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, TextSegment, TextSelection, Theme, ToastMessage, ToastType, ToolbarPanelType, ToolbarPart, ToolbarPrefs, TransitionToken, TranslationManager, TranslationProviderProps, TypographyToken, UICreateAnnotationParams, UploadProgressBarProps, UseMediaTokenResult, UseResourceContentResult, UseResourceGatherResult, UseResourceLoaderResult, WelcomePageProps, WelcomeStateUnit, WizardState };