@alan-ai/alan-sdk-web 1.8.96 → 1.8.98
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/alan_lib.js +154 -80
- package/dist/alan_lib.min.js +1 -1
- package/package.json +1 -1
package/dist/alan_lib.js
CHANGED
|
@@ -88953,14 +88953,16 @@
|
|
|
88953
88953
|
} else {
|
|
88954
88954
|
messages[msgInd] = { ...msg };
|
|
88955
88955
|
}
|
|
88956
|
-
|
|
88956
|
+
const curMsg = messages[msgInd];
|
|
88957
|
+
if ((curMsg?.text || curMsg?.images || curMsg.suggestions) && isFinalMessage(messages[msgInd])) {
|
|
88957
88958
|
skipUpdating = true;
|
|
88958
88959
|
}
|
|
88959
88960
|
isNew = false;
|
|
88960
88961
|
} else if (existingMsgReqId > -1) {
|
|
88961
88962
|
isNew = false;
|
|
88962
88963
|
msgInd = existingMsgReqId;
|
|
88963
|
-
|
|
88964
|
+
const curMsg = messages[msgInd];
|
|
88965
|
+
if ((curMsg?.text || curMsg?.images || curMsg.suggestions) && isFinalMessage(messages[msgInd])) {
|
|
88964
88966
|
skipUpdating = true;
|
|
88965
88967
|
}
|
|
88966
88968
|
}
|
|
@@ -93424,6 +93426,76 @@ code.hljs {
|
|
|
93424
93426
|
viewportWidth: 0,
|
|
93425
93427
|
viewportHeight: 0
|
|
93426
93428
|
};
|
|
93429
|
+
function getDomPath(element) {
|
|
93430
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
93431
|
+
return "";
|
|
93432
|
+
}
|
|
93433
|
+
const pathSegments = [];
|
|
93434
|
+
let current2 = element;
|
|
93435
|
+
while (current2 && current2.nodeType === Node.ELEMENT_NODE) {
|
|
93436
|
+
let selector = current2.nodeName.toLowerCase();
|
|
93437
|
+
if (current2.id) {
|
|
93438
|
+
selector += `#${current2.id}`;
|
|
93439
|
+
pathSegments.unshift(selector);
|
|
93440
|
+
break;
|
|
93441
|
+
}
|
|
93442
|
+
let siblingIndex = 1;
|
|
93443
|
+
let sibling2 = current2.previousElementSibling;
|
|
93444
|
+
while (sibling2) {
|
|
93445
|
+
if (sibling2.nodeName === current2.nodeName) {
|
|
93446
|
+
siblingIndex++;
|
|
93447
|
+
}
|
|
93448
|
+
sibling2 = sibling2.previousElementSibling;
|
|
93449
|
+
}
|
|
93450
|
+
if (siblingIndex > 1) {
|
|
93451
|
+
selector += `:nth-of-type(${siblingIndex})`;
|
|
93452
|
+
}
|
|
93453
|
+
pathSegments.unshift(selector);
|
|
93454
|
+
current2 = current2.parentElement;
|
|
93455
|
+
}
|
|
93456
|
+
return pathSegments.join(" > ");
|
|
93457
|
+
}
|
|
93458
|
+
function collectScrollableElementStates() {
|
|
93459
|
+
if (typeof document === "undefined") {
|
|
93460
|
+
return [];
|
|
93461
|
+
}
|
|
93462
|
+
const elements = /* @__PURE__ */ new Set();
|
|
93463
|
+
document.querySelectorAll("*").forEach((el) => elements.add(el));
|
|
93464
|
+
if (document.body) elements.add(document.body);
|
|
93465
|
+
if (document.documentElement) elements.add(document.documentElement);
|
|
93466
|
+
if (document.scrollingElement) elements.add(document.scrollingElement);
|
|
93467
|
+
const scrollableStates = [];
|
|
93468
|
+
const overflowRegex = /(auto|scroll|overlay)/i;
|
|
93469
|
+
elements.forEach((element) => {
|
|
93470
|
+
if (!(element instanceof HTMLElement)) {
|
|
93471
|
+
return;
|
|
93472
|
+
}
|
|
93473
|
+
const scrollHeight = element.scrollHeight;
|
|
93474
|
+
const clientHeight = element.clientHeight;
|
|
93475
|
+
const scrollWidth = element.scrollWidth;
|
|
93476
|
+
const clientWidth = element.clientWidth;
|
|
93477
|
+
if (clientHeight === 0 && clientWidth === 0) {
|
|
93478
|
+
return;
|
|
93479
|
+
}
|
|
93480
|
+
const computedStyle = window.getComputedStyle(element);
|
|
93481
|
+
const overflowY = computedStyle.overflowY;
|
|
93482
|
+
const overflowX = computedStyle.overflowX;
|
|
93483
|
+
const isRootElement = element === document.body || element === document.documentElement || element === document.scrollingElement;
|
|
93484
|
+
const canScrollVertically = scrollHeight - clientHeight > 1;
|
|
93485
|
+
const canScrollHorizontally = scrollWidth - clientWidth > 1;
|
|
93486
|
+
const allowsVerticalScroll = isRootElement || overflowRegex.test(overflowY);
|
|
93487
|
+
const allowsHorizontalScroll = isRootElement || overflowRegex.test(overflowX);
|
|
93488
|
+
if (!(canScrollVertically && allowsVerticalScroll || canScrollHorizontally && allowsHorizontalScroll)) {
|
|
93489
|
+
return;
|
|
93490
|
+
}
|
|
93491
|
+
scrollableStates.push({
|
|
93492
|
+
path: getDomPath(element),
|
|
93493
|
+
scrollTop: element.scrollTop,
|
|
93494
|
+
scrollLeft: element.scrollLeft
|
|
93495
|
+
});
|
|
93496
|
+
});
|
|
93497
|
+
return scrollableStates;
|
|
93498
|
+
}
|
|
93427
93499
|
function generateContentHash(content) {
|
|
93428
93500
|
let hash = 0;
|
|
93429
93501
|
for (let i = 0; i < content.length; i++) {
|
|
@@ -93463,7 +93535,7 @@ code.hljs {
|
|
|
93463
93535
|
window.removeEventListener(ALAN_BTN_PAGE_SYNC_EVENT, listenForPageChanges);
|
|
93464
93536
|
}
|
|
93465
93537
|
}
|
|
93466
|
-
async function attemptPageStateSync(onSendCb, forceUpdate = false) {
|
|
93538
|
+
async function attemptPageStateSync(onSendCb, forceUpdate = false, reason) {
|
|
93467
93539
|
const currentTime = performance.now();
|
|
93468
93540
|
const timeSinceLastCall = currentTime - lastSendPageStateTime;
|
|
93469
93541
|
if (timeSinceLastCall < SEND_PAGE_STATE_THROTTLE_MS && !forceUpdate) {
|
|
@@ -93475,7 +93547,7 @@ code.hljs {
|
|
|
93475
93547
|
pendingSyncTimeout = setTimeout(() => {
|
|
93476
93548
|
pendingSync = false;
|
|
93477
93549
|
pendingSyncTimeout = null;
|
|
93478
|
-
sendPageState(onSendCb, true);
|
|
93550
|
+
sendPageState(onSendCb, true, reason);
|
|
93479
93551
|
}, delayMs);
|
|
93480
93552
|
return;
|
|
93481
93553
|
}
|
|
@@ -93484,48 +93556,55 @@ code.hljs {
|
|
|
93484
93556
|
pendingSyncTimeout = null;
|
|
93485
93557
|
pendingSync = false;
|
|
93486
93558
|
}
|
|
93487
|
-
await sendPageState(onSendCb, forceUpdate);
|
|
93559
|
+
await sendPageState(onSendCb, forceUpdate, reason);
|
|
93488
93560
|
}
|
|
93489
|
-
function syncPageState(onSendCb, forceUpdate) {
|
|
93490
|
-
attemptPageStateSync(onSendCb, forceUpdate);
|
|
93561
|
+
function syncPageState(onSendCb, forceUpdate, reason) {
|
|
93562
|
+
attemptPageStateSync(onSendCb, forceUpdate, reason);
|
|
93491
93563
|
}
|
|
93492
93564
|
function listenForPageChanges() {
|
|
93493
93565
|
sendPageState();
|
|
93494
93566
|
}
|
|
93495
|
-
async function captureScreenshot(requestId) {
|
|
93567
|
+
async function captureScreenshot(requestId, reason) {
|
|
93496
93568
|
if (!document.body) {
|
|
93497
93569
|
throw new Error("Document body not available");
|
|
93498
93570
|
}
|
|
93499
|
-
const bodyRect = document.body.getBoundingClientRect();
|
|
93500
|
-
const maxWidth = 1280;
|
|
93501
|
-
const maxHeight = 1024;
|
|
93502
|
-
const scale = Math.min(maxWidth / bodyRect.width, maxHeight / bodyRect.height, 1);
|
|
93503
93571
|
try {
|
|
93504
|
-
const
|
|
93505
|
-
|
|
93506
|
-
|
|
93507
|
-
|
|
93508
|
-
|
|
93509
|
-
|
|
93510
|
-
|
|
93511
|
-
|
|
93512
|
-
|
|
93513
|
-
|
|
93514
|
-
|
|
93515
|
-
|
|
93516
|
-
|
|
93517
|
-
|
|
93518
|
-
|
|
93519
|
-
|
|
93520
|
-
|
|
93521
|
-
|
|
93522
|
-
|
|
93523
|
-
|
|
93524
|
-
|
|
93525
|
-
|
|
93572
|
+
const html3 = document.documentElement.outerHTML;
|
|
93573
|
+
const maxWidth = 1280;
|
|
93574
|
+
const maxHeight = 1024;
|
|
93575
|
+
const scrollStates = collectScrollableElementStates();
|
|
93576
|
+
let res;
|
|
93577
|
+
try {
|
|
93578
|
+
res = await new Promise((resolve, reject) => {
|
|
93579
|
+
window.tutorProject.call(
|
|
93580
|
+
"generateScreenshot",
|
|
93581
|
+
{
|
|
93582
|
+
html: html3,
|
|
93583
|
+
baseHref: window.location.origin,
|
|
93584
|
+
width: Math.min(window.innerWidth, maxWidth),
|
|
93585
|
+
height: Math.min(window.innerHeight, maxHeight),
|
|
93586
|
+
fullPage: true,
|
|
93587
|
+
imageType: "jpeg",
|
|
93588
|
+
quality: 85,
|
|
93589
|
+
scrollStates
|
|
93590
|
+
},
|
|
93591
|
+
(err, screenshot) => {
|
|
93592
|
+
if (err) reject(err);
|
|
93593
|
+
else resolve(screenshot);
|
|
93594
|
+
}
|
|
93595
|
+
);
|
|
93596
|
+
});
|
|
93597
|
+
} catch (err) {
|
|
93598
|
+
console.error("Screenshot failed", err);
|
|
93599
|
+
return "";
|
|
93600
|
+
}
|
|
93601
|
+
return res.screenshot;
|
|
93602
|
+
} catch (err) {
|
|
93603
|
+
console.error("Screenshot error:", err);
|
|
93604
|
+
throw err;
|
|
93526
93605
|
}
|
|
93527
93606
|
}
|
|
93528
|
-
async function sendPageState(onSendCb, forceUpdate) {
|
|
93607
|
+
async function sendPageState(onSendCb, forceUpdate, reason) {
|
|
93529
93608
|
lastSendPageStateTime = performance.now();
|
|
93530
93609
|
const currentRequestId = ++requestCounter;
|
|
93531
93610
|
try {
|
|
@@ -93572,7 +93651,7 @@ code.hljs {
|
|
|
93572
93651
|
return;
|
|
93573
93652
|
}
|
|
93574
93653
|
if (uiState10.pageState?.screenshot?.enabled) {
|
|
93575
|
-
params.screenshot = await captureScreenshot(currentRequestId);
|
|
93654
|
+
params.screenshot = await captureScreenshot(currentRequestId, reason);
|
|
93576
93655
|
}
|
|
93577
93656
|
window.tutorProject.call("syncPageState", params);
|
|
93578
93657
|
} catch (error) {
|
|
@@ -101615,8 +101694,8 @@ code.hljs {
|
|
|
101615
101694
|
// alan_btn/alan_btn.ts
|
|
101616
101695
|
(function(ns) {
|
|
101617
101696
|
const uiState10 = getUIState();
|
|
101618
|
-
uiState10.lib.version = "alan-version.1.8.
|
|
101619
|
-
window.alanLib = { version: "alan-version.1.8.
|
|
101697
|
+
uiState10.lib.version = "alan-version.1.8.98".replace("alan-version.", "");
|
|
101698
|
+
window.alanLib = { version: "alan-version.1.8.98".replace("alan-version.", "") };
|
|
101620
101699
|
if (window.alanBtn) {
|
|
101621
101700
|
console.warn("Alan: the Alan Button source code has already added (v." + uiState10.lib.version + ")");
|
|
101622
101701
|
}
|
|
@@ -102041,32 +102120,31 @@ code.hljs {
|
|
|
102041
102120
|
var offlineIconImg = document.createElement("img");
|
|
102042
102121
|
var recognisedTextHolder = document.createElement("div");
|
|
102043
102122
|
var recognisedTextContent = document.createElement("div");
|
|
102044
|
-
var soundOnAudioDoesNotExist = false;
|
|
102045
102123
|
var soundOffAudioDoesNotExist = false;
|
|
102046
102124
|
var soundNextAudioDoesNotExist = false;
|
|
102047
102125
|
var soundNextColdPlay = true;
|
|
102048
|
-
var
|
|
102049
|
-
|
|
102050
|
-
|
|
102051
|
-
|
|
102052
|
-
|
|
102053
|
-
|
|
102054
|
-
|
|
102055
|
-
|
|
102056
|
-
|
|
102057
|
-
|
|
102058
|
-
|
|
102059
|
-
|
|
102060
|
-
|
|
102061
|
-
|
|
102062
|
-
|
|
102063
|
-
|
|
102064
|
-
}
|
|
102065
|
-
|
|
102066
|
-
|
|
102067
|
-
|
|
102068
|
-
|
|
102069
|
-
}
|
|
102126
|
+
var soundOffAudio = null;
|
|
102127
|
+
var soundNextAudio = null;
|
|
102128
|
+
function initButtonSounds() {
|
|
102129
|
+
soundOffAudio = new Audio("data:audio/mp4;base64,AAAAGGZ0eXBNNEEgAAACAGlzb21pc28yAAAACGZyZWUAAAWbbWRhdNwATGF2YzUyLjEwOC4wAEI4liJvGTaBRNWgpCwBiMCjrsceWmt/FX4+tazOAVVgZQfdya5JhBsOJ3/kOLuaScl8ydUMZk+oCXDAQR4AwMDdP/MDUUJNh9sfnQJI67rzSfO+O/wSYeAkr2hw/AiHzSA2iwAABVoAAATSEQAWBwACwAJq0j8oENVh51BL41uvM13rzrd1VazVblJSlB968g89yG7I+jnst9OXR9sLNIq6QTNdwTAiACMbS6bNcogBd6uHq2bP2+9v8W4RgZ9J87InCwEgAAAWoAVCYE0wABICYCwSCJYARiABQOAhHEhXf73AAAJuzqc3hQAPh5nPtWt3xrF1EDTThAsCZ35emIYzsHbWvviUi8B6TR6I3FEXS27pXovDTi9vXdk9kY83K6Li6LESt19EOrWbdod7lUhQIAAJazuQ7g8AOHSuNY1XF5fHMiqBjnJiSEKXL9Gg066fyhzOdsPOiq4JVfeSAalwAACoAADP9I7P8VyuxAAKAFkyYAAAAKuAIRxPH/fokAACXs6kGYTABrzk6a56yvbx7b8gTbkJGTKRMwZs+oNhUlJEbiZbqKHWI/1XrNXxFH4+/4rXvevonT+RC8L+qkBfR39U5ApqpAenmrOx5wgTd6xnMwjglbQdwkAB5ydVrOKrzmmgDL02TydTcY7HxwkJFi4RS2Vwz8aYywsACoAADHC1AQXlwqZuxhilTKAF1V4JyJwsAOAhLE6t////CEJi0lIRhMAL1qTV1cvNVqRUG/e+CR0TMHKNkqjy3ad0D7sSMbq7CXo+u3OvRI5mjGY5lPPQ6kIynobbeJBzOu4xQhoBJZQcw54odEI3Bx8NLTQoAAExaDsEwAnGrai5eaSXAJaO9ay9zDzSeUvgfsrNuf2qrZiR60AAAAAAAAAAAADgIU7ZOQfgPxcRhxbikgn261Y/Z8XoA5N+b6U1DtrC2jv2QJmqLIZrCkNBopcnyH/JG3R7bW52taiziWookX3P9k3HUqdzD8B+KxINaqsigH7ceYU/ida6SpStjzj4PNrxhLba06ZYIKWPr84KCGKhkIkq1T3t6yquOKkcdlLKNjiWzUbtxKauaRHmVDPwVzP2c35acUOAIXxPIV/+8AACWtQ0CYAOOKV8ZVr6y99SgzBUQSAcP9VlkmanC8ykvqjcWDiztAmWZ1i6WlCdF0K052WpCj8LWvUxBc1t/PZvCN+/xVgFxmM5eoQAArKWg8hAAGlp5VdXL1VgBM/CAWXJzbtdgq4kNkqDm7hm+6Ij7YH0femapCwAAAAAAmXrSe4FAAAAAABC5yEcTy3X++ABAlLQgxqEQAXON+Ul5eq49fEFD1zBIxKViiEo2PTaYQMJMMHxUWUFZ2mUDgfxhAzn/iY8YUfqVj25fPC4xpq/CNv8VD4mmPzwyhvtSzGKDBvmtgpWNJiCICVggrUXBK2g7BMAGmnnJNZeq676uqDv3f078fLYKuyQ0z/Lr1Yx381ass4E+MCY54AAAAWlk4JAAAawAA4hHEo///93AgJi0k8UBEAHm61xS5remmhljsjmck4t2n53zihd/FMh54rUP4IigM9qSQXshl7ObbJMP7XpqWVWARSkTKnm/NZIO1GF/1iQVW68fvVzu63sz8JaJy2EUirqAAInYsmrQNgmADrUmkaVwurlhYH1LVzlzX4KLE+3OsxUdPRiWJAAAAAAAAAAE5EQABwhGogf/////x1JSIQABetS5L1xllD6Lkf3uE14UyZQQs1HttutUitG2UFsarRLNRUzQq1kKhZOw0Do2JrSsR0FFUzQpKaCkpIKG0Do2g0NsWad60dCTkDwAXrUku71WiqH5vx+zUYwk9rInJSyUnwmEAAAAAAAAAOAIRAEYIwcIRAEYIwcIRAEYIwcAAAC5G1vb3YAAABsbXZoZAAAAAB8JbCAfCWwgAAAA+gAAAEAAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIQdHJhawAAAFx0a2hkAAAAD3wlsIB8JbCAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAABrG1kaWEAAAAgbWRoZAAAAAB8JbCAfCWwgAAAu4AAADAAVcQAAAAAAC1oZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU291bmRIYW5kbGVyAAAAAVdtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAARtzdGJsAAAAW3N0c2QAAAAAAAAAAQAAAEttcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAAu4AAAAAAACdlc2RzAAAAAAMZAAEABBFAFQAAAAAA+gAAAAAABQIRkAYBAgAAABhzdHRzAAAAAAAAAAEAAAAMAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAABEc3RzegAAAAAAAAAAAAAADAAAAOsAAACdAAAAngAAAIsAAACWAAAAkQAAAJ0AAACTAAAAeQAAAAYAAAAGAAAABgAAAEBzdGNvAAAAAAAAAAwAAAAoAAABEwAAAbAAAAJOAAAC2QAAA28AAAQAAAAEnQAABTAAAAWpAAAFrwAABbUAAABgdWR0YQAAAFhtZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAACtpbHN0AAAAI6l0b28AAAAbZGF0YQAAAAEAAAAATGF2ZjUyLjkzLjA=");
|
|
102130
|
+
soundOffAudio.onerror = function() {
|
|
102131
|
+
soundOffAudioDoesNotExist = true;
|
|
102132
|
+
};
|
|
102133
|
+
soundNextAudio = new Audio("data:audio/mp4;base64,AAAAHGZ0eXBNNEEgAAAAAE00QSBtcDQyaXNvbQAAAAFtZGF0AAAAAAAAEXohTMaAB//+fl/BB7eRCgV2mzE3qLQC1u4rDx0KkHPyP1u9BFKZpQkBB8EicZPF5QlOkEJ0CfxejbF3c+XEnaGMrrPIi1pFYX7RSRwfPCfji+Rm0yGDwXUvEbQDhsh2jUC3FkfyaOAfzkXvoQEqnC1FecwjgLVauoVSOWRDynF4XD1zKtfD1DCtfFZSrh98VEfFNJRghlwCehCn5OPSGuv5OW92wL6xXijBoPoR7iE7gq1Psxwd8XKRPwoaKeSNdlSVhTX3MJ0rTBlYIMMspkJnTNIQT1DMAVDDua4RiI33A9Bgso4voe3qbITeimbtNGJEKK3sIjpv14j7p5egilM0oSAn0vkZDH+NyHnXnJPuXnYn4RQQ47xIhprGQaZPAxCCI+PXymDl7blk2fSrBGW/RtGkHDsFCfZZnbOqlBqXrEoaglwjsBP0/81CHifxES7HtySnEZOCI1REkxruZ9h56hax83BiQV0uKLk2G2m2OROyNbBdMEgfGix5wKADUIpkBO4OoOnyb/URHgTSIvUpNkUivz4T40/RMpF135VpOcVi/jaiZkjUTRrzxqK6Um1gYb/vVhfr9VGpnvApXXcq7lVLPTrChM1tMzGeXoyG8hTagEkMw6ZaE5ERc7DQSnE5up6NxLY4gxG+MRABwCF6FGW2B2JhWGSm4jkrn5Pp7YOAIBQC2jq5AHE4l0m5hEQ/8vauaadaV6Rig03RaDMTNhQsLttn2EhHqY+X3Vi09fZuLsxQ6ctFn2fZ3NqSZLKp7maonEbMjAQd46NtmKuntwEGbzYzIVaVpYYjKI/xtGGCpGrjjCDHHi8X6x5qdfKRBYtAvk9FOwaMAn1Hw5StArWbfVLAXvY1ok4xaFbVqVqIhBMClwFKEAAAESQuUDYqDFZqVtXq/4fr56UQOFAFAK3N0z3Txb+17p1TCNJfVvWvz35LZzj8Zz79VIlSRdD0j6zj0OPK2BQfisWi13A5qpo/cvGvZOxf2vNNkqFPaS2N2Vsbt6tjkYDvvvdOjcw2y6ZpkqVVVZVUUtFmpyUWWNCtOJ4shO+7CR3E6URA6TFykd1ADamZJkB3d3rmOw6F4jazKsUzUN+T3nxqhzyh3qx4pwspSnZGTenE98n24zulbEnAgzTqJAWBYC1FVQJViHAhGgj98H///I2Gk2IyWKSIGwkGQkFwkFhIk68qHfyeeEFTyQQKALHxdRAdIoD4QfN9RmuCzV0ano4IIYQkMBLYw5UsuBOd2vYwha4Znoka6T10PtualGszgHPwKlU8/+2wLSGdRh5MxAWArV7MqAY9P+fe+LyuYpn2vqGL6trm2yLxwG13W2cJ3s/fjgpgSVnV3GJoCu4G1jsZoKqVJaCe5MV+y1hERS3hwy94k2xAv/net3ntB/4j9M5gQekdh6OsLB86SKxWRCBOqSBFMaviCl+H3ffUGS3jDY8VEFAbu8dbVHYZIwqCwkceRKV/R+66J0LASgAs+haA4Aw76UDgKJbIpkxhRvKizCNaix0SUwlxHjJCc1zDinkWRn3BKOykJBQt5hOOXyeSspyC6yjO0R11fRvvojZ1CjCkdKDAzBTQyKBreiARne+wEpYRim8EBgivVbR9XRhWqRtwZqMyOnLRchLUivXL0evSiKIQ8/EedgmCROhUA6RgN0PuXCiiNavaTJ78D2o6B7MxCmgroGewObQy5e20Vr4dFhy56RDX2fjofPSxrNBehgIBqIIa+T+l6HdgbanfByEaFFWOD2IyWKTEFwqRgoYhjQk3/Rp+uE4FwEKABLhUwjLPhLZq4TayevWHTW9Wr1waHfBDxqRl4D4dKUF9E9hoSxGo5/KSjwcvDFGCGRNjLKotWpO//S+xTc5SDJalVLHg/6HTKOCnO/NKkVhqfRxGsb0u4jWdKVUfz5b1E7gzwcYhZqTupGdbToNrUvFzgbHuZ2AVAOP2O7lMW7r4s+qBBiNGTzxXQ5vY7climkQHn2zy3M0KkNsoLj2yZFujsvyZoF13aFQfeJ25GGWUgI2wweyCSwudFsFCIu1nj7D6scDgEAKDArr2wfQrMgi+Fy5y/Fs1cjSMsi5NKRu9UIx5OXSgYxCkwR99kgj98ggDdSalWlfV/g4L5QVOsTVYTzzk+TGWrdDiZbKs3ld4n1BoVDKaYPhEUYVkSg+9wP1dfD6LR5yC7LwgU5wvcC+JdOUqms8TFBs9Q0Ob/sjAusvQyrjsZBJnPBlTQOSiwcrd8IpqFkI7oaBA3M84abyu3AUoE1Bk4UhJ7NXutUf8El2o7vwhGgj78H///IWwyWGSIKgsdEj+XK32D27HVxxgAABLHOJvCtjAbsqA6vfq46YbDRcLRAMj5B2lJnMiVSHjocCGH+H6dDaEUbRFMkrysRaKkNeMyq52F+q/JuyNFPVMPzpnhKkAz/7wjkGViMDc4VFIQIHb3ZQZw6PDkbVJCRcYkl3AEUEUANDM0oeFYol7QgzMIcjoCwFFUAwjkqMeszwNW40jpbVXI7PD69wiOkWvFerPV+QlR127inp+RwZbXHNMiV0mX4/HyswzrlSPOO9pVvMZ71+WlJSQBNyWut3h7GxLKJLDJWEkAho/4D+cccCUQJQAJZ2mTwkjQbgl4Drov1KDxKijrq06ABOLJIWM8SoDfRYMYW6GG7xoAvMItlphhOvvz0WpOf0P2HQNG4oL2q4Cpt4GTf45UioVRHlYk2Bux2AKFRLAIN3j3til3crhCfCLR69bYx20K2JIomzfmh3X2PB1JIRGm+Jg2+dE/Ixc4ZCOX51ZfWaVQ5cxEWlKmpg9QGhCms8XZimgIizxKkR8DC8Sv/gm5xBTkbzh3Pr6BbvwIRoI7xB7OXy1sMlhk7PILp/I5P6D+WJ7F89b1eXWcDChLy/QloYAzYoYfNDzjXJFUxgLAANaiZhy7GOFBfRPa9r2Ywz/5lUnmSKJDQyx25yy0NT1T1LhxCpiYvLGsKWyiI9JtWMvbXUC+RO5jABJmYPo10ED4OR2ikapTrZTr+dN+x9luN8+02c3kjEomW7zSWvup51yWYA1l+RpcZrXy1BdAEU5m6syGB1y68Nc+TfP48k3VNP+c6R1P5cWGMoH0H7dhyVyC8uz1c++mxe3d5klx2bJ3sncJbPJZdNfONtVwWroqCkYnel0kZ0BzcTg96EkpHbQCC3jIwoyAjLGx7FKULAmJAkDAWGgToXh4HTL11i93XG9MlRKjYqeGSglpKON9P+W6RoYusLfMwAOMSiSCXWKxPDinIBOndwUmrwxqz3T/+vS3jUS25axUbPH3o1raefpvMlDecmjWk+KVMeyAdyCYbkxHVsANzdNSMiGyTKCkVfenHcooJwDpj67gmFjNU0+geOug+WMoEgT7qKjFY6gvA5iGi88jFXvYgRQUaEro2njsxeESnoOymhCpV8qAKYwQDQRqJb0I3onQWTOQeL6yJX+vJ4BVTHKfTM1AwWOyjxJ1In3WsEiqVFMsOGnbuya+fvK2KstjYb4jFmeqVYJ7aym2UeNmXd+IRoO//i926x9idFiYlhdDOUJrhdtuTXW6OM4osq6rWKgEvKsxj8UIr37u4x2bey34cuAxhyqEjkLVTvaRgLsOKhIbvVLbASQW9czUVC+lNTnOGlJGzfVXoVMtTtt9zF7ZXTUz3VF3N3l3W2r12Wd4GBpc5JjOeblMxO5FKKgp1WDQFBQ74TaAUgMSNbbyC0KdQyE0S1TUcROxcgWZa8bnYgrDSQFTBkIIYINB0hLNzmGrvtvkWrDO2Qp1GCmQCUt6olVNQJSJuthTgE6EbAMErCbpOo7NnQ5seQzrbS8mV9M1VE5MU63g00KN/Hq7EI8nzLrZZ8V93OOvUQCPsansREsSCgSDgKCgTGgKBYKBcGrDweQkzzVWm9MXUq+eMEzEihcLj95i+eM4RfP22CSWRTBI8C5pneFmkYDuDZ12GSMgsK1hrQ4xg4einiWJRnGAHWrgEvpNLAHPkdozM7LvwVtukei8FxaE4UVpyiQ+Oyem/N7ZxcN/20eYuPitICE85F0MJJ4JThIkvEq1qzYG3hR11awmeUbnNwcEQinIorJnRHOuKUr65E/b7CuXUlcI9LsF9pgcqC8rtk6T5V3rAyX6K+NlJxPgtVVCpIUtLT4SjXiFNSqC16Z46ntA4yriETRbbyoqEYp3r1TNvp51t/Gl659bvwhGhRFlYtiYlhYcBYaGZKhBoPR1d0sQVaoIKAkOmRhz4jkRbRzgzGjTzWc+I4GmYPWfiTK3nSsAHyCKnlHfSt60uyNDwXoqa2BzgKGaFcxvWE0QA6hQHDOiFJainWQQ4rUP7V0glyb5LxCrpoHvvoBYPCFcctCUE4/8J2XmaZK3hY0ECA+Lz9H92PsciSRWMjdYs9NgziT3tDjU00xiYDFeE60wVwQAPZSriCK7WHSBIyO72LcU8oDSrGCex5r+CzXyQLtC3TyRXBWB33QbtQRWmVijLaQ23k4ZlPah2O4VFGt44ot8NyCIsZGsYkgLWMIb6pRwBd4tKSgSquqBIZPvsV0u4CtKrjnhFOi5GwYJJ3RSWwwdBCRLwv24SMH9ewRFRTEUpWFretjNRk3IgoaqTVz5WhWglCUusioRtKs2dmNVZKiSxSbLORpLFI0QAwN1QnK65nPmNx2Q5xesHWkBeMXo2k0FbQApmM58iORRECfi5izmIuQ5znYUK5FbfK4kklyBdD2AyizuwVSXRK0E2BIypEYwMzJLFIvSMEKmBODsUNEyxYwETrY2gIGIjI5j5Eiw0XtgyjIBFTc8Pp3bjghGhQ9ihFjYdBaCHAQFpS7CggFQBAgrPznO+HU4MWDUxhEngvuwAUSYeeLrr2a1VEKZx0Yj4HD7laJEogVFr8zqrAbojZPQ4z9V10sHDH96pTvtZ4eRZykhQJgfKvxkBFJgWBeEKcQMaII/SigpQYHNBwEEwhBXa3UnIaqoZWsMGYDmOWzNtokRWEgJSMllAJAK8rwMLaJG+LXGBG6Tqb7aKoapzNkJN2v4+uspoXomgSEAAczaTfM7ga0fR9zokgE4gwb+k/12kn5jxLSutL2YF8xtXNWxdrchWuAJTvD2JUWISQFiINmIQAGL4DrkWKgFIFmCmc2g88+fPHlqrBAB7+lE8BgbFlKgBiTj7M7pCMPgyI5OCGCQmKzrQSgkV8ca5EHyLHt+Kh9APUrLAz5qXMJDQsDCy6aWV82Aicrzi5ocr3U+0AtR7IatFe26g3rCqSsNEhMUWXICUshQZwNQPbMMBlYySm4OhLQTmlxWiqoYFVSIAaCSxrpgU4rCUglct7LaCwLWwIsNBKqktGTSTZcm+DQLMg+riPttNf9gJF0l/lR86H9N1Ox1uf+gFC/W78hGhQ1ihEiYqIYJBYKEYSGCpeK2vhKRnAVKRGWOQRu1yA8D+x/NRe94rS178YwI4qZoD3r9j759PdF/gilKoLfwtaXKap7rtY29dp7srocBXqD7pd554++DSmqMtYd3e0al0mm5l4uZOl8wog37m8XeNCc7lTKwiQNqMzPm9Ld2oAuHxOm9LuROd2ak97lMBnxePslqa4T6qzVzFTqwLJSIaj0xCMRkjVNdkmEvo2ki3fBMSAAel4PH9eU+VCvc07fICtLcOh4LfbOORavbs8/kiLotbu+goc5KUbu8HY2Io7Ej2Cg2OggNoBYQqyZYBgEcAWfFXDOosKfbYfGYmNToNAzt0ZGlE1WsmBwMbqdKMqRfpkITR2OqdWCpVMaXTpay0xdQs3NExg2j4G+3e8co3+B8khh6SuM8XfCSDis0r0EAeXXXn3KUprBDwCCQem/qv5/nwyPkHlau60GaF7gBIAZxh6rxF2mdb5JFnxNZJwK2BujWdSCcVIq0EgODoZ3CgcphaUZCeMJHVbUNhWhpkJzY0CLYERSwdJC7XJWF25yUexFYoLqnfgAAAONbW9vdgAAAGxtdmhkAAAAANfIAsvXyALLAAAD6AAAAH8AAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAfp0cmFrAAAAXHRraGQAAAAB18gCy9fIAssAAAABAAAAAAAAAH8AAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAOdGdhcwAAAAAAAAAAAYhtZGlhAAAAIG1kaGQAAAAA18gCy9fIAssAALuAAAAoAFXEAAAAAAAxaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAENvcmUgTWVkaWEgQXVkaW8AAAABL21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA83N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAQAEgICAFEAVAAAAAAI2cgACNnIFgICAAhGQBoCAgAECAAAAGHN0dHMAAAAAAAAAAQAAAAoAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAAKAAAAAQAAADxzdHN6AAAAAAAAAAAAAAAKAAAB7gAAAXUAAAG7AAABkwAAAaUAAAH+AAAB9wAAAcIAAAGzAAABqgAAABRzdGNvAAAAAAAAAAEAAAAsAAABH3VkdGEAAAEXbWV0YQAAAAAAAAAiaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAAA6Wlsc3QAAAC8LS0tLQAAABxtZWFuAAAAAGNvbS5hcHBsZS5pVHVuZXMAAAAUbmFtZQAAAABpVHVuU01QQgAAAIRkYXRhAAAAAQAAAAAgMDAwMDAwMDAgMDAwMDBDNDAgMDAwMDAzRUYgMDAwMDAwMDAwMDAwMTdEMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ny40MS4xMDA=");
|
|
102134
|
+
soundNextAudio.onerror = function() {
|
|
102135
|
+
soundNextAudioDoesNotExist = true;
|
|
102136
|
+
};
|
|
102137
|
+
soundNextAudio.onended = function() {
|
|
102138
|
+
if (soundNextColdPlay) return;
|
|
102139
|
+
setTimeout(function() {
|
|
102140
|
+
alanAudio.skipExternalSounds(false);
|
|
102141
|
+
}, 100);
|
|
102142
|
+
};
|
|
102143
|
+
soundNextAudio.onplay = function() {
|
|
102144
|
+
if (soundNextColdPlay) return;
|
|
102145
|
+
alanAudio.skipExternalSounds(true);
|
|
102146
|
+
};
|
|
102147
|
+
}
|
|
102070
102148
|
var btnBgDefault = document.createElement("div");
|
|
102071
102149
|
var btnBgListening = document.createElement("div");
|
|
102072
102150
|
var btnBgSpeaking = document.createElement("div");
|
|
@@ -102842,7 +102920,9 @@ code.hljs {
|
|
|
102842
102920
|
hidePopup(null);
|
|
102843
102921
|
sendFirstClickEvent();
|
|
102844
102922
|
if (state === "default") {
|
|
102845
|
-
|
|
102923
|
+
if (!uiState10.textChat.available) {
|
|
102924
|
+
coldPlayForSoundNext();
|
|
102925
|
+
}
|
|
102846
102926
|
}
|
|
102847
102927
|
let continueWithAudio = true;
|
|
102848
102928
|
if (uiState10.textChat.available) {
|
|
@@ -103258,6 +103338,7 @@ code.hljs {
|
|
|
103258
103338
|
}
|
|
103259
103339
|
}
|
|
103260
103340
|
} else {
|
|
103341
|
+
initButtonSounds();
|
|
103261
103342
|
uiState10.textChat.available = false;
|
|
103262
103343
|
hideTextChat();
|
|
103263
103344
|
}
|
|
@@ -103382,16 +103463,13 @@ ${getSavedDialogId() || "-"} (prev. dialog)`);
|
|
|
103382
103463
|
}
|
|
103383
103464
|
console.info(`Alan: curDialogId:
|
|
103384
103465
|
${curDialogId}`);
|
|
103385
|
-
|
|
103386
|
-
if (!isTutorMode()) {
|
|
103387
|
-
sendSyncPageState();
|
|
103466
|
+
sendSyncPageState(null, "onConnectStatusChange");
|
|
103388
103467
|
}
|
|
103389
103468
|
}
|
|
103390
103469
|
if (options.onConnectionStatus) {
|
|
103391
103470
|
options.onConnectionStatus(res);
|
|
103392
103471
|
}
|
|
103393
103472
|
isMsgTypingInProcess = false;
|
|
103394
|
-
sendSyncPageState(true);
|
|
103395
103473
|
}
|
|
103396
103474
|
function onMicAllowed() {
|
|
103397
103475
|
sendClientEvent({ micAllowed: true });
|
|
@@ -103637,14 +103715,6 @@ ${curDialogId}`);
|
|
|
103637
103715
|
options.onEvent(Object.assign(e, { name: "scripts" }));
|
|
103638
103716
|
}
|
|
103639
103717
|
}
|
|
103640
|
-
function playSoundOn() {
|
|
103641
|
-
if (!soundOnAudioDoesNotExist) {
|
|
103642
|
-
soundOnAudio.currentTime = 0;
|
|
103643
|
-
soundOnAudio.play().catch(function() {
|
|
103644
|
-
console.log("No activation sound, because the user didn't interact with the button");
|
|
103645
|
-
});
|
|
103646
|
-
}
|
|
103647
|
-
}
|
|
103648
103718
|
function playSoundOff() {
|
|
103649
103719
|
if (!soundOffAudioDoesNotExist) {
|
|
103650
103720
|
soundOffAudio.currentTime = 0;
|
|
@@ -104118,8 +104188,7 @@ ${LEARN_MORE_LABEL}
|
|
|
104118
104188
|
}
|
|
104119
104189
|
const { isNew, msgInd, replaceLoader, updateExistingResponse, skipUpdating } = processMessageForChat(msg, textChatMessages);
|
|
104120
104190
|
if (skipUpdating) {
|
|
104121
|
-
|
|
104122
|
-
if (!allow) return;
|
|
104191
|
+
return;
|
|
104123
104192
|
}
|
|
104124
104193
|
if (isNew) {
|
|
104125
104194
|
var div = document.createElement("div");
|
|
@@ -104485,6 +104554,7 @@ ${LEARN_MORE_LABEL}
|
|
|
104485
104554
|
_sendText(text3);
|
|
104486
104555
|
textareaHolderEl.classList.add("alan-btn__inactive");
|
|
104487
104556
|
textChatScrollPosition = null;
|
|
104557
|
+
sendSyncPageState();
|
|
104488
104558
|
}, 1e3);
|
|
104489
104559
|
function getMsgElForMathJax(msgInd) {
|
|
104490
104560
|
const msgEl = document.getElementById("msg-" + msgInd);
|
|
@@ -104704,8 +104774,12 @@ ${LEARN_MORE_LABEL}
|
|
|
104704
104774
|
}
|
|
104705
104775
|
function decryptMessage(encryptedMessage, encryptKey) {
|
|
104706
104776
|
const key = import_sjcl.default.codec.hex.fromBits(import_sjcl.default.hash.sha256.hash(encryptKey || (uiState10.userInfo?.userId || "default")));
|
|
104707
|
-
|
|
104708
|
-
|
|
104777
|
+
try {
|
|
104778
|
+
const decrypted = import_sjcl.default.decrypt(key, JSON.parse(atob(encryptedMessage)));
|
|
104779
|
+
return decrypted;
|
|
104780
|
+
} catch (e) {
|
|
104781
|
+
return null;
|
|
104782
|
+
}
|
|
104709
104783
|
}
|
|
104710
104784
|
function restoreSentMessages() {
|
|
104711
104785
|
let messages = [];
|
|
@@ -104775,11 +104849,11 @@ ${LEARN_MORE_LABEL}
|
|
|
104775
104849
|
}
|
|
104776
104850
|
}
|
|
104777
104851
|
let isMsgTypingInProcess = false;
|
|
104778
|
-
function sendSyncPageState(forceUpdate = false) {
|
|
104852
|
+
function sendSyncPageState(forceUpdate = false, reason) {
|
|
104779
104853
|
if (!isMsgTypingInProcess) {
|
|
104780
104854
|
syncPageState(function() {
|
|
104781
104855
|
isMsgTypingInProcess = true;
|
|
104782
|
-
}, forceUpdate);
|
|
104856
|
+
}, forceUpdate, reason);
|
|
104783
104857
|
setTimeout(() => {
|
|
104784
104858
|
isMsgTypingInProcess = false;
|
|
104785
104859
|
}, 2e3);
|