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.
- package/chat-customer-47net.es.js +1804 -124
- package/chat-customer-47net.umd.js +4206 -2574
- package/package.json +1 -1
- package/style.css +1 -1
|
@@ -17,7 +17,7 @@ var __publicField = (obj, key, value) => {
|
|
|
17
17
|
return value;
|
|
18
18
|
};
|
|
19
19
|
var _a;
|
|
20
|
-
var render$
|
|
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$
|
|
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$
|
|
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$
|
|
238
|
-
var __component__$
|
|
239
|
-
function __vue2_injectStyles$
|
|
240
|
-
for (let o in __cssModules$
|
|
241
|
-
this[o] = __cssModules$
|
|
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__$
|
|
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.
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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
|
|
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
|
|
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$
|
|
1115
|
-
var __component__$
|
|
1116
|
-
function __vue2_injectStyles$
|
|
1117
|
-
for (let o in __cssModules$
|
|
1118
|
-
this[o] = __cssModules$
|
|
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__$
|
|
1472
|
+
return __component__$8.exports;
|
|
1123
1473
|
}();
|
|
1124
|
-
var render$
|
|
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$
|
|
1536
|
+
var staticRenderFns$7 = [];
|
|
1187
1537
|
const ConsultSign_vue_vue_type_style_index_0_scoped_true_lang = "";
|
|
1188
|
-
const __vue2_script$
|
|
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$
|
|
1240
|
-
var __component__$
|
|
1241
|
-
function __vue2_injectStyles$
|
|
1242
|
-
for (let o in __cssModules$
|
|
1243
|
-
this[o] = __cssModules$
|
|
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__$
|
|
1597
|
+
return __component__$7.exports;
|
|
1248
1598
|
}();
|
|
1249
|
-
var render$
|
|
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$
|
|
1653
|
+
var staticRenderFns$6 = [];
|
|
1304
1654
|
const ConsultConversations_vue_vue_type_style_index_0_scoped_true_lang = "";
|
|
1305
|
-
const __vue2_script$
|
|
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$
|
|
1349
|
-
var __component__$
|
|
1350
|
-
function __vue2_injectStyles$
|
|
1351
|
-
for (let o in __cssModules$
|
|
1352
|
-
this[o] = __cssModules$
|
|
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__$
|
|
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
|
-
|
|
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$
|
|
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$
|
|
6709
|
+
const render$5 = new marked.Renderer();
|
|
6316
6710
|
marked.setOptions({
|
|
6317
|
-
renderer: render$
|
|
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$
|
|
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.
|
|
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 => " ".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 => " ".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
|
-
|
|
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$
|
|
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
|
|
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("
|
|
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":
|
|
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
|
-
})])
|
|
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, "
|
|
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
|
-
})
|
|
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, "
|
|
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
|
|
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,
|