ajaxter-chat 3.0.17 → 3.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.
- 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 +350 -255
- 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 +1 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -2
- 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 +12 -8
- package/dist/hooks/useRemoteConfig.js.map +1 -0
- package/dist/hooks/useSocket.d.ts +40 -0
- package/dist/hooks/useSocket.d.ts.map +1 -0
- package/dist/hooks/useSocket.js +190 -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 +6 -0
- 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 +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -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 +3 -3
- package/src/components/ChatWidget.tsx +291 -269
- package/src/components/ErrorBoundary/index.tsx +62 -0
- package/src/hooks/useChat.ts +59 -12
- package/src/hooks/useSocket.ts +228 -0
- package/src/hooks/useWebRTC.ts +99 -64
- package/src/index.ts +7 -2
|
@@ -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"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requestWidgetPermissions = requestWidgetPermissions;
|
|
4
|
+
exports.permissionsSessionKey = permissionsSessionKey;
|
|
5
|
+
exports.hasStoredPermissionsGrant = hasStoredPermissionsGrant;
|
|
6
|
+
exports.storePermissionsGrant = storePermissionsGrant;
|
|
7
|
+
exports.clearStoredPermissionsGrant = clearStoredPermissionsGrant;
|
|
1
8
|
/**
|
|
2
9
|
* Requests microphone, geolocation, and screen-capture access required by the widget.
|
|
3
10
|
* Stops all tracks immediately after success (probe only).
|
|
4
11
|
*/
|
|
5
|
-
|
|
12
|
+
async function requestWidgetPermissions() {
|
|
6
13
|
var _a, _b, _c;
|
|
7
14
|
if (typeof navigator === 'undefined')
|
|
8
15
|
return false;
|
|
@@ -36,10 +43,10 @@ export async function requestWidgetPermissions() {
|
|
|
36
43
|
}
|
|
37
44
|
return true;
|
|
38
45
|
}
|
|
39
|
-
|
|
46
|
+
function permissionsSessionKey(widgetId) {
|
|
40
47
|
return `ajaxter_widget_permissions_ok_${widgetId}`;
|
|
41
48
|
}
|
|
42
|
-
|
|
49
|
+
function hasStoredPermissionsGrant(widgetId) {
|
|
43
50
|
if (typeof sessionStorage === 'undefined')
|
|
44
51
|
return false;
|
|
45
52
|
try {
|
|
@@ -49,7 +56,7 @@ export function hasStoredPermissionsGrant(widgetId) {
|
|
|
49
56
|
return false;
|
|
50
57
|
}
|
|
51
58
|
}
|
|
52
|
-
|
|
59
|
+
function storePermissionsGrant(widgetId) {
|
|
53
60
|
try {
|
|
54
61
|
sessionStorage.setItem(permissionsSessionKey(widgetId), '1');
|
|
55
62
|
}
|
|
@@ -57,7 +64,7 @@ export function storePermissionsGrant(widgetId) {
|
|
|
57
64
|
/* quota */
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
|
-
|
|
67
|
+
function clearStoredPermissionsGrant(widgetId) {
|
|
61
68
|
try {
|
|
62
69
|
sessionStorage.removeItem(permissionsSessionKey(widgetId));
|
|
63
70
|
}
|
|
@@ -65,3 +72,4 @@ export function clearStoredPermissionsGrant(widgetId) {
|
|
|
65
72
|
/* */
|
|
66
73
|
}
|
|
67
74
|
}
|
|
75
|
+
//# sourceMappingURL=widgetPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgetPermissions.js","sourceRoot":"","sources":["../../src/utils/widgetPermissions.ts"],"names":[],"mappings":";;AAIA,4DAiCC;AAED,sDAEC;AAED,8DAOC;AAED,sDAMC;AAED,kEAMC;AAlED;;;GAGG;AACI,KAAK,UAAU,wBAAwB;;IAC5C,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAEnD,IAAI,CAAC;QACH,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,YAAY,0CAAE,YAAY,CAAA;YAAE,OAAO,KAAK,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,WAAW,0CAAE,kBAAkB,CAAA;YAAE,OAAO,KAAK,CAAC;QAC7D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACtC,GAAG,EAAE,CAAC,OAAO,EAAE,EACf,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAM,EAAE,UAAU,EAAE,KAAM,EAAE,CACnE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,YAAY,0CAAE,eAAe,CAAA;YAAE,OAAO,KAAK,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,OAAO,iCAAiC,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,SAAgB,yBAAyB,CAAC,QAAgB;IACxD,IAAI,OAAO,cAAc,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC;IACzE,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IAAC,WAAM,CAAC;QACP,WAAW;IACb,CAAC;AACH,CAAC;AAED,SAAgB,2BAA2B,CAAC,QAAgB;IAC1D,IAAI,CAAC;QACH,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,WAAM,CAAC;QACP,KAAK;IACP,CAAC;AACH,CAAC"}
|
|
@@ -11,3 +11,4 @@ export interface PersistedWidgetSession {
|
|
|
11
11
|
export declare function sessionKey(widgetId: string): string;
|
|
12
12
|
export declare function loadSession(widgetId: string): PersistedWidgetSession | null;
|
|
13
13
|
export declare function saveSession(widgetId: string, state: PersistedWidgetSession): void;
|
|
14
|
+
//# sourceMappingURL=widgetSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgetSession.d.ts","sourceRoot":"","sources":["../../src/utils/widgetSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,eAAe,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAS3E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAMjF"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sessionKey = sessionKey;
|
|
4
|
+
exports.loadSession = loadSession;
|
|
5
|
+
exports.saveSession = saveSession;
|
|
6
|
+
function sessionKey(widgetId) {
|
|
2
7
|
return `ajaxter_widget_session_${widgetId}`;
|
|
3
8
|
}
|
|
4
|
-
|
|
9
|
+
function loadSession(widgetId) {
|
|
5
10
|
if (typeof window === 'undefined')
|
|
6
11
|
return null;
|
|
7
12
|
try {
|
|
@@ -14,7 +19,7 @@ export function loadSession(widgetId) {
|
|
|
14
19
|
return null;
|
|
15
20
|
}
|
|
16
21
|
}
|
|
17
|
-
|
|
22
|
+
function saveSession(widgetId, state) {
|
|
18
23
|
try {
|
|
19
24
|
sessionStorage.setItem(sessionKey(widgetId), JSON.stringify(state));
|
|
20
25
|
}
|
|
@@ -22,3 +27,4 @@ export function saveSession(widgetId, state) {
|
|
|
22
27
|
/* quota */
|
|
23
28
|
}
|
|
24
29
|
}
|
|
30
|
+
//# sourceMappingURL=widgetSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgetSession.js","sourceRoot":"","sources":["../../src/utils/widgetSession.ts"],"names":[],"mappings":";;AAYA,gCAEC;AAED,kCASC;AAED,kCAMC;AArBD,SAAgB,UAAU,CAAC,QAAgB;IACzC,OAAO,0BAA0B,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED,SAAgB,WAAW,CAAC,QAAgB;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;IACnD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,KAA6B;IACzE,IAAI,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,WAAM,CAAC;QACP,WAAW;IACb,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ajaxter-chat",
|
|
3
|
-
"version": "3.0
|
|
4
|
-
"description": "Drawer-based chat widget with
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"description": "Drawer-based chat widget with real-time WebSocket, WebRTC calling, voice messages, tickets, block list, and transcript download.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": ["dist", "src", "public"],
|
|
@@ -23,6 +23,6 @@
|
|
|
23
23
|
"react-dom": "^18.0.0",
|
|
24
24
|
"typescript": "^5.0.0"
|
|
25
25
|
},
|
|
26
|
-
"keywords": ["react","nextjs","chat","widget","webrtc","support","tickets","drawer","typescript"],
|
|
26
|
+
"keywords": ["react","nextjs","chat","widget","webrtc","support","tickets","drawer","typescript","websocket","realtime"],
|
|
27
27
|
"license": "MIT"
|
|
28
28
|
}
|