@devultur/convex 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +100 -5
  2. package/dist/{chunk-JZYKPLI4.js → chunk-RDVBE3G3.js} +20 -1
  3. package/dist/component/_generated/api.d.ts +0 -1
  4. package/dist/component/_generated/api.js.map +1 -1
  5. package/dist/component/_generated/component.d.ts +0 -1
  6. package/dist/component/_generated/component.js.map +1 -1
  7. package/dist/component/_generated/dataModel.d.ts +0 -1
  8. package/dist/component/_generated/dataModel.js.map +1 -1
  9. package/dist/component/_generated/server.d.ts +0 -1
  10. package/dist/component/_generated/server.js.map +1 -1
  11. package/dist/component/convex.config.d.ts +0 -1
  12. package/dist/component/convex.config.js.map +1 -1
  13. package/dist/component/http.d.ts +0 -1
  14. package/dist/component/http.js.map +1 -1
  15. package/dist/component/library.d.ts +0 -1
  16. package/dist/component/library.js.map +1 -1
  17. package/dist/component/lock.d.ts +0 -1
  18. package/dist/component/lock.js.map +1 -1
  19. package/dist/component/lockValidators.d.ts +0 -1
  20. package/dist/component/lockValidators.js.map +1 -1
  21. package/dist/component/mediaClient.d.ts +0 -1
  22. package/dist/component/mediaClient.js.map +1 -1
  23. package/dist/component/mediaMeta.d.ts +0 -1
  24. package/dist/component/mediaMeta.js.map +1 -1
  25. package/dist/component/metadata.d.ts +0 -1
  26. package/dist/component/metadata.js.map +1 -1
  27. package/dist/component/public.d.ts +0 -1
  28. package/dist/component/public.js.map +1 -1
  29. package/dist/component/schema.d.ts +0 -1
  30. package/dist/component/schema.js.map +1 -1
  31. package/dist/component/uploadKeys.d.ts +0 -1
  32. package/dist/component/uploadKeys.js.map +1 -1
  33. package/dist/component/uploads.d.ts +0 -1
  34. package/dist/component/uploads.js.map +1 -1
  35. package/dist/component/workerErrors.d.ts +0 -1
  36. package/dist/component/workerErrors.js.map +1 -1
  37. package/dist/index.d.ts +33 -12
  38. package/dist/index.js +22 -4
  39. package/dist/locales/es-formal.d.ts +7 -3
  40. package/dist/locales/es-formal.js +6 -3
  41. package/dist/locales/es.d.ts +7 -3
  42. package/dist/locales/es.js +5 -3
  43. package/dist/{preview-labels-B-2mra1h.d.ts → preview-labels-C2nUUY_f.d.ts} +1 -1
  44. package/dist/react.d.ts +133 -92
  45. package/dist/react.js +310 -235
  46. package/dist/types-C0ruHUcu.d.ts +196 -0
  47. package/package.json +4 -3
  48. package/dist/component/_generated/api.d.ts.map +0 -1
  49. package/dist/component/_generated/component.d.ts.map +0 -1
  50. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  51. package/dist/component/_generated/server.d.ts.map +0 -1
  52. package/dist/component/convex.config.d.ts.map +0 -1
  53. package/dist/component/http.d.ts.map +0 -1
  54. package/dist/component/library.d.ts.map +0 -1
  55. package/dist/component/lock.d.ts.map +0 -1
  56. package/dist/component/lockValidators.d.ts.map +0 -1
  57. package/dist/component/mediaClient.d.ts.map +0 -1
  58. package/dist/component/mediaMeta.d.ts.map +0 -1
  59. package/dist/component/metadata.d.ts.map +0 -1
  60. package/dist/component/public.d.ts.map +0 -1
  61. package/dist/component/schema.d.ts.map +0 -1
  62. package/dist/component/uploadKeys.d.ts.map +0 -1
  63. package/dist/component/uploads.d.ts.map +0 -1
  64. package/dist/component/workerErrors.d.ts.map +0 -1
  65. package/dist/types-LrusGVDf.d.ts +0 -62
package/dist/react.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  import { DevulturMedia, MediaUrlOptions, Visibility, ProcessingPhase, FailureReason, MediaStatusValue } from '@devultur/core';
3
- import { BakeOutputFormat, MediaUploadState, MediaUploadError, UploadProgress } from '@devultur/react';
3
+ import { UploadProgress, BakeOutputFormat, MediaUploadState, MediaUploadError } from '@devultur/react';
4
4
  export { MediaUploadError, MediaUploadState, UploadProgress } from '@devultur/react';
5
5
  import { FunctionReference } from 'convex/server';
6
- import { A as AttachmentLabels, M as MediaLibraryLabels, P as PreviewLabels, a as MediaPickerLabels, b as MediaFetchError } from './preview-labels-B-2mra1h.js';
7
- export { c as AttachmentKind, d as MediaFetchErrorCode, e as defaultAttachmentLabels, f as defaultMediaLibraryLabels, g as defaultMediaPickerLabels, h as defaultPreviewLabels, i as formatDuration, j as formatFileSize } from './preview-labels-B-2mra1h.js';
8
6
  import { Value } from 'convex/values';
9
- import { M as MediaRecord } from './types-LrusGVDf.js';
7
+ import { A as AttachmentLabels, M as MediaLibraryLabels, P as PreviewLabels, a as MediaPickerLabels, b as MediaFetchError } from './preview-labels-C2nUUY_f.js';
8
+ export { c as AttachmentKind, d as MediaFetchErrorCode, e as defaultAttachmentLabels, f as defaultMediaLibraryLabels, g as defaultMediaPickerLabels, h as defaultPreviewLabels, i as formatDuration, j as formatFileSize } from './preview-labels-C2nUUY_f.js';
9
+ import { M as MediaRecord } from './types-C0ruHUcu.js';
10
10
  import { P as PdfjsLoader } from './pdf-render-BwJGagvz.js';
11
11
  export { a as PdfjsModule } from './pdf-render-BwJGagvz.js';
12
12
 
@@ -25,8 +25,12 @@ type TokenStatus = "idle" | "loading" | "ready" | "error";
25
25
 
26
26
  /** Transform/delivery options for media URLs (without `token`, which the context injects). */
27
27
  type MediaRenderOptions = Omit<MediaUrlOptions, "token">;
28
+ /**
29
+ * The viewer token action: the component's `issueViewerToken` (as `defineDevulturFunctions` or `exposeApi` export it,
30
+ * where `sessionSecret` is optional) or an app's own, which may require it. The providers always send it.
31
+ */
28
32
  type ViewerTokenAction = FunctionReference<"action", "public", {
29
- sessionSecret: string;
33
+ sessionSecret?: string;
30
34
  }>;
31
35
  interface MediaSession {
32
36
  token: string | null;
@@ -36,6 +40,12 @@ interface MediaSession {
36
40
  tokenError: Error | null;
37
41
  /** Issues the viewer token again (after a failure, for example). Resolves to the new token, or `null`. */
38
42
  retryToken: () => Promise<string | null>;
43
+ /**
44
+ * Asks for the viewer token where it's issued lazily (`<DevulturViewerProvider lazyToken>`): the first private media
45
+ * shown calls it, and so must code that reads `token` itself. A no-op once asked, and where the token is issued
46
+ * right away (the default).
47
+ */
48
+ requestToken: () => void;
39
49
  baseUrl: string | null;
40
50
  /** Browser session secret → sent in `${SESSION_HEADER}` on every private delivery. */
41
51
  sessionSecret: string;
@@ -51,6 +61,75 @@ interface MediaSession {
51
61
  reissueToken: () => Promise<string | null>;
52
62
  }
53
63
 
64
+ type AnyAction = FunctionReference<"action">;
65
+ type AnyMutation = FunctionReference<"mutation">;
66
+ type AnyQuery = FunctionReference<"query">;
67
+ interface DevulturApi {
68
+ issueViewerToken: AnyAction;
69
+ createUploadUrl: AnyAction;
70
+ /** Records an upload in the component after its PUT, so it shows in `listMedia`. Optional (uploads still work). */
71
+ confirmUpload?: AnyAction;
72
+ deleteMedia: AnyAction;
73
+ /** Deletes the full folder of a video (raw/hls/thumbnails/captions). Required to delete videos. */
74
+ deleteVideo?: AnyAction;
75
+ /** Requests the transcode of an uploaded video. Required by `useMediaUpload` for auto-process. */
76
+ processVideo?: AnyAction;
77
+ getMedia?: AnyQuery;
78
+ /** The library, newest first. Required by `useMediaLibrary` and `<MediaLibrary>`. */
79
+ listMediaPage?: AnyQuery;
80
+ /** The library matching a search. Required by `useMediaLibrary` and `<MediaLibrary>` to search. */
81
+ searchMedia?: AnyQuery;
82
+ saveProgress?: AnyMutation;
83
+ loadProgress?: AnyQuery;
84
+ markComplete?: AnyMutation;
85
+ resetProgress?: AnyMutation;
86
+ }
87
+ interface UploadOptions {
88
+ /**
89
+ * Visibility override for this resource. Omitted → `config.upload.visibility` on your server, else the Worker's
90
+ * default by type. Your guard can still rewrite it.
91
+ */
92
+ visibility?: Visibility;
93
+ /** Progress of the PUT: bytes sent, total bytes and their fraction (0 to 1). */
94
+ onProgress?: (progress: UploadProgress) => void;
95
+ /** Aborts the PUT → `upload()` rejects with an `AbortError`. */
96
+ signal?: AbortSignal;
97
+ /** A PDF's page count to record with it, a hint (`countPdfPages` from `@devultur/convex/pdfjs` counts it). */
98
+ pageCount?: number;
99
+ }
100
+ /**
101
+ * The reference `upload()` resolves to: a `DevulturMedia` whose `key` is always set (the uploaded object's key; a
102
+ * video's raw file, what `processVideo` takes). It stores as-is in a `dv.media()` field.
103
+ */
104
+ type UploadedMedia = DevulturMedia & {
105
+ readonly key: string;
106
+ };
107
+ /**
108
+ * What `useDevultur()` returns. Under a `<DevulturViewerProvider>`, `uploadUrl`, `upload` and `deleteMedia` throw a
109
+ * `DevulturCapabilityError` (`capability_unavailable`).
110
+ */
111
+ interface DevulturContextValue extends MediaSession {
112
+ uploadUrl: (file: File) => Promise<{
113
+ url: string;
114
+ key: string;
115
+ }>;
116
+ /** Uploads a file (reporting progress), records it in the component, and returns the reference ready to save. */
117
+ upload: (file: File, options?: UploadOptions) => Promise<UploadedMedia>;
118
+ /** Deletes a media by reference: video → full folder; image/file → the object. */
119
+ deleteMedia: (media: DevulturMedia) => void;
120
+ }
121
+ declare function useDevultur(): DevulturContextValue;
122
+ /**
123
+ * `useDevultur()` for components that also render outside a provider: the same value under `<DevulturProvider>` or
124
+ * `<DevulturViewerProvider>`, and `null` outside both instead of throwing.
125
+ */
126
+ declare function useDevulturOptional(): DevulturContextValue | null;
127
+ /**
128
+ * The `api` passed to `<DevulturProvider>`: your app's exported Devultur functions. Under a `<DevulturViewerProvider>`
129
+ * it throws a `DevulturCapabilityError`.
130
+ */
131
+ declare function useDevulturApi(): DevulturApi;
132
+
54
133
  /** What `useDevultur()` can do only under a `<DevulturProvider>` given the matching actions. */
55
134
  type DevulturCapability = "upload" | "uploadUrl" | "deleteMedia" | "api";
56
135
  /**
@@ -442,12 +521,13 @@ type MediaPickerProps = CommonProps & (SingleValueProps | MultipleValueProps);
442
521
  * @example
443
522
  * <MediaPicker accept={["image/*"]} value={cover} onChange={setCover} />
444
523
  */
445
- declare function MediaPicker(props: MediaPickerProps): React.JSX.Element;
446
- declare namespace MediaPicker {
447
- var Upload: typeof MediaPickerUpload;
448
- var Library: typeof MediaPickerLibrary;
449
- var Selection: typeof MediaPickerSelection;
450
- }
524
+ declare function MediaPickerRoot(props: MediaPickerProps): React.JSX.Element;
525
+ declare const MediaPicker: typeof MediaPickerRoot & {
526
+ displayName: string;
527
+ Upload: typeof MediaPickerUpload;
528
+ Library: typeof MediaPickerLibrary;
529
+ Selection: typeof MediaPickerSelection;
530
+ };
451
531
 
452
532
  /** A file's name and type, or a record's filename and content type. */
453
533
  interface Candidate {
@@ -523,6 +603,11 @@ interface PreviewProps {
523
603
  pdfWorkerSrc?: string;
524
604
  /** Overrides any string shown or announced; wins over `PdfPreviewProvider`'s `labels`. English by default. */
525
605
  labels?: Partial<PreviewLabels>;
606
+ /**
607
+ * A video's playback metrics (`<VideoPlayer metrics>`): anonymous, no cookies, sent to the media host. On by
608
+ * default; `false` turns them off.
609
+ */
610
+ metrics?: boolean;
526
611
  }
527
612
  /**
528
613
  * Renders a media inline by its content type: images in an `<img>`, PDFs on `<canvas>` pages with pdf.js under a
@@ -533,7 +618,7 @@ interface PreviewProps {
533
618
  * @example
534
619
  * <Preview media={document.file} maxBytes={20_000_000} className="h-[80vh] w-full" />
535
620
  */
536
- declare function Preview({ media, contentType, fallback, loading, labels, ...viewProps }: PreviewProps): React.JSX.Element | null;
621
+ declare function Preview({ media, contentType, fallback, loading, labels, metrics, ...viewProps }: PreviewProps): React.JSX.Element | null;
537
622
 
538
623
  /** How a content type renders inline: `<img>`, a PDF view (pdf.js canvases or `<iframe>`), `<audio>` or `<pre>`. */
539
624
  type PreviewKind = "image" | "pdf" | "audio" | "text";
@@ -572,60 +657,43 @@ interface MediaLibraryState {
572
657
  */
573
658
  declare function useMediaLibrary(options?: UseMediaLibraryOptions): MediaLibraryState;
574
659
 
575
- type AnyAction = FunctionReference<"action">;
576
- type AnyMutation = FunctionReference<"mutation">;
577
- type AnyQuery = FunctionReference<"query">;
578
- interface DevulturApi {
579
- issueViewerToken: AnyAction;
580
- createUploadUrl: AnyAction;
581
- /** Records an upload in the component after its PUT, so it shows in `listMedia`. Optional (uploads still work). */
582
- confirmUpload?: AnyAction;
583
- deleteMedia: AnyAction;
584
- /** Deletes the full folder of a video (raw/hls/thumbnails/captions). Required to delete videos. */
585
- deleteVideo?: AnyAction;
586
- /** Requests the transcode of an uploaded video. Required by `useMediaUpload` for auto-process. */
587
- processVideo?: AnyAction;
588
- getMedia?: AnyQuery;
589
- /** The library, newest first. Required by `useMediaLibrary` and `<MediaLibrary>`. */
590
- listMediaPage?: AnyQuery;
591
- /** The library matching a search. Required by `useMediaLibrary` and `<MediaLibrary>` to search. */
592
- searchMedia?: AnyQuery;
593
- saveProgress?: AnyMutation;
594
- loadProgress?: AnyQuery;
595
- markComplete?: AnyMutation;
596
- resetProgress?: AnyMutation;
597
- }
598
- interface UploadOptions {
599
- /** Visibility override for this resource. Omitted → inherits the router's default by type. */
600
- visibility?: Visibility;
601
- /** Progress of the PUT: bytes sent, total bytes and their fraction (0 to 1). */
602
- onProgress?: (progress: UploadProgress) => void;
603
- /** Aborts the PUT → `upload()` rejects with an `AbortError`. */
604
- signal?: AbortSignal;
605
- /** A PDF's page count to record with it, a hint (`countPdfPages` from `@devultur/convex/pdfjs` counts it). */
606
- pageCount?: number;
660
+ interface DevulturViewerProviderProps {
661
+ /** Media worker base (e.g. `https://media.your-domain.com`). */
662
+ baseUrl: string;
663
+ /**
664
+ * Your viewer token action. It receives `{ sessionSecret, ...tokenArgs }`, like `<DevulturProvider>`'s. Leave it
665
+ * out when every media is public: the provider then needs no Convex client, issues nothing, and a private media
666
+ * fails with `token_unavailable`.
667
+ */
668
+ issueViewerToken?: ViewerTokenAction;
669
+ /**
670
+ * `true` → the token is issued only once a private media is shown (and renewed from then on), so a page of public
671
+ * media calls nothing. Code that reads `token` itself then calls `requestToken()` first. Default `false`: issued
672
+ * as soon as the provider mounts.
673
+ */
674
+ lazyToken?: boolean;
675
+ /** Extra arguments for `issueViewerToken`, compared by value (see `<DevulturProvider tokenArgs>`). */
676
+ tokenArgs?: ViewerTokenArgs;
677
+ children: React.ReactNode;
607
678
  }
608
679
  /**
609
- * The reference `upload()` resolves to: a `DevulturMedia` whose `key` is always set (the uploaded object's key; a
610
- * video's raw file, what `processVideo` takes). It stores as-is in a `dv.media()` field.
611
- */
612
- type UploadedMedia = DevulturMedia & {
613
- readonly key: string;
614
- };
615
- /**
616
- * What `useDevultur()` returns. Under a `<DevulturViewerProvider>`, `uploadUrl`, `upload` and `deleteMedia` throw a
617
- * `DevulturCapabilityError` (`capability_unavailable`).
680
+ * A provider for apps that only display media: `<Image>`, `<Preview>`, `<DownloadLink>`, `useMediaObjectUrl` and the
681
+ * video hooks work, and it needs no upload or delete actions. It issues and renews the viewer token (with `lazyToken`,
682
+ * only once a private media is shown). Without `issueViewerToken` it needs no Convex client at all. `upload`, `uploadUrl` and `deleteMedia` throw a `DevulturCapabilityError`, as do the hooks that
683
+ * need the `api` (`useMediaUpload`, `useDevulturApi`, `<MediaLibrary>`, `<MediaPicker>`).
684
+ *
685
+ * @example
686
+ * <DevulturViewerProvider baseUrl={MEDIA_URL} issueViewerToken={api.admin.issueViewerToken} tokenArgs={{ workspaceId }}>
687
+ * <Preview media={document.file} />
688
+ * </DevulturViewerProvider>
689
+ *
690
+ * // Only public media: no token action, no Convex client.
691
+ * <DevulturViewerProvider baseUrl={MEDIA_URL}>
692
+ * <Image media={post.cover} alt="" />
693
+ * </DevulturViewerProvider>
618
694
  */
619
- interface DevulturContextValue extends MediaSession {
620
- uploadUrl: (file: File) => Promise<{
621
- url: string;
622
- key: string;
623
- }>;
624
- /** Uploads a file (reporting progress), records it in the component, and returns the reference ready to save. */
625
- upload: (file: File, options?: UploadOptions) => Promise<UploadedMedia>;
626
- /** Deletes a media by reference: video → full folder; image/file → the object. */
627
- deleteMedia: (media: DevulturMedia) => void;
628
- }
695
+ declare function DevulturViewerProvider({ issueViewerToken, ...props }: DevulturViewerProviderProps): React.JSX.Element;
696
+
629
697
  interface ProgressContextValue {
630
698
  save: (videoId: string, position: number) => Promise<void>;
631
699
  load: (videoId: string) => Promise<{
@@ -654,33 +722,6 @@ interface DevulturProviderProps {
654
722
  children: React.ReactNode;
655
723
  }
656
724
  declare function DevulturProvider({ api, baseUrl, tokenArgs, issueViewerToken, children }: DevulturProviderProps): React.JSX.Element;
657
- declare function useDevultur(): DevulturContextValue;
658
- /**
659
- * The `api` passed to `<DevulturProvider>`: your app's exported Devultur functions. Under a `<DevulturViewerProvider>`
660
- * it throws a `DevulturCapabilityError`.
661
- */
662
- declare function useDevulturApi(): DevulturApi;
663
- interface DevulturViewerProviderProps {
664
- /** Media worker base (e.g. `https://media.your-domain.com`). */
665
- baseUrl: string;
666
- /** Your viewer token action. It receives `{ sessionSecret, ...tokenArgs }`, like `<DevulturProvider>`'s. */
667
- issueViewerToken: ViewerTokenAction;
668
- /** Extra arguments for `issueViewerToken`, compared by value (see `<DevulturProvider tokenArgs>`). */
669
- tokenArgs?: ViewerTokenArgs;
670
- children: React.ReactNode;
671
- }
672
- /**
673
- * A provider for apps that only display media: it issues and renews the viewer token, so `<Image>`, `<Preview>`,
674
- * `<DownloadLink>`, `useMediaObjectUrl` and the video hooks work, and it needs no upload or delete actions. `upload`,
675
- * `uploadUrl` and `deleteMedia` throw a `DevulturCapabilityError`, as do the hooks that need the `api`
676
- * (`useMediaUpload`, `useDevulturApi`, `<MediaLibrary>`, `<MediaPicker>`).
677
- *
678
- * @example
679
- * <DevulturViewerProvider baseUrl={MEDIA_URL} issueViewerToken={api.admin.issueViewerToken} tokenArgs={{ workspaceId }}>
680
- * <Preview media={document.file} />
681
- * </DevulturViewerProvider>
682
- */
683
- declare function DevulturViewerProvider({ baseUrl, issueViewerToken, tokenArgs, children, }: DevulturViewerProviderProps): React.JSX.Element;
684
725
  declare function useDevulturProgress(): ProgressContextValue;
685
726
  /**
686
727
  * Ready-to-use delivery URL for a key, with the context's viewer token already injected. The consumer
@@ -793,7 +834,7 @@ declare function useVideoState(media: DevulturMedia | null | undefined, options?
793
834
  locales?: string[];
794
835
  }): VideoState;
795
836
  interface UseMediaUploadOptions {
796
- /** Resource visibility. Omitted → config default → private (secure-by-default). */
837
+ /** Resource visibility. Omitted → `config.upload.visibility`, else the Worker's default by type. Your guard can rewrite it. */
797
838
  visibility?: Visibility;
798
839
  /** Fires ONCE, at the persistence point (PUT done + transcode requested). */
799
840
  onComplete?: (media: DevulturMedia) => void;
@@ -824,4 +865,4 @@ interface UseMediaUploadReturn {
824
865
  */
825
866
  declare function useMediaUpload(options?: UseMediaUploadOptions): UseMediaUploadReturn;
826
867
 
827
- export { AttachmentCard, type AttachmentCardProps, AttachmentLabels, type CaptionTrack, CropUpload, type CropUploadLabels, type CropUploadProps, type CropUploadRenderProps, type DevulturApi, type DevulturCapability, DevulturCapabilityError, DevulturProvider, DevulturViewerProvider, DocumentLink, type DocumentLinkProps, DownloadLink, Image, type ImageProps, MediaFetchError, MediaLibrary, type MediaLibraryItemState, MediaLibraryLabels, type MediaLibraryPart, type MediaLibraryProps, type MediaLibraryState, type MediaLibraryStatus, type MediaObjectUrl, MediaPicker, MediaPickerLabels, type MediaPickerLibraryProps, type MediaPickerProps, type MediaPickerSelectionProps, type MediaPickerState, type MediaPickerUpload$1 as MediaPickerUpload, type MediaPickerUploadProps, type MediaPickerUploads, type PdfPreviewConfig, PdfPreviewProvider, PdfThumbnail, type PdfThumbnailProps, PdfjsLoader, Preview, type PreviewKind, PreviewLabels, type PreviewProps, type TokenStatus, type UploadedMedia, type UseMediaLibraryOptions, type UseMediaObjectUrlOptions, type UseMediaUploadOptions, type UseMediaUploadReturn, type VideoProps, type VideoState, type ViewerTokenArgs, type ViewerTokenResult, matchesAccept, useDevultur, useDevulturApi, useDevulturMedia, useDevulturProgress, useMediaLibrary, useMediaObjectUrl, useMediaPicker, useMediaUpload, useMediaUrl, useVideoProps, useVideoState };
868
+ export { AttachmentCard, type AttachmentCardProps, AttachmentLabels, type CaptionTrack, CropUpload, type CropUploadLabels, type CropUploadProps, type CropUploadRenderProps, type DevulturApi, type DevulturCapability, DevulturCapabilityError, type DevulturContextValue, DevulturProvider, DevulturViewerProvider, type DevulturViewerProviderProps, DocumentLink, type DocumentLinkProps, DownloadLink, Image, type ImageProps, MediaFetchError, MediaLibrary, type MediaLibraryItemState, MediaLibraryLabels, type MediaLibraryPart, type MediaLibraryProps, type MediaLibraryState, type MediaLibraryStatus, type MediaObjectUrl, MediaPicker, MediaPickerLabels, type MediaPickerLibraryProps, type MediaPickerProps, type MediaPickerSelectionProps, type MediaPickerState, type MediaPickerUpload$1 as MediaPickerUpload, type MediaPickerUploadProps, type MediaPickerUploads, type PdfPreviewConfig, PdfPreviewProvider, PdfThumbnail, type PdfThumbnailProps, PdfjsLoader, Preview, type PreviewKind, PreviewLabels, type PreviewProps, type TokenStatus, type UploadOptions, type UploadedMedia, type UseMediaLibraryOptions, type UseMediaObjectUrlOptions, type UseMediaUploadOptions, type UseMediaUploadReturn, type VideoProps, type VideoState, type ViewerTokenArgs, type ViewerTokenResult, matchesAccept, useDevultur, useDevulturApi, useDevulturMedia, useDevulturOptional, useDevulturProgress, useMediaLibrary, useMediaObjectUrl, useMediaPicker, useMediaUpload, useMediaUrl, useVideoProps, useVideoState };