oneskies-live-chat-widget 0.1.5 → 0.1.6
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/index.d.ts.map +1 -1
- package/dist/index.js +294 -29
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +319 -31
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAmFF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAS,EAAE,SAAc,EAAE,EAAE,wBAAwB,2CA4EhG;AA8ID,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAA4B,EAC5B,YAA+B,GAChC,EAAE,mBAAmB,2CAqwCrB"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const TYPING_BROADCAST_INTERVAL_MS = 120;
|
|
|
9
9
|
const WS_RECONNECT_BASE_DELAY_MS = 650;
|
|
10
10
|
const WS_RECONNECT_MAX_DELAY_MS = 12000;
|
|
11
11
|
const WS_MAX_MESSAGE_CHARS = 128 * 1024;
|
|
12
|
+
const LIVE_CHAT_BLOCKED_STATUS = 423;
|
|
12
13
|
function toTitleCase(name) {
|
|
13
14
|
return name.replace(/\S+/g, (word) => word
|
|
14
15
|
.split(/(['-])/)
|
|
@@ -132,6 +133,29 @@ function liveChatQueryParam(name) {
|
|
|
132
133
|
return "";
|
|
133
134
|
}
|
|
134
135
|
}
|
|
136
|
+
function liveChatCurrentUrl() {
|
|
137
|
+
try {
|
|
138
|
+
return window.location.href;
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return "";
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function liveChatTrackedFieldKey(element) {
|
|
145
|
+
if (!(element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement)) {
|
|
146
|
+
return "";
|
|
147
|
+
}
|
|
148
|
+
if (element.closest(".os-live-chat"))
|
|
149
|
+
return "";
|
|
150
|
+
if (element instanceof HTMLInputElement && ["hidden", "submit", "button", "reset", "image"].includes(element.type)) {
|
|
151
|
+
return "";
|
|
152
|
+
}
|
|
153
|
+
const form = element.closest("form");
|
|
154
|
+
const formKey = form?.getAttribute("id") || form?.getAttribute("name") || form?.getAttribute("aria-label") || "";
|
|
155
|
+
const placeholder = element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement ? element.placeholder : "";
|
|
156
|
+
const fieldKey = element.name || element.id || element.getAttribute("aria-label") || placeholder || element.type || element.tagName;
|
|
157
|
+
return `${formKey}:${fieldKey}`.slice(0, 220);
|
|
158
|
+
}
|
|
135
159
|
function messageTime(value) {
|
|
136
160
|
const date = new Date(value);
|
|
137
161
|
if (Number.isNaN(date.getTime()))
|
|
@@ -207,6 +231,7 @@ async function buildDeviceSignature(visitorId) {
|
|
|
207
231
|
return sha256(parts.join("|"));
|
|
208
232
|
}
|
|
209
233
|
export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, accentColor = DEFAULT_ACCENT, supportLabel = "Travel support", }) {
|
|
234
|
+
const initialBlockedKey = `${STORAGE_PREFIX}:${leadSource}:blocked`;
|
|
210
235
|
const [visible, setVisible] = useState(false);
|
|
211
236
|
const [open, setOpen] = useState(false);
|
|
212
237
|
const [session, setSession] = useState(null);
|
|
@@ -218,6 +243,15 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
218
243
|
const [loading, setLoading] = useState(false);
|
|
219
244
|
const [sending, setSending] = useState(false);
|
|
220
245
|
const [error, setError] = useState("");
|
|
246
|
+
const [blocked, setBlocked] = useState(() => {
|
|
247
|
+
try {
|
|
248
|
+
return window.localStorage.getItem(initialBlockedKey) === "1";
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
const [blockedRetryNonce, setBlockedRetryNonce] = useState(0);
|
|
221
255
|
const [staffTypingName, setStaffTypingName] = useState("");
|
|
222
256
|
const [unreadCount, setUnreadCount] = useState(0);
|
|
223
257
|
const [unreadPreview, setUnreadPreview] = useState("");
|
|
@@ -231,11 +265,75 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
231
265
|
const typingSentAtRef = useRef(0);
|
|
232
266
|
const typingTimeoutRef = useRef(null);
|
|
233
267
|
const unreadPreviewTimeoutRef = useRef(null);
|
|
268
|
+
const pageUrlsRef = useRef(new Set());
|
|
269
|
+
const touchedFieldsRef = useRef(new Set());
|
|
270
|
+
const stateBroadcastTimeoutRef = useRef(null);
|
|
271
|
+
const banReloadedRef = useRef(false);
|
|
234
272
|
const baseUrl = useMemo(() => normalizedBaseUrl(apiBaseUrl), [apiBaseUrl]);
|
|
235
273
|
const storageKey = `${STORAGE_PREFIX}:${leadSource}`;
|
|
236
274
|
const profileKey = `${storageKey}:profile`;
|
|
275
|
+
const blockedKey = `${storageKey}:blocked`;
|
|
237
276
|
const visitorName = formatGuestName(profile?.name);
|
|
238
277
|
const needsProfile = profileReady && !visitorName;
|
|
278
|
+
function buildStatePayload() {
|
|
279
|
+
const currentUrl = liveChatCurrentUrl();
|
|
280
|
+
if (currentUrl)
|
|
281
|
+
pageUrlsRef.current.add(currentUrl);
|
|
282
|
+
return {
|
|
283
|
+
type: "state",
|
|
284
|
+
open: openRef.current,
|
|
285
|
+
page_url: currentUrl,
|
|
286
|
+
referrer_url: document.referrer || "",
|
|
287
|
+
utm_source: liveChatQueryParam("utm_source"),
|
|
288
|
+
utm_medium: liveChatQueryParam("utm_medium"),
|
|
289
|
+
utm_campaign: liveChatQueryParam("utm_campaign"),
|
|
290
|
+
page_view_count: Math.max(1, pageUrlsRef.current.size),
|
|
291
|
+
fields_touched_count: touchedFieldsRef.current.size,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
function sendStateNow() {
|
|
295
|
+
const socket = wsRef.current;
|
|
296
|
+
if (socket?.readyState !== WebSocket.OPEN)
|
|
297
|
+
return;
|
|
298
|
+
socket.send(JSON.stringify(buildStatePayload()));
|
|
299
|
+
}
|
|
300
|
+
function scheduleStateBroadcast(delay = 250) {
|
|
301
|
+
if (stateBroadcastTimeoutRef.current)
|
|
302
|
+
return;
|
|
303
|
+
stateBroadcastTimeoutRef.current = window.setTimeout(() => {
|
|
304
|
+
stateBroadcastTimeoutRef.current = null;
|
|
305
|
+
sendStateNow();
|
|
306
|
+
}, delay);
|
|
307
|
+
}
|
|
308
|
+
function enterBlockedState({ reload = false } = {}) {
|
|
309
|
+
try {
|
|
310
|
+
window.localStorage.setItem(blockedKey, "1");
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// Ignore storage failures; the in-memory state still blocks the current page.
|
|
314
|
+
}
|
|
315
|
+
setBlocked(true);
|
|
316
|
+
setVisible(true);
|
|
317
|
+
setOpen(false);
|
|
318
|
+
setSession(null);
|
|
319
|
+
setMessages([]);
|
|
320
|
+
setDraft("");
|
|
321
|
+
setError("");
|
|
322
|
+
setLoading(true);
|
|
323
|
+
if (reload && !banReloadedRef.current) {
|
|
324
|
+
banReloadedRef.current = true;
|
|
325
|
+
window.setTimeout(() => window.location.reload(), 120);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
function leaveBlockedState() {
|
|
329
|
+
try {
|
|
330
|
+
window.localStorage.removeItem(blockedKey);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Ignore storage failures; clearing React state is enough for this tab.
|
|
334
|
+
}
|
|
335
|
+
setBlocked(false);
|
|
336
|
+
}
|
|
239
337
|
useEffect(() => {
|
|
240
338
|
openRef.current = open;
|
|
241
339
|
if (open) {
|
|
@@ -247,7 +345,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
247
345
|
}
|
|
248
346
|
const socket = wsRef.current;
|
|
249
347
|
if (socket?.readyState === WebSocket.OPEN) {
|
|
250
|
-
|
|
348
|
+
sendStateNow();
|
|
251
349
|
}
|
|
252
350
|
}, [open]);
|
|
253
351
|
useEffect(() => {
|
|
@@ -269,9 +367,9 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
269
367
|
return () => window.removeEventListener("keydown", onKeyDown);
|
|
270
368
|
}, []);
|
|
271
369
|
useEffect(() => {
|
|
272
|
-
setTidioTemporarilyHidden(visible);
|
|
370
|
+
setTidioTemporarilyHidden(visible || blocked);
|
|
273
371
|
return () => setTidioTemporarilyHidden(false);
|
|
274
|
-
}, [visible]);
|
|
372
|
+
}, [blocked, visible]);
|
|
275
373
|
useEffect(() => {
|
|
276
374
|
if (profileReady)
|
|
277
375
|
return;
|
|
@@ -318,6 +416,63 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
318
416
|
return;
|
|
319
417
|
messagesEndRef.current?.scrollIntoView({ block: "end" });
|
|
320
418
|
}, [messages.length, staffTypingName, open, visible]);
|
|
419
|
+
useEffect(() => {
|
|
420
|
+
if (!session)
|
|
421
|
+
return;
|
|
422
|
+
pageUrlsRef.current.add(liveChatCurrentUrl());
|
|
423
|
+
let lastUrl = liveChatCurrentUrl();
|
|
424
|
+
function recordPageView() {
|
|
425
|
+
const currentUrl = liveChatCurrentUrl();
|
|
426
|
+
if (!currentUrl || currentUrl === lastUrl)
|
|
427
|
+
return;
|
|
428
|
+
lastUrl = currentUrl;
|
|
429
|
+
pageUrlsRef.current.add(currentUrl);
|
|
430
|
+
scheduleStateBroadcast(120);
|
|
431
|
+
}
|
|
432
|
+
function recordFieldTouch(event) {
|
|
433
|
+
const target = event.target;
|
|
434
|
+
if (!(target instanceof Element))
|
|
435
|
+
return;
|
|
436
|
+
const key = liveChatTrackedFieldKey(target);
|
|
437
|
+
if (!key || touchedFieldsRef.current.has(key))
|
|
438
|
+
return;
|
|
439
|
+
touchedFieldsRef.current.add(key);
|
|
440
|
+
scheduleStateBroadcast(220);
|
|
441
|
+
}
|
|
442
|
+
const originalPushState = window.history.pushState;
|
|
443
|
+
const originalReplaceState = window.history.replaceState;
|
|
444
|
+
window.history.pushState = function patchedPushState(...args) {
|
|
445
|
+
const result = originalPushState.apply(this, args);
|
|
446
|
+
window.setTimeout(recordPageView, 0);
|
|
447
|
+
return result;
|
|
448
|
+
};
|
|
449
|
+
window.history.replaceState = function patchedReplaceState(...args) {
|
|
450
|
+
const result = originalReplaceState.apply(this, args);
|
|
451
|
+
window.setTimeout(recordPageView, 0);
|
|
452
|
+
return result;
|
|
453
|
+
};
|
|
454
|
+
const interval = window.setInterval(recordPageView, 1000);
|
|
455
|
+
window.addEventListener("popstate", recordPageView);
|
|
456
|
+
window.addEventListener("hashchange", recordPageView);
|
|
457
|
+
document.addEventListener("focusin", recordFieldTouch, true);
|
|
458
|
+
document.addEventListener("input", recordFieldTouch, true);
|
|
459
|
+
document.addEventListener("change", recordFieldTouch, true);
|
|
460
|
+
scheduleStateBroadcast(350);
|
|
461
|
+
return () => {
|
|
462
|
+
window.history.pushState = originalPushState;
|
|
463
|
+
window.history.replaceState = originalReplaceState;
|
|
464
|
+
window.clearInterval(interval);
|
|
465
|
+
window.removeEventListener("popstate", recordPageView);
|
|
466
|
+
window.removeEventListener("hashchange", recordPageView);
|
|
467
|
+
document.removeEventListener("focusin", recordFieldTouch, true);
|
|
468
|
+
document.removeEventListener("input", recordFieldTouch, true);
|
|
469
|
+
document.removeEventListener("change", recordFieldTouch, true);
|
|
470
|
+
if (stateBroadcastTimeoutRef.current) {
|
|
471
|
+
window.clearTimeout(stateBroadcastTimeoutRef.current);
|
|
472
|
+
stateBroadcastTimeoutRef.current = null;
|
|
473
|
+
}
|
|
474
|
+
};
|
|
475
|
+
}, [session]);
|
|
321
476
|
useEffect(() => {
|
|
322
477
|
if (!profileReady || session || !profile)
|
|
323
478
|
return;
|
|
@@ -326,6 +481,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
326
481
|
const currentProfile = profile;
|
|
327
482
|
let cancelled = false;
|
|
328
483
|
async function startSession() {
|
|
484
|
+
let keepLoading = false;
|
|
329
485
|
if (visible && open)
|
|
330
486
|
setLoading(true);
|
|
331
487
|
setError("");
|
|
@@ -346,9 +502,17 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
346
502
|
device_signature: signature,
|
|
347
503
|
}),
|
|
348
504
|
});
|
|
505
|
+
if (response.status === LIVE_CHAT_BLOCKED_STATUS) {
|
|
506
|
+
keepLoading = true;
|
|
507
|
+
if (!cancelled) {
|
|
508
|
+
enterBlockedState();
|
|
509
|
+
}
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
349
512
|
const envelope = await readJson(response);
|
|
350
513
|
if (cancelled)
|
|
351
514
|
return;
|
|
515
|
+
leaveBlockedState();
|
|
352
516
|
window.localStorage.setItem(storageKey, JSON.stringify(envelope.data));
|
|
353
517
|
setSession(envelope.data);
|
|
354
518
|
}
|
|
@@ -357,7 +521,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
357
521
|
setError(err instanceof Error ? err.message : "Chat is unavailable.");
|
|
358
522
|
}
|
|
359
523
|
finally {
|
|
360
|
-
if (!cancelled)
|
|
524
|
+
if (!cancelled && !keepLoading)
|
|
361
525
|
setLoading(false);
|
|
362
526
|
if (startSessionRef.current === startPromise)
|
|
363
527
|
startSessionRef.current = null;
|
|
@@ -368,7 +532,15 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
368
532
|
return () => {
|
|
369
533
|
cancelled = true;
|
|
370
534
|
};
|
|
371
|
-
}, [apiKey, baseUrl, leadSource, open, profile, profileReady, session, storageKey, visible]);
|
|
535
|
+
}, [apiKey, baseUrl, blockedRetryNonce, leadSource, open, profile, profileReady, session, storageKey, visible]);
|
|
536
|
+
useEffect(() => {
|
|
537
|
+
if (!blocked || session || !profileReady || !profile)
|
|
538
|
+
return;
|
|
539
|
+
const timer = window.setTimeout(() => {
|
|
540
|
+
setBlockedRetryNonce((value) => value + 1);
|
|
541
|
+
}, 15000);
|
|
542
|
+
return () => window.clearTimeout(timer);
|
|
543
|
+
}, [blocked, profile, profileReady, session]);
|
|
372
544
|
useEffect(() => {
|
|
373
545
|
if (!visible || !open || !session)
|
|
374
546
|
return;
|
|
@@ -413,7 +585,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
413
585
|
if (cancelled || activeSocket !== socket)
|
|
414
586
|
return;
|
|
415
587
|
reconnectAttempts = 0;
|
|
416
|
-
|
|
588
|
+
sendStateNow();
|
|
417
589
|
};
|
|
418
590
|
socket.onmessage = (event) => {
|
|
419
591
|
if (cancelled || activeSocket !== socket)
|
|
@@ -431,19 +603,26 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
431
603
|
typingTimeoutRef.current = setTimeout(() => setStaffTypingName(""), 2200);
|
|
432
604
|
return;
|
|
433
605
|
}
|
|
434
|
-
if (payload.action === "session_removed") {
|
|
606
|
+
if (payload.action === "session_removed" || payload.action === "session_banned") {
|
|
435
607
|
window.localStorage.removeItem(storageKey);
|
|
436
|
-
|
|
608
|
+
if (payload.action === "session_removed" && payload.clear_profile !== false) {
|
|
609
|
+
window.localStorage.removeItem(profileKey);
|
|
610
|
+
}
|
|
437
611
|
setSession(null);
|
|
438
612
|
setMessages([]);
|
|
439
613
|
setDraft("");
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
614
|
+
if (payload.action === "session_removed" && payload.clear_profile !== false) {
|
|
615
|
+
setNameDraft("");
|
|
616
|
+
setProfile(null);
|
|
617
|
+
setProfileReady(false);
|
|
618
|
+
}
|
|
443
619
|
setStaffTypingName("");
|
|
444
620
|
setUnreadCount(0);
|
|
445
621
|
setUnreadPreview("");
|
|
446
622
|
setPreviewVisible(false);
|
|
623
|
+
if (payload.action === "session_banned") {
|
|
624
|
+
enterBlockedState({ reload: true });
|
|
625
|
+
}
|
|
447
626
|
socket.close();
|
|
448
627
|
return;
|
|
449
628
|
}
|
|
@@ -510,7 +689,8 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
510
689
|
if (reconnectTimer)
|
|
511
690
|
clearTimeout(reconnectTimer);
|
|
512
691
|
if (activeSocket?.readyState === WebSocket.OPEN) {
|
|
513
|
-
|
|
692
|
+
openRef.current = false;
|
|
693
|
+
activeSocket.send(JSON.stringify(buildStatePayload()));
|
|
514
694
|
}
|
|
515
695
|
endPresence();
|
|
516
696
|
activeSocket?.close();
|
|
@@ -577,7 +757,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
577
757
|
const rootStyle = {
|
|
578
758
|
"--os-chat-accent": accentColor,
|
|
579
759
|
};
|
|
580
|
-
return (_jsxs("div", { className: `os-live-chat ${visible ? "is-visible" : "is-hidden"}`, style: rootStyle, children: [open ? (_jsxs("section", { className: "os-live-chat-panel", "aria-label": `${brandName} live chat`, children: [_jsxs("header", { className: "os-live-chat-header", children: [_jsx("span", { className: "os-live-chat-mark", children: _jsx("span", { className: "os-live-chat-mark-icon", children: _jsx(Headphones, { size: 22, "aria-hidden": true }) }) }), _jsxs("div", { children: [_jsx("p", { children: supportLabel }), _jsx("span", { children: visitorName ? `${visitorName}, ${brandName} team is here` : `${brandName} team` })] }), _jsx("button", { type: "button", "aria-label": "Close chat", onClick: () => setOpen(false), children: _jsx(X, { size: 20, "aria-hidden": true }) })] }), needsProfile ? (_jsxs("form", { className: "os-live-chat-intro", onSubmit: saveName, children: [_jsx("strong", { children: "Welcome. What should we call you?" }), onlineAgents.length > 0 ? (_jsxs("div", { className: "os-live-chat-online", "aria-label": `${onlineAgents.length} support agents online`, children: [_jsx("div", { className: "os-live-chat-online-avatars", children: onlineAgents.map((agent, index) => (_jsx("span", { className: "os-live-chat-online-avatar", style: { "--os-agent-color": agent.color || accentColor }, children: agent.avatar_url ? _jsx("img", { src: agent.avatar_url, alt: "" }) : null }, `${agent.avatar_url || agent.color || "agent"}-${index}`))) }), _jsx("span", { children: "Support is online now" })] })) : null, _jsx("input", { autoFocus: true, value: nameDraft, onChange: (event) => setNameDraft(event.target.value), placeholder: "Your name", maxLength: 80 }), _jsx("button", { type: "submit", disabled: !nameDraft.trim(), children: "Start chat" })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "os-live-chat-body", children: [loading ? (_jsxs("div", { className: "os-live-chat-empty", children: [_jsx(Loader2, { size: 18, className: "os-live-chat-spin", "aria-hidden": true }), "Connecting..."] })) : messages.length === 0 ? (_jsxs("div", { className: "os-live-chat-empty", children: [_jsxs("strong", { children: ["Hi there ", _jsx("span", { "aria-hidden": true, children: "\uD83D\uDC4B" })] }), onlineAgents.length > 0 ? (_jsxs("div", { className: "os-live-chat-online", "aria-label": `${onlineAgents.length} support agents online`, children: [_jsx("div", { className: "os-live-chat-online-avatars", children: onlineAgents.map((agent, index) => (_jsx("span", { className: "os-live-chat-online-avatar", style: { "--os-agent-color": agent.color || accentColor }, children: agent.avatar_url ? _jsx("img", { src: agent.avatar_url, alt: "" }) : null }, `${agent.avatar_url || agent.color || "agent"}-${index}`))) }), _jsx("span", { children: "Support is online now" })] })) : null, _jsx("span", { children: "How may we help you today?" })] })) : (messages.map((message) => (_jsxs("article", { className: `os-live-chat-message ${message.sender === "guest" ? "is-guest" : "is-staff"}`, children: [_jsx("p", { children: message.body }), _jsxs("span", { children: [message.sender === "guest" ? "You" : brandName, " \u00B7 ", messageTime(message.created_at)] })] }, message.id)))), staffTypingName ? (_jsxs("div", { className: "os-live-chat-typing", "aria-live": "polite", children: [_jsx("span", { children: "Support is typing" }), _jsx("i", {}), _jsx("i", {}), _jsx("i", {})] })) : null, _jsx("div", { ref: messagesEndRef })] }), error ? _jsx("p", { className: "os-live-chat-error", children: error }) : null, _jsxs("form", { className: "os-live-chat-form", onSubmit: sendMessage, children: [_jsx("textarea", { value: draft, onChange: (event) => {
|
|
760
|
+
return (_jsxs("div", { className: `os-live-chat ${blocked || visible ? "is-visible" : "is-hidden"} ${blocked ? "is-blocked" : ""}`, style: rootStyle, children: [blocked ? (_jsx("div", { className: "os-live-chat-blocker", "aria-live": "polite", "aria-busy": "true", children: _jsx("div", { className: "os-live-chat-blocker-card", "aria-label": "Loading", children: _jsx(Loader2, { size: 32, className: "os-live-chat-spin", "aria-hidden": true }) }) })) : null, !blocked && open ? (_jsxs("section", { className: "os-live-chat-panel", "aria-label": `${brandName} live chat`, children: [_jsxs("header", { className: "os-live-chat-header", children: [_jsx("span", { className: "os-live-chat-mark", children: _jsx("span", { className: "os-live-chat-mark-icon", children: _jsx(Headphones, { size: 22, "aria-hidden": true }) }) }), _jsxs("div", { children: [_jsx("p", { children: supportLabel }), _jsx("span", { children: visitorName ? `${visitorName}, ${brandName} team is here` : `${brandName} team` })] }), _jsx("button", { type: "button", "aria-label": "Close chat", onClick: () => setOpen(false), children: _jsx(X, { size: 20, "aria-hidden": true }) })] }), needsProfile ? (_jsxs("form", { className: "os-live-chat-intro", onSubmit: saveName, children: [_jsx("strong", { children: "Welcome. What should we call you?" }), onlineAgents.length > 0 ? (_jsxs("div", { className: "os-live-chat-online", "aria-label": `${onlineAgents.length} support agents online`, children: [_jsx("div", { className: "os-live-chat-online-avatars", children: onlineAgents.map((agent, index) => (_jsx("span", { className: "os-live-chat-online-avatar", style: { "--os-agent-color": agent.color || accentColor }, children: agent.avatar_url ? _jsx("img", { src: agent.avatar_url, alt: "" }) : null }, `${agent.avatar_url || agent.color || "agent"}-${index}`))) }), _jsx("span", { children: "Support is online now" })] })) : null, _jsx("input", { autoFocus: true, value: nameDraft, onChange: (event) => setNameDraft(event.target.value), placeholder: "Your name", maxLength: 80 }), _jsx("button", { type: "submit", disabled: !nameDraft.trim(), children: "Start chat" })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "os-live-chat-body", children: [loading ? (_jsxs("div", { className: "os-live-chat-empty", children: [_jsx(Loader2, { size: 18, className: "os-live-chat-spin", "aria-hidden": true }), "Connecting..."] })) : messages.length === 0 ? (_jsxs("div", { className: "os-live-chat-empty", children: [_jsxs("strong", { children: ["Hi there ", _jsx("span", { "aria-hidden": true, children: "\uD83D\uDC4B" })] }), onlineAgents.length > 0 ? (_jsxs("div", { className: "os-live-chat-online", "aria-label": `${onlineAgents.length} support agents online`, children: [_jsx("div", { className: "os-live-chat-online-avatars", children: onlineAgents.map((agent, index) => (_jsx("span", { className: "os-live-chat-online-avatar", style: { "--os-agent-color": agent.color || accentColor }, children: agent.avatar_url ? _jsx("img", { src: agent.avatar_url, alt: "" }) : null }, `${agent.avatar_url || agent.color || "agent"}-${index}`))) }), _jsx("span", { children: "Support is online now" })] })) : null, _jsx("span", { children: "How may we help you today?" })] })) : (messages.map((message) => (_jsxs("article", { className: `os-live-chat-message ${message.sender === "guest" ? "is-guest" : "is-staff"}`, children: [_jsx("p", { children: message.body }), _jsxs("span", { children: [message.sender === "guest" ? "You" : brandName, " \u00B7 ", messageTime(message.created_at)] })] }, message.id)))), staffTypingName ? (_jsxs("div", { className: "os-live-chat-typing", "aria-live": "polite", children: [_jsx("span", { children: "Support is typing" }), _jsx("i", {}), _jsx("i", {}), _jsx("i", {})] })) : null, _jsx("div", { ref: messagesEndRef })] }), error ? _jsx("p", { className: "os-live-chat-error", children: error }) : null, _jsxs("form", { className: "os-live-chat-form", onSubmit: sendMessage, children: [_jsx("textarea", { value: draft, onChange: (event) => {
|
|
581
761
|
const nextDraft = event.target.value;
|
|
582
762
|
setDraft(nextDraft);
|
|
583
763
|
announceTyping(nextDraft);
|
|
@@ -586,7 +766,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
586
766
|
event.preventDefault();
|
|
587
767
|
event.currentTarget.form?.requestSubmit();
|
|
588
768
|
}
|
|
589
|
-
} }), _jsx("button", { type: "submit", disabled: !draft.trim() || !session || sending, "aria-label": "Send message", children: sending ? (_jsx(Loader2, { size: 19, className: "os-live-chat-spin", "aria-hidden": true })) : (_jsx(SendHorizontal, { size: 20, "aria-hidden": true })) })] })] }))] })) : null, visible ? (_jsxs("button", { className: "os-live-chat-bubble", type: "button", onClick: () => setOpen((value) => !value), "aria-label": "Open live chat", children: [_jsx(MessageCircle, { size: 25, "aria-hidden": true }), unreadCount > 0 ? _jsx("strong", { className: "os-live-chat-badge", children: unreadCount }) : null, !open ? (_jsx("span", { className: unreadCount > 0 ? `has-unread ${previewVisible ? "is-preview-visible" : "is-preview-hidden"}` : "", children: unreadCount > 0 && previewVisible ? (_jsxs(_Fragment, { children: [_jsx("b", { children: "New message" }), _jsx("small", { children: unreadPreview })] })) : (_jsxs(_Fragment, { children: ["Need live assistance? ", _jsx("small", { className: "os-live-chat-wave", "aria-hidden": true, children: "\uD83D\uDC4B" })] })) })) : null] })) : null, _jsx("style", { children: `
|
|
769
|
+
} }), _jsx("button", { type: "submit", disabled: !draft.trim() || !session || sending, "aria-label": "Send message", children: sending ? (_jsx(Loader2, { size: 19, className: "os-live-chat-spin", "aria-hidden": true })) : (_jsx(SendHorizontal, { size: 20, "aria-hidden": true })) })] })] }))] })) : null, !blocked && visible ? (_jsxs("button", { className: "os-live-chat-bubble", type: "button", onClick: () => setOpen((value) => !value), "aria-label": "Open live chat", children: [_jsx(MessageCircle, { size: 25, "aria-hidden": true }), unreadCount > 0 ? _jsx("strong", { className: "os-live-chat-badge", children: unreadCount }) : null, !open ? (_jsx("span", { className: unreadCount > 0 ? `has-unread ${previewVisible ? "is-preview-visible" : "is-preview-hidden"}` : "", "aria-live": unreadCount > 0 ? "polite" : undefined, children: unreadCount > 0 && previewVisible ? (_jsxs(_Fragment, { children: [_jsx("b", { children: "New message" }), _jsx("small", { children: unreadPreview })] })) : (_jsxs(_Fragment, { children: ["Need live assistance? ", _jsx("small", { className: "os-live-chat-wave", "aria-hidden": true, children: "\uD83D\uDC4B" })] })) }, unreadCount > 0 ? `preview-${unreadPreview}` : "assist-prompt")) : null] })) : null, _jsx("style", { children: `
|
|
590
770
|
.os-live-chat {
|
|
591
771
|
position: fixed;
|
|
592
772
|
right: max(18px, env(safe-area-inset-right));
|
|
@@ -597,6 +777,34 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
597
777
|
.os-live-chat.is-hidden {
|
|
598
778
|
pointer-events: none;
|
|
599
779
|
}
|
|
780
|
+
.os-live-chat.is-blocked {
|
|
781
|
+
pointer-events: auto;
|
|
782
|
+
}
|
|
783
|
+
.os-live-chat-blocker {
|
|
784
|
+
position: fixed;
|
|
785
|
+
inset: 0;
|
|
786
|
+
z-index: 2147483000;
|
|
787
|
+
display: grid;
|
|
788
|
+
place-items: center;
|
|
789
|
+
padding: 24px;
|
|
790
|
+
background:
|
|
791
|
+
radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--os-chat-accent) 14%, transparent), transparent 34%),
|
|
792
|
+
rgba(248, 250, 252, 0.98);
|
|
793
|
+
backdrop-filter: blur(18px);
|
|
794
|
+
-webkit-backdrop-filter: blur(18px);
|
|
795
|
+
animation: os-chat-blocker-in 320ms cubic-bezier(.16,1,.3,1) both;
|
|
796
|
+
}
|
|
797
|
+
.os-live-chat-blocker-card {
|
|
798
|
+
display: grid;
|
|
799
|
+
width: 84px;
|
|
800
|
+
height: 84px;
|
|
801
|
+
place-items: center;
|
|
802
|
+
border: 1px solid rgba(148, 163, 184, 0.24);
|
|
803
|
+
border-radius: 28px;
|
|
804
|
+
color: var(--os-chat-accent);
|
|
805
|
+
background: rgba(255, 255, 255, 0.86);
|
|
806
|
+
box-shadow: 0 24px 80px rgba(15, 23, 42, 0.16);
|
|
807
|
+
}
|
|
600
808
|
.os-live-chat-bubble {
|
|
601
809
|
position: relative;
|
|
602
810
|
display: grid;
|
|
@@ -614,8 +822,8 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
614
822
|
}
|
|
615
823
|
.os-live-chat-bubble span {
|
|
616
824
|
position: absolute;
|
|
617
|
-
right:
|
|
618
|
-
bottom:
|
|
825
|
+
right: 68px;
|
|
826
|
+
bottom: 11px;
|
|
619
827
|
width: max-content;
|
|
620
828
|
max-width: 230px;
|
|
621
829
|
border: 1px solid rgba(148, 163, 184, 0.28);
|
|
@@ -627,25 +835,27 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
627
835
|
font-size: 14px;
|
|
628
836
|
font-weight: 800;
|
|
629
837
|
pointer-events: none;
|
|
630
|
-
|
|
838
|
+
transform-origin: bottom right;
|
|
839
|
+
animation: os-chat-nudge 520ms cubic-bezier(.16,1,.3,1) 350ms both;
|
|
631
840
|
}
|
|
632
841
|
.os-live-chat-bubble span.has-unread {
|
|
633
842
|
display: grid;
|
|
634
843
|
gap: 2px;
|
|
635
|
-
width: min(260px, calc(100vw -
|
|
844
|
+
width: min(260px, calc(100vw - 130px));
|
|
636
845
|
max-width: 260px;
|
|
637
|
-
border-radius:
|
|
638
|
-
padding:
|
|
846
|
+
border-radius: 20px;
|
|
847
|
+
padding: 11px 14px;
|
|
639
848
|
text-align: left;
|
|
849
|
+
box-shadow: 0 18px 44px rgba(15, 23, 42, 0.16);
|
|
640
850
|
}
|
|
641
851
|
.os-live-chat-bubble span.has-unread.is-preview-visible {
|
|
642
|
-
animation: os-chat-preview-in
|
|
852
|
+
animation: os-chat-preview-in 420ms cubic-bezier(.16,1,.3,1) both;
|
|
643
853
|
}
|
|
644
854
|
.os-live-chat-bubble span.has-unread.is-preview-hidden {
|
|
645
855
|
opacity: 0;
|
|
646
|
-
transform: translateX(10px) scale(0.98);
|
|
647
856
|
visibility: hidden;
|
|
648
|
-
|
|
857
|
+
animation: os-chat-preview-out 360ms cubic-bezier(.4,0,.2,1) both;
|
|
858
|
+
transition: visibility 0s linear 360ms;
|
|
649
859
|
}
|
|
650
860
|
.os-live-chat-bubble span.has-unread b,
|
|
651
861
|
.os-live-chat-bubble span.has-unread small {
|
|
@@ -709,7 +919,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
709
919
|
border-radius: 28px;
|
|
710
920
|
background: rgba(255, 255, 255, 0.98);
|
|
711
921
|
box-shadow: 0 28px 80px rgba(15, 23, 42, 0.24);
|
|
712
|
-
animation: os-chat-in
|
|
922
|
+
animation: os-chat-in 360ms cubic-bezier(.16,1,.3,1);
|
|
713
923
|
transform-origin: bottom right;
|
|
714
924
|
}
|
|
715
925
|
.os-live-chat-header {
|
|
@@ -895,6 +1105,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
895
1105
|
gap: 10px;
|
|
896
1106
|
overflow-y: auto;
|
|
897
1107
|
padding: 16px;
|
|
1108
|
+
scroll-behavior: smooth;
|
|
898
1109
|
background:
|
|
899
1110
|
radial-gradient(circle at 22% 0%, color-mix(in srgb, var(--os-chat-accent) 8%, transparent), transparent 32%),
|
|
900
1111
|
#f8fafc;
|
|
@@ -920,7 +1131,13 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
920
1131
|
font-size: 14px;
|
|
921
1132
|
line-height: 1.45;
|
|
922
1133
|
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.07);
|
|
923
|
-
|
|
1134
|
+
will-change: transform, opacity;
|
|
1135
|
+
animation: os-message-in 340ms cubic-bezier(.16,1,.3,1) both;
|
|
1136
|
+
transition: transform 260ms cubic-bezier(.16,1,.3,1), box-shadow 260ms ease, opacity 260ms ease;
|
|
1137
|
+
}
|
|
1138
|
+
.os-live-chat-message:hover {
|
|
1139
|
+
transform: translateY(-1px);
|
|
1140
|
+
box-shadow: 0 11px 26px rgba(15, 23, 42, 0.09);
|
|
924
1141
|
}
|
|
925
1142
|
.os-live-chat-message p {
|
|
926
1143
|
margin: 0;
|
|
@@ -959,7 +1176,7 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
959
1176
|
background: white;
|
|
960
1177
|
font-size: 12px;
|
|
961
1178
|
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
|
|
962
|
-
animation: os-message-in
|
|
1179
|
+
animation: os-message-in 340ms cubic-bezier(.16,1,.3,1) both;
|
|
963
1180
|
}
|
|
964
1181
|
.os-live-chat-typing i {
|
|
965
1182
|
width: 5px;
|
|
@@ -1030,11 +1247,13 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
1030
1247
|
@keyframes os-chat-in {
|
|
1031
1248
|
from {
|
|
1032
1249
|
opacity: 0;
|
|
1033
|
-
transform: translateY(
|
|
1250
|
+
transform: translateY(18px) scale(0.965);
|
|
1251
|
+
filter: blur(5px);
|
|
1034
1252
|
}
|
|
1035
1253
|
to {
|
|
1036
1254
|
opacity: 1;
|
|
1037
1255
|
transform: translateY(0) scale(1);
|
|
1256
|
+
filter: blur(0);
|
|
1038
1257
|
}
|
|
1039
1258
|
}
|
|
1040
1259
|
@keyframes os-chat-bubble-in {
|
|
@@ -1047,6 +1266,16 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
1047
1266
|
transform: translateY(0) scale(1);
|
|
1048
1267
|
}
|
|
1049
1268
|
}
|
|
1269
|
+
@keyframes os-chat-blocker-in {
|
|
1270
|
+
from {
|
|
1271
|
+
opacity: 0;
|
|
1272
|
+
filter: blur(6px);
|
|
1273
|
+
}
|
|
1274
|
+
to {
|
|
1275
|
+
opacity: 1;
|
|
1276
|
+
filter: blur(0);
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1050
1279
|
@keyframes os-chat-nudge {
|
|
1051
1280
|
from {
|
|
1052
1281
|
opacity: 0;
|
|
@@ -1071,21 +1300,37 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
1071
1300
|
@keyframes os-chat-preview-in {
|
|
1072
1301
|
from {
|
|
1073
1302
|
opacity: 0;
|
|
1074
|
-
transform: translateX(
|
|
1303
|
+
transform: translateX(14px) translateY(4px) scale(0.96);
|
|
1304
|
+
filter: blur(4px);
|
|
1075
1305
|
}
|
|
1076
1306
|
to {
|
|
1077
1307
|
opacity: 1;
|
|
1078
1308
|
transform: translateX(0) scale(1);
|
|
1309
|
+
filter: blur(0);
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
@keyframes os-chat-preview-out {
|
|
1313
|
+
from {
|
|
1314
|
+
opacity: 1;
|
|
1315
|
+
transform: translateX(0) scale(1);
|
|
1316
|
+
filter: blur(0);
|
|
1317
|
+
}
|
|
1318
|
+
to {
|
|
1319
|
+
opacity: 0;
|
|
1320
|
+
transform: translateX(10px) translateY(3px) scale(0.96);
|
|
1321
|
+
filter: blur(4px);
|
|
1079
1322
|
}
|
|
1080
1323
|
}
|
|
1081
1324
|
@keyframes os-message-in {
|
|
1082
1325
|
from {
|
|
1083
1326
|
opacity: 0;
|
|
1084
|
-
transform: translateY(
|
|
1327
|
+
transform: translateY(10px) scale(0.975);
|
|
1328
|
+
filter: blur(3px);
|
|
1085
1329
|
}
|
|
1086
1330
|
to {
|
|
1087
1331
|
opacity: 1;
|
|
1088
1332
|
transform: translateY(0) scale(1);
|
|
1333
|
+
filter: blur(0);
|
|
1089
1334
|
}
|
|
1090
1335
|
}
|
|
1091
1336
|
@keyframes os-typing-dot {
|
|
@@ -1117,6 +1362,26 @@ export function LiveChatWidget({ apiBaseUrl, apiKey, brandName, leadSource, acce
|
|
|
1117
1362
|
.os-live-chat-bubble span:not(.has-unread) {
|
|
1118
1363
|
display: none;
|
|
1119
1364
|
}
|
|
1365
|
+
.os-live-chat-bubble span.has-unread {
|
|
1366
|
+
right: 68px;
|
|
1367
|
+
width: min(242px, calc(100vw - 116px));
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1371
|
+
.os-live-chat-bubble,
|
|
1372
|
+
.os-live-chat-bubble span,
|
|
1373
|
+
.os-live-chat-bubble span.has-unread.is-preview-visible,
|
|
1374
|
+
.os-live-chat-bubble span.has-unread.is-preview-hidden,
|
|
1375
|
+
.os-live-chat-panel,
|
|
1376
|
+
.os-live-chat-message,
|
|
1377
|
+
.os-live-chat-typing,
|
|
1378
|
+
.os-live-chat-wave {
|
|
1379
|
+
animation: none !important;
|
|
1380
|
+
transition: none !important;
|
|
1381
|
+
}
|
|
1382
|
+
.os-live-chat-body {
|
|
1383
|
+
scroll-behavior: auto;
|
|
1384
|
+
}
|
|
1120
1385
|
}
|
|
1121
1386
|
` })] }));
|
|
1122
1387
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -53,9 +53,22 @@ type SocketPayload = {
|
|
|
53
53
|
sender?: "guest" | "staff" | "system";
|
|
54
54
|
name?: string;
|
|
55
55
|
body?: string;
|
|
56
|
+
clear_profile?: boolean;
|
|
56
57
|
message?: LiveChatMessage;
|
|
57
58
|
};
|
|
58
59
|
|
|
60
|
+
type LiveChatStatePayload = {
|
|
61
|
+
type: "state";
|
|
62
|
+
open: boolean;
|
|
63
|
+
page_url: string;
|
|
64
|
+
referrer_url: string;
|
|
65
|
+
utm_source: string;
|
|
66
|
+
utm_medium: string;
|
|
67
|
+
utm_campaign: string;
|
|
68
|
+
page_view_count: number;
|
|
69
|
+
fields_touched_count: number;
|
|
70
|
+
};
|
|
71
|
+
|
|
59
72
|
type StoredProfile = {
|
|
60
73
|
name: string;
|
|
61
74
|
visitorId: string;
|
|
@@ -68,6 +81,7 @@ const TYPING_BROADCAST_INTERVAL_MS = 120;
|
|
|
68
81
|
const WS_RECONNECT_BASE_DELAY_MS = 650;
|
|
69
82
|
const WS_RECONNECT_MAX_DELAY_MS = 12_000;
|
|
70
83
|
const WS_MAX_MESSAGE_CHARS = 128 * 1024;
|
|
84
|
+
const LIVE_CHAT_BLOCKED_STATUS = 423;
|
|
71
85
|
|
|
72
86
|
function toTitleCase(name: string): string {
|
|
73
87
|
return name.replace(/\S+/g, (word) =>
|
|
@@ -213,6 +227,29 @@ function liveChatQueryParam(name: string): string {
|
|
|
213
227
|
}
|
|
214
228
|
}
|
|
215
229
|
|
|
230
|
+
function liveChatCurrentUrl(): string {
|
|
231
|
+
try {
|
|
232
|
+
return window.location.href;
|
|
233
|
+
} catch {
|
|
234
|
+
return "";
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function liveChatTrackedFieldKey(element: Element): string {
|
|
239
|
+
if (!(element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement)) {
|
|
240
|
+
return "";
|
|
241
|
+
}
|
|
242
|
+
if (element.closest(".os-live-chat")) return "";
|
|
243
|
+
if (element instanceof HTMLInputElement && ["hidden", "submit", "button", "reset", "image"].includes(element.type)) {
|
|
244
|
+
return "";
|
|
245
|
+
}
|
|
246
|
+
const form = element.closest("form");
|
|
247
|
+
const formKey = form?.getAttribute("id") || form?.getAttribute("name") || form?.getAttribute("aria-label") || "";
|
|
248
|
+
const placeholder = element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement ? element.placeholder : "";
|
|
249
|
+
const fieldKey = element.name || element.id || element.getAttribute("aria-label") || placeholder || element.type || element.tagName;
|
|
250
|
+
return `${formKey}:${fieldKey}`.slice(0, 220);
|
|
251
|
+
}
|
|
252
|
+
|
|
216
253
|
function messageTime(value: string): string {
|
|
217
254
|
const date = new Date(value);
|
|
218
255
|
if (Number.isNaN(date.getTime())) return "";
|
|
@@ -297,6 +334,7 @@ export function LiveChatWidget({
|
|
|
297
334
|
accentColor = DEFAULT_ACCENT,
|
|
298
335
|
supportLabel = "Travel support",
|
|
299
336
|
}: LiveChatWidgetProps) {
|
|
337
|
+
const initialBlockedKey = `${STORAGE_PREFIX}:${leadSource}:blocked`;
|
|
300
338
|
const [visible, setVisible] = useState(false);
|
|
301
339
|
const [open, setOpen] = useState(false);
|
|
302
340
|
const [session, setSession] = useState<LiveChatSession | null>(null);
|
|
@@ -308,6 +346,14 @@ export function LiveChatWidget({
|
|
|
308
346
|
const [loading, setLoading] = useState(false);
|
|
309
347
|
const [sending, setSending] = useState(false);
|
|
310
348
|
const [error, setError] = useState("");
|
|
349
|
+
const [blocked, setBlocked] = useState(() => {
|
|
350
|
+
try {
|
|
351
|
+
return window.localStorage.getItem(initialBlockedKey) === "1";
|
|
352
|
+
} catch {
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
const [blockedRetryNonce, setBlockedRetryNonce] = useState(0);
|
|
311
357
|
const [staffTypingName, setStaffTypingName] = useState("");
|
|
312
358
|
const [unreadCount, setUnreadCount] = useState(0);
|
|
313
359
|
const [unreadPreview, setUnreadPreview] = useState("");
|
|
@@ -321,13 +367,77 @@ export function LiveChatWidget({
|
|
|
321
367
|
const typingSentAtRef = useRef(0);
|
|
322
368
|
const typingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
323
369
|
const unreadPreviewTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
370
|
+
const pageUrlsRef = useRef<Set<string>>(new Set());
|
|
371
|
+
const touchedFieldsRef = useRef<Set<string>>(new Set());
|
|
372
|
+
const stateBroadcastTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
373
|
+
const banReloadedRef = useRef(false);
|
|
324
374
|
|
|
325
375
|
const baseUrl = useMemo(() => normalizedBaseUrl(apiBaseUrl), [apiBaseUrl]);
|
|
326
376
|
const storageKey = `${STORAGE_PREFIX}:${leadSource}`;
|
|
327
377
|
const profileKey = `${storageKey}:profile`;
|
|
378
|
+
const blockedKey = `${storageKey}:blocked`;
|
|
328
379
|
const visitorName = formatGuestName(profile?.name);
|
|
329
380
|
const needsProfile = profileReady && !visitorName;
|
|
330
381
|
|
|
382
|
+
function buildStatePayload(): LiveChatStatePayload {
|
|
383
|
+
const currentUrl = liveChatCurrentUrl();
|
|
384
|
+
if (currentUrl) pageUrlsRef.current.add(currentUrl);
|
|
385
|
+
return {
|
|
386
|
+
type: "state",
|
|
387
|
+
open: openRef.current,
|
|
388
|
+
page_url: currentUrl,
|
|
389
|
+
referrer_url: document.referrer || "",
|
|
390
|
+
utm_source: liveChatQueryParam("utm_source"),
|
|
391
|
+
utm_medium: liveChatQueryParam("utm_medium"),
|
|
392
|
+
utm_campaign: liveChatQueryParam("utm_campaign"),
|
|
393
|
+
page_view_count: Math.max(1, pageUrlsRef.current.size),
|
|
394
|
+
fields_touched_count: touchedFieldsRef.current.size,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function sendStateNow() {
|
|
399
|
+
const socket = wsRef.current;
|
|
400
|
+
if (socket?.readyState !== WebSocket.OPEN) return;
|
|
401
|
+
socket.send(JSON.stringify(buildStatePayload()));
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
function scheduleStateBroadcast(delay = 250) {
|
|
405
|
+
if (stateBroadcastTimeoutRef.current) return;
|
|
406
|
+
stateBroadcastTimeoutRef.current = window.setTimeout(() => {
|
|
407
|
+
stateBroadcastTimeoutRef.current = null;
|
|
408
|
+
sendStateNow();
|
|
409
|
+
}, delay);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function enterBlockedState({ reload = false }: { reload?: boolean } = {}) {
|
|
413
|
+
try {
|
|
414
|
+
window.localStorage.setItem(blockedKey, "1");
|
|
415
|
+
} catch {
|
|
416
|
+
// Ignore storage failures; the in-memory state still blocks the current page.
|
|
417
|
+
}
|
|
418
|
+
setBlocked(true);
|
|
419
|
+
setVisible(true);
|
|
420
|
+
setOpen(false);
|
|
421
|
+
setSession(null);
|
|
422
|
+
setMessages([]);
|
|
423
|
+
setDraft("");
|
|
424
|
+
setError("");
|
|
425
|
+
setLoading(true);
|
|
426
|
+
if (reload && !banReloadedRef.current) {
|
|
427
|
+
banReloadedRef.current = true;
|
|
428
|
+
window.setTimeout(() => window.location.reload(), 120);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
function leaveBlockedState() {
|
|
433
|
+
try {
|
|
434
|
+
window.localStorage.removeItem(blockedKey);
|
|
435
|
+
} catch {
|
|
436
|
+
// Ignore storage failures; clearing React state is enough for this tab.
|
|
437
|
+
}
|
|
438
|
+
setBlocked(false);
|
|
439
|
+
}
|
|
440
|
+
|
|
331
441
|
useEffect(() => {
|
|
332
442
|
openRef.current = open;
|
|
333
443
|
if (open) {
|
|
@@ -338,7 +448,7 @@ export function LiveChatWidget({
|
|
|
338
448
|
}
|
|
339
449
|
const socket = wsRef.current;
|
|
340
450
|
if (socket?.readyState === WebSocket.OPEN) {
|
|
341
|
-
|
|
451
|
+
sendStateNow();
|
|
342
452
|
}
|
|
343
453
|
}, [open]);
|
|
344
454
|
|
|
@@ -360,9 +470,9 @@ export function LiveChatWidget({
|
|
|
360
470
|
}, []);
|
|
361
471
|
|
|
362
472
|
useEffect(() => {
|
|
363
|
-
setTidioTemporarilyHidden(visible);
|
|
473
|
+
setTidioTemporarilyHidden(visible || blocked);
|
|
364
474
|
return () => setTidioTemporarilyHidden(false);
|
|
365
|
-
}, [visible]);
|
|
475
|
+
}, [blocked, visible]);
|
|
366
476
|
|
|
367
477
|
useEffect(() => {
|
|
368
478
|
if (profileReady) return;
|
|
@@ -406,12 +516,70 @@ export function LiveChatWidget({
|
|
|
406
516
|
messagesEndRef.current?.scrollIntoView({ block: "end" });
|
|
407
517
|
}, [messages.length, staffTypingName, open, visible]);
|
|
408
518
|
|
|
519
|
+
useEffect(() => {
|
|
520
|
+
if (!session) return;
|
|
521
|
+
pageUrlsRef.current.add(liveChatCurrentUrl());
|
|
522
|
+
let lastUrl = liveChatCurrentUrl();
|
|
523
|
+
|
|
524
|
+
function recordPageView() {
|
|
525
|
+
const currentUrl = liveChatCurrentUrl();
|
|
526
|
+
if (!currentUrl || currentUrl === lastUrl) return;
|
|
527
|
+
lastUrl = currentUrl;
|
|
528
|
+
pageUrlsRef.current.add(currentUrl);
|
|
529
|
+
scheduleStateBroadcast(120);
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
function recordFieldTouch(event: Event) {
|
|
533
|
+
const target = event.target;
|
|
534
|
+
if (!(target instanceof Element)) return;
|
|
535
|
+
const key = liveChatTrackedFieldKey(target);
|
|
536
|
+
if (!key || touchedFieldsRef.current.has(key)) return;
|
|
537
|
+
touchedFieldsRef.current.add(key);
|
|
538
|
+
scheduleStateBroadcast(220);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
const originalPushState = window.history.pushState;
|
|
542
|
+
const originalReplaceState = window.history.replaceState;
|
|
543
|
+
window.history.pushState = function patchedPushState(...args) {
|
|
544
|
+
const result = originalPushState.apply(this, args);
|
|
545
|
+
window.setTimeout(recordPageView, 0);
|
|
546
|
+
return result;
|
|
547
|
+
};
|
|
548
|
+
window.history.replaceState = function patchedReplaceState(...args) {
|
|
549
|
+
const result = originalReplaceState.apply(this, args);
|
|
550
|
+
window.setTimeout(recordPageView, 0);
|
|
551
|
+
return result;
|
|
552
|
+
};
|
|
553
|
+
const interval = window.setInterval(recordPageView, 1000);
|
|
554
|
+
window.addEventListener("popstate", recordPageView);
|
|
555
|
+
window.addEventListener("hashchange", recordPageView);
|
|
556
|
+
document.addEventListener("focusin", recordFieldTouch, true);
|
|
557
|
+
document.addEventListener("input", recordFieldTouch, true);
|
|
558
|
+
document.addEventListener("change", recordFieldTouch, true);
|
|
559
|
+
scheduleStateBroadcast(350);
|
|
560
|
+
return () => {
|
|
561
|
+
window.history.pushState = originalPushState;
|
|
562
|
+
window.history.replaceState = originalReplaceState;
|
|
563
|
+
window.clearInterval(interval);
|
|
564
|
+
window.removeEventListener("popstate", recordPageView);
|
|
565
|
+
window.removeEventListener("hashchange", recordPageView);
|
|
566
|
+
document.removeEventListener("focusin", recordFieldTouch, true);
|
|
567
|
+
document.removeEventListener("input", recordFieldTouch, true);
|
|
568
|
+
document.removeEventListener("change", recordFieldTouch, true);
|
|
569
|
+
if (stateBroadcastTimeoutRef.current) {
|
|
570
|
+
window.clearTimeout(stateBroadcastTimeoutRef.current);
|
|
571
|
+
stateBroadcastTimeoutRef.current = null;
|
|
572
|
+
}
|
|
573
|
+
};
|
|
574
|
+
}, [session]);
|
|
575
|
+
|
|
409
576
|
useEffect(() => {
|
|
410
577
|
if (!profileReady || session || !profile) return;
|
|
411
578
|
if (startSessionRef.current) return;
|
|
412
579
|
const currentProfile = profile;
|
|
413
580
|
let cancelled = false;
|
|
414
581
|
async function startSession() {
|
|
582
|
+
let keepLoading = false;
|
|
415
583
|
if (visible && open) setLoading(true);
|
|
416
584
|
setError("");
|
|
417
585
|
try {
|
|
@@ -431,14 +599,22 @@ export function LiveChatWidget({
|
|
|
431
599
|
device_signature: signature,
|
|
432
600
|
}),
|
|
433
601
|
});
|
|
602
|
+
if (response.status === LIVE_CHAT_BLOCKED_STATUS) {
|
|
603
|
+
keepLoading = true;
|
|
604
|
+
if (!cancelled) {
|
|
605
|
+
enterBlockedState();
|
|
606
|
+
}
|
|
607
|
+
return;
|
|
608
|
+
}
|
|
434
609
|
const envelope = await readJson<ApiEnvelope<LiveChatSession>>(response);
|
|
435
610
|
if (cancelled) return;
|
|
611
|
+
leaveBlockedState();
|
|
436
612
|
window.localStorage.setItem(storageKey, JSON.stringify(envelope.data));
|
|
437
613
|
setSession(envelope.data);
|
|
438
614
|
} catch (err) {
|
|
439
615
|
if (!cancelled && visible && open) setError(err instanceof Error ? err.message : "Chat is unavailable.");
|
|
440
616
|
} finally {
|
|
441
|
-
if (!cancelled) setLoading(false);
|
|
617
|
+
if (!cancelled && !keepLoading) setLoading(false);
|
|
442
618
|
if (startSessionRef.current === startPromise) startSessionRef.current = null;
|
|
443
619
|
}
|
|
444
620
|
}
|
|
@@ -447,7 +623,15 @@ export function LiveChatWidget({
|
|
|
447
623
|
return () => {
|
|
448
624
|
cancelled = true;
|
|
449
625
|
};
|
|
450
|
-
}, [apiKey, baseUrl, leadSource, open, profile, profileReady, session, storageKey, visible]);
|
|
626
|
+
}, [apiKey, baseUrl, blockedRetryNonce, leadSource, open, profile, profileReady, session, storageKey, visible]);
|
|
627
|
+
|
|
628
|
+
useEffect(() => {
|
|
629
|
+
if (!blocked || session || !profileReady || !profile) return;
|
|
630
|
+
const timer = window.setTimeout(() => {
|
|
631
|
+
setBlockedRetryNonce((value) => value + 1);
|
|
632
|
+
}, 15_000);
|
|
633
|
+
return () => window.clearTimeout(timer);
|
|
634
|
+
}, [blocked, profile, profileReady, session]);
|
|
451
635
|
|
|
452
636
|
useEffect(() => {
|
|
453
637
|
if (!visible || !open || !session) return;
|
|
@@ -488,7 +672,7 @@ export function LiveChatWidget({
|
|
|
488
672
|
socket.onopen = () => {
|
|
489
673
|
if (cancelled || activeSocket !== socket) return;
|
|
490
674
|
reconnectAttempts = 0;
|
|
491
|
-
|
|
675
|
+
sendStateNow();
|
|
492
676
|
};
|
|
493
677
|
socket.onmessage = (event) => {
|
|
494
678
|
if (cancelled || activeSocket !== socket) return;
|
|
@@ -502,19 +686,26 @@ export function LiveChatWidget({
|
|
|
502
686
|
typingTimeoutRef.current = setTimeout(() => setStaffTypingName(""), 2200);
|
|
503
687
|
return;
|
|
504
688
|
}
|
|
505
|
-
if (payload.action === "session_removed") {
|
|
689
|
+
if (payload.action === "session_removed" || payload.action === "session_banned") {
|
|
506
690
|
window.localStorage.removeItem(storageKey);
|
|
507
|
-
|
|
691
|
+
if (payload.action === "session_removed" && payload.clear_profile !== false) {
|
|
692
|
+
window.localStorage.removeItem(profileKey);
|
|
693
|
+
}
|
|
508
694
|
setSession(null);
|
|
509
695
|
setMessages([]);
|
|
510
696
|
setDraft("");
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
697
|
+
if (payload.action === "session_removed" && payload.clear_profile !== false) {
|
|
698
|
+
setNameDraft("");
|
|
699
|
+
setProfile(null);
|
|
700
|
+
setProfileReady(false);
|
|
701
|
+
}
|
|
514
702
|
setStaffTypingName("");
|
|
515
703
|
setUnreadCount(0);
|
|
516
704
|
setUnreadPreview("");
|
|
517
705
|
setPreviewVisible(false);
|
|
706
|
+
if (payload.action === "session_banned") {
|
|
707
|
+
enterBlockedState({ reload: true });
|
|
708
|
+
}
|
|
518
709
|
socket.close();
|
|
519
710
|
return;
|
|
520
711
|
}
|
|
@@ -578,7 +769,8 @@ export function LiveChatWidget({
|
|
|
578
769
|
window.removeEventListener("beforeunload", endPresence);
|
|
579
770
|
if (reconnectTimer) clearTimeout(reconnectTimer);
|
|
580
771
|
if (activeSocket?.readyState === WebSocket.OPEN) {
|
|
581
|
-
|
|
772
|
+
openRef.current = false;
|
|
773
|
+
activeSocket.send(JSON.stringify(buildStatePayload()));
|
|
582
774
|
}
|
|
583
775
|
endPresence();
|
|
584
776
|
activeSocket?.close();
|
|
@@ -642,8 +834,15 @@ export function LiveChatWidget({
|
|
|
642
834
|
} as CSSProperties;
|
|
643
835
|
|
|
644
836
|
return (
|
|
645
|
-
<div className={`os-live-chat ${visible ? "is-visible" : "is-hidden"}`} style={rootStyle}>
|
|
646
|
-
{
|
|
837
|
+
<div className={`os-live-chat ${blocked || visible ? "is-visible" : "is-hidden"} ${blocked ? "is-blocked" : ""}`} style={rootStyle}>
|
|
838
|
+
{blocked ? (
|
|
839
|
+
<div className="os-live-chat-blocker" aria-live="polite" aria-busy="true">
|
|
840
|
+
<div className="os-live-chat-blocker-card" aria-label="Loading">
|
|
841
|
+
<Loader2 size={32} className="os-live-chat-spin" aria-hidden />
|
|
842
|
+
</div>
|
|
843
|
+
</div>
|
|
844
|
+
) : null}
|
|
845
|
+
{!blocked && open ? (
|
|
647
846
|
<section className="os-live-chat-panel" aria-label={`${brandName} live chat`}>
|
|
648
847
|
<header className="os-live-chat-header">
|
|
649
848
|
<span className="os-live-chat-mark">
|
|
@@ -775,12 +974,16 @@ export function LiveChatWidget({
|
|
|
775
974
|
)}
|
|
776
975
|
</section>
|
|
777
976
|
) : null}
|
|
778
|
-
{visible ? (
|
|
977
|
+
{!blocked && visible ? (
|
|
779
978
|
<button className="os-live-chat-bubble" type="button" onClick={() => setOpen((value) => !value)} aria-label="Open live chat">
|
|
780
979
|
<MessageCircle size={25} aria-hidden />
|
|
781
980
|
{unreadCount > 0 ? <strong className="os-live-chat-badge">{unreadCount}</strong> : null}
|
|
782
981
|
{!open ? (
|
|
783
|
-
<span
|
|
982
|
+
<span
|
|
983
|
+
key={unreadCount > 0 ? `preview-${unreadPreview}` : "assist-prompt"}
|
|
984
|
+
className={unreadCount > 0 ? `has-unread ${previewVisible ? "is-preview-visible" : "is-preview-hidden"}` : ""}
|
|
985
|
+
aria-live={unreadCount > 0 ? "polite" : undefined}
|
|
986
|
+
>
|
|
784
987
|
{unreadCount > 0 && previewVisible ? (
|
|
785
988
|
<>
|
|
786
989
|
<b>New message</b>
|
|
@@ -806,6 +1009,34 @@ export function LiveChatWidget({
|
|
|
806
1009
|
.os-live-chat.is-hidden {
|
|
807
1010
|
pointer-events: none;
|
|
808
1011
|
}
|
|
1012
|
+
.os-live-chat.is-blocked {
|
|
1013
|
+
pointer-events: auto;
|
|
1014
|
+
}
|
|
1015
|
+
.os-live-chat-blocker {
|
|
1016
|
+
position: fixed;
|
|
1017
|
+
inset: 0;
|
|
1018
|
+
z-index: 2147483000;
|
|
1019
|
+
display: grid;
|
|
1020
|
+
place-items: center;
|
|
1021
|
+
padding: 24px;
|
|
1022
|
+
background:
|
|
1023
|
+
radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--os-chat-accent) 14%, transparent), transparent 34%),
|
|
1024
|
+
rgba(248, 250, 252, 0.98);
|
|
1025
|
+
backdrop-filter: blur(18px);
|
|
1026
|
+
-webkit-backdrop-filter: blur(18px);
|
|
1027
|
+
animation: os-chat-blocker-in 320ms cubic-bezier(.16,1,.3,1) both;
|
|
1028
|
+
}
|
|
1029
|
+
.os-live-chat-blocker-card {
|
|
1030
|
+
display: grid;
|
|
1031
|
+
width: 84px;
|
|
1032
|
+
height: 84px;
|
|
1033
|
+
place-items: center;
|
|
1034
|
+
border: 1px solid rgba(148, 163, 184, 0.24);
|
|
1035
|
+
border-radius: 28px;
|
|
1036
|
+
color: var(--os-chat-accent);
|
|
1037
|
+
background: rgba(255, 255, 255, 0.86);
|
|
1038
|
+
box-shadow: 0 24px 80px rgba(15, 23, 42, 0.16);
|
|
1039
|
+
}
|
|
809
1040
|
.os-live-chat-bubble {
|
|
810
1041
|
position: relative;
|
|
811
1042
|
display: grid;
|
|
@@ -823,8 +1054,8 @@ export function LiveChatWidget({
|
|
|
823
1054
|
}
|
|
824
1055
|
.os-live-chat-bubble span {
|
|
825
1056
|
position: absolute;
|
|
826
|
-
right:
|
|
827
|
-
bottom:
|
|
1057
|
+
right: 68px;
|
|
1058
|
+
bottom: 11px;
|
|
828
1059
|
width: max-content;
|
|
829
1060
|
max-width: 230px;
|
|
830
1061
|
border: 1px solid rgba(148, 163, 184, 0.28);
|
|
@@ -836,25 +1067,27 @@ export function LiveChatWidget({
|
|
|
836
1067
|
font-size: 14px;
|
|
837
1068
|
font-weight: 800;
|
|
838
1069
|
pointer-events: none;
|
|
839
|
-
|
|
1070
|
+
transform-origin: bottom right;
|
|
1071
|
+
animation: os-chat-nudge 520ms cubic-bezier(.16,1,.3,1) 350ms both;
|
|
840
1072
|
}
|
|
841
1073
|
.os-live-chat-bubble span.has-unread {
|
|
842
1074
|
display: grid;
|
|
843
1075
|
gap: 2px;
|
|
844
|
-
width: min(260px, calc(100vw -
|
|
1076
|
+
width: min(260px, calc(100vw - 130px));
|
|
845
1077
|
max-width: 260px;
|
|
846
|
-
border-radius:
|
|
847
|
-
padding:
|
|
1078
|
+
border-radius: 20px;
|
|
1079
|
+
padding: 11px 14px;
|
|
848
1080
|
text-align: left;
|
|
1081
|
+
box-shadow: 0 18px 44px rgba(15, 23, 42, 0.16);
|
|
849
1082
|
}
|
|
850
1083
|
.os-live-chat-bubble span.has-unread.is-preview-visible {
|
|
851
|
-
animation: os-chat-preview-in
|
|
1084
|
+
animation: os-chat-preview-in 420ms cubic-bezier(.16,1,.3,1) both;
|
|
852
1085
|
}
|
|
853
1086
|
.os-live-chat-bubble span.has-unread.is-preview-hidden {
|
|
854
1087
|
opacity: 0;
|
|
855
|
-
transform: translateX(10px) scale(0.98);
|
|
856
1088
|
visibility: hidden;
|
|
857
|
-
|
|
1089
|
+
animation: os-chat-preview-out 360ms cubic-bezier(.4,0,.2,1) both;
|
|
1090
|
+
transition: visibility 0s linear 360ms;
|
|
858
1091
|
}
|
|
859
1092
|
.os-live-chat-bubble span.has-unread b,
|
|
860
1093
|
.os-live-chat-bubble span.has-unread small {
|
|
@@ -918,7 +1151,7 @@ export function LiveChatWidget({
|
|
|
918
1151
|
border-radius: 28px;
|
|
919
1152
|
background: rgba(255, 255, 255, 0.98);
|
|
920
1153
|
box-shadow: 0 28px 80px rgba(15, 23, 42, 0.24);
|
|
921
|
-
animation: os-chat-in
|
|
1154
|
+
animation: os-chat-in 360ms cubic-bezier(.16,1,.3,1);
|
|
922
1155
|
transform-origin: bottom right;
|
|
923
1156
|
}
|
|
924
1157
|
.os-live-chat-header {
|
|
@@ -1104,6 +1337,7 @@ export function LiveChatWidget({
|
|
|
1104
1337
|
gap: 10px;
|
|
1105
1338
|
overflow-y: auto;
|
|
1106
1339
|
padding: 16px;
|
|
1340
|
+
scroll-behavior: smooth;
|
|
1107
1341
|
background:
|
|
1108
1342
|
radial-gradient(circle at 22% 0%, color-mix(in srgb, var(--os-chat-accent) 8%, transparent), transparent 32%),
|
|
1109
1343
|
#f8fafc;
|
|
@@ -1129,7 +1363,13 @@ export function LiveChatWidget({
|
|
|
1129
1363
|
font-size: 14px;
|
|
1130
1364
|
line-height: 1.45;
|
|
1131
1365
|
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.07);
|
|
1132
|
-
|
|
1366
|
+
will-change: transform, opacity;
|
|
1367
|
+
animation: os-message-in 340ms cubic-bezier(.16,1,.3,1) both;
|
|
1368
|
+
transition: transform 260ms cubic-bezier(.16,1,.3,1), box-shadow 260ms ease, opacity 260ms ease;
|
|
1369
|
+
}
|
|
1370
|
+
.os-live-chat-message:hover {
|
|
1371
|
+
transform: translateY(-1px);
|
|
1372
|
+
box-shadow: 0 11px 26px rgba(15, 23, 42, 0.09);
|
|
1133
1373
|
}
|
|
1134
1374
|
.os-live-chat-message p {
|
|
1135
1375
|
margin: 0;
|
|
@@ -1168,7 +1408,7 @@ export function LiveChatWidget({
|
|
|
1168
1408
|
background: white;
|
|
1169
1409
|
font-size: 12px;
|
|
1170
1410
|
box-shadow: 0 8px 20px rgba(15, 23, 42, 0.06);
|
|
1171
|
-
animation: os-message-in
|
|
1411
|
+
animation: os-message-in 340ms cubic-bezier(.16,1,.3,1) both;
|
|
1172
1412
|
}
|
|
1173
1413
|
.os-live-chat-typing i {
|
|
1174
1414
|
width: 5px;
|
|
@@ -1239,11 +1479,13 @@ export function LiveChatWidget({
|
|
|
1239
1479
|
@keyframes os-chat-in {
|
|
1240
1480
|
from {
|
|
1241
1481
|
opacity: 0;
|
|
1242
|
-
transform: translateY(
|
|
1482
|
+
transform: translateY(18px) scale(0.965);
|
|
1483
|
+
filter: blur(5px);
|
|
1243
1484
|
}
|
|
1244
1485
|
to {
|
|
1245
1486
|
opacity: 1;
|
|
1246
1487
|
transform: translateY(0) scale(1);
|
|
1488
|
+
filter: blur(0);
|
|
1247
1489
|
}
|
|
1248
1490
|
}
|
|
1249
1491
|
@keyframes os-chat-bubble-in {
|
|
@@ -1256,6 +1498,16 @@ export function LiveChatWidget({
|
|
|
1256
1498
|
transform: translateY(0) scale(1);
|
|
1257
1499
|
}
|
|
1258
1500
|
}
|
|
1501
|
+
@keyframes os-chat-blocker-in {
|
|
1502
|
+
from {
|
|
1503
|
+
opacity: 0;
|
|
1504
|
+
filter: blur(6px);
|
|
1505
|
+
}
|
|
1506
|
+
to {
|
|
1507
|
+
opacity: 1;
|
|
1508
|
+
filter: blur(0);
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1259
1511
|
@keyframes os-chat-nudge {
|
|
1260
1512
|
from {
|
|
1261
1513
|
opacity: 0;
|
|
@@ -1280,21 +1532,37 @@ export function LiveChatWidget({
|
|
|
1280
1532
|
@keyframes os-chat-preview-in {
|
|
1281
1533
|
from {
|
|
1282
1534
|
opacity: 0;
|
|
1283
|
-
transform: translateX(
|
|
1535
|
+
transform: translateX(14px) translateY(4px) scale(0.96);
|
|
1536
|
+
filter: blur(4px);
|
|
1284
1537
|
}
|
|
1285
1538
|
to {
|
|
1286
1539
|
opacity: 1;
|
|
1287
1540
|
transform: translateX(0) scale(1);
|
|
1541
|
+
filter: blur(0);
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
@keyframes os-chat-preview-out {
|
|
1545
|
+
from {
|
|
1546
|
+
opacity: 1;
|
|
1547
|
+
transform: translateX(0) scale(1);
|
|
1548
|
+
filter: blur(0);
|
|
1549
|
+
}
|
|
1550
|
+
to {
|
|
1551
|
+
opacity: 0;
|
|
1552
|
+
transform: translateX(10px) translateY(3px) scale(0.96);
|
|
1553
|
+
filter: blur(4px);
|
|
1288
1554
|
}
|
|
1289
1555
|
}
|
|
1290
1556
|
@keyframes os-message-in {
|
|
1291
1557
|
from {
|
|
1292
1558
|
opacity: 0;
|
|
1293
|
-
transform: translateY(
|
|
1559
|
+
transform: translateY(10px) scale(0.975);
|
|
1560
|
+
filter: blur(3px);
|
|
1294
1561
|
}
|
|
1295
1562
|
to {
|
|
1296
1563
|
opacity: 1;
|
|
1297
1564
|
transform: translateY(0) scale(1);
|
|
1565
|
+
filter: blur(0);
|
|
1298
1566
|
}
|
|
1299
1567
|
}
|
|
1300
1568
|
@keyframes os-typing-dot {
|
|
@@ -1326,6 +1594,26 @@ export function LiveChatWidget({
|
|
|
1326
1594
|
.os-live-chat-bubble span:not(.has-unread) {
|
|
1327
1595
|
display: none;
|
|
1328
1596
|
}
|
|
1597
|
+
.os-live-chat-bubble span.has-unread {
|
|
1598
|
+
right: 68px;
|
|
1599
|
+
width: min(242px, calc(100vw - 116px));
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1603
|
+
.os-live-chat-bubble,
|
|
1604
|
+
.os-live-chat-bubble span,
|
|
1605
|
+
.os-live-chat-bubble span.has-unread.is-preview-visible,
|
|
1606
|
+
.os-live-chat-bubble span.has-unread.is-preview-hidden,
|
|
1607
|
+
.os-live-chat-panel,
|
|
1608
|
+
.os-live-chat-message,
|
|
1609
|
+
.os-live-chat-typing,
|
|
1610
|
+
.os-live-chat-wave {
|
|
1611
|
+
animation: none !important;
|
|
1612
|
+
transition: none !important;
|
|
1613
|
+
}
|
|
1614
|
+
.os-live-chat-body {
|
|
1615
|
+
scroll-behavior: auto;
|
|
1616
|
+
}
|
|
1329
1617
|
}
|
|
1330
1618
|
`}</style>
|
|
1331
1619
|
</div>
|