UNPKG

dext5upload-react

Version:

React component for DEXT5 Upload

244 lines (243 loc) 7.71 kB
/** * @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved. */ import * as PropTypes from 'prop-types'; import DEXT5Upload from './DEXT5Upload'; import { events, namespaceEvents } from './events'; /** * Event names associated with `component` events. */ export declare type ComponentEventName = typeof events[number]; /** * Event names associated with `namespace` events. */ export declare type ComponentNamespaceEventName = typeof namespaceEvents[number]; /** * Combined `component` and `namespace` events. */ export declare type ComponentDefaultEvent = ComponentEventName | ComponentNamespaceEventName; /** * Payload passed to `component` event handlers. */ export interface ComponentEventPayload<EventName> { /** * Additional event data. */ data?: Record<string, unknown> | null; /** * component instance that holds the event sender. */ component?: ComponentInstance | null; /** * Extra data appended during listener registration. */ eventInfo?: any; /** * Event name. */ name: EventName; /** * Object that publishes event. */ sender: Record<string, unknown>; /** * Cancels event (if cancelable). */ cancel?: () => void | null; /** * Removes current listener. */ removeListener?: () => void | null; /** * No listeners will be called afterwards. */ stop?: () => void | null; } /** * Signature of `component` event handler. */ export declare type ComponentEventHandler<EventName> = (evt: ComponentEventPayload<EventName>) => void; /** * Signature of `namespace` event handler. */ export declare type ComponentNamespaceHandler = (namespace: ComponentNamespace) => void; /** * Component instance. */ export declare type ComponentInstance = any; /** * Component configuration object. */ export declare type ComponentConfig = Record<string, any>; /** * Namespace object. */ export declare type ComponentNamespace = any; /** * `useDEXT5Upload` hook arguments. */ export interface ComponentHookProps<EventName extends string> { /** * Config object passed to component's constructor. * * A new instance of component will be created everytime a new instance of `config` is provided. * If this is not expected behavior then ensure referential equality of `config` between renders. */ config?: ComponentConfig | null; /** * Toggles debugging. Logs info related to component lifecycle events. */ debug?: boolean | null; /** * Dispatches `component` / `namespace` events. */ dispatchEvent?: ComponentEventDispatcher; /** * List of component events that will be dispatched. Omit if all events are to be dispatched. */ subscribeTo?: readonly EventName[]; /** * Url with component's source code. */ componentUrl?: string | null; /** * createMode. */ createMode?: string | null; /** * DOM element to which component will be bound. */ element: HTMLElement | null; } /** * Arguments passed to event registeration helper. */ export interface ComponentRegisterEventArgs<EventName> { /** * Toggles debugging. Logs info related to component lifecycle events. */ debug?: boolean | null; /** * Component instance. */ component: ComponentInstance; /** * Event handler to register. */ handler: ComponentEventHandler<EventName>; /** * Component's event name. */ evtName: EventName; /** * Custom data passed to listener. */ eventInfo?: any; } export interface ComponentHookResult { /** * Instance of component. */ component?: ComponentInstance; /** * Status of component's instance. Equivalent of `component.status`. */ status?: ComponentStatus; /** * Indicates if an error occurred. This is a non-recoverable state. Hook must be remounted. */ error?: boolean; /** * Indicates if loading of DEXT5Upload is in progress. */ loading?: boolean; } /** * Dispatcher of component events. */ export declare type ComponentEventDispatcher = ({ type, payload }: { type: string; payload: any; }) => void; /** * Possible mode of component. */ export declare type ComponentMode = 'edit' | 'view'; /** * Component status. */ export declare type ComponentStatus = 'unloaded' | 'loaded' | 'ready' | 'destroyed'; /** * Props of `DEXT5Upload` component. * * Some prop types are overriden to provide better typings than `PropTypes.InferProps` has to offer. */ export declare type ComponentProps<EventHandlerProp> = PropTypes.InferProps<Omit<typeof DEXT5Upload.propTypes, 'config' | keyof ComponentEventHandlerProp>> & { config?: ComponentConfig | null; } & Partial<ComponentEventHandlerProp> & EventHandlerProp; /** * Event handler props. */ export interface ComponentEventHandlerProp { /** * Namespace events. */ onBeforeLoad: ComponentNamespaceHandler; onNamespaceLoaded: ComponentNamespaceHandler; /** * DEXT5 Upload events. */ onLoaded: ComponentEventHandler<'loaded'>; onCreationComplete: ComponentEventHandler<'creationComplete'>; onBeforeAddItem: ComponentEventHandler<'beforeAddItem'>; onAfterAddItem: ComponentEventHandler<'afterAddItem'>; onAfterAddItemEndTime: ComponentEventHandler<'afterAddItemEndTime'>; onBeforeDeleteItem: ComponentEventHandler<'beforeDeleteItem'>; onDeleteItemEndTime: ComponentEventHandler<'deleteItemEndTime'>; onTransferStart: ComponentEventHandler<'transferStart'>; onTransferComplete: ComponentEventHandler<'transferComplete'>; onBeforeFileDownload: ComponentEventHandler<'beforeFileDownload'>; onBeforeFileViewOrOpen: ComponentEventHandler<'beforeFileViewOrOpen'>; onAfterDownload: ComponentEventHandler<'afterDownload'>; onFinishDownloaded: ComponentEventHandler<'finishDownloaded'>; onOnError: ComponentEventHandler<'onError'>; onUploadingCancel: ComponentEventHandler<'uploadingCancel'>; onSelectItem: ComponentEventHandler<'selectItem'>; onDeselectItem: ComponentEventHandler<'deselectItem'>; onCustomAction: ComponentEventHandler<'customAction'>; onAlert: ComponentEventHandler<'alert'>; onDestroy: ComponentEventHandler<'destroy'>; } /** * Event action types. */ export interface ComponentAction { /** * Namespace events. */ beforeLoad: '__RDU__beforeLoad'; namespaceLoaded: '__RDU__namespaceLoaded'; /** * DEXT5 Upload events. */ loaded: '__RDU__loaded'; creationComplete: '__RDU__creationComplete'; beforeAddItem: '__RDU__beforeAddItem'; afterAddItem: '__RDU__afterAddItem'; afterAddItemEndTime: '__RDU__afterAddItemEndTime'; beforeDeleteItem: '__RDU__beforeDeleteItem'; deleteItemEndTime: '__RDU__deleteItemEndTime'; transferStart: '__RDU__transferStart'; transferComplete: '__RDU__transferComplete'; beforeFileDownload: '__RDU__beforeFileDownload'; beforeFileViewOrOpen: '__RDU__beforeFileViewOrOpen'; afterDownload: '__RDU__afterDownload'; finishDownloaded: '__RDU__finishDownloaded'; onError: '__RDU__onError'; uploadingCancel: '__RDU__uploadingCancel'; selectItem: '__RDU__selectItem'; deselectItem: '__RDU__deselectItem'; customAction: '__RDU__customAction'; alert: '__RDU__alert'; destroy: '__RDU__destroy'; }