ttp-agent-sdk 2.47.2 → 2.48.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/agent-widget.dev.js +198 -64
- package/dist/agent-widget.esm.js +1 -1
- package/dist/agent-widget.js +1 -1
- package/dist/demos/index.html +19 -0
- package/dist/demos/rimon-trips.html +415 -0
- package/dist/examples/rimon-trips.html +415 -0
- package/dist/examples/test-index.html +19 -0
- package/examples/rimon-trips.html +415 -0
- package/examples/test-index.html +19 -0
- package/package.json +1 -1
package/dist/agent-widget.dev.js
CHANGED
|
@@ -11994,7 +11994,7 @@ var TextChatSDK = /*#__PURE__*/function (_EventEmitter) {
|
|
|
11994
11994
|
|
|
11995
11995
|
// SDK build time for debugging
|
|
11996
11996
|
if (true) {
|
|
11997
|
-
helloMessage.lastBuildTime = "2026-
|
|
11997
|
+
helloMessage.lastBuildTime = "2026-08-02T10:38:16.158Z";
|
|
11998
11998
|
}
|
|
11999
11999
|
try {
|
|
12000
12000
|
this.ws.send(JSON.stringify(helloMessage));
|
|
@@ -21253,8 +21253,8 @@ var VoiceSDK = _v2_VoiceSDK_js__WEBPACK_IMPORTED_MODULE_0__["default"];
|
|
|
21253
21253
|
|
|
21254
21254
|
|
|
21255
21255
|
// Version - injected at build time from package.json via webpack DefinePlugin
|
|
21256
|
-
var VERSION = "2.
|
|
21257
|
-
var BUILD_TIME = "2026-
|
|
21256
|
+
var VERSION = "2.48.0";
|
|
21257
|
+
var BUILD_TIME = "2026-08-02T10:38:16.158Z";
|
|
21258
21258
|
console.log("%c TTP Agent SDK v".concat(VERSION, " (").concat(BUILD_TIME, ") "), 'background: #4f46e5; color: white; font-size: 12px; font-weight: bold; padding: 2px 6px; border-radius: 4px;');
|
|
21259
21259
|
|
|
21260
21260
|
// Named exports
|
|
@@ -28880,7 +28880,7 @@ var VoiceSDK_v2 = /*#__PURE__*/function (_EventEmitter) {
|
|
|
28880
28880
|
// iOS in-app webviews lack "Safari" in the UA (real Safari always has it).
|
|
28881
28881
|
var webview = isAndroid && (/\bwv\b/.test(ua) || /Version\/[\d.]+.*Chrome/.test(ua)) || isIos && !/Safari/i.test(ua) || false;
|
|
28882
28882
|
var env = {
|
|
28883
|
-
sdkVersion: true ? "2.
|
|
28883
|
+
sdkVersion: true ? "2.48.0" : 0,
|
|
28884
28884
|
ua: ua,
|
|
28885
28885
|
platform: (uaData === null || uaData === void 0 ? void 0 : uaData.platform) || navigator.platform || '',
|
|
28886
28886
|
mobile: (_uaData$mobile = uaData === null || uaData === void 0 ? void 0 : uaData.mobile) !== null && _uaData$mobile !== void 0 ? _uaData$mobile : isAndroid || isIos,
|
|
@@ -28895,7 +28895,7 @@ var VoiceSDK_v2 = /*#__PURE__*/function (_EventEmitter) {
|
|
|
28895
28895
|
} catch (e) {
|
|
28896
28896
|
console.warn('⚠️ VoiceSDK v2: Failed to build client env:', e);
|
|
28897
28897
|
return {
|
|
28898
|
-
sdkVersion: true ? "2.
|
|
28898
|
+
sdkVersion: true ? "2.48.0" : 0
|
|
28899
28899
|
};
|
|
28900
28900
|
}
|
|
28901
28901
|
}
|
|
@@ -29036,7 +29036,7 @@ var VoiceSDK_v2 = /*#__PURE__*/function (_EventEmitter) {
|
|
|
29036
29036
|
|
|
29037
29037
|
// Include SDK build time for debugging
|
|
29038
29038
|
if (true) {
|
|
29039
|
-
helloMessage.lastBuildTime = "2026-
|
|
29039
|
+
helloMessage.lastBuildTime = "2026-08-02T10:38:16.158Z";
|
|
29040
29040
|
}
|
|
29041
29041
|
|
|
29042
29042
|
// Client environment (device/browser/webview) for backend logs + Langfuse metadata
|
|
@@ -34455,14 +34455,15 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
34455
34455
|
fontSize: ((_userConfig$text0 = userConfig.text) === null || _userConfig$text0 === void 0 || (_userConfig$text0 = _userConfig$text0.sendButtonHint) === null || _userConfig$text0 === void 0 ? void 0 : _userConfig$text0.fontSize) || ((_userConfig$panel20 = userConfig.panel) === null || _userConfig$panel20 === void 0 || (_userConfig$panel20 = _userConfig$panel20.sendButtonHint) === null || _userConfig$panel20 === void 0 ? void 0 : _userConfig$panel20.fontSize) || '14px'
|
|
34456
34456
|
}, (_userConfig$text1 = userConfig.text) === null || _userConfig$text1 === void 0 ? void 0 : _userConfig$text1.sendButtonHint), (_userConfig$panel21 = userConfig.panel) === null || _userConfig$panel21 === void 0 ? void 0 : _userConfig$panel21.sendButtonHint),
|
|
34457
34457
|
// Input field configuration
|
|
34458
|
-
inputPlaceholder: ((_userConfig$text10 = userConfig.text) === null || _userConfig$text10 === void 0 ? void 0 : _userConfig$text10.inputPlaceholder) || ((_userConfig$panel22 = userConfig.panel) === null || _userConfig$panel22 === void 0 ? void 0 : _userConfig$panel22.inputPlaceholder)
|
|
34458
|
+
inputPlaceholder: ((_userConfig$text10 = userConfig.text) === null || _userConfig$text10 === void 0 ? void 0 : _userConfig$text10.inputPlaceholder) || userConfig.inputPlaceholder || ((_userConfig$panel22 = userConfig.panel) === null || _userConfig$panel22 === void 0 ? void 0 : _userConfig$panel22.inputPlaceholder),
|
|
34459
34459
|
inputBorderColor: ((_userConfig$text11 = userConfig.text) === null || _userConfig$text11 === void 0 ? void 0 : _userConfig$text11.inputBorderColor) || ((_userConfig$panel23 = userConfig.panel) === null || _userConfig$panel23 === void 0 ? void 0 : _userConfig$panel23.inputBorderColor) || '#E5E7EB',
|
|
34460
34460
|
inputFocusColor: ((_userConfig$text12 = userConfig.text) === null || _userConfig$text12 === void 0 ? void 0 : _userConfig$text12.inputFocusColor) || ((_userConfig$panel24 = userConfig.panel) === null || _userConfig$panel24 === void 0 ? void 0 : _userConfig$panel24.inputFocusColor) || textChatAccent,
|
|
34461
34461
|
inputBackgroundColor: ((_userConfig$text13 = userConfig.text) === null || _userConfig$text13 === void 0 ? void 0 : _userConfig$text13.inputBackgroundColor) || ((_userConfig$panel25 = userConfig.panel) === null || _userConfig$panel25 === void 0 ? void 0 : _userConfig$panel25.inputBackgroundColor) || '#FFFFFF',
|
|
34462
34462
|
inputTextColor: ((_userConfig$text14 = userConfig.text) === null || _userConfig$text14 === void 0 ? void 0 : _userConfig$text14.inputTextColor) || ((_userConfig$panel26 = userConfig.panel) === null || _userConfig$panel26 === void 0 ? void 0 : _userConfig$panel26.inputTextColor) || '#1F2937',
|
|
34463
|
+
// >= 16px so iOS Safari does not auto-zoom the host page when the composer is focused
|
|
34463
34464
|
inputFontSize: ((_userConfig$text15 = userConfig.text) === null || _userConfig$text15 === void 0 ? void 0 : _userConfig$text15.inputFontSize) || ((_userConfig$panel27 = userConfig.panel) === null || _userConfig$panel27 === void 0 ? void 0 : _userConfig$panel27.inputFontSize) || '16px',
|
|
34464
34465
|
inputBorderRadius: ((_userConfig$text16 = userConfig.text) === null || _userConfig$text16 === void 0 ? void 0 : _userConfig$text16.inputBorderRadius) || ((_userConfig$panel28 = userConfig.panel) === null || _userConfig$panel28 === void 0 ? void 0 : _userConfig$panel28.inputBorderRadius) || 20,
|
|
34465
|
-
inputPadding: ((_userConfig$text17 = userConfig.text) === null || _userConfig$text17 === void 0 ? void 0 : _userConfig$text17.inputPadding) || ((_userConfig$panel29 = userConfig.panel) === null || _userConfig$panel29 === void 0 ? void 0 : _userConfig$panel29.inputPadding) || '
|
|
34466
|
+
inputPadding: ((_userConfig$text17 = userConfig.text) === null || _userConfig$text17 === void 0 ? void 0 : _userConfig$text17.inputPadding) || ((_userConfig$panel29 = userConfig.panel) === null || _userConfig$panel29 === void 0 ? void 0 : _userConfig$panel29.inputPadding) || '9px 12px',
|
|
34466
34467
|
/** When true (default), text chat uses the same hero gradient, primary, and bubble treatment as the voice UI. Set false for a light, panel-solid transcript. */
|
|
34467
34468
|
useVoiceTheme: ((_userConfig$text18 = userConfig.text) === null || _userConfig$text18 === void 0 ? void 0 : _userConfig$text18.useVoiceTheme) !== false
|
|
34468
34469
|
}, userConfig.text)
|
|
@@ -34572,7 +34573,7 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
34572
34573
|
agentTextColor: ((_userConfig$messages8 = userConfig.messages) === null || _userConfig$messages8 === void 0 ? void 0 : _userConfig$messages8.agentTextColor) || ((_userConfig$messages9 = userConfig.messages) === null || _userConfig$messages9 === void 0 ? void 0 : _userConfig$messages9.textColor) || '#1F2937',
|
|
34573
34574
|
userAvatarIcon: ((_userConfig$messages0 = userConfig.messages) === null || _userConfig$messages0 === void 0 ? void 0 : _userConfig$messages0.userAvatarIcon) || '👤',
|
|
34574
34575
|
agentAvatarIcon: ((_userConfig$messages1 = userConfig.messages) === null || _userConfig$messages1 === void 0 ? void 0 : _userConfig$messages1.agentAvatarIcon) || '🤖',
|
|
34575
|
-
fontSize: ((_userConfig$messages10 = userConfig.messages) === null || _userConfig$messages10 === void 0 ? void 0 : _userConfig$messages10.fontSize) || '
|
|
34576
|
+
fontSize: ((_userConfig$messages10 = userConfig.messages) === null || _userConfig$messages10 === void 0 ? void 0 : _userConfig$messages10.fontSize) || '12px',
|
|
34576
34577
|
borderRadius: ((_userConfig$messages11 = userConfig.messages) === null || _userConfig$messages11 === void 0 ? void 0 : _userConfig$messages11.borderRadius) || 16
|
|
34577
34578
|
}, userConfig.messages),
|
|
34578
34579
|
// Animation Configuration
|
|
@@ -35081,7 +35082,7 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
35081
35082
|
return;
|
|
35082
35083
|
}
|
|
35083
35084
|
this._ensureAboutStyles();
|
|
35084
|
-
var version = true ? "2.
|
|
35085
|
+
var version = true ? "2.48.0" : 0;
|
|
35085
35086
|
var convId = this._getLastConversationId();
|
|
35086
35087
|
var t = function t(k, fb) {
|
|
35087
35088
|
try {
|
|
@@ -35528,9 +35529,9 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
35528
35529
|
return _this0.showText();
|
|
35529
35530
|
};
|
|
35530
35531
|
}
|
|
35531
|
-
var
|
|
35532
|
-
if (
|
|
35533
|
-
|
|
35532
|
+
var textUnifiedHomeBtn = this.shadowRoot.getElementById('textUnifiedHomeBtn');
|
|
35533
|
+
if (textUnifiedHomeBtn) {
|
|
35534
|
+
textUnifiedHomeBtn.onclick = function () {
|
|
35534
35535
|
var _this0$config$behavio;
|
|
35535
35536
|
var widgetMode = ((_this0$config$behavio = _this0.config.behavior) === null || _this0$config$behavio === void 0 ? void 0 : _this0$config$behavio.mode) || 'unified';
|
|
35536
35537
|
if (widgetMode !== 'unified') return;
|
|
@@ -35538,6 +35539,12 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
35538
35539
|
_this0._openMobileCallTextLanding();
|
|
35539
35540
|
};
|
|
35540
35541
|
}
|
|
35542
|
+
var textUnifiedCloseBtn = this.shadowRoot.getElementById('textUnifiedCloseBtn');
|
|
35543
|
+
if (textUnifiedCloseBtn) {
|
|
35544
|
+
textUnifiedCloseBtn.onclick = function () {
|
|
35545
|
+
return _this0._doTogglePanel();
|
|
35546
|
+
};
|
|
35547
|
+
}
|
|
35541
35548
|
|
|
35542
35549
|
// Build wave bars inside the orb (desktop active call)
|
|
35543
35550
|
var waveQueryRoot = this.config.useShadowDOM ? this.shadowRoot : document.getElementById('ttp-widget-container');
|
|
@@ -37449,13 +37456,22 @@ var TTPChatWidget = /*#__PURE__*/function () {
|
|
|
37449
37456
|
"use strict";
|
|
37450
37457
|
__webpack_require__.r(__webpack_exports__);
|
|
37451
37458
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
37452
|
-
/* harmony export */
|
|
37459
|
+
/* harmony export */ MESSAGE_COLLAPSE_THRESHOLD: () => (/* binding */ MESSAGE_COLLAPSE_THRESHOLD),
|
|
37460
|
+
/* harmony export */ TextInterface: () => (/* binding */ TextInterface),
|
|
37461
|
+
/* harmony export */ collapseMessageText: () => (/* binding */ collapseMessageText),
|
|
37462
|
+
/* harmony export */ messageInlineOrder: () => (/* binding */ messageInlineOrder),
|
|
37463
|
+
/* harmony export */ resolveInputTextDirection: () => (/* binding */ resolveInputTextDirection),
|
|
37464
|
+
/* harmony export */ resolveMessageTextDirection: () => (/* binding */ resolveMessageTextDirection)
|
|
37453
37465
|
/* harmony export */ });
|
|
37454
37466
|
/* harmony import */ var _galleryHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./galleryHandler.js */ "./src/widget/galleryHandler.js");
|
|
37455
37467
|
/* harmony import */ var _markdown_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./markdown.js */ "./src/widget/markdown.js");
|
|
37456
37468
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
37457
37469
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n2 = 0, F = function F() {}; return { s: F, n: function n() { return _n2 >= r.length ? { done: !0 } : { done: !1, value: r[_n2++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
37470
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
37471
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
37458
37472
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
37473
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
37474
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
37459
37475
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
37460
37476
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
37461
37477
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
@@ -37513,9 +37529,32 @@ function rgbTupleFromChromeColor(color, fallbackTuple) {
|
|
|
37513
37529
|
/** Textarea single-line height and max auto-grow (px); keep in sync with `.message-input` CSS. */
|
|
37514
37530
|
var TEXT_INPUT_MIN_HEIGHT_PX = 36;
|
|
37515
37531
|
var TEXT_INPUT_MAX_HEIGHT_PX = 132;
|
|
37532
|
+
var MESSAGE_COLLAPSE_THRESHOLD = 353;
|
|
37516
37533
|
|
|
37517
37534
|
/** How often a streaming agent bubble is re-rendered from its markdown buffer (ms). */
|
|
37518
37535
|
var STREAM_RENDER_INTERVAL_MS = 40;
|
|
37536
|
+
function collapseMessageText(text) {
|
|
37537
|
+
if (text.length <= MESSAGE_COLLAPSE_THRESHOLD) return text;
|
|
37538
|
+
return "".concat(text.slice(0, MESSAGE_COLLAPSE_THRESHOLD).trimEnd(), "\u2026");
|
|
37539
|
+
}
|
|
37540
|
+
|
|
37541
|
+
/** Uses the first strong character so typed text can override the empty-field locale. */
|
|
37542
|
+
function resolveInputTextDirection(text) {
|
|
37543
|
+
var _String$match;
|
|
37544
|
+
var fallbackDirection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ltr';
|
|
37545
|
+
var firstLetter = (_String$match = String(text).match(/(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDB0-\uDDDB\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2\uDFF3]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/)) === null || _String$match === void 0 ? void 0 : _String$match[0];
|
|
37546
|
+
if (!firstLetter) return fallbackDirection === 'rtl' ? 'rtl' : 'ltr';
|
|
37547
|
+
return /[\u0590-\u08FF]/.test(firstLetter) ? 'rtl' : 'ltr';
|
|
37548
|
+
}
|
|
37549
|
+
function resolveMessageTextDirection(text) {
|
|
37550
|
+
var fallbackDirection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ltr';
|
|
37551
|
+
return resolveInputTextDirection(text, fallbackDirection);
|
|
37552
|
+
}
|
|
37553
|
+
|
|
37554
|
+
/** Keeps the fixed, physical metadata area on the bubble's right edge. */
|
|
37555
|
+
function messageInlineOrder(direction) {
|
|
37556
|
+
return ['content', 'spacer'];
|
|
37557
|
+
}
|
|
37519
37558
|
|
|
37520
37559
|
/** Resolves voice primary / gradient strings to #rrggbb for CSS hex+alpha suffixes. */
|
|
37521
37560
|
function firstHexFromVoiceColor(c, fallback) {
|
|
@@ -37537,6 +37576,7 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37537
37576
|
this.config = config;
|
|
37538
37577
|
this.sdk = sdk;
|
|
37539
37578
|
this.streamingEl = null;
|
|
37579
|
+
this.streamingBubble = null;
|
|
37540
37580
|
this.hasStartedStreaming = false;
|
|
37541
37581
|
this.isActive = false;
|
|
37542
37582
|
// Shadow root reference for DOM queries
|
|
@@ -37559,6 +37599,11 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37559
37599
|
var translations = ((_this$config$translat = this.config.translations) === null || _this$config$translat === void 0 ? void 0 : _this$config$translat[lang]) || ((_this$config$translat2 = this.config.translations) === null || _this$config$translat2 === void 0 ? void 0 : _this$config$translat2.en) || {};
|
|
37560
37600
|
return translations[key] || key;
|
|
37561
37601
|
}
|
|
37602
|
+
}, {
|
|
37603
|
+
key: "textDirection",
|
|
37604
|
+
get: function get() {
|
|
37605
|
+
return this.config.direction === 'rtl' ? 'rtl' : 'ltr';
|
|
37606
|
+
}
|
|
37562
37607
|
|
|
37563
37608
|
/**
|
|
37564
37609
|
* Generate HTML for text interface
|
|
@@ -37566,13 +37611,18 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37566
37611
|
}, {
|
|
37567
37612
|
key: "generateHTML",
|
|
37568
37613
|
value: function generateHTML() {
|
|
37569
|
-
var _this$config$panel, _this$config$
|
|
37614
|
+
var _this$config$panel, _this$config$header, _this$config$sendButt, _this$config$panel2, _this$config$sendButt2, _this$config$panel3, _this$config$sendButt3, _this$config$panel4, _this$config$sendButt4, _this$config$panel5;
|
|
37570
37615
|
// Use text config, fallback to panel config, then translation, then default
|
|
37571
37616
|
var inputPlaceholder = this.config.inputPlaceholder || ((_this$config$panel = this.config.panel) === null || _this$config$panel === void 0 ? void 0 : _this$config$panel.inputPlaceholder) || this.t('typeMessage') || 'Type your message...';
|
|
37572
|
-
var
|
|
37573
|
-
var
|
|
37574
|
-
var
|
|
37575
|
-
|
|
37617
|
+
var textDirection = this.textDirection;
|
|
37618
|
+
var agentName = this.config.agentName || ((_this$config$header = this.config.header) === null || _this$config$header === void 0 ? void 0 : _this$config$header.title) || 'Chat Assistant';
|
|
37619
|
+
var agentInitial = agentName.trim().charAt(0).toUpperCase();
|
|
37620
|
+
var footer = this.config.footer || {};
|
|
37621
|
+
var isSpeacart = footer.brand === 'speacart';
|
|
37622
|
+
var brandName = isSpeacart ? 'SpeaCart' : 'TalkToPC';
|
|
37623
|
+
var brandUrl = isSpeacart ? 'https://speacart.com' : 'https://talktopc.com';
|
|
37624
|
+
var backBar = "\n <div class=\"text-interface-top-bar\" dir=\"".concat(textDirection, "\">\n <div class=\"text-interface-agent-heading\">\n <span class=\"text-interface-agent-avatar\" aria-hidden=\"true\">\n <span class=\"text-interface-agent-initial\">").concat(agentInitial, "</span>\n </span>\n <span class=\"text-interface-agent-copy\" dir=\"").concat(textDirection, "\">\n <span class=\"text-interface-agent-name\">").concat(agentName, "</span>\n <span class=\"text-interface-agent-status\"><span aria-hidden=\"true\"></span>").concat(this.t('online'), "</span>\n </span>\n </div>\n <div class=\"text-interface-top-actions\">\n <button type=\"button\" class=\"text-interface-close-btn\" id=\"textUnifiedCloseBtn\" aria-label=\"").concat(this.t('close'), "\" title=\"").concat(this.t('close'), "\">\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m6 6 12 12M18 6 6 18\"/></svg>\n </button>\n </div>\n </div>");
|
|
37625
|
+
return "<div class=\"text-interface\" id=\"textInterface\" dir=\"".concat(textDirection, "\">\n ").concat(backBar, "\n <div class=\"messages-container\" id=\"messagesContainer\">\n <div class=\"empty-state\">\n <div class=\"empty-state-icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M20 11.5a7.5 7.5 0 0 1-7.75 7.5 8.9 8.9 0 0 1-3.5-.72L4 20l1.55-4.1A7.2 7.2 0 0 1 4.5 12 7.5 7.5 0 0 1 12.25 4.5 7.5 7.5 0 0 1 20 11.5Z\"/>\n <path d=\"M8.6 11.8h.01M12.1 11.8h.01M15.6 11.8h.01\" stroke-width=\"2.4\"/>\n </svg>\n </div>\n <div class=\"empty-state-title\">").concat(this.t('hello'), "</div>\n <div class=\"empty-state-text\">").concat(this.t('sendMessage'), "</div>\n </div>\n </div>\n <div class=\"input-container\">\n <button type=\"button\" class=\"text-interface-home-btn\" id=\"textUnifiedHomeBtn\" aria-label=\"").concat(this.t('home'), "\" title=\"").concat(this.t('home'), "\">\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 10.5 12 4l7.5 6.5v8.25a1.25 1.25 0 0 1-1.25 1.25h-4.5v-5.75h-3.5V20h-4.5a1.25 1.25 0 0 1-1.25-1.25V10.5Z\"/></svg>\n </button>\n <div class=\"input-wrapper\" style=\"flex:1;\">\n <textarea class=\"message-input\" id=\"messageInput\" placeholder=\"").concat(inputPlaceholder, "\" rows=\"1\" dir=\"").concat(textDirection, "\"></textarea>\n </div>\n <button class=\"send-button\" id=\"sendButton\" aria-label=\"").concat(this.t('sendMessageAria'), "\">\n <svg class=\"send-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m21 3-7.8 18-3.6-7.8L3 9.6 21 3Z\"/><path d=\"m9.6 13.2 4.2-3.6\"/></svg>\n </button>\n ").concat((_this$config$sendButt = this.config.sendButtonHint) !== null && _this$config$sendButt !== void 0 && _this$config$sendButt.text || (_this$config$panel2 = this.config.panel) !== null && _this$config$panel2 !== void 0 && (_this$config$panel2 = _this$config$panel2.sendButtonHint) !== null && _this$config$panel2 !== void 0 && _this$config$panel2.text ? "\n <div class=\"send-button-hint\" style=\"color: ".concat(((_this$config$sendButt2 = this.config.sendButtonHint) === null || _this$config$sendButt2 === void 0 ? void 0 : _this$config$sendButt2.color) || ((_this$config$panel3 = this.config.panel) === null || _this$config$panel3 === void 0 || (_this$config$panel3 = _this$config$panel3.sendButtonHint) === null || _this$config$panel3 === void 0 ? void 0 : _this$config$panel3.color) || '#6B7280', "; font-size: ").concat(((_this$config$sendButt3 = this.config.sendButtonHint) === null || _this$config$sendButt3 === void 0 ? void 0 : _this$config$sendButt3.fontSize) || ((_this$config$panel4 = this.config.panel) === null || _this$config$panel4 === void 0 || (_this$config$panel4 = _this$config$panel4.sendButtonHint) === null || _this$config$panel4 === void 0 ? void 0 : _this$config$panel4.fontSize) || '14px', "; text-align: center; margin-top: 4px;\">\n ").concat(((_this$config$sendButt4 = this.config.sendButtonHint) === null || _this$config$sendButt4 === void 0 ? void 0 : _this$config$sendButt4.text) || ((_this$config$panel5 = this.config.panel) === null || _this$config$panel5 === void 0 || (_this$config$panel5 = _this$config$panel5.sendButtonHint) === null || _this$config$panel5 === void 0 ? void 0 : _this$config$panel5.text), "\n </div>\n ") : '', "\n </div>\n <div class=\"text-interface-footer\">\n <span class=\"text-interface-powered\">Powered by <a href=\"").concat(brandUrl, "\" target=\"_blank\" rel=\"noopener noreferrer\"><b>").concat(brandName, "</b></a></span>\n <button type=\"button\" class=\"ttp-info-btn\" aria-label=\"").concat(this.t('aboutTitle') || 'About', "\" title=\"").concat(this.t('aboutTitle') || 'About', "\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"9\"/>\n <line x1=\"12\" y1=\"11\" x2=\"12\" y2=\"16\"/>\n <circle cx=\"12\" cy=\"7.7\" r=\"1.05\" fill=\"currentColor\" stroke=\"none\"/>\n </svg>\n </button>\n </div>\n </div>");
|
|
37576
37626
|
}
|
|
37577
37627
|
|
|
37578
37628
|
/**
|
|
@@ -37587,15 +37637,19 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37587
37637
|
var anim = this.config.animation;
|
|
37588
37638
|
var useVoiceTheme = this.config.useVoiceTheme !== false;
|
|
37589
37639
|
var voice = this.config.voice || {};
|
|
37640
|
+
var textDirection = this.textDirection;
|
|
37590
37641
|
|
|
37591
37642
|
// Use text config, fallback to panel config for backward compatibility
|
|
37592
37643
|
var sendButtonColor = this.config.sendButtonColor || ((_this$config$panel6 = this.config.panel) === null || _this$config$panel6 === void 0 ? void 0 : _this$config$panel6.sendButtonColor) || '#7C3AED';
|
|
37593
37644
|
var sendButtonHoverColor = this.config.sendButtonHoverColor || ((_this$config$panel7 = this.config.panel) === null || _this$config$panel7 === void 0 ? void 0 : _this$config$panel7.sendButtonHoverColor) || '#6D28D9';
|
|
37594
37645
|
var sendButtonTextColor = this.config.sendButtonTextColor || ((_this$config$panel8 = this.config.panel) === null || _this$config$panel8 === void 0 ? void 0 : _this$config$panel8.sendButtonTextColor) || '#FFFFFF';
|
|
37595
37646
|
var inputPlaceholder = this.config.inputPlaceholder || ((_this$config$panel9 = this.config.panel) === null || _this$config$panel9 === void 0 ? void 0 : _this$config$panel9.inputPlaceholder) || 'Type your message...';
|
|
37596
|
-
|
|
37647
|
+
// Keep the composer at >= 16px: iOS Safari auto-zooms the host page whenever a
|
|
37648
|
+
// focused field is smaller, which shifts the whole embedding site on tap.
|
|
37649
|
+
var inputFontSize = this.config.inputFontSize || ((_this$config$panel0 = this.config.panel) === null || _this$config$panel0 === void 0 ? void 0 : _this$config$panel0.inputFontSize) || '16px';
|
|
37597
37650
|
var inputBorderRadius = this.config.inputBorderRadius || ((_this$config$panel1 = this.config.panel) === null || _this$config$panel1 === void 0 ? void 0 : _this$config$panel1.inputBorderRadius) || 20;
|
|
37598
|
-
var inputPadding = this.config.inputPadding || ((_this$config$panel10 = this.config.panel) === null || _this$config$panel10 === void 0 ? void 0 : _this$config$panel10.inputPadding) || '
|
|
37651
|
+
var inputPadding = this.config.inputPadding || ((_this$config$panel10 = this.config.panel) === null || _this$config$panel10 === void 0 ? void 0 : _this$config$panel10.inputPadding) || '9px 12px';
|
|
37652
|
+
var messageFontSize = messages.fontSize || '12px';
|
|
37599
37653
|
var panelLight;
|
|
37600
37654
|
var topBarBg;
|
|
37601
37655
|
var topBarBorder;
|
|
@@ -37630,31 +37684,31 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37630
37684
|
if (useVoiceTheme) {
|
|
37631
37685
|
var p1 = firstHexFromVoiceColor(voice.primaryBtnGradient1 || voice.startCallButtonColor, '#6d56f5');
|
|
37632
37686
|
var p2 = firstHexFromVoiceColor(voice.primaryBtnGradient2 || voice.startCallButtonColor, '#9d8df8');
|
|
37633
|
-
var a1 = firstHexFromVoiceColor(voice.avatarGradient1,
|
|
37634
|
-
var a2 = firstHexFromVoiceColor(voice.avatarGradient2,
|
|
37687
|
+
var a1 = firstHexFromVoiceColor(voice.avatarGradient1, '#6d56f5');
|
|
37688
|
+
var a2 = firstHexFromVoiceColor(voice.avatarGradient2, '#a78bfa');
|
|
37635
37689
|
panelLight = false;
|
|
37636
|
-
topBarBg = '
|
|
37637
|
-
topBarBorder = 'rgba(
|
|
37638
|
-
messagesAreaBg = 'rgba(
|
|
37690
|
+
topBarBg = 'rgba(13, 8, 43, 0.9)';
|
|
37691
|
+
topBarBorder = 'rgba(219, 210, 255, 0.16)';
|
|
37692
|
+
messagesAreaBg = 'radial-gradient(circle at 22% 12%, rgba(116, 80, 255, 0.16), transparent 32%), linear-gradient(180deg, rgba(11, 7, 38, 0.4), rgba(8, 5, 29, 0.62))';
|
|
37639
37693
|
backBtnColor = 'rgba(255,255,255,0.92)';
|
|
37640
37694
|
backBtnHoverBg = 'rgba(255,255,255,0.14)';
|
|
37641
37695
|
backBtnHoverColor = '#ffffff';
|
|
37642
37696
|
emptyMuted = 'rgba(255,255,255,0.7)';
|
|
37643
37697
|
emptyTitle = '#ffffff';
|
|
37644
|
-
inputContainerBg = '
|
|
37645
|
-
inputContainerBorderTop = 'rgba(
|
|
37646
|
-
inputBorderColor = 'rgba(
|
|
37698
|
+
inputContainerBg = 'rgba(12, 8, 38, 0.9)';
|
|
37699
|
+
inputContainerBorderTop = 'rgba(225, 219, 255, 0.18)';
|
|
37700
|
+
inputBorderColor = 'rgba(225, 219, 255, 0.26)';
|
|
37647
37701
|
inputFocusColor = "".concat(p1, "e6");
|
|
37648
|
-
inputBackgroundColor = 'rgba(255,255,255,0.
|
|
37702
|
+
inputBackgroundColor = 'rgba(255,255,255,0.07)';
|
|
37649
37703
|
inputTextColor = '#f8fafc';
|
|
37650
|
-
inputFocusBg = 'rgba(255,255,255,0.
|
|
37704
|
+
inputFocusBg = 'rgba(255,255,255,0.12)';
|
|
37651
37705
|
inputFocusBoxShadow = "0 0 0 3px ".concat(p1, "59");
|
|
37652
37706
|
placeholderColor = 'rgba(255,255,255,0.55)';
|
|
37653
|
-
userBubbleBg =
|
|
37707
|
+
userBubbleBg = '#7354e6';
|
|
37654
37708
|
userBubbleTextColor = '#ffffff';
|
|
37655
|
-
agentBubbleBg = '
|
|
37709
|
+
agentBubbleBg = '#35394f';
|
|
37656
37710
|
agentBubbleTextColor = '#f8fafc';
|
|
37657
|
-
agentBubbleBorder = '1px solid rgba(
|
|
37711
|
+
agentBubbleBorder = '1px solid rgba(194, 201, 255, 0.22)';
|
|
37658
37712
|
avatarAgentBg = "linear-gradient(135deg, ".concat(a1, ", ").concat(a2, ")");
|
|
37659
37713
|
avatarUserBg = 'rgba(255,255,255,0.22)';
|
|
37660
37714
|
avatarUserColor = 'rgba(255,255,255,0.95)';
|
|
@@ -37715,7 +37769,7 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37715
37769
|
|
|
37716
37770
|
// Add !important to display rules when not using Shadow DOM (to override theme CSS)
|
|
37717
37771
|
var important = this.config.useShadowDOM === false ? ' !important' : '';
|
|
37718
|
-
return "\n .text-interface-top-bar {\n flex-shrink: 0".concat(important, ";\n padding: 10px 12px 8px").concat(important, ";\n border-bottom: 1px solid ").concat(topBarBorder).concat(important, ";\n background: ").concat(topBarBg).concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n justify-content: space-between").concat(important, ";\n }\n .text-interface-top-bar .ttp-info-btn {\n color: ").concat(backBtnColor).concat(important, ";\n }\n .text-interface-top-bar .ttp-info-btn:hover {\n background: ").concat(backBtnHoverBg).concat(important, ";\n color: ").concat(backBtnHoverColor).concat(important, ";\n }\n .text-interface-back-btn {\n display: inline-flex").concat(important, ";\n align-items: center").concat(important, ";\n gap: 6px").concat(important, ";\n padding: 6px 10px").concat(important, ";\n margin: 0").concat(important, ";\n border: none").concat(important, ";\n border-radius: 8px").concat(important, ";\n background: transparent").concat(important, ";\n color: ").concat(backBtnColor).concat(important, ";\n font-size: 16px").concat(important, ";\n font-weight: 600").concat(important, ";\n cursor: pointer").concat(important, ";\n font-family: inherit").concat(important, ";\n }\n .text-interface-back-btn:hover {\n background: ").concat(backBtnHoverBg).concat(important, ";\n color: ").concat(backBtnHoverColor).concat(important, ";\n }\n .text-interface-back-icon {\n font-size: 18px").concat(important, ";\n line-height: 1").concat(important, ";\n }\n .text-interface-back-label {\n line-height: 1.2").concat(important, ";\n }\n /* Messages container using new classes */\n #messagesContainer { \n flex: 1").concat(important, "; \n overflow-y: auto").concat(important, "; \n overflow-x: hidden").concat(important, "; \n padding: 20px").concat(important, "; \n background: ").concat(messagesAreaBg).concat(important, "; \n display: flex").concat(important, "; \n flex-direction: column").concat(important, "; \n gap: 16px").concat(important, "; \n min-height: 0").concat(important, "; \n }\n .empty-state { \n flex: 1").concat(important, "; \n display: flex").concat(important, "; \n flex-direction: column").concat(important, "; \n align-items: center").concat(important, "; \n justify-content: center").concat(important, "; \n gap: 12px").concat(important, "; \n color: ").concat(emptyMuted).concat(important, "; \n text-align: center").concat(important, "; \n padding: 20px").concat(important, "; \n }\n .empty-state-icon { font-size: 52px").concat(important, "; opacity: 0.3").concat(important, "; }\n .empty-state-title { font-size: 22px").concat(important, "; font-weight: 700").concat(important, "; color: ").concat(emptyTitle).concat(important, "; }\n .empty-state-text { font-size: 15px").concat(important, "; max-width: 300px").concat(important, "; line-height: 1.45").concat(important, "; }\n\n .text-interface { \n display: none").concat(important, "; \n flex: 1").concat(important, "; \n flex-direction: column").concat(important, "; \n min-height: 0").concat(important, "; \n overflow: hidden").concat(important, "; \n }\n .text-interface.active { display: flex").concat(important, "; }\n \n .message { \n display: flex").concat(important, "; \n gap: 8px").concat(important, "; \n padding: 4px 0").concat(important, "; \n max-width: 100%").concat(important, "; \n align-items: center").concat(important, "; \n }\n .message.edge-left { flex-direction: row").concat(important, "; }\n .message.edge-right { flex-direction: row-reverse").concat(important, "; }\n .message-bubble { \n padding: 14px 16px").concat(important, "; \n border-radius: ").concat(messages.borderRadius, "px").concat(important, "; \n max-width: 80%").concat(important, "; \n font-size: ").concat(messages.fontSize).concat(important, "; \n line-height: 1.45").concat(important, ";\n word-wrap: break-word").concat(important, "; \n text-align: ").concat(this.config.direction === 'rtl' ? 'right' : 'left').concat(important, "; \n direction: ").concat(this.config.direction || 'ltr', ";\n }\n .message.user .message-bubble { \n background: ").concat(userBubbleBg).concat(important, "; \n color: ").concat(userBubbleTextColor).concat(important, "; \n }\n .message.agent .message-bubble {\n background: ").concat(agentBubbleBg).concat(important, ";\n color: ").concat(agentBubbleTextColor).concat(important, ";\n border: ").concat(agentBubbleBorder).concat(important, ";\n max-width: 88%").concat(important, ";\n }\n\n /* ---------------------------------------------------------------\n Rendered markdown inside the agent bubble.\n Everything is scoped to .message-bubble so host-page styles can't\n reach in and the user bubble (plain text) is untouched.\n Logical properties (padding-inline-start, border-inline-start) keep\n the layout correct in RTL locales such as Hebrew.\n ---------------------------------------------------------------- */\n .message-bubble.md, .message-bubble .md-seg { line-height: 1.55").concat(important, "; }\n .message-bubble .md-seg { display: block").concat(important, "; }\n\n .message-bubble p {\n margin: 0 0 10px").concat(important, ";\n padding: 0").concat(important, ";\n }\n /* Deliberately gated on .md / .md-seg rather than a bare\n \".message-bubble > *\": the VOICE live-transcript row reuses the\n .message-bubble class in this same shadow root, and its children\n (.live-badge, .ttp-cursor) are not ours to restyle. */\n .message-bubble.md > *:last-child,\n .message-bubble .md-seg:last-child > *:last-child { margin-bottom: 0").concat(important, "; }\n .message-bubble.md > *:first-child,\n .message-bubble .md-seg:first-child > *:first-child { margin-top: 0").concat(important, "; }\n\n .message-bubble .md-h {\n margin: 16px 0 7px").concat(important, ";\n padding: 0").concat(important, ";\n font-weight: 700").concat(important, ";\n line-height: 1.3").concat(important, ";\n color: inherit").concat(important, ";\n }\n .message-bubble .md-h1 { font-size: 1.18em").concat(important, "; }\n .message-bubble .md-h2 { font-size: 1.09em").concat(important, "; }\n .message-bubble .md-h3 { font-size: 1.02em").concat(important, "; }\n .message-bubble .md-h4,\n .message-bubble .md-h5,\n .message-bubble .md-h6 {\n font-size: 0.95em").concat(important, ";\n letter-spacing: 0.02em").concat(important, ";\n color: ").concat(mdMuted).concat(important, ";\n }\n\n /* Logical properties only \u2014 a physical padding-left/border-left after\n these would resolve to the same property and silently win in LTR. */\n .message-bubble ul, .message-bubble ol {\n margin: 8px 0 11px").concat(important, ";\n padding-inline-start: 1.45em").concat(important, ";\n list-style-position: outside").concat(important, ";\n }\n .message-bubble ul { list-style-type: disc").concat(important, "; }\n .message-bubble ol { list-style-type: decimal").concat(important, "; }\n .message-bubble ul ul { list-style-type: circle").concat(important, "; }\n .message-bubble li {\n margin: 0 0 5px").concat(important, ";\n padding: 0").concat(important, ";\n line-height: 1.5").concat(important, ";\n }\n .message-bubble li:last-child { margin-bottom: 0").concat(important, "; }\n .message-bubble li::marker { color: ").concat(mdAccent).concat(important, "; }\n .message-bubble li > ul, .message-bubble li > ol { margin: 5px 0 2px").concat(important, "; }\n .message-bubble li > p { margin: 0 0 5px").concat(important, "; }\n\n .message-bubble strong, .message-bubble b { font-weight: 700").concat(important, "; }\n .message-bubble em, .message-bubble i { font-style: italic").concat(important, "; }\n .message-bubble del { text-decoration: line-through").concat(important, "; opacity: 0.7").concat(important, "; }\n\n .message-bubble a {\n color: ").concat(mdLink).concat(important, ";\n text-decoration: underline").concat(important, ";\n text-underline-offset: 2px").concat(important, ";\n word-break: break-word").concat(important, ";\n }\n .message-bubble a:hover { opacity: 0.82").concat(important, "; }\n\n .message-bubble code {\n font-family: ").concat(mdMono).concat(important, ";\n font-size: 0.88em").concat(important, ";\n background: ").concat(mdSubtleBg).concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 5px").concat(important, ";\n padding: 1px 5px").concat(important, ";\n white-space: break-spaces").concat(important, ";\n word-break: break-word").concat(important, ";\n direction: ltr").concat(important, ";\n unicode-bidi: embed").concat(important, ";\n }\n .message-bubble pre {\n margin: 10px 0 11px").concat(important, ";\n padding: 10px 12px").concat(important, ";\n background: ").concat(mdSubtleBg).concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 10px").concat(important, ";\n overflow-x: auto").concat(important, ";\n direction: ltr").concat(important, ";\n text-align: left").concat(important, ";\n }\n .message-bubble pre code {\n background: none").concat(important, ";\n border: none").concat(important, ";\n border-radius: 0").concat(important, ";\n padding: 0").concat(important, ";\n font-size: 0.85em").concat(important, ";\n line-height: 1.5").concat(important, ";\n white-space: pre").concat(important, ";\n word-break: normal").concat(important, ";\n }\n\n .message-bubble blockquote {\n margin: 10px 0").concat(important, ";\n padding-block: 2px").concat(important, ";\n padding-inline-start: 12px").concat(important, ";\n padding-inline-end: 0").concat(important, ";\n border-inline-start: 3px solid ").concat(mdAccent).concat(important, ";\n color: ").concat(mdMuted).concat(important, ";\n }\n .message-bubble blockquote > *:last-child { margin-bottom: 0").concat(important, "; }\n\n .message-bubble hr {\n border: none").concat(important, ";\n border-top: 1px solid ").concat(mdRule).concat(important, ";\n height: 0").concat(important, ";\n margin: 13px 0").concat(important, ";\n }\n\n .message-bubble .md-table-wrap {\n margin: 10px 0 11px").concat(important, ";\n overflow-x: auto").concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 9px").concat(important, ";\n }\n .message-bubble table {\n border-collapse: collapse").concat(important, ";\n width: 100%").concat(important, ";\n font-size: 0.93em").concat(important, ";\n }\n .message-bubble th, .message-bubble td {\n padding: 7px 11px").concat(important, ";\n text-align: start").concat(important, ";\n border-bottom: 1px solid ").concat(mdBorder).concat(important, ";\n vertical-align: top").concat(important, ";\n }\n .message-bubble thead th {\n background: ").concat(mdSubtleBg).concat(important, ";\n font-weight: 700").concat(important, ";\n }\n .message-bubble tbody tr:nth-child(even) { background: ").concat(mdSubtlerBg).concat(important, "; }\n .message-bubble tbody tr:last-child td { border-bottom: none").concat(important, "; }\n\n .message-bubble .md-img {\n display: block").concat(important, ";\n max-width: 100%").concat(important, ";\n height: auto").concat(important, ";\n border-radius: 8px").concat(important, ";\n margin: 8px 0").concat(important, ";\n }\n\n .message.user { \n align-self: ").concat(this.config.direction === 'rtl' ? 'flex-start' : 'flex-end').concat(important, "; \n }\n .message.agent {\n align-self: ").concat(this.config.direction === 'rtl' ? 'flex-end' : 'flex-start').concat(important, ";\n /* structured answers can be tall \u2014 keep the avatar next to the first line */\n align-items: flex-start").concat(important, ";\n }\n .message.agent .message-avatar { margin-top: 7px").concat(important, "; }\n .message .message-bubble { \n text-align: ").concat(this.config.direction === 'rtl' ? 'right' : 'left', " !important; \n }\n ").concat(this.config.direction === 'rtl' ? "\n .message-bubble {\n text-align: right !important;\n }\n " : '', "\n .message-avatar { \n width: ").concat(avatarSize).concat(important, "; \n height: ").concat(avatarSize).concat(important, "; \n min-width: ").concat(avatarSize).concat(important, "; \n border-radius: 50%").concat(important, "; \n display: flex").concat(important, "; \n align-items: center").concat(important, "; \n justify-content: center").concat(important, "; \n flex-shrink: 0").concat(important, "; \n color: inherit").concat(important, "; \n font-size: ").concat(useVoiceTheme ? '14' : '20', "px").concat(important, "; \n line-height: 1").concat(important, "; \n background: transparent").concat(important, "; \n border: none").concat(important, "; \n box-sizing: border-box").concat(important, "; \n }\n .message-avatar.user { background: ").concat(avatarUserBg).concat(important, "; color: ").concat(avatarUserColor).concat(important, "; }\n .message-avatar.agent { background: ").concat(avatarAgentBg).concat(important, "; }\n \n .message.system {\n background: ").concat(messages.systemBackgroundColor, ";\n align-self: flex-start").concat(important, ";\n }\n .message.error {\n background: ").concat(messages.errorBackgroundColor, ";\n align-self: flex-start").concat(important, ";\n }\n \n .input-container {\n display: flex").concat(important, ";\n gap: 8px").concat(important, ";\n padding: 12px 16px").concat(important, ";\n background: ").concat(inputContainerBg).concat(important, ";\n border-top: 1px solid ").concat(inputContainerBorderTop).concat(important, ";\n align-items: center").concat(important, ";\n flex-shrink: 0").concat(important, ";\n flex-direction: ").concat(this.config.direction === 'rtl' ? 'row-reverse' : 'row').concat(important, ";\n }\n \n .input-wrapper {\n position: relative").concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n }\n \n .message-input {\n width: 100%").concat(important, ";\n min-height: ").concat(TEXT_INPUT_MIN_HEIGHT_PX, "px").concat(important, ";\n max-height: ").concat(TEXT_INPUT_MAX_HEIGHT_PX, "px").concat(important, ";\n padding: ").concat(inputPadding, ";\n border: 1px solid ").concat(inputBorderColor, ";\n border-radius: ").concat(inputBorderRadius, "px;\n font-size: ").concat(inputFontSize, ";\n font-family: inherit").concat(important, ";\n line-height: 1.4").concat(important, ";\n resize: none").concat(important, ";\n overflow-y: auto").concat(important, ";\n background: ").concat(inputBackgroundColor, ";\n color: ").concat(inputTextColor, ";\n vertical-align: top").concat(important, ";\n margin: 0").concat(important, ";\n display: block").concat(important, ";\n white-space: pre-wrap").concat(important, ";\n word-wrap: break-word").concat(important, ";\n text-align: ").concat(this.config.direction === 'rtl' ? 'right' : 'left').concat(important, ";\n direction: ").concat(this.config.direction || 'ltr', ";\n -webkit-appearance: none").concat(important, ";\n appearance: none").concat(important, ";\n box-sizing: border-box").concat(important, ";\n }\n \n .message-input:focus {\n outline: none").concat(important, ";\n border-color: ").concat(inputFocusColor, ";\n background: ").concat(inputFocusBg).concat(important, ";\n box-shadow: ").concat(inputFocusBoxShadow, ";\n }\n \n .message-input::placeholder {\n color: ").concat(placeholderColor).concat(important, ";\n text-align: ").concat(this.config.direction === 'rtl' ? 'right' : 'left').concat(important, ";\n }\n \n .send-button {\n width: 44px").concat(important, ";\n height: 44px").concat(important, ";\n border-radius: 50%").concat(important, ";\n border: none").concat(important, ";\n background: ").concat(sendButtonColor, ";\n color: ").concat(sendButtonTextColor, ";\n font-size: ").concat(this.config.sendButtonFontSize || ((_this$config$panel15 = this.config.panel) === null || _this$config$panel15 === void 0 ? void 0 : _this$config$panel15.sendButtonFontSize) || '20px', ";\n font-weight: ").concat(this.config.sendButtonFontWeight || ((_this$config$panel16 = this.config.panel) === null || _this$config$panel16 === void 0 ? void 0 : _this$config$panel16.sendButtonFontWeight) || '500', ";\n cursor: pointer").concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n justify-content: center").concat(important, ";\n flex-shrink: 0").concat(important, ";\n transition: all 0.2s ease").concat(important, ";\n box-shadow: 0 4px 12px rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", 0.32)").concat(important, ";\n }\n \n .send-button:hover:not(:disabled) {\n background: ").concat(sendButtonHoverColor, ";\n transform: scale(1.05)").concat(important, ";\n box-shadow: 0 6px 16px rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", 0.42)").concat(important, ";\n }\n \n .send-button-hint {\n width: 100%").concat(important, ";\n text-align: center").concat(important, ";\n margin-top: 4px").concat(important, ";\n }\n \n .send-button:disabled {\n opacity: 0.5").concat(important, ";\n cursor: not-allowed").concat(important, ";\n }\n \n .typing-indicator {\n display: inline-flex").concat(important, ";\n gap: 4px").concat(important, ";\n align-items: center").concat(important, ";\n }\n \n .typing-dot {\n width: 6px").concat(important, ";\n height: 6px").concat(important, ";\n border-radius: 50%").concat(important, ";\n background: rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", ").concat(typingDotAlpha, ")").concat(important, ";\n animation: typingDot 1.4s ease-in-out infinite").concat(important, ";\n }\n \n .typing-dot:nth-child(2) { animation-delay: 0.2s").concat(important, "; }\n .typing-dot:nth-child(3) { animation-delay: 0.4s").concat(important, "; }\n \n @keyframes typingDot {\n 0%, 60%, 100% { transform: translateY(0); opacity: 0.7; }\n 30% { transform: translateY(-8px); opacity: 1; }\n }\n \n .error-message {\n padding: 12px").concat(important, ";\n background: ").concat(errorBubbleBg, ";\n border-radius: ").concat(messages.borderRadius, "px;\n color: ").concat(errorBubbleColor).concat(important, ";\n border: ").concat(errorBubbleBorder).concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n margin: 8px 0").concat(important, ";\n }\n \n ").concat(useVoiceTheme ? "\n #textInterface.active .input-container .send-button-hint {\n color: rgba(255,255,255,0.72)".concat(important, ";\n }\n ") : '', "\n \n @media (max-width: 768px) {\n #messagesContainer {\n padding: 12px").concat(important, ";\n gap: 12px").concat(important, ";\n }\n \n .message-bubble {\n max-width: 85%").concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n padding: 12px 14px").concat(important, ";\n }\n \n .text-input-container {\n padding: 10px").concat(important, ";\n gap: 8px").concat(important, ";\n }\n \n #text-chat-input {\n font-size: 16px !important; /* Prevents iOS zoom on focus */\n padding: 10px 14px").concat(important, ";\n min-height: 44px").concat(important, ";\n }\n \n #text-chat-send {\n min-width: 56px").concat(important, ";\n min-height: 44px").concat(important, ";\n width: 56px").concat(important, ";\n height: 44px").concat(important, ";\n }\n \n .empty-state-icon {\n font-size: 44px").concat(important, ";\n }\n \n .empty-state-title {\n font-size: 20px").concat(important, ";\n }\n \n .empty-state-text {\n font-size: 14px").concat(important, ";\n }\n }\n \n @media (max-width: 480px) {\n #messagesContainer {\n padding: 10px").concat(important, ";\n gap: 10px").concat(important, ";\n }\n \n .message-bubble {\n max-width: 90%").concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n padding: 10px 12px").concat(important, ";\n }\n \n .text-input-container {\n padding: 8px").concat(important, ";\n }\n \n #text-chat-input {\n font-size: 16px !important;\n padding: 8px 12px").concat(important, ";\n }\n }\n ");
|
|
37772
|
+
return "\n .text-interface-top-bar {\n flex-shrink: 0".concat(important, ";\n padding: 12px 14px").concat(important, ";\n border-bottom: 1px solid ").concat(topBarBorder).concat(important, ";\n background: ").concat(topBarBg).concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n justify-content: flex-start").concat(important, ";\n gap: 10px").concat(important, ";\n direction: ").concat(textDirection).concat(important, ";\n }\n .text-interface-agent-heading {\n display: flex").concat(important, ";\n flex-direction: row").concat(important, ";\n align-items: center").concat(important, ";\n gap: 9px").concat(important, ";\n min-width: 0").concat(important, ";\n flex: 1").concat(important, ";\n margin-right: 0").concat(important, ";\n }\n .text-interface-agent-avatar {\n width: 36px").concat(important, ";\n height: 36px").concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n justify-content: center").concat(important, ";\n flex: 0 0 36px").concat(important, ";\n border-radius: 50%").concat(important, ";\n background: ").concat(useVoiceTheme ? avatarAgentBg : "linear-gradient(135deg, ".concat(sendButtonColor, ", ").concat(sendButtonHoverColor, ")")).concat(important, ";\n border: none").concat(important, ";\n box-shadow: none").concat(important, ";\n }\n .text-interface-agent-initial { color: #fff").concat(important, "; font-size: 14px").concat(important, "; font-weight: 500").concat(important, "; line-height: 1").concat(important, "; }\n .text-interface-agent-copy {\n display: flex").concat(important, ";\n flex-direction: column").concat(important, ";\n align-items: flex-start").concat(important, ";\n gap: 2px").concat(important, ";\n min-width: 0").concat(important, ";\n }\n .text-interface-agent-name {\n color: #f0eff8").concat(important, ";\n font-size: 14px").concat(important, ";\n font-weight: 500").concat(important, ";\n line-height: 1.15").concat(important, ";\n overflow: hidden").concat(important, ";\n text-overflow: ellipsis").concat(important, ";\n white-space: nowrap").concat(important, ";\n }\n .text-interface-agent-status {\n display: inline-flex").concat(important, ";\n align-items: center").concat(important, ";\n gap: 6px").concat(important, ";\n color: rgba(255,255,255,0.7)").concat(important, ";\n font-size: 10px").concat(important, ";\n }\n .text-interface-agent-status > span {\n width: 7px").concat(important, ";\n height: 7px").concat(important, ";\n border-radius: 50%").concat(important, ";\n background: #4ade80").concat(important, ";\n box-shadow: 0 0 10px rgba(74,222,128,0.75)").concat(important, ";\n }\n .text-interface-top-actions { display: flex").concat(important, "; align-items: center").concat(important, "; gap: 4px").concat(important, "; margin-inline-start: auto").concat(important, "; }\n .text-interface-close-btn:hover,\n .text-interface-home-btn:hover,\n .text-interface-footer .ttp-info-btn:hover {\n background: rgba(255,255,255,0.22)").concat(important, ";\n color: #ffffff").concat(important, ";\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.26), 0 4px 14px rgba(0,0,0,0.22)").concat(important, ";\n }\n .text-interface-close-btn,\n .text-interface-home-btn,\n .text-interface-footer .ttp-info-btn {\n width: 32px").concat(important, ";\n height: 32px").concat(important, ";\n display: grid").concat(important, ";\n place-items: center").concat(important, ";\n padding: 0").concat(important, ";\n margin: 0").concat(important, ";\n border: 1px solid rgba(255,255,255,0.14)").concat(important, ";\n border-radius: 50%").concat(important, ";\n background: rgba(255,255,255,0.12)").concat(important, ";\n color: rgba(224,218,255,0.84)").concat(important, ";\n cursor: pointer").concat(important, ";\n font-family: inherit").concat(important, ";\n transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease").concat(important, ";\n box-shadow: inset 0 1px 0 rgba(255,255,255,0.14)").concat(important, ";\n }\n .text-interface-home-btn svg,\n .text-interface-close-btn svg,\n .text-interface-footer .ttp-info-btn svg { width: 18px").concat(important, "; height: 18px").concat(important, "; fill: none").concat(important, "; stroke: currentColor").concat(important, "; stroke-width: 1.9").concat(important, "; stroke-linecap: round").concat(important, "; stroke-linejoin: round").concat(important, "; }\n .text-interface-home-btn svg { fill: none").concat(important, "; stroke: currentColor").concat(important, "; width: 20px").concat(important, "; height: 20px").concat(important, "; stroke-width: 1.8").concat(important, "; }\n .input-container .text-interface-home-btn {\n width: 38px").concat(important, ";\n height: 38px").concat(important, ";\n color: rgba(224,218,255,0.84)").concat(important, ";\n background: rgba(255,255,255,0.12)").concat(important, ";\n flex-shrink: 0").concat(important, ";\n }\n /* Messages container using new classes */\n #messagesContainer { \n flex: 1").concat(important, "; \n overflow-y: auto").concat(important, "; \n overflow-x: hidden").concat(important, "; \n padding: 20px").concat(important, "; \n background: ").concat(messagesAreaBg).concat(important, "; \n display: flex").concat(important, "; \n flex-direction: column").concat(important, "; \n gap: 16px").concat(important, "; \n min-height: 0").concat(important, "; \n }\n .empty-state { \n flex: 1").concat(important, "; \n display: flex").concat(important, "; \n flex-direction: column").concat(important, "; \n align-items: center").concat(important, "; \n justify-content: center").concat(important, "; \n gap: 12px").concat(important, "; \n color: ").concat(emptyMuted).concat(important, "; \n text-align: center").concat(important, "; \n padding: 20px").concat(important, "; \n }\n .empty-state-icon { font-size: 52px").concat(important, "; opacity: 0.3").concat(important, "; }\n .empty-state-title { font-size: 22px").concat(important, "; font-weight: 700").concat(important, "; color: ").concat(emptyTitle).concat(important, "; }\n .empty-state-text { font-size: 15px").concat(important, "; max-width: 300px").concat(important, "; line-height: 1.45").concat(important, "; }\n .empty-state-icon {\n width: 48px").concat(important, "; height: 48px").concat(important, "; border-radius: 16px").concat(important, ";\n display: grid").concat(important, "; place-items: center").concat(important, "; color: rgba(230,225,255,0.9)").concat(important, ";\n background: rgba(255,255,255,0.1)").concat(important, ";\n border: 1px solid rgba(225,219,255,0.18)").concat(important, ";\n }\n .empty-state-icon svg { width: 24px").concat(important, "; height: 24px").concat(important, "; }\n\n .text-interface { \n display: none").concat(important, "; \n flex: 1").concat(important, "; \n flex-direction: column").concat(important, "; \n min-height: 0").concat(important, "; \n overflow: hidden").concat(important, "; \n direction: ").concat(textDirection).concat(important, ";\n }\n .text-interface.active { display: flex").concat(important, "; }\n \n .message { \n display: flex").concat(important, "; \n flex-direction: column").concat(important, ";\n gap: 4px").concat(important, ";\n padding: 4px 0").concat(important, "; \n width: 100%").concat(important, ";\n max-width: 100%").concat(important, "; \n align-items: stretch").concat(important, ";\n }\n .message-bubble { \n position: relative").concat(important, ";\n padding: 8px 62px 8px 11px").concat(important, ";\n padding-right: 62px").concat(important, ";\n border-radius: 12px").concat(important, ";\n max-width: min(72%, 420px)").concat(important, ";\n font-size: ").concat(messageFontSize).concat(important, ";\n line-height: 1.36").concat(important, ";\n word-wrap: break-word").concat(important, "; \n box-shadow: ").concat(useVoiceTheme ? 'inset 0 1px 0 rgba(255,255,255,0.36), inset 0 -1px 0 rgba(5, 3, 26, 0.18), 0 8px 20px rgba(4, 3, 22, 0.24)' : 'none').concat(important, ";\n }\n .message-bubble[dir=\"rtl\"] { text-align: right").concat(important, "; direction: rtl").concat(important, "; }\n .message-bubble[dir=\"ltr\"] { text-align: left").concat(important, "; direction: ltr").concat(important, "; }\n .message-bubble::before {\n content: ''").concat(important, ";\n position: absolute").concat(important, ";\n top: 1px").concat(important, ";\n right: 1px").concat(important, ";\n left: 1px").concat(important, ";\n height: 48%").concat(important, ";\n border-radius: 11px 11px 8px 8px").concat(important, ";\n background: linear-gradient(180deg, rgba(255,255,255,0.19), rgba(255,255,255,0))").concat(important, ";\n pointer-events: none").concat(important, ";\n }\n .message.user .message-bubble { \n background: ").concat(userBubbleBg).concat(important, "; \n color: ").concat(userBubbleTextColor).concat(important, "; \n border-top-right-radius: 4px").concat(important, ";\n }\n .message.agent .message-bubble {\n background: ").concat(agentBubbleBg).concat(important, ";\n color: ").concat(agentBubbleTextColor).concat(important, ";\n border: ").concat(agentBubbleBorder).concat(important, ";\n border-top-left-radius: 4px").concat(important, ";\n }\n\n /* ---------------------------------------------------------------\n Rendered markdown inside the agent bubble.\n Everything is scoped to .message-bubble so host-page styles can't\n reach in and the user bubble (plain text) is untouched.\n Logical properties (padding-inline-start, border-inline-start) keep\n the layout correct in RTL locales such as Hebrew.\n ---------------------------------------------------------------- */\n .message-bubble.md, .message-bubble .md-seg { line-height: 1.55").concat(important, "; }\n .message-bubble .md-seg { display: block").concat(important, "; }\n\n .message-bubble p {\n margin: 0 0 10px").concat(important, ";\n padding: 0").concat(important, ";\n }\n /* Deliberately gated on .md / .md-seg rather than a bare\n \".message-bubble > *\": the VOICE live-transcript row reuses the\n .message-bubble class in this same shadow root, and its children\n (.live-badge, .ttp-cursor) are not ours to restyle. */\n .message-bubble.md > *:last-child,\n .message-bubble .md-seg:last-child > *:last-child { margin-bottom: 0").concat(important, "; }\n .message-bubble.md > *:first-child,\n .message-bubble .md-seg:first-child > *:first-child { margin-top: 0").concat(important, "; }\n\n .message-bubble .md-h {\n margin: 16px 0 7px").concat(important, ";\n padding: 0").concat(important, ";\n font-weight: 700").concat(important, ";\n line-height: 1.3").concat(important, ";\n color: inherit").concat(important, ";\n }\n .message-bubble .md-h1 { font-size: 1.18em").concat(important, "; }\n .message-bubble .md-h2 { font-size: 1.09em").concat(important, "; }\n .message-bubble .md-h3 { font-size: 1.02em").concat(important, "; }\n .message-bubble .md-h4,\n .message-bubble .md-h5,\n .message-bubble .md-h6 {\n font-size: 0.95em").concat(important, ";\n letter-spacing: 0.02em").concat(important, ";\n color: ").concat(mdMuted).concat(important, ";\n }\n\n /* Logical properties only \u2014 a physical padding-left/border-left after\n these would resolve to the same property and silently win in LTR. */\n .message-bubble ul, .message-bubble ol {\n margin: 8px 0 11px").concat(important, ";\n padding-inline-start: 1.45em").concat(important, ";\n list-style-position: outside").concat(important, ";\n }\n .message-bubble ul { list-style-type: disc").concat(important, "; }\n .message-bubble ol { list-style-type: decimal").concat(important, "; }\n .message-bubble ul ul { list-style-type: circle").concat(important, "; }\n .message-bubble li {\n margin: 0 0 5px").concat(important, ";\n padding: 0").concat(important, ";\n line-height: 1.5").concat(important, ";\n }\n .message-bubble li:last-child { margin-bottom: 0").concat(important, "; }\n .message-bubble li::marker { color: ").concat(mdAccent).concat(important, "; }\n .message-bubble li > ul, .message-bubble li > ol { margin: 5px 0 2px").concat(important, "; }\n .message-bubble li > p { margin: 0 0 5px").concat(important, "; }\n\n .message-bubble strong, .message-bubble b { font-weight: 700").concat(important, "; }\n .message-bubble em, .message-bubble i { font-style: italic").concat(important, "; }\n .message-bubble del { text-decoration: line-through").concat(important, "; opacity: 0.7").concat(important, "; }\n\n .message-bubble a {\n color: ").concat(mdLink).concat(important, ";\n text-decoration: underline").concat(important, ";\n text-underline-offset: 2px").concat(important, ";\n word-break: break-word").concat(important, ";\n }\n .message-bubble a:hover { opacity: 0.82").concat(important, "; }\n\n .message-bubble code {\n font-family: ").concat(mdMono).concat(important, ";\n font-size: 0.88em").concat(important, ";\n background: ").concat(mdSubtleBg).concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 5px").concat(important, ";\n padding: 1px 5px").concat(important, ";\n white-space: break-spaces").concat(important, ";\n word-break: break-word").concat(important, ";\n direction: ltr").concat(important, ";\n unicode-bidi: embed").concat(important, ";\n }\n .message-bubble pre {\n margin: 10px 0 11px").concat(important, ";\n padding: 10px 12px").concat(important, ";\n background: ").concat(mdSubtleBg).concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 10px").concat(important, ";\n overflow-x: auto").concat(important, ";\n direction: ltr").concat(important, ";\n text-align: left").concat(important, ";\n }\n .message-bubble pre code {\n background: none").concat(important, ";\n border: none").concat(important, ";\n border-radius: 0").concat(important, ";\n padding: 0").concat(important, ";\n font-size: 0.85em").concat(important, ";\n line-height: 1.5").concat(important, ";\n white-space: pre").concat(important, ";\n word-break: normal").concat(important, ";\n }\n\n .message-bubble blockquote {\n margin: 10px 0").concat(important, ";\n padding-block: 2px").concat(important, ";\n padding-inline-start: 12px").concat(important, ";\n padding-inline-end: 0").concat(important, ";\n border-inline-start: 3px solid ").concat(mdAccent).concat(important, ";\n color: ").concat(mdMuted).concat(important, ";\n }\n .message-bubble blockquote > *:last-child { margin-bottom: 0").concat(important, "; }\n\n .message-bubble hr {\n border: none").concat(important, ";\n border-top: 1px solid ").concat(mdRule).concat(important, ";\n height: 0").concat(important, ";\n margin: 13px 0").concat(important, ";\n }\n\n .message-bubble .md-table-wrap {\n margin: 10px 0 11px").concat(important, ";\n overflow-x: auto").concat(important, ";\n border: 1px solid ").concat(mdBorder).concat(important, ";\n border-radius: 9px").concat(important, ";\n }\n .message-bubble table {\n border-collapse: collapse").concat(important, ";\n width: 100%").concat(important, ";\n font-size: 0.93em").concat(important, ";\n }\n .message-bubble th, .message-bubble td {\n padding: 7px 11px").concat(important, ";\n text-align: start").concat(important, ";\n border-bottom: 1px solid ").concat(mdBorder).concat(important, ";\n vertical-align: top").concat(important, ";\n }\n .message-bubble thead th {\n background: ").concat(mdSubtleBg).concat(important, ";\n font-weight: 700").concat(important, ";\n }\n .message-bubble tbody tr:nth-child(even) { background: ").concat(mdSubtlerBg).concat(important, "; }\n .message-bubble tbody tr:last-child td { border-bottom: none").concat(important, "; }\n\n .message-bubble .md-img {\n display: block").concat(important, ";\n max-width: 100%").concat(important, ";\n height: auto").concat(important, ";\n border-radius: 8px").concat(important, ";\n margin: 8px 0").concat(important, ";\n }\n\n .message.user { \n align-self: stretch").concat(important, ";\n align-items: stretch").concat(important, ";\n }\n .message.agent {\n align-self: stretch").concat(important, ";\n align-items: stretch").concat(important, ";\n }\n .message.user .message-bubble {\n margin-left: auto").concat(important, ";\n margin-right: 0").concat(important, ";\n }\n .message.agent .message-bubble {\n margin-left: 0").concat(important, ";\n margin-right: auto").concat(important, ";\n }\n .message-meta {\n position: absolute").concat(important, ";\n right: 11px").concat(important, ";\n bottom: 8px").concat(important, ";\n z-index: 2").concat(important, ";\n display: inline-flex").concat(important, ";\n align-items: center").concat(important, ";\n gap: 5px").concat(important, ";\n margin: 0").concat(important, ";\n color: rgba(255,255,255,0.55)").concat(important, ";\n font-size: 9px").concat(important, ";\n line-height: 1").concat(important, ";\n direction: ltr").concat(important, ";\n white-space: nowrap").concat(important, ";\n pointer-events: none").concat(important, ";\n }\n .message.user .message-meta {\n color: rgba(255,255,255,0.74)").concat(important, ";\n }\n .message-content { position: relative").concat(important, "; z-index: 1").concat(important, "; display: inline").concat(important, "; overflow-wrap: anywhere").concat(important, "; word-break: break-word").concat(important, "; direction: inherit").concat(important, "; }\n .message-meta-spacer { display: inline-block").concat(important, "; width: 0").concat(important, "; height: 1px").concat(important, "; }\n .message-delivery-checks { color: rgba(255,255,255,0.92)").concat(important, "; font-weight: 700").concat(important, "; letter-spacing: -2px").concat(important, "; }\n .message-expand-button {\n position: relative").concat(important, ";\n z-index: 3").concat(important, ";\n margin: 0 4px").concat(important, ";\n padding: 0").concat(important, ";\n border: 0").concat(important, ";\n background: transparent").concat(important, ";\n color: #c4b5fd").concat(important, ";\n font: inherit").concat(important, ";\n font-size: 0.78em").concat(important, ";\n font-weight: 600").concat(important, ";\n line-height: inherit").concat(important, ";\n text-decoration: underline").concat(important, ";\n text-underline-offset: 2px").concat(important, ";\n cursor: pointer").concat(important, ";\n }\n .message-expand-button:hover { color: #ede9fe").concat(important, "; }\n .message-avatar { \n width: ").concat(avatarSize).concat(important, "; \n height: ").concat(avatarSize).concat(important, "; \n min-width: ").concat(avatarSize).concat(important, "; \n border-radius: 50%").concat(important, "; \n display: flex").concat(important, "; \n align-items: center").concat(important, "; \n justify-content: center").concat(important, "; \n flex-shrink: 0").concat(important, "; \n color: inherit").concat(important, "; \n font-size: ").concat(useVoiceTheme ? '14' : '20', "px").concat(important, "; \n line-height: 1").concat(important, "; \n background: transparent").concat(important, "; \n border: none").concat(important, "; \n box-sizing: border-box").concat(important, "; \n }\n .message-avatar.user { background: ").concat(avatarUserBg).concat(important, "; color: ").concat(avatarUserColor).concat(important, "; }\n .message-avatar.agent { background: ").concat(avatarAgentBg).concat(important, "; }\n \n .message.system {\n background: ").concat(messages.systemBackgroundColor, ";\n align-self: flex-start").concat(important, ";\n }\n .message.error {\n background: ").concat(messages.errorBackgroundColor, ";\n align-self: flex-start").concat(important, ";\n }\n \n .input-container {\n display: flex").concat(important, ";\n gap: 8px").concat(important, ";\n padding: 12px 16px").concat(important, ";\n background: ").concat(inputContainerBg).concat(important, ";\n border-top: 1px solid ").concat(inputContainerBorderTop).concat(important, ";\n align-items: center").concat(important, ";\n flex-shrink: 0").concat(important, ";\n flex-direction: row").concat(important, ";\n direction: ltr").concat(important, ";\n }\n .text-interface-footer {\n position: relative").concat(important, ";\n flex-shrink: 0").concat(important, ";\n min-height: 28px").concat(important, ";\n padding: 4px 12px").concat(important, ";\n background: ").concat(topBarBg).concat(important, ";\n border-top: 1px solid ").concat(inputContainerBorderTop).concat(important, ";\n display: flex").concat(important, ";\n justify-content: center").concat(important, ";\n align-items: center").concat(important, ";\n gap: 8px").concat(important, ";\n direction: ltr").concat(important, ";\n }\n .text-interface-footer .ttp-info-btn {\n position: absolute").concat(important, ";\n right: 12px").concat(important, ";\n margin-left: auto").concat(important, ";\n }\n .text-interface-powered {\n color: rgba(255,255,255,0.46)").concat(important, ";\n font-size: 10px").concat(important, ";\n line-height: 1.2").concat(important, ";\n text-align: center").concat(important, ";\n white-space: nowrap").concat(important, ";\n }\n .text-interface-powered a {\n color: ").concat(sendButtonColor).concat(important, ";\n text-decoration: none").concat(important, ";\n }\n .text-interface.active ~ .ttp-footer {\n display: none").concat(important, ";\n }\n \n .input-wrapper {\n position: relative").concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n }\n \n .message-input {\n width: 100%").concat(important, ";\n min-height: ").concat(TEXT_INPUT_MIN_HEIGHT_PX, "px").concat(important, ";\n max-height: ").concat(TEXT_INPUT_MAX_HEIGHT_PX, "px").concat(important, ";\n padding: ").concat(inputPadding, ";\n border: 1px solid ").concat(inputBorderColor, ";\n border-radius: ").concat(inputBorderRadius, "px;\n font-size: ").concat(inputFontSize, ";\n font-family: inherit").concat(important, ";\n line-height: 1.4").concat(important, ";\n resize: none").concat(important, ";\n overflow-y: auto").concat(important, ";\n background: ").concat(inputBackgroundColor, ";\n color: ").concat(inputTextColor, ";\n vertical-align: top").concat(important, ";\n margin: 0").concat(important, ";\n display: block").concat(important, ";\n white-space: pre-wrap").concat(important, ";\n word-wrap: break-word").concat(important, ";\n text-align: start").concat(important, ";\n direction: ").concat(textDirection).concat(important, ";\n unicode-bidi: plaintext").concat(important, ";\n -webkit-appearance: none").concat(important, ";\n appearance: none").concat(important, ";\n box-sizing: border-box").concat(important, ";\n }\n \n .message-input:focus {\n outline: none").concat(important, ";\n border-color: ").concat(inputFocusColor, ";\n background: ").concat(inputFocusBg).concat(important, ";\n box-shadow: ").concat(inputFocusBoxShadow, ";\n }\n \n .message-input::placeholder {\n color: ").concat(placeholderColor).concat(important, ";\n text-align: start").concat(important, ";\n direction: ").concat(textDirection).concat(important, ";\n }\n \n .send-button {\n width: 38px").concat(important, ";\n height: 38px").concat(important, ";\n border-radius: 50%").concat(important, ";\n border: none").concat(important, ";\n background: linear-gradient(135deg, ").concat(sendButtonColor, ", ").concat(sendButtonHoverColor, ")").concat(important, ";\n color: ").concat(sendButtonTextColor, ";\n font-size: ").concat(this.config.sendButtonFontSize || ((_this$config$panel15 = this.config.panel) === null || _this$config$panel15 === void 0 ? void 0 : _this$config$panel15.sendButtonFontSize) || '16px', ";\n font-weight: ").concat(this.config.sendButtonFontWeight || ((_this$config$panel16 = this.config.panel) === null || _this$config$panel16 === void 0 ? void 0 : _this$config$panel16.sendButtonFontWeight) || '500', ";\n cursor: pointer").concat(important, ";\n display: flex").concat(important, ";\n align-items: center").concat(important, ";\n justify-content: center").concat(important, ";\n flex-shrink: 0").concat(important, ";\n transition: all 0.2s ease").concat(important, ";\n box-shadow: 0 4px 12px rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", 0.32)").concat(important, ";\n }\n .send-icon {\n width: 18px").concat(important, ";\n height: 18px").concat(important, ";\n fill: none").concat(important, ";\n stroke: currentColor").concat(important, ";\n stroke-width: 2.1").concat(important, ";\n stroke-linecap: round").concat(important, ";\n stroke-linejoin: round").concat(important, ";\n }\n \n .send-button:hover:not(:disabled) {\n background: ").concat(sendButtonHoverColor, ";\n transform: scale(1.05)").concat(important, ";\n box-shadow: 0 6px 16px rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", 0.42)").concat(important, ";\n }\n \n .send-button-hint {\n width: 100%").concat(important, ";\n text-align: center").concat(important, ";\n margin-top: 4px").concat(important, ";\n }\n \n .send-button:disabled {\n opacity: 0.5").concat(important, ";\n cursor: not-allowed").concat(important, ";\n }\n \n .typing-indicator {\n display: inline-flex").concat(important, ";\n gap: 4px").concat(important, ";\n align-items: center").concat(important, ";\n }\n \n .typing-dot {\n width: 6px").concat(important, ";\n height: 6px").concat(important, ";\n border-radius: 50%").concat(important, ";\n background: rgba(").concat(accentRgb[0], ", ").concat(accentRgb[1], ", ").concat(accentRgb[2], ", ").concat(typingDotAlpha, ")").concat(important, ";\n animation: typingDot 1.4s ease-in-out infinite").concat(important, ";\n }\n \n .typing-dot:nth-child(2) { animation-delay: 0.2s").concat(important, "; }\n .typing-dot:nth-child(3) { animation-delay: 0.4s").concat(important, "; }\n \n @keyframes typingDot {\n 0%, 60%, 100% { transform: translateY(0); opacity: 0.7; }\n 30% { transform: translateY(-8px); opacity: 1; }\n }\n \n .error-message {\n padding: 12px").concat(important, ";\n background: ").concat(errorBubbleBg, ";\n border-radius: ").concat(messages.borderRadius, "px;\n color: ").concat(errorBubbleColor).concat(important, ";\n border: ").concat(errorBubbleBorder).concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n margin: 8px 0").concat(important, ";\n }\n \n ").concat(useVoiceTheme ? "\n #textInterface.active .input-container .send-button-hint {\n color: rgba(255,255,255,0.72)".concat(important, ";\n }\n ") : '', "\n \n @media (max-width: 768px) {\n #messagesContainer {\n padding: 12px").concat(important, ";\n gap: 12px").concat(important, ";\n }\n \n .message-bubble {\n max-width: 85%").concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n padding: 12px 62px 12px 14px").concat(important, ";\n padding-right: 62px").concat(important, ";\n }\n \n .text-input-container {\n padding: 10px").concat(important, ";\n gap: 8px").concat(important, ";\n }\n \n #text-chat-input {\n font-size: 16px !important; /* Prevents iOS zoom on focus */\n padding: 10px 14px").concat(important, ";\n min-height: 44px").concat(important, ";\n }\n \n #text-chat-send {\n min-width: 56px").concat(important, ";\n min-height: 44px").concat(important, ";\n width: 56px").concat(important, ";\n height: 44px").concat(important, ";\n }\n \n .empty-state-icon {\n font-size: 44px").concat(important, ";\n }\n \n .empty-state-title {\n font-size: 20px").concat(important, ";\n }\n \n .empty-state-text {\n font-size: 14px").concat(important, ";\n }\n }\n \n @media (max-width: 480px) {\n #messagesContainer {\n padding: 10px").concat(important, ";\n gap: 10px").concat(important, ";\n }\n \n .message-bubble {\n max-width: 90%").concat(important, ";\n font-size: ").concat(messages.fontSize).concat(important, ";\n padding: 10px 62px 10px 12px").concat(important, ";\n padding-right: 62px").concat(important, ";\n }\n \n .text-input-container {\n padding: 8px").concat(important, ";\n }\n \n #text-chat-input {\n font-size: 16px !important;\n padding: 8px 12px").concat(important, ";\n }\n }\n ");
|
|
37719
37773
|
}
|
|
37720
37774
|
|
|
37721
37775
|
/**
|
|
@@ -37759,7 +37813,10 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37759
37813
|
}, 0);
|
|
37760
37814
|
}
|
|
37761
37815
|
};
|
|
37762
|
-
inputField.addEventListener('input',
|
|
37816
|
+
inputField.addEventListener('input', function () {
|
|
37817
|
+
_this.updateInputWritingDirection(inputField);
|
|
37818
|
+
autoResize();
|
|
37819
|
+
});
|
|
37763
37820
|
inputField.addEventListener('keydown', function (e) {
|
|
37764
37821
|
if (e.key === 'Enter' && !e.shiftKey) {
|
|
37765
37822
|
e.preventDefault();
|
|
@@ -37808,14 +37865,17 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37808
37865
|
// Update placeholder based on current language
|
|
37809
37866
|
var inputPlaceholder = this.config.inputPlaceholder || ((_this$config$panel17 = this.config.panel) === null || _this$config$panel17 === void 0 ? void 0 : _this$config$panel17.inputPlaceholder) || this.t('typeMessage') || 'Type your message...';
|
|
37810
37867
|
inputField.placeholder = inputPlaceholder;
|
|
37811
|
-
|
|
37812
|
-
// Update direction
|
|
37813
|
-
inputField.dir = this.config.direction || 'ltr';
|
|
37814
|
-
|
|
37815
|
-
// Update text-align style
|
|
37816
|
-
inputField.style.textAlign = this.config.direction === 'rtl' ? 'right' : 'left';
|
|
37868
|
+
this.updateInputWritingDirection(inputField);
|
|
37817
37869
|
}
|
|
37818
37870
|
}
|
|
37871
|
+
}, {
|
|
37872
|
+
key: "updateInputWritingDirection",
|
|
37873
|
+
value: function updateInputWritingDirection(inputField) {
|
|
37874
|
+
var direction = resolveInputTextDirection(inputField.value, this.textDirection);
|
|
37875
|
+
inputField.dir = direction;
|
|
37876
|
+
inputField.style.setProperty('direction', direction, 'important');
|
|
37877
|
+
inputField.style.setProperty('text-align', direction === 'rtl' ? 'right' : 'left', 'important');
|
|
37878
|
+
}
|
|
37819
37879
|
|
|
37820
37880
|
/**
|
|
37821
37881
|
* Show text interface
|
|
@@ -37901,6 +37961,7 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37901
37961
|
input.value = '';
|
|
37902
37962
|
input.style.height = "".concat(TEXT_INPUT_MIN_HEIGHT_PX, "px");
|
|
37903
37963
|
input.style.overflow = 'hidden';
|
|
37964
|
+
this.updateInputWritingDirection(input);
|
|
37904
37965
|
|
|
37905
37966
|
// Prepare streaming bubble and send via SDK
|
|
37906
37967
|
_context2.p = 3;
|
|
@@ -37947,10 +38008,38 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37947
38008
|
/**
|
|
37948
38009
|
* Add message to UI
|
|
37949
38010
|
*/
|
|
38011
|
+
}, {
|
|
38012
|
+
key: "messageTime",
|
|
38013
|
+
value: function messageTime() {
|
|
38014
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
38015
|
+
hour: '2-digit',
|
|
38016
|
+
minute: '2-digit',
|
|
38017
|
+
hour12: false
|
|
38018
|
+
}).format(new Date());
|
|
38019
|
+
}
|
|
38020
|
+
}, {
|
|
38021
|
+
key: "addMessageExpansion",
|
|
38022
|
+
value: function addMessageExpansion(content, text, spacer) {
|
|
38023
|
+
if (!spacer || text.length <= MESSAGE_COLLAPSE_THRESHOLD) return;
|
|
38024
|
+
var expanded = false;
|
|
38025
|
+
var button = document.createElement('button');
|
|
38026
|
+
button.type = 'button';
|
|
38027
|
+
button.className = 'message-expand-button';
|
|
38028
|
+
button.textContent = 'Read more';
|
|
38029
|
+
button.setAttribute('aria-expanded', 'false');
|
|
38030
|
+
content.textContent = collapseMessageText(text);
|
|
38031
|
+
button.addEventListener('click', function () {
|
|
38032
|
+
expanded = !expanded;
|
|
38033
|
+
content.textContent = expanded ? text : collapseMessageText(text);
|
|
38034
|
+
button.textContent = expanded ? 'Read less' : 'Read more';
|
|
38035
|
+
button.setAttribute('aria-expanded', String(expanded));
|
|
38036
|
+
});
|
|
38037
|
+
spacer.parentNode.insertBefore(button, spacer);
|
|
38038
|
+
}
|
|
37950
38039
|
}, {
|
|
37951
38040
|
key: "addMessage",
|
|
37952
38041
|
value: function addMessage(type, text) {
|
|
37953
|
-
var
|
|
38042
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
37954
38043
|
var messages = this.shadowRoot.getElementById('messagesContainer');
|
|
37955
38044
|
if (!messages) return;
|
|
37956
38045
|
|
|
@@ -37960,24 +38049,46 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37960
38049
|
emptyState.remove();
|
|
37961
38050
|
}
|
|
37962
38051
|
var message = document.createElement('div');
|
|
37963
|
-
var edgeClass =
|
|
38052
|
+
var edgeClass = type === 'user' ? 'edge-right' : 'edge-left';
|
|
37964
38053
|
message.className = "message ".concat(type, " ").concat(edgeClass);
|
|
37965
|
-
var avatar = document.createElement('div');
|
|
37966
|
-
avatar.className = "message-avatar ".concat(type);
|
|
37967
|
-
var avatarIcon = type === 'user' ? ((_this$config$messages = this.config.messages) === null || _this$config$messages === void 0 ? void 0 : _this$config$messages.userAvatarIcon) || '👤' : ((_this$config$messages2 = this.config.messages) === null || _this$config$messages2 === void 0 ? void 0 : _this$config$messages2.agentAvatarIcon) || '🤖';
|
|
37968
|
-
avatar.textContent = avatarIcon;
|
|
37969
38054
|
var bubble = document.createElement('div');
|
|
37970
38055
|
bubble.className = 'message-bubble';
|
|
38056
|
+
var messageDirection = resolveMessageTextDirection(text, this.textDirection);
|
|
38057
|
+
bubble.dir = messageDirection;
|
|
38058
|
+
var content = document.createElement(type === 'agent' ? 'div' : 'bdi');
|
|
38059
|
+
content.className = type === 'agent' ? 'message-content md' : 'message-content';
|
|
38060
|
+
content.dir = messageDirection;
|
|
37971
38061
|
if (type === 'agent') {
|
|
37972
38062
|
// Agent copy is markdown — render it so lists/bold/tables look designed.
|
|
37973
|
-
|
|
37974
|
-
(0,_markdown_js__WEBPACK_IMPORTED_MODULE_1__.renderMarkdownInto)(bubble, text);
|
|
38063
|
+
(0,_markdown_js__WEBPACK_IMPORTED_MODULE_1__.renderMarkdownInto)(content, text);
|
|
37975
38064
|
} else {
|
|
37976
|
-
|
|
37977
|
-
}
|
|
37978
|
-
|
|
37979
|
-
|
|
37980
|
-
|
|
38065
|
+
content.textContent = text;
|
|
38066
|
+
}
|
|
38067
|
+
var metaSpacer = document.createElement('span');
|
|
38068
|
+
metaSpacer.className = 'message-meta-spacer';
|
|
38069
|
+
metaSpacer.setAttribute('aria-hidden', 'true');
|
|
38070
|
+
var inlineElements = {
|
|
38071
|
+
content: content,
|
|
38072
|
+
spacer: metaSpacer
|
|
38073
|
+
};
|
|
38074
|
+
bubble.append.apply(bubble, _toConsumableArray(messageInlineOrder(this.textDirection).map(function (key) {
|
|
38075
|
+
return inlineElements[key];
|
|
38076
|
+
})));
|
|
38077
|
+
if (type !== 'agent') {
|
|
38078
|
+
this.addMessageExpansion(content, text, metaSpacer);
|
|
38079
|
+
}
|
|
38080
|
+
var meta = document.createElement('div');
|
|
38081
|
+
meta.className = 'message-meta';
|
|
38082
|
+
var time = document.createElement('span');
|
|
38083
|
+
time.textContent = options.time || this.messageTime();
|
|
38084
|
+
meta.appendChild(time);
|
|
38085
|
+
if (type === 'user') {
|
|
38086
|
+
var checks = document.createElement('span');
|
|
38087
|
+
checks.className = 'message-delivery-checks';
|
|
38088
|
+
checks.textContent = options.deliveryChecks === 1 ? '✓' : '✓✓';
|
|
38089
|
+
meta.appendChild(checks);
|
|
38090
|
+
}
|
|
38091
|
+
bubble.appendChild(meta);
|
|
37981
38092
|
message.appendChild(bubble);
|
|
37982
38093
|
messages.appendChild(message);
|
|
37983
38094
|
messages.scrollTop = messages.scrollHeight;
|
|
@@ -37989,27 +38100,28 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
37989
38100
|
}, {
|
|
37990
38101
|
key: "beginStreaming",
|
|
37991
38102
|
value: function beginStreaming() {
|
|
37992
|
-
var _this$config$messages3;
|
|
37993
38103
|
var messages = this.shadowRoot.getElementById('messagesContainer');
|
|
37994
38104
|
if (!messages) return;
|
|
37995
38105
|
|
|
37996
38106
|
// Clean any previous indicator
|
|
37997
38107
|
this.stopStreamingState();
|
|
37998
38108
|
var el = document.createElement('div');
|
|
37999
|
-
var edgeClass =
|
|
38109
|
+
var edgeClass = 'edge-left';
|
|
38000
38110
|
el.className = "message agent ".concat(edgeClass);
|
|
38001
38111
|
el.id = 'agent-streaming';
|
|
38002
|
-
var avatar = document.createElement('div');
|
|
38003
|
-
avatar.className = 'message-avatar agent';
|
|
38004
|
-
avatar.textContent = ((_this$config$messages3 = this.config.messages) === null || _this$config$messages3 === void 0 ? void 0 : _this$config$messages3.agentAvatarIcon) || '🤖';
|
|
38005
38112
|
var bubble = document.createElement('div');
|
|
38006
38113
|
bubble.className = 'message-bubble';
|
|
38114
|
+
bubble.dir = this.textDirection;
|
|
38007
38115
|
// show typing dots until first chunk
|
|
38008
38116
|
bubble.innerHTML = '<span class="typing-indicator"><span class="typing-dot"></span><span class="typing-dot"></span><span class="typing-dot"></span></span>';
|
|
38009
|
-
|
|
38117
|
+
var meta = document.createElement('div');
|
|
38118
|
+
meta.className = 'message-meta';
|
|
38119
|
+
meta.textContent = this.messageTime();
|
|
38120
|
+
bubble.appendChild(meta);
|
|
38010
38121
|
el.appendChild(bubble);
|
|
38011
38122
|
messages.appendChild(el);
|
|
38012
38123
|
this.streamingEl = bubble;
|
|
38124
|
+
this.streamingBubble = bubble;
|
|
38013
38125
|
this.hasStartedStreaming = false;
|
|
38014
38126
|
this._pendingMedia = []; // Buffer for images that arrive before next text chunk
|
|
38015
38127
|
this._streamBuffer = ''; // Raw markdown of the segment currently being written
|
|
@@ -38039,7 +38151,9 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38039
38151
|
if (this._streamSegmentEl || !this.streamingEl) return this._streamSegmentEl;
|
|
38040
38152
|
var seg = document.createElement('div');
|
|
38041
38153
|
seg.className = 'md-seg md';
|
|
38042
|
-
this.streamingEl.
|
|
38154
|
+
seg.dir = this.streamingEl.dir || this.textDirection;
|
|
38155
|
+
var meta = this.streamingEl.querySelector('.message-meta');
|
|
38156
|
+
this.streamingEl.insertBefore(seg, meta || null);
|
|
38043
38157
|
this._streamSegmentEl = seg;
|
|
38044
38158
|
return seg;
|
|
38045
38159
|
}
|
|
@@ -38104,6 +38218,8 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38104
38218
|
value: function appendStreamingChunk(chunk) {
|
|
38105
38219
|
if (!this.streamingEl || typeof chunk !== 'string' || chunk === '') return;
|
|
38106
38220
|
this._clearTypingIndicator();
|
|
38221
|
+
var direction = resolveMessageTextDirection(this._streamBuffer + chunk, this.textDirection);
|
|
38222
|
+
if (this.streamingBubble) this.streamingBubble.dir = direction;
|
|
38107
38223
|
this._streamBuffer += chunk;
|
|
38108
38224
|
this._scheduleStreamRender();
|
|
38109
38225
|
}
|
|
@@ -38241,6 +38357,8 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38241
38357
|
// so re-render from it. With media, the bubble is a mix of segments and
|
|
38242
38358
|
// galleries that fullText can't describe — keep what streaming produced.
|
|
38243
38359
|
if (!hasGalleries && typeof fullText === 'string' && fullText) {
|
|
38360
|
+
var direction = resolveMessageTextDirection(fullText, this.textDirection);
|
|
38361
|
+
if (this.streamingBubble) this.streamingBubble.dir = direction;
|
|
38244
38362
|
this._streamBuffer = fullText;
|
|
38245
38363
|
}
|
|
38246
38364
|
this._renderStreamSegment();
|
|
@@ -38251,6 +38369,7 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38251
38369
|
var container = this.shadowRoot.getElementById('agent-streaming');
|
|
38252
38370
|
if (container) container.id = '';
|
|
38253
38371
|
this.streamingEl = null;
|
|
38372
|
+
this.streamingBubble = null;
|
|
38254
38373
|
this._pendingMedia = [];
|
|
38255
38374
|
}
|
|
38256
38375
|
this.updateSendButtonState();
|
|
@@ -38266,6 +38385,7 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38266
38385
|
var existing = this.shadowRoot.getElementById('agent-streaming');
|
|
38267
38386
|
if (existing) existing.remove();
|
|
38268
38387
|
this.streamingEl = null;
|
|
38388
|
+
this.streamingBubble = null;
|
|
38269
38389
|
this.hasStartedStreaming = false;
|
|
38270
38390
|
this._streamBuffer = '';
|
|
38271
38391
|
this._streamSegmentEl = null;
|
|
@@ -38283,11 +38403,11 @@ var TextInterface = /*#__PURE__*/function () {
|
|
|
38283
38403
|
// Check if this is a domain validation error
|
|
38284
38404
|
var isDomainError = error && (error.message === 'DOMAIN_NOT_WHITELISTED' || typeof error === 'string' && error.includes('DOMAIN_NOT_WHITELISTED') || error.message && error.message.includes('Domain not whitelisted') || typeof error === 'string' && error.includes('Domain not whitelisted'));
|
|
38285
38405
|
if (isDomainError) {
|
|
38286
|
-
var _this$config$
|
|
38406
|
+
var _this$config$messages;
|
|
38287
38407
|
// Show domain error with title and message
|
|
38288
38408
|
var errorContainer = document.createElement('div');
|
|
38289
38409
|
errorContainer.className = 'error-message';
|
|
38290
|
-
errorContainer.style.cssText = 'padding: 16px; margin: 12px; border-radius: 8px; background: ' + (((_this$config$
|
|
38410
|
+
errorContainer.style.cssText = 'padding: 16px; margin: 12px; border-radius: 8px; background: ' + (((_this$config$messages = this.config.messages) === null || _this$config$messages === void 0 ? void 0 : _this$config$messages.errorBackgroundColor) || '#FEE2E2') + ';';
|
|
38291
38411
|
var title = document.createElement('div');
|
|
38292
38412
|
title.style.cssText = 'font-weight: 600; font-size: 17px; margin-bottom: 8px; color: #991B1B;';
|
|
38293
38413
|
title.textContent = this.t('domainNotValidated');
|
|
@@ -44555,10 +44675,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44555
44675
|
"hello": "Hello! How can I help?",
|
|
44556
44676
|
"sendMessage": "Send a message to get started",
|
|
44557
44677
|
"online": "Online",
|
|
44678
|
+
"chatAssistant": "Chat Assistant",
|
|
44558
44679
|
"newChat": "New Chat",
|
|
44559
44680
|
"back": "Back",
|
|
44560
44681
|
"backToModeChoice": "Voice or text",
|
|
44561
44682
|
"close": "Close",
|
|
44683
|
+
"home": "Home",
|
|
44562
44684
|
"error": "Error",
|
|
44563
44685
|
"typeMessage": "Type your message...",
|
|
44564
44686
|
"sendMessageAria": "Send message",
|
|
@@ -44599,10 +44721,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44599
44721
|
"hello": "שלום! איך אפשר לעזור?",
|
|
44600
44722
|
"sendMessage": "שלח הודעה או עבור למצב קולי לשיחה בזמן אמת",
|
|
44601
44723
|
"online": "מקוון",
|
|
44724
|
+
"chatAssistant": "עוזר צ׳אט",
|
|
44602
44725
|
"newChat": "צ'אט חדש",
|
|
44603
44726
|
"back": "חזור",
|
|
44604
44727
|
"backToModeChoice": "קול או טקסט",
|
|
44605
44728
|
"close": "סגור",
|
|
44729
|
+
"home": "דף הבית",
|
|
44606
44730
|
"error": "שגיאה",
|
|
44607
44731
|
"typeMessage": "הקלד הודעה...",
|
|
44608
44732
|
"sendMessageAria": "שלח הודעה",
|
|
@@ -44643,10 +44767,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44643
44767
|
"hello": "مرحبا! كيف يمكنني المساعدة؟",
|
|
44644
44768
|
"sendMessage": "أرسل رسالة للبدء",
|
|
44645
44769
|
"online": "متصل",
|
|
44770
|
+
"chatAssistant": "مساعد الدردشة",
|
|
44646
44771
|
"newChat": "محادثة جديدة",
|
|
44647
44772
|
"back": "رجوع",
|
|
44648
44773
|
"backToModeChoice": "صوت أو نص",
|
|
44649
44774
|
"close": "إغلاق",
|
|
44775
|
+
"home": "الرئيسية",
|
|
44650
44776
|
"error": "خطأ",
|
|
44651
44777
|
"typeMessage": "اكتب رسالة...",
|
|
44652
44778
|
"sendMessageAria": "إرسال رسالة",
|
|
@@ -44687,10 +44813,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44687
44813
|
"hello": "Привет! Как я могу помочь?",
|
|
44688
44814
|
"sendMessage": "Отправьте сообщение для начала",
|
|
44689
44815
|
"online": "В сети",
|
|
44816
|
+
"chatAssistant": "Чат-ассистент",
|
|
44690
44817
|
"newChat": "Новый чат",
|
|
44691
44818
|
"back": "Назад",
|
|
44692
44819
|
"backToModeChoice": "Голос или текст",
|
|
44693
44820
|
"close": "Закрыть",
|
|
44821
|
+
"home": "Главная",
|
|
44694
44822
|
"error": "Ошибка",
|
|
44695
44823
|
"typeMessage": "Введите сообщение...",
|
|
44696
44824
|
"sendMessageAria": "Отправить сообщение",
|
|
@@ -44731,10 +44859,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44731
44859
|
"hello": "¡Hola! ¿Cómo puedo ayudarte?",
|
|
44732
44860
|
"sendMessage": "Envía un mensaje para comenzar",
|
|
44733
44861
|
"online": "En línea",
|
|
44862
|
+
"chatAssistant": "Asistente de chat",
|
|
44734
44863
|
"newChat": "Nuevo chat",
|
|
44735
44864
|
"back": "Atrás",
|
|
44736
44865
|
"backToModeChoice": "Voz o texto",
|
|
44737
44866
|
"close": "Cerrar",
|
|
44867
|
+
"home": "Inicio",
|
|
44738
44868
|
"error": "Error",
|
|
44739
44869
|
"typeMessage": "Escribe un mensaje...",
|
|
44740
44870
|
"sendMessageAria": "Enviar mensaje",
|
|
@@ -44775,10 +44905,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44775
44905
|
"hello": "Bonjour! Comment puis-je vous aider?",
|
|
44776
44906
|
"sendMessage": "Envoyez un message pour commencer",
|
|
44777
44907
|
"online": "En ligne",
|
|
44908
|
+
"chatAssistant": "Assistant de chat",
|
|
44778
44909
|
"newChat": "Nouveau chat",
|
|
44779
44910
|
"back": "Retour",
|
|
44780
44911
|
"backToModeChoice": "Voix ou texte",
|
|
44781
44912
|
"close": "Fermer",
|
|
44913
|
+
"home": "Accueil",
|
|
44782
44914
|
"error": "Erreur",
|
|
44783
44915
|
"typeMessage": "Tapez votre message...",
|
|
44784
44916
|
"sendMessageAria": "Envoyer un message",
|
|
@@ -44819,10 +44951,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44819
44951
|
"hello": "Hallo! Wie kann ich helfen?",
|
|
44820
44952
|
"sendMessage": "Senden Sie eine Nachricht zum Starten",
|
|
44821
44953
|
"online": "Online",
|
|
44954
|
+
"chatAssistant": "Chat-Assistent",
|
|
44822
44955
|
"newChat": "Neuer Chat",
|
|
44823
44956
|
"back": "Zurück",
|
|
44824
44957
|
"backToModeChoice": "Sprache oder Text",
|
|
44825
44958
|
"close": "Schließen",
|
|
44959
|
+
"home": "Startseite",
|
|
44826
44960
|
"error": "Fehler",
|
|
44827
44961
|
"typeMessage": "Geben Sie eine Nachricht ein...",
|
|
44828
44962
|
"sendMessageAria": "Nachricht senden",
|