ts-glitter 18.2.6 → 18.2.8

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.
Files changed (57) hide show
  1. package/lowcode/Entry.js +30 -1
  2. package/lowcode/Entry.ts +36 -1
  3. package/lowcode/cms-plugin/customer-message-user.js +503 -8
  4. package/lowcode/cms-plugin/customer-message-user.ts +549 -12
  5. package/lowcode/cms-plugin/shopping-finance-setting.js +4 -4
  6. package/lowcode/cms-plugin/shopping-finance-setting.ts +4 -4
  7. package/lowcode/cms-plugin/shopping-information.js +16 -0
  8. package/lowcode/cms-plugin/shopping-information.ts +16 -0
  9. package/lowcode/cms-plugin/shopping-order-manager.js +138 -77
  10. package/lowcode/cms-plugin/shopping-order-manager.ts +177 -102
  11. package/lowcode/glitter-base/global/language.js +6 -0
  12. package/lowcode/glitter-base/global/language.ts +6 -0
  13. package/lowcode/glitterBundle/GVController.js +2 -2
  14. package/lowcode/glitterBundle/GVController.ts +2 -2
  15. package/lowcode/glitterBundle/dialog/dialog_inner.js +5 -2
  16. package/lowcode/glitterBundle/dialog/dialog_inner.ts +5 -2
  17. package/lowcode/glitterBundle/module/Animation.js +59 -0
  18. package/lowcode/glitterBundle/module/Animation.ts +62 -0
  19. package/lowcode/glitterBundle/module/PageManager.js +3 -3
  20. package/lowcode/glitterBundle/module/PageManager.ts +1 -1
  21. package/lowcode/index.html +1 -0
  22. package/lowcode/public-components/checkout/index.js +77 -117
  23. package/lowcode/public-components/checkout/index.ts +174 -221
  24. package/lowcode/public-components/footer/footer-01.js +3 -0
  25. package/lowcode/public-components/footer/footer-01.ts +3 -0
  26. package/lowcode/public-components/footer/footer-02.js +3 -0
  27. package/lowcode/public-components/footer/footer-02.ts +3 -0
  28. package/lowcode/public-components/footer/footer-03.js +3 -0
  29. package/lowcode/public-components/footer/footer-03.ts +3 -0
  30. package/lowcode/public-components/product/pd-class.js +868 -355
  31. package/lowcode/public-components/product/pd-class.ts +1005 -438
  32. package/lowcode/public-components/product/product-detail.js +1 -1
  33. package/lowcode/public-components/product/product-detail.ts +3 -1
  34. package/package.json +1 -1
  35. package/src/api-public/controllers/article.js.map +1 -1
  36. package/src/api-public/controllers/delivery.js.map +1 -1
  37. package/src/api-public/controllers/delivery.ts +2 -0
  38. package/src/api-public/controllers/shop.js +3 -2
  39. package/src/api-public/controllers/shop.js.map +1 -1
  40. package/src/api-public/controllers/shop.ts +4 -3
  41. package/src/api-public/controllers/user.js.map +1 -1
  42. package/src/api-public/services/ai-robot.js.map +1 -1
  43. package/src/api-public/services/fb-api.js.map +1 -1
  44. package/src/api-public/services/financial-service.d.ts +4 -0
  45. package/src/api-public/services/financial-service.js +48 -23
  46. package/src/api-public/services/financial-service.js.map +1 -1
  47. package/src/api-public/services/financial-service.ts +57 -26
  48. package/src/api-public/services/public-table-check.js.map +1 -1
  49. package/src/api-public/services/shopping.js +7 -0
  50. package/src/api-public/services/shopping.js.map +1 -1
  51. package/src/api-public/services/shopping.ts +9 -0
  52. package/src/api-public/services/user.d.ts +2 -2
  53. package/src/api-public/services/user.js +8 -2
  54. package/src/api-public/services/user.js.map +1 -1
  55. package/src/api-public/services/user.ts +8 -2
  56. package/src/index.js +3 -3
  57. package/src/index.js.map +1 -1
@@ -11,6 +11,7 @@ import { ApiUser } from "../glitter-base/route/user.js";
11
11
  import { Chat } from "../glitter-base/route/chat.js";
12
12
  import { imageLibrary } from "../modules/image-library.js";
13
13
  import { ShareDialog } from "../glitterBundle/dialog/ShareDialog.js";
14
+ import { Animation } from "../glitterBundle/module/Animation.js";
14
15
  export class CustomerMessageUser {
15
16
  static showCustomerMessage(cf) {
16
17
  const gvc = cf.gvc;
@@ -21,6 +22,9 @@ export class CustomerMessageUser {
21
22
  let vm = {
22
23
  viewType: cf.viewType || 'robot',
23
24
  };
25
+ if (gvc.glitter.getUrlParameter('page').startsWith('products/') && document.body.clientWidth < 800) {
26
+ return ``;
27
+ }
24
28
  return gvc.bindView(() => {
25
29
  const id = gvc.glitter.getUUID();
26
30
  return {
@@ -753,6 +757,495 @@ export class CustomerMessageUser {
753
757
  };
754
758
  });
755
759
  }
760
+ static mobileChat(cf) {
761
+ const gvc = cf.gvc;
762
+ const css = String.raw;
763
+ const viewId = gvc.glitter.getUUID();
764
+ let chatRoomInf = {};
765
+ document.body.style.setProperty('overflow-y', 'hidden', 'important');
766
+ gvc.glitter.innerDialog((gvc) => {
767
+ return gvc.bindView(() => {
768
+ const id = gvc.glitter.getUUID();
769
+ return {
770
+ bind: id,
771
+ view: () => {
772
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
773
+ const config = (yield ApiUser.getPublicConfig(`message_setting`, 'manager')).response.value || {
774
+ color: '#FE5541',
775
+ head: 'https://liondesign-prd.s3.amazonaws.com/file/252530754/1695093945424-Frame 62 (1).png',
776
+ name: '萊恩設計',
777
+ };
778
+ CustomerMessageUser.config = config;
779
+ gvc.addStyle(css `
780
+ .btn-white-primary {
781
+ border: 2px solid ${CustomerMessageUser.config.color};
782
+ justify-content: space-between;
783
+ align-items: center;
784
+ cursor: pointer;
785
+ color: ${CustomerMessageUser.config.color};
786
+ gap: 10px;
787
+ }
788
+
789
+ .btn-white-primary:hover {
790
+ background: ${CustomerMessageUser.config.color};
791
+ color: white !important;
792
+ }
793
+ `);
794
+ resolve([
795
+ gvc.bindView(() => {
796
+ const id = gvc.glitter.getUUID();
797
+ return {
798
+ bind: id,
799
+ view: () => {
800
+ if (cf.hideBar) {
801
+ return ``;
802
+ }
803
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
804
+ const chatRoom = (yield Chat.getChatRoom({
805
+ page: 0,
806
+ limit: 1000,
807
+ user_id: cf.user_id,
808
+ chat_id: cf.chat.chat_id,
809
+ })).response.data[0];
810
+ if (chatRoom.who === 'manager') {
811
+ chatRoom.user_data = CustomerMessageUser.config;
812
+ }
813
+ if (chatRoom.who.startsWith('line')) {
814
+ chatRoom.user_data.head = chatRoom.info.line.head;
815
+ chatRoom.user_data.name = chatRoom.info.line.name;
816
+ chatRoomInf = chatRoom;
817
+ gvc.notifyDataChange(viewId);
818
+ }
819
+ if (chatRoom.who.startsWith('fb')) {
820
+ chatRoom.user_data.head = chatRoom.info.fb.head;
821
+ chatRoom.user_data.name = chatRoom.info.fb.name;
822
+ chatRoomInf = chatRoom;
823
+ gvc.notifyDataChange(viewId);
824
+ }
825
+ resolve(`<div class="navbar d-flex align-items-center justify-content-between w-100 p-3 ${CustomerMessageUser.config.hideBar ? `d-none` : ``}" style="background: ${CustomerMessageUser.config.color};">
826
+ <div class="d-flex align-items-center pe-3 w-100" style="gap:10px;display: flex;align-items: center;">
827
+ <i class="fa-solid fa-chevron-left fs-6" style="color:white;cursor: pointer;" onclick="${gvc.event(() => {
828
+ document.body.style.removeProperty('overflow-y');
829
+ gvc.closeDialog();
830
+ })}"></i>
831
+ <img src="${chatRoom.type === 'user'
832
+ ? (chatRoom.user_data && chatRoom.user_data.head) || chatRoom.user_data.head_img || 'https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1704269678588-43.png'
833
+ : `https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1704269678588-43.png`}" class="rounded-circle border" style="background: white;border-radius: 50%;width: 40px;height: 40px;" width="40" alt="Albert Flores">
834
+ <h6 class="mb-0 px-1 text-white">${chatRoom.type === 'user' ? (chatRoom.user_data && chatRoom.user_data.name) || '訪客' : `群組`}</h6>
835
+ <div class="flex-fill" style="flex: 1;"></div>
836
+ <i class="fa-regular fa-circle-xmark text-white fs-3 " onclick="${gvc.event(() => {
837
+ document.body.style.removeProperty('overflow-y');
838
+ gvc.closeDialog();
839
+ })}"></i>
840
+ </div>
841
+ </div>`);
842
+ }));
843
+ },
844
+ };
845
+ }),
846
+ gvc.bindView(() => {
847
+ const messageID = gvc.glitter.getUUID();
848
+ const vm = {
849
+ data: [],
850
+ loading: true,
851
+ scrollToBtn: false,
852
+ lastScroll: -1,
853
+ message: '',
854
+ prefixScroll: 0,
855
+ last_read: {},
856
+ close: false,
857
+ };
858
+ Chat.getMessage({
859
+ page: 0,
860
+ limit: 50,
861
+ chat_id: cf.chat.chat_id,
862
+ user_id: cf.user_id,
863
+ }).then((res) => {
864
+ vm.data = res.response.data.reverse();
865
+ vm.last_read = res.response.lastRead;
866
+ vm.loading = false;
867
+ gvc.notifyDataChange(viewId);
868
+ });
869
+ const url = new URL(window.glitterBackend);
870
+ let socket = undefined;
871
+ function connect() {
872
+ if (gvc.glitter.share.close_socket) {
873
+ gvc.glitter.share.close_socket();
874
+ }
875
+ vm.close = false;
876
+ socket = location.href.includes('https://') ? new WebSocket(`wss://${url.hostname}/websocket`) : new WebSocket(`ws://${url.hostname}:9003`);
877
+ gvc.glitter.share.close_socket = () => {
878
+ vm.close = true;
879
+ socket.close();
880
+ gvc.glitter.share.close_socket = undefined;
881
+ };
882
+ gvc.glitter.share.socket = socket;
883
+ socket.addEventListener('open', function (event) {
884
+ console.log('Connected to server');
885
+ socket.send(JSON.stringify({
886
+ type: 'message',
887
+ chatID: cf.chat.chat_id,
888
+ user_id: cf.user_id,
889
+ app_name: window.appName
890
+ }));
891
+ });
892
+ let interVal = 0;
893
+ socket.addEventListener('message', function (event) {
894
+ const data = JSON.parse(event.data);
895
+ console.log(`message_in`, data.data);
896
+ if (data.type === 'update_read_count') {
897
+ vm.last_read = data.data;
898
+ }
899
+ else {
900
+ vm.data.push(data);
901
+ const element = document.querySelector('.chatContainer');
902
+ const st = element.scrollTop;
903
+ const ofs = element.offsetHeight;
904
+ const sh = element.scrollHeight;
905
+ for (const dd of document.querySelectorAll('.time-mute')) {
906
+ dd.remove();
907
+ }
908
+ document.querySelector(`#message-lines`).innerHTML += CustomerMessageUser.message_line(data, vm.data.length - 1, gvc, vm, cf, chatRoomInf);
909
+ if (st + ofs >= sh - 50) {
910
+ element.scrollTop = element.scrollHeight;
911
+ let clock = gvc.glitter.ut.clock();
912
+ const interval = setInterval(() => {
913
+ if (clock.stop() > 1000) {
914
+ clearInterval(interval);
915
+ }
916
+ element.scrollTop = element.scrollHeight;
917
+ }, 50);
918
+ }
919
+ }
920
+ console.log('Message from server:', event.data);
921
+ });
922
+ socket.addEventListener('close', function (event) {
923
+ console.log('Disconnected from server');
924
+ if (!vm.close) {
925
+ console.log('Reconnected from server');
926
+ connect();
927
+ }
928
+ });
929
+ }
930
+ connect();
931
+ const textAreaId = gvc.glitter.getUUID();
932
+ const html = String.raw;
933
+ return {
934
+ bind: viewId,
935
+ view: () => {
936
+ let imageArray = [];
937
+ if (vm.loading) {
938
+ return String.raw `<div class="d-flex align-items-center justify-content-center w-100 flex-column pt-3">
939
+ <div class="spinner-border" role="status">
940
+ <span class="sr-only"></span>
941
+ </div>
942
+ <span class="mt-2">載入中...</span>
943
+ </div>`;
944
+ }
945
+ return html ` ${gvc.bindView(() => {
946
+ return {
947
+ bind: messageID,
948
+ view: () => {
949
+ try {
950
+ return `
951
+ <div class="my-auto flex-fill"></div>
952
+ <div class="w-100" id="message-lines">
953
+ ${vm.data
954
+ .map((dd, index) => {
955
+ return CustomerMessageUser.message_line(dd, index, gvc, vm, cf, chatRoomInf);
956
+ })
957
+ .join('')}
958
+ </div>
959
+ ${vm.data.length === 0
960
+ ? `
961
+ <div class="w-100 text-center no_message"><div class="badge bg-secondary">尚未展開對話,於下方輸入訊息並傳送。</div></div>
962
+ `
963
+ : ``}`;
964
+ }
965
+ catch (e) {
966
+ console.log(e);
967
+ return `${e}`;
968
+ }
969
+ },
970
+ divCreate: {
971
+ class: `chatContainer p-3 d-flex flex-column `,
972
+ style: `overflow-y: auto;height: calc(100% - 150px);background: white;padding-bottom:${cf.hideBar ? `80` : `0`}px !important;`,
973
+ },
974
+ onCreate: () => {
975
+ vm.close = false;
976
+ let targetElement = document.querySelector('.chatContainer');
977
+ if (vm.lastScroll === -1) {
978
+ const clock = gvc.glitter.ut.clock();
979
+ const interval = setInterval(() => {
980
+ if (clock.stop() > 1000) {
981
+ clearInterval(interval);
982
+ }
983
+ document.querySelector('.chatContainer').scrollTop = document.querySelector('.chatContainer').scrollHeight;
984
+ }, 50);
985
+ }
986
+ else {
987
+ if (vm.prefixScroll) {
988
+ vm.lastScroll = targetElement.scrollHeight - vm.prefixScroll + vm.lastScroll;
989
+ vm.prefixScroll = 0;
990
+ }
991
+ document.querySelector('.chatContainer').scrollTop = vm.lastScroll;
992
+ }
993
+ targetElement.addEventListener('scroll', () => {
994
+ vm.lastScroll = targetElement.scrollTop;
995
+ if (targetElement.scrollTop === 0) {
996
+ if (vm.loading) {
997
+ return;
998
+ }
999
+ vm.loading = true;
1000
+ Chat.getMessage({
1001
+ page: 0,
1002
+ limit: 50,
1003
+ chat_id: cf.chat.chat_id,
1004
+ olderID: vm.data[0].id,
1005
+ user_id: cf.user_id,
1006
+ }).then((res) => {
1007
+ vm.loading = false;
1008
+ vm.prefixScroll = targetElement.scrollHeight;
1009
+ vm.data = res.response.data.reverse().concat(vm.data);
1010
+ gvc.notifyDataChange(viewId);
1011
+ });
1012
+ }
1013
+ });
1014
+ },
1015
+ };
1016
+ })}
1017
+ ${gvc.bindView({
1018
+ bind: "inputRow",
1019
+ view: () => {
1020
+ return html `
1021
+ ${gvc.bindView({
1022
+ bind: 'imageBox',
1023
+ view: () => {
1024
+ if (imageArray.length == 0) {
1025
+ return ``;
1026
+ }
1027
+ else {
1028
+ return html `
1029
+ <div class="d-flex align-items-center w-100"
1030
+ style="overflow-x: scroll;gap: 5px;padding:10px 0;margin-bottom:10px;">
1031
+ ${(() => {
1032
+ return imageArray.map((url, index) => {
1033
+ return html `
1034
+ <div class=""
1035
+ style="position: relative;flex-shrink: 0;width: 25%;aspect-ratio: 1 / 1;background:50%/cover url('${url}')">
1036
+ <i class="fa-sharp fa-regular fa-circle-xmark bg-white"
1037
+ style="position: absolute;right: -6px;top: -6px;cursor:pointer;font-size: 20px" onclick="${gvc.event(() => {
1038
+ imageArray.splice(index, 1);
1039
+ gvc.notifyDataChange('imageBox');
1040
+ })}"></i>
1041
+ </div>
1042
+ `;
1043
+ });
1044
+ })()}
1045
+
1046
+ </div>
1047
+ `;
1048
+ }
1049
+ }, divCreate: {
1050
+ class: `d-flex w-100`,
1051
+ style: ``
1052
+ }
1053
+ })}
1054
+ <div class="d-flex w-100">
1055
+ <div class="d-flex align-items-center">
1056
+ <button
1057
+ type="button"
1058
+ class="btn btn-icon d-sm-inline-flex text-white"
1059
+ style="height: 36px;"
1060
+ onclick="${gvc.event(() => {
1061
+ const queryParams = new URLSearchParams(window.location.search);
1062
+ if (queryParams.get('function') != "backend-manger") {
1063
+ gvc.glitter.ut.chooseMediaCallback({
1064
+ single: true,
1065
+ accept: 'json,image/*',
1066
+ callback(data) {
1067
+ const saasConfig = window.saasConfig;
1068
+ const dialog = new ShareDialog(gvc.glitter);
1069
+ dialog.dataLoading({ visible: true });
1070
+ const file = data[0].file;
1071
+ saasConfig.api.uploadFile(file.name).then((data) => {
1072
+ dialog.dataLoading({ visible: false });
1073
+ const data1 = data.response;
1074
+ dialog.dataLoading({ visible: true });
1075
+ const objP = {
1076
+ url: data1.url,
1077
+ type: 'put',
1078
+ data: file,
1079
+ headers: {
1080
+ "Content-Type": data1.type
1081
+ },
1082
+ processData: false,
1083
+ crossDomain: true,
1084
+ success: () => {
1085
+ dialog.dataLoading({ visible: false });
1086
+ imageArray.push(data1.fullUrl);
1087
+ gvc.notifyDataChange(`inputRow`);
1088
+ },
1089
+ error: () => {
1090
+ dialog.dataLoading({ visible: false });
1091
+ dialog.errorMessage({ text: '上傳失敗' });
1092
+ },
1093
+ };
1094
+ if (file.type.indexOf('svg') !== -1) {
1095
+ objP["headers"] = {
1096
+ "Content-Type": file.type
1097
+ };
1098
+ }
1099
+ $.ajax(objP);
1100
+ });
1101
+ },
1102
+ });
1103
+ }
1104
+ else {
1105
+ imageLibrary.selectImageLibrary(gvc, (urlArray) => {
1106
+ imageArray.push(...urlArray.map((data) => {
1107
+ return data.data;
1108
+ }));
1109
+ gvc.notifyDataChange(`inputRow`);
1110
+ }, `<div class="d-flex flex-column" style="border-radius: 10px 10px 0px 0px;background: #F2F2F2;">圖片庫</div>`, { mul: true });
1111
+ }
1112
+ })}"
1113
+ >
1114
+ <i class="fa-sharp fa-solid fa-image"
1115
+ style="font-size: 23px;color: #393939;"></i>
1116
+ </button>
1117
+ </div>
1118
+
1119
+ <div class="position-relative w-100 me-2 ms-1 d-flex flex-column"
1120
+ style="">
1121
+ ${gvc.bindView(() => {
1122
+ return {
1123
+ bind: textAreaId,
1124
+ view: () => {
1125
+ var _a;
1126
+ return (_a = vm.message) !== null && _a !== void 0 ? _a : '';
1127
+ },
1128
+ divCreate: {
1129
+ elem: `textArea`,
1130
+ style: `max-height:100px;white-space: pre-wrap; word-wrap: break-word;height:40px;min-height:auto;height:45px;`,
1131
+ class: `form-control`,
1132
+ option: [
1133
+ { key: 'placeholder', value: '輸入訊息內容' },
1134
+ {
1135
+ key: 'onchange',
1136
+ value: gvc.event((e) => {
1137
+ vm.message = e.value;
1138
+ }),
1139
+ },
1140
+ ],
1141
+ },
1142
+ onCreate: () => {
1143
+ const input = gvc.getBindViewElem(id).get(0);
1144
+ input.addEventListener('input', function () {
1145
+ console.log(`input.scrollHeight->`, input.scrollHeight);
1146
+ input.style.height = 'auto';
1147
+ input.style.height = input.scrollHeight + 'px';
1148
+ });
1149
+ },
1150
+ };
1151
+ })}
1152
+ </div>
1153
+ <div class="d-flex align-items-end h-100">
1154
+ <button
1155
+ type="button"
1156
+ class="btn btn-icon btn-lg d-sm-inline-flex ms-1 text-white"
1157
+ style="background: ${CustomerMessageUser.config.color};height:45px;"
1158
+ onclick="${gvc.event(() => {
1159
+ const dialog = new ShareDialog(gvc.glitter);
1160
+ if (!imageArray.length && !vm.message) {
1161
+ dialog.errorMessage({ text: '請輸入訊息' });
1162
+ return;
1163
+ }
1164
+ dialog.dataLoading({
1165
+ visible: true
1166
+ });
1167
+ if (imageArray.length) {
1168
+ dialog.dataLoading({
1169
+ visible: true
1170
+ });
1171
+ for (const image of imageArray) {
1172
+ Chat.postMessage({
1173
+ chat_id: cf.chat.chat_id,
1174
+ user_id: cf.user_id,
1175
+ message: {
1176
+ image: image,
1177
+ attachment: '',
1178
+ },
1179
+ }).then((res) => {
1180
+ imageArray = [];
1181
+ gvc.notifyDataChange('imageBox');
1182
+ dialog.dataLoading({
1183
+ visible: false
1184
+ });
1185
+ });
1186
+ }
1187
+ }
1188
+ if (vm.message) {
1189
+ dialog.dataLoading({
1190
+ visible: true
1191
+ });
1192
+ Chat.postMessage({
1193
+ chat_id: cf.chat.chat_id,
1194
+ user_id: cf.user_id,
1195
+ message: {
1196
+ text: vm.message,
1197
+ attachment: '',
1198
+ },
1199
+ }).then((res) => {
1200
+ vm.message = '';
1201
+ console.log(res);
1202
+ dialog.dataLoading({
1203
+ visible: false
1204
+ });
1205
+ });
1206
+ const textArea = gvc.getBindViewElem(textAreaId).get(0);
1207
+ textArea.value = '';
1208
+ vm.message = '';
1209
+ }
1210
+ document.querySelector('.no_message').remove();
1211
+ })}"
1212
+ >
1213
+ <i class="fa-regular fa-paper-plane-top"></i>
1214
+ </button>
1215
+ </div>
1216
+ </div>
1217
+
1218
+
1219
+ `;
1220
+ }, divCreate: {
1221
+ class: `card-footer border-top d-flex flex-column align-items-center w-100 border-0 pt-3 pb-3 pe-4 ps-3 position-fixed bottom-0 position-sm-absolute`,
1222
+ style: `background: white;min-height:45px;`
1223
+ }
1224
+ })}`;
1225
+ },
1226
+ divCreate: {
1227
+ class: `h-100`
1228
+ },
1229
+ onCreate: () => {
1230
+ },
1231
+ onDestroy: () => {
1232
+ vm.close = true;
1233
+ socket.close();
1234
+ },
1235
+ };
1236
+ }),
1237
+ ].join(''));
1238
+ }));
1239
+ },
1240
+ divCreate: {
1241
+ class: `h-100 bg-white w-100`
1242
+ }
1243
+ };
1244
+ });
1245
+ }, 'CustomerMessageUser', {
1246
+ animation: Animation.fade
1247
+ });
1248
+ }
756
1249
  static robotMessage(gvc, goToChat) {
757
1250
  const html = String.raw;
758
1251
  return gvc.bindView(() => {
@@ -832,17 +1325,19 @@ export class CustomerMessageUser {
832
1325
  var _a, _b;
833
1326
  const html = String.raw;
834
1327
  function drawChatContent() {
835
- if (dd.message.image) {
836
- return html `<img style="cursor: pointer;"
1328
+ return `<span style="white-space: normal;word-break: break-all;">${(() => {
1329
+ if (dd.message.image) {
1330
+ return html `<img style="cursor: pointer;"
837
1331
  src="${dd.message.image}"
838
1332
  alt="image"
839
1333
  onclick="${gvc.event(() => {
840
- gvc.glitter.openDiaLog(new URL('./dialog/image-preview.js', gvc.glitter.root_path).href, 'preview', dd.message.image);
841
- })}">`;
842
- }
843
- else {
844
- return dd.message.text.replace(/\n/g, '<br>');
845
- }
1334
+ gvc.glitter.openDiaLog(new URL('./dialog/image-preview.js', gvc.glitter.root_path).href, 'preview', dd.message.image);
1335
+ })}">`;
1336
+ }
1337
+ else {
1338
+ return dd.message.text.replace(/\n/g, '<br>');
1339
+ }
1340
+ })()}</span>`;
846
1341
  }
847
1342
  dd.message.text = dd.message.text || "";
848
1343
  if (dd.user_id == 'manager') {