1/* eslint-disable */ 2(function (exports,ui_designTokens,im_view_element_media,im_view_element_attach,im_view_element_keyboard,im_view_element_chatteaser,ui_vue_components_reaction,ui_vue,ui_vue_vuex,im_model,im_const,im_lib_utils,main_core,main_core_events) { 3 'use strict'; 4 5 function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } 6 function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 7 function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } 8 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } 9 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { babelHelpers.defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 10 var BX = window.BX; 11 var _ContentType = Object.freeze({ 12 "default": 'default', 13 progress: 'progress', 14 image: 'image', 15 audio: 'audio', 16 video: 'video', 17 richLink: 'richLink' 18 }); 19 ui_vue.BitrixVue.component('bx-im-view-message-body', { 20 /** 21 * @emits EventType.dialog.clickOnChatTeaser {message: object, event: MouseEvent} 22 * @emits EventType.dialog.clickOnKeyboardButton {message: object, action: string, params: Object} 23 * @emits EventType.dialog.setMessageReaction {message: object, reaction: object} 24 * @emits EventType.dialog.openMessageReactionList {message: object, values: object} 25 * @emits EventType.dialog.clickOnUserName {user: object, event: MouseEvent} 26 */ 27 props: { 28 userId: { 29 "default": 0 30 }, 31 dialogId: { 32 "default": '0' 33 }, 34 chatId: { 35 "default": 0 36 }, 37 messageType: { 38 "default": im_const.MessageType.self 39 }, 40 message: { 41 type: Object, 42 "default": im_model.MessagesModel.create().getElementState 43 }, 44 enableReactions: { 45 "default": true 46 }, 47 showName: { 48 "default": true 49 }, 50 showAvatar: { 51 "default": true 52 }, 53 referenceContentBodyClassName: { 54 "default": '' 55 }, 56 referenceContentNameClassName: { 57 "default": '' 58 } 59 }, 60 created: function created() { 61 this.dateFormatFunction = null; 62 this.cacheFormatDate = {}; 63 }, 64 methods: { 65 clickByUserName: function clickByUserName(event) { 66 if (this.showAvatar && im_lib_utils.Utils.platform.isMobile()) { 67 return false;
68 } 69 main_core_events.EventEmitter.emit(im_const.EventType.dialog.clickOnUserName, event); 70 }, 71 clickByChatTeaser: function clickByChatTeaser(event) { 72 main_core_events.EventEmitter.emit(im_const.EventType.dialog.clickOnChatTeaser, { 73 message: event.message, 74 event: event.event 75 }); 76 }, 77 clickByKeyboardButton: function clickByKeyboardButton(event) { 78 main_core_events.EventEmitter.emit(im_const.EventType.dialog.clickOnKeyboardButton, _objectSpread({ 79 message: event.message 80 }, event.event)); 81 }, 82 setReaction: function setReaction(event) { 83 main_core_events.EventEmitter.emit(im_const.EventType.dialog.setMessageReaction, event); 84 }, 85 openReactionList: function openReactionList(event) { 86 main_core_events.EventEmitter.emit(im_const.EventType.dialog.openMessageReactionList, event); 87 }, 88 formatDate: function formatDate(date) { 89 var id = date.toJSON().slice(0, 10); 90 if (this.cacheFormatDate[id]) { 91 return this.cacheFormatDate[id]; 92 } 93 var dateFormat = im_lib_utils.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.message, this.$Bitrix.Loc.getMessages()); 94 this.cacheFormatDate[id] = this._getDateFormat().format(dateFormat, date); 95 return this.cacheFormatDate[id]; 96 }, 97 _getDateFormat: function _getDateFormat() { 98 var _this = this; 99 if (this.dateFormatFunction) { 100 return this.dateFormatFunction; 101 } 102 this.dateFormatFunction = Object.create(BX.Main.Date); 103 this.dateFormatFunction._getMessage = function (phrase) { 104 return _this.$Bitrix.Loc.getMessage(phrase); 105 }; 106 return this.dateFormatFunction; 107 }, 108 isDesktop: function isDesktop() { 109 return im_lib_utils.Utils.platform.isBitrixDesktop(); 110 }, 111 getDesktopVersion: function getDesktopVersion() { 112 return im_lib_utils.Utils.platform.getDesktopVersion(); 113 }, 114 isMobile: function isMobile() { 115 return im_lib_utils.Utils.platform.isBitrixMobile(); 116 } 117 }, 118 computed: _objectSpread({ 119 MessageType: function MessageType() { 120 return im_const.MessageType; 121 }, 122 ContentType: function ContentType() { 123 return _ContentType; 124 }, 125 contentType: function contentType() { 126 if (this.filesData.length > 0) { 127 var onlyImage = false; 128 var onlyVideo = false; 129 var onlyAudio = false; 130 var inProgress = false; 131 var _iterator = _createForOfIteratorHelper(this.filesData), 132 _step; 133 try { 134 for (_iterator.s(); !(_step = _iterator.n()).done;) { 135 var file = _step.value; 136 if (file.progress < 0) { 137 inProgress = true; 138 break; 139 } else if (file.type === 'audio') { 140 if (onlyVideo || onlyImage) { 141 onlyImage = false; 142 onlyVideo = false; 143 break; 144 } 145 onlyAudio = true; 146 } else if (file.type === 'image' && file.image) { 147 if (onlyVideo || onlyAudio) { 148 onlyAudio = false; 149 onlyVideo = false; 150 break; 151 } 152 onlyImage = true; 153 } else if (file.type === 'video') { 154 if (onlyImage || onlyAudio) { 155 onlyAudio = false; 156 onlyImage = false; 157 break; 158 } 159 onlyVideo = true; 160 } else { 161 onlyAudio = false; 162 onlyImage = false; 163 onlyVideo = false; 164 break; 165 } 166 } 167 } catch (err) { 168 _iterator.e(err); 169 } finally { 170 _iterator.f(); 171 } 172 if (inProgress) { 173 return _ContentType.progress; 174 } else if (onlyImage) { 175 return _ContentType.image; 176 } else if (onlyAudio) { 177 return _ContentType.audio; 178 } else if (onlyVideo) { 179 return _ContentType.video; 180 } 181 } 182 return _ContentType["default"]; 183 }, 184 formattedDate: function formattedDate() { 185 return this.formatDate(this.message.date); 186 }, 187 messageText: function messageText() { 188 if (this.isDeleted) { 189 return this.$Bitrix.Loc.getMessage('IM_MESSENGER_MESSAGE_DELETED'); 190 } 191 var message = this.message.textConverted ? this.message.textConverted : im_lib_utils.Utils.text.decode(this.message.text); 192 var messageParams = this.message.params; 193 if (typeof messageParams.LINK_ACTIVE !== 'undefined' && messageParams.LINK_ACTIVE.length > 0 && !messageParams.LINK_ACTIVE.includes(this.userId)) { 194 message = message.replace(/<a.*?href="([^"]*)".*?>(.*?)<\/a>/gi, '$2'); 195 } 196 return message; 197 }, 198 messageAttach: function messageAttach() { 199 return this.message.params.ATTACH; 200 }, 201 messageReactions: function messageReactions() { 202 return this.message.params.REACTION || {}; 203 }, 204 isEdited: function isEdited() { 205 return this.message.params.IS_EDITED === 'Y'; 206 }, 207 isDeleted: function isDeleted() { 208 return this.message.params.IS_DELETED === 'Y'; 209 }, 210 chatColor: function chatColor() { 211 return this.dialog.type !== im_const.DialogType["private"] ? this.dialog.color : this.user.color; 212 }, 213 dialog: function dialog() { 214 var dialog = this.$store.getters['dialogues/get'](this.dialogId); 215 return dialog ? dialog : this.$store.getters['dialogues/getBlank'](); 216 }, 217 user: function user() { 218 return this.$store.getters['users/get'](this.message.authorId, true); 219 }, 220 filesData: function filesData() { 221 var _this2 = this; 222 var files = []; 223 if (!this.message.params.FILE_ID || this.message.params.FILE_ID.length <= 0) { 224 return files; 225 }
226 this.message.params.FILE_ID.forEach(function (fileId) { 227 if (!fileId) { 228 return false; 229 } 230 var file = _this2.$store.getters['files/get'](_this2.chatId, fileId, true); 231 if (!file) { 232 _this2.$store.commit('files/set', { 233 data: [_this2.$store.getters['files/getBlank']({ 234 id: fileId, 235 chatId: _this2.chatId 236 })] 237 }); 238 file = _this2.$store.getters['files/get'](_this2.chatId, fileId, true); 239 } 240 if (file) { 241 files.push(file); 242 } 243 }); 244 return files; 245 }, 246 keyboardButtons: function keyboardButtons() { 247 var result = false; 248 if (!this.message.params.KEYBOARD || this.message.params.KEYBOARD === 'N') { 249 return result; 250 } 251 return this.message.params.KEYBOARD; 252 }, 253 chatTeaser: function chatTeaser() { 254 if (typeof this.message.params.CHAT_ID === 'undefined' || typeof this.message.params.CHAT_LAST_DATE === 'undefined' || typeof this.message.params.CHAT_MESSAGE === 'undefined') { 255 return false; 256 } 257 return { 258 messageCounter: this.message.params.CHAT_MESSAGE, 259 messageLastDate: this.message.params.CHAT_LAST_DATE, 260 languageId: this.application.common.languageId 261 }; 262 }, 263 userName: function userName() { 264 if (this.message.params.NAME) { 265 return main_core.Text.decode(this.message.params.NAME); 266 } 267 if (!this.showAvatar) { 268 return this.user.name; 269 } else { 270 return this.user.firstName ? this.user.firstName : this.user.name; 271 } 272 }, 273 userColor: function userColor() { 274 if (this.user.extranet) { 275 return "#CA7B00"; 276 } 277 return this.user.color; 278 } 279 }, ui_vue_vuex.Vuex.mapState({ 280 application: function application(state) { 281 return state.application; 282 } 283 })), 284 // language=Vue 285 template: "\n\t\t<div class=\"bx-im-message-content-wrap\">\n\t\t\t<template v-if=\"contentType == ContentType.default || contentType == ContentType.audio || contentType == ContentType.progress || (contentType !== ContentType.image && isDesktop() && getDesktopVersion() < 47)\">\n\t\t\t\t<div class=\"bx-im-message-content\">\n\t\t\t\t\t<span class=\"bx-im-message-content-box\">\n\t\t\t\t\t\t<div class=\"bx-im-message-content-name-wrap\">\n\t\t\t\t\t\t\t<template v-if=\"showName && user.extranet && messageType == MessageType.opponent\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-message-extranet-icon\"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-if=\"showName && messageType == MessageType.opponent\">\n\t\t\t\t\t\t\t\t<div :class=\"['bx-im-message-content-name', referenceContentNameClassName]\" :style=\"{color: userColor}\" @click=\"clickByUserName({user: user, event: $event})\">{{userName}}</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div :class=\"['bx-im-message-content-body', referenceContentBodyClassName]\">\n\t\t\t\t\t\t\t<template v-if=\"(contentType == ContentType.audio) && (!isDesktop() || (isDesktop() && getDesktopVersion() > 43))\">\n\t\t\t\t\t\t\t\t<bx-im-view-element-file-audio v-for=\"file in filesData\" :messageType=\"messageType\" :file=\"file\" :key=\"file.templateId\"/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t<bx-im-view-element-file v-for=\"file in filesData\" :messageType=\"messageType\" :file=\"file\" :key=\"file.templateId\"/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<div :class=\"['bx-im-message-content-body-wrap', {\n\t\t\t\t\t\t\t\t'bx-im-message-content-body-with-text': messageText.length > 0,\n\t\t\t\t\t\t\t\t'bx-im-message-content-body-without-text': messageText.length <= 0,\n\t\t\t\t\t\t\t}]\">\n\t\t\t\t\t\t\t\t<template v-if=\"messageText\">\n\t\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-text\" v-html=\"messageText\"></span>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<template v-for=\"(config, id) in messageAttach\">\n\t\t\t\t\t\t\t\t\t<bx-im-view-element-attach :baseColor=\"chatColor\" :config=\"config\" :key=\"id\"/>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-params\">\n\t\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-date\">{{formattedDate}}</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div v-if=\"!message.push && enableReactions && message.authorId\" class=\"bx-im-message-content-reaction\">\n\t\t\t\t\t\t<bx-reaction :id=\"'message'+message.id\" :values=\"messageReactions\" :userId=\"userId\" :openList=\"false\" @set=\"setReaction({message: message, reaction: $event})\" @list=\"openReactionList({message: message, values: $event.values})\"/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-else-if=\"contentType == ContentType.richLink\">\n\t\t\t\t<!-- richLink type markup -->\n\t\t\t</template>\n\t\t\t<template v-else-if=\"contentType == ContentType.image || contentType == ContentType.video\">\n\t\t\t\t<div class=\"bx-im-message-content bx-im-message-content-fit\">\n\t\t\t\t\t<span class=\"bx-im-message-content-box\">\n\t\t\t\t\t\t<template v-if=\"showName && messageType == MessageType.opponent\">\n\t\t\t\t\t\t\t<div :class=\"['bx-im-message-content-name', referenceContentNameClassName]\" :style=\"{color: user.color}\" @click=\"clickByUserName({user: user, event: $event})\">{{!showAvatar? user.name: (user.firstName? user.firstName: user.name)}
285}</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<div :class=\"['bx-im-message-content-body', referenceContentBodyClassName]\">\n\t\t\t\t\t\t\t<template v-if=\"contentType == ContentType.image\">\n\t\t\t\t\t\t\t\t<bx-im-view-element-file-image v-for=\"file in filesData\" :messageType=\"messageType\" :file=\"file\" :key=\"file.templateId\"/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<template v-else-if=\"contentType == ContentType.video\">\n\t\t\t\t\t\t\t\t<bx-im-view-element-file-video v-for=\"file in filesData\" :messageType=\"messageType\" :file=\"file\" :key=\"file.templateId\"/>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t<div :class=\"['bx-im-message-content-body-wrap', {\n\t\t\t\t\t\t\t\t'bx-im-message-content-body-with-text': messageText.length > 0,\n\t\t\t\t\t\t\t\t'bx-im-message-content-body-without-text': messageText.length <= 0,\n\t\t\t\t\t\t\t}]\">\n\t\t\t\t\t\t\t\t<template v-if=\"messageText\">\n\t\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-text\" v-html=\"messageText\"></span>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-params\">\n\t\t\t\t\t\t\t\t\t<span class=\"bx-im-message-content-date\">{{formattedDate}}</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div v-if=\"!message.push && enableReactions && message.authorId\" class=\"bx-im-message-content-reaction\">\n\t\t\t\t\t\t<bx-reaction :id=\"'message'+message.id\" :values=\"messageReactions\" :userId=\"userId\" :openList=\"false\" @set=\"setReaction({message: message, reaction: $event})\" @list=\"openReactionList({message: message, values: $event.values})\"/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-if=\"keyboardButtons\">\n\t\t\t\t<bx-im-view-element-keyboard :buttons=\"keyboardButtons\" :messageId=\"message.id\" :userId=\"userId\" :dialogId=\"dialogId\" @click=\"clickByKeyboardButton({message: message, event: $event})\"/>\n\t\t\t</template>\n\t\t\t<template v-if=\"chatTeaser\">\n\t\t\t\t<bx-im-view-element-chat-teaser :messageCounter=\"chatTeaser.messageCounter\" :messageLastDate=\"chatTeaser.messageLastDate\" :languageId=\"chatTeaser.languageId\" @click=\"clickByChatTeaser({message: message, event: $event})\"/>\n\t\t\t</template>\n\t\t</div>\n\t" 286 }); 287 288}((this.window = this.window || {}),BX,window,window,window,window,window,BX,BX,BX.Messenger.Model,BX.Messenger.Const,BX.Messenger.Lib,BX,BX.Event)); 289//# sourceMappingURL=body.bundle.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.