import { FunctionComponent } from 'react'; import { NotificationComponentProps } from '../notification/Notification'; import { ToastComponentProps } from '../toast/Toast'; import type { MessageDirection, MessagePositionType } from './types'; export interface MessageContainerProps { /** * @desc 메세지 노출 위치 * @default 'top-center' */ position: MessagePositionType; /** * @desc position 기준으로 커스텀 위치, center일 경우 적용되지 않습니다 */ offset_x: number; /** * @desc position 기준으로 커스텀 위치, center일 경우 적용되지 않습니다. */ offset_y: number; /** * @desc 최대 노출 메세지 갯수 * @default 6 */ max_count?: number; /** * @default 'toast'일 경우 1050, 'notification'일 경우 1040 */ z_index?: number; /** @default 'column' */ direction?: MessageDirection; /** @default false */ use_inline?: boolean; } type MessageContainerType = 'toast' | 'notification'; type MessageComponentTypes = ToastComponentProps | NotificationComponentProps; export type MessageContainerKey = `${MessagePositionType}_${MessageDirection}_${number}_${number}`; export type MessageOptions = Omit & Partial; export declare class MessageManager { private root; private component; private type; private z_index; private default_max_count; private default_offset; private default_position; private default_direction; private container_keys; private messages; private use_inline; private static instance; constructor({ component, type, z_index, default_max_count, default_offset, default_position, default_direction, root_container, }: { component: FunctionComponent; type: MessageContainerType; z_index?: number; default_max_count?: number; default_offset?: number; default_position?: MessagePositionType; default_direction?: MessageDirection; root_container?: HTMLElement; }); static getInstance(type: T): T extends 'toast' ? MessageManager : MessageManager; set setInstance({ default_max_count, default_offset, default_position, }: { default_max_count: number; default_offset: number; default_position: MessagePositionType; }); static generateContainerKey({ position, direction, offset_x, offset_y }: MessageContainerProps): string; static getContainerPropsByKey(key: MessageContainerKey): MessageContainerProps; private generateMessageId; private findContainerKeyById; private addContainerKey; private removeContainerKey; private getOffset; private render; show({ id, position, offset_x, offset_y, max_count, direction, ...options }: MessageOptions): void; destroy(id: string, key?: MessageContainerKey): void; } export {};