@subiz/widget-v4 4.1.207 → 4.1.209
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/assets/less/message.less +11 -0
- package/compiled_src/chatbox/block.js +17 -3
- package/dist/132.js +3 -3
- package/dist/185.js +25 -25
- package/dist/{1a0475c4721.278.js → 1a08405c848.278.js} +1 -1
- package/dist/1a08405c848.app.js +1 -0
- package/dist/{1a0475c4721.chat.html → 1a08405c848.chat.html} +1 -1
- package/dist/1a08405c848.chat.js +1 -0
- package/dist/{1a0475c4721.form.html → 1a08405c848.form.html} +1 -1
- package/dist/1a08405c848.form.js +1 -0
- package/dist/{1a0475c4721.index.html → 1a08405c848.index.html} +1 -1
- package/dist/{1a0475c4721.library.html → 1a08405c848.library.html} +1 -1
- package/dist/1a08405c848.library.js +1 -0
- package/dist/{1a0475c4721.preview.html → 1a08405c848.preview.html} +1 -1
- package/dist/1a08405c848.preview.js +1 -0
- package/dist/1a08405c848.webview.js +1 -0
- package/dist/HASH +1 -1
- package/dist/screenshoot.html +2 -10
- package/dist/screenshoot.js +12818 -742
- package/package.json +4 -4
- package/src/chatbox/block.js +14 -4
- package/dist/1a0475c4721.app.js +0 -1
- package/dist/1a0475c4721.chat.js +0 -1
- package/dist/1a0475c4721.form.js +0 -1
- package/dist/1a0475c4721.library.js +0 -1
- package/dist/1a0475c4721.preview.js +0 -1
- package/dist/1a0475c4721.webview.js +0 -1
- package/dist/app.js +0 -1406
- package/dist/chat.html +0 -10
- package/dist/chat.js +0 -1395
- package/dist/form.html +0 -10
- package/dist/form.js +0 -609
- package/dist/index.html +0 -90
- package/dist/inject.html +0 -20
- package/dist/inject.js +0 -1395
- package/dist/library.html +0 -90
- package/dist/library.js +0 -1385
- package/dist/order.html +0 -32
- package/dist/order.js +0 -810
- package/dist/preview.html +0 -784
- package/dist/preview.js +0 -1455
- package/dist/src_chatbox_OrderAttachments_js.js +0 -22
- package/dist/src_chatbox_Order_js.js +0 -206
- package/dist/src_chatbox_css_js.js +0 -306
- package/dist/src_contact_contact_js.js +0 -22
- package/dist/src_contact_css_js.js +0 -32
- package/dist/src_form_css_js.js +0 -32
- package/dist/src_notif_css_js.js +0 -32
- package/dist/src_notif_notif_js.js +0 -22
- package/dist/src_popup_css_js.js +0 -32
- package/dist/src_popup_popup_js.js +0 -84
- package/dist/webview.js +0 -1406
- /package/dist/{1a0475c4721.127.js → 1a08405c848.127.js} +0 -0
- /package/dist/{1a0475c4721.132.js → 1a08405c848.132.js} +0 -0
- /package/dist/{1a0475c4721.185.js → 1a08405c848.185.js} +0 -0
- /package/dist/{1a0475c4721.27.js → 1a08405c848.27.js} +0 -0
- /package/dist/{1a0475c4721.339.js → 1a08405c848.339.js} +0 -0
- /package/dist/{1a0475c4721.459.js → 1a08405c848.459.js} +0 -0
- /package/dist/{1a0475c4721.490.js → 1a08405c848.490.js} +0 -0
- /package/dist/{1a0475c4721.74.js → 1a08405c848.74.js} +0 -0
- /package/dist/{1a0475c4721.997.js → 1a08405c848.997.js} +0 -0
package/dist/inject.js
DELETED
|
@@ -1,1395 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
3
|
-
* This devtool is neither made for production nor for readable output files.
|
|
4
|
-
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
|
5
|
-
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
6
|
-
* or disable the default devtool with "devtool: false".
|
|
7
|
-
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
8
|
-
*/
|
|
9
|
-
/******/ (() => { // webpackBootstrap
|
|
10
|
-
/******/ var __webpack_modules__ = ({
|
|
11
|
-
|
|
12
|
-
/***/ "./node_modules/@subiz/ajax/src/ajax.js"
|
|
13
|
-
/*!**********************************************!*\
|
|
14
|
-
!*** ./node_modules/@subiz/ajax/src/ajax.js ***!
|
|
15
|
-
\**********************************************/
|
|
16
|
-
(module) {
|
|
17
|
-
|
|
18
|
-
eval("{var METHODS = ['put', 'head', 'patch', 'delete', 'post', 'get']\nvar CONTENT_TYPE = 'Content-Type'\nvar CONTENT_TYPE_FORM = 'application/x-www-form-urlencoded'\nvar CONTENT_TYPE_JSON = 'application/json; charset=utf-8'\n\nfunction combineUrl(base, newurl) {\n\tbase = norm(base)\n\tnewurl = norm(newurl)\n\n\tif (!newurl || !base) return base + newurl\n\n\tif (newurl.startsWith('http://') || newurl.startsWith('https://') || newurl.startsWith('//')) {\n\t\treturn newurl\n\t}\n\n\tif (!base.endsWith('/')) base += '/'\n\tif (newurl.startsWith('/')) newurl = newurl.substring(1)\n\treturn base + newurl\n}\n\nfunction merge(req, obj) {\n\treturn Object.assign(req.clone(), obj)\n}\n\nfunction newRequest() {\n\tvar r = {\n\t\tparser: '',\n\t\tbeforehooks: [],\n\t\tafterhooks: [],\n\t\tbaseurl: '',\n\t\tquery: {},\n\t}\n\n\tr.clone = function () {\n\t\treturn Object.assign({}, this, {query: Object.assign({}, this.query)})\n\t}\n\n\tr.addQuery = function (key, val) {\n\t\tvar req = this.clone()\n\t\treq.query[key] = val\n\t\treturn req\n\t}\n\n\tr.removeQuery = function (key) {\n\t\tvar req = this.clone()\n\t\tif (req.query[key] !== undefined) req.query[key] = undefined\n\t\treturn req\n\t}\n\n\tr.withCredentials = function (credential) {\n\t\treturn merge(this, {_withCredentials: credential})\n\t}\n\n\tr.setQuery = function (query) {\n\t\treturn merge(this, {query: query})\n\t}\n\n\tr.clearHooks = function () {\n\t\treturn merge(this, {beforehooks: [], afterhooks: []})\n\t}\n\n\tr.beforeHook = function (cb) {\n\t\tvar beforehooks = this.beforehooks.slice()\n\t\tbeforehooks.push(cb)\n\t\treturn merge(this, {beforehooks: beforehooks})\n\t}\n\n\tr.afterHook = function (cb) {\n\t\tvar afterhooks = this.afterhooks.slice()\n\t\tafterhooks.push(cb)\n\t\treturn merge(this, {afterhooks: afterhooks})\n\t}\n\n\tr.setHeader = function (headers) {\n\t\theaders = Object.assign({}, this.headers, headers)\n\t\theaders[CONTENT_TYPE] = undefined\n\t\treturn merge(this, {headers: headers})\n\t}\n\n\tMETHODS.map(function (method) {\n\t\tr[method] = function (url, data, cb) {\n\t\t\treturn send(merge(this, {method: method, baseurl: combineUrl(this.baseurl, url)}), data, cb)\n\t\t}\n\t})\n\n\t// pass // to clean\n\tr.setBaseUrl = function (url) {\n\t\treturn merge(this, {baseurl: url})\n\t}\n\n\tr.contentTypeJson = function () {\n\t\treturn merge(this, {content_type: CONTENT_TYPE_JSON})\n\t}\n\n\tr.contentTypeForm = function () {\n\t\treturn merge(this, {content_type: CONTENT_TYPE_FORM})\n\t}\n\n\tr.setContentType = function (ty) {\n\t\treturn merge(this, {content_type: norm(ty)})\n\t}\n\n\tr.setParser = function (parser) {\n\t\treturn merge(this, {parser: norm(parser)})\n\t}\n\n\tr.setBody = function (body) {\n\t\treturn merge(this, {body: body})\n\t}\n\treturn r\n}\n\nvar networkerr = {\n\tcode: 'network_error,retry',\n\tnumber: 'SBZ-EQNETWORK',\n\tmessage: {\n\t\tEn_US: 'Can not connect to the server. Please check your internet connection.',\n\t\tVi_VN: 'Không thể kết nối tới máy chủ. Vui lòng kiểm tra lại kết nối mạng.',\n\t},\n}\n\nvar invalidbodyerr = {\n\tcode: 'invalid_response,retry',\n\tnumber: 'SBZ-EQRESPONSE',\n\tmessage: {En_US: 'Server error, please try again later', Vi_VN: 'Lỗi máy chủ, vui lòng thử lại sau'},\n}\n\nvar not200err = {\n\tcode: 'not_200,retry',\n\tnumber: 'SBZ-EQCN200',\n\tmessage: {\n\t\tEn_US: 'Error while connecting to the server, please try again later',\n\t\tVi_VN: 'Lỗi kết nối với máy chủ, vui lòng thử lại sau',\n\t},\n}\n\nfunction send(req, data, cb) {\n\tcb = cb || function () {}\n\tif (isFunc(data)) {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tvar rs\n\tvar promise = new Promise(function (resolve) {\n\t\trs = function (res) {\n\t\t\ttry {\n\t\t\t\tcb(res.error, res.body, res.code)\n\t\t\t} catch (_) {}\n\t\t\tresolve(res)\n\t\t}\n\t})\n\n\tif (data) {\n\t\treq = req.clone()\n\t\treq.body = data\n\t\tif (req.content_type === CONTENT_TYPE_JSON) req.body = env.Jsonify(data)\n\t\tif (req.content_type === CONTENT_TYPE_FORM) {\n\t\t\treq.body = querify(data)\n\t\t}\n\t}\n\n\twaterfall(req.beforehooks.slice(), {request: req}, function (bp) {\n\t\tif (bp.error) return rs({body: {error: bq.error}, code: 0, error: bp.error})\n\t\tdosend(bp.request, function (err, body, code) {\n\t\t\twaterfall(req.afterhooks.slice(), {request: req, code: code, body: body, err: err}, function (param) {\n\t\t\t\tvar body = param.body\n\t\t\t\tif (err == 'network_error') return rs({body: {error: networkerr}, code: param.code, error: networkerr})\n\t\t\t\tif (req.parser == 'json' && param.body) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbody = env.ParseJson(param.body)\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn rs({\n\t\t\t\t\t\t\tbody: {error: invalidbodyerr, origin_body: param.body},\n\t\t\t\t\t\t\tcode: param.code,\n\t\t\t\t\t\t\terror: invalidbodyerr,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar err = param.err\n\t\t\t\tif (err == 'network_error') return rs({body: {error: networkerr}, code: param.code, error: networkerr})\n\t\t\t\tif (!err && (code < 200 || code > 299)) err = body && body.error ? body.error : not200err\n\t\t\t\trs({body: err ? body || {error: err} : body, code: param.code, error: err})\n\t\t\t})\n\t\t})\n\t})\n\treturn promise\n}\n\nvar dofetch = function (req, cb, q) {\n\tvar headers = Object.assign({}, req.headers)\n\tif (req.content_type) headers[CONTENT_TYPE] = req.content_type\n\n\tvar status = 0\n\tfetch(req.baseurl + q, {\n\t\tmethod: req.method,\n\t\theaders: headers,\n\t\tcredentials: req._withCredentials,\n\t\tbody: req.body,\n\t})\n\t\t.then(function (res) {\n\t\t\tstatus = res.status\n\t\t\treturn res.text()\n\t\t})\n\t\t.then(function (text) {\n\t\t\tcb(undefined, text, status)\n\t\t})\n\t\t.catch(function (err) {\n\t\t\tcb('network_error', err, -1)\n\t\t})\n}\n\nvar dosend = function (req, cb) {\n\tlet q = querify(req.query)\n\tif (q) q = '?' + q\n\tif (!env.XMLHttpRequest) return dofetch(req, cb, q)\n\tvar request = new env.XMLHttpRequest()\n\treq.xhr = request // expose through xhr, the caller can use this to get header\n\trequest.onreadystatechange = function (e) {\n\t\tif (request.readyState !== 4) return\n\t\tif (request.status === 0) {\n\t\t\tcb('network_error', request.responseText, request.status) // network error\n\t\t} else {\n\t\t\tcb(undefined, request.responseText, request.status)\n\t\t}\n\t}\n\n\trequest.open(req.method, req.baseurl + q)\n\trequest.withCredentials = req._withCredentials // for cloudflare to work correctly\n\tfor (var i in req.headers) request.setRequestHeader(i, req.headers[i])\n\tif (req.content_type) {\n\t\trequest.setRequestHeader(CONTENT_TYPE, req.content_type)\n\t}\n\trequest.send(req.body)\n}\n\nfunction norm(str) {\n\treturn (str || '').trim()\n}\n\nfunction isFunc(f) {\n\treturn f && {}.toString.call(f) === '[object Function]'\n}\n\nfunction waterfall(ps, param, cb) {\n\tif (!ps || ps.length === 0) return cb(param)\n\n\tvar fp = ps.shift()\n\tif (!isFunc(fp)) return waterfall(ps, param, cb)\n\tfp(param, function (out) {\n\t\treturn out === false ? cb(param) : waterfall(ps, param, cb)\n\t})\n}\n\n// more stringent in adhering to RFC 3986 (which reserves !, ', (, ), and *), even\n// though these characters have no formalized URI delimiting uses, see\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n// for more details\nfunction encodeURICom(str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16)\n\t})\n}\n\nfunction querify(obj) {\n\tif (!obj) return ''\n\tvar keys = Object.keys(obj)\n\t// keys.sort(options.sort)\n\tvar out = []\n\tfor (var k = 0; k < keys.length; k++) {\n\t\tvar key = keys[k]\n\t\tvar param = ''\n\t\tvar value = obj[key]\n\t\tif (value === undefined) continue\n\t\tif (value === null) {\n\t\t\tparam = encodeURICom(key)\n\t\t} else if (!Array.isArray(value)) {\n\t\t\tparam = encodeURICom(key) + '=' + encodeURICom(value)\n\t\t} else {\n\t\t\t// array\n\t\t\tvar arr = []\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tif (value[i] === undefined) continue\n\t\t\t\tarr.push(encoderForArrayFormat(key, value[i], arr.length))\n\n\t\t\t\tarr.push(out)\n\t\t\t}\n\t\t\tparam = arr.join('&')\n\t\t}\n\t\tif (param.length > 0) out.push(param)\n\t}\n\treturn out.join('&')\n}\n\nfunction encoderForArrayFormat(key, value) {\n\tif (value === null) return encodeURICom(key)\n\treturn [encodeURICom(key), '=', encodeURICom(value)].join('')\n}\n\nvar ajax = newRequest()\nvar env = {\n\tJsonify: JSON.stringify,\n\tParseJson: JSON.parse,\n}\najax.env = env\najax.waterfall = waterfall\nmodule.exports = ajax\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/ajax/src/ajax.js?\n}");
|
|
19
|
-
|
|
20
|
-
/***/ },
|
|
21
|
-
|
|
22
|
-
/***/ "./node_modules/@subiz/flow/batch.js"
|
|
23
|
-
/*!*******************************************!*\
|
|
24
|
-
!*** ./node_modules/@subiz/flow/batch.js ***!
|
|
25
|
-
\*******************************************/
|
|
26
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
27
|
-
|
|
28
|
-
eval("{var loop = __webpack_require__(/*! ./loop.js */ \"./node_modules/@subiz/flow/loop.js\")\n// item: {payload, priority}\n\n// idle => executing\n\nmodule.exports = function (maxBatch, maxDelay, handler) {\n\tvar myBuffers = [] // job buffers\n\tvar myState = 'idle'\n\n\tvar myExecute = function (buffers) {\n\t\tvar payloads = buffers.map(function (i) {\n\t\t\treturn i.payload\n\t\t})\n\t\tvar pro = handler(payloads)\n\t\t// func return result instead of a promise\n\t\t// we treat the out put as a promise\n\t\tif (!pro || !pro.then) pro = Promise.resolve(pro)\n\n\t\tvar resolves = buffers.map(function (i) {\n\t\t\treturn i.rs\n\t\t})\n\t\treturn new Promise(function (resolve) {\n\t\t\tpro.then(function (outs) {\n\t\t\t\tresolves.map(function (rs, i) {\n\t\t\t\t\trs(outs && outs[i])\n\t\t\t\t})\n\t\t\t\tresolve()\n\t\t\t})\n\t\t})\n\t}\n\n\tvar myFlush = function () {\n\t\tif (myState === 'executing') return\n\t\tmyState = 'executing'\n\n\t\tloop(function () {\n\t\t\tif (myBuffers.length <= maxBatch) return Promise.resolve(false)\n\t\t\tvar buffers = myBuffers.splice(0, maxBatch) // myBuffers would also be trimmed\n\t\t\treturn myExecute(buffers).then(function () {\n\t\t\t\treturn true // continue loop\n\t\t\t})\n\t\t}).then(function () {\n\t\t\tif (myBuffers.length === 0) {\n\t\t\t\tmyState = 'idle'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// last batch\n\t\t\tvar nextms = maxDelay - (Date.now() - myBuffers[0].created)\n\t\t\tif (nextms >= 1) {\n\t\t\t\t// set timeout for the first item in queue\n\t\t\t\t// the settedTimeout property will make sure that we won't\n\t\t\t\t// set multiple timeouts for this one\n\t\t\t\tmyState = 'idle'\n\n\t\t\t\tif (myBuffers[0].settedTimeout) return\n\t\t\t\tmyBuffers[0].settedTimeout = true\n\t\t\t\tsetTimeout(myFlush, nextms)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// have to execute remaining items\n\t\t\tvar buffers = myBuffers\n\t\t\tmyBuffers = []\n\t\t\tmyExecute(buffers).then(function () {\n\t\t\t\t// myBuffers may have been added new item, must check after executed the last batch\n\t\t\t\tmyState = 'idle'\n\t\t\t\tmyFlush()\n\t\t\t})\n\t\t})\n\t}\n\n\tthis.push = function (payload, priority) {\n\t\treturn new Promise(function (resolve) {\n\t\t\tmyBuffers.push({payload: payload, priority: priority, created: Date.now(), rs: resolve})\n\t\t\tmyFlush()\n\t\t})\n\t}\n\n\treturn this\n}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/batch.js?\n}");
|
|
29
|
-
|
|
30
|
-
/***/ },
|
|
31
|
-
|
|
32
|
-
/***/ "./node_modules/@subiz/flow/common.js"
|
|
33
|
-
/*!********************************************!*\
|
|
34
|
-
!*** ./node_modules/@subiz/flow/common.js ***!
|
|
35
|
-
\********************************************/
|
|
36
|
-
(module) {
|
|
37
|
-
|
|
38
|
-
eval("{function map(collection, predicate) {\n\tif (!collection) return []\n\tif (!predicate) {\n\t\tpredicate = function (a) {\n\t\t\treturn a\n\t\t}\n\t}\n\n\tvar out = []\n\tif (Array.isArray(collection)) {\n\t\tfor (var i = 0; i < collection.length; i++) {\n\t\t\tout.push(predicate(collection[i], i))\n\t\t}\n\t\treturn out\n\t}\n\n\tif (typeof collection === 'object') {\n\t\tvar keys = Object.keys(collection)\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar k = keys[i]\n\t\t\tout.push(predicate(collection[k], k))\n\t\t}\n\t\treturn out\n\t}\n\n\treturn out\n}\n\nmodule.exports = {map: map}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/common.js?\n}");
|
|
39
|
-
|
|
40
|
-
/***/ },
|
|
41
|
-
|
|
42
|
-
/***/ "./node_modules/@subiz/flow/index.js"
|
|
43
|
-
/*!*******************************************!*\
|
|
44
|
-
!*** ./node_modules/@subiz/flow/index.js ***!
|
|
45
|
-
\*******************************************/
|
|
46
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
47
|
-
|
|
48
|
-
eval("{var sleep = __webpack_require__(/*! ./sleep.js */ \"./node_modules/@subiz/flow/sleep.js\")\nvar loop = __webpack_require__(/*! ./loop.js */ \"./node_modules/@subiz/flow/loop.js\")\nvar map = __webpack_require__(/*! ./map.js */ \"./node_modules/@subiz/flow/map.js\")\nvar batch = __webpack_require__(/*! ./batch.js */ \"./node_modules/@subiz/flow/batch.js\")\n\nmodule.exports = {\n\tsleep: sleep,\n\tloop: loop,\n\tmap: map,\n\tbatch: batch,\n}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/index.js?\n}");
|
|
49
|
-
|
|
50
|
-
/***/ },
|
|
51
|
-
|
|
52
|
-
/***/ "./node_modules/@subiz/flow/loop.js"
|
|
53
|
-
/*!******************************************!*\
|
|
54
|
-
!*** ./node_modules/@subiz/flow/loop.js ***!
|
|
55
|
-
\******************************************/
|
|
56
|
-
(module) {
|
|
57
|
-
|
|
58
|
-
eval("{// loop keep calling promise sequenctially until the promise resolve a false value\nmodule.exports = function loop(promise) {\n\tvar out = promise()\n\tif (!out || !out.then) {\n\t\tvar saveout = out\n\t\tout = {\n\t\t\tthen: function (f) {\n\t\t\t\tf(saveout)\n\t\t\t},\n\t\t}\n\t}\n\treturn out.then(function (cont) {\n\t\tif (!cont) return Promise.resolve()\n\t\treturn loop(promise)\n\t})\n}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/loop.js?\n}");
|
|
59
|
-
|
|
60
|
-
/***/ },
|
|
61
|
-
|
|
62
|
-
/***/ "./node_modules/@subiz/flow/map.js"
|
|
63
|
-
/*!*****************************************!*\
|
|
64
|
-
!*** ./node_modules/@subiz/flow/map.js ***!
|
|
65
|
-
\*****************************************/
|
|
66
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
67
|
-
|
|
68
|
-
eval("{var co = __webpack_require__(/*! ./common.js */ \"./node_modules/@subiz/flow/common.js\")\n\nmodule.exports = function (collections, func, limit) {\n\tif (typeof func === 'number') {\n\t\t// backword compatible\n\t\tlet tmp = limit\n\t\tlimit = func\n\t\tfunc = tmp\n\t}\n\n\tif (!func) func = function () {}\n\tif (typeof limit !== 'number' || limit <= 0) limit = 1\n\n\t// prepare input map\n\tvar ins = {} // inputs\n\tco.map(collections, function (i, k) {\n\t\tins[k] = i\n\t})\n\n\tif (limit <= 0) limit = 1 // normalize limit\n\tif (Object.keys(ins).length === 0) return Promise.resolve([])\n\tif (Object.keys(ins).length < limit) limit = Object.keys(ins).length\n\n\tvar outs = {} // outputs\n\treturn new Promise(function (resolve) {\n\t\tlet total = Object.keys(ins).length\n\n\t\tvar doJob = function () {\n\t\t\tvar keys = Object.keys(ins)\n\t\t\tif (keys.length === 0) return\n\n\t\t\tvar key = keys.shift()\n\t\t\tvar value = ins[key]\n\t\t\tdelete ins[key]\n\n\t\t\tvar pro = func(value, key)\n\t\t\t// func return result instead of a promise\n\t\t\t// we treat the out put as a promise\n\t\t\tif (!pro || !pro.then) pro = Promise.resolve(pro)\n\n\t\t\tpro.then(function (ret) {\n\t\t\t\touts[key] = ret\n\t\t\t\tif (Object.keys(outs).length === total) return resolve(co.map(outs))\n\t\t\t\tdoJob()\n\t\t\t})\n\t\t}\n\n\t\tfor (var i = 0; i < limit; i++) setTimeout(doJob, 1)\n\t})\n}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/map.js?\n}");
|
|
69
|
-
|
|
70
|
-
/***/ },
|
|
71
|
-
|
|
72
|
-
/***/ "./node_modules/@subiz/flow/sleep.js"
|
|
73
|
-
/*!*******************************************!*\
|
|
74
|
-
!*** ./node_modules/@subiz/flow/sleep.js ***!
|
|
75
|
-
\*******************************************/
|
|
76
|
-
(module) {
|
|
77
|
-
|
|
78
|
-
eval("{// sleep won't resolve after a given milliseconds\n// e.g: await sleep(100)\nmodule.exports = function sleep(ms) {\n\treturn new Promise(function (res) {\n\t\tsetTimeout(res, ms)\n\t})\n}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/flow/sleep.js?\n}");
|
|
79
|
-
|
|
80
|
-
/***/ },
|
|
81
|
-
|
|
82
|
-
/***/ "./node_modules/@subiz/wsclient/common.js"
|
|
83
|
-
/*!************************************************!*\
|
|
84
|
-
!*** ./node_modules/@subiz/wsclient/common.js ***!
|
|
85
|
-
\************************************************/
|
|
86
|
-
(module) {
|
|
87
|
-
|
|
88
|
-
eval("{function logError(accid, userid, message, line) {\n\t// 24-01-11 04:07:05 app ERROR api-8948967b6-qtpfx subiz /app/vendor/github.com/subiz/log/error.go:271 {\"id\":141534190473829746,\"class\":500,\"code\":\"locked_account,internal\",\"number\":\"8f2b97e9\",\"fields\":{\"ip\":\"\\\"171.224.84.93\\\"\",\"no_report\":\"true\",\"user_agent\":\"\\\"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36\\\"\"}}\n\tlet ts = displayUTCLogTime(new Date())\n\tlet msg = JSON.stringify({\n\t\tid: Date.now(),\n\t\tclass: 400,\n\t\tcode: 'frontend_error',\n\t\tnumber: line\n\t\t\t.split('')\n\t\t\t.map((c) => c.charCodeAt(0).toString(16).padStart(2, '0'))\n\t\t\t.join(''),\n\t\tfields: {\n\t\t\tmessage: JSON.stringify(message),\n\t\t\tuser_id: userid,\n\t\t\turl: JSON.stringify(location.href),\n\t\t},\n\t})\n\n\txhrsend('POST', 'https://track.subiz.net/collect', `${ts} app ERROR dashboard ${accid} ${line} ${msg}`)\n}\n\nfunction displayUTCLogTime(date) {\n\tlet yyyy = date.getUTCFullYear().toString()\n\tlet yy = yyyy.substr(2, 2)\n\tlet mm = date.getUTCMonth() + 1\n\tlet dd = date.getUTCDate()\n\tlet hh = date.getUTCHours()\n\tlet MM = date.getUTCMinutes()\n\tlet ss = date.getUTCSeconds()\n\n\treturn `${yy}-${pad(mm)}-${pad(dd)} ${pad(hh)}:${pad(MM)}:${pad(ss)}`\n}\n\nfunction pad(v) {\n\tif (v < 10) return `0${v}`\n\treturn `${v}`\n}\n\nfunction dofetch(method, url, body, cb) {\n\tlet headers = {}\n\tif (body) headers['content-type'] = 'text/plain'\n\tfetch(url, {method: method, headers: headers, body: body})\n\t\t.then((res) => res.text().then((text) => cb && cb(text, res.status)))\n\t\t.catch((err) => cb && cb(err, -1))\n}\n\n// xhrsend sends an HTTP request\nvar xhrsend = function (method, url, body, cb) {\n\tif (typeof XMLHttpRequest === 'undefined') return dofetch(method, url, body, cb)\n\tvar request = new XMLHttpRequest()\n\trequest.onreadystatechange = function (e) {\n\t\tif (request.readyState !== 4) return\n\t\tcb && cb(request.responseText, request.status)\n\t\tcb = undefined // dont call cb anymore\n\t}\n\n\trequest.onerror = function () {\n\t\tcb && cb(request.responseText, -1) // network error\n\t\tcb = undefined // dont call cb anymore\n\t}\n\n\trequest.open(method, url)\n\tif (body) request.setRequestHeader('content-type', 'text/plain')\n\trequest.send(body)\n}\n\n// JSON.parse without exception\n// return undefined when input is an invalid JSON\nfunction parseJSON(str) {\n\ttry {\n\t\treturn JSON.parse(str)\n\t} catch (e) {}\n}\n\nfunction Pubsub() {\n\t// holds all subscriptions for all topics\n\t// example {\n\t// topic1: [cb1, cb2],\n\t// topic2: [cb3, cb4],\n\t// }\n\tvar listeners = {}\n\n\t// emit notifies any callback functions that previously\n\t// subscribed to the topic (by the on function)\n\tthis.emit = function (topic) {\n\t\t// skip the first item in arguments, which is the topic\n\t\tvar args = []\n\t\tfor (var i = 1; i < arguments.length; i++) args.push(arguments[i])\n\n\t\tvar cbs = listeners[topic]\n\t\tif (!cbs) return\n\t\tfor (var i = 0; i < cbs.length; i++) cbs[i].apply(undefined, args)\n\t}\n\n\t// register a callback function for a topic\n\t// when something is sent to the topic (by the emit function),\n\t// the callback function will be called\n\tthis.on = function (topic, cb) {\n\t\tif (!listeners[topic]) listeners[topic] = []\n\t\tlisteners[topic].push(cb)\n\t}\n}\n\nfunction randomString(len, base) {\n\tvar str = ''\n\tif (!len || len < 1) len = 10\n\tvar asciiKey\n\tfor (var i = 0; i < len; i++) {\n\t\tif (base) {\n\t\t\tstr += base[Math.floor(Math.random() * base.length)]\n\t\t} else {\n\t\t\tasciiKey = Math.floor(Math.random() * 25 + 97)\n\t\t\tstr += String.fromCharCode(asciiKey)\n\t\t}\n\t}\n\treturn str\n}\n\nmodule.exports = {xhrsend, parseJSON, Pubsub, randomString, logError}\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/wsclient/common.js?\n}");
|
|
89
|
-
|
|
90
|
-
/***/ },
|
|
91
|
-
|
|
92
|
-
/***/ "./node_modules/@subiz/wsclient/realtime.js"
|
|
93
|
-
/*!**************************************************!*\
|
|
94
|
-
!*** ./node_modules/@subiz/wsclient/realtime.js ***!
|
|
95
|
-
\**************************************************/
|
|
96
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
97
|
-
|
|
98
|
-
eval("{var flow = __webpack_require__(/*! @subiz/flow */ \"./node_modules/@subiz/flow/index.js\")\nvar {xhrsend, parseJSON, Pubsub} = __webpack_require__(/*! ./common.js */ \"./node_modules/@subiz/wsclient/common.js\")\n\n// Conn represents a realtime connection between an user and the realtime\n// server (https://rt-0.subiz.com)\n//\n// You can subscribe for realtime events and it will sent you new events\n// as fast as possible through onEvents callback.\n//\n// It will try it best to keep the communication with the realtime\n// server. But if the user is offline for too long or the network can't\n// keep up with incomming events (rarely happend with today internet speed).\n// The connection will be killed. Dead.\n//\n// Once dead, onDead will be called. After that, the connection is\n// useless, all resources will be released.\nfunction Conn(apiUrl, credential, onDead, onEvents, callAPI, accid) {\n\tcallAPI = callAPI || xhrsend // allow hook\n\tcredential = credential || {}\n\tvar lastToken = ''\n\tif (!accid) accid = ''\n\tvar is_dead = false // tell if the connection is dead\n\tvar is_polling_stuck = false // tell if we've having trouble doing /poll\n\tvar is_sub_stuck = true // tell if we've having trouble doing /subscribe\n\n\t// The long polling loop runs sequentially, with each poll starting immediately\n\t// after the previous one completes. If an error occurs, the loop will pause\n\t// using an exponential backoff strategy. It will terminate if an unretryable\n\t// error is encountered.\n\t// The first loop begins after the first subscription call completes successfully\n\tvar MIN_POLL_INTERVAL = 250 // max 4 req/s, in case the server returns instantly instead of holding the long poll\n\tvar last_poll_at = 0\n\tvar polling_started = false // make sure only one polling loop is running\n\tvar startPolling = function () {\n\t\tif (polling_started) return\n\t\tpolling_started = true\n\t\tpolling(0)\n\t}\n\tvar polling = function (backoff) {\n\t\tif (is_dead) return\n\t\tlast_poll_at = Date.now()\n\t\tcallAPI('get', apiUrl + 'poll?token=' + lastToken + '&v=5&account-id=' + accid, undefined, function (body, code) {\n\t\t\tif (is_dead) return\n\t\t\tvar wait = MIN_POLL_INTERVAL - (Date.now() - last_poll_at)\n\t\t\tif (wait < 0) wait = 0\n\t\t\tif (retryable(code)) {\n\t\t\t\tis_polling_stuck = true\n\t\t\t\treturn setTimeout(polling, Math.max(calcNextBackoff(backoff), wait), backoff + 1)\n\t\t\t}\n\n\t\t\tif (code !== 200) {\n\t\t\t\t// unretryable error, should kill\n\t\t\t\tis_polling_stuck = true\n\t\t\t\treturn kill('poll')\n\t\t\t}\n\n\t\t\t// 200, success\n\t\t\tis_polling_stuck = false\n\t\t\tbody = parseJSON(body) || {}\n\t\t\tif (body.host) apiUrl = absUrl(body.host)\n\n\t\t\tvar seqToken = body.sequential_token\n\t\t\t// the server returns a malform payload. We should end\n\t\t\tif (!seqToken) return kill('poll')\n\t\t\tlastToken = seqToken\n\t\t\tonEvents(body.events || [])\n\t\t\tif (wait > 0) return setTimeout(polling, wait, 0)\n\t\t\treturn polling(0)\n\t\t})\n\t}\n\n\tvar subQueue = flow.batch(50, 100, function (topics) {\n\t\tif (is_dead) return Promise.resolve(repeat('dead', topics.length))\n\t\tif (topics.length <= 0) return Promise.resolve([])\n\n\t\tvar resolve\n\t\tvar promise = new Promise((rs) => {\n\t\t\tresolve = rs\n\t\t})\n\n\t\tvar done = false\n\t\tsetTimeout(function () {\n\t\t\tif (!done && !is_dead) is_sub_stuck = true\n\t\t}, 4000)\n\n\t\tsetTimeout(() => {\n\t\t\t// too long, kill\n\t\t\tif (done) return\n\t\t\tdone = true\n\t\t\tis_sub_stuck = true\n\t\t\tresolve(repeat('dead', topics.length))\n\t\t\tif (is_dead) return\n\t\t\tkill('subs')\n\t\t}, 60000)\n\n\t\tflow.loop(function () {\n\t\t\treturn new Promise(function (rs) {\n\t\t\t\tif (is_dead) {\n\t\t\t\t\tresolve(repeat('dead', topics.length))\n\t\t\t\t\treturn rs(false) // break loop\n\t\t\t\t}\n\n\t\t\t\tvar query = '?token=' + lastToken\n\t\t\t\tPromise.resolve()\n\t\t\t\t\t.then(function () {\n\t\t\t\t\t\treturn credential.getAccessToken()\n\t\t\t\t\t})\n\t\t\t\t\t.then(function (access_token) {\n\t\t\t\t\t\tif (is_dead) {\n\t\t\t\t\t\t\tresolve(repeat('dead', topics.length))\n\t\t\t\t\t\t\treturn rs(false) // break loop\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (credential.user_ref) query += '&user_ref=' + encodeURIComponent(credential.user_ref)\n\t\t\t\t\t\telse if (credential.user_mask) query += '&user-mask=' + encodeURIComponent(credential.user_mask)\n\t\t\t\t\t\telse if (access_token) query += '&access-token=' + access_token\n\n\t\t\t\t\t\tvar fullurl =\n\t\t\t\t\t\t\tapiUrl + 'subs' + query + '&v=5&account-id=' + encodeURIComponent(accid || credential.account_id)\n\t\t\t\t\t\tcallAPI('post', fullurl, JSON.stringify({events: topics}), function (body, code) {\n\t\t\t\t\t\t\tif (done) return\n\t\t\t\t\t\t\tif (is_dead) {\n\t\t\t\t\t\t\t\tresolve(repeat('dead', topics.length))\n\t\t\t\t\t\t\t\treturn rs(false) // break loop\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (retryable(code)) {\n\t\t\t\t\t\t\t\tis_sub_stuck = true\n\t\t\t\t\t\t\t\treturn setTimeout(rs, 3000, true)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// unretryable error\n\t\t\t\t\t\t\tif (code !== 200) {\n\t\t\t\t\t\t\t\t// we are unable to start the communication with the realtime server.\n\t\t\t\t\t\t\t\t// Must notify the user by killing the connection\n\t\t\t\t\t\t\t\tkill('subs')\n\t\t\t\t\t\t\t\tresolve(repeat('dead', topics.length))\n\t\t\t\t\t\t\t\treturn rs(false)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tis_sub_stuck = false\n\t\t\t\t\t\t\tdone = true\n\t\t\t\t\t\t\tif (lastToken) {\n\t\t\t\t\t\t\t\tresolve(topics)\n\t\t\t\t\t\t\t\treturn rs(false)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// first time sub, should grab the initial token\n\t\t\t\t\t\t\tbody = parseJSON(body) || {}\n\t\t\t\t\t\t\tvar initialToken = body.initial_token\n\t\t\t\t\t\t\t// the server returns a malform payload. We should end\n\t\t\t\t\t\t\tif (!initialToken) {\n\t\t\t\t\t\t\t\tkill('subs')\n\t\t\t\t\t\t\t\tresolve(repeat('dead', topics.length))\n\t\t\t\t\t\t\t\treturn rs(false) // break loop\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// learn new host\n\t\t\t\t\t\t\tif (body.host) apiUrl = absUrl(body.host)\n\n\t\t\t\t\t\t\tlastToken = initialToken\n\t\t\t\t\t\t\tstartPolling()\n\t\t\t\t\t\t\tresolve(topics)\n\t\t\t\t\t\t\treturn rs(false) // to break the loop\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.catch(function () {\n\t\t\t\t\t\t// getAccessToken failed, retry instead of hanging the loop\n\t\t\t\t\t\tis_sub_stuck = true\n\t\t\t\t\t\tsetTimeout(rs, 3000, true)\n\t\t\t\t\t})\n\t\t\t})\n\t\t})\n\n\t\treturn promise\n\t})\n\n\t// subscribe call /subs API to tell server that we are listening for those events\n\t// this function may start polling loop if it hasn't been started yet\n\t// its safe to call this function multiple times\n\tthis.subscribe = subQueue.push.bind(subQueue)\n\n\tthis.getStatus = function () {\n\t\tif (is_dead) return 'dead'\n\t\tif (is_sub_stuck || is_polling_stuck) return 'connecting'\n\t\treturn 'active'\n\t}\n\n\t// kill force the connection to dead state\n\tvar kill = function (reason) {\n\t\tis_dead = true\n\t\tonDead(reason)\n\t}\n\tthis.kill = kill\n}\n\n// Realtime helps you subscribe and listen realtime event from th\n// realtime server\n// Realtime is just a stronger Conn.\nfunction Realtime(apiUrls, credential, callAPI, accid, skipautoreconnect) {\n\tif (typeof apiUrls === 'string' || apiUrls instanceof String) apiUrls = [apiUrls]\n\tcredential = credential || {}\n\tif (!credential.getAccessToken) {\n\t\tcredential.getAccessToken = function () {\n\t\t\treturn Promise.resolve('')\n\t\t}\n\t}\n\tif (!accid) accid = credential.account_id || ''\n\tvar pubsub = new Pubsub()\n\n\t// holds all topics that realtime must subscribed\n\tvar topics = {}\n\n\t// stop the connection\n\tthis.stop = function () {\n\t\tif (!conn) return\n\t\t// detach before killing so onDead knows this is intentional and\n\t\t// doesn't schedule a reconnect\n\t\tvar oldconn = conn\n\t\tconn = undefined\n\t\toldconn.kill()\n\t\tpubsub.emit('interrupted')\n\t}\n\n\tthis.onEvent = function (cb) {\n\t\treturn pubsub.on('event', cb)\n\t}\n\n\tthis.onInterrupted = function (cb) {\n\t\treturn pubsub.on('interrupted', cb)\n\t}\n\n\tthis.getStatus = function () {\n\t\tif (!conn) return 'dead'\n\t\treturn conn.getStatus()\n\t}\n\n\tvar subscribe = function (events) {\n\t\tif (!conn) return Promise.resolve({error: 'dead'})\n\t\tif (typeof events === 'string') events = [events]\n\t\tif (!Array.isArray(events)) return Promise.resolve({error: 'param should be an array or string'})\n\n\t\t// ignore already subscribed events\n\t\tvar all = []\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tvar topic = events[i]\n\t\t\tif (!topic) continue\n\t\t\tif (topics[topic]) continue\n\t\t\ttopics[topic] = true // mark so next time we wont subscribe this event (topic) again\n\t\t\tall.push(conn.subscribe(topic))\n\t\t}\n\t\tif (all.length === 0) return Promise.resolve({})\n\t\treturn Promise.all(all).then(function () {\n\t\t\tif (!conn || conn.getStatus() == 'dead') return {error: 'dead'}\n\t\t\treturn {}\n\t\t})\n\t}\n\tthis.subscribe = subscribe\n\n\t// reconnect make sure there is alway a Conn running in the background\n\t// if the Conn is dead, it recreate a new one\n\tvar conn\n\tvar reconnect = function () {\n\t\tvar randomUrl = apiUrls[Math.floor(Math.random() * apiUrls.length)]\n\t\tif (conn) {\n\t\t\t// detach before killing so the old conn's onDead doesn't\n\t\t\t// schedule another reconnect (which would kill this new conn,\n\t\t\t// schedule another one, and churn forever)\n\t\t\tvar oldconn = conn\n\t\t\tconn = undefined\n\t\t\toldconn.kill()\n\t\t}\n\t\tvar myconn = new Conn(\n\t\t\trandomUrl,\n\t\t\tcredential,\n\t\t\tfunction (code, body, status) {\n\t\t\t\tif (conn === undefined || myconn != conn) return // outdated\n\t\t\t\tconn = undefined // prevent dupplicate dead fire\n\t\t\t\tpubsub.emit('interrupted', code, body, status)\n\t\t\t\tif (!skipautoreconnect) setTimeout(reconnect, 2000) // reconnect and resubscribe after 2 sec\n\t\t\t},\n\t\t\tfunction (events) {\n\t\t\t\tif (myconn != conn) return\n\t\t\t\tfor (var i = 0; i < events.length; i++) pubsub.emit('event', events[i])\n\t\t\t},\n\t\t\tcallAPI,\n\t\t\taccid,\n\t\t)\n\t\tconn = myconn\n\t\tvar copyTopics = Object.keys(topics)\n\t\ttopics = {}\n\t\t// resubscribe all subscribed events\n\t\treturn subscribe(copyTopics)\n\t}\n\tthis.reconnect = reconnect\n\treconnect()\n}\n\n// calcNextBackoff returns number of seconds we must wait\n// before sending a next request\n// the results is determind based on exponential backoff algorithm\n// see https://en.wikipedia.org/wiki/Exponential_backoff\nfunction calcNextBackoff(attempts) {\n\tvar RECONNECT_INTERVAL = 1000\n\tvar MAX_RECONNECT_INTERVAL = 10000\n\tvar RECONNECT_DECAY = 1.5\n\n\tif (!attempts || attempts === -1) return 0 // first time connect\n\tvar delaytime = RECONNECT_INTERVAL * Math.pow(RECONNECT_DECAY, attempts)\n\treturn Math.min(MAX_RECONNECT_INTERVAL, delaytime)\n}\n\n// retryable decides whether we should resent the HTTP request\n// based on last response or network state\nfunction retryable(code) {\n\t// code = 0 means server return response without CORS header, so we are unable to read it\n\t// code = -1 means the network connection is dead\n\treturn (code >= 500 && code < 600) || code === 0 || code === -1 || code === 429\n}\n\nfunction repeat(ele, n) {\n\tvar arr = []\n\tfor (var i = 0; i < n; i++) arr.push(ele)\n\treturn arr\n}\n\nfunction absUrl(url) {\n\turl = url || ''\n\tif (url.startsWith('//')) return 'https:' + url\n\treturn url\n}\n\nmodule.exports = Realtime\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/@subiz/wsclient/realtime.js?\n}");
|
|
99
|
-
|
|
100
|
-
/***/ },
|
|
101
|
-
|
|
102
|
-
/***/ "./config.js"
|
|
103
|
-
/*!*******************!*\
|
|
104
|
-
!*** ./config.js ***!
|
|
105
|
-
\*******************/
|
|
106
|
-
(module) {
|
|
107
|
-
|
|
108
|
-
eval("{module.exports = {\n ApiURL: 'https://api.sbz.vn/4.0',\n RealtimeURL: 'https://api.sbz.vn/rts/0/',\n FileURL: 'https://vcdn.subiz-cdn.com/file/',\n BaseURL: 'https://widget.sbz.vn'\n};\n\n//# sourceURL=webpack://@subiz/widget-v4/./config.js?\n}");
|
|
109
|
-
|
|
110
|
-
/***/ },
|
|
111
|
-
|
|
112
|
-
/***/ "./inject.js"
|
|
113
|
-
/*!*******************!*\
|
|
114
|
-
!*** ./inject.js ***!
|
|
115
|
-
\*******************/
|
|
116
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
117
|
-
|
|
118
|
-
"use strict";
|
|
119
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _src_lib_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/lib.js */ \"./src/lib.js\");\n\nconst config = __webpack_require__(/*! ./config.js */ \"./config.js\");\nfunction getUrlParameter(name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n var results = regex.exec(location.search);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n}\nfunction runChatbox(subiz) {\n let popup = {\n account_id: 'acqsulrowbxiugvginhw',\n id: 'cpropvrepsupxyuqcxsqu',\n name: 'Khuyến mãi xe hơi',\n type: 'popup',\n created: 1675912199122,\n created_by: 'agqsulrowbxilyzhds',\n updated: 1675912207092,\n updated_by: 'agqsulrowbxilyzhds',\n enabled: true,\n triggers: [{\n type: 'after_pageview'\n }],\n initiative_frequency: {\n once_per_session: true\n },\n locale: 'vi-VN',\n locales: ['vi-VN'],\n popup: {\n position: 'center',\n type: 'modal',\n animation: true,\n show_close_button: true,\n overlay: true,\n text_color: 'rgba(0,0,0,1)',\n font_family: 'Inter',\n font_size: '14px',\n background: 'white',\n spacer: '10',\n theme: 'classic',\n pages: [{\n components: [{\n type: 'text',\n style: {\n font_family: 'Yeseva One',\n color: 'rgba(208,2,27,1)',\n background: 'rgba(0,0,0,0)',\n text_align: 'center',\n font_style: 'normal',\n font_weight: 'bold',\n margin_bottom: '20px',\n font_size: '30px'\n },\n mobile_style: {\n font_family: 'Yeseva One',\n color: 'rgba(208,2,27,1)',\n background: 'rgba(0,0,0,0)',\n text_align: 'center',\n font_style: 'normal',\n font_weight: 'bold',\n margin_bottom: '20px',\n font_size: '20px'\n },\n text: {\n html: 'CƠ HỘI TRONG TAY\\nRINH NGAY XẾ XỊN',\n i18n_html: {\n en_US: 'CƠ HỘI TRONG TAY\\nRINH NGAY XẾ XỊN',\n vi_VN: 'CƠ HỘI TRONG TAY\\nRINH NGAY XẾ XỊN'\n },\n i18n_quill_delta: {}\n }\n }, {\n type: 'text',\n style: {\n text_align: 'center',\n font_style: 'italic',\n font_weight: 'normal',\n margin_bottom: '20px',\n font_size: '16px'\n },\n mobile_style: {\n text_align: 'center',\n font_style: 'italic',\n font_weight: 'normal'\n },\n text: {\n html: 'Lãi suất ưu đãi - Hỗ trợ trả góp 90%\\nCùng dịch vụ hậu mãi đẳng cấp đi kèm nhiều phần quà hấp dẫn khác',\n i18n_html: {\n en_US: 'Lãi suất ưu đãi - Hỗ trợ trả góp 90%\\nCùng dịch vụ hậu mãi đẳng cấp đi kèm nhiều phần quà hấp dẫn khác',\n vi_VN: 'Lãi suất ưu đãi - Hỗ trợ trả góp 90%\\nCùng dịch vụ hậu mãi đẳng cấp đi kèm nhiều phần quà hấp dẫn khác'\n },\n i18n_quill_delta: {}\n }\n }, {\n type: 'form',\n style: {\n margin_bottom: '20px'\n },\n form: {\n fields: [{\n key: 'email',\n label: 'Email',\n i18n_label: {\n en_US: 'Email',\n vi_VN: 'Email'\n },\n is_required: true,\n type: 'email',\n validate: 'email',\n placeholder: 'abc@example.com',\n i18n_placeholder: {\n en_US: 'abc@example.com',\n vi_VN: 'abc@example.com'\n }\n }, {\n key: 'phone',\n label: 'Số điện thoại',\n i18n_label: {\n en_US: 'Số điện thoại',\n vi_VN: 'Số điện thoại'\n },\n is_required: true,\n type: 'text',\n validate: 'phone',\n placeholder: '036123456',\n i18n_placeholder: {\n en_US: '036123456',\n vi_VN: '036123456'\n }\n }]\n }\n }, {\n type: 'buttons',\n style: {\n border_radius: '12px',\n background: 'rgba(174,0,0,1)',\n flex_direction: 'column',\n align_items: 'center'\n },\n buttons: {\n primary_enabled: true,\n primary_actions: [{\n action: 'conversion'\n }, {\n action: 'next_page'\n }],\n primary_text: 'Đăng ký ngay',\n i18n_primary_text: {\n en_US: 'Đăng ký ngay',\n vi_VN: 'Đăng ký ngay'\n },\n secondary_actions: [{\n action: 'close'\n }],\n i18n_secondary_text: {\n vi_VN: 'Đăng ký ngay'\n }\n }\n }, {\n type: 'image',\n style: {\n width: '375px',\n height: '100%',\n background_position: '28.711790393013125% 0%',\n right: '0',\n top: '0'\n },\n mobile_style: {\n width: '100%',\n height: '150px',\n background_position: '0% 51.66666666666666%',\n left: '0',\n top: '0'\n },\n image: {\n url: 'https://images.unsplash.com/photo-1606220838315-056192d5e927?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMjA3fDB8MXxzZWFyY2h8NDJ8fGNhciUzRCUzRCUzRCUzRCUzRCUzRCUzRHxlbnwwfHx8fDE2MjAzNjA3NDc&ixlib=rb-1.2.1&q=80&w=1080'\n }\n }],\n style: {\n background: 'rgba(255,255,255,1)',\n width: '751px',\n height: 'auto',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '40px',\n padding_bottom: '40px',\n margin_left: '0px',\n margin_right: '375px',\n margin_top: '0px',\n margin_bottom: '0px',\n overflow: 'hidden'\n },\n mobile_style: {\n background: 'rgba(255,255,255,1)',\n width: '400px',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '40px',\n padding_bottom: '40px',\n margin_left: '0px',\n margin_right: '0px',\n margin_top: '149px',\n margin_bottom: '0px'\n },\n layout: 'row',\n mobile_layout: 'column'\n }, {\n components: [{\n type: 'text',\n style: {\n text_align: 'center',\n margin_bottom: '10px',\n font_size: '20px'\n },\n mobile_style: {\n text_align: 'center',\n margin_bottom: '10px',\n font_size: '40px'\n },\n text: {\n html: 'Cảm ơn',\n i18n_html: {\n en_US: 'Cảm ơn',\n vi_VN: 'Cảm ơn'\n },\n i18n_quill_delta: {}\n }\n }, {\n type: 'text',\n style: {\n text_align: 'center',\n margin_bottom: '20px',\n font_size: '16px'\n },\n text: {\n html: 'Chúng tôi đã ghi nhận được yêu cầu của bạn',\n i18n_html: {\n en_US: 'Chúng tôi đã ghi nhận được yêu cầu của bạn',\n vi_VN: 'Chúng tôi đã ghi nhận được yêu cầu của bạn'\n },\n i18n_quill_delta: {}\n }\n }, {\n type: 'buttons',\n style: {\n flex_direction: 'column',\n align_items: 'center'\n },\n mobile_style: {\n flex_direction: 'column',\n align_items: 'center'\n },\n buttons: {\n primary_enabled: true,\n primary_actions: [{\n action: 'close'\n }],\n primary_text: 'Đóng',\n i18n_primary_text: {\n en_US: 'Đóng',\n vi_VN: 'Đóng'\n },\n i18n_secondary_text: {\n vi_VN: 'Đóng'\n }\n }\n }],\n style: {\n background: '#fff',\n width: '300px',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '40px',\n padding_bottom: '40px',\n overflow: 'hidden'\n },\n mobile_style: {\n background: '#fff',\n width: '300px',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '40px',\n padding_bottom: '40px'\n }\n }]\n },\n conversion_notification: {\n all_agents: true\n },\n template_categories: ['Xe hơi'],\n template_title: 'Khuyến mãi xe hơi',\n thumbnail_url: 'https://file-subiz.com/fiqzycspqbycpbawhjzbwptpkufqxwin.jpg'\n };\n subiz._overridePlugin([popup]);\n setTimeout(() => {\n subiz.showWidget();\n }, 9000);\n}\nfunction runCallButton(subiz) {\n subiz._overridePlugin([{\n account_id: 'acqsulrowbxiugvginhw',\n id: 'wpwidget',\n name: 'Default all button',\n type: 'call_button',\n created: 1595816243130,\n created_by: 'agqygncqpyaxoujpfc',\n updated: 1622003701148,\n updated_by: 'agqsulrowbxilyzhds',\n enabled: true,\n triggers: [{\n type: 'after_pageview'\n }],\n call_button: {\n hotlines: [],\n thank_title: {},\n thank_message: {},\n recall_title: {},\n primary_color: 'red',\n background: 'black',\n color: 'white',\n message: {\n vi_VN: 'hah '\n },\n layout: 'classic',\n classic_layout: {\n picture_url: '',\n message_style: {}\n },\n image_url: '',\n position: 'bottom_left',\n mobile_position: 'bottom',\n padding_x: 32,\n padding_y: 32,\n mobile_padding_x: 32,\n mobild_padding_y: 32\n }\n }]);\n setTimeout(() => {\n subiz.showWidget();\n }, 9000);\n}\nfunction runPopup(subiz) {\n subiz._overridePlugin([{\n account_id: 'acpxkgumifuoofoosble',\n id: 'cpqzvaubfdqilpipsrqnq',\n name: 'Nhận giảm giá cho sản phẩm mới',\n type: 'popup',\n created: 1621590613931,\n created_by: 'agqsupqkmdtokktfgn',\n updated: 1621590613931,\n updated_by: 'agqsupqkmdtokktfgn',\n enabled: true,\n triggers: [{\n type: 'after_pageview'\n }],\n initiative_frequency: {\n once_per_session: true\n },\n popup: {\n position: 'center',\n type: 'modal',\n animation: true,\n show_close_button: true,\n overlay: true,\n primary_color: '#FDAD15',\n text_color: '#333',\n font_family: 'Inter',\n font_size: '14px',\n background: 'white',\n spacer: '10',\n theme: 'bold',\n pages: [{\n components: [{\n type: 'image',\n style: {\n width: '400px',\n object_fit: 'cover',\n right: '0',\n top: '0',\n bottom: '0px',\n z_index: '1'\n },\n mobile_style: {\n width: '100%',\n height: '180px',\n object_fit: 'cover',\n left: '0',\n top: '0',\n z_index: '2'\n },\n image: {\n url: 'https://file-subiz.com/fiqzhlhsgbrspxwlidwz-template12.png'\n },\n _id: 'tmoffrhu_0'\n }, {\n type: 'text',\n style: {\n font_family: 'Yeseva One',\n font_weight: 'bold',\n margin_bottom: '20px',\n font_size: '30px'\n },\n text: {\n html: 'Ưu đãi 10%'\n },\n _id: 'dxxbepql_1'\n }, {\n type: 'text',\n style: {\n margin_bottom: '10px',\n font_size: '18px'\n },\n mobile_style: {\n margin_bottom: '10px',\n font_size: '16px'\n },\n text: {\n html: 'dành riêng bạn với bộ sưu tập mới'\n },\n _id: 'tufqpinb_2'\n }, {\n type: 'form',\n style: {\n margin_bottom: '20px'\n },\n form: {\n fields: [{\n key: 'email',\n label: 'Email',\n is_required: true,\n type: 'email',\n validate: 'email',\n placeholder: 'abc@example.com'\n }, {\n key: 'phone',\n label: 'Số điện thoại',\n is_required: true,\n type: 'text',\n validate: 'phone',\n placeholder: '036123456'\n }, {\n key: 'single-choice',\n label: 'Single-choice',\n validate: '',\n type: 'single-choice',\n placeholder: 'Vui lòng nhập thông tin',\n options: [{\n value: 'Option 1',\n label: 'Option 1'\n }, {\n value: 'Option 2',\n label: 'Option 2'\n }, {\n value: 'Option 3',\n label: 'Option 3'\n }]\n }, {\n key: 'multiple-choice',\n label: 'Multiple-choice',\n validate: '',\n type: 'multiple-choice',\n placeholder: 'Vui lòng nhập thông tin',\n options: [{\n value: 'Option 1',\n label: 'Option 1'\n }, {\n value: 'Option 2',\n label: 'Option 2'\n }, {\n value: 'Option 3',\n label: 'Option 3'\n }]\n }]\n },\n _id: 'ejmrombp_3'\n }, {\n type: 'social_buttons',\n social_buttons: {\n facebook: 'https://facebook.com',\n zalo: 'https://zalo.com',\n twitter: 'https://twitter.com'\n },\n _id: 'dlfunlyl_1621660199747'\n }, {\n type: 'buttons',\n buttons: {\n primary_enabled: true,\n primary_actions: [{\n action: 'conversion'\n }, {\n action: 'close'\n }],\n primary_text: 'Gửi cảm nhận',\n secondary_actions: [{\n action: 'close'\n }],\n secondary_enabled: true,\n secondary_text: '111'\n },\n _id: 'pvhexnpn_4',\n style: {\n flex_direction: 'row',\n align_items: ''\n }\n }],\n style: {\n width: '900px',\n max_height: '640px',\n padding_left: '40px',\n padding_right: '50px',\n padding_top: '60px',\n padding_bottom: '60px',\n margin_right: '400px',\n overflow: 'auto'\n },\n mobile_style: {\n width: '400px',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '40px',\n padding_bottom: '40px',\n margin_top: '180px'\n }\n }],\n faded_text_color: 'rgba(0, 0, 0, 0.5)'\n },\n conversion_notification: {\n all_agents: true\n },\n template_categories: ['Thời trang'],\n template_tags: ['exclusive', 'subscribe', 'voucher', 'coupon'],\n template_title: 'Nhận giảm giá cho sản phẩm mới',\n thumbnail_url: 'https://file-subiz.com/fiqztqnhkyuysembzrlrwptptemplate12.jpg'\n }]);\n setTimeout(() => subiz._highlight('cpqzspmyykanaidjptyrt', 'padding'), 2000);\n}\nfunction runPopup2(subiz) {\n subiz._overridePlugin([{\n account_id: 'acqsulrowbxiugvginhw',\n id: 'cpqzspmyykanaidjptyrt',\n name: 'Giảm giá 50%',\n type: 'popup',\n created: 1621247075259,\n created_by: 'agqsulrowbxilyzhds',\n updated: 1621247080419,\n updated_by: 'agqsulrowbxilyzhds',\n triggers: [{\n type: 'after_pageview'\n }],\n initiative_frequency: {\n once_per_session: true\n },\n popup: {\n position: 'center',\n type: 'modal',\n animation: true,\n show_close_button: true,\n overlay: true,\n primary_color: '#E36539',\n text_color: '#333',\n font_family: 'Inter',\n font_size: '14px',\n background: 'white',\n spacer: '10',\n theme: 'bold',\n pages: [{\n components: [{\n type: 'image',\n style: {\n width: '100%',\n height: '250px',\n background_position: '15.959999999999999% 100%',\n left: '0px',\n right: 'unset',\n top: '0px',\n bottom: '0px'\n },\n mobile_style: {\n width: '100%',\n height: '240px',\n object_fit: 'cover',\n left: '0',\n top: '0',\n z_index: '2'\n },\n image: {\n url: 'https://images.unsplash.com/photo-1534349735944-2b3a6f7a268f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMjA3fDB8MXxzZWFyY2h8NTJ8fGRpc2NvdW50fGVufDB8fHx8MTYyMDg3OTM2OQ&ixlib=rb-1.2.1&q=80&w=1080'\n },\n _id: 'xmfemhpj_0'\n }, {\n type: 'text',\n style: {\n font_family: 'Yeseva One',\n color: 'rgba(0,0,0,1)',\n text_align: 'center',\n font_weight: 'bold',\n margin_bottom: '20px',\n font_size: '30px'\n },\n mobile_style: {\n color: 'rgba(0,0,0,1)',\n text_align: 'center'\n },\n text: {\n html: 'Ưu đãi 50%\\nDuy nhất hôm nay'\n },\n _id: 'fejonbpq_1'\n }, {\n type: 'countdown',\n countdown: {\n expire_time_type: 'fixed_time',\n fixed_time: 1620925200000,\n visit_time: 60,\n repeat_daily: 720,\n repeat_weekly_min: 710,\n repeat_weekly_weekday: 'thursday',\n skin: 'flip',\n size: 'md'\n },\n _id: 'nsfyytwo_2'\n }, {\n type: 'text',\n style: {\n font_style: 'normal',\n font_weight: 'normal'\n },\n mobile_style: {\n font_style: 'normal',\n font_weight: 'normal'\n },\n text: {\n html: 'Nhanh tay để lại thông tin và trở thành 1 trong những người may mắn nhất'\n },\n _id: 'ocusapvt_3'\n }, {\n type: 'form',\n style: {\n margin_bottom: '20px'\n },\n form: {\n fields: [{\n key: 'text',\n label: 'Họ tên',\n type: 'text',\n options: [{\n label: 'Option 1',\n value: 'Option 1'\n }, {\n label: 'Option 2',\n value: 'Option 2'\n }, {\n label: 'Option 3',\n value: 'Option 3'\n }],\n placeholder: 'Ví dụ: Phan Tuấn N'\n }, {\n key: 'text_1',\n label: 'Số điện thoại',\n type: 'text',\n validate: 'number',\n options: [{\n label: 'Option 1',\n value: 'Option 1'\n }, {\n label: 'Option 2',\n value: 'Option 2'\n }, {\n label: 'Option 3',\n value: 'Option 3'\n }],\n placeholder: 'Vui lòng chính xác số điện thoại của bạn'\n }]\n },\n _id: 'riomfonk_4'\n }, {\n type: 'text',\n text: {\n html: 'Kết nối với chúng tôi qua'\n },\n _id: 'usgjhcjk_5'\n }, {\n type: 'social_buttons',\n social_buttons: {\n facebook: 'https://facebook.com',\n zalo: 'https://zalo.com',\n twitter: 'https://twitter.com'\n },\n _id: 'csugebhm_6'\n }],\n style: {\n width: '800px',\n height: '475px',\n margin_top: '240px',\n margin_right: '0',\n margin_left: '0',\n margin_bottom: '0',\n padding_top: '40px',\n padding_right: '40px',\n padding_left: '40px',\n padding_bottom: '40px',\n background: 'rgba(255, 255, 255)'\n },\n mobile_style: {\n width: '500px',\n padding_left: '40px',\n padding_right: '40px',\n padding_top: '260px',\n padding_bottom: '40px'\n }\n }]\n },\n conversion_notification: {\n all_agents: true\n },\n template_categories: ['Giảm giá'],\n template_tags: ['coupon', 'popup'],\n template_title: 'Giảm giá 50%',\n thumbnail_url: 'https://file-subiz.com/fiqzqszfedfucdsermcywptptemplate19.jpg'\n }]);\n}\nfunction runNoti() {\n subiz._overridePlugin([{\n id: 'fakenoti1',\n name: 'fake notification',\n type: 'notification',\n triggers: [{\n type: 'after_pageview',\n after_pageview_sec: 0,\n enabled: true\n }],\n _dont_close: true,\n notification: {\n background_url: 'http://localhost:8080/36b4573f368ed14e763eed06c05ea6c9.png',\n background_style: {\n border_radius: '10px'\n },\n title_quill_delta: '{\"ops\":[{\"insert\":\"Xin \"},{\"attributes\":{\"bold\":true},\"insert\":\"chao \"},{\"attributes\":{\"bold\":true},\"insert\":{\"dynamicField\":{\"id\":\"myfaxeqluttwlkya\",\"value\":\"Ho tên\",\"key\":\"user.fullname\"}}}]}',\n title_style: {\n color: 'white'\n },\n message_quill_deltas: ['{\"ops\":[{\"insert\":\"Đặt tour 4 ngày 3 đêm Campuchia Thái Lan\"}]}'],\n message_style: {\n color: 'red'\n },\n subtext_style: {},\n avatar_style: {\n border_radius: '50%'\n },\n style: {},\n profiles: [{\n fullname: 'Hoai My',\n avatar_url: 'https://i.pinimg.com/originals/04/4a/78/044a78f85cfd05892a4381f0d7d0a477.jpg'\n }, {\n fullname: 'Giang Te',\n avatar_url: 'https://i1.sndcdn.com/avatars-000600452151-38sfei-t500x500.jpg'\n }, {\n fullname: 'Kieu Thanh',\n avatar_url: 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR3BmF7VcVJ997BQ2Uy449ksRXMNWVDV0T9hohzy7D8iHrCeG2Ob9HpypAspx5piIRj6Cs&usqp=CAU'\n }],\n position: 'bottom-left',\n interval_sec: 8000,\n url: 'https://google.com',\n new_tab: true\n }\n }]);\n}\nasync function run() {\n var accid = getUrlParameter('id') || getUrlParameter('acc_id') || getUrlParameter('account_id') || 'acqsulrowbxiugvginhw';\n let subiz = new _src_lib_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](config.ApiURL, config.FileURL, config.RealtimeURL, true, false);\n window.subiz = subiz;\n await subiz.init({\n account_id: 'acpxkgumifuoofoosble',\n ref: 'thanhtest123'\n }, document.querySelector('.container'));\n return;\n // removed by dead control flow\n\n}\nrun();\n\n//# sourceURL=webpack://@subiz/widget-v4/./inject.js?\n}");
|
|
120
|
-
|
|
121
|
-
/***/ },
|
|
122
|
-
|
|
123
|
-
/***/ "./src/chatbox/AgentsAvatar.js"
|
|
124
|
-
/*!*************************************!*\
|
|
125
|
-
!*** ./src/chatbox/AgentsAvatar.js ***!
|
|
126
|
-
\*************************************/
|
|
127
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
128
|
-
|
|
129
|
-
"use strict";
|
|
130
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ AgentsAvatar)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nfunction AgentsAvatar(props) {\n let accountSetting = props.plugin.chatbox;\n let acc = props.store.matchAccount() || {};\n var tooltippos = props.tooltipPos || 'bottom';\n var mode = props.mode || 'primary';\n if (accountSetting && accountSetting.hide_agent_profile) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `group-avatar group-avatar--${mode}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n alt: \"agent avatar left\",\n class: \"avatar group-avatar--agent-left\",\n src: props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })));\n }\n let agentM = props.store.matchAgent('*');\n var agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(props.agent_ids, id => agentM[id]);\n if (props.agent_ids !== undefined && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(props.agent_ids) == 0) {\n var agids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'header.agent_ids', []);\n agids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(agids, id => !!agentM[id]);\n if (agids.length !== 0) {\n agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(agids, id => agentM[id]);\n } else {\n agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(agentM, agent => agent.type === 'agent');\n }\n }\n agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(agents, ag => !!ag);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(agents) === 0) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `group-avatar group-avatar--${mode}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n alt: \"agent avatar left\",\n class: \"avatar group-avatar--agent-left\",\n src: props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })));\n }\n if (agents.length === 1) {\n var agent = agents[0];\n let avatarurl = agent.avatar_url || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\");\n var groupClass = mode === 'primary' ? 'group-avatar--agent-middle' : 'group-avatar--agent-left';\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `group-avatar group-avatar--${mode}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": agent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n class: `avatar ${groupClass}`,\n alt: \"agent avatar\",\n src: avatarurl\n })));\n }\n if (agents.length === 2) {\n let leftAgent = agents[0];\n let rightAgent = agents[1];\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `group-avatar group-avatar--${mode}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": leftAgent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n alt: \"agent avatar left\",\n class: \"avatar group-avatar--agent-left\",\n src: props.store.replaceFileUrl(leftAgent.avatar_url) || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": rightAgent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n alt: \"agent avatar right\",\n width: 35,\n height: 35,\n class: \"avatar group-avatar--agent-right\",\n src: props.store.replaceFileUrl(rightAgent.avatar_url) || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })));\n }\n let leftAgent = agents[0];\n let middleAgent = agents[1];\n let rightAgent = agents[2];\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `group-avatar group-avatar--${mode}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": leftAgent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n alt: \"agent avatar left\",\n class: \"avatar group-avatar--agent-left\",\n src: props.store.replaceFileUrl(leftAgent.avatar_url) || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": middleAgent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n alt: \"agent avatar middle\",\n width: 35,\n height: 35,\n class: \"avatar group-avatar--agent-middle\",\n src: props.store.replaceFileUrl(middleAgent.avatar_url) || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-inline-block pos-relative\",\n \"data-tooltip\": rightAgent.fullname || acc.name,\n \"data-tooltip-position\": tooltippos\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n width: 35,\n height: 35,\n alt: \"agent avatar right\",\n class: \"avatar group-avatar--agent-right\",\n src: props.store.replaceFileUrl(rightAgent.avatar_url) || props.store.replaceFileUrl(acc.logo_url) || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\")\n })));\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/AgentsAvatar.js?\n}");
|
|
131
|
-
|
|
132
|
-
/***/ },
|
|
133
|
-
|
|
134
|
-
/***/ "./src/chatbox/AudioAttachments.js"
|
|
135
|
-
/*!*****************************************!*\
|
|
136
|
-
!*** ./src/chatbox/AudioAttachments.js ***!
|
|
137
|
-
\*****************************************/
|
|
138
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
139
|
-
|
|
140
|
-
"use strict";
|
|
141
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ AudioAttachments)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\nfunction AudioAttachments(props) {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(props.ev, 'by.type');\n var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(props.ev, 'data.message.attachments', []);\n var audios = [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(attachments, (att, i) => {\n if (!att) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'audio')) audios.push(att);\n });\n if (audios.length === 0) return null;\n var $audios = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(audios, (audio, index) => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n key: index,\n class: `audio-attachment audio-attachment--${byType}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"audio\", {\n class: \"audio-attachment__audio\",\n controls: true\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"source\", {\n src: props.store.replaceFileUrl(audio.url),\n type: audio.mimetype\n })));\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: `message-${byType} message-${byType}-audio`\n }, $audios);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/AudioAttachments.js?\n}");
|
|
142
|
-
|
|
143
|
-
/***/ },
|
|
144
|
-
|
|
145
|
-
/***/ "./src/chatbox/ButtonAttachments.js"
|
|
146
|
-
/*!******************************************!*\
|
|
147
|
-
!*** ./src/chatbox/ButtonAttachments.js ***!
|
|
148
|
-
\******************************************/
|
|
149
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
150
|
-
|
|
151
|
-
"use strict";
|
|
152
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ButtonAttachments)\n/* harmony export */ });\n/* harmony import */ var _Buttons_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Buttons.js */ \"./src/chatbox/Buttons.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nfunction ButtonAttachments(props) {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(props.ev, 'by.type');\n if (byType === 'user') return null;\n let buttons = [];\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(props.ev, 'data.message.attachments', []);\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].each(attachments, (att, i) => {\n if (!att || _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(att, 'type') !== 'button') return;\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].each(_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(att, 'buttons') || [], btn => buttons.push(btn));\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(_Buttons_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n store: props.store,\n buttons: buttons,\n t: props.t\n });\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ButtonAttachments.js?\n}");
|
|
153
|
-
|
|
154
|
-
/***/ },
|
|
155
|
-
|
|
156
|
-
/***/ "./src/chatbox/Buttons.js"
|
|
157
|
-
/*!********************************!*\
|
|
158
|
-
!*** ./src/chatbox/Buttons.js ***!
|
|
159
|
-
\********************************/
|
|
160
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
161
|
-
|
|
162
|
-
"use strict";
|
|
163
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Buttons)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\nfunction Buttons(props) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(props.buttons) === 0) return null;\n var $buttons = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(props.buttons, (button, index) => {\n if (button.type === 'call_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"a\", {\n class: \"url-button-attachment\",\n href: 'tel:' + button.phone_number,\n key: index,\n title: button.title\n }, props.t.i18n(button.i18n_title) || props.t.i18n(button.old_i18n_title) || button.title || `${props.t('call')} ${button.phone_number}`);\n }\n if (button.type === 'url_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"a\", {\n class: \"url-button-attachment\",\n href: button.url,\n target: \"_blank\",\n key: index,\n title: button.title\n }, props.t.i18n(button.i18n_title) || props.t.i18n(button.old_i18n_title) || button.title || button.url);\n }\n if (button.type === 'postback_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"a\", {\n class: \"url-button-attachment\",\n href: \"javascript:;\",\n onClick: _ => props.onSelect(button)\n }, props.t.i18n(button.i18n_title) || button.title);\n }\n if (button.type === 'widget_ask_desktop_notify_button') return null;\n if (button.type === 'widget_ask_contact_info_button') return null;\n return null;\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"button-attachments\"\n }, $buttons);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Buttons.js?\n}");
|
|
164
|
-
|
|
165
|
-
/***/ },
|
|
166
|
-
|
|
167
|
-
/***/ "./src/chatbox/ChatButton.js"
|
|
168
|
-
/*!***********************************!*\
|
|
169
|
-
!*** ./src/chatbox/ChatButton.js ***!
|
|
170
|
-
\***********************************/
|
|
171
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
172
|
-
|
|
173
|
-
"use strict";
|
|
174
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ChatButton)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var _block_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./block.js */ \"./src/chatbox/block.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\nvar defaultBubble = __webpack_require__(/*! ../../assets/img/bubble_default.svg */ \"./assets/img/bubble_default.svg\");\nlet defaultAvatar = __webpack_require__(/*! ../../assets/img/default_avatar.png */ \"./assets/img/default_avatar.png\");\n\n\n\nclass ChatButton extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(props) {\n super(props);\n this.state = {\n hasPreviewDom: false,\n previewExtraCls: 'hidden',\n previewEvent: {},\n ready: false\n };\n this.readyGate = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate();\n this.prepareButtonImage();\n this.props.store.onUpdate(this, _ => this.forceUpdate());\n this.props.store.onConvoEvent(this, ev => {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'type') !== 'message_sent') return;\n let bytype = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n if (bytype !== 'system' && bytype !== 'agent' && bytype !== 'bot') return;\n let message = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message') || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEmptyMessage(message)) return;\n let screen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'screen');\n let minimized = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'minimized');\n if (screen === 'widget') return;\n if (minimized && Date.now() - minimized < Ms30Mins) return;\n if (this.props.store.isMobile()) {\n let mobileDisabled = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.plugin, 'chatbox.greeting.mobile_disabled');\n if (mobileDisabled) {\n this.props.store.updateLastview({\n screen: 'button',\n previewEvent: ev\n });\n this.forceUpdate();\n return;\n }\n }\n let accid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchAccount(), 'id');\n if (accid === 'acsbdpjwipneldivgwcr') {\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev);\n if (cid) this.props.onNewMessageShowWidget && this.props.onNewMessageShowWidget(cid);\n } else {\n this.props.store.updateLastview({\n screen: 'preview',\n previewEvent: ev\n });\n }\n this.forceUpdate();\n });\n this.props.store.onLastview(this, () => {\n let screen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'screen');\n let previewEvent = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'previewEvent') || {};\n let isOpen = screen === 'preview' && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(previewEvent) > 0;\n if (isOpen) {\n this.makeAnimateShowPreview(previewEvent);\n } else {\n this.makeAnimateHidePreview();\n }\n });\n this.loadGreeting();\n }\n fixMissingSetting(chatbox) {\n chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(chatbox);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'desktop_button.background_image_url')) {\n chatbox.desktop_button.background_image_url = this.props.store.replaceFileUrl(chatbox.desktop_button.background_image_url);\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'desktop_button.background_mask_url')) {\n chatbox.desktop_button.background_mask_url = this.props.store.replaceFileUrl(chatbox.desktop_button.background_mask_url);\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'mobile_button.background_image_url')) {\n chatbox.mobile_button.background_image_url = this.props.store.replaceFileUrl(chatbox.mobile_button.background_image_url);\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'mobile_button.background_mask_url')) {\n chatbox.mobile_button.background_mask_url = this.props.store.replaceFileUrl(chatbox.mobile_button.background_mask_url);\n }\n return chatbox;\n }\n render() {\n let accountSetting = this.props.plugin.chatbox;\n let position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.position') || 'right';\n if (this.props.store.isMobile()) {\n position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.position') || position;\n let hiddenButtonMobile = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.hidden');\n if (hiddenButtonMobile) return null;\n }\n let hiddenButtonDesktop = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.hidden');\n if (hiddenButtonDesktop) return null;\n let cls = 'widget-layout widget-layout--' + position;\n if (!this.props.isShow) {\n cls += ' widget-layout--hidden';\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: cls\n }, this.renderPreview(), this.renderButton());\n }\n pickBestGreeting() {\n let convoM = this.props.store.matchConvo('*');\n let unseenConvo = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(convoM, convo => {\n let seen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConvoSeen(convo, this.props.store.matchUser().id);\n return !seen;\n }).sort((a, b) => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(b, 'last_message_sent.created', 0) - _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(a, 'last_message_sent.created', 0));\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(unseenConvo) == 0) {\n if (this.props.store.isMobile()) {\n let accid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.plugin, 'chatbox.account_id', {});\n if (accid === 'acqjeefqeaoiagyfprap') return;\n }\n let greeting = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.plugin, 'chatbox.greeting', {});\n let agentM = this.props.store.matchAgent('*');\n let byid = greeting.agent_id;\n if (!byid) byid = randomAgent(agentM).id;\n let text = this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(greeting, 'greeting', {})) || greeting.message;\n if (!text) return {};\n return {\n by: {\n id: byid,\n type: 'agent'\n },\n data: {\n message: {\n text,\n format: 'plaintext'\n }\n }\n };\n }\n return unseenConvo[0].last_message_sent;\n }\n showPreview(ev) {\n this.props.store.updateLastview({\n screen: 'preview',\n previewEvent: ev\n });\n }\n async makeAnimateShowPreview(ev) {\n await this.readyGate.entry();\n let agent = this.getAgentOfPreviewEvent(ev);\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].preloadImg(agent.avatar_url);\n if (this.state.hasPreviewDom) {\n this.setState({\n previewExtraCls: 'hidden'\n });\n if (this._animateTimeout) clearTimeout(this._animateTimeout);\n this._animateTimeout = setTimeout(() => {\n this.setState({\n previewExtraCls: '',\n previewEvent: ev\n });\n }, 200);\n return;\n }\n this.setState({\n hasPreviewDom: true,\n previewExtraCls: 'hidden',\n previewEvent: {}\n });\n if (this._animateTimeout) clearTimeout(this._animateTimeout);\n this._animateTimeout = setTimeout(() => {\n this.setState({\n previewExtraCls: '',\n previewEvent: ev\n });\n }, 200);\n }\n makeAnimateHidePreview() {\n if (this._animateTimeout) clearTimeout(this._animateTimeout);\n this.setState({\n previewExtraCls: 'hidden'\n });\n this._animateTimeout = setTimeout(() => {\n this.setState({\n hasPreviewDom: false,\n previewEvent: {}\n });\n }, 200);\n }\n ShowGreeting() {\n let ev = this.pickBestGreeting();\n this.showPreview(ev);\n }\n HideGreeting() {\n this.props.store.updateLastview({\n screen: 'button',\n minimized: Date.now(),\n previewEvent: {}\n });\n }\n loadGreeting() {\n let minimized = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'minimized');\n let screen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'screen');\n if (screen !== 'preview') return;\n if (minimized && Date.now() - minimized < Ms30Mins) return;\n let previewEvent = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'previewEvent') || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(previewEvent) > 0) {\n this.showPreview(previewEvent);\n return;\n }\n let accountSetting = this.props.plugin.chatbox;\n let greeting = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'greeting', {});\n let text = this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(greeting, 'greeting', {})) || greeting.message;\n let enabled = greeting.enabled;\n let mobileDisabled = this.props.store.isMobile() && greeting.mobile_disabled;\n if (!text || !enabled || mobileDisabled) {\n return;\n }\n this.ShowGreeting();\n }\n onClick() {\n let lastview = this.props.store.matchLastview();\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'view')) {\n if (lastview.view !== 'list' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(this.props.store.matchConvo('*')) > 0) {\n if (lastview.view == 'chat' && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'opts.cid')) {\n return this.onPreviewClick();\n }\n return this.props.onClick && this.props.onClick(Object.assign({}, lastview.opts, {\n view: lastview.view\n }));\n }\n }\n return this.onPreviewClick();\n }\n onPreviewClick(e) {\n let previewEvent = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'previewEvent') || {};\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(previewEvent);\n if (!cid) {\n let convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.props.store.matchConvo('*'));\n let convo = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convos, convo => !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConvoSeen(convo, this.props.store.matchUser().id));\n if (!convo) convo = convos[0] || {};\n cid = convo.id;\n }\n this.props.onClick && this.props.onClick({\n view: 'chat',\n cid\n });\n }\n renderUnread() {\n let unreadcount = this.props.store.matchUnread();\n if (unreadcount === 0) return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"chat-button--unread\"\n }, unreadcount);\n }\n getAgentOfPreviewEvent(ev) {\n let account = this.props.store.matchAccount();\n let accountSetting = this.props.plugin.chatbox;\n let previewEvent = ev;\n let byid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(previewEvent, 'by.display_id', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(previewEvent, 'by.id'));\n let agent = this.props.store.matchAgent(byid);\n if (!agent) agent = this.props.store.matchAgent('*')[byid] || {};\n agent = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(agent);\n agent.fullname = agent.fullname || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(account, 'name') || this.props.t('agent');\n agent.avatar_url = agent.avatar_url || account.logo_url || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\");\n if (accountSetting && accountSetting.hide_agent_profile) {\n agent = Object.assign({}, account, {\n avatar_url: account.logo_url || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\"),\n fullname: account.name || this.props.t('agent')\n });\n }\n return agent;\n }\n renderPreview() {\n if (!this.state.hasPreviewDom) return;\n let previewEvent = this.state.previewEvent;\n let agent = this.getAgentOfPreviewEvent(previewEvent);\n let account = this.props.store.matchAccount();\n let accountSetting = this.props.plugin.chatbox;\n let position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.position') || 'right';\n if (this.props.store.isMobile()) {\n position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.position') || position;\n }\n let tags = this.renderMessagePreview(previewEvent);\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(previewEvent, 'data.message.attachments') || [];\n let quickReplies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => att.type === 'quick_replies');\n quickReplies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(quickReplies, 'quick_replies') || [];\n quickReplies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].take(quickReplies, 10);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'greeting.hide_quick_replies')) quickReplies = [];\n let imgAtt = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'image') && att.url);\n let uri = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(imgAtt, 'url') || '';\n if (uri && !uri.startsWith('https://') && !uri.startsWith('http://') && !uri.startsWith('content://') && !uri.startsWith('data:')) {\n uri = this.props.store.FileURL + uri;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: `widget-preview-new-wrapper ${this.state.previewExtraCls}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: `widget-preview-x-wrapper ${position} ${this.props.store.isMobile() ? 'mobile' : ''}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview--btn-close\",\n onClick: e => this.closePreview(e)\n })), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: `widget-preview-text-message ${position}`,\n onClick: e => this.onPreviewClick(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview-text-message--header\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"img\", {\n alt: \"widget avatar\",\n class: \"widget-preview--avatar\",\n src: this.props.store.replaceFileUrl(agent.avatar_url)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview-text-message--author\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview-text-message--author-text\"\n }, agent.fullname), accountSetting.is_online && (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"badge badge--success\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"dot dot--success mr-1\"\n }), 'ONLINE'))), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview-text-message--content\"\n }, tags)), uri && (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: `widget-preview-image-wrapper ${position}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"widget-preview-image-item\",\n onClick: () => this.onPreviewClick()\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"img\", {\n src: uri\n }))), _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(quickReplies) > 0 && (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: `widget-preview-quick-reply-wrapper ${position} ${_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(quickReplies) > 4 ? 'horizontal' : ''}`\n }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(quickReplies, reply => {\n if (!(reply.title || '').trim()) return;\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n title: reply.title,\n class: \"widget-preview-quick-reply-item\",\n onClick: () => {\n this.props.onSelectQuickReply({\n text: reply.title,\n format: 'plaintext',\n conversation_id: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(previewEvent),\n attachments: [{\n type: 'postback',\n postback: {\n event_id: previewEvent.id,\n payload: reply.payload\n }\n }]\n });\n }\n }, reply.title);\n })));\n }\n async prepareButtonImage() {\n let accountSetting = this.props.plugin.chatbox;\n accountSetting = this.fixMissingSetting(accountSetting);\n let imgsrc = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_image_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_mask_url') || defaultBubble;\n if (this.props.store.isMobile()) {\n imgsrc = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_image_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_mask_url') || imgsrc;\n }\n imgsrc = this.props.store.replaceFileUrl(imgsrc);\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].preloadImg(imgsrc);\n this.setState({\n ready: true\n });\n this.readyGate.open();\n }\n renderButton() {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_button = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n let accountSetting = this.props.plugin.chatbox;\n accountSetting = this.fixMissingSetting(accountSetting);\n let imgsrc = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_image_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_mask_url') || defaultBubble;\n let background = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'background') || DEF_BG;\n let position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.position') || 'right';\n let imgurl = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_image_url');\n let maskurl = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.background_mask_url');\n let imgwidth = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.width') || 70;\n let imgheight = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.height') || 70;\n if (this.props.store.isMobile()) {\n imgsrc = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_image_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_mask_url') || imgsrc;\n position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.position') || position;\n let mobileimgurl = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_image_url');\n let mobilemaskurl = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.background_mask_url');\n imgwidth = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.width') || 70;\n imgheight = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.height') || 70;\n if (mobileimgurl || mobilemaskurl) {\n imgurl = mobileimgurl;\n maskurl = mobilemaskurl;\n }\n }\n let whitebgcls = 'chat-button--white-bg';\n if (!imgurl && maskurl) whitebgcls += ' chat-button--white-bg--mask-only';\n let imgcontainerstyle = '';\n imgurl = this.props.store.replaceFileUrl(imgurl);\n imgsrc = this.props.store.replaceFileUrl(imgsrc);\n maskurl = this.props.store.replaceFileUrl(maskurl);\n imgurl = addVersionParam(imgurl);\n imgsrc = addVersionParam(imgsrc);\n maskurl = addVersionParam(maskurl);\n if (!imgurl && !maskurl) {\n whitebgcls += ' chat-button--white-bg--mask-only';\n imgcontainerstyle = `\n\t\t\t\t-webkit-mask-image: url(\"${encodeURI(DEF_BG_URL)}\") !important;\n\t\t\t\t-o-mask-image: url(\"${encodeURI(DEF_BG_URL)}\") !important;\n\t\t\t\t-moz-mask-image: url(\"${encodeURI(DEF_BG_URL)}\") !important;\n\t\t\t\tmask-image: url(\"${encodeURI(DEF_BG_URL)}\") !important;\n\t\t\t\theight: ${imgheight}px !important;\n\t\t\t\twidth: ${imgwidth}px !important;\n\t\t\t\tbackground: ${background} !important;\n\t\t\t\tbackground: ${background} !important;\n mask-size: cover !important;\n -webkit-mask-size: cover !important;\n -o-mask-size: cover !important;\n -moz-mask-size: cover !important;\n mask-size: cover !important;\n\t\t\t`;\n }\n if (imgurl && maskurl) {\n imgcontainerstyle = `\n\t\t\t\t-webkit-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\t-o-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\t-moz-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\tmask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\tbackground-image: url(\"${encodeURI(imgurl)}\") !important;\n\t\t\t\tbackground-repeat: no-repeat !important;\n -webkit-mask-size: cover !important;\n -o-mask-size: cover !important;\n -moz-mask-size: cover !important;\n mask-size: cover !important;\n\t\t\t`;\n }\n if (imgurl && !maskurl) {\n imgcontainerstyle = `\n\t\t\t\tbackground-image: url(\"${encodeURI(imgurl)}\") !important;\n\t\t\t\tbackground-repeat: no-repeat !important;\n\t\t\t`;\n }\n if (!imgurl && maskurl) {\n imgcontainerstyle = `\n\t\t\t\t-webkit-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\t-o-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\t-moz-mask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\tmask-image: url(\"${encodeURI(maskurl)}\") !important;\n\t\t\t\theight: ${imgheight}px !important;\n\t\t\t\twidth: ${imgwidth}px !important;\n\t\t\t\tbackground: ${background} !important;\n -webkit-mask-size: cover !important;\n -o-mask-size: cover !important;\n -moz-mask-size: cover !important;\n mask-size: cover !important;\n\t\t\t`;\n }\n let cls = 'chat-button chat-button--' + position;\n let whiteBgStyle = `\n\t\t\twidth: ${imgwidth - 4}px !important;\n\t\t\theight: ${imgheight - 4}px !important;\n\n `;\n if (!this.state.ready) cls += ' hidden';\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: cls,\n onClick: e => this.onClick(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: whitebgcls,\n style: whiteBgStyle\n }), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"chat-button--img-container\",\n style: imgcontainerstyle\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"img\", {\n width: \"70\",\n height: \"70\",\n alt: \"chat button\",\n class: \"chat-button--img\",\n src: imgsrc\n })), this.renderUnread());\n }\n onProfileError(ev) {\n var $el = ev.target;\n $el.src = defaultAvatar;\n this.onProfileReady();\n }\n onChatButtonError(ev) {\n if (this._onChatButtonErrorExecuted) return;\n this._onChatButtonErrorExecuted = true;\n var $el = ev.target;\n $el.src = defaultBubble;\n }\n renderMessagePreview(ev, defmsg) {\n defmsg = defmsg || this.props.t('sent_you_a_message');\n let format = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.format');\n let block = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.block');\n if (block || format == 'block') {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlockEmpty(block)) {\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.attachments');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(attachments) > 0) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", null, `${this.props.t('send')} ${_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(attachments)} ${_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(attachments) > 1 ? this.props.t('attachments') : this.props.t('attachment')}`);\n }\n return defmsg;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(_block_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n block: block\n });\n }\n let message = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.text', defmsg);\n if (!message && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.attachments')) > 0) message = defmsg;\n if (!message) return null;\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n var tags = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extractText(message).map(tag => {\n if (tag.type === 'emoji') return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n emojiCode: tag.text\n });\n return tag.text;\n });\n return tags;\n }\n closePreview(e) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n this.HideGreeting();\n }\n}\nfunction randomAgent(agentM) {\n var agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(agentM, ag => ag.type === 'agent');\n return agents[Math.floor(Math.random() * _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(agents))] || {};\n}\nconst Ms30Mins = 30 * 60 * 1000;\nconst DEF_BG_URL = 'https://vcdn.subiz-cdn.com/file/bubble_11.svg?v=5';\nconst DEF_BG = 'linear-gradient(280.16deg, #0053d3 22.03%, #0265ff 78.2%)';\nfunction addVersionParam(url, version = 8) {\n if (!url) return url;\n try {\n const u = new URL(url);\n u.searchParams.set('v', version);\n return u.toString();\n } catch (e) {\n const [base, hash] = url.split('#');\n const hasQuery = base.includes('?');\n const newUrl = base + (hasQuery ? '&' : '?') + `v=${version}`;\n return hash ? newUrl + '#' + hash : newUrl;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ChatButton.js?\n}");
|
|
175
|
-
|
|
176
|
-
/***/ },
|
|
177
|
-
|
|
178
|
-
/***/ "./src/chatbox/ConnectionStatus.js"
|
|
179
|
-
/*!*****************************************!*\
|
|
180
|
-
!*** ./src/chatbox/ConnectionStatus.js ***!
|
|
181
|
-
\*****************************************/
|
|
182
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
183
|
-
|
|
184
|
-
"use strict";
|
|
185
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ConnectionStatus)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\nclass ConnectionStatus extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"onChangeConnectionStatus\", () => {\n let newstatus = this.props.store.getConnectionStatus();\n let currentstatus = this.state.status;\n this.setState({\n status: newstatus\n });\n if (currentstatus !== 'active' && newstatus === 'active') this.changeStatusFailedToSuccess();\n });\n _defineProperty(this, \"changeStatusFailedToSuccess\", () => {\n this.setState({\n status: 'just_active'\n });\n if (this.props.cid) this.props.store.fetchMoreEvents(this.props.cid);\n if (this._timeout) clearTimeout(this._timeout);\n this._timeout = setTimeout(() => {\n this.setState({\n status: 'active'\n });\n }, 2000);\n });\n this.props.store.onConnection(this, this.onChangeConnectionStatus);\n this.state = {\n status: this.props.store.getConnectionStatus()\n };\n }\n render() {\n if (this.state.status === 'active') return;\n let cls = 'widget-internet-status';\n let text = '';\n if (this.state.status !== 'just_active') {\n cls += ' negative';\n text = `${this.props.t('network_error')}. ${this.props.t('try_reconnecting')}...`;\n } else {\n cls += ' positive';\n text = this.props.t('reconnect_successfully');\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: cls\n }, text);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ConnectionStatus.js?\n}");
|
|
186
|
-
|
|
187
|
-
/***/ },
|
|
188
|
-
|
|
189
|
-
/***/ "./src/chatbox/Emoji.js"
|
|
190
|
-
/*!******************************!*\
|
|
191
|
-
!*** ./src/chatbox/Emoji.js ***!
|
|
192
|
-
\******************************/
|
|
193
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
194
|
-
|
|
195
|
-
"use strict";
|
|
196
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Emoji)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass Emoji extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n render() {\n var emojiCode = this.props.emojiCode;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(emojiCode) < 3) return null;\n var emojiText = emojiCode.replace(/:/g, '');\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"i\", {\n \"data-tooltip\": emojiCode,\n class: `emoji emoji--${emojiText}`\n });\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Emoji.js?\n}");
|
|
197
|
-
|
|
198
|
-
/***/ },
|
|
199
|
-
|
|
200
|
-
/***/ "./src/chatbox/Event.js"
|
|
201
|
-
/*!******************************!*\
|
|
202
|
-
!*** ./src/chatbox/Event.js ***!
|
|
203
|
-
\******************************/
|
|
204
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
205
|
-
|
|
206
|
-
"use strict";
|
|
207
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Event)\n/* harmony export */ });\n/* harmony import */ var _ImageAttachments_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ImageAttachments.js */ \"./src/chatbox/ImageAttachments.js\");\n/* harmony import */ var _AudioAttachments_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AudioAttachments.js */ \"./src/chatbox/AudioAttachments.js\");\n/* harmony import */ var _FileAttachments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FileAttachments.js */ \"./src/chatbox/FileAttachments.js\");\n/* harmony import */ var _ButtonAttachments_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ButtonAttachments.js */ \"./src/chatbox/ButtonAttachments.js\");\n/* harmony import */ var _QuickReplies_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./QuickReplies.js */ \"./src/chatbox/QuickReplies.js\");\n/* harmony import */ var _FormAttachment2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FormAttachment2.js */ \"./src/chatbox/FormAttachment2.js\");\n/* harmony import */ var _FormSubmitAttachments_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FormSubmitAttachments.js */ \"./src/chatbox/FormSubmitAttachments.js\");\n/* harmony import */ var _GenericTemplateAttachments_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./GenericTemplateAttachments.js */ \"./src/chatbox/GenericTemplateAttachments.js\");\n/* harmony import */ var _ProductAttachments_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ProductAttachments.js */ \"./src/chatbox/ProductAttachments.js\");\n/* harmony import */ var _VideoAttachments_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./VideoAttachments.js */ \"./src/chatbox/VideoAttachments.js\");\n/* harmony import */ var _TextMessage_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./TextMessage.js */ \"./src/chatbox/TextMessage.js\");\n/* harmony import */ var _InfoMessage_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./InfoMessage.js */ \"./src/chatbox/InfoMessage.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./time.js */ \"./src/chatbox/time.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\n\n\n\n\nlet OrderAttachments = false;\nconst LoadOrderAttachments = () => __webpack_require__.e(/*! import() */ \"src_chatbox_OrderAttachments_js\").then(() => (__webpack_require__(/*! ./OrderAttachments.js */ \"./src/chatbox/OrderAttachments.js\")));\n\n\n\n\n\n\n\nclass Event extends _common_js__WEBPACK_IMPORTED_MODULE_14__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"focusSourceEventFromQuote\", ev => {\n let $textMessage = this.textMessageRef.current;\n if ($textMessage && typeof $textMessage.focusSourceEventFromQuote === 'function') {\n $textMessage.focusSourceEventFromQuote(ev);\n }\n let $fileAttachment = this.fileAttachmentRef.current;\n if ($fileAttachment && typeof $fileAttachment.focusSourceEventFromQuote === 'function') {\n $fileAttachment.focusSourceEventFromQuote(ev);\n }\n let $imageAttachment = this.imageAttachmentRef.current;\n if ($imageAttachment && typeof $imageAttachment.focusSourceEventFromQuote === 'function') {\n $imageAttachment.focusSourceEventFromQuote(ev);\n }\n });\n _defineProperty(this, \"resendMessage\", () => {\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].convoOfEv(this.props.event.ev);\n const message = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev.data.message');\n this.props.store.sendConvoEvent(cid, 'message_sent', {\n message\n });\n });\n this.props.store.onConvoEvent(this, ev => this.onEvent(ev));\n this.refForm = (0,preact__WEBPACK_IMPORTED_MODULE_15__.createRef)();\n this.state = {\n pongs: _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev.data.message.pongs') || []\n };\n this.textMessageRef = (0,preact__WEBPACK_IMPORTED_MODULE_15__.createRef)();\n this.fileAttachmentRef = (0,preact__WEBPACK_IMPORTED_MODULE_15__.createRef)();\n this.imageAttachmentRef = (0,preact__WEBPACK_IMPORTED_MODULE_15__.createRef)();\n }\n render() {\n var ev = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev', {});\n switch (ev.type) {\n case 'conversation_typing':\n return this.renderTyping();\n case 'conversation_joined':\n break;\n case 'message_sent':\n if (this.props.event.is_typing) return this.renderTyping();\n return this.renderMessageSent();\n case 'conversation_state_updated':\n case 'conversation_rating_requested':\n case 'conversation_rated':\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].startsWith(ev.id, 'ev')) return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_InfoMessage_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n t: this.props.t,\n store: this.props.store,\n ev: this.props.event\n });\n }\n return null;\n }\n focus() {\n this.refForm.current && this.refForm.current.focus();\n }\n onEvent(ev) {\n if (ev.id !== _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev.id')) return;\n this.setState({\n pongs: _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.pongs') || []\n });\n }\n hasLike() {\n let {\n pongs\n } = this.state;\n return !!_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].find(pongs, pong => pong.type === 'like');\n }\n hasDislike() {\n let {\n pongs\n } = this.state;\n return !!_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].find(pongs, pong => pong.type === 'dislike');\n }\n chooseQuickReply(reply) {\n let ev = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev', {});\n let message = {\n text: reply.title,\n format: 'plaintext'\n };\n if (reply.payload) {\n message.attachments = [{\n type: 'postback',\n postback: {\n event_id: ev.id,\n payload: reply.payload\n }\n }];\n }\n this.props.onSend(message);\n }\n choosePostbackBtn(button) {\n let ev = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev', {});\n let message = {\n text: button.title,\n format: 'plaintext'\n };\n if (button.payload) {\n message.attachments = [{\n type: 'postback',\n postback: {\n event_id: ev.id,\n payload: button.payload\n }\n }];\n }\n this.props.onSend(message);\n }\n renderAgentAvatar(ev) {\n let bytype = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.type');\n let byid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.display_id', _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.id'));\n if (bytype === 'user') return null;\n var senderName = this.getSenderName(ev);\n let acc = this.props.store.matchAccount();\n var uri = acc.logo_url || __webpack_require__(/*! ../../assets/img/image_default.png */ \"./assets/img/image_default.png\");\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props, 'chatbox.hide_agent_profile')) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-sender\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"img\", {\n alt: \"sender\",\n class: \"message-sender-avatar\",\n src: this.props.store.replaceFileUrl(uri)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"p\", {\n class: \"message-sender-name\"\n }, acc.name));\n }\n let agentM = this.props.store.matchAgent('*');\n if (byid !== 'system' && bytype !== 'dummy' && bytype !== 'workflow') {\n uri = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(agentM[byid], 'avatar_url') || acc.logo_url || __webpack_require__(/*! ../../assets/img/default_avatar.png */ \"./assets/img/default_avatar.png\");\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-sender\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"img\", {\n alt: \"sender\",\n class: \"message-sender-avatar\",\n src: this.props.store.replaceFileUrl(uri)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"p\", {\n class: \"message-sender-name\"\n }, senderName));\n }\n tryLoadOrder(ev) {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.type');\n if (byType === 'user') return;\n let acc = this.props.store.matchAccount();\n var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.attachments', []);\n let orders = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].filter(attachments, att => att.type === 'order' && att.order).map(att => att.order);\n if (orders.length === 0) return;\n if (!OrderAttachments) _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].setTimeout(async () => {\n OrderAttachments = (await LoadOrderAttachments()).default;\n });\n }\n renderTyping() {\n if (!this.props.event.is_show) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n key: 'container',\n class: \"convo-event agent-message\",\n style: \"opacity: 0 !important\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"agent-convo-event-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"agent-convo-event-inner\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-agent message-text--agent\",\n style: \"opacity: 0.6 !important\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n style: \"height: 20px !important; width: 35px !important\"\n })))));\n }\n var html = `\n<html>\n <head>\n <style>\n .typing-container {\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n gap: 4px;\n justify-content: center;\n }\n .typing-dot {\n display: inline-block;\n vertical-align: middle;\n width: 8px;\n height: 8px;\n background: black;\n border-radius: 50%;\n animation: typing 0.5s infinite alternate;\n }\n .typing-dot:nth-of-type(2) {\n animation-delay: 0.2s;\n }\n .typing-dot:nth-of-type(3) {\n animation-delay: 0.6s;\n }\n @keyframes typing {\n 0% {\n opacity: 0.9;\n }\n 100% {\n opacity: 0.4;\n }\n }\n </style>\n </head>\n <body style=\"padding: 0; margin: 0\">\n <div class=\"typing-container\">\n <span class=\"typing-dot\"></span>\n <span class=\"typing-dot\"></span>\n <span class=\"typing-dot\"></span>\n </div>\n </body>\n</html>\n`;\n let src = 'data:text/html,' + encodeURIComponent(html);\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n key: 'container',\n class: \"convo-event agent-message\",\n style: \"opacity: 0.6 !important\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"agent-convo-event-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"agent-convo-event-inner\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-agent message-text--agent\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"iframe\", {\n src: src,\n style: \"width: 35px !important; height: 20px !important; display: block !important; overflow: hidden !important; padding: 0 !important \"\n })))));\n }\n renderMessageSent() {\n let ev = this.props.event.ev;\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.attachments');\n let hasForm = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].find(attachments, att => att.type === 'form');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].isEmptyMessage(_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message'))) return null;\n this.tryLoadOrder(ev);\n let t = new _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Date(ev.created).toLocaleString();\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.type') !== 'user') {\n let $sender = null;\n if (this.props.event.mode === 'lead') $sender = this.renderAgentAvatar(ev);\n let innercls = 'agent-convo-event-inner';\n if (this.props.isLast) innercls += ' last';\n let wrappercls = 'agent-convo-event-wrapper';\n if (hasForm) wrappercls += ' full';\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"convo-event agent-message\",\n \"data-ev-id\": ev.id\n }, $sender, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: wrappercls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: innercls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_TextMessage_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n ref: this.textMessageRef,\n onFocusSourceEventFromQuote: this.props.onFocusSourceEventFromQuote,\n showTime: this.props.event.show_time,\n isLast: this.props.isLast,\n store: this.props.store,\n t: this.props.t,\n ev: ev,\n onLink: this.props.onLink\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ImageAttachments_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n ref: this.imageAttachmentRef,\n store: this.props.store,\n ev: ev,\n focusSourceEventFromQuote: this.props.focusSourceEventFromQuote\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_AudioAttachments_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_VideoAttachments_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FileAttachments_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n ref: this.fileAttachmentRef,\n store: this.props.store,\n ev: ev,\n focusSourceEventFromQuote: this.props.focusSourceEventFromQuote\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ButtonAttachments_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n store: this.props.store,\n ev: ev,\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FormAttachment2_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n store: this.props.store,\n ev: ev,\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FormSubmitAttachments_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n store: this.props.store,\n ev: ev,\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_GenericTemplateAttachments_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n store: this.props.store,\n ev: ev,\n onSelect: e => this.choosePostbackBtn(e),\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ProductAttachments_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n t: this.props.t,\n onPostback: e => this.choosePostbackBtn(e),\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(OrderAttachments, {\n t: this.props.t,\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_QuickReplies_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n store: this.props.store,\n ev: ev,\n onSelect: e => this.chooseQuickReply(e)\n }), this.renderReactions(), this.renderAIDevNote())));\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.idempotency_key') === ev.id && this.props.store.now() - ev.created < 900) {\n _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].setTimeout(() => this.setState({\n refresh: this.state.refresh\n }), 1000);\n }\n let $dot = (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"sending_dot\"\n });\n if (this.props.store.now() - ev.created < 900 || _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.idempotency_key') !== ev.id) {\n $dot = (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"sending_dot sending_dot__hide\"\n });\n }\n let $sender = null;\n if (this.props.event.mode === 'lead' && _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.type') !== 'user') $sender = (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"pt-3\"\n });\n let $error = null;\n if (ev._error) $dot = null;\n if (ev._error && ev.type === 'message_sent') {\n let msg = this.props.t('error_send_message');\n if (ev._error_message) msg = this.props.t(ev._error_message);\n $error = (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"a\", {\n class: \"message_error\",\n src: \"javascript:;\",\n onClick: this.resendMessage\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message_error__icon\"\n }), \"\\xA0\", (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message_error__text\"\n }, msg));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"convo-event user-message\",\n \"data-ev-id\": ev.id\n }, $sender, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-user__container\"\n }, $dot, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_TextMessage_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n ref: this.textMessageRef,\n store: this.props.store,\n ev: ev,\n refresh: this.state.refresh,\n onLink: this.props.onLink\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ImageAttachments_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n store: this.props.store,\n ev: ev,\n ref: this.imageAttachmentRef\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_AudioAttachments_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_VideoAttachments_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FileAttachments_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n store: this.props.store,\n ev: ev,\n ref: this.fileAttachmentRef\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ButtonAttachments_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n store: this.props.store,\n ev: ev,\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FormAttachment2_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n store: this.props.store,\n t: this.props.t,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_ProductAttachments_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n t: this.props.t,\n store: this.props.store,\n ev: ev\n }), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(_FormSubmitAttachments_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n store: this.props.store,\n ev: ev\n })), $error);\n }\n async onSendReaction(action) {\n if (this._reacting) return;\n let ev = this.props.event.ev;\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.conversation_id');\n ev = {\n type: 'message_pong',\n data: {\n message: {\n id: ev.id,\n pongs: [{\n type: action\n }],\n conversion_id: cid\n }\n }\n };\n if (action == 'dislike' && this.props.store.isAIDevMode()) {\n this.props.store.emitConvoEvent({\n type: 'bad_feedbacked',\n data: {\n event: ev,\n id: ev.id,\n conversion_id: cid\n }\n });\n }\n let {\n pongs\n } = this.state;\n if (action === 'like') {\n pongs = pongs.filter(pong => pong.type !== 'dislike');\n pongs.push({\n type: 'like'\n });\n } else if (action === 'dislike') {\n pongs = pongs.filter(pong => pong.type !== 'like');\n pongs.push({\n type: 'dislike'\n });\n } else if (action === 'remove_like') {\n pongs = pongs.filter(pong => pong.type !== 'like');\n } else if (action === 'remove_dislike') {\n pongs = pongs.filter(pong => pong.type !== 'dislike');\n }\n this.setState({\n pongs\n });\n this._reacting = true;\n let res = await this.props.store.sendReaction(cid, ev);\n this._reacting = false;\n }\n renderReactions() {\n if (this.props.store.isAIDevMode()) return null;\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event.ev, 'data.message.conversation_id', '');\n if (cid.startsWith('cslight')) return null;\n let ev = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev') || {};\n let isDeleted = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.deleted');\n if (isDeleted) return;\n let pongs = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.pongs') || [];\n let hasLike = this.hasLike();\n let hasDislike = this.hasDislike();\n let likecls = 'message-event-action-btn';\n if (hasLike) likecls += ' active';\n let dislikecls = 'message-event-action-btn';\n if (hasDislike) dislikecls += ' active';\n let actionscls = 'message-event-actions';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'is_end')) actionscls += ' ended';\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(preact__WEBPACK_IMPORTED_MODULE_15__.Fragment, null, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: actionscls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: likecls,\n onClick: () => this.onSendReaction(hasLike ? 'remove_like' : 'like')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg like\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: dislikecls,\n onClick: () => this.onSendReaction(hasDislike ? 'remove_dislike' : 'dislike')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg dislike\"\n }))), _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'is_end') && !this.props.isConvoEnded && (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-actions-static\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: likecls,\n onClick: () => this.onSendReaction(hasLike ? 'remove_like' : 'like')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg like\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: dislikecls,\n onClick: () => this.onSendReaction(hasDislike ? 'remove_dislike' : 'dislike')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg dislike\"\n }))));\n }\n renderAIDevNote() {\n if (!this.props.store.isAIDevMode()) return null;\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event.ev, 'data.message.conversation_id', '');\n if (cid.startsWith('cslight')) return null;\n let ev = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(this.props.event, 'ev') || {};\n let pongs = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.message.pongs') || [];\n let hasLike = this.hasLike();\n let hasDislike = this.hasDislike();\n let likecls = 'message-event-action-btn message-event-action-btn__dev message-event-action-btn_like';\n if (hasLike) likecls += ' active';\n let dislikecls = 'message-event-action-btn message-event-action-btn__dev message-event-action-btn_dislike';\n if (hasDislike) dislikecls += ' active';\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-actions-static\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: likecls,\n onClick: () => this.onSendReaction(hasLike ? 'remove_like' : 'like')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg like\"\n }), \" Good\"), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: dislikecls,\n onClick: () => this.onSendReaction(hasDislike ? 'remove_dislike' : 'dislike')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg dislike\"\n }), \" Bad\"), (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn message-event-action-btn__dev\",\n onClick: () => this.props.store.onShowMessageInfo(ev.id)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-event-action-btn-svg info\"\n }), \" Info\"));\n }\n renderUpdateConvo(ev) {\n var state = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'data.conversation.state');\n if (state === 'active') return null;\n if (state === 'pending') return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_15__.h)(\"div\", {\n class: \"message-system\"\n }, this.props.t('conversation_state_updated', {\n state\n }));\n }\n getSenderName(ev) {\n let bytype = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.type');\n let byid = _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.display_id', _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].get(ev, 'by.id')) || '';\n if (bytype === 'user') return _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].getUserDisplayName(this.props.store.matchUser());\n let acc = this.props.store.matchAccount();\n if (bytype === 'agent') return _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].getAgentDisplayName(acc, this.props.store.matchAgent(byid));\n if (byid.startsWith('at')) return _util_index_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"].getAgentDisplayName(acc, this.props.store.matchAgent(byid));\n if (bytype === 'bot') {\n let bot = this.props.store.matchBot()[byid];\n if (!bot) return 'Bot';\n return bot.fullname || 'Bot';\n }\n if (byid === 'system' || bytype === 'dummy' || bytype === 'workflow') return acc.name || 'system';\n return acc.name;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Event.js?\n}");
|
|
208
|
-
|
|
209
|
-
/***/ },
|
|
210
|
-
|
|
211
|
-
/***/ "./src/chatbox/Events.js"
|
|
212
|
-
/*!*******************************!*\
|
|
213
|
-
!*** ./src/chatbox/Events.js ***!
|
|
214
|
-
\*******************************/
|
|
215
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
216
|
-
|
|
217
|
-
"use strict";
|
|
218
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Events)\n/* harmony export */ });\n/* harmony import */ var _Event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Event.js */ \"./src/chatbox/Event.js\");\n/* harmony import */ var _PoweredBy_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PoweredBy.js */ \"./src/chatbox/PoweredBy.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _spinner_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spinner.js */ \"./src/chatbox/spinner.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\nconst convoemptyimg = __webpack_require__(/*! ../../assets/img/convos_empty.svg */ \"./assets/img/convos_empty.svg\");\n\n\n\n\nclass Events extends _common_js__WEBPACK_IMPORTED_MODULE_4__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"onFocusSourceEventFromQuote\", ev => {\n let ref = this.evRefs[ev.id];\n if (ref) {\n ref.focusSourceEventFromQuote(ev);\n }\n });\n this.props.store.onUpdate(this, _ => this.forceUpdate());\n this.props.store.onConvoEvent(this, ev => this.onEvent(ev));\n this.loadConvo();\n this.refBody = null;\n this.evRefs = {};\n this.checkAndSeen = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].throttle(() => {\n if (this.props.isShow && this.isBottom() && this.props.store.browserVisibility === 'visible' && document.hasFocus()) {\n this.props.store.seenConvo(this.props.cid);\n }\n }, 500);\n this.checkAndSeen();\n }\n componentDidMount() {\n this.setState({\n isShowTyping: false,\n typing_event: {}\n });\n this.props.store.onConvoEvent(this, ev => {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].convoOfEv(ev) !== this.props.cid) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'by.type') === 'user') return;\n let oldby = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.state.typing_event, 'by.id');\n if (oldby && _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'by.id') !== oldby) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'type') === 'message_sent') {\n if (this.timer) _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clearTimeout(this.timer);\n this.timer = null;\n this.setState({\n isShowTyping: false\n });\n return;\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'type') !== 'conversation_typing') return;\n let ag = this.props.store.matchAgent(_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'by.id')) || {};\n if (ag.type == 'agent' && !_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.plugin, 'chatbox.show_agent_typing')) return;\n this.setState({\n typing_event: ev,\n isShowTyping: true\n });\n if (this.timer) _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clearTimeout(this.timer);\n this.timer = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setTimeout(() => {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].convoOfEv(ev) !== this.props.cid) return;\n this.timer = null;\n this.setState({\n isShowTyping: false\n });\n }, 5000);\n });\n this.props.store.onMessageUpdated(this, async ev => {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].convoOfEv(ev) !== this.props.cid) return;\n await this.props.store.reloadConvoEvents(this.props.cid);\n this.forceUpdate();\n });\n }\n componentDidUpdate(prevProps) {\n if (prevProps.cid !== this.props.cid) this.loadConvo();\n }\n setEventChildRef(ele, id) {\n this.evRefs[id] = ele;\n }\n ShowTyping() {\n this.setState({\n isShowTyping: true,\n typing_event: {\n id: 'evzz' + _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now(),\n created: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now(),\n by: {\n type: 'agent'\n },\n type: 'conversation_typing'\n }\n });\n if (this.timer) _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clearTimeout(this.timer);\n this.timer = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setTimeout(() => {\n this.timer = null;\n this.setState({\n isShowTyping: false\n });\n }, 5000);\n }\n render() {\n if (this.state.error) return this.renderError();\n let events = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(this.props.store.listEvents(this.props.cid));\n if (!this.state.loading && _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].size(events) === 0 && !this.props.cid) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n ref: ref => this.refBody = ref,\n class: \"widget-body--events-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget-body--empty\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget-body--empty-icon\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget-body--empty-text\"\n }, this.props.t('empty_convo_text'))), (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_PoweredBy_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n store: this.props.store\n }));\n }\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].orderBy(events, 'created', 'asc');\n let convo = this.props.store.matchConvo(this.props.cid);\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(events, ev => ({\n ev: ev\n }));\n let ev = this.state.typing_event || {\n id: 'evzz' + _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now(),\n created: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now(),\n by: {\n type: 'agent'\n }\n };\n let fakeev = {\n is_typing: true,\n is_show: this.state.isShowTyping,\n id: ev.id,\n ev: {\n id: ev.id,\n created: ev.created,\n by: ev.by,\n type: 'message_sent',\n data: {\n message: {\n text: '...',\n conversation_id: this.props.cid\n }\n }\n }\n };\n processEvents(convo, events);\n events.push(fakeev);\n let $events = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(events, ev => {\n let isLast = ev.is_last_message_send && _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(convo, 'state') !== 'ended';\n return (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_Event_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n isLast: isLast,\n chatbox: this.props.chatbox,\n onLink: this.props.onLink,\n store: this.props.store,\n onFormSubmit: this.props.onFormSubmit,\n onSend: this.props.onSend,\n onPostback: this.props.onPostback,\n onFocusSourceEventFromQuote: this.onFocusSourceEventFromQuote,\n ref: ele => this.setEventChildRef(ele, ev.ev.id),\n isConvoEnded: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(convo, 'state') === 'ended',\n event: ev,\n t: this.props.t,\n key: ev.ev.id\n });\n });\n let $loading = null;\n let style = 'opacity: 1 !important';\n if (this.props.creating) {\n $loading = (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_spinner_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n static: true,\n mode: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.chatbox, 'primary_color', 'dark'),\n size: \"120\",\n center: true\n });\n style = 'opacity: 0 !important';\n }\n if (this.state.loading) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now() - this.state.loading > 500) {\n $loading = (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_spinner_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n static: true,\n mode: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.chatbox, 'primary_color', 'dark'),\n size: \"120\",\n center: true\n });\n style = 'opacity: 0 !important';\n }\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(preact__WEBPACK_IMPORTED_MODULE_5__.Fragment, null, $loading, (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n style: style,\n ref: ref => this.refBody = ref,\n class: \"widget-body--events-container\",\n onMouseOver: this.checkAndSeen\n }, (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget-body--events\"\n }, $events), (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_PoweredBy_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n store: this.props.store\n })));\n }\n renderError() {\n let $tryAgainBtn = (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"a\", {\n href: \"#\",\n onclick: _ => this.loadConvo()\n }, this.props.t('try_again'));\n if (this.state.loading) $tryAgainBtn = (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(_spinner_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"16\",\n mode: \"blue\"\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget-body--events-container widget-body--events-container__error\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"img\", {\n alt: \"empty\",\n class: \"widget_body_empty_img\",\n src: convoemptyimg\n }), (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget_body__events__error_msg\"\n }, this.props.t('load_convo_error')), (0,preact__WEBPACK_IMPORTED_MODULE_5__.h)(\"div\", {\n class: \"widget_body__events__error_retry\"\n }, $tryAgainBtn));\n }\n focus() {\n let events = this.props.store.listEvents(this.props.cid);\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].orderBy(_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(events), 'created', 'desc');\n var last_agent_sent;\n for (let ev of events) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'type') !== 'message_sent') continue;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'by.type') === 'user') continue;\n last_agent_sent = ev;\n break;\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(last_agent_sent, 'by.type') === 'user') last_agent_sent = null;\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(last_agent_sent, 'data.message.attachments', []);\n let convo = this.props.store.matchConvo(this.props.cid);\n let pendingForms = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].filter(attachments, att => {\n if (!att) return false;\n if (att.type !== 'form' && att.type !== 'ask_info_form') return false;\n var form = att.form;\n if (!form) return false;\n var state = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(form.state) || {};\n if (!state.require_finished && att.type !== 'ask_info_form') return false;\n if (isSummited(att.form)) return false;\n if (convo.state === 'ended') return false;\n return true;\n });\n }\n onEvent(newev) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].convoOfEv(newev) !== this.props.cid) return;\n let isBottom = this.isBottom();\n var byme = false;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(newev, 'type') === 'message_sent' && newev.id === _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(newev, 'data.message.idempotency_key')) byme = true;\n if (byme || isBottom) this.scrollToBottom();\n }\n async loadConvo() {\n if (!this.props.cid) return;\n this.lastContentOffsetY = 0;\n this.setState({\n loading: false\n });\n let events = this.props.store.listEvents(this.props.cid);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].size(events) === 0) {\n this.setState({\n loading: _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Date.now()\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setTimeout(() => {\n this.forceUpdate();\n }, 800);\n let cid = this.props.cid;\n let {\n error\n } = await this.props.store.fetchMoreEvents(cid);\n this.setState({\n loading: false\n });\n if (cid !== this.props.cid) return;\n if (error) {\n this.setState({\n error: true\n });\n return;\n }\n }\n this.props.store.fetchMoreEvents(this.props.cid);\n this.setState({\n error: false\n });\n this.scrollToBottom();\n }\n isBottom() {\n let $container = this.refBody;\n if (!$container) return false;\n return $container.scrollHeight < $container.scrollTop + $container.offsetHeight + 50;\n }\n scrollToBottom() {\n _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setTimeout(() => {\n const $div = this.refBody;\n if ($div) $div.scrollTop = $div.scrollHeight;\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setTimeout(() => {\n const $div = this.refBody;\n if ($div) $div.scrollTop = $div.scrollHeight;\n }, 100);\n if (this.props.isShow) {\n if (this.props.store.browserVisibility === 'visible' && document.hasFocus()) {\n this.props.store.seenConvo(this.props.cid);\n }\n }\n }\n}\nfunction processEvents(convo, events) {\n events = events.filter(event => visibleEvent(event.ev));\n if (events.length < 1) return;\n var lastAgentEvent;\n for (var i = 1; i < events.length; i++) {\n let curEvent = events[i];\n let lastEvent = events[i - 1];\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(curEvent, 'ev.by.type') != 'user' && !curEvent.is_typing) {\n lastAgentEvent = curEvent;\n }\n if (visibleEvent(curEvent.ev)) {\n let elapsedSec = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].unixSec(curEvent.ev.created) - _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].unixSec(lastEvent.ev.created);\n if (elapsedSec > 300) curEvent.show_time = true;\n }\n }\n if (lastAgentEvent) lastAgentEvent.show_time = true;\n for (var i = 0; i < events.length; i++) {\n let curEvent = events[i];\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(curEvent, 'ev.type') === 'message_sent') {\n curEvent.show_time = true;\n break;\n }\n }\n let lastMsgSentIdx = -1;\n for (var i = 0; i < events.length; i++) {\n let curEvent = events[i];\n let prevEvent = events[i - 1];\n let nextEvent = events[i + 1];\n if (curEvent.ev.type === 'message_sent') {\n lastMsgSentIdx = i;\n curEvent.mode = 'lead';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(prevEvent, 'ev.type') === 'message_sent' && _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(prevEvent, 'ev.by.id') === _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(curEvent, 'ev.by.id')) {\n curEvent.mode = 'follow';\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(nextEvent, 'ev.type') !== 'message_sent' || _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(nextEvent, 'ev.by.id') !== _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(curEvent, 'ev.by.id')) {\n curEvent.is_end = true;\n }\n continue;\n }\n }\n if (lastMsgSentIdx > -1) {\n events[lastMsgSentIdx].is_last_message_send = true;\n }\n}\nfunction visibleEvent(ev) {\n let type = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'type');\n if (type === 'message_sent') return true;\n if (type === 'conversation_state_updated') {\n return _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(ev, 'data.conversation.state') == 'ended';\n }\n}\nfunction isSummited(form) {\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(form, 'fields') || [];\n return _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(fields, field => !!field.answered);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Events.js?\n}");
|
|
219
|
-
|
|
220
|
-
/***/ },
|
|
221
|
-
|
|
222
|
-
/***/ "./src/chatbox/FileAttachments.js"
|
|
223
|
-
/*!****************************************!*\
|
|
224
|
-
!*** ./src/chatbox/FileAttachments.js ***!
|
|
225
|
-
\****************************************/
|
|
226
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
227
|
-
|
|
228
|
-
"use strict";
|
|
229
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FileAttachments)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass FileAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n this.state = {\n focusedIdx: -1\n };\n }\n render() {\n var byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type', 'agent');\n if (byType !== 'user') byType = 'agent';\n var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n var files = [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(attachments, (att, idx) => {\n if (!att) return;\n if (!att.url && !att._file) return;\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'video') && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'audio') && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'image') && att.type !== 'button' && att.type !== 'quick_replies' && att.type !== 'form' && att.type !== 'form_submit') {\n files.push({\n ...att,\n _true_idx: idx\n });\n }\n });\n if (files.length === 0) return null;\n let $files = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(files, (file, index) => {\n let cls = `file-attachment file-attachment--${byType}`;\n if (file._true_idx === this.state.focusedIdx) cls += ` just-focused`;\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n key: index,\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n class: \"file-attachment--link\",\n href: this.props.store.replaceFileUrl(file.url),\n target: \"_blank\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"span\", {\n class: \"file-attachment--download mr-2\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"span\", {\n class: \"file-attachment--filename\"\n }, file.name)));\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `message-${byType}`\n }, $files);\n }\n focusSourceEventFromQuote(ev) {\n if (ev.id !== this.props.ev.id) return;\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.fields') || [];\n let attachmentIndexField = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(fields, f => f.key === 'attachment_index');\n let attachmentIndex = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(attachmentIndexField, 'value');\n try {\n attachmentIndex = JSON.parse(attachmentIndex);\n } catch (err) {\n attachmentIndex = undefined;\n }\n if (attachmentIndex === undefined) return;\n this.setState({\n focusedIdx: attachmentIndex\n });\n if (this.focusTimeout) clearTimeout(this.focusTimeout);\n this.focusTimeout = setTimeout(() => {\n this.setState({\n focusedIdx: -1\n });\n }, 3000);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/FileAttachments.js?\n}");
|
|
230
|
-
|
|
231
|
-
/***/ },
|
|
232
|
-
|
|
233
|
-
/***/ "./src/chatbox/FormAttachment2.js"
|
|
234
|
-
/*!****************************************!*\
|
|
235
|
-
!*** ./src/chatbox/FormAttachment2.js ***!
|
|
236
|
-
\****************************************/
|
|
237
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
238
|
-
|
|
239
|
-
"use strict";
|
|
240
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FormAttachment)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _form_Form_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../form/Form.js */ \"./src/form/Form.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\nclass FormAttachment extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"fetchFormSetting\", () => {\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments') || [];\n let formAttachment = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => att.type === 'form');\n if (!formAttachment) return;\n let url = formAttachment.url;\n this.token = getUrlParameter(url, 'token');\n let formSetting = formAttachment.form || {};\n let submission = formAttachment.form_submission || {};\n let isSubmited = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(submission) > 0;\n this.setState({\n formSetting,\n submission,\n isSubmited\n });\n });\n _defineProperty(this, \"onChangeFormValues\", values => {\n this.setState({\n submission: {\n values\n }\n });\n });\n _defineProperty(this, \"onSubmit\", async () => {\n this.setState({\n errorMessage: ''\n });\n if (this.state.submiting) return;\n this.setState({\n submiting: true\n });\n let res = await this.props.store.submitForm2(this.props.store.matchAccount().id, this.token, this.state.submission);\n if (res.error) {\n this.setState({\n submiting: false,\n errorMessage: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(res, 'error.code')\n });\n return;\n }\n this.setState({\n submiting: false,\n isSubmited: true\n });\n });\n this.state = {\n submission: {},\n formSetting: {},\n submiting: false,\n errorMessage: '',\n isSubmited: false\n };\n }\n componentDidMount() {\n this.fetchFormSetting();\n }\n render() {\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments') || [];\n let formAttachment = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => att.type === 'form');\n if (!formAttachment) return;\n const {\n submission,\n formSetting,\n errorMessage,\n isSubmited,\n submiting\n } = this.state;\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: e => e.stopPropagation()\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(_form_Form_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n store: this.props.store,\n formSetting: formSetting,\n mode: \"attachment\",\n t: this.props.t,\n submission: submission,\n errorMessage: errorMessage,\n isSubmited: isSubmited,\n submiting: submiting,\n onChangeFormValues: this.onChangeFormValues,\n onSubmit: this.onSubmit\n }));\n }\n}\nfunction getUrlParameter(url, name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n var results = regex.exec(url);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/FormAttachment2.js?\n}");
|
|
241
|
-
|
|
242
|
-
/***/ },
|
|
243
|
-
|
|
244
|
-
/***/ "./src/chatbox/FormSubmitAttachments.js"
|
|
245
|
-
/*!**********************************************!*\
|
|
246
|
-
!*** ./src/chatbox/FormSubmitAttachments.js ***!
|
|
247
|
-
\**********************************************/
|
|
248
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
249
|
-
|
|
250
|
-
"use strict";
|
|
251
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ FormSubmitAttachments)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass FormSubmitAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n }\n render() {\n return null;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/FormSubmitAttachments.js?\n}");
|
|
252
|
-
|
|
253
|
-
/***/ },
|
|
254
|
-
|
|
255
|
-
/***/ "./src/chatbox/GenericTemplateAttachments.js"
|
|
256
|
-
/*!***************************************************!*\
|
|
257
|
-
!*** ./src/chatbox/GenericTemplateAttachments.js ***!
|
|
258
|
-
\***************************************************/
|
|
259
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
260
|
-
|
|
261
|
-
"use strict";
|
|
262
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ GenericTemplateAttachments)\n/* harmony export */ });\n/* harmony import */ var _Buttons_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Buttons.js */ \"./src/chatbox/Buttons.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _touchscroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./touchscroll */ \"./src/chatbox/touchscroll.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\n\n\nclass GenericTemplateAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_3__.Com {\n constructor(props) {\n super(props);\n this.state = {\n focusing: 0\n };\n this.galleryRef = (0,preact__WEBPACK_IMPORTED_MODULE_4__.createRef)();\n }\n componentDidMount() {\n this.bindDrag();\n }\n focus(eleindex) {\n this.setState({\n focusing: eleindex\n });\n this.galleryRef.current.scrollTo({\n left: 220 * eleindex,\n behavior: 'smooth'\n });\n }\n render() {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(this.props.ev, 'by.type');\n if (byType === 'user') return null;\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n let generics = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(attachments, att => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(att, 'type') === 'generic');\n if (generics.length === 0) return null;\n var $generics = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(generics, (gen, index) => {\n var $eles = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(gen.elements, ele => {\n let title = this.props.t.i18n(ele.i18n_title) || ele.title;\n let subtitle = this.props.t.i18n(ele.i18n_subtitle) || ele.subtitle;\n let $title = title ? (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"generic-attachment--element-title\"\n }, title) : null;\n let $subtitle = subtitle ? (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"generic-attachment--element-subtitle\",\n title: subtitle\n }, subtitle) : null;\n let imgsrc = this.props.store.replaceFileUrl(ele.image_url);\n if (!ele.image_url) {\n imgsrc = __webpack_require__(/*! ../../assets/img/default.jpg */ \"./assets/img/default.jpg\");\n }\n let defaultActionUrl = ['url_button', 'web_url'].includes(_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(ele, 'default_action.type')) && _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(ele, 'default_action.url');\n let cls = 'generic-attachment--element swiper-slide';\n if (defaultActionUrl) cls += ' clickable';\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: cls,\n onClick: () => defaultActionUrl && window.open(defaultActionUrl, '_blank')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"img\", {\n alt: \"generic attachment element\",\n class: \"generic-attachment--element-img\",\n src: imgsrc\n })), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"generic-attachment--element-content\"\n }, $title, $subtitle), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(_Buttons_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n buttons: ele.buttons,\n onSelect: button => this.props.onSelect(button),\n t: this.props.t\n }));\n });\n let elements = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(attachments, '0.elements', []);\n let leftNavigatorCls = 'generic-attachment-navigator generic-attachment-navigator--left';\n let rightNavigatorCls = 'generic-attachment-navigator generic-attachment-navigator--right';\n if (this.state.focusing === 0) leftNavigatorCls += ' generic-attachment-navigator--disabled';\n if (this.state.focusing === elements.length - 1) rightNavigatorCls += ' generic-attachment-navigator--disabled';\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"generic-attachment-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: \"generic-attachment\",\n ref: this.galleryRef\n }, $eles), !this.props.store.isMobile() && (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(preact__WEBPACK_IMPORTED_MODULE_4__.Fragment, null, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: leftNavigatorCls,\n onClick: _ => this.focus(this.state.focusing - 1)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"span\", {\n class: \"generic-attachment-navigator-icon\"\n }, \"\\u2039\")), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: rightNavigatorCls,\n onClick: _ => this.focus(this.state.focusing + 1)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"span\", {\n class: \"generic-attachment-navigator-icon\"\n }, \"\\u203A\"))));\n });\n return $generics;\n }\n bindDrag() {\n if (!this.props.store.isMobile()) return;\n let eles = document.getElementsByClassName('generic-attachment');\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(eles, ele => (0,_touchscroll__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ele, () => {}));\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/GenericTemplateAttachments.js?\n}");
|
|
263
|
-
|
|
264
|
-
/***/ },
|
|
265
|
-
|
|
266
|
-
/***/ "./src/chatbox/Header.js"
|
|
267
|
-
/*!*******************************!*\
|
|
268
|
-
!*** ./src/chatbox/Header.js ***!
|
|
269
|
-
\*******************************/
|
|
270
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
271
|
-
|
|
272
|
-
"use strict";
|
|
273
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Header)\n/* harmony export */ });\n/* harmony import */ var _AgentsAvatar_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AgentsAvatar.js */ \"./src/chatbox/AgentsAvatar.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\nclass Header extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"renderAgentAvatar\", () => {\n let accSetting = this.props.plugin.chatbox || {};\n let agids = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.agent_ids') || [];\n let agent = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(this.props.store.matchAgent(agids[0]));\n let logoUrl = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(agent, 'avatar_url_128') || _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(agent, 'avatar_url');\n if (!logoUrl) return;\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n width: 38,\n height: 38,\n class: \"avatar avatar__account\",\n src: this.props.store.replaceFileUrl(logoUrl) || __webpack_require__(/*! ../../assets/img/default_logo.svg */ \"./assets/img/default_logo.svg\")\n });\n });\n }\n renderAccountAvatar() {\n let acc = this.props.store.matchAccount() || {};\n let accSetting = this.props.plugin.chatbox || {};\n let logo_url = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.logo_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(acc, 'logo_url');\n if (!logo_url) return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n width: 38,\n height: 38,\n alt: acc.name,\n class: \"avatar avatar__account\",\n src: this.props.store.replaceFileUrl(logo_url) || __webpack_require__(/*! ../../assets/img/default_logo.svg */ \"./assets/img/default_logo.svg\")\n });\n }\n render() {\n let headerMode = 'collapsed';\n let cls = 'widget-header';\n let renderSocial = false;\n let renderTeam = false;\n let accSetting = this.props.plugin.chatbox || {};\n let layout = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.layout');\n let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';\n let renderClassic = !renderCollapsed && layout === 'classic';\n if (renderCollapsed || layout == 'classic') {\n cls += ' widget-header--collapsed';\n } else {\n cls += ' widget-header--convo-expanded';\n renderSocial = layout === 'social';\n renderTeam = !(renderSocial || renderClassic);\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls\n }, this.renderCollapsedHeader(renderCollapsed || renderClassic, renderClassic), this.renderSocial(renderSocial), this.renderTeam(renderTeam));\n }\n renderCollapsedHeader(show, classic) {\n let accSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n let state = acc.is_online ? this.props.t('agent_online') : this.props.t('agent_offline');\n let tagline = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, `tagline`, {});\n let desc = this.props.t.i18n(tagline) || accSetting.introduction || state;\n let agentIdsJoined = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(this.getAgentJoined(this.props.cid), agent => agent.id);\n let cls = 'widget-header--inner widget-header--inner--collapsed';\n if (!show) cls += ' widget-header--inner--hidden';\n let $back = null;\n let style = '';\n if (!classic) $back = this.renderBackButton();else style = 'padding-bottom: 75px !important;';\n let layout = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.layout');\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls,\n style: style\n }, $back, layout === 'agent' ? this.renderAgentAvatar() : this.renderAccountAvatar(), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--title-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--title\"\n }, this.getTitle()), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--description\",\n title: desc\n }, desc)), this.renderCloseButton());\n }\n renderSocial(show) {\n let accSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n let links = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.links') || [];\n let $links = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(links, link => {\n if (!link.url || !link.type || link.type === 'subiz') return null;\n if (link.type === 'email') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n href: `mailto:${link.url}`,\n title: link.url\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"i\", {\n class: `social__links-logo social__links-logo--${link.type}`\n })));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n href: link.url,\n target: \"_blank\",\n title: link.url\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"i\", {\n class: `social__links-logo social__links-logo--${link.type}`\n })));\n });\n const DEFTEAMINTO = `Chúng tôi sẵn sàng trợ giúp :wave:.\nVui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi của bạn`;\n let tagline = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, `tagline`, {});\n var teamintro = this.props.t.i18n(tagline) || accSetting.introduction || this.props.t('team_intro') || DEFTEAMINTO;\n var tags = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extractText(teamintro).map(tag => {\n if (tag.type === 'emoji') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n emojiCode: tag.text\n });\n return tag.text;\n });\n let cls = 'widget-header--inner widget-header--inner--expanded';\n if (!show) cls += ' widget-header--inner--hidden';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header-expand-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--top-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--title\"\n }, this.getTitle()), this.renderCloseButton()), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget_header__body widget_header__body__social\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n alt: \"logo\",\n class: \"social__account_logo\",\n src: this.props.store.replaceFileUrl(_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, 'header.logo_url') || _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(acc, 'logo_url'))\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"social__introduction\"\n }, tags), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"social__links\"\n }, $links)))));\n }\n renderTeam(show) {\n let accSetting = this.props.plugin.chatbox || {};\n const DEFTEAMINTO = `Chúng tôi sẵn sàng trợ giúp :wave:.\nVui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi của bạn`;\n let tagline = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(accSetting, `tagline`, {});\n var teamintro = this.props.t.i18n(tagline) || accSetting.introduction || this.props.t('team_intro') || DEFTEAMINTO;\n var tags = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].extractText(teamintro).map(tag => {\n if (tag.type === 'emoji') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n emojiCode: tag.text\n });\n return tag.text;\n });\n let cls = 'widget-header--inner widget-header--inner--expanded';\n if (!show) cls += ' widget-header--inner--hidden';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header-expand-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--top-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--title\"\n }, this.getTitle()), this.renderCloseButton()), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget_header__body\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--avatar-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_AgentsAvatar_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n plugin: this.props.plugin,\n store: this.props.store,\n mode: \"primary\",\n agent_ids: []\n })), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--title-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--description\"\n }, tags)))));\n }\n getTitle() {\n let accSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n let agentsJoined = this.getAgentJoined(this.props.cid);\n let caption = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(this.props.plugin, 'chatbox.caption', {});\n let title = this.props.t.i18n(caption) || accSetting.title;\n return getJoinedNameMember(agentsJoined) || title || acc.name || this.props.t('widget_title');\n }\n renderBackButton() {\n let allconvos = this.props.store.matchConvo('*');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].size(allconvos) === 0) return null;\n var $unreadcount = null;\n let user = this.props.store.matchUser();\n if (!user || !user.id) return null;\n let unreadcount = 0;\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(allconvos, convo => {\n if (convo.id == this.props.cid) return;\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isConvoSeen(convo, user.id)) unreadcount++;\n });\n if (unreadcount !== 0) {\n $unreadcount = (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"span\", {\n class: \"widget-header--total-unread-convo\"\n }, unreadcount);\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: `widget-header--wrap-button-back ${unreadcount ? 'widget-header--has-convo-unred' : ''}`,\n onClick: e => this.onBackClick(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--button-back\",\n \"data-tooltip\": this.props.t('menu_back')\n }), $unreadcount);\n }\n renderCloseButton() {\n let accSetting = this.props.plugin.chatbox || {};\n if (accSetting.hide_close_button) return null;\n if (this.props.store.isEmbededChatMode()) return;\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"widget-header--button-close\",\n \"data-tooltip\": this.props.t('close'),\n \"data-tooltip-position\": \"bottom\",\n onClick: e => this.onCloseClick(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"span\", {\n class: \"widget-header--button-close-icon\"\n }));\n }\n onBackClick(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onGotoList && this.props.onGotoList();\n }\n onCloseClick(e) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onClose && this.props.onClose();\n }\n getAgentJoined(cid) {\n var convo = this.props.store.matchConvo(cid) || {};\n let joined = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(convo.members, mem => mem.type === 'agent' && mem.membership === 'active');\n return joined;\n }\n}\nlet getJoinedNameMember = agents => {\n agents = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(agents, agent => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].trim(agent.fullname));\n if (!agents.length) return null;\n return _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(agents, agent => agent.fullname).join(', ');\n};\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Header.js?\n}");
|
|
274
|
-
|
|
275
|
-
/***/ },
|
|
276
|
-
|
|
277
|
-
/***/ "./src/chatbox/ImageAttachments.js"
|
|
278
|
-
/*!*****************************************!*\
|
|
279
|
-
!*** ./src/chatbox/ImageAttachments.js ***!
|
|
280
|
-
\*****************************************/
|
|
281
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
282
|
-
|
|
283
|
-
"use strict";
|
|
284
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ImageAttachment)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\nclass ImageAttachment extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"containerRef\", (0,preact__WEBPACK_IMPORTED_MODULE_2__.createRef)());\n this.setState({\n ready: false,\n errorIndecies: [],\n focusedIdx: -1\n });\n }\n componentDidMount() {\n this.setImageFrameDimension();\n }\n focusSourceEventFromQuote(ev) {\n if (ev.id !== this.props.ev.id) return;\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.fields') || [];\n let attachmentIndexField = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(fields, f => f.key === 'attachment_index');\n let attachmentIndex = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(attachmentIndexField, 'value');\n try {\n attachmentIndex = JSON.parse(attachmentIndex);\n } catch (err) {\n attachmentIndex = undefined;\n }\n if (attachmentIndex === undefined) return;\n this.setState({\n focusedIdx: attachmentIndex\n });\n if (this.focusTimeout) clearTimeout(this.focusTimeout);\n this.focusTimeout = setTimeout(() => {\n this.setState({\n focusedIdx: -1\n });\n }, 3000);\n }\n setImageFrameDimension() {\n const MAX_HEIGHT = 240;\n const DEFAULT_MAX_WIDTH = 267;\n let $container = this.containerRef.current;\n this.frameWidth = $container ? $container.parentNode.parentNode.offsetWidth : DEFAULT_MAX_WIDTH;\n this.frameHeight = MAX_HEIGHT;\n this.setState({\n ready: true\n });\n }\n onErrorImage(index) {\n let indecies = this.state.errorIndecies || [];\n indecies.push(index);\n indecies = [...indecies];\n this.setState({\n errorIndecies: indecies\n });\n }\n calculateImageDimension(image) {\n if (!image.width || !image.height) return {\n width: this.frameWidth,\n height: this.frameHeight\n };\n let ratio = image.width / image.height - this.frameWidth / this.frameHeight;\n if (ratio >= 0) {\n let width = this.frameWidth;\n let height = image.height * this.frameWidth / image.width;\n height = Math.round(height);\n return {\n width,\n height\n };\n } else {\n let height = this.frameHeight;\n let width = image.width * this.frameHeight / image.height;\n width = Math.round(width);\n return {\n width,\n height\n };\n }\n }\n renderImage(image, index) {\n if (!this.state.ready) {\n return;\n }\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n if (byType !== 'user') byType = 'agent';\n let cls = `image-attachment image-attachment--${byType}`;\n if (image._true_idx === this.state.focusedIdx) cls += ' just-focused';\n if (!image.width || !image.height) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n href: this.props.store.replaceFileUrl(image.url),\n target: \"_blank\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n alt: true,\n class: \"image-attachment__img\",\n src: this.props.store.replaceFileUrl(image.thumbnail_url || image.url),\n onload: e => this.props.onLoad && this.props.onLoad()\n })));\n }\n let {\n width,\n height\n } = this.calculateImageDimension(image);\n let url = this.props.store.replaceFileUrl(image.thumbnail_url || image.url);\n let trueUrl = this.props.store.replaceFileUrl(image.url);\n if (this.state.errorIndecies.includes(index)) {\n url = __webpack_require__(/*! ../../assets/img/default.jpg */ \"./assets/img/default.jpg\");\n trueUrl = url;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n href: trueUrl,\n target: \"_blank\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n alt: true,\n ref: el => {\n if (el) {\n el.style.setProperty('width', `${width}px`, 'important');\n el.style.setProperty('height', `${height}px`, 'important');\n }\n },\n class: \"image-attachment__img\",\n src: url,\n onload: e => this.props.onLoad && this.props.onLoad(),\n onerror: e => this.onErrorImage(index)\n })));\n }\n render() {\n var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n var images = [];\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n if (byType !== 'user') byType = 'agent';\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(attachments, (att, i) => {\n if (!att) return;\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'image')) return;\n if (!att.url) return;\n var uri = att.url;\n if (!uri.startsWith('https://') && !uri.startsWith('http://') && !uri.startsWith('content://') && !uri.startsWith('data:')) {\n att.url = this.props.store.FileURL + uri;\n }\n images.push({\n ...att,\n _true_idx: i\n });\n });\n if (images.length === 0) return null;\n let $images = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(images, (image, index) => this.renderImage(image, index));\n if (byType === 'agent') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"message-agent\",\n ref: this.containerRef\n }, $images);\n } else {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"message-user message-user-images-container\",\n ref: this.containerRef\n }, $images);\n }\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ImageAttachments.js?\n}");
|
|
285
|
-
|
|
286
|
-
/***/ },
|
|
287
|
-
|
|
288
|
-
/***/ "./src/chatbox/InfoMessage.js"
|
|
289
|
-
/*!************************************!*\
|
|
290
|
-
!*** ./src/chatbox/InfoMessage.js ***!
|
|
291
|
-
\************************************/
|
|
292
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
293
|
-
|
|
294
|
-
"use strict";
|
|
295
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ InfoMessage)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\nfunction getRateLang(rating) {\n if (!rating) return 'poor';\n if (rating < 2) return 'poor';\n if (rating < 4) return 'average';\n return 'great';\n}\n;\n\nclass InfoMessage extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n render() {\n let ev = this.props.ev.ev;\n if (ev.type === 'conversation_rated') {\n var rating = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.conversation.ratings.0', {\n no_rating: true,\n rating: 0\n });\n if (rating.no_rating) return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"convo-event\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"info-message\"\n }, this.props.t('rated_as') + ' ' + this.props.t(getRateLang(rating.rating)).toLowerCase()));\n }\n if (ev.type === 'conversation_state_updated' && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.conversation.state') === 'ended') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"convo-event\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"info-message\"\n }, this.props.t('conversation_ended')));\n }\n return null;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/InfoMessage.js?\n}");
|
|
296
|
-
|
|
297
|
-
/***/ },
|
|
298
|
-
|
|
299
|
-
/***/ "./src/chatbox/ListField.js"
|
|
300
|
-
/*!**********************************!*\
|
|
301
|
-
!*** ./src/chatbox/ListField.js ***!
|
|
302
|
-
\**********************************/
|
|
303
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
304
|
-
|
|
305
|
-
"use strict";
|
|
306
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ListField)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass ListField extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n this.setState({\n search: '',\n isShow: false\n });\n }\n render() {\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(this.props.items, item => {\n let search = this.state.search.toLowerCase();\n let name = item || '';\n return name.toLowerCase().indexOf(search) > -1;\n });\n let $fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(fields, field => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"li\", {\n class: \"custom-select--item-options\",\n onClick: () => this.add(field)\n }, field);\n });\n let $selected = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.props.selected, (item, i) => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"custom-select--selected-item\",\n onClick: e => this.remove(e, i)\n }, item, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"i\", {\n class: \"icn-delete delete-tag\"\n }));\n });\n let $dropdown = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"custom-select--wrap-options\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"input\", {\n onClick: e => {\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n isShow: true\n });\n },\n type: \"text\",\n onInput: e => this.setState({\n search: e.target.value\n }),\n value: this.state.search,\n placeholder: \"T\\xECm ki\\u1EBFm\",\n class: \"custom-select--input-search\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"ul\", {\n class: \"custom-select--items-options\"\n }, $fields));\n if (!this.state.isShow) {\n $dropdown = null;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"form-control custom-select\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(_common_js__WEBPACK_IMPORTED_MODULE_1__.Clickaway, {\n onClickaway: e => this.clickaway()\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"custom-select--wrap-selected\",\n onClick: () => this.setState({\n isShow: !this.state.isShow\n })\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"custom-select--selected-items\"\n }, $selected), $dropdown, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"custom-select--icon-dropdown\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"svg\", {\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"g\", {\n opacity: \"0.6\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"path\", {\n d: \"M7 9.5L12 14.5L17 9.5H7Z\",\n fill: \"black\"\n })))))));\n }\n clickaway() {\n this.setState({\n isShow: false\n });\n }\n add(field) {\n this.props.onAddItem && this.props.onAddItem(field);\n }\n remove(e, index) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onRemoveItem && this.props.onRemoveItem(index);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ListField.js?\n}");
|
|
307
|
-
|
|
308
|
-
/***/ },
|
|
309
|
-
|
|
310
|
-
/***/ "./src/chatbox/MessageInput.js"
|
|
311
|
-
/*!*************************************!*\
|
|
312
|
-
!*** ./src/chatbox/MessageInput.js ***!
|
|
313
|
-
\*************************************/
|
|
314
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
315
|
-
|
|
316
|
-
"use strict";
|
|
317
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MessageInput)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _spinner_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./spinner.js */ \"./src/chatbox/spinner.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\nclass MessageInput extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"onEnter\", _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].throttle(function () {\n this.submitMessage();\n }, 50));\n this.refFileInput = (0,preact__WEBPACK_IMPORTED_MODULE_2__.createRef)();\n this.refMessageInput = (0,preact__WEBPACK_IMPORTED_MODULE_2__.createRef)();\n this.props.store.onUpdate(this, _ => this.forceUpdate());\n this.props.store.onConvoEvent(this, ev => {\n var evcid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev);\n if (evcid !== this.props.cid) return;\n this.forceUpdate();\n });\n this.focus();\n this._forceUpdate = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].throttle(() => {\n this.forceUpdate();\n }, 500);\n this.resizeInput = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].throttle(function () {\n const input = this.refMessageInput.current;\n if (!input) return;\n input.style.setProperty('height', '1em', 'important');\n const height = Math.min(200, input.scrollHeight);\n input.style.setProperty('height', `${height}px`, 'important');\n }, 5);\n }\n blur() {\n const $input = this.refMessageInput.current;\n if (!$input) return;\n $input.blur();\n }\n render() {\n var $buttons = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-flex flex-row align-self-end\"\n }, this.renderEmoji(), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n \"data-tooltip-poasition\": \"top-left\",\n class: \"message-input--button message-input--attachment-button\",\n onClick: e => this.selectFile(e)\n }));\n var msg = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(this.state.msgValue);\n if (msg.length > 0) {\n $buttons = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-flex flex-row align-self-end\"\n }, this.renderEmoji(), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n \"data-tooltip-position\": \"top-left\",\n class: \"message-input--button message-input--send-button\",\n onClick: () => this.submitMessage()\n }));\n }\n if (this.props.is_loading) {\n $buttons = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"d-flex flex-row align-self-end\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(_spinner_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"32\"\n }));\n }\n var containercls = '';\n var disabled = this.hasUnfinishRequiredFormOrLock() || this.props.disabled;\n if (disabled || this.props.is_loading) containercls = 'message-input--disabled';\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `message-input ${containercls}`,\n onClick: e => {\n this.refMessageInput.current && this.refMessageInput.current.focus();\n }\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"input\", {\n class: \"d-none\",\n ref: this.refFileInput,\n type: \"file\",\n onChange: e => this.sendFile(e),\n multiple: true\n }), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"textarea\", {\n disabled: disabled,\n class: \"message-input--input\",\n maxlength: \"1024\",\n placeholder: this.props.t('message_input_help').substr(0, 25),\n ref: this.refMessageInput,\n rows: \"1\",\n value: this.state.msgValue,\n onInput: e => this.onChange(e),\n onPaste: e => this.pasteImage(e),\n \"data-emojiable\": \"true\",\n onKeydown: e => this.onKeydown(e)\n }), $buttons);\n }\n hasUnfinishRequiredFormOrLock() {\n let convo = this.props.store.matchConvo(this.props.cid);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'state') === 'ended') return false;\n let events = this.props.store.listEvents(this.props.cid);\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].orderBy(events, 'created', 'desc').filter(ev => ev.type === 'message_sent');\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(events[0], 'data.message.attachments', []);\n let lock = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(att, 'lock_input'));\n if (lock) return true;\n var last_agent_sent;\n for (let ev of events) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type') === 'user') continue;\n last_agent_sent = ev;\n break;\n }\n attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(last_agent_sent, 'data.message.attachments', []);\n let pendingForms = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(attachments, att => {\n if (!att) return false;\n if (att.type !== 'form' && att.type !== 'ask_info_form') return false;\n var form = att.form;\n if (!form) return false;\n var state = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parseJSON(form.state) || {};\n if (!state.require_finished && att.type !== 'ask_info_form') return false;\n if (isSummited(att.form)) return false;\n return true;\n });\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(pendingForms) > 0;\n }\n renderEmojiPopup() {\n if (!this.state.openEmoji) return null;\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker\",\n \"v-clickaway\": e => this.setState({\n openEmoji: false\n })\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':like:'),\n \"data-tooltip\": \":like:\",\n class: \"emoji-picker--item emoji--like\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':unlike:'),\n \"data-tooltip\": \":unlike:\",\n class: \"emoji-picker--item emoji--unlike\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':angry:'),\n \"data-tooltip\": \":angry:\",\n class: \"emoji-picker--item emoji--angry\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':confused:'),\n \"data-tooltip\": \":confused:\",\n class: \"emoji-picker--item emoji--confused\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':crying:'),\n \"data-tooltip\": \":crying:\",\n class: \"emoji-picker--item emoji--crying\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':grinning:'),\n \"data-tooltip\": \":grinning:\",\n class: \"emoji-picker--item emoji--grinning\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':heart-eyes:'),\n \"data-tooltip\": \":heart-eyes:\",\n class: \"emoji-picker--item emoji--heart-eyes\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':neutral:'),\n \"data-tooltip\": \":neutral:\",\n class: \"emoji-picker--item emoji--neutral\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':sad:'),\n \"data-tooltip\": \":sad:\",\n class: \"emoji-picker--item emoji--sad\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':sleepy:'),\n \"data-tooltip\": \":sleepy:\",\n class: \"emoji-picker--item emoji--sleepy\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':smiling:'),\n \"data-tooltip\": \":smiling:\",\n class: \"emoji-picker--item emoji--smiling\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':surprised:'),\n \"data-tooltip\": \":surprised:\",\n class: \"emoji-picker--item emoji--surprised\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':tired:'),\n \"data-tooltip\": \":tired:\",\n class: \"emoji-picker--item emoji--tired\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':tongue-out:'),\n \"data-tooltip\": \":tongue-out:\",\n class: \"emoji-picker--item emoji--tongue-out\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"emoji-picker-background-item\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n onClick: () => this.emojiPick(':wink:'),\n \"data-tooltip\": \":wink:\",\n class: \"emoji-picker--item emoji--wink\"\n })));\n }\n applyMessage(text) {\n this.setState({\n msgValue: text\n });\n this.resizeInput();\n }\n focus() {\n if (this.props.disabled) return;\n const activeElement = document.activeElement;\n let focused = false;\n if (activeElement) {\n if (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA') focused = true;\n if (activeElement.hasAttribute('contenteditable') && activeElement.getAttribute('contenteditable') === 'true') focused = true;\n }\n if (focused) return;\n this.refMessageInput.current && this.refMessageInput.current.focus();\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n this.refMessageInput.current && this.refMessageInput.current.focus();\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n this.refMessageInput.current && this.refMessageInput.current.focus();\n }, 100);\n }\n renderEmoji() {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", null, this.renderEmojiPopup(), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"message-input--button message-input--emoji-button\",\n onClick: e => this.toggleEmoji(e)\n }));\n }\n toggleEmoji(e) {\n e.stopPropagation();\n this.focus();\n if (this.props.disabled) return;\n this.setState({\n openEmoji: !this.state.openEmoji\n });\n }\n emojiPick(code) {\n const input = this.refMessageInput.current;\n const position = input.selectionStart;\n const message = this.state.msgValue || '';\n this.setState({\n openEmoji: false,\n msgValue: [message.slice(0, position), code, message.slice(position)].join('')\n });\n this.resizeInput();\n input.focus();\n }\n onKeydown(e) {\n if (e.keyCode === 13 && e.shiftKey === false) {\n this.onEnter();\n return e.preventDefault();\n }\n this._forceUpdate();\n this.sendTyping();\n }\n onChange(e) {\n this.setState({\n msgValue: e.target.value\n });\n this.resizeInput();\n }\n selectFile() {\n if (this.props.disabled) return;\n this.refFileInput.current.click();\n }\n sendFile() {\n let $input = this.refFileInput.current;\n this._sendFile($input.files);\n $input.value = '';\n }\n _sendFile(files) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(files) === 0) return;\n if (this.props.disabled) return;\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(files, file => {\n return {\n type: 'file',\n mimetype: file.type,\n name: file.name,\n _file: file,\n size: file.size\n };\n });\n this.props.onSend && this.props.onSend({\n attachments\n });\n }\n async submitMessage(msg) {\n msg = msg || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(this.state.msgValue) || '';\n if (!msg) return;\n if (this.props.disabled) return;\n if (this.props.onSend) {\n await this.props.onSend({\n text: msg,\n format: 'plaintext'\n });\n }\n this.setState({\n openEmoji: false,\n msgValue: ''\n });\n this.resizeInput();\n }\n sendTyping() {\n if (!this.props.cid) return;\n return this.props.store.typing(this.props.cid);\n }\n pasteImage(event) {\n if (!window.File || !window.FileReader || !window.FileList || !window.Blob) return;\n let now = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date();\n let year = now.getFullYear();\n let month = now.getMonth() + 1;\n let date = now.getDate();\n let hour = now.getHours();\n let min = now.getMinutes();\n let sec = now.getSeconds();\n const name = `Paste-image-${year}-${month}-${date}-${hour}-${min}-${sec}`;\n let blob = null;\n const copiedData = event.clipboardData.items[0];\n if (copiedData.type.indexOf('image') === 0) {\n blob = copiedData.getAsFile();\n }\n if (!blob) return;\n const parts = [blob, new ArrayBuffer()];\n const file = new File(parts, `${name}.png`, {\n type: 'image/png'\n });\n this._sendFile([file]);\n }\n}\nfunction isSummited(form) {\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, 'fields') || [];\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(fields, field => !!field.answered);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/MessageInput.js?\n}");
|
|
318
|
-
|
|
319
|
-
/***/ },
|
|
320
|
-
|
|
321
|
-
/***/ "./src/chatbox/PoweredBy.js"
|
|
322
|
-
/*!**********************************!*\
|
|
323
|
-
!*** ./src/chatbox/PoweredBy.js ***!
|
|
324
|
-
\**********************************/
|
|
325
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
326
|
-
|
|
327
|
-
"use strict";
|
|
328
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PoweredBy)\n/* harmony export */ });\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nvar logo = __webpack_require__(/*! ../../assets/img/subiz-mono.svg */ \"./assets/img/subiz-mono.svg\");\n\nfunction PoweredBy(props) {\n if (props.store.isMobile()) return null;\n if (props.store.isAIDevMode()) return null;\n let user = props.store.matchUser() || {};\n var link = `https://subiz.com.vn/?utm_source=${window.location.host || `id-${user.account_id}`}&utm_medium=widget&utm_campaign=widget_referral`;\n return (0,preact__WEBPACK_IMPORTED_MODULE_0__.h)(\"div\", {\n class: \"poweredby\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_0__.h)(\"a\", {\n href: link,\n class: \"poweredby--text\",\n target: \"_blank\",\n title: \"Subiz\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_0__.h)(\"img\", {\n width: \"17\",\n height: \"12\",\n class: \"poweredby--subiz-logo\",\n src: logo,\n alt: \"powerred by subiz\"\n }), \" Subiz\"));\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/PoweredBy.js?\n}");
|
|
329
|
-
|
|
330
|
-
/***/ },
|
|
331
|
-
|
|
332
|
-
/***/ "./src/chatbox/ProductAttachments.js"
|
|
333
|
-
/*!*******************************************!*\
|
|
334
|
-
!*** ./src/chatbox/ProductAttachments.js ***!
|
|
335
|
-
\*******************************************/
|
|
336
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
337
|
-
|
|
338
|
-
"use strict";
|
|
339
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ProductAttachments)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass ProductAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n render() {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n if (byType === 'user') return null;\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n let products = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(attachments, att => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(att, 'type') === 'product' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(att, 'type') === 'product_preview');\n products = products.filter(product => product.product && product.product.name);\n if (products.length === 0) return null;\n let acc = this.props.store.matchAccount();\n let $products = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(products, (att, index) => {\n let product = att.product;\n let $detailbtns = [];\n let url = product.url || product.mobile_url;\n if (this.props.store.isMobile()) url = product.mobile_url || product.url;\n if (url && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(product.buttons) == 0) $detailbtns.push((0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n class: \"product_attachment__btn\",\n href: url,\n target: \"_blank\"\n }, this.props.t('detail'), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n src: __webpack_require__(/*! ../../assets/img/external-link.svg */ \"./assets/img/external-link.svg\"),\n class: \"product_attachment__btn_external_link\"\n })));\n console.log('P', product);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(product.buttons) > 0) {\n $detailbtns = $detailbtns.concat(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(product.buttons, (button, index) => {\n if (button.type === 'call_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n class: \"product_attachment__btn\",\n href: 'tel:' + button.phone_number,\n key: index,\n title: button.title\n }, this.props.t.i18n(button.i18n_title) || button.title);\n }\n if (button.type === 'url_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n class: \"product_attachment__btn\",\n href: button.url,\n target: \"_blank\",\n key: index,\n title: button.title\n }, this.props.t.i18n(button.i18n_title) || button.title || this.props.t('detail'), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n src: __webpack_require__(/*! ../../assets/img/external-link.svg */ \"./assets/img/external-link.svg\"),\n class: \"product_attachment__btn_external_link\"\n }));\n }\n if (button.type === 'postback_button') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n class: \"product_attachment__btn\",\n href: \"javascript:;\",\n onClick: _ => this.props.onPostback(button)\n }, this.props.t.i18n(button.i18n_title) || button.title);\n }\n }));\n }\n let $title = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n href: url,\n class: \"product_attachment__title\",\n target: \"_blank\"\n }, product.name);\n let $subtitle = null;\n let desc = product.description || product.long_description;\n if (desc) $subtitle = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"product_attachment__subtitle\"\n }, desc);\n let currency = product.currency || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(acc, 'currency', 'VND');\n let $price = null;\n if (product.price) {\n $price = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"product_attachment__price\"\n }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].formatCurrency(product.price, currency));\n }\n let imgsrc = this.props.store.replaceFileUrl(product.image);\n if (!product.image) {\n imgsrc = __webpack_require__(/*! ../../assets/img/default.jpg */ \"./assets/img/default.jpg\");\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: 'product_attachment product_attachment__' + byType\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"a\", {\n href: this.props.store.replaceFileUrl(product.image),\n target: \"_blank\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"img\", {\n class: \"product_attachment__img\",\n src: imgsrc\n }))), $title, $subtitle, $price, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"product_attachment__btns\"\n }, $detailbtns));\n });\n return $products;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/ProductAttachments.js?\n}");
|
|
340
|
-
|
|
341
|
-
/***/ },
|
|
342
|
-
|
|
343
|
-
/***/ "./src/chatbox/QuickReplies.js"
|
|
344
|
-
/*!*************************************!*\
|
|
345
|
-
!*** ./src/chatbox/QuickReplies.js ***!
|
|
346
|
-
\*************************************/
|
|
347
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
348
|
-
|
|
349
|
-
"use strict";
|
|
350
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ QuickReplies)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass QuickReplies extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n }\n render() {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type') === 'user') return null;\n let quickreplies = [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []), att => {\n if (!att) return;\n if (att.type === 'quick_replies') {\n quickreplies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(att, 'quick_replies', []);\n }\n });\n quickreplies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(quickreplies, r => r.title);\n if (quickreplies.length === 0) return null;\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(this.props.ev);\n let convo = this.props.store.matchConvo(cid);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'state') === 'ended') return null;\n let events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.props.store.listEvents(cid));\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].orderBy(events, 'created', 'asc').filter(ev => ev.type === 'message_sent');\n let evindex = 0;\n for (var i = 0; i < events.length; i++) {\n if (events[i].id === this.props.ev.id) {\n evindex = i;\n break;\n }\n }\n for (var i = evindex + 1; i < events.length; i++) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(events[i], 'by.type') === 'user') return null;\n }\n let $replies = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(quickreplies, r => (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"message_quick_reply\",\n onClick: e => this.props.onSelect(r),\n title: r.title\n }, r.title));\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: \"message_quick_replies\"\n }, $replies);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/QuickReplies.js?\n}");
|
|
351
|
-
|
|
352
|
-
/***/ },
|
|
353
|
-
|
|
354
|
-
/***/ "./src/chatbox/QuoteMessage.js"
|
|
355
|
-
/*!*************************************!*\
|
|
356
|
-
!*** ./src/chatbox/QuoteMessage.js ***!
|
|
357
|
-
\*************************************/
|
|
358
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
359
|
-
|
|
360
|
-
"use strict";
|
|
361
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ QuoteMessage)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _block_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./block.js */ \"./src/chatbox/block.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\nclass QuoteMessage extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"getSenderName\", ev => {\n let bytype = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n let byid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.display_id', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.id')) || '';\n if (bytype === 'user') return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUserDisplayName(this.props.store.matchUser());\n let acc = this.props.store.matchAccount();\n if (bytype === 'agent') return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getAgentDisplayName(acc, this.props.store.matchAgent(byid));\n if (byid.startsWith('at')) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getAgentDisplayName(acc, this.props.store.matchAgent(byid));\n if (bytype === 'bot') {\n let bot = this.props.store.matchBot()[byid];\n if (!bot) return 'Bot';\n return bot.fullname || 'Bot';\n }\n if (byid === 'system' || bytype === 'dummy' || bytype === 'workflow') return acc.name || 'system';\n return acc.name;\n });\n }\n render() {\n let sendername = '';\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n let byId = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.id');\n if (byType === 'user') {\n sendername = this.props.t('you');\n } else {\n sendername = this.getSenderName(this.props.ev);\n let acc = this.props.store.matchAccount() || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props, 'chatbox.hide_agent_profile')) sendername = acc.name;\n }\n let att = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments.0');\n if (att) {\n let isImg = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'image');\n if (isImg) {\n let uri = att.url;\n if (!uri.startsWith('https://') && !uri.startsWith('http://') && !uri.startsWith('content://') && !uri.startsWith('data:')) {\n uri = this.props.store.FileURL + uri;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote d-flex\",\n onClick: () => this.scrollToSourceEvent(this.props.ev)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n src: uri,\n class: \"message-quote-inner-img\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-inner\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-title\"\n }, sendername), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-content\"\n }, \"[\", this.props.t('image'), \"]\")));\n } else {\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote\",\n onClick: () => this.scrollToSourceEvent(this.props.ev)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-title\"\n }, sendername), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-content\"\n }, `[File] `, att.name));\n }\n }\n let format = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.format', 'plaintext');\n let block = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.block');\n let text = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.text');\n if (block) text = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].blockToText(block);\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote\",\n onClick: () => this.scrollToSourceEvent(this.props.ev)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-title\"\n }, sendername), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-quote-content\"\n }, text));\n }\n scrollToSourceEvent(ev) {\n let $ele = document.querySelector(`.convo-event[data-ev-id=${ev.id}]`);\n if ($ele && typeof $ele.scrollIntoViewIfNeeded === 'function') {\n $ele.scrollIntoViewIfNeeded();\n }\n this.props.onFocusSourceEventFromQuote(ev);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/QuoteMessage.js?\n}");
|
|
362
|
-
|
|
363
|
-
/***/ },
|
|
364
|
-
|
|
365
|
-
/***/ "./src/chatbox/Rating.js"
|
|
366
|
-
/*!*******************************!*\
|
|
367
|
-
!*** ./src/chatbox/Rating.js ***!
|
|
368
|
-
\*******************************/
|
|
369
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
370
|
-
|
|
371
|
-
"use strict";
|
|
372
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Rating)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _releaseAnimation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./releaseAnimation.js */ \"./src/chatbox/releaseAnimation.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\nconst POPUP_MAX_HEIGHT = 400;\nconst POPUP_HARD_MAX_HEIGHT = 500;\nconst POPUP_MIN_HEIGHT = 0;\nconst RATING_EXPIRED_TIME = 15 * 60_000;\n\n\nclass Rating extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"state\", {\n hide: true,\n ratingHeight: 0,\n overlayOpacity: 0.3,\n comment: ''\n });\n this.refComment = (0,preact__WEBPACK_IMPORTED_MODULE_3__.createRef)();\n this.refRating = (0,preact__WEBPACK_IMPORTED_MODULE_3__.createRef)();\n this.refHandle = (0,preact__WEBPACK_IMPORTED_MODULE_3__.createRef)();\n }\n componentDidMount() {\n this.props.store.onUpdate(this, () => {\n if (this.shoudDisplay()) this.open();\n });\n this.props.store.onConvoEvent(this, ev => {\n var cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev);\n if (cid !== this.props.cid) return;\n if (!this.state.hide && ev.type === 'conversation_rated') {\n this.close();\n return;\n }\n if (this.shoudDisplay()) this.open();\n });\n this.mouseUp = e => this.onMouseUp(e);\n this.mouseMove = e => this.onMouseMove(e);\n this.mouseDown = e => this.onMouseDown(e);\n var $ratingHandle = this.refHandle.current;\n $ratingHandle.addEventListener('mousedown', this.mouseDown, {\n passive: true\n });\n $ratingHandle.addEventListener('touchstart', this.mouseDown, {\n passive: true\n });\n window.addEventListener('mouseup', this.mouseUp, {\n passive: true\n });\n window.addEventListener('touchend', this.mouseUp, {\n passive: true\n });\n window.addEventListener('mousemove', this.mouseMove, {\n passive: true\n });\n window.addEventListener('touchmove', this.mouseMove, {\n passive: true\n });\n this.animation = new _releaseAnimation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]({\n maxY: POPUP_MAX_HEIGHT,\n minY: POPUP_MIN_HEIGHT,\n duration: 150\n });\n this.close();\n if (this.shoudDisplay() || this.props.forceView === 'rating') this.open();\n }\n componentWillUnmount() {\n var $ratingHandle = this.refHandle.current;\n $ratingHandle.removeEventListener('mousedown', this.mouseDown, 0);\n $ratingHandle.removeEventListener('touchstart', this.mouseDown, 0);\n window.removeEventListener('mouseup', this.mouseUp, 0);\n window.removeEventListener('touchend', this.mouseUp, 0);\n window.removeEventListener('mousemove', this.mouseMove, 0);\n window.removeEventListener('touchmove', this.mouseMove, 0);\n }\n render() {\n let cls = this.state.hide ? 'd-none' : '';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--overlay\",\n style: `opacity: ${this.state.overlayOpacity * 0.5} !important;`\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating\",\n ref: this.refRating,\n style: `color:red; height: ${this.state.ratingHeight}px !important;`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--handle\",\n ref: this.refHandle\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--thumb\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--content\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--heading\"\n }, this.props.t('rating_title'), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--close-btn\",\n onClick: e => this.onCloseRating(e)\n })), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating--description\"\n }, this.props.t('rating_description')), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"textarea\", {\n ref: this.refComment,\n type: \"text\",\n class: \"rating--comment\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating-faces-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating-face-container\",\n onClick: e => this.onRatingPoor(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n alt: \"poor\",\n src: __webpack_require__(/*! ../../assets/img/rating--poor.svg */ \"./assets/img/rating--poor.svg\")\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"p\", {\n class: \"rating-face--text\"\n }, this.props.t('poor'))), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating-face-container\",\n onClick: e => this.onRatingAverage(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n alt: \"average\",\n src: __webpack_require__(/*! ../../assets/img/rating--average.svg */ \"./assets/img/rating--average.svg\")\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"p\", {\n class: \"rating-face--text\"\n }, this.props.t('average'))), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating-face-container\",\n onClick: e => this.onRatingGreat(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n alt: \"great\",\n src: __webpack_require__(/*! ../../assets/img/rating--great.svg */ \"./assets/img/rating--great.svg\")\n }), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"p\", {\n class: \"rating-face--text\"\n }, this.props.t('great')))), (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"rating-no-thanks\",\n onClick: e => this.onCloseRating(e)\n }, this.props.t('no_thanks')))));\n }\n shoudDisplay() {\n if (!this.props.cid) return false;\n let requested;\n let rated;\n let ended;\n let lastMessageSentAt = 0;\n let user = this.props.store.matchUser();\n let foundUser = false;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.props.store.listEvents(this.props.cid), ev => {\n if (!ev || !ev.by) return;\n if (ev.type === 'message_sent') {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type') === 'user') foundUser = true;\n if (ev.created > lastMessageSentAt) lastMessageSentAt = ev.created;\n }\n if (ev.type === 'conversation_state_updated' && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.conversation.state') === 'ended') {\n ended = ev;\n }\n if (ev.type === 'conversation_rating_requested') requested = ev;\n if (ev.type === 'conversation_rated' && ev.by.id === user.id) rated = ev;\n });\n if (!foundUser) return false;\n if (rated) return false;\n let accountSetting = this.props.plugin.chatbox;\n let auto = accountSetting.auto_request_rating && ended;\n if (auto) {\n if (lastMessageSentAt) {\n auto = auto && Date.now() - lastMessageSentAt < RATING_EXPIRED_TIME;\n } else {\n auto = false;\n }\n }\n return requested || auto;\n }\n onCloseRating() {\n this.props.onRate && this.props.onRate({\n no_rating: true,\n comment: this.refComment.current.value\n });\n this.close();\n }\n onRatingPoor() {\n this.props.onRate && this.props.onRate({\n rating: 1,\n comment: this.refComment.current.value\n });\n this.close();\n }\n onRatingAverage() {\n this.props.onRate && this.props.onRate({\n rating: 3,\n comment: this.refComment.current.value\n });\n this.close();\n }\n onRatingGreat() {\n this.props.onRate && this.props.onRate({\n rating: 5,\n comment: this.refComment.current.value\n });\n this.close();\n }\n open() {\n if (!this.state.hide) return;\n this.setState({\n hide: false\n });\n if (!this.refRating.current) return;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n if (this.refComment.current) this.refComment.current.focus();\n }, 400);\n this.refComment.current.value = '';\n var popupStyle = this.refRating.current.currentStyle || window.getComputedStyle(this.refRating.current);\n var h0 = parseFloat(popupStyle.height);\n this.animation.play(-20, h0, h => {\n this.setState({\n ratingHeight: h,\n overlayOpacity: Math.min(1, (h - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))\n });\n });\n }\n close() {\n if (this.state.hide) return;\n if (!this.refRating.current) return;\n var popupStyle = this.refRating.current.currentStyle || window.getComputedStyle(this.refRating.current);\n var h0 = parseFloat(popupStyle.height);\n this.animation.play(20, h0, h => {\n this.setState({\n ratingHeight: h,\n overlayOpacity: Math.min(1, (h - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))\n });\n if (h < POPUP_MIN_HEIGHT + 10) {\n if (!this.state.hide) {\n this.setState({\n hide: true\n });\n }\n }\n });\n }\n onMouseDown(e) {\n this.mousePushed = true;\n this.animation.stop();\n e.preventDefault();\n if (e.touches && e.touches[0]) e = e.touches[0];\n this.mousePushedDy = e.pageY - window.pageYOffset - this.refRating.current.getBoundingClientRect().y;\n }\n onMouseUp(e) {\n if (!this.mousePushed) return;\n if (e.touches && e.touches[0]) e = e.touches[0];\n this.mousePushed = false;\n var popupStyle = this.refRating.current.currentStyle || window.getComputedStyle(this.refRating.current);\n var h0 = parseFloat(popupStyle.height);\n this.animation.play(this.mouseVelocity, h0, h => {\n this.setState({\n ratingHeight: h,\n overlayOpacity: Math.min(1, (h - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))\n });\n if (h < POPUP_MIN_HEIGHT + 10) {\n if (!this.state.hide) {\n this.setState({\n hide: true\n });\n this.props.onRate && this.props.onRate({\n no_rating: true\n });\n }\n }\n });\n }\n onMouseMove(e) {\n if (!this.mousePushed) return;\n if (e.touches && e.touches[0]) e = e.touches[0];\n var my = e.pageY;\n this.mouseVelocity = my - this.lastMouseY;\n this.lastMouseY = my;\n my = my - this.mousePushedDy;\n var K = 10000;\n var height = this.refRating.current.getBoundingClientRect().bottom - my;\n if (height > POPUP_MAX_HEIGHT) {\n var beta = K / (POPUP_HARD_MAX_HEIGHT - POPUP_MAX_HEIGHT) - POPUP_MAX_HEIGHT;\n height = POPUP_HARD_MAX_HEIGHT - K / (height + beta);\n }\n this.setState({\n ratingHeight: height,\n overlayOpacity: Math.min(1, (height - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))\n });\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Rating.js?\n}");
|
|
373
|
-
|
|
374
|
-
/***/ },
|
|
375
|
-
|
|
376
|
-
/***/ "./src/chatbox/TextMessage.js"
|
|
377
|
-
/*!************************************!*\
|
|
378
|
-
!*** ./src/chatbox/TextMessage.js ***!
|
|
379
|
-
\************************************/
|
|
380
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
381
|
-
|
|
382
|
-
"use strict";
|
|
383
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TextMessage)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _block_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./block.js */ \"./src/chatbox/block.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./time.js */ \"./src/chatbox/time.js\");\n/* harmony import */ var _QuoteMessage_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./QuoteMessage.js */ \"./src/chatbox/QuoteMessage.js\");\n\n\n\n\n\n\n\nclass TextMessage extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(props) {\n super(props);\n this.state = {\n focused: false\n };\n }\n renderTime() {\n return null;\n // removed by dead control flow\n\n // removed by dead control flow\n\n }\n focusSourceEventFromQuote(ev) {\n if (ev.id !== this.props.ev.id) return;\n let fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.fields') || [];\n let attachmentIndexField = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(fields, f => f.key === 'attachment_index');\n let attachmentIndex = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(attachmentIndexField, 'value');\n try {\n attachmentIndex = JSON.parse(attachmentIndex);\n } catch (err) {\n attachmentIndex = undefined;\n }\n if (attachmentIndex !== undefined) return;\n this.setState({\n focused: true\n });\n if (this.focusTimeout) clearTimeout(this.focusTimeout);\n this.focusTimeout = setTimeout(() => {\n this.setState({\n focused: false\n });\n }, 3000);\n }\n render() {\n var format = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.format', 'plaintext');\n let block = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.block');\n if (block) return this.renderBlock(block);\n return this.renderPlainText();\n }\n renderPlainText() {\n var text = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.text');\n text = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(text);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(text) === 0) return null;\n let t = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'created')).toLocaleString();\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n if (byType !== 'user') byType = 'agent';\n var tags = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extractText(text).map(tag => {\n if (tag.type === 'emoji') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n emojiCode: tag.text,\n byType: byType\n });\n if (tag.type === 'link') {\n let url = tag.text || '';\n if (!url.startsWith('//') && !url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('data:')) {\n url = '//' + url;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n class: \"text-message-link\",\n href: url,\n target: \"_blank\",\n onClick: e => this.props.onLink(e, url)\n }, tag.text);\n }\n if (tag.type === 'phone') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n class: \"text-message-link\",\n href: 'tel:' + tag.text\n }, tag.text);\n if (tag.type === 'email') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n class: \"text-message-link\",\n href: 'mailto:' + tag.text\n }, tag.text);\n return tag.text;\n });\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(tags) === 0) return null;\n let isDeleted = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.deleted');\n let attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n let quote = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(attachments, att => att.type === 'quote');\n if (byType === 'agent') {\n let cls = 'message-agent message-text--agent';\n if (isDeleted) {\n tags = this.props.t('recalled_message');\n cls += ' message-text--deleted';\n }\n if (this.state.focused) cls += ' just-focused';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: cls,\n title: t\n }, quote && (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_QuoteMessage_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n ev: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(quote, 'quote'),\n t: this.props.t,\n store: this.props.store,\n onFocusSourceEventFromQuote: this.props.onFocusSourceEventFromQuote\n }), tags, this.renderTime());\n }\n let msgcls = 'message-user message-text--user';\n if (this.props.ev._error) msgcls += ' message-user--error';\n if (this.state.focused) msgcls += ' just-focused';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: msgcls,\n title: t\n }, tags);\n }\n renderBlock(block) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEmptyBlock(block)) return null;\n let t = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'created')).toLocaleString();\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n if (byType !== 'user') byType = 'agent';\n if (byType === 'agent') {\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: \"message-agent message-text--agent\",\n title: t\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_block_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n block: block,\n onLink: this.props.onLink,\n textMessage: true\n }), this.renderTime());\n }\n let msgcls = 'message-user message-text--user';\n if (this.props.ev._error) msgcls += ' message-user--error';\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", {\n class: msgcls,\n title: t\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_block_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n block: block,\n onLink: this.props.onLink,\n textMessage: true\n }));\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/TextMessage.js?\n}");
|
|
384
|
-
|
|
385
|
-
/***/ },
|
|
386
|
-
|
|
387
|
-
/***/ "./src/chatbox/VideoAttachments.js"
|
|
388
|
-
/*!*****************************************!*\
|
|
389
|
-
!*** ./src/chatbox/VideoAttachments.js ***!
|
|
390
|
-
\*****************************************/
|
|
391
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
392
|
-
|
|
393
|
-
"use strict";
|
|
394
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ VideoAttachments)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\nclass VideoAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n }\n render() {\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'by.type');\n var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.ev, 'data.message.attachments', []);\n var videos = [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(attachments, (att, i) => {\n if (!att) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(att.mimetype, 'video')) videos.push(att);\n });\n if (videos.length === 0) return null;\n var $videos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(videos, (video, index) => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n key: index,\n class: `video-attachment video-attachment--${byType}`\n }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"video\", {\n class: \"video-attachment__video\",\n src: this.props.store.replaceFileUrl(video.url),\n width: \"100%\",\n height: \"\",\n poster: this.props.store.replaceFileUrl(video.thumbnail_url),\n controls: \"controls\",\n preload: \"metadata\"\n }));\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"div\", {\n class: `message-${byType}`\n }, $videos);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/VideoAttachments.js?\n}");
|
|
395
|
-
|
|
396
|
-
/***/ },
|
|
397
|
-
|
|
398
|
-
/***/ "./src/chatbox/Widget.js"
|
|
399
|
-
/*!*******************************!*\
|
|
400
|
-
!*** ./src/chatbox/Widget.js ***!
|
|
401
|
-
\*******************************/
|
|
402
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
403
|
-
|
|
404
|
-
"use strict";
|
|
405
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Widget)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\n/* harmony import */ var _PoweredBy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PoweredBy.js */ \"./src/chatbox/PoweredBy.js\");\n/* harmony import */ var _AgentsAvatar_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AgentsAvatar.js */ \"./src/chatbox/AgentsAvatar.js\");\n/* harmony import */ var _Header_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Header.js */ \"./src/chatbox/Header.js\");\n/* harmony import */ var _MessageInput_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./MessageInput.js */ \"./src/chatbox/MessageInput.js\");\n/* harmony import */ var _Events_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Events.js */ \"./src/chatbox/Events.js\");\n/* harmony import */ var _Rating_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Rating.js */ \"./src/chatbox/Rating.js\");\n/* harmony import */ var _ConnectionStatus_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ConnectionStatus.js */ \"./src/chatbox/ConnectionStatus.js\");\n/* harmony import */ var _ListField_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ListField.js */ \"./src/chatbox/ListField.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./time.js */ \"./src/chatbox/time.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\nvar send = __webpack_require__(/*! ../../assets/img/send.svg */ \"./assets/img/send.svg\");\nvar checkedimg = __webpack_require__(/*! ../../assets/img/done_gray.svg */ \"./assets/img/done_gray.svg\");\nvar empty = __webpack_require__(/*! ../../assets/img/empty.svg */ \"./assets/img/empty.svg\");\n\n\n\n\nlet Order = false;\nconst LoadOrder = () => __webpack_require__.e(/*! import() */ \"src_chatbox_Order_js\").then(() => (__webpack_require__(/*! ./Order.js */ \"./src/chatbox/Order.js\")));\n\nconst defaultAvatar = 'https://vcdn.subiz-cdn.com/file/fiqoahedjbgwclpouoml-avatar_default_baa8a1d7.png';\n\n\n\nclass Widget extends _common_js__WEBPACK_IMPORTED_MODULE_11__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"msgInput\", (0,preact__WEBPACK_IMPORTED_MODULE_12__.createRef)());\n _defineProperty(this, \"findMissingRTMessage\", async started => {\n let messageSentDict = this.props.store.listAgentRealtimeMessageSent();\n let res1 = await this.props.store.sbzListConversations();\n let conversions = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(res1, 'body.conversations') || [];\n let cids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(conversions, convo => convo.id);\n let promises = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(cids, cid => this.props.store.sbzListMessages(cid));\n let msgReses = await Promise.all(promises);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(msgReses, msgRes => {\n let messages = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(msgRes, 'body') || [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(messages, ev => {\n if (ev.created < started) return;\n if (ev.type !== 'message_sent') return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type') === 'user') return;\n console.log('check ev pass condition', ev);\n if (!messageSentDict[ev.id] && !this.debugAgentSentEvIds[ev.id]) {\n let accid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchAccount(), 'id');\n this.props.store.sendBugReport(`[WIDGET ${accid}] Missing agent message sent evid ${ev.id}, cid ${_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev)}, ev_created ${ev.created}, FE timestamp ${Date.now()}, Init Debug timestamp ${started}`);\n this.debugAgentSentEvIds[ev.id] = true;\n }\n });\n });\n });\n _defineProperty(this, \"debugRTAgentMessageSent\", async () => {\n try {\n let debugAccountIds = this.props.store.matchDebugAccountIds();\n let accid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchAccount(), 'id');\n if (!debugAccountIds.includes(accid)) return;\n console.log('START check RT agent message with BE source');\n let started = Date.now();\n this.findMissingRTMessage(started);\n for (let i = 0; i < 100_000; i++) {\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(120_000);\n console.log('LOOP check RT agent message with BE source', i);\n this.findMissingRTMessage(started);\n }\n } catch (err) {\n this.props.store.sendBugReport(`debugRTAgentMessageSent ERROR ${err.stack}`);\n }\n });\n _defineProperty(this, \"formMounted\", form => {\n let formData = this.fillForm(form);\n if (form.question_required || this.state.quickReplyMessage.text) {\n formData['question'] = {\n key: 'question',\n is_required: true,\n label: this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, `i18n_question_label`, {})) || form.question_label,\n type: 'text',\n value: this.state.quickReplyMessage.text\n };\n }\n this.setState({\n formData\n });\n if (!this.props.store.isMobile() && !form._updated) this.focusInput();\n });\n _defineProperty(this, \"sendMessage\", async message => {\n let hasPostback = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(message.attachments, att => att.type === 'postback');\n if (this.isFormRequired() && hasPostback) {\n this.onStartConvoClick();\n this.fillQuickReplyToQuestion(message);\n return;\n }\n let text = message.text;\n if (this.props.cid && this.props.cid.startsWith('cslight')) {\n let cid = this.props.cid;\n this._creating = (this._creating || 0) + 1;\n let _creating = this._creating;\n this.setState({\n creating: true\n });\n let botid = cid.split('_')[0].slice(7);\n let oldconvo = this.props.store.matchConvo(this.props.cid) || {};\n let greeting_msg = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(oldconvo.events, ev => {\n return ev.type == 'message_sent' && ev.by && ev.by.type == 'bot';\n });\n const {\n convo,\n error\n } = await this.props.store.startConvo({\n state: 'active',\n locale: this.props.t.locale(),\n message: text,\n members: [{\n type: 'bot',\n id: botid,\n bot_version: oldconvo.bot_version\n }],\n initial_by: botid,\n is_testing: oldconvo.is_testing,\n greeting_message: greeting_msg\n });\n if (_creating != this._creating) return;\n if (error) {\n this.setState({\n creating: false\n });\n return;\n }\n this.props.store.deleteLightConvo(cid);\n await this.props.store.sendConvoEvent(convo.id, 'message_sent', {\n message\n });\n if (_creating != this._creating) return;\n this.props.onGo({\n view: 'chat',\n cid: convo.id\n });\n this.setState({\n creating: false\n });\n return;\n }\n if (!this.props.cid) {\n this._creating = (this._creating || 0) + 1;\n let _creating = this._creating;\n this.setState({\n creating: true\n });\n const {\n convo,\n error\n } = await this.props.store.startConvo({\n locale: this.props.t.locale(),\n message: text,\n initial_by: this.props.store.matchUser().id\n });\n if (_creating != this._creating) return;\n if (error) {\n this.setState({\n creating: false\n });\n return;\n }\n await this.props.store.sendConvoEvent(convo.id, 'message_sent', {\n message\n });\n if (_creating != this._creating) return;\n this.props.onGo({\n view: 'chat',\n cid: convo.id\n });\n this.setState({\n creating: false\n });\n return;\n }\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(async () => {\n await this.props.store.sendConvoEvent(this.props.cid, 'message_sent', {\n message\n });\n this.setState({\n creating: false\n });\n }, 1);\n });\n _defineProperty(this, \"onLink\", (e, url) => {\n if (!url) return e.preventDefault();\n let noschemeurl = url.replace(/(^\\w+:|^)\\/\\//, '');\n if (noschemeurl.startsWith('widget.subiz.com.vn/orders/')) {\n let orderid = noschemeurl.substr('widget.subiz.com.vn/orders/'.length);\n orderid = orderid.split('/')[0];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(async () => {\n if (!Order) Order = (await LoadOrder()).default;\n this.setState({\n showOrder: true,\n order_id: orderid\n });\n });\n e.preventDefault();\n return;\n }\n });\n _defineProperty(this, \"closeOrder\", e => {\n this.setState({\n showOrder: false,\n order_id: ''\n });\n this.focusInput();\n });\n this.userSent = {};\n this.debugAgentSentEvIds = {};\n this.wasFormInputed = false;\n this.setState({\n creating: false,\n clickedJoin: false,\n formData: {},\n showOrder: false,\n order_id: '',\n quickReplyMessage: {}\n });\n this.props.store.onUpdate(this, _ => this.forceUpdate());\n this.refTyping = (0,preact__WEBPACK_IMPORTED_MODULE_12__.createRef)();\n }\n componentDidMount() {\n if (!this.props.store.isMobile()) this.focusInput();\n this.updateFormDataFields();\n this.debugRTAgentMessageSent();\n }\n applyMessage(text) {\n this.focusInput(text);\n }\n componentDidUpdate(prevProp) {\n if (prevProp.isShow !== this.props.isShow) {\n if (this.props.isShow && !this.props.store.isMobile()) this.focusInput();\n if (this.props.isShow && this.props.store.isMobile()) this.blur();\n this.updateFormDataFields();\n }\n if (prevProp.cid !== this.props.cid) {\n this.closeOrder();\n this.setState({\n clickedJoin: false,\n quickReplyMessage: {}\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n this.$events && this.$events.focus();\n if (!this.props.store.isMobile()) this.focusInput();\n }, 100);\n this.updateFormDataFields();\n }\n }\n ShowTyping() {\n this.$events && this.$events.ShowTyping();\n }\n shouldShowForm() {\n let form;\n let accountSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'prechat_form.enabled')) form = accountSetting.prechat_form;\n let offlineEnabled = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'offline_form.enabled');\n if (this.isOffline(acc, accountSetting) && offlineEnabled) form = accountSetting.offline_form;\n if (!this.hasSentMessage(this.props.cid) && form && (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(form.groups) || form.group_required)) return true;\n let formRequired = this.isFormRequired();\n return formRequired && !this.props.cid || formRequired && this.props.cid && this.state.clickedJoin;\n }\n render() {\n let showform = this.shouldShowForm();\n let formName = '';\n let form;\n let accountSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n let submitLabel = this.props.t('prechat_form_btn');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'prechat_form.enabled')) form = accountSetting.prechat_form;\n let offlineEnabled = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'offline_form.enabled');\n if (this.isOffline(acc, accountSetting) && offlineEnabled) {\n form = accountSetting.offline_form;\n submitLabel = this.props.t('offline_form_btn');\n formName = 'offline';\n }\n if (this.props.view === 'offline_form') {\n showform = true;\n form = accountSetting.offline_form;\n formName = 'offline';\n submitLabel = this.props.t('offline_form_btn');\n }\n if (this.props.view === 'prechat_form') {\n showform = true;\n form = accountSetting.prechat_form;\n submitLabel = this.props.t('prechat_form_btn');\n formName = 'prechat';\n }\n let $body = null;\n if (this.props.view === 'list') $body = this.renderConvoList();else if (showform) $body = this.renderForm(form, submitLabel, formName);else $body = this.renderChat();\n let position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'desktop_button.position') || 'right';\n if (this.props.store.isMobile() || this.props.store.isEmbededChatMode()) position = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'mobile_button.position', position);\n let cls = 'widget-container widget-container--' + position;\n if (this.props.store.isEmbededChatMode()) cls += ' embed-chat';\n if (!this.props.store.isMobile() && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'window_mode') === 'full') cls += ' widget-container--full';\n if (!this.props.isShow) cls += ' widget-container--hide';\n let hideheader = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'header.hidden', false);\n var $header;\n if (!hideheader) {\n $header = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_Header_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n t: this.props.t,\n plugin: this.props.plugin,\n store: this.props.store,\n cid: this.props.cid,\n view: this.props.view,\n onClose: this.props.onClose,\n onGotoList: () => this.props.onGo({\n view: 'list'\n })\n });\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: cls,\n onClick: this.onBgClick\n }, $header, $body);\n }\n onBgClick(event) {\n event.stopPropagation();\n }\n validateForm(formData) {\n let newformdata = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(formData, (field, key) => {\n field = Object.assign({}, field);\n field.is_empty_error = false;\n if (field.is_required && (field.value === undefined || field.value === '' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(field.value) === 0 && Array.isArray(field.value))) {\n field.is_empty_error = true;\n field.error = this.props.t('error_empty');\n } else field.error = '';\n if (key.substr(5) === 'emails') {\n if (field.is_required) {\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEmail(field.value)) {\n field.error = this.props.t('error_email_invalid');\n }\n } else {\n let value = field.value || '';\n if (typeof value !== 'string') value = value + '';\n if (value.trim() && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEmail(field.value)) {\n field.error = this.props.t('error_email_invalid');\n }\n }\n }\n if (key.substr(5) === 'phones') {\n if (field.is_required) {\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPhone(field.value)) {\n field.error = this.props.t('error_phone_invalid');\n }\n } else {\n let value = field.value || '';\n if (typeof value !== 'string') value = value + '';\n if (value.trim() && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPhone(field.value)) {\n field.error = this.props.t('error_phone_invalid');\n }\n }\n }\n newformdata[key] = field;\n });\n return newformdata;\n }\n async submitPrechatForm(form, formName) {\n if (this.state.submiting) return;\n let newData = this.validateForm(this.state.formData);\n let hasError = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(newData, field => !!field.error);\n if (hasError) {\n this.setState({\n formData: newData\n });\n this.focusInput();\n return;\n }\n let data = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let user = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.props.store.matchUser());\n let is_lead = false;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(data, (field, key) => {\n if (!key.startsWith('attr:')) return;\n var attr = {\n key: key.substr(5)\n };\n is_lead = is_lead || key == 'emails' || key == 'phones';\n if (field.type === 'number') attr.number = parseInt(field.value);\n if (field.type === 'datetime') attr.datetime = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date(field.value).toISOString();\n if (field.type === 'list') attr.text = field.value;\n if (field.type === 'text' || field.type === 'boolean') attr[field.type] = field.value;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setUserAttr(user, attr);\n });\n if (is_lead) _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setUserAttr(user, {\n key: 'lead_source',\n text: 'widget'\n });\n let firstmsg = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(data, 'question.value', this.props.t('get_started'));\n let groupid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(data, 'group.value', '');\n this._creating = (this._creating || 0) + 1;\n let _creating = this._creating;\n this.setState({\n creating: true\n });\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(data, (field, key) => {\n return {\n key: key,\n type: field.type,\n value: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(field.value)\n };\n });\n await this.props.store.submitForm('chatbox_' + formName, formData, user);\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(500);\n if (_creating != this._creating) return;\n if (this.props.cid && this.props.cid.startsWith('cslight')) {\n this.sendMessage({\n text: firstmsg,\n format: 'plaintext',\n fields: [{\n key: 'to_agent_group',\n value: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(groupid)\n }],\n attachments: this.state.quickReplyMessage.attachments\n });\n return;\n }\n if (this.props.cid) {\n this.setState({\n clickedJoin: false\n });\n await this.props.store.sendConvoEvent(this.props.cid, 'message_sent', {\n message: {\n text: firstmsg,\n format: 'plaintext',\n fields: [{\n key: 'to_agent_group',\n value: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(groupid)\n }],\n attachments: this.state.quickReplyMessage.attachments\n }\n });\n if (_creating != this._creating) return;\n this.setState({\n creating: false,\n quickReplyMessage: {}\n });\n if (form.end_conversation_after_submit) await this.props.store.endConvo(this.props.cid);\n if (_creating != this._creating) return;\n return;\n }\n let message = {\n text: firstmsg,\n format: 'plaintext'\n };\n let req = {\n group_id: groupid,\n message: firstmsg,\n locale: this.props.t.locale(),\n initial_by: user.id\n };\n this.setState({\n creatingError: null\n });\n const {\n error,\n convo\n } = await this.props.store.startConvo(req);\n if (_creating != this._creating) return;\n if (error) {\n this.setState({\n creating: false,\n creatingError: error\n });\n return;\n }\n let newconvoid = convo.id;\n this.userSent[newconvoid] = true;\n await this.props.store.sendConvoEvent(newconvoid, 'message_sent', {\n message\n });\n if (_creating != this._creating) return;\n this.setState({\n creating: false,\n clickedJoin: false,\n quickReplyMessage: {}\n });\n this.props.onGo({\n view: 'chat',\n cid: newconvoid\n });\n if (!this.props.store.isMobile()) this.focusInput();\n }\n onBooleanChange(key, e) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (_, fkkey) => fkkey === key);\n if (!field) return;\n field.value = e.target.checked;\n this.setState({\n formData\n });\n }\n onKeywordField(e, form, formName, key) {\n if (e.code == 'Enter') {\n this.submitPrechatForm(form, formName);\n }\n }\n onInputChange(key, val) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (_, fkkey) => fkkey === key);\n if (!field) return;\n field.value = val;\n field.error = undefined;\n this.setState({\n formData\n });\n }\n onListAddItem(key, val) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (_, fkkey) => fkkey === key);\n if (!field) return;\n field.value = field.value || [];\n field.value.push(val);\n this.setState({\n formData\n });\n }\n onListRemoveItem(key, index) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (_, fkkey) => fkkey === key);\n if (!field) return;\n field.value = field.value || [];\n field.value.splice(index, 1);\n this.setState({\n formData\n });\n }\n renderCheckboxField(field) {\n let items = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.items', []);\n let values = [];\n let value = field.value || '';\n if (value) values = value.split(',');\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(items, item => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"checkbox\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n type: \"checkbox\",\n id: 'form-checkbox' + encode(field.key) + item.value,\n onChange: e => this.toggleCheckboxField(field.key, item.value),\n checked: values.includes(item.value)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"label\", {\n class: \"checkbox--label\",\n for: 'form-checkbox' + encode(field.key) + item.value\n }, this.props.t.i18n(item.i18n_label) || item.label || item.value), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"checkbox--check\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null)));\n }));\n }\n toggleCheckboxField(key, v) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (f, fkkey) => f.key === key);\n if (!field) return;\n let value = field.value || '';\n let values = [];\n if (value) values = value.split(',');\n if (values.includes(v)) {\n values = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(values, value => value !== v);\n } else {\n values.push(v);\n }\n field.value = values.join(',');\n this.setState({\n formData\n });\n }\n renderRadioField(field) {\n let items = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.items', []);\n let value = field.value || '';\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(items, item => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"radio\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n type: \"radio\",\n name: 'form-radio' + encode(field.key),\n id: 'form-radio' + encode(field.key) + item.value,\n onChange: e => this.toggleRadioField(field.key, item.value),\n checked: value === item.value\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"label\", {\n class: \"radio--label\",\n for: 'form-radio' + encode(field.key) + item.value\n }, this.props.t.i18n(item.i18n_label) || item.label || item.value), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"radio--check\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null)));\n }));\n }\n toggleRadioField(key, v) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (f, fkkey) => f.key === key);\n if (!field) return;\n field.value = v;\n this.setState({\n formData\n });\n }\n selectDropdownField(key, v) {\n this.wasFormInputed = true;\n let formData = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.state.formData);\n let field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, (f, fkkey) => f.key === key);\n if (!field) return;\n field.value = v;\n this.setState({\n formData\n });\n }\n renderDropdownField(field) {\n let items = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.items', []);\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"select\", {\n class: \"form-control\",\n value: field.value,\n onChange: e => this.selectDropdownField(field.key, e.target.value)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"option\", {\n value: \"\"\n }, \"-- \", this.props.t('no_select'), \" --\"), _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(items, item => (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"option\", {\n value: item.value\n }, this.props.t.i18n(item.i18n_label) || item.label || item.value)));\n }\n renderFields(form, formName) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(this.state.formData) === 0) return null;\n let $fields = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.state.formData, (field, key) => {\n if (this.state.quickReplyMessage.text && key === 'question') return null;\n let $field = null;\n var errclass = field.error ? 'input--error' : '';\n if (field.type === 'text') {\n if (key == 'question' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.multiple_line')) {\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"textarea\", {\n class: `form-control ${errclass}`,\n ref: ref => {\n this['form_' + encode(key)] = ref;\n },\n id: 'form_' + encode(key),\n value: field.value || '',\n onInput: e => this.onInputChange(key, e.target.value),\n onChange: e => this.onInputChange(key, e.target.value),\n row: \"4\"\n });\n } else if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.select') === 'checkbox') {\n $field = this.renderCheckboxField(field);\n } else if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.select') === 'radio' && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.items', [])) < 5) {\n $field = this.renderRadioField(field);\n } else if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.select') === 'dropdown' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'def.items', [])) >= 5) {\n $field = this.renderDropdownField(field);\n } else {\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n id: 'form_' + encode(key),\n value: field.value || '',\n onInput: e => this.onInputChange(key, e.target.value),\n onChange: e => this.onInputChange(key, e.target.value),\n onKeyDown: e => this.onKeywordField(e, form, formName, key),\n ref: ref => {\n this['form_' + encode(key)] = ref;\n },\n class: `form-control ${errclass}`,\n type: \"text\"\n });\n }\n } else if (field.type === 'number') {\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n id: 'form_' + encode(key),\n value: field.value,\n onInput: e => this.onInputChange(key, e.target.value),\n ref: ref => {\n this['form_' + encode(key)] = ref;\n },\n class: `form-control ${errclass}`,\n type: \"number\"\n });\n } else if (field.type === 'boolean') {\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"checkbox\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n type: \"checkbox\",\n id: 'form-checkbox' + encode(key),\n onInput: e => this.onBooleanChange(key, e),\n checked: field.value\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"label\", {\n class: \"checkbox--label\",\n for: 'form-checkbox' + encode(key)\n }, field.label), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"checkbox--check\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null)));\n } else if (field.type === 'group') {\n $field = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(field.list, item => (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"radio\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n type: \"radio\",\n id: 'form-radio' + encode(key) + encode(item.value),\n checked: field.value === item.value,\n onInput: e => this.onInputChange(key, item.value)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"label\", {\n class: \"radio--label\",\n for: 'form-radio' + encode(key) + encode(item.value)\n }, this.props.t.i18n(item.i18n_label) || item.label || item.value), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"radio--check\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"inside\"\n }))));\n } else if (field.type === 'list') {\n let selected = this.state.formData[key].value || [];\n let items = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(field, 'list', []), item => {\n return !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].includes(selected, item);\n });\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_ListField_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n selected: selected,\n items: items,\n onAddItem: item => this.onListAddItem(key, item),\n onRemoveItem: item => this.onListRemoveItem(key, item)\n });\n $field = this.renderDropdownField(field);\n } else if (field.type === 'datetime') {\n $field = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"input\", {\n id: 'form_' + encode(key),\n value: field.value,\n onInput: e => this.onInputChange(key, e.target.value),\n class: `form-control ${errclass}`,\n type: \"date\"\n });\n }\n let label = '';\n if (field.key === 'fullname') {\n label = this.props.t('fullname');\n } else if (field.key === 'emails') {\n label = this.props.t('email');\n } else if (field.key === 'phones') {\n label = this.props.t('phones');\n } else if (field.key === 'question') {\n label = field.label || this.props.t('your_question');\n }\n if (field.label) label = field.label;\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n key: 'form_' + encode(key)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"label\", {\n class: \"label\",\n for: 'form_' + encode(key)\n }, label, field.is_required ? (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"span\", {\n class: \"red\"\n }, \"*\") : ''), $field, field.error ? (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"form-control--valid-input--error\"\n }, field.error) : '');\n });\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"pt-2\"\n }, $fields);\n }\n renderForm(form, submitLabel, formName) {\n let title = this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, `i18n_title`, {}));\n if (!title) title = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, 'title', this.props.t('capture_lead_title'));\n title = title.replace('↵', '');\n let btncls = 'btn--start-convo ';\n let hasError = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(this.state.formData, field => !!field.error);\n let newData = this.validateForm(this.state.formData);\n let hasEmptyError = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(newData, field => !!field.is_empty_error);\n let bodycls = 'widget-body';\n if (this.props.store.isEmbededChatMode()) bodycls += ' embed-chat';\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: bodycls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(FormMounter, {\n key: form._updated,\n form: form,\n onMount: this.formMounted\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"widget-body--content flex-grow-1 pl-3 pr-3 pb-2 d-flex flex-column\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"mt-2 d-flex flex-column\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", null, title), this.renderFields(form, formName)), this.props.store.isMobile() ? (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n style: \"height: 20px !important; flex-shrink: 0 !important\"\n }) : (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n style: \"min-height: 15px !important; flex: 1 !important; flex-shrink: 0 !important\"\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"button\", {\n class: btncls,\n onClick: _ => this.submitPrechatForm(form, formName),\n disabled: !!hasEmptyError || !!hasError || this.state.creating\n }, submitLabel)));\n }\n goToConvo(cid) {\n this.props.onGo({\n view: 'chat',\n cid\n });\n }\n renderConvoList() {\n let convoM = this.props.store.matchConvo('*');\n var convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(convoM, convo => this.props.store.matchConvo(convo.id));\n convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(convos, convo => !!convo);\n convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].orderByF(convos, convo => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'last_message_sent.created', convo.actived), 'desc');\n var $convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(convos, convo => {\n let ags = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(convo.members, m => {\n return m.type === 'agent' && m.membership === 'active' || m.type === 'bot';\n });\n let agentids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(ags, m => m.id);\n agentids = agentids || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].agentsOfConvo(convo)[0];\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--item\",\n \"data-cid\": convo.id,\n onClick: () => this.goToConvo(convo.id),\n key: convo.id\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_AgentsAvatar_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n plugin: this.props.plugin,\n store: this.props.store,\n mode: \"secondary\",\n class: \"d-flex flex-row\",\n tooltipPos: \"right\",\n agent_ids: [agentids[0]]\n }), this.renderConvoSummary(convo));\n });\n let $body = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--list\"\n }, $convos);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(convos) === 0) {\n $body = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--list\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"empty-container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"img\", {\n class: \"widget_body_empty_img\",\n alt: \"empty\",\n src: empty\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"empty-desc\"\n }, this.props.t('empty_convo'))));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--container\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--title\"\n }, this.props.t('conversations')), $body), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--footer\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_PoweredBy_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n store: this.props.store\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"button\", {\n class: \"btn--start-convo\",\n onClick: _ => this.goToConvo('')\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"span\", null, this.props.t('start_conversation')), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"img\", {\n src: send,\n alt: \"send button\",\n width: \"26\",\n height: \"26\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"mt-2\"\n })));\n }\n blur() {\n if (this.props.store.isPreview) return;\n var $input = this.msgInput.current;\n if (!$input) return;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => $input && $input.blur());\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => $input && $input.blur(), 300);\n }\n focusInput(text) {\n if (this.props.store.isPreview) return;\n if (this.shouldShowForm()) {\n let focusfieldkey = '';\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.state.formData, (field, key) => {\n if (focusfieldkey || field.type !== 'text') return;\n if (!field.value || field.error) focusfieldkey = key;\n });\n var $input = this['form_' + encode(focusfieldkey)];\n if ($input) $input.focus();\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.state.formData, (field, key) => {\n if (focusfieldkey || field.type !== 'text') return;\n if (!field.value || field.error) focusfieldkey = key;\n });\n var $input = this['form_' + encode(focusfieldkey)];\n if ($input) $input.focus();\n }, 200);\n return;\n }\n var $input = this.msgInput.current;\n if (!$input) return;\n if (text != undefined && typeof text === 'string') {\n $input.applyMessage(text);\n }\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => $input.focus());\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => $input.focus(), 300);\n }\n onRate(rating) {\n if (!this.props.cid) return;\n this.props.store.sendConvoEvent(this.props.cid, 'conversation_rated', {\n conversation: {\n ratings: [rating]\n }\n });\n this.focusInput();\n }\n fillQuickReplyToQuestion(message) {\n let formData = this.state.formData;\n if (formData) _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].set(formData, 'question.value', message.text || this.props.t('get_started'));\n this.setState({\n formData,\n quickReplyMessage: message\n });\n }\n createPostback(postback) {\n this.props.store.createPostback(this.props.cid, postback);\n }\n onChangeMessageInput() {\n this.wasFormInputed = true;\n }\n renderChat() {\n let $input = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_MessageInput_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n store: this.props.store,\n ref: this.msgInput,\n cid: this.props.cid,\n onChange: this.onChangeMessageInput,\n is_loading: this.state.creating,\n onSend: this.sendMessage,\n t: this.props.t\n });\n let convo = this.props.store.matchConvo(this.props.cid) || {};\n if (this.isFormRequired() || convo.state === 'ended') {\n $input = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"message-input message-input--preform\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"button\", {\n class: \"btn--start-convo\",\n onClick: e => this.onStartConvoClick(e)\n }, this.props.t('offline_preform_btn')));\n }\n let bodycls = 'widget-body';\n if (this.props.store.isEmbededChatMode()) bodycls += ' embed-chat';\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: bodycls\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"widget-body--content\",\n onClick: e => this.onContainerClick(e)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_Events_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n isShow: this.props.isShow,\n onLink: this.onLink,\n store: this.props.store,\n chatbox: this.props.plugin.chatbox || {},\n onFormSubmit: e => this.onEventFormSubmit(e),\n ref: ref => this.$events = ref,\n cid: this.props.cid,\n creating: this.creating,\n onSend: e => this.sendMessage(e),\n onPostback: e => this.createPostback(e),\n t: this.props.t,\n plugin: this.props.plugin\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_ConnectionStatus_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n cid: this.props.cid,\n store: this.props.store,\n t: this.props.t\n })), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_Rating_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n forceView: this.props.view,\n plugin: this.props.plugin,\n store: this.props.store,\n onRate: e => this.onRate(e),\n cid: this.props.cid,\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(Order, {\n forceView: this.props.view,\n plugin: this.props.plugin,\n show: this.state.showOrder,\n order_id: this.state.order_id,\n store: this.props.store,\n onClose: this.closeOrder,\n cid: this.props.cid,\n t: this.props.t\n }), $input);\n }\n async onStartConvoClick() {\n var convo = this.props.store.matchConvo(this.props.cid) || {};\n if (convo.state === 'ended') return this.props.onGo({\n view: 'chat',\n cid: ''\n });\n this.setState({\n clickedJoin: true,\n quickReplyMessage: {}\n });\n }\n onEventFormSubmit() {\n this.focusInput();\n }\n onContainerClick() {\n var selection = window.getSelection();\n if (selection.toString().length > 0) return;\n if (!this.props.store.isMobile()) this.focusInput();\n }\n isFormRequired() {\n let form;\n let accountSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'prechat_form.enabled')) form = accountSetting.prechat_form;\n let offlineEnabled = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'offline_form.enabled');\n if (this.isOffline(acc, accountSetting) && offlineEnabled) form = accountSetting.offline_form;\n if (!form) return false;\n let formData = this.fillForm(form);\n let convo = this.props.store.matchConvo(this.props.cid) || {};\n if (convo.state === 'ended') return true;\n if (convo.state && convo.state !== 'pending') delete formData.group;\n let isAllFiledEmpty = true;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(formData, field => {\n if (field.value) isAllFiledEmpty = false;\n });\n if (isAllFiledEmpty && !this.userHasSent(this.props.cid)) return true;\n return !!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(formData, field => field.is_required && (field.value == null || field.value === ''));\n }\n renderConvoSummary(convo) {\n let accountSetting = this.props.plugin.chatbox || {};\n let agentM = this.props.store.matchAgent('*');\n let ags = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(convo.members, m => {\n return m.type === 'agent' || m.type === 'bot';\n });\n let agentids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(ags, m => m.id);\n agentids = agentids || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].agentsOfConvo(convo)[0];\n let agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(agentids, id => agentM[id] || {\n avatar_url: defaultAvatar,\n fullname: 'Offline Agent'\n });\n var name = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(agents, ag => ag.fullname).join(', ');\n if (accountSetting.hide_agent_profile || !name) name = this.props.store.matchAccount().name;\n if (!name) name = this.props.t('agent');\n var $you = null;\n if (convo.lastSenderType === 'user') {\n $you = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"span\", null, this.props.t('you'), \":\");\n }\n let seen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConvoSeen(convo, this.props.store.matchUser().id);\n var lastmsg = this.renderMessagePreview(convo.last_message_sent);\n var time = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'last_message_sent.created')) || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(convo.created);\n let $unread = seen ? null : (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--item-unread\"\n });\n if (convo.state === 'ended') {\n $unread = (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"img\", {\n alt: \"conversation ended\",\n class: \"convo-list--convo-completed\",\n src: checkedimg,\n title: this.props.t('conversation_ended')\n });\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--convo-last-info\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"d-flex flex-row\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--convo-name\"\n }, name), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--convo-time\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_time_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n ago: true,\n time: time,\n t: this.props.t,\n short: true\n }))), (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"d-flex flex-row\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--convo-last-message\"\n }, $you, lastmsg), $unread));\n }\n agentsOfConvo(convo) {\n let agentM = this.props.store.matchAgent('*');\n var agentids = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].agentsOfConvo(convo, true);\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(agentids, id => agentM[id] || {\n avatar_url: defaultAvatar,\n fullname: 'Offline Agent'\n });\n }\n renderMessagePreview(ev) {\n let defmsg = this.props.t('sent_you_a_message');\n let message = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.text');\n var format = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.format');\n if (format !== 'plaintext') message = defmsg;\n if (!message && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.attachments')) > 0) message = defmsg;\n if (!message) return null;\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(\"div\", {\n class: \"convo-list--convo-last-mes\"\n }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extractText(message), tag => {\n if (tag.type === 'emoji') return (0,preact__WEBPACK_IMPORTED_MODULE_12__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n emojiCode: tag.text,\n byType: byType\n });\n return tag.text;\n }));\n }\n userHasSent(cid) {\n var convo = this.props.store.matchConvo(cid) || {};\n let user = this.props.store.matchUser();\n if (this.userSent[cid]) return true;\n let joined = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convo.members, mem => mem.id === user.id && (mem.membership === 'active' || mem.last_sent > 0));\n return joined;\n }\n hasSentMessage(cid) {\n if (this.userSent[cid]) return true;\n let convo = this.props.store.matchConvo(cid) || {};\n let joined = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convo.members, mem => {\n if (mem.type === 'bot') return true;\n return mem.last_sent;\n });\n return joined;\n }\n isOffline(acc, accSetting) {\n let enableWhen = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accSetting, 'offline_form.enable_when');\n let isonline = true;\n if (enableWhen === 'all_agents_offline') isonline = acc.is_online;\n if (enableWhen === 'out_of_bussiness_hour') isonline = acc.is_in_business_hour;\n return !isonline;\n }\n updateFormDataFields() {\n let form;\n let accountSetting = this.props.plugin.chatbox || {};\n let acc = this.props.store.matchAccount() || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'prechat_form.enabled')) form = accountSetting.prechat_form;\n let offlineEnabled = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(accountSetting, 'offline_form.enabled');\n if (this.isOffline(acc, accountSetting) && offlineEnabled) {\n form = accountSetting.offline_form;\n }\n if (this.props.view === 'offline_form') {\n form = accountSetting.offline_form;\n }\n if (this.props.view === 'prechat_form') {\n form = accountSetting.prechat_form;\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(form) === 0) return [];\n var data = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(form.fields, f => {\n var newf = Object.assign({}, f);\n if (f.type === 'list') {\n newf.list = f.list;\n }\n newf.label = this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(f, `i18n_label`, {})) || f.label;\n data['attr:' + f.key] = newf;\n });\n if (form.group_required && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(form.groups) > 0) {\n data['group'] = {\n key: 'group',\n is_required: !!form.group_required,\n label: this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, `i18n_group_label`, {})) || form.group_label,\n type: 'group',\n list: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(form.groups, group => ({\n value: group.id,\n label: group.name,\n i18n_label: group.i18n_name\n }))\n };\n }\n if (form.question_required) {\n data['question'] = {\n key: 'question',\n is_required: true,\n label: this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, `i18n_question_label`, {})) || form.question_label,\n type: 'text'\n };\n }\n if (this.isFormChanged(this.state.formData, data)) {\n this.setState({\n formData: data\n });\n }\n }\n isFormChanged(oldForm, newForm) {\n let oldKeys = Object.keys(oldForm);\n let newKeys = Object.keys(newForm);\n if (oldKeys.length !== newKeys.length) return true;\n for (let i = 0; i < oldKeys.length; i++) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(oldForm, `${oldKeys[i]}.label`) !== _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(newForm, `${newKeys[i]}.label`)) return true;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(oldForm, `${oldKeys[i]}.is_required`) !== _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(newForm, `${newKeys[i]}.is_required`)) return true;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(oldForm, `${oldKeys[i]}.list`)) !== _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(newForm, `${newKeys[i]}.list`))) {\n return true;\n }\n }\n return false;\n }\n fillForm(form) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(form) === 0) return [];\n var data = {};\n let user = this.props.store.matchUser();\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(form.fields, f => {\n var newf = Object.assign({}, f);\n newf.value = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUserAttr(user, f.key, f.type);\n if (newf.key == 'emails' && !newf.value) {\n newf.value = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUserAttr(user, 'related_email', 'text');\n }\n if (newf.key == 'phones' && !newf.value) {\n newf.value = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUserAttr(user, 'related_phone', 'text');\n }\n if (f.type === 'boolean' && !newf.value) newf.value = false;\n if (f.type === 'datetime' && newf.value) {\n newf.value = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date(data.value).toLocaleDateString('en-CA');\n }\n if (f.type === 'list') {\n newf.list = f.list;\n }\n newf.label = this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(f, `i18n_label`, {})) || f.label;\n data['attr:' + f.key] = newf;\n });\n if (form.group_required && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(form.groups) > 0) {\n data['group'] = {\n key: 'group',\n is_required: !!form.group_required,\n label: this.props.t.i18n(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(form, `i18n_group_label`, {})) || form.group_label,\n type: 'group',\n list: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(form.groups, group => ({\n value: group.id,\n label: group.name\n }))\n };\n }\n return data;\n }\n}\nclass FormMounter extends _common_js__WEBPACK_IMPORTED_MODULE_11__.Com {\n componentDidMount() {\n this.props.onMount(this.props.form);\n }\n}\nfunction encode(key) {\n return encodeURIComponent(key);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/Widget.js?\n}");
|
|
406
|
-
|
|
407
|
-
/***/ },
|
|
408
|
-
|
|
409
|
-
/***/ "./src/chatbox/block.js"
|
|
410
|
-
/*!******************************!*\
|
|
411
|
-
!*** ./src/chatbox/block.js ***!
|
|
412
|
-
\******************************/
|
|
413
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
414
|
-
|
|
415
|
-
"use strict";
|
|
416
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Block)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _Emoji_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Emoji.js */ \"./src/chatbox/Emoji.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\n\n\n\nclass Block extends _common_js__WEBPACK_IMPORTED_MODULE_2__.Com {\n constructor(props) {\n super(props);\n }\n renderBlock(block) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(block) == 0) return null;\n let ele = {};\n ele.style = '';\n if (block.style) {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(block.style, (v, k) => {\n ele.style += k + ': ' + v + ';';\n });\n }\n ele.attrs = {};\n if (block.title != '') {\n ele.attrs['title'] = block.title;\n }\n if (block.href != '') {\n ele.attrs['href'] = block.href;\n }\n ele.class = block.class;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(block.attrs, (v, k) => {\n ele.attrs[k] = v;\n });\n if (block.type == 'bullet_list' || block.type == 'ordered_list') {\n if (block.type == 'bullet_list') {\n ele.tag = 'ul';\n } else {\n ele.tag = 'ol';\n }\n }\n if (block.type == 'list_item') {\n ele.tag = 'li';\n }\n if (block.type == 'heading') {\n if (block.level < 1) block.level = 1;\n if (block.level > 6) block.level = 6;\n ele.tag = 'h' + block.level;\n }\n if (block.type == 'paragraph' || block.type == 'section' || block.type == 'div') ele.tag = 'div';\n ele.text = block.text;\n if (block.type == '' || block.type == 'text' || block.type == 'dynamic-field') {\n ele.tag = 'span';\n if (block.bold) ele.tag = 'b';\n if (block.italic) {\n if (ele.tag == 'b') {\n ele.style += 'font-style: italic;';\n } else {\n ele.tag = 'em';\n }\n }\n if (block.underline) ele.Style += 'text-decoration:underline;';\n if (block.strike_through) ele.Style += 'text-decoration: line-through;';\n }\n if (block.type == 'dynamic-field') {\n let key = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(block.attrs, 'key');\n ele.text = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.data, [key], ele.text);\n }\n if (block.type == 'link') {\n ele.tag = 'a';\n ele.attrs['href'] = block.href;\n ele.attrs['target'] = block.target;\n ele.attrs['title'] = block.title;\n }\n if (block.type == 'mention-agent' || block.type == 'mention') {\n ele.tag = 'span';\n ele.class = 'mention';\n let id = block.attrs.id = '';\n if (block.attrs.id == '*' || block.attrs.id == 'all') {\n ele.text = '@' + this.$t('all');\n }\n if (id.startsWith('ag')) {\n let ag = store.matchAgent(id);\n let name = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getAgentDisplayName(ag, insert.mention.fullname);\n ele.text = '@' + name;\n }\n }\n if (block.type == 'horizontal_rule') ele.tag = 'hr';\n if (block.type == 'emoji') {\n let code = '';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(block.attrs) > 0) code = block.attrs['code'];\n if (code == '') code = block.Text;\n if (code != '') {\n ele.tag = 'Emoji';\n ele.attrs['emojiCode'] = code;\n }\n }\n if (block.type == 'table') {\n return null;\n }\n if (block.type === 'image') {\n ele.tag = 'img';\n ele.attrs['src'] = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(block, 'image.url');\n ele.attrs['alt'] = block.alt_text;\n }\n let $body = null;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(block.content)) {\n $body = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(block.content, block => this.renderBlock(block));\n } else if (block.type === 'text') {\n let $tags = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].extractText(ele.text).map(tag => {\n if (tag.type === 'link') {\n let url = tag.text || '';\n if (!url.startsWith('//') && !url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('data:')) {\n url = '//' + url;\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n href: url,\n target: \"_blank\",\n onClick: e => this.props.onLink(e, url)\n }, tag.text);\n }\n if (tag.type === 'phone') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n href: 'tel:' + tag.text\n }, tag.text);\n if (tag.type === 'email') return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n href: 'mailto:' + tag.text\n }, tag.text);\n return tag.text;\n });\n $body = $tags;\n } else {\n $body = ele.text;\n }\n switch (ele.tag) {\n case 'img':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n class: this.props.textMessage ? 'message-text-inline-image-wrapper' : '',\n href: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ele, 'attrs.src'),\n target: \"_blank\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"img\", {\n class: this.props.textMessage ? 'message-text-inline-image' : '',\n src: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ele, 'attrs.src'),\n alt: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ele, 'attrs.alt') || ''\n }));\n case 'div':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"div\", null, $body);\n case 'h1':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h1\", null, $body);\n case 'h2':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h2\", null, $body);\n case 'h3':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h3\", null, $body);\n case 'h4':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h4\", null, $body);\n case 'h5':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h5\", null, $body);\n case 'h6':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"h6\", null, $body);\n case 'ol':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"ol\", {\n class: this.props.textMessage ? 'text-message-ol' : ''\n }, $body);\n case 'ul':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"ul\", {\n class: this.props.textMessage ? 'text-message-ul' : ''\n }, $body);\n case 'li':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"li\", {\n class: this.props.textMessage ? 'text-message-li' : ''\n }, $body);\n case 'span':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"span\", null, $body);\n case 'em':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"em\", null, $body);\n case 'b':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"b\", null, $body);\n case 'hr':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"hr\", null);\n case 'a':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(\"a\", {\n class: this.props.textMessage ? 'message-text-link' : '',\n href: ele.attrs['href'],\n target: this.props.textMessage ? '_blank' : ele.attrs['target'],\n title: ele.attrs['title']\n }, $body);\n case 'Emoji':\n return (0,preact__WEBPACK_IMPORTED_MODULE_3__.h)(_Emoji_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n emojiCode: ele.attrs['emojiCode']\n });\n }\n return null;\n }\n render() {\n return this.renderBlock(this.props.block);\n }\n}\nfunction absLink(url) {\n if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('//')) return 'http://' + url;\n return url;\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/block.js?\n}");
|
|
417
|
-
|
|
418
|
-
/***/ },
|
|
419
|
-
|
|
420
|
-
/***/ "./src/chatbox/css.js"
|
|
421
|
-
/*!****************************!*\
|
|
422
|
-
!*** ./src/chatbox/css.js ***!
|
|
423
|
-
\****************************/
|
|
424
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
425
|
-
|
|
426
|
-
"use strict";
|
|
427
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__(/*! css-loader!less-loader!../../assets/less/chatbox.less */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./assets/less/chatbox.less\"));\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/css.js?\n}");
|
|
428
|
-
|
|
429
|
-
/***/ },
|
|
430
|
-
|
|
431
|
-
/***/ "./src/chatbox/main.js"
|
|
432
|
-
/*!*****************************!*\
|
|
433
|
-
!*** ./src/chatbox/main.js ***!
|
|
434
|
-
\*****************************/
|
|
435
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
436
|
-
|
|
437
|
-
"use strict";
|
|
438
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Main)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _ChatButton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ChatButton.js */ \"./src/chatbox/ChatButton.js\");\n/* harmony import */ var _Widget_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Widget.js */ \"./src/chatbox/Widget.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _css_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./css.js */ \"./src/chatbox/css.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\n\nclass Main extends _common_js__WEBPACK_IMPORTED_MODULE_3__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"state\", {\n cssReady: false,\n changing: false\n });\n this.refButton = (0,preact__WEBPACK_IMPORTED_MODULE_4__.createRef)();\n this.refWidget = (0,preact__WEBPACK_IMPORTED_MODULE_4__.createRef)();\n }\n refreshCSS() {\n let plugins = this.props.store.matchPlugin();\n let found = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(plugins, plugin => plugin.id === this.props.plugin.id);\n if (!found) return;\n let css = _css_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"][\"default\"].toString() + '';\n let chatbox = found.chatbox;\n let margin_y = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'desktop_button.margin_y');\n chatbox.desktop_widget_max_height = margin_y ? `calc(100% - ${margin_y + 10}px)` : 'calc(100% - 40px)';\n const PREVIEW_MAX_WIDTH = 340;\n let previewMaxWidthVal = Math.min(PREVIEW_MAX_WIDTH, chatbox.width);\n if (Number.isNaN(previewMaxWidthVal) || !previewMaxWidthVal) previewMaxWidthVal = PREVIEW_MAX_WIDTH;\n chatbox.preview_max_width = previewMaxWidthVal + 'px';\n var outcss = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].replaceCssVariable(css, chatbox);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setCss(this.props.plugin.id, this.$cssStyleDiv, outcss);\n }\n componentWillUnmount() {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setCss(this.props.plugin.id, this.$cssStyleDiv, '');\n }\n async componentDidMount() {\n this.$cssStyleDiv = document.getElementById('subiz-style-for-' + this.props.plugin.id);\n if (!this.$cssStyleDiv) {\n this.$cssStyleDiv = document.createElement('style');\n document.head.appendChild(this.$cssStyleDiv);\n this.$cssStyleDiv.type = 'text/css';\n this.$cssStyleDiv.id = 'subiz-style-for-' + this.props.plugin.id;\n }\n this.checkExpand();\n this.props.store.onResetCSS(this, () => this.refreshCSS());\n this.props.store.onConvoEvent(this, ev => this.onConvoEvent(ev));\n this.props.store.onUpdate(this, _ => this.checkExpand());\n this.props.store.onDestroyed(this, _ => {\n this.setState({\n widgetView: '',\n widgetConvoId: ''\n });\n });\n this.refreshCSS();\n let lastview = this.props.store.matchLastview() || {};\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'opts.cid');\n if (cid) {\n this._last_cid = cid;\n this.setState({\n changing: true\n }, () => {\n this.props.store.fetchConvo(cid).then(() => {\n let convo = this.props.store.matchConvo(cid);\n if (cid != this._last_cid) return;\n this.setState({\n changing: false\n });\n if (!convo) return this.showWidget({});\n });\n });\n }\n this.setState({\n cssReady: true\n });\n }\n render() {\n if (this.state.changing) {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_changing_ready = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n return null;\n }\n if (!this.state.cssReady) {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_css_not_ready = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n return null;\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUserBanned(this.props.store.matchUser())) {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_user_is_banned = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n return null;\n }\n if (!this.props.t) {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_no_t = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n return null;\n }\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox_main = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n let lastview = this.props.store.matchLastview() || {};\n let isShowWidget = lastview.screen === 'widget';\n let widgetView = lastview.view;\n let widgetConvoId = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'opts.cid');\n return (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(\"div\", {\n class: this.props.store.isMobile() || this.props.store.isEmbededChatMode() ? 'mobile' : 'desktop'\n }, (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(_ChatButton_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n plugin: this.props.plugin,\n store: this.props.store,\n key: \"chat_button\",\n ref: this.refButton,\n isShow: !isShowWidget,\n onClick: e => this.showWidget(e),\n onNewMessageShowWidget: cid => this.onNewMessageShowWidget(cid),\n onSelectQuickReply: msg => this.onSelectQuickReply(msg),\n t: this.props.t\n }), (0,preact__WEBPACK_IMPORTED_MODULE_4__.h)(_Widget_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n plugin: this.props.plugin,\n store: this.props.store,\n view: widgetView,\n cid: widgetConvoId,\n isShow: isShowWidget,\n onClose: a => this.onWidgetClose(a),\n onGo: a => this.showWidget(a),\n t: this.props.t,\n ref: this.refWidget\n }));\n }\n onConvoEvent(ev) {\n this.checkExpand();\n this.checkShowBotConvo(ev);\n }\n checkShowBotConvo(ev) {\n let $widget = this.refWidget.current;\n if (!$widget) return;\n if ($widget.wasFormInputed) return;\n if (ev.type !== 'message_sent') return;\n let isShowWidget = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.props.store.matchLastview(), 'screen') === 'widget';\n if (!isShowWidget) return;\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n let byid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.id') || '';\n if (!byid.startsWith('bb') || byType !== 'agent') return;\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.conversation_id');\n if (!cid) return;\n this.showWidget({\n cid,\n view: 'chat'\n });\n }\n checkExpand() {\n if (this.props.store.isMobile()) return;\n if (this.props.plugin._no_auto_expand) return;\n return;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n }\n onSelectQuickReply(message) {\n this.showWidget({\n view: 'chat',\n cid: message.conversation_id\n });\n this.forceUpdate(() => {\n this.refWidget.current && this.refWidget.current.sendMessage(message);\n });\n }\n onNewMessageShowWidget(cid) {\n if (this.props.store.isMobile()) modifyViewport();\n this.props.store.updateLastview({\n screen: 'widget',\n previewEvent: {},\n view: 'chat',\n opts: {\n cid\n }\n });\n this.forceUpdate();\n }\n async showWidget(p) {\n let cid = p.cid;\n let newView = {\n screen: 'widget',\n minimized: 0,\n view: p.view,\n previewEvent: {},\n opts: {\n cid\n }\n };\n if (!p.view && !p.cid) {\n let convoM = this.props.store.matchConvo('*');\n let redconvo = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convoM, convo => !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConvoSeen(convo, this.props.store.matchUser().id));\n cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(redconvo, 'id', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convoM, '0.id'));\n newView.view = 'chat';\n newView.opts = {\n cid\n };\n }\n if (this.props.store.isMobile()) modifyViewport();\n this.props.store.updateLastview(newView);\n this.forceUpdate();\n }\n getCurrentView() {\n let lastview = this.props.store.matchLastview() || {};\n return {\n is_show_widget: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'screen') === 'widget',\n view: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'view', ''),\n conversation_id: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(lastview, 'opts.cid', '')\n };\n }\n applyMessage(text) {\n this.refWidget.current && this.refWidget.current.applyMessage(text);\n }\n showGreeting() {\n this.refButton.current && this.refButton.current.ShowGreeting();\n }\n hideGreeting() {\n this.refButton.current && this.refButton.current.HideGreeting();\n }\n showTyping() {\n this.refWidget.current && this.refWidget.current.ShowTyping();\n }\n hideWidget() {\n restoreViewport();\n this.props.store.updateLastview({\n screen: 'button',\n previewEvent: {},\n minimized: Date.now()\n });\n this.forceUpdate();\n }\n onWidgetClose() {\n this.hideWidget();\n this.props.store.emitCloseWidgetEvent();\n }\n}\nfunction restoreViewport() {\n if (document.body && document.body.classList) document.body.classList.remove('sbz_no_scroll');\n if (document.documentElement && document.documentElement.classList) document.documentElement.classList.remove('sbz_no_scroll');\n let metatag = document.getElementById('subiz-meta-viewport');\n if (metatag) metatag.remove();\n}\nfunction modifyViewport() {\n if (document.body && document.body.classList) document.body.classList.add('sbz_no_scroll');\n if (document.documentElement && document.documentElement.classList) document.documentElement.classList.add('sbz_no_scroll');\n let currentMetas = document.querySelectorAll('meta[name=\"viewport\"]');\n let shouldAddMetaTag = true;\n for (let i = 0; i < currentMetas.length; i++) {\n let meta = currentMetas[i];\n let content = meta.getAttribute('content') || '';\n if (content.indexOf('maximum-scale') > -1) {\n shouldAddMetaTag = false;\n break;\n }\n }\n if (shouldAddMetaTag) {\n let metatag = document.createElement('meta');\n metatag.httpEquiv = 'X-UA-Compatible';\n metatag.name = 'viewport';\n metatag.id = 'subiz-meta-viewport';\n metatag.content = 'maximum-scale=1.0, user-scalable=no, width=device-width, initial-scale=1.0';\n document.getElementsByTagName('head')[0].appendChild(metatag);\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/main.js?\n}");
|
|
439
|
-
|
|
440
|
-
/***/ },
|
|
441
|
-
|
|
442
|
-
/***/ "./src/chatbox/releaseAnimation.js"
|
|
443
|
-
/*!*****************************************!*\
|
|
444
|
-
!*** ./src/chatbox/releaseAnimation.js ***!
|
|
445
|
-
\*****************************************/
|
|
446
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
447
|
-
|
|
448
|
-
"use strict";
|
|
449
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n constructor(config) {\n this.duration = config.duration || 100;\n this.breakingV = config.breakingV || 7.0;\n this.maxY = config.maxY || 500;\n this.minY = config.minY || 0;\n }\n play(v, y0, cb) {\n this.stop();\n var t0;\n var run = t => {\n if (!t) t = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date().getTime();\n var deltaT = t - t0;\n var [newy, done] = this.calcY(v, y0, deltaT);\n cb(newy);\n if (done) return this.stop();\n this.animationframe = window.requestAnimationFrame(run);\n };\n this.animationframe = window.requestAnimationFrame(t => {\n t0 = t || new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date().getTime();\n run(t0);\n });\n }\n calcY(v, y0, t) {\n var towardY;\n if (y0 > this.maxY) towardY = this.maxY;else if (y0 < this.minY) towardY = this.minY;else if (Math.abs(v) < this.breakingV) {\n if (Math.abs(this.maxY - y0) < Math.abs(this.minY - y0)) {\n towardY = this.maxY;\n } else {\n towardY = this.minY;\n }\n } else {\n if (v < 0) towardY = this.maxY;else towardY = this.minY;\n }\n var y = linearTransform(y0, towardY, t, this.duration);\n return [y, eqFloat(y, towardY)];\n }\n stop() {\n window.cancelAnimationFrame(this.animationframe);\n }\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\nfunction linearTransform(from, to, t, duration) {\n if (eqFloat(from, to)) return from;\n var s = to - from;\n var v = s / duration;\n var x = from + v * t;\n if (from < to && x > to) x = to;else if (to < from && x < to) x = to;\n return x;\n}\nfunction eqFloat(a, b) {\n return Math.abs(a - b) <= 0.001;\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/releaseAnimation.js?\n}");
|
|
450
|
-
|
|
451
|
-
/***/ },
|
|
452
|
-
|
|
453
|
-
/***/ "./src/chatbox/spinner.js"
|
|
454
|
-
/*!********************************!*\
|
|
455
|
-
!*** ./src/chatbox/spinner.js ***!
|
|
456
|
-
\********************************/
|
|
457
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
458
|
-
|
|
459
|
-
"use strict";
|
|
460
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Spinner)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\nconst loadingimg = __webpack_require__(/*! ../../assets/img/loading_static.svg */ \"./assets/img/loading_static.svg\");\n\n\nclass Spinner extends _common_js__WEBPACK_IMPORTED_MODULE_0__.Com {\n render() {\n let mode = (this.props.mode + '').toLowerCase();\n let mainColor = mode === 'dark' ? '#000000dd' : mode === 'blue' ? 'rgba(52, 152, 220, .8)' : mode;\n let size = this.props.size || 14;\n let borderWidth = Math.ceil(size / 14);\n let style = `width: ${size}px !important;height: ${size}px !important;`;\n if (this.props.center) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"loading\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"img\", {\n alt: \"loading\",\n style: style,\n src: loadingimg\n }));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"img\", {\n alt: \"loading\",\n style: style,\n src: loadingimg\n });\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/spinner.js?\n}");
|
|
461
|
-
|
|
462
|
-
/***/ },
|
|
463
|
-
|
|
464
|
-
/***/ "./src/chatbox/time.js"
|
|
465
|
-
/*!*****************************!*\
|
|
466
|
-
!*** ./src/chatbox/time.js ***!
|
|
467
|
-
\*****************************/
|
|
468
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
469
|
-
|
|
470
|
-
"use strict";
|
|
471
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Time)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n\nvar g_pub = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Pubsub();\n_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => g_pub.publish('time'), 20 * 1000);\n\n\nclass Time extends _common_js__WEBPACK_IMPORTED_MODULE_1__.Com {\n constructor(props) {\n super(props);\n this.setState({\n t: '',\n langCode: 'en_US'\n });\n }\n updateTime() {\n var t = '';\n let forceLocale = '';\n if (this.props.t) {\n if (this.props.t.locale && typeof this.props.t.locale === 'function') {\n forceLocale = this.props.t.locale();\n }\n }\n if (this.props.ago) {\n if (this.props.short) {}\n if (!t && this.props.time > 0) t = ago(this.props.time, new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date().getTime(), this.props.t);\n } else t = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].shortTime(this.props.time, this.props.tzoffset, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now(), forceLocale);\n if (this.props.uppercase) t = t.toUpperCase();\n if (t === this.state.t) return;\n this.setState({\n t\n });\n }\n componentDidMount() {\n g_pub.on2(this, 'time', () => this.updateTime());\n this.updateTime();\n }\n render() {\n let locale = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(navigator, 'languages.0', 'en-US');\n if (this.props.t) {\n if (this.props.t.locale && typeof this.props.t.locale === 'function') {\n locale = this.props.t.locale();\n }\n }\n let title = new Date(this.props.time).toLocaleString(locale);\n return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(\"span\", {\n class: this.props.class,\n style: this.props.style,\n title: title\n }, this.state.t);\n }\n}\nfunction ago(timeA, timeB, t) {\n let relObj = {\n s: '%d sec',\n m: '1 min',\n mm: '%d mins',\n h: '1 hour',\n hh: '%d hours',\n d: '1 day',\n dd: '%d days',\n M: '1 month',\n MM: '%d months',\n y: '1 year',\n yy: '%d years'\n };\n if (t) {\n relObj = {\n s: `%d ${t('second_short')}`,\n m: `1 ${t('minute_short')}`,\n mm: `%d ${t('minutes_short')}`,\n h: `1 ${t('hour_short')}`,\n hh: `%d ${t('hours_short')}`,\n d: `1 ${t('day_short')}`,\n dd: `%d ${t('days_short')}`,\n M: `1 ${t('month_short')}`,\n MM: `%d ${t('months_short')}`,\n y: `1 ${t('year_short')}`,\n yy: `%d ${t('years_short')}`\n };\n }\n const loc = relObj;\n const T = [{\n l: 's',\n r: 44,\n d: 1000\n }, {\n l: 'm',\n r: 89\n }, {\n l: 'mm',\n r: 44,\n d: 60000\n }, {\n l: 'h',\n r: 89\n }, {\n l: 'hh',\n r: 21,\n d: 3600000\n }, {\n l: 'd',\n r: 35\n }, {\n l: 'dd',\n r: 25,\n d: 86400000\n }, {\n l: 'M',\n r: 45\n }, {\n l: 'MM',\n r: 10,\n d: 30 * 86400000\n }, {\n l: 'y',\n r: 17\n }, {\n l: 'yy',\n d: 365 * 86400000\n }];\n const Tl = T.length;\n let result;\n let out;\n for (let i = 0; i < Tl; i += 1) {\n let t = T[i];\n if (t.d) {\n result = (timeA - timeB) / t.d;\n }\n let abs = Math.round(Math.abs(result));\n if (abs <= t.r || !t.r) {\n if (abs <= 1 && i > 0) t = T[i - 1];\n out = loc[t.l].replace('%d', abs);\n break;\n }\n }\n return out;\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/time.js?\n}");
|
|
472
|
-
|
|
473
|
-
/***/ },
|
|
474
|
-
|
|
475
|
-
/***/ "./src/chatbox/touchscroll.js"
|
|
476
|
-
/*!************************************!*\
|
|
477
|
-
!*** ./src/chatbox/touchscroll.js ***!
|
|
478
|
-
\************************************/
|
|
479
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
480
|
-
|
|
481
|
-
"use strict";
|
|
482
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ bind)\n/* harmony export */ });\nfunction bind(el) {\n if (!el) return;\n el.removeEventListener('touchstart', el.md, 0);\n window.removeEventListener('touchend', el.mu, 0);\n window.removeEventListener('touchmove', el.mm, 0);\n var lastClientX, pushed;\n el.md = function (e) {\n let touch = getFirstTouch(e);\n if (!el.hasAttribute('nochilddrag') || !document.elementFromPoint(touch.pageX, touch.pageY)) {\n pushed = 1;\n lastClientX = touch.clientX;\n e.preventDefault();\n }\n };\n el.mu = () => {\n pushed = 0;\n };\n el.mm = function (e) {\n if (!pushed) return;\n let touch = getFirstTouch(e);\n el.scrollLeft -= -lastClientX + touch.clientX;\n lastClientX = touch.clientX;\n };\n el.addEventListener('touchstart', el.md, {\n passive: true\n });\n window.addEventListener('touchend', el.mu, {\n passive: true\n });\n window.addEventListener('touchmove', el.mm, {\n passive: true\n });\n}\nfunction getFirstTouch(ev) {\n if (!ev.touches) return {};\n if (!ev.touches.length) return {};\n return ev.touches[0];\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/chatbox/touchscroll.js?\n}");
|
|
483
|
-
|
|
484
|
-
/***/ },
|
|
485
|
-
|
|
486
|
-
/***/ "./src/common.js"
|
|
487
|
-
/*!***********************!*\
|
|
488
|
-
!*** ./src/common.js ***!
|
|
489
|
-
\***********************/
|
|
490
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
491
|
-
|
|
492
|
-
"use strict";
|
|
493
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Clickaway: () => (/* binding */ Clickaway),\n/* harmony export */ Com: () => (/* binding */ Com),\n/* harmony export */ downloadLanguage: () => (/* binding */ downloadLanguage),\n/* harmony export */ getLocale: () => (/* binding */ getLocale),\n/* harmony export */ langMessages: () => (/* binding */ langMessages)\n/* harmony export */ });\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/index.js */ \"./src/util/index.js\");\n\n\nclass Com extends preact__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props) {\n super(props);\n this._isMounted = true;\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setTimeout(() => {\n if (this.componentWillUnmount) {\n let old = this.componentWillUnmount.bind(this);\n this.componentWillUnmount = () => {\n old();\n this._isMounted = false;\n };\n }\n }, 10);\n }\n}\nclass Clickaway extends Com {\n constructor(props) {\n super(props);\n this.setWrapperRef = this.setWrapperRef.bind(this);\n this.onClick = this.onClick.bind(this);\n }\n componentDidMount() {\n document.addEventListener('mousedown', this.onClick);\n }\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.onClick);\n }\n setWrapperRef(node) {\n this.wrapperRef = node;\n }\n onClick(event) {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n this.props.onClickaway && this.props.onClickaway();\n }\n }\n render() {\n return (0,preact__WEBPACK_IMPORTED_MODULE_0__.h)(\"div\", {\n ref: this.setWrapperRef\n }, this.props.children);\n }\n}\nconst getLocale = (plugin, loc) => {\n if (!loc) loc = '';\n let found = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(plugin.locales, l => l.toLowerCase().trim() === loc.toLowerCase().trim());\n if (found) return found;\n found = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(plugin.locales, l => {\n l = l.replace('-', '_').split('_')[0].trim().toLowerCase();\n let compareloc = loc.replace('-', '_').split('_')[0].trim().toLowerCase();\n return l == compareloc;\n });\n if (found) return found;\n return plugin.locale || 'en-US';\n};\nlet langMessages = {};\nlet downloadLock = false;\nfunction downloadLanguage(store, locale, force) {\n if (downloadLock) return new Promise(resolve => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setTimeout(() => downloadLanguage(store, locale, force).then(resolve), 100));\n downloadLock = true;\n let messages;\n if (locale === 'debug' || langMessages[locale] && !force) {\n downloadLock = false;\n return Promise.resolve();\n }\n return store.getLocaleContent(locale).then(res => {\n downloadLock = false;\n messages = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(res, 'body.messages', []);\n langMessages[locale] = messages;\n });\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/common.js?\n}");
|
|
494
|
-
|
|
495
|
-
/***/ },
|
|
496
|
-
|
|
497
|
-
/***/ "./src/form/Form.js"
|
|
498
|
-
/*!**************************!*\
|
|
499
|
-
!*** ./src/form/Form.js ***!
|
|
500
|
-
\**************************/
|
|
501
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
502
|
-
|
|
503
|
-
"use strict";
|
|
504
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Form2)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _chatbox_block_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../chatbox/block.js */ \"./src/chatbox/block.js\");\n/* harmony import */ var _rating_stars_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rating-stars.js */ \"./src/form/rating-stars.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\n\n\nclass Form2 extends _common_js__WEBPACK_IMPORTED_MODULE_0__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"state\", {\n errorFields: {},\n submiting: false\n });\n _defineProperty(this, \"renderFormComponent\", (com, idx) => {\n if (com.type === 'input') return this.renderField(com, idx);\n if (com.type === 'button') return this.renderSubmitButton(com, idx);\n if (this.props.isSubmited) return;\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component form-component-block\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(_chatbox_block_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n block: com\n }));\n });\n _defineProperty(this, \"renderSubmitButton\", (com, idx) => {\n if (this.props.isSubmited) return;\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component form-component-submit-button\"\n }, this.props.errorMessage && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-control--valid-input--error mb-1\"\n }, this.props.errorMessage), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", null, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"button\", {\n class: \"btn--start-convo\",\n disabled: this.props.submiting\n }, com.label)));\n });\n _defineProperty(this, \"renderField\", (com, idx) => {\n let errorMsg = this.state.errorFields[com.key];\n if (this.props.isSubmited) {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n if (Array.isArray(val)) val = val.join(', ');\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component submitted\",\n key: com.key\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"label\", {\n class: \"label\"\n }, com.label), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", null, val || (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"span\", {\n class: \"text-muted text-italic\"\n }, this.props.t('no_info_input'))));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component\",\n key: com.key\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"label\", {\n class: \"label\"\n }, com.label, \" \", com.is_required && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"span\", {\n class: \"red\"\n }, \"*\")), com.input_type === 'text' && this.renderFieldTextInput(com, idx), com.input_type === 'textarea' && this.renderFieldTextareaInput(com, idx), com.input_type === 'date' && this.renderFieldDateInput(com, idx), com.input_type === 'radio' && this.renderFieldRadioInput(com, idx), com.input_type === 'checkbox' && this.renderFieldCheckboxInput(com, idx), (com.input_type === 'dropdown' || com.input_type === 'select') && this.renderFieldDropdownInput(com, idx), com.input_type === 'rating' && this.renderFieldRatingInput(com, idx), errorMsg && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-control--valid-input--error\"\n }, errorMsg));\n });\n _defineProperty(this, \"renderFieldTextInput\", (com, idx) => {\n let cls = 'form-control';\n if (this.state.errorFields[com.key]) cls = 'form-control input--error';\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"input\", {\n ref: this[`${com.key}_input`],\n type: \"text\",\n class: cls,\n placeholder: com.placeholder,\n value: val,\n onInput: e => {\n this.onChangeValue(com.key, e.target.value);\n this.clearError(com.key);\n }\n });\n });\n _defineProperty(this, \"renderFieldDateInput\", (com, idx) => {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n let cls = 'form-control';\n if (this.state.errorFields[com.key]) cls = 'form-control input--error';\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"input\", {\n ref: this[`${com.key}_input`],\n class: cls,\n type: \"date\",\n value: val,\n onInput: e => {\n this.onChangeValue(com.key, e.target.value);\n this.clearError(com.key);\n }\n });\n });\n _defineProperty(this, \"renderFieldRadioInput\", (com, idx) => {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n let wrappercls = 'form-radios-wrapper';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].size(com.input_options) >= 3 && this.props.mode !== 'attachment') wrappercls += ' horizontal';\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: wrappercls\n }, _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(com.input_options, (option, oidx) => {\n let id = com.key + '_' + oidx;\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"radio\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"input\", {\n type: \"radio\",\n name: com.key,\n id: id,\n checked: option.value === val,\n onChange: () => this.toggleRadioField(com.key, option.value)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"label\", {\n class: \"radio--label\",\n for: id\n }, option.label), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"radio--check\"\n }));\n }));\n });\n _defineProperty(this, \"renderFieldCheckboxInput\", (com, idx) => {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '[]';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n let wrappercls = 'form-checkboxes-wrapper';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].size(com.input_options) >= 3 && this.props.mode !== 'attachment') wrappercls += ' horizontal';\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: wrappercls\n }, _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(com.input_options, (option, oidx) => {\n let id = com.key + '_' + oidx;\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"checkbox\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"input\", {\n type: \"checkbox\",\n name: com.key,\n id: id,\n checked: val.includes(option.value),\n onChange: () => this.toggleCheckboxField(com.key, option.value)\n }), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"label\", {\n class: \"checkbox--label\",\n for: id\n }, option.label), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"checkbox--check\"\n }));\n }));\n });\n _defineProperty(this, \"renderFieldDropdownInput\", (com, idx) => {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n let cls = 'form-control';\n if (this.state.errorFields[com.key]) cls += ' input--error';\n if (!val) cls += ' form-control--empty';\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"select\", {\n class: cls,\n ref: this[`${com.key}_input`],\n onChange: e => {\n this.onChangeValue(com.key, e.target.value);\n this.clearError(com.key);\n }\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"option\", {\n value: \"\"\n }, \"-- \", this.props.t('no_select'), \" --\"), _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(com.input_options, option => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"option\", {\n value: option.value\n }, option.label);\n }));\n });\n _defineProperty(this, \"renderFieldTextareaInput\", (com, idx) => {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"textarea\", {\n onInput: e => {\n this.onChangeValue(com.key, e.target.value);\n this.clearError(com.key);\n },\n ref: this[`${com.key}_input`],\n rows: \"3\",\n class: \"form-control\",\n placeholder: com.placeholder\n });\n });\n _defineProperty(this, \"renderFieldRatingInput\", (com, idx) => {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(_rating_stars_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onChange: v => this.onChangeValue(com.key, v)\n });\n });\n _defineProperty(this, \"onSubmit\", e => {\n e.preventDefault();\n if (!this.validateForm()) return;\n this.props.onSubmit();\n });\n _defineProperty(this, \"validateForm\", () => {\n let result = true;\n let ref = '';\n let errors = {};\n let components = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'components') || [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].each(components, com => {\n if (com.type === 'input') {\n let val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === com.key) || {};\n val = val.value || '\"\"';\n val = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(val);\n if (com.is_required) {\n let isEmpty = false;\n if (typeof val === 'string' && !val.trim()) isEmpty = true;\n if (Array.isArray(val) && val.length === 0) isEmpty = true;\n if (isEmpty) {\n result = false;\n errors[com.key] = this.props.t('cannot_be_empty');\n ref = `${com.key}_input`;\n }\n }\n if (com.validation && !Array.isArray(val)) {\n let isInvalid = false;\n let validationText = '';\n if (com.validation === 'email' && !_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isEmail(val)) {\n validationText = 'Email';\n isInvalid = true;\n }\n if (com.validation === 'phone' && !_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isPhone(val)) {\n validationText = this.props.t('phn');\n isInvalid = true;\n }\n if (com.validation === 'number' && !_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isNumber(val)) {\n validationText = this.props.t('number');\n isInvalid = true;\n }\n if (com.validation === 'url' && !_util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isURL(val)) {\n isInvalid = true;\n validationText = 'URL';\n }\n if (isInvalid) {\n result = false;\n errors[com.key] = this.props.t('format_is_invalid') + ' ' + validationText;\n ref = `${com.key}_input`;\n }\n }\n }\n });\n if (ref && this[ref] && this[ref].current) {\n this[ref].current.focus();\n }\n this.setState({\n errorFields: errors\n });\n return result;\n });\n _defineProperty(this, \"onChangeValue\", (key, v) => {\n let formValues = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.submission, 'values') || [];\n let f = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(formValues, field => field.key === key);\n if (!f) {\n formValues.push({\n key,\n value: JSON.stringify(v)\n });\n } else {\n f.value = JSON.stringify(v);\n }\n this.props.onChangeFormValues(formValues);\n });\n _defineProperty(this, \"clearError\", key => {\n let errors = this.state.errorFields;\n errors[key] = '';\n this.setState({\n errorFields: errors\n });\n });\n _defineProperty(this, \"renderFormHeader\", () => {\n let title = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'title') || '';\n let desc = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'description') || '';\n if (this.props.mode === 'attachment') {\n if (title.trim() || desc.trim()) {\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component form-component-block\"\n }, title && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", null, title), desc && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"text-sm text-muted\"\n }, desc));\n }\n }\n let brandLogo = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'logo.url');\n let brandUrl = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'brand_url');\n let $logo = null;\n if (brandLogo) {\n $logo = (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-page-logo-wrapper\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"a\", {\n href: brandUrl || 'javascript:;'\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"img\", {\n src: brandLogo,\n class: \"form-page-logo\"\n })));\n }\n let $header = null;\n if (title.trim() || desc.trim()) {\n $header = (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-page-header\"\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-page-title\"\n }, title), desc && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-page-desc\"\n }, desc));\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(preact__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, $logo, $header);\n });\n let _components = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'components') || [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].each(_components, com => {\n if (com.type === 'input' && com.input_type !== 'checkbox' && com.input_type !== 'radio') {\n this[`${com.key}_input`] = (0,preact__WEBPACK_IMPORTED_MODULE_1__.createRef)();\n }\n });\n }\n toggleRadioField(key, v) {\n this.clearError(key);\n this.onChangeValue(key, v);\n }\n toggleCheckboxField(key, v) {\n let currentValues = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(this.props.submission.values, f => f.key === key) || {};\n currentValues = currentValues.value || '[]';\n currentValues = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseJSON(currentValues);\n if (currentValues.includes(v)) {\n currentValues = currentValues.filter(s => s !== v);\n } else {\n currentValues.push(v);\n }\n this.clearError(key);\n this.onChangeValue(key, currentValues);\n }\n render() {\n let components = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'components') || [];\n let title = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'title') || '';\n let desc = _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.props.formSetting, 'description') || '';\n let cls = 'form-wrapper form';\n if (this.props.mode === 'attachment') cls += ' form-wrapper-attachment';\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: cls\n }, this.props.isSubmited && (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-component\"\n }, this.props.t('you_have_submitted_info_successfully')), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"form\", {\n onSubmit: this.onSubmit\n }, this.renderFormHeader(), _util_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(components, this.renderFormComponent)));\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/form/Form.js?\n}");
|
|
505
|
-
|
|
506
|
-
/***/ },
|
|
507
|
-
|
|
508
|
-
/***/ "./src/form/rating-stars.js"
|
|
509
|
-
/*!**********************************!*\
|
|
510
|
-
!*** ./src/form/rating-stars.js ***!
|
|
511
|
-
\**********************************/
|
|
512
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
513
|
-
|
|
514
|
-
"use strict";
|
|
515
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Form2)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\nclass Form2 extends _common_js__WEBPACK_IMPORTED_MODULE_0__.Com {\n constructor(props) {\n super(props);\n _defineProperty(this, \"state\", {\n hovering: 0,\n selected: 0\n });\n _defineProperty(this, \"onMouseEnter\", v => {\n let {\n selected,\n hovering\n } = this.state;\n if (v <= selected) {\n this.setState({\n hovering: selected\n });\n return;\n }\n this.setState({\n hovering: v\n });\n });\n _defineProperty(this, \"onMouseLeave\", () => {\n let {\n selected,\n hovering\n } = this.state;\n this.setState({\n hovering: 0\n });\n });\n }\n onToggleValue(v) {\n let {\n selected\n } = this.state;\n let newVal = v;\n if (v === selected) newVal = 0;\n this.setState({\n selected: newVal,\n hovering: newVal\n });\n this.props.onChange(newVal);\n }\n render() {\n let {\n selected,\n hovering\n } = this.state;\n let star1Cls = 'star-wrapper';\n if (selected >= 1) {\n star1Cls += ' selected';\n } else if (hovering >= 1) {\n star1Cls += ' hovering';\n }\n let star2Cls = 'star-wrapper';\n if (selected >= 2) {\n star2Cls += ' selected';\n } else if (hovering >= 2) {\n star2Cls += ' hovering';\n }\n let star3Cls = 'star-wrapper';\n if (selected >= 3) {\n star3Cls += ' selected';\n } else if (hovering >= 3) {\n star3Cls += ' hovering';\n }\n let star4Cls = 'star-wrapper';\n if (selected >= 4) {\n star4Cls += ' selected';\n } else if (hovering >= 4) {\n star4Cls += ' hovering';\n }\n let star5Cls = 'star-wrapper';\n if (selected >= 5) {\n star5Cls += ' selected';\n } else if (hovering >= 5) {\n star5Cls += ' hovering';\n }\n return (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"form-ratings-wrapper\",\n onMouseLeave: () => this.onMouseLeave()\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: star1Cls,\n onClick: () => this.onToggleValue(1),\n onMouseEnter: () => this.onMouseEnter(1)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"star\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: star2Cls,\n onClick: () => this.onToggleValue(2),\n onMouseEnter: () => this.onMouseEnter(2)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"star\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: star3Cls,\n onClick: () => this.onToggleValue(3),\n onMouseEnter: () => this.onMouseEnter(3)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"star\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: star4Cls,\n onClick: () => this.onToggleValue(4),\n onMouseEnter: () => this.onMouseEnter(4)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"star\"\n })), (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: star5Cls,\n onClick: () => this.onToggleValue(5),\n onMouseEnter: () => this.onMouseEnter(5)\n }, (0,preact__WEBPACK_IMPORTED_MODULE_1__.h)(\"div\", {\n class: \"star\"\n })));\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/form/rating-stars.js?\n}");
|
|
516
|
-
|
|
517
|
-
/***/ },
|
|
518
|
-
|
|
519
|
-
/***/ "./src/lib.js"
|
|
520
|
-
/*!********************!*\
|
|
521
|
-
!*** ./src/lib.js ***!
|
|
522
|
-
\********************/
|
|
523
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
524
|
-
|
|
525
|
-
"use strict";
|
|
526
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _store_store_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./store/store.js */ \"./src/store/store.js\");\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _plugin_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./plugin.js */ \"./src/plugin.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\n\n\nclass Widget {\n constructor(ApiURL, FileURL, RealtimeURL, inmem, fake) {\n _defineProperty(this, \"version\", () => '4.5');\n _defineProperty(this, \"setSetting\", setting => this.store.setSetting({\n account_setting: setting\n }));\n _defineProperty(this, \"getUser\", () => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseJSON(_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stringify(this.store.matchUser())));\n _defineProperty(this, \"setViewingProduct\", p => this.store.linkProduct(p));\n _defineProperty(this, \"getViewingProduct\", () => this.store.getLinkedProduct());\n _defineProperty(this, \"track\", v => this.store.track(v));\n _defineProperty(this, \"event\", async (type, payload, options) => {\n await this.store.readyGate.entry();\n return this.store.api.sendEvent(normalizeCdpEvent(type, payload, options));\n });\n _defineProperty(this, \"pageview\", v => this.store.sendPageview(v));\n this.impressionTokens = {};\n this.domGate = new _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Gate();\n this.store = new _store_store_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](ApiURL, FileURL, RealtimeURL, inmem, fake);\n window.sbz_store = this.store;\n this.subs = [];\n this.store.onConvoEvent({\n _isMounted: true\n }, ev => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(this.subs, sub => {\n if (sub && typeof sub === 'function') sub(ev);\n }));\n this.store.onWidgetClose({\n _isMounted: true\n }, ev => _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(this.subs, sub => {\n if (sub && typeof sub === 'function') sub(ev);\n }));\n }\n async waitReady(cb) {\n await this.store.readyGate.entry();\n cb();\n }\n setAIDevMode(mode) {\n this.store.setAIDevMode(mode);\n }\n setEmbebedChatMode() {\n this.store.setEmbebedChatMode();\n }\n setTrackPageView(val) {\n this.store.setTrackPageview(val);\n }\n getTrackPageView() {\n return this.store.getTrackPageview();\n }\n async cleanLogin(user_id, tokenGenerator) {}\n async login(accid, user_id, tokenGenerator, $container) {\n let user = await this.store.login(accid, user_id, tokenGenerator);\n if (!$container) $container = document.body;\n this.pluginMgr = new _plugin_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this, $container);\n let clean = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setInterval(() => {\n if ($container && $container.isConnected) return;\n this.pluginMgr.destroy();\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].clearInterval(clean);\n }, 1000);\n this.domGate.open();\n return user;\n }\n logout(userref) {\n return this.store.logout(userref);\n }\n overrideBotId(botid) {\n this.store.overrideBotId(botid);\n }\n async init(param, $container) {\n param = param || {};\n let accid = param.account_id;\n let ref = param.ref;\n let user = await this.store.init(accid, undefined, ref, param);\n if (this.store.isDead()) return user;\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setTimeout(() => window.postMessage({\n type: 'widget_loaded',\n account_id: accid\n }, '*'), 0);\n if (!$container) $container = document.body || document;\n this.pluginMgr = new _plugin_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this, $container);\n let clean = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setInterval(() => {\n if ($container && $container.isConnected) return;\n this.pluginMgr.destroy();\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].clearInterval(clean);\n }, 1000);\n this.domGate.open();\n return user;\n }\n async start(param, $container, mask, cb) {\n param = param || {};\n let id = param.account_id;\n let outmask = await this.store.init(id, mask, param.ref, param);\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setTimeout(() => window.postMessage({\n type: 'widget_loaded',\n account_id: id\n }, '*'), 0);\n if (!$container) $container = document.body || document;\n this.pluginMgr = new _plugin_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this, $container);\n let clean = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setInterval(() => {\n if ($container && $container.isConnected) return;\n this.pluginMgr.destroy();\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].clearInterval(clean);\n }, 1000);\n this.domGate.open();\n cb && cb(outmask);\n return outmask;\n }\n async setAccount(id, $container, mask, cb) {\n if (typeof sbz_info != 'undefined') sbz_info.set_account = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Date.now();\n if (document && document.location && document.location.href && document.location.href.indexOf('subiz-verification-1') > 0) {\n window.subiz_verification_account_id = id;\n if (typeof sbz_info != 'undefined') sbz_info = undefined;\n return;\n }\n if (!id) return {\n error: 'empty_account_id'\n };\n if (typeof sbz_info != 'undefined') sbz_info.set_account_1 = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Date.now();\n let outmask = await this.store.init(id, mask);\n if (typeof sbz_info != 'undefined') sbz_info.set_account_2 = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Date.now();\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setTimeout(() => window.postMessage({\n type: 'widget_loaded',\n account_id: id\n }, '*'), 0);\n if (!$container) $container = document.body || document;\n this.pluginMgr = new _plugin_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this, $container);\n let clean = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setInterval(() => {\n if ($container && $container.isConnected) return;\n this.pluginMgr.destroy();\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].clearInterval(clean);\n }, 1000);\n this.domGate.open();\n if (typeof sbz_info != 'undefined') sbz_info.set_account_done = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Date.now();\n cb && cb(outmask);\n return outmask;\n }\n _setAccount(id, $con) {\n return this.setAccount(id, $con);\n }\n async updateUserAttributes(attributes) {\n await this.store.setUser({\n attributes\n });\n var user = this.store.matchUser();\n return _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneDeep(user.attributes);\n }\n async getUserAttributes() {\n await this.store.readyGate.entry();\n var user = this.store.matchUser();\n return _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneDeep(_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(user, 'attributes', []));\n }\n async getWidgetCurrentView() {\n await this.domGate.entry();\n return this.pluginMgr.getCurrentView();\n }\n async createTicket(ticket) {\n await this.domGate.entry();\n return this.createTicket(ticket);\n }\n expandWidget(view, convo) {\n return this.showWidget(view, convo);\n }\n shrinkWidget() {\n return this.hideWidget();\n }\n async sendMessage(convoid, message) {\n if (!convoid) {\n const {\n convo,\n error\n } = await this.store.startConvo({\n message: message.text,\n initial_by: this.store.matchUser().id\n });\n if (error) return {\n error\n };\n convoid = convo.id;\n }\n return this.store.sendConvoEvent(convoid, 'message_sent', {\n message\n });\n }\n async viewForm(formid) {\n if (!formid || !_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].startsWith(formid, 'cp')) return;\n let impressiontoken = this.impressionTokens[formid];\n if (impressiontoken) return impressiontoken;\n let {\n body: impression\n } = await this.store.sendImpression(formid);\n impressiontoken = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(impression, 'impression_token') || '';\n this.impressionTokens[formid] = impressiontoken;\n return impressiontoken;\n }\n async submitForm(formid, values) {\n if (!formid || !values) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].startsWith(formid, 'cp')) {\n let storeuser = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneDeep(this.store.matchUser());\n let user = {\n id: storeuser.id,\n account_id: storeuser.account_id\n };\n let is_lead = false;\n values = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(values, val => {\n let key = val.key;\n if (key === 'email') key = 'emails';\n if (key === 'phone') key = 'phones';\n is_lead = is_lead || key == 'emails' || key == 'phones';\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setUserAttr(user, {\n key: key,\n [val.type || 'text']: val.value\n });\n return {\n key: key,\n type: val.type || 'text',\n value: _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stringify(val.value)\n };\n });\n if (is_lead) _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setUserAttr(user, {\n key: 'lead_source',\n text: 'plugin.' + formid\n });\n let impressiontoken = await this.viewForm(formid);\n this.store.setUserDiff(user);\n return this.store.sendConversion(formid, values, impressiontoken);\n }\n values = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(values, field => {\n return field.key && field.value;\n });\n let text = 'Khách điền form\\n';\n _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].map(values, field => {\n text += '+ ' + field.key + ': ' + field.value + '\\n';\n });\n return this.store.startConvo({\n subject: 'Khách điền form',\n touchpoint: {\n channel: 'form',\n source: window.location.hostname,\n id: Date.now() + '_' + _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].randomString()\n },\n form_submission: {\n id: formid,\n values: values\n },\n message_sent: {\n data: {\n message: {\n format: 'plaintext',\n text: text\n }\n }\n }\n });\n }\n startConvo(req) {\n req = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].cloneDeep(req) || {};\n if (req.welcome_message) {\n return this.store.startLightConvo(req.bot_id, [req.welcome_message], req.locale, req.is_testing, req.bot_version);\n }\n let members = req.members || [];\n if (req.bot_id) {\n let botid = req.bot_id;\n delete req.bot_id;\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(members, m => b.id == botid)) {\n members.push({\n type: 'bot',\n id: botid,\n bot_version: req.bot_version\n });\n }\n }\n req.members = members;\n req.initial_by = this.store.matchUser().id;\n return this.store.startConvo(req);\n }\n async showGreeting() {\n await this.domGate.entry();\n this.pluginMgr.showCurrentGreeting();\n }\n async hideGreeting() {\n await this.domGate.entry();\n this.pluginMgr.hideCurrentGreeting();\n }\n async showWidget(view, cid) {\n await this.domGate.entry();\n return this.pluginMgr.showCurrentChatbox({\n view,\n cid: cid\n });\n }\n async showTyping() {\n await this.domGate.entry();\n return this.pluginMgr.showCurrentChatboxTyping();\n }\n async hideWidget() {\n await this.domGate.entry();\n this.pluginMgr.hideCurrentChatbox();\n }\n async setLocale(locale) {\n await this.domGate.entry();\n return this.pluginMgr.setCurrentChatboxLocale(locale);\n }\n async setLanguage(locale) {\n await this.domGate.entry();\n return this.pluginMgr.setCurrentChatboxLocale(locale);\n }\n async setPluginLocale(id, locale) {\n await this.domGate.entry();\n return this.pluginMgr.setPluginLocale(id, locale);\n }\n _overrideDeviceType(type) {\n this.store.overrideDeviceType(type);\n }\n unload() {\n if (this.pluginMgr) this.pluginMgr.destroy();\n this.store.destroy();\n }\n async applyMessage(msg) {\n await this.domGate.entry();\n this.pluginMgr.applyTextToCurrentChatbox(msg);\n }\n _overridePlugin(plugins) {\n this.store.overridePlugin(plugins);\n }\n _forceUpdateLang(id) {\n this.pluginMgr.forceUpdateLang(id);\n }\n _highlight(pluginid, ref) {\n this.store.highlight(pluginid, ref);\n }\n openPopup(pluginid) {\n this.pluginMgr.forceRunPopup(pluginid);\n }\n unEvent(cb) {\n this.subs = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(this.subs, sub => sub !== cb);\n }\n async countUnreadMessages() {\n await this.domGate.entry();\n return this.store.matchUnread();\n }\n onEvent(cb) {\n this.subs = _util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].filter(this.subs, sub => sub !== cb);\n this.subs.push(cb);\n }\n overrideWelcomeMessage(msg) {\n this.store.overrideWelcomeMessage(msg);\n }\n overrideAccount(acc) {\n this.store.overrideAcc(acc);\n }\n async overrideChatbox(chatbox) {\n await this.store.overrideChatbox(chatbox);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].get(chatbox, 'chatbox.greeting.greeting')) {\n this.pluginMgr.showCurrentGreeting();\n }\n }\n stopAutobot() {\n this.store.doNotStartBot();\n }\n}\nfunction normalizeCdpEvent(type, payload, options) {\n if (type && typeof type === 'object') return type;\n let data = {\n type: type\n };\n if (payload !== undefined) data.payload = payload;\n if (options && typeof options === 'object') data = Object.assign({}, options, data);\n return data;\n}\nwindow.__sbz_WIDGET = Widget;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Widget);\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/lib.js?\n}");
|
|
527
|
-
|
|
528
|
-
/***/ },
|
|
529
|
-
|
|
530
|
-
/***/ "./src/plugin.js"
|
|
531
|
-
/*!***********************!*\
|
|
532
|
-
!*** ./src/plugin.js ***!
|
|
533
|
-
\***********************/
|
|
534
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
535
|
-
|
|
536
|
-
"use strict";
|
|
537
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PluginMgr)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common.js */ \"./src/common.js\");\n/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! preact */ \"./node_modules/preact/dist/preact.module.js\");\n/* harmony import */ var _chatbox_main_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chatbox/main.js */ \"./src/chatbox/main.js\");\n\n\n\n\nconst LoadContact = () => __webpack_require__.e(/*! import() */ \"src_contact_contact_js\").then(() => (__webpack_require__(/*! ./contact/contact.js */ \"./src/contact/contact.js\")));\nconst LoadPopup = () => __webpack_require__.e(/*! import() */ \"src_popup_popup_js\").then(() => (__webpack_require__(/*! ./popup/popup.js */ \"./src/popup/popup.js\")));\nconst LoadNotif = () => __webpack_require__.e(/*! import() */ \"src_notif_notif_js\").then(() => (__webpack_require__(/*! ./notif/notif.js */ \"./src/notif/notif.js\")));\nfunction Plugin(plugin, store, $container, lib) {\n if (!$container) throw '$div must is a valid html node';\n var $div = document.createElement('div');\n $div.id = plugin.id;\n if (store.isDead()) return;\n let acc = store.matchAccount();\n $div.setAttribute('sbz-plugin-type', plugin.type);\n $div.setAttribute('sbz-plugin-account-id', acc.id);\n $container.appendChild($div);\n let _locale = _common_js__WEBPACK_IMPORTED_MODULE_1__.getLocale(plugin, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].detectLang());\n var domGate = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate();\n var pageIndex = 0;\n var highlight;\n var state = 'hold';\n var _this = this;\n this.getState = () => state;\n var run = async function () {\n if (typeof sbz_info != 'undefined') sbz_info[_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() + '.run'] = state;\n if (_destroy) return;\n if (state !== 'hold') return;\n if (plugin.type === 'popup' && store.isConverted(plugin.id)) return;\n let lastrun = store.matchLastPluginRun(plugin.id);\n if (plugin.type === 'chatbox' || plugin.type === 'notification') lastrun = undefined;\n if (!plugin.enabled) return;\n let match = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].checkRunConditions(plugin.initiative_frequency, plugin.conditions, lastrun, store);\n if (typeof sbz_info != 'undefined') sbz_info[_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() + '.run.match'] = match;\n if (!match) return;\n state = 'running';\n await _this.update(plugin);\n };\n this.forceRunPopup = async () => {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(_ref, 'current')) {\n _ref.current.openPopup();\n } else {\n _render();\n }\n };\n var _ref = (0,preact__WEBPACK_IMPORTED_MODULE_2__.createRef)();\n let Popup = null;\n let Contact = null;\n let Notif = null;\n var showCurrentChatbox = p => lib.showWidget(p);\n var nextPage = () => {\n pageIndex++;\n _render();\n };\n var _render = async () => {\n if (_destroy) return;\n if (!$div) return;\n if (!this.t) return;\n if (plugin.type === 'chatbox') {\n if (typeof sbz_info != 'undefined') sbz_info.render_chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n (0,preact__WEBPACK_IMPORTED_MODULE_2__.render)((0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(_chatbox_main_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n destroy: _destroy,\n plugin: plugin,\n store: store,\n ref: _ref,\n t: this.t\n }), $div);\n }\n if (plugin.type === 'popup') {\n if (!Popup) Popup = (await LoadPopup()).default;\n (0,preact__WEBPACK_IMPORTED_MODULE_2__.render)((0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(Popup, {\n destroy: _destroy,\n t: this.t,\n highlight: highlight,\n mobile: store.isMobile(),\n plugin: plugin,\n store: store,\n ref: _ref,\n pageIndex: pageIndex,\n nextPage: nextPage,\n showWidget: showCurrentChatbox\n }), $div);\n }\n if (plugin.type === 'notification') {\n if (!Notif) Notif = (await LoadNotif()).default;\n (0,preact__WEBPACK_IMPORTED_MODULE_2__.render)((0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(Notif, {\n destroy: _destroy,\n t: this.t,\n mobile: store.isMobile(),\n plugin: plugin,\n store: store,\n ref: _ref\n }), $div);\n }\n if (plugin.type === 'contact') {\n if (!Contact) Contact = (await LoadContact()).default;\n (0,preact__WEBPACK_IMPORTED_MODULE_2__.render)((0,preact__WEBPACK_IMPORTED_MODULE_2__.h)(Contact, {\n destroy: _destroy,\n t: this.t,\n plugin: plugin,\n store: store,\n ref: _ref\n }), $div);\n }\n domGate.open();\n };\n this.call = (method, param) => domGate.entry().then(() => {\n if (!_ref.current || typeof _ref.current[method] !== 'function') return;\n return _ref.current[method](param);\n });\n var _destroy = false;\n this.destroy = () => {\n _destroy = true;\n (0,preact__WEBPACK_IMPORTED_MODULE_2__.render)(null, $div);\n $div.parentNode.removeChild($div);\n };\n this.highlight = comref => {\n highlight = comref;\n _render();\n };\n this.update = config => {\n if (_destroy) return;\n plugin = config;\n if (state === 'hold') return;\n if (state === 'finished') return;\n _render();\n };\n let t = key => {\n if (_locale === 'debug') return `{{${key}}}`;\n let messages = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(_common_js__WEBPACK_IMPORTED_MODULE_1__.langMessages, _locale, []);\n let message = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(messages, message => message.key === key);\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(message, 'message', key);\n };\n t.i18n = i18nText => {\n if (!i18nText) return '';\n let fallbackLocale = plugin.locale || acc.locale || 'vi-VN';\n fallbackLocale = fallbackLocale.replace('-', '_');\n let locale = _locale.replace('-', '_');\n return i18nText[locale] || i18nText[fallbackLocale];\n };\n t.locale = () => _locale;\n this.forceDownloadLanguage = async () => {\n await _common_js__WEBPACK_IMPORTED_MODULE_1__.downloadLanguage(store, _locale, true);\n this.update(plugin);\n };\n this.setLocale = async locale => {\n if (_locale === locale) return locale;\n this.t = null;\n _render();\n _locale = _common_js__WEBPACK_IMPORTED_MODULE_1__.getLocale(plugin, locale);\n await _common_js__WEBPACK_IMPORTED_MODULE_1__.downloadLanguage(store, _locale);\n this.t = t;\n _render();\n return _locale;\n };\n let images = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(plugin, 'popup.pages'), page => {\n if (!page) return;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(page.components, com => {\n if (com.type === 'image' && com.image && com.image.url && com.image.url.startsWith('http')) {\n images[com.image.url] = true;\n }\n });\n });\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(images) >= 0) _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(images, (_, image) => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].preloadImg(image));\n let triggers = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(plugin, 'triggers') || [{\n type: 'after_pageview',\n after_pageview_sec: 0,\n disabled: false\n }];\n for (var i = 0; i < _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(triggers); i++) {\n var tr = triggers[i];\n if (!tr) continue;\n if (tr.disabled) continue;\n if (tr.type === 'exit_intent') _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trackExitIntent(run);\n if (tr.type === 'area_clicked') _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trackAreaClicked(tr.area_clicked_css_selector, run);\n if (tr.type === 'scrolling_percentage') _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trackScrollingPercentage(tr.scrolling_percentage, run);\n if (tr.type === 'inactivity_duration') _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trackInactivity(tr.inactivity_sec, run);\n if (tr.type === 'after_pageview') _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trackTimeOnPage(tr.after_pageview_sec, run);\n }\n this.update(plugin);\n if (typeof sbz_info != 'undefined') sbz_info['load_lang'] = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n _common_js__WEBPACK_IMPORTED_MODULE_1__.downloadLanguage(store, _locale).then(() => {\n if (typeof sbz_info != 'undefined') sbz_info['load_lang_done'] = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n this.t = t;\n this.update(plugin);\n });\n}\nclass PluginMgr {\n constructor(lib, $div) {\n this.refM = {};\n this.lib = lib;\n this.$div = $div;\n this.pluginM = {};\n this._destroy = false;\n lib.store.onHighlight({\n _isMounted: true\n }, (id, comref) => {\n let plugin = this.pluginM[id];\n if (!plugin) return;\n plugin.highlight(comref);\n });\n lib.store.onUpdate({\n _isMounted: true\n }, () => {\n if (this._destroy) return;\n let pluginM = this.lib.store.matchPlugin();\n let foundchatbox = false;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(pluginM, conf => {\n if (conf.type === 'chatbox') {\n if (foundchatbox) return;\n foundchatbox = true;\n }\n if (!this.pluginM[conf.id]) {\n this.pluginM[conf.id] = new Plugin(conf, this.lib.store, $div, lib);\n return;\n }\n this.pluginM[conf.id].update(conf);\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(this.pluginM, (conf, id) => {\n if (pluginM[id]) return;\n this.pluginM[id].destroy();\n delete this.pluginM[id];\n });\n });\n let pluginM = this.lib.store.matchPlugin();\n if (typeof sbz_info != 'undefined') sbz_info['plugins'] = pluginM;\n let foundchatbox = false;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(pluginM, conf => {\n if (conf.type === 'chatbox') {\n if (foundchatbox) return;\n foundchatbox = true;\n }\n if (!this.pluginM[conf.id]) this.pluginM[conf.id] = new Plugin(conf, this.lib.store, $div, lib);\n });\n }\n findChatbox() {\n var pluginM = this.lib.store.matchPlugin();\n let chatboxs = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(this.pluginM, (plugin, id) => pluginM[id].type === 'chatbox');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(chatboxs) === 0) {\n console.error('no chatbox found.');\n return;\n }\n let chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(chatboxs, chatbox => chatbox.getState() === 'running');\n if (!chatbox) {\n chatbox = chatboxs[0];\n }\n if (!chatbox) {\n console.error('found no suitable chatbox to run.');\n return;\n }\n return chatbox;\n }\n getCurrentView() {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('getCurrentView');\n }\n showCurrentChatbox(p) {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('showWidget', p);\n }\n showCurrentChatboxTyping() {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('showTyping');\n }\n showCurrentGreeting() {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('showGreeting');\n }\n applyTextToCurrentChatbox(text) {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('applyMessage', text);\n }\n hideCurrentGreeting() {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('hideGreeting');\n }\n hideCurrentChatbox() {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.call('hideWidget');\n }\n forceUpdateLang(id) {\n let plugin = this.pluginM[id];\n if (plugin) return plugin.forceDownloadLanguage();\n }\n forceRunPopup(id) {\n let plugin = this.pluginM[id];\n if (plugin) return plugin.forceRunPopup(id);\n }\n setPluginLocale(id, locale) {\n let plugin = this.pluginM[id];\n if (plugin) return plugin.setLocale(locale);\n }\n setCurrentChatboxLocale(locale) {\n let chatbox = this.findChatbox();\n if (chatbox) return chatbox.setLocale(locale);\n }\n destroy() {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.pluginM, (conf, id) => {\n conf.destroy();\n delete this.pluginM[id];\n });\n this._destroy = true;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/plugin.js?\n}");
|
|
538
|
-
|
|
539
|
-
/***/ },
|
|
540
|
-
|
|
541
|
-
/***/ "./src/store/api.js"
|
|
542
|
-
/*!**************************!*\
|
|
543
|
-
!*** ./src/store/api.js ***!
|
|
544
|
-
\**************************/
|
|
545
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
546
|
-
|
|
547
|
-
"use strict";
|
|
548
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\nconst ajax = __webpack_require__(/*! @subiz/ajax/src/ajax.js */ \"./node_modules/@subiz/ajax/src/ajax.js\");\nfunction jsonifyTextPlain(param, done) {\n let req = param.request;\n if (req.content_type === 'text/plain' && req.body !== undefined) req.body = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(req.body);\n done(true);\n}\nlet reqi = 0;\nlet trackRequestFn = (param, done) => {\n if (typeof sbz_info == 'undefined') return done(true);\n let req = param.request;\n reqi++;\n req._id = reqi;\n sbz_info['ajax.' + reqi] = {\n created: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now(),\n method: req.method,\n baseurl: req.baseurl,\n query: req.query\n };\n done(true);\n};\nlet trackResponseFn = (param, done) => {\n if (typeof sbz_info == 'undefined') return done(true);\n let req = param.request;\n let reqi = req._id;\n if (!sbz_info['ajax.' + reqi]) sbz_info['ajax.' + reqi] = {\n created: 0\n };\n sbz_info['ajax.' + reqi].out = {\n duration: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() - sbz_info['ajax.' + reqi].created,\n code: param.code,\n err: param.err\n };\n done(true);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n constructor(ApiURL, FileURL) {\n _defineProperty(this, \"sendBugReport\", str => this.bugReq.post('/bugs', str));\n _defineProperty(this, \"listConversations\", _ => this.apireq.addQuery('user_id', this.uid).addQuery('integration_id', `${this.accid}.subizv4.subikon`).get(`/accounts/${this.accid}/conversations`));\n _defineProperty(this, \"listMessages\", (cid, limit, start_id) => this.apireq.addQuery('limit', limit).addQuery('start_id', start_id).get(`/accounts/${this.accid}/conversations/${cid}/messages`));\n _defineProperty(this, \"ajax\", ajax);\n _defineProperty(this, \"start\", (extraData, tpchannel, tpsource, tpid) => {\n let data = Object.assign({}, extraData);\n if (!data.touchpoint) data.touchpoint = {};\n if (!data.touchpoint.channel) data.touchpoint.channel = 'subiz';\n if (!data.touchpoint.source) data.touchpoint.source = 'web';\n data.source = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(document, 'location.href');\n return this.apireq.post(`/accounts/${this.accid}/conversations`, data);\n });\n _defineProperty(this, \"sendConvoEvent\", (cid, ev) => this.apireq.addQuery('x-referer', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(location, 'origin', '')).post(`/accounts/${this.accid}/conversations/${cid}/events`, ev));\n _defineProperty(this, \"createPostback\", (cid, p) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/postbacks`, p));\n _defineProperty(this, \"markAsReceived\", (cid, messageId) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/messages/${messageId}/receive`));\n _defineProperty(this, \"markAsSeen\", (cid, messageId) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/messages/${messageId}/seen`));\n _defineProperty(this, \"getConversation\", cid => this.apireq.get(`/accounts/${this.accid}/conversations/${cid}`));\n _defineProperty(this, \"getLocaleContent\", locale => this.apireq.get(`/accounts/${this.accid}/languages/${locale}`));\n _defineProperty(this, \"sendEvent\", data => this.apireq.addQuery('shorten', true).addQuery('x-referer', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(location, 'origin', '')).post(`/accounts/${this.accid}/users/${this.uid}/events`, data));\n _defineProperty(this, \"submitForm\", (form_id, page_url, device, data, user) => this.apireq.addQuery('x-referer', _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(location, 'origin', '')).post(`/accounts/${this.accid}/users/${this.uid}/events`, {\n by: {\n id: this.uid,\n device: device\n },\n type: 'form_submitted',\n data: {\n user: user,\n form_submission: {\n user_id: this.uid,\n form_id: form_id,\n page_url: page_url,\n submitted_at: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now(),\n values: data\n }\n }\n }));\n _defineProperty(this, \"sendTyping\", cid => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/typing`));\n _defineProperty(this, \"sendLostFocus\", () => this.apireq.post(`/accounts/${this.accid}/focuses/${this.uid}/delete`));\n _defineProperty(this, \"uploadToS3\", async file => {\n let name = file.name.replace(/\\s+/g, '_');\n var {\n body,\n error\n } = await this.apireq.setBaseUrl('https://api5.subiz.com.vn/4.1').setQuery({\n 'account-id': this.accid,\n description: 'upload\\n user-client: web-widget',\n name: name,\n presign: true,\n size: file.size,\n 'content-type': file.type\n }).post('/files');\n if (error) return {\n body,\n error\n };\n let signedurl = body.signed_url;\n let fileid = body.id;\n let err = await new Promise(resolve => {\n const xhr = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].XMLHttpRequest();\n xhr.open('PUT', signedurl, true);\n xhr.setRequestHeader('Content-Type', file.type || '');\n xhr.onload = function () {\n if (xhr.status === 200) {\n resolve();\n } else {\n resolve(new Error(`Upload failed: ${xhr.statusText}`));\n }\n };\n xhr.onerror = function () {\n resolve(new Error('Network error during upload.'));\n };\n xhr.send(file);\n });\n if (err) return {\n error: err\n };\n var {\n body,\n error\n } = await this.apireq.setBaseUrl('https://api5.subiz.com.vn/4.1').setQuery({\n 'account-id': this.accid\n }).post(`/files/${fileid}/uploaded`);\n if (error) return {\n error\n };\n return {\n url: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(body, 'file.url', '')\n };\n });\n _defineProperty(this, \"uploadToS32\", async file => {\n var {\n body,\n error\n } = await ajax.setBaseUrl('https://api5.subiz.com.vn/4.1').withCredentials(true).setQuery({\n 'account-id': this.accid,\n description: 'upload\\n user-client: web-widget',\n name: file.name.replace(/\\s+/g, '_'),\n size: file.size,\n type: file.type\n }).setParser('json').beforeHook((param, done) => {\n if (this.token_generator) {\n let user_id = this.profile_id;\n this.token_generator().then(token => {\n if (user_id != this.profile_id) return done(true);\n if (!token) return done(false);\n if (token == 'error') return done(false);\n param.request = param.request.addQuery('x-access-token', token);\n return done(true);\n });\n return;\n }\n if (this.ref) param.request = param.request.addQuery('x-user-ref', this.ref);else if (this.mask) param.request = param.request.addQuery('x-user-mask', this.mask);\n return done(true);\n }).post('/files', file);\n if (error) return {\n body,\n error\n };\n return {\n url: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(body, 'file.url')\n };\n });\n _defineProperty(this, \"time\", _ => ajax.setBaseUrl(this.ApiURL).withCredentials(true).setParser('json').get('/time'));\n _defineProperty(this, \"updateUser\", data => this.apireq.post(`/accounts/${this.accid}/users/${this.uid}`, data));\n _defineProperty(this, \"getUser\", _ => this.apireq.get(`/accounts/${this.accid}/users/${this.uid}`));\n _defineProperty(this, \"getAccountSetting\", async p => {\n let href = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(document, 'location.href');\n let res = {};\n if (p && p.bot_id) {\n res = await this.apireq.addQuery('url', href).addQuery('bot_id', p.bot_id).get(`/accounts/${this.accid}/settings`);\n } else {\n res = await this.apireq.addQuery('url', href).get(`/accounts/${this.accid}/settings`);\n }\n if (res.error) return res;\n let plugins = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(res, 'body.plugins') || [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(plugins, plugin => {\n if (plugin.type === 'popup') {\n let pages = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(plugin, 'popup.pages') || [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(pages, page => {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(page.components, com => {\n if (com.type === 'image') {\n let url = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(com, 'image.url');\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].set(com, 'image.url', fallbackGCSUrl(url));\n }\n });\n });\n }\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].set(res, 'body.plugins', plugins);\n return res;\n });\n _defineProperty(this, \"sendImpression\", impression => this.apireq.post(`/accounts/${this.accid}/campaigns/${impression.campaign_id}/impressions`, impression));\n _defineProperty(this, \"sendConversion\", conversion => this.apireq.post(`/accounts/${this.accid}/campaigns/${conversion.campaign_id}/conversions`, conversion));\n _defineProperty(this, \"lookupOrder\", key => ajax.setBaseUrl(this.ApiURL).setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json').addQuery('x-signed-key', key).get(`/orders/123`));\n _defineProperty(this, \"getOrder\", id => this.apireq.get(`/accounts/${this.accid}/orders/` + id));\n _defineProperty(this, \"updateOrder\", order => this.apireq.post(`/accounts/${this.accid}/orders/` + order.id, order));\n _defineProperty(this, \"fetchShippingAddresses\", () => this.apireq.get(`/accounts/${this.accid}/users/${this.uid}/shipping-addresses`));\n _defineProperty(this, \"createShippingAddress\", addr => this.apireq.post(`/accounts/${this.accid}/users/${this.uid}/shipping-addresses`, addr));\n _defineProperty(this, \"list_provinces\", () => this.apireq.get(`/accounts/${this.accid}/provinces`));\n _defineProperty(this, \"list_districts\", p => this.apireq.setQuery(p).get(`/accounts/${this.accid}/districts`));\n _defineProperty(this, \"list_wards\", p => this.apireq.setQuery(p).get(`/accounts/${this.accid}/wards`));\n _defineProperty(this, \"checkFormToken\", (accid, token) => this.api41.addQuery('account-id', accid).get(`/submissions/${token}`));\n _defineProperty(this, \"submitForm2\", (accid, token, data) => this.api41.addQuery('account-id', accid).post(`/submissions/${token}`, data));\n _defineProperty(this, \"suggest_address\", keyword => this.apireq.setQuery({\n keyword: keyword\n }).get(`/accounts/${this.accid}/addresses`));\n _defineProperty(this, \"create_ticket\", ticket => this.apireq.post(`/accounts/${this.accid}/tickets`, ticket));\n this.refreshLock = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Mutex();\n this.FileURL = FileURL;\n this.ApiURL = ApiURL;\n this.bugReq = ajax.setBaseUrl('https://api5.subiz.com.vn/4.1').setContentType('text/plain');\n this.api41 = ajax.setBaseUrl('https://api.sbz.vn/4.1').withCredentials(true).setContentType('text/plain').beforeHook(jsonifyTextPlain).afterHook(trackResponseFn).beforeHook(trackRequestFn).setParser('json');\n this.apireq = ajax.setBaseUrl(ApiURL).withCredentials(true).addQuery('v', '6').setContentType('text/plain').beforeHook(jsonifyTextPlain).afterHook(trackResponseFn).setParser('json').beforeHook(trackRequestFn).beforeHook((param, done) => {\n if (this.token_generator) {\n let user_id = this.profile_id;\n this.token_generator().then(token => {\n if (user_id != this.profile_id) return done(true);\n if (!token) return done(false);\n if (token == 'error') return done(false);\n param.request = param.request.addQuery('x-access-token', token);\n return done(true);\n });\n return;\n }\n if (this.ref) param.request = param.request.addQuery('x-user-ref', this.ref);else if (this.mask) param.request = param.request.addQuery('x-user-mask', this.mask);\n return done(true);\n });\n }\n setAgentId(agid) {\n this.agentid = agid;\n }\n async setAuth(obj) {\n if (obj.accid) this.accid = obj.accid;\n if (obj.ref) this.ref = obj.ref;\n this.mask = obj.mask;\n this.profile_id = obj.profile_id;\n if (obj.ref) {\n let outuser;\n for (let i = 0; true; i++) {\n outuser = await ajax.setBaseUrl(this.ApiURL).withCredentials(true).afterHook(trackResponseFn).beforeHook(trackRequestFn).addQuery('v', '6').addQuery('x-user-ref', this.ref).setParser('json').get(`/accounts/${this.accid}/users/${this.ref}`);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser, 'body.error.code', '').indexOf('locked_account') != -1) break;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser, 'body.error.code', '').indexOf('user_is_banned') != -1) {\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(120000);\n continue;\n }\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser, 'body.id')) {\n let sleeptime = Math.min(2000 + i * 400, 60000);\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(sleeptime);\n continue;\n }\n break;\n }\n if (outuser.error) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser.body.code)) return {\n error: outuser.body.code\n };\n return outuser;\n }\n this.uid = outuser.body.id;\n return outuser.body;\n }\n if (obj.tokenGenerator) {\n let tokenGenerator = obj.tokenGenerator;\n this.tokensession = this.tokensession || 0;\n this.tokensession++;\n let tokensession = this.tokensession;\n if (!this.accid || !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(this.accid, 'ac')) return {\n error: 'invalid_account_id'\n };\n if (!this.profile_id) return {\n error: 'invalid_profile_id'\n };\n if (typeof tokenGenerator !== 'function') return {\n error: 'invalid_token_generator'\n };\n let profile_id = this.profile_id;\n this.token_generator = async force => {\n await this.refreshLock.lock();\n if (tokensession != this.tokensession) {\n this.refreshLock.unlock();\n return;\n }\n let age = (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() - (this.last_token_at || 0)) / 1000;\n if (!force && this.last_token && age < 1800) {\n this.refreshLock.unlock();\n return this.last_token;\n }\n if (!force && this.last_token && age < 3000) {\n if (this.token_generator) _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(async () => {\n let token, err;\n try {\n token = await tokenGenerator(profile_id);\n } catch (e) {\n err = e;\n }\n if (tokensession != this.tokensession) {\n this.refreshLock.unlock();\n return;\n }\n if (err) this.last_token = 'error';else this.last_token = token;\n this.last_token_at = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n this.refreshLock.unlock();\n });\n return this.last_token;\n }\n let token;\n let err;\n try {\n token = await tokenGenerator(profile_id);\n } catch (e) {\n err = e;\n }\n if (tokensession != this.tokensession) {\n this.refreshLock.unlock();\n return;\n }\n if (err) this.last_token = 'error';else this.last_token = token;\n this.last_token_at = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n this.refreshLock.unlock();\n return this.last_token;\n };\n let outuser;\n for (let i = 0; true; i++) {\n await this.token_generator(true);\n if (tokensession != this.tokensession) break;\n outuser = await ajax.setBaseUrl(this.ApiURL).withCredentials(true).addQuery('v', '6').afterHook(trackResponseFn).beforeHook(trackRequestFn).addQuery('x-access-token', this.last_token).setParser('json').get(`/accounts/${this.accid}/users/${profile_id}`);\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser, 'body.id')) {\n let sleeptime = Math.min(2000 + i * 100, 120000);\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(sleeptime);\n continue;\n }\n break;\n }\n if (outuser.error) {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(outuser.body.code)) return {\n error: outuser.body.code\n };\n return outuser;\n }\n this.uid = outuser.body.id;\n return outuser.body;\n }\n if (this.mask) {\n let parts = this.mask.split('@');\n this.uid = parts[1];\n return {\n id: this.uid\n };\n }\n return {\n error: 'invalid_auth'\n };\n }\n sendContentView(device, pageUrl, pageTitle, id, source_id, sku) {\n if (!id) id = undefined;\n if (!source_id) source_id = undefined;\n return this.sendEvent({\n by: {\n id: this.uid,\n device: device\n },\n type: 'content_viewed',\n data: {\n product: {\n id: id,\n source_id: source_id,\n url: pageUrl,\n name: pageTitle,\n title: pageTitle,\n sku: sku\n }\n }\n });\n }\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\nfunction fallbackGCSUrl(url) {\n try {\n const u = new URL(url);\n const isGCS = u.hostname === 'storage.googleapis.com';\n const isSubizBucket = u.pathname.startsWith('/public-gcs.subiz-cdn.com/');\n if (isGCS && isSubizBucket) {\n return `https://${u.pathname.slice(1)}`;\n }\n return url;\n } catch (e) {\n return url;\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/api.js?\n}");
|
|
549
|
-
|
|
550
|
-
/***/ },
|
|
551
|
-
|
|
552
|
-
/***/ "./src/store/api_fake.js"
|
|
553
|
-
/*!*******************************!*\
|
|
554
|
-
!*** ./src/store/api_fake.js ***!
|
|
555
|
-
\*******************************/
|
|
556
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
557
|
-
|
|
558
|
-
"use strict";
|
|
559
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\nconst ajax = __webpack_require__(/*! @subiz/ajax/src/ajax.js */ \"./node_modules/@subiz/ajax/src/ajax.js\");\nfunction jsonifyTextPlain(param, done) {\n let req = param.request;\n if (req.content_type === 'text/plain' && req.body !== undefined) req.body = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(req.body);\n done(true);\n}\nconst OK200 = Promise.resolve({\n code: 200\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n constructor(ApiURL, FileURL) {\n _defineProperty(this, \"listConversations\", _ => {\n let convo = makeFakeConvo(this.accid, 'csqwudlkftltnbebvq', this.uid, this.agentid);\n return Promise.resolve({\n body: {\n anchor: '',\n conversations: [convo]\n },\n code: 200\n });\n });\n _defineProperty(this, \"listMessages\", (cid, limit, start_id) => {\n let messages = makeFakeMessages(this.accid, 'csqwudlkftltnbebvq', this.uid, this.agentid);\n return Promise.resolve({\n body: messages,\n code: 200\n });\n });\n _defineProperty(this, \"ajax\", ajax);\n _defineProperty(this, \"start\", extraData => OK200);\n _defineProperty(this, \"sendConvoEvent\", (cid, ev) => OK200);\n _defineProperty(this, \"createPostback\", (cid, p) => OK200);\n _defineProperty(this, \"markAsReceived\", (cid, messageId) => OK200);\n _defineProperty(this, \"markAsSeen\", (cid, messageId) => OK200);\n _defineProperty(this, \"getConversation\", cid => Promise.resolve({\n body: makeFakeConvo(this.accid, 'csqwudlkftltnbebvq', this.uid, this.agentid),\n code: 200\n }));\n _defineProperty(this, \"getLocaleContent\", locale => this.apireq.get(`/accounts/${this.accid}/locales/${locale}`));\n _defineProperty(this, \"sendEvent\", data => OK200);\n _defineProperty(this, \"submitForm\", (form_id, page_url, device, data, user) => OK200);\n _defineProperty(this, \"sendTyping\", cid => OK200);\n _defineProperty(this, \"sendPresence\", data => OK200);\n _defineProperty(this, \"sendContent\", data => OK200);\n _defineProperty(this, \"sendLostFocus\", data => OK200);\n _defineProperty(this, \"sendContentView\", data => OK200);\n _defineProperty(this, \"uploadToS3\", async file => OK200);\n _defineProperty(this, \"time\", _ => Promise.resolve({\n code: 200,\n body: new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date().toISOString()\n }));\n _defineProperty(this, \"updateUser\", data => OK200);\n _defineProperty(this, \"getUser\", _ => Promise.resolve({\n code: 200,\n body: {\n id: 'usqzgtgfake',\n attributes: [{\n key: 'fullname',\n text: 'Kiều Thanh'\n }]\n }\n }));\n _defineProperty(this, \"getAccountSetting\", () => this.apireq.get(`/accounts/${this.accid}/settings`));\n _defineProperty(this, \"sendImpression\", impression => OK200);\n _defineProperty(this, \"sendConversion\", conversion => OK200);\n this.FileURL = FileURL;\n this.apireq = ajax.setBaseUrl(ApiURL).setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json');\n }\n setAgentId(agid) {\n this.agentid = agid;\n }\n setAuth(obj) {\n this.accid = obj.accid;\n this.mask = obj.mask;\n this.uid = obj.uid;\n return {\n account_id: this.accid,\n id: 'usqzgtgfake',\n attributes: [{\n key: 'fullname',\n text: 'Kiều Thanh'\n }]\n };\n }\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\nfunction makeFakeConvo(accid, convoid, userid, agentid) {\n let inteid = accid + '.subizv4.subikon';\n return {\n id: convoid,\n account_id: accid,\n created: 1610452894916,\n members: [{\n type: 'user',\n id: userid,\n membership: 'active',\n invited_by: {\n id: userid,\n type: 'user'\n }\n }, {\n type: 'agent',\n id: agentid,\n conversation_id: convoid,\n membership: 'active',\n invited_by: {\n id: userid,\n type: 'user'\n }\n }],\n ended: 1610454875505,\n state: 'ended',\n actived: 1610453070259,\n last_message_sent: {\n id: 'evqyiykaoizbwnkaecwphttwk',\n account_id: accid,\n created: 1616213311830,\n type: 'message_sent',\n by: {\n id: userid,\n client_id: 'clsubizapi',\n type: 'user'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'ok cám ơn!',\n format: 'plaintext',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'seen',\n created: 1616213312110\n }]\n }\n }\n },\n assigned_to: {},\n first_message: 'Xin chào',\n subject: 'Chúc một ngày tốt lành',\n source: 'https://subiz.com.vn/'\n };\n}\nfunction makeFakeMessages(accid, convoid, userid, agentid) {\n let inteid = accid + '.subizv4.subikon';\n let usermember = {\n type: 'user',\n id: userid,\n last_page_view_url: 'https://subiz.com.vn/',\n conversation_id: convoid,\n membership: 'active',\n invited_by: {\n id: userid,\n type: 'user'\n }\n };\n let agentmember = {\n type: 'agent',\n conversation_id: convoid,\n id: agentid,\n membership: 'active',\n invited_by: {\n id: userid,\n type: 'user'\n }\n };\n return [{\n id: 'evqyiyjmxrjsylftvnrghrfmq',\n account_id: accid,\n created: 1616213202264,\n type: 'conversation_invited',\n by: {\n id: userid,\n type: 'user'\n },\n data: {\n conversation: {\n id: convoid,\n account_id: accid,\n members: [usermember],\n state: 'pending'\n }\n }\n }, {\n id: 'evqyiyjmyqdgrouswczzawuzp',\n account_id: accid,\n created: 1616213202559,\n type: 'conversation_invited',\n by: {\n id: userid,\n type: 'user'\n },\n data: {\n conversation: {\n id: convoid,\n account_id: accid,\n members: [agentmember],\n state: 'pending',\n source: 'https://subiz.com.vn/vi/'\n }\n }\n }, {\n id: 'evqyiyjmyzjpyehnngvmcyauf',\n account_id: accid,\n created: 1616213202668,\n type: 'conversation_state_updated',\n by: {\n id: userid,\n type: 'user'\n },\n data: {\n conversation: {\n id: convoid,\n account_id: accid,\n state: 'active'\n }\n }\n }, {\n id: 'evqyiyjmzaozvqgbkljbwywdl',\n account_id: accid,\n created: 1616213202683,\n type: 'conversation_joined',\n by: {\n id: userid,\n type: 'user'\n },\n data: {\n conversation: {\n id: convoid,\n members: [usermember]\n }\n }\n }, {\n id: 'evqyiyjmzatvtgpdmmpzwnwgn',\n account_id: accid,\n created: 1616213202685,\n type: 'message_sent',\n by: {\n id: userid,\n client_id: 'clsubizapi',\n type: 'user'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'Xin chào',\n format: 'plaintext',\n idempotency_key: 'wrueysyjbhqrkiwhsejpqrwqrdkkyaibajdw',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'seen',\n created: 1616213203068\n }]\n }\n }\n }, {\n id: 'evqyiyjrhsfyuxtetszmvkkke',\n account_id: accid,\n created: 1616213237491,\n type: 'conversation_joined',\n by: {\n id: userid,\n type: 'user'\n },\n data: {\n conversation: {\n id: convoid,\n members: [agentmember]\n }\n }\n }, {\n id: 'evqyiyjrhtroknjyakrlrwhgr',\n account_id: accid,\n created: 1616213237508,\n type: 'message_sent',\n by: {\n id: agentid,\n client_id: 'dashboard',\n type: 'agent'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'chào bạn, mình có thể giúp gì được cho bạn :grinning:',\n format: 'plaintext',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'receive',\n created: 1616213237742\n }, {\n member_id: userid,\n type: 'seen',\n created: 1616213240057\n }]\n }\n }\n }, {\n id: 'evqyiyjuvjinmclneroerxmrl',\n account_id: accid,\n created: 1616213265805,\n type: 'message_sent',\n by: {\n id: userid,\n client_id: 'clsubizapi',\n type: 'user'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'mình muốn hỏi giá sản phẩm IPhone X',\n format: 'plaintext',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'seen',\n created: 1616213267090\n }]\n }\n }\n }, {\n id: 'evqyiyjzjxzfcsexshcjbbnnf',\n account_id: accid,\n created: 1616213302432,\n type: 'message_sent',\n by: {\n id: agentid,\n client_id: 'dashboard',\n type: 'agent'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'IPhone X hiện đang được bán tại cửa hàng với giá 12tr đồng nha bạn',\n format: 'plaintext',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'receive',\n created: 1616213302698\n }, {\n member_id: userid,\n type: 'seen',\n created: 1616213305071\n }]\n }\n }\n }, {\n id: 'evqyiykaoizbwnkaecwphttwk',\n account_id: accid,\n created: 1616213311830,\n type: 'message_sent',\n by: {\n id: userid,\n client_id: 'clsubizapi',\n type: 'user'\n },\n data: {\n message: {\n conversation_id: convoid,\n text: 'ok cám ơn!',\n format: 'plaintext',\n integration_id: inteid,\n pongs: [{\n member_id: userid,\n type: 'seen',\n created: 1616213312110\n }]\n }\n }\n }];\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/api_fake.js?\n}");
|
|
560
|
-
|
|
561
|
-
/***/ },
|
|
562
|
-
|
|
563
|
-
/***/ "./src/store/chain.js"
|
|
564
|
-
/*!****************************!*\
|
|
565
|
-
!*** ./src/store/chain.js ***!
|
|
566
|
-
\****************************/
|
|
567
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
568
|
-
|
|
569
|
-
"use strict";
|
|
570
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Chain)\n/* harmony export */ });\nconst ChainMaxSize = 50;\nclass Chain {\n constructor(db, schema, inmem) {\n this.schema = schema + '_chain';\n this.dead = false;\n this.db = db;\n this.anchorCache = {};\n this.cache = {};\n this.init();\n }\n init() {\n let inmemItemM = {};\n let allitems = this.db.all('items');\n allitems.map(item => {\n inmemItemM[item.chain] = inmemItemM[item.chain] || {};\n inmemItemM[item.chain][item.id] = {\n id: item.id,\n chain: item.chain,\n full_id: item.full_id,\n index: item.index,\n value: item.value\n };\n });\n map(inmemItemM, (itemM, chain) => {\n if (size(itemM) < ChainMaxSize) return;\n let items = orderBy(map(itemM), ['index'], 'desc');\n let removekeys = [];\n for (var i = ChainMaxSize; i < items.length; i++) {\n removekeys.push(items[i].full_id);\n delete itemM[items[i].id];\n }\n this.db.removes('items', removekeys);\n inmemItemM[chain] = itemM;\n });\n this.cache = inmemItemM;\n }\n destroy() {\n this.db.clear('items');\n this.dead = true;\n this.cache = {};\n this.anchorCache = {};\n this.db = undefined;\n }\n put(chain, id, node_index, value) {\n if (this.dead) return;\n let inmemItemM = this.cache[chain] || {};\n let bottom = minIndex(inmemItemM) || {};\n let bottomIndex = bottom.index || 'z';\n if (size(inmemItemM) == 0) bottomIndex = '';\n let item = {\n id,\n index: node_index,\n value,\n chain,\n full_id: chain + ':' + id\n };\n delete inmemItemM[item.id];\n if (bottomIndex > item.index + '') return;\n inmemItemM[item.id] = item;\n this.cache[chain] = inmemItemM;\n this.db.put('items', item.full_id, item);\n }\n listM(chain) {\n if (this.dead) return {};\n let inmemItemM = this.cache[chain] || {};\n let out = {};\n map(inmemItemM, (item, id) => {\n out[id] = item.value;\n });\n return out;\n }\n async fetchMore(chain, limit = 20, api) {\n if (this.dead) return {\n error: 'dead'\n };\n if (!api) return {\n error: 'no api'\n };\n let anchor = this.anchorCache[chain] || '';\n var [apiItems, newanchor, error] = await api(chain, anchor, limit);\n if (error) return {\n error\n };\n if (this.dead) return {\n error: 'dead'\n };\n let inmemItemM = this.cache[chain] || {};\n if (apiItems.length === 0) return {\n end: true\n };\n apiItems.forEach(item => {\n item.chain = chain;\n item.full_id = chain + ':' + item.id;\n inmemItemM[item.id] = item;\n this.db.put('items', item.full_id, item);\n });\n this.anchorCache[chain] = newanchor;\n this.cache[chain] = inmemItemM;\n return {};\n }\n del(chain, id) {\n if (this.dead) return;\n let inmemItemM = this.cache[chain] || {};\n let full_id = chain + ':' + id;\n delete inmemItemM[id];\n this.db.removes('items', [full_id]);\n }\n match(chain, id) {\n return this.listM(chain)[id];\n }\n async reload(chain, api) {\n if (this.dead) return;\n let top = maxIndex(this.listM(chain)) || {};\n let topindex = top.index;\n if (!topindex) topindex = Date.now();\n var lastanchor = '';\n var fetchedItems = {};\n for (;;) {\n if (this.dead) return;\n let [newItems, newanchor, error] = await api(chain, lastanchor, 50);\n if (error) return;\n if (this.dead) return;\n newItems.map(item => {\n fetchedItems[item.id] = Object.assign({}, item, {\n chain,\n full_id: chain + ':' + item.id\n });\n });\n if (newItems.length === 0 || newanchor === lastanchor) break;\n if (fetchedItems.length >= 200) {\n let inmemItemM = this.cache[chain] || {};\n let removeids = [];\n map(inmemItemM, item => {\n if (item.chain !== chain) return;\n removeids.push(item.full_id);\n });\n this.db.removes('items', removeids);\n this.cache[chain] = {};\n break;\n }\n let minindexitem = minIndex(fetchedItems) || {};\n if (minindexitem.index <= topindex) {\n lastanchor = this.anchorCache[chain] || newanchor;\n break;\n }\n lastanchor = newanchor;\n }\n for (var i = 0; i < Object.keys(fetchedItems).length; i++) {\n let item = fetchedItems[Object.keys(fetchedItems)[i]];\n this.db.put('items', item.full_id, item);\n this.cache[item.chain] = this.cache[item.chain] || {};\n this.cache[item.chain][item.id] = item;\n }\n this.anchorCache[chain] = lastanchor;\n }\n}\nfunction minIndex(obj) {\n if (!obj) return;\n let keys = Object.keys(obj);\n if (!keys.length) return;\n let min = Infinity;\n let minKey = Object.keys(obj)[0];\n for (var i = 0; i < keys.length; i++) {\n let index = obj[keys[i]] && obj[keys[i]].index || Infinity;\n if (index < min) {\n min = index;\n minKey = keys[i];\n }\n }\n return obj[minKey];\n}\nfunction maxIndex(obj) {\n if (!obj) return;\n let keys = Object.keys(obj);\n if (!keys.length) return;\n let max = -Infinity;\n let maxKey = Object.keys(obj)[0];\n for (var i = 0; i < keys.length; i++) {\n let index = obj[keys[i]] && obj[keys[i]].index || -Infinity;\n if (index > max) {\n max = index;\n maxKey = keys[i];\n }\n }\n return obj[keys[maxKey]];\n}\nfunction map(collection, predicate) {\n if (!collection) return [];\n if (!predicate) return collection;\n var out = [];\n if (Array.isArray(collection)) {\n for (let i = 0; i < collection.length; i++) {\n out.push(predicate(collection[i], i));\n }\n return out;\n }\n if (typeof collection === 'object') {\n var keys = Object.keys(collection);\n for (let i = 0; i < keys.length; i++) {\n var k = keys[i];\n out.push(predicate(collection[k], k));\n }\n return out;\n }\n return out;\n}\nfunction size(o) {\n if (!o) return 0;\n if (o.length !== undefined) return o.length;\n return Object.keys(o).length;\n}\nfunction orderBy(a, k, d) {\n var clone = [];\n map(a, v => clone.push(v));\n clone.sort((i, j) => {\n if (i[k] === j[k]) return 0;\n var r = i[k] < j[k] ? -1 : 1;\n return d === 'desc' ? -r : r;\n });\n return clone;\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/chain.js?\n}");
|
|
571
|
-
|
|
572
|
-
/***/ },
|
|
573
|
-
|
|
574
|
-
/***/ "./src/store/inmem_localstorage.js"
|
|
575
|
-
/*!*****************************************!*\
|
|
576
|
-
!*** ./src/store/inmem_localstorage.js ***!
|
|
577
|
-
\*****************************************/
|
|
578
|
-
(module) {
|
|
579
|
-
|
|
580
|
-
eval("{var localStorageMemory = {};\nvar cache = {};\nlocalStorageMemory.length = 0;\nlocalStorageMemory.cache = cache;\nlocalStorageMemory.getItem = function (key) {\n if (key in cache) return cache[key];\n return null;\n};\nlocalStorageMemory.setItem = function (key, value) {\n if (typeof value === 'undefined') {\n localStorageMemory.removeItem(key);\n } else {\n if (!Object.prototype.hasOwnProperty.call(cache, key)) {\n localStorageMemory.length++;\n }\n cache[key] = value;\n }\n};\nlocalStorageMemory.removeItem = function (key) {\n if (Object.prototype.hasOwnProperty.call(cache, key)) {\n delete cache[key];\n localStorageMemory.length--;\n }\n};\nlocalStorageMemory.key = function (index) {\n return Object.keys(cache)[index] || null;\n};\nlocalStorageMemory.clear = function () {\n cache = {};\n localStorageMemory.length = 0;\n};\nmodule.exports = localStorageMemory;\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/inmem_localstorage.js?\n}");
|
|
581
|
-
|
|
582
|
-
/***/ },
|
|
583
|
-
|
|
584
|
-
/***/ "./src/store/kv.js"
|
|
585
|
-
/*!*************************!*\
|
|
586
|
-
!*** ./src/store/kv.js ***!
|
|
587
|
-
\*************************/
|
|
588
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
589
|
-
|
|
590
|
-
"use strict";
|
|
591
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nlet KvMaxSize = 500;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n constructor(db, schema) {\n this.name = schema;\n schema += '_kv';\n this.dead = false;\n this.db = db;\n this.cache = {};\n this.initialized = false;\n this.init();\n }\n refreshCache() {\n if (this.dead) return;\n let inmemItemM = {};\n let allitems = this.db.all('items');\n allitems.forEach(function (item) {\n inmemItemM[item.key] = item.value;\n });\n this.cache = inmemItemM;\n }\n init() {\n if (this.initialized) return;\n let inmemItemM = {};\n let allitems = this.db.all('items');\n allitems.forEach(function (item) {\n inmemItemM[item.key] = item.value;\n });\n this.cache = inmemItemM;\n let allkeys = Object.keys(this.cache);\n if (allkeys.length > KvMaxSize) {\n let liveChance = KvMaxSize / 2 / allkeys.lenth;\n let removekeys = [];\n for (var i = 0; i < KvMaxSize; i++) {\n let live = Math.random() <= liveChance;\n if (live) continue;\n let key = allkeys[i];\n delete this.cache[key];\n removekeys.push(key);\n }\n this.db.removes('items', [removekeys]);\n }\n this.initialized = true;\n }\n all() {\n if (this.dead) return [];\n if (!this.initialized) return [];\n return this.cache;\n }\n match(key) {\n if (this.dead || !this.initialized) return;\n if (!key) return;\n return this.cache[key];\n }\n put(key, value) {\n if (!key) return;\n if (this.dead) return [];\n if (!this.initialized) throw new Error('uninitialized');\n this.cache[key] = value;\n this.db.put('items', key, {\n key,\n value\n });\n }\n del(key) {\n if (this.dead) return;\n if (!this.initialized) throw new Error('uninitialized');\n delete this.cache[key];\n this.db.removes('items', [key]);\n }\n destroy() {\n this.db.clear('items');\n this.dead = true;\n this.db = undefined;\n this.cache = undefined;\n this.initialized = false;\n }\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/kv.js?\n}");
|
|
592
|
-
|
|
593
|
-
/***/ },
|
|
594
|
-
|
|
595
|
-
/***/ "./src/store/lsdb.js"
|
|
596
|
-
/*!***************************!*\
|
|
597
|
-
!*** ./src/store/lsdb.js ***!
|
|
598
|
-
\***************************/
|
|
599
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
600
|
-
|
|
601
|
-
"use strict";
|
|
602
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\nlet memlocalStorage = __webpack_require__(/*! ./inmem_localstorage.js */ \"./src/store/inmem_localstorage.js\");\n\nlet requestIdleCallback = typeof window !== 'undefined' ? window.requestIdleCallback : null;\nif (!requestIdleCallback) requestIdleCallback = cb => cb();\nconst LIMIT = 80;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n constructor(schema, inmem) {\n this.localStorage = memlocalStorage;\n this.inmem = inmem;\n this.allkeys = {};\n if (!inmem) {\n try {\n window.localStorage.setItem('sbzstore1029', '?');\n window.localStorage.removeItem('sbzstore1029');\n this.localStorage = window.localStorage;\n } catch (e) {}\n }\n this.schema = schema;\n }\n all(table) {\n let items = [];\n for (var i = 0; i < this.localStorage.length; i++) {\n let key = this.localStorage.key(i);\n if (!key.startsWith(this.schema + '#' + table + '#')) continue;\n this.allkeys[key] = true;\n if (this.inmem) items.push(this.localStorage.getItem(key));else items.push(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parseJSON(this.localStorage.getItem(key)));\n }\n return items;\n }\n removes(table, keys) {\n for (var i = 0; i < keys.length; i++) {\n delete this.allkeys[this.schema + '#' + table + '#' + keys[i]];\n this.localStorage.removeItem(this.schema + '#' + table + '#' + keys[i]);\n }\n }\n clear(table) {\n var keys = [];\n for (var i = 0; i < this.localStorage.length; i++) {\n let key = this.localStorage.key(i);\n if (!key.startsWith(this.schema + '#' + table + '#')) continue;\n keys.push(key);\n }\n for (var i = 0; i < keys.length; i++) {\n this.localStorage.removeItem(keys[i]);\n }\n this.allkeys = {};\n }\n put(table, key, value) {\n this.allkeys[this.schema + '#' + table + '#' + key] = true;\n if (this.inmem) return this.localStorage.setItem(this.schema + '#' + table + '#' + key, value);\n if (Object.keys(this.allkeys).length > LIMIT) this.clear(table);\n requestIdleCallback(() => {\n try {\n this.localStorage.setItem(this.schema + '#' + table + '#' + key, toString(value));\n } catch (e) {\n this.clear(table);\n }\n });\n }\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\nfunction toString(obj) {\n if (obj === undefined) return 'null';\n return JSON.stringify(obj);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/lsdb.js?\n}");
|
|
603
|
-
|
|
604
|
-
/***/ },
|
|
605
|
-
|
|
606
|
-
/***/ "./src/store/realtime_fake.js"
|
|
607
|
-
/*!************************************!*\
|
|
608
|
-
!*** ./src/store/realtime_fake.js ***!
|
|
609
|
-
\************************************/
|
|
610
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
611
|
-
|
|
612
|
-
"use strict";
|
|
613
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (class {\n onEvent() {}\n onInterrupted() {}\n subscribe() {}\n stop() {}\n getStatus() {\n return 'active';\n }\n reconnect() {}\n});\n__webpack_require__.dn(__WEBPACK_DEFAULT_EXPORT__);\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/realtime_fake.js?\n}");
|
|
614
|
-
|
|
615
|
-
/***/ },
|
|
616
|
-
|
|
617
|
-
/***/ "./src/store/store.js"
|
|
618
|
-
/*!****************************!*\
|
|
619
|
-
!*** ./src/store/store.js ***!
|
|
620
|
-
\****************************/
|
|
621
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
622
|
-
|
|
623
|
-
"use strict";
|
|
624
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Store)\n/* harmony export */ });\n/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/index.js */ \"./src/util/index.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./api.js */ \"./src/store/api.js\");\n/* harmony import */ var _lsdb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lsdb.js */ \"./src/store/lsdb.js\");\n/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./chain.js */ \"./src/store/chain.js\");\n/* harmony import */ var _kv_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kv.js */ \"./src/store/kv.js\");\n/* harmony import */ var _api_fake_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./api_fake.js */ \"./src/store/api_fake.js\");\n/* harmony import */ var _realtime_fake_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./realtime_fake.js */ \"./src/store/realtime_fake.js\");\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n;\nvar flow = __webpack_require__(/*! @subiz/flow */ \"./node_modules/@subiz/flow/index.js\");\n\n\n\n\n\n\nvar Realtime = __webpack_require__(/*! @subiz/wsclient */ \"./node_modules/@subiz/wsclient/realtime.js\");\nvar cookie = __webpack_require__(/*! cookie_js */ \"./node_modules/cookie_js/dist/cookie.umd.js\");\ncookie.defaults.path = '/';\ncookie.expiresMultiplier = 60 * 60 * 24;\ncookie.defaults.expires = 3650;\nlet memlocalStorage = __webpack_require__(/*! ./inmem_localstorage.js */ \"./src/store/inmem_localstorage.js\");\nconst MAX_CONVO = 20;\nconst page_loaded = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\nconst DEBUG_ACCOUNT_IDS = ['acqsulrowbxiugvginhw', 'acryguzgwxmamhzmqlyx'];\nclass Store {\n constructor(ApiURL, FileURL, RealtimeURL, inmem, fakeapi) {\n _defineProperty(this, \"inmem\", false);\n _defineProperty(this, \"cookie\", cookie);\n _defineProperty(this, \"getConnectionStatus\", () => this.connectionStatus);\n _defineProperty(this, \"_currentViewingProduct\", {});\n _defineProperty(this, \"new_visitor\", true);\n _defineProperty(this, \"matchUser\", () => {\n if (!this.cache) return undefined;\n this._touchAcc();\n return this.cache.match('user');\n });\n _defineProperty(this, \"suggest_addresses\", keyword => this.api.suggest_address(keyword));\n _defineProperty(this, \"matchAccount\", () => this.cache.match('account'));\n _defineProperty(this, \"matchPaymentMethods\", () => this.cache.match('payment_methods'));\n _defineProperty(this, \"matchUnread\", () => {\n let user = this.matchUser();\n if (!user || !user.id) return;\n let allconvos = this.matchConvo('*');\n let unreadcount = 0;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(allconvos, convo => {\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConvoSeen(convo, user.id)) unreadcount++;\n });\n return unreadcount;\n });\n _defineProperty(this, \"matchPlugin\", () => {\n if (this.is_embed_chat_mode) {\n let pluginM = this.cache.match('plugin');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(this.forcePlugins) > 0) pluginM = this.forcePlugins;\n let chatboxs = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(pluginM, (plugin, id) => plugin && plugin.type === 'chatbox');\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(chatboxs) === 0) {\n console.error('no chatbox found.');\n return;\n }\n let chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(chatboxs, chatbox => !!chatbox);\n if (!chatbox) {\n chatbox = chatboxs[0];\n }\n chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(chatbox);\n chatbox.triggers = undefined;\n return {\n [chatbox.id]: chatbox\n };\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(this.forcePlugins) > 0) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.forcePlugins);\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this.cache.match('plugin')) || {};\n });\n _defineProperty(this, \"device\", {});\n _defineProperty(this, \"browserVisibility\", 'visible');\n _defineProperty(this, \"matchAgent\", id => {\n let agentM = this.cache.match('agent') || {};\n if (id === '*') return agentM;\n return agentM[id];\n });\n _defineProperty(this, \"matchConvo\", id => {\n if (!id) return;\n if (id === '*') {\n this._touchAcc();\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(this.cache.all(), (value, k) => k.startsWith('convo_')).concat(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.lightConvos));\n }\n if (id.startsWith('cslight')) return this.lightConvos[id];\n if (!this.isInsync(id)) this.fetchConvo(id);\n return this.cache.match('convo_' + id);\n });\n _defineProperty(this, \"fetchConvo\", async cid => {\n if (!cid) return;\n if (cid.startsWith('cslight')) return;\n if (this._die) return dieErr;\n await this.readyGate.entry();\n await this.reconnectGate.entry(undefined, true);\n if (this.isInsync(cid)) return this.reconnectGate.open();\n this.markSync(cid);\n let {\n body: convo,\n error\n } = await this.api.getConversation(cid);\n if (convo && !error) this._setConvo(convo);\n return this.reconnectGate.open();\n });\n _defineProperty(this, \"list_provinces\", () => this.api.list_provinces());\n _defineProperty(this, \"list_districts\", p => this.api.list_districts(p));\n _defineProperty(this, \"list_wards\", p => this.api.list_wards(p));\n _defineProperty(this, \"outofmsgM\", {});\n _defineProperty(this, \"listEvents\", id => {\n if (!id || id === '*' || typeof id !== 'string') return;\n if (id.startsWith('cslight')) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.lightConvos, [id, 'events'], []);\n return this.chain.listM(id);\n });\n _defineProperty(this, \"fetchMoreEvents\", async convoid => {\n if (!convoid) return;\n if (convoid.startsWith('cslight')) return [[], ''];\n if (!this.isInsync('events' + convoid)) {\n await this.readyGate.entry();\n await this.reconnectGate.entry(undefined, true);\n if (this.isInsync('events' + convoid)) {\n this.reconnectGate.open();\n return {};\n }\n this.markSync('events' + convoid);\n await this.chain.reload(convoid, () => {\n return [[], ''];\n });\n let out = await this._doFetchMsg(convoid);\n this.reconnectGate.open();\n return out;\n }\n return this._doFetchMsg(convoid);\n });\n _defineProperty(this, \"reloadConvoEvents\", async convoid => {\n await this.chain.reload(convoid, () => {\n return [[], ''];\n });\n let {\n error\n } = await this.chain.fetchMore(convoid, 150, async (type, anchor, limit) => {\n let [events, newanchor, error, outofmsg] = await this.listmessageapi(type, anchor, limit);\n if (outofmsg) this.outofmsgM[convoid] = true;\n return [events, newanchor, error];\n });\n return {\n error\n };\n });\n _defineProperty(this, \"_doFetchMsg\", async convoid => {\n let {\n error\n } = await this.chain.fetchMore(convoid, 150, async (type, anchor, limit) => {\n if (this.outofmsgM[convoid]) return [[], ''];\n let [events, newanchor, error, outofmsg] = await this.listmessageapi(type, anchor, limit);\n if (outofmsg) this.outofmsgM[convoid] = true;\n return [events, newanchor, error];\n });\n this.pubsub.publish('account');\n return {\n error\n };\n });\n _defineProperty(this, \"matchLocation\", () => this.cache.match('location') || {});\n _defineProperty(this, \"matchBot\", () => this.cache.match('bot') || {});\n _defineProperty(this, \"readyGate\", new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate());\n _defineProperty(this, \"convoGate\", new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate(true));\n _defineProperty(this, \"reconnectGate\", new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate(true));\n _defineProperty(this, \"wsGate\", new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Gate(true));\n _defineProperty(this, \"matchLastview\", () => {\n return this.kv.match('lastview') || {};\n });\n _defineProperty(this, \"matchIsOpen\", () => !!this.kv.match('isopen'));\n _defineProperty(this, \"matchClosePreviewAt\", () => this.kv.match('close_preview_at') || 0);\n _defineProperty(this, \"checkFormToken\", (accid, token) => this.api.checkFormToken(accid, token));\n _defineProperty(this, \"submitForm2\", (accid, token, data) => this.api.submitForm2(accid, token, data));\n _defineProperty(this, \"sendPresence\", _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].throttle(async () => {\n if (!this._track_page_view) return;\n if (this._die) return dieErr;\n await this.readyGate.entry();\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.cache.match('user'), 'id')) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUserBanned(this.cache.match('user'))) return;\n let hasfocus = this.browserVisibility === 'visible' && document.hasFocus();\n if (!hasfocus) return this.api.sendLostFocus();\n this.sendPageview();\n }, 1000, {\n leading: false\n }));\n _defineProperty(this, \"now\", () => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() + this.timeDiff);\n _defineProperty(this, \"seenQueue\", []);\n _defineProperty(this, \"matchTrafficSource\", () => this.kv.match('traffic_source'));\n _defineProperty(this, \"sendBugReport\", str => this.api.sendBugReport(str));\n _defineProperty(this, \"matchDebugAccountIds\", () => DEBUG_ACCOUNT_IDS);\n _defineProperty(this, \"sbzListConversations\", () => {\n return this.api.listConversations();\n });\n _defineProperty(this, \"sbzListMessages\", cid => {\n return this.api.listMessages(cid, 100, '');\n });\n _defineProperty(this, \"listAgentRealtimeMessageSent\", () => {\n return this.agent_rt_message_sent_dict;\n });\n _defineProperty(this, \"_alreadyReceived\", {});\n _defineProperty(this, \"_typing\", _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].throttle(convoid => this.api.sendTyping(convoid), 3000, {\n trailing: false\n }));\n _defineProperty(this, \"onConvoEvent\", (o, cb) => this.pubsub.on2(o, 'events', cb));\n _defineProperty(this, \"onWidgetClose\", (o, cb) => this.pubsub.on2(o, 'sbz_close_widget', cb));\n _defineProperty(this, \"onMessageUpdated\", (o, cb) => this.pubsub.on2(o, 'message_updated', cb));\n _defineProperty(this, \"seenConvo\", id => {\n if (!id || id === 'create') return;\n this.seenQueue.push(id);\n });\n _defineProperty(this, \"onUpdate\", (o, cb) => this.pubsub.on2(o, 'account', cb));\n _defineProperty(this, \"onDestroyed\", (o, cb) => this.pubsub.on2(o, 'destroy', cb));\n _defineProperty(this, \"onConnection\", (o, cb) => this.pubsub.on2(o, 'connection', cb));\n _defineProperty(this, \"onResetCSS\", (o, cb) => this.pubsub.on2(o, 'resetCSS', cb));\n _defineProperty(this, \"onHighlight\", (o, cb) => this.pubsub.on2(o, 'highlight', cb));\n _defineProperty(this, \"closePreview\", () => this.kv.put('close_preview_at', new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date().getTime()));\n _defineProperty(this, \"updateLastview\", obj => {\n let user = this.cache.match('user') || {};\n if (!user.id) return;\n let lastview = this.matchLastview() || {};\n let newview = {\n ...lastview,\n ...obj,\n user_id: user.id\n };\n this.kv.put('lastview', newview);\n this.pubsub.publish('lastview', newview, lastview);\n });\n _defineProperty(this, \"onLastview\", (o, cb) => this.pubsub.on2(o, 'lastview', cb));\n _defineProperty(this, \"timeDiff\", 0);\n this.connectionStatus = 'active';\n this.CONNECTION_CHECK_INTERVAL = 3000;\n this.reconnectTimestamp = 0;\n this.g_sync = {};\n this.agent_rt_message_sent_dict = {};\n this._die = false;\n this.forceDevice = null;\n this.forcePlugins = {};\n this.forceAcc = {};\n this.forceChatbox = {};\n this.RealtimeURL = RealtimeURL;\n this.fake = fakeapi;\n this.FileURL = FileURL;\n this._track_page_view = true;\n this.device_type = 'desktop';\n if (this.fake) this.api = new _api_fake_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](ApiURL, FileURL);else this.api = new _api_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](ApiURL, FileURL);\n if (!inmem) {\n try {\n document.cookie;\n localStorage;\n } catch (e) {\n inmem = true;\n }\n }\n if (inmem) {\n this.inmem = inmem;\n this.cookie = inmemCookie;\n }\n cleanLocalStorage();\n this.pubsub = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Pubsub();\n this.kv = new _kv_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('sbz2023', this.inmem), 'kv');\n this.cache = new _kv_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('sbz2023', true), 'kv');\n this.chain = new _chain_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('cbz2023', true), 'ch');\n this.getLocaleContent = this.api.getLocaleContent;\n this.g_haveSentSeenM = {};\n this.last_focused = this.now();\n window.addEventListener('blur', () => {\n this.last_focused = this.now();\n this.sendPresence();\n });\n window.addEventListener('focus', () => {\n this.last_focused = 0;\n this.sendPresence();\n });\n window.addEventListener('beforeunload', () => this.api.sendLostFocus());\n this._lastPresenceURL = window.location.href;\n this._urlCheckInterval = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => {\n if (this._die) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._urlCheckInterval);\n if (this._lastPresenceURL === window.location.href) return;\n this._lastPresenceURL = window.location.href;\n this.sendPresence();\n }, 2_000);\n this.doNotStartBot = () => {\n this._donotstartbot = true;\n };\n this.autoStartBot = () => {\n this._donotstartbot = false;\n };\n this.matchAutoStartBot = () => !this._donotstartbot;\n this._presenceInterval1 = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => {\n if (this._die) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._presenceInterval1);\n if (this.browserVisibility === 'visible' && document.hasFocus()) this.sendPresence();\n }, 20000);\n this._presenceInterval2 = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => {\n if (this._die) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._presenceInterval2);\n if (this.browserVisibility === 'visible' && document.hasFocus()) return;\n if (this.last_focused && this.now() - this.last_focused > 30 * 60000) {\n return;\n }\n this.sendPresence();\n }, 60000);\n onVisibilityChange(val => {\n if (this._die) return;\n this.browserVisibility = val;\n this.sendPresence();\n });\n this.loopTime();\n this.device = this.getDeviceInfo();\n const _gaInterval = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => {\n let user = this.cache.match('user') || {};\n if (!user.id) return;\n var dev = this.getDeviceInfo();\n if (!dev.ga_tracking_ids || !dev.ga_client_id) return;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(_gaInterval);\n this.device = dev;\n let ga_client_id = dev.ga_client_id;\n if (ga_client_id !== _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getUserAttr(user, 'ga_client_id', 'text')) {\n this.setUser({\n attributes: [{\n type: 'text',\n text: ga_client_id,\n key: 'ga_client_id'\n }]\n });\n }\n }, 2000);\n this.loopCheckConnectionStatus();\n }\n async loopCheckConnectionStatus() {\n while (true) {\n if (this._die) break;\n await _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].sleep(this.CONNECTION_CHECK_INTERVAL);\n if (!this.realtime) continue;\n if (!this.realtime.getStatus || !this.realtime.reconnect) continue;\n if (this.connectionStatus === 'dead') {}\n let currentStatus = this.connectionStatus;\n this.connectionStatus = this.realtime.getStatus();\n if (currentStatus !== this.connectionStatus) {\n console.log('publish connectionStatus', this.connectionStatus);\n this.pubsub.publish('connection');\n }\n }\n }\n linkProduct(p) {\n if (!p) {\n this._currentViewingProduct = {};\n return;\n }\n if (p.id) this._currentViewingProduct.id = (p.id + '').trim();\n if (p.source_id) this._currentViewingProduct.source_id = (p.source_id + '').trim();\n if (p.sku) this._currentViewingProduct.sku = (p.sku + '').trim();\n }\n getTrackPageview() {\n return this._track_page_view;\n }\n setTrackPageview(val) {\n this._track_page_view = !!val;\n }\n getLinkedProduct() {\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(this._currentViewingProduct);\n }\n isInsync(key) {\n return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() - (this.g_sync[key] || 0) < 600000;\n }\n async fetchShippingAddresses() {\n let out = await this.api.fetchShippingAddresses();\n if (out.error) return null;\n this.cache.put('shipping_address', out.body.shipping_addresses);\n }\n matchShippingAddresses() {\n return this.cache.match('shipping_address');\n }\n updateOrder(order) {\n return this.api.updateOrder(order);\n }\n createShippingAddress(addr) {\n return this.api.createShippingAddress(addr);\n }\n createTicket(ticket) {\n return this.api.create_ticket(ticket);\n }\n overrideWelcomeMessage(msg) {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.lightConvos, (convo, convoid) => {\n if (convo.last_message_sent) {\n convo.last_message_sent.data.message = msg;\n convo.last_message_sent.data.message.conversation_id = convoid;\n }\n let ev = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo.events, '0');\n ev.data.message = msg;\n ev.data.message.conversation_id = convoid;\n this.pubsub.publish('events', ev);\n });\n }\n async overrideAcc(acc) {\n this.forceAcc = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(acc);\n await this.readyGate.entry();\n this.reconnect();\n }\n async overrideBotId(botid) {\n this.forceBotId = botid;\n await this.readyGate.entry();\n }\n async overrideChatbox(chatbox) {\n this.forceChatbox = chatbox;\n await this.readyGate.entry();\n await this.reconnect();\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(this.pubsub.publish('resetCSS'), 10);\n }\n onShowMessageInfo(evid) {\n this.pubsub.publish('events', {\n type: 'show_event_info',\n id: evid\n });\n }\n getDeviceInfo() {\n let device = {\n screen_resolution: window.screen.width + 'x' + window.screen.height,\n source_referrer: document.referrer,\n platform: window.navigator.platform,\n language: navigator.language,\n page_url: document.URL,\n page_title: document.title\n };\n let ga_client_id = getGaClientId();\n if (ga_client_id) device.ga_client_id = ga_client_id;\n let ga_tracking_ids = getGaTrackingIds();\n if (ga_tracking_ids.length > 0) device.ga_tracking_ids = ga_tracking_ids;\n return device;\n }\n highlight(pluginid, ref) {\n this.pubsub.publish('highlight', pluginid, ref);\n }\n emitConvoEvent(ev) {\n this.pubsub.publish('events', ev);\n }\n setAIDevMode(mode) {\n this.ai_dev_mode = mode;\n }\n setEmbebedChatMode() {\n this.is_embed_chat_mode = true;\n }\n isAIDevMode() {\n return this.ai_dev_mode;\n }\n isEmbededChatMode() {\n return this.is_embed_chat_mode;\n }\n overrideDeviceType(type) {\n this.forceDevice = type;\n this.pubsub.publish('account');\n }\n isMobile() {\n if (this.forceDevice) return this.forceDevice === 'mobile';\n return this.device_type == 'mobile' || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(window, 'screen.width', 1000) < 576;\n }\n isTablet() {\n if (this.forceDevice) return this.forceDevice === 'tablet';\n return this.device_type == 'tablet';\n }\n isDesktop() {\n if (this.forceDevice) return this.forceDevice === 'desktop';\n return !this.isMobile() && !this.isTable();\n }\n disconnect(key) {\n this.g_sync[key] = 0;\n }\n pageLoaded() {\n return page_loaded;\n }\n overridePlugin(plugins) {\n if (this._die) return dieErr;\n if (!Array.isArray(plugins)) throw 'plugins must be be an array';\n let pluginM = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(plugins, function (plugin) {\n pluginM[plugin.id] = plugin;\n });\n this.forcePlugins = pluginM;\n this.pubsub.publish('account');\n this.pubsub.publish('resetCSS');\n }\n markSync(key) {\n this.g_sync[key] = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n }\n async _touchAcc() {\n if (this.isInsync('account')) return;\n await this.readyGate.entry();\n if (!this.isInsync('account')) this.reconnect();\n }\n async init(accid, mask, userRef, options) {\n this.g_sync = {};\n if (typeof sbz_info != 'undefined') sbz_info.store_0 = true;\n if (!options || !options.use_subdomain_cookie) {\n if (window && window.location && window.location.hostname) {\n cookie.defaults.domain = '.' + window.location.hostname;\n }\n }\n if (typeof sbz_info != 'undefined') sbz_info.store_1 = true;\n if (!userRef) {\n try {\n userRef = this.cookie.get('__sbref', '');\n } catch (e) {}\n if (typeof sbz_info != 'undefined') sbz_info.store_2 = true;\n if (!userRef) {\n if (!mask) {\n try {\n mask = this.cookie.get('__sbmask', '');\n } catch (e) {}\n }\n if (mask) {\n let parts = mask.split('@');\n if (parts[0] != accid) {\n userRef = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomString(40);\n this.new_visitor = true;\n }\n this.new_visitor = false;\n this.cookie.set('__sbmask', mask);\n } else {\n userRef = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomString(40);\n this.new_visitor = true;\n }\n }\n }\n if (typeof sbz_info != 'undefined') sbz_info.store_3 = true;\n if (this.cookie.get('__sbref', userRef) != userRef) {\n cleanMyLocalStorage();\n this.clearBrowserData();\n }\n if (typeof sbz_info != 'undefined') sbz_info.store_4 = true;\n this.api.setAuth({\n accid: accid\n });\n if (typeof sbz_info != 'undefined') sbz_info.store_5 = true;\n if (userRef) this.cookie.set('__sbref', userRef);\n if (typeof sbz_info != 'undefined') sbz_info.store_6 = true;\n return this._initResource(accid, {\n accid: accid,\n mask: mask,\n ref: userRef\n }, {\n account_id: accid,\n user_ref: userRef,\n user_mask: mask\n });\n }\n standardlizeLastview() {\n let lastView = this.kv.match('lastview') || {};\n let user = this.cache.match('user') || {};\n if (!user.id) lastView = {};\n if (lastView.user_id != user.id) lastView = {};\n if (!lastView.screen) {\n lastView.screen = 'preview';\n if (lastView.view === 'list' || lastView.view === 'chat') {\n lastView.screen = 'widget';\n }\n }\n if (this.isMobile()) {\n lastView.screen = 'preview';\n let plugins = this.matchPlugin() || {};\n let chatbox = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(plugins, plugin => plugin.type === 'chatbox') || {};\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(chatbox, 'chatbox.greeting.mobile_disabled')) {\n lastView.screen = 'button';\n }\n }\n this.kv.put('lastview', lastView);\n }\n async _initResource(accid, auth, realtimep) {\n this.g_sync = {};\n this._current_acc_id = accid;\n let user = await this.api.setAuth(auth);\n if (typeof sbz_info != 'undefined') sbz_info.store_7 = true;\n if (user.error) {\n console.error(user);\n return user;\n }\n this.readyGate.close();\n accid = (accid || '').trim();\n let lightConvos = this.kv.match('light_convos') || {};\n this.lightConvos = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(lightConvos, convo => {\n let in7Day = convo.created > _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now() - 7 * 24 * 3_600_000;\n let events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(convo.events, ev => ev.type === 'message_sent');\n let messages = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(events, ev => _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message') || {});\n messages = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(messages, msg => !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEmptyMessage(msg));\n if (in7Day && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(messages)) {\n this.lightConvos[convo.id] = convo;\n }\n });\n this.cache = new _kv_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('sbz2023', true), 'kv');\n if (this.realtime) this.realtime.stop();\n if (this.fake) this.realtime = new _realtime_fake_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();else this.realtime = new Realtime(this.RealtimeURL, realtimep, xhrsend, accid);\n this.realtime.onEvent(this.onWs.bind(this));\n this.realtime.onInterrupted(async () => {\n await this.reconnectWs(accid, user.id);\n this.reconnect();\n });\n if (typeof sbz_info != 'undefined') sbz_info.store_8 = true;\n this.seenLoop();\n if (typeof sbz_info != 'undefined') sbz_info.store_9 = true;\n await this.reconnect({\n user: user\n });\n this.standardlizeLastview();\n if (typeof sbz_info != 'undefined') sbz_info.store_10 = true;\n this.readyGate.open();\n this.reconnectWs(accid, user.id);\n return user;\n }\n async login(accid, user_id, tokenGenerator) {\n if (this._die) return dieErr;\n cleanMyLocalStorage();\n this.clearBrowserData();\n this.new_visitor = false;\n return this._initResource(accid, {\n accid: accid,\n profile_id: user_id,\n tokenGenerator: tokenGenerator\n }, {\n getAccessToken: () => this.api.token_generator()\n });\n }\n logout(userRef) {\n return this.api.setAuth({\n ref: userRef\n });\n }\n seenLoop() {\n this.seenQueue = [];\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._seenInterval);\n this._seenInterval = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setInterval(() => {\n if (this._die) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._seenInterval);\n if (!this.cache) return;\n this.seenQueue = [...new Set(this.seenQueue)];\n let user = this.cache.match('user') || {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.seenQueue, id => {\n var events = this.listEvents(id);\n if (!events) return;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(events) === 0) return;\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(events, ev => ev.type === 'message_sent');\n var lastmsgsent = events[_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(events) - 1];\n if (!lastmsgsent) return;\n if (this.g_haveSentSeenM[lastmsgsent.id]) return;\n if (lastmsgsent.id === lastmsgsent.data.message.idempotency_key) return;\n this.pubsub.publish('events', {\n created: this.now(),\n type: 'message_pong',\n by: {\n type: 'user'\n },\n data: {\n message: {\n conversation_id: id,\n id: '*',\n pongs: [{\n type: 'seen',\n created: this.now()\n }]\n }\n }\n });\n if (id.startsWith('cslight')) {\n let old = this.lightConvos[id];\n let user = this.matchUser();\n if (!old) return;\n let mem = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(old.members, mem => mem.type == 'user' && mem.id == user.id);\n if (mem) mem.seen_at = this.now();\n this.kv.put('light_convos', this.lightConvos);\n this.g_haveSentSeenM[lastmsgsent.id] = true;\n return;\n }\n this.api.markAsSeen(id, lastmsgsent.id);\n let convo = this.cache.match('convo_' + id) || {};\n let mem = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convo.members, m => m.id === user.id);\n if (mem) mem.seen_at = this.now();\n this._setConvo(convo);\n this.g_haveSentSeenM[lastmsgsent.id] = true;\n });\n this.seenQueue = [];\n }, 1000);\n }\n async reconnectWs(accid, userid) {\n await this.realtime.subscribe([`conversation_state_updated.account.${accid}.user.${userid}`, `conversation_joined.account.${accid}.user.${userid}`, `conversation_typing.account.${accid}.user.${userid}`, `message_sent.account.${accid}.user.${userid}`, `message_pong.account.${accid}.user.${userid}`, `conversation_rating_requested.account.${accid}.user.${userid}`, `conversation_rated.account.${accid}.user.${userid}`, `conversation_events.account.${accid}.user.${userid}`]);\n await this.readyGate.entry();\n }\n async reconnect(p) {\n if (this._die) return;\n await this.reconnectGate.entry(undefined, true);\n this.markSync('account');\n let fetchuser = p && p.user ? Promise.resolve({\n body: p.user\n }) : this.api.getUser();\n let outs = await Promise.all([fetchuser, this.api.getAccountSetting({\n bot_id: this.forceBotId\n })]);\n let error = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(outs, out => out.error);\n if (error) return console.error(error);\n let set = outs[1].body;\n set.user = outs[0].body;\n await this._setSetting(set);\n let convob = await this.api.listConversations();\n error = convob.error;\n let body = convob.body;\n if (!error) {\n let convos = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(body, 'conversations', []);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.cache.all(), (value, k) => {\n if (k.startsWith('convo_')) {\n if (this.now() - _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(value, 'actived')) > 1209600000) this.cache.del(k);\n }\n });\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(convos, convo => this._setConvo(convo));\n }\n return this.reconnectGate.open();\n }\n async submitForm(formid, data, user) {\n await this.readyGate.entry();\n if (user) await this.setUser(user);\n return this.api.submitForm(formid, document.URL, this.device, data, user);\n }\n async setUser(user) {\n if (!user) return;\n await this.readyGate.entry();\n this._setUser(user);\n return this.api.updateUser(user);\n }\n async setUserDiff(user) {\n if (!user) return;\n await this.readyGate.entry();\n let out = await this.api.updateUser(user);\n if (out && out.code == 200 && out.body.id) {\n this._setUser(out.body);\n }\n }\n _setUser(user) {\n user = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(user);\n let olduser = this.cache.match('user') || {};\n var accid = olduser.account_id || user.account_id;\n var id = olduser.id || user.id;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(user.attributes, newattr => {\n if (!newattr) return;\n olduser.attributes = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].filter(olduser.attributes, oldattr => {\n if (!oldattr) return false;\n return oldattr.key !== newattr.key;\n });\n });\n olduser.attributes = olduser.attributes || [];\n olduser.attributes = olduser.attributes.concat(user.attributes);\n olduser.account_id = accid;\n olduser.id = id;\n this.cache.put('user', olduser);\n this.pubsub.publish('account');\n }\n async setSetting(setting) {\n if (!setting) return;\n await this.readyGate.entry();\n return this._setSetting(setting);\n }\n async _setSetting(setting) {\n setting = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].cloneDeep(setting) || {};\n setting.account = Object.assign({}, setting.account, this.forceAcc);\n if (!setting.account.logo_url) {\n setting.account.logo_url = 'https://vcdn.subiz-cdn.com/widget-v4/public/assets/img/default_logo.dd13a2b.svg';\n }\n if (setting.user) {\n setting.user.account_id = setting.account.id;\n delete setting.user.session;\n this._setUser(setting.user);\n }\n if (setting.account) {\n setting.account.is_online = setting.is_online;\n setting.account.is_in_business_hour = setting.is_in_business_hour;\n this.cache.put('account', setting.account);\n delete setting.account;\n }\n let location = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(setting, 'location', []);\n this.cache.put('location', location);\n let bots = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(setting, 'bots', []);\n let botM = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(bots, bot => {\n botM[bot.id] = bot;\n });\n this.cache.put('bot', botM);\n this.device_type = setting.device_type || 'desktop';\n let plugins = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(setting, 'plugins', []);\n let pluginM = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(plugins, plugin => {\n if (plugin.type === 'chatbox') {\n plugin = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].merge(plugin, this.forceChatbox);\n }\n pluginM[plugin.id] = plugin;\n });\n this.cache.put('plugin', pluginM);\n var agents = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(setting, 'agents', []);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(agents) > 0) {\n let agentM = {};\n this.api.setAgentId(agents[0].id);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(agents, agent => {\n agentM[agent.id] = agent;\n });\n this.cache.put('agent', agentM);\n }\n let pms = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(setting, 'payment_methods', []);\n this.cache.put('payment_methods', pms);\n this.pubsub.publish('account');\n }\n async sendPageview(p) {\n if (!p) p = {};\n let device = Object.assign({}, this.device);\n if (p.referrer) device.source_referrer = p.referrer;\n device.page_url = p.url || location.href;\n device.page_title = p.title || document.title;\n return this.api.sendContentView(device, p.url || location.href, p.title || document.title, this._currentViewingProduct.id, this._currentViewingProduct.source_id, this._currentViewingProduct.sku);\n }\n async track(e) {\n if (!e) {\n let out = await this.sendPageview();\n let traffic_source = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(out, 'body.by.device.source', '');\n if (traffic_source) this.kv.put('traffic_source', traffic_source);\n return out;\n }\n if (typeof e === 'object') {\n if (!e.data) e.data = {};\n }\n return this.api.sendEvent(e);\n }\n async onWs(ev) {\n await this.wsGate.entry();\n this.wsGate.close();\n await this._onWs(ev);\n this.wsGate.open();\n }\n handleLogCompare(ev) {\n if (!DEBUG_ACCOUNT_IDS.includes(this._current_acc_id)) return;\n if (ev.type !== 'message_sent') return;\n let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.type');\n if (byType === 'user') return;\n this.agent_rt_message_sent_dict[ev.id] = ev;\n }\n async _onWs(ev) {\n this.handleLogCompare(ev);\n if (this._die) return;\n if (!ev || !ev.type) return;\n ev.created = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(ev.created);\n if (ev.type === 'user_info_updated') {\n return;\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n // removed by dead control flow\n\n }\n if (ev.type === 'message_deleted') {\n this.pubsub.publish('message_updated', ev);\n return;\n }\n let user = this.cache.match('user') || {};\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev);\n let convo;\n let alreadyFetched = false;\n if (cid && !cid.startsWith('cslight')) {\n convo = this.cache.match('convo_' + cid);\n if (!convo || !convo.id) {\n let {\n body: apiconvo,\n error\n } = await this.api.getConversation(cid);\n if (!apiconvo) return;\n convo = apiconvo;\n alreadyFetched = true;\n this._setConvo(convo);\n }\n }\n if (cid && cid.startsWith('cslight')) {\n convo = this.lightConvos[cid];\n if (!convo) return;\n convo.events.push(ev);\n convo.last_message_sent = ev;\n this.kv.put('light_convos', this.lightConvos);\n this.pubsub.publish('events', ev);\n return;\n }\n if (!convo) return;\n this.pubsub.publish('events', ev);\n if (ev.type === 'conversation_joined') {\n let members = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.conversation.members', []);\n let me = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(members, m => m.id === this.cache.match('user').id);\n if (me) {\n if (!alreadyFetched) {\n let {\n body: apiconvo\n } = await this.api.getConversation(cid);\n if (apiconvo) {\n convo = apiconvo;\n this._setConvo(convo);\n }\n this.pubsub.publish('account');\n }\n }\n }\n if (ev.type === 'message_sent') {\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.id') !== user.id) {\n if (!this._alreadyReceived[ev.id]) {\n this._alreadyReceived[ev.id] = true;\n this.api.markAsReceived(cid, ev.id);\n }\n }\n }\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(ev.type, 'message_') || _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(ev.type, 'conversation_')) {\n this.restConvoEvent(ev);\n if (ev.type === 'message_sent' && _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.id') !== user.id) {\n sendEventToThirdParty('SUBIZ Chat', 'Received', 'User');\n }\n return;\n }\n }\n async restConvoEvent(ev) {\n let user = this.cache.match('user');\n let cid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoOfEv(ev);\n let convo = this.cache.match('convo_' + cid) || {};\n if (ev.type === 'conversation_state_updated') {\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'id')) {\n let {\n body: convo,\n error\n } = await this.api.getConversation(cid);\n if (error) return;\n }\n convo = Object.assign(convo, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.conversation'));\n }\n if (ev.type === 'message_pong') {\n var msgid = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.id');\n var oldev = this.chain.match(cid, msgid);\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(oldev, 'data.message')) return;\n var pongs = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(oldev, 'data.message.pongs', []);\n let newpongs = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.pongs', []) || [];\n pongs = pongs.concat(newpongs);\n if (newpongs.length === 1) {\n let pongtype = newpongs[0].type;\n if (pongtype === 'like' || pongtype === 'remove_dislike') {\n pongs = pongs.filter(pong => pong.type !== 'dislike');\n }\n if (pongtype === 'dislike' || pongtype === 'remove_like') {\n pongs = pongs.filter(pong => pong.type !== 'like');\n }\n }\n oldev.data.message.pongs = pongs;\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(pongs, pong => {\n if (pong.member_id == user.id && pong.type === 'seen') {\n let mem = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(convo.members, mem => mem.id === user.id);\n if (mem) mem.seen_at = pong.created;\n }\n });\n this.chain.put(cid, oldev.id, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(oldev.created), oldev);\n this.pubsub.publish('events', oldev);\n }\n if (ev.type !== 'message_pong' && ev.type !== 'conversation_typing') {\n if (ev.type === 'message_sent') {\n let idemkey = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.idempotency_key');\n let found = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(this.listEvents(cid), oldev => oldev.id === idemkey);\n if (found) {\n this.chain.del(cid, found.id);\n ev.created = found.created;\n }\n convo.last_message_sent = ev;\n }\n this.chain.put(cid, ev.id, _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(ev.created), ev);\n }\n this._setConvo(convo);\n this.pubsub.publish('account');\n }\n emitCloseWidgetEvent() {\n this.pubsub.publish('sbz_close_widget', {\n type: 'chatbox_closed'\n });\n }\n typing(cid) {\n if (!cid) return;\n if (cid.startsWith('cslight')) return;\n this._typing(cid);\n }\n deleteLightConvo(id) {\n delete this.lightConvos[id];\n this.kv.put('light_convos', this.lightConvos);\n }\n startLightConvo(botid, messages, locale, is_testing, botversion) {\n let convoid = 'cslight' + botid + '_' + this.now();\n let user = this.cache.match('user') || {};\n let old = this.lightConvos[convoid];\n if (old) return {\n convo: old\n };\n let now = this.now();\n let lastev = {};\n let newevs = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(messages, (message, idx) => {\n let ev = {};\n ev.created = now;\n ev.event_time = now;\n ev.id = 'evfake' + now + idx;\n ev.type = 'message_sent';\n ev.by = {\n id: botid,\n type: 'bot'\n };\n ev.data = {\n message: message\n };\n ev.data.message.conversation_id = convoid;\n lastev = ev;\n return ev;\n });\n let newconvo = {\n id: convoid,\n locale: locale,\n initial_by: botid,\n created: now,\n actived: now,\n last_message_sent: lastev,\n members: [{\n type: 'user',\n id: user.id\n }, {\n type: 'bot',\n id: botid,\n membership: 'active'\n }],\n state: 'active',\n touchpoint: {\n id: convoid,\n channel: 'subiz',\n source: 'web'\n },\n traffic_source: 'direct',\n events: newevs,\n is_testing: is_testing,\n bot_versio: botversion\n };\n this.lightConvos[convoid] = newconvo;\n this.kv.put('light_convos', this.lightConvos);\n this.pubsub.publish('events', lastev);\n return {\n convo: newconvo\n };\n }\n async startConvo(req) {\n if (!req) req = {};\n await this.readyGate.entry();\n this.convoGate.close();\n if (!req.source) req.source = document.location.href;\n let {\n body: convo,\n error\n } = await this.api.start(req);\n this.convoGate.open();\n if (error) return {\n error\n };\n this._setConvo(convo);\n return {\n convo\n };\n }\n fetchOrder(id) {\n return this.api.getOrder(id);\n }\n lookupOrder(key) {\n return this.api.lookupOrder(key);\n }\n createPostback(cid, postback) {\n if (cid && cid.startsWith('cslight')) return;\n return this.api.createPostback(cid, postback);\n }\n sendReaction(cid, ev) {\n if (cid && cid.startsWith('cslight')) return;\n return this.api.sendConvoEvent(cid, ev);\n }\n async sendConvoEvent(cid, type, data) {\n await this.readyGate.entry();\n var idempotency = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomString(36);\n let user = this.cache.match('user') || {};\n var event = {\n id: idempotency,\n by: {\n id: user.id,\n type: 'user',\n device: this.device\n },\n data,\n type,\n created: this.now()\n };\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].convoToEv(cid, event);\n let files = [];\n if (type === 'message_sent') {\n event.data.message.idempotency_key = idempotency;\n event.data.message.conversation_id = cid;\n await flow.map(event.data.message.attachments, 2, async (att, i) => {\n if (att.type !== 'file') return;\n if (!att._file) return;\n files.push(att);\n if (ImageTypes.includes(att._file.type)) {\n let {\n width,\n height,\n url\n } = await loadImage(att._file);\n att.url = url;\n att.width = width;\n att.height = height;\n }\n });\n }\n this.onWs(event);\n await this.convoGate.entry();\n await flow.map(files, 1, async att => {\n const {\n body,\n url,\n error\n } = await this.api.uploadToS3(att._file);\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(body, 'code') == 'invalid_field_size') {\n event._error_message = 'cannot_send_too_big_file';\n }\n event._error = error;\n att.url = url;\n });\n if (event._error) return this.onWs(event);\n if (cid && cid.startsWith('cslight')) return;\n let {\n body: ret,\n error\n } = await this.api.sendConvoEvent(cid, event);\n if (error) {\n event._error = error;\n this.onWs(event);\n return;\n }\n this.onWs(ret);\n sendEventToThirdParty('SUBIZ Chat', 'Sent', 'User');\n let lastMsgSent = this.kv.match('last_msg_sent');\n if (!lastMsgSent) {\n let dataLayer = window.dataLayer || [];\n dataLayer.push({\n event: 'SUBIZ Chat',\n event_action: 'Sent',\n event_label: 'User',\n first_interaction: 1\n });\n }\n this.kv.put('last_msg_sent', this.now());\n return ret;\n }\n _setConvo(convo) {\n let count = 0;\n let user = this.cache.match('user');\n let channel = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(convo, 'touchpoint.channel', '');\n if (channel && channel != 'subiz') return;\n let allconvo = {};\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(this.cache.all(), (value, key) => {\n if (key.startsWith('convo_')) {\n allconvo[key] = value;\n }\n });\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(allconvo) > MAX_CONVO - 2) {\n allconvo = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].orderBy(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(allconvo), 'created', 'desc');\n for (var i = MAX_CONVO - 2; i < _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(allconvo); i++) {\n let convo = allconvo[i];\n this.cache.del('convo_' + convo.id);\n }\n }\n this.markSync(convo.id);\n this.pubsub.publish('account');\n this.cache.put('convo_' + convo.id, convo);\n }\n matchLastPluginRun(pluginid) {\n let log = this.kv.match('plugin_run_logs') || {};\n return log[pluginid];\n }\n matchLastBotRun(botid) {\n let log = this.kv.match('bot_run_logs') || {};\n return log[botid];\n }\n logBotRun(botid) {\n let log = this.kv.match('bot_run_logs') || {};\n log[botid] = {\n bot_id: botid,\n created: this.now()\n };\n this.kv.put('bot_run_logs', log);\n }\n sendImpression(id) {\n let user = this.cache.match('user') || {};\n let log = this.kv.match('plugin_run_logs') || {};\n log[id] = {\n web_plugin_id: id,\n created: this.now()\n };\n this.kv.put('plugin_run_logs', log);\n return this.api.sendImpression({\n account_id: user.account_id,\n campaign_id: id,\n web_plugin_id: id,\n user_id: user.id,\n url: window.location.href,\n device: this.device\n });\n }\n sendConversion(id, fields, impressionToken) {\n let user = this.cache.match('user') || {};\n let submission = {\n account_id: user.account_id,\n user_id: user.id,\n fields: fields\n };\n let conv = this.kv.match('conversions') || {};\n conv[id] = true;\n this.kv.put('conversions', conv);\n return this.api.sendConversion({\n account_id: user.account_id,\n web_plugin_id: id,\n campaign_id: id,\n user_id: _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(user, 'id'),\n url: window.location.href,\n device: this.device,\n submission,\n impression_token: impressionToken\n });\n }\n isConverted(id) {\n let conv = this.kv.match('conversions') || {};\n return conv[id];\n }\n async listmessageapi(type, anchor, limit) {\n let convoid = type;\n if (convoid && convoid.startsWith('cslight')) return [fakeevents, '', undefined, true];\n let {\n body: events,\n code,\n error\n } = await this.api.listMessages(convoid, -limit, anchor);\n if (error || code !== 200) return [[], anchor, error];\n anchor = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].last(events), 'id');\n events = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].map(events, event => {\n event.created = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getMs(event.created);\n return {\n id: event.id,\n index: event.created,\n value: event\n };\n });\n let user = this.cache.match('user') || {};\n for (let i = 0; i < events.length; i++) {\n let ev = events[i].value;\n if (ev.type !== 'message_sent') continue;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'by.id') === user.id) continue;\n let pongbyme = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].find(_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(ev, 'data.message.pongs'), p => p.member_id === user.id);\n if (pongbyme) break;\n if (!this._alreadyReceived[ev.id]) {\n this._alreadyReceived[ev.id] = true;\n this.api.markAsReceived(convoid, ev.id);\n }\n break;\n }\n let outofmsg = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].size(events) < limit;\n return [events, anchor, undefined, outofmsg];\n }\n async loopTime() {\n if (this._die) return;\n let startms = this.now();\n if (!this.cache || !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].get(this.cache.match('user'), 'id')) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => this.loopTime(), 240000);\n let {\n body: t,\n error\n } = await this.api.time();\n if (error) return _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => this.loopTime(), 30000);\n var latences = Math.abs(this.now() - startms) / 2;\n var serverMs = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date(t).getTime() + latences;\n var localMs = this.now();\n this.timeDiff = Math.floor(serverMs - localMs);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => this.loopTime(), 240000);\n }\n replaceFileUrl(src) {\n if (!src) return '';\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(src, '/')) return src;\n if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(src, 'data:')) return src;\n if (!_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(src, 'http://') && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(src, 'https://') && !_util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].startsWith(src, '//')) {\n src = _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(this.FileURL, '/') + '/' + _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trimStart(src, '/');\n }\n src = src.replace('https://file-subiz.com/', this.FileURL);\n src = src.replace('http://file-subiz.com/', this.FileURL);\n src = src.replace('https://file-v4.subiz.com/', this.FileURL);\n src = src.replace('http://file-v4.subiz.com/', this.FileURL);\n src = src.replace('https://filev4.subiz.com/', this.FileURL);\n src = src.replace('http://filev4.subiz.com/', this.FileURL);\n src = src.replace('https://filev4-1.subiz.com/', this.FileURL);\n src = src.replace('http://filev4-1.subiz.com/', this.FileURL);\n src = src.replace('https://file.subiz.com/', this.FileURL);\n src = src.replace('http://file.subiz.com/', this.FileURL);\n src = src.replace('https://file.mysubiz.com/', this.FileURL);\n src = src.replace('http://file.mysubiz.com/', this.FileURL);\n return src;\n // removed by dead control flow\n\n }\n clearBrowserData() {\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].each(this.cookie.all(), (v, k) => {\n if ((k || '').startsWith('__sb')) this.cookie.remove(k);\n });\n if (this.kv) this.kv.destroy();\n this.kv = new _kv_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('sbz2023', this.inmem), 'kv');\n if (this.chain) this.chain.destroy();\n this.chain = new _chain_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](new _lsdb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('cbz2023', true), 'ch');\n if (this.realtime) this.realtime.stop();\n if (this.cache) this.cache.destroy();\n this.pubsub.publish('destroy');\n }\n isDead() {\n return this._die;\n }\n destroy() {\n this._die = true;\n this.clearBrowserData();\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._seenInterval);\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].clearInterval(this._urlCheckInterval);\n if (this.realtime) this.realtime.stop();\n this.readyGate.close();\n window.removeEventListener('blur', this.sendPresence);\n window.removeEventListener('focus', this.sendPresence);\n }\n}\nfunction loadImage(file) {\n return new Promise(rs => {\n var reader = new window.FileReader();\n reader.onload = e => {\n let src = e.target.result;\n let img = new Image();\n img.onload = () => {\n rs({\n url: src,\n width: img.width,\n height: img.height\n });\n };\n img.src = src;\n };\n reader.readAsDataURL(file);\n });\n}\nconst ImageTypes = ['image/gif', 'image/jpeg', 'image/png', 'image/svg+xml'];\nfunction onVisibilityChange(cb) {\n var hidden = 'hidden';\n if (hidden in document) document.addEventListener('visibilitychange', onchange);else if ((hidden = 'mozHidden') in document) document.addEventListener('mozvisibilitychange', onchange);else if ((hidden = 'webkitHidden') in document) document.addEventListener('webkitvisibilitychange', onchange);else if ((hidden = 'msHidden') in document) document.addEventListener('msvisibilitychange', onchange);else if ('onfocusin' in document) document.onfocusin = document.onfocusout = onchange;else window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;\n function onchange(evt) {\n var v = 'visible';\n var h = 'hidden';\n var evtMap = {\n focus: v,\n focusin: v,\n pageshow: v,\n blur: h,\n focusout: h,\n pagehide: h\n };\n evt = evt || window.event;\n if (evt.type in evtMap) cb(evtMap[evt.type]);else cb(this[hidden] ? 'hidden' : 'visible');\n }\n if (document[hidden] !== undefined) onchange({\n type: document[hidden] ? 'blur' : 'focus'\n });\n}\nconst inmemCookie = {\n data: {},\n get(k, def) {\n return this.data[k] || def;\n },\n set(k, v) {\n return this.data[k] = k;\n },\n all() {\n return this.data;\n },\n remove(k) {\n delete this.data[k];\n }\n};\nfunction getGaClientId() {\n if (!window.ga) return;\n if (!window.ga.getAll) return;\n var allTrackers = window.ga.getAll() || [];\n let ga_client_id = '';\n allTrackers.forEach(function (tracker) {\n ga_client_id = tracker.get('clientId');\n });\n return ga_client_id;\n}\nfunction getGaTrackingIds() {\n var trackingIds = [];\n if (!(window.ga && window.ga.getAll)) return trackingIds;\n if (!window.ga) return [];\n if (!window.ga.getAll) return [];\n const allTrackers = window.ga.getAll() || [];\n allTrackers.forEach(function (tracker) {\n var trackingId = tracker.get('trackingId');\n if (trackingId) trackingIds.push(trackingId);\n });\n return trackingIds;\n}\nfunction sendToFBPixel(category, action, label) {\n if (!window.fbq) return;\n window.fbq('trackCustom', category, {\n action: action,\n label: label\n });\n}\nfunction sendToGA(category, action, label) {\n if (window.sbz_no_gtag) {\n console.log('SKIPSENT.', category, action, label);\n return;\n }\n let dataLayer = window.dataLayer || [];\n dataLayer.push({\n event: category,\n event_action: action,\n event_label: label\n });\n if (window.gtag) window.gtag('event', category, {\n Action: action,\n Label: label\n });\n if (window.ga && window.ga.getAll) {\n const allTrackers = window.ga.getAll() || [];\n allTrackers.forEach(function (tracker) {\n const name = tracker.get('name');\n window.ga(name + '.send', 'event', category, action, label);\n });\n }\n}\nfunction sendEventToThirdParty(category, action, label) {\n document.dispatchEvent(new CustomEvent('subiz', {\n detail: {\n category,\n action,\n label\n }\n }));\n sendToGA(category, action, label);\n sendToFBPixel(category, action, label);\n}\nlet cleanLocalStorage = () => {\n try {\n localStorage;\n } catch (e) {\n return;\n }\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n for (var key in localStorage) {\n if (key && (key.startsWith('cbz2020') || key.startsWith('sbz2020'))) {\n localStorage.removeItem(key);\n memlocalStorage.removeItem(key);\n }\n }\n });\n};\nlet cleanMyLocalStorage = () => {\n try {\n localStorage;\n } catch (e) {\n return;\n }\n _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setTimeout(() => {\n for (var key in localStorage) {\n if (key && (key.startsWith('cbz2020') || key.startsWith('sbz2020') || key.startsWith('sbz2022') || key.startsWith('sbz2023'))) {\n localStorage.removeItem(key);\n memlocalStorage.removeItem(key);\n }\n }\n });\n};\nfunction dofetch(method, url, body, cb) {\n let headers = {};\n if (body) headers['content-type'] = 'text/plain';\n fetch(url, {\n method: method,\n headers: headers,\n body: body\n }).then(res => res.text().then(text => cb && cb(text, res.status))).catch(err => cb && cb(err, -1));\n}\nvar xhrsend = function (method, url, body, cb) {\n if (typeof _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].XMLHttpRequest === 'undefined') return dofetch(method, url, body, cb);\n var request = new _util_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].XMLHttpRequest();\n request.onreadystatechange = function (e) {\n if (request.readyState !== 4) return;\n cb && cb(request.responseText, request.status);\n cb = undefined;\n };\n request.onerror = function () {\n cb && cb(request.responseText, -1);\n cb = undefined;\n };\n request.open(method, url);\n if (body) request.setRequestHeader('content-type', 'text/plain');\n request.send(body);\n};\nconst dieErr = new Error('sdk unloaded');\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/store/store.js?\n}");
|
|
625
|
-
|
|
626
|
-
/***/ },
|
|
627
|
-
|
|
628
|
-
/***/ "./src/util/campaign.js"
|
|
629
|
-
/*!******************************!*\
|
|
630
|
-
!*** ./src/util/campaign.js ***!
|
|
631
|
-
\******************************/
|
|
632
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
633
|
-
|
|
634
|
-
"use strict";
|
|
635
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ trackAreaClicked: () => (/* binding */ trackAreaClicked),\n/* harmony export */ trackExitIntent: () => (/* binding */ trackExitIntent),\n/* harmony export */ trackInactivity: () => (/* binding */ trackInactivity),\n/* harmony export */ trackScrollingPercentage: () => (/* binding */ trackScrollingPercentage),\n/* harmony export */ trackTimeOnPage: () => (/* binding */ trackTimeOnPage)\n/* harmony export */ });\nvar common = __webpack_require__(/*! ./common.js */ \"./src/util/common.js\");\nfunction trackExitIntent(cb) {\n let handler = e => {\n if (e.clientY > 10) return;\n if (cb) cb();\n document.removeEventListener('mouseout', handler);\n };\n document.addEventListener('mouseout', handler);\n}\nfunction trackScrollingPercentage(percent, cb) {\n let handleScroll = e => {\n let scrollTop = e.srcElement.scrollingElement ? e.srcElement.scrollingElement.scrollTop : e.srcElement.scrollTop;\n let scrollHeight = e.srcElement.scrollingElement ? e.srcElement.scrollingElement.scrollHeight : e.srcElement.scrollHeight;\n if (scrollTop > 0 && scrollHeight > 0 && (scrollTop + window.innerHeight) / scrollHeight >= percent) {\n if (cb) cb();\n window.removeEventListener('scroll', handleScroll, false);\n }\n };\n window.addEventListener('scroll', handleScroll, false);\n}\nfunction trackAreaClicked(selector, cb) {\n if (!selector) return;\n selector = selector || '';\n common.map(selector.split('\\n'), selector => {\n selector = common.trim(selector);\n if (!selector) return;\n on('click', selector, cb);\n });\n}\nfunction trackInactivity(seconds = 0, cb) {\n let events = ['scroll', 'keyup', 'keydown', 'mousemove', 'mousewheel', 'mouseenter', 'mouseover', 'mousedown', 'touchstart', 'touchmove', 'touchenter'];\n let inactiveSeconds = 0;\n let resetTime = () => {\n inactiveSeconds = 0;\n };\n let timer = common.setInterval(() => {\n inactiveSeconds++;\n if (inactiveSeconds < seconds) return;\n if (cb) cb();\n for (let ev of events) {\n document.removeEventListener(ev, resetTime, false);\n }\n common.clearInterval(timer);\n }, 1000);\n for (let ev of events) {\n document.addEventListener(ev, resetTime, false);\n }\n}\nlet _pageLoaded = common.Date.now();\nfunction trackTimeOnPage(seconds = 0, cb) {\n if (seconds < 1) {\n return common.setTimeout(function () {\n cb(seconds);\n }, 100);\n }\n let timer = common.setInterval(() => {\n let timeOnPage = (common.Date.now() - _pageLoaded) / 1000;\n if (timeOnPage < seconds) return;\n if (cb) cb(timeOnPage);\n common.clearInterval(timer);\n }, 200);\n}\nfunction on(eventName, selector, fn) {\n document.addEventListener(eventName, function (event) {\n let possibleTargets = document.querySelectorAll(selector);\n let target = event.target;\n for (let i = 0, l = possibleTargets.length; i < l; i++) {\n let el = target;\n let p = possibleTargets[i];\n while (el && el !== document) {\n if (el === p) {\n return fn.call(p, event);\n }\n el = el.parentNode;\n }\n }\n });\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/campaign.js?\n}");
|
|
636
|
-
|
|
637
|
-
/***/ },
|
|
638
|
-
|
|
639
|
-
/***/ "./src/util/common.js"
|
|
640
|
-
/*!****************************!*\
|
|
641
|
-
!*** ./src/util/common.js ***!
|
|
642
|
-
\****************************/
|
|
643
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
644
|
-
|
|
645
|
-
"use strict";
|
|
646
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFVAL: () => (/* binding */ DEFVAL),\n/* harmony export */ DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL: () => (/* binding */ DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL),\n/* harmony export */ Date: () => (/* binding */ Date),\n/* harmony export */ XMLHttpRequest: () => (/* binding */ XMLHttpRequest),\n/* harmony export */ agentsOfConvo: () => (/* binding */ agentsOfConvo),\n/* harmony export */ blockToText: () => (/* binding */ blockToText),\n/* harmony export */ checkRunConditions: () => (/* binding */ checkRunConditions),\n/* harmony export */ checkUrlCondition: () => (/* binding */ checkUrlCondition),\n/* harmony export */ clearInterval: () => (/* binding */ clearInterval),\n/* harmony export */ clearTimeout: () => (/* binding */ clearTimeout),\n/* harmony export */ cloneDeep: () => (/* binding */ cloneDeep),\n/* harmony export */ convoOfEv: () => (/* binding */ convoOfEv),\n/* harmony export */ convoToEv: () => (/* binding */ convoToEv),\n/* harmony export */ detectLang: () => (/* binding */ detectLang),\n/* harmony export */ diffDay: () => (/* binding */ diffDay),\n/* harmony export */ diffYear: () => (/* binding */ diffYear),\n/* harmony export */ each: () => (/* binding */ each),\n/* harmony export */ extract: () => (/* binding */ extract),\n/* harmony export */ extractEmails: () => (/* binding */ extractEmails),\n/* harmony export */ extractEmojis: () => (/* binding */ extractEmojis),\n/* harmony export */ extractLinks: () => (/* binding */ extractLinks),\n/* harmony export */ extractPhones: () => (/* binding */ extractPhones),\n/* harmony export */ extractText: () => (/* binding */ extractText),\n/* harmony export */ filter: () => (/* binding */ filter),\n/* harmony export */ find: () => (/* binding */ find),\n/* harmony export */ formatCurrency: () => (/* binding */ formatCurrency),\n/* harmony export */ getAgentDisplayName: () => (/* binding */ getAgentDisplayName),\n/* harmony export */ getDayName: () => (/* binding */ getDayName),\n/* harmony export */ getMs: () => (/* binding */ getMs),\n/* harmony export */ getUrlParameter: () => (/* binding */ getUrlParameter),\n/* harmony export */ getUserAttr: () => (/* binding */ getUserAttr),\n/* harmony export */ hslToRgb: () => (/* binding */ hslToRgb),\n/* harmony export */ includes: () => (/* binding */ includes),\n/* harmony export */ isBlockEmpty: () => (/* binding */ isBlockEmpty),\n/* harmony export */ isConvoSeen: () => (/* binding */ isConvoSeen),\n/* harmony export */ isEmail: () => (/* binding */ isEmail),\n/* harmony export */ isEmptyBlock: () => (/* binding */ isEmptyBlock),\n/* harmony export */ isEmptyMessage: () => (/* binding */ isEmptyMessage),\n/* harmony export */ isNumber: () => (/* binding */ isNumber),\n/* harmony export */ isPhone: () => (/* binding */ isPhone),\n/* harmony export */ isURL: () => (/* binding */ isURL),\n/* harmony export */ isUserBanned: () => (/* binding */ isUserBanned),\n/* harmony export */ js2css: () => (/* binding */ js2css),\n/* harmony export */ last: () => (/* binding */ last),\n/* harmony export */ map: () => (/* binding */ map),\n/* harmony export */ merge: () => (/* binding */ merge),\n/* harmony export */ noop: () => (/* binding */ noop),\n/* harmony export */ norm: () => (/* binding */ norm),\n/* harmony export */ offsetToMin: () => (/* binding */ offsetToMin),\n/* harmony export */ orderBy: () => (/* binding */ orderBy),\n/* harmony export */ orderByF: () => (/* binding */ orderByF),\n/* harmony export */ parseJSON: () => (/* binding */ parseJSON),\n/* harmony export */ pipeExtracts: () => (/* binding */ pipeExtracts),\n/* harmony export */ preloadImg: () => (/* binding */ preloadImg),\n/* harmony export */ preloadWebfonts: () => (/* binding */ preloadWebfonts),\n/* harmony export */ randomString: () => (/* binding */ randomString),\n/* harmony export */ replaceAll: () => (/* binding */ replaceAll),\n/* harmony export */ replaceCssVariable: () => (/* binding */ replaceCssVariable),\n/* harmony export */ replaceCssVariablePlugin: () => (/* binding */ replaceCssVariablePlugin),\n/* harmony export */ requestAnimationFrame: () => (/* binding */ requestAnimationFrame),\n/* harmony export */ rgbToHsl: () => (/* binding */ rgbToHsl),\n/* harmony export */ sameDay: () => (/* binding */ sameDay),\n/* harmony export */ scrollIntoViewIfNeeded: () => (/* binding */ scrollIntoViewIfNeeded),\n/* harmony export */ setCss: () => (/* binding */ setCss),\n/* harmony export */ setInterval: () => (/* binding */ setInterval),\n/* harmony export */ setTimeout: () => (/* binding */ setTimeout),\n/* harmony export */ setUserAttr: () => (/* binding */ setUserAttr),\n/* harmony export */ shortTime: () => (/* binding */ shortTime),\n/* harmony export */ size: () => (/* binding */ size),\n/* harmony export */ sleep: () => (/* binding */ sleep),\n/* harmony export */ startsWith: () => (/* binding */ startsWith),\n/* harmony export */ stringify: () => (/* binding */ stringify),\n/* harmony export */ throttle: () => (/* binding */ throttle),\n/* harmony export */ tokenize: () => (/* binding */ tokenize),\n/* harmony export */ trim: () => (/* binding */ trim),\n/* harmony export */ trimStart: () => (/* binding */ trimStart),\n/* harmony export */ unicodeToAscii: () => (/* binding */ unicodeToAscii),\n/* harmony export */ unixSec: () => (/* binding */ unixSec),\n/* harmony export */ usersOfConvo: () => (/* binding */ usersOfConvo)\n/* harmony export */ });\nvar op = __webpack_require__(/*! ./op.js */ \"./src/util/op.js\");\nconst ajax = __webpack_require__(/*! @subiz/ajax/src/ajax.js */ \"./node_modules/@subiz/ajax/src/ajax.js\");\nfunction rgbToHsl(r, g, b) {\n ;\n r /= 255, g /= 255, b /= 255;\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return [h, s, l];\n}\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return [r * 255, g * 255, b * 255];\n}\nfunction extractEmojis(text) {\n var out = [];\n for (var i = 0; i < text.length; i++) {\n for (var e = 0; e < emojis.length; e++) {\n if (text.indexOf(emojis[e], i) !== i) continue;\n out.push({\n index: i,\n length: emojis[e].length\n });\n i += emojis[e].length - 1;\n break;\n }\n }\n return out;\n}\nfunction extractLinks(text) {\n text = text || '';\n var reg = /(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z()]{2,6}\\b([-a-zA-Z0-9@:%_\\+.,~#?&//=]*)/gim;\n var out = [];\n var match;\n while (match = reg.exec(text)) {\n const MINIMUM_URL_CHARS = 5;\n if (reg.lastIndex - match.index > MINIMUM_URL_CHARS + 1) {\n out.push({\n index: match.index,\n length: reg.lastIndex - match.index\n });\n }\n }\n return out;\n}\nfunction extractEmails(text) {\n text = text || '';\n var reg = /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/gim;\n var out = [];\n var match;\n while (match = reg.exec(text)) {\n out.push({\n index: match.index,\n length: reg.lastIndex - match.index\n });\n }\n return out;\n}\nfunction extractPhones(msg) {\n msg = msg || '';\n var fgmsg = '';\n var realchmap = {};\n for (var i = 0; i < msg.length; i++) {\n var ch = msg.charAt(i);\n if (ch !== '.' && ch !== '-' && ch !== ' ') {\n fgmsg += ch;\n realchmap[fgmsg.length - 1] = i;\n continue;\n }\n var prevCh = i > 0 ? msg.charAt(i - 1) : '-';\n var nextCh = i < msg.length - 1 ? msg.charAt(i + 1) : '-';\n if ('0123456789'.indexOf(prevCh) !== -1 && '0123456789'.indexOf(nextCh) !== -1) continue;\n fgmsg += ch;\n realchmap[fgmsg.length - 1] = i;\n }\n var reg = /([0-9]{8,13})/gim;\n var out = [];\n var match;\n while (match = reg.exec(fgmsg)) {\n out.push({\n index: realchmap[match.index],\n length: realchmap[reg.lastIndex - 1] - realchmap[match.index] + 1\n });\n }\n return out;\n}\nfunction extract(text, extractor, type) {\n if (!text) return [];\n var out = [];\n var lastindex = 0;\n var tags = extractor(text);\n if (size(tags) === 0) return [{\n type: 'text',\n text\n }];\n each(tags, tag => {\n out.push({\n type: 'text',\n text: text.substr(lastindex, tag.index - lastindex)\n });\n out.push({\n type,\n text: text.substr(tag.index, tag.length)\n });\n lastindex = tag.index + tag.length;\n });\n var lastTag = last(tags);\n out.push({\n type: 'text',\n text: text.substr(lastTag.index + lastTag.length, text.length - lastTag.index + lastTag.length)\n });\n return filter(out, o => o.text !== '');\n}\nfunction pipeExtracts(text, extractors) {\n var out = [];\n if (size(extractors) === 0) return [{\n type: 'text',\n text\n }];\n var ext = extractors.shift();\n var tags = extract(text, ext, ext.type);\n each(tags, t => {\n if (t.type !== 'text') return out.push(t);\n out = out.concat(pipeExtracts(t.text, extractors.slice()));\n });\n return out;\n}\nfunction extractText(text) {\n var link = extractLinks;\n link.type = 'link';\n var email = extractEmails;\n email.type = 'email';\n var phone = extractPhones;\n phone.type = 'phone';\n var emoji = extractEmojis;\n emoji.type = 'emoji';\n return pipeExtracts(text, [link, email, phone, emoji]);\n}\nfunction parseJSON(str) {\n try {\n return parse(str);\n } catch (e) {}\n}\nvar f = document.createElement('iframe');\nf.style.display = 'none';\ndocument.documentElement.appendChild(f);\nconst tempElement = f.contentDocument.createElement('div');\nf.contentDocument.body.appendChild(tempElement);\nvar stringify = f.contentWindow.JSON.stringify;\nvar parse = f.contentWindow.JSON.parse;\nvar Date = f.contentWindow.Date;\nvar requestAnimationFrame = f.contentWindow.requestAnimationFrame;\nvar setTimeout = f.contentWindow.setTimeout.bind(f.contentWindow);\nvar setInterval = f.contentWindow.setInterval.bind(f.contentWindow);\nvar clearInterval = f.contentWindow.clearInterval.bind(f.contentWindow);\nvar clearTimeout = f.contentWindow.clearTimeout.bind(f.contentWindow);\nvar XMLHttpRequest = f.contentWindow.XMLHttpRequest;\nconst _originalOpen = XMLHttpRequest.prototype.open;\nconst _originalSend = XMLHttpRequest.prototype.send;\nXMLHttpRequest.prototype.open = function (method, url, async, user, password) {\n this._url = url;\n return _originalOpen.apply(this, arguments);\n};\nXMLHttpRequest.prototype.send = function (body) {\n let old = this.onreadystatechange;\n this.onreadystatechange = function (a, b, c) {\n if (this.readyState != 4) return;\n if (this.status >= 400 || this.status == 0) {\n if (typeof sbz_logs == 'object') sbz_logs.push({\n type: 'xhrfailed',\n url: this._url,\n status: this.status,\n response: this.responseText\n });\n }\n if (typeof old == 'function') old(a, b, c);\n };\n return _originalSend.apply(this, arguments);\n};\najax.env.XMLHttpRequest = XMLHttpRequest;\nfunction convoOfEv(ev) {\n if (!ev) return '';\n return op.get(ev, 'data.conversation.id', op.get(ev, 'data.message.conversation_id'));\n}\nfunction convoToEv(convoid, ev) {\n if (!ev) return '';\n switch (ev.type) {\n case 'message_sent':\n case 'message_updated':\n case 'message_deleted':\n case 'message_pong':\n return op.set(ev, 'data.message.conversation_id', convoid);\n case 'ticket_updated':\n return op.set(ev, 'data.ticket.conversation_id', convoid);\n default:\n return op.set(ev, 'data.conversation.id', convoid);\n }\n}\nfunction isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\nfunction merge(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, {\n [key]: {}\n });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, {\n [key]: source[key]\n });\n }\n }\n }\n return merge(target, ...sources);\n}\nfunction cloneDeep(p) {\n if (p !== Object(p)) return p;\n var s = stringify(p);\n if (s === undefined) return;\n return parse(s);\n}\nfunction randomString(len) {\n var str = '';\n if (!len || len < 1) len = 10;\n var asciiKey;\n for (var i = 0; i < len; i++) {\n asciiKey = Math.floor(Math.random() * 25 + 97);\n str += String.fromCharCode(asciiKey);\n }\n return str;\n}\nfunction filter(collection, predicate) {\n if (!collection) return [];\n if (!predicate) return collection;\n var out = [];\n if (typeof collection === 'object') {\n var keys = Object.keys(collection);\n for (let i = 0; i < keys.length; i++) {\n var k = keys[i];\n if (predicate(collection[k], k)) out.push(collection[k]);\n }\n return out;\n }\n if (Array.isArray(collection)) {\n for (let i = 0; i < collection.length; i++) {\n if (predicate(collection[i], i)) out.push(collection[i]);\n }\n return out;\n }\n return out;\n}\nfunction includes(collection, value) {\n if (!collection) return false;\n var isString = typeof collection === 'string' || collection instanceof String;\n if (Array.isArray(collection) || isString) return collection.includes(value);\n return false;\n}\nfunction map(collection, predicate) {\n if (!collection) return [];\n if (!predicate) predicate = i => i;\n var out = [];\n if (typeof collection === 'object') {\n var keys = Object.keys(collection);\n for (let i = 0; i < keys.length; i++) {\n var k = keys[i];\n out.push(predicate(collection[k], k));\n }\n return out;\n }\n if (Array.isArray(collection)) {\n for (let i = 0; i < collection.length; i++) {\n out.push(predicate(collection[i], i));\n }\n return out;\n }\n return out;\n}\nfunction each(collection, predicate) {\n return map(collection, predicate);\n}\nfunction usersOfConvo(convo) {\n if (!convo) return [];\n return map(filter(convo.members, m => m.type === 'user'), m => m.id);\n}\nfunction isConvoSeen(convo, memberid) {\n if (convo.state === 'ended') return true;\n let lastmsgsent = convo.last_message_sent;\n if (!lastmsgsent) return true;\n if (op.get(lastmsgsent, 'by.id') === memberid) return true;\n let mem = find(convo.members, m => m.id === memberid);\n if (!mem) return true;\n return getMs(lastmsgsent.created) < getMs(mem.seen_at);\n}\nfunction agentsOfConvo(convo, botIncluded) {\n if (!convo) return [];\n return map(filter(convo.members, m => {\n if (botIncluded) return m.type === 'agent' || m.type === 'bot';\n return m.type === 'agent';\n }), m => m.id);\n}\nfunction startsWith(s, i) {\n return ((s || '') + '').startsWith(i);\n}\nfunction size(o) {\n if (!o) return 0;\n if (o.length !== undefined) return o.length;\n return Object.keys(o).length;\n}\nfunction replaceAll(str, a, b) {\n return (str || '').split(a).join(b);\n}\nfunction trim(s, suffix) {\n return ((s || '') + '').replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n}\nfunction trimStart(s, prefix) {\n s = (s || '') + '';\n while (s.charAt(0) === prefix) s = s.substr(1);\n return s;\n}\nfunction throttle(func, wait, options) {\n var context, args, result;\n var timeout = null;\n var previous = 0;\n if (!options) options = {};\n var later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n return function () {\n var now = new Date().getTime();\n if (!previous && options.leading === false) previous = now;\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\nfunction find(collection, f) {\n if (!collection) return undefined;\n return collection[findIndex(collection, f)];\n}\nfunction findIndex(collection, f) {\n if (!collection) return -1;\n if (!f) return -1;\n if (typeof collection === 'object') {\n var keys = Object.keys(collection);\n for (let i = 0; i < keys.length; i++) {\n var k = keys[i];\n if (f(collection[k], k)) return k;\n }\n }\n if (Array.isArray(collection)) {\n for (let i = 0; i < collection.length; i++) {\n if (f(collection[i], i)) return i;\n }\n return -1;\n }\n return -1;\n}\nfunction orderBy(a, k, d) {\n var clone = [];\n each(a, v => clone.push(v));\n clone.sort((i, j) => {\n if (i[k] === j[k]) return 0;\n var r = i[k] < j[k] ? -1 : 1;\n return d === 'desc' ? -r : r;\n });\n return clone;\n}\nfunction orderByF(a, f, d) {\n var clone = [];\n each(a, v => clone.push(v));\n clone.sort((i, j) => {\n let ik = f(i);\n let jk = f(j);\n if (ik === jk) return 0;\n var r = ik < jk ? -1 : 1;\n return d === 'desc' ? -r : r;\n });\n return clone;\n}\nfunction isPhone(phone) {\n var re = /^[\\+]?[(]?[0-9]{2,3}[)]?[-\\s\\.]?[0-9]{3,4}[-\\s\\.]?[0-9]{4,6}$/im;\n return re.test(String(phone));\n}\nfunction isURL(url) {\n var re = /[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)/gi;\n return re.test(String(url).toLowerCase());\n}\nfunction isNumber(num) {\n var re = /^\\d+$/;\n return re.test(String(num));\n}\nfunction isEmail(email) {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n}\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\nfunction getAgentDisplayName(account, agent) {\n return op.get(agent, 'fullname') || op.get(agent, 'email') || op.get(account, 'name') || 'Agent';\n}\nfunction isUserBanned(user) {\n return getUserAttr(user, 'is_ban', 'boolean');\n}\nfunction setUserAttr(user, attr) {\n if (!user) return;\n if (!op.get(attr, 'key')) return;\n user.attributes = user.attributes || [];\n var index = findIndex(user.attributes, a => a && a.key === attr.key);\n if (index === -1) {\n user.attributes.push(attr);\n return;\n }\n user.attributes[index] = attr;\n}\nfunction getUserAttr(user, key, type) {\n if (!user || !user.attributes) return;\n let value;\n each(user.attributes, attr => {\n if (!attr || attr.key !== key) return;\n if (type === 'datetime') value = attr.datetime;\n if (type === 'boolean') value = attr.boolean;\n if (type === 'number') value = attr.number;\n if (type === 'text') value = attr.text;\n if (type === 'list') {\n value = [attr.text].concat(attr.other_values);\n }\n });\n return value;\n}\nfunction norm(s) {\n s = s || '';\n return s.trim().toLowerCase();\n}\nfunction noop() {}\nfunction norm2(val) {\n if (typeof val === 'string' || val instanceof String) val = val.trim().replace(/;+$/, '');\n return val;\n}\nfunction replaceCssVariablePlugin(css, setting) {\n var tokens = [css];\n let spacer = setting.spacer || 10;\n setting = Object.assign({}, setting, {\n spacer: spacer + 'px',\n spacer0: spacer / 2 + 'px',\n spacer2: 2 * spacer + 'px',\n spacer3: 3 * spacer + 'px'\n });\n tokens = tokenize(tokens, \"'@font_family'\");\n tokens = tokenize(tokens, \"'@font_size'\");\n tokens = tokenize(tokens, \"'@text_color'\");\n tokens = tokenize(tokens, \"'@faded_text_color'\");\n tokens = tokenize(tokens, \"'@primary_color'\");\n tokens = tokenize(tokens, \"'@background'\");\n tokens = tokenize(tokens, \"'@spacer'\");\n tokens = tokenize(tokens, \"'@spacer0'\");\n tokens = tokenize(tokens, \"'@spacer2'\");\n tokens = tokenize(tokens, \"'@spacer3'\");\n var primary_color = op.get(setting, 'primary_color') || op.get(DEFVAL, 'primary_color');\n let parseColor = parseCssColor(primary_color);\n if (!parseColor) parseColor = {\n red: 238,\n blue: 238,\n green: 238\n };\n let hue = rgbToHsl(parseColor.red, parseColor.green, parseColor.blue)[0];\n let [r, g, b] = hslToRgb(hue, 0.25, 0.95);\n DEFVAL.primary_color_faded = `rgb(${r},${g},${b})`;\n var ret = [];\n for (var i = 0; i < tokens.length; i++) {\n var item = tokens[i];\n if (typeof item === 'string') {\n ret.push(item);\n continue;\n }\n var path = item.type.substr(2, item.type.length - 3);\n var val = op.get(setting, path) || op.get(DEFVAL, path) || '';\n ret.push(val);\n }\n return ret.join('');\n}\nfunction replaceCssVariable(css, setting) {\n var tokens = [css];\n tokens = tokenize(tokens, \"'@primary_color'\");\n tokens = tokenize(tokens, \"'@primary_color_faded'\");\n tokens = tokenize(tokens, '@esc-primary-color-esc');\n tokens = tokenize(tokens, \"'@secondary_color'\");\n tokens = tokenize(tokens, \"'@background'\");\n tokens = tokenize(tokens, \"'@text_color'\");\n tokens = tokenize(tokens, \"'@width'\");\n tokens = tokenize(tokens, \"'@height'\");\n tokens = tokenize(tokens, \"'@desktop_button.width'\");\n tokens = tokenize(tokens, \"'@desktop_button.height'\");\n tokens = tokenize(tokens, \"'@desktop_button.background'\");\n tokens = tokenize(tokens, \"'@desktop_button.border_radius'\");\n tokens = tokenize(tokens, \"'@desktop_button.margin_x'\");\n tokens = tokenize(tokens, \"'@desktop_button.margin_y'\");\n tokens = tokenize(tokens, \"'@desktop_widget_max_height'\");\n tokens = tokenize(tokens, \"'@preview_max_width'\");\n tokens = tokenize(tokens, \"'@mobile_button.width'\");\n tokens = tokenize(tokens, \"'@mobile_button.height'\");\n tokens = tokenize(tokens, \"'@mobile_button.background'\");\n tokens = tokenize(tokens, \"'@mobile_button.border_radius'\");\n tokens = tokenize(tokens, \"'@mobile_button.margin_x'\");\n tokens = tokenize(tokens, \"'@mobile_button.margin_y'\");\n tokens = tokenize(tokens, \"'@widget_position'\");\n tokens = tokenize(tokens, \"'@z_index'\");\n tokens = tokenize(tokens, \"'@z_index_2'\");\n tokens = tokenize(tokens, \"'@z_index_3'\");\n tokens = tokenize(tokens, \"'@z_index_4'\");\n tokens = tokenize(tokens, \"'@z_index_5'\");\n tokens = tokenize(tokens, \"'@form_background_color'\");\n tokens = tokenize(tokens, \"'@form_header_font_size'\");\n tokens = tokenize(tokens, \"'@form_header_font_family'\");\n tokens = tokenize(tokens, \"'@form_desc_font_size'\");\n tokens = tokenize(tokens, \"'@form_desc_font_family'\");\n tokens = tokenize(tokens, \"'@form_input_label_font_size'\");\n tokens = tokenize(tokens, \"'@form_input_label_font_family'\");\n var primary_color = op.get(setting, 'primary_color') || op.get(DEFVAL, 'primary_color');\n let parseColor = parseCssColor(primary_color);\n if (!parseColor) parseColor = {\n red: 238,\n blue: 238,\n green: 238\n };\n let hue = rgbToHsl(parseColor.red, parseColor.green, parseColor.blue)[0];\n let [r, g, b] = hslToRgb(hue, 0.25, 0.95);\n DEFVAL.primary_color_faded = `rgb(${r},${g},${b})`;\n var ret = [];\n for (var i = 0; i < tokens.length; i++) {\n var item = tokens[i];\n if (typeof item === 'string') {\n ret.push(item);\n continue;\n }\n if (item.type === '@esc-primary-color-esc') {\n var val = op.get(setting, 'primary_color') || op.get(DEFVAL, 'primary_color');\n ret.push(encodeURIComponent(norm2(val)));\n continue;\n }\n if (item.type === \"'@z_index_2'\") {\n var val = op.get(setting, 'z_index') || op.get(DEFVAL, 'z_index');\n ret.push(val + 2);\n continue;\n }\n if (item.type === \"'@z_index_3'\") {\n var val = op.get(setting, 'z_index') || op.get(DEFVAL, 'z_index');\n ret.push(val + 3);\n continue;\n }\n if (item.type === \"'@z_index_4'\") {\n var val = op.get(setting, 'z_index') || op.get(DEFVAL, 'z_index');\n ret.push(val + 4);\n continue;\n }\n if (item.type === \"'@z_index_5'\") {\n var val = op.get(setting, 'z_index') || op.get(DEFVAL, 'z_index');\n ret.push(val + 5);\n continue;\n }\n var path = item.type.substr(2, item.type.length - 3);\n var val = op.get(setting, path) || op.get(DEFVAL, path) || '';\n val = norm2(val);\n if (['mobile_button.width', 'mobile_button.height', 'mobile_button.margin_x', 'mobile_button.margin_y', 'desktop_button.width', 'desktop_button.height', 'desktop_button.margin_x', 'desktop_button.margin_y', 'form_header_font_size', 'form_desc_font_size', 'form_input_label_font_size', 'width', 'height'].includes(path)) {\n val += 'px';\n }\n if (path === 'height' && op.get(setting, 'window_mode') === 'full') {\n ret.push('100%');\n continue;\n }\n ret.push(val);\n }\n return ret.join('');\n}\nfunction tokenize(arr, token) {\n if (!arr || !arr.length) return [];\n var out = [];\n for (let i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (typeof item !== 'string') {\n out.push(item);\n continue;\n }\n var ts = item.split(token);\n for (let i = 0; i < ts.length; i++) {\n out.push(ts[i]);\n out.push({\n type: token\n });\n }\n out.pop();\n }\n return out;\n}\nfunction setCss(id, $css, css) {\n css = replaceAll(css, '#sbz92', '#' + id);\n if ($css.styleSheet) {\n $css.styleSheet.cssText = css;\n } else {\n $css.innerHTML = '';\n $css.appendChild(document.createTextNode(css));\n }\n}\nconst DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL = 'https://vcdn.subiz-cdn.com/file/bubble_11.svg?v=5';\nconst DEFVAL = {\n primary_color: '#0265FF',\n secondary_color: '#555555',\n background: 'linear-gradient(280.16deg, #0053d3 22.03%, #0265ff 78.2%)',\n text_color: 'white',\n width: 375,\n height: 705,\n window_mode: 'mini',\n desktop_button: {\n width: 0.3,\n height: 0.3,\n border_radius: '100%',\n background_mask_url: DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL,\n margin_x: 0.3,\n margin_y: 0.3\n },\n mobile_button: {\n width: 0.3,\n height: 0.3,\n border_radius: '100%',\n background_mask_url: DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL,\n margin_x: 0.3,\n margin_y: 0.3\n },\n widget_position: 'fixed',\n z_index: 2000000000\n};\nfunction js2css(js, onlyprops, variables) {\n var newjs = {};\n for (var prop in js) {\n if (!js.hasOwnProperty(prop)) continue;\n if (onlyprops && onlyprops.length > 0 && onlyprops.indexOf(prop) === -1) continue;\n if (typeof js[prop] === 'string') newjs[prop] = trim(js[prop]);else newjs[prop] = js[prop];\n }\n js = newjs;\n let style = '';\n for (var prop in js) {\n if (!js.hasOwnProperty(prop)) continue;\n var filter = '';\n if (js.blur) filter += 'blur(' + js.blur + ') ';\n if (js.grayscale) filter += 'grayscale(' + js + ') ';\n if (filter) style += 'filter: ' + filter + '!important;';\n if (js.rotate !== undefined) style += 'transform:rotate(' + js.rotate + ') !important;';\n if (js[prop] !== undefined) {\n let propval = js[prop] + '';\n map(variables, (value, name) => {\n if (propval.indexOf(name) !== -1) propval = replaceAll(propval, name, value);\n });\n style += replaceAll(prop, '_', '-') + ':' + propval + ' !important;';\n if (prop === 'color') style += '-webkit-text-fill-color: ' + propval + ' !important;';\n }\n }\n return style;\n}\nfunction browserName() {\n var isOpera = !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;\n var isFirefox = typeof InstallTrigger !== 'undefined';\n var isSafari = /constructor/i.test(window.HTMLElement) || function (p) {\n return p.toString() === '[object SafariRemoteNotification]';\n }(!window['safari'] || typeof safari !== 'undefined' && window['safari'].pushNotification);\n var isIE = false || !!document.documentMode;\n var isEdge = !isIE && !!window.StyleMedia;\n var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);\n if (!isChrome) isChrome = navigator.userAgent.indexOf('Chrome');\n var isEdgeChromium = isChrome && navigator.userAgent.indexOf('Edg') != -1;\n var isBlink = (isChrome || isOpera) && !!window.CSS;\n if (isOpera) return 'opera';\n if (isFirefox) return 'firefox';\n if (isIE) return 'ie';\n if (isEdge || isEdgeChromium) return 'edge';\n if (isChrome) return 'chrome';\n if (isBlink) return 'blink';\n return 'unknown';\n}\nfunction check_frequently(freq, lastrun, store) {\n if (!lastrun) return true;\n if (op.get(freq, 'once_per_user')) return false;\n if (op.get(freq, 'once_per_session')) {\n if (sameDay(lastrun.created, Date.now())) return false;\n }\n if (op.get(freq, 'interval_sec')) {\n var sec = op.get(freq, 'interval_sec');\n if (sec > (Date.now() - lastrun.created) / 1000) return false;\n }\n return true;\n}\nfunction checkRunConditions(freq, conds, lastrun, store) {\n var acc = store.matchAccount() || {};\n var location = store.matchLocation() || {};\n if (!check_frequently(freq, lastrun, store)) return false;\n for (let i = 0; i < size(conds); i++) {\n var cond = conds[i];\n switch (cond.key) {\n case 'url':\n if (!checkUrlCondition(cond, window.location.href)) return false;\n break;\n case 'url_path':\n let excludePaths = filter(cond.exclude_url_paths, url => norm(url));\n if (size(excludePaths) > 0) {\n let urlObj = new URL(window.location.href);\n let pathname = urlObj.pathname || '';\n if (typeof pathname === 'string' && pathname.endsWith('/')) {\n pathname = pathname.substring(0, pathname.length - 1);\n }\n let found = find(excludePaths, url => {\n if (typeof url === 'string' && url.endsWith('/')) {\n url = url.substring(0, url.length - 1);\n }\n return pathname === url;\n });\n if (found) return false;\n }\n let paths = filter(cond.url_paths, url => norm(url));\n if (size(paths) > 0) {\n let urlObj = new URL(window.location.href);\n let pathname = urlObj.pathname || '';\n if (typeof pathname === 'string' && pathname.endsWith('/')) {\n pathname = pathname.substring(0, pathname.length - 1);\n }\n let found = find(paths, url => {\n if (typeof url === 'string' && url.endsWith('/')) {\n url = url.substring(0, url.length - 1);\n }\n return pathname === url;\n });\n if (!found) return false;\n }\n break;\n case 'browser':\n if (size(cond.browsers) > 0) {\n var browsername = browserName();\n if (!find(cond.browsers, b => norm(b) === norm(browsername))) return false;\n }\n break;\n case 'location':\n if (size(cond.exclude_locations) > 0) {\n let found = find(cond.exclude_locations, loc => {\n if (loc.city_name && loc.country_code) {\n if (loc.city_name === location.city_name && loc.country_code === location.country_code) return true;\n }\n if (loc.city_name && !loc.country_code) {\n if (loc.city_name === location.city_name) return true;\n }\n if (!loc.city_name && loc.country_code) {\n if (loc.country_code === location.country_code) return true;\n }\n });\n if (found) return false;\n }\n if (size(cond.locations) > 0) {\n let found = find(cond.locations, loc => {\n if (loc.city_name && loc.country_code) {\n if (loc.city_name === location.city_name && loc.country_code === location.country_code) return true;\n }\n if (loc.city_name && !loc.country_code) {\n if (loc.city_name === location.city_name) return true;\n }\n if (!loc.city_name && loc.country_code) {\n if (loc.country_code === location.country_code) return true;\n }\n });\n if (!found) return false;\n }\n break;\n case 'returning_visitor':\n if (cond.returning_visitor) {\n if (store.new_visitor) return false;\n }\n if (!cond.returning_visitor) {\n if (!store.new_visitor) return false;\n }\n break;\n case 'user_is_a_contact':\n let attributes = op.get(store.matchUser(), 'attributes', []);\n let emailAttr = find(attributes, att => att.key === 'emails' && attr.text && att.key === 'related_email' && attr.text);\n let phoneAttr = find(attributes, att => att.key === 'phones' && attr.text && att.key === 'related_phone' && attr.text);\n let hasContact = emailAttr || phoneAttr;\n if (cond.user_is_a_contact) {\n if (!hasContact) return false;\n }\n if (!cond.user_is_a_contact) {\n if (hasContact) return false;\n }\n break;\n case 'device_type':\n if (size(cond.device_types) > 0) {\n let type = 'desktop';\n if (store.isMobile()) type = 'mobile';\n if (store.isTablet()) type = 'tablet';\n if (!find(cond.device_types, t => norm(t) === norm(type))) return false;\n }\n break;\n case 'referer':\n if (size(cond.exclude_referers) > 0) {\n let found = find(cond.exclude_referers, ref => {\n return norm(document.referrer).indexOf(norm(ref)) > -1;\n });\n if (found) return false;\n }\n if (size(cond.urls) > 0) {\n let found = find(cond.referers, ref => {\n return norm(document.referrer).indexOf(norm(ref)) > -1;\n });\n if (!found) return false;\n }\n break;\n case 'source':\n if (size(cond.sources) > 0) {\n let source = store.matchTrafficSource() || 'direct';\n if (!find(cond.sources, src => norm(src) === norm(source))) return false;\n }\n break;\n case 'user_attribute':\n case 'user':\n let userprop;\n let attrs = op.get(store.matchUser(), 'attributes', []);\n let operator = op.get(cond, 'user.operator');\n each(attrs, attr => {\n if (!attr || attr.key !== op.get(cond, 'user.key')) return;\n userprop = attr.datetime || attr.boolean || attr.number || attr.text || attr.list;\n });\n let valid = true;\n switch (operator) {\n case 'cons':\n let vals = parseJSON(cond.value) || [];\n if (size(vals) === 0) return false;\n let found = find(vals, val => {\n return norm(userprop).indexOf(norm(val)) > -1;\n });\n valid = !!found;\n break;\n case 'notEmpty':\n valid = !!userprop;\n break;\n case 'empty':\n valid = !userprop;\n break;\n case 'true':\n valid = userprop === true || userprop === 'true';\n break;\n case 'false':\n valid = !userprop || userprop === false || userprop === 'false';\n break;\n }\n if (!valid) return false;\n break;\n case 'timming':\n if (cond.business_hour === 'in' && !acc.is_in_business_hour) return false;\n if (cond.business_hour === 'notIn' && acc.is_in_business_hour) return false;\n if (size(cond.days_of_week) > 0) {\n let found = find(cond.days_of_week, day => {\n return norm(getDayName(new Date().getDay())) === norm(day);\n });\n if (!found) return false;\n }\n if (size(cond.minutes_of_day) > 0 && size(cond.minutes_of_day) % 2 === 0) {\n var now = new Date();\n var minuteofday = now.getMinutes() + now.getHours() * 60;\n let found = false;\n for (let i = 0; i < cond.minutes_of_day.length; i += 2) {\n if (cond.minutes_of_day[i] <= minuteofday && minuteofday <= cond.minutes_of_day[i + 1]) {\n found = true;\n break;\n }\n if (cond.minutes_of_day[i] > cond.minutes_of_day[i + 1]) {\n if (minuteofday >= cond.minutes_of_day[i] || minuteofday <= cond.minutes_of_day[i + 1]) {\n found = true;\n break;\n }\n }\n }\n if (!found) return false;\n }\n break;\n case 'offline':\n if (!acc.is_online !== !!cond.offline) return false;\n }\n }\n return true;\n}\nfunction getDayName(dayOfWeek) {\n let days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[dayOfWeek];\n}\nlet loadedFonts = {};\nfunction preloadWebfonts(fonts, done) {\n for (var i = 0; i < fonts.length; i++) {\n let font = fonts[i];\n if (!font) continue;\n if (loadedFonts[font]) continue;\n loadedFonts[font] = true;\n for (var w = 0; w < 2; w++) {\n let weight = [400, 500][w];\n let node = document.createElement('div');\n node.innerHTML = '@!-/#Chào mỪng1';\n node.style.position = 'absolute';\n node.style.display = 'block';\n node.style.opacity = '0.1';\n node.style.color = 'transparent';\n node.style.fontSize = '20px';\n node.style.height = '0px';\n node.style.top = '0px';\n node.style.width = '0px';\n node.style.fontWeight = weight;\n node.setAttribute('subiz-preload', font + ':' + weight);\n document.body.appendChild(node);\n node.style.fontFamily = font;\n setTimeout(() => node.remove(), 3000);\n }\n }\n}\nfunction preloadImg(src, cb) {\n if (!cb) cb = () => {};\n if (!src) {\n cb();\n return Promise.resolve(true);\n }\n let image = new Image();\n src = replaceFileUrl(src);\n image.src = src;\n return new Promise(rs => {\n image.onload = () => {\n cb();\n rs();\n };\n });\n}\nfunction offsetToMin(offset) {\n if (!offset) return 0;\n if (offset.length <= 2) offset += ':00';\n let sp = offset.split(':');\n if (sp.length !== 2) return 0;\n let hour = parseInt(sp[0]);\n if (hour < 0 || hour > 23) return 0;\n let min = parseInt(sp[1]);\n if (min < 0 || min > 59) return 0;\n return hour * 60 + min;\n}\nfunction diffDay(a, b, tzoffset) {\n var offsetmin = -new Date().getTimezoneOffset();\n if (tzoffset) offsetmin = offsetToMin(tzoffset);\n var ams = new Date(a).getTime();\n var bms = new Date(b).getTime();\n var aunixDay = Math.ceil((ams / 60 / 1000 + offsetmin) / 60 / 24);\n var bunixDay = Math.ceil((bms / 60 / 1000 + offsetmin) / 60 / 24);\n return Math.abs(aunixDay - bunixDay);\n}\nfunction diffYear(a, b, tzoffset) {\n var machineoffsetmin = -new Date().getTimezoneOffset();\n var offsetmin = -new Date().getTimezoneOffset();\n if (tzoffset) offsetmin = offsetToMin(tzoffset);\n var ams = new Date(a).getTime();\n var bms = new Date(b).getTime();\n var amsInZone = ams + (offsetmin - machineoffsetmin) * 60 * 1000;\n var bmsInZone = bms + (offsetmin - machineoffsetmin) * 60 * 1000;\n return Math.abs(new Date(amsInZone).getYear() - new Date(bmsInZone).getYear());\n}\nfunction sameDay(a, b, tzoffset) {\n return diffDay(a, b, tzoffset) === 0;\n}\nfunction shortTime(utcms, tzoffset, now, forcelocale) {\n var machineoffsetmin = -new Date().getTimezoneOffset();\n var offsetmin = machineoffsetmin;\n if (tzoffset) offsetmin = offsetToMin(tzoffset);\n var time = new Date(getMs(utcms));\n let tztime = new Date(time);\n tztime.setMinutes(time.getMinutes() + offsetmin - machineoffsetmin);\n if (!now) now = new Date();\n let tzhour = tztime.getHours();\n let tzmin = tztime.getMinutes();\n let locale = op.get(navigator, 'languages.0', 'en-US');\n if (forcelocale) locale = forcelocale;\n let tzdddd = tztime.toLocaleDateString(locale, {\n weekday: 'long'\n });\n let tzyear = tztime.getFullYear();\n let tzmonth = tztime.getMonth() + 1;\n let tzmonthname = tztime.toLocaleDateString(locale, {\n month: 'long'\n });\n let tzdate = tztime.getDate();\n if (tzhour < 10) tzhour = '0' + tzhour;\n if (tzmin < 10) tzmin = '0' + tzmin;\n if (sameDay(time, now, tzoffset)) return tzhour + ':' + tzmin;\n if (diffDay(time, now, tzoffset) <= 5) return tzdddd + ', ' + tzhour + ':' + tzmin;\n if (diffYear(time, now, tzoffset) === 0) {\n if (locale === 'vi-VN') {\n return tzdate + ' ' + tzmonthname + ', ' + tzhour + ':' + tzmin;\n }\n return tzmonthname + ' ' + tzdate + ', ' + tzhour + ':' + tzmin;\n }\n if (locale === 'vi-VN') {\n return tzdate + '/' + tzmonth + '/' + tzyear + ', ' + tzhour + ':' + tzmin;\n }\n return tzyear + '/' + tzmonth + '/' + tzdate + ', ' + tzhour + ':' + tzmin;\n}\nfunction unixSec(t) {\n return Math.floor(getMs(t) / 1000);\n}\nfunction getMs(t) {\n if (!t) t = 0;else if (typeof t !== 'number') t = new Date(t).getTime();\n if (t > 1e18) {\n return Math.floor(t / 1e6);\n }\n if (t > 1e15) {\n return Math.floor(t / 1e3);\n }\n if (t > 1e12) {\n return t;\n }\n return t * 1e3;\n}\nfunction detectLang() {\n let urllang = getUrlParameter('sbz_locale');\n let doclang = document.getElementsByTagName('html')[0].getAttribute('xml:lang') || document.getElementsByTagName('html')[0].getAttribute('lang');\n let browserlang = navigator.language;\n return urllang || doclang || browserlang;\n}\nfunction getUrlParameter(name) {\n name = name.replace(/[\\[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\n var regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\n var results = regex.exec(location.search);\n return results === null ? '' : decodeURIComponent(results[1].replace(/\\+/g, ' '));\n}\nvar sleep = ms => new Promise(res => setTimeout(res, ms));\nfunction formatCurrency(val, currency = 'VND') {\n let currencyObj = ALL_CURRENCIES.find(cur => cur.code === currency) || {\n name: 'Dong',\n code: 'VND',\n symbol: '₫'\n };\n let prefix = '';\n let suffix = '';\n if (currency === 'VND') {\n prefix = '';\n suffix = ' ' + currencyObj.symbol;\n } else {\n prefix = currencyObj.symbol + ' ';\n suffix = '';\n }\n if (!val) return `${prefix}0${suffix}`;\n val = Math.round(val);\n return prefix + val.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,') + suffix;\n}\nfunction replaceFileUrl(src) {\n let fileurl = 'https://vcdn.subiz-cdn.com/file/';\n if (!src) return '';\n if (startsWith(src, '/')) return src;\n if (startsWith(src, 'data:')) return src;\n if (!startsWith(src, 'http://') && !startsWith(src, 'https://') && !startsWith(src, '//')) {\n src = trim(fileurl, '/') + '/' + trimStart(src, '/');\n }\n src = src.replace('https://file-subiz.com/', fileurl);\n src = src.replace('http://file-subiz.com/', fileurl);\n src = src.replace('https://file-v4.subiz.com/', fileurl);\n src = src.replace('http://file-v4.subiz.com/', fileurl);\n src = src.replace('https://filev4.subiz.com/', fileurl);\n src = src.replace('http://filev4.subiz.com/', fileurl);\n src = src.replace('https://filev4-1.subiz.com/', fileurl);\n src = src.replace('http://filev4-1.subiz.com/', fileurl);\n src = src.replace('https://file.subiz.com/', fileurl);\n src = src.replace('http://file.subiz.com/', fileurl);\n src = src.replace('https://file.mysubiz.com/', fileurl);\n src = src.replace('http://file.mysubiz.com/', fileurl);\n return src;\n}\nfunction unicodeToAscii(str) {\n str = str + '';\n str = str.replaceAll('đ', 'd').replaceAll('Đ', 'D');\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\nfunction scrollIntoViewIfNeeded($ele) {\n centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;\n var parent = $ele.parentNode;\n var parentComputedStyle = window.getComputedStyle(parent, null);\n var parentBorderTopWidth = parseInt(parentComputedStyle.getPropertyValue('border-top-width'));\n var parentBorderLeftWidth = parseInt(parentComputedStyle.getPropertyValue('border-left-width'));\n var overTop = $ele.offsetTop - parent.offsetTop < parent.scrollTop;\n var overBottom = $ele.offsetTop - parent.offsetTop + $ele.clientHeight - parentBorderTopWidth > parent.scrollTop + parent.clientHeight;\n var overLeft = $ele.offsetLeft - parent.offsetLeft < parent.scrollLeft;\n var overRight = $ele.offsetLeft - parent.offsetLeft + $ele.clientWidth - parentBorderLeftWidth > parent.scrollLeft + parent.clientWidth;\n var alignWithTop = overTop && !overBottom;\n if ((overTop || overBottom) && centerIfNeeded) {\n parent.scrollTop = $ele.offsetTop - parent.offsetTop - parent.clientHeight / 2 - parentBorderTopWidth + $ele.clientHeight / 2;\n }\n if ((overLeft || overRight) && centerIfNeeded) {\n parent.scrollLeft = $ele.offsetLeft - parent.offsetLeft - parent.clientWidth / 2 - parentBorderLeftWidth + $ele.clientWidth / 2;\n }\n if ((overTop || overBottom || overLeft || overRight) && !centerIfNeeded) {\n $ele.scrollIntoView(alignWithTop);\n }\n}\nconst ALL_CURRENCIES = [{\n code: 'USD',\n symbol: '$'\n}, {\n code: 'VND',\n symbol: '₫'\n}];\nfunction blockToText(block) {\n return _blockToText(block).trim();\n}\nfunction isBlockEmpty(block) {\n return _isBlockEmpty(block);\n}\nfunction _isBlockEmpty(block = {}) {\n if (!size(block.content)) {\n if ((block.text || '').trim()) return false;\n return true;\n }\n let result = true;\n map(block.content, content => {\n result = result && _isBlockEmpty(content);\n });\n return result;\n}\nfunction _blockToText(block) {\n if (!block || !block.type) return '';\n let out = '';\n if (block.type == 'bullet_list' || block.type == 'ordered_list') {\n map(block.content, item => {\n preifx = '\\n* ';\n if (block.type == 'ordered_list') {\n prefix = i + '\\n. ';\n }\n out += prefix + blockToText(item).trim();\n });\n return out;\n }\n if (block.type == 'heading' || block.type == 'paragraph') {\n out += '\\n';\n }\n if (block.type == '' || block.type == 'text' || block.type == 'link' || block.type == 'mention-agent' || block.type == 'dynamic-field') {\n return out + block.text;\n }\n if (block.type == 'horizontal_rule') return out + '\\n---\\n';\n if (block.type == 'emoji') {\n let code;\n if (size(block.attrs) > 0) code = block.attrs['code'];\n if (code == '') code = block.text;\n if (code != '') {\n let emoji = find(LEXICAL_EMOJI_LIST, emoji => emoji.code === code);\n out + op.get(emoji, 'text', code);\n }\n return out;\n }\n map(block.content, block => {\n out += blockToText(block);\n });\n return out;\n}\nfunction parseCssColor(color) {\n if (!color || !color.split) return '';\n tempElement.style.color = color;\n const computedColor = f.contentWindow.getComputedStyle(tempElement).color;\n const match = computedColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (match) {\n return {\n red: parseInt(match[1]),\n green: parseInt(match[2]),\n blue: parseInt(match[3])\n };\n } else {\n return null;\n }\n}\nlet emojis = ['like', 'unlike', 'wink', 'tongue-out', 'tired', 'surprised', 'smiling', 'sleepy', 'sad', 'neutral', 'heart-eyes', 'grinning', 'crying', 'confused', 'angry', 'cry', 'heart_eyes', 'neutral_face', 'emoji--disappointed', 'smile', 'open_mouth', 'tired_face', 'stuck_out_tongue', 'moyai', 'thumbsdown', 'dislike', 'thumbsup', 'ok_hand', 'octopus', 'pig2', 'wave', 'mouse', 'mouse2', 'rat'];\nemojis = map(emojis, e => ':' + e + ':');\nfunction absLink(url) {\n if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('//')) return 'http://' + url;\n return url;\n}\nfunction isEmptyBlock(block) {\n if (!block || !block.type) return true;\n let hasContent = size(filter(map(block.content, block => isEmptyBlock(block)), isEmpty => !isEmpty)) > 0;\n return !trim(block.text) && !hasContent;\n}\nfunction isEmptyMessage(msg) {\n if (!msg) return true;\n if (!msg.text && isEmptyBlock(msg.block) && isEmptyAttachment(msg)) return true;\n return false;\n}\nfunction isEmptyAttachment(msg) {\n if (!msg) return true;\n if (!size(msg.attachments)) return true;\n return size(filter(msg.attachments, att => {\n if (att.type == 'quick_replies') {\n return size(filter(att.quick_replies, r => size(trim(r)) > 0)) > 0;\n }\n return true;\n })) == 0;\n}\nfunction checkUrlCondition(cond, href) {\n let exclude_urls = filter(cond.exclude_urls, url => norm(url));\n let foundExclude = false;\n let excludeLen = 0;\n map(exclude_urls, url => {\n if (norm(href).indexOf(url) > -1) {\n if (excludeLen < size(url)) excludeLen = size(url);\n foundExclude = true;\n }\n });\n let includeLen = 0;\n let urls = filter(cond.urls, url => norm(url));\n let foundInclude = size(urls) == 0;\n map(urls, url => {\n if (norm(href).indexOf(url) > -1) {\n if (includeLen < size(url)) includeLen = size(url);\n foundInclude = true;\n }\n });\n if (foundExclude) {\n if (excludeLen >= includeLen) return false;\n }\n if (!foundInclude) return false;\n return true;\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/common.js?\n}");
|
|
647
|
-
|
|
648
|
-
/***/ },
|
|
649
|
-
|
|
650
|
-
/***/ "./src/util/gate.js"
|
|
651
|
-
/*!**************************!*\
|
|
652
|
-
!*** ./src/util/gate.js ***!
|
|
653
|
-
\**************************/
|
|
654
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
655
|
-
|
|
656
|
-
"use strict";
|
|
657
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Gate)\n/* harmony export */ });\nclass Gate {\n constructor(isOpen) {\n this.isOpen = isOpen === true;\n this.cbs = [];\n }\n open() {\n this.isOpen = true;\n let newcbs = [];\n this.cbs.forEach(cb => {\n if (this.isOpen) cb();else newcbs.push(cb);\n });\n this.cbs = newcbs;\n }\n close() {\n this.isOpen = false;\n }\n entry(cb, lock) {\n if (this.isOpen) {\n if (lock) this.isOpen = false;\n cb && cb();\n return Promise.resolve();\n }\n return new Promise(resolve => {\n this.cbs.push(() => {\n if (lock) this.isOpen = false;\n cb && cb();\n resolve();\n });\n });\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/gate.js?\n}");
|
|
658
|
-
|
|
659
|
-
/***/ },
|
|
660
|
-
|
|
661
|
-
/***/ "./src/util/index.js"
|
|
662
|
-
/*!***************************!*\
|
|
663
|
-
!*** ./src/util/index.js ***!
|
|
664
|
-
\***************************/
|
|
665
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
666
|
-
|
|
667
|
-
"use strict";
|
|
668
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common.js */ \"./src/util/common.js\");\n/* harmony import */ var _campaign_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./campaign.js */ \"./src/util/campaign.js\");\nvar sb = {};\n\nsb = Object.assign(sb, _common_js__WEBPACK_IMPORTED_MODULE_0__);\nsb.Gate = (__webpack_require__(/*! ./gate.js */ \"./src/util/gate.js\")[\"default\"]);\nsb.Mutex = (__webpack_require__(/*! ./mutex.js */ \"./src/util/mutex.js\")[\"default\"]);\nvar op = __webpack_require__(/*! ./op.js */ \"./src/util/op.js\");\nsb.get = op.get;\nsb.set = op.set;\nsb.take = op.take;\nsb.Pubsub = (__webpack_require__(/*! ./pubsub.js */ \"./src/util/pubsub.js\")[\"default\"]);\n\nsb = Object.assign(sb, _campaign_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sb);\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/index.js?\n}");
|
|
669
|
-
|
|
670
|
-
/***/ },
|
|
671
|
-
|
|
672
|
-
/***/ "./src/util/mutex.js"
|
|
673
|
-
/*!***************************!*\
|
|
674
|
-
!*** ./src/util/mutex.js ***!
|
|
675
|
-
\***************************/
|
|
676
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
677
|
-
|
|
678
|
-
"use strict";
|
|
679
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Mutex)\n/* harmony export */ });\nclass Mutex {\n constructor() {\n this.isOpen = true;\n this.cbs = [];\n }\n _check() {\n if (!this.isOpen) return;\n let cb = this.cbs.pop();\n if (!cb) return;\n this.isOpen = false;\n cb();\n }\n lock() {\n return new Promise(resolve => {\n this.cbs.push(resolve);\n this._check();\n });\n }\n unlock() {\n if (this.isOpen) return;\n this.isOpen = true;\n this._check();\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/mutex.js?\n}");
|
|
680
|
-
|
|
681
|
-
/***/ },
|
|
682
|
-
|
|
683
|
-
/***/ "./src/util/op.js"
|
|
684
|
-
/*!************************!*\
|
|
685
|
-
!*** ./src/util/op.js ***!
|
|
686
|
-
\************************/
|
|
687
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
688
|
-
|
|
689
|
-
"use strict";
|
|
690
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ get: () => (/* binding */ get),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ take: () => (/* binding */ take)\n/* harmony export */ });\nvar toStr = Object.prototype.toString;\nvar isArray = Array.isArray || function (obj) {\n return toStr.call(obj) === '[object Array]';\n};\nfunction hasOwnProperty(obj, prop) {\n if (obj == null) return false;\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction getKey(key) {\n var intKey = parseInt(key);\n return intKey.toString() === key ? intKey : key;\n}\nfunction hasShallowProperty(obj, prop) {\n return typeof prop === 'number' && isArray(obj) || hasOwnProperty(obj, prop);\n}\nfunction getShallowProperty(obj, prop) {\n if (hasShallowProperty(obj, prop)) return obj[prop];\n}\nfunction get(obj, path, defaultValue) {\n if (typeof path === 'number') path = [path];\n if (!path || path.length === 0) return obj;\n if (obj == null) return defaultValue;\n if (typeof path === 'string') {\n return get(obj, path.split('.'), defaultValue);\n }\n var currentPath = getKey(path[0]);\n var nextObj = getShallowProperty(obj, currentPath);\n if (nextObj === void 0) return defaultValue;\n if (path.length === 1) return nextObj;\n return get(obj[currentPath], path.slice(1), defaultValue);\n}\nfunction set(obj, path, value) {\n if (typeof path === 'number') path = [path];\n if (!path || path.length === 0) return obj;\n if (typeof path === 'string') {\n return set(obj, path.split('.').map(getKey), value);\n }\n var currentPath = path[0];\n var currentValue = getShallowProperty(obj, currentPath);\n if (path.length === 1) {\n obj[currentPath] = value;\n return currentValue;\n }\n if (currentValue === void 0) {\n obj[currentPath] = typeof path[1] === 'number' ? [] : {};\n }\n return set(obj[currentPath], path.slice(1), value);\n}\nfunction take(arr, n = 1) {\n if (!Array.isArray(arr)) return [];\n let len = arr.length;\n if (typeof len !== 'number' || len <= 0) return [];\n if (n <= 0) return [];\n let end = Math.min(n, len);\n return arr.slice(0, end);\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/op.js?\n}");
|
|
691
|
-
|
|
692
|
-
/***/ },
|
|
693
|
-
|
|
694
|
-
/***/ "./src/util/pubsub.js"
|
|
695
|
-
/*!****************************!*\
|
|
696
|
-
!*** ./src/util/pubsub.js ***!
|
|
697
|
-
\****************************/
|
|
698
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
699
|
-
|
|
700
|
-
"use strict";
|
|
701
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Pubsub)\n/* harmony export */ });\nvar {\n filter,\n map\n} = __webpack_require__(/*! ./common.js */ \"./src/util/common.js\");\nclass Pubsub {\n constructor() {\n this.listeners = {};\n }\n publish(topic, payload, payload2, payload3) {\n this.listeners[topic] = filter(this.listeners[topic], sub => sub.obj._isMounted);\n map(this.listeners[topic], ({\n cb\n }) => cb(payload, payload2, payload3));\n }\n on2(obj, topic, cb) {\n if (!this.listeners[topic]) this.listeners[topic] = [];\n this.listeners[topic].push({\n obj,\n cb\n });\n }\n}\n\n//# sourceURL=webpack://@subiz/widget-v4/./src/util/pubsub.js?\n}");
|
|
702
|
-
|
|
703
|
-
/***/ },
|
|
704
|
-
|
|
705
|
-
/***/ "./node_modules/cookie_js/dist/cookie.umd.js"
|
|
706
|
-
/*!***************************************************!*\
|
|
707
|
-
!*** ./node_modules/cookie_js/dist/cookie.umd.js ***!
|
|
708
|
-
\***************************************************/
|
|
709
|
-
(module) {
|
|
710
|
-
|
|
711
|
-
eval("{(function (global, factory) {\n true ? module.exports = factory() :\n 0;\n}(this, function () { 'use strict';\n\n // Copyright (c) Florian Hartmann, https://github.com/florian https://github.com/florian/cookie.js\n\n var cookie = function() {\n return cookie.get.apply(cookie, arguments);\n };\n\n var utils = cookie.utils = {\n\n // Is the given value an array? Use ES5 Array.isArray if it's available.\n isArray: Array.isArray || function (value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n },\n\n // Is the given value a plain object / an object whose constructor is `Object`?\n isPlainObject: function (value) {\n return !!value && Object.prototype.toString.call(value) === '[object Object]';\n },\n\n // Convert an array-like object to an array – for example `arguments`.\n toArray: function (value) {\n return Array.prototype.slice.call(value);\n },\n\n // Get the keys of an object. Use ES5 Object.keys if it's available.\n getKeys: Object.keys || function (obj) {\n var keys = [],\n key = '';\n for (key in obj) {\n if (obj.hasOwnProperty(key)) keys.push(key);\n }\n return keys;\n },\n\n // Unlike JavaScript's built-in escape functions, this method\n // only escapes characters that are not allowed in cookies.\n encode: function (value) {\n return String(value).replace(/[,;\"\\\\=\\s%]/g, function (character) {\n return encodeURIComponent(character);\n });\n },\n\n decode: function (value) {\n return decodeURIComponent(value);\n },\n\n // Return fallback if the value is not defined, otherwise return value.\n retrieve: function (value, fallback) {\n return value == null ? fallback : value;\n }\n\n };\n\n cookie.defaults = {};\n\n cookie.expiresMultiplier = 60 * 60 * 24;\n\n cookie.set = function (key, value, options) {\n if (utils.isPlainObject(key)) {\n // `key` contains an object with keys and values for cookies, `value` contains the options object.\n\n for (var k in key) {\n if (key.hasOwnProperty(k)) this.set(k, key[k], value);\n }\n } else {\n options = utils.isPlainObject(options) ? options : { expires: options };\n\n // Empty string for session cookies.\n var expires = options.expires !== undefined ? options.expires : (this.defaults.expires || ''),\n expiresType = typeof(expires);\n\n if (expiresType === 'string' && expires !== '') expires = new Date(expires);\n else if (expiresType === 'number') expires = new Date(+new Date + 1000 * this.expiresMultiplier * expires); // This is needed because IE does not support the `max-age` cookie attribute.\n\n if (expires !== '' && 'toUTCString' in expires) expires = ';expires=' + expires.toUTCString();\n\n var path = options.path || this.defaults.path;\n path = path ? ';path=' + path : '';\n\n var domain = options.domain || this.defaults.domain;\n domain = domain ? ';domain=' + domain : '';\n\n var secure = options.secure || this.defaults.secure ? ';secure' : '';\n if (options.secure === false) secure = '';\n\n var sameSite = options.sameSite || this.defaults.sameSite;\n sameSite = sameSite ? ';SameSite=' + sameSite : '';\n if (options.sameSite === null) sameSite = '';\n\n document.cookie = utils.encode(key) + '=' + utils.encode(value) + expires + path + domain + secure + sameSite;\n }\n\n return this; // Return the `cookie` object to make chaining possible.\n };\n\n cookie.setDefault = function (key, value, options) {\n if (utils.isPlainObject(key)) {\n for (var k in key) {\n if (this.get(k) === undefined) this.set(k, key[k], value);\n }\n return cookie;\n } else {\n if (this.get(key) === undefined) return this.set.apply(this, arguments);\n }\n },\n\n cookie.remove = function (keys) {\n keys = utils.isArray(keys) ? keys : utils.toArray(arguments);\n\n for (var i = 0, l = keys.length; i < l; i++) {\n this.set(keys[i], '', -1);\n }\n\n return this; // Return the `cookie` object to make chaining possible.\n };\n\n cookie.removeSpecific = function (keys, options) {\n if (!options) return this.remove(keys);\n\n keys = utils.isArray(keys) ? keys : [keys];\n options.expires = -1;\n\n for (var i = 0, l = keys.length; i < l; i++) {\n this.set(keys[i], '', options);\n }\n\n return this; // Return the `cookie` object to make chaining possible.\n };\n\n cookie.empty = function () {\n return this.remove(utils.getKeys(this.all()));\n };\n\n cookie.get = function (keys, fallback) {\n var cookies = this.all();\n\n if (utils.isArray(keys)) {\n var result = {};\n\n for (var i = 0, l = keys.length; i < l; i++) {\n var value = keys[i];\n result[value] = utils.retrieve(cookies[value], fallback);\n }\n\n return result;\n\n } else return utils.retrieve(cookies[keys], fallback);\n };\n\n cookie.all = function () {\n if (document.cookie === '') return {};\n\n var cookies = document.cookie.split('; '),\n result = {};\n\n for (var i = 0, l = cookies.length; i < l; i++) {\n var item = cookies[i].split('=');\n var key = utils.decode(item.shift());\n var value = utils.decode(item.join('='));\n result[key] = value;\n }\n\n return result;\n };\n\n cookie.enabled = function () {\n if (navigator.cookieEnabled) return true;\n\n var ret = cookie.set('_', '_').get('_') === '_';\n cookie.remove('_');\n return ret;\n };\n\n return cookie;\n\n}));\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/cookie_js/dist/cookie.umd.js?\n}");
|
|
712
|
-
|
|
713
|
-
/***/ },
|
|
714
|
-
|
|
715
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./assets/less/chatbox.less"
|
|
716
|
-
/*!***************************************************************************************************************!*\
|
|
717
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./assets/less/chatbox.less ***!
|
|
718
|
-
\***************************************************************************************************************/
|
|
719
|
-
(module, __webpack_exports__, __webpack_require__) {
|
|
720
|
-
|
|
721
|
-
"use strict";
|
|
722
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"./node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _img_stars_v2_png__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../img/stars_v2.png */ \"./assets/img/stars_v2.png\");\n/* harmony import */ var _img_stars_v2_png__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_img_stars_v2_png__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_7_843_png__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_7.843.png */ \"./assets/img/emoji/messenger/sub_60.784_7.843.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_7_843_png__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_7_843_png__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_88_235_png__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_88.235.png */ \"./assets/img/emoji/messenger/sub_58.824_88.235.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_88_235_png__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_88_235_png__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_11_765_png__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_11.765.png */ \"./assets/img/emoji/messenger/sub_60.784_11.765.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_11_765_png__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_11_765_png__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_47_059_png__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_47.059.png */ \"./assets/img/emoji/messenger/sub_58.824_47.059.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_47_059_png__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_47_059_png__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_72_549_png__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_72.549.png */ \"./assets/img/emoji/messenger/sub_58.824_72.549.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_72_549_png__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_72_549_png__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_78_431_png__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_78.431.png */ \"./assets/img/emoji/messenger/sub_58.824_78.431.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_78_431_png__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_78_431_png__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_3_922_png__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_3.922.png */ \"./assets/img/emoji/messenger/sub_60.784_3.922.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_3_922_png__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_3_922_png__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_27_451_png__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_27.451.png */ \"./assets/img/emoji/messenger/sub_60.784_27.451.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_27_451_png__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_27_451_png__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_54_902_png__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_54.902.png */ \"./assets/img/emoji/messenger/sub_58.824_54.902.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_54_902_png__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_54_902_png__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_35_294_png__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_35.294.png */ \"./assets/img/emoji/messenger/sub_60.784_35.294.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_35_294_png__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_35_294_png__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _img_emoji_messenger_sub_60_784_29_412_png__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../img/emoji/messenger/sub_60.784_29.412.png */ \"./assets/img/emoji/messenger/sub_60.784_29.412.png\");\n/* harmony import */ var _img_emoji_messenger_sub_60_784_29_412_png__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_60_784_29_412_png__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_100_000_png__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_100.000.png */ \"./assets/img/emoji/messenger/sub_58.824_100.000.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_100_000_png__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_100_000_png__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_64_706_png__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_64.706.png */ \"./assets/img/emoji/messenger/sub_58.824_64.706.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_64_706_png__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_64_706_png__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _img_emoji_messenger_sub_58_824_45_098_png__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../img/emoji/messenger/sub_58.824_45.098.png */ \"./assets/img/emoji/messenger/sub_58.824_45.098.png\");\n/* harmony import */ var _img_emoji_messenger_sub_58_824_45_098_png__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_58_824_45_098_png__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _img_emoji_messenger_sub_29_412_5_882_png__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../img/emoji/messenger/sub_29.412_5.882.png */ \"./assets/img/emoji/messenger/sub_29.412_5.882.png\");\n/* harmony import */ var _img_emoji_messenger_sub_29_412_5_882_png__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_29_412_5_882_png__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _img_emoji_messenger_sub_27_451_96_078_png__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../img/emoji/messenger/sub_27.451_96.078.png */ \"./assets/img/emoji/messenger/sub_27.451_96.078.png\");\n/* harmony import */ var _img_emoji_messenger_sub_27_451_96_078_png__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_27_451_96_078_png__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _img_emoji_messenger_sub_27_451_84_314_png__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../img/emoji/messenger/sub_27.451_84.314.png */ \"./assets/img/emoji/messenger/sub_27.451_84.314.png\");\n/* harmony import */ var _img_emoji_messenger_sub_27_451_84_314_png__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_27_451_84_314_png__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _img_emoji_messenger_sub_25_490_5_882_png__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../img/emoji/messenger/sub_25.490_5.882.png */ \"./assets/img/emoji/messenger/sub_25.490_5.882.png\");\n/* harmony import */ var _img_emoji_messenger_sub_25_490_5_882_png__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_25_490_5_882_png__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _img_emoji_messenger_sub_25_490_0_000_png__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../img/emoji/messenger/sub_25.490_0.000.png */ \"./assets/img/emoji/messenger/sub_25.490_0.000.png\");\n/* harmony import */ var _img_emoji_messenger_sub_25_490_0_000_png__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_25_490_0_000_png__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var _img_emoji_messenger_sub_27_451_72_549_png__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../img/emoji/messenger/sub_27.451_72.549.png */ \"./assets/img/emoji/messenger/sub_27.451_72.549.png\");\n/* harmony import */ var _img_emoji_messenger_sub_27_451_72_549_png__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_27_451_72_549_png__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var _img_emoji_messenger_sub_25_490_45_098_png__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../img/emoji/messenger/sub_25.490_45.098.png */ \"./assets/img/emoji/messenger/sub_25.490_45.098.png\");\n/* harmony import */ var _img_emoji_messenger_sub_25_490_45_098_png__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_25_490_45_098_png__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _img_emoji_messenger_sub_23_529_60_784_png__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../img/emoji/messenger/sub_23.529_60.784.png */ \"./assets/img/emoji/messenger/sub_23.529_60.784.png\");\n/* harmony import */ var _img_emoji_messenger_sub_23_529_60_784_png__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_23_529_60_784_png__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var _img_emoji_messenger_sub_23_529_58_824_png__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../img/emoji/messenger/sub_23.529_58.824.png */ \"./assets/img/emoji/messenger/sub_23.529_58.824.png\");\n/* harmony import */ var _img_emoji_messenger_sub_23_529_58_824_png__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_img_emoji_messenger_sub_23_529_58_824_png__WEBPACK_IMPORTED_MODULE_26__);\n// Imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_stars_v2_png__WEBPACK_IMPORTED_MODULE_3___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_7_843_png__WEBPACK_IMPORTED_MODULE_4___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_88_235_png__WEBPACK_IMPORTED_MODULE_5___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_11_765_png__WEBPACK_IMPORTED_MODULE_6___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_47_059_png__WEBPACK_IMPORTED_MODULE_7___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_72_549_png__WEBPACK_IMPORTED_MODULE_8___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_78_431_png__WEBPACK_IMPORTED_MODULE_9___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_3_922_png__WEBPACK_IMPORTED_MODULE_10___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_27_451_png__WEBPACK_IMPORTED_MODULE_11___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_54_902_png__WEBPACK_IMPORTED_MODULE_12___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_35_294_png__WEBPACK_IMPORTED_MODULE_13___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_60_784_29_412_png__WEBPACK_IMPORTED_MODULE_14___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_100_000_png__WEBPACK_IMPORTED_MODULE_15___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_64_706_png__WEBPACK_IMPORTED_MODULE_16___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_58_824_45_098_png__WEBPACK_IMPORTED_MODULE_17___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_29_412_5_882_png__WEBPACK_IMPORTED_MODULE_18___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_27_451_96_078_png__WEBPACK_IMPORTED_MODULE_19___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_27_451_84_314_png__WEBPACK_IMPORTED_MODULE_20___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_25_490_5_882_png__WEBPACK_IMPORTED_MODULE_21___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_25_490_0_000_png__WEBPACK_IMPORTED_MODULE_22___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_27_451_72_549_png__WEBPACK_IMPORTED_MODULE_23___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_25_490_45_098_png__WEBPACK_IMPORTED_MODULE_24___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_23_529_60_784_png__WEBPACK_IMPORTED_MODULE_25___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()((_img_emoji_messenger_sub_23_529_58_824_png__WEBPACK_IMPORTED_MODULE_26___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#sbz92 * {\\n all: unset !important;\\n}\\n.sbz_no_scroll {\\n overflow: hidden !important;\\n overflow-x: hidden !important;\\n overflow-y: hidden !important;\\n}\\n#sbz92 {\\n /* Handle on hover */\\n /*\\n.widget-header--button-close {\\n\\tdisplay: flex;\\n\\tborder-radius: 6px;\\n\\tjustify-self: flex-end;\\n\\talign-items: center;\\n\\talign-self: flex-start;\\n\\n\\tfilter: brightness(0.95);\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t\\tfilter: brightness(1.1);\\n\\t\\tscale: 1.1;\\n\\t}\\n}\\n*/\\n /*\\n[data-tooltip]::after {\\n\\ttext-align: center;\\n\\tmin-width: 60px;\\n\\tmax-width: 350px;\\n\\n\\ttransform: translate3d(0, 0, 0);\\n\\t-webkit-backface-visibility: hidden;\\n\\tbackface-visibility: hidden;\\n\\twill-change: transform;\\n\\topacity: 0;\\n\\tpointer-events: none;\\n\\ttransition: opacity @tooltip-transition-duration @tooltip-transition-easing @tooltip-transition-delay;\\n\\tposition: absolute;\\n\\tbox-sizing: border-box;\\n\\tz-index: @z-index + 2000;\\n\\ttransform-origin: top;\\n\\twhite-space: pre-wrap;\\n\\twidth: 100%;\\n\\n\\tbackground: @black;\\n\\tborder-radius: 5px;\\n\\n\\t.color(@white);\\n\\n\\tcontent: attr(data-tooltip);\\n\\tfont-size: @tooltip-font-size;\\n\\tfont-weight: @tooltip-font-weight;\\n\\ttext-transform: @tooltip-text-transform;\\n\\tpadding: 0.5em;\\n\\tbox-sizing: content-box;\\n}\\n\\n[data-tooltip]:hover::after,\\n[data-tooltip]:focus::after {\\n\\topacity: 1;\\n\\tpointer-events: auto;\\n}\\n\\n// ------------------------------------------------\\n// [2] Position Modifiers\\n// ------------------------------------------------\\n\\n[data-tooltip][data-tooltip-position|='top']::after {\\n\\tmargin-bottom: @tooltip-margin;\\n\\ttransform: translate3d(-50%, -5px, 0);\\n\\tbottom: 100%;\\n\\tleft: 50%;\\n}\\n\\n// ------------------------------------------------\\n// [2.1] Top Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='top-left']::after {\\n\\ttransform: translate3d(~'calc(-100% + 16px)', -5px, 0);\\n\\tbottom: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.2] Top Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='top-right']::after {\\n\\ttransform: translate3d(~'calc(0% + -16px)', -5px, 0);\\n\\tbottom: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.3] Bottom\\n// ------------------------------------------------\\n\\n[data-tooltip][data-tooltip-position|='bottom']::after,\\n[data-tooltip]:not([data-tooltip-position])::after {\\n\\ttransform: translate3d(-50%, 0, 0);\\n\\tmargin-top: @tooltip-margin;\\n\\tleft: 50%;\\n\\ttop: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.4] Bottom Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='bottom-left']::after {\\n\\ttransform: translate3d(~'calc(-100% + 16px)', 0, 0);\\n}\\n\\n// ------------------------------------------------\\n// [2.5] Bottom Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='bottom-right']::after {\\n\\ttransform: translate3d(~'calc(0% + -16px)', 0, 0);\\n}\\n\\n// ------------------------------------------------\\n// [2.6] Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='left']::after {\\n\\tbottom: auto;\\n\\tleft: auto;\\n\\tright: 100%;\\n\\ttop: 50%;\\n\\ttransform: translate3d(0, -50%, 0);\\n\\tmargin-right: @tooltip-margin;\\n}\\n\\n// ------------------------------------------------\\n// [2.7] Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='right']::after {\\n\\tbottom: auto;\\n\\tleft: 100%;\\n\\ttop: 50%;\\n\\ttransform: translate3d(0, -50%, 0);\\n\\tmargin-left: @tooltip-margin;\\n}\\n\\n*/\\n}\\n#sbz92 *,\\n#sbz92 *::before,\\n#sbz92 *::after {\\n box-sizing: border-box !important;\\n}\\n#sbz92 [tabindex='-1']:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n#sbz92 b,\\n#sbz92 strong {\\n font-weight: 500 !important;\\n}\\n#sbz92 a {\\n color: #020202 !important;\\n text-decoration: none !important;\\n background-color: transparent !important;\\n font-weight: 600 !important;\\n}\\n#sbz92 a:hover {\\n cursor: pointer !important;\\n color: #000000 !important;\\n text-decoration: underline !important;\\n}\\n#sbz92 a:not([href]) {\\n color: inherit !important;\\n text-decoration: none !important;\\n}\\n#sbz92 a:not([href]):hover {\\n color: inherit !important;\\n text-decoration: none !important;\\n}\\n#sbz92 img {\\n vertical-align: middle !important;\\n border-style: none !important;\\n}\\n#sbz92 svg {\\n overflow: hidden !important;\\n vertical-align: middle !important;\\n}\\n#sbz92 label {\\n display: inline-block !important;\\n}\\n#sbz92 button {\\n border-radius: 0 !important;\\n}\\n#sbz92 button:focus {\\n outline: 1px dotted !important;\\n outline: 5px auto -webkit-focus-ring-color !important;\\n}\\n#sbz92 input,\\n#sbz92 button,\\n#sbz92 select,\\n#sbz92 optgroup,\\n#sbz92 textarea {\\n margin: 0 !important;\\n}\\n#sbz92 button,\\n#sbz92 input {\\n overflow: visible !important;\\n}\\n#sbz92 button,\\n#sbz92 select {\\n text-transform: none !important;\\n}\\n#sbz92 select {\\n word-wrap: normal !important;\\n}\\n#sbz92 button,\\n#sbz92 [type=\\\"button\\\"],\\n#sbz92 [type=\\\"reset\\\"],\\n#sbz92 [type=\\\"submit\\\"] {\\n -webkit-appearance: button !important;\\n}\\n#sbz92 button:not(:disabled),\\n#sbz92 [type='button']:not(:disabled),\\n#sbz92 [type='reset']:not(:disabled),\\n#sbz92 [type='submit']:not(:disabled) {\\n cursor: pointer !important;\\n}\\n#sbz92 button::-moz-focus-inner,\\n#sbz92 [type='button']::-moz-focus-inner,\\n#sbz92 [type='reset']::-moz-focus-inner,\\n#sbz92 [type='submit']::-moz-focus-inner {\\n padding: 0 !important;\\n border-style: none !important;\\n}\\n#sbz92 input[type='radio'],\\n#sbz92 input[type='checkbox'] {\\n box-sizing: border-box !important;\\n padding: 0 !important;\\n}\\n#sbz92 input[type='date'],\\n#sbz92 input[type='time'],\\n#sbz92 input[type='datetime-local'],\\n#sbz92 input[type='month'] {\\n -webkit-appearance: listbox !important;\\n}\\n#sbz92 textarea {\\n overflow: auto !important;\\n resize: vertical !important;\\n}\\n#sbz92 [type='number']::-webkit-inner-spin-button,\\n#sbz92 [type='number']::-webkit-outer-spin-button {\\n height: auto !important;\\n}\\n#sbz92 [hidden] {\\n display: none !important;\\n}\\n#sbz92 ::-webkit-input-placeholder {\\n /* Edge */\\n color: #777 !important;\\n}\\n#sbz92 :-ms-input-placeholder {\\n /* Internet Explorer 10-11 */\\n color: #777 !important;\\n}\\n#sbz92 ::placeholder {\\n color: #777 !important;\\n}\\n#sbz92 div {\\n display: block !important;\\n text-rendering: geometricPrecision !important;\\n -webkit-font-smoothing: antialiased !important;\\n -moz-osx-font-smoothing: grayscale !important;\\n}\\n#sbz92 ::-webkit-scrollbar {\\n width: 7px !important;\\n height: 7px !important;\\n}\\n#sbz92 ::-webkit-scrollbar-track {\\n border-radius: 10px !important;\\n}\\n#sbz92 ::-webkit-scrollbar-thumb {\\n border-radius: 10px !important;\\n background: #d6d6d6 !important;\\n}\\n#sbz92 ::-webkit-scrollbar-thumb:hover {\\n background: #aaa !important;\\n}\\n#sbz92 .badge {\\n padding: 2px 8px !important;\\n font-size: 12px !important;\\n font-weight: 600 !important;\\n border-radius: 6px !important;\\n display: inline-flex !important;\\n align-items: center !important;\\n}\\n#sbz92 .badge.badge--success {\\n color: #28a745 !important;\\n -webkit-text-fill-color: #28a745 !important;\\n background: #28a74526 !important;\\n}\\n#sbz92 .dot {\\n width: 8px !important;\\n height: 8px !important;\\n border-radius: 4px !important;\\n flex-shrink: 0 !important;\\n background: #000 !important;\\n}\\n#sbz92 .dot.dot--success {\\n background: #28a745 !important;\\n}\\n#sbz92 * {\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;\\n -webkit-tap-highlight-color: transparent !important;\\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' !important;\\n font-size: 16px !important;\\n -webkit-box-sizing: border-box !important;\\n -moz-box-sizing: border-box !important;\\n box-sizing: border-box !important;\\n margin: 0 !important;\\n padding: 0 !important;\\n border: 0 !important;\\n vertical-align: baseline !important;\\n}\\n#sbz92 button:focus {\\n outline: none !important;\\n}\\n#sbz92 img {\\n overflow: hidden !important;\\n flex-shrink: 0 !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n background-size: 100% 100% !important;\\n -webkit-user-select: none !important;\\n -khtml-user-select: none !important;\\n -moz-user-select: none !important;\\n -o-user-select: none !important;\\n user-select: none !important;\\n -webkit-user-drag: none !important;\\n}\\n#sbz92 .pos-relative {\\n position: relative !important;\\n}\\n#sbz92 .flex-row {\\n flex-direction: row !important;\\n}\\n#sbz92 .flex-column {\\n flex-direction: column !important;\\n}\\n#sbz92 .flex-grow-1 {\\n flex-grow: 1 !important;\\n}\\n#sbz92 .align-self-end {\\n align-self: flex-end !important;\\n}\\n#sbz92 .align-items-end {\\n align-items: flex-end !important;\\n}\\n#sbz92 .justify-content-center {\\n justify-content: center !important;\\n}\\n#sbz92 .h-full {\\n height: 100% !important;\\n}\\n#sbz92 .w-full {\\n width: 100% !important;\\n}\\n#sbz92 .text-muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .text-lg {\\n font-size: 18px !important;\\n}\\n#sbz92 .text-xl {\\n font-size: 20px !important;\\n}\\n#sbz92 .text-sm {\\n font-size: 14px !important;\\n}\\n#sbz92 .text-center {\\n text-align: center !important;\\n}\\n#sbz92 .text-danger {\\n color: #ea3d2f !important;\\n}\\n#sbz92 .text-italic {\\n font-style: italic !important;\\n}\\n#sbz92 .d-none {\\n display: none !important;\\n}\\n#sbz92 .d-flex {\\n display: flex !important;\\n}\\n#sbz92 .d-inline-block {\\n display: inline-block !important;\\n}\\n#sbz92 .ml-1 {\\n margin-left: 7.5px !important;\\n}\\n#sbz92 .pl-2 {\\n padding-left: 15px !important;\\n}\\n#sbz92 .pr-2 {\\n padding-right: 15px !important;\\n}\\n#sbz92 .pb-2 {\\n padding-bottom: 15px !important;\\n}\\n#sbz92 .mt-1 {\\n margin-top: 7.5px !important;\\n}\\n#sbz92 .mt-2 {\\n margin-top: 15px !important;\\n}\\n#sbz92 .ml-2 {\\n margin-left: 15px !important;\\n}\\n#sbz92 .mr-1 {\\n margin-right: 7.5px !important;\\n}\\n#sbz92 .mr-2 {\\n margin-right: 15px !important;\\n}\\n#sbz92 .pt-3 {\\n padding-top: 22.5px !important;\\n}\\n#sbz92 .pl-3 {\\n padding-left: 22.5px !important;\\n}\\n#sbz92 .pr-3 {\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .pb-3 {\\n padding-bottom: 22.5px !important;\\n}\\n#sbz92 .mt-3 {\\n margin-top: 22.5px !important;\\n}\\n#sbz92 .ml-3 {\\n margin-left: 22.5px !important;\\n}\\n#sbz92 .mr-3 {\\n margin-right: 22.5px !important;\\n}\\n#sbz92 .mb-3 {\\n margin-bottom: 22.5px !important;\\n}\\n#sbz92 .mb-2 {\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .mb-1 {\\n margin-bottom: 7.5px !important;\\n}\\n#sbz92 .muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .i {\\n font-style: italic !important;\\n}\\n#sbz92 .align-items-center {\\n align-items: center !important;\\n}\\n#sbz92 .text-truncate {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .flex_1 {\\n flex: 1 !important;\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .justify-content-between {\\n justify-content: space-between !important;\\n}\\n#sbz92 .no-shrink {\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .loading {\\n flex: 1 !important;\\n align-items: center !important;\\n justify-content: center !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n}\\n#sbz92 .avatar-container {\\n text-align: center !important;\\n}\\n#sbz92 .avatar {\\n position: relative !important;\\n object-fit: cover !important;\\n display: inline-block !important;\\n}\\n#sbz92 .group-avatar--primary .avatar {\\n width: 40px !important;\\n height: 40px !important;\\n border-radius: 35px !important;\\n}\\n#sbz92 .group-avatar--secondary .avatar {\\n position: relative !important;\\n width: 35px !important;\\n height: 35px !important;\\n border-radius: 35px !important;\\n}\\n#sbz92 .avatar.avatar__account {\\n width: 38px !important;\\n height: 38px !important;\\n border-radius: 38px !important;\\n margin-right: 7.5px !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-middle {\\n width: 50px !important;\\n height: 50px !important;\\n margin-left: -10px !important;\\n z-index: 3 !important;\\n position: relative !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-left {\\n z-index: 2 !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-right {\\n z-index: 2 !important;\\n margin-left: -10px !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-left {\\n z-index: 3 !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-middle {\\n z-index: 2 !important;\\n margin-left: -15px !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-right {\\n z-index: 1 !important;\\n margin-left: -15px !important;\\n}\\n#sbz92 .widget-header {\\n z-index: -1 !important;\\n position: relative !important;\\n transition: height 0.2s !important;\\n border-radius: 15px 15px 0px 0px !important;\\n background: '@background' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n width: 100% !important;\\n}\\n#sbz92 .widget-header .widget-header--total-unread-convo {\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n background: #ef000d !important;\\n display: flex !important;\\n border-radius: 50% !important;\\n justify-content: center !important;\\n align-items: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n position: absolute !important;\\n cursor: pointer !important;\\n right: -8px !important;\\n top: -4px !important;\\n}\\n#sbz92 .widget-header--collapsed {\\n height: auto !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed {\\n height: auto !important;\\n padding: 15px 22.5px !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed .widget-header--title {\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n text-overflow: ellipsis !important;\\n font-size: 16px !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed .widget-header--description {\\n font-size: 14px !important;\\n overflow: hidden !important;\\n opacity: 0.7 !important;\\n flex: 1 !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n margin-top: 2.5px !important;\\n position: relative !important;\\n line-height: 1.5 !important;\\n}\\n#sbz92 .mobile .widget-header {\\n border-radius: 0px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded {\\n height: 224px !important;\\n padding: 15px 22.5px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--top-wrapper {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: center !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--avatar-wrapper {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--title {\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n text-overflow: ellipsis !important;\\n flex: 1 !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--description {\\n position: relative !important;\\n text-align: center !important;\\n margin-top: 15px !important;\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-box-orient: vertical !important;\\n -webkit-line-clamp: 2 !important;\\n overflow: hidden !important;\\n line-height: 1.5 !important;\\n}\\n#sbz92 .widget-header--convo-expanded {\\n height: 224px !important;\\n}\\n#sbz92 .widget-header--inner {\\n position: absolute !important;\\n top: 0 !important;\\n left: 50% !important;\\n transform: translateX(-50%) !important;\\n width: 100% !important;\\n opacity: 1 !important;\\n display: flex !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--hidden {\\n opacity: 0 !important;\\n transform: scale(0) !important;\\n animation-duration: 0.05s !important;\\n animation-name: hide !important;\\n}\\n#sbz92 .widget-header--title-container {\\n min-width: 0 !important;\\n flex: 1 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n z-index: 1 !important;\\n}\\n#sbz92 .widget-header--button-close {\\n display: flex !important;\\n border-radius: 6px !important;\\n justify-self: flex-end !important;\\n align-items: center !important;\\n align-self: flex-start !important;\\n opacity: 0.6 !important;\\n transition: opacity 0.15s ease, scale 0.15s ease, filter 0.15s ease !important;\\n filter: brightness(0.95) !important;\\n}\\n#sbz92 .widget-header--button-close:hover {\\n opacity: 1 !important;\\n filter: brightness(1.1) !important;\\n scale: 1.1 !important;\\n}\\n#sbz92 .widget-header--button-close-icon {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci14Ij48bGluZSB4MT0iMTgiIHkxPSI2IiB4Mj0iNiIgeTI9IjE4Ij48L2xpbmU+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iMTgiIHkyPSIxOCI+PC9saW5lPjwvc3ZnPgo=') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-header--button-back {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IndoaXRlIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgNmwxNiAwIiAvPjxwYXRoIGQ9Ik00IDEybDE2IDAiIC8+PHBhdGggZD0iTTQgMThsMTYgMCIgLz48L3N2Zz4K') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n background-size: 24px 24px !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-header--wrap-button-back {\\n display: flex !important;\\n position: relative !important;\\n margin-right: 7.5px !important;\\n cursor: pointer !important;\\n scale: 1 !important;\\n opacity: 0.6 !important;\\n transition: opacity 0.15s ease, scale 0.15s ease, filter 0.15s ease !important;\\n filter: brightness(0.95) !important;\\n}\\n#sbz92 .widget-header--wrap-button-back:hover {\\n opacity: 1 !important;\\n filter: brightness(1.1) !important;\\n scale: 1.1 !important;\\n}\\n#sbz92 .fade-enter-active,\\n#sbz92 .fade-leave-active {\\n transition: opacity 0.5s ease-out 0.2s !important;\\n}\\n#sbz92 .fade-enter,\\n#sbz92 .fade-leave-to {\\n opacity: 0 !important;\\n}\\n#sbz92 .slide-fade-enter-active {\\n transition: all 0.3s ease !important;\\n}\\n#sbz92 .slide-fade-leave-active {\\n transition: all 0.2s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .slide-fade-enter,\\n#sbz92 .slide-fade-leave-to {\\n transform: translateX(10px) !important;\\n opacity: 0 !important;\\n}\\n#sbz92 .widget_header__body {\\n padding-bottom: 70px !important;\\n}\\n#sbz92 .widget_header__body.widget_header__body__social {\\n display: flex !important;\\n}\\n#sbz92 .social__account_logo {\\n height: 90px !important;\\n width: 90px !important;\\n margin-right: 15px !important;\\n border-radius: 15px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .social__introduction {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n max-height: 72px !important;\\n overflow: hidden !important;\\n display: -webkit-box !important;\\n -webkit-box-orient: vertical !important;\\n -webkit-line-clamp: 3 !important;\\n}\\n#sbz92 .social__links {\\n display: flex !important;\\n flex-direction: row !important;\\n}\\n#sbz92 .social__links-logo {\\n height: 30px !important;\\n width: 30px !important;\\n border-radius: 50% !important;\\n margin-right: 10px !important;\\n margin-top: 5px !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n display: block !important;\\n}\\n#sbz92 .social__links-logo--facebook {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2215%22%20r%3D%2215%22%20fill%3D%22%230264FF%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.2944%2029.8252C16.5464%2029.9404%2015.7803%2030%2015%2030C14.0962%2030%2013.2109%2029.9199%2012.3511%2029.7666V18.4775H10V14.4287H12.3511V11.8086C12.3511%209.93457%2013.2744%207%2017.3384%207L21%207.01465V10.9453H18.3433C17.9075%2010.9453%2017.2947%2011.1553%2017.2947%2012.0488V14.4326H20.989L20.5571%2018.4775H17.2944V29.8252Z%22%20fill%3D%22white%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--messenger {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2230%22%20height%3D%2230%22%20rx%3D%2215%22%20fill%3D%22%23007FFF%22/%3E%3Crect%20x%3D%224.28564%22%20y%3D%226%22%20width%3D%2221.4286%22%20height%3D%2218.8571%22%20fill%3D%22white%22/%3E%3Cpath%20d%3D%22M14.9478%2014.5713C14.8228%2014.5917%2014.6974%2014.6104%2014.5715%2014.6276C14.6974%2014.6104%2014.8228%2014.5917%2014.9478%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7507%2014.5713C14.691%2014.5823%2014.6313%2014.5923%2014.5715%2014.6026C14.6313%2014.5923%2014.691%2014.5823%2014.7507%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M15.0126%2014.5713C14.8663%2014.5878%2014.7192%2014.6024%2014.5715%2014.6148C14.7192%2014.6024%2014.8663%2014.5878%2015.0126%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.783%2014.5713C14.7128%2014.5807%2014.642%2014.5894%2014.5715%2014.5976C14.642%2014.5894%2014.7128%2014.5807%2014.783%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7299%2014.5713C14.6773%2014.5825%2014.6244%2014.5937%2014.5715%2014.6045C14.6244%2014.5937%2014.6773%2014.5825%2014.7299%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.6992%2014.5713C14.6567%2014.5834%2014.6141%2014.5949%2014.5715%2014.6068C14.6141%2014.5949%2014.6567%2014.5834%2014.6992%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7107%2014.5713C14.6645%2014.5834%2014.618%2014.5958%2014.5715%2014.6075C14.618%2014.5958%2014.6645%2014.5836%2014.7107%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7194%2014.5713C14.6704%2014.5827%2014.621%2014.5935%2014.5715%2014.6045C14.621%2014.5935%2014.6704%2014.5827%2014.7194%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.8087%2014.5713C14.7297%2014.5779%2014.6507%2014.5839%2014.5715%2014.5891C14.6507%2014.5839%2014.7297%2014.5779%2014.8087%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M15.0417%2014.5713C14.8856%2014.5814%2014.7288%2014.5894%2014.5715%2014.5946C14.7288%2014.5894%2014.8856%2014.5814%2015.0417%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.8206%2014.5713C14.7377%2014.574%2014.6546%2014.5761%2014.5715%2014.5775C14.6546%2014.5761%2014.7377%2014.574%2014.8206%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.1547%2012.3174L9.29419%2017.4636L13.7176%2015.0365L16.0288%2017.4636L20.8621%2012.3174L16.4877%2014.7019L14.1547%2012.3174Z%22%20fill%3D%22%23448AFF%22/%3E%3Cpath%20d%3D%22M15%200C6.717%200%200%206.717%200%2015C0%2023.283%206.717%2030%2015%2030C23.283%2030%2030%2023.283%2030%2015C30%206.717%2023.283%200%2015%200ZM15.1172%2023.0294C14.1886%2023.0294%2013.2923%2022.8983%2012.4491%2022.6554L9.42421%2024.375V21.14C7.39815%2019.5982%206.10428%2017.2501%206.10428%2014.6203C6.10428%209.97581%2010.1395%206.21094%2015.1172%206.21094C20.0951%206.21094%2024.1301%209.97581%2024.1301%2014.6203C24.1301%2019.2643%2020.0951%2023.0294%2015.1172%2023.0294V23.0294Z%22%20fill%3D%22%23007FFF%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--email {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M22.6875%2012.9688C21.9375%2013.5625%2020.3125%2014.75%2017.875%2016.5L17.5625%2016.75C17.0625%2017.125%2016.6875%2017.4062%2016.375%2017.5625C15.875%2017.875%2015.4062%2018%2015%2018C14.5625%2018%2014.125%2017.875%2013.625%2017.5938C13.3125%2017.4375%2012.9375%2017.1562%2012.4375%2016.7812L12.125%2016.5C9.59375%2014.6875%208%2013.5%207.3125%2012.9688C7.25%2012.9375%207.15625%2012.9375%207.09375%2012.9688C7.03125%2013%207%2013.0625%207%2013.125V19.5C7%2019.9375%207.125%2020.2812%207.4375%2020.5625C7.71875%2020.875%208.0625%2021%208.5%2021H21.5C21.9062%2021%2022.25%2020.875%2022.5625%2020.5625C22.8438%2020.2812%2023%2019.9375%2023%2019.5V13.125C23%2013.0625%2022.9375%2013%2022.875%2012.9375C22.8125%2012.9062%2022.75%2012.9062%2022.6875%2012.9688ZM15%2017C14.7188%2017%2014.375%2016.875%2014%2016.625C13.75%2016.5%2013.4375%2016.2812%2013.0312%2015.9375L12.7188%2015.7188C10.1562%2013.8438%208.40625%2012.5625%207.5%2011.8438L7.28125%2011.6875C7.09375%2011.5625%207%2011.3438%207%2011.0938V10.5C7%2010.0938%207.125%209.75%207.4375%209.4375C7.71875%209.15625%208.0625%209%208.5%209H21.5C21.9062%209%2022.25%209.15625%2022.5625%209.4375C22.8438%209.75%2023%2010.0938%2023%2010.5V11.0938C23%2011.3438%2022.9062%2011.5625%2022.7188%2011.6875L22.5625%2011.8125C21.6562%2012.5312%2019.9062%2013.8438%2017.2812%2015.7188L16.9688%2015.9375C16.5312%2016.2812%2016.2188%2016.5%2016%2016.625C15.5938%2016.875%2015.25%2017%2015%2017Z%22%20fill%3D%22white%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--zalo {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M29.9999%2014.9385C29.9669%206.68262%2023.2639%200%2015%200C6.7157%200%200%206.71582%200%2015C0%2023.2842%206.7157%2030%2015%2030C23.2639%2030%2029.9669%2023.3174%2029.9999%2015.0615C29.9999%2015.041%2030%2015.0205%2030%2015C30%2014.9795%2029.9999%2014.959%2029.9999%2014.9385Z%22%20fill%3D%22white%22/%3E%3Cpath%20d%3D%22M24.5612%2017.4695C22.9394%2017.4726%2021.6242%2016.1862%2021.6279%2014.6005C21.6316%2013.0345%2022.9474%2011.7445%2024.5473%2011.7383C26.1556%2011.732%2027.4826%2013.0349%2027.4786%2014.6162C27.4746%2016.1926%2026.1719%2017.4665%2024.5612%2017.4695ZM22.8416%2014.6183C22.8459%2015.5573%2023.6166%2016.3004%2024.5777%2016.2923C25.5165%2016.2845%2026.2699%2015.5301%2026.2673%2014.6005C26.2646%2013.6712%2025.51%2012.9317%2024.56%2012.9277C23.6012%2012.9237%2022.8373%2013.6751%2022.8416%2014.6183Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M19.5054%2010.0762H20.795V17.4217H19.9447C19.7021%2017.4217%2019.5054%2017.225%2019.5054%2016.9823V10.0762Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M18.5227%2011.8907H17.2881V12.2935C16.5767%2011.8601%2015.8509%2011.6775%2015.06%2011.831C14.2526%2011.9876%2013.6164%2012.4043%2013.167%2013.0917C12.4538%2014.1826%2012.5894%2015.5904%2013.4938%2016.5431C14.3504%2017.4454%2015.8628%2017.8178%2017.2815%2016.9247C17.2835%2016.934%2017.286%2016.9422%2017.2881%2016.9511V16.9826C17.2881%2017.2252%2017.4849%2017.422%2017.7275%2017.422H18.5227V11.8907V11.8907ZM15.5853%2016.2787C14.6636%2016.268%2013.8924%2015.5006%2013.8986%2014.6004C13.9048%2013.692%2014.6716%2012.9481%2015.602%2012.9479C16.5427%2012.9477%2017.2871%2013.6781%2017.2882%2014.6026C17.2893%2015.5333%2016.521%2016.2896%2015.5853%2016.2787Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M8.0481%2016.2438C9.39854%2014.5856%2010.6939%2012.9885%2011.9984%2011.3989C12.2464%2011.0968%2012.3662%2010.7671%2012.3731%2010.3807C12.3761%2010.2135%2012.3261%2010.1646%2012.1596%2010.165C11.6056%2010.1666%206.41195%2010.165%206.41195%2010.165V11.4709H10.4978C10.4424%2011.543%207.83556%2014.7218%206.57932%2016.2403C6.37112%2016.4919%206.26503%2016.7645%206.25401%2017.0936C6.24628%2017.3242%206.28864%2017.4139%206.52267%2017.4211V17.4217H11.9356C12.1782%2017.4217%2012.3749%2017.225%2012.3749%2016.9823V16.2487V16.2438H8.0481V16.2438Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M4.948%2026.1338C6.03613%2027.1172%207.26917%2027.9424%208.61108%2028.5752V26.1338H4.948ZM0.00268555%2014.7119C0.0775146%2010.7393%201.69666%207.14453%204.28479%204.50293C4.0459%204.98242%203.83435%205.47949%203.64661%205.99121C2.58862%208.87598%202.31299%2011.8506%202.69116%2014.8916C2.95862%2017.042%203.55518%2019.0869%204.63391%2020.9775C4.8269%2021.3154%205.02271%2021.6582%205.26489%2021.9609C5.76672%2022.5879%205.80981%2023.2725%205.59888%2024.0049C5.4873%2024.3926%205.32227%2024.75%205.11304%2025.082C4.95691%2025.3291%204.77612%2025.5635%204.57434%2025.7842C1.81921%2023.1201%200.0819092%2019.4102%200.00280762%2015.2939C0.000976562%2015.1963%200%2015.0986%200%2015C0%2014.9033%200.000854492%2014.8076%200.00268555%2014.7119Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M24.8226%2026.3367C22.191%2028.6189%2018.7568%2029.9998%2015%2029.9998C11.1449%2029.9998%207.62952%2028.5457%204.97241%2026.156C6.32458%2026.1921%207.61877%2025.9031%208.86353%2025.3464C8.97681%2025.2957%209.06262%2025.3113%209.16443%2025.364C12.2258%2026.9646%2015.5131%2027.5125%2018.926%2027.3962C20.9574%2027.3269%2022.9333%2027.0046%2024.8226%2026.3367Z%22%20fill%3D%22%23015BDF%22/%3E%3C/svg%3E') !important;\\n}\\n@keyframes hide {\\n 100% {\\n opacity: 0;\\n transform: scale(0);\\n }\\n}\\n#sbz92 .widget-header-expand-container {\\n width: 100% !important;\\n}\\n#sbz92 .message-input {\\n width: 100% !important;\\n border-top: 1px solid #e3e3e3 !important;\\n display: flex !important;\\n flex-direction: row !important;\\n padding: 15px 22.5px !important;\\n}\\n#sbz92 .message-input--disabled {\\n background: #f0f0f0 !important;\\n opacity: 0.6 !important;\\n filter: grayscale(1) !important;\\n}\\n#sbz92 textarea[disabled='disabled']::-webkit-input-placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 textarea[disabled='disabled']:-ms-input-placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 textarea[disabled='disabled']::placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 .message-input--input {\\n word-wrap: break-word !important;\\n resize: none !important;\\n flex: 1 !important;\\n align-self: center !important;\\n margin-right: 7.5px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .message-input--input::placeholder {\\n opacity: 0.5 !important;\\n /* Firefox */\\n}\\n#sbz92 .message-input--input::-ms-input-placeholder {\\n /* Edge 12 -18 */\\n opacity: 0.5 !important;\\n /* Firefox */\\n}\\n#sbz92 .message-input--emoji-button {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXNtaWxlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PHBhdGggZD0iTTggMTRzMS41IDIgNCAyIDQtMiA0LTIiPjwvcGF0aD48bGluZSB4MT0iOSIgeTE9IjkiIHgyPSI5LjAxIiB5Mj0iOSI+PC9saW5lPjxsaW5lIHgxPSIxNSIgeTE9IjkiIHgyPSIxNS4wMSIgeTI9IjkiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-input--button {\\n background-size: 70% !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 32px !important;\\n height: 32px !important;\\n display: block !important;\\n cursor: pointer !important;\\n position: relative !important;\\n border-radius: 20px !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .message-input--button:hover {\\n background-color: #eeeeee !important;\\n}\\n#sbz92 .message-input--disabled .message-input--button {\\n cursor: default !important;\\n}\\n#sbz92 .message-input--disabled .message-input--button {\\n cursor: default !important;\\n}\\n#sbz92 .message-input--attachment-button {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXBhcGVyY2xpcCI+PHBhdGggZD0iTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDgiPjwvcGF0aD48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-input--send-button {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2225%22%20height%3D%2225%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22@esc-primary-color-esc%22%20fill%3D%22none%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22/%3E%3Cpath%20d%3D%22M4.698%204.034l16.302%207.966l-16.302%207.966a.503%20.503%200%200%201%20-.546%20-.124a.555%20.555%200%200%201%20-.12%20-.568l2.468%20-7.274l-2.468%20-7.274a.555%20.555%200%200%201%20.12%20-.568a.503%20.503%200%200%201%20.546%20-.124z%22%20fill%3D%22@esc-primary-color-esc%22/%3E%3Cpath%20d%3D%22M6.5%2012h14.5%22%20/%3E%3C/svg%3E') !important;\\n background-size: 82% !important;\\n}\\n#sbz92 .message-input--preform {\\n justify-content: center !important;\\n padding: 11px !important;\\n @spacer 2;\\n}\\n#sbz92 .btn--preform {\\n border-radius: 7px !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n height: 40px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n font-size: 14px !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n background: '@primary_color' !important;\\n width: 60% !important;\\n}\\n#sbz92 .widget-body.embed-chat .message-input {\\n border: 1px solid #e3e3e3 !important;\\n border-radius: 8px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .form-label {\\n margin-top: 15px !important;\\n}\\n#sbz92 .form {\\n border: 1px solid #eeeeee !important;\\n box-sizing: border-box !important;\\n box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15) !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 textarea.form-control {\\n resize: none !important;\\n word-wrap: break-word !important;\\n}\\n#sbz92 .form-control--container {\\n position: relative !important;\\n}\\n#sbz92 input.form-control[disabled] {\\n background: #f9f9f9 !important;\\n}\\n#sbz92 .form-control--container .form-control--check {\\n position: absolute !important;\\n right: 10px !important;\\n top: 10px !important;\\n background-size: 100% 100% !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1QkFBMUQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNoZWNrIj48cG9seWxpbmUgcG9pbnRzPSIyMCA2IDkgMTcgNCAxMiI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .form-control--valid-input--error {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n font-size: 14px !important;\\n padding-top: 5px !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error,\\n#sbz92 input[type='number'].form-control.input--error,\\n#sbz92 input[type='date'].form-control.input--error,\\n#sbz92 textarea.form-control.input--error,\\n#sbz92 select.form-control.input--error {\\n border: 1px solid #dc3545 !important;\\n background: #dd41500f !important;\\n}\\n#sbz92 input[type='text'].form-control,\\n#sbz92 input[type='number'].form-control,\\n#sbz92 input[type='date'].form-control,\\n#sbz92 textarea.form-control,\\n#sbz92 select.form-control {\\n width: 100% !important;\\n border: 1px solid #c4c4c4 !important;\\n border-radius: 8px !important;\\n transition: all 100ms ease !important;\\n padding: 10px 12px !important;\\n}\\n#sbz92 input[type='text'].form-control:hover,\\n#sbz92 input[type='number'].form-control:hover,\\n#sbz92 input[type='date'].form-control:hover,\\n#sbz92 textarea.form-control:hover,\\n#sbz92 select.form-control:hover {\\n border: 1px solid #6c757d !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error:hover,\\n#sbz92 input[type='number'].form-control.input--error:hover,\\n#sbz92 input[type='date'].form-control.input--error:hover,\\n#sbz92 textarea.form-control.input--error:hover,\\n#sbz92 select.form-control.input--error:hover {\\n border: 1px solid #dc3545 !important;\\n}\\n#sbz92 select.form-control {\\n padding: 1px 8px !important;\\n}\\n#sbz92 input[type='date'].form-control {\\n height: 40px !important;\\n width: 100% !important;\\n background-color: #fff !important;\\n}\\n#sbz92 .form-wrapper-attachment input[type='date'].form-control {\\n height: 32px !important;\\n padding-top: 6px !important;\\n padding-bottom: 6px !important;\\n}\\n#sbz92 input[type='text'].form-control:focus,\\n#sbz92 input[type='number'].form-control:focus,\\n#sbz92 input[type='date'].form-control:focus,\\n#sbz92 textarea.form-control:focus,\\n#sbz92 select.form-control:focus {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error:focus,\\n#sbz92 input[type='number'].form-control.input--error:focus,\\n#sbz92 input[type='date'].form-control.input--error:focus,\\n#sbz92 textarea.form-control.input--error:focus,\\n#sbz92 select.form-control.input--error:focus {\\n border: 1px solid #dc3545 !important;\\n}\\n#sbz92 .label {\\n display: block !important;\\n padding-bottom: 6px !important;\\n margin-top: 8px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .form--btn-submit {\\n border-radius: 7px !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n width: 100% !important;\\n}\\n#sbz92 .form .radio {\\n display: block !important;\\n position: relative !important;\\n width: 100% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .form .radio:first-of-type {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form input[type='radio'] {\\n position: absolute !important;\\n visibility: hidden !important;\\n}\\n#sbz92 .form .radio--label {\\n padding-left: 22px !important;\\n display: block !important;\\n position: relative !important;\\n z-index: 9 !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .form .radio--check {\\n display: block !important;\\n position: absolute !important;\\n border: 1px solid #aaa !important;\\n border-radius: 100% !important;\\n height: 16px !important;\\n width: 16px !important;\\n top: 0px !important;\\n left: 0px !important;\\n z-index: 5 !important;\\n transition: border 0.15s linear !important;\\n -webkit-transition: border 0.15s linear !important;\\n}\\n#sbz92 .form .radio--check:hover {\\n border: 1px solid #888 !important;\\n}\\n#sbz92 .form .radio--check::before {\\n display: block !important;\\n position: absolute !important;\\n content: '' !important;\\n border-radius: 100% !important;\\n height: 10px !important;\\n width: 10px !important;\\n top: 2px !important;\\n left: 2px !important;\\n margin: auto !important;\\n transition: background 0.15s linear !important;\\n -webkit-transition: background 0.15s linear !important;\\n}\\n#sbz92 .form input[type='radio']:checked ~ .radio--check {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .form input[type='radio']:checked ~ .radio--check::before {\\n background: '@primary_color' !important;\\n}\\n#sbz92 .form .checkbox {\\n display: block !important;\\n position: relative !important;\\n width: 100% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .form .checkbox:first-of-type {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form input[type='checkbox'] {\\n position: absolute !important;\\n visibility: hidden !important;\\n}\\n#sbz92 .form .checkbox--label {\\n padding-left: 22px !important;\\n display: block !important;\\n position: relative !important;\\n z-index: 9 !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .form .checkbox--check {\\n display: block !important;\\n position: absolute !important;\\n border: 1px solid #aaa !important;\\n border-radius: 4 px !important;\\n height: 16px !important;\\n width: 16px !important;\\n top: 0px !important;\\n left: 0px !important;\\n z-index: 5 !important;\\n transition: border 0.15s linear !important;\\n -webkit-transition: border 0.15s linear !important;\\n}\\n#sbz92 .form .checkbox--check:hover {\\n border: 1px solid #888 !important;\\n}\\n#sbz92 .form .checkbox--check::before {\\n display: block !important;\\n position: absolute !important;\\n content: '' !important;\\n height: 100% !important;\\n width: 100% !important;\\n margin: auto !important;\\n transition: background 0.15s linear !important;\\n -webkit-transition: background 0.15s linear !important;\\n}\\n#sbz92 .form input[type='checkbox']:checked ~ .checkbox--check {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .form input[type='checkbox']:checked ~ .checkbox--check::before {\\n background: '@primary_color' !important;\\n}\\n#sbz92 .form .select .form-control {\\n padding-right: 20px !important;\\n}\\n#sbz92 .form select {\\n /*background: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjQxMDU4IDYuOTExMDdDNC43MzYwMiA2LjU4NTYzIDUuMjYzNjYgNi41ODU2MyA1LjU4OTA5IDYuOTExMDdMOS45OTk4NCAxMS4zMjE4TDE0LjQxMDYgNi45MTEwN0MxNC43MzYgNi41ODU2MyAxNS4yNjM3IDYuNTg1NjMgMTUuNTg5MSA2LjkxMTA3QzE1LjkxNDUgNy4yMzY1MSAxNS45MTQ1IDcuNzY0MTQgMTUuNTg5MSA4LjA4OTU4TDEwLjU4OTEgMTMuMDg5NkMxMC4yNjM3IDEzLjQxNSA5LjczNjAyIDEzLjQxNSA5LjQxMDU4IDEzLjA4OTZMNC40MTA1OCA4LjA4OTU4QzQuMDg1MTQgNy43NjQxNCA0LjA4NTE0IDcuMjM2NTEgNC40MTA1OCA2LjkxMTA3WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+\\\") no-repeat right;*/\\n}\\n#sbz92 .form-require-info--list {\\n background: #fff !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n}\\n#sbz92 .form-require-info--title {\\n font-size: 18px !important;\\n line-height: 20px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n background: #fff !important;\\n border-bottom: 1px solid #f0f0f0 !important;\\n}\\n#sbz92 .form-require-info--item {\\n border-bottom: 1px solid #f0f0f0 !important;\\n}\\n#sbz92 .form-require-info--item:hover {\\n cursor: pointer !important;\\n background: #e0e0e0 !important;\\n}\\n#sbz92 input[type='checkbox'] {\\n background-color: initial !important;\\n cursor: default !important;\\n -webkit-appearance: checkbox !important;\\n box-sizing: border-box !important;\\n margin: 3px 3px 3px 4px !important;\\n padding: initial !important;\\n border: initial !important;\\n}\\n#sbz92 input[type='radio'] {\\n background-color: initial !important;\\n cursor: default !important;\\n -webkit-appearance: radio !important;\\n box-sizing: border-box !important;\\n margin: 3px 3px 0px 5px !important;\\n padding: initial !important;\\n border: initial !important;\\n}\\n#sbz92 option {\\n font-weight: normal !important;\\n display: block !important;\\n white-space: pre !important;\\n min-height: 1.2em !important;\\n padding: 0px 2px 1px !important;\\n}\\n#sbz92 select {\\n -webkit-writing-mode: horizontal-tb !important;\\n text-rendering: auto !important;\\n color: -internal-light-dark-color(black, white) !important;\\n letter-spacing: normal !important;\\n word-spacing: normal !important;\\n text-transform: none !important;\\n text-indent: 0px !important;\\n text-shadow: none !important;\\n display: inline-block !important;\\n text-align: start !important;\\n -webkit-appearance: menulist !important;\\n box-sizing: border-box !important;\\n align-items: center !important;\\n white-space: pre !important;\\n -webkit-rtl-ordering: logical !important;\\n background-color: -internal-light-dark-color(white, black) !important;\\n cursor: default !important;\\n margin: 0em !important;\\n font: 400 13.3333px Arial !important;\\n border-radius: 0px !important;\\n border-width: 1px !important;\\n border-style: solid !important;\\n border-color: #a9a9a9 !important;\\n border-image: initial !important;\\n}\\n#sbz92 select {\\n position: relative !important;\\n display: inline-block !important;\\n border: 2px #cccc solid !important;\\n border-radius: 5px !important;\\n height: 36px !important;\\n line-height: 34px !important;\\n padding: 0 12px !important;\\n font-size: 14px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .custom-select--wrap-selected {\\n display: flex !important;\\n position: relative !important;\\n justify-content: space-between !important;\\n cursor: pointer !important;\\n border: 1px solid #d8d8d8 !important;\\n border-radius: 5px !important;\\n padding: 5px !important;\\n}\\n#sbz92 .custom-select--selected-items {\\n display: flex !important;\\n align-items: center !important;\\n flex-wrap: wrap !important;\\n}\\n#sbz92 .custom-select--selected-item {\\n display: flex !important;\\n align-items: center !important;\\n margin: 3px 3px !important;\\n padding: 1px 6px !important;\\n border-radius: 5px !important;\\n border: 1px solid #d8d8d8 !important;\\n font-size: 14px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n vertical-align: top !important;\\n}\\n#sbz92 .icn-delete:before {\\n display: flex !important;\\n justify-items: center !important;\\n font-size: 12px !important;\\n margin-left: 5px !important;\\n opacity: 0.5 !important;\\n content: '\\\\2715' !important;\\n}\\n#sbz92 .custom-select--wrap-options {\\n display: flex !important;\\n flex-direction: column !important;\\n position: absolute !important;\\n left: 0 !important;\\n top: 100% !important;\\n border: 1px solid #dadce0 !important;\\n -webkit-box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n border-radius: 5px !important;\\n width: 100% !important;\\n background: #fff !important;\\n z-index: 11 !important;\\n max-height: 200px !important;\\n overflow-y: auto !important;\\n}\\n#sbz92 .custom-select--input-search {\\n font-size: 15px !important;\\n padding: 8px !important;\\n border-bottom: 1px solid #d8d8d8 !important;\\n}\\n#sbz92 .custom-select--items-options {\\n margin: 0 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .custom-select--item-options {\\n padding: 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .custom-select--item-options:hover {\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .custom-select--icon-dropdown {\\n margin-left: auto !important;\\n float: right !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .custom-select--icon-dropdown path {\\n d: path('M 7 9.5 L 12 14.5 L 17 9.5 H 7 Z') !important;\\n fill: black !important;\\n}\\n#sbz92 .form-component {\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .form-component:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-component.submitted {\\n margin-bottom: 8px !important;\\n}\\n#sbz92 .form-component.form-component-submit-button {\\n margin-top: 20px !important;\\n}\\n#sbz92 .form-wrapper.form {\\n padding: 20px !important;\\n background-color: #fff !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form {\\n padding: 12px 15px !important;\\n margin-top: 5px !important;\\n box-shadow: 0 0 0 1px #eeeeee !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='text'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='number'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='date'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form select.form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form textarea.form-control {\\n padding: 6px 10px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component {\\n margin-bottom: 12px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.submitted {\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.submitted:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component:first-child .label {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.form-component-submit-button {\\n margin-top: 16px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .label {\\n padding-bottom: 4px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-control--valid-input--error {\\n padding-top: 3px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .btn--start-convo {\\n height: 36px !important;\\n}\\n#sbz92 select.form-control.form-control--empty {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n@media only screen and (min-width: 968px) {\\n #sbz92 .form-radios-wrapper.horizontal {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio {\\n margin-right: 10px;\\n width: 300px;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:first-child {\\n margin-top: 0;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:nth-child(2) {\\n margin-top: 0;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:nth-child(2n) {\\n margin-right: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox {\\n margin-right: 10px;\\n width: 300px;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:first-child {\\n margin-top: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:nth-child(2) {\\n margin-top: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:nth-child(2n) {\\n margin-right: 0;\\n }\\n}\\n#sbz92 .form-ratings-wrapper {\\n display: inline-flex !important;\\n}\\n#sbz92 .star {\\n width: 32px !important;\\n height: 30px !important;\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") !important;\\n background-position: 0px 0px !important;\\n background-size: cover !important;\\n}\\n#sbz92 .form-wrapper-attachment .star-wrapper {\\n padding-right: 12px !important;\\n}\\n#sbz92 .star-wrapper {\\n cursor: pointer !important;\\n padding-right: 20px !important;\\n}\\n#sbz92 .star-wrapper:last-child {\\n padding-right: 0 !important;\\n}\\n#sbz92 .star-wrapper.hovering .star {\\n background-position: -32px 0 !important;\\n}\\n#sbz92 .star-wrapper.selected {\\n cursor: auto !important;\\n}\\n#sbz92 .star-wrapper.selected .star {\\n background-position: -64px 0 !important;\\n}\\n#sbz92 .widget-body--events-container {\\n overflow-x: hidden !important;\\n overflow-y: auto !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n padding-left: 22.5px !important;\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .widget-body--events {\\n padding-top: 20px !important;\\n flex: 1 !important;\\n}\\n#sbz92 .mobile .widget-body--events {\\n display: flex !important;\\n flex-direction: column !important;\\n justify-content: flex-end !important;\\n padding-bottom: 15px !important;\\n}\\n#sbz92 .widget-body--events-container.widget-body--events-container__error {\\n align-items: center !important;\\n justify-content: center !important;\\n}\\n#sbz92 .convo-event {\\n position: relative !important;\\n}\\n#sbz92 .convo-event-time {\\n text-align: center !important;\\n margin-top: 15px !important;\\n}\\n#sbz92 .convo-event-time span {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .file-attachment {\\n padding: 10px !important;\\n border-radius: 10px !important;\\n cursor: pointer !important;\\n margin: 5px 0 0 0 !important;\\n}\\n#sbz92 .file-attachment--agent {\\n background-color: '@primary_color' !important;\\n width: fit-content !important;\\n}\\n#sbz92 .file-attachment--user {\\n background-color: #eeeeee !important;\\n align-self: flex-end !important;\\n}\\n#sbz92 .file-attachment--link {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: center !important;\\n width: fit-content !important;\\n}\\n#sbz92 .file-attachment--agent .file-attachment--filename {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n text-decoration: underline !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n max-width: 200px !important;\\n}\\n#sbz92 .file-attachment--user .file-attachment--filename {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n text-decoration: underline !important;\\n text-overflow: ellipsis !important;\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n max-width: 200px !important;\\n}\\n#sbz92 .file-attachment--download {\\n width: 24px !important;\\n height: 24px !important;\\n border-radius: 30px !important;\\n display: inline-block !important;\\n}\\n#sbz92 .file-attachment--agent .file-attachment--download {\\n background: '@text_color' !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMjY1RkYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWFycm93LWRvd24iPjxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz0iMTkgMTIgMTIgMTkgNSAxMiI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n background-size: 15px 15px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .file-attachment--user .file-attachment--download {\\n background: #c4c4c4 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1hcnJvdy1kb3duIj48bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9IjE5IDEyIDEyIDE5IDUgMTIiPjwvcG9seWxpbmU+PC9zdmc+Cg==') !important;\\n background-size: 15px 15px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .message-text--user {\\n line-height: 1.5 !important;\\n margin: 5px 0 0 !important;\\n display: inline-block !important;\\n font-weight: 500 !important;\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n padding: 12px 16px 12px 16px !important;\\n}\\n#sbz92 .message-text--user.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .message-text--agent.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .message-text--user.message-user--error {\\n background-color: #dc3545 !important;\\n}\\n#sbz92 .message-text--agent.message-text--deleted {\\n opacity: 0.7 !important;\\n font-style: italic !important;\\n}\\n#sbz92 .message-text--agent {\\n line-height: 1.5 !important;\\n white-space: pre-wrap !important;\\n display: inline-block !important;\\n background: '@primary_color_faded' !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n padding: 12px 16px 12px 16px !important;\\n}\\n#sbz92 .message-agent.message-text--agent {\\n max-width: 100% !important;\\n margin-top: 0 !important;\\n}\\n#sbz92 .message-user__container {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: flex-end !important;\\n justify-content: flex-end !important;\\n}\\n#sbz92 .sending_dot.sending_dot__hide {\\n opacity: 0 !important;\\n background-color: #000 !important;\\n}\\n#sbz92 .sending_dot {\\n width: 15px !important;\\n height: 15px !important;\\n margin-right: 5px !important;\\n border-radius: 50% !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNsb2NrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz0iMTIgNiAxMiAxMiAxNiAxNCI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n}\\n#sbz92 .message-user {\\n border-radius: 18px !important;\\n border-bottom-right-radius: 4px !important;\\n max-width: 85% !important;\\n align-self: flex-end !important;\\n word-break: break-word !important;\\n position: relative !important;\\n white-space: pre-wrap !important;\\n}\\n#sbz92 .message-user.message-user-images-container {\\n width: 85% !important;\\n display: flex !important;\\n justify-content: flex-end !important;\\n}\\n#sbz92 .message-user.message-user-audio {\\n flex: 1 !important;\\n}\\n#sbz92 .message-agent {\\n border-radius: 18px !important;\\n border-bottom-left-radius: 4px !important;\\n max-width: 85% !important;\\n word-break: break-word !important;\\n position: relative !important;\\n}\\n#sbz92 a.message_error {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n opacity: 0.8 !important;\\n display: block !important;\\n text-align: end !important;\\n font-size: 13px !important;\\n margin-top: 5px !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 a.message_error:hover {\\n opacity: 1 !important;\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n}\\n#sbz92 .message_error__text {\\n display: inline-block !important;\\n vertical-align: text-top !important;\\n}\\n#sbz92 .message_error__icon {\\n display: inline-block !important;\\n vertical-align: bottom !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZGMzNTQ1IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWFsZXJ0LWNpcmNsZSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjxsaW5lIHgxPSIxMiIgeTE9IjgiIHgyPSIxMiIgeTI9IjEyIj48L2xpbmU+PGxpbmUgeDE9IjEyIiB5MT0iMTYiIHgyPSIxMi4wMSIgeTI9IjE2Ij48L2xpbmU+PC9zdmc+Cgo=') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n}\\n#sbz92 .image-attachment__img {\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n border-radius: 7px !important;\\n border: 1px solid #eeeeee !important;\\n}\\n#sbz92 .audio-attachment {\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n height: 45px !important;\\n display: inline !important;\\n}\\n#sbz92 .audio-attachment__audio {\\n all: inherit !important;\\n width: 100% !important;\\n}\\n#sbz92 .video-attachment {\\n border-radius: 7px !important;\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n}\\n#sbz92 .video-attachment__video {\\n all: inherit !important;\\n width: 100% !important;\\n}\\n#sbz92 .info-message {\\n text-align: center !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n margin: 10px !important;\\n}\\n#sbz92 .message-sender {\\n margin-top: 10px !important;\\n}\\n#sbz92 .message-sender-avatar {\\n border-radius: 50% !important;\\n width: 25px !important;\\n height: 25px !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .message-sender-name {\\n color: #495057 !important;\\n -webkit-text-fill-color: #495057 !important;\\n vertical-align: middle !important;\\n}\\n#sbz92 .message-system {\\n text-align: center !important;\\n margin: 10px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .form-attachment {\\n display: flex !important;\\n flex-direction: column !important;\\n padding: 10px !important;\\n -webkit-box-shadow: 0 0 10px #dee2e6 !important;\\n box-shadow: 0 0 10px #dee2e6 !important;\\n border-radius: 7px !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .form-attachment-field {\\n display: flex !important;\\n flex-direction: column !important;\\n margin-bottom: 0px !important;\\n}\\n#sbz92 .form-attachment-field__title {\\n color: #4c4c4c !important;\\n -webkit-text-fill-color: #4c4c4c !important;\\n}\\n#sbz92 .form-attachment-field__text {\\n width: 100% !important;\\n border: 1px solid #dbdbdb !important;\\n padding: 10px !important;\\n margin: 3px 0px 0px 0px !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 .input--error {\\n border: 1px solid red !important;\\n}\\n#sbz92 .input--success {\\n background-color: #f9f9f9 !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .form-attachment-field__error {\\n color: brown !important;\\n -webkit-text-fill-color: brown !important;\\n float: right !important;\\n}\\n#sbz92 .form-attachment-field__checkbox {\\n width: 100% !important;\\n all: inherit !important;\\n -webkit-appearance: textfield !important;\\n margin-right: 8px !important;\\n}\\n#sbz92 .form-attachment-field__checkbox:hover {\\n cursor: pointer !important;\\n}\\n#sbz92 .form-attachment-field__list-item {\\n display: flex !important;\\n align-items: center !important;\\n margin: 4px !important;\\n margin-left: 0px !important;\\n}\\n#sbz92 .form-attachment-field__radio {\\n width: 100% !important;\\n all: inherit !important;\\n -webkit-appearance: textfield !important;\\n margin-right: 8px !important;\\n}\\n#sbz92 .form-attachment-field__datetime {\\n width: 100% !important;\\n border: 1px solid #dbdbdb !important;\\n padding: 10px !important;\\n margin: 3px 0px 0px 0px !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 .form-attachment--submit-btn {\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n width: 100% !important;\\n margin-top: 10px !important;\\n border-radius: 7px !important;\\n padding: 10px !important;\\n text-align: center !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .form-attachment--submit-btn:hover {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .red {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n}\\n#sbz92 .typing {\\n background-color: #f4f5f7 !important;\\n color: #7a7a7b !important;\\n -webkit-text-fill-color: #7a7a7b !important;\\n padding: 10px !important;\\n opacity: 1 !important;\\n transition: all 0.2s !important;\\n position: absolute !important;\\n bottom: 0px !important;\\n left: 0px !important;\\n width: 100% !important;\\n}\\n#sbz92 .typing--hidden {\\n opacity: 0 !important;\\n display: none !important;\\n}\\n#sbz92 .markdown-message img {\\n max-width: 100% !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .button-attachments {\\n display: block !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .url-button-attachment:first-child {\\n border-top-left-radius: 7px !important;\\n border-top-right-radius: 7px !important;\\n}\\n#sbz92 .url-button-attachment:last-child {\\n border-bottom-left-radius: 7px !important;\\n border-bottom-right-radius: 7px !important;\\n border-bottom: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .agent-message .url-button-attachment {\\n text-decoration: none !important;\\n padding: 10px 18px !important;\\n display: block !important;\\n text-align: center !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border: 1px solid #000 !important;\\n border-radius: 12px !important;\\n text-overflow: ellipsis !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n white-space: nowrap !important;\\n}\\n#sbz92 .agent-message .url-button-attachment:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n border-color: '@primary_color' !important;\\n}\\n#sbz92 .message_quick_replies {\\n display: flex !important;\\n flex-wrap: wrap !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .message_quick_reply {\\n cursor: pointer !important;\\n position: relative !important;\\n padding: 10px 18px !important;\\n margin-top: 8px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border-radius: 12px !important;\\n user-select: none !important;\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n width: fit-content !important;\\n font-weight: 500 !important;\\n max-width: 100% !important;\\n text-overflow: ellipsis !important;\\n border: 1px solid #000 !important;\\n transition: all 100ms ease !important;\\n}\\n#sbz92 .message_quick_reply:hover {\\n background: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n border-color: '@primary_color' !important;\\n}\\n#sbz92 .generic-attachment-container {\\n position: relative !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .generic-attachments {\\n display: block !important;\\n}\\n#sbz92 .generic-attachment {\\n display: flex !important;\\n width: 100% !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n user-select: none !important;\\n cursor: grab !important;\\n}\\n#sbz92 .generic-attachment--element-content {\\n flex: 1 !important;\\n}\\n#sbz92 .generic-attachment--element {\\n border: 1px solid #d8d8d8 !important;\\n background: white !important;\\n border-radius: 7px !important;\\n overflow: hidden !important;\\n width: 220px !important;\\n margin-right: 10px !important;\\n vertical-align: top !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .generic-attachment--element:last-child {\\n margin-right: 0 !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-img {\\n width: 100% !important;\\n height: 150px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment:first-child {\\n border-radius: 0 !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment {\\n padding: 10px !important;\\n display: block !important;\\n padding-top: 9px !important;\\n padding-button: 9px !important;\\n text-align: center !important;\\n border: none !important;\\n border-top: 1px solid #d8d8d8 !important;\\n width: 100% !important;\\n color: #0d6efd !important;\\n -webkit-text-fill-color: #0d6efd !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment:hover {\\n color: #024dbc !important;\\n -webkit-text-fill-color: #024dbc !important;\\n border-color: #d8d8d8 !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-title {\\n padding: 0px 13px !important;\\n margin-top: 13px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n font-weight: 600 !important;\\n font-size: 16px !important;\\n line-height: 20px !important;\\n white-space: normal !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-subtitle {\\n padding: 0px 13px !important;\\n color: gray !important;\\n -webkit-text-fill-color: gray !important;\\n margin-top: 5px !important;\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 4 !important;\\n -webkit-box-orient: vertical !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n}\\n#sbz92 .generic-attachment--element.clickable {\\n cursor: pointer !important;\\n}\\n#sbz92 .widget_body__events__error_msg {\\n margin-top: 50px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n text-align: center !important;\\n}\\n#sbz92 .widget_body__events__error_retry {\\n margin-top: 10px !important;\\n}\\n#sbz92 .generic-attachment-navigator {\\n position: absolute !important;\\n top: 50% !important;\\n transform: translateY(-50%) !important;\\n cursor: pointer !important;\\n width: 20px !important;\\n font-size: 80px !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n color: rgba(255, 255, 255, 0.85) !important;\\n -webkit-text-fill-color: rgba(255, 255, 255, 0.85) !important;\\n text-shadow: 0 10px 25px rgba(0, 0, 0, 0.75) !important;\\n z-index: 999 !important;\\n user-select: none !important;\\n}\\n#sbz92 .generic-attachment-navigator:hover {\\n text-shadow: 0 10px 20px rgba(0, 0, 0, 0.75) !important;\\n color: #ffffff !important;\\n -webkit-text-fill-color: #ffffff !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--disabled {\\n display: none !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--left {\\n left: 2px !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--right {\\n right: 2px !important;\\n}\\n#sbz92 .generic-attachment-navigator-icon {\\n font-size: 80px !important;\\n}\\n#sbz92 .order_attachment__product_img {\\n width: 40px !important;\\n height: 40px !important;\\n margin-right: 10px !important;\\n border-radius: 5px !important;\\n flex-shrink: 0 !important;\\n display: block !important;\\n object-fit: contain !important;\\n background: whitesmoke !important;\\n}\\n#sbz92 .order_attachment__product_name {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .order_attachment__header {\\n padding-bottom: 5px !important;\\n border-bottom: 1px solid #ccc !important;\\n margin-bottom: 5px !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .order_attachment__product_desc {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n color: #999 !important;\\n -webkit-text-fill-color: #999 !important;\\n font-size: 13px !important;\\n}\\n#sbz92 .order_attachment__product {\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 5px !important;\\n margin-bottom: 5 !important;\\n}\\n#sbz92 .order_attachment__text_sm {\\n font-size: 13px !important;\\n}\\n#sbz92 .order_attachment__text_muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .order_attachment__text_truncate {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .order_attachment {\\n margin-top: 10px !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n border: 1px solid #aaa !important;\\n background: white !important;\\n border-radius: 8px !important;\\n width: 220px !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n padding: 10px !important;\\n}\\n#sbz92 .order_attachment__footer {\\n margin-top: 10px !important;\\n padding-top: 10px !important;\\n border-top: 1px solid #ccc !important;\\n}\\n#sbz92 .order_attachment__total {\\n font-size: 16px !important;\\n}\\n#sbz92 .order_attachment__label {\\n font-size: 13px !important;\\n color: #777 !important;\\n -webkit-text-fill-color: #777 !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .order_attachment__label.no_margin {\\n margin-top: 0 !important;\\n}\\n#sbz92 .order_attachment.order_attachment__user {\\n margin-right: 50px !important;\\n align-self: flex-end !important;\\n margin-right: 0 !important;\\n margin-left: 50px !important;\\n align-self: flex-start !important;\\n}\\n#sbz92 .product_attachment {\\n margin-top: 10px !important;\\n border: 1px solid #d8d8d8 !important;\\n background: white !important;\\n border-radius: 7px !important;\\n overflow: hidden !important;\\n width: 200px !important;\\n display: inline-block !important;\\n vertical-align: top !important;\\n transition: all 0.1s !important;\\n}\\n#sbz92 .product_attachment.product_attachment__user {\\n margin-right: 50px !important;\\n align-self: flex-end !important;\\n margin-right: 0 !important;\\n margin-left: 50px !important;\\n align-self: flex-start !important;\\n}\\n#sbz92 .product_attachment__img {\\n width: 200px !important;\\n height: 200px !important;\\n border-bottom: 1px solid #d8d8d8 !important;\\n object-fit: cover !important;\\n display: block !important;\\n}\\n#sbz92 .product_attachment__price {\\n padding-left: 10px !important;\\n}\\n#sbz92 .product_attachment__btns {\\n margin-top: 5px !important;\\n}\\n#sbz92 .product_attachment__btn {\\n border-top: 1px solid #d8d8d8 !important;\\n display: flex !important;\\n padding: 8px 10px !important;\\n align-items: center !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n justify-content: center !important;\\n cursor: pointer !important;\\n text-transform: capitalize !important;\\n}\\n#sbz92 .product_attachment__btn:last-child {\\n margin-right: 0 !important;\\n}\\n#sbz92 .product_attachment__btn:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 a.product_attachment__title {\\n display: block !important;\\n padding: 8px 10px 0 10px !important;\\n font-weight: 500 !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n word-break: break-word !important;\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .product_attachment__subtitle {\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 3 !important;\\n -webkit-box-orient: vertical !important;\\n overflow: hidden !important;\\n padding: 5px 10px !important;\\n color: #aaa !important;\\n -webkit-text-fill-color: #aaa !important;\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .product_attachment__btn_external_link {\\n width: 16px !important;\\n height: 16px !important;\\n margin-left: 5px !important;\\n margin-top: -2px !important;\\n}\\n#sbz92 .agent-convo-event-wrapper {\\n max-width: 85% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .agent-convo-event-wrapper.full {\\n max-width: 100% !important;\\n}\\n#sbz92 .agent-convo-event-inner {\\n position: relative !important;\\n display: inline-block !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-event-actions {\\n position: absolute !important;\\n bottom: -10px !important;\\n opacity: 0.7 !important;\\n left: calc(100% - 25px) !important;\\n display: none !important;\\n border: 1px solid #dee2e6 !important;\\n background-color: white !important;\\n border-radius: 4px !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .message-event-actions.ended {\\n bottom: -10px !important;\\n}\\n#sbz92 .message-event-actions:hover {\\n opacity: 1 !important;\\n}\\n#sbz92 .agent-convo-event-inner:hover .message-event-actions {\\n display: flex !important;\\n}\\n#sbz92 .message-event-actions-static {\\n display: none !important;\\n margin-top: 2px !important;\\n border: none !important;\\n padding: 0 !important;\\n gap: 4px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-actions {\\n display: none !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-actions-static {\\n display: flex !important;\\n position: absolute !important;\\n bottom: -30px !important;\\n left: 0 !important;\\n z-index: 2 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn {\\n padding: 0 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn .message-event-action-btn-svg {\\n width: 24px !important;\\n height: 24px !important;\\n background-position: 2px 2px !important;\\n background-size: 20px 20px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n padding-right: 10px !important;\\n border-radius: 5px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev .message-event-action-btn-svg {\\n width: 24px !important;\\n height: 24px !important;\\n background-position: 2px 2px !important;\\n background-size: 20px 20px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev:hover {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev.message-event-action-btn_like.active {\\n color: #34c759 !important;\\n -webkit-text-fill-color: #34c759 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev.message-event-action-btn_like.active {\\n color: #34c759 !important;\\n -webkit-text-fill-color: #34c759 !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn {\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n cursor: pointer !important;\\n padding: 2px !important;\\n}\\n#sbz92 .message-event-action-btn:hover {\\n background-color: #ececec !important;\\n}\\n#sbz92 .message-event-action-btn.active:hover {\\n background-color: #dbfde3 !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev {\\n padding: 0px !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev.active:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn .message-event-action-btn-svg {\\n width: 20px !important;\\n height: 20px !important;\\n border-radius: 4px !important;\\n background-position: 2px 2px !important;\\n background-size: 16px 16px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IiM2Yzc1N2QiICBzdHJva2Utd2lkdGg9IjIiICBzdHJva2UtbGluZWNhcD0icm91bmQiICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGh1bWItdXAiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDExdjhhMSAxIDAgMCAxIC0xIDFoLTJhMSAxIDAgMCAxIC0xIC0xdi03YTEgMSAwIDAgMSAxIC0xaDNhNCA0IDAgMCAwIDQgLTR2LTFhMiAyIDAgMCAxIDQgMHY1aDNhMiAyIDAgMCAxIDIgMmwtMSA1YTIgMyAwIDAgMSAtMiAyaC03YTMgMyAwIDAgMSAtMyAtMyIgLz48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IiM2Yzc1N2QiICBzdHJva2Utd2lkdGg9IjIiICBzdHJva2UtbGluZWNhcD0icm91bmQiICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGh1bWItZG93biI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTcgMTN2LThhMSAxIDAgMCAwIC0xIC0xaC0yYTEgMSAwIDAgMCAtMSAxdjdhMSAxIDAgMCAwIDEgMWgzYTQgNCAwIDAgMSA0IDR2MWEyIDIgMCAwIDAgNCAwdi01aDNhMiAyIDAgMCAwIDIgLTJsLTEgLTVhMiAzIDAgMCAwIC0yIC0yaC03YTMgMyAwIDAgMCAtMyAzIiAvPjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn-svg.info {\\n background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2Yzc1N2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNyAxMXY4YTEgMSAwIDAgMSAtMSAxaC0yYTEgMSAwIDAgMSAtMSAtMXYtN2ExIDEgMCAwIDEgMSAtMWgzYTQgNCAwIDAgMCA0IC00di0xYTIgMiAwIDAgMSA0IDB2NWgzYTIgMiAwIDAgMSAyIDJsLTEgNWEyIDMgMCAwIDEgLTIgMmgtN2EzIDMgMCAwIDEgLTMgLTMiIC8+PC9zdmc+Cg==') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLWRvd24iPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDEzdi04YTEgMSAwIDAgMCAtMSAtMWgtMmExIDEgMCAwIDAgLTEgMXY3YTEgMSAwIDAgMCAxIDFoM2E0IDQgMCAwIDEgNCA0djFhMiAyIDAgMCAwIDQgMHYtNWgzYTIgMiAwIDAgMCAyIC0ybC0xIC01YTIgMyAwIDAgMCAtMiAtMmgtN2EzIDMgMCAwIDAgLTMgMyIgLz48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.info {\\n background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwMDAiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn.active .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9IiMzNEM3NTkiICBjbGFzcz0iaWNvbiBpY29uLXRhYmxlciBpY29ucy10YWJsZXItZmlsbGVkIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTMgM2EzIDMgMCAwIDEgMi45OTUgMi44MjRsLjAwNSAuMTc2djRoMmEzIDMgMCAwIDEgMi45OCAyLjY1bC4wMTUgLjE3NGwuMDA1IC4xNzZsLS4wMiAuMTk2bC0xLjAwNiA1LjAzMmMtLjM4MSAxLjYyNiAtMS41MDIgMi43OTYgLTIuODEgMi43OGwtLjE2NCAtLjAwOGgtOGExIDEgMCAwIDEgLS45OTMgLS44ODNsLS4wMDcgLS4xMTdsLjAwMSAtOS41MzZhMSAxIDAgMCAxIC41IC0uODY1YTIuOTk4IDIuOTk4IDAgMCAwIDEuNDkyIC0yLjM5N2wuMDA3IC0uMjAydi0xYTMgMyAwIDAgMSAzIC0zeiIgLz48cGF0aCBkPSJNNSAxMGExIDEgMCAwIDEgLjk5MyAuODgzbC4wMDcgLjExN3Y5YTEgMSAwIDAgMSAtLjg4MyAuOTkzbC0uMTE3IC4wMDdoLTFhMiAyIDAgMCAxIC0xLjk5NSAtMS44NWwtLjAwNSAtLjE1di03YTIgMiAwIDAgMSAxLjg1IC0xLjk5NWwuMTUgLS4wMDVoMXoiIC8+PC9zdmc+Cg==') !important;\\n}\\n#sbz92 .message-event-action-btn.active .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzI0ODBfOTUpIj4KPHBhdGggZD0iTTEzIDIxLjAwNzlDMTMuNzY1IDIxLjAwOCAxNC41MDEyIDIwLjcxNTcgMTUuMDU3OSAyMC4xOTFDMTUuNjE0NyAxOS42NjYyIDE1Ljk0OTkgMTguOTQ4NiAxNS45OTUgMTguMTg0OUwxNiAxOC4wMDc5VjE0LjAwNzlIMThDMTguNzM1MSAxNC4wMDggMTkuNDQ0NyAxMy43MzgyIDE5Ljk5NCAxMy4yNDk3QzIwLjU0MzQgMTIuNzYxMiAyMC44OTQyIDEyLjA4OCAyMC45OCAxMS4zNTc5TDIwLjk5NSAxMS4xODQ5TDIxIDExLjAwNzlMMjAuOTggMTAuODExOUwxOS45NzQgNS43Nzk5MkMxOS41OTMgNC4xNTQ5MiAxOC40NzIgMi45ODM5MiAxNy4xNjQgMi45OTk5MkwxNyAzLjAwNzkySDlDOC43NTQ5MSAzLjAwNzk4IDguNTE4MzggMy4wOTgwNCA4LjMzNTMzIDMuMjYxMDFDOC4xNTIyNyAzLjQyMzk3IDguMDM1NDMgMy42NDg0OSA4LjAwNyAzLjg5MTkyTDggNC4wMDc5Mkw4LjAwMSAxMy41NDM5QzguMDAxIDEzLjcxOTUgOC4wNDcyMSAxMy44OTE5IDguMTM0OTggMTQuMDQzOUM4LjIyMjc1IDE0LjE5NTkgOC4zNDg5OCAxNC4zMjIyIDguNTAxIDE0LjQwOTlDOC45MjcyOSAxNC42NTYxIDkuMjg2NCAxNS4wMDM1IDkuNTQ2NjEgMTUuNDIxM0M5LjgwNjgyIDE1LjgzOTIgOS45NjAxMyAxNi4zMTQ3IDkuOTkzIDE2LjgwNTlMMTAgMTcuMDA3OVYxOC4wMDc5QzEwIDE4LjgwMzYgMTAuMzE2MSAxOS41NjY2IDEwLjg3ODcgMjAuMTI5MkMxMS40NDEzIDIwLjY5MTggMTIuMjA0NCAyMS4wMDc5IDEzIDIxLjAwNzlaIiBmaWxsPSIjMzMzMzMzIi8+CjxwYXRoIGQ9Ik01IDE0LjAwODFDNS4yNDQ5MyAxNC4wMDggNS40ODEzNCAxMy45MTgxIDUuNjY0MzcgMTMuNzU1M0M1Ljg0NzQxIDEzLjU5MjYgNS45NjQzNCAxMy4zNjgzIDUuOTkzIDEzLjEyNTFMNiAxMy4wMDgxVjQuMDA4MDZDNS45OTk5NyAzLjc2MzEyIDUuOTEwMDQgMy41MjY3MiA1Ljc0NzI4IDMuMzQzNjhDNS41ODQ1MyAzLjE2MDY1IDUuMzYwMjUgMy4wNDM3MSA1LjExNyAzLjAxNTA2TDUgMy4wMDgwNkg0QzMuNDk1MSAzLjAwNzkzIDMuMDA4ODQgMy4xOTg3OCAyLjYzODgxIDMuNTQyMjlDMi4yNjg3OCAzLjg4NTc5IDIuMDQyMzYgNC4zNTY1NCAyLjAwNSA0Ljg2MDA2TDIgNS4wMTAwNlYxMi4wMTAxQzIuMDAwMDkgMTIuNTE0NSAyLjE5MDc3IDEzLjAwMDIgMi41MzM4NCAxMy4zN0MyLjg3NjkgMTMuNzM5NyAzLjM0NzAyIDEzLjk2NjIgMy44NSAxNC4wMDQxTDQgMTQuMDA5MUw1IDE0LjAwODFaIiBmaWxsPSIjMzMzMzMzIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMjQ4MF85NSI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K') !important;\\n}\\n#sbz92 .inline-time {\\n font-size: 13px !important;\\n margin-top: 6px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n font-weight: 500 !important;\\n opacity: 0.4 !important;\\n}\\n#sbz92 .message-text-inline-image-wrapper {\\n display: block !important;\\n margin-top: 8px !important;\\n margin-bottom: 8px !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-text-inline-image {\\n width: 100% !important;\\n}\\n#sbz92 .text-message-ul {\\n display: block !important;\\n list-style-type: disc !important;\\n margin-block-start: 8px !important;\\n margin-block-end: 8px !important;\\n padding-inline-start: 20px !important;\\n}\\n#sbz92 .text-message-ol {\\n display: block !important;\\n list-style-type: decimal !important;\\n margin-block-start: 8px !important;\\n margin-block-end: 8px !important;\\n padding-inline-start: 20px !important;\\n}\\n#sbz92 .text-message-li {\\n display: list-item !important;\\n}\\n#sbz92 .agent-message .text-message-link {\\n color: #0d6efd !important;\\n -webkit-text-fill-color: #0d6efd !important;\\n font-weight: 400 !important;\\n}\\n#sbz92 .agent-message .text-message-link:hover {\\n color: #024dbc !important;\\n -webkit-text-fill-color: #024dbc !important;\\n}\\n#sbz92 .user-message .text-message-link {\\n text-decoration: underline !important;\\n text-decoration-color: rgba(255, 255, 255, 0.6) !important;\\n text-underline-offset: 4px !important;\\n}\\n#sbz92 .user-message .text-message-link:hover {\\n text-decoration-color: #fff !important;\\n background-color: rgba(255, 255, 255, 0.08) !important;\\n}\\n#sbz92 .message-quote {\\n padding: 6px 10px !important;\\n border-left: 3px solid '@primary_color' !important;\\n background-color: #dfdfdf !important;\\n border-top-left-radius: 0 !important;\\n border-bottom-left-radius: 0 !important;\\n margin-bottom: 8px !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-quote-title {\\n font-weight: 600 !important;\\n font-size: 14px !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .message-quote-content {\\n opacity: 0.7 !important;\\n color: '@secondary_color' !important;\\n -webkit-text-fill-color: '@secondary_color' !important;\\n font-size: 14px !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .message-quote-inner-img {\\n width: 36px !important;\\n height: 36px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .message-quote-inner {\\n margin-left: 15px !important;\\n flex: 1 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .image-attachment.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .file-attachment.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .widget_body_empty_img {\\n max-width: 150px !important;\\n max-height: 150px !important;\\n}\\n#sbz92 .emoji {\\n position: relative !important;\\n width: 20px !important;\\n height: 20px !important;\\n background-size: 100% !important;\\n background-repeat: no-repeat !important;\\n border: none !important;\\n display: inline-block !important;\\n vertical-align: text-bottom !important;\\n}\\n#sbz92 .emoji--angry {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") !important;\\n}\\n#sbz92 .emoji--confused {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") !important;\\n}\\n#sbz92 .emoji--crying,\\n#sbz92 .emoji--cry {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") !important;\\n}\\n#sbz92 .emoji--grinning {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") !important;\\n}\\n#sbz92 .emoji--heart_eyes,\\n#sbz92 .emoji--heart-eyes {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") !important;\\n}\\n#sbz92 .emoji--neutral_face,\\n#sbz92 .emoji--neutral {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \") !important;\\n}\\n#sbz92 .emoji--disappointed,\\n#sbz92 .emoji--sad {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") !important;\\n}\\n#sbz92 .emoji--sleepy {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") !important;\\n}\\n#sbz92 .emoji--smile,\\n#sbz92 .emoji--smiling {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") !important;\\n}\\n#sbz92 .emoji--open_mouth,\\n#sbz92 .emoji--surprised {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") !important;\\n}\\n#sbz92 .emoji--tired_face,\\n#sbz92 .emoji--tired {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \") !important;\\n}\\n#sbz92 .emoji--stuck_out_tongue,\\n#sbz92 .emoji--tongue-out {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \") !important;\\n}\\n#sbz92 .emoji--wink {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \") !important;\\n}\\n#sbz92 .emoji--moyai {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \") !important;\\n}\\n#sbz92 .emoji--dislike,\\n#sbz92 .emoji--unlike,\\n#sbz92 .emoji--thumbsdown {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \") !important;\\n}\\n#sbz92 .emoji--like,\\n#sbz92 .emoji--thumbsup {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \") !important;\\n}\\n#sbz92 .emoji--ok_hand {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \") !important;\\n}\\n#sbz92 .emoji--octopus {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \") !important;\\n}\\n#sbz92 .emoji--pig2 {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") !important;\\n}\\n#sbz92 .emoji--wave {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \") !important;\\n}\\n#sbz92 .emoji--mouse {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \") !important;\\n}\\n#sbz92 .emoji--mouse2 {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \") !important;\\n}\\n#sbz92 .emoji--rat {\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \") !important;\\n}\\n#sbz92 .emoji-picker {\\n display: flex !important;\\n flex-direction: row !important;\\n z-index: 20 !important;\\n position: absolute !important;\\n max-width: 240px !important;\\n background: #fff !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border-radius: 10px !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n right: 15px !important;\\n bottom: 55px !important;\\n flex-wrap: wrap !important;\\n padding: 10px !important;\\n justify-content: space-between !important;\\n align-items: center !important;\\n}\\n#sbz92 .emoji-picker--item {\\n background-size: 100% !important;\\n width: 30px !important;\\n height: 30px !important;\\n position: relative !important;\\n background-repeat: no-repeat !important;\\n display: inline-block !important;\\n vertical-align: text-bottom !important;\\n margin: 5px !important;\\n cursor: pointer !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .emoji-picker-background-item {\\n background-size: 50% !important;\\n width: 40px !important;\\n height: 40px !important;\\n border-radius: 100% !important;\\n}\\n#sbz92 .emoji-picker-background-item:hover {\\n background-color: #dee2e6 !important;\\n}\\n#sbz92 .convo-list {\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n width: 100% !important;\\n justify-content: space-between !important;\\n overflow: auto !important;\\n margin-top: -60px !important;\\n padding-left: 22.5px !important;\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .convo-list--list {\\n background: #fff !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n}\\n#sbz92 .convo-list--title {\\n font-weight: 500 !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n background: #fff !important;\\n border-bottom: 1px solid #f0f0f0 !important;\\n padding: 15px !important;\\n}\\n#sbz92 .convo-list--container {\\n border-radius: 10px !important;\\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1) !important;\\n overflow: auto !important;\\n display: flex !important;\\n flex-direction: column !important;\\n user-select: none !important;\\n}\\n#sbz92 .convo-list--footer {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n margin-top: 22.5px !important;\\n}\\n#sbz92 .convo-list--convo-last-info {\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n justify-content: center !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n margin-left: 15px !important;\\n}\\n#sbz92 .convo-list--convo-last-message {\\n font-weight: normal !important;\\n flex: 1 !important;\\n cursor: pointer !important;\\n display: flex !important;\\n width: 100% !important;\\n overflow: hidden !important;\\n align-items: center !important;\\n}\\n#sbz92 .convo-list--convo-last-mes {\\n text-overflow: ellipsis !important;\\n opacity: 0.6 !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: normal !important;\\n}\\n#sbz92 .convo-list--convo-title {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .convo-list--convo-completed {\\n width: 14px !important;\\n}\\n#sbz92 .convo-list--convo-name {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n flex: 1 !important;\\n margin-right: 16px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .convo-list--item {\\n cursor: pointer !important;\\n border-bottom: 1px solid '@primary_color_faded' !important;\\n padding: 15px !important;\\n display: flex !important;\\n flex-direction: row !important;\\n transition: background 0.15s ease !important;\\n}\\n#sbz92 .convo-list--item:hover {\\n background: '@primary_color_faded' !important;\\n}\\n#sbz92 .convo-list--convo-time span {\\n font-size: 14px !important;\\n line-height: 20px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n opacity: 0.6 !important;\\n min-width: 70px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .convo-list--item-unread {\\n width: 8px !important;\\n height: 8px !important;\\n background: #dc3545 !important;\\n border-radius: 50% !important;\\n margin-left: 15px !important;\\n align-self: center !important;\\n}\\n#sbz92 .convo-list--item-avatar {\\n width: 32px !important;\\n height: 32px !important;\\n}\\n#sbz92 .widget-body--empty {\\n display: flex !important;\\n flex: 1 !important;\\n justify-content: center !important;\\n align-items: center !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .widget-body--empty-text {\\n color: #343a40 !important;\\n -webkit-text-fill-color: #343a40 !important;\\n margin-top: 30px !important;\\n text-align: center !important;\\n}\\n#sbz92 .widget-body--empty-icon {\\n width: 128px !important;\\n height: 128px !important;\\n -webkit-mask-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cg%20data-name%3D%22Layer%202%22%3E%3Cpath%20d%3D%22M130.9%20366.9a9.9%209.9%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.33%2010.33%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.52%2010.52%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.33%2010.33%200%200%200-7.1%202.9zM483.7%20282a183.07%20183.07%200%200%200%2028.3-98C512%2082.5%20429.5%200%20328%200a183.16%20183.16%200%200%200-96%2027%2010%2010%200%200%200%2010.5%2017.1A162.67%20162.67%200%200%201%20328%2020c90.4%200%20164%2073.6%20164%20164a162.73%20162.73%200%200%201-27.9%2091.5%2010.07%2010.07%200%200%200%20.3%2011.6l11%2040.9-44-11.8a10%2010%200%200%200-8.4%201.5%20164.32%20164.32%200%200%201-151.8%2020.2%20138.68%20138.68%200%200%200-97.1-97.1%20164.31%20164.31%200%200%201%2014.5-143.2%2010%2010%200%200%200-17-10.6%20184%20184%200%200%200-19.9%20149.6c-4.5-.4-9.1-.7-13.7-.7C61.9%20236%200%20297.9%200%20374a136.88%20136.88%200%200%200%2022.9%2076.1L12.2%20490a10%2010%200%200%200%2012.3%2012.3l40.9-11a137.71%20137.71%200%200%200%20146.5-.8%2010%2010%200%200%200-10.7-16.9%20118.09%20118.09%200%200%201-128.6-1.5%209.73%209.73%200%200%200-8.1-1.3L36%20478.5l7.4-27.7a10%2010%200%200%200-1.5-8.4%20117.95%20117.95%200%201%201%20207-28%2010%2010%200%200%200%2018.8%206.8%20137.72%20137.72%200%200%200%208.3-47.3%20124.44%20124.44%200%200%200-.7-13.7%20183.93%20183.93%200%200%200%20155.3-23.6l56.2%2015.1a10%2010%200%200%200%2012.3-12.3zm-246%20162.2a10.52%2010.52%200%200%200-7.1%202.9%209.73%209.73%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.52%2010.52%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%209.9%209.9%200%200%200-10-10zM205.3%2070.7a10.52%2010.52%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.14%2010.14%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.52%2010.52%200%200%200-7.1%202.9%209.9%209.9%200%200%200-2.9%207.1%2010.52%2010.52%200%200%200%202.9%207.1%209.9%209.9%200%200%200%207.1%202.9zm-19.4%20296.2a9.9%209.9%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.33%2010.33%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.33%2010.33%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.33%2010.33%200%200%200-7.1%202.9zm210.8-201.1a9.8%209.8%200%200%200%205.2-1.5l1.3-.8a9.92%209.92%200%200%200%203.3-13.7%2010.06%2010.06%200%200%200-13.8-3.3l-1.3.8a10%2010%200%200%200%205.3%2018.5zm-68.1%20107.4a58%2058%200%200%200%2057.9-57.9%207%207%200%200%200-7-7H277.7a7%207%200%200%200-7%207%2058%2058%200%200%200%2057.9%2057.9zm-43.5-50.9h87.1l-1%203.7a43.93%2043.93%200%200%201-85.2%200zm-25.8-56.5a9.8%209.8%200%200%200%205.2-1.5l1.3-.8a9.92%209.92%200%200%200%203.3-13.7%2010.06%2010.06%200%200%200-13.8-3.3l-1.3.8a10%2010%200%200%200%205.3%2018.5zM75.9%20366.9A9.9%209.9%200%200%200%2073%20374a10.33%2010.33%200%200%200%202.9%207.1A9.73%209.73%200%200%200%2083%20384a10.33%2010.33%200%200%200%207.1-2.9A9.73%209.73%200%200%200%2093%20374a10.33%2010.33%200%200%200-2.9-7.1A9.9%209.9%200%200%200%2083%20364a10.33%2010.33%200%200%200-7.1%202.9z%22%20fill%3D%22%234285f4%22%20data-name%3D%22Capa%201%22/%3E%3C/g%3E%3C/svg%3E') !important;\\n border-radius: 0 !important;\\n background-color: '@primary_color' !important;\\n}\\n#sbz92 .mobile .widget-container {\\n border-radius: 15px 15px 0 0 !important;\\n max-height: 50vh !important;\\n max-height: 50dvh !important;\\n margin-bottom: 0 !important;\\n top: auto !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n width: 100% !important;\\n height: 50vh !important;\\n height: 50dvh !important;\\n opacity: 1 !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.15s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .mobile .widget-container.embed-chat {\\n border-radius: 0 !important;\\n max-height: 100% !important;\\n top: 0 !important;\\n height: 100% !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--left {\\n left: 0 !important;\\n right: 0 !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--right {\\n right: 0 !important;\\n left: 0 !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--hide {\\n opacity: 0 !important;\\n transform: translateY(calc(100% + 20px)) !important;\\n visibility: hidden !important;\\n transition: opacity 0.15s cubic-bezier(1, 0.5, 0.8, 1), transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), visibility 0.15s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .widget-container.widget-container--left {\\n left: '@desktop_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .widget-container.widget-container--right {\\n right: '@desktop_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .widget-container {\\n max-height: 100% !important;\\n max-height: '@desktop_widget_max_height' !important;\\n max-width: 100% !important;\\n background: #fff !important;\\n z-index: '@z_index_3' !important;\\n border-radius: 15px !important;\\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.13) !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n position: '@widget_position' !important;\\n margin-bottom: '@desktop_button.margin_y' !important;\\n width: '@width' !important;\\n height: '@height' !important;\\n bottom: 0 !important;\\n opacity: 1 !important;\\n transform: translateY(0) !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.2s cubic-bezier(1, 0.5, 0.8, 1), scale 0.15s ease !important;\\n visibility: visible !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-container.widget-container--full {\\n max-height: 100% !important;\\n height: 100% !important;\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-container.widget-container--hide {\\n opacity: 0 !important;\\n transform: translateY(20px) !important;\\n visibility: hidden !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.1s cubic-bezier(1, 0.5, 0.8, 1), visibility 0.1s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .btn--start-convo {\\n border-radius: 7px !important;\\n flex-shrink: 0 !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n height: 42px !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n font-size: 16px !important;\\n font-weight: 500 !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n background: '@primary_color' !important;\\n width: 100% !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n transition: filter 250ms ease !important;\\n}\\n#sbz92 .btn--start-convo::after {\\n display: none !important;\\n}\\n#sbz92 .btn--start-convo:hover {\\n filter: brightness(1.1) !important;\\n}\\n#sbz92 .btn--start-convo:disabled {\\n opacity: 0.5 !important;\\n cursor: default !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .widget-body.widget-body--none {\\n display: none !important;\\n}\\n#sbz92 .widget-body {\\n flex: 1 !important;\\n flex-grow: 1 !important;\\n z-index: -1 !important;\\n width: 100% !important;\\n overflow-y: auto !important;\\n flex-direction: column !important;\\n display: flex !important;\\n position: relative !important;\\n}\\n#sbz92 .embed-chat .widget-body--events {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .embed-chat .message-input {\\n max-width: 600px !important;\\n margin: 20px auto !important;\\n}\\n#sbz92 .embed-chat .widget-header--inner {\\n max-width: 100% !important;\\n width: 600px !important;\\n}\\n#sbz92 .embed-chat .widget-body--content {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .embed-chat .convo-list {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .widget-body--content {\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n flex: 1 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n position: relative !important;\\n min-height: 0 !important;\\n}\\n#sbz92 .poweredby {\\n margin-bottom: 15px !important;\\n text-align: center !important;\\n}\\n#sbz92 .poweredby .poweredby--text {\\n text-decoration: none !important;\\n font-size: 13px !important;\\n color: #7c7c7c !important;\\n -webkit-text-fill-color: #7c7c7c !important;\\n vertical-align: baseline !important;\\n}\\n#sbz92 .poweredby .poweredby--text .poweredby--subiz-logo {\\n opacity: 0.7 !important;\\n margin-top: -1px !important;\\n height: 12px !important;\\n}\\n#sbz92 .poweredby .poweredby--text:hover {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n}\\n#sbz92 .poweredby .poweredby--text:hover .poweredby--subiz-logo {\\n opacity: 1 !important;\\n}\\n#sbz92 .empty-container {\\n display: flex !important;\\n justify-content: center !important;\\n flex-direction: column !important;\\n margin-top: 30px !important;\\n margin-bottom: 30px !important;\\n}\\n#sbz92 .empty-desc {\\n text-align: center !important;\\n margin: 30px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .chat-button--white-bg {\\n display: none !important;\\n z-index: -1 !important;\\n}\\n#sbz92 .chat-button--white-bg--mask-only {\\n background: white !important;\\n width: 66px !important;\\n height: 66px !important;\\n top: 2px !important;\\n left: 2px !important;\\n position: absolute !important;\\n border-radius: 50% !important;\\n display: block !important;\\n}\\n#sbz92 .mobile .chat-button--default {\\n width: '@mobile_button.width' !important;\\n height: '@mobile_button.height' !important;\\n background: '@background' !important;\\n border-radius: '@mobile_button.border_radius' !important;\\n}\\n#sbz92 .mobile .widget-layout {\\n bottom: '@mobile_button.margin_y' !important;\\n}\\n#sbz92 .mobile .widget-layout.widget-layout--left {\\n left: '@mobile_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .mobile .widget-layout.widget-layout--right {\\n right: '@mobile_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .mobile .chat-button--img {\\n min-width: '@mobile_button.width' !important;\\n}\\n#sbz92 .chat-button {\\n cursor: pointer !important;\\n position: relative !important;\\n scale: 1 !important;\\n transition: filter 250ms ease, opacity 0.15s ease-in, scale 0.125s ease-in-out, transform 0.2s ease-in-out !important;\\n}\\n#sbz92 .chat-button.hidden {\\n opacity: 0 !important;\\n}\\n#sbz92 .chat-button:hover {\\n filter: brightness(1.1) !important;\\n scale: 1.05 !important;\\n}\\n#sbz92 .chat-button--img {\\n opacity: 0 !important;\\n min-width: '@desktop_button.width' !important;\\n display: block !important;\\n}\\n#sbz92 .chat-button.chat-button--left {\\n float: left !important;\\n}\\n#sbz92 .chat-button.chat-button--right {\\n float: right !important;\\n}\\n#sbz92 .widget-layout {\\n z-index: '@z_index_2' !important;\\n position: '@widget_position' !important;\\n bottom: '@desktop_button.margin_y' !important;\\n transition: opacity 150ms !important;\\n opacity: 1 !important;\\n}\\n#sbz92 .widget-layout.widget-layout--hidden {\\n opacity: 0 !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .widget-layout.widget-layout--left {\\n left: '@desktop_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .widget-layout.widget-layout--right {\\n right: '@desktop_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .chat-button--unread {\\n position: absolute !important;\\n right: 0px !important;\\n top: -5px !important;\\n background: #dc3545 !important;\\n padding-left: 5px !important;\\n padding-right: 5px !important;\\n padding-top: 2px !important;\\n padding-bottom: 2px !important;\\n border-radius: 5px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n}\\n#sbz92 .widget-preview {\\n z-index: '@z_index_3' !important;\\n background: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border-radius: 15px !important;\\n max-width: 100% !important;\\n width: 340px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .widget-preview.widget-preview--hidden {\\n display: none !important;\\n}\\n#sbz92 .widget-preview--btn-close {\\n cursor: pointer !important;\\n opacity: 0.5 !important;\\n align-self: flex-start !important;\\n background-color: #e5e5e5 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n background-size: 16px 16px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n border-radius: 100% !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .widget-preview--btn-close:hover {\\n opacity: 1 !important;\\n}\\n#sbz92 .widget-preview--avatar {\\n width: 45px !important;\\n height: 45px !important;\\n border: 1px solid rgba(31, 54, 90, 0.1) !important;\\n border-radius: 100% !important;\\n margin-right: 15px !important;\\n}\\n#sbz92 .widget-preview--body {\\n display: flex !important;\\n padding: 15px !important;\\n}\\n#sbz92 .widget-preview--title {\\n display: block !important;\\n font-size: 15px !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n margin-bottom: 5px !important;\\n opacity: 0.7 !important;\\n}\\n#sbz92 .widget-preview--content {\\n cursor: pointer !important;\\n flex: 1 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-preview--message {\\n white-space: pre-wrap !important;\\n word-wrap: break-word !important;\\n font-weight: 500 !important;\\n font-size: 16px !important;\\n display: block !important;\\n margin: 0 !important;\\n margin-bottom: 0px !important;\\n max-height: 78px !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-preview--action {\\n border-top: 1px solid #f0f0f0 !important;\\n cursor: pointer !important;\\n padding: 13px !important;\\n}\\n#sbz92 .widget-preview--action-text {\\n display: block !important;\\n text-align: center !important;\\n font-weight: 500 !important;\\n font-size: 16px !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n margin: 0 !important;\\n}\\n#sbz92 .widget-internet-status {\\n position: absolute !important;\\n bottom: 0 !important;\\n left: 0 !important;\\n width: 100% !important;\\n font-size: 14px !important;\\n z-index: 10 !important;\\n text-align: center !important;\\n padding: 6px 5px !important;\\n}\\n#sbz92 .widget-internet-status.negative {\\n background-color: #212325 !important;\\n color: #fff !important;\\n}\\n#sbz92 .widget-internet-status.positive {\\n background-color: #19b600 !important;\\n color: #fff !important;\\n}\\n#sbz92 .widget-preview-text-message--header {\\n display: flex !important;\\n overflow: hidden !important;\\n align-items: center !important;\\n width: 100% !important;\\n}\\n#sbz92 .widget-preview-text-message--header .widget-preview--avatar {\\n width: 24px !important;\\n height: 24px !important;\\n flex-shrink: 0 !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .widget-preview-text-message--author {\\n flex: 1 !important;\\n overflow: hidden !important;\\n display: flex !important;\\n align-items: center !important;\\n}\\n#sbz92 .widget-preview-text-message--author .badge {\\n margin-left: 10px !important;\\n}\\n#sbz92 .widget-preview-text-message--author-text {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n line-height: 1.5 !important;\\n color: '@secondary_color' !important;\\n -webkit-text-fill-color: '@secondary_color' !important;\\n}\\n#sbz92 .widget-preview-text-message--content {\\n margin-top: 10px !important;\\n white-space: pre-wrap !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper {\\n z-index: '@z_index_3' !important;\\n width: 100% !important;\\n margin-bottom: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: flex-start !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.right {\\n align-items: flex-end !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal {\\n flex-direction: row !important;\\n flex-wrap: wrap !important;\\n align-items: center !important;\\n gap: 10px !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal.right {\\n justify-content: flex-end !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal.left {\\n justify-content: flex-start !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal .widget-preview-quick-reply-item {\\n margin: 0 !important;\\n max-width: 200px !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n padding: 6px 15px !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal .widget-preview-quick-reply-item:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item {\\n border-radius: 20px !important;\\n padding: 8px 20px !important;\\n background: #fff !important;\\n border: 1.5px solid !important;\\n border-color: '@primary_color' !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n margin-bottom: 15px !important;\\n cursor: pointer !important;\\n transition: 0.3s ease !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item:hover {\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n background-color: '@primary_color' !important;\\n}\\n#sbz92 .widget-preview-image-wrapper {\\n z-index: '@z_index_3' !important;\\n width: 100% !important;\\n margin-bottom: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: flex-start !important;\\n}\\n#sbz92 .widget-preview-image-wrapper.right {\\n align-items: flex-end !important;\\n}\\n#sbz92 .widget-preview-image-item {\\n max-width: 300px !important;\\n border-radius: 15px !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border: 1px solid #dee2e6 !important;\\n overflow: hidden !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-preview-image-item img {\\n width: 100% !important;\\n max-height: 300px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .widget-preview-text-message {\\n z-index: '@z_index_3' !important;\\n background: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border: 1px solid #dee2e6 !important;\\n border-radius: 15px !important;\\n max-width: 100% !important;\\n min-width: 210px !important;\\n margin-bottom: 15px !important;\\n padding: 15px 20px !important;\\n positive: relative !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-preview-text-message.right {\\n border-bottom-right-radius: 8px !important;\\n}\\n#sbz92 .widget-preview-text-message.left {\\n border-bottom-left-radius: 8px !important;\\n}\\n#sbz92 .widget-preview-new-wrapper {\\n max-width: '@preview_max_width' !important;\\n position: relative !important;\\n opacity: 1 !important;\\n transition: opacity 0.15s ease-in, transform 0.15s ease-in !important;\\n transform: translateY(0) !important;\\n}\\n#sbz92 .widget-preview-new-wrapper.hidden {\\n transform: translateY(20px) !important;\\n transition: opacity 0.15s ease-out, transform 0.15s ease-out !important;\\n opacity: 0 !important;\\n}\\n#sbz92 .widget-preview-new-wrapper:hover .widget-preview-x-wrapper {\\n display: flex !important;\\n}\\n#sbz92 .widget-preview-x-wrapper {\\n display: none !important;\\n justify-content: flex-start !important;\\n width: calc(100% + 40px) !important;\\n position: absolute !important;\\n padding: 15px 20px !important;\\n left: -20px !important;\\n bottom: 100% !important;\\n}\\n#sbz92 .widget-preview-x-wrapper.mobile {\\n display: flex !important;\\n}\\n#sbz92 .widget-preview-x-wrapper.right {\\n justify-content: flex-end !important;\\n left: unset !important;\\n right: -20px !important;\\n}\\n#sbz92 .widget-preview-x-wrapper .widget-preview--btn-close {\\n opacity: 1 !important;\\n width: 32px !important;\\n height: 32px !important;\\n border: 1px solid #ececec !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n background-color: #00000040 !important;\\n background-size: 16px 16px !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNlY2VjZWMiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .widget-preview-x-wrapper .widget-preview--btn-close:hover {\\n border-color: #fff !important;\\n background-color: #00000066 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .rating--overlay {\\n position: absolute !important;\\n height: 100% !important;\\n width: 100% !important;\\n background: black !important;\\n opacity: 0.3 !important;\\n top: 0 !important;\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 9 !important;\\n}\\n#sbz92 .rating {\\n border-top-left-radius: 10px !important;\\n border-top-right-radius: 10px !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n height: 400px !important;\\n max-height: 80% !important;\\n width: 100% !important;\\n bottom: 0 !important;\\n /* centering */\\n left: 0 !important;\\n background: white !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .rating .rating--comment {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n resize: none !important;\\n margin-left: 20px !important;\\n margin-right: 20px !important;\\n border: 2px solid lightgray !important;\\n border-radius: 5px !important;\\n padding: 10px !important;\\n height: 60px !important;\\n min-height: 60px !important;\\n}\\n#sbz92 .rating .rating--close-btn {\\n right: 20px !important;\\n top: -2px !important;\\n width: 22px !important;\\n height: 22px !important;\\n position: absolute !important;\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23acacac%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22feather%20feather-x%22%3E%3Cline%20x1%3D%2218%22%20y1%3D%226%22%20x2%3D%226%22%20y2%3D%2218%22%3E%3C/line%3E%3Cline%20x1%3D%226%22%20y1%3D%226%22%20x2%3D%2218%22%20y2%3D%2218%22%3E%3C/line%3E%3C/svg%3E') !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .rating .rating--close-btn:hover {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23a0a0a0%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22feather%20feather-x%22%3E%3Cline%20x1%3D%2218%22%20y1%3D%226%22%20x2%3D%226%22%20y2%3D%2218%22%3E%3C/line%3E%3Cline%20x1%3D%226%22%20y1%3D%226%22%20x2%3D%2218%22%20y2%3D%2218%22%3E%3C/line%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .rating .rating--handle:hover .rating--thumb {\\n background: #e0e0e0 !important;\\n}\\n#sbz92 .rating .rating--thumb {\\n width: 70px !important;\\n height: 6px !important;\\n background: #eaeaea !important;\\n border-radius: 5px !important;\\n margin: 0 auto !important;\\n cursor: grabbing !important;\\n margin-top: 8px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .rating .rating--content {\\n display: flex !important;\\n flex: 1 !important;\\n flex-grow: 1 !important;\\n height: calc(100% - 40px) !important;\\n flex-direction: column !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .rating .rating--heading {\\n margin: 0 !important;\\n font-weight: 500 !important;\\n font-size: 20px !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n flex-grow: 1 !important;\\n position: relative !important;\\n}\\n#sbz92 .rating .rating--description {\\n text-align: center !important;\\n flex-grow: 1 !important;\\n font-size: 15px !important;\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 10px !important;\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .rating .rating-faces-container {\\n flex: 5 !important;\\n display: flex !important;\\n justify-content: space-around !important;\\n align-items: center !important;\\n margin: 10px 10px !important;\\n}\\n#sbz92 .rating .rating-face-container {\\n padding: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n cursor: pointer !important;\\n border-radius: 10px !important;\\n user-select: none !important;\\n -webkit-transition: all 0.1s !important;\\n transition: all 0.1s !important;\\n}\\n#sbz92 .rating .rating-face-container:hover {\\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1) !important;\\n}\\n#sbz92 .rating .rating-face--text {\\n margin-top: 10px !important;\\n margin-bottom: 0px !important;\\n font-size: 13px !important;\\n color: #4d4d4d !important;\\n -webkit-text-fill-color: #4d4d4d !important;\\n}\\n#sbz92 .rating .rating-no-thanks {\\n flex: 10 !important;\\n text-align: center !important;\\n cursor: pointer !important;\\n display: flex !important;\\n justify-content: center !important;\\n align-items: flex-end !important;\\n color: #acacac !important;\\n -webkit-text-fill-color: #acacac !important;\\n}\\n#sbz92 .rating .rating-no-thanks:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .text__danger {\\n color: #dc3545 !important;\\n}\\n#sbz92 .extension--close-btn {\\n background: #00000088 !important;\\n border-radius: 8px !important;\\n color: #ffffffaa !important;\\n -webkit-text-fill-color: #ffffffaa !important;\\n right: 10px !important;\\n top: -35px !important;\\n font-size: 14px !important;\\n position: absolute !important;\\n padding: 5px 15px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .extension--close-btn:hover {\\n background: #000000 !important;\\n color: #ffffff !important;\\n -webkit-text-fill-color: #ffffff !important;\\n}\\n#sbz92 .extension--handle {\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .extension--handle:hover .extension--thumb {\\n background: #e0e0e0 !important;\\n}\\n#sbz92 .extension--thumb {\\n width: 70px !important;\\n cursor: grabbing !important;\\n margin: 0 auto !important;\\n height: 6px !important;\\n background: #eaeaea !important;\\n border-radius: 5px !important;\\n flex: 1 !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .extension {\\n border-top-left-radius: 10px !important;\\n position: absolute !important;\\n border-top-right-radius: 10px !important;\\n width: 100% !important;\\n bottom: 0 !important;\\n /* centering */\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .extension--overlay {\\n position: absolute !important;\\n height: 100% !important;\\n width: 100% !important;\\n background: black !important;\\n opacity: 0.3 !important;\\n top: 0 !important;\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 9 !important;\\n}\\n#sbz92 .order__footer {\\n margin-top: 40px !important;\\n color: #888 !important;\\n -webkit-text-fill-color: #888 !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .order__footer_delimiter {\\n width: 1px !important;\\n height: 15px !important;\\n border-right: 1px solid #bbb !important;\\n}\\n#sbz92 .order__footer_link {\\n padding: 0 10px !important;\\n font-size: 14px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order__footer_link:hover {\\n text-decoration: none !important;\\n color: #555 !important;\\n -webkit-text-fill-color: #555 !important;\\n}\\n#sbz92 .desktop.order {\\n border-radius: 0 !important;\\n width: 780px !important;\\n margin: 0 auto !important;\\n height: 100% !important;\\n}\\n#sbz92 .desktop.order .order_section__line {\\n display: none !important;\\n}\\n#sbz92 .desktop.order .desktop_order__heading {\\n line-height: 20px !important;\\n}\\n#sbz92 .desktop.order .order_attachment__product_img {\\n width: 50px !important;\\n height: 50px !important;\\n}\\n#sbz92 .desktop.order .order_label {\\n font-weight: 500 !important;\\n margin-top: 30px !important;\\n margin-bottom: 10px !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .desktop.order .order_label:first-child {\\n margin-top: 0 !important;\\n}\\n#sbz92 .desktop.order .order_recap {\\n margin-top: 0px !important;\\n background: #f4f4f4 !important;\\n margin-top: 20px !important;\\n width: 270px !important;\\n box-shadow: 0 0 0 1px hsla(0, 0%, 69%, 0.2), 0 15px 35px 0 rgba(49, 49, 93, 0.08), 0 5px 15px 0 rgba(0, 0, 0, 0.06) !important;\\n border-radius: 6px !important;\\n background-color: #fff !important;\\n padding: 32px 32px 20px !important;\\n}\\n#sbz92 .desktop.order .order_acc_header {\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 20px !important;\\n}\\n#sbz92 .desktop.order .order_acc_logo {\\n height: 50px !important;\\n}\\n#sbz92 .desktop.order .order_acc_name {\\n font-size: 16px !important;\\n margin-left: 10px !important;\\n border-left: 1px solid #aaa !important;\\n padding-left: 10px !important;\\n}\\n#sbz92 .desktop.order .order_summary_line {\\n align-items: center !important;\\n overflow: hidden !important;\\n padding: 5px 0 !important;\\n display: flex !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .desktop_order__content {\\n display: flex !important;\\n}\\n#sbz92 .order {\\n width: 100% !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .order .ship_card {\\n display: flex !important;\\n align-items: center !important;\\n overflow: hidden !important;\\n width: 190px !important;\\n cursor: pointer !important;\\n padding: 10px 15px !important;\\n box-shadow: none !important;\\n border: 2px solid #eee !important;\\n color: #777 !important;\\n -webkit-text-fill-color: #777 !important;\\n margin-top: 5px !important;\\n border-radius: 8px !important;\\n background: white !important;\\n transition: all 150ms ease-out !important;\\n}\\n#sbz92 .order .ship_card:hover {\\n color: #555 !important;\\n -webkit-text-fill-color: #555 !important;\\n border: 2px solid #aaa !important;\\n}\\n#sbz92 .order .ship_card.ship_card__active {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n border: 2px solid #777 !important;\\n background: #fafafa !important;\\n}\\n#sbz92 .order .order_ship_icon {\\n margin-top: -3px !important;\\n width: 15px !important;\\n height: 15px !important;\\n opacity: 0.6 !important;\\n}\\n#sbz92 .order .card_section {\\n margin-top: 20px !important;\\n max-width: 500px !important;\\n box-shadow: 0 0 0 1px hsla(0, 0%, 69%, 0.2), 0 15px 35px 0 rgba(49, 49, 93, 0.08), 0 5px 15px 0 rgba(0, 0, 0, 0.06) !important;\\n border-radius: 6px !important;\\n background-color: #fff !important;\\n padding: 32px !important;\\n}\\n#sbz92 .order input[type='text'].form-control,\\n#sbz92 .order input[type='number'].form-control,\\n#sbz92 .order input[type='date'].form-control,\\n#sbz92 .order textarea.form-control,\\n#sbz92 .order select.form-control {\\n background: #f4f4f4 !important;\\n border: 1px solid transparent !important;\\n padding: 7px 10px !important;\\n}\\n#sbz92 .order input[type='text'].form-control:hover,\\n#sbz92 .order input[type='number'].form-control:hover,\\n#sbz92 .order input[type='date'].form-control:hover,\\n#sbz92 .order textarea.form-control:hover,\\n#sbz92 .order select.form-control:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .order input[type='text'].form-control:focus,\\n#sbz92 .order input[type='number'].form-control:focus,\\n#sbz92 .order input[type='date'].form-control:focus,\\n#sbz92 .order textarea.form-control:focus,\\n#sbz92 .order select.form-control:focus,\\n#sbz92 .order input[type='text'].form-control:active,\\n#sbz92 .order input[type='number'].form-control:active,\\n#sbz92 .order input[type='date'].form-control:active,\\n#sbz92 .order textarea.form-control:active,\\n#sbz92 .order select.form-control:active {\\n background: #eee !important;\\n}\\n#sbz92 .order input[type='text'].form-control.err,\\n#sbz92 .order input[type='number'].form-control.err,\\n#sbz92 .order input[type='date'].form-control.err,\\n#sbz92 .order textarea.form-control.err,\\n#sbz92 .order select.form-control.err {\\n background: #ffe6e6 !important;\\n border: 1px solid #ff8a8a !important;\\n}\\n#sbz92 .order .form {\\n box-shadow: none !important;\\n border: none !important;\\n padding: 0 !important;\\n}\\n#sbz92 .order .form .radio {\\n height: unset !important;\\n}\\n#sbz92 .order .order--content {\\n display: flex !important;\\n flex: 1 !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .order .order--content-content {\\n flex: 1 !important;\\n overflow: auto !important;\\n}\\n#sbz92 .order .order--heading {\\n margin: 0 !important;\\n margin-top: 20px !important;\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n padding-bottom: 8px !important;\\n line-height: 20px !important;\\n position: relative !important;\\n}\\n#sbz92 .order .order--header-desc {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n font-size: 13px !important;\\n}\\n#sbz92 .order .order__product_line {\\n display: flex !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .order .order--footer {\\n text-align: k center !important;\\n cursor: pointer !important;\\n display: flex !important;\\n justify-content: center !important;\\n align-items: flex-end !important;\\n color: #acacac !important;\\n -webkit-text-fill-color: #acacac !important;\\n}\\n#sbz92 .order .order--footer:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .order .order_section_label {\\n color: #444 !important;\\n -webkit-text-fill-color: #444 !important;\\n margin-bottom: 5px !important;\\n text-transform: uppercase !important;\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .order .order_label {\\n color: #444 !important;\\n -webkit-text-fill-color: #444 !important;\\n margin-bottom: 5px !important;\\n text-transform: uppercase !important;\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .order .order_section {\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n padding-bottom: 15px !important;\\n padding-top: 15px !important;\\n}\\n#sbz92 .order .order_section__line {\\n border-top: 4px solid #eee !important;\\n width: 100% !important;\\n}\\n#sbz92 .order .order_summary_line {\\n overflow: hidden !important;\\n padding: 3px 0 !important;\\n display: flex !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .order .order_btn {\\n width: 100% !important;\\n}\\n#sbz92 .order .order_tracking_link {\\n text-decoration: underline !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order .order_tracking_link:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 .order .order_tracking_link_icon {\\n margin-top: -3px !important;\\n width: 15px !important;\\n height: 15px !important;\\n}\\n#sbz92 .order .order_shipping_provider_logo {\\n width: 32px !important;\\n height: 32px !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .order .order_btn.order__btn__light {\\n background: #f0f0f0 !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n border-radius: 6px !important;\\n text-align: center !important;\\n padding: 8px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order .order_btn.order__btn__light:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n background: #ddd !important;\\n}\\n#sbz92 div.order__card {\\n display: flex !important;\\n padding: 15px !important;\\n box-shadow: none !important;\\n border: 2px solid #eee !important;\\n margin-top: 10px !important;\\n border-radius: 8px !important;\\n background: #fafafa !important;\\n}\\n#sbz92 div.order__card.order__card__active {\\n border: 2px solid #777 !important;\\n background: white !important;\\n}\\n#sbz92 .order_form_label {\\n margin-top: 10px !important;\\n margin-bottom: 4px !important;\\n}\\n#sbz92 .btn-confirm-order {\\n width: 100% !important;\\n background: '@primary_color' !important;\\n display: flex !important;\\n align-items: center !important;\\n border-radius: 5px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n padding: 15px 10px !important;\\n cursor: pointer !important;\\n justify-content: center !important;\\n font-weight: 500 !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .btn-confirm-order:hover {\\n background: #0053d4 !important;\\n}\\n#sbz92 .order__total {\\n font-weight: 500 !important;\\n font-size: 20px !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 .btn-cancel-order {\\n color: #666 !important;\\n -webkit-text-fill-color: #666 !important;\\n text-decoration: underline !important;\\n display: inline-block !important;\\n margin-top: 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .btn-cancel-order:hover {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n}\\n#sbz92 .order_status {\\n text-transform: uppercase !important;\\n background: black !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n display: inline-block !important;\\n border-radius: 4px !important;\\n padding: 6px 6px 4px 6px !important;\\n line-height: 1 !important;\\n font-weight: 500 !important;\\n font-size: 12px !important;\\n}\\n#sbz92 .order_status.order_status__canceled {\\n background: whitesmoke !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .order_status.order_status__cancel {\\n background: whitesmoke !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .order_status.order_status__confirmed {\\n background: '@primary_color' !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__shipping {\\n background: #000 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__fullfilled {\\n background: #28a745 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__hold {\\n background: #dc3545 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__draft {\\n background: #ffc107 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__open {\\n background: #ffc107 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_error {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n justify-content: center !important;\\n height: 100% !important;\\n width: 100% !important;\\n}\\n#sbz92 .order_attachment__note {\\n font-size: 14px !important;\\n white-space: pre-wrap !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 3 !important;\\n -webkit-box-orient: vertical !important;\\n}\\n#sbz92 .dropdown_select {\\n position: absolute !important;\\n background: white !important;\\n -webkit-box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n border-radius: 5px !important;\\n width: 150px !important;\\n z-index: 20 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .dropdown_select__overlay {\\n top: 0 !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n background: #000000aa !important;\\n z-index: 19 !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n}\\n#sbz92 .dropdown_select__item {\\n padding: 7px 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .dropdown_select__item:hover {\\n background: '@primary_color' !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n}\\n#sbz92 .dropdown_select_filter {\\n padding: 8px 10px !important;\\n border-bottom: 1px solid #eee !important;\\n position: relative !important;\\n}\\n#sbz92 .dropdown_select_filter:hover .dropdown_select_filter__icon {\\n opacity: 1 !important;\\n}\\n#sbz92 .dropdown_select_filter_input {\\n border-radius: 5px !important;\\n width: 100% !important;\\n display: block !important;\\n background: #f4f4f4 !important;\\n border: none !important;\\n padding: 7px 10px !important;\\n padding-left: 35px !important;\\n}\\n#sbz92 .dropdown_select_filter_input:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .dropdown_select_filter_input:focus,\\n#sbz92 .dropdown_select_filter_input:active {\\n background: #eee !important;\\n}\\n#sbz92 .dropdown_select_input {\\n border-radius: 5px !important;\\n overflow: hidden !important;\\n cursor: pointer !important;\\n flex-wrap: nowrap !important;\\n display: flex !important;\\n background: #f4f4f4 !important;\\n border: 1px solid trasparent !important;\\n padding: 7px 10px !important;\\n height: 32px !important;\\n min-width: 120px !important;\\n width: 100% !important;\\n}\\n#sbz92 .dropdown_select_input:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .dropdown_select_input:focus,\\n#sbz92 .dropdown_select_input:active {\\n background: #eee !important;\\n}\\n#sbz92 .dropdown_select_input.err {\\n background: #ffe6e6 !important;\\n border: 1px solid #ff8a8a !important;\\n}\\n#sbz92 .dropdown_select__items {\\n max-height: 300px !important;\\n min-height: 100px !important;\\n overflow-x: hidden !important;\\n overflow-y: auto !important;\\n}\\n#sbz92 .dropdown_select_filter__icon {\\n width: 22px !important;\\n height: 15px !important;\\n position: absolute !important;\\n z-index: 2 !important;\\n top: 15px !important;\\n left: 18px !important;\\n border-right: 1px solid #aaa !important;\\n padding-right: 7px !important;\\n opacity: 0.5 !important;\\n}\\n#sbz92 .dropdown_select_filter__empty {\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .dropdown_select_filter__empty_img {\\n height: 50px !important;\\n margin-top: 10px !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .dropdown_select__caret {\\n width: 14px !important;\\n margin-top: 3px !important;\\n opacity: 0.6 !important;\\n height: 15px !important;\\n}\\ndiv#sbz92 {\\n all: initial;\\n}\\nbody div#sbz92 {\\n all: initial !important;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./assets/less/chatbox.less\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAA;AACF;AACA;EACE,2BAAA;EACA,6BAAA;EACA,6BAAA;AACF;AACA;EACE,oBAAoB;EACpB;;;;;;;;;;;;;;;CAeD;EACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHD;AACD;AACA;;;EAGE,iCAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;;EAEE,2BAAA;AACF;AACA;EACE,yBAAA;EACA,gCAAA;EACA,wCAAA;EACA,2BAAA;AACF;AACA;EACE,0BAAA;EACA,yBAAA;EACA,qCAAA;AACF;AACA;EACE,yBAAA;EACA,gCAAA;AACF;AACA;EACE,yBAAA;EACA,gCAAA;AACF;AACA;EACE,iCAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;EACA,iCAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,8BAAA;EACA,qDAAA;AACF;AACA;;;;;EAKE,oBAAA;AACF;AACA;;EAEE,4BAAA;AACF;AACA;;EAEE,+BAAA;AACF;AACA;EACE,4BAAA;AACF;AACA;;;;EAIE,qCAAA;AACF;AACA;;;;EAIE,0BAAA;AACF;AACA;;;;EAIE,qBAAA;EACA,6BAAA;AACF;AACA;;EAEE,iCAAA;EACA,qBAAA;AACF;AACA;;;;EAIE,sCAAA;AACF;AACA;EACE,yBAAA;EACA,2BAAA;AACF;AACA;;EAEE,uBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,SAAS;EACT,sBAAA;AACF;AACA;EACE,4BAA4B;EAC5B,sBAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,yBAAA;EACA,6CAAA;EACA,8CAAA;EACA,6CAAA;AACF;AACA;EACE,qBAAA;EACA,sBAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,8BAAA;EACA,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,2BAAA;EACA,0BAAA;EACA,2BAAA;EACA,6BAAA;EACA,+BAAA;EACA,8BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,gCAAA;AACF;AACA;EACE,qBAAA;EACA,sBAAA;EACA,6BAAA;EACA,yBAAA;EACA,2BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,wDAAA;EACA,mDAAA;EACA,wLAAA;EACA,0BAAA;EACA,yCAAA;EACA,sCAAA;EACA,iCAAA;EACA,oBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,2BAAA;EACA,yBAAA;EACA,uCAAA;EACA,sCAAA;EACA,qCAAA;EACA,oCAAA;EACA,mCAAA;EACA,iCAAA;EACA,+BAAA;EACA,4BAAA;EACA,kCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,iCAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,kCAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,yBAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,4BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,4BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,iCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,kBAAA;EACA,yBAAA;AACF;AACA;EACE,yCAAA;AACF;AACA;EACE,yBAAA;AACF;AACA;EACE,kBAAA;EACA,8BAAA;EACA,kCAAA;EACA,wBAAA;EACA,iCAAA;EACA,4BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,6BAAA;EACA,4BAAA;EACA,gCAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,8BAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,uBAAA;EACA,8BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,8BAAA;EACA,8BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,qBAAA;EACA,6BAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,qBAAA;EACA,6BAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,qBAAA;EACA,6BAAA;AACF;AACA;EACE,qBAAA;EACA,6BAAA;AACF;AACA;EACE,sBAAA;EACA,6BAAA;EACA,kCAAA;EACA,2CAAA;EACA,oCAAA;EACA,+BAAA;EACA,iDAAA;EACA,sBAAA;AACF;AACA;EACE,0BAAA;EACA,2BAAA;EACA,8BAAA;EACA,wBAAA;EACA,6BAAA;EACA,kCAAA;EACA,8BAAA;EACA,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,0BAAA;EACA,sBAAA;EACA,oBAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,uBAAA;EACA,+BAAA;EACA,6BAAA;AACF;AACA;EACE,8BAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,0BAAA;EACA,+BAAA;EACA,iDAAA;AACF;AACA;EACE,0BAAA;EACA,2BAAA;EACA,uBAAA;EACA,kBAAA;EACA,+BAAA;EACA,iDAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,wBAAA;EACA,+BAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,8BAAA;EACA,8BAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,8BAAA;AACF;AACA;EACE,8BAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,kBAAA;EACA,0BAAA;AACF;AACA;EACE,6BAAA;EACA,6BAAA;EACA,2BAAA;EACA,gCAAA;EACA,+BAAA;EACA,uCAAA;EACA,gCAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,6BAAA;EACA,iBAAA;EACA,oBAAA;EACA,sCAAA;EACA,sBAAA;EACA,qBAAA;EACA,wBAAA;AACF;AACA;EACE,qBAAA;EACA,8BAAA;EACA,oCAAA;EACA,+BAAA;AACF;AACA;EACE,uBAAA;EACA,kBAAA;EACA,wBAAA;EACA,iCAAA;EACA,qBAAA;AACF;AACA;EACE,wBAAA;EACA,6BAAA;EACA,iCAAA;EACA,8BAAA;EACA,iCAAA;EACA,uBAAA;EACA,8EAAA;EACA,mCAAA;AACF;AACA;EACE,qBAAA;EACA,kCAAA;EACA,qBAAA;AACF;AACA;EACE,scAAA;EACA,mCAAA;EACA,uCAAA;EACA,sCAAA;EACA,sBAAA;EACA,uBAAA;EACA,yBAAA;EACA,0BAAA;AACF;AACA;EACE,0dAAA;EACA,mCAAA;EACA,uCAAA;EACA,sCAAA;EACA,qCAAA;EACA,sBAAA;EACA,uBAAA;EACA,yBAAA;EACA,6BAAA;AACF;AACA;EACE,wBAAA;EACA,6BAAA;EACA,8BAAA;EACA,0BAAA;EACA,mBAAA;EACA,uBAAA;EACA,8EAAA;EACA,mCAAA;AACF;AACA;EACE,qBAAA;EACA,kCAAA;EACA,qBAAA;AACF;AACA;;EAEE,iDAAA;AACF;AACA;;EAEE,qBAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,4DAAA;AACF;AACA;;EAEE,sCAAA;EACA,qBAAA;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,uBAAA;EACA,sBAAA;EACA,6BAAA;EACA,8BAAA;EACA,4BAAA;AACF;AACA;EACE,+BAAA;EACA,iDAAA;EACA,2BAAA;EACA,2BAAA;EACA,+BAAA;EACA,uCAAA;EACA,gCAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;AACF;AACA;EACE,uBAAA;EACA,sBAAA;EACA,6BAAA;EACA,6BAAA;EACA,0BAAA;EACA,mCAAA;EACA,uCAAA;EACA,sCAAA;EACA,yBAAA;AACF;AACA;EACE,8vBAAA;AACF;AACA;EACE,yjGAAA;AACF;AACA;EACE,0rDAAA;AACF;AACA;EACE,q1HAAA;AACF;AACA;EACE;IACE,UAAA;IACA,mBAAA;EACF;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,wBAAA;EACA,8BAAA;EACA,+BAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,+BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,gCAAA;EACA,uBAAA;EACA,kBAAA;EACA,6BAAA;EACA,8BAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,uBAAA;EACA,YAAY;AACd;AACA;EACE,gBAAgB;EAChB,uBAAA;EACA,YAAY;AACd;AACA;EACE,0jBAAA;AACF;AACA;EACE,+BAAA;EACA,uCAAA;EACA,sCAAA;EACA,sBAAA;EACA,uBAAA;EACA,yBAAA;EACA,0BAAA;EACA,6BAAA;EACA,8BAAA;EACA,4CAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,0gBAAA;AACF;AACA;EACE,2xBAAA;EACA,+BAAA;AACF;AACA;EACE,kCAAA;EACA,wBAAA;EACA,SAAA;AACF;AACA;EACE,6BAAA;EACA,6BAAA;EACA,8BAAA;EACA,uBAAA;EACA,sBAAA;EACA,wCAAA;EACA,0BAAA;EACA,4BAAA;EACA,6BAAA;EACA,uCAAA;EACA,qBAAA;AACF;AACA;EACE,oCAAA;EACA,6BAAA;EACA,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,oCAAA;EACA,iCAAA;EACA,uDAAA;EACA,6BAAA;AACF;AACA;EACE,uBAAA;EACA,gCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,oBAAA;EACA,qCAAA;EACA,uCAAA;EACA,sCAAA;EACA,sBAAA;EACA,uBAAA;EACA,sZAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,0BAAA;EACA,2BAAA;AACF;AACA;;;;;EAKE,oCAAA;EACA,gCAAA;AACF;AACA;;;;;EAKE,sBAAA;EACA,oCAAA;EACA,6BAAA;EACA,qCAAA;EACA,6BAAA;AACF;AACA;;;;;EAKE,oCAAA;AACF;AACA;;;;;EAKE,oCAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,uBAAA;EACA,sBAAA;EACA,iCAAA;AACF;AACA;EACE,uBAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;;;;;EAKE,6CAAA;AACF;AACA;;;;;EAKE,oCAAA;AACF;AACA;EACE,yBAAA;EACA,8BAAA;EACA,0BAAA;EACA,yBAAA;EACA,2CAAA;EACA,0BAAA;EACA,2BAAA;AACF;AACA;EACE,6BAAA;EACA,6BAAA;EACA,8BAAA;EACA,sBAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,sBAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,6BAAA;EACA,6BAAA;AACF;AACA;EACE,6BAAA;EACA,yBAAA;EACA,6BAAA;EACA,qBAAA;EACA,0BAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,iCAAA;EACA,8BAAA;EACA,uBAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;EACA,0CAAA;EACA,kDAAA;AACF;AACA;EACE,iCAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,sBAAA;EACA,8BAAA;EACA,uBAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,8CAAA;EACA,sDAAA;AACF;AACA;EACE,6CAAA;AACF;AACA;EACE,uCAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,sBAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,6BAAA;EACA,6BAAA;AACF;AACA;EACE,6BAAA;EACA,yBAAA;EACA,6BAAA;EACA,qBAAA;EACA,0BAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,iCAAA;EACA,8BAAA;EACA,uBAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;EACA,0CAAA;EACA,kDAAA;AACF;AACA;EACE,iCAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,sBAAA;EACA,uBAAA;EACA,sBAAA;EACA,uBAAA;EACA,8CAAA;EACA,sDAAA;AACF;AACA;EACE,6CAAA;AACF;AACA;EACE,uCAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,ysBAAysB;AAC3sB;AACA;EACE,2BAAA;EACA,2BAAA;EACA,6BAAA;AACF;AACA;EACE,0BAAA;EACA,4BAAA;EACA,sBAAA;EACA,wCAAA;EACA,2BAAA;EACA,2CAAA;AACF;AACA;EACE,2CAAA;AACF;AACA;EACE,0BAAA;EACA,8BAAA;AACF;AACA;EACE,oCAAA;EACA,0BAAA;EACA,uCAAA;EACA,iCAAA;EACA,kCAAA;EACA,2BAAA;EACA,0BAAA;AACF;AACA;EACE,oCAAA;EACA,0BAAA;EACA,oCAAA;EACA,iCAAA;EACA,kCAAA;EACA,2BAAA;EACA,0BAAA;AACF;AACA;EACE,8BAAA;EACA,yBAAA;EACA,2BAAA;EACA,4BAAA;EACA,+BAAA;AACF;AACA;EACE,8CAAA;EACA,+BAAA;EACA,0DAAA;EACA,iCAAA;EACA,+BAAA;EACA,+BAAA;EACA,2BAAA;EACA,4BAAA;EACA,gCAAA;EACA,4BAAA;EACA,uCAAA;EACA,iCAAA;EACA,8BAAA;EACA,2BAAA;EACA,wCAAA;EACA,qEAAA;EACA,0BAAA;EACA,sBAAA;EACA,oCAAA;EACA,6BAAA;EACA,4BAAA;EACA,8BAAA;EACA,gCAAA;EACA,gCAAA;AACF;AACA;EACE,6BAAA;EACA,gCAAA;EACA,kCAAA;EACA,6BAAA;EACA,uBAAA;EACA,4BAAA;EACA,0BAAA;EACA,0BAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,wBAAA;EACA,6BAAA;EACA,yCAAA;EACA,0BAAA;EACA,oCAAA;EACA,6BAAA;EACA,uBAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,0BAAA;EACA,2BAAA;EACA,6BAAA;EACA,oCAAA;EACA,0BAAA;EACA,sBAAA;EACA,wCAAA;EACA,8BAAA;AACF;AACA;EACE,wBAAA;EACA,gCAAA;EACA,0BAAA;EACA,2BAAA;EACA,uBAAA;EACA,2BAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,6BAAA;EACA,kBAAA;EACA,oBAAA;EACA,oCAAA;EACA,4DAAA;EACA,oDAAA;EACA,6BAAA;EACA,sBAAA;EACA,2BAAA;EACA,sBAAA;EACA,4BAAA;EACA,2BAAA;AACF;AACA;EACE,0BAAA;EACA,uBAAA;EACA,2CAAA;AACF;AACA;EACE,oBAAA;EACA,wBAAA;EACA,iCAAA;AACF;AACA;EACE,wBAAA;EACA,0BAAA;AACF;AACA;EACE,6CAAA;EACA,+BAAA;EACA,iDAAA;AACF;AACA;EACE,4BAAA;EACA,uBAAA;EACA,0BAAA;AACF;AACA;EACE,sDAAA;EACA,sBAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;AACF;AACA;EACE,6BAAA;EACA,0BAAA;EACA,wCAAA;AACF;AACA;;;;;EAKE,4BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE;IACE,aAAA;IACA,eAAA;EACF;EACA;IACE,kBAAA;IACA,YAAA;EACF;EACA;IACE,aAAA;EACF;EACA;IACE,aAAA;EACF;EACA;IACE,eAAA;EACF;EACA;IACE,aAAA;IACA,eAAA;EACF;EACA;IACE,kBAAA;IACA,YAAA;EACF;EACA;IACE,aAAA;EACF;EACA;IACE,aAAA;EACF;EACA;IACE,eAAA;EACF;AACF;AACA;EACE,+BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,oEAAA;EACA,uCAAA;EACA,iCAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,0BAAA;EACA,8BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,uCAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,uCAAA;AACF;AACA;EACE,6BAAA;EACA,2BAAA;EACA,wBAAA;EACA,iCAAA;EACA,kBAAA;EACA,+BAAA;EACA,gCAAA;AACF;AACA;EACE,4BAAA;EACA,kBAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,oCAAA;EACA,+BAAA;AACF;AACA;EACE,8BAAA;EACA,kCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,6BAAA;EACA,2BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,0BAAA;EACA,4BAAA;AACF;AACA;EACE,6CAAA;EACA,6BAAA;AACF;AACA;EACE,oCAAA;EACA,+BAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,8BAAA;EACA,6BAAA;AACF;AACA;EACE,+BAAA;EACA,iDAAA;EACA,qCAAA;EACA,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,qCAAA;EACA,kCAAA;EACA,2BAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,8BAAA;EACA,gCAAA;AACF;AACA;EACE,oCAAA;EACA,0dAAA;EACA,qCAAA;EACA,uCAAA;EACA,sCAAA;AACF;AACA;EACE,8BAAA;EACA,0dAAA;EACA,qCAAA;EACA,uCAAA;EACA,sCAAA;AACF;AACA;EACE,2BAAA;EACA,0BAAA;EACA,gCAAA;EACA,2BAAA;EACA,6CAAA;EACA,+BAAA;EACA,iDAAA;EACA,uCAAA;AACF;AACA;EACE,qCAAA;AACF;AACA;EACE,qCAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,uBAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;EACA,gCAAA;EACA,gCAAA;EACA,6CAAA;EACA,sBAAA;EACA,wCAAA;EACA,uCAAA;AACF;AACA;EACE,0BAAA;EACA,wBAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,gCAAA;EACA,oCAAA;AACF;AACA;EACE,qBAAA;EACA,iCAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,4BAAA;EACA,6BAAA;EACA,0cAAA;EACA,mCAAA;EACA,uCAAA;AACF;AACA;EACE,8BAAA;EACA,0CAAA;EACA,yBAAA;EACA,+BAAA;EACA,iCAAA;EACA,6BAAA;EACA,gCAAA;AACF;AACA;EACE,qBAAA;EACA,wBAAA;EACA,oCAAA;AACF;AACA;EACE,kBAAA;AACF;AACA;EACE,8BAAA;EACA,yCAAA;EACA,yBAAA;EACA,iCAAA;EACA,6BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,uBAAA;EACA,yBAAA;EACA,0BAAA;EACA,0BAAA;EACA,0BAAA;EACA,8BAAA;AACF;AACA;EACE,qBAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,gCAAA;EACA,mCAAA;AACF;AACA;EACE,gCAAA;EACA,iCAAA;EACA,shBAAA;EACA,mCAAA;EACA,uCAAA;EACA,sCAAA;EACA,sBAAA;EACA,uBAAA;AACF;AACA;EACE,sBAAA;EACA,4BAAA;EACA,6BAAA;EACA,oCAAA;AACF;AACA;EACE,sBAAA;EACA,4BAAA;EACA,uBAAA;EACA,0BAAA;AACF;AACA;EACE,uBAAA;EACA,sBAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,4BAAA;AACF;AACA;EACE,uBAAA;EACA,sBAAA;AACF;AACA;EACE,6BAAA;EACA,yBAAA;EACA,2CAAA;EACA,uBAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,uBAAA;EACA,6BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,iCAAA;AACF;AACA;EACE,6BAAA;EACA,uBAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,wBAAA;EACA,+CAAA;EACA,uCAAA;EACA,6BAAA;EACA,2BAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,6BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,sBAAA;EACA,oCAAA;EACA,wBAAA;EACA,kCAAA;EACA,6BAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,oCAAA;EACA,+BAAA;AACF;AACA;EACE,uBAAA;EACA,yCAAA;EACA,uBAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,wCAAA;EACA,4BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,sBAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,wCAAA;EACA,4BAAA;AACF;AACA;EACE,sBAAA;EACA,oCAAA;EACA,wBAAA;EACA,kCAAA;EACA,6BAAA;AACF;AACA;EACE,6CAAA;EACA,+BAAA;EACA,iDAAA;EACA,sBAAA;EACA,2BAAA;EACA,6BAAA;EACA,wBAAA;EACA,6BAAA;EACA,0BAAA;AACF;AACA;EACE,+BAAA;EACA,iDAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,oCAAA;EACA,yBAAA;EACA,2CAAA;EACA,wBAAA;EACA,qBAAA;EACA,+BAAA;EACA,6BAAA;EACA,sBAAA;EACA,oBAAA;EACA,sBAAA;AACF;AACA;EACE,qBAAA;EACA,wBAAA;AACF;AACA;EACE,0BAAA;EACA,2BAAA;AACF;AACA;EACE,yBAAA;EACA,0BAAA;AACF;AACA;EACE,sCAAA;EACA,uCAAA;AACF;AACA;EACE,yCAAA;EACA,0CAAA;EACA,oDAAA;AACF;AACA;EACE,gCAAA;EACA,6BAAA;EACA,yBAAA;EACA,6BAAA;EACA,sBAAA;EACA,wCAAA;EACA,iCAAA;EACA,8BAAA;EACA,kCAAA;EACA,2BAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,kCAAA;EACA,oDAAA;EACA,yCAAA;AACF;AACA;EACE,wBAAA;EACA,0BAAA;EACA,iCAAA;AACF;AACA;EACE,0BAAA;EACA,6BAAA;EACA,6BAAA;EACA,0BAAA;EACA,sBAAA;EACA,wCAAA;EACA,8BAAA;EACA,4BAAA;EACA,2BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,0BAAA;EACA,kCAAA;EACA,iCAAA;EACA,qCAAA;AACF;AACA;EACE,uCAAA;EACA,+BAAA;EACA,iDAAA;EACA,yCAAA;AACF;AACA;EACE,6BAAA;EACA,2BAAA;AACF;AACA;EACE,yBAAA;AACF;AACA;EACE,wBAAA;EACA,sBAAA;EACA,8BAAA;EACA,2BAAA;EACA,4BAAA;EACA,uBAAA;AACF;AACA;EACE,kBAAA;AACF;AACA;EACE,oCAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,uBAAA;EACA,6BAAA;EACA,8BAAA;EACA,wBAAA;EACA,iCAAA;EACA,yBAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,sBAAA;EACA,wBAAA;EACA,4BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,wBAAA;EACA,yBAAA;EACA,2BAAA;EACA,8BAAA;EACA,6BAAA;EACA,uBAAA;EACA,wCAAA;EACA,sBAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,gCAAA;AACF;AACA;EACE,4BAAA;EACA,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,2BAAA;EACA,0BAAA;EACA,4BAAA;EACA,8BAAA;AACF;AACA;EACE,4BAAA;EACA,sBAAA;EACA,wCAAA;EACA,0BAAA;EACA,gCAAA;EACA,+BAAA;EACA,gCAAA;EACA,uCAAA;EACA,2BAAA;EACA,kCAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,2BAAA;EACA,yBAAA;EACA,2CAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,6BAAA;EACA,mBAAA;EACA,sCAAA;EACA,0BAAA;EACA,sBAAA;EACA,0BAAA;EACA,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,2CAAA;EACA,6DAAA;EACA,uDAAA;EACA,uBAAA;EACA,4BAAA;AACF;AACA;EACE,uDAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,oBAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,6BAAA;EACA,yBAAA;EACA,yBAAA;EACA,8BAAA;EACA,iCAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,8BAAA;EACA,wCAAA;EACA,6BAAA;EACA,wBAAA;EACA,8BAAA;EACA,yCAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,0BAAA;EACA,2BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,2BAAA;EACA,uBAAA;EACA,yCAAA;EACA,iCAAA;EACA,4BAAA;EACA,6BAAA;EACA,uBAAA;EACA,2BAAA;EACA,6BAAA;EACA,wBAAA;AACF;AACA;EACE,2BAAA;EACA,4BAAA;EACA,qCAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,0BAAA;EACA,sBAAA;EACA,wCAAA;EACA,2BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,6BAAA;EACA,+BAAA;EACA,0BAAA;EACA,4BAAA;EACA,iCAAA;AACF;AACA;EACE,2BAAA;EACA,oCAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,uBAAA;EACA,gCAAA;EACA,8BAAA;EACA,+BAAA;AACF;AACA;EACE,6BAAA;EACA,+BAAA;EACA,0BAAA;EACA,4BAAA;EACA,iCAAA;AACF;AACA;EACE,uBAAA;EACA,wBAAA;EACA,2CAAA;EACA,4BAAA;EACA,yBAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,wCAAA;EACA,wBAAA;EACA,4BAAA;EACA,8BAAA;EACA,sBAAA;EACA,wCAAA;EACA,kCAAA;EACA,0BAAA;EACA,qCAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,kCAAA;EACA,oDAAA;AACF;AACA;EACE,yBAAA;EACA,mCAAA;EACA,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,iCAAA;EACA,6BAAA;AACF;AACA;EACE,gCAAA;EACA,+BAAA;EACA,gCAAA;EACA,uCAAA;EACA,2BAAA;EACA,4BAAA;EACA,sBAAA;EACA,wCAAA;EACA,yBAAA;EACA,4BAAA;EACA,6BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,yBAAA;EACA,0BAAA;AACF;AACA;EACE,0BAAA;AACF;AACA;EACE,6BAAA;EACA,gCAAA;EACA,0BAAA;AACF;AACA;EACE,6BAAA;EACA,wBAAA;EACA,uBAAA;EACA,kCAAA;EACA,wBAAA;EACA,oCAAA;EACA,kCAAA;EACA,6BAAA;EACA,sBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,wBAAA;EACA,0BAAA;EACA,uBAAA;EACA,qBAAA;EACA,mBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,wBAAA;EACA,6BAAA;EACA,wBAAA;EACA,kBAAA;EACA,qBAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,uCAAA;EACA,qCAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,8BAAA;EACA,6BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,uCAAA;EACA,qCAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,kCAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,0BAAA;EACA,uBAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,kCAAA;AACF;AACA;EACE,kCAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,uCAAA;EACA,qCAAA;EACA,uCAAA;EACA,sCAAA;AACF;AACA;EACE,srBAAA;AACF;AACA;EACE,0rBAAA;AACF;AACA;EACE,0dAAA;AACF;AACA;EACE,srBAAA;AACF;AACA;EACE,srBAAA;AACF;AACA;EACE,sdAAA;AACF;AACA;EACE,08BAAA;AACF;AACA;EACE,8/DAAA;AACF;AACA;EACE,0BAAA;EACA,0BAAA;EACA,sBAAA;EACA,wCAAA;EACA,2BAAA;EACA,uBAAA;AACF;AACA;EACE,yBAAA;EACA,0BAAA;EACA,6BAAA;EACA,0BAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,yBAAA;EACA,gCAAA;EACA,kCAAA;EACA,gCAAA;EACA,qCAAA;AACF;AACA;EACE,yBAAA;EACA,mCAAA;EACA,kCAAA;EACA,gCAAA;EACA,qCAAA;AACF;AACA;EACE,6BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,2BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;AACF;AACA;EACE,qCAAA;EACA,0DAAA;EACA,qCAAA;AACF;AACA;EACE,sCAAA;EACA,sDAAA;AACF;AACA;EACE,4BAAA;EACA,kDAAA;EACA,oCAAA;EACA,oCAAA;EACA,uCAAA;EACA,6BAAA;EACA,0BAAA;AACF;AACA;EACE,2BAAA;EACA,0BAAA;EACA,kCAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,uBAAA;EACA,oCAAA;EACA,sDAAA;EACA,0BAAA;EACA,kCAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,4BAAA;AACF;AACA;EACE,4BAAA;EACA,kBAAA;EACA,2BAAA;AACF;AACA;EACE,qCAAA;AACF;AACA;EACE,qCAAA;AACF;AACA;EACE,2BAAA;EACA,4BAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,uBAAA;EACA,gCAAA;EACA,uCAAA;EACA,uBAAA;EACA,gCAAA;EACA,sCAAA;AACF;AACA;EACE,oEAAA;AACF;AACA;EACE,oEAAA;AACF;AACA;;EAEE,oEAAA;AACF;AACA;EACE,oEAAA;AACF;AACA;;EAEE,oEAAA;AACF;AACA;;EAEE,oEAAA;AACF;AACA;;EAEE,oEAAA;AACF;AACA;EACE,oEAAA;AACF;AACA;;EAEE,oEAAA;AACF;AACA;;EAEE,qEAAA;AACF;AACA;;EAEE,qEAAA;AACF;AACA;;EAEE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;;;EAGE,qEAAA;AACF;AACA;;EAEE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,qEAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,sBAAA;EACA,6BAAA;EACA,2BAAA;EACA,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,8BAAA;EACA,uDAAA;EACA,sBAAA;EACA,uBAAA;EACA,0BAAA;EACA,wBAAA;EACA,yCAAA;EACA,8BAAA;AACF;AACA;EACE,gCAAA;EACA,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,uCAAA;EACA,gCAAA;EACA,sCAAA;EACA,sBAAA;EACA,0BAAA;EACA,4CAAA;AACF;AACA;EACE,+BAAA;EACA,sBAAA;EACA,uBAAA;EACA,8BAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,kBAAA;EACA,sBAAA;EACA,yCAAA;EACA,yBAAA;EACA,4BAAA;EACA,+BAAA;EACA,gCAAA;AACF;AACA;EACE,2BAAA;EACA,2BAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,2BAAA;EACA,2CAAA;EACA,wBAAA;AACF;AACA;EACE,8BAAA;EACA,sDAAA;EACA,yBAAA;EACA,wBAAA;EACA,iCAAA;EACA,4BAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,8BAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;EACA,8BAAA;EACA,kCAAA;EACA,wBAAA;EACA,iCAAA;EACA,kBAAA;EACA,4BAAA;AACF;AACA;EACE,8BAAA;EACA,kBAAA;EACA,0BAAA;EACA,wBAAA;EACA,sBAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,kCAAA;EACA,uBAAA;EACA,8BAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,kBAAA;EACA,6BAAA;EACA,0BAAA;AACF;AACA;EACE,0BAAA;EACA,0DAAA;EACA,wBAAA;EACA,wBAAA;EACA,8BAAA;EACA,4CAAA;AACF;AACA;EACE,6CAAA;AACF;AACA;EACE,0BAAA;EACA,4BAAA;EACA,sBAAA;EACA,wCAAA;EACA,uBAAA;EACA,0BAAA;EACA,0BAAA;AACF;AACA;EACE,qBAAA;EACA,sBAAA;EACA,8BAAA;EACA,6BAAA;EACA,4BAAA;EACA,6BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;AACF;AACA;EACE,wBAAA;EACA,kBAAA;EACA,kCAAA;EACA,8BAAA;EACA,iCAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,2BAAA;EACA,6BAAA;AACF;AACA;EACE,uBAAA;EACA,wBAAA;EACA,y3GAAA;EACA,2BAAA;EACA,6CAAA;AACF;AACA;EACE,uCAAA;EACA,2BAAA;EACA,4BAAA;EACA,2BAAA;EACA,oBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,wBAAA;EACA,qBAAA;EACA,+GAAA;AACF;AACA;EACE,2BAAA;EACA,2BAAA;EACA,iBAAA;EACA,uBAAA;AACF;AACA;EACE,kBAAA;EACA,mBAAA;AACF;AACA;EACE,mBAAA;EACA,kBAAA;AACF;AACA;EACE,qBAAA;EACA,mDAAA;EACA,6BAAA;EACA,8JAAA;AACF;AACA;EACE,2CAAA;EACA,uBAAA;AACF;AACA;EACE,4CAAA;EACA,sBAAA;AACF;AACA;EACE,2BAAA;EACA,mDAAA;EACA,0BAAA;EACA,2BAAA;EACA,gCAAA;EACA,8BAAA;EACA,uDAAA;EACA,wBAAA;EACA,iCAAA;EACA,8BAAA;EACA,uCAAA;EACA,oDAAA;EACA,0BAAA;EACA,4BAAA;EACA,oBAAA;EACA,qBAAA;EACA,mCAAA;EACA,gIAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,2BAAA;EACA,uBAAA;EACA,2BAAA;AACF;AACA;EACE,qBAAA;EACA,sCAAA;EACA,6BAAA;EACA,4JAAA;AACF;AACA;EACE,6BAAA;EACA,yBAAA;EACA,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,6BAAA;EACA,8BAAA;EACA,uBAAA;EACA,+BAAA;EACA,iDAAA;EACA,0BAAA;EACA,2BAAA;EACA,4BAAA;EACA,6BAAA;EACA,uCAAA;EACA,sBAAA;EACA,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,wCAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,kCAAA;AACF;AACA;EACE,uBAAA;EACA,0BAAA;EACA,+BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,kBAAA;EACA,uBAAA;EACA,sBAAA;EACA,sBAAA;EACA,2BAAA;EACA,iCAAA;EACA,wBAAA;EACA,6BAAA;AACF;AACA;EACE,uBAAA;EACA,yBAAA;EACA,0BAAA;AACF;AACA;EACE,2BAAA;EACA,4BAAA;AACF;AACA;EACE,0BAAA;EACA,uBAAA;AACF;AACA;EACE,uBAAA;EACA,yBAAA;EACA,0BAAA;AACF;AACA;EACE,uBAAA;EACA,yBAAA;EACA,0BAAA;AACF;AACA;EACE,2BAAA;EACA,6BAAA;EACA,kBAAA;EACA,wBAAA;EACA,iCAAA;EACA,6BAAA;EACA,wBAAA;AACF;AACA;EACE,8BAAA;EACA,6BAAA;AACF;AACA;EACE,gCAAA;EACA,0BAAA;EACA,yBAAA;EACA,2CAAA;EACA,mCAAA;AACF;AACA;EACE,uBAAA;EACA,2BAAA;EACA,uBAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,wBAAA;EACA,kCAAA;EACA,iCAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,6BAAA;EACA,uBAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,wBAAA;EACA,sBAAA;AACF;AACA;EACE,4BAAA;EACA,sBAAA;EACA,uBAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,6BAAA;EACA,yBAAA;AACF;AACA;EACE,wCAAA;EACA,0CAAA;EACA,oCAAA;EACA,wDAAA;AACF;AACA;EACE,4CAAA;AACF;AACA;EACE,0CAAA;EACA,uBAAA;AACF;AACA;EACE,2CAAA;EACA,sBAAA;AACF;AACA;EACE,4CAAA;AACF;AACA;EACE,0BAAA;EACA,6BAAA;EACA,mBAAA;EACA,qHAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,kCAAA;EACA,sBAAA;AACF;AACA;EACE,qBAAA;EACA,6CAAA;EACA,yBAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,gCAAA;EACA,uCAAA;EACA,6CAAA;EACA,oCAAA;EACA,qBAAA;AACF;AACA;EACE,qBAAA;EACA,+BAAA;AACF;AACA;EACE,2CAAA;EACA,uBAAA;AACF;AACA;EACE,4CAAA;EACA,sBAAA;AACF;AACA;EACE,6BAAA;EACA,qBAAA;EACA,oBAAA;EACA,8BAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,8BAAA;EACA,6BAAA;EACA,sBAAA;EACA,wCAAA;EACA,uDAAA;AACF;AACA;EACE,gCAAA;EACA,2BAAA;EACA,uDAAA;EACA,8BAAA;EACA,0BAAA;EACA,uBAAA;EACA,8BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,0BAAA;EACA,uBAAA;EACA,iCAAA;EACA,oCAAA;EACA,scAAA;EACA,qCAAA;EACA,uCAAA;EACA,sCAAA;EACA,sBAAA;EACA,uBAAA;EACA,yBAAA;EACA,8BAAA;EACA,4CAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,kDAAA;EACA,8BAAA;EACA,6BAAA;AACF;AACA;EACE,wBAAA;EACA,wBAAA;AACF;AACA;EACE,yBAAA;EACA,0BAAA;EACA,uBAAA;EACA,yCAAA;EACA,6BAAA;EACA,uBAAA;AACF;AACA;EACE,0BAAA;EACA,kBAAA;EACA,2BAAA;AACF;AACA;EACE,gCAAA;EACA,gCAAA;EACA,2BAAA;EACA,0BAAA;EACA,yBAAA;EACA,oBAAA;EACA,6BAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,wCAAA;EACA,0BAAA;EACA,wBAAA;AACF;AACA;EACE,yBAAA;EACA,6BAAA;EACA,2BAAA;EACA,0BAAA;EACA,kCAAA;EACA,oDAAA;EACA,oBAAA;AACF;AACA;EACE,6BAAA;EACA,oBAAA;EACA,kBAAA;EACA,sBAAA;EACA,0BAAA;EACA,sBAAA;EACA,6BAAA;EACA,2BAAA;AACF;AACA;EACE,oCAAA;EACA,sBAAA;AACF;AACA;EACE,oCAAA;EACA,sBAAA;AACF;AACA;EACE,wBAAA;EACA,2BAAA;EACA,8BAAA;EACA,sBAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,yBAAA;EACA,6BAAA;AACF;AACA;EACE,kBAAA;EACA,2BAAA;EACA,wBAAA;EACA,8BAAA;AACF;AACA;EACE,4BAAA;AACF;AACA;EACE,kCAAA;EACA,8BAAA;EACA,2BAAA;EACA,2BAAA;EACA,oCAAA;EACA,sDAAA;AACF;AACA;EACE,2BAAA;EACA,gCAAA;AACF;AACA;EACE,gCAAA;EACA,sBAAA;EACA,8BAAA;EACA,wBAAA;EACA,iCAAA;EACA,kCAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,8BAAA;EACA,0BAAA;EACA,8BAAA;EACA,oBAAA;AACF;AACA;EACE,oCAAA;AACF;AACA;EACE,sCAAA;AACF;AACA;EACE,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,8BAAA;EACA,4BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,8BAAA;EACA,4BAAA;EACA,2BAAA;EACA,8BAAA;EACA,yCAAA;EACA,kCAAA;EACA,oDAAA;EACA,8BAAA;EACA,0BAAA;EACA,gCAAA;EACA,6BAAA;AACF;AACA;EACE,2BAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,6CAAA;AACF;AACA;EACE,gCAAA;EACA,sBAAA;EACA,8BAAA;EACA,wBAAA;EACA,iCAAA;EACA,kCAAA;AACF;AACA;EACE,gCAAA;AACF;AACA;EACE,2BAAA;EACA,8BAAA;EACA,uDAAA;EACA,oCAAA;EACA,2BAAA;EACA,0BAAA;AACF;AACA;EACE,sBAAA;EACA,4BAAA;EACA,4BAAA;AACF;AACA;EACE,gCAAA;EACA,2BAAA;EACA,uDAAA;EACA,oCAAA;EACA,8BAAA;EACA,0BAAA;EACA,2BAAA;EACA,8BAAA;EACA,6BAAA;EACA,6BAAA;EACA,0BAAA;AACF;AACA;EACE,0CAAA;AACF;AACA;EACE,yCAAA;AACF;AACA;EACE,0CAAA;EACA,6BAAA;EACA,qBAAA;EACA,qEAAA;EACA,mCAAA;AACF;AACA;EACE,sCAAA;EACA,uEAAA;EACA,qBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,wBAAA;EACA,sCAAA;EACA,mCAAA;EACA,6BAAA;EACA,6BAAA;EACA,sBAAA;EACA,uBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,oCAAA;EACA,sBAAA;EACA,uBAAA;AACF;AACA;EACE,qBAAA;EACA,sBAAA;EACA,uBAAA;EACA,oCAAA;EACA,uDAAA;EACA,sCAAA;EACA,qCAAA;EACA,0cAAA;AACF;AACA;EACE,6BAAA;EACA,sCAAA;EACA,scAAA;AACF;AACA;EACE,6BAAA;EACA,uBAAA;EACA,sBAAA;EACA,4BAAA;EACA,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,0CAAA;EACA,2CAAA;EACA,qBAAA;AACF;AACA;EACE,uCAAA;EACA,wCAAA;EACA,2BAAA;EACA,6BAAA;EACA,wBAAA;EACA,0BAAA;EACA,sBAAA;EACA,oBAAA;EACA,cAAc;EACd,kBAAA;EACA,4BAAA;EACA,0CAAA;EACA,2CAAA;EACA,sBAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,uBAAA;EACA,4BAAA;EACA,6BAAA;EACA,sCAAA;EACA,6BAAA;EACA,wBAAA;EACA,uBAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,qjBAAA;EACA,0BAAA;AACF;AACA;EACE,qjBAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,sBAAA;EACA,sBAAA;EACA,8BAAA;EACA,6BAAA;EACA,yBAAA;EACA,2BAAA;EACA,0BAAA;EACA,8BAAA;AACF;AACA;EACE,wBAAA;EACA,kBAAA;EACA,uBAAA;EACA,oCAAA;EACA,iCAAA;EACA,yCAAA;AACF;AACA;EACE,oBAAA;EACA,2BAAA;EACA,0BAAA;EACA,4BAAA;EACA,6BAAA;EACA,uBAAA;EACA,6BAAA;AACF;AACA;EACE,6BAAA;EACA,uBAAA;EACA,0BAAA;EACA,6BAAA;EACA,8BAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,kBAAA;EACA,wBAAA;EACA,wCAAA;EACA,8BAAA;EACA,4BAAA;AACF;AACA;EACE,wBAAA;EACA,wBAAA;EACA,iCAAA;EACA,8BAAA;EACA,0BAAA;EACA,8BAAA;EACA,4BAAA;EACA,uCAAA;EACA,+BAAA;AACF;AACA;EACE,sDAAA;AACF;AACA;EACE,2BAAA;EACA,6BAAA;EACA,0BAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,mBAAA;EACA,6BAAA;EACA,0BAAA;EACA,wBAAA;EACA,kCAAA;EACA,gCAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,uBAAA;EACA,yCAAA;AACF;AACA;EACE,yBAAA;AACF;AACA;EACE,gCAAA;EACA,6BAAA;EACA,2BAAA;EACA,6CAAA;EACA,sBAAA;EACA,qBAAA;EACA,0BAAA;EACA,6BAAA;EACA,4BAAA;EACA,0BAAA;AACF;AACA;EACE,8BAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,sBAAA;EACA,2BAAA;EACA,yBAAA;EACA,sBAAA;EACA,8BAAA;EACA,6BAAA;EACA,kBAAA;EACA,0BAAA;AACF;AACA;EACE,uCAAA;EACA,6BAAA;EACA,wCAAA;EACA,sBAAA;EACA,oBAAA;EACA,cAAc;EACd,kBAAA;EACA,0CAAA;EACA,2CAAA;EACA,wBAAA;EACA,iCAAA;EACA,4BAAA;EACA,sBAAA;AACF;AACA;EACE,6BAAA;EACA,uBAAA;EACA,sBAAA;EACA,4BAAA;EACA,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,0CAAA;EACA,2CAAA;EACA,qBAAA;AACF;AACA;EACE,2BAAA;EACA,sBAAA;EACA,wCAAA;EACA,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,8BAAA;AACF;AACA;EACE,qBAAA;EACA,uBAAA;EACA,uCAAA;AACF;AACA;EACE,0BAAA;EACA,0BAAA;EACA,0BAAA;AACF;AACA;EACE,gCAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,2BAAA;EACA,uBAAA;EACA,yBAAA;EACA,uBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,4BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;AACF;AACA;EACE,2BAAA;EACA,2BAAA;EACA,8BAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,0BAAA;EACA,8BAAA;EACA,2BAAA;EACA,uBAAA;EACA,8HAAA;EACA,6BAAA;EACA,iCAAA;EACA,kCAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,2BAAA;AACF;AACA;EACE,uBAAA;AACF;AACA;EACE,0BAAA;EACA,4BAAA;EACA,sCAAA;EACA,6BAAA;AACF;AACA;EACE,8BAAA;EACA,2BAAA;EACA,yBAAA;EACA,wBAAA;EACA,yCAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,sBAAA;EACA,wBAAA;EACA,iCAAA;EACA,4BAAA;EACA,sBAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,2BAAA;EACA,uBAAA;EACA,0BAAA;EACA,6BAAA;EACA,2BAAA;EACA,iCAAA;EACA,sBAAA;EACA,wCAAA;EACA,0BAAA;EACA,6BAAA;EACA,4BAAA;EACA,yCAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,iCAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,iCAAA;EACA,8BAAA;AACF;AACA;EACE,2BAAA;EACA,sBAAA;EACA,uBAAA;EACA,uBAAA;AACF;AACA;EACE,2BAAA;EACA,2BAAA;EACA,8HAAA;EACA,6BAAA;EACA,iCAAA;EACA,wBAAA;AACF;AACA;;;;;EAKE,8BAAA;EACA,wCAAA;EACA,4BAAA;AACF;AACA;;;;;EAKE,8BAAA;AACF;AACA;;;;;;;;;;EAUE,2BAAA;AACF;AACA;;;;;EAKE,8BAAA;EACA,oCAAA;AACF;AACA;EACE,2BAAA;EACA,uBAAA;EACA,qBAAA;AACF;AACA;EACE,wBAAA;AACF;AACA;EACE,wBAAA;EACA,kBAAA;EACA,iCAAA;AACF;AACA;EACE,kBAAA;EACA,yBAAA;AACF;AACA;EACE,oBAAA;EACA,2BAAA;EACA,6BAAA;EACA,8BAAA;EACA,8BAAA;EACA,4BAAA;EACA,6BAAA;AACF;AACA;EACE,yBAAA;EACA,2CAAA;EACA,0BAAA;AACF;AACA;EACE,wBAAA;EACA,2BAAA;AACF;AACA;EACE,+BAAA;EACA,0BAAA;EACA,wBAAA;EACA,kCAAA;EACA,gCAAA;EACA,yBAAA;EACA,2CAAA;AACF;AACA;EACE,uBAAA;EACA,yCAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,6BAAA;EACA,oCAAA;EACA,0BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,6BAAA;EACA,oCAAA;EACA,0BAAA;EACA,2BAAA;AACF;AACA;EACE,6BAAA;EACA,8BAAA;EACA,+BAAA;EACA,4BAAA;AACF;AACA;EACE,qCAAA;EACA,sBAAA;AACF;AACA;EACE,2BAAA;EACA,yBAAA;EACA,wBAAA;EACA,yCAAA;AACF;AACA;EACE,sBAAA;AACF;AACA;EACE,qCAAA;EACA,0BAAA;AACF;AACA;EACE,kCAAA;EACA,oDAAA;AACF;AACA;EACE,2BAAA;EACA,sBAAA;EACA,uBAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,6BAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,yCAAA;EACA,6BAAA;EACA,6BAAA;EACA,uBAAA;EACA,0BAAA;AACF;AACA;EACE,uBAAA;EACA,yCAAA;EACA,2BAAA;AACF;AACA;EACE,wBAAA;EACA,wBAAA;EACA,2BAAA;EACA,iCAAA;EACA,2BAAA;EACA,6BAAA;EACA,8BAAA;AACF;AACA;EACE,iCAAA;EACA,4BAAA;AACF;AACA;EACE,2BAAA;EACA,6BAAA;AACF;AACA;EACE,sBAAA;EACA,uCAAA;EACA,wBAAA;EACA,8BAAA;EACA,6BAAA;EACA,sBAAA;EACA,wCAAA;EACA,6BAAA;EACA,0BAAA;EACA,kCAAA;EACA,2BAAA;EACA,2BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;EACE,2BAAA;EACA,0BAAA;EACA,kCAAA;EACA,oDAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;EACA,qCAAA;EACA,gCAAA;EACA,2BAAA;EACA,0BAAA;AACF;AACA;EACE,sBAAA;EACA,wCAAA;AACF;AACA;EACE,oCAAA;EACA,4BAAA;EACA,uBAAA;EACA,yCAAA;EACA,gCAAA;EACA,6BAAA;EACA,mCAAA;EACA,yBAAA;EACA,2BAAA;EACA,0BAAA;AACF;AACA;EACE,iCAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,iCAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,uCAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,2BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,8BAAA;EACA,uBAAA;EACA,yCAAA;AACF;AACA;EACE,wBAAA;EACA,iCAAA;EACA,8BAAA;EACA,kCAAA;EACA,uBAAA;EACA,sBAAA;AACF;AACA;EACE,0BAAA;EACA,gCAAA;EACA,2BAAA;EACA,kCAAA;EACA,+BAAA;EACA,gCAAA;EACA,uCAAA;AACF;AACA;EACE,6BAAA;EACA,4BAAA;EACA,4DAAA;EACA,oDAAA;EACA,6BAAA;EACA,uBAAA;EACA,sBAAA;EACA,2BAAA;AACF;AACA;EACE,iBAAA;EACA,2BAAA;EACA,6BAAA;EACA,gCAAA;EACA,sBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;AACF;AACA;EACE,4BAAA;EACA,0BAAA;AACF;AACA;EACE,uCAAA;EACA,sBAAA;EACA,wCAAA;AACF;AACA;EACE,4BAAA;EACA,wCAAA;EACA,6BAAA;AACF;AACA;EACE,qBAAA;AACF;AACA;EACE,6BAAA;EACA,sBAAA;EACA,yBAAA;EACA,8BAAA;EACA,uBAAA;EACA,4BAAA;EACA,6BAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;;EAEE,2BAAA;AACF;AACA;EACE,6BAAA;EACA,2BAAA;EACA,0BAAA;EACA,4BAAA;EACA,wBAAA;EACA,8BAAA;EACA,uCAAA;EACA,4BAAA;EACA,uBAAA;EACA,2BAAA;EACA,sBAAA;AACF;AACA;EACE,8BAAA;AACF;AACA;;EAEE,2BAAA;AACF;AACA;EACE,8BAAA;EACA,oCAAA;AACF;AACA;EACE,4BAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;AACF;AACA;EACE,sBAAA;EACA,uBAAA;EACA,6BAAA;EACA,qBAAA;EACA,oBAAA;EACA,qBAAA;EACA,uCAAA;EACA,6BAAA;EACA,uBAAA;AACF;AACA;EACE,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,iCAAA;AACF;AACA;EACE,uBAAA;EACA,2BAAA;EACA,8BAAA;AACF;AACA;EACE,sBAAA;EACA,0BAAA;EACA,uBAAA;EACA,uBAAA;AACF;AACA;EACE,YAAA;AACF;AACA;EACE,uBAAA;AACF\",\"sourcesContent\":[\"#sbz92 * {\\n all: unset !important;\\n}\\n.sbz_no_scroll {\\n overflow: hidden !important;\\n overflow-x: hidden !important;\\n overflow-y: hidden !important;\\n}\\n#sbz92 {\\n /* Handle on hover */\\n /*\\n.widget-header--button-close {\\n\\tdisplay: flex;\\n\\tborder-radius: 6px;\\n\\tjustify-self: flex-end;\\n\\talign-items: center;\\n\\talign-self: flex-start;\\n\\n\\tfilter: brightness(0.95);\\n\\t&:hover {\\n\\t\\topacity: 1;\\n\\t\\tfilter: brightness(1.1);\\n\\t\\tscale: 1.1;\\n\\t}\\n}\\n*/\\n /*\\n[data-tooltip]::after {\\n\\ttext-align: center;\\n\\tmin-width: 60px;\\n\\tmax-width: 350px;\\n\\n\\ttransform: translate3d(0, 0, 0);\\n\\t-webkit-backface-visibility: hidden;\\n\\tbackface-visibility: hidden;\\n\\twill-change: transform;\\n\\topacity: 0;\\n\\tpointer-events: none;\\n\\ttransition: opacity @tooltip-transition-duration @tooltip-transition-easing @tooltip-transition-delay;\\n\\tposition: absolute;\\n\\tbox-sizing: border-box;\\n\\tz-index: @z-index + 2000;\\n\\ttransform-origin: top;\\n\\twhite-space: pre-wrap;\\n\\twidth: 100%;\\n\\n\\tbackground: @black;\\n\\tborder-radius: 5px;\\n\\n\\t.color(@white);\\n\\n\\tcontent: attr(data-tooltip);\\n\\tfont-size: @tooltip-font-size;\\n\\tfont-weight: @tooltip-font-weight;\\n\\ttext-transform: @tooltip-text-transform;\\n\\tpadding: 0.5em;\\n\\tbox-sizing: content-box;\\n}\\n\\n[data-tooltip]:hover::after,\\n[data-tooltip]:focus::after {\\n\\topacity: 1;\\n\\tpointer-events: auto;\\n}\\n\\n// ------------------------------------------------\\n// [2] Position Modifiers\\n// ------------------------------------------------\\n\\n[data-tooltip][data-tooltip-position|='top']::after {\\n\\tmargin-bottom: @tooltip-margin;\\n\\ttransform: translate3d(-50%, -5px, 0);\\n\\tbottom: 100%;\\n\\tleft: 50%;\\n}\\n\\n// ------------------------------------------------\\n// [2.1] Top Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='top-left']::after {\\n\\ttransform: translate3d(~'calc(-100% + 16px)', -5px, 0);\\n\\tbottom: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.2] Top Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='top-right']::after {\\n\\ttransform: translate3d(~'calc(0% + -16px)', -5px, 0);\\n\\tbottom: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.3] Bottom\\n// ------------------------------------------------\\n\\n[data-tooltip][data-tooltip-position|='bottom']::after,\\n[data-tooltip]:not([data-tooltip-position])::after {\\n\\ttransform: translate3d(-50%, 0, 0);\\n\\tmargin-top: @tooltip-margin;\\n\\tleft: 50%;\\n\\ttop: 100%;\\n}\\n\\n// ------------------------------------------------\\n// [2.4] Bottom Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='bottom-left']::after {\\n\\ttransform: translate3d(~'calc(-100% + 16px)', 0, 0);\\n}\\n\\n// ------------------------------------------------\\n// [2.5] Bottom Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='bottom-right']::after {\\n\\ttransform: translate3d(~'calc(0% + -16px)', 0, 0);\\n}\\n\\n// ------------------------------------------------\\n// [2.6] Left\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='left']::after {\\n\\tbottom: auto;\\n\\tleft: auto;\\n\\tright: 100%;\\n\\ttop: 50%;\\n\\ttransform: translate3d(0, -50%, 0);\\n\\tmargin-right: @tooltip-margin;\\n}\\n\\n// ------------------------------------------------\\n// [2.7] Right\\n// ------------------------------------------------\\n[data-tooltip][data-tooltip-position='right']::after {\\n\\tbottom: auto;\\n\\tleft: 100%;\\n\\ttop: 50%;\\n\\ttransform: translate3d(0, -50%, 0);\\n\\tmargin-left: @tooltip-margin;\\n}\\n\\n*/\\n}\\n#sbz92 *,\\n#sbz92 *::before,\\n#sbz92 *::after {\\n box-sizing: border-box !important;\\n}\\n#sbz92 [tabindex='-1']:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n#sbz92 b,\\n#sbz92 strong {\\n font-weight: 500 !important;\\n}\\n#sbz92 a {\\n color: #020202 !important;\\n text-decoration: none !important;\\n background-color: transparent !important;\\n font-weight: 600 !important;\\n}\\n#sbz92 a:hover {\\n cursor: pointer !important;\\n color: #000000 !important;\\n text-decoration: underline !important;\\n}\\n#sbz92 a:not([href]) {\\n color: inherit !important;\\n text-decoration: none !important;\\n}\\n#sbz92 a:not([href]):hover {\\n color: inherit !important;\\n text-decoration: none !important;\\n}\\n#sbz92 img {\\n vertical-align: middle !important;\\n border-style: none !important;\\n}\\n#sbz92 svg {\\n overflow: hidden !important;\\n vertical-align: middle !important;\\n}\\n#sbz92 label {\\n display: inline-block !important;\\n}\\n#sbz92 button {\\n border-radius: 0 !important;\\n}\\n#sbz92 button:focus {\\n outline: 1px dotted !important;\\n outline: 5px auto -webkit-focus-ring-color !important;\\n}\\n#sbz92 input,\\n#sbz92 button,\\n#sbz92 select,\\n#sbz92 optgroup,\\n#sbz92 textarea {\\n margin: 0 !important;\\n}\\n#sbz92 button,\\n#sbz92 input {\\n overflow: visible !important;\\n}\\n#sbz92 button,\\n#sbz92 select {\\n text-transform: none !important;\\n}\\n#sbz92 select {\\n word-wrap: normal !important;\\n}\\n#sbz92 button,\\n#sbz92 [type=\\\"button\\\"],\\n#sbz92 [type=\\\"reset\\\"],\\n#sbz92 [type=\\\"submit\\\"] {\\n -webkit-appearance: button !important;\\n}\\n#sbz92 button:not(:disabled),\\n#sbz92 [type='button']:not(:disabled),\\n#sbz92 [type='reset']:not(:disabled),\\n#sbz92 [type='submit']:not(:disabled) {\\n cursor: pointer !important;\\n}\\n#sbz92 button::-moz-focus-inner,\\n#sbz92 [type='button']::-moz-focus-inner,\\n#sbz92 [type='reset']::-moz-focus-inner,\\n#sbz92 [type='submit']::-moz-focus-inner {\\n padding: 0 !important;\\n border-style: none !important;\\n}\\n#sbz92 input[type='radio'],\\n#sbz92 input[type='checkbox'] {\\n box-sizing: border-box !important;\\n padding: 0 !important;\\n}\\n#sbz92 input[type='date'],\\n#sbz92 input[type='time'],\\n#sbz92 input[type='datetime-local'],\\n#sbz92 input[type='month'] {\\n -webkit-appearance: listbox !important;\\n}\\n#sbz92 textarea {\\n overflow: auto !important;\\n resize: vertical !important;\\n}\\n#sbz92 [type='number']::-webkit-inner-spin-button,\\n#sbz92 [type='number']::-webkit-outer-spin-button {\\n height: auto !important;\\n}\\n#sbz92 [hidden] {\\n display: none !important;\\n}\\n#sbz92 ::-webkit-input-placeholder {\\n /* Edge */\\n color: #777 !important;\\n}\\n#sbz92 :-ms-input-placeholder {\\n /* Internet Explorer 10-11 */\\n color: #777 !important;\\n}\\n#sbz92 ::placeholder {\\n color: #777 !important;\\n}\\n#sbz92 div {\\n display: block !important;\\n text-rendering: geometricPrecision !important;\\n -webkit-font-smoothing: antialiased !important;\\n -moz-osx-font-smoothing: grayscale !important;\\n}\\n#sbz92 ::-webkit-scrollbar {\\n width: 7px !important;\\n height: 7px !important;\\n}\\n#sbz92 ::-webkit-scrollbar-track {\\n border-radius: 10px !important;\\n}\\n#sbz92 ::-webkit-scrollbar-thumb {\\n border-radius: 10px !important;\\n background: #d6d6d6 !important;\\n}\\n#sbz92 ::-webkit-scrollbar-thumb:hover {\\n background: #aaa !important;\\n}\\n#sbz92 .badge {\\n padding: 2px 8px !important;\\n font-size: 12px !important;\\n font-weight: 600 !important;\\n border-radius: 6px !important;\\n display: inline-flex !important;\\n align-items: center !important;\\n}\\n#sbz92 .badge.badge--success {\\n color: #28a745 !important;\\n -webkit-text-fill-color: #28a745 !important;\\n background: #28a74526 !important;\\n}\\n#sbz92 .dot {\\n width: 8px !important;\\n height: 8px !important;\\n border-radius: 4px !important;\\n flex-shrink: 0 !important;\\n background: #000 !important;\\n}\\n#sbz92 .dot.dot--success {\\n background: #28a745 !important;\\n}\\n#sbz92 * {\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0) !important;\\n -webkit-tap-highlight-color: transparent !important;\\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' !important;\\n font-size: 16px !important;\\n -webkit-box-sizing: border-box !important;\\n -moz-box-sizing: border-box !important;\\n box-sizing: border-box !important;\\n margin: 0 !important;\\n padding: 0 !important;\\n border: 0 !important;\\n vertical-align: baseline !important;\\n}\\n#sbz92 button:focus {\\n outline: none !important;\\n}\\n#sbz92 img {\\n overflow: hidden !important;\\n flex-shrink: 0 !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n background-size: 100% 100% !important;\\n -webkit-user-select: none !important;\\n -khtml-user-select: none !important;\\n -moz-user-select: none !important;\\n -o-user-select: none !important;\\n user-select: none !important;\\n -webkit-user-drag: none !important;\\n}\\n#sbz92 .pos-relative {\\n position: relative !important;\\n}\\n#sbz92 .flex-row {\\n flex-direction: row !important;\\n}\\n#sbz92 .flex-column {\\n flex-direction: column !important;\\n}\\n#sbz92 .flex-grow-1 {\\n flex-grow: 1 !important;\\n}\\n#sbz92 .align-self-end {\\n align-self: flex-end !important;\\n}\\n#sbz92 .align-items-end {\\n align-items: flex-end !important;\\n}\\n#sbz92 .justify-content-center {\\n justify-content: center !important;\\n}\\n#sbz92 .h-full {\\n height: 100% !important;\\n}\\n#sbz92 .w-full {\\n width: 100% !important;\\n}\\n#sbz92 .text-muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .text-lg {\\n font-size: 18px !important;\\n}\\n#sbz92 .text-xl {\\n font-size: 20px !important;\\n}\\n#sbz92 .text-sm {\\n font-size: 14px !important;\\n}\\n#sbz92 .text-center {\\n text-align: center !important;\\n}\\n#sbz92 .text-danger {\\n color: #ea3d2f !important;\\n}\\n#sbz92 .text-italic {\\n font-style: italic !important;\\n}\\n#sbz92 .d-none {\\n display: none !important;\\n}\\n#sbz92 .d-flex {\\n display: flex !important;\\n}\\n#sbz92 .d-inline-block {\\n display: inline-block !important;\\n}\\n#sbz92 .ml-1 {\\n margin-left: 7.5px !important;\\n}\\n#sbz92 .pl-2 {\\n padding-left: 15px !important;\\n}\\n#sbz92 .pr-2 {\\n padding-right: 15px !important;\\n}\\n#sbz92 .pb-2 {\\n padding-bottom: 15px !important;\\n}\\n#sbz92 .mt-1 {\\n margin-top: 7.5px !important;\\n}\\n#sbz92 .mt-2 {\\n margin-top: 15px !important;\\n}\\n#sbz92 .ml-2 {\\n margin-left: 15px !important;\\n}\\n#sbz92 .mr-1 {\\n margin-right: 7.5px !important;\\n}\\n#sbz92 .mr-2 {\\n margin-right: 15px !important;\\n}\\n#sbz92 .pt-3 {\\n padding-top: 22.5px !important;\\n}\\n#sbz92 .pl-3 {\\n padding-left: 22.5px !important;\\n}\\n#sbz92 .pr-3 {\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .pb-3 {\\n padding-bottom: 22.5px !important;\\n}\\n#sbz92 .mt-3 {\\n margin-top: 22.5px !important;\\n}\\n#sbz92 .ml-3 {\\n margin-left: 22.5px !important;\\n}\\n#sbz92 .mr-3 {\\n margin-right: 22.5px !important;\\n}\\n#sbz92 .mb-3 {\\n margin-bottom: 22.5px !important;\\n}\\n#sbz92 .mb-2 {\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .mb-1 {\\n margin-bottom: 7.5px !important;\\n}\\n#sbz92 .muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .i {\\n font-style: italic !important;\\n}\\n#sbz92 .align-items-center {\\n align-items: center !important;\\n}\\n#sbz92 .text-truncate {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .flex_1 {\\n flex: 1 !important;\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .justify-content-between {\\n justify-content: space-between !important;\\n}\\n#sbz92 .no-shrink {\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .loading {\\n flex: 1 !important;\\n align-items: center !important;\\n justify-content: center !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n}\\n#sbz92 .avatar-container {\\n text-align: center !important;\\n}\\n#sbz92 .avatar {\\n position: relative !important;\\n object-fit: cover !important;\\n display: inline-block !important;\\n}\\n#sbz92 .group-avatar--primary .avatar {\\n width: 40px !important;\\n height: 40px !important;\\n border-radius: 35px !important;\\n}\\n#sbz92 .group-avatar--secondary .avatar {\\n position: relative !important;\\n width: 35px !important;\\n height: 35px !important;\\n border-radius: 35px !important;\\n}\\n#sbz92 .avatar.avatar__account {\\n width: 38px !important;\\n height: 38px !important;\\n border-radius: 38px !important;\\n margin-right: 7.5px !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-middle {\\n width: 50px !important;\\n height: 50px !important;\\n margin-left: -10px !important;\\n z-index: 3 !important;\\n position: relative !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-left {\\n z-index: 2 !important;\\n}\\n#sbz92 .group-avatar--primary .group-avatar--agent-right {\\n z-index: 2 !important;\\n margin-left: -10px !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-left {\\n z-index: 3 !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-middle {\\n z-index: 2 !important;\\n margin-left: -15px !important;\\n}\\n#sbz92 .group-avatar--secondary .group-avatar--agent-right {\\n z-index: 1 !important;\\n margin-left: -15px !important;\\n}\\n#sbz92 .widget-header {\\n z-index: -1 !important;\\n position: relative !important;\\n transition: height 0.2s !important;\\n border-radius: 15px 15px 0px 0px !important;\\n background: '@background' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n width: 100% !important;\\n}\\n#sbz92 .widget-header .widget-header--total-unread-convo {\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n background: #ef000d !important;\\n display: flex !important;\\n border-radius: 50% !important;\\n justify-content: center !important;\\n align-items: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n position: absolute !important;\\n cursor: pointer !important;\\n right: -8px !important;\\n top: -4px !important;\\n}\\n#sbz92 .widget-header--collapsed {\\n height: auto !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed {\\n height: auto !important;\\n padding: 15px 22.5px !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed .widget-header--title {\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n text-overflow: ellipsis !important;\\n font-size: 16px !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--collapsed .widget-header--description {\\n font-size: 14px !important;\\n overflow: hidden !important;\\n opacity: 0.7 !important;\\n flex: 1 !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n margin-top: 2.5px !important;\\n position: relative !important;\\n line-height: 1.5 !important;\\n}\\n#sbz92 .mobile .widget-header {\\n border-radius: 0px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded {\\n height: 224px !important;\\n padding: 15px 22.5px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--top-wrapper {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: center !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--avatar-wrapper {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--title {\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n text-overflow: ellipsis !important;\\n flex: 1 !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--expanded .widget-header--description {\\n position: relative !important;\\n text-align: center !important;\\n margin-top: 15px !important;\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-box-orient: vertical !important;\\n -webkit-line-clamp: 2 !important;\\n overflow: hidden !important;\\n line-height: 1.5 !important;\\n}\\n#sbz92 .widget-header--convo-expanded {\\n height: 224px !important;\\n}\\n#sbz92 .widget-header--inner {\\n position: absolute !important;\\n top: 0 !important;\\n left: 50% !important;\\n transform: translateX(-50%) !important;\\n width: 100% !important;\\n opacity: 1 !important;\\n display: flex !important;\\n}\\n#sbz92 .widget-header--inner.widget-header--inner--hidden {\\n opacity: 0 !important;\\n transform: scale(0) !important;\\n animation-duration: 0.05s !important;\\n animation-name: hide !important;\\n}\\n#sbz92 .widget-header--title-container {\\n min-width: 0 !important;\\n flex: 1 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n z-index: 1 !important;\\n}\\n#sbz92 .widget-header--button-close {\\n display: flex !important;\\n border-radius: 6px !important;\\n justify-self: flex-end !important;\\n align-items: center !important;\\n align-self: flex-start !important;\\n opacity: 0.6 !important;\\n transition: opacity 0.15s ease, scale 0.15s ease, filter 0.15s ease !important;\\n filter: brightness(0.95) !important;\\n}\\n#sbz92 .widget-header--button-close:hover {\\n opacity: 1 !important;\\n filter: brightness(1.1) !important;\\n scale: 1.1 !important;\\n}\\n#sbz92 .widget-header--button-close-icon {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci14Ij48bGluZSB4MT0iMTgiIHkxPSI2IiB4Mj0iNiIgeTI9IjE4Ij48L2xpbmU+PGxpbmUgeDE9IjYiIHkxPSI2IiB4Mj0iMTgiIHkyPSIxOCI+PC9saW5lPjwvc3ZnPgo=') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-header--button-back {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IndoaXRlIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgNmwxNiAwIiAvPjxwYXRoIGQ9Ik00IDEybDE2IDAiIC8+PHBhdGggZD0iTTQgMThsMTYgMCIgLz48L3N2Zz4K') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n background-size: 24px 24px !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-header--wrap-button-back {\\n display: flex !important;\\n position: relative !important;\\n margin-right: 7.5px !important;\\n cursor: pointer !important;\\n scale: 1 !important;\\n opacity: 0.6 !important;\\n transition: opacity 0.15s ease, scale 0.15s ease, filter 0.15s ease !important;\\n filter: brightness(0.95) !important;\\n}\\n#sbz92 .widget-header--wrap-button-back:hover {\\n opacity: 1 !important;\\n filter: brightness(1.1) !important;\\n scale: 1.1 !important;\\n}\\n#sbz92 .fade-enter-active,\\n#sbz92 .fade-leave-active {\\n transition: opacity 0.5s ease-out 0.2s !important;\\n}\\n#sbz92 .fade-enter,\\n#sbz92 .fade-leave-to {\\n opacity: 0 !important;\\n}\\n#sbz92 .slide-fade-enter-active {\\n transition: all 0.3s ease !important;\\n}\\n#sbz92 .slide-fade-leave-active {\\n transition: all 0.2s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .slide-fade-enter,\\n#sbz92 .slide-fade-leave-to {\\n transform: translateX(10px) !important;\\n opacity: 0 !important;\\n}\\n#sbz92 .widget_header__body {\\n padding-bottom: 70px !important;\\n}\\n#sbz92 .widget_header__body.widget_header__body__social {\\n display: flex !important;\\n}\\n#sbz92 .social__account_logo {\\n height: 90px !important;\\n width: 90px !important;\\n margin-right: 15px !important;\\n border-radius: 15px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .social__introduction {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n max-height: 72px !important;\\n overflow: hidden !important;\\n display: -webkit-box !important;\\n -webkit-box-orient: vertical !important;\\n -webkit-line-clamp: 3 !important;\\n}\\n#sbz92 .social__links {\\n display: flex !important;\\n flex-direction: row !important;\\n}\\n#sbz92 .social__links-logo {\\n height: 30px !important;\\n width: 30px !important;\\n border-radius: 50% !important;\\n margin-right: 10px !important;\\n margin-top: 5px !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n display: block !important;\\n}\\n#sbz92 .social__links-logo--facebook {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2215%22%20r%3D%2215%22%20fill%3D%22%230264FF%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M17.2944%2029.8252C16.5464%2029.9404%2015.7803%2030%2015%2030C14.0962%2030%2013.2109%2029.9199%2012.3511%2029.7666V18.4775H10V14.4287H12.3511V11.8086C12.3511%209.93457%2013.2744%207%2017.3384%207L21%207.01465V10.9453H18.3433C17.9075%2010.9453%2017.2947%2011.1553%2017.2947%2012.0488V14.4326H20.989L20.5571%2018.4775H17.2944V29.8252Z%22%20fill%3D%22white%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--messenger {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Crect%20width%3D%2230%22%20height%3D%2230%22%20rx%3D%2215%22%20fill%3D%22%23007FFF%22/%3E%3Crect%20x%3D%224.28564%22%20y%3D%226%22%20width%3D%2221.4286%22%20height%3D%2218.8571%22%20fill%3D%22white%22/%3E%3Cpath%20d%3D%22M14.9478%2014.5713C14.8228%2014.5917%2014.6974%2014.6104%2014.5715%2014.6276C14.6974%2014.6104%2014.8228%2014.5917%2014.9478%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7507%2014.5713C14.691%2014.5823%2014.6313%2014.5923%2014.5715%2014.6026C14.6313%2014.5923%2014.691%2014.5823%2014.7507%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M15.0126%2014.5713C14.8663%2014.5878%2014.7192%2014.6024%2014.5715%2014.6148C14.7192%2014.6024%2014.8663%2014.5878%2015.0126%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.783%2014.5713C14.7128%2014.5807%2014.642%2014.5894%2014.5715%2014.5976C14.642%2014.5894%2014.7128%2014.5807%2014.783%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7299%2014.5713C14.6773%2014.5825%2014.6244%2014.5937%2014.5715%2014.6045C14.6244%2014.5937%2014.6773%2014.5825%2014.7299%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.6992%2014.5713C14.6567%2014.5834%2014.6141%2014.5949%2014.5715%2014.6068C14.6141%2014.5949%2014.6567%2014.5834%2014.6992%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7107%2014.5713C14.6645%2014.5834%2014.618%2014.5958%2014.5715%2014.6075C14.618%2014.5958%2014.6645%2014.5836%2014.7107%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.7194%2014.5713C14.6704%2014.5827%2014.621%2014.5935%2014.5715%2014.6045C14.621%2014.5935%2014.6704%2014.5827%2014.7194%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.8087%2014.5713C14.7297%2014.5779%2014.6507%2014.5839%2014.5715%2014.5891C14.6507%2014.5839%2014.7297%2014.5779%2014.8087%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M15.0417%2014.5713C14.8856%2014.5814%2014.7288%2014.5894%2014.5715%2014.5946C14.7288%2014.5894%2014.8856%2014.5814%2015.0417%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.8206%2014.5713C14.7377%2014.574%2014.6546%2014.5761%2014.5715%2014.5775C14.6546%2014.5761%2014.7377%2014.574%2014.8206%2014.5713Z%22%20fill%3D%22black%22/%3E%3Cpath%20d%3D%22M14.1547%2012.3174L9.29419%2017.4636L13.7176%2015.0365L16.0288%2017.4636L20.8621%2012.3174L16.4877%2014.7019L14.1547%2012.3174Z%22%20fill%3D%22%23448AFF%22/%3E%3Cpath%20d%3D%22M15%200C6.717%200%200%206.717%200%2015C0%2023.283%206.717%2030%2015%2030C23.283%2030%2030%2023.283%2030%2015C30%206.717%2023.283%200%2015%200ZM15.1172%2023.0294C14.1886%2023.0294%2013.2923%2022.8983%2012.4491%2022.6554L9.42421%2024.375V21.14C7.39815%2019.5982%206.10428%2017.2501%206.10428%2014.6203C6.10428%209.97581%2010.1395%206.21094%2015.1172%206.21094C20.0951%206.21094%2024.1301%209.97581%2024.1301%2014.6203C24.1301%2019.2643%2020.0951%2023.0294%2015.1172%2023.0294V23.0294Z%22%20fill%3D%22%23007FFF%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--email {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M22.6875%2012.9688C21.9375%2013.5625%2020.3125%2014.75%2017.875%2016.5L17.5625%2016.75C17.0625%2017.125%2016.6875%2017.4062%2016.375%2017.5625C15.875%2017.875%2015.4062%2018%2015%2018C14.5625%2018%2014.125%2017.875%2013.625%2017.5938C13.3125%2017.4375%2012.9375%2017.1562%2012.4375%2016.7812L12.125%2016.5C9.59375%2014.6875%208%2013.5%207.3125%2012.9688C7.25%2012.9375%207.15625%2012.9375%207.09375%2012.9688C7.03125%2013%207%2013.0625%207%2013.125V19.5C7%2019.9375%207.125%2020.2812%207.4375%2020.5625C7.71875%2020.875%208.0625%2021%208.5%2021H21.5C21.9062%2021%2022.25%2020.875%2022.5625%2020.5625C22.8438%2020.2812%2023%2019.9375%2023%2019.5V13.125C23%2013.0625%2022.9375%2013%2022.875%2012.9375C22.8125%2012.9062%2022.75%2012.9062%2022.6875%2012.9688ZM15%2017C14.7188%2017%2014.375%2016.875%2014%2016.625C13.75%2016.5%2013.4375%2016.2812%2013.0312%2015.9375L12.7188%2015.7188C10.1562%2013.8438%208.40625%2012.5625%207.5%2011.8438L7.28125%2011.6875C7.09375%2011.5625%207%2011.3438%207%2011.0938V10.5C7%2010.0938%207.125%209.75%207.4375%209.4375C7.71875%209.15625%208.0625%209%208.5%209H21.5C21.9062%209%2022.25%209.15625%2022.5625%209.4375C22.8438%209.75%2023%2010.0938%2023%2010.5V11.0938C23%2011.3438%2022.9062%2011.5625%2022.7188%2011.6875L22.5625%2011.8125C21.6562%2012.5312%2019.9062%2013.8438%2017.2812%2015.7188L16.9688%2015.9375C16.5312%2016.2812%2016.2188%2016.5%2016%2016.625C15.5938%2016.875%2015.25%2017%2015%2017Z%22%20fill%3D%22white%22/%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .social__links-logo--zalo {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20width%3D%2230%22%20height%3D%2230%22%20viewBox%3D%220%200%2030%2030%22%20fill%3D%22none%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M29.9999%2014.9385C29.9669%206.68262%2023.2639%200%2015%200C6.7157%200%200%206.71582%200%2015C0%2023.2842%206.7157%2030%2015%2030C23.2639%2030%2029.9669%2023.3174%2029.9999%2015.0615C29.9999%2015.041%2030%2015.0205%2030%2015C30%2014.9795%2029.9999%2014.959%2029.9999%2014.9385Z%22%20fill%3D%22white%22/%3E%3Cpath%20d%3D%22M24.5612%2017.4695C22.9394%2017.4726%2021.6242%2016.1862%2021.6279%2014.6005C21.6316%2013.0345%2022.9474%2011.7445%2024.5473%2011.7383C26.1556%2011.732%2027.4826%2013.0349%2027.4786%2014.6162C27.4746%2016.1926%2026.1719%2017.4665%2024.5612%2017.4695ZM22.8416%2014.6183C22.8459%2015.5573%2023.6166%2016.3004%2024.5777%2016.2923C25.5165%2016.2845%2026.2699%2015.5301%2026.2673%2014.6005C26.2646%2013.6712%2025.51%2012.9317%2024.56%2012.9277C23.6012%2012.9237%2022.8373%2013.6751%2022.8416%2014.6183Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M19.5054%2010.0762H20.795V17.4217H19.9447C19.7021%2017.4217%2019.5054%2017.225%2019.5054%2016.9823V10.0762Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M18.5227%2011.8907H17.2881V12.2935C16.5767%2011.8601%2015.8509%2011.6775%2015.06%2011.831C14.2526%2011.9876%2013.6164%2012.4043%2013.167%2013.0917C12.4538%2014.1826%2012.5894%2015.5904%2013.4938%2016.5431C14.3504%2017.4454%2015.8628%2017.8178%2017.2815%2016.9247C17.2835%2016.934%2017.286%2016.9422%2017.2881%2016.9511V16.9826C17.2881%2017.2252%2017.4849%2017.422%2017.7275%2017.422H18.5227V11.8907V11.8907ZM15.5853%2016.2787C14.6636%2016.268%2013.8924%2015.5006%2013.8986%2014.6004C13.9048%2013.692%2014.6716%2012.9481%2015.602%2012.9479C16.5427%2012.9477%2017.2871%2013.6781%2017.2882%2014.6026C17.2893%2015.5333%2016.521%2016.2896%2015.5853%2016.2787Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20d%3D%22M8.0481%2016.2438C9.39854%2014.5856%2010.6939%2012.9885%2011.9984%2011.3989C12.2464%2011.0968%2012.3662%2010.7671%2012.3731%2010.3807C12.3761%2010.2135%2012.3261%2010.1646%2012.1596%2010.165C11.6056%2010.1666%206.41195%2010.165%206.41195%2010.165V11.4709H10.4978C10.4424%2011.543%207.83556%2014.7218%206.57932%2016.2403C6.37112%2016.4919%206.26503%2016.7645%206.25401%2017.0936C6.24628%2017.3242%206.28864%2017.4139%206.52267%2017.4211V17.4217H11.9356C12.1782%2017.4217%2012.3749%2017.225%2012.3749%2016.9823V16.2487V16.2438H8.0481V16.2438Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M4.948%2026.1338C6.03613%2027.1172%207.26917%2027.9424%208.61108%2028.5752V26.1338H4.948ZM0.00268555%2014.7119C0.0775146%2010.7393%201.69666%207.14453%204.28479%204.50293C4.0459%204.98242%203.83435%205.47949%203.64661%205.99121C2.58862%208.87598%202.31299%2011.8506%202.69116%2014.8916C2.95862%2017.042%203.55518%2019.0869%204.63391%2020.9775C4.8269%2021.3154%205.02271%2021.6582%205.26489%2021.9609C5.76672%2022.5879%205.80981%2023.2725%205.59888%2024.0049C5.4873%2024.3926%205.32227%2024.75%205.11304%2025.082C4.95691%2025.3291%204.77612%2025.5635%204.57434%2025.7842C1.81921%2023.1201%200.0819092%2019.4102%200.00280762%2015.2939C0.000976562%2015.1963%200%2015.0986%200%2015C0%2014.9033%200.000854492%2014.8076%200.00268555%2014.7119Z%22%20fill%3D%22%230068FE%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M24.8226%2026.3367C22.191%2028.6189%2018.7568%2029.9998%2015%2029.9998C11.1449%2029.9998%207.62952%2028.5457%204.97241%2026.156C6.32458%2026.1921%207.61877%2025.9031%208.86353%2025.3464C8.97681%2025.2957%209.06262%2025.3113%209.16443%2025.364C12.2258%2026.9646%2015.5131%2027.5125%2018.926%2027.3962C20.9574%2027.3269%2022.9333%2027.0046%2024.8226%2026.3367Z%22%20fill%3D%22%23015BDF%22/%3E%3C/svg%3E') !important;\\n}\\n@keyframes hide {\\n 100% {\\n opacity: 0;\\n transform: scale(0);\\n }\\n}\\n#sbz92 .widget-header-expand-container {\\n width: 100% !important;\\n}\\n#sbz92 .message-input {\\n width: 100% !important;\\n border-top: 1px solid #e3e3e3 !important;\\n display: flex !important;\\n flex-direction: row !important;\\n padding: 15px 22.5px !important;\\n}\\n#sbz92 .message-input--disabled {\\n background: #f0f0f0 !important;\\n opacity: 0.6 !important;\\n filter: grayscale(1) !important;\\n}\\n#sbz92 textarea[disabled='disabled']::-webkit-input-placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 textarea[disabled='disabled']:-ms-input-placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 textarea[disabled='disabled']::placeholder {\\n color: #a4a4a4 !important;\\n -webkit-text-fill-color: #a4a4a4 !important;\\n}\\n#sbz92 .message-input--input {\\n word-wrap: break-word !important;\\n resize: none !important;\\n flex: 1 !important;\\n align-self: center !important;\\n margin-right: 7.5px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .message-input--input::placeholder {\\n opacity: 0.5 !important;\\n /* Firefox */\\n}\\n#sbz92 .message-input--input::-ms-input-placeholder {\\n /* Edge 12 -18 */\\n opacity: 0.5 !important;\\n /* Firefox */\\n}\\n#sbz92 .message-input--emoji-button {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXNtaWxlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PHBhdGggZD0iTTggMTRzMS41IDIgNCAyIDQtMiA0LTIiPjwvcGF0aD48bGluZSB4MT0iOSIgeTE9IjkiIHgyPSI5LjAxIiB5Mj0iOSI+PC9saW5lPjxsaW5lIHgxPSIxNSIgeTE9IjkiIHgyPSIxNS4wMSIgeTI9IjkiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-input--button {\\n background-size: 70% !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 32px !important;\\n height: 32px !important;\\n display: block !important;\\n cursor: pointer !important;\\n position: relative !important;\\n border-radius: 20px !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .message-input--button:hover {\\n background-color: #eeeeee !important;\\n}\\n#sbz92 .message-input--disabled .message-input--button {\\n cursor: default !important;\\n}\\n#sbz92 .message-input--disabled .message-input--button {\\n cursor: default !important;\\n}\\n#sbz92 .message-input--attachment-button {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImdyYXkiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLXBhcGVyY2xpcCI+PHBhdGggZD0iTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDgiPjwvcGF0aD48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-input--send-button {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2225%22%20height%3D%2225%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22@esc-primary-color-esc%22%20fill%3D%22none%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22/%3E%3Cpath%20d%3D%22M4.698%204.034l16.302%207.966l-16.302%207.966a.503%20.503%200%200%201%20-.546%20-.124a.555%20.555%200%200%201%20-.12%20-.568l2.468%20-7.274l-2.468%20-7.274a.555%20.555%200%200%201%20.12%20-.568a.503%20.503%200%200%201%20.546%20-.124z%22%20fill%3D%22@esc-primary-color-esc%22/%3E%3Cpath%20d%3D%22M6.5%2012h14.5%22%20/%3E%3C/svg%3E') !important;\\n background-size: 82% !important;\\n}\\n#sbz92 .message-input--preform {\\n justify-content: center !important;\\n padding: 11px !important;\\n @spacer 2;\\n}\\n#sbz92 .btn--preform {\\n border-radius: 7px !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n height: 40px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n font-size: 14px !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n background: '@primary_color' !important;\\n width: 60% !important;\\n}\\n#sbz92 .widget-body.embed-chat .message-input {\\n border: 1px solid #e3e3e3 !important;\\n border-radius: 8px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .form-label {\\n margin-top: 15px !important;\\n}\\n#sbz92 .form {\\n border: 1px solid #eeeeee !important;\\n box-sizing: border-box !important;\\n box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15) !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 textarea.form-control {\\n resize: none !important;\\n word-wrap: break-word !important;\\n}\\n#sbz92 .form-control--container {\\n position: relative !important;\\n}\\n#sbz92 input.form-control[disabled] {\\n background: #f9f9f9 !important;\\n}\\n#sbz92 .form-control--container .form-control--check {\\n position: absolute !important;\\n right: 10px !important;\\n top: 10px !important;\\n background-size: 100% 100% !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM1QkFBMUQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNoZWNrIj48cG9seWxpbmUgcG9pbnRzPSIyMCA2IDkgMTcgNCAxMiI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .form-control--valid-input--error {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n font-size: 14px !important;\\n padding-top: 5px !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error,\\n#sbz92 input[type='number'].form-control.input--error,\\n#sbz92 input[type='date'].form-control.input--error,\\n#sbz92 textarea.form-control.input--error,\\n#sbz92 select.form-control.input--error {\\n border: 1px solid #dc3545 !important;\\n background: #dd41500f !important;\\n}\\n#sbz92 input[type='text'].form-control,\\n#sbz92 input[type='number'].form-control,\\n#sbz92 input[type='date'].form-control,\\n#sbz92 textarea.form-control,\\n#sbz92 select.form-control {\\n width: 100% !important;\\n border: 1px solid #c4c4c4 !important;\\n border-radius: 8px !important;\\n transition: all 100ms ease !important;\\n padding: 10px 12px !important;\\n}\\n#sbz92 input[type='text'].form-control:hover,\\n#sbz92 input[type='number'].form-control:hover,\\n#sbz92 input[type='date'].form-control:hover,\\n#sbz92 textarea.form-control:hover,\\n#sbz92 select.form-control:hover {\\n border: 1px solid #6c757d !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error:hover,\\n#sbz92 input[type='number'].form-control.input--error:hover,\\n#sbz92 input[type='date'].form-control.input--error:hover,\\n#sbz92 textarea.form-control.input--error:hover,\\n#sbz92 select.form-control.input--error:hover {\\n border: 1px solid #dc3545 !important;\\n}\\n#sbz92 select.form-control {\\n padding: 1px 8px !important;\\n}\\n#sbz92 input[type='date'].form-control {\\n height: 40px !important;\\n width: 100% !important;\\n background-color: #fff !important;\\n}\\n#sbz92 .form-wrapper-attachment input[type='date'].form-control {\\n height: 32px !important;\\n padding-top: 6px !important;\\n padding-bottom: 6px !important;\\n}\\n#sbz92 input[type='text'].form-control:focus,\\n#sbz92 input[type='number'].form-control:focus,\\n#sbz92 input[type='date'].form-control:focus,\\n#sbz92 textarea.form-control:focus,\\n#sbz92 select.form-control:focus {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 input[type='text'].form-control.input--error:focus,\\n#sbz92 input[type='number'].form-control.input--error:focus,\\n#sbz92 input[type='date'].form-control.input--error:focus,\\n#sbz92 textarea.form-control.input--error:focus,\\n#sbz92 select.form-control.input--error:focus {\\n border: 1px solid #dc3545 !important;\\n}\\n#sbz92 .label {\\n display: block !important;\\n padding-bottom: 6px !important;\\n margin-top: 8px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n font-size: 14px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .form--btn-submit {\\n border-radius: 7px !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n width: 100% !important;\\n}\\n#sbz92 .form .radio {\\n display: block !important;\\n position: relative !important;\\n width: 100% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .form .radio:first-of-type {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form input[type='radio'] {\\n position: absolute !important;\\n visibility: hidden !important;\\n}\\n#sbz92 .form .radio--label {\\n padding-left: 22px !important;\\n display: block !important;\\n position: relative !important;\\n z-index: 9 !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .form .radio--check {\\n display: block !important;\\n position: absolute !important;\\n border: 1px solid #aaa !important;\\n border-radius: 100% !important;\\n height: 16px !important;\\n width: 16px !important;\\n top: 0px !important;\\n left: 0px !important;\\n z-index: 5 !important;\\n transition: border 0.15s linear !important;\\n -webkit-transition: border 0.15s linear !important;\\n}\\n#sbz92 .form .radio--check:hover {\\n border: 1px solid #888 !important;\\n}\\n#sbz92 .form .radio--check::before {\\n display: block !important;\\n position: absolute !important;\\n content: '' !important;\\n border-radius: 100% !important;\\n height: 10px !important;\\n width: 10px !important;\\n top: 2px !important;\\n left: 2px !important;\\n margin: auto !important;\\n transition: background 0.15s linear !important;\\n -webkit-transition: background 0.15s linear !important;\\n}\\n#sbz92 .form input[type='radio']:checked ~ .radio--check {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .form input[type='radio']:checked ~ .radio--check::before {\\n background: '@primary_color' !important;\\n}\\n#sbz92 .form .checkbox {\\n display: block !important;\\n position: relative !important;\\n width: 100% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .form .checkbox:first-of-type {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form input[type='checkbox'] {\\n position: absolute !important;\\n visibility: hidden !important;\\n}\\n#sbz92 .form .checkbox--label {\\n padding-left: 22px !important;\\n display: block !important;\\n position: relative !important;\\n z-index: 9 !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .form .checkbox--check {\\n display: block !important;\\n position: absolute !important;\\n border: 1px solid #aaa !important;\\n border-radius: 4 px !important;\\n height: 16px !important;\\n width: 16px !important;\\n top: 0px !important;\\n left: 0px !important;\\n z-index: 5 !important;\\n transition: border 0.15s linear !important;\\n -webkit-transition: border 0.15s linear !important;\\n}\\n#sbz92 .form .checkbox--check:hover {\\n border: 1px solid #888 !important;\\n}\\n#sbz92 .form .checkbox--check::before {\\n display: block !important;\\n position: absolute !important;\\n content: '' !important;\\n height: 100% !important;\\n width: 100% !important;\\n margin: auto !important;\\n transition: background 0.15s linear !important;\\n -webkit-transition: background 0.15s linear !important;\\n}\\n#sbz92 .form input[type='checkbox']:checked ~ .checkbox--check {\\n border: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .form input[type='checkbox']:checked ~ .checkbox--check::before {\\n background: '@primary_color' !important;\\n}\\n#sbz92 .form .select .form-control {\\n padding-right: 20px !important;\\n}\\n#sbz92 .form select {\\n /*background: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjQxMDU4IDYuOTExMDdDNC43MzYwMiA2LjU4NTYzIDUuMjYzNjYgNi41ODU2MyA1LjU4OTA5IDYuOTExMDdMOS45OTk4NCAxMS4zMjE4TDE0LjQxMDYgNi45MTEwN0MxNC43MzYgNi41ODU2MyAxNS4yNjM3IDYuNTg1NjMgMTUuNTg5MSA2LjkxMTA3QzE1LjkxNDUgNy4yMzY1MSAxNS45MTQ1IDcuNzY0MTQgMTUuNTg5MSA4LjA4OTU4TDEwLjU4OTEgMTMuMDg5NkMxMC4yNjM3IDEzLjQxNSA5LjczNjAyIDEzLjQxNSA5LjQxMDU4IDEzLjA4OTZMNC40MTA1OCA4LjA4OTU4QzQuMDg1MTQgNy43NjQxNCA0LjA4NTE0IDcuMjM2NTEgNC40MTA1OCA2LjkxMTA3WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+\\\") no-repeat right;*/\\n}\\n#sbz92 .form-require-info--list {\\n background: #fff !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n}\\n#sbz92 .form-require-info--title {\\n font-size: 18px !important;\\n line-height: 20px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n background: #fff !important;\\n border-bottom: 1px solid #f0f0f0 !important;\\n}\\n#sbz92 .form-require-info--item {\\n border-bottom: 1px solid #f0f0f0 !important;\\n}\\n#sbz92 .form-require-info--item:hover {\\n cursor: pointer !important;\\n background: #e0e0e0 !important;\\n}\\n#sbz92 input[type='checkbox'] {\\n background-color: initial !important;\\n cursor: default !important;\\n -webkit-appearance: checkbox !important;\\n box-sizing: border-box !important;\\n margin: 3px 3px 3px 4px !important;\\n padding: initial !important;\\n border: initial !important;\\n}\\n#sbz92 input[type='radio'] {\\n background-color: initial !important;\\n cursor: default !important;\\n -webkit-appearance: radio !important;\\n box-sizing: border-box !important;\\n margin: 3px 3px 0px 5px !important;\\n padding: initial !important;\\n border: initial !important;\\n}\\n#sbz92 option {\\n font-weight: normal !important;\\n display: block !important;\\n white-space: pre !important;\\n min-height: 1.2em !important;\\n padding: 0px 2px 1px !important;\\n}\\n#sbz92 select {\\n -webkit-writing-mode: horizontal-tb !important;\\n text-rendering: auto !important;\\n color: -internal-light-dark-color(black, white) !important;\\n letter-spacing: normal !important;\\n word-spacing: normal !important;\\n text-transform: none !important;\\n text-indent: 0px !important;\\n text-shadow: none !important;\\n display: inline-block !important;\\n text-align: start !important;\\n -webkit-appearance: menulist !important;\\n box-sizing: border-box !important;\\n align-items: center !important;\\n white-space: pre !important;\\n -webkit-rtl-ordering: logical !important;\\n background-color: -internal-light-dark-color(white, black) !important;\\n cursor: default !important;\\n margin: 0em !important;\\n font: 400 13.3333px Arial !important;\\n border-radius: 0px !important;\\n border-width: 1px !important;\\n border-style: solid !important;\\n border-color: #a9a9a9 !important;\\n border-image: initial !important;\\n}\\n#sbz92 select {\\n position: relative !important;\\n display: inline-block !important;\\n border: 2px #cccc solid !important;\\n border-radius: 5px !important;\\n height: 36px !important;\\n line-height: 34px !important;\\n padding: 0 12px !important;\\n font-size: 14px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .custom-select--wrap-selected {\\n display: flex !important;\\n position: relative !important;\\n justify-content: space-between !important;\\n cursor: pointer !important;\\n border: 1px solid #d8d8d8 !important;\\n border-radius: 5px !important;\\n padding: 5px !important;\\n}\\n#sbz92 .custom-select--selected-items {\\n display: flex !important;\\n align-items: center !important;\\n flex-wrap: wrap !important;\\n}\\n#sbz92 .custom-select--selected-item {\\n display: flex !important;\\n align-items: center !important;\\n margin: 3px 3px !important;\\n padding: 1px 6px !important;\\n border-radius: 5px !important;\\n border: 1px solid #d8d8d8 !important;\\n font-size: 14px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n vertical-align: top !important;\\n}\\n#sbz92 .icn-delete:before {\\n display: flex !important;\\n justify-items: center !important;\\n font-size: 12px !important;\\n margin-left: 5px !important;\\n opacity: 0.5 !important;\\n content: '\\\\2715' !important;\\n}\\n#sbz92 .custom-select--wrap-options {\\n display: flex !important;\\n flex-direction: column !important;\\n position: absolute !important;\\n left: 0 !important;\\n top: 100% !important;\\n border: 1px solid #dadce0 !important;\\n -webkit-box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n border-radius: 5px !important;\\n width: 100% !important;\\n background: #fff !important;\\n z-index: 11 !important;\\n max-height: 200px !important;\\n overflow-y: auto !important;\\n}\\n#sbz92 .custom-select--input-search {\\n font-size: 15px !important;\\n padding: 8px !important;\\n border-bottom: 1px solid #d8d8d8 !important;\\n}\\n#sbz92 .custom-select--items-options {\\n margin: 0 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .custom-select--item-options {\\n padding: 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .custom-select--item-options:hover {\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .custom-select--icon-dropdown {\\n margin-left: auto !important;\\n float: right !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .custom-select--icon-dropdown path {\\n d: path('M 7 9.5 L 12 14.5 L 17 9.5 H 7 Z') !important;\\n fill: black !important;\\n}\\n#sbz92 .form-component {\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .form-component:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-component.submitted {\\n margin-bottom: 8px !important;\\n}\\n#sbz92 .form-component.form-component-submit-button {\\n margin-top: 20px !important;\\n}\\n#sbz92 .form-wrapper.form {\\n padding: 20px !important;\\n background-color: #fff !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form {\\n padding: 12px 15px !important;\\n margin-top: 5px !important;\\n box-shadow: 0 0 0 1px #eeeeee !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='text'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='number'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form input[type='date'].form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form select.form-control,\\n#sbz92 .form-wrapper.form-wrapper-attachment.form textarea.form-control {\\n padding: 6px 10px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component {\\n margin-bottom: 12px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.submitted {\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.submitted:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component:first-child .label {\\n margin-top: 0 !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-component.form-component-submit-button {\\n margin-top: 16px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .label {\\n padding-bottom: 4px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .form-control--valid-input--error {\\n padding-top: 3px !important;\\n}\\n#sbz92 .form-wrapper.form-wrapper-attachment.form .btn--start-convo {\\n height: 36px !important;\\n}\\n#sbz92 select.form-control.form-control--empty {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n@media only screen and (min-width: 968px) {\\n #sbz92 .form-radios-wrapper.horizontal {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio {\\n margin-right: 10px;\\n width: 300px;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:first-child {\\n margin-top: 0;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:nth-child(2) {\\n margin-top: 0;\\n }\\n #sbz92 .form-radios-wrapper.horizontal .radio:nth-child(2n) {\\n margin-right: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal {\\n display: flex;\\n flex-wrap: wrap;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox {\\n margin-right: 10px;\\n width: 300px;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:first-child {\\n margin-top: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:nth-child(2) {\\n margin-top: 0;\\n }\\n #sbz92 .form-checkboxes-wrapper.horizontal .checkbox:nth-child(2n) {\\n margin-right: 0;\\n }\\n}\\n#sbz92 .form-ratings-wrapper {\\n display: inline-flex !important;\\n}\\n#sbz92 .star {\\n width: 32px !important;\\n height: 30px !important;\\n background-image: url('../img/stars_v2.png') !important;\\n background-position: 0px 0px !important;\\n background-size: cover !important;\\n}\\n#sbz92 .form-wrapper-attachment .star-wrapper {\\n padding-right: 12px !important;\\n}\\n#sbz92 .star-wrapper {\\n cursor: pointer !important;\\n padding-right: 20px !important;\\n}\\n#sbz92 .star-wrapper:last-child {\\n padding-right: 0 !important;\\n}\\n#sbz92 .star-wrapper.hovering .star {\\n background-position: -32px 0 !important;\\n}\\n#sbz92 .star-wrapper.selected {\\n cursor: auto !important;\\n}\\n#sbz92 .star-wrapper.selected .star {\\n background-position: -64px 0 !important;\\n}\\n#sbz92 .widget-body--events-container {\\n overflow-x: hidden !important;\\n overflow-y: auto !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n padding-left: 22.5px !important;\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .widget-body--events {\\n padding-top: 20px !important;\\n flex: 1 !important;\\n}\\n#sbz92 .mobile .widget-body--events {\\n display: flex !important;\\n flex-direction: column !important;\\n justify-content: flex-end !important;\\n padding-bottom: 15px !important;\\n}\\n#sbz92 .widget-body--events-container.widget-body--events-container__error {\\n align-items: center !important;\\n justify-content: center !important;\\n}\\n#sbz92 .convo-event {\\n position: relative !important;\\n}\\n#sbz92 .convo-event-time {\\n text-align: center !important;\\n margin-top: 15px !important;\\n}\\n#sbz92 .convo-event-time span {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .file-attachment {\\n padding: 10px !important;\\n border-radius: 10px !important;\\n cursor: pointer !important;\\n margin: 5px 0 0 0 !important;\\n}\\n#sbz92 .file-attachment--agent {\\n background-color: '@primary_color' !important;\\n width: fit-content !important;\\n}\\n#sbz92 .file-attachment--user {\\n background-color: #eeeeee !important;\\n align-self: flex-end !important;\\n}\\n#sbz92 .file-attachment--link {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: center !important;\\n width: fit-content !important;\\n}\\n#sbz92 .file-attachment--agent .file-attachment--filename {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n text-decoration: underline !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n max-width: 200px !important;\\n}\\n#sbz92 .file-attachment--user .file-attachment--filename {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n text-decoration: underline !important;\\n text-overflow: ellipsis !important;\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n max-width: 200px !important;\\n}\\n#sbz92 .file-attachment--download {\\n width: 24px !important;\\n height: 24px !important;\\n border-radius: 30px !important;\\n display: inline-block !important;\\n}\\n#sbz92 .file-attachment--agent .file-attachment--download {\\n background: '@text_color' !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMjY1RkYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWFycm93LWRvd24iPjxsaW5lIHgxPSIxMiIgeTE9IjUiIHgyPSIxMiIgeTI9IjE5Ij48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz0iMTkgMTIgMTIgMTkgNSAxMiI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n background-size: 15px 15px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .file-attachment--user .file-attachment--download {\\n background: #c4c4c4 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9ImZlYXRoZXIgZmVhdGhlci1hcnJvdy1kb3duIj48bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9IjE5IDEyIDEyIDE5IDUgMTIiPjwvcG9seWxpbmU+PC9zdmc+Cg==') !important;\\n background-size: 15px 15px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .message-text--user {\\n line-height: 1.5 !important;\\n margin: 5px 0 0 !important;\\n display: inline-block !important;\\n font-weight: 500 !important;\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n padding: 12px 16px 12px 16px !important;\\n}\\n#sbz92 .message-text--user.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .message-text--agent.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .message-text--user.message-user--error {\\n background-color: #dc3545 !important;\\n}\\n#sbz92 .message-text--agent.message-text--deleted {\\n opacity: 0.7 !important;\\n font-style: italic !important;\\n}\\n#sbz92 .message-text--agent {\\n line-height: 1.5 !important;\\n white-space: pre-wrap !important;\\n display: inline-block !important;\\n background: '@primary_color_faded' !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n padding: 12px 16px 12px 16px !important;\\n}\\n#sbz92 .message-agent.message-text--agent {\\n max-width: 100% !important;\\n margin-top: 0 !important;\\n}\\n#sbz92 .message-user__container {\\n display: flex !important;\\n flex-direction: row !important;\\n align-items: flex-end !important;\\n justify-content: flex-end !important;\\n}\\n#sbz92 .sending_dot.sending_dot__hide {\\n opacity: 0 !important;\\n background-color: #000 !important;\\n}\\n#sbz92 .sending_dot {\\n width: 15px !important;\\n height: 15px !important;\\n margin-right: 5px !important;\\n border-radius: 50% !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNsb2NrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz0iMTIgNiAxMiAxMiAxNiAxNCI+PC9wb2x5bGluZT48L3N2Zz4K') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n}\\n#sbz92 .message-user {\\n border-radius: 18px !important;\\n border-bottom-right-radius: 4px !important;\\n max-width: 85% !important;\\n align-self: flex-end !important;\\n word-break: break-word !important;\\n position: relative !important;\\n white-space: pre-wrap !important;\\n}\\n#sbz92 .message-user.message-user-images-container {\\n width: 85% !important;\\n display: flex !important;\\n justify-content: flex-end !important;\\n}\\n#sbz92 .message-user.message-user-audio {\\n flex: 1 !important;\\n}\\n#sbz92 .message-agent {\\n border-radius: 18px !important;\\n border-bottom-left-radius: 4px !important;\\n max-width: 85% !important;\\n word-break: break-word !important;\\n position: relative !important;\\n}\\n#sbz92 a.message_error {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n opacity: 0.8 !important;\\n display: block !important;\\n text-align: end !important;\\n font-size: 13px !important;\\n margin-top: 5px !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 a.message_error:hover {\\n opacity: 1 !important;\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n}\\n#sbz92 .message_error__text {\\n display: inline-block !important;\\n vertical-align: text-top !important;\\n}\\n#sbz92 .message_error__icon {\\n display: inline-block !important;\\n vertical-align: bottom !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZGMzNTQ1IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWFsZXJ0LWNpcmNsZSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjxsaW5lIHgxPSIxMiIgeTE9IjgiIHgyPSIxMiIgeTI9IjEyIj48L2xpbmU+PGxpbmUgeDE9IjEyIiB5MT0iMTYiIHgyPSIxMi4wMSIgeTI9IjE2Ij48L2xpbmU+PC9zdmc+Cgo=') !important;\\n background-size: contain !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 20px !important;\\n height: 20px !important;\\n}\\n#sbz92 .image-attachment__img {\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n border-radius: 7px !important;\\n border: 1px solid #eeeeee !important;\\n}\\n#sbz92 .audio-attachment {\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n height: 45px !important;\\n display: inline !important;\\n}\\n#sbz92 .audio-attachment__audio {\\n all: inherit !important;\\n width: 100% !important;\\n}\\n#sbz92 .video-attachment {\\n border-radius: 7px !important;\\n width: 100% !important;\\n margin: 5px 0 0 0 !important;\\n}\\n#sbz92 .video-attachment__video {\\n all: inherit !important;\\n width: 100% !important;\\n}\\n#sbz92 .info-message {\\n text-align: center !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n margin: 10px !important;\\n}\\n#sbz92 .message-sender {\\n margin-top: 10px !important;\\n}\\n#sbz92 .message-sender-avatar {\\n border-radius: 50% !important;\\n width: 25px !important;\\n height: 25px !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .message-sender-name {\\n color: #495057 !important;\\n -webkit-text-fill-color: #495057 !important;\\n vertical-align: middle !important;\\n}\\n#sbz92 .message-system {\\n text-align: center !important;\\n margin: 10px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .form-attachment {\\n display: flex !important;\\n flex-direction: column !important;\\n padding: 10px !important;\\n -webkit-box-shadow: 0 0 10px #dee2e6 !important;\\n box-shadow: 0 0 10px #dee2e6 !important;\\n border-radius: 7px !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .form-attachment-field {\\n display: flex !important;\\n flex-direction: column !important;\\n margin-bottom: 0px !important;\\n}\\n#sbz92 .form-attachment-field__title {\\n color: #4c4c4c !important;\\n -webkit-text-fill-color: #4c4c4c !important;\\n}\\n#sbz92 .form-attachment-field__text {\\n width: 100% !important;\\n border: 1px solid #dbdbdb !important;\\n padding: 10px !important;\\n margin: 3px 0px 0px 0px !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 .input--error {\\n border: 1px solid red !important;\\n}\\n#sbz92 .input--success {\\n background-color: #f9f9f9 !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .form-attachment-field__error {\\n color: brown !important;\\n -webkit-text-fill-color: brown !important;\\n float: right !important;\\n}\\n#sbz92 .form-attachment-field__checkbox {\\n width: 100% !important;\\n all: inherit !important;\\n -webkit-appearance: textfield !important;\\n margin-right: 8px !important;\\n}\\n#sbz92 .form-attachment-field__checkbox:hover {\\n cursor: pointer !important;\\n}\\n#sbz92 .form-attachment-field__list-item {\\n display: flex !important;\\n align-items: center !important;\\n margin: 4px !important;\\n margin-left: 0px !important;\\n}\\n#sbz92 .form-attachment-field__radio {\\n width: 100% !important;\\n all: inherit !important;\\n -webkit-appearance: textfield !important;\\n margin-right: 8px !important;\\n}\\n#sbz92 .form-attachment-field__datetime {\\n width: 100% !important;\\n border: 1px solid #dbdbdb !important;\\n padding: 10px !important;\\n margin: 3px 0px 0px 0px !important;\\n border-radius: 7px !important;\\n}\\n#sbz92 .form-attachment--submit-btn {\\n background-color: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n width: 100% !important;\\n margin-top: 10px !important;\\n border-radius: 7px !important;\\n padding: 10px !important;\\n text-align: center !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .form-attachment--submit-btn:hover {\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n}\\n#sbz92 .red {\\n color: #dc3545 !important;\\n -webkit-text-fill-color: #dc3545 !important;\\n}\\n#sbz92 .typing {\\n background-color: #f4f5f7 !important;\\n color: #7a7a7b !important;\\n -webkit-text-fill-color: #7a7a7b !important;\\n padding: 10px !important;\\n opacity: 1 !important;\\n transition: all 0.2s !important;\\n position: absolute !important;\\n bottom: 0px !important;\\n left: 0px !important;\\n width: 100% !important;\\n}\\n#sbz92 .typing--hidden {\\n opacity: 0 !important;\\n display: none !important;\\n}\\n#sbz92 .markdown-message img {\\n max-width: 100% !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .button-attachments {\\n display: block !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .url-button-attachment:first-child {\\n border-top-left-radius: 7px !important;\\n border-top-right-radius: 7px !important;\\n}\\n#sbz92 .url-button-attachment:last-child {\\n border-bottom-left-radius: 7px !important;\\n border-bottom-right-radius: 7px !important;\\n border-bottom: 1px solid '@primary_color' !important;\\n}\\n#sbz92 .agent-message .url-button-attachment {\\n text-decoration: none !important;\\n padding: 10px 18px !important;\\n display: block !important;\\n text-align: center !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border: 1px solid #000 !important;\\n border-radius: 12px !important;\\n text-overflow: ellipsis !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n white-space: nowrap !important;\\n}\\n#sbz92 .agent-message .url-button-attachment:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n border-color: '@primary_color' !important;\\n}\\n#sbz92 .message_quick_replies {\\n display: flex !important;\\n flex-wrap: wrap !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .message_quick_reply {\\n cursor: pointer !important;\\n position: relative !important;\\n padding: 10px 18px !important;\\n margin-top: 8px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border-radius: 12px !important;\\n user-select: none !important;\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n width: fit-content !important;\\n font-weight: 500 !important;\\n max-width: 100% !important;\\n text-overflow: ellipsis !important;\\n border: 1px solid #000 !important;\\n transition: all 100ms ease !important;\\n}\\n#sbz92 .message_quick_reply:hover {\\n background: '@primary_color' !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n border-color: '@primary_color' !important;\\n}\\n#sbz92 .generic-attachment-container {\\n position: relative !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .generic-attachments {\\n display: block !important;\\n}\\n#sbz92 .generic-attachment {\\n display: flex !important;\\n width: 100% !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n user-select: none !important;\\n cursor: grab !important;\\n}\\n#sbz92 .generic-attachment--element-content {\\n flex: 1 !important;\\n}\\n#sbz92 .generic-attachment--element {\\n border: 1px solid #d8d8d8 !important;\\n background: white !important;\\n border-radius: 7px !important;\\n overflow: hidden !important;\\n width: 220px !important;\\n margin-right: 10px !important;\\n vertical-align: top !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex-shrink: 0 !important;\\n}\\n#sbz92 .generic-attachment--element:last-child {\\n margin-right: 0 !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-img {\\n width: 100% !important;\\n height: 150px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment:first-child {\\n border-radius: 0 !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment {\\n padding: 10px !important;\\n display: block !important;\\n padding-top: 9px !important;\\n padding-button: 9px !important;\\n text-align: center !important;\\n border: none !important;\\n border-top: 1px solid #d8d8d8 !important;\\n width: 100% !important;\\n color: #0d6efd !important;\\n -webkit-text-fill-color: #0d6efd !important;\\n}\\n#sbz92 .generic-attachment--element .url-button-attachment:hover {\\n color: #024dbc !important;\\n -webkit-text-fill-color: #024dbc !important;\\n border-color: #d8d8d8 !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-title {\\n padding: 0px 13px !important;\\n margin-top: 13px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n font-weight: 600 !important;\\n font-size: 16px !important;\\n line-height: 20px !important;\\n white-space: normal !important;\\n}\\n#sbz92 .generic-attachment--element .generic-attachment--element-subtitle {\\n padding: 0px 13px !important;\\n color: gray !important;\\n -webkit-text-fill-color: gray !important;\\n margin-top: 5px !important;\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 4 !important;\\n -webkit-box-orient: vertical !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n}\\n#sbz92 .generic-attachment--element.clickable {\\n cursor: pointer !important;\\n}\\n#sbz92 .widget_body__events__error_msg {\\n margin-top: 50px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n text-align: center !important;\\n}\\n#sbz92 .widget_body__events__error_retry {\\n margin-top: 10px !important;\\n}\\n#sbz92 .generic-attachment-navigator {\\n position: absolute !important;\\n top: 50% !important;\\n transform: translateY(-50%) !important;\\n cursor: pointer !important;\\n width: 20px !important;\\n font-size: 80px !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n color: rgba(255, 255, 255, 0.85) !important;\\n -webkit-text-fill-color: rgba(255, 255, 255, 0.85) !important;\\n text-shadow: 0 10px 25px rgba(0, 0, 0, 0.75) !important;\\n z-index: 999 !important;\\n user-select: none !important;\\n}\\n#sbz92 .generic-attachment-navigator:hover {\\n text-shadow: 0 10px 20px rgba(0, 0, 0, 0.75) !important;\\n color: #ffffff !important;\\n -webkit-text-fill-color: #ffffff !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--disabled {\\n display: none !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--left {\\n left: 2px !important;\\n}\\n#sbz92 .generic-attachment-navigator.generic-attachment-navigator--right {\\n right: 2px !important;\\n}\\n#sbz92 .generic-attachment-navigator-icon {\\n font-size: 80px !important;\\n}\\n#sbz92 .order_attachment__product_img {\\n width: 40px !important;\\n height: 40px !important;\\n margin-right: 10px !important;\\n border-radius: 5px !important;\\n flex-shrink: 0 !important;\\n display: block !important;\\n object-fit: contain !important;\\n background: whitesmoke !important;\\n}\\n#sbz92 .order_attachment__product_name {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .order_attachment__header {\\n padding-bottom: 5px !important;\\n border-bottom: 1px solid #ccc !important;\\n margin-bottom: 5px !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .order_attachment__product_desc {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n color: #999 !important;\\n -webkit-text-fill-color: #999 !important;\\n font-size: 13px !important;\\n}\\n#sbz92 .order_attachment__product {\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 5px !important;\\n margin-bottom: 5 !important;\\n}\\n#sbz92 .order_attachment__text_sm {\\n font-size: 13px !important;\\n}\\n#sbz92 .order_attachment__text_muted {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .order_attachment__text_truncate {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .order_attachment {\\n margin-top: 10px !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n border: 1px solid #aaa !important;\\n background: white !important;\\n border-radius: 8px !important;\\n width: 220px !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n padding: 10px !important;\\n}\\n#sbz92 .order_attachment__footer {\\n margin-top: 10px !important;\\n padding-top: 10px !important;\\n border-top: 1px solid #ccc !important;\\n}\\n#sbz92 .order_attachment__total {\\n font-size: 16px !important;\\n}\\n#sbz92 .order_attachment__label {\\n font-size: 13px !important;\\n color: #777 !important;\\n -webkit-text-fill-color: #777 !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .order_attachment__label.no_margin {\\n margin-top: 0 !important;\\n}\\n#sbz92 .order_attachment.order_attachment__user {\\n margin-right: 50px !important;\\n align-self: flex-end !important;\\n margin-right: 0 !important;\\n margin-left: 50px !important;\\n align-self: flex-start !important;\\n}\\n#sbz92 .product_attachment {\\n margin-top: 10px !important;\\n border: 1px solid #d8d8d8 !important;\\n background: white !important;\\n border-radius: 7px !important;\\n overflow: hidden !important;\\n width: 200px !important;\\n display: inline-block !important;\\n vertical-align: top !important;\\n transition: all 0.1s !important;\\n}\\n#sbz92 .product_attachment.product_attachment__user {\\n margin-right: 50px !important;\\n align-self: flex-end !important;\\n margin-right: 0 !important;\\n margin-left: 50px !important;\\n align-self: flex-start !important;\\n}\\n#sbz92 .product_attachment__img {\\n width: 200px !important;\\n height: 200px !important;\\n border-bottom: 1px solid #d8d8d8 !important;\\n object-fit: cover !important;\\n display: block !important;\\n}\\n#sbz92 .product_attachment__price {\\n padding-left: 10px !important;\\n}\\n#sbz92 .product_attachment__btns {\\n margin-top: 5px !important;\\n}\\n#sbz92 .product_attachment__btn {\\n border-top: 1px solid #d8d8d8 !important;\\n display: flex !important;\\n padding: 8px 10px !important;\\n align-items: center !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n justify-content: center !important;\\n cursor: pointer !important;\\n text-transform: capitalize !important;\\n}\\n#sbz92 .product_attachment__btn:last-child {\\n margin-right: 0 !important;\\n}\\n#sbz92 .product_attachment__btn:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 a.product_attachment__title {\\n display: block !important;\\n padding: 8px 10px 0 10px !important;\\n font-weight: 500 !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n word-break: break-word !important;\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .product_attachment__subtitle {\\n white-space: pre-wrap !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 3 !important;\\n -webkit-box-orient: vertical !important;\\n overflow: hidden !important;\\n padding: 5px 10px !important;\\n color: #aaa !important;\\n -webkit-text-fill-color: #aaa !important;\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n margin-bottom: 5px !important;\\n}\\n#sbz92 .product_attachment__btn_external_link {\\n width: 16px !important;\\n height: 16px !important;\\n margin-left: 5px !important;\\n margin-top: -2px !important;\\n}\\n#sbz92 .agent-convo-event-wrapper {\\n max-width: 85% !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .agent-convo-event-wrapper.full {\\n max-width: 100% !important;\\n}\\n#sbz92 .agent-convo-event-inner {\\n position: relative !important;\\n display: inline-block !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-event-actions {\\n position: absolute !important;\\n bottom: -10px !important;\\n opacity: 0.7 !important;\\n left: calc(100% - 25px) !important;\\n display: none !important;\\n border: 1px solid #dee2e6 !important;\\n background-color: white !important;\\n border-radius: 4px !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .message-event-actions.ended {\\n bottom: -10px !important;\\n}\\n#sbz92 .message-event-actions:hover {\\n opacity: 1 !important;\\n}\\n#sbz92 .agent-convo-event-inner:hover .message-event-actions {\\n display: flex !important;\\n}\\n#sbz92 .message-event-actions-static {\\n display: none !important;\\n margin-top: 2px !important;\\n border: none !important;\\n padding: 0 !important;\\n gap: 4px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-actions {\\n display: none !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-actions-static {\\n display: flex !important;\\n position: absolute !important;\\n bottom: -30px !important;\\n left: 0 !important;\\n z-index: 2 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn {\\n padding: 0 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn .message-event-action-btn-svg {\\n width: 24px !important;\\n height: 24px !important;\\n background-position: 2px 2px !important;\\n background-size: 20px 20px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n padding-right: 10px !important;\\n border-radius: 5px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev .message-event-action-btn-svg {\\n width: 24px !important;\\n height: 24px !important;\\n background-position: 2px 2px !important;\\n background-size: 20px 20px !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev:hover {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev.message-event-action-btn_like.active {\\n color: #34c759 !important;\\n -webkit-text-fill-color: #34c759 !important;\\n}\\n#sbz92 .agent-convo-event-inner.last .message-event-action-btn.message-event-action-btn__dev.message-event-action-btn_like.active {\\n color: #34c759 !important;\\n -webkit-text-fill-color: #34c759 !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn {\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n cursor: pointer !important;\\n padding: 2px !important;\\n}\\n#sbz92 .message-event-action-btn:hover {\\n background-color: #ececec !important;\\n}\\n#sbz92 .message-event-action-btn.active:hover {\\n background-color: #dbfde3 !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev {\\n padding: 0px !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn.message-event-action-btn__dev.active:hover {\\n background-color: unset !important;\\n}\\n#sbz92 .message-event-action-btn .message-event-action-btn-svg {\\n width: 20px !important;\\n height: 20px !important;\\n border-radius: 4px !important;\\n background-position: 2px 2px !important;\\n background-size: 16px 16px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n}\\n#sbz92 .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IiM2Yzc1N2QiICBzdHJva2Utd2lkdGg9IjIiICBzdHJva2UtbGluZWNhcD0icm91bmQiICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGh1bWItdXAiPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDExdjhhMSAxIDAgMCAxIC0xIDFoLTJhMSAxIDAgMCAxIC0xIC0xdi03YTEgMSAwIDAgMSAxIC0xaDNhNCA0IDAgMCAwIDQgLTR2LTFhMiAyIDAgMCAxIDQgMHY1aDNhMiAyIDAgMCAxIDIgMmwtMSA1YTIgMyAwIDAgMSAtMiAyaC03YTMgMyAwIDAgMSAtMyAtMyIgLz48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IiM2Yzc1N2QiICBzdHJva2Utd2lkdGg9IjIiICBzdHJva2UtbGluZWNhcD0icm91bmQiICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGh1bWItZG93biI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTcgMTN2LThhMSAxIDAgMCAwIC0xIC0xaC0yYTEgMSAwIDAgMCAtMSAxdjdhMSAxIDAgMCAwIDEgMWgzYTQgNCAwIDAgMSA0IDR2MWEyIDIgMCAwIDAgNCAwdi01aDNhMiAyIDAgMCAwIDIgLTJsLTEgLTVhMiAzIDAgMCAwIC0yIC0yaC03YTMgMyAwIDAgMCAtMyAzIiAvPjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn-svg.info {\\n background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2Yzc1N2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNyAxMXY4YTEgMSAwIDAgMSAtMSAxaC0yYTEgMSAwIDAgMSAtMSAtMXYtN2ExIDEgMCAwIDEgMSAtMWgzYTQgNCAwIDAgMCA0IC00di0xYTIgMiAwIDAgMSA0IDB2NWgzYTIgMiAwIDAgMSAyIDJsLTEgNWEyIDMgMCAwIDEgLTIgMmgtN2EzIDMgMCAwIDEgLTMgLTMiIC8+PC9zdmc+Cg==') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLWRvd24iPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDEzdi04YTEgMSAwIDAgMCAtMSAtMWgtMmExIDEgMCAwIDAgLTEgMXY3YTEgMSAwIDAgMCAxIDFoM2E0IDQgMCAwIDEgNCA0djFhMiAyIDAgMCAwIDQgMHYtNWgzYTIgMiAwIDAgMCAyIC0ybC0xIC01YTIgMyAwIDAgMCAtMiAtMmgtN2EzIDMgMCAwIDAgLTMgMyIgLz48L3N2Zz4K') !important;\\n}\\n#sbz92 .message-event-action-btn:hover .message-event-action-btn-svg.info {\\n background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwMDAiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=') !important;\\n}\\n#sbz92 .message-event-action-btn.active .message-event-action-btn-svg.like {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9IiMzNEM3NTkiICBjbGFzcz0iaWNvbiBpY29uLXRhYmxlciBpY29ucy10YWJsZXItZmlsbGVkIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTMgM2EzIDMgMCAwIDEgMi45OTUgMi44MjRsLjAwNSAuMTc2djRoMmEzIDMgMCAwIDEgMi45OCAyLjY1bC4wMTUgLjE3NGwuMDA1IC4xNzZsLS4wMiAuMTk2bC0xLjAwNiA1LjAzMmMtLjM4MSAxLjYyNiAtMS41MDIgMi43OTYgLTIuODEgMi43OGwtLjE2NCAtLjAwOGgtOGExIDEgMCAwIDEgLS45OTMgLS44ODNsLS4wMDcgLS4xMTdsLjAwMSAtOS41MzZhMSAxIDAgMCAxIC41IC0uODY1YTIuOTk4IDIuOTk4IDAgMCAwIDEuNDkyIC0yLjM5N2wuMDA3IC0uMjAydi0xYTMgMyAwIDAgMSAzIC0zeiIgLz48cGF0aCBkPSJNNSAxMGExIDEgMCAwIDEgLjk5MyAuODgzbC4wMDcgLjExN3Y5YTEgMSAwIDAgMSAtLjg4MyAuOTkzbC0uMTE3IC4wMDdoLTFhMiAyIDAgMCAxIC0xLjk5NSAtMS44NWwtLjAwNSAtLjE1di03YTIgMiAwIDAgMSAxLjg1IC0xLjk5NWwuMTUgLS4wMDVoMXoiIC8+PC9zdmc+Cg==') !important;\\n}\\n#sbz92 .message-event-action-btn.active .message-event-action-btn-svg.dislike {\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzI0ODBfOTUpIj4KPHBhdGggZD0iTTEzIDIxLjAwNzlDMTMuNzY1IDIxLjAwOCAxNC41MDEyIDIwLjcxNTcgMTUuMDU3OSAyMC4xOTFDMTUuNjE0NyAxOS42NjYyIDE1Ljk0OTkgMTguOTQ4NiAxNS45OTUgMTguMTg0OUwxNiAxOC4wMDc5VjE0LjAwNzlIMThDMTguNzM1MSAxNC4wMDggMTkuNDQ0NyAxMy43MzgyIDE5Ljk5NCAxMy4yNDk3QzIwLjU0MzQgMTIuNzYxMiAyMC44OTQyIDEyLjA4OCAyMC45OCAxMS4zNTc5TDIwLjk5NSAxMS4xODQ5TDIxIDExLjAwNzlMMjAuOTggMTAuODExOUwxOS45NzQgNS43Nzk5MkMxOS41OTMgNC4xNTQ5MiAxOC40NzIgMi45ODM5MiAxNy4xNjQgMi45OTk5MkwxNyAzLjAwNzkySDlDOC43NTQ5MSAzLjAwNzk4IDguNTE4MzggMy4wOTgwNCA4LjMzNTMzIDMuMjYxMDFDOC4xNTIyNyAzLjQyMzk3IDguMDM1NDMgMy42NDg0OSA4LjAwNyAzLjg5MTkyTDggNC4wMDc5Mkw4LjAwMSAxMy41NDM5QzguMDAxIDEzLjcxOTUgOC4wNDcyMSAxMy44OTE5IDguMTM0OTggMTQuMDQzOUM4LjIyMjc1IDE0LjE5NTkgOC4zNDg5OCAxNC4zMjIyIDguNTAxIDE0LjQwOTlDOC45MjcyOSAxNC42NTYxIDkuMjg2NCAxNS4wMDM1IDkuNTQ2NjEgMTUuNDIxM0M5LjgwNjgyIDE1LjgzOTIgOS45NjAxMyAxNi4zMTQ3IDkuOTkzIDE2LjgwNTlMMTAgMTcuMDA3OVYxOC4wMDc5QzEwIDE4LjgwMzYgMTAuMzE2MSAxOS41NjY2IDEwLjg3ODcgMjAuMTI5MkMxMS40NDEzIDIwLjY5MTggMTIuMjA0NCAyMS4wMDc5IDEzIDIxLjAwNzlaIiBmaWxsPSIjMzMzMzMzIi8+CjxwYXRoIGQ9Ik01IDE0LjAwODFDNS4yNDQ5MyAxNC4wMDggNS40ODEzNCAxMy45MTgxIDUuNjY0MzcgMTMuNzU1M0M1Ljg0NzQxIDEzLjU5MjYgNS45NjQzNCAxMy4zNjgzIDUuOTkzIDEzLjEyNTFMNiAxMy4wMDgxVjQuMDA4MDZDNS45OTk5NyAzLjc2MzEyIDUuOTEwMDQgMy41MjY3MiA1Ljc0NzI4IDMuMzQzNjhDNS41ODQ1MyAzLjE2MDY1IDUuMzYwMjUgMy4wNDM3MSA1LjExNyAzLjAxNTA2TDUgMy4wMDgwNkg0QzMuNDk1MSAzLjAwNzkzIDMuMDA4ODQgMy4xOTg3OCAyLjYzODgxIDMuNTQyMjlDMi4yNjg3OCAzLjg4NTc5IDIuMDQyMzYgNC4zNTY1NCAyLjAwNSA0Ljg2MDA2TDIgNS4wMTAwNlYxMi4wMTAxQzIuMDAwMDkgMTIuNTE0NSAyLjE5MDc3IDEzLjAwMDIgMi41MzM4NCAxMy4zN0MyLjg3NjkgMTMuNzM5NyAzLjM0NzAyIDEzLjk2NjIgMy44NSAxNC4wMDQxTDQgMTQuMDA5MUw1IDE0LjAwODFaIiBmaWxsPSIjMzMzMzMzIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDBfMjQ4MF85NSI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K') !important;\\n}\\n#sbz92 .inline-time {\\n font-size: 13px !important;\\n margin-top: 6px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n font-weight: 500 !important;\\n opacity: 0.4 !important;\\n}\\n#sbz92 .message-text-inline-image-wrapper {\\n display: block !important;\\n margin-top: 8px !important;\\n margin-bottom: 8px !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-text-inline-image {\\n width: 100% !important;\\n}\\n#sbz92 .text-message-ul {\\n display: block !important;\\n list-style-type: disc !important;\\n margin-block-start: 8px !important;\\n margin-block-end: 8px !important;\\n padding-inline-start: 20px !important;\\n}\\n#sbz92 .text-message-ol {\\n display: block !important;\\n list-style-type: decimal !important;\\n margin-block-start: 8px !important;\\n margin-block-end: 8px !important;\\n padding-inline-start: 20px !important;\\n}\\n#sbz92 .text-message-li {\\n display: list-item !important;\\n}\\n#sbz92 .agent-message .text-message-link {\\n color: #0d6efd !important;\\n -webkit-text-fill-color: #0d6efd !important;\\n font-weight: 400 !important;\\n}\\n#sbz92 .agent-message .text-message-link:hover {\\n color: #024dbc !important;\\n -webkit-text-fill-color: #024dbc !important;\\n}\\n#sbz92 .user-message .text-message-link {\\n text-decoration: underline !important;\\n text-decoration-color: rgba(255, 255, 255, 0.6) !important;\\n text-underline-offset: 4px !important;\\n}\\n#sbz92 .user-message .text-message-link:hover {\\n text-decoration-color: #fff !important;\\n background-color: rgba(255, 255, 255, 0.08) !important;\\n}\\n#sbz92 .message-quote {\\n padding: 6px 10px !important;\\n border-left: 3px solid '@primary_color' !important;\\n background-color: #dfdfdf !important;\\n border-top-left-radius: 0 !important;\\n border-bottom-left-radius: 0 !important;\\n margin-bottom: 8px !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .message-quote-title {\\n font-weight: 600 !important;\\n font-size: 14px !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .message-quote-content {\\n opacity: 0.7 !important;\\n color: '@secondary_color' !important;\\n -webkit-text-fill-color: '@secondary_color' !important;\\n font-size: 14px !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .message-quote-inner-img {\\n width: 36px !important;\\n height: 36px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .message-quote-inner {\\n margin-left: 15px !important;\\n flex: 1 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .image-attachment.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .file-attachment.just-focused {\\n box-shadow: 0 0 0 2px #000 !important;\\n}\\n#sbz92 .widget_body_empty_img {\\n max-width: 150px !important;\\n max-height: 150px !important;\\n}\\n#sbz92 .emoji {\\n position: relative !important;\\n width: 20px !important;\\n height: 20px !important;\\n background-size: 100% !important;\\n background-repeat: no-repeat !important;\\n border: none !important;\\n display: inline-block !important;\\n vertical-align: text-bottom !important;\\n}\\n#sbz92 .emoji--angry {\\n background-image: url('../img/emoji/messenger/sub_60.784_7.843.png') !important;\\n}\\n#sbz92 .emoji--confused {\\n background-image: url('../img/emoji/messenger/sub_58.824_88.235.png') !important;\\n}\\n#sbz92 .emoji--crying,\\n#sbz92 .emoji--cry {\\n background-image: url('../img/emoji/messenger/sub_60.784_11.765.png') !important;\\n}\\n#sbz92 .emoji--grinning {\\n background-image: url('../img/emoji/messenger/sub_58.824_47.059.png') !important;\\n}\\n#sbz92 .emoji--heart_eyes,\\n#sbz92 .emoji--heart-eyes {\\n background-image: url('../img/emoji/messenger/sub_58.824_72.549.png') !important;\\n}\\n#sbz92 .emoji--neutral_face,\\n#sbz92 .emoji--neutral {\\n background-image: url('../img/emoji/messenger/sub_58.824_78.431.png') !important;\\n}\\n#sbz92 .emoji--disappointed,\\n#sbz92 .emoji--sad {\\n background-image: url('../img/emoji/messenger/sub_60.784_3.922.png') !important;\\n}\\n#sbz92 .emoji--sleepy {\\n background-image: url('../img/emoji/messenger/sub_60.784_27.451.png') !important;\\n}\\n#sbz92 .emoji--smile,\\n#sbz92 .emoji--smiling {\\n background-image: url('../img/emoji/messenger/sub_58.824_54.902.png') !important;\\n}\\n#sbz92 .emoji--open_mouth,\\n#sbz92 .emoji--surprised {\\n background-image: url('../img/emoji/messenger/sub_60.784_35.294.png') !important;\\n}\\n#sbz92 .emoji--tired_face,\\n#sbz92 .emoji--tired {\\n background-image: url('../img/emoji/messenger/sub_60.784_29.412.png') !important;\\n}\\n#sbz92 .emoji--stuck_out_tongue,\\n#sbz92 .emoji--tongue-out {\\n background-image: url('../img/emoji/messenger/sub_58.824_100.000.png') !important;\\n}\\n#sbz92 .emoji--wink {\\n background-image: url('../img/emoji/messenger/sub_58.824_64.706.png') !important;\\n}\\n#sbz92 .emoji--moyai {\\n background-image: url('../img/emoji/messenger/sub_58.824_45.098.png') !important;\\n}\\n#sbz92 .emoji--dislike,\\n#sbz92 .emoji--unlike,\\n#sbz92 .emoji--thumbsdown {\\n background-image: url('../img/emoji/messenger/sub_29.412_5.882.png') !important;\\n}\\n#sbz92 .emoji--like,\\n#sbz92 .emoji--thumbsup {\\n background-image: url('../img/emoji/messenger/sub_27.451_96.078.png') !important;\\n}\\n#sbz92 .emoji--ok_hand {\\n background-image: url('../img/emoji/messenger/sub_27.451_84.314.png') !important;\\n}\\n#sbz92 .emoji--octopus {\\n background-image: url('../img/emoji/messenger/sub_25.490_5.882.png') !important;\\n}\\n#sbz92 .emoji--pig2 {\\n background-image: url('../img/emoji/messenger/sub_25.490_0.000.png') !important;\\n}\\n#sbz92 .emoji--wave {\\n background-image: url('../img/emoji/messenger/sub_27.451_72.549.png') !important;\\n}\\n#sbz92 .emoji--mouse {\\n background-image: url('../img/emoji/messenger/sub_25.490_45.098.png') !important;\\n}\\n#sbz92 .emoji--mouse2 {\\n background-image: url('../img/emoji/messenger/sub_23.529_60.784.png') !important;\\n}\\n#sbz92 .emoji--rat {\\n background-image: url('../img/emoji/messenger/sub_23.529_58.824.png') !important;\\n}\\n#sbz92 .emoji-picker {\\n display: flex !important;\\n flex-direction: row !important;\\n z-index: 20 !important;\\n position: absolute !important;\\n max-width: 240px !important;\\n background: #fff !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n border-radius: 10px !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n right: 15px !important;\\n bottom: 55px !important;\\n flex-wrap: wrap !important;\\n padding: 10px !important;\\n justify-content: space-between !important;\\n align-items: center !important;\\n}\\n#sbz92 .emoji-picker--item {\\n background-size: 100% !important;\\n width: 30px !important;\\n height: 30px !important;\\n position: relative !important;\\n background-repeat: no-repeat !important;\\n display: inline-block !important;\\n vertical-align: text-bottom !important;\\n margin: 5px !important;\\n cursor: pointer !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .emoji-picker-background-item {\\n background-size: 50% !important;\\n width: 40px !important;\\n height: 40px !important;\\n border-radius: 100% !important;\\n}\\n#sbz92 .emoji-picker-background-item:hover {\\n background-color: #dee2e6 !important;\\n}\\n#sbz92 .convo-list {\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n width: 100% !important;\\n justify-content: space-between !important;\\n overflow: auto !important;\\n margin-top: -60px !important;\\n padding-left: 22.5px !important;\\n padding-right: 22.5px !important;\\n}\\n#sbz92 .convo-list--list {\\n background: #fff !important;\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n}\\n#sbz92 .convo-list--title {\\n font-weight: 500 !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n background: #fff !important;\\n border-bottom: 1px solid #f0f0f0 !important;\\n padding: 15px !important;\\n}\\n#sbz92 .convo-list--container {\\n border-radius: 10px !important;\\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1) !important;\\n overflow: auto !important;\\n display: flex !important;\\n flex-direction: column !important;\\n user-select: none !important;\\n}\\n#sbz92 .convo-list--footer {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n margin-top: 22.5px !important;\\n}\\n#sbz92 .convo-list--convo-last-info {\\n overflow: hidden !important;\\n white-space: nowrap !important;\\n justify-content: center !important;\\n display: flex !important;\\n flex-direction: column !important;\\n flex: 1 !important;\\n margin-left: 15px !important;\\n}\\n#sbz92 .convo-list--convo-last-message {\\n font-weight: normal !important;\\n flex: 1 !important;\\n cursor: pointer !important;\\n display: flex !important;\\n width: 100% !important;\\n overflow: hidden !important;\\n align-items: center !important;\\n}\\n#sbz92 .convo-list--convo-last-mes {\\n text-overflow: ellipsis !important;\\n opacity: 0.6 !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: normal !important;\\n}\\n#sbz92 .convo-list--convo-title {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .convo-list--convo-completed {\\n width: 14px !important;\\n}\\n#sbz92 .convo-list--convo-name {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n flex: 1 !important;\\n margin-right: 16px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .convo-list--item {\\n cursor: pointer !important;\\n border-bottom: 1px solid '@primary_color_faded' !important;\\n padding: 15px !important;\\n display: flex !important;\\n flex-direction: row !important;\\n transition: background 0.15s ease !important;\\n}\\n#sbz92 .convo-list--item:hover {\\n background: '@primary_color_faded' !important;\\n}\\n#sbz92 .convo-list--convo-time span {\\n font-size: 14px !important;\\n line-height: 20px !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n opacity: 0.6 !important;\\n min-width: 70px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .convo-list--item-unread {\\n width: 8px !important;\\n height: 8px !important;\\n background: #dc3545 !important;\\n border-radius: 50% !important;\\n margin-left: 15px !important;\\n align-self: center !important;\\n}\\n#sbz92 .convo-list--item-avatar {\\n width: 32px !important;\\n height: 32px !important;\\n}\\n#sbz92 .widget-body--empty {\\n display: flex !important;\\n flex: 1 !important;\\n justify-content: center !important;\\n align-items: center !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .widget-body--empty-text {\\n color: #343a40 !important;\\n -webkit-text-fill-color: #343a40 !important;\\n margin-top: 30px !important;\\n text-align: center !important;\\n}\\n#sbz92 .widget-body--empty-icon {\\n width: 128px !important;\\n height: 128px !important;\\n -webkit-mask-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cg%20data-name%3D%22Layer%202%22%3E%3Cpath%20d%3D%22M130.9%20366.9a9.9%209.9%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.33%2010.33%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.52%2010.52%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.33%2010.33%200%200%200-7.1%202.9zM483.7%20282a183.07%20183.07%200%200%200%2028.3-98C512%2082.5%20429.5%200%20328%200a183.16%20183.16%200%200%200-96%2027%2010%2010%200%200%200%2010.5%2017.1A162.67%20162.67%200%200%201%20328%2020c90.4%200%20164%2073.6%20164%20164a162.73%20162.73%200%200%201-27.9%2091.5%2010.07%2010.07%200%200%200%20.3%2011.6l11%2040.9-44-11.8a10%2010%200%200%200-8.4%201.5%20164.32%20164.32%200%200%201-151.8%2020.2%20138.68%20138.68%200%200%200-97.1-97.1%20164.31%20164.31%200%200%201%2014.5-143.2%2010%2010%200%200%200-17-10.6%20184%20184%200%200%200-19.9%20149.6c-4.5-.4-9.1-.7-13.7-.7C61.9%20236%200%20297.9%200%20374a136.88%20136.88%200%200%200%2022.9%2076.1L12.2%20490a10%2010%200%200%200%2012.3%2012.3l40.9-11a137.71%20137.71%200%200%200%20146.5-.8%2010%2010%200%200%200-10.7-16.9%20118.09%20118.09%200%200%201-128.6-1.5%209.73%209.73%200%200%200-8.1-1.3L36%20478.5l7.4-27.7a10%2010%200%200%200-1.5-8.4%20117.95%20117.95%200%201%201%20207-28%2010%2010%200%200%200%2018.8%206.8%20137.72%20137.72%200%200%200%208.3-47.3%20124.44%20124.44%200%200%200-.7-13.7%20183.93%20183.93%200%200%200%20155.3-23.6l56.2%2015.1a10%2010%200%200%200%2012.3-12.3zm-246%20162.2a10.52%2010.52%200%200%200-7.1%202.9%209.73%209.73%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.52%2010.52%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%209.9%209.9%200%200%200-10-10zM205.3%2070.7a10.52%2010.52%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.14%2010.14%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.52%2010.52%200%200%200-7.1%202.9%209.9%209.9%200%200%200-2.9%207.1%2010.52%2010.52%200%200%200%202.9%207.1%209.9%209.9%200%200%200%207.1%202.9zm-19.4%20296.2a9.9%209.9%200%200%200-2.9%207.1%2010.33%2010.33%200%200%200%202.9%207.1%209.73%209.73%200%200%200%207.1%202.9%2010.33%2010.33%200%200%200%207.1-2.9%209.73%209.73%200%200%200%202.9-7.1%2010.33%2010.33%200%200%200-2.9-7.1%209.9%209.9%200%200%200-7.1-2.9%2010.33%2010.33%200%200%200-7.1%202.9zm210.8-201.1a9.8%209.8%200%200%200%205.2-1.5l1.3-.8a9.92%209.92%200%200%200%203.3-13.7%2010.06%2010.06%200%200%200-13.8-3.3l-1.3.8a10%2010%200%200%200%205.3%2018.5zm-68.1%20107.4a58%2058%200%200%200%2057.9-57.9%207%207%200%200%200-7-7H277.7a7%207%200%200%200-7%207%2058%2058%200%200%200%2057.9%2057.9zm-43.5-50.9h87.1l-1%203.7a43.93%2043.93%200%200%201-85.2%200zm-25.8-56.5a9.8%209.8%200%200%200%205.2-1.5l1.3-.8a9.92%209.92%200%200%200%203.3-13.7%2010.06%2010.06%200%200%200-13.8-3.3l-1.3.8a10%2010%200%200%200%205.3%2018.5zM75.9%20366.9A9.9%209.9%200%200%200%2073%20374a10.33%2010.33%200%200%200%202.9%207.1A9.73%209.73%200%200%200%2083%20384a10.33%2010.33%200%200%200%207.1-2.9A9.73%209.73%200%200%200%2093%20374a10.33%2010.33%200%200%200-2.9-7.1A9.9%209.9%200%200%200%2083%20364a10.33%2010.33%200%200%200-7.1%202.9z%22%20fill%3D%22%234285f4%22%20data-name%3D%22Capa%201%22/%3E%3C/g%3E%3C/svg%3E') !important;\\n border-radius: 0 !important;\\n background-color: '@primary_color' !important;\\n}\\n#sbz92 .mobile .widget-container {\\n border-radius: 15px 15px 0 0 !important;\\n max-height: 50vh !important;\\n max-height: 50dvh !important;\\n margin-bottom: 0 !important;\\n top: auto !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n width: 100% !important;\\n height: 50vh !important;\\n height: 50dvh !important;\\n opacity: 1 !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.15s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .mobile .widget-container.embed-chat {\\n border-radius: 0 !important;\\n max-height: 100% !important;\\n top: 0 !important;\\n height: 100% !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--left {\\n left: 0 !important;\\n right: 0 !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--right {\\n right: 0 !important;\\n left: 0 !important;\\n}\\n#sbz92 .mobile .widget-container.widget-container--hide {\\n opacity: 0 !important;\\n transform: translateY(calc(100% + 20px)) !important;\\n visibility: hidden !important;\\n transition: opacity 0.15s cubic-bezier(1, 0.5, 0.8, 1), transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), visibility 0.15s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .widget-container.widget-container--left {\\n left: '@desktop_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .widget-container.widget-container--right {\\n right: '@desktop_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .widget-container {\\n max-height: 100% !important;\\n max-height: '@desktop_widget_max_height' !important;\\n max-width: 100% !important;\\n background: #fff !important;\\n z-index: '@z_index_3' !important;\\n border-radius: 15px !important;\\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.13) !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n position: '@widget_position' !important;\\n margin-bottom: '@desktop_button.margin_y' !important;\\n width: '@width' !important;\\n height: '@height' !important;\\n bottom: 0 !important;\\n opacity: 1 !important;\\n transform: translateY(0) !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.2s cubic-bezier(1, 0.5, 0.8, 1), scale 0.15s ease !important;\\n visibility: visible !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-container.widget-container--full {\\n max-height: 100% !important;\\n height: 100% !important;\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-container.widget-container--hide {\\n opacity: 0 !important;\\n transform: translateY(20px) !important;\\n visibility: hidden !important;\\n transition: transform 0.15s cubic-bezier(1, 0.5, 0.8, 1), opacity 0.1s cubic-bezier(1, 0.5, 0.8, 1), visibility 0.1s cubic-bezier(1, 0.5, 0.8, 1) !important;\\n}\\n#sbz92 .btn--start-convo {\\n border-radius: 7px !important;\\n flex-shrink: 0 !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n padding-left: 32px !important;\\n padding-right: 32px !important;\\n height: 42px !important;\\n color: '@text_color' !important;\\n -webkit-text-fill-color: '@text_color' !important;\\n font-size: 16px !important;\\n font-weight: 500 !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n background: '@primary_color' !important;\\n width: 100% !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n transition: filter 250ms ease !important;\\n}\\n#sbz92 .btn--start-convo::after {\\n display: none !important;\\n}\\n#sbz92 .btn--start-convo:hover {\\n filter: brightness(1.1) !important;\\n}\\n#sbz92 .btn--start-convo:disabled {\\n opacity: 0.5 !important;\\n cursor: default !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .widget-body.widget-body--none {\\n display: none !important;\\n}\\n#sbz92 .widget-body {\\n flex: 1 !important;\\n flex-grow: 1 !important;\\n z-index: -1 !important;\\n width: 100% !important;\\n overflow-y: auto !important;\\n flex-direction: column !important;\\n display: flex !important;\\n position: relative !important;\\n}\\n#sbz92 .embed-chat .widget-body--events {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .embed-chat .message-input {\\n max-width: 600px !important;\\n margin: 20px auto !important;\\n}\\n#sbz92 .embed-chat .widget-header--inner {\\n max-width: 100% !important;\\n width: 600px !important;\\n}\\n#sbz92 .embed-chat .widget-body--content {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .embed-chat .convo-list {\\n width: 600px !important;\\n margin: 0 auto !important;\\n max-width: 100% !important;\\n}\\n#sbz92 .widget-body--content {\\n overflow-y: auto !important;\\n overflow-x: hidden !important;\\n flex: 1 !important;\\n display: flex !important;\\n flex-direction: column !important;\\n position: relative !important;\\n min-height: 0 !important;\\n}\\n#sbz92 .poweredby {\\n margin-bottom: 15px !important;\\n text-align: center !important;\\n}\\n#sbz92 .poweredby .poweredby--text {\\n text-decoration: none !important;\\n font-size: 13px !important;\\n color: #7c7c7c !important;\\n -webkit-text-fill-color: #7c7c7c !important;\\n vertical-align: baseline !important;\\n}\\n#sbz92 .poweredby .poweredby--text .poweredby--subiz-logo {\\n opacity: 0.7 !important;\\n margin-top: -1px !important;\\n height: 12px !important;\\n}\\n#sbz92 .poweredby .poweredby--text:hover {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n}\\n#sbz92 .poweredby .poweredby--text:hover .poweredby--subiz-logo {\\n opacity: 1 !important;\\n}\\n#sbz92 .empty-container {\\n display: flex !important;\\n justify-content: center !important;\\n flex-direction: column !important;\\n margin-top: 30px !important;\\n margin-bottom: 30px !important;\\n}\\n#sbz92 .empty-desc {\\n text-align: center !important;\\n margin: 30px !important;\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n}\\n#sbz92 .chat-button--white-bg {\\n display: none !important;\\n z-index: -1 !important;\\n}\\n#sbz92 .chat-button--white-bg--mask-only {\\n background: white !important;\\n width: 66px !important;\\n height: 66px !important;\\n top: 2px !important;\\n left: 2px !important;\\n position: absolute !important;\\n border-radius: 50% !important;\\n display: block !important;\\n}\\n#sbz92 .mobile .chat-button--default {\\n width: '@mobile_button.width' !important;\\n height: '@mobile_button.height' !important;\\n background: '@background' !important;\\n border-radius: '@mobile_button.border_radius' !important;\\n}\\n#sbz92 .mobile .widget-layout {\\n bottom: '@mobile_button.margin_y' !important;\\n}\\n#sbz92 .mobile .widget-layout.widget-layout--left {\\n left: '@mobile_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .mobile .widget-layout.widget-layout--right {\\n right: '@mobile_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .mobile .chat-button--img {\\n min-width: '@mobile_button.width' !important;\\n}\\n#sbz92 .chat-button {\\n cursor: pointer !important;\\n position: relative !important;\\n scale: 1 !important;\\n transition: filter 250ms ease, opacity 0.15s ease-in, scale 0.125s ease-in-out, transform 0.2s ease-in-out !important;\\n}\\n#sbz92 .chat-button.hidden {\\n opacity: 0 !important;\\n}\\n#sbz92 .chat-button:hover {\\n filter: brightness(1.1) !important;\\n scale: 1.05 !important;\\n}\\n#sbz92 .chat-button--img {\\n opacity: 0 !important;\\n min-width: '@desktop_button.width' !important;\\n display: block !important;\\n}\\n#sbz92 .chat-button.chat-button--left {\\n float: left !important;\\n}\\n#sbz92 .chat-button.chat-button--right {\\n float: right !important;\\n}\\n#sbz92 .widget-layout {\\n z-index: '@z_index_2' !important;\\n position: '@widget_position' !important;\\n bottom: '@desktop_button.margin_y' !important;\\n transition: opacity 150ms !important;\\n opacity: 1 !important;\\n}\\n#sbz92 .widget-layout.widget-layout--hidden {\\n opacity: 0 !important;\\n pointer-events: none !important;\\n}\\n#sbz92 .widget-layout.widget-layout--left {\\n left: '@desktop_button.margin_x' !important;\\n right: unset !important;\\n}\\n#sbz92 .widget-layout.widget-layout--right {\\n right: '@desktop_button.margin_x' !important;\\n left: unset !important;\\n}\\n#sbz92 .chat-button--unread {\\n position: absolute !important;\\n right: 0px !important;\\n top: -5px !important;\\n background: #dc3545 !important;\\n padding-left: 5px !important;\\n padding-right: 5px !important;\\n padding-top: 2px !important;\\n padding-bottom: 2px !important;\\n border-radius: 5px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n}\\n#sbz92 .widget-preview {\\n z-index: '@z_index_3' !important;\\n background: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border-radius: 15px !important;\\n max-width: 100% !important;\\n width: 340px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .widget-preview.widget-preview--hidden {\\n display: none !important;\\n}\\n#sbz92 .widget-preview--btn-close {\\n cursor: pointer !important;\\n opacity: 0.5 !important;\\n align-self: flex-start !important;\\n background-color: #e5e5e5 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n background-size: 16px 16px !important;\\n background-repeat: no-repeat !important;\\n background-position: center !important;\\n width: 24px !important;\\n height: 24px !important;\\n display: block !important;\\n border-radius: 100% !important;\\n transition: background-color 0.2s !important;\\n}\\n#sbz92 .widget-preview--btn-close:hover {\\n opacity: 1 !important;\\n}\\n#sbz92 .widget-preview--avatar {\\n width: 45px !important;\\n height: 45px !important;\\n border: 1px solid rgba(31, 54, 90, 0.1) !important;\\n border-radius: 100% !important;\\n margin-right: 15px !important;\\n}\\n#sbz92 .widget-preview--body {\\n display: flex !important;\\n padding: 15px !important;\\n}\\n#sbz92 .widget-preview--title {\\n display: block !important;\\n font-size: 15px !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n margin-bottom: 5px !important;\\n opacity: 0.7 !important;\\n}\\n#sbz92 .widget-preview--content {\\n cursor: pointer !important;\\n flex: 1 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-preview--message {\\n white-space: pre-wrap !important;\\n word-wrap: break-word !important;\\n font-weight: 500 !important;\\n font-size: 16px !important;\\n display: block !important;\\n margin: 0 !important;\\n margin-bottom: 0px !important;\\n max-height: 78px !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .widget-preview--action {\\n border-top: 1px solid #f0f0f0 !important;\\n cursor: pointer !important;\\n padding: 13px !important;\\n}\\n#sbz92 .widget-preview--action-text {\\n display: block !important;\\n text-align: center !important;\\n font-weight: 500 !important;\\n font-size: 16px !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n margin: 0 !important;\\n}\\n#sbz92 .widget-internet-status {\\n position: absolute !important;\\n bottom: 0 !important;\\n left: 0 !important;\\n width: 100% !important;\\n font-size: 14px !important;\\n z-index: 10 !important;\\n text-align: center !important;\\n padding: 6px 5px !important;\\n}\\n#sbz92 .widget-internet-status.negative {\\n background-color: #212325 !important;\\n color: #fff !important;\\n}\\n#sbz92 .widget-internet-status.positive {\\n background-color: #19b600 !important;\\n color: #fff !important;\\n}\\n#sbz92 .widget-preview-text-message--header {\\n display: flex !important;\\n overflow: hidden !important;\\n align-items: center !important;\\n width: 100% !important;\\n}\\n#sbz92 .widget-preview-text-message--header .widget-preview--avatar {\\n width: 24px !important;\\n height: 24px !important;\\n flex-shrink: 0 !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .widget-preview-text-message--author {\\n flex: 1 !important;\\n overflow: hidden !important;\\n display: flex !important;\\n align-items: center !important;\\n}\\n#sbz92 .widget-preview-text-message--author .badge {\\n margin-left: 10px !important;\\n}\\n#sbz92 .widget-preview-text-message--author-text {\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n overflow: hidden !important;\\n line-height: 1.5 !important;\\n color: '@secondary_color' !important;\\n -webkit-text-fill-color: '@secondary_color' !important;\\n}\\n#sbz92 .widget-preview-text-message--content {\\n margin-top: 10px !important;\\n white-space: pre-wrap !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper {\\n z-index: '@z_index_3' !important;\\n width: 100% !important;\\n margin-bottom: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: flex-start !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.right {\\n align-items: flex-end !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal {\\n flex-direction: row !important;\\n flex-wrap: wrap !important;\\n align-items: center !important;\\n gap: 10px !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal.right {\\n justify-content: flex-end !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal.left {\\n justify-content: flex-start !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal .widget-preview-quick-reply-item {\\n margin: 0 !important;\\n max-width: 200px !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n white-space: nowrap !important;\\n padding: 6px 15px !important;\\n}\\n#sbz92 .widget-preview-quick-reply-wrapper.horizontal .widget-preview-quick-reply-item:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item {\\n border-radius: 20px !important;\\n padding: 8px 20px !important;\\n background: #fff !important;\\n border: 1.5px solid !important;\\n border-color: '@primary_color' !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n margin-bottom: 15px !important;\\n cursor: pointer !important;\\n transition: 0.3s ease !important;\\n position: relative !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item:last-child {\\n margin-bottom: 0 !important;\\n}\\n#sbz92 .widget-preview-quick-reply-item:hover {\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n background-color: '@primary_color' !important;\\n}\\n#sbz92 .widget-preview-image-wrapper {\\n z-index: '@z_index_3' !important;\\n width: 100% !important;\\n margin-bottom: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: flex-start !important;\\n}\\n#sbz92 .widget-preview-image-wrapper.right {\\n align-items: flex-end !important;\\n}\\n#sbz92 .widget-preview-image-item {\\n max-width: 300px !important;\\n border-radius: 15px !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border: 1px solid #dee2e6 !important;\\n overflow: hidden !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-preview-image-item img {\\n width: 100% !important;\\n max-height: 300px !important;\\n object-fit: cover !important;\\n}\\n#sbz92 .widget-preview-text-message {\\n z-index: '@z_index_3' !important;\\n background: #fff !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n border: 1px solid #dee2e6 !important;\\n border-radius: 15px !important;\\n max-width: 100% !important;\\n min-width: 210px !important;\\n margin-bottom: 15px !important;\\n padding: 15px 20px !important;\\n positive: relative !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .widget-preview-text-message.right {\\n border-bottom-right-radius: 8px !important;\\n}\\n#sbz92 .widget-preview-text-message.left {\\n border-bottom-left-radius: 8px !important;\\n}\\n#sbz92 .widget-preview-new-wrapper {\\n max-width: '@preview_max_width' !important;\\n position: relative !important;\\n opacity: 1 !important;\\n transition: opacity 0.15s ease-in, transform 0.15s ease-in !important;\\n transform: translateY(0) !important;\\n}\\n#sbz92 .widget-preview-new-wrapper.hidden {\\n transform: translateY(20px) !important;\\n transition: opacity 0.15s ease-out, transform 0.15s ease-out !important;\\n opacity: 0 !important;\\n}\\n#sbz92 .widget-preview-new-wrapper:hover .widget-preview-x-wrapper {\\n display: flex !important;\\n}\\n#sbz92 .widget-preview-x-wrapper {\\n display: none !important;\\n justify-content: flex-start !important;\\n width: calc(100% + 40px) !important;\\n position: absolute !important;\\n padding: 15px 20px !important;\\n left: -20px !important;\\n bottom: 100% !important;\\n}\\n#sbz92 .widget-preview-x-wrapper.mobile {\\n display: flex !important;\\n}\\n#sbz92 .widget-preview-x-wrapper.right {\\n justify-content: flex-end !important;\\n left: unset !important;\\n right: -20px !important;\\n}\\n#sbz92 .widget-preview-x-wrapper .widget-preview--btn-close {\\n opacity: 1 !important;\\n width: 32px !important;\\n height: 32px !important;\\n border: 1px solid #ececec !important;\\n box-shadow: 0px 5px 30px rgba(0, 0, 0, 0.15) !important;\\n background-color: #00000040 !important;\\n background-size: 16px 16px !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNlY2VjZWMiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .widget-preview-x-wrapper .widget-preview--btn-close:hover {\\n border-color: #fff !important;\\n background-color: #00000066 !important;\\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMi4yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXIteCI+PGxpbmUgeDE9IjE4IiB5MT0iNiIgeDI9IjYiIHkyPSIxOCI+PC9saW5lPjxsaW5lIHgxPSI2IiB5MT0iNiIgeDI9IjE4IiB5Mj0iMTgiPjwvbGluZT48L3N2Zz4K') !important;\\n}\\n#sbz92 .rating--overlay {\\n position: absolute !important;\\n height: 100% !important;\\n width: 100% !important;\\n background: black !important;\\n opacity: 0.3 !important;\\n top: 0 !important;\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 9 !important;\\n}\\n#sbz92 .rating {\\n border-top-left-radius: 10px !important;\\n border-top-right-radius: 10px !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n height: 400px !important;\\n max-height: 80% !important;\\n width: 100% !important;\\n bottom: 0 !important;\\n /* centering */\\n left: 0 !important;\\n background: white !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .rating .rating--comment {\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n resize: none !important;\\n margin-left: 20px !important;\\n margin-right: 20px !important;\\n border: 2px solid lightgray !important;\\n border-radius: 5px !important;\\n padding: 10px !important;\\n height: 60px !important;\\n min-height: 60px !important;\\n}\\n#sbz92 .rating .rating--close-btn {\\n right: 20px !important;\\n top: -2px !important;\\n width: 22px !important;\\n height: 22px !important;\\n position: absolute !important;\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23acacac%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22feather%20feather-x%22%3E%3Cline%20x1%3D%2218%22%20y1%3D%226%22%20x2%3D%226%22%20y2%3D%2218%22%3E%3C/line%3E%3Cline%20x1%3D%226%22%20y1%3D%226%22%20x2%3D%2218%22%20y2%3D%2218%22%3E%3C/line%3E%3C/svg%3E') !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .rating .rating--close-btn:hover {\\n background-image: url('data:image/svg+xml,%3C?xml%20version%3D%221.0%22%20?%3E%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23a0a0a0%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20class%3D%22feather%20feather-x%22%3E%3Cline%20x1%3D%2218%22%20y1%3D%226%22%20x2%3D%226%22%20y2%3D%2218%22%3E%3C/line%3E%3Cline%20x1%3D%226%22%20y1%3D%226%22%20x2%3D%2218%22%20y2%3D%2218%22%3E%3C/line%3E%3C/svg%3E') !important;\\n}\\n#sbz92 .rating .rating--handle:hover .rating--thumb {\\n background: #e0e0e0 !important;\\n}\\n#sbz92 .rating .rating--thumb {\\n width: 70px !important;\\n height: 6px !important;\\n background: #eaeaea !important;\\n border-radius: 5px !important;\\n margin: 0 auto !important;\\n cursor: grabbing !important;\\n margin-top: 8px !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .rating .rating--content {\\n display: flex !important;\\n flex: 1 !important;\\n flex-grow: 1 !important;\\n height: calc(100% - 40px) !important;\\n flex-direction: column !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .rating .rating--heading {\\n margin: 0 !important;\\n font-weight: 500 !important;\\n font-size: 20px !important;\\n line-height: 20px !important;\\n text-align: center !important;\\n flex-grow: 1 !important;\\n position: relative !important;\\n}\\n#sbz92 .rating .rating--description {\\n text-align: center !important;\\n flex-grow: 1 !important;\\n font-size: 15px !important;\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 10px !important;\\n margin-bottom: 15px !important;\\n}\\n#sbz92 .rating .rating-faces-container {\\n flex: 5 !important;\\n display: flex !important;\\n justify-content: space-around !important;\\n align-items: center !important;\\n margin: 10px 10px !important;\\n}\\n#sbz92 .rating .rating-face-container {\\n padding: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n cursor: pointer !important;\\n border-radius: 10px !important;\\n user-select: none !important;\\n -webkit-transition: all 0.1s !important;\\n transition: all 0.1s !important;\\n}\\n#sbz92 .rating .rating-face-container:hover {\\n box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1) !important;\\n}\\n#sbz92 .rating .rating-face--text {\\n margin-top: 10px !important;\\n margin-bottom: 0px !important;\\n font-size: 13px !important;\\n color: #4d4d4d !important;\\n -webkit-text-fill-color: #4d4d4d !important;\\n}\\n#sbz92 .rating .rating-no-thanks {\\n flex: 10 !important;\\n text-align: center !important;\\n cursor: pointer !important;\\n display: flex !important;\\n justify-content: center !important;\\n align-items: flex-end !important;\\n color: #acacac !important;\\n -webkit-text-fill-color: #acacac !important;\\n}\\n#sbz92 .rating .rating-no-thanks:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .text__danger {\\n color: #dc3545 !important;\\n}\\n#sbz92 .extension--close-btn {\\n background: #00000088 !important;\\n border-radius: 8px !important;\\n color: #ffffffaa !important;\\n -webkit-text-fill-color: #ffffffaa !important;\\n right: 10px !important;\\n top: -35px !important;\\n font-size: 14px !important;\\n position: absolute !important;\\n padding: 5px 15px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .extension--close-btn:hover {\\n background: #000000 !important;\\n color: #ffffff !important;\\n -webkit-text-fill-color: #ffffff !important;\\n}\\n#sbz92 .extension--handle {\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .extension--handle:hover .extension--thumb {\\n background: #e0e0e0 !important;\\n}\\n#sbz92 .extension--thumb {\\n width: 70px !important;\\n cursor: grabbing !important;\\n margin: 0 auto !important;\\n height: 6px !important;\\n background: #eaeaea !important;\\n border-radius: 5px !important;\\n flex: 1 !important;\\n margin-top: 5px !important;\\n}\\n#sbz92 .extension {\\n border-top-left-radius: 10px !important;\\n position: absolute !important;\\n border-top-right-radius: 10px !important;\\n width: 100% !important;\\n bottom: 0 !important;\\n /* centering */\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .extension--overlay {\\n position: absolute !important;\\n height: 100% !important;\\n width: 100% !important;\\n background: black !important;\\n opacity: 0.3 !important;\\n top: 0 !important;\\n left: 0 !important;\\n border-bottom-left-radius: 15px !important;\\n border-bottom-right-radius: 15px !important;\\n z-index: 9 !important;\\n}\\n#sbz92 .order__footer {\\n margin-top: 40px !important;\\n color: #888 !important;\\n -webkit-text-fill-color: #888 !important;\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n margin-bottom: 20px !important;\\n}\\n#sbz92 .order__footer_delimiter {\\n width: 1px !important;\\n height: 15px !important;\\n border-right: 1px solid #bbb !important;\\n}\\n#sbz92 .order__footer_link {\\n padding: 0 10px !important;\\n font-size: 14px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order__footer_link:hover {\\n text-decoration: none !important;\\n color: #555 !important;\\n -webkit-text-fill-color: #555 !important;\\n}\\n#sbz92 .desktop.order {\\n border-radius: 0 !important;\\n width: 780px !important;\\n margin: 0 auto !important;\\n height: 100% !important;\\n}\\n#sbz92 .desktop.order .order_section__line {\\n display: none !important;\\n}\\n#sbz92 .desktop.order .desktop_order__heading {\\n line-height: 20px !important;\\n}\\n#sbz92 .desktop.order .order_attachment__product_img {\\n width: 50px !important;\\n height: 50px !important;\\n}\\n#sbz92 .desktop.order .order_label {\\n font-weight: 500 !important;\\n margin-top: 30px !important;\\n margin-bottom: 10px !important;\\n font-size: 16px !important;\\n}\\n#sbz92 .desktop.order .order_label:first-child {\\n margin-top: 0 !important;\\n}\\n#sbz92 .desktop.order .order_recap {\\n margin-top: 0px !important;\\n background: #f4f4f4 !important;\\n margin-top: 20px !important;\\n width: 270px !important;\\n box-shadow: 0 0 0 1px hsla(0, 0%, 69%, 0.2), 0 15px 35px 0 rgba(49, 49, 93, 0.08), 0 5px 15px 0 rgba(0, 0, 0, 0.06) !important;\\n border-radius: 6px !important;\\n background-color: #fff !important;\\n padding: 32px 32px 20px !important;\\n}\\n#sbz92 .desktop.order .order_acc_header {\\n display: flex !important;\\n align-items: center !important;\\n margin-top: 20px !important;\\n}\\n#sbz92 .desktop.order .order_acc_logo {\\n height: 50px !important;\\n}\\n#sbz92 .desktop.order .order_acc_name {\\n font-size: 16px !important;\\n margin-left: 10px !important;\\n border-left: 1px solid #aaa !important;\\n padding-left: 10px !important;\\n}\\n#sbz92 .desktop.order .order_summary_line {\\n align-items: center !important;\\n overflow: hidden !important;\\n padding: 5px 0 !important;\\n display: flex !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .desktop_order__content {\\n display: flex !important;\\n}\\n#sbz92 .order {\\n width: 100% !important;\\n display: flex !important;\\n flex-direction: column !important;\\n background: white !important;\\n z-index: 10 !important;\\n}\\n#sbz92 .order .ship_card {\\n display: flex !important;\\n align-items: center !important;\\n overflow: hidden !important;\\n width: 190px !important;\\n cursor: pointer !important;\\n padding: 10px 15px !important;\\n box-shadow: none !important;\\n border: 2px solid #eee !important;\\n color: #777 !important;\\n -webkit-text-fill-color: #777 !important;\\n margin-top: 5px !important;\\n border-radius: 8px !important;\\n background: white !important;\\n transition: all 150ms ease-out !important;\\n}\\n#sbz92 .order .ship_card:hover {\\n color: #555 !important;\\n -webkit-text-fill-color: #555 !important;\\n border: 2px solid #aaa !important;\\n}\\n#sbz92 .order .ship_card.ship_card__active {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n border: 2px solid #777 !important;\\n background: #fafafa !important;\\n}\\n#sbz92 .order .order_ship_icon {\\n margin-top: -3px !important;\\n width: 15px !important;\\n height: 15px !important;\\n opacity: 0.6 !important;\\n}\\n#sbz92 .order .card_section {\\n margin-top: 20px !important;\\n max-width: 500px !important;\\n box-shadow: 0 0 0 1px hsla(0, 0%, 69%, 0.2), 0 15px 35px 0 rgba(49, 49, 93, 0.08), 0 5px 15px 0 rgba(0, 0, 0, 0.06) !important;\\n border-radius: 6px !important;\\n background-color: #fff !important;\\n padding: 32px !important;\\n}\\n#sbz92 .order input[type='text'].form-control,\\n#sbz92 .order input[type='number'].form-control,\\n#sbz92 .order input[type='date'].form-control,\\n#sbz92 .order textarea.form-control,\\n#sbz92 .order select.form-control {\\n background: #f4f4f4 !important;\\n border: 1px solid transparent !important;\\n padding: 7px 10px !important;\\n}\\n#sbz92 .order input[type='text'].form-control:hover,\\n#sbz92 .order input[type='number'].form-control:hover,\\n#sbz92 .order input[type='date'].form-control:hover,\\n#sbz92 .order textarea.form-control:hover,\\n#sbz92 .order select.form-control:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .order input[type='text'].form-control:focus,\\n#sbz92 .order input[type='number'].form-control:focus,\\n#sbz92 .order input[type='date'].form-control:focus,\\n#sbz92 .order textarea.form-control:focus,\\n#sbz92 .order select.form-control:focus,\\n#sbz92 .order input[type='text'].form-control:active,\\n#sbz92 .order input[type='number'].form-control:active,\\n#sbz92 .order input[type='date'].form-control:active,\\n#sbz92 .order textarea.form-control:active,\\n#sbz92 .order select.form-control:active {\\n background: #eee !important;\\n}\\n#sbz92 .order input[type='text'].form-control.err,\\n#sbz92 .order input[type='number'].form-control.err,\\n#sbz92 .order input[type='date'].form-control.err,\\n#sbz92 .order textarea.form-control.err,\\n#sbz92 .order select.form-control.err {\\n background: #ffe6e6 !important;\\n border: 1px solid #ff8a8a !important;\\n}\\n#sbz92 .order .form {\\n box-shadow: none !important;\\n border: none !important;\\n padding: 0 !important;\\n}\\n#sbz92 .order .form .radio {\\n height: unset !important;\\n}\\n#sbz92 .order .order--content {\\n display: flex !important;\\n flex: 1 !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .order .order--content-content {\\n flex: 1 !important;\\n overflow: auto !important;\\n}\\n#sbz92 .order .order--heading {\\n margin: 0 !important;\\n margin-top: 20px !important;\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n padding-bottom: 8px !important;\\n line-height: 20px !important;\\n position: relative !important;\\n}\\n#sbz92 .order .order--header-desc {\\n color: #6c757d !important;\\n -webkit-text-fill-color: #6c757d !important;\\n font-size: 13px !important;\\n}\\n#sbz92 .order .order__product_line {\\n display: flex !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .order .order--footer {\\n text-align: k center !important;\\n cursor: pointer !important;\\n display: flex !important;\\n justify-content: center !important;\\n align-items: flex-end !important;\\n color: #acacac !important;\\n -webkit-text-fill-color: #acacac !important;\\n}\\n#sbz92 .order .order--footer:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n}\\n#sbz92 .order .order_section_label {\\n color: #444 !important;\\n -webkit-text-fill-color: #444 !important;\\n margin-bottom: 5px !important;\\n text-transform: uppercase !important;\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .order .order_label {\\n color: #444 !important;\\n -webkit-text-fill-color: #444 !important;\\n margin-bottom: 5px !important;\\n text-transform: uppercase !important;\\n font-size: 13px !important;\\n font-weight: 500 !important;\\n}\\n#sbz92 .order .order_section {\\n padding-left: 20px !important;\\n padding-right: 20px !important;\\n padding-bottom: 15px !important;\\n padding-top: 15px !important;\\n}\\n#sbz92 .order .order_section__line {\\n border-top: 4px solid #eee !important;\\n width: 100% !important;\\n}\\n#sbz92 .order .order_summary_line {\\n overflow: hidden !important;\\n padding: 3px 0 !important;\\n display: flex !important;\\n justify-content: space-between !important;\\n}\\n#sbz92 .order .order_btn {\\n width: 100% !important;\\n}\\n#sbz92 .order .order_tracking_link {\\n text-decoration: underline !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order .order_tracking_link:hover {\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 .order .order_tracking_link_icon {\\n margin-top: -3px !important;\\n width: 15px !important;\\n height: 15px !important;\\n}\\n#sbz92 .order .order_shipping_provider_logo {\\n width: 32px !important;\\n height: 32px !important;\\n margin-right: 10px !important;\\n}\\n#sbz92 .order .order_btn.order__btn__light {\\n background: #f0f0f0 !important;\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n border-radius: 6px !important;\\n text-align: center !important;\\n padding: 8px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .order .order_btn.order__btn__light:hover {\\n color: black !important;\\n -webkit-text-fill-color: black !important;\\n background: #ddd !important;\\n}\\n#sbz92 div.order__card {\\n display: flex !important;\\n padding: 15px !important;\\n box-shadow: none !important;\\n border: 2px solid #eee !important;\\n margin-top: 10px !important;\\n border-radius: 8px !important;\\n background: #fafafa !important;\\n}\\n#sbz92 div.order__card.order__card__active {\\n border: 2px solid #777 !important;\\n background: white !important;\\n}\\n#sbz92 .order_form_label {\\n margin-top: 10px !important;\\n margin-bottom: 4px !important;\\n}\\n#sbz92 .btn-confirm-order {\\n width: 100% !important;\\n background: '@primary_color' !important;\\n display: flex !important;\\n align-items: center !important;\\n border-radius: 5px !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n padding: 15px 10px !important;\\n cursor: pointer !important;\\n justify-content: center !important;\\n font-weight: 500 !important;\\n margin-top: 10px !important;\\n}\\n#sbz92 .btn-confirm-order:hover {\\n background: #0053d4 !important;\\n}\\n#sbz92 .order__total {\\n font-weight: 500 !important;\\n font-size: 20px !important;\\n color: '@primary_color' !important;\\n -webkit-text-fill-color: '@primary_color' !important;\\n}\\n#sbz92 .btn-cancel-order {\\n color: #666 !important;\\n -webkit-text-fill-color: #666 !important;\\n text-decoration: underline !important;\\n display: inline-block !important;\\n margin-top: 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .btn-cancel-order:hover {\\n color: #333 !important;\\n -webkit-text-fill-color: #333 !important;\\n}\\n#sbz92 .order_status {\\n text-transform: uppercase !important;\\n background: black !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n display: inline-block !important;\\n border-radius: 4px !important;\\n padding: 6px 6px 4px 6px !important;\\n line-height: 1 !important;\\n font-weight: 500 !important;\\n font-size: 12px !important;\\n}\\n#sbz92 .order_status.order_status__canceled {\\n background: whitesmoke !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .order_status.order_status__cancel {\\n background: whitesmoke !important;\\n color: #000 !important;\\n -webkit-text-fill-color: #000 !important;\\n}\\n#sbz92 .order_status.order_status__confirmed {\\n background: '@primary_color' !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__shipping {\\n background: #000 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__fullfilled {\\n background: #28a745 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__hold {\\n background: #dc3545 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__draft {\\n background: #ffc107 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_status.order_status__open {\\n background: #ffc107 !important;\\n color: white !important;\\n -webkit-text-fill-color: white !important;\\n}\\n#sbz92 .order_error {\\n display: flex !important;\\n flex-direction: column !important;\\n align-items: center !important;\\n justify-content: center !important;\\n height: 100% !important;\\n width: 100% !important;\\n}\\n#sbz92 .order_attachment__note {\\n font-size: 14px !important;\\n white-space: pre-wrap !important;\\n overflow: hidden !important;\\n text-overflow: ellipsis !important;\\n display: -webkit-box !important;\\n -webkit-line-clamp: 3 !important;\\n -webkit-box-orient: vertical !important;\\n}\\n#sbz92 .dropdown_select {\\n position: absolute !important;\\n background: white !important;\\n -webkit-box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1) !important;\\n border-radius: 5px !important;\\n width: 150px !important;\\n z-index: 20 !important;\\n overflow: hidden !important;\\n}\\n#sbz92 .dropdown_select__overlay {\\n top: 0 !important;\\n overflow: hidden !important;\\n position: absolute !important;\\n background: #000000aa !important;\\n z-index: 19 !important;\\n left: 0 !important;\\n right: 0 !important;\\n bottom: 0 !important;\\n}\\n#sbz92 .dropdown_select__item {\\n padding: 7px 10px !important;\\n cursor: pointer !important;\\n}\\n#sbz92 .dropdown_select__item:hover {\\n background: '@primary_color' !important;\\n color: #fff !important;\\n -webkit-text-fill-color: #fff !important;\\n}\\n#sbz92 .dropdown_select_filter {\\n padding: 8px 10px !important;\\n border-bottom: 1px solid #eee !important;\\n position: relative !important;\\n}\\n#sbz92 .dropdown_select_filter:hover .dropdown_select_filter__icon {\\n opacity: 1 !important;\\n}\\n#sbz92 .dropdown_select_filter_input {\\n border-radius: 5px !important;\\n width: 100% !important;\\n display: block !important;\\n background: #f4f4f4 !important;\\n border: none !important;\\n padding: 7px 10px !important;\\n padding-left: 35px !important;\\n}\\n#sbz92 .dropdown_select_filter_input:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .dropdown_select_filter_input:focus,\\n#sbz92 .dropdown_select_filter_input:active {\\n background: #eee !important;\\n}\\n#sbz92 .dropdown_select_input {\\n border-radius: 5px !important;\\n overflow: hidden !important;\\n cursor: pointer !important;\\n flex-wrap: nowrap !important;\\n display: flex !important;\\n background: #f4f4f4 !important;\\n border: 1px solid trasparent !important;\\n padding: 7px 10px !important;\\n height: 32px !important;\\n min-width: 120px !important;\\n width: 100% !important;\\n}\\n#sbz92 .dropdown_select_input:hover {\\n background: #f0f0f0 !important;\\n}\\n#sbz92 .dropdown_select_input:focus,\\n#sbz92 .dropdown_select_input:active {\\n background: #eee !important;\\n}\\n#sbz92 .dropdown_select_input.err {\\n background: #ffe6e6 !important;\\n border: 1px solid #ff8a8a !important;\\n}\\n#sbz92 .dropdown_select__items {\\n max-height: 300px !important;\\n min-height: 100px !important;\\n overflow-x: hidden !important;\\n overflow-y: auto !important;\\n}\\n#sbz92 .dropdown_select_filter__icon {\\n width: 22px !important;\\n height: 15px !important;\\n position: absolute !important;\\n z-index: 2 !important;\\n top: 15px !important;\\n left: 18px !important;\\n border-right: 1px solid #aaa !important;\\n padding-right: 7px !important;\\n opacity: 0.5 !important;\\n}\\n#sbz92 .dropdown_select_filter__empty {\\n display: flex !important;\\n align-items: center !important;\\n justify-content: center !important;\\n flex-direction: column !important;\\n}\\n#sbz92 .dropdown_select_filter__empty_img {\\n height: 50px !important;\\n margin-top: 10px !important;\\n margin-bottom: 10px !important;\\n}\\n#sbz92 .dropdown_select__caret {\\n width: 14px !important;\\n margin-top: 3px !important;\\n opacity: 0.6 !important;\\n height: 15px !important;\\n}\\ndiv#sbz92 {\\n all: initial;\\n}\\nbody div#sbz92 {\\n all: initial !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/less/chatbox.less?./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js\n}");
|
|
723
|
-
|
|
724
|
-
/***/ },
|
|
725
|
-
|
|
726
|
-
/***/ "./node_modules/css-loader/dist/runtime/api.js"
|
|
727
|
-
/*!*****************************************************!*\
|
|
728
|
-
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
729
|
-
\*****************************************************/
|
|
730
|
-
(module) {
|
|
731
|
-
|
|
732
|
-
"use strict";
|
|
733
|
-
eval("{\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/css-loader/dist/runtime/api.js?\n}");
|
|
734
|
-
|
|
735
|
-
/***/ },
|
|
736
|
-
|
|
737
|
-
/***/ "./node_modules/css-loader/dist/runtime/cssWithMappingToString.js"
|
|
738
|
-
/*!************************************************************************!*\
|
|
739
|
-
!*** ./node_modules/css-loader/dist/runtime/cssWithMappingToString.js ***!
|
|
740
|
-
\************************************************************************/
|
|
741
|
-
(module) {
|
|
742
|
-
|
|
743
|
-
"use strict";
|
|
744
|
-
eval("{\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js?\n}");
|
|
745
|
-
|
|
746
|
-
/***/ },
|
|
747
|
-
|
|
748
|
-
/***/ "./node_modules/css-loader/dist/runtime/getUrl.js"
|
|
749
|
-
/*!********************************************************!*\
|
|
750
|
-
!*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
|
|
751
|
-
\********************************************************/
|
|
752
|
-
(module) {
|
|
753
|
-
|
|
754
|
-
"use strict";
|
|
755
|
-
eval("{\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/css-loader/dist/runtime/getUrl.js?\n}");
|
|
756
|
-
|
|
757
|
-
/***/ },
|
|
758
|
-
|
|
759
|
-
/***/ "./assets/img/bubble_default.svg"
|
|
760
|
-
/*!***************************************!*\
|
|
761
|
-
!*** ./assets/img/bubble_default.svg ***!
|
|
762
|
-
\***************************************/
|
|
763
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
764
|
-
|
|
765
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/bubble_default.7d5e4ab.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/bubble_default.svg?\n}");
|
|
766
|
-
|
|
767
|
-
/***/ },
|
|
768
|
-
|
|
769
|
-
/***/ "./assets/img/convos_empty.svg"
|
|
770
|
-
/*!*************************************!*\
|
|
771
|
-
!*** ./assets/img/convos_empty.svg ***!
|
|
772
|
-
\*************************************/
|
|
773
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
774
|
-
|
|
775
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/convos_empty.2353007.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/convos_empty.svg?\n}");
|
|
776
|
-
|
|
777
|
-
/***/ },
|
|
778
|
-
|
|
779
|
-
/***/ "./assets/img/default.jpg"
|
|
780
|
-
/*!********************************!*\
|
|
781
|
-
!*** ./assets/img/default.jpg ***!
|
|
782
|
-
\********************************/
|
|
783
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
784
|
-
|
|
785
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/default.06e6ee0.jpg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/default.jpg?\n}");
|
|
786
|
-
|
|
787
|
-
/***/ },
|
|
788
|
-
|
|
789
|
-
/***/ "./assets/img/default_avatar.png"
|
|
790
|
-
/*!***************************************!*\
|
|
791
|
-
!*** ./assets/img/default_avatar.png ***!
|
|
792
|
-
\***************************************/
|
|
793
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
794
|
-
|
|
795
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/default_avatar.e449b04.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/default_avatar.png?\n}");
|
|
796
|
-
|
|
797
|
-
/***/ },
|
|
798
|
-
|
|
799
|
-
/***/ "./assets/img/default_logo.svg"
|
|
800
|
-
/*!*************************************!*\
|
|
801
|
-
!*** ./assets/img/default_logo.svg ***!
|
|
802
|
-
\*************************************/
|
|
803
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
804
|
-
|
|
805
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/default_logo.dd13a2b.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/default_logo.svg?\n}");
|
|
806
|
-
|
|
807
|
-
/***/ },
|
|
808
|
-
|
|
809
|
-
/***/ "./assets/img/done_gray.svg"
|
|
810
|
-
/*!**********************************!*\
|
|
811
|
-
!*** ./assets/img/done_gray.svg ***!
|
|
812
|
-
\**********************************/
|
|
813
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
814
|
-
|
|
815
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/done_gray.d7e8203.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/done_gray.svg?\n}");
|
|
816
|
-
|
|
817
|
-
/***/ },
|
|
818
|
-
|
|
819
|
-
/***/ "./assets/img/emoji/messenger/sub_23.529_58.824.png"
|
|
820
|
-
/*!**********************************************************!*\
|
|
821
|
-
!*** ./assets/img/emoji/messenger/sub_23.529_58.824.png ***!
|
|
822
|
-
\**********************************************************/
|
|
823
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
824
|
-
|
|
825
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_23.529_58.824.png?\n}");
|
|
826
|
-
|
|
827
|
-
/***/ },
|
|
828
|
-
|
|
829
|
-
/***/ "./assets/img/emoji/messenger/sub_23.529_60.784.png"
|
|
830
|
-
/*!**********************************************************!*\
|
|
831
|
-
!*** ./assets/img/emoji/messenger/sub_23.529_60.784.png ***!
|
|
832
|
-
\**********************************************************/
|
|
833
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
834
|
-
|
|
835
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_23.529_60.784.1420241.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_23.529_60.784.png?\n}");
|
|
836
|
-
|
|
837
|
-
/***/ },
|
|
838
|
-
|
|
839
|
-
/***/ "./assets/img/emoji/messenger/sub_25.490_0.000.png"
|
|
840
|
-
/*!*********************************************************!*\
|
|
841
|
-
!*** ./assets/img/emoji/messenger/sub_25.490_0.000.png ***!
|
|
842
|
-
\*********************************************************/
|
|
843
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
844
|
-
|
|
845
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_25.490_0.000.png?\n}");
|
|
846
|
-
|
|
847
|
-
/***/ },
|
|
848
|
-
|
|
849
|
-
/***/ "./assets/img/emoji/messenger/sub_25.490_45.098.png"
|
|
850
|
-
/*!**********************************************************!*\
|
|
851
|
-
!*** ./assets/img/emoji/messenger/sub_25.490_45.098.png ***!
|
|
852
|
-
\**********************************************************/
|
|
853
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
854
|
-
|
|
855
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_25.490_45.098.png?\n}");
|
|
856
|
-
|
|
857
|
-
/***/ },
|
|
858
|
-
|
|
859
|
-
/***/ "./assets/img/emoji/messenger/sub_25.490_5.882.png"
|
|
860
|
-
/*!*********************************************************!*\
|
|
861
|
-
!*** ./assets/img/emoji/messenger/sub_25.490_5.882.png ***!
|
|
862
|
-
\*********************************************************/
|
|
863
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
864
|
-
|
|
865
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_25.490_5.882.png?\n}");
|
|
866
|
-
|
|
867
|
-
/***/ },
|
|
868
|
-
|
|
869
|
-
/***/ "./assets/img/emoji/messenger/sub_27.451_72.549.png"
|
|
870
|
-
/*!**********************************************************!*\
|
|
871
|
-
!*** ./assets/img/emoji/messenger/sub_27.451_72.549.png ***!
|
|
872
|
-
\**********************************************************/
|
|
873
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
874
|
-
|
|
875
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_27.451_72.549.png?\n}");
|
|
876
|
-
|
|
877
|
-
/***/ },
|
|
878
|
-
|
|
879
|
-
/***/ "./assets/img/emoji/messenger/sub_27.451_84.314.png"
|
|
880
|
-
/*!**********************************************************!*\
|
|
881
|
-
!*** ./assets/img/emoji/messenger/sub_27.451_84.314.png ***!
|
|
882
|
-
\**********************************************************/
|
|
883
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
884
|
-
|
|
885
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_27.451_84.314.png?\n}");
|
|
886
|
-
|
|
887
|
-
/***/ },
|
|
888
|
-
|
|
889
|
-
/***/ "./assets/img/emoji/messenger/sub_27.451_96.078.png"
|
|
890
|
-
/*!**********************************************************!*\
|
|
891
|
-
!*** ./assets/img/emoji/messenger/sub_27.451_96.078.png ***!
|
|
892
|
-
\**********************************************************/
|
|
893
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
894
|
-
|
|
895
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_27.451_96.078.png?\n}");
|
|
896
|
-
|
|
897
|
-
/***/ },
|
|
898
|
-
|
|
899
|
-
/***/ "./assets/img/emoji/messenger/sub_29.412_5.882.png"
|
|
900
|
-
/*!*********************************************************!*\
|
|
901
|
-
!*** ./assets/img/emoji/messenger/sub_29.412_5.882.png ***!
|
|
902
|
-
\*********************************************************/
|
|
903
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
904
|
-
|
|
905
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_29.412_5.882.png?\n}");
|
|
906
|
-
|
|
907
|
-
/***/ },
|
|
908
|
-
|
|
909
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_100.000.png"
|
|
910
|
-
/*!***********************************************************!*\
|
|
911
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_100.000.png ***!
|
|
912
|
-
\***********************************************************/
|
|
913
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
914
|
-
|
|
915
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_100.000.png?\n}");
|
|
916
|
-
|
|
917
|
-
/***/ },
|
|
918
|
-
|
|
919
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_45.098.png"
|
|
920
|
-
/*!**********************************************************!*\
|
|
921
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_45.098.png ***!
|
|
922
|
-
\**********************************************************/
|
|
923
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
924
|
-
|
|
925
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_45.098.png?\n}");
|
|
926
|
-
|
|
927
|
-
/***/ },
|
|
928
|
-
|
|
929
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_47.059.png"
|
|
930
|
-
/*!**********************************************************!*\
|
|
931
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_47.059.png ***!
|
|
932
|
-
\**********************************************************/
|
|
933
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
934
|
-
|
|
935
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_47.059.png?\n}");
|
|
936
|
-
|
|
937
|
-
/***/ },
|
|
938
|
-
|
|
939
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_54.902.png"
|
|
940
|
-
/*!**********************************************************!*\
|
|
941
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_54.902.png ***!
|
|
942
|
-
\**********************************************************/
|
|
943
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
944
|
-
|
|
945
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_54.902.png?\n}");
|
|
946
|
-
|
|
947
|
-
/***/ },
|
|
948
|
-
|
|
949
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_64.706.png"
|
|
950
|
-
/*!**********************************************************!*\
|
|
951
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_64.706.png ***!
|
|
952
|
-
\**********************************************************/
|
|
953
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
954
|
-
|
|
955
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_64.706.png?\n}");
|
|
956
|
-
|
|
957
|
-
/***/ },
|
|
958
|
-
|
|
959
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_72.549.png"
|
|
960
|
-
/*!**********************************************************!*\
|
|
961
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_72.549.png ***!
|
|
962
|
-
\**********************************************************/
|
|
963
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
964
|
-
|
|
965
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_72.549.png?\n}");
|
|
966
|
-
|
|
967
|
-
/***/ },
|
|
968
|
-
|
|
969
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_78.431.png"
|
|
970
|
-
/*!**********************************************************!*\
|
|
971
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_78.431.png ***!
|
|
972
|
-
\**********************************************************/
|
|
973
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
974
|
-
|
|
975
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_78.431.png?\n}");
|
|
976
|
-
|
|
977
|
-
/***/ },
|
|
978
|
-
|
|
979
|
-
/***/ "./assets/img/emoji/messenger/sub_58.824_88.235.png"
|
|
980
|
-
/*!**********************************************************!*\
|
|
981
|
-
!*** ./assets/img/emoji/messenger/sub_58.824_88.235.png ***!
|
|
982
|
-
\**********************************************************/
|
|
983
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
984
|
-
|
|
985
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_58.824_88.235.png?\n}");
|
|
986
|
-
|
|
987
|
-
/***/ },
|
|
988
|
-
|
|
989
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_11.765.png"
|
|
990
|
-
/*!**********************************************************!*\
|
|
991
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_11.765.png ***!
|
|
992
|
-
\**********************************************************/
|
|
993
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
994
|
-
|
|
995
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_11.765.png?\n}");
|
|
996
|
-
|
|
997
|
-
/***/ },
|
|
998
|
-
|
|
999
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_27.451.png"
|
|
1000
|
-
/*!**********************************************************!*\
|
|
1001
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_27.451.png ***!
|
|
1002
|
-
\**********************************************************/
|
|
1003
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1004
|
-
|
|
1005
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_27.451.png?\n}");
|
|
1006
|
-
|
|
1007
|
-
/***/ },
|
|
1008
|
-
|
|
1009
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_29.412.png"
|
|
1010
|
-
/*!**********************************************************!*\
|
|
1011
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_29.412.png ***!
|
|
1012
|
-
\**********************************************************/
|
|
1013
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1014
|
-
|
|
1015
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_29.412.png?\n}");
|
|
1016
|
-
|
|
1017
|
-
/***/ },
|
|
1018
|
-
|
|
1019
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_3.922.png"
|
|
1020
|
-
/*!*********************************************************!*\
|
|
1021
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_3.922.png ***!
|
|
1022
|
-
\*********************************************************/
|
|
1023
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1024
|
-
|
|
1025
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_3.922.png?\n}");
|
|
1026
|
-
|
|
1027
|
-
/***/ },
|
|
1028
|
-
|
|
1029
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_35.294.png"
|
|
1030
|
-
/*!**********************************************************!*\
|
|
1031
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_35.294.png ***!
|
|
1032
|
-
\**********************************************************/
|
|
1033
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1034
|
-
|
|
1035
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_35.294.png?\n}");
|
|
1036
|
-
|
|
1037
|
-
/***/ },
|
|
1038
|
-
|
|
1039
|
-
/***/ "./assets/img/emoji/messenger/sub_60.784_7.843.png"
|
|
1040
|
-
/*!*********************************************************!*\
|
|
1041
|
-
!*** ./assets/img/emoji/messenger/sub_60.784_7.843.png ***!
|
|
1042
|
-
\*********************************************************/
|
|
1043
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1044
|
-
|
|
1045
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/emoji/messenger/sub_60.784_7.843.png?\n}");
|
|
1046
|
-
|
|
1047
|
-
/***/ },
|
|
1048
|
-
|
|
1049
|
-
/***/ "./assets/img/empty.svg"
|
|
1050
|
-
/*!******************************!*\
|
|
1051
|
-
!*** ./assets/img/empty.svg ***!
|
|
1052
|
-
\******************************/
|
|
1053
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1054
|
-
|
|
1055
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/empty.29bed2d.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/empty.svg?\n}");
|
|
1056
|
-
|
|
1057
|
-
/***/ },
|
|
1058
|
-
|
|
1059
|
-
/***/ "./assets/img/external-link.svg"
|
|
1060
|
-
/*!**************************************!*\
|
|
1061
|
-
!*** ./assets/img/external-link.svg ***!
|
|
1062
|
-
\**************************************/
|
|
1063
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1064
|
-
|
|
1065
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/external-link.90577cc.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/external-link.svg?\n}");
|
|
1066
|
-
|
|
1067
|
-
/***/ },
|
|
1068
|
-
|
|
1069
|
-
/***/ "./assets/img/image_default.png"
|
|
1070
|
-
/*!**************************************!*\
|
|
1071
|
-
!*** ./assets/img/image_default.png ***!
|
|
1072
|
-
\**************************************/
|
|
1073
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1074
|
-
|
|
1075
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/image_default.be0698b.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/image_default.png?\n}");
|
|
1076
|
-
|
|
1077
|
-
/***/ },
|
|
1078
|
-
|
|
1079
|
-
/***/ "./assets/img/loading_static.svg"
|
|
1080
|
-
/*!***************************************!*\
|
|
1081
|
-
!*** ./assets/img/loading_static.svg ***!
|
|
1082
|
-
\***************************************/
|
|
1083
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1084
|
-
|
|
1085
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/loading_static.a27f0ac.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/loading_static.svg?\n}");
|
|
1086
|
-
|
|
1087
|
-
/***/ },
|
|
1088
|
-
|
|
1089
|
-
/***/ "./assets/img/rating--average.svg"
|
|
1090
|
-
/*!****************************************!*\
|
|
1091
|
-
!*** ./assets/img/rating--average.svg ***!
|
|
1092
|
-
\****************************************/
|
|
1093
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1094
|
-
|
|
1095
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/rating--average.1ea492c.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/rating--average.svg?\n}");
|
|
1096
|
-
|
|
1097
|
-
/***/ },
|
|
1098
|
-
|
|
1099
|
-
/***/ "./assets/img/rating--great.svg"
|
|
1100
|
-
/*!**************************************!*\
|
|
1101
|
-
!*** ./assets/img/rating--great.svg ***!
|
|
1102
|
-
\**************************************/
|
|
1103
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1104
|
-
|
|
1105
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/rating--great.e3d712e.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/rating--great.svg?\n}");
|
|
1106
|
-
|
|
1107
|
-
/***/ },
|
|
1108
|
-
|
|
1109
|
-
/***/ "./assets/img/rating--poor.svg"
|
|
1110
|
-
/*!*************************************!*\
|
|
1111
|
-
!*** ./assets/img/rating--poor.svg ***!
|
|
1112
|
-
\*************************************/
|
|
1113
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1114
|
-
|
|
1115
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/rating--poor.2938a25.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/rating--poor.svg?\n}");
|
|
1116
|
-
|
|
1117
|
-
/***/ },
|
|
1118
|
-
|
|
1119
|
-
/***/ "./assets/img/send.svg"
|
|
1120
|
-
/*!*****************************!*\
|
|
1121
|
-
!*** ./assets/img/send.svg ***!
|
|
1122
|
-
\*****************************/
|
|
1123
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1124
|
-
|
|
1125
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/send.6db52a9.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/send.svg?\n}");
|
|
1126
|
-
|
|
1127
|
-
/***/ },
|
|
1128
|
-
|
|
1129
|
-
/***/ "./assets/img/stars_v2.png"
|
|
1130
|
-
/*!*********************************!*\
|
|
1131
|
-
!*** ./assets/img/stars_v2.png ***!
|
|
1132
|
-
\*********************************/
|
|
1133
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1134
|
-
|
|
1135
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/stars_v2.79cf728.png\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/stars_v2.png?\n}");
|
|
1136
|
-
|
|
1137
|
-
/***/ },
|
|
1138
|
-
|
|
1139
|
-
/***/ "./assets/img/subiz-mono.svg"
|
|
1140
|
-
/*!***********************************!*\
|
|
1141
|
-
!*** ./assets/img/subiz-mono.svg ***!
|
|
1142
|
-
\***********************************/
|
|
1143
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
1144
|
-
|
|
1145
|
-
eval("{module.exports = __webpack_require__.p + \"assets/img/subiz-mono.8fbc067.svg\";\n\n//# sourceURL=webpack://@subiz/widget-v4/./assets/img/subiz-mono.svg?\n}");
|
|
1146
|
-
|
|
1147
|
-
/***/ },
|
|
1148
|
-
|
|
1149
|
-
/***/ "./node_modules/preact/dist/preact.module.js"
|
|
1150
|
-
/*!***************************************************!*\
|
|
1151
|
-
!*** ./node_modules/preact/dist/preact.module.js ***!
|
|
1152
|
-
\***************************************************/
|
|
1153
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1154
|
-
|
|
1155
|
-
"use strict";
|
|
1156
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Component: () => (/* binding */ b),\n/* harmony export */ Fragment: () => (/* binding */ g),\n/* harmony export */ cloneElement: () => (/* binding */ E),\n/* harmony export */ createContext: () => (/* binding */ F),\n/* harmony export */ createElement: () => (/* binding */ y),\n/* harmony export */ createRef: () => (/* binding */ _),\n/* harmony export */ h: () => (/* binding */ y),\n/* harmony export */ hydrate: () => (/* binding */ B),\n/* harmony export */ isValidElement: () => (/* binding */ t),\n/* harmony export */ options: () => (/* binding */ l),\n/* harmony export */ render: () => (/* binding */ q),\n/* harmony export */ toChildArray: () => (/* binding */ $)\n/* harmony export */ });\nvar n,l,u,t,i,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,h=Array.isArray;function v(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,i,o,null)}function d(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function g(n){return n.children}function b(n,l){this.props=n,this.context=l}function m(n,l){if(null==l)return n.__?m(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?m(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function w(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,u,t,o,r,e,c,s,a;for(i.sort(f);n=i.shift();)n.__d&&(u=i.length,o=void 0,e=(r=(t=n).__v).__e,s=[],a=[],(c=t.__P)&&((o=v({},r)).__v=r.__v+1,l.vnode&&l.vnode(o),L(c,o,r,t.__n,void 0!==c.ownerSVGElement,32&r.__u?[e]:null,s,null==e?m(r):e,!!(32&r.__u),a),o.__.__k[o.__i]=o,M(s,o,a),o.__e!=e&&k(o)),i.length>u&&i.sort(f));x.__r=0}function C(n,l,u,t,i,o,r,f,e,a,h){var v,p,y,d,_,g=t&&t.__k||s,b=l.length;for(u.__d=e,P(u,l,g),e=u.__d,v=0;v<b;v++)null!=(y=u.__k[v])&&\"boolean\"!=typeof y&&\"function\"!=typeof y&&(p=-1===y.__i?c:g[y.__i]||c,y.__i=v,L(n,y,p,i,o,r,f,e,a,h),d=y.__e,y.ref&&p.ref!=y.ref&&(p.ref&&z(p.ref,null,y),h.push(y.ref,y.__c||d,y)),null==_&&null!=d&&(_=d),65536&y.__u||p.__k===y.__k?e=S(y,e,n):\"function\"==typeof y.type&&void 0!==y.__d?e=y.__d:d&&(e=d.nextSibling),y.__d=void 0,y.__u&=-196609);u.__d=e,u.__e=_}function P(n,l,u){var t,i,o,r,f,e=l.length,c=u.length,s=c,a=0;for(n.__k=[],t=0;t<e;t++)null!=(i=n.__k[t]=null==(i=l[t])||\"boolean\"==typeof i||\"function\"==typeof i?null:\"string\"==typeof i||\"number\"==typeof i||\"bigint\"==typeof i||i.constructor==String?d(null,i,null,null,i):h(i)?d(g,{children:i},null,null,null):void 0===i.constructor&&i.__b>0?d(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=H(i,u,r=t+a,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:a=f<r&&f==r-1?f-r:0,f!==t+a&&(i.__u|=65536))):(o=u[t])&&null==o.key&&o.__e&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o,!1),u[t]=null,s--);if(s)for(t=0;t<c;t++)null!=(o=u[t])&&0==(131072&o.__u)&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o))}function S(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=S(t[i],l,u));return l}return n.__e!=l&&(u.insertBefore(n.__e,l||null),l=n.__e),l&&l.nextSibling}function $(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(h(n)?n.some(function(n){$(n,l)}):l.push(n)),l}function H(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type)return u;if(t>(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return f;f++}}return-1}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/,\"$1\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=Date.now(),n.addEventListener(l,o?D:A,o)):n.removeEventListener(l,o?D:A,o);else{if(i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&\"role\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function A(n){var u=this.l[n.type+!1];if(n.t){if(n.t<=u.u)return}else n.t=Date.now();return u(l.event?l.event(n):n)}function D(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,m,k,w,x,P,S,$,H,I,T,A=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[e=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof A)try{if(w=u.props,x=(a=A.contextType)&&i[a.__c],P=a?x?x.props.value:a.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(\"prototype\"in A&&A.prototype.render?u.__c=p=new A(w,P):(u.__c=p=new b(w,P),p.constructor=A,p.render=O),x&&x.sub(p),p.props=w,p.state||(p.state={}),p.context=P,p.__n=i,y=p.__d=!0,p.__h=[],p._sb=[]),null==p.__s&&(p.__s=p.state),null!=A.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=v({},p.__s)),v(p.__s,A.getDerivedStateFromProps(w,p.__s))),d=p.props,_=p.state,p.__v=u,y)null==A.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==A.getDerivedStateFromProps&&w!==d&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(w,P),!p.__e&&(null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(w,p.__s,P)||u.__v===t.__v)){for(u.__v!==t.__v&&(p.props=w,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.forEach(function(n){n&&(n.__=u)}),S=0;S<p._sb.length;S++)p.__h.push(p._sb[S]);p._sb=[],p.__h.length&&f.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(w,p.__s,P),null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(d,_,m)})}if(p.context=P,p.props=w,p.__P=n,p.__e=!1,$=l.__r,H=0,\"prototype\"in A&&A.prototype.render){for(p.state=p.__s,p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),I=0;I<p._sb.length;I++)p.__h.push(p._sb[I]);p._sb=[]}else do{p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++H<25);p.state=p.__s,null!=p.getChildContext&&(i=v(v({},i),p.getChildContext())),y||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(d,_)),C(n,h(T=null!=a&&a.type===g&&null==a.key?a.props.children:a)?T:[T],u,t,i,o,r,f,e,c,s),p.base=u.__e,u.__u&=-161,p.__h.length&&f.push(p),k&&(p.__E=p.__=null)}catch(n){u.__v=null,c||null!=r?(u.__e=e,u.__u|=c?160:32,r[r.indexOf(e)]=null):(u.__e=t.__e,u.__k=t.__k),l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=j(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function M(n,u,t){u.__d=void 0;for(var i=0;i<t.length;i++)z(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function j(l,u,t,i,o,r,f,e,s){var a,v,y,d,_,g,b,k=t.props,w=u.props,x=u.type;if(\"svg\"===x&&(o=!0),null!=r)for(a=0;a<r.length;a++)if((_=r[a])&&\"setAttribute\"in _==!!x&&(x?_.localName===x:3===_.nodeType)){l=_,r[a]=null;break}if(null==l){if(null===x)return document.createTextNode(w);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",x):document.createElement(x,w.is&&w),r=null,e=!1}if(null===x)k===w||e&&l.data===w||(l.data=w);else{if(r=r&&n.call(l.childNodes),k=t.props||c,!e&&null!=r)for(k={},a=0;a<l.attributes.length;a++)k[(_=l.attributes[a]).name]=_.value;for(a in k)_=k[a],\"children\"==a||(\"dangerouslySetInnerHTML\"==a?y=_:\"key\"===a||a in w||T(l,a,null,_,o));for(a in w)_=w[a],\"children\"==a?d=_:\"dangerouslySetInnerHTML\"==a?v=_:\"value\"==a?g=_:\"checked\"==a?b=_:\"key\"===a||e&&\"function\"!=typeof _||k[a]===_||T(l,a,_,k[a],o);if(v)e||y&&(v.__html===y.__html||v.__html===l.innerHTML)||(l.innerHTML=v.__html),u.__k=[];else if(y&&(l.innerHTML=\"\"),C(l,h(d)?d:[d],u,t,i,o&&\"foreignObject\"!==x,r,f,r?r[0]:t.__k&&m(t,0),e,s),null!=r)for(a=r.length;a--;)null!=r[a]&&p(r[a]);e||(a=\"value\",void 0!==g&&(g!==l[a]||\"progress\"===x&&!g||\"option\"===x&&g!==k[a])&&T(l,a,g,k[a],!1),a=\"checked\",void 0!==b&&b!==l[a]&&T(l,a,b,k[a],!1))}return l}function z(n,u,t){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,t)}}function N(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||z(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null,n.__c=void 0}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&N(i[o],u,t||\"function\"!=typeof n.type);t||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function q(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],L(t,u=(!o&&i||t).__k=y(g,null,[u]),r||c,c,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),M(f,u,e)}function B(n,l){q(n,l,B)}function E(l,u,t){var i,o,r,f,e=v({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),d(l.type,e,i||l.key,o||l.ref,null)}function F(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof n&&(n=n(v({},u),this.props)),n&&v(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=g,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;\n//# sourceMappingURL=preact.module.js.map\n\n\n//# sourceURL=webpack://@subiz/widget-v4/./node_modules/preact/dist/preact.module.js?\n}");
|
|
1157
|
-
|
|
1158
|
-
/***/ }
|
|
1159
|
-
|
|
1160
|
-
/******/ });
|
|
1161
|
-
/************************************************************************/
|
|
1162
|
-
/******/ // The module cache
|
|
1163
|
-
/******/ const __webpack_module_cache__ = {};
|
|
1164
|
-
/******/
|
|
1165
|
-
/******/ // The require function
|
|
1166
|
-
/******/ function __webpack_require__(moduleId) {
|
|
1167
|
-
/******/ // Check if module is in cache
|
|
1168
|
-
/******/ const cachedModule = __webpack_module_cache__[moduleId];
|
|
1169
|
-
/******/ if (cachedModule !== undefined) {
|
|
1170
|
-
/******/ return cachedModule.exports;
|
|
1171
|
-
/******/ }
|
|
1172
|
-
/******/ // Create a new module (and put it into the cache)
|
|
1173
|
-
/******/ const module = __webpack_module_cache__[moduleId] = {
|
|
1174
|
-
/******/ id: moduleId,
|
|
1175
|
-
/******/ // no module.loaded needed
|
|
1176
|
-
/******/ exports: {}
|
|
1177
|
-
/******/ };
|
|
1178
|
-
/******/
|
|
1179
|
-
/******/ // Execute the module function
|
|
1180
|
-
/******/ if (!(moduleId in __webpack_modules__)) {
|
|
1181
|
-
/******/ delete __webpack_module_cache__[moduleId];
|
|
1182
|
-
/******/ const e = new Error("Cannot find module '" + moduleId + "'");
|
|
1183
|
-
/******/ e.code = 'MODULE_NOT_FOUND';
|
|
1184
|
-
/******/ throw e;
|
|
1185
|
-
/******/ }
|
|
1186
|
-
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
1187
|
-
/******/
|
|
1188
|
-
/******/ // Return the exports of the module
|
|
1189
|
-
/******/ return module.exports;
|
|
1190
|
-
/******/ }
|
|
1191
|
-
/******/
|
|
1192
|
-
/******/ // expose the modules object (__webpack_modules__)
|
|
1193
|
-
/******/ __webpack_require__.m = __webpack_modules__;
|
|
1194
|
-
/******/
|
|
1195
|
-
/************************************************************************/
|
|
1196
|
-
/******/ /* webpack/runtime/compat get default export */
|
|
1197
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1198
|
-
/******/ __webpack_require__.n = (module) => {
|
|
1199
|
-
/******/ const getter = module && module.__esModule ?
|
|
1200
|
-
/******/ () => (module['default']) :
|
|
1201
|
-
/******/ () => (module);
|
|
1202
|
-
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1203
|
-
/******/ return getter;
|
|
1204
|
-
/******/ };
|
|
1205
|
-
/******/
|
|
1206
|
-
/******/ /* webpack/runtime/define property getters */
|
|
1207
|
-
/******/ // define getter/value functions for harmony exports
|
|
1208
|
-
/******/ __webpack_require__.d = (exports, definition) => {
|
|
1209
|
-
/******/ for(var key in definition) {
|
|
1210
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
1211
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
1212
|
-
/******/ }
|
|
1213
|
-
/******/ }
|
|
1214
|
-
/******/ };
|
|
1215
|
-
/******/
|
|
1216
|
-
/******/ /* webpack/runtime/ensure chunk */
|
|
1217
|
-
/******/ __webpack_require__.f = {};
|
|
1218
|
-
/******/ // This file contains only the entry chunk.
|
|
1219
|
-
/******/ // The chunk loading function for additional chunks
|
|
1220
|
-
/******/ __webpack_require__.e = (chunkId) => {
|
|
1221
|
-
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
|
|
1222
|
-
/******/ __webpack_require__.f[key](chunkId, promises);
|
|
1223
|
-
/******/ return promises;
|
|
1224
|
-
/******/ }, []));
|
|
1225
|
-
/******/ };
|
|
1226
|
-
/******/
|
|
1227
|
-
/******/ /* webpack/runtime/get javascript chunk filename */
|
|
1228
|
-
/******/ // This function allow to reference async chunks
|
|
1229
|
-
/******/ __webpack_require__.u = (chunkId) => (chunkId + ".js");
|
|
1230
|
-
/******/
|
|
1231
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
1232
|
-
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));
|
|
1233
|
-
/******/
|
|
1234
|
-
/******/ /* webpack/runtime/load script */
|
|
1235
|
-
/******/ (() => {
|
|
1236
|
-
/******/ const inProgress = {};
|
|
1237
|
-
/******/ const dataWebpackPrefix = "@subiz/widget-v4:";
|
|
1238
|
-
/******/ // loadScript function to load a script via script tag
|
|
1239
|
-
/******/ __webpack_require__.l = (url, done, key, chunkId) => {
|
|
1240
|
-
/******/ if(inProgress[url]) { inProgress[url].push(done); return; }
|
|
1241
|
-
/******/ let script, needAttach;
|
|
1242
|
-
/******/ if(key !== undefined) {
|
|
1243
|
-
/******/ const scripts = document.getElementsByTagName("script");
|
|
1244
|
-
/******/ for(var i = 0; i < scripts.length; i++) {
|
|
1245
|
-
/******/ const s = scripts[i];
|
|
1246
|
-
/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
|
|
1247
|
-
/******/ }
|
|
1248
|
-
/******/ }
|
|
1249
|
-
/******/ if(!script) {
|
|
1250
|
-
/******/ needAttach = true;
|
|
1251
|
-
/******/ script = document.createElement('script');
|
|
1252
|
-
/******/
|
|
1253
|
-
/******/ script.charset = 'utf-8';
|
|
1254
|
-
/******/ if (__webpack_require__.nc) {
|
|
1255
|
-
/******/ script.setAttribute("nonce", __webpack_require__.nc);
|
|
1256
|
-
/******/ }
|
|
1257
|
-
/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key);
|
|
1258
|
-
/******/
|
|
1259
|
-
/******/ script.src = url;
|
|
1260
|
-
/******/ }
|
|
1261
|
-
/******/ inProgress[url] = [done];
|
|
1262
|
-
/******/ const onScriptComplete = (prev, event) => {
|
|
1263
|
-
/******/ // avoid mem leaks in IE.
|
|
1264
|
-
/******/ script.onerror = script.onload = null;
|
|
1265
|
-
/******/ clearTimeout(timeout);
|
|
1266
|
-
/******/ const doneFns = inProgress[url];
|
|
1267
|
-
/******/ delete inProgress[url];
|
|
1268
|
-
/******/ script.parentNode?.removeChild(script);
|
|
1269
|
-
/******/ doneFns?.forEach((fn) => (fn(event)));
|
|
1270
|
-
/******/ if(prev) return prev(event);
|
|
1271
|
-
/******/ }
|
|
1272
|
-
/******/ const timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
|
|
1273
|
-
/******/ script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
1274
|
-
/******/ script.onload = onScriptComplete.bind(null, script.onload);
|
|
1275
|
-
/******/ needAttach && document.head.appendChild(script);
|
|
1276
|
-
/******/ };
|
|
1277
|
-
/******/ })();
|
|
1278
|
-
/******/
|
|
1279
|
-
/******/ /* webpack/runtime/make namespace object */
|
|
1280
|
-
/******/ // define __esModule on exports
|
|
1281
|
-
/******/ __webpack_require__.r = (exports) => {
|
|
1282
|
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
1283
|
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1284
|
-
/******/ };
|
|
1285
|
-
/******/
|
|
1286
|
-
/******/ /* webpack/runtime/set anonymous default export name */
|
|
1287
|
-
/******/ // set .name for anonymous default exports per ES spec
|
|
1288
|
-
/******/ // skipped when the property is non-configurable (pre-ES2015 engines),
|
|
1289
|
-
/******/ // where Object.defineProperty would throw
|
|
1290
|
-
/******/ __webpack_require__.dn = (x) => {
|
|
1291
|
-
/******/ var descriptor = Object.getOwnPropertyDescriptor(x, "name");
|
|
1292
|
-
/******/ if (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, "name", { value: "default", configurable: true });
|
|
1293
|
-
/******/ };
|
|
1294
|
-
/******/
|
|
1295
|
-
/******/ /* webpack/runtime/publicPath */
|
|
1296
|
-
/******/ __webpack_require__.p = "/";
|
|
1297
|
-
/******/
|
|
1298
|
-
/******/ /* webpack/runtime/jsonp chunk loading */
|
|
1299
|
-
/******/ (() => {
|
|
1300
|
-
/******/ // no baseURI
|
|
1301
|
-
/******/
|
|
1302
|
-
/******/ // object to store loaded and loading chunks
|
|
1303
|
-
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
1304
|
-
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
|
1305
|
-
/******/ const installedChunks = {
|
|
1306
|
-
/******/ "inject": 0
|
|
1307
|
-
/******/ };
|
|
1308
|
-
/******/
|
|
1309
|
-
/******/ __webpack_require__.f.j = (chunkId, promises) => {
|
|
1310
|
-
/******/ // JSONP chunk loading for javascript
|
|
1311
|
-
/******/ let installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
|
|
1312
|
-
/******/ if(installedChunkData !== 0) { // 0 means "already installed".
|
|
1313
|
-
/******/
|
|
1314
|
-
/******/ // a Promise means "currently loading".
|
|
1315
|
-
/******/ if(installedChunkData) {
|
|
1316
|
-
/******/ promises.push(installedChunkData[2]);
|
|
1317
|
-
/******/ } else {
|
|
1318
|
-
/******/ if(true) { // all chunks have JS
|
|
1319
|
-
/******/ // setup Promise in chunk cache
|
|
1320
|
-
/******/ const promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
|
|
1321
|
-
/******/ promises.push(installedChunkData[2] = promise);
|
|
1322
|
-
/******/
|
|
1323
|
-
/******/ // create error before stack unwound to get useful stacktrace later
|
|
1324
|
-
/******/ const error = new Error();
|
|
1325
|
-
/******/ const loadingEnded = (event) => {
|
|
1326
|
-
/******/ if(__webpack_require__.o(installedChunks, chunkId)) {
|
|
1327
|
-
/******/ installedChunkData = installedChunks[chunkId];
|
|
1328
|
-
/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
|
|
1329
|
-
/******/ if(installedChunkData) {
|
|
1330
|
-
/******/ const errorType = event && (event.type === 'load' ? 'missing' : event.type);
|
|
1331
|
-
/******/ const realSrc = event && event.target && event.target.src;
|
|
1332
|
-
/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
|
|
1333
|
-
/******/ error.name = 'ChunkLoadError';
|
|
1334
|
-
/******/ error.type = errorType;
|
|
1335
|
-
/******/ error.request = realSrc;
|
|
1336
|
-
/******/ error.event = event;
|
|
1337
|
-
/******/ installedChunkData[1](error);
|
|
1338
|
-
/******/ }
|
|
1339
|
-
/******/ }
|
|
1340
|
-
/******/ };
|
|
1341
|
-
/******/ __webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, "chunk-" + chunkId, chunkId);
|
|
1342
|
-
/******/ }
|
|
1343
|
-
/******/ }
|
|
1344
|
-
/******/ }
|
|
1345
|
-
/******/ };
|
|
1346
|
-
/******/
|
|
1347
|
-
/******/ // no prefetching
|
|
1348
|
-
/******/
|
|
1349
|
-
/******/ // no preloaded
|
|
1350
|
-
/******/
|
|
1351
|
-
/******/ // no HMR
|
|
1352
|
-
/******/
|
|
1353
|
-
/******/ // no HMR manifest
|
|
1354
|
-
/******/
|
|
1355
|
-
/******/ // no on chunks loaded
|
|
1356
|
-
/******/
|
|
1357
|
-
/******/ // install a JSONP callback for chunk loading
|
|
1358
|
-
/******/ const webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
|
|
1359
|
-
/******/ let [chunkIds, moreModules, runtime] = data;
|
|
1360
|
-
/******/ // add "moreModules" to the modules object,
|
|
1361
|
-
/******/ // then flag all "chunkIds" as loaded and fire callback
|
|
1362
|
-
/******/ var moduleId, chunkId, i = 0;
|
|
1363
|
-
/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
|
|
1364
|
-
/******/ for(moduleId in moreModules) {
|
|
1365
|
-
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
|
|
1366
|
-
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
|
|
1367
|
-
/******/ }
|
|
1368
|
-
/******/ }
|
|
1369
|
-
/******/ if(runtime) var result = runtime(__webpack_require__);
|
|
1370
|
-
/******/ }
|
|
1371
|
-
/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
|
|
1372
|
-
/******/ for(;i < chunkIds.length; i++) {
|
|
1373
|
-
/******/ chunkId = chunkIds[i];
|
|
1374
|
-
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
|
|
1375
|
-
/******/ installedChunks[chunkId][0]();
|
|
1376
|
-
/******/ }
|
|
1377
|
-
/******/ installedChunks[chunkId] = 0;
|
|
1378
|
-
/******/ }
|
|
1379
|
-
/******/
|
|
1380
|
-
/******/ }
|
|
1381
|
-
/******/
|
|
1382
|
-
/******/ const chunkLoadingGlobal = self["webpackChunk_subiz_widget_v4"] = self["webpackChunk_subiz_widget_v4"] || [];
|
|
1383
|
-
/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
|
|
1384
|
-
/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
|
|
1385
|
-
/******/ })();
|
|
1386
|
-
/******/
|
|
1387
|
-
/************************************************************************/
|
|
1388
|
-
/******/
|
|
1389
|
-
/******/ // startup
|
|
1390
|
-
/******/ // Load entry module and return exports
|
|
1391
|
-
/******/ // This entry module can't be inlined because the eval devtool is used.
|
|
1392
|
-
/******/ let __webpack_exports__ = __webpack_require__("./inject.js");
|
|
1393
|
-
/******/
|
|
1394
|
-
/******/ })()
|
|
1395
|
-
;
|