PageSourceSearch

https://ek-territory.ru/bitrix/js/im/view/message/body/dist/body.bundle.js?176986457218269

js ek-territory.ru collected 2026-09-24 12:26:33 UTC 18,269 bytes, 289 lines download raw bytes

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.