UNPKG

tawk-react

Version:

React wrapper for tawk.to live chat

217 lines (169 loc) 6.42 kB
import { FC } from 'react'; declare type AgentData = { id: string; image: string; name: string; position: string; }; declare type Attachment = { type: 'file'; content: FileAttachment; }; declare type BasicCallback = (error: Error) => void; declare type ChatWindowType = 'inline' | 'embed'; declare type CustomStyle = { zIndex: number | string; }; declare type FileAttachment = { file: { url: string; name: string; mimeType: string; size: number; extension: string; }; }; declare type Link = string; declare type LoginData = { hash: string; userId: string; name?: string; email?: string; phone?: string; }; declare type Message = { message: string; attachments: Attachment[]; }; declare type OfflineFormData = { email: string; name: string; questions: { label: string; answer: string; }[]; submittedFrom: string; }; declare type PreChatData = Record<string, unknown>; declare enum Satisfaction { Dislike = -1, Neutral = 0, Link = 1 } declare type Status = 'online' | 'away' | 'offline'; declare type TagsData = { tags: string[]; tagsv: number; }; declare type TawkActions = { start: TawkAPI_start; shutdown: TawkAPI_shutdown; switchWidget: TawkAPI_switchWidget; login: TawkAPI_login; logout: TawkAPI_logout; maximize: TawkAPI_maximize; minimize: TawkAPI_minimize; toggle: TawkAPI_toggle; popup: TawkAPI_popup; getWindowType: TawkAPI_getWindowType; showWidget: TawkAPI_showWidget; hideWidget: TawkAPI_hideWidget; toggleVisibility: TawkAPI_toggleVisibility; getStatus: TawkAPI_getStatus; isChatMaximized: TawkAPI_isChatMaximized; isChatMinimized: TawkAPI_isChatMinimized; isChatHidden: TawkAPI_isChatHidden; isChatOngoing: TawkAPI_isChatOngoing; isVisitorEngaged: TawkAPI_isVisitorEngaged; endChat: TawkAPI_endChat; setAttributes: TawkAPI_setAttributes; addEvent: TawkAPI_addEvent; addTags: TawkAPI_addTags; removeTags: TawkAPI_removeTags; }; declare type TawkAPI_addEvent = (eventName: string, metadata: Record<string, string> | undefined, callback: BasicCallback) => void; declare type TawkAPI_addTags = (tags: string[], callback: BasicCallback) => void; declare type TawkAPI_endChat = () => void; declare type TawkAPI_getStatus = () => Status | undefined; declare type TawkAPI_getWindowType = () => ChatWindowType | undefined; declare type TawkAPI_hideWidget = () => void; declare type TawkAPI_isChatHidden = () => boolean | undefined; declare type TawkAPI_isChatMaximized = () => boolean | undefined; declare type TawkAPI_isChatMinimized = () => boolean | undefined; declare type TawkAPI_isChatOngoing = () => boolean | undefined; declare type TawkAPI_isVisitorEngaged = () => boolean | undefined; declare type TawkAPI_login = (data: LoginData, callback: BasicCallback) => void; declare type TawkAPI_logout = (callback: BasicCallback) => void; declare type TawkAPI_maximize = () => void; declare type TawkAPI_minimize = () => void; declare type TawkAPI_popup = () => void; declare type TawkAPI_removeTags = (tags: string[], callback: BasicCallback) => void; declare type TawkAPI_setAttributes = (attributes: Record<string, string>, callback: BasicCallback) => void; declare type TawkAPI_showWidget = () => void; declare type TawkAPI_shutdown = () => void; declare type TawkAPI_start = ({ showWidget }: { showWidget: boolean; }) => void; declare type TawkAPI_switchWidget = ({ propertyId, widgetId }: { propertyId: string; widgetId: string; }, callback: BasicCallback) => void; declare type TawkAPI_toggle = () => void; declare type TawkAPI_toggleVisibility = () => void; export declare enum TawkEvent { onLoad = "tawkLoad", onStatusChange = "tawkStatusChange", onBeforeLoad = "tawkBeforeLoad", onChatMaximized = "tawkChatMaximized", onChatMinimized = "tawkChatMinimized", onChatHidden = "tawkChatHidden", onChatStarted = "tawkChatStarted", onChatEnded = "tawkChatEnded", onPrechatSubmit = "tawkPrechatSubmit", onOfflineSubmit = "tawkOfflineSubmit", onChatMessageVisitor = "tawkChatMessageVisitor", onChatMessageAgent = "tawkChatMessageAgent", onChatMessageSystem = "tawkChatMessageSystem", onAgentJoinChat = "tawkAgentJoinChat", onAgentLeaveChat = "tawkAgentLeaveChat", onChatSatisfaction = "tawkChatSatisfaction", onVisitorNameChanged = "tawkVisitorNameChanged", onFileUpload = "tawkFileUpload", onTagsUpdated = "tawkTagsUpdated" } declare type TawkEventMap = { [TawkEvent.onLoad]: () => void; [TawkEvent.onStatusChange]: (status: Status) => void; [TawkEvent.onBeforeLoad]: () => void; [TawkEvent.onChatMaximized]: () => void; [TawkEvent.onChatMinimized]: () => void; [TawkEvent.onChatHidden]: () => void; [TawkEvent.onChatStarted]: () => void; [TawkEvent.onChatEnded]: () => void; [TawkEvent.onPrechatSubmit]: (data: PreChatData) => void; [TawkEvent.onOfflineSubmit]: (data: OfflineFormData) => void; [TawkEvent.onChatMessageVisitor]: (message: Message) => void; [TawkEvent.onChatMessageAgent]: (messageEvent: Message) => void; [TawkEvent.onChatMessageSystem]: (messageEvent: Message) => void; [TawkEvent.onAgentJoinChat]: (agentData: AgentData) => void; [TawkEvent.onAgentLeaveChat]: (agentLeaveData: AgentData) => void; [TawkEvent.onChatSatisfaction]: (satisfaction: Satisfaction) => void; [TawkEvent.onVisitorNameChanged]: (visitorName: string) => void; [TawkEvent.onFileUpload]: (link: Link) => void; [TawkEvent.onTagsUpdated]: (data: TagsData) => void; }; export declare const TawkLiveChat: FC<TawkLiveChatProps>; export declare interface TawkLiveChatProps { propertyId: string; widgetId: string; visitor?: Visitor; customStyle?: CustomStyle; autoStart?: boolean; } export declare function useTawkAction(): TawkActions; export declare function useTawkEvent<T extends keyof TawkEventMap>(eventName: T, callback: TawkEventMap[T]): void; declare type Visitor = { name: string; email: string; }; export { }