react-iiif-vault 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundle.d.ts CHANGED
@@ -10,9 +10,13 @@ import { BoxSelector, TemporalBoxSelector, TemporalSelector } from '@iiif/helper
10
10
  export * from '@iiif/helpers/annotation-targets';
11
11
  import { ImageCandidate, RegionParameter, RotationParameter, SizeParameter, ImageServiceLoader, ImageCandidateRequest } from '@atlas-viewer/iiif-image-api';
12
12
  import { Vault, VaultOptions, NormalizedEntity, IIIFStore } from '@iiif/helpers/vault';
13
+ import * as polygon_editor from 'polygon-editor';
14
+ import { RenderState, InputShape, SlowState } from 'polygon-editor';
13
15
  import * as zustand_vanilla from 'zustand/vanilla';
14
16
  import { StoreApi } from 'zustand/vanilla';
15
17
  import * as zustand from 'zustand';
18
+ import * as mitt from 'mitt';
19
+ import { Handler } from 'mitt';
16
20
  import * as _iiif_helpers_painting_annotations from '@iiif/helpers/painting-annotations';
17
21
  import { Paintables as Paintables$1 } from '@iiif/helpers/painting-annotations';
18
22
  import { VaultZustandStore } from '@iiif/helpers/vault/store';
@@ -451,6 +455,177 @@ interface SingleCanvasThumbnailProps {
451
455
  }
452
456
  declare function SingleCanvasThumbnail(props: SingleCanvasThumbnailProps): react_jsx_runtime.JSX.Element;
453
457
 
458
+ interface SvgEditorOptions {
459
+ image: {
460
+ height: number;
461
+ width: number;
462
+ };
463
+ currentShape: InputShape | null;
464
+ onChange: (e: InputShape) => void;
465
+ hideShapeLines?: boolean;
466
+ }
467
+ declare function useSvgEditor(options: SvgEditorOptions, deps: any[]): {
468
+ helper: {
469
+ draw: {
470
+ enable(): void;
471
+ disable(): void;
472
+ toggle(): void;
473
+ };
474
+ state: RenderState;
475
+ modifiers: {
476
+ reset(): void;
477
+ getForType(type: string | null): Record<string, string>;
478
+ set(modifier: string): void;
479
+ unset(modifier: string): void;
480
+ };
481
+ stamps: {
482
+ set(selectedStamp: InputShape | null): void;
483
+ clear(): void;
484
+ square(): void;
485
+ triangle(): void;
486
+ pentagon(): void;
487
+ hexagon(): void;
488
+ };
489
+ key: {
490
+ down(key: string): true | undefined;
491
+ up(key: string): void;
492
+ };
493
+ setScale: (scale: number) => void;
494
+ clock: {
495
+ set: (renderFunc: polygon_editor.RenderFunc) => void;
496
+ start: (renderFunc?: polygon_editor.RenderFunc | undefined, setStateFunc?: polygon_editor.SetState | undefined) => void;
497
+ stop: () => void;
498
+ step: (deltaTime?: number | undefined) => void;
499
+ };
500
+ pointer: (pointers: ([number, number] | [number, number, number, number, number, number])[]) => void;
501
+ blur: () => void;
502
+ pointerDown: () => void;
503
+ pointerUp: () => void;
504
+ setShape: (shape: InputShape | null) => void;
505
+ modes: {
506
+ toggleLineBoxMode: () => void;
507
+ toggleLineMode: () => void;
508
+ enableLineMode(): void;
509
+ disableLineMode(): void;
510
+ enableLineBoxMode(): void;
511
+ disableLineBoxMode(): void;
512
+ };
513
+ label: (type: string | null) => string;
514
+ };
515
+ state: SlowState;
516
+ isAddingPoint: boolean;
517
+ isSplitting: boolean;
518
+ isStamping: boolean | null;
519
+ isHoveringPoint: boolean;
520
+ transitionDirection: string | null;
521
+ transitionRotate: boolean;
522
+ defs: react_jsx_runtime.JSX.Element;
523
+ editor: react_jsx_runtime.JSX.Element | null;
524
+ };
525
+
526
+ type HelperType$1 = ReturnType<typeof useSvgEditor>['helper'];
527
+ type StateType$1 = ReturnType<typeof useSvgEditor>['state'];
528
+ interface RenderSvgEditorControlsProps {
529
+ helper: HelperType$1;
530
+ state: StateType$1;
531
+ showShapes: boolean;
532
+ classNames?: Partial<{
533
+ button: string;
534
+ }>;
535
+ enabled?: {
536
+ draw?: boolean;
537
+ polygon?: boolean;
538
+ line?: boolean;
539
+ lineBox?: boolean;
540
+ square?: boolean;
541
+ triangle?: boolean;
542
+ hexagon?: boolean;
543
+ circle?: boolean;
544
+ delete?: boolean;
545
+ };
546
+ icons?: Partial<{
547
+ DrawIcon: ReactNode;
548
+ PolygonIcon: ReactNode;
549
+ LineIcon: ReactNode;
550
+ LineBoxIcon: ReactNode;
551
+ ShapesIcon: ReactNode;
552
+ SquareIcon: ReactNode;
553
+ TriangleIcon: ReactNode;
554
+ HexagonIcon: ReactNode;
555
+ CircleIcon: ReactNode;
556
+ DeleteForeverIcon: ReactNode;
557
+ }>;
558
+ }
559
+ declare function RenderSvgEditorControls({ helper, showShapes, state, enabled, classNames, icons, }: RenderSvgEditorControlsProps): react_jsx_runtime.JSX.Element;
560
+
561
+ declare const svgThemes: ({
562
+ name: string;
563
+ outer: {
564
+ borderWidth: number;
565
+ borderColor: string;
566
+ };
567
+ inner: {
568
+ borderWidth: number;
569
+ borderColor: string;
570
+ };
571
+ } | {
572
+ name: string;
573
+ outer: {
574
+ borderWidth: string;
575
+ borderColor: string;
576
+ };
577
+ inner: {
578
+ borderWidth: string;
579
+ borderColor: string;
580
+ };
581
+ } | {
582
+ name: string;
583
+ outer: {
584
+ borderWidth: string;
585
+ borderColor: string;
586
+ };
587
+ inner: {
588
+ borderWidth?: undefined;
589
+ borderColor?: undefined;
590
+ };
591
+ })[];
592
+ type HelperType = ReturnType<typeof useSvgEditor>['helper'];
593
+ type StateType = ReturnType<typeof useSvgEditor>['state'];
594
+ type SvgTheme = {
595
+ name?: string;
596
+ outer: BoxStyle;
597
+ inner: BoxStyle;
598
+ };
599
+ interface CreateCustomShapeProps {
600
+ image: {
601
+ width: number;
602
+ height: number;
603
+ };
604
+ shape?: any;
605
+ updateShape: any;
606
+ theme?: {
607
+ name?: string;
608
+ outer: BoxStyle;
609
+ inner: BoxStyle;
610
+ };
611
+ controlsHtmlId?: string;
612
+ renderControls?: (helper: HelperType, state: StateType, showShapes: boolean) => any;
613
+ }
614
+ declare function CreateCustomShape(props: CreateCustomShapeProps): react_jsx_runtime.JSX.Element;
615
+
616
+ interface PolygonSelectorProps {
617
+ id: string;
618
+ polygon: InputShape;
619
+ annotationBucket?: string;
620
+ isHighlighted?: boolean;
621
+ updatePolygon?: (shape: InputShape) => void;
622
+ readOnly?: boolean;
623
+ theme?: SvgTheme;
624
+ controlsHtmlId?: string;
625
+ renderControls?: CreateCustomShapeProps['renderControls'];
626
+ }
627
+ declare function PolygonSelector(props: PolygonSelectorProps): react_jsx_runtime.JSX.Element | null;
628
+
454
629
  declare function AnnotationContext({ annotation, children }: {
455
630
  annotation: string;
456
631
  children: ReactNode;
@@ -722,6 +897,106 @@ declare function useViewerPreset(): Preset | null | undefined;
722
897
  declare const ImageServiceLoaderContext: React__default.Context<ImageServiceLoader>;
723
898
  declare function useImageServiceLoader(): ImageServiceLoader;
724
899
 
900
+ type SelectorHelperEventTypes = 'click' | 'hover' | 'selector-updated' | 'highlight' | 'clear-highlight' | 'zoom-to' | 'event-listener' | 'remove-event-listener' | 'image-preview-request';
901
+ declare function SelectorControllerProvider({ children }: {
902
+ children: ReactNode;
903
+ }): react_jsx_runtime.JSX.Element;
904
+ declare function useSelectorEmitter(): mitt.Emitter<Record<mitt.EventType, unknown>>;
905
+ declare function useSelectorEvents(id: string): {
906
+ controller: {
907
+ withSelector(selectorId: string): {
908
+ on<T extends {
909
+ selectorId: string;
910
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T>): () => void;
911
+ emit<T_1 = any>(type: SelectorHelperEventTypes, event: T_1): void;
912
+ };
913
+ on<T_2 extends {
914
+ selectorId: string;
915
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T_2>): () => void;
916
+ emit<T_3 extends {
917
+ selectorId: string;
918
+ } = any>(type: SelectorHelperEventTypes, event: T_3): void;
919
+ };
920
+ onClick: (e?: {
921
+ x: number;
922
+ y: number;
923
+ width: number;
924
+ height: number;
925
+ }) => void;
926
+ onHover: (e?: {
927
+ x: number;
928
+ y: number;
929
+ width: number;
930
+ height: number;
931
+ }) => void;
932
+ isHighlighted: boolean;
933
+ };
934
+ declare function useSelectorController(): {
935
+ withSelector(selectorId: string): {
936
+ on<T extends {
937
+ selectorId: string;
938
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T>): () => void;
939
+ emit<T_1 = any>(type: SelectorHelperEventTypes, event: T_1): void;
940
+ };
941
+ on<T_2 extends {
942
+ selectorId: string;
943
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T_2>): () => void;
944
+ emit<T_3 extends {
945
+ selectorId: string;
946
+ } = any>(type: SelectorHelperEventTypes, event: T_3): void;
947
+ };
948
+ declare function useSelectorHelper(): {
949
+ withSelector(selectorId: string): {
950
+ highlight(): void;
951
+ clearHighlight(): void;
952
+ zoomTo(): void;
953
+ addEventListener(name: string, callback: () => void): () => void;
954
+ getImagePreview(): Promise<any>;
955
+ on<T extends {
956
+ selectorId: string;
957
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T>): () => void;
958
+ };
959
+ highlight(selectorId: string): void;
960
+ clearHighlight(selectorId: string): void;
961
+ zoomTo(selectorId: string): void;
962
+ addEventListener(selectorId: string, name: string, callback: () => void): () => void;
963
+ getImagePreview(selectorId: string): Promise<any>;
964
+ on<T_1 extends {
965
+ selectorId: string;
966
+ } = any>(type: SelectorHelperEventTypes, handler: Handler<T_1>): () => void;
967
+ };
968
+
969
+ interface AnnotationStyles {
970
+ id: number;
971
+ name: string;
972
+ creator?: {
973
+ id: number;
974
+ name: string;
975
+ };
976
+ createdAt: Date;
977
+ theme: {
978
+ default: AnnotationThemeDefinition;
979
+ hidden: AnnotationThemeDefinition;
980
+ highlighted: AnnotationThemeDefinition;
981
+ } & Record<string, AnnotationThemeDefinition>;
982
+ }
983
+ type AnnotationThemeDefinition = BoxStyle & {
984
+ hidden?: boolean;
985
+ interactive?: boolean;
986
+ hotspot?: boolean;
987
+ hotspotSize?: 'lg' | 'md' | 'sm';
988
+ };
989
+ declare function getDefaultAnnotationStyles(): AnnotationStyles['theme'];
990
+ declare function useAnnotationStyles(): {
991
+ default: AnnotationThemeDefinition;
992
+ hidden: AnnotationThemeDefinition;
993
+ highlighted: AnnotationThemeDefinition;
994
+ } & Record<string, AnnotationThemeDefinition>;
995
+ declare function AnnotationStyleProvider({ theme, children, }: {
996
+ theme?: AnnotationStyles['theme'];
997
+ children: React.ReactNode;
998
+ }): react_jsx_runtime.JSX.Element;
999
+
725
1000
  /**
726
1001
  * Parse specific resource.
727
1002
  *
@@ -954,6 +1229,57 @@ declare function VirtualAnnotationProvider({ children }: {
954
1229
  children: any;
955
1230
  }): react_jsx_runtime.JSX.Element;
956
1231
 
1232
+ declare function usePolygonHelper(data: any, render: (t: any, s: any) => void, commitShape: (shape: InputShape) => void): {
1233
+ state: SlowState;
1234
+ helper: {
1235
+ draw: {
1236
+ enable(): void;
1237
+ disable(): void;
1238
+ toggle(): void;
1239
+ };
1240
+ state: polygon_editor.RenderState;
1241
+ modifiers: {
1242
+ reset(): void;
1243
+ getForType(type: string | null): Record<string, string>;
1244
+ set(modifier: string): void;
1245
+ unset(modifier: string): void;
1246
+ };
1247
+ stamps: {
1248
+ set(selectedStamp: InputShape | null): void;
1249
+ clear(): void;
1250
+ square(): void;
1251
+ triangle(): void;
1252
+ pentagon(): void;
1253
+ hexagon(): void;
1254
+ };
1255
+ key: {
1256
+ down(key: string): true | undefined;
1257
+ up(key: string): void;
1258
+ };
1259
+ setScale: (scale: number) => void;
1260
+ clock: {
1261
+ set: (renderFunc: polygon_editor.RenderFunc) => void;
1262
+ start: (renderFunc?: polygon_editor.RenderFunc | undefined, setStateFunc?: polygon_editor.SetState | undefined) => void;
1263
+ stop: () => void;
1264
+ step: (deltaTime?: number | undefined) => void;
1265
+ };
1266
+ pointer: (pointers: ([number, number] | [number, number, number, number, number, number])[]) => void;
1267
+ blur: () => void;
1268
+ pointerDown: () => void;
1269
+ pointerUp: () => void;
1270
+ setShape: (shape: InputShape | null) => void;
1271
+ modes: {
1272
+ toggleLineBoxMode: () => void;
1273
+ toggleLineMode: () => void;
1274
+ enableLineMode(): void;
1275
+ disableLineMode(): void;
1276
+ enableLineBoxMode(): void;
1277
+ disableLineBoxMode(): void;
1278
+ };
1279
+ label: (type: string | null) => string;
1280
+ };
1281
+ };
1282
+
957
1283
  declare function flattenAnnotationPageIds({ canvas, manifest, all, canvases, }: {
958
1284
  manifest?: ManifestNormalized;
959
1285
  canvas?: CanvasNormalized;
@@ -961,11 +1287,16 @@ declare function flattenAnnotationPageIds({ canvas, manifest, all, canvases, }:
961
1287
  all?: boolean;
962
1288
  }): string[];
963
1289
 
1290
+ declare function TranslationProvider(props: {
1291
+ translations: Record<string, string>;
1292
+ children: ReactNode;
1293
+ }): react_jsx_runtime.JSX.Element;
964
1294
  declare function LanguageProvider(props: {
965
1295
  language: string;
966
1296
  children: ReactNode;
967
1297
  }): react_jsx_runtime.JSX.Element;
968
1298
  declare function useIIIFLanguage(): string;
1299
+ declare function useTranslations(): Record<string, string>;
969
1300
  type LanguageStringProps = {
970
1301
  [key: string]: any;
971
1302
  } & {
@@ -975,8 +1306,8 @@ type LanguageStringProps = {
975
1306
  };
976
1307
  declare function LanguageString({ as: Component, language, children, viewingDirection, ...props }: LanguageStringProps): react_jsx_runtime.JSX.Element;
977
1308
  declare const useClosestLanguage: (getLanguages: () => string[], deps?: any[]) => string | undefined;
978
- declare function useLocaleString(inputText: InternationalString | string | null | undefined, defaultText?: string, separator?: string): readonly [string, string | undefined];
979
- declare function useCreateLocaleString(): (inputText: InternationalString | string | null | undefined, defaultText?: string, separator?: string) => string;
1309
+ declare function useLocaleString(inputText: InternationalString | string | null | undefined, defaultText?: string, separator?: string, translations?: Record<string, string>): readonly [string, string | undefined];
1310
+ declare function useCreateLocaleString(): (inputText: InternationalString | string | null | undefined, defaultText?: string, separator?: string, translations?: Record<string, string>) => string;
980
1311
  type LocaleStringProps = {
981
1312
  as?: string | React__default.FC<any>;
982
1313
  defaultText?: string;
@@ -1056,4 +1387,4 @@ declare function findAllCanvasesInRange(vault: Vault, range: RangeNormalized): A
1056
1387
  declare function findManifestSelectedRange(vault: Vault, manifest: ManifestNormalized, canvasId: string): null | RangeNormalized;
1057
1388
  declare function findSelectedRange(vault: Vault, range: RangeNormalized, canvasId: string): null | RangeNormalized;
1058
1389
 
1059
- export { AnnotationContext, AnnotationPageContext, type AnnotationPageDescription, type AudioSequence, Auth, type AuthAccessState, type AuthContextActions, type AuthContextCurrentActions, type AuthContextState, AuthProvider, AuthProvider_Old, AuthRContext, AuthReactContext, AuthReactContextActions, type AuthState, CanvasAnnotations, CanvasContext, CanvasPanel, CollectionContext, CombinedMetadata, type ComplexTimelineStrategy, ContextBridge, type EmptyStrategy, Image, type ImageProps, ImageServiceLoaderContext, type ImageServiceLoaderType, type ImageServiceRequestOptions, type ImageWithOptionalService, InnerViewerProvider, LanguageProvider, LanguageString, LocaleString, ManifestContext, ManifestMetadata, type MediaPlayerActions, MediaPlayerProvider, type MediaPlayerState, type MediaStrategy, Metadata, type MetadataProps, type ProbeStore, RangeContext, ReactVaultContext, type RenderingStrategy, type ResourceContextType, ResourceProvider, ResourceReactContext, type ResourceRequestOptions, SequenceThumbnails, type SimpleViewerActions, type SimpleViewerActionsType, type SimpleViewerContext, type SimpleViewerProps, SimpleViewerProvider, SimpleViewerReactContext, type SimpleViewerReducerState, type Single3DModelStrategy, type SingleAudio, SingleCanvasThumbnail, type SingleImageStrategy, type SingleVideo, type SingleYouTubeVideo, type StrategyActions, type TextualContentStrategy, type UnknownStrategy, type UseRenderingStrategy, type UseRenderingStrategyOptions, type VaultActivatedAnnotation, VaultProvider, type VideoSequence, ViewerPresetContext, VirtualAnnotationProvider, VisibleCanvasReactContext, authDetailsForResource, createAuthStateStore, createProbe, emptyActions, emptyStrategy, findAllCanvasesInRange, findFirstCanvasFromRange, findManifestSelectedRange, findSelectedRange, flattenAnnotationPageIds, formatTime, get3dStrategy, getImageStrategy, getManifestSequence, getParsedTargetSelector, getRenderingStrategy, getTextualContentStrategy, getVideoStrategy, getVisibleCanvasesFromCanvasId, hasAuth, makeAccessServiceRequest, makeAccessTokenRequest, parseSpecificResource, unknownResponse, unsupportedStrategy, useAnnotation, useAnnotationPage, useAnnotationPageManager, useAnnotationsAtTime, useAuthActions, useAuthActions_old, useAuthService, useAuthService_old, useAuthStore, useAuthToken, useAuthToken_old, useAuthTokens, useAuthTokens_old, useCanvas, useCanvasClock, useCanvasSequence, useCanvasSubset, useClosestLanguage, useCollection, useContextBridge, useCreateLocaleString, useCurrentAuth, useCurrentAuth_old, useDispatch, useEventListener, useExistingVault, useExternalCollection, useExternalManifest, useExternalResource, useIIIFLanguage, useImage, useImageService, useImageServiceLoader, useImageTile, useIsAuthEnabled, useLoadImageService, useLocaleString, useManifest, useMediaActions, useMediaElements, useMediaState, usePaintables, usePaintingAnnotations, useRange, useRenderingStrategy, useResourceContext, useResourceEvents, useResources, useSearchService, useSimpleMediaPlayer, useSimpleViewer, useStyleHelper, useStyles, useThumbnail, useVault, useVaultEffect, useVaultSelector, useViewerPreset, useVirtualAnnotationPage, useVirtualAnnotationPageContext, useVisibleCanvases };
1390
+ export { AnnotationContext, AnnotationPageContext, type AnnotationPageDescription, AnnotationStyleProvider, type AnnotationStyles, type AnnotationThemeDefinition, type AudioSequence, Auth, type AuthAccessState, type AuthContextActions, type AuthContextCurrentActions, type AuthContextState, AuthProvider, AuthProvider_Old, AuthRContext, AuthReactContext, AuthReactContextActions, type AuthState, CanvasAnnotations, CanvasContext, CanvasPanel, CollectionContext, CombinedMetadata, type ComplexTimelineStrategy, ContextBridge, CreateCustomShape, type CreateCustomShapeProps, type EmptyStrategy, Image, type ImageProps, ImageServiceLoaderContext, type ImageServiceLoaderType, type ImageServiceRequestOptions, type ImageWithOptionalService, InnerViewerProvider, LanguageProvider, LanguageString, LocaleString, ManifestContext, ManifestMetadata, type MediaPlayerActions, MediaPlayerProvider, type MediaPlayerState, type MediaStrategy, Metadata, type MetadataProps, PolygonSelector, type PolygonSelectorProps, type ProbeStore, RangeContext, ReactVaultContext, RenderSvgEditorControls, type RenderingStrategy, type ResourceContextType, ResourceProvider, ResourceReactContext, type ResourceRequestOptions, SelectorControllerProvider, type SelectorHelperEventTypes, SequenceThumbnails, type SimpleViewerActions, type SimpleViewerActionsType, type SimpleViewerContext, type SimpleViewerProps, SimpleViewerProvider, SimpleViewerReactContext, type SimpleViewerReducerState, type Single3DModelStrategy, type SingleAudio, SingleCanvasThumbnail, type SingleImageStrategy, type SingleVideo, type SingleYouTubeVideo, type StrategyActions, type SvgTheme, type TextualContentStrategy, TranslationProvider, type UnknownStrategy, type UseRenderingStrategy, type UseRenderingStrategyOptions, type VaultActivatedAnnotation, VaultProvider, type VideoSequence, ViewerPresetContext, VirtualAnnotationProvider, VisibleCanvasReactContext, authDetailsForResource, createAuthStateStore, createProbe, emptyActions, emptyStrategy, findAllCanvasesInRange, findFirstCanvasFromRange, findManifestSelectedRange, findSelectedRange, flattenAnnotationPageIds, formatTime, get3dStrategy, getDefaultAnnotationStyles, getImageStrategy, getManifestSequence, getParsedTargetSelector, getRenderingStrategy, getTextualContentStrategy, getVideoStrategy, getVisibleCanvasesFromCanvasId, hasAuth, makeAccessServiceRequest, makeAccessTokenRequest, parseSpecificResource, svgThemes, unknownResponse, unsupportedStrategy, useAnnotation, useAnnotationPage, useAnnotationPageManager, useAnnotationStyles, useAnnotationsAtTime, useAuthActions, useAuthActions_old, useAuthService, useAuthService_old, useAuthStore, useAuthToken, useAuthToken_old, useAuthTokens, useAuthTokens_old, useCanvas, useCanvasClock, useCanvasSequence, useCanvasSubset, useClosestLanguage, useCollection, useContextBridge, useCreateLocaleString, useCurrentAuth, useCurrentAuth_old, useDispatch, useEventListener, useExistingVault, useExternalCollection, useExternalManifest, useExternalResource, useIIIFLanguage, useImage, useImageService, useImageServiceLoader, useImageTile, useIsAuthEnabled, useLoadImageService, useLocaleString, useManifest, useMediaActions, useMediaElements, useMediaState, usePaintables, usePaintingAnnotations, usePolygonHelper, useRange, useRenderingStrategy, useResourceContext, useResourceEvents, useResources, useSearchService, useSelectorController, useSelectorEmitter, useSelectorEvents, useSelectorHelper, useSimpleMediaPlayer, useSimpleViewer, useStyleHelper, useStyles, useSvgEditor, useThumbnail, useTranslations, useVault, useVaultEffect, useVaultSelector, useViewerPreset, useVirtualAnnotationPage, useVirtualAnnotationPageContext, useVisibleCanvases };