@whoj/box-vue
Version:
Box Ui Elements as Vue (2 & 3) Component
935 lines (934 loc) • 27.3 kB
TypeScript
/**
* @module @whoj/box-vue
* @version 1.0.0-beta.8
* @copyright 2023 Jonson B. All rights reserved.
*/
import { Func, ArgumentsType, MaybeRef, Constructor } from '@whoj/utils';
import * as vue from 'vue';
import { AxiosRequestConfig, AxiosResponse } from 'axios';
type File = UnObj;
type Folder = UnObj;
type WebLink = UnObj;
type TokenGenerator = () => string | Promise<string>;
interface CdnOption {
js: string;
css: string;
}
type UnObj<T extends object = {}> = T & {
[p: string]: any;
};
interface BoxUiOptions {
/**
* CSS selector of the container in which Preview should be placed
* @default document.body
*/
container?: string;
/**
* Shared link URL, required if file is shared and the access token doesn't belong to an owner or collaborator of the file
*/
sharedLink?: string;
/**
* Shared link password, required if shared link has a password
*/
sharedLinkPassword?: string;
/**
* URL of custom logo to show in header.
* If this value is the string box then the box logo will show
*/
logoUrl?: string;
[p: string]: any;
}
interface BaseEl<T extends Record<string, any>, _Events extends {
[p: string]: Func<any, void>;
} = {}> {
/**
*
* @public
* @param {string} id - File/Folder ID to preview
* @param {string|TokenGenerator} accessToken - Box API access token
* @param {object} [options] - Options
*
* @return {void}
*/
show(id: string, accessToken: string | TokenGenerator, options?: T): void;
/**
* Hides the preview.
*
* @return {void}
*/
hide(): void;
/**
* Adds an event listener. Listeners should be added
* before calling show() so no events are missed.
*
* @param {string} eventName - Name of the event
* @param {Func<any, void>} listener - Callback function
* @return {void}
*/
addListener<_Event extends keyof _Events>(eventName: _Event, listener: Func<ArgumentsType<_Events[_Event]>[0], void>): void;
/**
* Removes an event listener
*
* @param {string} eventName - Name of the event
* @param {Func<any, void>} listener - Callback function
* @return {void}
*/
removeListener<_Event extends keyof _Events>(eventName: _Event, listener: Func<ArgumentsType<_Events[_Event]>[0], void>): void;
/**
* Removes all event listeners from the el.
*
* @return {void}
*/
removeAllListeners(): void;
[p: string]: any;
}
type MapToReturnVoid<T extends {
[p: string]: Func<any, boolean>;
}> = {
[K in keyof T]: (...args: ArgumentsType<T[K]>) => void;
};
type MaybePromise<T> = Promise<T> | PromiseLike<T> | T;
interface UseCdnOptions {
/**
* Custom CDN links to use for specific element/component
*/
cdn?: CdnOption;
/**
* Version of box-ui-elements to use.
* It will have no effect when using custom cdn links
*/
version?: string;
/**
* Whether to dispose the Head on unmount
*/
disposeOnUnmount?: boolean;
/**
* Script onload handler
*/
onload?: Func<Event, void>;
/**
* Css Code as string
*/
style?: MaybeRef<string>;
}
declare enum BoxUiElements {
explorer = "ContentExplorer",
picker = "FilePicker",
preview = "Preview",
sidebar = "ContentSidebar",
uploader = "ContentUploader"
}
type GlobalBoxUiElements = ReverseMap<typeof BoxUiElements>;
type ReverseMap<T extends Record<keyof T, any>> = {
[V in T[keyof T]]: {
[K in keyof T]: T[K] extends V ? K : never;
}[keyof T];
};
type UseBoxElementsOptions<Opt, E extends object = any> = Opt & UseCdnOptions & {
listeners?: E;
immediate?: boolean;
};
declare const EXPLORER_EVENTS: {
select: (payload: Array<File | Folder | WebLink>) => boolean;
rename: (payload: File | Folder | WebLink) => boolean;
preview: (payload: File) => boolean;
download: (payload: File[]) => boolean;
delete: (payload: File[]) => boolean;
upload: (payload: File[]) => boolean;
navigate: (payload: Folder) => boolean;
create: (payload: Folder) => boolean;
};
declare type ExplorerEvents = MapToReturnVoid<typeof EXPLORER_EVENTS>;
interface ExplorerOptions extends BoxUiOptions {
/**
* Indicates to the content explorer to fit within a small or large width container.
* If absent the UI Element will adapt to its container
* and automatically switch between small width or large width mode.
*/
size?: 'small' | 'large';
/**
* The initial sort by option for the content list.
*/
sortBy?: 'id' | 'name' | 'date' | 'size';
/**
* The initial sort direction option for the content list.
*/
sortDirection?: 'ASC' | 'DESC';
/**
* When set to true, the item grid will get focus on initial load.
*/
autoFocus?: boolean;
canCreateNewFolder?: boolean;
canDelete?: boolean;
canDownload?: boolean;
canPreview?: boolean;
canRename?: boolean;
canSetShareAccess?: boolean;
canShare?: boolean;
canUpload?: boolean;
/**
* Indicates to the content explorer that it is being rendered on a touch enabled device.
* Defaults to the browser and device's default touch support
*/
isTouch?: boolean;
/**
* When set to recents, by default you will see recent items instead of the regular file/folder structure.
*/
defaultView?: 'files' | 'recents';
/**
* // See https://github.com/axios/axios#interceptors
*/
requestInterceptor?: Func<AxiosRequestConfig, MaybePromise<any | void>>;
/**
* // See https://github.com/axios/axios#interceptors
*/
responseInterceptor?: Func<AxiosResponse, MaybePromise<AxiosResponse | void>>;
/**
* Allows you to show the Open With Element when previewing via the explorer.
*/
ContentOpenWithProps?: {
show?: boolean;
[p: string]: any;
};
}
interface Explorer extends BaseEl<ExplorerOptions, ExplorerEvents> {
/**
* Clears out the internal in-memory
* cache for the content explorer forcing
* re-load of items via the API.
*
* @public
* @return {void}
*/
clearCache(): void;
}
declare function useBoxContentExplorer(fileId: MaybeRef<string>, accessToken: MaybeRef<string>, options: UseBoxElementsOptions<ExplorerOptions, ExplorerEvents>): {
loaded: vue.Ref<boolean>;
instance: vue.Ref<Explorer>;
newBoxEl: () => Explorer;
getInstance: () => Explorer;
};
declare const BoxContentExplorer: vue.DefineComponent<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<ExplorerOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}, {
instance: Readonly<Explorer>; /**
* // See https://github.com/axios/axios#interceptors
*/
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
select: (payload: Array<File | Folder | WebLink>) => boolean;
rename: (payload: File | Folder | WebLink) => boolean;
preview: (payload: File) => boolean;
download: (payload: File[]) => boolean;
delete: (payload: File[]) => boolean;
upload: (payload: File[]) => boolean;
navigate: (payload: Folder) => boolean;
create: (payload: Folder) => boolean;
} & {
initiated: (args: Explorer) => boolean;
'update:model-value': (args: string) => boolean;
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<ExplorerOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}>> & {
onPreview?: (payload: {
[p: string]: any;
}) => any;
"onUpdate:model-value"?: (args: string) => any;
onSelect?: (payload: {
[p: string]: any;
}[]) => any;
onInitiated?: (args: Explorer) => any;
onRename?: (payload: {
[p: string]: any;
}) => any;
onDownload?: (payload: {
[p: string]: any;
}[]) => any;
onDelete?: (payload: {
[p: string]: any;
}[]) => any;
onUpload?: (payload: {
[p: string]: any;
}[]) => any;
onNavigate?: (payload: {
[p: string]: any;
}) => any;
onCreate?: (payload: {
[p: string]: any;
}) => any;
}, {
show: boolean;
disposeOnUnmount: boolean;
height: string;
options: {};
immediate: boolean;
}, {}>;
declare const PICKER_EVENTS: {
choose: (args: Array<File | Folder | WebLink>) => boolean;
cancel: () => boolean;
};
type FilePickerEvents = MapToReturnVoid<typeof PICKER_EVENTS>;
interface FilePickerOptions extends Omit<ExplorerOptions, 'canDelete' | 'canDownload' | 'canPreview' | 'canRename' | 'canShare'> {
/**
* Array of file extensions to be allowed for selection
* @example `['doc', 'ppt']`
*/
extensions?: string[];
/**
* Number of files or folders that can be selected.
* Specify 1 if you want only 1 file or folder selected.
* @default `Infinity`
*/
maxSelectable?: number;
modal?: {
buttonLabel?: string;
buttonClassName?: string;
modalClassName?: string;
overlayClassName?: string;
};
}
interface FilePicker extends BaseEl<FilePickerOptions, FilePickerEvents> {
/**
* Clears out the internal in-memory
* cache for the content explorer forcing
* re-load of items via the API.
*
* @public
* @return {void}
*/
clearCache(): void;
}
declare function useBoxFilePicker(fileId: MaybeRef<string>, accessToken: MaybeRef<string>, options: UseBoxElementsOptions<FilePickerOptions, FilePickerEvents>): {
loaded: vue.Ref<boolean>;
instance: vue.Ref<FilePicker>;
newBoxEl: () => FilePicker;
getInstance: () => FilePicker;
};
declare const BoxFilePicker: vue.DefineComponent<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<FilePickerOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}, {
instance: Readonly<FilePicker>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
choose: (args: Array<File | Folder | WebLink>) => boolean;
cancel: () => boolean;
} & {
initiated: (args: FilePicker) => boolean;
'update:model-value': (args: string) => boolean;
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<FilePickerOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}>> & {
"onUpdate:model-value"?: (args: string) => any;
onInitiated?: (args: FilePicker) => any;
onChoose?: (args: {
[p: string]: any;
}[]) => any;
onCancel?: () => any;
}, {
show: boolean;
disposeOnUnmount: boolean;
height: string;
options: {};
immediate: boolean;
}, {}>;
declare const PREVIEW_EVENTS: {
viewer: (args: any) => boolean;
load: (args: any) => boolean;
navigate: (args: any) => boolean;
notification: (args: any) => boolean;
viewerevent: (args: any) => boolean;
};
type PreviewEvents = MapToReturnVoid<typeof PREVIEW_EVENTS>;
interface PreviewOptions extends BoxUiOptions {
/**
* List of file IDs to preview over.
*/
collection?: string[];
/**
* Values that control header visibility and background color.
* Use none for no header,
* light for a light header and background,
* and dark for a dark header and background
* @default `'light'`
*/
header?: 'none' | 'light' | 'dark';
/**
* Whether annotation button in header and annotations on content are shown
* @default `false`
*/
showAnnotations?: boolean;
/**
* Whether download button is shown in header.
* Will also control print button visibility in viewers that support print.
* Note that this option will not override download permissions on the access token.
* @default `false`
*/
showDownload?: boolean;
}
interface Preview extends BaseEl<PreviewOptions, PreviewEvents> {
/**
* Prints the current file, if printable.
*
* @return {void}
*/
print(): void;
/**
* Downloads the current file.
*
* @return {void}
*/
download(): void;
/**
* Resizes the current preview, if applicable. This function only needs to
* be called when preview's viewport has changed while the window has not.
* If the window is resizing, then preview will automatically resize itself.
*
* @return {void}
*/
resize(): void;
}
declare function useBoxPreview(fileId: MaybeRef<string>, accessToken: MaybeRef<string>, options: UseBoxElementsOptions<PreviewOptions, PreviewEvents>): {
loaded: vue.Ref<boolean>;
instance: vue.Ref<Preview>;
newBoxEl: () => Preview;
getInstance: () => Preview;
};
declare const BoxPreview: vue.DefineComponent<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<PreviewOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}, {
instance: Readonly<Preview>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
viewer: (args: any) => boolean;
load: (args: any) => boolean;
navigate: (args: any) => boolean;
notification: (args: any) => boolean;
viewerevent: (args: any) => boolean;
} & {
initiated: (args: Preview) => boolean;
'update:model-value': (args: string) => boolean;
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<PreviewOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}>> & {
"onUpdate:model-value"?: (args: string) => any;
onInitiated?: (args: Preview) => any;
onNavigate?: (args: any) => any;
onNotification?: (args: any) => any;
onViewer?: (args: any) => any;
onLoad?: (args: any) => any;
onViewerevent?: (args: any) => any;
}, {
show: boolean;
disposeOnUnmount: boolean;
height: string;
options: {};
immediate: boolean;
}, {}>;
declare const SIDEBAR_EVENTS: {};
type SidebarEvents = MapToReturnVoid<typeof SIDEBAR_EVENTS>;
interface SidebarOptions extends Pick<ExplorerOptions, 'container' | 'requestInterceptor' | 'responseInterceptor'> {
/**
* Set to true to show the activity feed that includes versions, comments and tasks.
* @default `false`
*/
hasActivityFeed?: boolean;
/**
* Set to true to show box metadata for the file.
* @default `false`
*/
hasMetadata?: boolean;
/**
* Set to true to show the file skills data.
* @default `false`
*/
hasSkills?: boolean;
detailsSidebarProps?: {
hasProperties?: boolean;
hasAccessStats?: boolean;
hasVersions?: boolean;
hasNotices?: boolean;
};
}
interface Sidebar extends BaseEl<SidebarOptions, SidebarEvents> {
/**
* Clears out the internal in-memory
* cache for the content explorer forcing
* re-load of items via the API.
*
* @public
* @return {void}
*/
clearCache(): void;
}
declare function useBoxContentSidebar(fileId: MaybeRef<string>, accessToken: MaybeRef<string>, options: UseBoxElementsOptions<SidebarOptions, SidebarEvents>): {
loaded: vue.Ref<boolean>;
instance: vue.Ref<Sidebar>;
newBoxEl: () => Sidebar;
getInstance: () => Sidebar;
};
declare const BoxContentSidebar: vue.DefineComponent<{
modelValue: {
type: vue.PropType<string>;
required: boolean; /**
* Set to true to show the file skills data.
* @default `false`
*/
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<SidebarOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}, {
instance: Readonly<Sidebar>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
initiated: (args: Sidebar) => boolean;
'update:model-value': (args: string) => boolean;
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: vue.PropType<string>;
required: boolean; /**
* Set to true to show the file skills data.
* @default `false`
*/
};
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<SidebarOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}>> & {
"onUpdate:model-value"?: (args: string) => any;
onInitiated?: (args: Sidebar) => any;
}, {
show: boolean;
disposeOnUnmount: boolean;
height: string;
options: {};
immediate: boolean;
}, {}>;
declare const UPLOADER_EVENTS: {
close: () => boolean;
complete: (payload: File[]) => boolean;
error: (args: Error) => boolean;
upload: (payload: File) => boolean;
};
type UploaderEvents = MapToReturnVoid<typeof UPLOADER_EVENTS>;
interface UploaderOptions extends Pick<ExplorerOptions, 'container' | 'requestInterceptor' | 'responseInterceptor' | 'sharedLink' | 'sharedLinkPassword' | 'size' | 'isTouch'> {
/**
* Callback function for 'Close' button,
* which will appear when there are no files to upload or when all uploads are complete.
* If this option is set to `null` the button will not appear.
*/
onClose?: null | (() => void);
/**
* Number of files or folders that can be selected.
* Specify 1 if you want only 1 file or folder selected.
* @default `100`
*/
fileLimit?: number;
modal?: {
buttonLabel?: string;
buttonClassName?: string;
modalClassName?: string;
overlayClassName?: string;
};
}
interface Uploader extends BaseEl<UploaderOptions, UploaderEvents> {
}
declare function useBoxContentUploader(fileId: MaybeRef<string>, accessToken: MaybeRef<string>, options: UseBoxElementsOptions<UploaderOptions, UploaderEvents>): {
loaded: vue.Ref<boolean>;
instance: vue.Ref<Uploader>;
newBoxEl: () => Uploader;
getInstance: () => Uploader;
};
declare const BoxContentUploader: vue.DefineComponent<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
}; /**
* Callback function for 'Close' button,
* which will appear when there are no files to upload or when all uploads are complete.
* If this option is set to `null` the button will not appear.
*/
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<UploaderOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}, {
instance: Readonly<Uploader>;
}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
close: () => boolean;
complete: (payload: File[]) => boolean;
error: (args: Error) => boolean;
upload: (payload: File) => boolean;
} & {
initiated: (args: Uploader) => boolean;
'update:model-value': (args: string) => boolean;
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
modelValue: {
type: vue.PropType<string>;
required: boolean;
}; /**
* Callback function for 'Close' button,
* which will appear when there are no files to upload or when all uploads are complete.
* If this option is set to `null` the button will not appear.
*/
accessToken: {
type: vue.PropType<string>;
required: boolean;
};
cdn: {
type: vue.PropType<CdnOption>;
required: boolean;
};
options: {
type: vue.PropType<UploaderOptions>;
default: () => {};
};
version: {
type: vue.PropType<string>;
required: boolean;
};
height: {
type: vue.PropType<string>;
default: string;
};
disposeOnUnmount: {
type: vue.PropType<boolean>;
default: boolean;
};
immediate: {
type: vue.PropType<boolean>;
default: boolean;
};
show: {
type: vue.PropType<boolean>;
default: boolean;
};
}>> & {
"onUpdate:model-value"?: (args: string) => any;
onInitiated?: (args: Uploader) => any;
onUpload?: (payload: {
[p: string]: any;
}) => any;
onClose?: () => any;
onError?: (args: Error) => any;
onComplete?: (payload: {
[p: string]: any;
}[]) => any;
}, {
show: boolean;
disposeOnUnmount: boolean;
height: string;
options: {};
immediate: boolean;
}, {}>;
declare global {
interface Window {
Box: GlobalBox;
}
}
interface BoxInterfaces {
explorer: Explorer;
picker: FilePicker;
preview: Preview;
sidebar: Sidebar;
uploader: Uploader;
}
type GlobalBox = {
[K in keyof GlobalBoxUiElements]?: Constructor<BoxInterfaces[GlobalBoxUiElements[K]]>;
};
type BoxUiComponents = `Box${keyof GlobalBoxUiElements}`;
type BoxUiComposables = `useBox${keyof GlobalBoxUiElements}`;
export { BoxContentExplorer, BoxContentSidebar, BoxContentUploader, BoxFilePicker, type BoxInterfaces, BoxPreview, type BoxUiComponents, type BoxUiComposables, type CdnOption, type Explorer, type ExplorerOptions, type FilePicker, type FilePickerEvents, type FilePickerOptions, type GlobalBox, type Preview, type PreviewEvents, type PreviewOptions, type Sidebar, type SidebarEvents, type SidebarOptions, type TokenGenerator, type Uploader, type UploaderEvents, type UploaderOptions, useBoxContentExplorer, useBoxContentSidebar, useBoxContentUploader, useBoxFilePicker, useBoxPreview };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==