/** * @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved. */ import * as PropTypes from 'prop-types'; import RaonkUpload from './RaonkUpload'; 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 { /** * Additional event data. */ data?: Record | 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; /** * 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 = (evt: ComponentEventPayload) => 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; /** * Namespace object. */ export declare type ComponentNamespace = any; /** * `useRaonkUpload` hook arguments. */ export interface ComponentHookProps { /** * 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; /** * DOM element to which component will be bound. */ element: HTMLElement | null; /** * Initializes component in either `html5` or `agent` mode. */ runtimes?: ComponentRuntimes | null; } /** * Arguments passed to event registeration helper. */ export interface ComponentRegisterEventArgs { /** * Toggles debugging. Logs info related to component lifecycle events. */ debug?: boolean | null; /** * Component instance. */ component: ComponentInstance; /** * Event handler to register. */ handler: ComponentEventHandler; /** * 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 RaonkUpload is in progress. */ loading?: boolean; } /** * Dispatcher of component events. */ export declare type ComponentEventDispatcher = ({ type, payload }: { type: string; payload: any; }) => void; /** * Possible types of component. */ export declare type ComponentRuntimes = 'html5' | 'agent'; /** * Possible mode of component. */ export declare type ComponentMode = 'edit' | 'view'; /** * Component status. */ export declare type ComponentStatus = 'unloaded' | 'loaded' | 'ready' | 'destroyed'; /** * Props of `RaonkUpload` component. * * Some prop types are overriden to provide better typings than `PropTypes.InferProps` has to offer. */ export declare type ComponentProps = PropTypes.InferProps> & { config?: ComponentConfig | null; } & Partial & EventHandlerProp; /** * Event handler props. */ export interface ComponentEventHandlerProp { /** * Namespace events. */ onBeforeLoad: ComponentNamespaceHandler; onNamespaceLoaded: ComponentNamespaceHandler; /** * RAON K Upload events. */ onLoaded: ComponentEventHandler<'loaded'>; onCreationComplete: ComponentEventHandler<'creationComplete'>; onBeforeAddFile: ComponentEventHandler<'beforeAddFile'>; onAfterAddFile: ComponentEventHandler<'afterAddFile'>; onAfterAddAllFile: ComponentEventHandler<'afterAddAllFile'>; onBeforeDeleteFile: ComponentEventHandler<'beforeDeleteFile'>; onAfterDeleteFile: ComponentEventHandler<'afterDeleteFile'>; onDeleteAllFile: ComponentEventHandler<'deleteAllFile'>; onBeforeUpload: ComponentEventHandler<'beforeUpload'>; onUploadComplete: ComponentEventHandler<'uploadComplete'>; onBeforeDownloadFile: ComponentEventHandler<'beforeDownloadFile'>; onBeforeOpenFile: ComponentEventHandler<'beforeOpenFile'>; onDownloadCompleteFile: ComponentEventHandler<'downloadCompleteFile'>; onDownloadCompleteAllFile: ComponentEventHandler<'downloadCompleteAllFile'>; onOnError: ComponentEventHandler<'onError'>; onUploadingCancel: ComponentEventHandler<'uploadingCancel'>; onDownloadCancel: ComponentEventHandler<'downloadCancel'>; onSelectItem: ComponentEventHandler<'selectItem'>; onCustomAction: ComponentEventHandler<'customAction'>; onAlert: ComponentEventHandler<'alert'>; onDestroy: ComponentEventHandler<'destroy'>; } /** * Event action types. */ export interface ComponentAction { /** * Namespace events. */ beforeLoad: '__RKU__beforeLoad'; namespaceLoaded: '__RKU__namespaceLoaded'; /** * RAON K Upload events. */ loaded: '__RKU__loaded'; creationComplete: '__RKU__creationComplete'; beforeAddFile: '__RKU__beforeAddFile'; afterAddFile: '__RKU__afterAddFile'; afterAddAllFile: '__RKU__afterAddAllFile'; beforeDeleteFile: '__RKU__beforeDeleteFile'; afterDeleteFile: '__RKU__afterDeleteFile'; deleteAllFile: '__RKU__deleteAllFile'; beforeUpload: '__RKU__beforeUpload'; uploadComplete: '__RKU__uploadComplete'; beforeDownloadFile: '__RKU__beforeDownloadFile'; beforeOpenFile: '__RKU__beforeOpenFile'; downloadCompleteFile: '__RKU__downloadCompleteFile'; downloadCompleteAllFile: '__RKU__downloadCompleteAllFile'; onError: '__RKU__onError'; uploadingCancel: '__RKU__uploadingCancel'; downloadCancel: '__RKU__downloadCancel'; selectItem: '__RKU__selectItem'; customAction: '__RKU__customAction'; alert: '__RKU__alert'; destroy: '__RKU__destroy'; }