tawk-react
Version:
React wrapper for tawk.to live chat
217 lines (169 loc) • 6.42 kB
TypeScript
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 { }