ajaxter-chat 3.0.17 → 3.2.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.
- package/dist/components/BlockList/index.d.ts +1 -0
- package/dist/components/BlockList/index.d.ts.map +1 -0
- package/dist/components/BlockList/index.js +55 -28
- package/dist/components/BlockList/index.js.map +1 -0
- package/dist/components/CallScreen/index.d.ts +1 -0
- package/dist/components/CallScreen/index.d.ts.map +1 -0
- package/dist/components/CallScreen/index.js +107 -39
- package/dist/components/CallScreen/index.js.map +1 -0
- package/dist/components/ChatScreen/index.d.ts +1 -0
- package/dist/components/ChatScreen/index.d.ts.map +1 -0
- package/dist/components/ChatScreen/index.js +493 -294
- package/dist/components/ChatScreen/index.js.map +1 -0
- package/dist/components/ChatWidget.d.ts +1 -0
- package/dist/components/ChatWidget.d.ts.map +1 -0
- package/dist/components/ChatWidget.js +499 -367
- package/dist/components/ChatWidget.js.map +1 -0
- package/dist/components/EmojiPicker/index.d.ts +1 -0
- package/dist/components/EmojiPicker/index.d.ts.map +1 -0
- package/dist/components/EmojiPicker/index.js +19 -7
- package/dist/components/EmojiPicker/index.js.map +1 -0
- package/dist/components/ErrorBoundary/index.d.ts +20 -0
- package/dist/components/ErrorBoundary/index.d.ts.map +1 -0
- package/dist/components/ErrorBoundary/index.js +76 -0
- package/dist/components/ErrorBoundary/index.js.map +1 -0
- package/dist/components/HomeScreen/index.d.ts +1 -0
- package/dist/components/HomeScreen/index.d.ts.map +1 -0
- package/dist/components/HomeScreen/index.js +236 -158
- package/dist/components/HomeScreen/index.js.map +1 -0
- package/dist/components/MaintenanceView/index.d.ts +1 -0
- package/dist/components/MaintenanceView/index.d.ts.map +1 -0
- package/dist/components/MaintenanceView/index.js +28 -12
- package/dist/components/MaintenanceView/index.js.map +1 -0
- package/dist/components/MiniCallBar/index.d.ts +1 -0
- package/dist/components/MiniCallBar/index.d.ts.map +1 -0
- package/dist/components/MiniCallBar/index.js +85 -37
- package/dist/components/MiniCallBar/index.js.map +1 -0
- package/dist/components/PermissionsGateScreen/index.d.ts +1 -0
- package/dist/components/PermissionsGateScreen/index.d.ts.map +1 -0
- package/dist/components/PermissionsGateScreen/index.js +82 -28
- package/dist/components/PermissionsGateScreen/index.js.map +1 -0
- package/dist/components/RecentChatsScreen/index.d.ts +1 -0
- package/dist/components/RecentChatsScreen/index.d.ts.map +1 -0
- package/dist/components/RecentChatsScreen/index.js +79 -19
- package/dist/components/RecentChatsScreen/index.js.map +1 -0
- package/dist/components/SlideNavMenu.d.ts +1 -0
- package/dist/components/SlideNavMenu.d.ts.map +1 -0
- package/dist/components/SlideNavMenu.js +82 -63
- package/dist/components/SlideNavMenu.js.map +1 -0
- package/dist/components/Tabs/BottomTabs.d.ts +1 -0
- package/dist/components/Tabs/BottomTabs.d.ts.map +1 -0
- package/dist/components/Tabs/BottomTabs.js +34 -19
- package/dist/components/Tabs/BottomTabs.js.map +1 -0
- package/dist/components/TicketDetailScreen/index.d.ts +1 -0
- package/dist/components/TicketDetailScreen/index.d.ts.map +1 -0
- package/dist/components/TicketDetailScreen/index.js +66 -27
- package/dist/components/TicketDetailScreen/index.js.map +1 -0
- package/dist/components/TicketFormScreen/index.d.ts +1 -0
- package/dist/components/TicketFormScreen/index.d.ts.map +1 -0
- package/dist/components/TicketFormScreen/index.js +99 -49
- package/dist/components/TicketFormScreen/index.js.map +1 -0
- package/dist/components/TicketScreen/index.d.ts +1 -0
- package/dist/components/TicketScreen/index.d.ts.map +1 -0
- package/dist/components/TicketScreen/index.js +95 -26
- package/dist/components/TicketScreen/index.js.map +1 -0
- package/dist/components/UserListScreen/index.d.ts +1 -0
- package/dist/components/UserListScreen/index.d.ts.map +1 -0
- package/dist/components/UserListScreen/index.js +127 -53
- package/dist/components/UserListScreen/index.js.map +1 -0
- package/dist/components/ViewerBlockedScreen/index.d.ts +1 -0
- package/dist/components/ViewerBlockedScreen/index.d.ts.map +1 -0
- package/dist/components/ViewerBlockedScreen/index.js +113 -61
- package/dist/components/ViewerBlockedScreen/index.js.map +1 -0
- package/dist/config/index.d.ts +7 -3
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +73 -22
- package/dist/config/index.js.map +1 -0
- package/dist/hooks/useChat.d.ts +9 -1
- package/dist/hooks/useChat.d.ts.map +1 -0
- package/dist/hooks/useChat.js +60 -18
- package/dist/hooks/useChat.js.map +1 -0
- package/dist/hooks/useRemoteConfig.d.ts +1 -0
- package/dist/hooks/useRemoteConfig.d.ts.map +1 -0
- package/dist/hooks/useRemoteConfig.js +22 -15
- package/dist/hooks/useRemoteConfig.js.map +1 -0
- package/dist/hooks/useSocket.d.ts +59 -0
- package/dist/hooks/useSocket.d.ts.map +1 -0
- package/dist/hooks/useSocket.js +203 -0
- package/dist/hooks/useSocket.js.map +1 -0
- package/dist/hooks/useWebRTC.d.ts +10 -2
- package/dist/hooks/useWebRTC.d.ts.map +1 -0
- package/dist/hooks/useWebRTC.js +101 -69
- package/dist/hooks/useWebRTC.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -21
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +129 -48
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -0
- package/dist/utils/chat.d.ts +1 -0
- package/dist/utils/chat.d.ts.map +1 -0
- package/dist/utils/chat.js +17 -7
- package/dist/utils/chat.js.map +1 -0
- package/dist/utils/fileName.d.ts +1 -0
- package/dist/utils/fileName.d.ts.map +1 -0
- package/dist/utils/fileName.js +5 -1
- package/dist/utils/fileName.js.map +1 -0
- package/dist/utils/messageSound.d.ts +1 -0
- package/dist/utils/messageSound.d.ts.map +1 -0
- package/dist/utils/messageSound.js +9 -3
- package/dist/utils/messageSound.js.map +1 -0
- package/dist/utils/presenceStatus.d.ts +1 -0
- package/dist/utils/presenceStatus.d.ts.map +1 -0
- package/dist/utils/presenceStatus.js +11 -4
- package/dist/utils/presenceStatus.js.map +1 -0
- package/dist/utils/privacyConsent.d.ts +1 -0
- package/dist/utils/privacyConsent.d.ts.map +1 -0
- package/dist/utils/privacyConsent.js +9 -3
- package/dist/utils/privacyConsent.js.map +1 -0
- package/dist/utils/reenableRequest.d.ts +1 -0
- package/dist/utils/reenableRequest.d.ts.map +1 -0
- package/dist/utils/reenableRequest.js +5 -1
- package/dist/utils/reenableRequest.js.map +1 -0
- package/dist/utils/theme.d.ts +1 -0
- package/dist/utils/theme.d.ts.map +1 -0
- package/dist/utils/theme.js +10 -4
- package/dist/utils/theme.js.map +1 -0
- package/dist/utils/widgetPermissions.d.ts +1 -0
- package/dist/utils/widgetPermissions.d.ts.map +1 -0
- package/dist/utils/widgetPermissions.js +13 -5
- package/dist/utils/widgetPermissions.js.map +1 -0
- package/dist/utils/widgetSession.d.ts +1 -0
- package/dist/utils/widgetSession.d.ts.map +1 -0
- package/dist/utils/widgetSession.js +9 -3
- package/dist/utils/widgetSession.js.map +1 -0
- package/package.json +8 -4
- package/src/components/ChatWidget.tsx +643 -622
- package/src/components/ErrorBoundary/index.tsx +62 -0
- package/src/config/index.ts +87 -26
- package/src/hooks/useChat.ts +59 -12
- package/src/hooks/useRemoteConfig.ts +8 -3
- package/src/hooks/useSocket.ts +249 -0
- package/src/hooks/useWebRTC.ts +99 -64
- package/src/index.ts +14 -3
- package/src/types/index.ts +177 -143
package/dist/types/index.d.ts
CHANGED
|
@@ -1,42 +1,148 @@
|
|
|
1
|
+
export interface AjaxterWidgetTheme {
|
|
2
|
+
header: {
|
|
3
|
+
background: string;
|
|
4
|
+
text: string;
|
|
5
|
+
};
|
|
6
|
+
agent: {
|
|
7
|
+
messageBackground: string;
|
|
8
|
+
messageText: string;
|
|
9
|
+
};
|
|
10
|
+
visitor: {
|
|
11
|
+
messageBackground: string;
|
|
12
|
+
messageText: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface AjaxterWidgetFeatures {
|
|
16
|
+
emoji: boolean;
|
|
17
|
+
rating: boolean;
|
|
18
|
+
transcript: boolean;
|
|
19
|
+
voice: boolean;
|
|
20
|
+
attachment: boolean;
|
|
21
|
+
webCall: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface AjaxterMinimized {
|
|
24
|
+
desktop: {
|
|
25
|
+
type: 'slide' | 'round' | 'square';
|
|
26
|
+
height?: number;
|
|
27
|
+
width?: number;
|
|
28
|
+
borderRadiusTop?: number;
|
|
29
|
+
borderRadiusBottom?: number;
|
|
30
|
+
};
|
|
31
|
+
mobile: {
|
|
32
|
+
type: 'round' | 'slide' | 'square';
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface AjaxterWidgetSettings {
|
|
36
|
+
type: 'inline' | 'popup' | 'embed';
|
|
37
|
+
language: string;
|
|
38
|
+
minimized: AjaxterMinimized;
|
|
39
|
+
maximized: {
|
|
40
|
+
desktop: {
|
|
41
|
+
height: number;
|
|
42
|
+
width: number;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
theme: AjaxterWidgetTheme;
|
|
46
|
+
notification?: {
|
|
47
|
+
all?: {
|
|
48
|
+
sound?: boolean;
|
|
49
|
+
agentTyping?: boolean;
|
|
50
|
+
visitorTyping?: boolean;
|
|
51
|
+
};
|
|
52
|
+
desktop?: {
|
|
53
|
+
preview?: boolean;
|
|
54
|
+
};
|
|
55
|
+
mobile?: {
|
|
56
|
+
preview?: boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
behavior?: {
|
|
60
|
+
defaultView?: string;
|
|
61
|
+
};
|
|
62
|
+
visibility?: {
|
|
63
|
+
all?: {
|
|
64
|
+
showWhenOffline?: boolean;
|
|
65
|
+
};
|
|
66
|
+
desktop?: {
|
|
67
|
+
position?: string;
|
|
68
|
+
show?: boolean;
|
|
69
|
+
};
|
|
70
|
+
mobile?: {
|
|
71
|
+
position?: string;
|
|
72
|
+
show?: boolean;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
features: AjaxterWidgetFeatures;
|
|
76
|
+
scheduler?: {
|
|
77
|
+
enabled: boolean;
|
|
78
|
+
config?: unknown;
|
|
79
|
+
};
|
|
80
|
+
states?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
/** Internal fields that drive the npm widget behaviour */
|
|
83
|
+
export interface AjaxterInternalConfig {
|
|
84
|
+
id: string;
|
|
85
|
+
apiKey: string;
|
|
86
|
+
status: ChatStatus;
|
|
87
|
+
chatType: ChatType;
|
|
88
|
+
/** 'slider' = side drawer, 'popup' = centered modal, 'inline' = embedded in page */
|
|
89
|
+
displayMode: DisplayMode;
|
|
90
|
+
primaryColor: string;
|
|
91
|
+
buttonLabel: string;
|
|
92
|
+
brandName: string | null;
|
|
93
|
+
supportPhone: string | null;
|
|
94
|
+
privacyPolicyUrl: string | null;
|
|
95
|
+
showPrivacyNotice: boolean;
|
|
96
|
+
allowVoiceMessage: boolean;
|
|
97
|
+
allowAttachment: boolean;
|
|
98
|
+
allowEmoji: boolean;
|
|
99
|
+
allowWebCall: boolean;
|
|
100
|
+
maxEmojiCount: number;
|
|
101
|
+
allowTranscript: boolean;
|
|
102
|
+
allowReport: boolean;
|
|
103
|
+
allowBlock: boolean;
|
|
104
|
+
}
|
|
105
|
+
/** Full response shape from GET /api/chat-config */
|
|
106
|
+
export interface AjaxterConfigResponse {
|
|
107
|
+
ok: boolean;
|
|
108
|
+
data: {
|
|
109
|
+
settingsVersion: string;
|
|
110
|
+
propertyName: string;
|
|
111
|
+
branding: {
|
|
112
|
+
name: string;
|
|
113
|
+
};
|
|
114
|
+
widget: AjaxterWidgetSettings;
|
|
115
|
+
_internal: AjaxterInternalConfig;
|
|
116
|
+
developers: ChatUser[];
|
|
117
|
+
users: ChatUser[];
|
|
118
|
+
sampleChats: Record<string, ChatMessage[]>;
|
|
119
|
+
sampleTickets: Ticket[];
|
|
120
|
+
blockedUsers: string[];
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** The merged WidgetConfig shape used throughout the widget components */
|
|
1
124
|
export interface WidgetConfig {
|
|
2
125
|
id: string;
|
|
3
126
|
apiKey: string;
|
|
4
127
|
status: ChatStatus;
|
|
5
128
|
chatType: ChatType;
|
|
129
|
+
displayMode: DisplayMode;
|
|
6
130
|
primaryColor: string;
|
|
7
131
|
buttonLabel: string;
|
|
8
132
|
buttonPosition: 'bottom-right' | 'bottom-left';
|
|
9
133
|
welcomeTitle: string;
|
|
10
134
|
welcomeSubtitle: string;
|
|
11
|
-
/** Shown in footer (e.g. branch / location name) */
|
|
12
135
|
branch?: string;
|
|
13
|
-
/** Optional label above branch (e.g. "Answers by") */
|
|
14
136
|
footerPoweredBy?: string;
|
|
15
|
-
/** Shown on home “Call Us” (tel: link) */
|
|
16
137
|
supportPhone?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Who is using the widget. `developer` = support staff: “Need Support” becomes “Provide Support”
|
|
19
|
-
* and lists customers; “New Conversation” lists other developers (excl. viewerUid).
|
|
20
|
-
*/
|
|
21
138
|
viewerType?: 'user' | 'developer';
|
|
22
|
-
/** Current user id when viewerType is developer — excluded from developer pick lists */
|
|
23
139
|
viewerUid?: string;
|
|
24
|
-
/** Display name for transfer notes (optional) */
|
|
25
140
|
viewerName?: string;
|
|
26
|
-
/**
|
|
27
|
-
* Host app project scope (set when embedding passes `viewer.projectId`).
|
|
28
|
-
* Use for API calls; lists can be filtered to users in the same project.
|
|
29
|
-
*/
|
|
30
141
|
viewerProjectId?: string;
|
|
31
|
-
/** Privacy Policy URL (linked from chat consent banner) */
|
|
32
142
|
privacyPolicyUrl?: string;
|
|
33
|
-
/** Set false to hide the consent note above the composer */
|
|
34
143
|
showPrivacyNotice?: boolean;
|
|
35
|
-
/** Product brand (e.g. Ajaxter) */
|
|
36
144
|
brandName?: string;
|
|
37
|
-
/** Home promotion: “Take a Website Tour” link */
|
|
38
145
|
websiteTourUrl?: string;
|
|
39
|
-
/** Optional override for the lead line in the promotion card */
|
|
40
146
|
promotionLead?: string;
|
|
41
147
|
allowVoiceMessage: boolean;
|
|
42
148
|
allowAttachment: boolean;
|
|
@@ -46,28 +152,13 @@ export interface WidgetConfig {
|
|
|
46
152
|
allowTranscriptDownload: boolean;
|
|
47
153
|
allowReport: boolean;
|
|
48
154
|
allowBlock: boolean;
|
|
49
|
-
/**
|
|
50
|
-
* When `true` (set by the server if this viewer is spam-blocked or not in allowed user/ticket/chat lists),
|
|
51
|
-
* the widget hides all normal navigation and shows only the blocked-user screen with a re-enable request form.
|
|
52
|
-
*/
|
|
53
155
|
viewerBlocked?: boolean;
|
|
54
|
-
/** Optional override for the blocked message (default is a fixed spam notice). */
|
|
55
156
|
blockedViewerMessage?: string;
|
|
56
|
-
/**
|
|
57
|
-
* Absolute URL for `POST` JSON re-enable requests. If omitted, the submit button explains that no endpoint is configured.
|
|
58
|
-
* @example https://api.example.com/widgets/reenable-request
|
|
59
|
-
*/
|
|
60
157
|
reenableRequestUrl?: string;
|
|
61
|
-
/**
|
|
62
|
-
* Current presence from your API/DB (include in chatData or a session payload).
|
|
63
|
-
* When set, it initializes the status control and overrides session-only cache.
|
|
64
|
-
*/
|
|
65
158
|
presenceStatus?: PresenceStatus;
|
|
66
|
-
/**
|
|
67
|
-
* Production: `POST` JSON `{ widgetId, apiKey, viewerUid?, status }` to save presence in your database.
|
|
68
|
-
* The client still mirrors to sessionStorage as a local fallback.
|
|
69
|
-
*/
|
|
70
159
|
presenceUpdateUrl?: string;
|
|
160
|
+
/** Full Ajaxter settings from server (for display-mode, theming, etc.) */
|
|
161
|
+
ajaxterSettings?: AjaxterWidgetSettings;
|
|
71
162
|
}
|
|
72
163
|
export interface RemoteChatData {
|
|
73
164
|
widget: WidgetConfig;
|
|
@@ -79,13 +170,13 @@ export interface RemoteChatData {
|
|
|
79
170
|
}
|
|
80
171
|
export type ChatStatus = 'ACTIVE' | 'DISABLE' | 'MAINTENANCE';
|
|
81
172
|
export type ChatType = 'SUPPORT' | 'CHAT' | 'BOTH';
|
|
173
|
+
export type DisplayMode = 'slider' | 'popup' | 'inline';
|
|
82
174
|
export type UserType = 'developer' | 'user';
|
|
83
175
|
export type OnlineStatus = 'online' | 'away' | 'offline';
|
|
84
176
|
export type BottomTab = 'home' | 'chats' | 'tickets';
|
|
85
177
|
export type Screen = 'home' | 'user-list' | 'chat' | 'recent-chats' | 'tickets' | 'ticket-new' | 'ticket-detail' | 'block-list' | 'call';
|
|
86
178
|
export type UserListContext = 'support' | 'conversation';
|
|
87
179
|
export type MessageType = 'text' | 'voice' | 'attachment' | 'emoji';
|
|
88
|
-
/** Home status selector; persist via `presenceUpdateUrl` in production */
|
|
89
180
|
export type PresenceStatus = 'ACTIVE' | 'AWAY' | 'DND';
|
|
90
181
|
export interface ChatUser {
|
|
91
182
|
uid: string;
|
|
@@ -97,10 +188,6 @@ export interface ChatUser {
|
|
|
97
188
|
avatar: string | null;
|
|
98
189
|
status: OnlineStatus;
|
|
99
190
|
designation: string;
|
|
100
|
-
/**
|
|
101
|
-
* When `true` for the row matching the current viewer (`viewerUid` / `viewer.uid`),
|
|
102
|
-
* the widget shows the spam/blocked screen (same as `widget.viewerBlocked`).
|
|
103
|
-
*/
|
|
104
191
|
viewerBlocked?: boolean;
|
|
105
192
|
}
|
|
106
193
|
export interface ChatMessage {
|
|
@@ -113,12 +200,9 @@ export interface ChatMessage {
|
|
|
113
200
|
status: 'sent' | 'delivered' | 'read';
|
|
114
201
|
attachmentName?: string;
|
|
115
202
|
attachmentSize?: string;
|
|
116
|
-
/** Blob URL for attachment download (local send) */
|
|
117
203
|
attachmentUrl?: string;
|
|
118
|
-
/** e.g. image/png — used for inline image preview in bubbles */
|
|
119
204
|
attachmentMime?: string;
|
|
120
205
|
voiceDuration?: number;
|
|
121
|
-
/** Blob URL for in-bubble audio playback (local recording) */
|
|
122
206
|
voiceUrl?: string;
|
|
123
207
|
}
|
|
124
208
|
export interface Ticket {
|
|
@@ -150,6 +234,7 @@ export interface CallSession {
|
|
|
150
234
|
export interface LocalEnvConfig {
|
|
151
235
|
apiKey: string;
|
|
152
236
|
widgetId: string;
|
|
237
|
+
socketUrl: string;
|
|
153
238
|
}
|
|
154
239
|
export interface ChatWidgetTheme {
|
|
155
240
|
primaryColor?: string;
|
|
@@ -160,18 +245,14 @@ export interface ChatWidgetTheme {
|
|
|
160
245
|
buttonPosition?: 'bottom-right' | 'bottom-left';
|
|
161
246
|
borderRadius?: string;
|
|
162
247
|
}
|
|
163
|
-
/**
|
|
164
|
-
* Pass the logged-in user from your React app so the widget matches identity and UI (user vs developer).
|
|
165
|
-
* Overrides `viewerUid`, `viewerName`, `viewerType` from remote `chatData.json` when provided.
|
|
166
|
-
*/
|
|
167
248
|
export interface ChatWidgetViewer {
|
|
168
249
|
uid: string;
|
|
169
250
|
name: string;
|
|
170
251
|
type: UserType;
|
|
171
|
-
/** When set, directory lists only include users whose `ChatUser.project` equals this string (exact match). */
|
|
172
252
|
projectId?: string;
|
|
173
253
|
}
|
|
174
254
|
export interface ChatWidgetProps {
|
|
175
255
|
theme?: ChatWidgetTheme;
|
|
176
256
|
viewer?: ChatWidgetViewer;
|
|
177
257
|
}
|
|
258
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,gFAAgF"}
|
package/dist/utils/chat.d.ts
CHANGED
|
@@ -13,3 +13,4 @@ export declare function generateTranscript(messages: ChatMessage[], peer: ChatUs
|
|
|
13
13
|
export declare function truncateWords(text: string, maxWords: number): string;
|
|
14
14
|
/** Trigger a file download in the browser */
|
|
15
15
|
export declare function downloadText(content: string, filename: string): void;
|
|
16
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEjD,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,kCAAkC;AAClC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEpD;AAED,sCAAsC;AACtC,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAOpD;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,SAAO,GACZ,MAAM,CAoBR;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAQ7D"}
|
package/dist/utils/chat.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.avatarColor = avatarColor;
|
|
4
|
+
exports.initials = initials;
|
|
5
|
+
exports.formatTime = formatTime;
|
|
6
|
+
exports.formatDate = formatDate;
|
|
7
|
+
exports.generateTranscript = generateTranscript;
|
|
8
|
+
exports.truncateWords = truncateWords;
|
|
9
|
+
exports.downloadText = downloadText;
|
|
1
10
|
/** Generate a consistent avatar color from a name */
|
|
2
|
-
|
|
11
|
+
function avatarColor(name) {
|
|
3
12
|
const palette = [
|
|
4
13
|
'#2563EB', '#7C3AED', '#059669', '#D97706',
|
|
5
14
|
'#DC2626', '#0891B2', '#4F46E5', '#BE185D',
|
|
@@ -10,15 +19,15 @@ export function avatarColor(name) {
|
|
|
10
19
|
return palette[Math.abs(hash) % palette.length];
|
|
11
20
|
}
|
|
12
21
|
/** Get initials from full name */
|
|
13
|
-
|
|
22
|
+
function initials(name) {
|
|
14
23
|
return name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2);
|
|
15
24
|
}
|
|
16
25
|
/** Format timestamp to readable time string */
|
|
17
|
-
|
|
26
|
+
function formatTime(ts) {
|
|
18
27
|
return new Date(ts).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
19
28
|
}
|
|
20
29
|
/** Format date for chat separators */
|
|
21
|
-
|
|
30
|
+
function formatDate(ts) {
|
|
22
31
|
const d = new Date(ts);
|
|
23
32
|
const today = new Date();
|
|
24
33
|
const yesterday = new Date(today);
|
|
@@ -30,7 +39,7 @@ export function formatDate(ts) {
|
|
|
30
39
|
return d.toLocaleDateString([], { month: 'short', day: 'numeric', year: 'numeric' });
|
|
31
40
|
}
|
|
32
41
|
/** Generate a plain-text transcript from messages */
|
|
33
|
-
|
|
42
|
+
function generateTranscript(messages, peer, myName = 'Me') {
|
|
34
43
|
const header = [
|
|
35
44
|
'═══════════════════════════════════════',
|
|
36
45
|
' CHAT TRANSCRIPT',
|
|
@@ -51,7 +60,7 @@ export function generateTranscript(messages, peer, myName = 'Me') {
|
|
|
51
60
|
return header + body;
|
|
52
61
|
}
|
|
53
62
|
/** Truncate to max words, append ellipsis (…) if shortened */
|
|
54
|
-
|
|
63
|
+
function truncateWords(text, maxWords) {
|
|
55
64
|
const w = text.trim().split(/\s+/).filter(Boolean);
|
|
56
65
|
if (w.length === 0)
|
|
57
66
|
return '';
|
|
@@ -60,7 +69,7 @@ export function truncateWords(text, maxWords) {
|
|
|
60
69
|
return `${w.slice(0, maxWords).join(' ')}…`;
|
|
61
70
|
}
|
|
62
71
|
/** Trigger a file download in the browser */
|
|
63
|
-
|
|
72
|
+
function downloadText(content, filename) {
|
|
64
73
|
const blob = new Blob([content], { type: 'text/plain' });
|
|
65
74
|
const url = URL.createObjectURL(blob);
|
|
66
75
|
const a = document.createElement('a');
|
|
@@ -69,3 +78,4 @@ export function downloadText(content, filename) {
|
|
|
69
78
|
a.click();
|
|
70
79
|
URL.revokeObjectURL(url);
|
|
71
80
|
}
|
|
81
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/utils/chat.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fileName.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileName.d.ts","sourceRoot":"","sources":["../../src/utils/fileName.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAI5E"}
|
package/dist/utils/fileName.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shortAttachmentLabel = shortAttachmentLabel;
|
|
1
4
|
/** Display name: first 10 chars + "[...]" if longer; full name in tooltip via title */
|
|
2
|
-
|
|
5
|
+
function shortAttachmentLabel(fileName, maxChars = 10) {
|
|
3
6
|
const n = fileName.trim();
|
|
4
7
|
if (n.length <= maxChars)
|
|
5
8
|
return n;
|
|
6
9
|
return `${n.slice(0, maxChars)}[...]`;
|
|
7
10
|
}
|
|
11
|
+
//# sourceMappingURL=fileName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileName.js","sourceRoot":"","sources":["../../src/utils/fileName.ts"],"names":[],"mappings":";;AACA,oDAIC;AALD,uFAAuF;AACvF,SAAgB,oBAAoB,CAAC,QAAgB,EAAE,QAAQ,GAAG,EAAE;IAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSound.d.ts","sourceRoot":"","sources":["../../src/utils/messageSound.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,IAAI,CAwBvC;AAID,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAShE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAM/E"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.playMessageSound = playMessageSound;
|
|
4
|
+
exports.getMessageSoundEnabled = getMessageSoundEnabled;
|
|
5
|
+
exports.setMessageSoundEnabled = setMessageSoundEnabled;
|
|
1
6
|
/** Short notification tone for incoming chat messages */
|
|
2
|
-
|
|
7
|
+
function playMessageSound() {
|
|
3
8
|
try {
|
|
4
9
|
const AC = window.AudioContext || window.webkitAudioContext;
|
|
5
10
|
if (!AC)
|
|
@@ -28,7 +33,7 @@ export function playMessageSound() {
|
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
const soundPrefKey = (widgetId) => `ajaxter_sound_${widgetId}`;
|
|
31
|
-
|
|
36
|
+
function getMessageSoundEnabled(widgetId) {
|
|
32
37
|
if (typeof window === 'undefined')
|
|
33
38
|
return true;
|
|
34
39
|
try {
|
|
@@ -41,7 +46,7 @@ export function getMessageSoundEnabled(widgetId) {
|
|
|
41
46
|
return true;
|
|
42
47
|
}
|
|
43
48
|
}
|
|
44
|
-
|
|
49
|
+
function setMessageSoundEnabled(widgetId, enabled) {
|
|
45
50
|
try {
|
|
46
51
|
localStorage.setItem(soundPrefKey(widgetId), enabled ? '1' : '0');
|
|
47
52
|
}
|
|
@@ -49,3 +54,4 @@ export function setMessageSoundEnabled(widgetId, enabled) {
|
|
|
49
54
|
/* ignore */
|
|
50
55
|
}
|
|
51
56
|
}
|
|
57
|
+
//# sourceMappingURL=messageSound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageSound.js","sourceRoot":"","sources":["../../src/utils/messageSound.ts"],"names":[],"mappings":";;AACA,4CAwBC;AAID,wDASC;AAED,wDAMC;AA9CD,yDAAyD;AACzD,SAAgB,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,IAAK,MAAkE,CAAC,kBAAkB,CAAC;QACzH,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC;gBACH,CAAC,CAAC,IAAI,EAAE,CAAC;gBACT,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;YAAC,WAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAAC,WAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,iBAAiB,QAAQ,EAAE,CAAC;AAEvE,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,CAAC,KAAK,GAAG,CAAC;IACnB,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB,EAAE,OAAgB;IACvE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAAC,WAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presenceStatus.d.ts","sourceRoot":"","sources":["../../src/utils/presenceStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CASnE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAMjF;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,cAAc,GAAG,SAAS,GACvC,cAAc,CAGhB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,6DAA6D;AAC7D,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAenG"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadPresenceStatus = loadPresenceStatus;
|
|
4
|
+
exports.savePresenceStatus = savePresenceStatus;
|
|
5
|
+
exports.resolveInitialPresence = resolveInitialPresence;
|
|
6
|
+
exports.syncPresenceToServer = syncPresenceToServer;
|
|
1
7
|
const key = (widgetId) => `ajaxter_presence_${widgetId}`;
|
|
2
|
-
|
|
8
|
+
function loadPresenceStatus(widgetId) {
|
|
3
9
|
if (typeof sessionStorage === 'undefined')
|
|
4
10
|
return 'ACTIVE';
|
|
5
11
|
try {
|
|
@@ -12,7 +18,7 @@ export function loadPresenceStatus(widgetId) {
|
|
|
12
18
|
}
|
|
13
19
|
return 'ACTIVE';
|
|
14
20
|
}
|
|
15
|
-
|
|
21
|
+
function savePresenceStatus(widgetId, status) {
|
|
16
22
|
try {
|
|
17
23
|
sessionStorage.setItem(key(widgetId), status);
|
|
18
24
|
}
|
|
@@ -21,13 +27,13 @@ export function savePresenceStatus(widgetId, status) {
|
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
/** Prefer server value from DB when the host includes it in config */
|
|
24
|
-
|
|
30
|
+
function resolveInitialPresence(widgetId, serverStatus) {
|
|
25
31
|
if (serverStatus === 'ACTIVE' || serverStatus === 'AWAY' || serverStatus === 'DND')
|
|
26
32
|
return serverStatus;
|
|
27
33
|
return loadPresenceStatus(widgetId);
|
|
28
34
|
}
|
|
29
35
|
/** Call your backend to persist presence (production DB). */
|
|
30
|
-
|
|
36
|
+
async function syncPresenceToServer(url, payload) {
|
|
31
37
|
const res = await fetch(url, {
|
|
32
38
|
method: 'POST',
|
|
33
39
|
headers: {
|
|
@@ -43,3 +49,4 @@ export async function syncPresenceToServer(url, payload) {
|
|
|
43
49
|
throw new Error(t || `Presence sync failed (${res.status})`);
|
|
44
50
|
}
|
|
45
51
|
}
|
|
52
|
+
//# sourceMappingURL=presenceStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presenceStatus.js","sourceRoot":"","sources":["../../src/utils/presenceStatus.ts"],"names":[],"mappings":";;AAIA,gDASC;AAED,gDAMC;AAGD,wDAMC;AAUD,oDAeC;AArDD,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,oBAAoB,QAAQ,EAAE,CAAC;AAEjE,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,IAAI,OAAO,cAAc,KAAK,WAAW;QAAE,OAAO,QAAQ,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAAC,WAAM,CAAC;QACP,KAAK;IACP,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,MAAsB;IACzE,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,WAAM,CAAC;QACP,WAAW;IACb,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,SAAgB,sBAAsB,CACpC,QAAgB,EAChB,YAAwC;IAExC,IAAI,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC;IACxG,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AASD,6DAA6D;AACtD,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,OAA4B;IAClF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,yBAAyB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -2,3 +2,4 @@ export declare function getPrivacyDismissedAt(widgetId: string): number | null;
|
|
|
2
2
|
/** After dismiss, banner stays hidden until one hour has passed */
|
|
3
3
|
export declare function shouldShowPrivacyNotice(widgetId: string): boolean;
|
|
4
4
|
export declare function dismissPrivacyNotice(widgetId: string): void;
|
|
5
|
+
//# sourceMappingURL=privacyConsent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacyConsent.d.ts","sourceRoot":"","sources":["../../src/utils/privacyConsent.ts"],"names":[],"mappings":"AAMA,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUrE;AAED,mEAAmE;AACnE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM3D"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPrivacyDismissedAt = getPrivacyDismissedAt;
|
|
4
|
+
exports.shouldShowPrivacyNotice = shouldShowPrivacyNotice;
|
|
5
|
+
exports.dismissPrivacyNotice = dismissPrivacyNotice;
|
|
1
6
|
const HOUR_MS = 60 * 60 * 1000;
|
|
2
7
|
function key(widgetId) {
|
|
3
8
|
return `ajaxter_privacy_dismiss_${widgetId}`;
|
|
4
9
|
}
|
|
5
|
-
|
|
10
|
+
function getPrivacyDismissedAt(widgetId) {
|
|
6
11
|
if (typeof window === 'undefined')
|
|
7
12
|
return null;
|
|
8
13
|
try {
|
|
@@ -17,13 +22,13 @@ export function getPrivacyDismissedAt(widgetId) {
|
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
/** After dismiss, banner stays hidden until one hour has passed */
|
|
20
|
-
|
|
25
|
+
function shouldShowPrivacyNotice(widgetId) {
|
|
21
26
|
const at = getPrivacyDismissedAt(widgetId);
|
|
22
27
|
if (at == null)
|
|
23
28
|
return true;
|
|
24
29
|
return Date.now() - at >= HOUR_MS;
|
|
25
30
|
}
|
|
26
|
-
|
|
31
|
+
function dismissPrivacyNotice(widgetId) {
|
|
27
32
|
try {
|
|
28
33
|
localStorage.setItem(key(widgetId), String(Date.now()));
|
|
29
34
|
}
|
|
@@ -31,3 +36,4 @@ export function dismissPrivacyNotice(widgetId) {
|
|
|
31
36
|
/* ignore quota / private mode */
|
|
32
37
|
}
|
|
33
38
|
}
|
|
39
|
+
//# sourceMappingURL=privacyConsent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacyConsent.js","sourceRoot":"","sources":["../../src/utils/privacyConsent.ts"],"names":[],"mappings":";;AAMA,sDAUC;AAGD,0DAIC;AAED,oDAMC;AA/BD,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/B,SAAS,GAAG,CAAC,QAAgB;IAC3B,OAAO,2BAA2B,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,SAAgB,uBAAuB,CAAC,QAAgB;IACtD,MAAM,EAAE,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,EAAE,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,OAAO,CAAC;AACpC,CAAC;AAED,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,WAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reenableRequest.d.ts","sourceRoot":"","sources":["../../src/utils/reenableRequest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAevG"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.submitReenableRequest = submitReenableRequest;
|
|
4
|
+
async function submitReenableRequest(url, payload) {
|
|
2
5
|
const res = await fetch(url, {
|
|
3
6
|
method: 'POST',
|
|
4
7
|
headers: {
|
|
@@ -14,3 +17,4 @@ export async function submitReenableRequest(url, payload) {
|
|
|
14
17
|
throw new Error(text || `Request failed (${res.status})`);
|
|
15
18
|
}
|
|
16
19
|
}
|
|
20
|
+
//# sourceMappingURL=reenableRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reenableRequest.js","sourceRoot":"","sources":["../../src/utils/reenableRequest.ts"],"names":[],"mappings":";;AAWA,sDAeC;AAfM,KAAK,UAAU,qBAAqB,CAAC,GAAW,EAAE,OAA+B;IACtF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
package/dist/utils/theme.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export declare const defaultTheme: Required<ChatWidgetTheme>;
|
|
|
3
3
|
export declare function mergeTheme(remote?: Partial<ChatWidgetTheme>, local?: ChatWidgetTheme): Required<ChatWidgetTheme>;
|
|
4
4
|
/** Darken a hex color by `amount` (0-255) */
|
|
5
5
|
export declare function darken(hex: string, amount?: number): string;
|
|
6
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,eAAe,CAQlD,CAAC;AAEF,wBAAgB,UAAU,CACxB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,KAAK,CAAC,EAAE,eAAe,GACtB,QAAQ,CAAC,eAAe,CAAC,CAE3B;AAED,6CAA6C;AAC7C,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAMvD"}
|
package/dist/utils/theme.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultTheme = void 0;
|
|
4
|
+
exports.mergeTheme = mergeTheme;
|
|
5
|
+
exports.darken = darken;
|
|
6
|
+
exports.defaultTheme = {
|
|
2
7
|
primaryColor: '#2563EB',
|
|
3
8
|
fontFamily: "'DM Sans', 'Segoe UI', sans-serif",
|
|
4
9
|
buttonColor: '#2563EB',
|
|
@@ -7,14 +12,15 @@ export const defaultTheme = {
|
|
|
7
12
|
buttonPosition: 'bottom-right',
|
|
8
13
|
borderRadius: '0px', // drawer uses 16px only on top-left / bottom-left
|
|
9
14
|
};
|
|
10
|
-
|
|
11
|
-
return Object.assign(Object.assign(Object.assign({}, defaultTheme), remote), local);
|
|
15
|
+
function mergeTheme(remote, local) {
|
|
16
|
+
return Object.assign(Object.assign(Object.assign({}, exports.defaultTheme), remote), local);
|
|
12
17
|
}
|
|
13
18
|
/** Darken a hex color by `amount` (0-255) */
|
|
14
|
-
|
|
19
|
+
function darken(hex, amount = 20) {
|
|
15
20
|
const n = parseInt(hex.replace('#', ''), 16);
|
|
16
21
|
const r = Math.max(0, (n >> 16) - amount);
|
|
17
22
|
const g = Math.max(0, ((n >> 8) & 0xff) - amount);
|
|
18
23
|
const b = Math.max(0, (n & 0xff) - amount);
|
|
19
24
|
return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`;
|
|
20
25
|
}
|
|
26
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/utils/theme.ts"],"names":[],"mappings":";;;AAYA,gCAKC;AAGD,wBAMC;AAxBY,QAAA,YAAY,GAA8B;IACrD,YAAY,EAAK,SAAS;IAC1B,UAAU,EAAO,mCAAmC;IACpD,WAAW,EAAM,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,WAAW,EAAM,SAAS;IAC1B,cAAc,EAAG,cAAc;IAC/B,YAAY,EAAK,KAAK,EAAI,kDAAkD;CAC7E,CAAC;AAEF,SAAgB,UAAU,CACxB,MAAiC,EACjC,KAAuB;IAEvB,qDAAY,oBAAY,GAAK,MAAM,GAAK,KAAK,EAAG;AAClD,CAAC;AAED,6CAA6C;AAC7C,SAAgB,MAAM,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACxE,CAAC"}
|
|
@@ -7,3 +7,4 @@ export declare function permissionsSessionKey(widgetId: string): string;
|
|
|
7
7
|
export declare function hasStoredPermissionsGrant(widgetId: string): boolean;
|
|
8
8
|
export declare function storePermissionsGrant(widgetId: string): void;
|
|
9
9
|
export declare function clearStoredPermissionsGrant(widgetId: string): void;
|
|
10
|
+
//# sourceMappingURL=widgetPermissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgetPermissions.d.ts","sourceRoot":"","sources":["../../src/utils/widgetPermissions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAiCjE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOnE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM5D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMlE"}
|