chat-customer-47net 1.3.8 → 1.4.0-staging

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.
@@ -17,7 +17,7 @@ var __publicField = (obj, key, value) => {
17
17
  return value;
18
18
  };
19
19
  var _a;
20
- var render$9 = function () {
20
+ var render$a = function () {
21
21
  var _vm = this;
22
22
  var _h = _vm.$createElement;
23
23
  var _c = _vm._self._c || _h;
@@ -105,7 +105,7 @@ var render$9 = function () {
105
105
  }
106
106
  }, [_vm._v(" End Conversation ")]) : _vm._e()]) : _vm._e()]);
107
107
  };
108
- var staticRenderFns$8 = [];
108
+ var staticRenderFns$9 = [];
109
109
  const ConsultHeader_vue_vue_type_style_index_0_scoped_true_lang = "";
110
110
  function normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
111
111
  var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
@@ -162,7 +162,7 @@ function normalizeComponent(scriptExports, render2, staticRenderFns2, functional
162
162
  options
163
163
  };
164
164
  }
165
- const __vue2_script$8 = {
165
+ const __vue2_script$9 = {
166
166
  name: "ConsultHeader",
167
167
  props: {
168
168
  route: {
@@ -234,15 +234,15 @@ const __vue2_script$8 = {
234
234
  }
235
235
  }
236
236
  };
237
- const __cssModules$8 = {};
238
- var __component__$8 = /* @__PURE__ */normalizeComponent(__vue2_script$8, render$9, staticRenderFns$8, false, __vue2_injectStyles$8, "2330793e", null, null);
239
- function __vue2_injectStyles$8(context) {
240
- for (let o in __cssModules$8) {
241
- this[o] = __cssModules$8[o];
237
+ const __cssModules$9 = {};
238
+ var __component__$9 = /* @__PURE__ */normalizeComponent(__vue2_script$9, render$a, staticRenderFns$9, false, __vue2_injectStyles$9, "2330793e", null, null);
239
+ function __vue2_injectStyles$9(context) {
240
+ for (let o in __cssModules$9) {
241
+ this[o] = __cssModules$9[o];
242
242
  }
243
243
  }
244
244
  const ConsultHeader = /* @__PURE__ */function () {
245
- return __component__$8.exports;
245
+ return __component__$9.exports;
246
246
  }();
247
247
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
248
248
  function getDefaultExportFromCjs(x) {
@@ -832,9 +832,336 @@ var timezone$1 = {
832
832
  })(timezone$1);
833
833
  var timezoneExports = timezone$1.exports;
834
834
  const timezone = /* @__PURE__ */getDefaultExportFromCjs(timezoneExports);
835
+ var conversion = {
836
+ exports: {}
837
+ };
838
+ (function (module, exports) {
839
+ !function (t, e) {
840
+ module.exports = e();
841
+ }(commonjsGlobal, function () {
842
+ return function (t) {
843
+ var e = {};
844
+ function n(r) {
845
+ if (e[r]) return e[r].exports;
846
+ var o = e[r] = {
847
+ i: r,
848
+ l: false,
849
+ exports: {}
850
+ };
851
+ return t[r].call(o.exports, o, o.exports, n), o.l = true, o.exports;
852
+ }
853
+ return n.m = t, n.c = e, n.d = function (t2, e2, r) {
854
+ n.o(t2, e2) || Object.defineProperty(t2, e2, {
855
+ enumerable: true,
856
+ get: r
857
+ });
858
+ }, n.r = function (t2) {
859
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t2, Symbol.toStringTag, {
860
+ value: "Module"
861
+ }), Object.defineProperty(t2, "__esModule", {
862
+ value: true
863
+ });
864
+ }, n.t = function (t2, e2) {
865
+ if (1 & e2 && (t2 = n(t2)), 8 & e2) return t2;
866
+ if (4 & e2 && "object" == typeof t2 && t2 && t2.__esModule) return t2;
867
+ var r = /* @__PURE__ */Object.create(null);
868
+ if (n.r(r), Object.defineProperty(r, "default", {
869
+ enumerable: true,
870
+ value: t2
871
+ }), 2 & e2 && "string" != typeof t2) for (var o in t2) n.d(r, o, function (e3) {
872
+ return t2[e3];
873
+ }.bind(null, o));
874
+ return r;
875
+ }, n.n = function (t2) {
876
+ var e2 = t2 && t2.__esModule ? function () {
877
+ return t2.default;
878
+ } : function () {
879
+ return t2;
880
+ };
881
+ return n.d(e2, "a", e2), e2;
882
+ }, n.o = function (t2, e2) {
883
+ return Object.prototype.hasOwnProperty.call(t2, e2);
884
+ }, n.p = "", n(n.s = 0);
885
+ }([function (t, e, n) {
886
+ var r;
887
+ function o(t2) {
888
+ return ["image/png", "image/jpeg", "image/gif"].some(e2 => e2 === t2);
889
+ }
890
+ n.r(e), n.d(e, "canvastoDataURL", function () {
891
+ return a;
892
+ }), n.d(e, "canvastoFile", function () {
893
+ return c;
894
+ }), n.d(e, "dataURLtoFile", function () {
895
+ return s;
896
+ }), n.d(e, "dataURLtoImage", function () {
897
+ return l;
898
+ }), n.d(e, "downloadFile", function () {
899
+ return d;
900
+ }), n.d(e, "filetoDataURL", function () {
901
+ return f;
902
+ }), n.d(e, "imagetoCanvas", function () {
903
+ return g;
904
+ }), n.d(e, "urltoBlob", function () {
905
+ return w;
906
+ }), n.d(e, "urltoImage", function () {
907
+ return m;
908
+ }), n.d(e, "compress", function () {
909
+ return p;
910
+ }), n.d(e, "compressAccurately", function () {
911
+ return b;
912
+ }), n.d(e, "EImageType", function () {
913
+ return r;
914
+ }), function (t2) {
915
+ t2.PNG = "image/png", t2.JPEG = "image/jpeg", t2.GIF = "image/gif";
916
+ }(r || (r = {}));
917
+ var i = function (t2, e2, n2, r2) {
918
+ return new (n2 || (n2 = Promise))(function (o2, i2) {
919
+ function a2(t3) {
920
+ try {
921
+ u2(r2.next(t3));
922
+ } catch (t4) {
923
+ i2(t4);
924
+ }
925
+ }
926
+ function c2(t3) {
927
+ try {
928
+ u2(r2.throw(t3));
929
+ } catch (t4) {
930
+ i2(t4);
931
+ }
932
+ }
933
+ function u2(t3) {
934
+ var e3;
935
+ t3.done ? o2(t3.value) : (e3 = t3.value, e3 instanceof n2 ? e3 : new n2(function (t4) {
936
+ t4(e3);
937
+ })).then(a2, c2);
938
+ }
939
+ u2((r2 = r2.apply(t2, e2 || [])).next());
940
+ });
941
+ };
942
+ function a(t2, e2 = 0.92, n2 = r.JPEG) {
943
+ return i(this, void 0, void 0, function* () {
944
+ return o(n2) || (n2 = r.JPEG), t2.toDataURL(n2, e2);
945
+ });
946
+ }
947
+ function c(t2, e2 = 0.92, n2 = r.JPEG) {
948
+ return new Promise(r2 => t2.toBlob(t3 => r2(t3), n2, e2));
949
+ }
950
+ var u = function (t2, e2, n2, r2) {
951
+ return new (n2 || (n2 = Promise))(function (o2, i2) {
952
+ function a2(t3) {
953
+ try {
954
+ u2(r2.next(t3));
955
+ } catch (t4) {
956
+ i2(t4);
957
+ }
958
+ }
959
+ function c2(t3) {
960
+ try {
961
+ u2(r2.throw(t3));
962
+ } catch (t4) {
963
+ i2(t4);
964
+ }
965
+ }
966
+ function u2(t3) {
967
+ var e3;
968
+ t3.done ? o2(t3.value) : (e3 = t3.value, e3 instanceof n2 ? e3 : new n2(function (t4) {
969
+ t4(e3);
970
+ })).then(a2, c2);
971
+ }
972
+ u2((r2 = r2.apply(t2, e2 || [])).next());
973
+ });
974
+ };
975
+ function s(t2, e2) {
976
+ return u(this, void 0, void 0, function* () {
977
+ const n2 = t2.split(",");
978
+ let r2 = n2[0].match(/:(.*?);/)[1];
979
+ const i2 = atob(n2[1]);
980
+ let a2 = i2.length;
981
+ const c2 = new Uint8Array(a2);
982
+ for (; a2--;) c2[a2] = i2.charCodeAt(a2);
983
+ return o(e2) && (r2 = e2), new Blob([c2], {
984
+ type: r2
985
+ });
986
+ });
987
+ }
988
+ function l(t2) {
989
+ return new Promise((e2, n2) => {
990
+ const r2 = new Image();
991
+ r2.onload = () => e2(r2), r2.onerror = () => n2(new Error("dataURLtoImage(): dataURL is illegal")), r2.src = t2;
992
+ });
993
+ }
994
+ function d(t2, e2) {
995
+ const n2 = document.createElement("a");
996
+ n2.href = window.URL.createObjectURL(t2), n2.download = e2 || Date.now().toString(36), document.body.appendChild(n2);
997
+ const r2 = document.createEvent("MouseEvents");
998
+ r2.initEvent("click", false, false), n2.dispatchEvent(r2), document.body.removeChild(n2);
999
+ }
1000
+ function f(t2) {
1001
+ return new Promise(e2 => {
1002
+ const n2 = new FileReader();
1003
+ n2.onloadend = t3 => e2(t3.target.result), n2.readAsDataURL(t2);
1004
+ });
1005
+ }
1006
+ var h = function (t2, e2, n2, r2) {
1007
+ return new (n2 || (n2 = Promise))(function (o2, i2) {
1008
+ function a2(t3) {
1009
+ try {
1010
+ u2(r2.next(t3));
1011
+ } catch (t4) {
1012
+ i2(t4);
1013
+ }
1014
+ }
1015
+ function c2(t3) {
1016
+ try {
1017
+ u2(r2.throw(t3));
1018
+ } catch (t4) {
1019
+ i2(t4);
1020
+ }
1021
+ }
1022
+ function u2(t3) {
1023
+ var e3;
1024
+ t3.done ? o2(t3.value) : (e3 = t3.value, e3 instanceof n2 ? e3 : new n2(function (t4) {
1025
+ t4(e3);
1026
+ })).then(a2, c2);
1027
+ }
1028
+ u2((r2 = r2.apply(t2, e2 || [])).next());
1029
+ });
1030
+ };
1031
+ function g(t2, e2 = {}) {
1032
+ return h(this, void 0, void 0, function* () {
1033
+ const n2 = Object.assign({}, e2),
1034
+ r2 = document.createElement("canvas"),
1035
+ o2 = r2.getContext("2d");
1036
+ let i2, a2;
1037
+ for (const t3 in n2) Object.prototype.hasOwnProperty.call(n2, t3) && (n2[t3] = Number(n2[t3]));
1038
+ if (n2.scale) {
1039
+ const e3 = n2.scale > 0 && n2.scale < 10 ? n2.scale : 1;
1040
+ a2 = t2.width * e3, i2 = t2.height * e3;
1041
+ } else a2 = n2.width || n2.height * t2.width / t2.height || t2.width, i2 = n2.height || n2.width * t2.height / t2.width || t2.height;
1042
+ switch ([5, 6, 7, 8].some(t3 => t3 === n2.orientation) ? (r2.height = a2, r2.width = i2) : (r2.height = i2, r2.width = a2), n2.orientation) {
1043
+ case 3:
1044
+ o2.rotate(180 * Math.PI / 180), o2.drawImage(t2, -r2.width, -r2.height, r2.width, r2.height);
1045
+ break;
1046
+ case 6:
1047
+ o2.rotate(90 * Math.PI / 180), o2.drawImage(t2, 0, -r2.width, r2.height, r2.width);
1048
+ break;
1049
+ case 8:
1050
+ o2.rotate(270 * Math.PI / 180), o2.drawImage(t2, -r2.height, 0, r2.height, r2.width);
1051
+ break;
1052
+ case 2:
1053
+ o2.translate(r2.width, 0), o2.scale(-1, 1), o2.drawImage(t2, 0, 0, r2.width, r2.height);
1054
+ break;
1055
+ case 4:
1056
+ o2.translate(r2.width, 0), o2.scale(-1, 1), o2.rotate(180 * Math.PI / 180), o2.drawImage(t2, -r2.width, -r2.height, r2.width, r2.height);
1057
+ break;
1058
+ case 5:
1059
+ o2.translate(r2.width, 0), o2.scale(-1, 1), o2.rotate(90 * Math.PI / 180), o2.drawImage(t2, 0, -r2.width, r2.height, r2.width);
1060
+ break;
1061
+ case 7:
1062
+ o2.translate(r2.width, 0), o2.scale(-1, 1), o2.rotate(270 * Math.PI / 180), o2.drawImage(t2, -r2.height, 0, r2.height, r2.width);
1063
+ break;
1064
+ default:
1065
+ o2.drawImage(t2, 0, 0, r2.width, r2.height);
1066
+ }
1067
+ return r2;
1068
+ });
1069
+ }
1070
+ function w(t2) {
1071
+ return fetch(t2).then(t3 => t3.blob());
1072
+ }
1073
+ function m(t2) {
1074
+ return new Promise((e2, n2) => {
1075
+ const r2 = new Image();
1076
+ r2.onload = () => e2(r2), r2.onerror = () => n2(new Error("urltoImage(): Image failed to load, please check the image URL")), r2.src = t2;
1077
+ });
1078
+ }
1079
+ var y = function (t2, e2, n2, r2) {
1080
+ return new (n2 || (n2 = Promise))(function (o2, i2) {
1081
+ function a2(t3) {
1082
+ try {
1083
+ u2(r2.next(t3));
1084
+ } catch (t4) {
1085
+ i2(t4);
1086
+ }
1087
+ }
1088
+ function c2(t3) {
1089
+ try {
1090
+ u2(r2.throw(t3));
1091
+ } catch (t4) {
1092
+ i2(t4);
1093
+ }
1094
+ }
1095
+ function u2(t3) {
1096
+ var e3;
1097
+ t3.done ? o2(t3.value) : (e3 = t3.value, e3 instanceof n2 ? e3 : new n2(function (t4) {
1098
+ t4(e3);
1099
+ })).then(a2, c2);
1100
+ }
1101
+ u2((r2 = r2.apply(t2, e2 || [])).next());
1102
+ });
1103
+ };
1104
+ function p(t2, e2 = {}) {
1105
+ return y(this, void 0, void 0, function* () {
1106
+ if (!(t2 instanceof Blob)) throw new Error("compress(): First arg must be a Blob object or a File object.");
1107
+ if ("object" != typeof e2 && (e2 = Object.assign({
1108
+ quality: e2
1109
+ })), e2.quality = Number(e2.quality), Number.isNaN(e2.quality)) return t2;
1110
+ const n2 = yield f(t2);
1111
+ let i2 = n2.split(",")[0].match(/:(.*?);/)[1],
1112
+ c2 = r.JPEG;
1113
+ o(e2.type) && (c2 = e2.type, i2 = e2.type);
1114
+ const u2 = yield l(n2),
1115
+ d2 = yield g(u2, Object.assign({}, e2)),
1116
+ h2 = yield a(d2, e2.quality, c2),
1117
+ w2 = yield s(h2, i2);
1118
+ return w2.size > t2.size ? t2 : w2;
1119
+ });
1120
+ }
1121
+ function b(t2, e2 = {}) {
1122
+ return y(this, void 0, void 0, function* () {
1123
+ if (!(t2 instanceof Blob)) throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");
1124
+ if ("object" != typeof e2 && (e2 = Object.assign({
1125
+ size: e2
1126
+ })), e2.size = Number(e2.size), Number.isNaN(e2.size)) return t2;
1127
+ if (1024 * e2.size > t2.size) return t2;
1128
+ e2.accuracy = Number(e2.accuracy), (!e2.accuracy || e2.accuracy < 0.8 || e2.accuracy > 0.99) && (e2.accuracy = 0.95);
1129
+ const n2 = e2.size * (2 - e2.accuracy) * 1024,
1130
+ i2 = 1024 * e2.size,
1131
+ c2 = e2.size * e2.accuracy * 1024,
1132
+ u2 = yield f(t2);
1133
+ let d2 = u2.split(",")[0].match(/:(.*?);/)[1],
1134
+ h2 = r.JPEG;
1135
+ o(e2.type) && (h2 = e2.type, d2 = e2.type);
1136
+ const w2 = yield l(u2),
1137
+ m2 = yield g(w2, Object.assign({}, e2));
1138
+ let y2,
1139
+ p2 = 0.5;
1140
+ const b2 = [null, null];
1141
+ for (let t3 = 1; t3 <= 7; t3++) {
1142
+ y2 = yield a(m2, p2, h2);
1143
+ const e3 = 0.75 * y2.length;
1144
+ if (7 === t3) {
1145
+ (n2 < e3 || c2 > e3) && (y2 = [y2, ...b2].filter(t4 => t4).sort((t4, e4) => Math.abs(0.75 * t4.length - i2) - Math.abs(0.75 * e4.length - i2))[0]);
1146
+ break;
1147
+ }
1148
+ if (n2 < e3) b2[1] = y2, p2 -= Math.pow(0.5, t3 + 1);else {
1149
+ if (!(c2 > e3)) break;
1150
+ b2[0] = y2, p2 += Math.pow(0.5, t3 + 1);
1151
+ }
1152
+ }
1153
+ const v = yield s(y2, d2);
1154
+ return v.size > t2.size ? t2 : v;
1155
+ });
1156
+ }
1157
+ }]);
1158
+ });
1159
+ })(conversion);
1160
+ var conversionExports = conversion.exports;
1161
+ var imageConversion = conversionExports;
835
1162
  dayjs.extend(utc);
836
1163
  dayjs.extend(timezone);
837
- const version = "1.3.7";
1164
+ const version = "1.4.0-staging";
838
1165
  const publicDateFormat = "MM/DD/YY";
839
1166
  const serverLocal = "America/New_York";
840
1167
  const getTime = dateTime => {
@@ -938,7 +1265,30 @@ const getToken = () => {
938
1265
  const token = getCookie("auth._token.login");
939
1266
  return token && token !== "false" ? token : "";
940
1267
  };
941
- var render$8 = function () {
1268
+ const compressImageGetFile = ({
1269
+ file,
1270
+ fileChange = null
1271
+ }, size = 100) => {
1272
+ return new Promise(resolve => {
1273
+ const type = file.type;
1274
+ if (type === "image/jpeg" || type === "image/png") {
1275
+ let endType = fileChange ? fileChange.type : type;
1276
+ imageConversion.compressAccurately(file, {
1277
+ size,
1278
+ quality: 1,
1279
+ type: endType
1280
+ }).then(res => {
1281
+ const newFile = new File([res], fileChange ? `${file.name.replace(/\.[^/.]+$/, "")}.${fileChange.nameSuffix}` : file.name, {
1282
+ type: endType
1283
+ });
1284
+ resolve(newFile);
1285
+ });
1286
+ } else {
1287
+ resolve(file);
1288
+ }
1289
+ });
1290
+ };
1291
+ var render$9 = function () {
942
1292
  var _vm = this;
943
1293
  var _h = _vm.$createElement;
944
1294
  var _c = _vm._self._c || _h;
@@ -1000,7 +1350,7 @@ var render$8 = function () {
1000
1350
  }
1001
1351
  }, [_vm._v(" Start New Conversation 💬 ")]) : _vm._e()], 2)]);
1002
1352
  };
1003
- var staticRenderFns$7 = [function () {
1353
+ var staticRenderFns$8 = [function () {
1004
1354
  var _vm = this;
1005
1355
  var _h = _vm.$createElement;
1006
1356
  var _c = _vm._self._c || _h;
@@ -1009,7 +1359,7 @@ var staticRenderFns$7 = [function () {
1009
1359
  }, [_c("p", [_vm._v("Welcome !")]), _c("p", [_vm._v("We’re here to help")])]);
1010
1360
  }];
1011
1361
  const ConsultCover_vue_vue_type_style_index_0_scoped_true_lang = "";
1012
- const __vue2_script$7 = {
1362
+ const __vue2_script$8 = {
1013
1363
  name: "ConsultCover",
1014
1364
  components: {},
1015
1365
  props: {
@@ -1069,7 +1419,7 @@ const __vue2_script$7 = {
1069
1419
  methods: {
1070
1420
  handleStartNewConversation() {
1071
1421
  this.$emit("newConversation");
1072
- this.$emit("trackEvent", "Start conversion");
1422
+ this.$emit("trackEvent", "Start conversation");
1073
1423
  },
1074
1424
  handleConversations() {
1075
1425
  this.$emit("handleRoute", "conversations");
@@ -1081,7 +1431,7 @@ const __vue2_script$7 = {
1081
1431
  return;
1082
1432
  }
1083
1433
  this.$emit("handleToConversation", this.record);
1084
- this.$emit("trackEvent", "Start conversion");
1434
+ this.$emit("trackEvent", "Start conversation");
1085
1435
  },
1086
1436
  handleTouchStart(e) {
1087
1437
  this.touchStartTime = Date.now();
@@ -1111,17 +1461,17 @@ const __vue2_script$7 = {
1111
1461
  }
1112
1462
  }
1113
1463
  };
1114
- const __cssModules$7 = {};
1115
- var __component__$7 = /* @__PURE__ */normalizeComponent(__vue2_script$7, render$8, staticRenderFns$7, false, __vue2_injectStyles$7, "10b3767f", null, null);
1116
- function __vue2_injectStyles$7(context) {
1117
- for (let o in __cssModules$7) {
1118
- this[o] = __cssModules$7[o];
1464
+ const __cssModules$8 = {};
1465
+ var __component__$8 = /* @__PURE__ */normalizeComponent(__vue2_script$8, render$9, staticRenderFns$8, false, __vue2_injectStyles$8, "3c515d99", null, null);
1466
+ function __vue2_injectStyles$8(context) {
1467
+ for (let o in __cssModules$8) {
1468
+ this[o] = __cssModules$8[o];
1119
1469
  }
1120
1470
  }
1121
1471
  const ConsultCover = /* @__PURE__ */function () {
1122
- return __component__$7.exports;
1472
+ return __component__$8.exports;
1123
1473
  }();
1124
- var render$7 = function () {
1474
+ var render$8 = function () {
1125
1475
  var _vm = this;
1126
1476
  var _h = _vm.$createElement;
1127
1477
  var _c = _vm._self._c || _h;
@@ -1183,9 +1533,9 @@ var render$7 = function () {
1183
1533
  }
1184
1534
  }, [_vm._v(" Send ")])])]);
1185
1535
  };
1186
- var staticRenderFns$6 = [];
1536
+ var staticRenderFns$7 = [];
1187
1537
  const ConsultSign_vue_vue_type_style_index_0_scoped_true_lang = "";
1188
- const __vue2_script$6 = {
1538
+ const __vue2_script$7 = {
1189
1539
  name: "ConsultSign",
1190
1540
  components: {},
1191
1541
  props: {
@@ -1236,17 +1586,17 @@ const __vue2_script$6 = {
1236
1586
  }
1237
1587
  }
1238
1588
  };
1239
- const __cssModules$6 = {};
1240
- var __component__$6 = /* @__PURE__ */normalizeComponent(__vue2_script$6, render$7, staticRenderFns$6, false, __vue2_injectStyles$6, "ebcf6c66", null, null);
1241
- function __vue2_injectStyles$6(context) {
1242
- for (let o in __cssModules$6) {
1243
- this[o] = __cssModules$6[o];
1589
+ const __cssModules$7 = {};
1590
+ var __component__$7 = /* @__PURE__ */normalizeComponent(__vue2_script$7, render$8, staticRenderFns$7, false, __vue2_injectStyles$7, "ebcf6c66", null, null);
1591
+ function __vue2_injectStyles$7(context) {
1592
+ for (let o in __cssModules$7) {
1593
+ this[o] = __cssModules$7[o];
1244
1594
  }
1245
1595
  }
1246
1596
  const ConsultSign = /* @__PURE__ */function () {
1247
- return __component__$6.exports;
1597
+ return __component__$7.exports;
1248
1598
  }();
1249
- var render$6 = function () {
1599
+ var render$7 = function () {
1250
1600
  var _vm = this;
1251
1601
  var _h = _vm.$createElement;
1252
1602
  var _c = _vm._self._c || _h;
@@ -1300,9 +1650,9 @@ var render$6 = function () {
1300
1650
  }
1301
1651
  }, [_vm._v(" Start New Conversation 💬 ")])])]);
1302
1652
  };
1303
- var staticRenderFns$5 = [];
1653
+ var staticRenderFns$6 = [];
1304
1654
  const ConsultConversations_vue_vue_type_style_index_0_scoped_true_lang = "";
1305
- const __vue2_script$5 = {
1655
+ const __vue2_script$6 = {
1306
1656
  name: "ConsultConversations",
1307
1657
  components: {},
1308
1658
  props: {
@@ -1345,15 +1695,15 @@ const __vue2_script$5 = {
1345
1695
  }
1346
1696
  }
1347
1697
  };
1348
- const __cssModules$5 = {};
1349
- var __component__$5 = /* @__PURE__ */normalizeComponent(__vue2_script$5, render$6, staticRenderFns$5, false, __vue2_injectStyles$5, "61a191ac", null, null);
1350
- function __vue2_injectStyles$5(context) {
1351
- for (let o in __cssModules$5) {
1352
- this[o] = __cssModules$5[o];
1698
+ const __cssModules$6 = {};
1699
+ var __component__$6 = /* @__PURE__ */normalizeComponent(__vue2_script$6, render$7, staticRenderFns$6, false, __vue2_injectStyles$6, "61a191ac", null, null);
1700
+ function __vue2_injectStyles$6(context) {
1701
+ for (let o in __cssModules$6) {
1702
+ this[o] = __cssModules$6[o];
1353
1703
  }
1354
1704
  }
1355
1705
  const ConsultConversations = /* @__PURE__ */function () {
1356
- return __component__$5.exports;
1706
+ return __component__$6.exports;
1357
1707
  }();
1358
1708
  function _getDefaults() {
1359
1709
  return {
@@ -6121,11 +6471,22 @@ function updateUserEmail(data, baseURL) {
6121
6471
  baseURL
6122
6472
  });
6123
6473
  }
6124
- var render$5 = function () {
6474
+ function uploadChatImage(data, baseURL) {
6475
+ return request({
6476
+ url: `/api/chats/uploadChatImage`,
6477
+ method: "post",
6478
+ data,
6479
+ baseURL,
6480
+ headers: {
6481
+ "Content-Type": "multipart/form-data"
6482
+ }
6483
+ });
6484
+ }
6485
+ var render$6 = function () {
6125
6486
  var _vm = this;
6126
6487
  var _h = _vm.$createElement;
6127
6488
  var _c = _vm._self._c || _h;
6128
- return _c("div", [_vm.type === 1 || _vm.type === 8 || _vm.type === 10 ? _c("div", {
6489
+ return _c("div", [_vm.type === 1 || _vm.type === 2 || _vm.type === 8 || _vm.type === 10 ? _c("div", {
6129
6490
  staticClass: "consult-47this-chat-item",
6130
6491
  style: {
6131
6492
  "--theme-color": _vm.themeColors,
@@ -6133,7 +6494,7 @@ var render$5 = function () {
6133
6494
  }
6134
6495
  }, [_vm.userOrOther === "user" || _vm.itemUserId === _vm.userId ? _c("div", {
6135
6496
  staticClass: "consult-47this-chat-item-user"
6136
- }, [_c("p", {
6497
+ }, [_vm.type !== 2 ? _c("p", {
6137
6498
  on: {
6138
6499
  "click": _vm.handleLinkClick
6139
6500
  }
@@ -6144,6 +6505,22 @@ var render$5 = function () {
6144
6505
  }
6145
6506
  }), _c("span", {
6146
6507
  staticClass: "time"
6508
+ }, [_vm._v(_vm._s(_vm.time))])]) : _c("div", {
6509
+ staticClass: "consult-47this-chat-item-img",
6510
+ class: {
6511
+ "consult-image-loaded": _vm.isImageLoaded
6512
+ }
6513
+ }, [_c("img", {
6514
+ attrs: {
6515
+ "src": _vm.message,
6516
+ "alt": ""
6517
+ },
6518
+ on: {
6519
+ "load": _vm.handleImageLoad,
6520
+ "click": _vm.showPreviewImage
6521
+ }
6522
+ }), _c("span", {
6523
+ staticClass: "time"
6147
6524
  }, [_vm._v(_vm._s(_vm.time))])])]) : _c("div", {
6148
6525
  staticClass: "consult-47this-chat-item-consult"
6149
6526
  }, [_c("div", {
@@ -6152,12 +6529,13 @@ var render$5 = function () {
6152
6529
  flicker: _vm.chatType === "ai-thinking"
6153
6530
  }
6154
6531
  }, [_c("img", {
6532
+ staticClass: "consult-47this-chat-item-face",
6155
6533
  attrs: {
6156
6534
  "src": _vm.avatar,
6157
6535
  "alt": "avatar",
6158
6536
  "onload": "this.style.opacity=1"
6159
6537
  }
6160
- })]), _c("div", [_c("h3", [_vm._v(_vm._s(_vm.name))]), _c("p", {
6538
+ })]), _c("div", [_c("h3", [_vm._v(_vm._s(_vm.name))]), _vm.type !== 2 ? _c("p", {
6161
6539
  on: {
6162
6540
  "click": _vm.handleLinkClick
6163
6541
  }
@@ -6188,6 +6566,22 @@ var render$5 = function () {
6188
6566
  }
6189
6567
  }, [_vm._v("Connect with an Agent")])]) : _vm._e(), _c("span", {
6190
6568
  staticClass: "time"
6569
+ }, [_vm._v(_vm._s(_vm.time))])]) : _c("div", {
6570
+ staticClass: "consult-47this-chat-item-img",
6571
+ class: {
6572
+ "consult-image-loaded": _vm.isImageLoaded
6573
+ }
6574
+ }, [_c("img", {
6575
+ attrs: {
6576
+ "src": _vm.message,
6577
+ "alt": ""
6578
+ },
6579
+ on: {
6580
+ "load": _vm.handleImageLoad,
6581
+ "click": _vm.showPreviewImage
6582
+ }
6583
+ }), _c("span", {
6584
+ staticClass: "time"
6191
6585
  }, [_vm._v(_vm._s(_vm.time))])])])])]) : _vm._e(), _vm.type === 6 ? _c("div", {
6192
6586
  staticClass: "consult-47this-chat-email"
6193
6587
  }, [_c("h4", [_vm._v("Please fill in your email address and the system will send you the chat history.")]), _vm._m(0), _c("input", {
@@ -6282,7 +6676,7 @@ var render$5 = function () {
6282
6676
  }
6283
6677
  }, [_vm._v("send")])]) : _vm._e()]);
6284
6678
  };
6285
- var staticRenderFns$4 = [function () {
6679
+ var staticRenderFns$5 = [function () {
6286
6680
  var _vm = this;
6287
6681
  var _h = _vm.$createElement;
6288
6682
  var _c = _vm._self._c || _h;
@@ -6312,15 +6706,15 @@ const hexToRgb = hex => {
6312
6706
  const b = parseInt(hex.slice(5, 7), 16);
6313
6707
  return `${r}, ${g}, ${b}`;
6314
6708
  };
6315
- const render$4 = new marked.Renderer();
6709
+ const render$5 = new marked.Renderer();
6316
6710
  marked.setOptions({
6317
- renderer: render$4,
6711
+ renderer: render$5,
6318
6712
  gfm: true,
6319
6713
  pedantic: false,
6320
6714
  breaks: true,
6321
6715
  sanitize: false
6322
6716
  });
6323
- const __vue2_script$4 = {
6717
+ const __vue2_script$5 = {
6324
6718
  name: "ConsultChatItem",
6325
6719
  props: {
6326
6720
  item: {
@@ -6422,7 +6816,8 @@ const __vue2_script$4 = {
6422
6816
  _typeController: null,
6423
6817
  isTyping: false,
6424
6818
  // 标记组件已挂载:只有当 _hasMounted 为 true 时,新的 message 才会触发打字机
6425
- _hasMounted: false
6819
+ _hasMounted: false,
6820
+ isImageLoaded: false
6426
6821
  };
6427
6822
  },
6428
6823
  computed: {
@@ -6441,7 +6836,7 @@ const __vue2_script$4 = {
6441
6836
  this.stopTypewriter();
6442
6837
  if (this._shouldType && newVal && this._hasMounted && this.item.source === "socket") {
6443
6838
  this.isTyping = true;
6444
- this._typeController = this.typewriterRender2(newVal, {
6839
+ this._typeController = this.typewriterRender(newVal, {
6445
6840
  speed: this.typeSpeed,
6446
6841
  chunk: this.chunk,
6447
6842
  charsPerRender: this.charsPerRender,
@@ -6485,61 +6880,8 @@ const __vue2_script$4 = {
6485
6880
  const text = (src || "").replace(/ {2,}/g, match => "&nbsp;".repeat(match.length));
6486
6881
  return marked(text);
6487
6882
  },
6488
- typewriterRender(message, opts = {}) {
6489
- const speed = typeof opts.speed === "number" ? opts.speed : 40;
6490
- const chunk = Math.max(1, typeof opts.chunk === "number" ? opts.chunk : 1);
6491
- const charsPerRender = Math.max(1, typeof opts.charsPerRender === "number" ? opts.charsPerRender : 3);
6492
- const onUpdate = typeof opts.onUpdate === "function" ? opts.onUpdate : html2 => {
6493
- this.displayedHtml = html2;
6494
- };
6495
- const onComplete = typeof opts.onComplete === "function" ? opts.onComplete : () => {};
6496
- if (!message) {
6497
- onUpdate("");
6498
- onComplete();
6499
- return {
6500
- stop() {}
6501
- };
6502
- }
6503
- const preprocess = s => (s || "").replace(/ {2,}/g, m => "&nbsp;".repeat(m.length));
6504
- const src = preprocess(message);
6505
- const len = src.length;
6506
- let index = 0;
6507
- let stopped = false;
6508
- let timer = null;
6509
- const step = () => {
6510
- if (stopped) return;
6511
- index = Math.min(len, index + chunk);
6512
- if (index % charsPerRender === 0 || index === len) {
6513
- try {
6514
- const html2 = marked(src.slice(0, index));
6515
- onUpdate(html2);
6516
- } catch (err) {
6517
- onUpdate(marked(src));
6518
- stopped = true;
6519
- onComplete();
6520
- return;
6521
- }
6522
- }
6523
- if (index >= len) {
6524
- stopped = true;
6525
- onComplete();
6526
- return;
6527
- }
6528
- timer = setTimeout(step, speed);
6529
- };
6530
- timer = setTimeout(step, speed);
6531
- return {
6532
- stop() {
6533
- stopped = true;
6534
- if (timer) {
6535
- clearTimeout(timer);
6536
- timer = null;
6537
- }
6538
- }
6539
- };
6540
- },
6541
6883
  // 避免打出a标签
6542
- typewriterRender2(message, opts = {}) {
6884
+ typewriterRender(message, opts = {}) {
6543
6885
  const speed = typeof opts.speed === "number" ? opts.speed : 40;
6544
6886
  const chunk = Math.max(1, typeof opts.chunk === "number" ? opts.chunk : 1);
6545
6887
  const charsPerRender = Math.max(1, typeof opts.charsPerRender === "number" ? opts.charsPerRender : 3);
@@ -6757,17 +7099,1188 @@ const __vue2_script$4 = {
6757
7099
  question: this.clientQuestion,
6758
7100
  updateTime: this.updateTime
6759
7101
  });
7102
+ },
7103
+ showPreviewImage() {
7104
+ console.log("showPreviewImage", this.message);
7105
+ this.$emit("showPreviewImage", this.message);
7106
+ },
7107
+ handleImageLoad() {
7108
+ this.isImageLoaded = true;
7109
+ }
7110
+ }
7111
+ };
7112
+ const __cssModules$5 = {};
7113
+ var __component__$5 = /* @__PURE__ */normalizeComponent(__vue2_script$5, render$6, staticRenderFns$5, false, __vue2_injectStyles$5, "0d1b02c7", null, null);
7114
+ function __vue2_injectStyles$5(context) {
7115
+ for (let o in __cssModules$5) {
7116
+ this[o] = __cssModules$5[o];
7117
+ }
7118
+ }
7119
+ const ConsultChatItem = /* @__PURE__ */function () {
7120
+ return __component__$5.exports;
7121
+ }();
7122
+ var render$4 = function () {
7123
+ var _vm = this;
7124
+ var _h = _vm.$createElement;
7125
+ var _c = _vm._self._c || _h;
7126
+ return _c("div", {
7127
+ staticClass: "consult-47this-emoji-picker"
7128
+ }, [_c("div", {
7129
+ staticClass: "consult-47this-emoji-tabs"
7130
+ }, _vm._l(_vm.tabs, function (tab) {
7131
+ return _c("button", {
7132
+ key: tab,
7133
+ class: {
7134
+ active: _vm.activeTab === tab
7135
+ },
7136
+ on: {
7137
+ "click": function ($event) {
7138
+ _vm.activeTab = tab;
7139
+ }
7140
+ }
7141
+ }, [_vm._v(" " + _vm._s(tab) + " ")]);
7142
+ }), 0), _c("div", {
7143
+ staticClass: "consult-47this-emoji-grid"
7144
+ }, _vm._l(_vm.filteredEmojis, function (emoji) {
7145
+ return _c("span", {
7146
+ key: emoji.char,
7147
+ staticClass: "consult-47this-emoji",
7148
+ attrs: {
7149
+ "title": emoji.name
7150
+ },
7151
+ on: {
7152
+ "click": function ($event) {
7153
+ return _vm.insertEmoji(emoji.char);
7154
+ }
7155
+ }
7156
+ }, [_vm._v(" " + _vm._s(emoji.char) + " ")]);
7157
+ }), 0)]);
7158
+ };
7159
+ var staticRenderFns$4 = [];
7160
+ const UnicodeEmojiPicker_vue_vue_type_style_index_0_scoped_true_lang = "";
7161
+ const __vue2_script$4 = {
7162
+ name: "UnicodeEmojiPicker",
7163
+ data() {
7164
+ return {
7165
+ activeTab: "Smileys",
7166
+ // 默认选中分类
7167
+ tabs: ["Smileys", "Animals", "Food", "Travel", "Objects", "Symbols"],
7168
+ emojis: [
7169
+ // Smileys & People (45个)
7170
+ {
7171
+ char: "😀",
7172
+ name: "Grinning Face",
7173
+ category: "Smileys"
7174
+ }, {
7175
+ char: "😃",
7176
+ name: "Grinning Face with Big Eyes",
7177
+ category: "Smileys"
7178
+ }, {
7179
+ char: "😄",
7180
+ name: "Grinning Face with Smiling Eyes",
7181
+ category: "Smileys"
7182
+ }, {
7183
+ char: "😁",
7184
+ name: "Beaming Face with Smiling Eyes",
7185
+ category: "Smileys"
7186
+ }, {
7187
+ char: "😆",
7188
+ name: "Grinning Squinting Face",
7189
+ category: "Smileys"
7190
+ }, {
7191
+ char: "😅",
7192
+ name: "Grinning Face with Sweat",
7193
+ category: "Smileys"
7194
+ }, {
7195
+ char: "🤣",
7196
+ name: "Rolling on the Floor Laughing",
7197
+ category: "Smileys"
7198
+ }, {
7199
+ char: "😂",
7200
+ name: "Face with Tears of Joy",
7201
+ category: "Smileys"
7202
+ }, {
7203
+ char: "👍",
7204
+ name: "Thumbs Up",
7205
+ category: "Smileys"
7206
+ }, {
7207
+ char: "👏",
7208
+ name: "Clapping Hands",
7209
+ category: "Smileys"
7210
+ }, {
7211
+ char: "🙂",
7212
+ name: "Slightly Smiling Face",
7213
+ category: "Smileys"
7214
+ }, {
7215
+ char: "🙃",
7216
+ name: "Upside-Down Face",
7217
+ category: "Smileys"
7218
+ }, {
7219
+ char: "😉",
7220
+ name: "Winking Face",
7221
+ category: "Smileys"
7222
+ }, {
7223
+ char: "😊",
7224
+ name: "Smiling Face with Smiling Eyes",
7225
+ category: "Smileys"
7226
+ }, {
7227
+ char: "😇",
7228
+ name: "Smiling Face with Halo",
7229
+ category: "Smileys"
7230
+ }, {
7231
+ char: "🥰",
7232
+ name: "Smiling Face with Hearts",
7233
+ category: "Smileys"
7234
+ }, {
7235
+ char: "😍",
7236
+ name: "Smiling Face with Heart-Eyes",
7237
+ category: "Smileys"
7238
+ }, {
7239
+ char: "🤩",
7240
+ name: "Star-Struck",
7241
+ category: "Smileys"
7242
+ }, {
7243
+ char: "😘",
7244
+ name: "Face Blowing a Kiss",
7245
+ category: "Smileys"
7246
+ }, {
7247
+ char: "😗",
7248
+ name: "Kissing Face",
7249
+ category: "Smileys"
7250
+ }, {
7251
+ char: "😚",
7252
+ name: "Kissing Face with Closed Eyes",
7253
+ category: "Smileys"
7254
+ }, {
7255
+ char: "😙",
7256
+ name: "Kissing Face with Smiling Eyes",
7257
+ category: "Smileys"
7258
+ }, {
7259
+ char: "🥲",
7260
+ name: "Smiling Face with Tear",
7261
+ category: "Smileys"
7262
+ }, {
7263
+ char: "😋",
7264
+ name: "Face Savoring Food",
7265
+ category: "Smileys"
7266
+ }, {
7267
+ char: "😛",
7268
+ name: "Face with Tongue",
7269
+ category: "Smileys"
7270
+ }, {
7271
+ char: "😜",
7272
+ name: "Winking Face with Tongue",
7273
+ category: "Smileys"
7274
+ }, {
7275
+ char: "🤪",
7276
+ name: "Zany Face",
7277
+ category: "Smileys"
7278
+ }, {
7279
+ char: "😝",
7280
+ name: "Squinting Face with Tongue",
7281
+ category: "Smileys"
7282
+ }, {
7283
+ char: "🤑",
7284
+ name: "Money-Mouth Face",
7285
+ category: "Smileys"
7286
+ }, {
7287
+ char: "🤗",
7288
+ name: "Hugging Face",
7289
+ category: "Smileys"
7290
+ }, {
7291
+ char: "🤭",
7292
+ name: "Face with Hand Over Mouth",
7293
+ category: "Smileys"
7294
+ }, {
7295
+ char: "🤫",
7296
+ name: "Shushing Face",
7297
+ category: "Smileys"
7298
+ }, {
7299
+ char: "🤔",
7300
+ name: "Thinking Face",
7301
+ category: "Smileys"
7302
+ }, {
7303
+ char: "😐",
7304
+ name: "Neutral Face",
7305
+ category: "Smileys"
7306
+ }, {
7307
+ char: "😑",
7308
+ name: "Expressionless Face",
7309
+ category: "Smileys"
7310
+ }, {
7311
+ char: "😶",
7312
+ name: "Face Without Mouth",
7313
+ category: "Smileys"
7314
+ }, {
7315
+ char: "😏",
7316
+ name: "Smirking Face",
7317
+ category: "Smileys"
7318
+ }, {
7319
+ char: "😒",
7320
+ name: "Unamused Face",
7321
+ category: "Smileys"
7322
+ }, {
7323
+ char: "🙄",
7324
+ name: "Face with Rolling Eyes",
7325
+ category: "Smileys"
7326
+ }, {
7327
+ char: "😬",
7328
+ name: "Grimacing Face",
7329
+ category: "Smileys"
7330
+ }, {
7331
+ char: "🤥",
7332
+ name: "Lying Face",
7333
+ category: "Smileys"
7334
+ }, {
7335
+ char: "😌",
7336
+ name: "Relieved Face",
7337
+ category: "Smileys"
7338
+ }, {
7339
+ char: "😔",
7340
+ name: "Pensive Face",
7341
+ category: "Smileys"
7342
+ }, {
7343
+ char: "😪",
7344
+ name: "Sleepy Face",
7345
+ category: "Smileys"
7346
+ }, {
7347
+ char: "🤤",
7348
+ name: "Drooling Face",
7349
+ category: "Smileys"
7350
+ }, {
7351
+ char: "😴",
7352
+ name: "Sleeping Face",
7353
+ category: "Smileys"
7354
+ }, {
7355
+ char: "😷",
7356
+ name: "Face with Medical Mask",
7357
+ category: "Smileys"
7358
+ },
7359
+ // Animals & Nature (45个)
7360
+ {
7361
+ char: "🐶",
7362
+ name: "Dog Face",
7363
+ category: "Animals"
7364
+ }, {
7365
+ char: "🐱",
7366
+ name: "Cat Face",
7367
+ category: "Animals"
7368
+ }, {
7369
+ char: "🐭",
7370
+ name: "Mouse Face",
7371
+ category: "Animals"
7372
+ }, {
7373
+ char: "🐹",
7374
+ name: "Hamster",
7375
+ category: "Animals"
7376
+ }, {
7377
+ char: "🐰",
7378
+ name: "Rabbit Face",
7379
+ category: "Animals"
7380
+ }, {
7381
+ char: "🦊",
7382
+ name: "Fox Face",
7383
+ category: "Animals"
7384
+ }, {
7385
+ char: "🐻",
7386
+ name: "Bear",
7387
+ category: "Animals"
7388
+ }, {
7389
+ char: "🐼",
7390
+ name: "Panda",
7391
+ category: "Animals"
7392
+ }, {
7393
+ char: "🐨",
7394
+ name: "Koala",
7395
+ category: "Animals"
7396
+ }, {
7397
+ char: "🐯",
7398
+ name: "Tiger Face",
7399
+ category: "Animals"
7400
+ }, {
7401
+ char: "🦁",
7402
+ name: "Lion",
7403
+ category: "Animals"
7404
+ }, {
7405
+ char: "🐮",
7406
+ name: "Cow Face",
7407
+ category: "Animals"
7408
+ }, {
7409
+ char: "🐷",
7410
+ name: "Pig Face",
7411
+ category: "Animals"
7412
+ }, {
7413
+ char: "🐸",
7414
+ name: "Frog",
7415
+ category: "Animals"
7416
+ }, {
7417
+ char: "🐵",
7418
+ name: "Monkey Face",
7419
+ category: "Animals"
7420
+ }, {
7421
+ char: "🐔",
7422
+ name: "Chicken",
7423
+ category: "Animals"
7424
+ }, {
7425
+ char: "🐧",
7426
+ name: "Penguin",
7427
+ category: "Animals"
7428
+ }, {
7429
+ char: "🐦",
7430
+ name: "Bird",
7431
+ category: "Animals"
7432
+ }, {
7433
+ char: "🐤",
7434
+ name: "Baby Chick",
7435
+ category: "Animals"
7436
+ }, {
7437
+ char: "🦆",
7438
+ name: "Duck",
7439
+ category: "Animals"
7440
+ }, {
7441
+ char: "🦅",
7442
+ name: "Eagle",
7443
+ category: "Animals"
7444
+ }, {
7445
+ char: "🦉",
7446
+ name: "Owl",
7447
+ category: "Animals"
7448
+ }, {
7449
+ char: "🦇",
7450
+ name: "Bat",
7451
+ category: "Animals"
7452
+ }, {
7453
+ char: "🐺",
7454
+ name: "Wolf",
7455
+ category: "Animals"
7456
+ }, {
7457
+ char: "🐗",
7458
+ name: "Boar",
7459
+ category: "Animals"
7460
+ }, {
7461
+ char: "🐴",
7462
+ name: "Horse Face",
7463
+ category: "Animals"
7464
+ }, {
7465
+ char: "🦄",
7466
+ name: "Unicorn",
7467
+ category: "Animals"
7468
+ }, {
7469
+ char: "🐝",
7470
+ name: "Honeybee",
7471
+ category: "Animals"
7472
+ }, {
7473
+ char: "🐛",
7474
+ name: "Bug",
7475
+ category: "Animals"
7476
+ }, {
7477
+ char: "🦋",
7478
+ name: "Butterfly",
7479
+ category: "Animals"
7480
+ }, {
7481
+ char: "🐌",
7482
+ name: "Snail",
7483
+ category: "Animals"
7484
+ }, {
7485
+ char: "🐞",
7486
+ name: "Lady Beetle",
7487
+ category: "Animals"
7488
+ }, {
7489
+ char: "🐜",
7490
+ name: "Ant",
7491
+ category: "Animals"
7492
+ }, {
7493
+ char: "🦗",
7494
+ name: "Cricket",
7495
+ category: "Animals"
7496
+ }, {
7497
+ char: "🕷️",
7498
+ name: "Spider",
7499
+ category: "Animals"
7500
+ }, {
7501
+ char: "🦂",
7502
+ name: "Scorpion",
7503
+ category: "Animals"
7504
+ }, {
7505
+ char: "🐢",
7506
+ name: "Turtle",
7507
+ category: "Animals"
7508
+ }, {
7509
+ char: "🐍",
7510
+ name: "Snake",
7511
+ category: "Animals"
7512
+ }, {
7513
+ char: "🦎",
7514
+ name: "Lizard",
7515
+ category: "Animals"
7516
+ }, {
7517
+ char: "🦖",
7518
+ name: "T-Rex",
7519
+ category: "Animals"
7520
+ }, {
7521
+ char: "🦕",
7522
+ name: "Sauropod",
7523
+ category: "Animals"
7524
+ }, {
7525
+ char: "🐙",
7526
+ name: "Octopus",
7527
+ category: "Animals"
7528
+ }, {
7529
+ char: "🦑",
7530
+ name: "Squid",
7531
+ category: "Animals"
7532
+ }, {
7533
+ char: "🦐",
7534
+ name: "Shrimp",
7535
+ category: "Animals"
7536
+ }, {
7537
+ char: "🦞",
7538
+ name: "Lobster",
7539
+ category: "Animals"
7540
+ },
7541
+ // Food & Drink (45个)
7542
+ {
7543
+ char: "🍏",
7544
+ name: "Green Apple",
7545
+ category: "Food"
7546
+ }, {
7547
+ char: "🍎",
7548
+ name: "Red Apple",
7549
+ category: "Food"
7550
+ }, {
7551
+ char: "🍐",
7552
+ name: "Pear",
7553
+ category: "Food"
7554
+ }, {
7555
+ char: "🍊",
7556
+ name: "Tangerine",
7557
+ category: "Food"
7558
+ }, {
7559
+ char: "🍋",
7560
+ name: "Lemon",
7561
+ category: "Food"
7562
+ }, {
7563
+ char: "🍌",
7564
+ name: "Banana",
7565
+ category: "Food"
7566
+ }, {
7567
+ char: "🍉",
7568
+ name: "Watermelon",
7569
+ category: "Food"
7570
+ }, {
7571
+ char: "🍇",
7572
+ name: "Grapes",
7573
+ category: "Food"
7574
+ }, {
7575
+ char: "🍓",
7576
+ name: "Strawberry",
7577
+ category: "Food"
7578
+ }, {
7579
+ char: "🫐",
7580
+ name: "Blueberries",
7581
+ category: "Food"
7582
+ }, {
7583
+ char: "🍈",
7584
+ name: "Melon",
7585
+ category: "Food"
7586
+ }, {
7587
+ char: "🍒",
7588
+ name: "Cherries",
7589
+ category: "Food"
7590
+ }, {
7591
+ char: "🍑",
7592
+ name: "Peach",
7593
+ category: "Food"
7594
+ }, {
7595
+ char: "🥭",
7596
+ name: "Mango",
7597
+ category: "Food"
7598
+ }, {
7599
+ char: "🍍",
7600
+ name: "Pineapple",
7601
+ category: "Food"
7602
+ }, {
7603
+ char: "🥥",
7604
+ name: "Coconut",
7605
+ category: "Food"
7606
+ }, {
7607
+ char: "🥝",
7608
+ name: "Kiwi Fruit",
7609
+ category: "Food"
7610
+ }, {
7611
+ char: "🍅",
7612
+ name: "Tomato",
7613
+ category: "Food"
7614
+ }, {
7615
+ char: "🍆",
7616
+ name: "Eggplant",
7617
+ category: "Food"
7618
+ }, {
7619
+ char: "🥑",
7620
+ name: "Avocado",
7621
+ category: "Food"
7622
+ }, {
7623
+ char: "🥦",
7624
+ name: "Broccoli",
7625
+ category: "Food"
7626
+ }, {
7627
+ char: "🥬",
7628
+ name: "Leafy Green",
7629
+ category: "Food"
7630
+ }, {
7631
+ char: "🥒",
7632
+ name: "Cucumber",
7633
+ category: "Food"
7634
+ }, {
7635
+ char: "🌶️",
7636
+ name: "Hot Pepper",
7637
+ category: "Food"
7638
+ }, {
7639
+ char: "🌽",
7640
+ name: "Corn",
7641
+ category: "Food"
7642
+ }, {
7643
+ char: "🥕",
7644
+ name: "Carrot",
7645
+ category: "Food"
7646
+ }, {
7647
+ char: "🧄",
7648
+ name: "Garlic",
7649
+ category: "Food"
7650
+ }, {
7651
+ char: "🧅",
7652
+ name: "Onion",
7653
+ category: "Food"
7654
+ }, {
7655
+ char: "🥔",
7656
+ name: "Potato",
7657
+ category: "Food"
7658
+ }, {
7659
+ char: "🍠",
7660
+ name: "Roasted Sweet Potato",
7661
+ category: "Food"
7662
+ }, {
7663
+ char: "🥐",
7664
+ name: "Croissant",
7665
+ category: "Food"
7666
+ }, {
7667
+ char: "🥯",
7668
+ name: "Bagel",
7669
+ category: "Food"
7670
+ }, {
7671
+ char: "🍞",
7672
+ name: "Bread",
7673
+ category: "Food"
7674
+ }, {
7675
+ char: "🥖",
7676
+ name: "Baguette Bread",
7677
+ category: "Food"
7678
+ }, {
7679
+ char: "🧀",
7680
+ name: "Cheese Wedge",
7681
+ category: "Food"
7682
+ }, {
7683
+ char: "🥚",
7684
+ name: "Egg",
7685
+ category: "Food"
7686
+ }, {
7687
+ char: "🍳",
7688
+ name: "Cooking",
7689
+ category: "Food"
7690
+ }, {
7691
+ char: "🥞",
7692
+ name: "Pancakes",
7693
+ category: "Food"
7694
+ }, {
7695
+ char: "🧇",
7696
+ name: "Waffle",
7697
+ category: "Food"
7698
+ }, {
7699
+ char: "🥓",
7700
+ name: "Bacon",
7701
+ category: "Food"
7702
+ }, {
7703
+ char: "🥩",
7704
+ name: "Cut of Meat",
7705
+ category: "Food"
7706
+ }, {
7707
+ char: "🍗",
7708
+ name: "Poultry Leg",
7709
+ category: "Food"
7710
+ }, {
7711
+ char: "🍖",
7712
+ name: "Meat on Bone",
7713
+ category: "Food"
7714
+ }, {
7715
+ char: "🦴",
7716
+ name: "Bone",
7717
+ category: "Food"
7718
+ }, {
7719
+ char: "🍕",
7720
+ name: "Pizza",
7721
+ category: "Food"
7722
+ },
7723
+ // Travel & Places (45个)
7724
+ {
7725
+ char: "🚗",
7726
+ name: "Car",
7727
+ category: "Travel"
7728
+ }, {
7729
+ char: "🚕",
7730
+ name: "Taxi",
7731
+ category: "Travel"
7732
+ }, {
7733
+ char: "🚙",
7734
+ name: "SUV",
7735
+ category: "Travel"
7736
+ }, {
7737
+ char: "🚌",
7738
+ name: "Bus",
7739
+ category: "Travel"
7740
+ }, {
7741
+ char: "🚎",
7742
+ name: "Trolleybus",
7743
+ category: "Travel"
7744
+ }, {
7745
+ char: "🏎️",
7746
+ name: "Racing Car",
7747
+ category: "Travel"
7748
+ }, {
7749
+ char: "🚓",
7750
+ name: "Police Car",
7751
+ category: "Travel"
7752
+ }, {
7753
+ char: "🚑",
7754
+ name: "Ambulance",
7755
+ category: "Travel"
7756
+ }, {
7757
+ char: "🚒",
7758
+ name: "Fire Engine",
7759
+ category: "Travel"
7760
+ }, {
7761
+ char: "🚐",
7762
+ name: "Minibus",
7763
+ category: "Travel"
7764
+ }, {
7765
+ char: "🚚",
7766
+ name: "Delivery Truck",
7767
+ category: "Travel"
7768
+ }, {
7769
+ char: "🚛",
7770
+ name: "Articulated Lorry",
7771
+ category: "Travel"
7772
+ }, {
7773
+ char: "🚜",
7774
+ name: "Tractor",
7775
+ category: "Travel"
7776
+ }, {
7777
+ char: "🛴",
7778
+ name: "Kick Scooter",
7779
+ category: "Travel"
7780
+ }, {
7781
+ char: "🚲",
7782
+ name: "Bicycle",
7783
+ category: "Travel"
7784
+ }, {
7785
+ char: "🛵",
7786
+ name: "Motor Scooter",
7787
+ category: "Travel"
7788
+ }, {
7789
+ char: "🏍️",
7790
+ name: "Motorcycle",
7791
+ category: "Travel"
7792
+ }, {
7793
+ char: "🚨",
7794
+ name: "Police Car Light",
7795
+ category: "Travel"
7796
+ }, {
7797
+ char: "🚔",
7798
+ name: "Oncoming Police Car",
7799
+ category: "Travel"
7800
+ }, {
7801
+ char: "🚍",
7802
+ name: "Oncoming Bus",
7803
+ category: "Travel"
7804
+ }, {
7805
+ char: "🚘",
7806
+ name: "Oncoming Automobile",
7807
+ category: "Travel"
7808
+ }, {
7809
+ char: "🚖",
7810
+ name: "Oncoming Taxi",
7811
+ category: "Travel"
7812
+ }, {
7813
+ char: "✈️",
7814
+ name: "Airplane",
7815
+ category: "Travel"
7816
+ }, {
7817
+ char: "🛫",
7818
+ name: "Airplane Departure",
7819
+ category: "Travel"
7820
+ }, {
7821
+ char: "🛬",
7822
+ name: "Airplane Arrival",
7823
+ category: "Travel"
7824
+ }, {
7825
+ char: "🚀",
7826
+ name: "Rocket",
7827
+ category: "Travel"
7828
+ }, {
7829
+ char: "🛸",
7830
+ name: "Flying Saucer",
7831
+ category: "Travel"
7832
+ }, {
7833
+ char: "🚁",
7834
+ name: "Helicopter",
7835
+ category: "Travel"
7836
+ }, {
7837
+ char: "🛶",
7838
+ name: "Canoe",
7839
+ category: "Travel"
7840
+ }, {
7841
+ char: "⛵",
7842
+ name: "Sailboat",
7843
+ category: "Travel"
7844
+ }, {
7845
+ char: "🚤",
7846
+ name: "Speedboat",
7847
+ category: "Travel"
7848
+ }, {
7849
+ char: "🛳️",
7850
+ name: "Passenger Ship",
7851
+ category: "Travel"
7852
+ }, {
7853
+ char: "⛴️",
7854
+ name: "Ferry",
7855
+ category: "Travel"
7856
+ }, {
7857
+ char: "🚢",
7858
+ name: "Ship",
7859
+ category: "Travel"
7860
+ }, {
7861
+ char: "🌍",
7862
+ name: "Globe Showing Europe-Africa",
7863
+ category: "Travel"
7864
+ }, {
7865
+ char: "🌎",
7866
+ name: "Globe Showing Americas",
7867
+ category: "Travel"
7868
+ }, {
7869
+ char: "🌏",
7870
+ name: "Globe Showing Asia-Australia",
7871
+ category: "Travel"
7872
+ }, {
7873
+ char: "🗺️",
7874
+ name: "World Map",
7875
+ category: "Travel"
7876
+ }, {
7877
+ char: "🏠",
7878
+ name: "House",
7879
+ category: "Travel"
7880
+ }, {
7881
+ char: "🏡",
7882
+ name: "House with Garden",
7883
+ category: "Travel"
7884
+ }, {
7885
+ char: "🏢",
7886
+ name: "Office Building",
7887
+ category: "Travel"
7888
+ }, {
7889
+ char: "🏣",
7890
+ name: "Japanese Post Office",
7891
+ category: "Travel"
7892
+ }, {
7893
+ char: "🏤",
7894
+ name: "Post Office",
7895
+ category: "Travel"
7896
+ }, {
7897
+ char: "🏥",
7898
+ name: "Hospital",
7899
+ category: "Travel"
7900
+ }, {
7901
+ char: "🏦",
7902
+ name: "Bank",
7903
+ category: "Travel"
7904
+ },
7905
+ // Objects (45个)
7906
+ {
7907
+ char: "⌚",
7908
+ name: "Watch",
7909
+ category: "Objects"
7910
+ }, {
7911
+ char: "📱",
7912
+ name: "Mobile Phone",
7913
+ category: "Objects"
7914
+ }, {
7915
+ char: "📲",
7916
+ name: "Mobile Phone with Arrow",
7917
+ category: "Objects"
7918
+ }, {
7919
+ char: "💻",
7920
+ name: "Laptop",
7921
+ category: "Objects"
7922
+ }, {
7923
+ char: "⌨️",
7924
+ name: "Keyboard",
7925
+ category: "Objects"
7926
+ }, {
7927
+ char: "🖥️",
7928
+ name: "Desktop Computer",
7929
+ category: "Objects"
7930
+ }, {
7931
+ char: "🖨️",
7932
+ name: "Printer",
7933
+ category: "Objects"
7934
+ }, {
7935
+ char: "🖱️",
7936
+ name: "Computer Mouse",
7937
+ category: "Objects"
7938
+ }, {
7939
+ char: "🖲️",
7940
+ name: "Trackball",
7941
+ category: "Objects"
7942
+ }, {
7943
+ char: "🕹️",
7944
+ name: "Joystick",
7945
+ category: "Objects"
7946
+ }, {
7947
+ char: "🗜️",
7948
+ name: "Clamp",
7949
+ category: "Objects"
7950
+ }, {
7951
+ char: "💽",
7952
+ name: "Computer Disk",
7953
+ category: "Objects"
7954
+ }, {
7955
+ char: "💾",
7956
+ name: "Floppy Disk",
7957
+ category: "Objects"
7958
+ }, {
7959
+ char: "💿",
7960
+ name: "Optical Disk",
7961
+ category: "Objects"
7962
+ }, {
7963
+ char: "📀",
7964
+ name: "DVD",
7965
+ category: "Objects"
7966
+ }, {
7967
+ char: "📼",
7968
+ name: "Videocassette",
7969
+ category: "Objects"
7970
+ }, {
7971
+ char: "📷",
7972
+ name: "Camera",
7973
+ category: "Objects"
7974
+ }, {
7975
+ char: "📸",
7976
+ name: "Camera with Flash",
7977
+ category: "Objects"
7978
+ }, {
7979
+ char: "📹",
7980
+ name: "Video Camera",
7981
+ category: "Objects"
7982
+ }, {
7983
+ char: "🎥",
7984
+ name: "Movie Camera",
7985
+ category: "Objects"
7986
+ }, {
7987
+ char: "📽️",
7988
+ name: "Film Projector",
7989
+ category: "Objects"
7990
+ }, {
7991
+ char: "🎞️",
7992
+ name: "Film Frames",
7993
+ category: "Objects"
7994
+ }, {
7995
+ char: "📞",
7996
+ name: "Telephone Receiver",
7997
+ category: "Objects"
7998
+ }, {
7999
+ char: "☎️",
8000
+ name: "Telephone",
8001
+ category: "Objects"
8002
+ }, {
8003
+ char: "📟",
8004
+ name: "Pager",
8005
+ category: "Objects"
8006
+ }, {
8007
+ char: "📠",
8008
+ name: "Fax Machine",
8009
+ category: "Objects"
8010
+ }, {
8011
+ char: "📺",
8012
+ name: "Television",
8013
+ category: "Objects"
8014
+ }, {
8015
+ char: "📻",
8016
+ name: "Radio",
8017
+ category: "Objects"
8018
+ }, {
8019
+ char: "🎙️",
8020
+ name: "Studio Microphone",
8021
+ category: "Objects"
8022
+ }, {
8023
+ char: "🎚️",
8024
+ name: "Level Slider",
8025
+ category: "Objects"
8026
+ }, {
8027
+ char: "🎛️",
8028
+ name: "Control Knobs",
8029
+ category: "Objects"
8030
+ }, {
8031
+ char: "🧭",
8032
+ name: "Compass",
8033
+ category: "Objects"
8034
+ }, {
8035
+ char: "⏱️",
8036
+ name: "Stopwatch",
8037
+ category: "Objects"
8038
+ }, {
8039
+ char: "⏲️",
8040
+ name: "Timer Clock",
8041
+ category: "Objects"
8042
+ }, {
8043
+ char: "⏰",
8044
+ name: "Alarm Clock",
8045
+ category: "Objects"
8046
+ }, {
8047
+ char: "🕰️",
8048
+ name: "Mantelpiece Clock",
8049
+ category: "Objects"
8050
+ }, {
8051
+ char: "⌛",
8052
+ name: "Hourglass Done",
8053
+ category: "Objects"
8054
+ }, {
8055
+ char: "⏳",
8056
+ name: "Hourglass Not Done",
8057
+ category: "Objects"
8058
+ }, {
8059
+ char: "📡",
8060
+ name: "Satellite Antenna",
8061
+ category: "Objects"
8062
+ }, {
8063
+ char: "🔋",
8064
+ name: "Battery",
8065
+ category: "Objects"
8066
+ }, {
8067
+ char: "🔌",
8068
+ name: "Electric Plug",
8069
+ category: "Objects"
8070
+ }, {
8071
+ char: "💡",
8072
+ name: "Light Bulb",
8073
+ category: "Objects"
8074
+ }, {
8075
+ char: "🔦",
8076
+ name: "Flashlight",
8077
+ category: "Objects"
8078
+ }, {
8079
+ char: "🕯️",
8080
+ name: "Candle",
8081
+ category: "Objects"
8082
+ }, {
8083
+ char: "🧯",
8084
+ name: "Fire Extinguisher",
8085
+ category: "Objects"
8086
+ },
8087
+ // Symbols
8088
+ {
8089
+ char: "❤️",
8090
+ name: "Red Heart",
8091
+ category: "Symbols"
8092
+ }, {
8093
+ char: "🧡",
8094
+ name: "Orange Heart",
8095
+ category: "Symbols"
8096
+ }, {
8097
+ char: "💛",
8098
+ name: "Yellow Heart",
8099
+ category: "Symbols"
8100
+ }, {
8101
+ char: "💚",
8102
+ name: "Green Heart",
8103
+ category: "Symbols"
8104
+ }, {
8105
+ char: "💙",
8106
+ name: "Blue Heart",
8107
+ category: "Symbols"
8108
+ }, {
8109
+ char: "💜",
8110
+ name: "Purple Heart",
8111
+ category: "Symbols"
8112
+ }, {
8113
+ char: "🖤",
8114
+ name: "Black Heart",
8115
+ category: "Symbols"
8116
+ }, {
8117
+ char: "🤍",
8118
+ name: "White Heart",
8119
+ category: "Symbols"
8120
+ }, {
8121
+ char: "🤎",
8122
+ name: "Brown Heart",
8123
+ category: "Symbols"
8124
+ }, {
8125
+ char: "💔",
8126
+ name: "Broken Heart",
8127
+ category: "Symbols"
8128
+ }, {
8129
+ char: "❣️",
8130
+ name: "Heart Exclamation",
8131
+ category: "Symbols"
8132
+ }, {
8133
+ char: "💕",
8134
+ name: "Two Hearts",
8135
+ category: "Symbols"
8136
+ }, {
8137
+ char: "💞",
8138
+ name: "Revolving Hearts",
8139
+ category: "Symbols"
8140
+ }, {
8141
+ char: "💓",
8142
+ name: "Beating Heart",
8143
+ category: "Symbols"
8144
+ }, {
8145
+ char: "💗",
8146
+ name: "Growing Heart",
8147
+ category: "Symbols"
8148
+ }, {
8149
+ char: "💖",
8150
+ name: "Sparkling Heart",
8151
+ category: "Symbols"
8152
+ }, {
8153
+ char: "💘",
8154
+ name: "Heart with Arrow",
8155
+ category: "Symbols"
8156
+ }, {
8157
+ char: "💝",
8158
+ name: "Heart with Ribbon",
8159
+ category: "Symbols"
8160
+ }, {
8161
+ char: "💟",
8162
+ name: "Heart Decoration",
8163
+ category: "Symbols"
8164
+ }, {
8165
+ char: "✨",
8166
+ name: "Sparkles",
8167
+ category: "Symbols"
8168
+ }, {
8169
+ char: "⭐",
8170
+ name: "Star",
8171
+ category: "Symbols"
8172
+ }, {
8173
+ char: "🌟",
8174
+ name: "Glowing Star",
8175
+ category: "Symbols"
8176
+ }, {
8177
+ char: "💯",
8178
+ name: "Hundred Points",
8179
+ category: "Symbols"
8180
+ }, {
8181
+ char: "❓",
8182
+ name: "Question Mark",
8183
+ category: "Symbols"
8184
+ }, {
8185
+ char: "❗",
8186
+ name: "Exclamation Mark",
8187
+ category: "Symbols"
8188
+ }, {
8189
+ char: "‼️",
8190
+ name: "Double Exclamation Mark",
8191
+ category: "Symbols"
8192
+ }, {
8193
+ char: "⏰",
8194
+ name: "Alarm Clock",
8195
+ category: "Symbols"
8196
+ }, {
8197
+ char: "♻️",
8198
+ name: "Recycling Symbol",
8199
+ category: "Symbols"
8200
+ }, {
8201
+ char: "✅",
8202
+ name: "Check Mark Button",
8203
+ category: "Symbols"
8204
+ }, {
8205
+ char: "❌",
8206
+ name: "Cross Mark",
8207
+ category: "Symbols"
8208
+ }, {
8209
+ char: "💟",
8210
+ name: "Heart Decoration",
8211
+ category: "Symbols"
8212
+ }, {
8213
+ char: "☮️",
8214
+ name: "Peace Symbol",
8215
+ category: "Symbols"
8216
+ }, {
8217
+ char: "✝️",
8218
+ name: "Latin Cross",
8219
+ category: "Symbols"
8220
+ }, {
8221
+ char: "☪️",
8222
+ name: "Star and Crescent",
8223
+ category: "Symbols"
8224
+ }, {
8225
+ char: "🕉️",
8226
+ name: "Om",
8227
+ category: "Symbols"
8228
+ }, {
8229
+ char: "☸️",
8230
+ name: "Wheel of Dharma",
8231
+ category: "Symbols"
8232
+ }, {
8233
+ char: "✡️",
8234
+ name: "Star of David",
8235
+ category: "Symbols"
8236
+ }, {
8237
+ char: "🔯",
8238
+ name: "Dotted Six-Pointed Star",
8239
+ category: "Symbols"
8240
+ }, {
8241
+ char: "🕎",
8242
+ name: "Menorah",
8243
+ category: "Symbols"
8244
+ }, {
8245
+ char: "☯️",
8246
+ name: "Yin Yang",
8247
+ category: "Symbols"
8248
+ }, {
8249
+ char: "☦️",
8250
+ name: "Orthodox Cross",
8251
+ category: "Symbols"
8252
+ }, {
8253
+ char: "🛐",
8254
+ name: "Place of Worship",
8255
+ category: "Symbols"
8256
+ }, {
8257
+ char: "⛎",
8258
+ name: "Ophiuchus",
8259
+ category: "Symbols"
8260
+ }]
8261
+ };
8262
+ },
8263
+ computed: {
8264
+ // 根据当前选中的分类过滤表情
8265
+ filteredEmojis() {
8266
+ return this.emojis.filter(emoji => emoji.category === this.activeTab);
8267
+ }
8268
+ },
8269
+ methods: {
8270
+ // 插入表情到输入框
8271
+ insertEmoji(emoji) {
8272
+ this.$emit("select", emoji);
6760
8273
  }
6761
8274
  }
6762
8275
  };
6763
8276
  const __cssModules$4 = {};
6764
- var __component__$4 = /* @__PURE__ */normalizeComponent(__vue2_script$4, render$5, staticRenderFns$4, false, __vue2_injectStyles$4, "0444573a", null, null);
8277
+ var __component__$4 = /* @__PURE__ */normalizeComponent(__vue2_script$4, render$4, staticRenderFns$4, false, __vue2_injectStyles$4, "0f9274ec", null, null);
6765
8278
  function __vue2_injectStyles$4(context) {
6766
8279
  for (let o in __cssModules$4) {
6767
8280
  this[o] = __cssModules$4[o];
6768
8281
  }
6769
8282
  }
6770
- const ConsultChatItem = /* @__PURE__ */function () {
8283
+ const UnicodeEmojiPicker = /* @__PURE__ */function () {
6771
8284
  return __component__$4.exports;
6772
8285
  }();
6773
8286
  var render$3 = function () {
@@ -6818,7 +8331,8 @@ var render$3 = function () {
6818
8331
  "submitEmail": _vm.submitEmail,
6819
8332
  "sendLeaveMessage": _vm.sendLeaveMessage,
6820
8333
  "changeTopToast": _vm.changeTopToast,
6821
- "toBottom": _vm.scrollToBottom
8334
+ "toBottom": _vm.scrollToBottom,
8335
+ "showPreviewImage": _vm.showPreviewImage
6822
8336
  }
6823
8337
  });
6824
8338
  }), 1)], 1), _vm.activeItem.status === "3" ? _c("div", {
@@ -6839,12 +8353,28 @@ var render$3 = function () {
6839
8353
  }
6840
8354
  }, [_vm._v("Continue my conversation")])]) : _vm._e(), _vm.activeItem.status !== "3" && !_vm.pauseConversation ? _c("div", {
6841
8355
  staticClass: "consult-47this-dialog-input"
6842
- }, [_c("textarea", {
8356
+ }, [_c("span", {
8357
+ staticClass: "consult-47this-dialog-add",
8358
+ on: {
8359
+ "click": _vm.changeShowActionPop
8360
+ }
8361
+ }), _c("textarea", {
8362
+ directives: [{
8363
+ name: "model",
8364
+ rawName: "v-model",
8365
+ value: _vm.message,
8366
+ expression: "message"
8367
+ }],
6843
8368
  ref: "inputRef",
8369
+ staticClass: "custom-input",
6844
8370
  attrs: {
6845
8371
  "type": "text",
8372
+ "rows": "1",
6846
8373
  "placeholder": "Your Message"
6847
8374
  },
8375
+ domProps: {
8376
+ "value": _vm.message
8377
+ },
6848
8378
  on: {
6849
8379
  "keydown": function ($event) {
6850
8380
  if (!$event.type.indexOf("key") && _vm._k($event.keyCode, "enter", 13, $event.key, "Enter")) return null;
@@ -6852,7 +8382,10 @@ var render$3 = function () {
6852
8382
  $event.preventDefault();
6853
8383
  return _vm.handleEnter.apply(null, arguments);
6854
8384
  },
6855
- "input": _vm.updateMessage,
8385
+ "input": [function ($event) {
8386
+ if ($event.target.composing) return;
8387
+ _vm.message = $event.target.value;
8388
+ }, _vm.updateMessage],
6856
8389
  "compositionstart": function ($event) {
6857
8390
  _vm.isComposing = true;
6858
8391
  },
@@ -6867,20 +8400,60 @@ var render$3 = function () {
6867
8400
  on: {
6868
8401
  "click": _vm.sendMessage
6869
8402
  }
6870
- })])]) : _vm._e(), _vm.topToast ? _c("div", {
8403
+ })]), _c("div", {
8404
+ directives: [{
8405
+ name: "show",
8406
+ rawName: "v-show",
8407
+ value: _vm.showActionPop,
8408
+ expression: "showActionPop"
8409
+ }],
8410
+ staticClass: "consult-47this-dialog-action-pop"
8411
+ }, [_c("div", {
8412
+ staticClass: "consult-47this-dialog-action-pop-item"
8413
+ }, [_vm._v(" Upload Picture "), _c("input", {
8414
+ attrs: {
8415
+ "type": "file",
8416
+ "accept": "image/*"
8417
+ },
8418
+ on: {
8419
+ "change": _vm.handleUploadPicture
8420
+ }
8421
+ })]), _c("div", {
8422
+ staticClass: "consult-47this-dialog-action-pop-item",
8423
+ on: {
8424
+ "click": _vm.sendEmoji
8425
+ }
8426
+ }, [_vm._v(" Add Emoji ")])]), _vm.showEmojiPicker ? _c("UnicodeEmojiPicker", {
8427
+ staticClass: "consult-47this-dialog-emoji-picker",
8428
+ on: {
8429
+ "select": _vm.insertEmoji
8430
+ }
8431
+ }) : _vm._e()], 1) : _vm._e(), _vm.topToast ? _c("div", {
6871
8432
  staticClass: "consult-47this-top-toast"
6872
8433
  }, [_c("div", {
6873
8434
  staticClass: "consult-47this-top-toast-content"
6874
8435
  }, [_vm._v(" " + _vm._s(_vm.topToast)), _c("span", {
6875
8436
  staticClass: "dots"
6876
- })])]) : _vm._e()]);
8437
+ })])]) : _vm._e(), _vm.showToastLoading ? _c("div", {
8438
+ staticClass: "consult-toast-loading"
8439
+ }, [_vm._m(0)]) : _vm._e()]);
6877
8440
  };
6878
- var staticRenderFns$3 = [];
8441
+ var staticRenderFns$3 = [function () {
8442
+ var _vm = this;
8443
+ var _h = _vm.$createElement;
8444
+ var _c = _vm._self._c || _h;
8445
+ return _c("div", {
8446
+ staticClass: "consult-toast-loading-content"
8447
+ }, [_c("div", {
8448
+ staticClass: "consult-toast-loading-text"
8449
+ }, [_vm._v("Loading...")])]);
8450
+ }];
6879
8451
  const ConsultDialog_vue_vue_type_style_index_0_scoped_true_lang = "";
6880
8452
  const __vue2_script$3 = {
6881
8453
  name: "ConsultDialog",
6882
8454
  components: {
6883
- ConsultChatItem
8455
+ ConsultChatItem,
8456
+ UnicodeEmojiPicker
6884
8457
  },
6885
8458
  props: {
6886
8459
  initData: {
@@ -6912,7 +8485,11 @@ const __vue2_script$3 = {
6912
8485
  isInit: true,
6913
8486
  isComposing: false,
6914
8487
  pauseConversation: false,
6915
- topToast: ""
8488
+ topToast: "",
8489
+ showActionPop: false,
8490
+ textareaHeight: 36,
8491
+ showEmojiPicker: false,
8492
+ showToastLoading: false
6916
8493
  };
6917
8494
  },
6918
8495
  watch: {
@@ -6943,6 +8520,7 @@ const __vue2_script$3 = {
6943
8520
  top: this.$refs.chatDialogRef.scrollHeight,
6944
8521
  behavior: "auto"
6945
8522
  });
8523
+ this.adjustTextareaHeight();
6946
8524
  },
6947
8525
  methods: {
6948
8526
  scrollToBottom() {
@@ -6961,12 +8539,23 @@ const __vue2_script$3 = {
6961
8539
  if (!this.initData.socketUrl || message.trim() === "") {
6962
8540
  return;
6963
8541
  }
6964
- this.$emit("send", message);
8542
+ this.$emit("send", 1, message);
6965
8543
  this.$refs.inputRef.value = "";
8544
+ this.message = "";
8545
+ this.adjustTextareaHeight();
6966
8546
  },
6967
8547
  updateMessage(event) {
6968
8548
  this.message = event.target.value;
6969
8549
  this.$emit("updateMessage");
8550
+ this.adjustTextareaHeight();
8551
+ },
8552
+ adjustTextareaHeight() {
8553
+ const textarea = this.$refs.inputRef;
8554
+ if (!textarea) return;
8555
+ textarea.style.height = "auto";
8556
+ const scrollHeight = textarea.scrollHeight;
8557
+ this.textareaHeight = Math.min(scrollHeight, 200);
8558
+ textarea.style.height = `${this.textareaHeight}px`;
6970
8559
  },
6971
8560
  loadMore() {
6972
8561
  if (this.isInit || this.loading || this.noMore) {
@@ -7026,6 +8615,76 @@ const __vue2_script$3 = {
7026
8615
  },
7027
8616
  changeTopToast(message) {
7028
8617
  this.topToast = message;
8618
+ },
8619
+ changeShowActionPop() {
8620
+ if (this.showEmojiPicker) {
8621
+ this.showEmojiPicker = false;
8622
+ this.showActionPop = true;
8623
+ return;
8624
+ }
8625
+ this.showActionPop = !this.showActionPop;
8626
+ },
8627
+ uploadPicture(data) {
8628
+ uploadChatImage(data, this.initData.socketUrl).then(res => {
8629
+ if (res.data.length > 0) {
8630
+ this.$emit("send", 2, res.data[0]);
8631
+ this.showActionPop = false;
8632
+ }
8633
+ }).catch(error => {
8634
+ if (this.$sweetalert) {
8635
+ this.$sweetalert.insert({
8636
+ title: "Something went wrong",
8637
+ text: error.response.data,
8638
+ type: "error",
8639
+ confirmButtonText: "OK"
8640
+ });
8641
+ } else {
8642
+ alert(error.response.data);
8643
+ }
8644
+ }).finally(() => {
8645
+ this.showToastLoading = false;
8646
+ });
8647
+ },
8648
+ async handleUploadPicture(event) {
8649
+ const file = event.target.files[0];
8650
+ if (file && file.size > 5 * 1024 * 1024) {
8651
+ if (this.$sweetalert) {
8652
+ this.$sweetalert.insert({
8653
+ title: "Something went wrong",
8654
+ text: "picture size is too large, max size is 5MB",
8655
+ type: "error",
8656
+ confirmButtonText: "OK"
8657
+ });
8658
+ } else {
8659
+ alert("Picture size is too large, max size is 5MB");
8660
+ }
8661
+ return;
8662
+ }
8663
+ const data = new FormData();
8664
+ if (file) {
8665
+ let compressFile = null;
8666
+ await compressImageGetFile({
8667
+ file
8668
+ }).then(res => {
8669
+ compressFile = res;
8670
+ }).catch(error => {
8671
+ console.error(error);
8672
+ });
8673
+ data.append("files", compressFile);
8674
+ this.uploadPicture(data);
8675
+ this.showToastLoading = true;
8676
+ }
8677
+ },
8678
+ sendEmoji() {
8679
+ this.showEmojiPicker = true;
8680
+ this.showActionPop = false;
8681
+ },
8682
+ insertEmoji(emoji) {
8683
+ this.message += emoji;
8684
+ this.showEmojiPicker = false;
8685
+ },
8686
+ showPreviewImage(url) {
8687
+ this.$emit("showPreviewImage", url);
7029
8688
  }
7030
8689
  },
7031
8690
  beforeDestroy() {
@@ -7033,7 +8692,7 @@ const __vue2_script$3 = {
7033
8692
  }
7034
8693
  };
7035
8694
  const __cssModules$3 = {};
7036
- var __component__$3 = /* @__PURE__ */normalizeComponent(__vue2_script$3, render$3, staticRenderFns$3, false, __vue2_injectStyles$3, "07011d53", null, null);
8695
+ var __component__$3 = /* @__PURE__ */normalizeComponent(__vue2_script$3, render$3, staticRenderFns$3, false, __vue2_injectStyles$3, "5f07850f", null, null);
7037
8696
  function __vue2_injectStyles$3(context) {
7038
8697
  for (let o in __cssModules$3) {
7039
8698
  this[o] = __cssModules$3[o];
@@ -7088,9 +8747,20 @@ var render$2 = function () {
7088
8747
  "sendLeaveMessage": _vm.sendLeaveMessage,
7089
8748
  "restart": _vm.restart,
7090
8749
  "updateMessage": _vm.updateMessage,
8750
+ "showPreviewImage": _vm.showPreviewImage,
7091
8751
  "trackEvent": _vm.trackEvent
7092
8752
  }
7093
- })], 1);
8753
+ }), _vm.showPreview ? _c("div", {
8754
+ staticClass: "consult-preview-image",
8755
+ on: {
8756
+ "click": _vm.hidePreview
8757
+ }
8758
+ }, [_c("img", {
8759
+ attrs: {
8760
+ "src": _vm.previewImage,
8761
+ "alt": ""
8762
+ }
8763
+ })]) : _vm._e()], 1);
7094
8764
  };
7095
8765
  var staticRenderFns$2 = [];
7096
8766
  const ConsultContainer_vue_vue_type_style_index_0_scoped_true_lang = "";
@@ -7131,7 +8801,9 @@ const __vue2_script$2 = {
7131
8801
  roomId: ""
7132
8802
  },
7133
8803
  salesUserStatus: "",
7134
- buttonLock: false
8804
+ buttonLock: false,
8805
+ showPreview: false,
8806
+ previewImage: ""
7135
8807
  };
7136
8808
  },
7137
8809
  computed: {
@@ -7358,8 +9030,8 @@ const __vue2_script$2 = {
7358
9030
  if (res.data.length > 0) this.makeChatList(query, res.data);
7359
9031
  } catch {}
7360
9032
  },
7361
- sendMessage(roomId, message) {
7362
- this.socket.emit("sendMessage", roomId, message);
9033
+ sendMessage(roomId, type, message) {
9034
+ this.socket.emit("sendMessage", roomId, type, message);
7363
9035
  },
7364
9036
  logOut() {
7365
9037
  this.socket.emit("logOut");
@@ -7405,14 +9077,14 @@ const __vue2_script$2 = {
7405
9077
  source: source || ""
7406
9078
  });
7407
9079
  },
7408
- handleSend(message) {
7409
- this.sendMessage(this.onRoomId, message);
9080
+ handleSend(type, message) {
9081
+ this.sendMessage(this.onRoomId, type, message);
7410
9082
  this.pushChat({
7411
9083
  userId: this.userId,
7412
9084
  message,
7413
9085
  userName: this.initData.user.name,
7414
9086
  updateTime: getCurrentTime(),
7415
- type: 1
9087
+ type: type || 1
7416
9088
  });
7417
9089
  this.scrollToBottom();
7418
9090
  this.trackEvent("Chat message sent", {
@@ -7526,11 +9198,19 @@ const __vue2_script$2 = {
7526
9198
  },
7527
9199
  trackEvent() {
7528
9200
  this.$emit("trackEvent", ...arguments);
9201
+ },
9202
+ showPreviewImage(url) {
9203
+ this.previewImage = url;
9204
+ this.showPreview = true;
9205
+ },
9206
+ hidePreview() {
9207
+ this.showPreview = false;
9208
+ this.previewImage = "";
7529
9209
  }
7530
9210
  }
7531
9211
  };
7532
9212
  const __cssModules$2 = {};
7533
- var __component__$2 = /* @__PURE__ */normalizeComponent(__vue2_script$2, render$2, staticRenderFns$2, false, __vue2_injectStyles$2, "23c2206c", null, null);
9213
+ var __component__$2 = /* @__PURE__ */normalizeComponent(__vue2_script$2, render$2, staticRenderFns$2, false, __vue2_injectStyles$2, "16d04f11", null, null);
7534
9214
  function __vue2_injectStyles$2(context) {
7535
9215
  for (let o in __cssModules$2) {
7536
9216
  this[o] = __cssModules$2[o];
@@ -7933,7 +9613,7 @@ const __vue2_script = {
7933
9613
  }, 200);
7934
9614
  }
7935
9615
  },
7936
- // Chat opened / Start conversion / Chat message sent / Message from the user / Message from sales department / Message from AI
9616
+ // Chat opened / Start conversation / Chat message sent / Message from the user / Message from sales department / Message from AI
7937
9617
  trackEvent(eventName, eventData = {}) {
7938
9618
  const event = {
7939
9619
  event_label: eventName,