@skywu/virtual-chat-sdk 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,20 @@
1
+ import { ChatSDKConfig, ProjectResponse, TemplateResponse, APIResponse } from '../types';
2
+ export declare class APIClient {
3
+ private baseUrl;
4
+ private token?;
5
+ constructor(config: ChatSDKConfig);
6
+ private request;
7
+ getProject(projectId: string): Promise<ProjectResponse>;
8
+ getTemplate(templateId: string, language?: string): Promise<TemplateResponse>;
9
+ getProjectTemplates(projectId: string): Promise<APIResponse>;
10
+ sendMessage(projectId: string, userId: string, content: string, messageType?: string): Promise<APIResponse>;
11
+ joinProject(projectId: string, userId: string, username: string): Promise<APIResponse>;
12
+ leaveProject(projectId: string, userId: string): Promise<APIResponse>;
13
+ getSimulationData(projectId: string, userId: string, language?: string): Promise<APIResponse>;
14
+ getSimulationMessages(projectId: string, userId: string, since?: string, limit?: number): Promise<APIResponse>;
15
+ sendUserMessage(projectId: string, userId: string, username: string, content: string, messageType?: string): Promise<APIResponse>;
16
+ triggerAIReply(projectId: string, userId: string, username: string, content: string, messageType?: string): Promise<APIResponse>;
17
+ setToken(token: string): void;
18
+ setBaseUrl(baseUrl: string): void;
19
+ }
20
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,WAAW,EAEZ,MAAM,UAAU,CAAA;AAEjB,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAAC,CAAQ;gBAEV,MAAM,EAAE,aAAa;YAKnB,OAAO;IAsDf,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAIvD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAK7E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5D,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,WAAW,CAAC;IAYjB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWtF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWrE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ7F,qBAAqB,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAOjB,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,WAAW,CAAC;IAajB,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAe,GAC3B,OAAO,CAAC,WAAW,CAAC;IAcvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGlC"}
@@ -0,0 +1,49 @@
1
+ import { ChatSDKConfig, ChatSDKInstance, ChatMessage } from './types';
2
+ import { SimpleEventEmitter } from './utils/event-emitter';
3
+ export declare class ChatSDK extends SimpleEventEmitter implements ChatSDKInstance {
4
+ private config;
5
+ private apiClient;
6
+ private socketClient;
7
+ private widget;
8
+ private userId;
9
+ private username;
10
+ private currentProject?;
11
+ private currentTemplate?;
12
+ private isInitialized;
13
+ constructor(config: ChatSDKConfig);
14
+ private validateConfig;
15
+ private getDefaultConfig;
16
+ private initialize;
17
+ private loadProject;
18
+ private loadTemplate;
19
+ private setupEventListeners;
20
+ private handleUserMessage;
21
+ private handleError;
22
+ open(): void;
23
+ close(): void;
24
+ destroy(): void;
25
+ setLanguage(language: string): void;
26
+ setTheme(theme: 'light' | 'dark' | 'auto'): void;
27
+ setUITemplate(template: 'whatsapp' | 'telegram'): void;
28
+ setCustomColors(colors: {
29
+ primary?: string;
30
+ background?: string;
31
+ }): void;
32
+ setTemplate(templateId: string): void;
33
+ joinChat(): void;
34
+ leaveChat(): void;
35
+ sendMessage(content: string, messageType?: 'text' | 'image' | 'file'): Promise<void>;
36
+ startSimulation(): void;
37
+ stopSimulation(): void;
38
+ pauseSimulation(): void;
39
+ resumeSimulation(): void;
40
+ isOpen(): boolean;
41
+ isJoined(): boolean;
42
+ getConfig(): ChatSDKConfig;
43
+ getMessages(): ChatMessage[];
44
+ get isSimulationRunning(): boolean;
45
+ get isSimulationPaused(): boolean;
46
+ get simulationEnded(): boolean;
47
+ get messageCount(): number;
48
+ }
49
+ //# sourceMappingURL=chat-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-sdk.d.ts","sourceRoot":"","sources":["../../src/chat-sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EAIZ,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAM1D,qBAAa,OAAQ,SAAQ,kBAAmB,YAAW,eAAe;IACxE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAC,CAAU;IAClC,OAAO,CAAC,aAAa,CAAQ;gBAEjB,MAAM,EAAE,aAAa;IAuBjC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,gBAAgB;YA8BV,UAAU;YA6BV,WAAW;YAqBX,YAAY;IAkB1B,OAAO,CAAC,mBAAmB;YAkEb,iBAAiB;IA4B/B,OAAO,CAAC,WAAW;IAUnB,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IAMf,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAWnC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAShD,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAYtD,eAAe,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASxE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKrC,QAAQ,IAAI,IAAI;IAShB,SAAS,IAAI,IAAI;IAKjB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,GAAG,OAAO,GAAG,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5F,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,IAAI;IAItB,eAAe,IAAI,IAAI;IAIvB,gBAAgB,IAAI,IAAI;IAKxB,MAAM,IAAI,OAAO;IAIjB,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,aAAa;IAI1B,WAAW,IAAI,WAAW,EAAE;IAK5B,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
@@ -0,0 +1,11 @@
1
+ import { ChatSDK } from './chat-sdk';
2
+ import { ChatSDKConfig, ChatSDKInstance, ChatMessage, ChatSDKError } from './types';
3
+ export { ChatSDKConfig, ChatSDKInstance, ChatMessage, ChatSDKError };
4
+ export declare function init(config: ChatSDKConfig): ChatSDKInstance;
5
+ declare const _default: {
6
+ init: typeof init;
7
+ ChatSDK: typeof ChatSDK;
8
+ ChatSDKError: typeof ChatSDKError;
9
+ };
10
+ export default _default;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACb,CAAA;AAGD,wBAAgB,IAAI,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAE3D;;;;;;AAGD,wBAIC"}
@@ -0,0 +1,76 @@
1
+ import { ChatSDKConfig, ChatMessage, TemplateMessage } from '../types';
2
+ import { SimpleEventEmitter } from '../utils/event-emitter';
3
+ import { APIClient } from '../api/client';
4
+ export interface SimulationData {
5
+ project: {
6
+ id: string;
7
+ name: string;
8
+ uiTemplate: string;
9
+ initialBurstCount: number;
10
+ continuousCount: number;
11
+ messageIntervalMin: number;
12
+ messageIntervalMax: number;
13
+ initialMessageInterval: number;
14
+ primaryColor?: string;
15
+ backgroundColor?: string;
16
+ };
17
+ template: {
18
+ id: string;
19
+ name: string;
20
+ language: string;
21
+ };
22
+ messages: TemplateMessage[];
23
+ session: {
24
+ id: string;
25
+ startedAt: string;
26
+ };
27
+ }
28
+ export declare class ChatSimulator extends SimpleEventEmitter {
29
+ private config;
30
+ private apiClient;
31
+ private simulationData;
32
+ private displayedMessages;
33
+ private currentMessageIndex;
34
+ private isRunning;
35
+ private isPaused;
36
+ private intervalId;
37
+ private pollingId;
38
+ private burstPhase;
39
+ private totalToShow;
40
+ private virtualLastTimestamp;
41
+ private realLastTimestamp;
42
+ private lastTimestamp;
43
+ private lastDelayMs;
44
+ private userId;
45
+ constructor(config: ChatSDKConfig, apiClient: APIClient);
46
+ initialize(): Promise<void>;
47
+ start(): void;
48
+ private performInitialBurst;
49
+ pause(): void;
50
+ resume(): void;
51
+ stop(): void;
52
+ destroy(): void;
53
+ private scheduleNextMessage;
54
+ private displayNextMessage;
55
+ private loadExistingMessages;
56
+ private startPolling;
57
+ private stopPolling;
58
+ private pollForNewMessages;
59
+ private reconstructVirtualHistoryForDisplay;
60
+ private getLastMessageTimestamp;
61
+ private getUserKey;
62
+ private getProgressKey;
63
+ private getPersistedUserId;
64
+ private persistUserId;
65
+ private loadProgress;
66
+ private saveProgress;
67
+ private clearProgress;
68
+ private getRandomInterval;
69
+ private generateUserId;
70
+ get messages(): ChatMessage[];
71
+ get isSimulationRunning(): boolean;
72
+ get isSimulationPaused(): boolean;
73
+ get data(): SimulationData | null;
74
+ sendMessage(content: string, messageType?: string): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=chat-simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-simulator.d.ts","sourceRoot":"","sources":["../../../src/simulation/chat-simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,UAAU,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,iBAAiB,EAAE,MAAM,CAAA;QACzB,eAAe,EAAE,MAAM,CAAA;QACvB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,kBAAkB,EAAE,MAAM,CAAA;QAC1B,sBAAsB,EAAE,MAAM,CAAA;QAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,qBAAa,aAAc,SAAQ,kBAAkB;IACnD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,WAAW,CAAW;IAE9B,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAY;IAE/B,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS;IAMjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8DjC,KAAK,IAAI,IAAI;IAqBb,OAAO,CAAC,mBAAmB;IAsG3B,KAAK,IAAI,IAAI;IAWb,MAAM,IAAI,IAAI;IAQd,IAAI,IAAI,IAAI;IAYZ,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAC,kBAAkB;YA6DZ,oBAAoB;IA8DlC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;YAOL,kBAAkB;YAuDlB,mCAAmC;IAwHjD,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAKtB,IAAI,QAAQ,IAAI,WAAW,EAAE,CAE5B;IAED,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,IAAI,IAAI,cAAc,GAAG,IAAI,CAEhC;IAGK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAwChF"}
@@ -0,0 +1,21 @@
1
+ import { ChatSDKConfig } from '../types';
2
+ import { SimpleEventEmitter } from '../utils/event-emitter';
3
+ export declare class SocketClient extends SimpleEventEmitter {
4
+ private socket;
5
+ private config;
6
+ private reconnectAttempts;
7
+ private maxReconnectAttempts;
8
+ private reconnectDelay;
9
+ constructor(config: ChatSDKConfig);
10
+ connect(): void;
11
+ disconnect(): void;
12
+ isConnected(): boolean;
13
+ joinRoom(projectId: string, userId: string, username: string): void;
14
+ leaveRoom(projectId: string, userId: string): void;
15
+ sendMessage(projectId: string, userId: string, content: string, messageType?: string): void;
16
+ startTyping(projectId: string, userId: string): void;
17
+ stopTyping(projectId: string, userId: string): void;
18
+ private setupEventListeners;
19
+ private handleReconnect;
20
+ }
21
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/socket/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAA8B,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,qBAAa,YAAa,SAAQ,kBAAkB;IAClD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,oBAAoB,CAAI;IAChC,OAAO,CAAC,cAAc,CAAO;gBAEjB,MAAM,EAAE,aAAa;IAKjC,OAAO,IAAI,IAAI;IAyBf,UAAU,IAAI,IAAI;IAQlB,WAAW,IAAI,OAAO;IAItB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYnE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWlD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,MAAe,GAAG,IAAI;IAcnG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWpD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWnD,OAAO,CAAC,mBAAmB;IA8D3B,OAAO,CAAC,eAAe;CAkBxB"}
@@ -0,0 +1,217 @@
1
+ export interface FloatingButtonOffset {
2
+ top?: number;
3
+ right?: number;
4
+ bottom?: number;
5
+ left?: number;
6
+ }
7
+ export type FloatingButtonPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
8
+ export interface FloatingButtonConfig {
9
+ position?: FloatingButtonPosition;
10
+ offset?: FloatingButtonOffset;
11
+ icon?: 'chat' | string;
12
+ zIndex?: number;
13
+ }
14
+ export interface ChatSDKConfig {
15
+ container: string | HTMLElement;
16
+ projectId: string;
17
+ templateId?: string;
18
+ userId?: string;
19
+ username?: string;
20
+ language?: string;
21
+ theme?: 'light' | 'dark' | 'auto';
22
+ uiTemplate?: 'whatsapp' | 'telegram';
23
+ primaryColor?: string;
24
+ backgroundColor?: string;
25
+ customTheme?: {
26
+ colors?: {
27
+ primary?: string;
28
+ background?: string;
29
+ messageOwn?: string;
30
+ messageOther?: string;
31
+ header?: string;
32
+ };
33
+ borderRadius?: {
34
+ message?: string;
35
+ input?: string;
36
+ };
37
+ };
38
+ apiBaseUrl?: string;
39
+ socketUrl?: string;
40
+ token?: string;
41
+ width?: string | number;
42
+ height?: string | number;
43
+ position?: 'fixed' | 'relative' | 'absolute';
44
+ zIndex?: number;
45
+ mode?: 'fullscreen' | 'floating';
46
+ floatingButton?: FloatingButtonConfig;
47
+ autoJoin?: boolean;
48
+ autoStart?: boolean;
49
+ showAvatars?: boolean;
50
+ showUsernames?: boolean;
51
+ allowInput?: boolean;
52
+ enableUserInput?: boolean;
53
+ pollingInterval?: number;
54
+ initialRenderCount?: number;
55
+ lazyLoadBatchSize?: number;
56
+ groupMessages?: boolean;
57
+ groupTimeThresholdSec?: number;
58
+ onReady?: () => void;
59
+ onOpen?: () => void;
60
+ onClose?: () => void;
61
+ onJoin?: (data: {
62
+ userId: string;
63
+ username: string;
64
+ }) => void;
65
+ onMessage?: (message: ChatMessage) => void;
66
+ onUserMessage?: (message: ChatMessage) => void;
67
+ onError?: (error: Error) => void;
68
+ onLanguageChange?: (language: string) => void;
69
+ onThemeChange?: (theme: string) => void;
70
+ onSimulationStart?: () => void;
71
+ onSimulationEnd?: () => void;
72
+ }
73
+ export interface ChatMessage {
74
+ id: string;
75
+ content: string;
76
+ messageType: 'text' | 'image' | 'emoji' | 'file';
77
+ timestamp: Date;
78
+ isOwnMessage: boolean;
79
+ virtualUser?: VirtualUser;
80
+ user?: RealUser;
81
+ hasScreenshot?: boolean;
82
+ screenshotUrl?: string;
83
+ failed?: boolean;
84
+ }
85
+ export interface VirtualUser {
86
+ id: string;
87
+ username: string;
88
+ displayName?: string;
89
+ avatar?: string;
90
+ }
91
+ export interface RealUser {
92
+ id: string;
93
+ username: string;
94
+ avatar?: string;
95
+ }
96
+ export interface Project {
97
+ id: string;
98
+ name: string;
99
+ description?: string;
100
+ uiTemplate: string;
101
+ language: string;
102
+ isActive: boolean;
103
+ templates?: Template[];
104
+ }
105
+ export interface Template {
106
+ id: string;
107
+ name: string;
108
+ description?: string;
109
+ language: string;
110
+ messages: TemplateMessage[];
111
+ }
112
+ export interface TemplateMessage {
113
+ id: string;
114
+ content: string;
115
+ messageType: 'text' | 'image' | 'file';
116
+ order: number;
117
+ delay?: number;
118
+ hasScreenshot: boolean;
119
+ screenshotUrl?: string;
120
+ virtualUser?: VirtualUser;
121
+ translations?: Record<string, string>;
122
+ }
123
+ export interface ChatSDKInstance {
124
+ open(): void;
125
+ close(): void;
126
+ destroy(): void;
127
+ setLanguage(language: string): void;
128
+ setTheme(theme: 'light' | 'dark' | 'auto'): void;
129
+ setTemplate(templateId: string): void;
130
+ setUITemplate(template: 'whatsapp' | 'telegram'): void;
131
+ setCustomColors(colors: {
132
+ primary?: string;
133
+ background?: string;
134
+ }): void;
135
+ joinChat(): void;
136
+ leaveChat(): void;
137
+ sendMessage(content: string, messageType?: string): void;
138
+ startSimulation(): void;
139
+ stopSimulation(): void;
140
+ pauseSimulation(): void;
141
+ resumeSimulation(): void;
142
+ sendMessage(content: string, messageType?: 'text' | 'image' | 'emoji' | 'file'): void;
143
+ isOpen(): boolean;
144
+ isJoined(): boolean;
145
+ getConfig(): ChatSDKConfig;
146
+ getMessages(): ChatMessage[];
147
+ on(event: string, callback: Function): void;
148
+ off(event: string, callback?: Function): void;
149
+ emit(event: string, data?: any): void;
150
+ }
151
+ export interface ChatState {
152
+ isInitialized: boolean;
153
+ isOpen: boolean;
154
+ isJoined: boolean;
155
+ isConnected: boolean;
156
+ isSimulationRunning: boolean;
157
+ isSimulationPaused: boolean;
158
+ currentProject?: Project;
159
+ currentTemplate?: Template;
160
+ messages: ChatMessage[];
161
+ virtualUsers: VirtualUser[];
162
+ realUsers: RealUser[];
163
+ typingUsers: string[];
164
+ simulationEnded: boolean;
165
+ lastMessageTimestamp?: string;
166
+ displayedMessageCount: number;
167
+ sessionId?: string;
168
+ }
169
+ export interface APIResponse<T = any> {
170
+ success: boolean;
171
+ data?: T;
172
+ message?: string;
173
+ error?: string;
174
+ }
175
+ export interface ProjectResponse extends APIResponse {
176
+ project: Project;
177
+ }
178
+ export interface TemplateResponse extends APIResponse {
179
+ template: Template;
180
+ availableLanguages?: string[];
181
+ resolvedLanguage?: string;
182
+ }
183
+ export interface SocketEvents {
184
+ 'user-joined': (data: {
185
+ userId: string;
186
+ username: string;
187
+ projectId: string;
188
+ }) => void;
189
+ 'user-left': (data: {
190
+ userId: string;
191
+ projectId: string;
192
+ }) => void;
193
+ 'new-message': (message: ChatMessage) => void;
194
+ 'user-typing': (data: {
195
+ userId: string;
196
+ username: string;
197
+ projectId: string;
198
+ }) => void;
199
+ 'user-stopped-typing': (data: {
200
+ userId: string;
201
+ projectId: string;
202
+ }) => void;
203
+ 'simulation-ended': (data: {
204
+ projectId: string;
205
+ }) => void;
206
+ }
207
+ export declare class ChatSDKError extends Error {
208
+ code?: string | undefined;
209
+ details?: any | undefined;
210
+ constructor(message: string, code?: string | undefined, details?: any | undefined);
211
+ }
212
+ export interface EventEmitter {
213
+ on(event: string, callback: Function): void;
214
+ off(event: string, callback?: Function): void;
215
+ emit(event: string, data?: any): void;
216
+ }
217
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,sBAAsB,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;AAE9F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,sBAAsB,CAAA;IACjC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAE5B,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;IAGjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAGpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE;YACP,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,YAAY,CAAC,EAAE,MAAM,CAAA;YACrB,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;QACD,YAAY,CAAC,EAAE;YACb,OAAO,CAAC,EAAE,MAAM,CAAA;YAChB,KAAK,CAAC,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;IAGD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,IAAI,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IAChC,cAAc,CAAC,EAAE,oBAAoB,CAAA;IAGrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IAIxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAG9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7D,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAC7B;AAGD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;IAChD,SAAS,EAAE,IAAI,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAGD,MAAM,WAAW,eAAe;IAE9B,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;IAGf,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAChD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,aAAa,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAA;IACtD,eAAe,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAGxE,QAAQ,IAAI,IAAI,CAAA;IAChB,SAAS,IAAI,IAAI,CAAA;IACjB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxD,eAAe,IAAI,IAAI,CAAA;IACvB,cAAc,IAAI,IAAI,CAAA;IACtB,eAAe,IAAI,IAAI,CAAA;IACvB,gBAAgB,IAAI,IAAI,CAAA;IACxB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAGrF,MAAM,IAAI,OAAO,CAAA;IACjB,QAAQ,IAAI,OAAO,CAAA;IACnB,SAAS,IAAI,aAAa,CAAA;IAC1B,WAAW,IAAI,WAAW,EAAE,CAAA;IAG5B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACtC;AAGD,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,OAAO,CAAA;IACpB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAGD,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAGD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClE,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC5E,kBAAkB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAC1D;AAGD,qBAAa,YAAa,SAAQ,KAAK;IAG5B,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAGD,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IAC7C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACtC"}
@@ -0,0 +1,86 @@
1
+ import { ChatSDKConfig, ChatMessage, ChatState } from '../types';
2
+ import { SimpleEventEmitter } from '../utils/event-emitter';
3
+ export declare class ChatWidget extends SimpleEventEmitter {
4
+ private config;
5
+ private container;
6
+ private shadowRoot;
7
+ private widgetElement;
8
+ private messagesContainer;
9
+ private inputElement;
10
+ private sendButton;
11
+ private emojiButton;
12
+ private imageButton;
13
+ private fileInput;
14
+ private emojiPicker;
15
+ private emojiPanelOpen;
16
+ private state;
17
+ private simulator;
18
+ private apiClient;
19
+ private onlineCount;
20
+ private floatingButtonEl?;
21
+ private currentTheme;
22
+ private isDarkMode;
23
+ private customColors;
24
+ private visibleStartIndex;
25
+ private initialRenderCount;
26
+ private lazyLoadBatchSize;
27
+ constructor(config: ChatSDKConfig);
28
+ private init;
29
+ private setupSimulatorEvents;
30
+ private initializeSimulation;
31
+ private setupContainer;
32
+ private createWidget;
33
+ private setupEventListeners;
34
+ private createFloatingButton;
35
+ private toggleEmojiPicker;
36
+ private insertEmojiAtCursor;
37
+ private isEmojiOnly;
38
+ private handleImageSelected;
39
+ private resizeImageFile;
40
+ private handleInputChange;
41
+ private handleKeyDown;
42
+ private handleSendMessage;
43
+ private autoResizeTextarea;
44
+ open(): void;
45
+ close(): void;
46
+ setTitle(title: string, subtitle?: string): void;
47
+ private buildMessageElement;
48
+ private shouldGroupWithPrev;
49
+ private handleScrollLazyLoad;
50
+ setLoading(loading: boolean): void;
51
+ showJoinOverlay(): void;
52
+ hideJoinOverlay(): void;
53
+ addMessage(message: ChatMessage): void;
54
+ addMessagesBulk(messages: ChatMessage[]): void;
55
+ private reRenderAllMessages;
56
+ private renderMessage;
57
+ private createAvatar;
58
+ private createMessageContent;
59
+ private scrollToBottom;
60
+ private setupImageViewer;
61
+ private openImageViewer;
62
+ private showImagePreview;
63
+ setJoined(joined: boolean): void;
64
+ setUITemplate(template: 'whatsapp' | 'telegram'): void;
65
+ setTheme(theme: 'light' | 'dark'): void;
66
+ setCustomColors(colors: {
67
+ primary?: string;
68
+ background?: string;
69
+ }): void;
70
+ private updateThemeStyles;
71
+ private setCSSProperty;
72
+ getState(): ChatState;
73
+ private getDefaultStyles;
74
+ startSimulation(): void;
75
+ stopSimulation(): void;
76
+ pauseSimulation(): void;
77
+ resumeSimulation(): void;
78
+ sendMessage(content: string, messageType?: string): Promise<void>;
79
+ get isSimulationRunning(): boolean;
80
+ get isSimulationPaused(): boolean;
81
+ get simulationEnded(): boolean;
82
+ get messageCount(): number;
83
+ get messages(): ChatMessage[];
84
+ destroy(): void;
85
+ }
86
+ //# sourceMappingURL=chat-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-widget.d.ts","sourceRoot":"","sources":["../../../src/ui/chat-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare function createElement(tag: string, className?: string, attributes?: Record<string, string>): HTMLElement;
2
+ export declare function getElement(selector: string | HTMLElement): HTMLElement | null;
3
+ export declare function removeElement(element: HTMLElement): void;
4
+ export declare function addStyles(element: HTMLElement, styles: Record<string, string>): void;
5
+ export declare function createShadowRoot(element: HTMLElement): ShadowRoot;
6
+ export declare function injectCSS(shadowRoot: ShadowRoot | Document, css: string): void;
7
+ export declare function sanitizeHTML(html: string): string;
8
+ export declare function escapeHTML(text: string): string;
9
+ export declare function formatTimestamp(date: Date, language?: string): string;
10
+ export declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
11
+ export declare function throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
12
+ export declare function generateId(): string;
13
+ export declare function isElementInViewport(element: HTMLElement): boolean;
14
+ export declare function scrollToBottom(element: HTMLElement, smooth?: boolean): void;
15
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAc/G;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,IAAI,CAK7E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAIxD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAIpF;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAEjE;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAI9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmCrE;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,GACX,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAYlC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAQjE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAO,GAAG,IAAI,CAWxE"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from '../types';
2
+ export declare class SimpleEventEmitter implements EventEmitter {
3
+ private events;
4
+ on(event: string, callback: Function): void;
5
+ off(event: string, callback?: Function): void;
6
+ emit(event: string, data?: any): void;
7
+ getEventNames(): string[];
8
+ listenerCount(event: string): number;
9
+ removeAllListeners(): void;
10
+ }
11
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../src/utils/event-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,MAAM,CAAqC;IAEnD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAO3C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IAqB7C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAcrC,aAAa,IAAI,MAAM,EAAE;IAKzB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKpC,kBAAkB,IAAI,IAAI;CAG3B"}
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "@skywu/virtual-chat-sdk",
3
+ "version": "1.1.0",
4
+ "description": "Virtual Chat SDK - Floating chat widget for seamless website integration with real-time messaging",
5
+ "type": "module",
6
+ "main": "dist/chat-sdk.umd.js",
7
+ "module": "dist/chat-sdk.esm.js",
8
+ "types": "dist/types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/chat-sdk.esm.js",
12
+ "require": "./dist/chat-sdk.umd.js",
13
+ "types": "./dist/types/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "rollup -c",
23
+ "build:watch": "rollup -c -w",
24
+ "dev": "rollup -c -w",
25
+ "type-check": "tsc --noEmit",
26
+ "prepublishOnly": "npm run build",
27
+ "test": "echo \"No tests specified\" && exit 0"
28
+ },
29
+ "keywords": [
30
+ "chat",
31
+ "widget",
32
+ "embed",
33
+ "sdk",
34
+ "javascript",
35
+ "typescript",
36
+ "floating-button",
37
+ "chat-widget",
38
+ "virtual-chat",
39
+ "real-time",
40
+ "websocket"
41
+ ],
42
+ "author": "Virtual Chat Team",
43
+ "license": "MIT",
44
+ "homepage": "https://github.com/your-org/virtual-chat-sdk#readme",
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/your-org/virtual-chat-sdk.git"
48
+ },
49
+ "bugs": {
50
+ "url": "https://github.com/your-org/virtual-chat-sdk/issues"
51
+ },
52
+ "engines": {
53
+ "node": ">=16.0.0"
54
+ },
55
+ "devDependencies": {
56
+ "@rollup/plugin-commonjs": "^25.0.7",
57
+ "@rollup/plugin-node-resolve": "^15.2.3",
58
+ "@rollup/plugin-typescript": "^11.1.5",
59
+ "@rollup/plugin-terser": "^0.4.4",
60
+ "@types/node": "^20.10.0",
61
+ "rollup": "^4.6.1",
62
+ "rollup-plugin-postcss": "^4.0.2",
63
+ "typescript": "^5.3.2"
64
+ },
65
+ "dependencies": {
66
+ "socket.io-client": "^4.7.4"
67
+ },
68
+ "peerDependencies": {},
69
+ "browserslist": [
70
+ "> 1%",
71
+ "last 2 versions",
72
+ "not dead"
73
+ ]
74
+ }