Your IP : 3.133.149.244


Current Path : /var/www/axolotl/data/www/arhangelsk.axolotls.ru/a537b/
Upload File :
Current File : /var/www/axolotl/data/www/arhangelsk.axolotls.ru/a537b/view.tar

dialog/config.php000066400000000627147744174710010010 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/dialog.bundle.js',
	],
	'css' => [
		'./dist/dialog.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'main.polyfill.intersectionobserver',
		'ui.vue',
		'ui.vue.vuex',
		'im.view.message',
		'im.const',
		'im.lib.utils',
		'im.lib.animation',
		'im.lib.logger',
	],
	'skip_core' => true,
];dialog/bundle.config.js000066400000000124147744174710011075 0ustar00module.exports = {
	input: './src/dialog.js',
	output: './dist/dialog.bundle.js',
};dialog/src/dialog.css000066400000016305147744174710010572 0ustar00.bx-im-dialog {
	display: flex;
	height: 100%;
	overflow: hidden;
}
.bx-im-dialog-ajax {
	text-decoration: dotted;
}
.bx-im-dialog-list {
	overflow-y: auto;
	width: 100%;
}
.bx-im-dialog-list-scroll-blocked {
	overflow: hidden;
}
.bx-im-dialog-list-box {
	width: 100%;
	display: flex;
	flex-direction: column;
	flex-wrap: nowrap;
	-webkit-overflow-scrolling: touch;
	overflow-x: hidden;
	overflow-y: auto;
	padding: 10px 0;
}
.bx-im-dialog-scroll-button-box {
	position: absolute;
	right: 0;
	bottom: 0;
	width: 55px;
	height: 55px;
	z-index: 1;
	-webkit-tap-highlight-color: transparent;
	outline: none;
}
.bx-im-dialog-scroll-button {
	background: #fff;
	border: 1px solid #ececec;
	box-shadow: 0 2px 1px 0 rgba(0,0,0,0.2);
	border-radius: 50%;
	width: 34px;
	height: 34px;
	margin-top: 10px;
	margin-left: 7px;
	cursor: pointer;
	transition: background-color .2s;
	text-align: center;
}
.bx-im-dialog-scroll-button:hover {
	background-color: #f9f9f9;
}

.bx-im-dialog-scroll-button-arrow {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-top: 3px solid #bbb8b8;
	border-right: 3px solid #bbb8b8;
	transform: rotate(135deg);
	margin-top: 11px;
	cursor: pointer;
	box-sizing: content-box;
}
.bx-im-dialog-scroll-button-counter {
	width: 100%;
	text-align: center;
	margin-top:-7px;
	position: absolute;
}
.bx-im-dialog-scroll-button-counter-digit {
	display: inline-block;
    font: 11px/16px "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: #fff;
	padding: 0 5px 0 5px;
    border: 2px solid #fff;
    border-radius: 10px;
    background-color: #17b0e1;
}


.bx-im-dialog-scroll-button-enter-active, .bx-im-dialog-scroll-button-leave-active {
	transition: bottom .2s ease-out;
}
.bx-im-dialog-scroll-button-enter, .bx-im-dialog-scroll-button-leave-to {
	bottom: -60px;
}

.bx-im-dialog-message-animation-enter-active, .bx-im-dialog-message-animation-leave-active {
	transition: 0s;
}

.bx-im-dialog-list-item {}

.bx-im-dialog-group {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	text-overflow: ellipsis;
	white-space: nowrap;
	text-align: center;
	position: relative;
}
.bx-im-dialog-group-date {
	background-color: rgba(7, 5, 27, 0.62);
	border: 1px solid rgba(7, 5, 27, 0.1);
	text-shadow: none; color: #fff!important;
	display: inline-block;
	padding: 5px 15px;
	border-radius: 15px;
	font-size: 14px;
	text-decoration: none;
	margin: 10px 15px;
}
.bx-im-dialog-group-float.bx-im-dialog-group-date
{
	position: absolute;
	display: block;
	margin-top: 32px;
	z-index: 30;
	-webkit-transform: translateZ(0);
	transform: translateZ(0);
}

.bx-im-dialog-load-more {
	position: relative;
	text-align: center;
}
.bx-im-dialog-load-more + .bx-im-dialog-list-box { padding-top: 0; }
.bx-im-dialog-load-more-history {
	padding-bottom: 0;
}
.bx-im-dialog-load-more-unread {
    padding-top: 0;
    padding-bottom: 13px;
}

.bx-im-dialog-load-more-text:before {
	position: absolute;
	margin-left: -30px;
	margin-top: 4px;
	width: 20px;
	height: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%23677B8F%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	-ms-animation: bx-im-dialog-load-more .8s linear infinite;
	-webkit-animation: bx-im-dialog-load-more .8s linear infinite;
	animation: bx-im-dialog-load-more .8s linear infinite;
	content: ""
}
.bx-im-dialog-load-more-text {
	display: inline-block;
	height: 29px;
	font: 15px/29px "Helvetica Neue",Helvetica,Arial,sans-serif;
	color: #687B8C;
	vertical-align: top;
	padding: 10px 15px;
	padding-left: 30px;
}
.bx-im-dialog-dark-background .bx-im-dialog-load-more-text {
	color: #949494;
}

@-webkit-keyframes bx-im-dialog-load-more {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-dialog-load-more {
	0% {
		-moz-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100%
	{
		-moz-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}

.bx-im-dialog-status {
	padding: 0 20px 15px;
	display: block;
	font: 15px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #585858;
	word-wrap: break-word;
	vertical-align: middle;
	-moz-user-select:none;
	-webkit-user-select:none;
	user-select:none;
	cursor: default;
	position: relative;
}

.bx-im-dialog-status-enter-active, .bx-im-dialog-status-leave-active {
	transition: opacity .1s ease-out;
}
.bx-im-dialog-status-leave-active {
	transition: opacity .05s ease-out;
}
.bx-im-dialog-status-enter, .bx-im-dialog-status-leave-to {
	opacity: 0;
}

.bx-im-dialog-status-writing {
	width: 20px;
	height: 11px;
	display: inline-block;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%228%22%20height%3D%222%22%3E%0A%20%20%3Cg%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%223.2%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%226.4%22%20rx%3D%22.8%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: bottom left;
	vertical-align: middle;
}
.bx-im-dialog-status-writing:before {
	-webkit-animation: imWriting 1.4s linear infinite;
	animation: imWriting 1.4s linear infinite;
	content: '';
	height: 16px;
	position: absolute;
	width: 19px;
	margin-left: 10px;
	margin-top:-1px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	zoom:1;
}

@-webkit-keyframes imWriting {
	0% { margin-left: 1px; margin-top:-0px; }
	20% { margin-left: 4px; margin-top:-1px; }
	60% { margin-left: 8px; margin-top:-2px; }
	65% { margin-left: 8px; margin-top:-2px; }
	70% { margin-left: 8px; margin-top:-3px; -webkit-transform:rotate(-20deg); transform:rotate(-20deg); }
	90% { margin-left: 8px; margin-top:-5px; -webkit-transform:rotate(-40deg); transform:rotate(-40deg);  }
	100% {  margin-left: 1px; margin-top:-3px; }
}

@keyframes imWriting {
	0% { margin-left: 1px; margin-top:-0px; }
	20% { margin-left: 4px; margin-top:-1px; }
	60% { margin-left: 8px; margin-top:-2px; }
	65% { margin-left: 8px; margin-top:-2px; }
	70% { margin-left: 8px; margin-top:-3px; transform:rotate(-20deg); }
	90% { margin-left: 8px; margin-top:-5px; transform:rotate(-40deg);  }
	100% {  margin-left: 1px; margin-top:-3px; }
}dialog/src/dialog.js000066400000124103147744174710010412 0ustar00/**
 * Bitrix Messenger
 * Dialog Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './dialog.css';
import 'main.polyfill.intersectionobserver';
import {Vue} from 'ui.vue';
import {Vuex} from 'ui.vue.vuex';
import 'im.view.message';
import {DeviceType, MutationType, DialogReferenceClassName, DialogType} from "im.const";
import {Utils as MessengerUtils} from "im.lib.utils";
import {Animation} from "im.lib.animation";
import {Logger} from "im.lib.logger";

const TemplateType = Object.freeze({
	message: 'message',
	delimiter: 'delimiter',
	group: 'group',
	historyLoader: 'historyLoader',
	unreadLoader: 'unreadLoader',
	button: 'button',
});

const ObserverType = Object.freeze({
	history: 'history',
	unread: 'unread',
	read: 'read',
	none: 'none',
});

const LoadButtonTypes = Object.freeze({
	before: 'before',
	after: 'after'
});

const AnimationType = Object.freeze({
	none: 'none',
	mixed: 'mixed',
	enter: 'enter',
	leave: 'leave',
});

Vue.component('bx-im-view-dialog',
{
	/**
	 * @emits 'requestHistory' {lastId: number, limit: number}
	 * @emits 'requestUnread' {lastId: number, limit: number}
	 * @emits 'readMessage' {id: number}
	 * @emits 'quoteMessage' {message: object}
	 * @emits 'click' {event: MouseEvent}
	 * @emits 'clickByUserName' {user: object, event: MouseEvent}
	 * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	 * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	 * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}
	 * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}
	 * @emits 'clickByCommand' {type: string, value: string, event: MouseEvent}
	 * @emits 'clickByMention' {type: string, value: string, event: MouseEvent}
	 * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}
	 * @emits 'clickByReadedList' {list: array, event: MouseEvent}
	 * @emits 'setMessageReaction' {message: object, reaction: object}
	 * @emits 'openMessageReactionList' {message: object, values: object}
	 */

	/**
	 * @listens props.listenEventScrollToBottom {force:boolean, cancelIfScrollChange:boolean} (global|application) -- scroll dialog to bottom, see more in methods.onScrollToBottom()
	 * @listens props.listenEventRequestHistory {count:number} (application)
	 * @listens props.listenEventRequestUnread {count:number} (application)
	 * @listens props.listenEventSendReadMessages {} (application)
	 */
	props:
	{
		userId: { default: 0 },
		dialogId: { default: 0 },
		chatId: { default: 0 },
		messageLimit: { default: 20 },
		messageExtraCount: { default: 0 },
		listenEventScrollToBottom: { default: '' },
		listenEventRequestHistory: { default: '' },
		listenEventRequestUnread: { default: '' },
		listenEventSendReadMessages: { default: '' },
		enableReadMessages: { default: true },
		enableReactions: { default: true },
		enableDateActions: { default: true },
		enableCreateContent: { default: true },
		enableGestureQuote: { default: true },
		enableGestureQuoteFromRight: { default: true },
		enableGestureMenu: { default: false },
		showMessageUserName: { default: true },
		showMessageAvatar: { default: true },
		showMessageMenu: { default: true },
	},
	data()
	{
		return {
			scrollAnimating: false,
			showScrollButton: false,
			messageShowCount: 0,
			unreadLoaderShow: false,
			historyLoaderBlocked: false,
			historyLoaderShow: true,
			startMessageLimit: 0,
			templateMessageScrollOffset: 20,
			templateMessageWithNameDifferent: 29, // name block + padding top
			TemplateType: TemplateType,
			ObserverType: ObserverType,
			DialogReferenceClassName: DialogReferenceClassName,
			captureMove: false,
			capturedMoveEvent: null,
			lastMessageId: null,
			maxMessageId: null,
		}
	},
	created()
	{
		this.showScrollButton = this.unreadCounter > 0;

		this.scrollChangedByUser = false;
		this.scrollButtonDiff = 100;
		this.scrollButtonShowTimeout = null;
		this.scrollPosition = 0;
		this.scrollPositionChangeTime = new Date().getTime();

		this.animationScrollHeightStart = 0;
		this.animationScrollHeightEnd = 0;
		this.animationScrollTop = 0;
		this.animationScrollChange = 0;
		this.animationScrollLastUserId = 0;
		this.animationType = AnimationType.none;
		this.animationCollection = [];
		this.animationCollectionOffset = {};
		this.animationLastElementBeforeStart = 0;

		this.observers = {};

		this.requestHistoryInterval = null;
		this.requestUnreadInterval = null;

		this.lastAuthorId = 0;
		this.firstMessageId = null;
		this.firstUnreadMessageId = null;
		this.dateFormatFunction = null;
		this.cacheGroupTitle = {};

		this.waitLoadHistory = false;
		this.waitLoadUnread = false;
		this.skipUnreadScroll = false;

		this.readMessageQueue = [];
		this.readMessageTarget = {};
		this.readMessageDelayed = MessengerUtils.debounce(this.readMessage, 50, this);

		this.requestHistoryBlockIntersect = false;
		this.requestHistoryDelayed = MessengerUtils.debounce(this.requestHistory, 50, this);

		this.requestUnreadBlockIntersect = false;
		this.requestUnreadDelayed = MessengerUtils.debounce(this.requestUnread, 50, this);

		this.startMessageLimit = this.messageLimit;

		if (this.listenEventScrollToBottom)
		{
			Vue.event.$on(this.listenEventScrollToBottom, this.onScrollToBottom);
			this.$root.$on(this.listenEventScrollToBottom, this.onScrollToBottom);
		}
		if (this.listenEventRequestHistory)
		{
			Vue.event.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
			this.$root.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
		}
		if (this.listenEventRequestUnread)
		{
			Vue.event.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
			this.$root.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
		}
		if (this.listenEventSendReadMessages)
		{
			Vue.event.$on(this.listenEventSendReadMessages, this.onSendReadMessages);
			this.$root.$on(this.listenEventSendReadMessages, this.onSendReadMessages);
		}

		window.addEventListener("orientationchange", this.onOrientationChange);
		window.addEventListener('focus', this.onWindowFocus);
		window.addEventListener('blur', this.onWindowBlur);

		Vue.event.$on('bitrixmobile:controller:focus', this.onWindowFocus);
		Vue.event.$on('bitrixmobile:controller:blur', this.onWindowBlur);
	},
	beforeDestroy()
	{
		this.observers = {};

		clearTimeout(this.scrollButtonShowTimeout);
		clearInterval(this.requestHistoryInterval);
		clearInterval(this.requestUnreadInterval);

		if (this.listenEventScrollToBottom)
		{
			Vue.event.$off(this.listenEventScrollToBottom, this.onScrollToBottom);
			this.$root.$off(this.listenEventScrollToBottom, this.onScrollToBottom);
		}
		if (this.listenEventRequestHistory)
		{
			Vue.event.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
			this.$root.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
		}
		if (this.listenEventRequestUnread)
		{
			Vue.event.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
			this.$root.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
		}
		if (this.listenEventSendReadMessages)
		{
			Vue.event.$off(this.listenEventSendReadMessages, this.onSendReadMessages);
			this.$root.$off(this.listenEventSendReadMessages, this.onSendReadMessages);
		}

		window.removeEventListener("orientationchange", this.onOrientationChange);
		window.removeEventListener('focus', this.onWindowFocus);
		window.removeEventListener('blur', this.onWindowBlur);

		Vue.event.$off('bitrixmobile:controller:focus', this.onWindowFocus);
		Vue.event.$off('bitrixmobile:controller:blur', this.onWindowBlur);
	},
	mounted()
	{
		let unreadId = Utils.getFirstUnreadMessage(this.collection);
		if (unreadId)
		{
			Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true)
		}
		else
		{
			let body = this.$refs.body;
			Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
		}
		this.windowFocused = MessengerUtils.platform.isBitrixMobile()? true: document.hasFocus();
	},
	computed:
	{
		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_DIALOG_', this.$root.$bitrixMessages);
		},
		dialog()
		{
			let dialog = this.$store.getters['dialogues/get'](this.dialogId);
			return dialog? dialog: this.$store.getters['dialogues/getBlank']();
		},
		collectionMutationType()
		{
			return this.$store.getters['messages/getMutationType'](this.chatId);
		},
		collection()
		{
			return this.$store.getters['messages/get'](this.chatId);
		},
		elementsWithLimit()
		{
			let unreadCount = this.collection.filter(element => element.unread).length;
			let showLimit = this.messageExtraCount + this.messageLimit * 2;
			if (unreadCount > showLimit)
			{
				showLimit = unreadCount;
			}

			let start = this.collection.length - showLimit;
			if (!this.historyLoaderShow || start < 0)
			{
				start = 0;
			}

			let slicedCollection = start === 0? this.collection: this.collection.slice(start, this.collection.length);
			this.messageShowCount = slicedCollection.length;

			this.firstMessageId = null;
			this.lastMessageId = 0;
			this.maxMessageId = 0;
			this.lastMessageAuthorId = 0;

			let collection = [];
			let lastAuthorId = 0;
			let groupNode = {};

			this.firstUnreadMessageId = 0;
			let unreadCountInSlicedCollection = 0;

			if (this.messageShowCount > 0)
			{
				slicedCollection.forEach(element =>
				{
					if (this.firstMessageId === null || this.firstMessageId > element.id)
					{
						this.firstMessageId = element.id;
					}

					if (this.maxMessageId < element.id)
					{
						this.maxMessageId = element.id;
					}

					this.lastMessageId = element.id;

					let group = this._groupTitle(element.date);
					if (!groupNode[group.title])
					{
						groupNode[group.title] = group.id;
						collection.push(Blocks.getGroup(group.id, group.title));
					}
					else if (lastAuthorId !== element.authorId)
					{
						collection.push(Blocks.getDelimiter(element.id));
					}

					collection.push(element);

					lastAuthorId = element.authorId;

					if (element.unread)
					{
						if (!this.firstUnreadMessageId)
						{
							this.firstUnreadMessageId = element.id;
						}
						unreadCountInSlicedCollection++;
					}
				});

				this.lastMessageAuthorId = lastAuthorId;
			}
			else
			{
				this.firstMessageId = 0;
			}

			if (
				this.collection.length >= this.messageLimit
				&& this.collection.length >= this.messageShowCount
				&& this.historyLoaderBlocked === false
			)
			{
				this.historyLoaderShow = true;
			}
			else
			{
				this.historyLoaderShow = false;
			}

			if (this.dialog.unreadLastId > this.maxMessageId)
			{
				this.unreadLoaderShow = true;
			}
			else
			{
				this.unreadLoaderShow = false;
			}

			return collection;
		},
		statusWriting()
		{
			clearTimeout(this.scrollToTimeout);

			if (this.dialog.writingList.length === 0)
			{
				return '';
			}

			if (!this.scrollChangedByUser && !this.showScrollButton)
			{
				this.scrollToTimeout = setTimeout(() => this.scrollTo({duration: 500}), 300);
			}

			return this.localize.IM_MESSENGER_DIALOG_WRITES_MESSAGE.replace(
				'#USER#', this.dialog.writingList.map(element => element.userName).join(', ')
			);
		},
		statusReaded()
		{
			clearTimeout(this.scrollToTimeout);

			if (this.dialog.readedList.length === 0)
			{
				return '';
			}

			let text = '';

			if (this.dialog.type === DialogType.private)
			{
				let record = this.dialog.readedList[0];
				if (
					record.messageId === this.lastMessageId
					&& record.userId !== this.lastMessageAuthorId
				)
				{
					let dateFormat = MessengerUtils.date.getFormatType(
						BX.Messenger.Const.DateFormat.readedTitle,
						this.$root.$bitrixMessages
					);

					text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_USER.replace(
						'#DATE#', this._getDateFormat().format(dateFormat, record.date)
					);
				}
			}
			else
			{
				let readedList = this.dialog.readedList.filter(record => record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId);
				if (readedList.length === 1)
				{
					text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace(
						'#USERS#', readedList[0].userName
					);
				}
				else if (readedList.length > 1)
				{
					text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace(
						'#USERS#',
						this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL
								.replace('#USER#', readedList[0].userName)
								.replace('#COUNT#', readedList.length-1)
								.replace('[LINK]', '')
								.replace('[/LINK]', '')
					);
				}
			}

			if (!text)
			{
				return '';
			}

			if (!this.scrollChangedByUser && !this.showScrollButton)
			{
				this.scrollToTimeout = setTimeout(() => this.scrollTo({duration: 500}), 300);
			}

			return text;
		},
		unreadCounter()
		{
			return this.dialog.counter > 999? 999: this.dialog.counter;
		},
		scrollBlocked()
		{
			if (this.application.device.type !== DeviceType.mobile)
			{
				return false;
			}

			return this.scrollAnimating || this.captureMove;
		},
		isDarkBackground()
		{
			return this.application.options.darkBackground;
		},
		isMobile()
		{
			return this.application.device.type === DeviceType.mobile;
		},

		AnimationType: () => AnimationType,

		...Vuex.mapState({
			application: state => state.application,
		})
	},
	methods:
	{
		onDialogClick(event)
		{
			if (Vue.testNode(event.target, {className: 'bx-im-message-command'}))
			{
				this.onCommandClick(event);
			}
			else if (Vue.testNode(event.target, {className: 'bx-im-mention'}))
			{
				this.onMentionClick(event);
			}

			this.windowFocused = true;
			this.$emit('click', {event});
		},
		onDialogMove(event)
		{
			if (!this.captureMove)
			{
				return;
			}

			this.capturedMoveEvent = event;
		},
		onCommandClick(event)
		{
			let value = '';

			if (
				event.target.dataset.entity === 'send'
				|| event.target.dataset.entity === 'put'
			)
			{
				value = event.target.nextSibling.innerHTML;
			}
			else if (event.target.dataset.entity === 'call')
			{
				value = event.target.dataset.command;
			}

			this.$emit('clickByCommand', {type: event.target.dataset.entity, value, event});
		},
		onMentionClick(event)
		{
			this.$emit('clickByMention', {type: event.target.dataset.type, value: event.target.dataset.value, event});
		},
		onScroll(event)
		{
			clearTimeout(this.scrollToTimeout);

			this.scrollPosition = event.target.scrollTop;
			this.scrollPositionChangeTime = new Date().getTime();

			this.scrollChangedByUser = !(event.target.scrollTop + this.scrollButtonDiff >= event.target.scrollHeight - event.target.clientHeight);

			clearTimeout(this.scrollButtonShowTimeout);
			this.scrollButtonShowTimeout = setTimeout(() =>
			{
				if (this.scrollChangedByUser)
				{
					if (!this.showScrollButton)
					{
						this.showScrollButton = true;
					}
				}
				else
				{
					if (this.showScrollButton && !this.unreadLoaderShow)
					{
						this.showScrollButton = false;
					}
				}
			}, 200);

			if (event.target.scrollTop === event.target.scrollHeight - event.target.offsetHeight)
			{
				clearTimeout(this.scrollButtonShowTimeout);

				if (this.showScrollButton && !this.unreadLoaderShow)
				{
					this.showScrollButton = false;
				}
			}
		},

		scrollToBottom(params = {})
		{
			let {
				force = false,
				cancelIfScrollChange = false,
				duration = null
			} = params;

			if (cancelIfScrollChange && this.scrollChangedByUser)
			{
				return false;
			}

			let body = this.$refs.body;

			if (this.dialog.counter > 0)
			{
				let scrollToMessageId = this.dialog.counter > 1 && this.firstUnreadMessageId? this.firstUnreadMessageId: this.lastMessageId;
				Utils.scrollToFirstUnreadMessage(this, this.collection, scrollToMessageId);

				if (this.dialog.counter < this.startMessageLimit)
				{
					this.historyLoaderShow = true;
					this.historyLoaderBlocked = false;
				}

				return true;
			}

			this.showScrollButton = false;

			if (force)
			{
				Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);

				if (this.messageExtraCount)
				{
					this.$store.commit('application/clearDialogExtraCount');
				}
				this.historyLoaderShow = true;
				this.historyLoaderBlocked = false;
			}
			else
			{
				let scrollParams = {};
				if (duration)
				{
					scrollParams.duration = duration;
				}
				this.scrollTo({
					callback: () => {
						if (this.messageExtraCount)
						{
							this.$store.commit('application/clearDialogExtraCount');
						}
						this.historyLoaderShow = true;
						this.historyLoaderBlocked = false;
					},
					...scrollParams
				});
			}
		},

		scrollTo(params = {})
		{
			if (this.animateScrollId)
			{
				Animation.cancel(this.animateScrollId);
				this.scrollAnimating = false;
			}
			if (typeof params === 'function')
			{
				params = {callback: params};
			}

			let body = this.$refs.body;
			if (!body)
			{
				if (params.callback && typeof params.callback === 'function')
				{
					params.callback();
				}
				this.animateScrollId = null;
				this.scrollAnimating = false;
				return true;
			}

			if (
				MessengerUtils.platform.isIos() && (
					MessengerUtils.platform.getIosVersion() > 12
					&& MessengerUtils.platform.getIosVersion() < 13.2
				)
			)
			{
				body.scrollTop = body.scrollHeight - body.clientHeight;
				return true;
			}

			let {
				start = body.scrollTop,
				end = body.scrollHeight - body.clientHeight,
				increment = 20,
				callback,
				duration = 500
			} = params;

			let container = this.$refs.container;

			if (container && (end - start) > container.offsetHeight * 3)
			{
				start = end - container.offsetHeight * 3;
				Logger.warn('Dialog.scrollTo: Scroll trajectory has been reduced');
			}

			this.scrollAnimating = true;
			Logger.warn('Dialog.scrollTo: User scroll blocked while scrolling');

			this.animateScrollId = Animation.start({
				start,
				end,
				increment,
				duration,

				element: body,
				elementProperty: 'scrollTop',

				callback: () =>
				{
					this.animateScrollId = null;
					this.scrollAnimating = false;
					if (callback && typeof callback === 'function')
					{
						callback();
					}
				},
			});
		},
		onScrollToBottom(event = {})
		{
			event.force = event.force === true;
			event.cancelIfScrollChange = event.cancelIfScrollChange === true;

			if (this.firstUnreadMessageId)
			{
				Logger.warn('Dialog.onScrollToBottom: canceled - unread messages');
				return false;
			}

			this.scrollToBottom(event);

			return true;
		},
		onOrientationChange(event = {})
		{
			clearTimeout(this.scrollToTimeout);

			if (this.application.device.type !== DeviceType.mobile)
			{
				return false;
			}

			Logger.log('Orientation changed');

			if (!this.scrollChangedByUser)
			{
				this.scrollToTimeout = setTimeout(() => this.scrollToBottom({force: true}), 300);
			}
		},
		onWindowFocus(event = {})
		{
			this.windowFocused = true;
			this.readMessage();

			return true;
		},
		onWindowBlur(event = {})
		{
			this.windowFocused = false;
		},
		requestHistory()
		{
			if (!this.requestHistoryBlockIntersect)
			{
				return false;
			}

			if (this.waitLoadHistory || !this.windowFocused || this.animateScrollId)
			{
				this.requestHistoryDelayed();
				return false;
			}

			if (
				this.scrollPositionChangeTime + 100 > new Date().getTime()
			//	|| this.$refs.body.scrollTop < 0
			)
			{
				this.requestHistoryDelayed();
				return true;
			}

			this.waitLoadHistory = true;

			clearTimeout(this.waitLoadHistoryTimeout);
			this.waitLoadHistoryTimeout = setTimeout(() => {
				this.waitLoadHistory = false;
			}, 10000);

			let length = this.collection.length;
			let messageShowCount = this.messageShowCount;
			if (length > messageShowCount)
			{
				let element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listItem)[0];

				this.$store.commit('application/increaseDialogExtraCount', {count: this.startMessageLimit});
				Utils.scrollToElementAfterLoadHistory(this, element);

				return true;
			}

			this.$emit('requestHistory', {lastId: this.firstMessageId});
		},
		requestUnread()
		{
			if (!this.requestUnreadBlockIntersect)
			{
				return false;
			}

			if (this.waitLoadUnread || !this.windowFocused || this.animateScrollId)
			{
				this.requestUnreadDelayed();
				return false;
			}

			if (
				this.scrollPositionChangeTime + 10 > new Date().getTime()
				//|| this.$refs.body.scrollTop > this.$refs.body.scrollHeight - this.$refs.body.clientHeight
			)
			{
				this.requestUnreadDelayed();
				return true;
			}

			this.waitLoadUnread = true;
			this.skipUnreadScroll = true;

			this.$emit('requestUnread', {lastId: this.lastMessageId});
		},
		onRequestHistoryAnswer(event = {})
		{
			if (event.error)
			{
				this.historyLoaderBlocked = false;
			}
			else
			{
				this.historyLoaderBlocked = event.count < this.startMessageLimit;
				this.$store.commit('application/increaseDialogExtraCount', {count: event.count});
			}

			if (this.historyLoaderBlocked)
			{
				this.historyLoaderShow = false;
			}

			let element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listItem)[0];

			if (event.count > 0)
			{
				if (element)
				{
					Utils.scrollToElementAfterLoadHistory(this, element);
				}
			}
			else if (event.error)
			{
				element.scrollIntoView(true);
			}
			else
			{
				Utils.scrollToPosition(this, 0);
			}

			clearTimeout(this.waitLoadHistoryTimeout);
			this.waitLoadHistoryTimeout = setTimeout(() => {
				this.waitLoadHistory = false;
			}, 1000);

			return true;
		},
		onRequestUnreadAnswer(event = {})
		{
			if (event.error)
			{
				this.historyLoaderBlocked = false;
			}
			else
			{
				if (event.count < this.startMessageLimit)
				{
					this.unreadLoaderShow = false;
				}
				this.$store.commit('application/increaseDialogExtraCount', {count: event.count});
			}

			let body = this.$refs.body;
			if (event.count > 0)
			{
			}
			else if (event.error)
			{
				let element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listUnreadLoader)[0];
				if (element)
				{
					Utils.scrollToPosition(this, body.scrollTop - element.offsetHeight*2);
				}
				else
				{
					Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
				}
			}
			else
			{
				Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
			}

			setTimeout(() => this.waitLoadUnread = false, 1000);

			return true;
		},
		onSendReadMessages(event = {})
		{
			this.readMessageDelayed();

			return true;
		},
		readMessage()
		{
			if (!this.windowFocused)
			{
				return false;
			}

			this.readMessageQueue = this.readMessageQueue.filter(messageId =>
			{
				if (this.readMessageTarget[messageId])
				{
					if (this.observers[ObserverType.read])
					{
						this.observers[ObserverType.read].unobserve(this.readMessageTarget[messageId]);
					}
					delete this.readMessageTarget[messageId];
				}

				this.requestReadMessage(messageId);
				return false;
			});
		},
		requestReadMessage(messageId)
		{
			this.$emit('readMessage', {id: messageId});
		},

		onClickByUserName(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('clickByUserName', event)
		},

		onClickByUploadCancel(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('clickByUploadCancel', event)
		},

		onClickByKeyboardButton(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('clickByKeyboardButton', event)
		},

		onClickByChatTeaser(event)
		{
			this.$emit('clickByChatTeaser', event)
		},

		onClickByMessageMenu(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('clickByMessageMenu', event)
		},

		onClickByMessageRetry(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('clickByMessageRetry', event)
		},

		onClickByReadedList(event)
		{
			const readedList = this.dialog.readedList.filter(record => record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId);
			this.$emit('clickByReadedList', {list: readedList, event})
		},

		onMessageReactionSet(event)
		{
			this.$emit('setMessageReaction', event)
		},

		onMessageReactionListOpen(event)
		{
			this.$emit('openMessageReactionList', event)
		},

		onDragMessage(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.captureMove = event.result;

			if (!event.result)
			{
				this.capturedMoveEvent = null;
			}
		},

		onQuoteMessage(event)
		{
			if (!this.windowFocused)
			{
				return false;
			}
			this.$emit('quoteMessage', event)
		},

		_getDateFormat()
		{
			if (this.dateFormatFunction)
			{
				return this.dateFormatFunction;
			}

			this.dateFormatFunction = Object.create(BX.Main.Date);
			if (this.$root.$bitrixMessages)
			{
				this.dateFormatFunction._getMessage = (phrase) => this.$root.$bitrixMessages[phrase];
			}

			return this.dateFormatFunction;
		},
		_groupTitle(date)
		{
			const id = Utils.getDateFormat(date);
			if (this.cacheGroupTitle[id])
			{
				return {
					id: id,
					title: this.cacheGroupTitle[id]
				};
			}

			let dateFormat = MessengerUtils.date.getFormatType(
				BX.Messenger.Const.DateFormat.groupTitle,
				this.$root.$bitrixMessages
			);

			this.cacheGroupTitle[id] = this._getDateFormat().format(dateFormat, date);

			return {
				id: id,
				title: this.cacheGroupTitle[id]
			};
		},

		animationTrigger(type, start, element)
		{
			let templateId = element.dataset.templateId;
			let templateType = element.dataset.type;
			let body = this.$refs.body;

			if (!body || !templateId)
			{
				return false;
			}

			if (start)
			{
				if (!this.animationScrollHeightStart)
				{
					this.animationScrollHeightStart = body.scrollHeight;
					this.animationScrollHeightEnd = body.scrollHeight;
					this.animationScrollTop = body.scrollTop;
					this.animationScrollChange = 0;

					clearTimeout(this.scrollToTimeout);
					this.scrollChangedByUser = !(body.scrollTop + this.scrollButtonDiff >= body.scrollHeight - body.clientHeight);

					if (this.scrollChangedByUser && !this.showScrollButton && this.unreadCounter > 1)
					{
						this.showScrollButton = true;
					}
				}
			}
			else
			{
				this.animationScrollHeightEnd = body.scrollHeight;
			}

			if (
				!this.collectionMutationType.applied
				&& this.collectionMutationType.initialType !== MutationType.set
			)
			{
				if (start)
				{
					this.animationCollection.push(templateId);
				}
				else
				{
					this.animationCollection = this.animationCollection.filter(id => {
						delete this.animationCollectionOffset[templateId];
						return id !== templateId;
					});
				}
				this.animationStart();
				return false;
			}

			if (
				!this.collectionMutationType.applied
				&& this.collectionMutationType.initialType === MutationType.set
				&& this.collectionMutationType.appliedType === MutationType.setBefore
			)
			{
				let unreadId = Utils.getFirstUnreadMessage(this.collection);
				if (unreadId)
				{
					Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);
					return false;
				}

				Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);

				if (start)
				{
					this.animationCollection.push(templateId);
				}
				else
				{
					this.animationCollection = this.animationCollection.filter(id => {
						delete this.animationCollectionOffset[templateId];
						return id !== templateId;
					});
				}

				this.animationStart();
				return false;
			}

			if (start)
			{
				if (type === AnimationType.leave)
				{
					this.animationCollectionOffset[templateId] = element.offsetHeight;
				}

				if (this.animationType === AnimationType.none)
				{
					this.animationType = type;
				}
				else if (this.animationType !== type)
				{
					this.animationType = AnimationType.mixed;
				}

				this.animationCollection.push(templateId);
			}
			else
			{
				if (type === AnimationType.enter)
				{
					let offset = element.offsetHeight;

					this.animationScrollChange += offset;
					body.scrollTop += offset;
				}
				else if (type === AnimationType.leave)
				{
					let offset = this.animationCollectionOffset[templateId]? this.animationCollectionOffset[templateId]: 0;
					this.animationScrollChange -= offset;
					body.scrollTop -= offset;

					this.animationScrollLastIsDelimeter = templateType !== TemplateType.message;
				}

				this.animationCollection = this.animationCollection.filter(id => {
					delete this.animationCollectionOffset[templateId];
					return id !== templateId;
				});
			}

			this.animationStart();
		},

		animationStart()
		{
			if (this.animationCollection.length > 0)
			{
				return false;
			}

			let body = this.$refs.body;

			if (this.animationType === AnimationType.leave)
			{
				let newScrollPosition = 0;

				// fix for chrome dom rendering: while delete node, scroll change immediately
				if (body.scrollTop !== this.animationScrollTop + this.animationScrollChange)
				{
					newScrollPosition = this.animationScrollTop + this.animationScrollChange
				}
				else
				{
					newScrollPosition = body.scrollTop;
				}

				// fix position if last element the same type of new element
				if (!this.animationScrollLastIsDelimeter)
				{
					newScrollPosition += this.templateMessageWithNameDifferent;
				}

				if (newScrollPosition !== body.scrollTop)
				{
					Utils.scrollToPosition(this, newScrollPosition);
				}
			}
			else if (this.animationType === AnimationType.mixed)
			{
				let unreadId = Utils.getFirstUnreadMessage(this.collection);
				if (unreadId)
				{
					Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);
				}
			}

			this.animationType = AnimationType.none;
			this.animationScrollHeightStart = 0;
			this.animationScrollHeightEnd = 0;
			this.animationScrollTop = 0;
			this.animationScrollChange = 0;

			if (Utils.scrollByMutationType(this))
			{
				return false;
			}

			if (this.scrollChangedByUser)
			{
				Logger.warn('Dialog.animationStart: canceled: scroll changed by user');
				return false;
			}

			if (this.unreadCounter > 0 && this.firstUnreadMessageId)
			{
				if (this.skipUnreadScroll)
				{
					this.skipUnreadScroll = false;
					return;
				}

				Utils.scrollToFirstUnreadMessage(this, this.collection, this.firstUnreadMessageId);
				return;
			}

			this.scrollTo(() =>
			{
				if (this.unreadCounter <= 0 && this.messageExtraCount)
				{
					this.$store.commit('application/clearDialogExtraCount');
				}
			});
		},
	},

	directives:
	{
		'bx-im-directive-dialog-observer':
		{
			inserted(element, bindings, vnode)
			{
				if (bindings.value === ObserverType.none)
				{
					return false;
				}

				if (!vnode.context.observers[bindings.value])
				{
					vnode.context.observers[bindings.value] = Utils.getMessageLoaderObserver({
						type: bindings.value,
						context: vnode.context
					});
				}
				vnode.context.observers[bindings.value].observe(element);

				return true;
			},
			unbind(element, bindings, vnode)
			{
				if (bindings.value === ObserverType.none)
				{
					return true;
				}

				if (vnode.context.observers[bindings.value])
				{
					vnode.context.observers[bindings.value].unobserve(element);
				}

				return true;
			}
		},
	},

	template: `
		<div class="bx-im-dialog" @click="onDialogClick" @touchmove="onDialogMove" ref="container">	
			<div :class="[DialogReferenceClassName.listBody, {
				'bx-im-dialog-list-scroll-blocked': scrollBlocked, 
				'bx-im-dialog-dark-background': isDarkBackground,
				'bx-im-dialog-mobile': isMobile,
			}]" @scroll.passive="onScroll" ref="body">
				<template v-if="historyLoaderShow">
					<div class="bx-im-dialog-load-more bx-im-dialog-load-more-history" v-bx-im-directive-dialog-observer="ObserverType.history">
						<span class="bx-im-dialog-load-more-text">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>
					</div>
				</template>
				<transition-group 
					tag="div" class="bx-im-dialog-list-box" name="bx-im-dialog-message-animation" 
					@before-enter="animationTrigger(AnimationType.enter, true, $event)" 
					@after-enter="animationTrigger(AnimationType.enter, false, $event)" 
					@before-leave="animationTrigger(AnimationType.leave, true, $event)" 
					@after-leave="animationTrigger(AnimationType.leave, false, $event)"
				>
					<template v-for="element in elementsWithLimit">
						<template v-if="element.templateType == TemplateType.message">
							<div :class="['bx-im-dialog-list-item', DialogReferenceClassName.listItem, DialogReferenceClassName.listItem+'-'+element.id]" :data-message-id="element.id" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId" v-bx-im-directive-dialog-observer="element.unread? ObserverType.read: ObserverType.none">			
								<component :is="element.params.COMPONENT_ID"
									:userId="userId" 
									:dialogId="dialogId"
									:chatId="chatId"
									:dialog="dialog"
									:message="element"
									:enableReactions="enableReactions"
									:enableDateActions="enableDateActions"
									:enableCreateContent="showMessageMenu"
									:enableGestureQuote="enableGestureQuote"
									:enableGestureQuoteFromRight="enableGestureQuoteFromRight"
									:enableGestureMenu="enableGestureMenu"
									:showName="showMessageUserName"
									:showAvatar="showMessageAvatar"
									:showMenu="showMessageMenu"
									:capturedMoveEvent="capturedMoveEvent"
									:referenceContentClassName="DialogReferenceClassName.listItem"
									:referenceContentBodyClassName="DialogReferenceClassName.listItemBody"
									:referenceContentNameClassName="DialogReferenceClassName.listItemName"
									@clickByUserName="onClickByUserName"
									@clickByUploadCancel="onClickByUploadCancel"
									@clickByKeyboardButton="onClickByKeyboardButton"
									@clickByChatTeaser="onClickByChatTeaser"
									@clickByMessageMenu="onClickByMessageMenu"
									@clickByMessageRetry="onClickByMessageRetry"
									@setMessageReaction="onMessageReactionSet"
									@openMessageReactionList="onMessageReactionListOpen"
									@dragMessage="onDragMessage"
									@quoteMessage="onQuoteMessage"
								/>
							</div>
						</template>
						<template v-else-if="element.templateType == TemplateType.group">
							<div class="bx-im-dialog-group" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId">
								<div class="bx-im-dialog-group-date">{{ element.text }}</div>
							</div>
						</template>
						<template v-else-if="element.templateType == TemplateType.delimiter">
							<div class="bx-im-dialog-delimiter" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId"></div>
						</template>
					</template>
				</transition-group>
				<template v-if="unreadLoaderShow">
					<div :class="['bx-im-dialog-load-more', 'bx-im-dialog-load-more-unread', DialogReferenceClassName.listUnreadLoader]" v-bx-im-directive-dialog-observer="ObserverType.unread">
						<span class="bx-im-dialog-load-more-text">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>
					</div>
				</template>
				<transition name="bx-im-dialog-status">
					<template v-if="statusWriting">
						<div class="bx-im-dialog-status">
							<span class="bx-im-dialog-status-writing"></span>
							{{ statusWriting }}
						</div>
					</template>
					<template v-else-if="statusReaded">
						<div class="bx-im-dialog-status" @click="onClickByReadedList">
							{{ statusReaded }}
						</div>
					</template>
				</transition>
			</div>
			<transition name="bx-im-dialog-scroll-button">
				<div v-show="showScrollButton || unreadLoaderShow && unreadCounter" class="bx-im-dialog-scroll-button-box" @click="scrollToBottom()">
					<div class="bx-im-dialog-scroll-button">
						<div v-show="unreadCounter" class="bx-im-dialog-scroll-button-counter">
							<div class="bx-im-dialog-scroll-button-counter-digit">{{unreadCounter}}</div>
						</div>
						<div class="bx-im-dialog-scroll-button-arrow"></div>
					</div>
				</div>
			</transition>
		</div>
	`
});

const Utils = {
	getDateFormat(date)
	{
		return date.toJSON().slice(0,10);
	},

	scrollToMessage(context, collection, messageId = 0, force = false, stickToTop = true)
	{
		let body = context.$refs.body;

		let element = body.getElementsByClassName(DialogReferenceClassName.listItem+'-'+messageId)[0];

		let end = 0;
		if (!element)
		{
			if (stickToTop)
			{
				end = 10;
			}
			else
			{
				end = body.scrollHeight - body.clientHeight;
			}
		}
		else if (stickToTop)
		{
			end = element.offsetTop - (context.templateMessageScrollOffset/2);
		}
		else
		{
			end = element.offsetTop + element.offsetHeight - body.clientHeight + (context.templateMessageScrollOffset/2);
		}

		if (force)
		{
			this.scrollToPosition(context, end);
		}
		else
		{
			context.scrollTo({end});
		}

		return true;
	},

	getFirstUnreadMessage(collection)
	{
		let unreadId = null;

		for (let index = collection.length-1; index >= 0; index--)
		{
			if (!collection[index].unread)
			{
				break;
			}

			unreadId = collection[index].id;
		}

		return unreadId;
	},

	scrollToPosition(context, position)
	{
		let body = context.$refs.body;
		if (!body)
		{
			return false;
		}

		if (context.animateScrollId)
		{
			Animation.cancel(context.animateScrollId);
			this.scrollAnimating = false;
			context.animateScrollId = null;
		}

		body.scrollTop = position;
	},

	scrollByMutationType(context)
	{
		if (
			context.collectionMutationType.applied
			|| context.collectionMutationType.initialType !== MutationType.set)
		{
			return false;
		}

		context.$store.dispatch('messages/applyMutationType', {chatId: context.chatId});

		if (context.collectionMutationType.appliedType === MutationType.setBefore)
		{
			let body = context.$refs.body;
			this.scrollToPosition(context, body.scrollHeight - body.clientHeight);

			return true;
		}

		if (context.collectionMutationType.scrollMessageId > 0)
		{
			let unreadId = Utils.getFirstUnreadMessage(context.collection);
			let toMessageId = context.collectionMutationType.scrollMessageId;
			let force = !context.collectionMutationType.scrollStickToTop;
			let stickToTop = context.collectionMutationType.scrollStickToTop;

			if (unreadId && toMessageId > unreadId)
			{
				stickToTop = true;
				force = true;
				toMessageId = unreadId;
				unreadId = null;
			}

			Utils.scrollToMessage(context, context.collection, toMessageId, force, stickToTop);

			if (unreadId)
			{
				Utils.scrollToMessage(context, context.collection, unreadId);
				return true;
			}
		}

		return false;
	},

	scrollToFirstUnreadMessage(context, collection, unreadId = null, force = false)
	{
		let body = context.$refs.body;

		let element = false;
		if (unreadId !== null)
		{
			element = body.getElementsByClassName(DialogReferenceClassName.listItem+'-'+unreadId)[0];
		}
		if (!element)
		{
			unreadId = this.getFirstUnreadMessage(collection);
		}

		this.scrollToMessage(context, collection, unreadId, force);
	},

	scrollToElementAfterLoadHistory(context, element)
	{
		let elementBody = element.getElementsByClassName(DialogReferenceClassName.listItemBody)[0];
		if (elementBody)
		{
			element = elementBody;
		}

		let previousOffsetTop = element.getBoundingClientRect().top;

		context.$nextTick(() =>
		{
			clearTimeout(context.waitLoadHistoryTimeout);
			context.waitLoadHistoryTimeout = setTimeout(() => {
				context.waitLoadHistory = false;
			}, 1000);

			if (!element)
			{
				return false;
			}

			this.scrollToPosition(context, element.getBoundingClientRect().top - previousOffsetTop);
		});
	},

	scrollToElementAfterLoadUnread(context, firstMessageId = 0)
	{
		context.showScrollButton = true;

		if (firstMessageId)
		{
			this.scrollToMessage(context, context.collection, firstMessageId, false, false);
		}
	},

	getMessageLoaderObserver(config)
	{
		if (
			typeof window.IntersectionObserver === 'undefined'
			|| config.value === ObserverType.none
		)
		{
			return {
				observe: () => {},
				unobserve: () => {}
			};
		}

		let observerCallback, observerOptions;

		if (config.type === ObserverType.read)
		{
			observerCallback = function (entries, observer)
			{
				entries.forEach(function(entry)
				{
					let sendReadEvent = false;
					if (entry.isIntersecting)
					{
						if (entry.intersectionRatio >= 1)
						{
							sendReadEvent = true;
						}
						else if (
							entry.intersectionRatio > 0
							&& entry.rootBounds.height < entry.boundingClientRect.height + 20
							&& entry.intersectionRect.height > entry.rootBounds.height / 2
						)
						{
							sendReadEvent = true;
						}
					}

					if (sendReadEvent)
					{
						config.context.readMessageQueue.push(entry.target.dataset.messageId);
						config.context.readMessageTarget[entry.target.dataset.messageId] = entry.target;
					}
					else
					{
						config.context.readMessageQueue = config.context.readMessageQueue.filter(messageId => messageId !== entry.target.dataset.messageId);
						delete config.context.readMessageTarget[entry.target.dataset.messageId];
					}

					if (config.context.enableReadMessages)
					{
						config.context.readMessageDelayed();
					}

				});
			};
			observerOptions = {
				root: config.context.$refs.body,
				threshold: new Array(101).fill(0).map((zero, index) => index * 0.01)
			};
		}
		else
		{
			observerCallback = function (entries, observer)
			{
				entries.forEach(function(entry)
				{
					if (entry.isIntersecting)
					{
						if (config.type === ObserverType.unread)
						{
							config.context.requestUnreadBlockIntersect = true;
							config.context.requestUnreadDelayed();
						}
						else
						{
							config.context.requestHistoryBlockIntersect = true;
							config.context.requestHistoryDelayed();
						}
					}
					else
					{
						if (config.type === ObserverType.unread)
						{
							config.context.requestUnreadBlockIntersect = false;
						}
						else
						{
							config.context.requestHistoryBlockIntersect = false;
						}
					}
				});
			};
			observerOptions = {
				root: config.context.$refs.body,
				threshold: [0, 0.01, 0.99, 1]
			};
		}

		return new IntersectionObserver(observerCallback, observerOptions);
	}
};

const Blocks = {
	getDelimiter(id = 0)
	{
		return {
			templateId: 'delimiter'+id,
			templateType: TemplateType.delimiter
		};
	},
	getGroup(id = 0, text = '')
	{
		return {
			templateId: 'group'+id,
			templateType: TemplateType.group,
			text: text
		};
	},
	getHistoryLoader()
	{
		return {
			templateId: 'historyLoader',
			templateType: TemplateType.historyLoader,
		};
	},
	getUnreadLoader()
	{
		return {
			templateId: 'unreadLoader',
			templateType: TemplateType.unreadLoader,
		};
	},
	getLoadButton(id = 0, text = '', type = LoadButtonTypes.before)
	{
		return {
			templateId: 'loadButton'+id+type,
			templateType: TemplateType.button,
			text: text,
			type: type,
			messageId: id
		};
	}
};
dialog/dist/dialog.bundle.js.map000066400000270713147744174710012623 0ustar00{"version":3,"file":"dialog.bundle.js","sources":["../src/dialog.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Dialog Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './dialog.css';\nimport 'main.polyfill.intersectionobserver';\nimport {Vue} from 'ui.vue';\nimport {Vuex} from 'ui.vue.vuex';\nimport 'im.view.message';\nimport {DeviceType, MutationType, DialogReferenceClassName, DialogType} from \"im.const\";\nimport {Utils as MessengerUtils} from \"im.lib.utils\";\nimport {Animation} from \"im.lib.animation\";\nimport {Logger} from \"im.lib.logger\";\n\nconst TemplateType = Object.freeze({\n\tmessage: 'message',\n\tdelimiter: 'delimiter',\n\tgroup: 'group',\n\thistoryLoader: 'historyLoader',\n\tunreadLoader: 'unreadLoader',\n\tbutton: 'button',\n});\n\nconst ObserverType = Object.freeze({\n\thistory: 'history',\n\tunread: 'unread',\n\tread: 'read',\n\tnone: 'none',\n});\n\nconst LoadButtonTypes = Object.freeze({\n\tbefore: 'before',\n\tafter: 'after'\n});\n\nconst AnimationType = Object.freeze({\n\tnone: 'none',\n\tmixed: 'mixed',\n\tenter: 'enter',\n\tleave: 'leave',\n});\n\nVue.component('bx-im-view-dialog',\n{\n\t/**\n\t * @emits 'requestHistory' {lastId: number, limit: number}\n\t * @emits 'requestUnread' {lastId: number, limit: number}\n\t * @emits 'readMessage' {id: number}\n\t * @emits 'quoteMessage' {message: object}\n\t * @emits 'click' {event: MouseEvent}\n\t * @emits 'clickByUserName' {user: object, event: MouseEvent}\n\t * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}\n\t * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}\n\t * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}\n\t * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}\n\t * @emits 'clickByCommand' {type: string, value: string, event: MouseEvent}\n\t * @emits 'clickByMention' {type: string, value: string, event: MouseEvent}\n\t * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}\n\t * @emits 'clickByReadedList' {list: array, event: MouseEvent}\n\t * @emits 'setMessageReaction' {message: object, reaction: object}\n\t * @emits 'openMessageReactionList' {message: object, values: object}\n\t */\n\n\t/**\n\t * @listens props.listenEventScrollToBottom {force:boolean, cancelIfScrollChange:boolean} (global|application) -- scroll dialog to bottom, see more in methods.onScrollToBottom()\n\t * @listens props.listenEventRequestHistory {count:number} (application)\n\t * @listens props.listenEventRequestUnread {count:number} (application)\n\t * @listens props.listenEventSendReadMessages {} (application)\n\t */\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tdialogId: { default: 0 },\n\t\tchatId: { default: 0 },\n\t\tmessageLimit: { default: 20 },\n\t\tmessageExtraCount: { default: 0 },\n\t\tlistenEventScrollToBottom: { default: '' },\n\t\tlistenEventRequestHistory: { default: '' },\n\t\tlistenEventRequestUnread: { default: '' },\n\t\tlistenEventSendReadMessages: { default: '' },\n\t\tenableReadMessages: { default: true },\n\t\tenableReactions: { default: true },\n\t\tenableDateActions: { default: true },\n\t\tenableCreateContent: { default: true },\n\t\tenableGestureQuote: { default: true },\n\t\tenableGestureQuoteFromRight: { default: true },\n\t\tenableGestureMenu: { default: false },\n\t\tshowMessageUserName: { default: true },\n\t\tshowMessageAvatar: { default: true },\n\t\tshowMessageMenu: { default: true },\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tscrollAnimating: false,\n\t\t\tshowScrollButton: false,\n\t\t\tmessageShowCount: 0,\n\t\t\tunreadLoaderShow: false,\n\t\t\thistoryLoaderBlocked: false,\n\t\t\thistoryLoaderShow: true,\n\t\t\tstartMessageLimit: 0,\n\t\t\ttemplateMessageScrollOffset: 20,\n\t\t\ttemplateMessageWithNameDifferent: 29, // name block + padding top\n\t\t\tTemplateType: TemplateType,\n\t\t\tObserverType: ObserverType,\n\t\t\tDialogReferenceClassName: DialogReferenceClassName,\n\t\t\tcaptureMove: false,\n\t\t\tcapturedMoveEvent: null,\n\t\t\tlastMessageId: null,\n\t\t\tmaxMessageId: null,\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.showScrollButton = this.unreadCounter > 0;\n\n\t\tthis.scrollChangedByUser = false;\n\t\tthis.scrollButtonDiff = 100;\n\t\tthis.scrollButtonShowTimeout = null;\n\t\tthis.scrollPosition = 0;\n\t\tthis.scrollPositionChangeTime = new Date().getTime();\n\n\t\tthis.animationScrollHeightStart = 0;\n\t\tthis.animationScrollHeightEnd = 0;\n\t\tthis.animationScrollTop = 0;\n\t\tthis.animationScrollChange = 0;\n\t\tthis.animationScrollLastUserId = 0;\n\t\tthis.animationType = AnimationType.none;\n\t\tthis.animationCollection = [];\n\t\tthis.animationCollectionOffset = {};\n\t\tthis.animationLastElementBeforeStart = 0;\n\n\t\tthis.observers = {};\n\n\t\tthis.requestHistoryInterval = null;\n\t\tthis.requestUnreadInterval = null;\n\n\t\tthis.lastAuthorId = 0;\n\t\tthis.firstMessageId = null;\n\t\tthis.firstUnreadMessageId = null;\n\t\tthis.dateFormatFunction = null;\n\t\tthis.cacheGroupTitle = {};\n\n\t\tthis.waitLoadHistory = false;\n\t\tthis.waitLoadUnread = false;\n\t\tthis.skipUnreadScroll = false;\n\n\t\tthis.readMessageQueue = [];\n\t\tthis.readMessageTarget = {};\n\t\tthis.readMessageDelayed = MessengerUtils.debounce(this.readMessage, 50, this);\n\n\t\tthis.requestHistoryBlockIntersect = false;\n\t\tthis.requestHistoryDelayed = MessengerUtils.debounce(this.requestHistory, 50, this);\n\n\t\tthis.requestUnreadBlockIntersect = false;\n\t\tthis.requestUnreadDelayed = MessengerUtils.debounce(this.requestUnread, 50, this);\n\n\t\tthis.startMessageLimit = this.messageLimit;\n\n\t\tif (this.listenEventScrollToBottom)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventScrollToBottom, this.onScrollToBottom);\n\t\t\tthis.$root.$on(this.listenEventScrollToBottom, this.onScrollToBottom);\n\t\t}\n\t\tif (this.listenEventRequestHistory)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);\n\t\t\tthis.$root.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);\n\t\t}\n\t\tif (this.listenEventRequestUnread)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);\n\t\t\tthis.$root.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);\n\t\t}\n\t\tif (this.listenEventSendReadMessages)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventSendReadMessages, this.onSendReadMessages);\n\t\t\tthis.$root.$on(this.listenEventSendReadMessages, this.onSendReadMessages);\n\t\t}\n\n\t\twindow.addEventListener(\"orientationchange\", this.onOrientationChange);\n\t\twindow.addEventListener('focus', this.onWindowFocus);\n\t\twindow.addEventListener('blur', this.onWindowBlur);\n\n\t\tVue.event.$on('bitrixmobile:controller:focus', this.onWindowFocus);\n\t\tVue.event.$on('bitrixmobile:controller:blur', this.onWindowBlur);\n\t},\n\tbeforeDestroy()\n\t{\n\t\tthis.observers = {};\n\n\t\tclearTimeout(this.scrollButtonShowTimeout);\n\t\tclearInterval(this.requestHistoryInterval);\n\t\tclearInterval(this.requestUnreadInterval);\n\n\t\tif (this.listenEventScrollToBottom)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventScrollToBottom, this.onScrollToBottom);\n\t\t\tthis.$root.$off(this.listenEventScrollToBottom, this.onScrollToBottom);\n\t\t}\n\t\tif (this.listenEventRequestHistory)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);\n\t\t\tthis.$root.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);\n\t\t}\n\t\tif (this.listenEventRequestUnread)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);\n\t\t\tthis.$root.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);\n\t\t}\n\t\tif (this.listenEventSendReadMessages)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventSendReadMessages, this.onSendReadMessages);\n\t\t\tthis.$root.$off(this.listenEventSendReadMessages, this.onSendReadMessages);\n\t\t}\n\n\t\twindow.removeEventListener(\"orientationchange\", this.onOrientationChange);\n\t\twindow.removeEventListener('focus', this.onWindowFocus);\n\t\twindow.removeEventListener('blur', this.onWindowBlur);\n\n\t\tVue.event.$off('bitrixmobile:controller:focus', this.onWindowFocus);\n\t\tVue.event.$off('bitrixmobile:controller:blur', this.onWindowBlur);\n\t},\n\tmounted()\n\t{\n\t\tlet unreadId = Utils.getFirstUnreadMessage(this.collection);\n\t\tif (unreadId)\n\t\t{\n\t\t\tUtils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true)\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet body = this.$refs.body;\n\t\t\tUtils.scrollToPosition(this, body.scrollHeight - body.clientHeight);\n\t\t}\n\t\tthis.windowFocused = MessengerUtils.platform.isBitrixMobile()? true: document.hasFocus();\n\t},\n\tcomputed:\n\t{\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_DIALOG_', this.$root.$bitrixMessages);\n\t\t},\n\t\tdialog()\n\t\t{\n\t\t\tlet dialog = this.$store.getters['dialogues/get'](this.dialogId);\n\t\t\treturn dialog? dialog: this.$store.getters['dialogues/getBlank']();\n\t\t},\n\t\tcollectionMutationType()\n\t\t{\n\t\t\treturn this.$store.getters['messages/getMutationType'](this.chatId);\n\t\t},\n\t\tcollection()\n\t\t{\n\t\t\treturn this.$store.getters['messages/get'](this.chatId);\n\t\t},\n\t\telementsWithLimit()\n\t\t{\n\t\t\tlet unreadCount = this.collection.filter(element => element.unread).length;\n\t\t\tlet showLimit = this.messageExtraCount + this.messageLimit * 2;\n\t\t\tif (unreadCount > showLimit)\n\t\t\t{\n\t\t\t\tshowLimit = unreadCount;\n\t\t\t}\n\n\t\t\tlet start = this.collection.length - showLimit;\n\t\t\tif (!this.historyLoaderShow || start < 0)\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\n\t\t\tlet slicedCollection = start === 0? this.collection: this.collection.slice(start, this.collection.length);\n\t\t\tthis.messageShowCount = slicedCollection.length;\n\n\t\t\tthis.firstMessageId = null;\n\t\t\tthis.lastMessageId = 0;\n\t\t\tthis.maxMessageId = 0;\n\t\t\tthis.lastMessageAuthorId = 0;\n\n\t\t\tlet collection = [];\n\t\t\tlet lastAuthorId = 0;\n\t\t\tlet groupNode = {};\n\n\t\t\tthis.firstUnreadMessageId = 0;\n\t\t\tlet unreadCountInSlicedCollection = 0;\n\n\t\t\tif (this.messageShowCount > 0)\n\t\t\t{\n\t\t\t\tslicedCollection.forEach(element =>\n\t\t\t\t{\n\t\t\t\t\tif (this.firstMessageId === null || this.firstMessageId > element.id)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.firstMessageId = element.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.maxMessageId < element.id)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.maxMessageId = element.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.lastMessageId = element.id;\n\n\t\t\t\t\tlet group = this._groupTitle(element.date);\n\t\t\t\t\tif (!groupNode[group.title])\n\t\t\t\t\t{\n\t\t\t\t\t\tgroupNode[group.title] = group.id;\n\t\t\t\t\t\tcollection.push(Blocks.getGroup(group.id, group.title));\n\t\t\t\t\t}\n\t\t\t\t\telse if (lastAuthorId !== element.authorId)\n\t\t\t\t\t{\n\t\t\t\t\t\tcollection.push(Blocks.getDelimiter(element.id));\n\t\t\t\t\t}\n\n\t\t\t\t\tcollection.push(element);\n\n\t\t\t\t\tlastAuthorId = element.authorId;\n\n\t\t\t\t\tif (element.unread)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!this.firstUnreadMessageId)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.firstUnreadMessageId = element.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tunreadCountInSlicedCollection++;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.lastMessageAuthorId = lastAuthorId;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.firstMessageId = 0;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.collection.length >= this.messageLimit\n\t\t\t\t&& this.collection.length >= this.messageShowCount\n\t\t\t\t&& this.historyLoaderBlocked === false\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.historyLoaderShow = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.historyLoaderShow = false;\n\t\t\t}\n\n\t\t\tif (this.dialog.unreadLastId > this.maxMessageId)\n\t\t\t{\n\t\t\t\tthis.unreadLoaderShow = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.unreadLoaderShow = false;\n\t\t\t}\n\n\t\t\treturn collection;\n\t\t},\n\t\tstatusWriting()\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.dialog.writingList.length === 0)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (!this.scrollChangedByUser && !this.showScrollButton)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.scrollTo({duration: 500}), 300);\n\t\t\t}\n\n\t\t\treturn this.localize.IM_MESSENGER_DIALOG_WRITES_MESSAGE.replace(\n\t\t\t\t'#USER#', this.dialog.writingList.map(element => element.userName).join(', ')\n\t\t\t);\n\t\t},\n\t\tstatusReaded()\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.dialog.readedList.length === 0)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tlet text = '';\n\n\t\t\tif (this.dialog.type === DialogType.private)\n\t\t\t{\n\t\t\t\tlet record = this.dialog.readedList[0];\n\t\t\t\tif (\n\t\t\t\t\trecord.messageId === this.lastMessageId\n\t\t\t\t\t&& record.userId !== this.lastMessageAuthorId\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tlet dateFormat = MessengerUtils.date.getFormatType(\n\t\t\t\t\t\tBX.Messenger.Const.DateFormat.readedTitle,\n\t\t\t\t\t\tthis.$root.$bitrixMessages\n\t\t\t\t\t);\n\n\t\t\t\t\ttext = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_USER.replace(\n\t\t\t\t\t\t'#DATE#', this._getDateFormat().format(dateFormat, record.date)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet readedList = this.dialog.readedList.filter(record => record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId);\n\t\t\t\tif (readedList.length === 1)\n\t\t\t\t{\n\t\t\t\t\ttext = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace(\n\t\t\t\t\t\t'#USERS#', readedList[0].userName\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse if (readedList.length > 1)\n\t\t\t\t{\n\t\t\t\t\ttext = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace(\n\t\t\t\t\t\t'#USERS#',\n\t\t\t\t\t\tthis.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL\n\t\t\t\t\t\t\t\t.replace('#USER#', readedList[0].userName)\n\t\t\t\t\t\t\t\t.replace('#COUNT#', readedList.length-1)\n\t\t\t\t\t\t\t\t.replace('[LINK]', '')\n\t\t\t\t\t\t\t\t.replace('[/LINK]', '')\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!text)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (!this.scrollChangedByUser && !this.showScrollButton)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.scrollTo({duration: 500}), 300);\n\t\t\t}\n\n\t\t\treturn text;\n\t\t},\n\t\tunreadCounter()\n\t\t{\n\t\t\treturn this.dialog.counter > 999? 999: this.dialog.counter;\n\t\t},\n\t\tscrollBlocked()\n\t\t{\n\t\t\tif (this.application.device.type !== DeviceType.mobile)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.scrollAnimating || this.captureMove;\n\t\t},\n\t\tisDarkBackground()\n\t\t{\n\t\t\treturn this.application.options.darkBackground;\n\t\t},\n\t\tisMobile()\n\t\t{\n\t\t\treturn this.application.device.type === DeviceType.mobile;\n\t\t},\n\n\t\tAnimationType: () => AnimationType,\n\n\t\t...Vuex.mapState({\n\t\t\tapplication: state => state.application,\n\t\t})\n\t},\n\tmethods:\n\t{\n\t\tonDialogClick(event)\n\t\t{\n\t\t\tif (Vue.testNode(event.target, {className: 'bx-im-message-command'}))\n\t\t\t{\n\t\t\t\tthis.onCommandClick(event);\n\t\t\t}\n\t\t\telse if (Vue.testNode(event.target, {className: 'bx-im-mention'}))\n\t\t\t{\n\t\t\t\tthis.onMentionClick(event);\n\t\t\t}\n\n\t\t\tthis.windowFocused = true;\n\t\t\tthis.$emit('click', {event});\n\t\t},\n\t\tonDialogMove(event)\n\t\t{\n\t\t\tif (!this.captureMove)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.capturedMoveEvent = event;\n\t\t},\n\t\tonCommandClick(event)\n\t\t{\n\t\t\tlet value = '';\n\n\t\t\tif (\n\t\t\t\tevent.target.dataset.entity === 'send'\n\t\t\t\t|| event.target.dataset.entity === 'put'\n\t\t\t)\n\t\t\t{\n\t\t\t\tvalue = event.target.nextSibling.innerHTML;\n\t\t\t}\n\t\t\telse if (event.target.dataset.entity === 'call')\n\t\t\t{\n\t\t\t\tvalue = event.target.dataset.command;\n\t\t\t}\n\n\t\t\tthis.$emit('clickByCommand', {type: event.target.dataset.entity, value, event});\n\t\t},\n\t\tonMentionClick(event)\n\t\t{\n\t\t\tthis.$emit('clickByMention', {type: event.target.dataset.type, value: event.target.dataset.value, event});\n\t\t},\n\t\tonScroll(event)\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tthis.scrollPosition = event.target.scrollTop;\n\t\t\tthis.scrollPositionChangeTime = new Date().getTime();\n\n\t\t\tthis.scrollChangedByUser = !(event.target.scrollTop + this.scrollButtonDiff >= event.target.scrollHeight - event.target.clientHeight);\n\n\t\t\tclearTimeout(this.scrollButtonShowTimeout);\n\t\t\tthis.scrollButtonShowTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tif (this.scrollChangedByUser)\n\t\t\t\t{\n\t\t\t\t\tif (!this.showScrollButton)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showScrollButton = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (this.showScrollButton && !this.unreadLoaderShow)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showScrollButton = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 200);\n\n\t\t\tif (event.target.scrollTop === event.target.scrollHeight - event.target.offsetHeight)\n\t\t\t{\n\t\t\t\tclearTimeout(this.scrollButtonShowTimeout);\n\n\t\t\t\tif (this.showScrollButton && !this.unreadLoaderShow)\n\t\t\t\t{\n\t\t\t\t\tthis.showScrollButton = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tscrollToBottom(params = {})\n\t\t{\n\t\t\tlet {\n\t\t\t\tforce = false,\n\t\t\t\tcancelIfScrollChange = false,\n\t\t\t\tduration = null\n\t\t\t} = params;\n\n\t\t\tif (cancelIfScrollChange && this.scrollChangedByUser)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet body = this.$refs.body;\n\n\t\t\tif (this.dialog.counter > 0)\n\t\t\t{\n\t\t\t\tlet scrollToMessageId = this.dialog.counter > 1 && this.firstUnreadMessageId? this.firstUnreadMessageId: this.lastMessageId;\n\t\t\t\tUtils.scrollToFirstUnreadMessage(this, this.collection, scrollToMessageId);\n\n\t\t\t\tif (this.dialog.counter < this.startMessageLimit)\n\t\t\t\t{\n\t\t\t\t\tthis.historyLoaderShow = true;\n\t\t\t\t\tthis.historyLoaderBlocked = false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.showScrollButton = false;\n\n\t\t\tif (force)\n\t\t\t{\n\t\t\t\tUtils.scrollToPosition(this, body.scrollHeight - body.clientHeight);\n\n\t\t\t\tif (this.messageExtraCount)\n\t\t\t\t{\n\t\t\t\t\tthis.$store.commit('application/clearDialogExtraCount');\n\t\t\t\t}\n\t\t\t\tthis.historyLoaderShow = true;\n\t\t\t\tthis.historyLoaderBlocked = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet scrollParams = {};\n\t\t\t\tif (duration)\n\t\t\t\t{\n\t\t\t\t\tscrollParams.duration = duration;\n\t\t\t\t}\n\t\t\t\tthis.scrollTo({\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tif (this.messageExtraCount)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.$store.commit('application/clearDialogExtraCount');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.historyLoaderShow = true;\n\t\t\t\t\t\tthis.historyLoaderBlocked = false;\n\t\t\t\t\t},\n\t\t\t\t\t...scrollParams\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tscrollTo(params = {})\n\t\t{\n\t\t\tif (this.animateScrollId)\n\t\t\t{\n\t\t\t\tAnimation.cancel(this.animateScrollId);\n\t\t\t\tthis.scrollAnimating = false;\n\t\t\t}\n\t\t\tif (typeof params === 'function')\n\t\t\t{\n\t\t\t\tparams = {callback: params};\n\t\t\t}\n\n\t\t\tlet body = this.$refs.body;\n\t\t\tif (!body)\n\t\t\t{\n\t\t\t\tif (params.callback && typeof params.callback === 'function')\n\t\t\t\t{\n\t\t\t\t\tparams.callback();\n\t\t\t\t}\n\t\t\t\tthis.animateScrollId = null;\n\t\t\t\tthis.scrollAnimating = false;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tMessengerUtils.platform.isIos() && (\n\t\t\t\t\tMessengerUtils.platform.getIosVersion() > 12\n\t\t\t\t\t&& MessengerUtils.platform.getIosVersion() < 13.2\n\t\t\t\t)\n\t\t\t)\n\t\t\t{\n\t\t\t\tbody.scrollTop = body.scrollHeight - body.clientHeight;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlet {\n\t\t\t\tstart = body.scrollTop,\n\t\t\t\tend = body.scrollHeight - body.clientHeight,\n\t\t\t\tincrement = 20,\n\t\t\t\tcallback,\n\t\t\t\tduration = 500\n\t\t\t} = params;\n\n\t\t\tlet container = this.$refs.container;\n\n\t\t\tif (container && (end - start) > container.offsetHeight * 3)\n\t\t\t{\n\t\t\t\tstart = end - container.offsetHeight * 3;\n\t\t\t\tLogger.warn('Dialog.scrollTo: Scroll trajectory has been reduced');\n\t\t\t}\n\n\t\t\tthis.scrollAnimating = true;\n\t\t\tLogger.warn('Dialog.scrollTo: User scroll blocked while scrolling');\n\n\t\t\tthis.animateScrollId = Animation.start({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tincrement,\n\t\t\t\tduration,\n\n\t\t\t\telement: body,\n\t\t\t\telementProperty: 'scrollTop',\n\n\t\t\t\tcallback: () =>\n\t\t\t\t{\n\t\t\t\t\tthis.animateScrollId = null;\n\t\t\t\t\tthis.scrollAnimating = false;\n\t\t\t\t\tif (callback && typeof callback === 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tonScrollToBottom(event = {})\n\t\t{\n\t\t\tevent.force = event.force === true;\n\t\t\tevent.cancelIfScrollChange = event.cancelIfScrollChange === true;\n\n\t\t\tif (this.firstUnreadMessageId)\n\t\t\t{\n\t\t\t\tLogger.warn('Dialog.onScrollToBottom: canceled - unread messages');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.scrollToBottom(event);\n\n\t\t\treturn true;\n\t\t},\n\t\tonOrientationChange(event = {})\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.application.device.type !== DeviceType.mobile)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tLogger.log('Orientation changed');\n\n\t\t\tif (!this.scrollChangedByUser)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.scrollToBottom({force: true}), 300);\n\t\t\t}\n\t\t},\n\t\tonWindowFocus(event = {})\n\t\t{\n\t\t\tthis.windowFocused = true;\n\t\t\tthis.readMessage();\n\n\t\t\treturn true;\n\t\t},\n\t\tonWindowBlur(event = {})\n\t\t{\n\t\t\tthis.windowFocused = false;\n\t\t},\n\t\trequestHistory()\n\t\t{\n\t\t\tif (!this.requestHistoryBlockIntersect)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.waitLoadHistory || !this.windowFocused || this.animateScrollId)\n\t\t\t{\n\t\t\t\tthis.requestHistoryDelayed();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.scrollPositionChangeTime + 100 > new Date().getTime()\n\t\t\t//\t|| this.$refs.body.scrollTop < 0\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.requestHistoryDelayed();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.waitLoadHistory = true;\n\n\t\t\tclearTimeout(this.waitLoadHistoryTimeout);\n\t\t\tthis.waitLoadHistoryTimeout = setTimeout(() => {\n\t\t\t\tthis.waitLoadHistory = false;\n\t\t\t}, 10000);\n\n\t\t\tlet length = this.collection.length;\n\t\t\tlet messageShowCount = this.messageShowCount;\n\t\t\tif (length > messageShowCount)\n\t\t\t{\n\t\t\t\tlet element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listItem)[0];\n\n\t\t\t\tthis.$store.commit('application/increaseDialogExtraCount', {count: this.startMessageLimit});\n\t\t\t\tUtils.scrollToElementAfterLoadHistory(this, element);\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.$emit('requestHistory', {lastId: this.firstMessageId});\n\t\t},\n\t\trequestUnread()\n\t\t{\n\t\t\tif (!this.requestUnreadBlockIntersect)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.waitLoadUnread || !this.windowFocused || this.animateScrollId)\n\t\t\t{\n\t\t\t\tthis.requestUnreadDelayed();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.scrollPositionChangeTime + 10 > new Date().getTime()\n\t\t\t\t//|| this.$refs.body.scrollTop > this.$refs.body.scrollHeight - this.$refs.body.clientHeight\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.requestUnreadDelayed();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.waitLoadUnread = true;\n\t\t\tthis.skipUnreadScroll = true;\n\n\t\t\tthis.$emit('requestUnread', {lastId: this.lastMessageId});\n\t\t},\n\t\tonRequestHistoryAnswer(event = {})\n\t\t{\n\t\t\tif (event.error)\n\t\t\t{\n\t\t\t\tthis.historyLoaderBlocked = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.historyLoaderBlocked = event.count < this.startMessageLimit;\n\t\t\t\tthis.$store.commit('application/increaseDialogExtraCount', {count: event.count});\n\t\t\t}\n\n\t\t\tif (this.historyLoaderBlocked)\n\t\t\t{\n\t\t\t\tthis.historyLoaderShow = false;\n\t\t\t}\n\n\t\t\tlet element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listItem)[0];\n\n\t\t\tif (event.count > 0)\n\t\t\t{\n\t\t\t\tif (element)\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToElementAfterLoadHistory(this, element);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (event.error)\n\t\t\t{\n\t\t\t\telement.scrollIntoView(true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tUtils.scrollToPosition(this, 0);\n\t\t\t}\n\n\t\t\tclearTimeout(this.waitLoadHistoryTimeout);\n\t\t\tthis.waitLoadHistoryTimeout = setTimeout(() => {\n\t\t\t\tthis.waitLoadHistory = false;\n\t\t\t}, 1000);\n\n\t\t\treturn true;\n\t\t},\n\t\tonRequestUnreadAnswer(event = {})\n\t\t{\n\t\t\tif (event.error)\n\t\t\t{\n\t\t\t\tthis.historyLoaderBlocked = false;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (event.count < this.startMessageLimit)\n\t\t\t\t{\n\t\t\t\t\tthis.unreadLoaderShow = false;\n\t\t\t\t}\n\t\t\t\tthis.$store.commit('application/increaseDialogExtraCount', {count: event.count});\n\t\t\t}\n\n\t\t\tlet body = this.$refs.body;\n\t\t\tif (event.count > 0)\n\t\t\t{\n\t\t\t}\n\t\t\telse if (event.error)\n\t\t\t{\n\t\t\t\tlet element = this.$refs.body.getElementsByClassName(DialogReferenceClassName.listUnreadLoader)[0];\n\t\t\t\tif (element)\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToPosition(this, body.scrollTop - element.offsetHeight*2);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToPosition(this, body.scrollHeight - body.clientHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tUtils.scrollToPosition(this, body.scrollHeight - body.clientHeight);\n\t\t\t}\n\n\t\t\tsetTimeout(() => this.waitLoadUnread = false, 1000);\n\n\t\t\treturn true;\n\t\t},\n\t\tonSendReadMessages(event = {})\n\t\t{\n\t\t\tthis.readMessageDelayed();\n\n\t\t\treturn true;\n\t\t},\n\t\treadMessage()\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.readMessageQueue = this.readMessageQueue.filter(messageId =>\n\t\t\t{\n\t\t\t\tif (this.readMessageTarget[messageId])\n\t\t\t\t{\n\t\t\t\t\tif (this.observers[ObserverType.read])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.observers[ObserverType.read].unobserve(this.readMessageTarget[messageId]);\n\t\t\t\t\t}\n\t\t\t\t\tdelete this.readMessageTarget[messageId];\n\t\t\t\t}\n\n\t\t\t\tthis.requestReadMessage(messageId);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t},\n\t\trequestReadMessage(messageId)\n\t\t{\n\t\t\tthis.$emit('readMessage', {id: messageId});\n\t\t},\n\n\t\tonClickByUserName(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('clickByUserName', event)\n\t\t},\n\n\t\tonClickByUploadCancel(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('clickByUploadCancel', event)\n\t\t},\n\n\t\tonClickByKeyboardButton(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('clickByKeyboardButton', event)\n\t\t},\n\n\t\tonClickByChatTeaser(event)\n\t\t{\n\t\t\tthis.$emit('clickByChatTeaser', event)\n\t\t},\n\n\t\tonClickByMessageMenu(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('clickByMessageMenu', event)\n\t\t},\n\n\t\tonClickByMessageRetry(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('clickByMessageRetry', event)\n\t\t},\n\n\t\tonClickByReadedList(event)\n\t\t{\n\t\t\tconst readedList = this.dialog.readedList.filter(record => record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId);\n\t\t\tthis.$emit('clickByReadedList', {list: readedList, event})\n\t\t},\n\n\t\tonMessageReactionSet(event)\n\t\t{\n\t\t\tthis.$emit('setMessageReaction', event)\n\t\t},\n\n\t\tonMessageReactionListOpen(event)\n\t\t{\n\t\t\tthis.$emit('openMessageReactionList', event)\n\t\t},\n\n\t\tonDragMessage(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.captureMove = event.result;\n\n\t\t\tif (!event.result)\n\t\t\t{\n\t\t\t\tthis.capturedMoveEvent = null;\n\t\t\t}\n\t\t},\n\n\t\tonQuoteMessage(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$emit('quoteMessage', event)\n\t\t},\n\n\t\t_getDateFormat()\n\t\t{\n\t\t\tif (this.dateFormatFunction)\n\t\t\t{\n\t\t\t\treturn this.dateFormatFunction;\n\t\t\t}\n\n\t\t\tthis.dateFormatFunction = Object.create(BX.Main.Date);\n\t\t\tif (this.$root.$bitrixMessages)\n\t\t\t{\n\t\t\t\tthis.dateFormatFunction._getMessage = (phrase) => this.$root.$bitrixMessages[phrase];\n\t\t\t}\n\n\t\t\treturn this.dateFormatFunction;\n\t\t},\n\t\t_groupTitle(date)\n\t\t{\n\t\t\tconst id = Utils.getDateFormat(date);\n\t\t\tif (this.cacheGroupTitle[id])\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tid: id,\n\t\t\t\t\ttitle: this.cacheGroupTitle[id]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet dateFormat = MessengerUtils.date.getFormatType(\n\t\t\t\tBX.Messenger.Const.DateFormat.groupTitle,\n\t\t\t\tthis.$root.$bitrixMessages\n\t\t\t);\n\n\t\t\tthis.cacheGroupTitle[id] = this._getDateFormat().format(dateFormat, date);\n\n\t\t\treturn {\n\t\t\t\tid: id,\n\t\t\t\ttitle: this.cacheGroupTitle[id]\n\t\t\t};\n\t\t},\n\n\t\tanimationTrigger(type, start, element)\n\t\t{\n\t\t\tlet templateId = element.dataset.templateId;\n\t\t\tlet templateType = element.dataset.type;\n\t\t\tlet body = this.$refs.body;\n\n\t\t\tif (!body || !templateId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (start)\n\t\t\t{\n\t\t\t\tif (!this.animationScrollHeightStart)\n\t\t\t\t{\n\t\t\t\t\tthis.animationScrollHeightStart = body.scrollHeight;\n\t\t\t\t\tthis.animationScrollHeightEnd = body.scrollHeight;\n\t\t\t\t\tthis.animationScrollTop = body.scrollTop;\n\t\t\t\t\tthis.animationScrollChange = 0;\n\n\t\t\t\t\tclearTimeout(this.scrollToTimeout);\n\t\t\t\t\tthis.scrollChangedByUser = !(body.scrollTop + this.scrollButtonDiff >= body.scrollHeight - body.clientHeight);\n\n\t\t\t\t\tif (this.scrollChangedByUser && !this.showScrollButton && this.unreadCounter > 1)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showScrollButton = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.animationScrollHeightEnd = body.scrollHeight;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!this.collectionMutationType.applied\n\t\t\t\t&& this.collectionMutationType.initialType !== MutationType.set\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (start)\n\t\t\t\t{\n\t\t\t\t\tthis.animationCollection.push(templateId);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.animationCollection = this.animationCollection.filter(id => {\n\t\t\t\t\t\tdelete this.animationCollectionOffset[templateId];\n\t\t\t\t\t\treturn id !== templateId;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.animationStart();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!this.collectionMutationType.applied\n\t\t\t\t&& this.collectionMutationType.initialType === MutationType.set\n\t\t\t\t&& this.collectionMutationType.appliedType === MutationType.setBefore\n\t\t\t)\n\t\t\t{\n\t\t\t\tlet unreadId = Utils.getFirstUnreadMessage(this.collection);\n\t\t\t\tif (unreadId)\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tUtils.scrollToPosition(this, body.scrollHeight - body.clientHeight);\n\n\t\t\t\tif (start)\n\t\t\t\t{\n\t\t\t\t\tthis.animationCollection.push(templateId);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.animationCollection = this.animationCollection.filter(id => {\n\t\t\t\t\t\tdelete this.animationCollectionOffset[templateId];\n\t\t\t\t\t\treturn id !== templateId;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.animationStart();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (start)\n\t\t\t{\n\t\t\t\tif (type === AnimationType.leave)\n\t\t\t\t{\n\t\t\t\t\tthis.animationCollectionOffset[templateId] = element.offsetHeight;\n\t\t\t\t}\n\n\t\t\t\tif (this.animationType === AnimationType.none)\n\t\t\t\t{\n\t\t\t\t\tthis.animationType = type;\n\t\t\t\t}\n\t\t\t\telse if (this.animationType !== type)\n\t\t\t\t{\n\t\t\t\t\tthis.animationType = AnimationType.mixed;\n\t\t\t\t}\n\n\t\t\t\tthis.animationCollection.push(templateId);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (type === AnimationType.enter)\n\t\t\t\t{\n\t\t\t\t\tlet offset = element.offsetHeight;\n\n\t\t\t\t\tthis.animationScrollChange += offset;\n\t\t\t\t\tbody.scrollTop += offset;\n\t\t\t\t}\n\t\t\t\telse if (type === AnimationType.leave)\n\t\t\t\t{\n\t\t\t\t\tlet offset = this.animationCollectionOffset[templateId]? this.animationCollectionOffset[templateId]: 0;\n\t\t\t\t\tthis.animationScrollChange -= offset;\n\t\t\t\t\tbody.scrollTop -= offset;\n\n\t\t\t\t\tthis.animationScrollLastIsDelimeter = templateType !== TemplateType.message;\n\t\t\t\t}\n\n\t\t\t\tthis.animationCollection = this.animationCollection.filter(id => {\n\t\t\t\t\tdelete this.animationCollectionOffset[templateId];\n\t\t\t\t\treturn id !== templateId;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.animationStart();\n\t\t},\n\n\t\tanimationStart()\n\t\t{\n\t\t\tif (this.animationCollection.length > 0)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet body = this.$refs.body;\n\n\t\t\tif (this.animationType === AnimationType.leave)\n\t\t\t{\n\t\t\t\tlet newScrollPosition = 0;\n\n\t\t\t\t// fix for chrome dom rendering: while delete node, scroll change immediately\n\t\t\t\tif (body.scrollTop !== this.animationScrollTop + this.animationScrollChange)\n\t\t\t\t{\n\t\t\t\t\tnewScrollPosition = this.animationScrollTop + this.animationScrollChange\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnewScrollPosition = body.scrollTop;\n\t\t\t\t}\n\n\t\t\t\t// fix position if last element the same type of new element\n\t\t\t\tif (!this.animationScrollLastIsDelimeter)\n\t\t\t\t{\n\t\t\t\t\tnewScrollPosition += this.templateMessageWithNameDifferent;\n\t\t\t\t}\n\n\t\t\t\tif (newScrollPosition !== body.scrollTop)\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToPosition(this, newScrollPosition);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.animationType === AnimationType.mixed)\n\t\t\t{\n\t\t\t\tlet unreadId = Utils.getFirstUnreadMessage(this.collection);\n\t\t\t\tif (unreadId)\n\t\t\t\t{\n\t\t\t\t\tUtils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.animationType = AnimationType.none;\n\t\t\tthis.animationScrollHeightStart = 0;\n\t\t\tthis.animationScrollHeightEnd = 0;\n\t\t\tthis.animationScrollTop = 0;\n\t\t\tthis.animationScrollChange = 0;\n\n\t\t\tif (Utils.scrollByMutationType(this))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.scrollChangedByUser)\n\t\t\t{\n\t\t\t\tLogger.warn('Dialog.animationStart: canceled: scroll changed by user');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.unreadCounter > 0 && this.firstUnreadMessageId)\n\t\t\t{\n\t\t\t\tif (this.skipUnreadScroll)\n\t\t\t\t{\n\t\t\t\t\tthis.skipUnreadScroll = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tUtils.scrollToFirstUnreadMessage(this, this.collection, this.firstUnreadMessageId);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.scrollTo(() =>\n\t\t\t{\n\t\t\t\tif (this.unreadCounter <= 0 && this.messageExtraCount)\n\t\t\t\t{\n\t\t\t\t\tthis.$store.commit('application/clearDialogExtraCount');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t},\n\n\tdirectives:\n\t{\n\t\t'bx-im-directive-dialog-observer':\n\t\t{\n\t\t\tinserted(element, bindings, vnode)\n\t\t\t{\n\t\t\t\tif (bindings.value === ObserverType.none)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!vnode.context.observers[bindings.value])\n\t\t\t\t{\n\t\t\t\t\tvnode.context.observers[bindings.value] = Utils.getMessageLoaderObserver({\n\t\t\t\t\t\ttype: bindings.value,\n\t\t\t\t\t\tcontext: vnode.context\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tvnode.context.observers[bindings.value].observe(element);\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tunbind(element, bindings, vnode)\n\t\t\t{\n\t\t\t\tif (bindings.value === ObserverType.none)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (vnode.context.observers[bindings.value])\n\t\t\t\t{\n\t\t\t\t\tvnode.context.observers[bindings.value].unobserve(element);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t},\n\n\ttemplate: `\n\t\t<div class=\"bx-im-dialog\" @click=\"onDialogClick\" @touchmove=\"onDialogMove\" ref=\"container\">\t\n\t\t\t<div :class=\"[DialogReferenceClassName.listBody, {\n\t\t\t\t'bx-im-dialog-list-scroll-blocked': scrollBlocked, \n\t\t\t\t'bx-im-dialog-dark-background': isDarkBackground,\n\t\t\t\t'bx-im-dialog-mobile': isMobile,\n\t\t\t}]\" @scroll.passive=\"onScroll\" ref=\"body\">\n\t\t\t\t<template v-if=\"historyLoaderShow\">\n\t\t\t\t\t<div class=\"bx-im-dialog-load-more bx-im-dialog-load-more-history\" v-bx-im-directive-dialog-observer=\"ObserverType.history\">\n\t\t\t\t\t\t<span class=\"bx-im-dialog-load-more-text\">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition-group \n\t\t\t\t\ttag=\"div\" class=\"bx-im-dialog-list-box\" name=\"bx-im-dialog-message-animation\" \n\t\t\t\t\t@before-enter=\"animationTrigger(AnimationType.enter, true, $event)\" \n\t\t\t\t\t@after-enter=\"animationTrigger(AnimationType.enter, false, $event)\" \n\t\t\t\t\t@before-leave=\"animationTrigger(AnimationType.leave, true, $event)\" \n\t\t\t\t\t@after-leave=\"animationTrigger(AnimationType.leave, false, $event)\"\n\t\t\t\t>\n\t\t\t\t\t<template v-for=\"element in elementsWithLimit\">\n\t\t\t\t\t\t<template v-if=\"element.templateType == TemplateType.message\">\n\t\t\t\t\t\t\t<div :class=\"['bx-im-dialog-list-item', DialogReferenceClassName.listItem, DialogReferenceClassName.listItem+'-'+element.id]\" :data-message-id=\"element.id\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\" v-bx-im-directive-dialog-observer=\"element.unread? ObserverType.read: ObserverType.none\">\t\t\t\n\t\t\t\t\t\t\t\t<component :is=\"element.params.COMPONENT_ID\"\n\t\t\t\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t\t\t\t:dialog=\"dialog\"\n\t\t\t\t\t\t\t\t\t:message=\"element\"\n\t\t\t\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t\t\t\t:enableDateActions=\"enableDateActions\"\n\t\t\t\t\t\t\t\t\t:enableCreateContent=\"showMessageMenu\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuote=\"enableGestureQuote\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuoteFromRight=\"enableGestureQuoteFromRight\"\n\t\t\t\t\t\t\t\t\t:enableGestureMenu=\"enableGestureMenu\"\n\t\t\t\t\t\t\t\t\t:showName=\"showMessageUserName\"\n\t\t\t\t\t\t\t\t\t:showAvatar=\"showMessageAvatar\"\n\t\t\t\t\t\t\t\t\t:showMenu=\"showMessageMenu\"\n\t\t\t\t\t\t\t\t\t:capturedMoveEvent=\"capturedMoveEvent\"\n\t\t\t\t\t\t\t\t\t:referenceContentClassName=\"DialogReferenceClassName.listItem\"\n\t\t\t\t\t\t\t\t\t:referenceContentBodyClassName=\"DialogReferenceClassName.listItemBody\"\n\t\t\t\t\t\t\t\t\t:referenceContentNameClassName=\"DialogReferenceClassName.listItemName\"\n\t\t\t\t\t\t\t\t\t@clickByUserName=\"onClickByUserName\"\n\t\t\t\t\t\t\t\t\t@clickByUploadCancel=\"onClickByUploadCancel\"\n\t\t\t\t\t\t\t\t\t@clickByKeyboardButton=\"onClickByKeyboardButton\"\n\t\t\t\t\t\t\t\t\t@clickByChatTeaser=\"onClickByChatTeaser\"\n\t\t\t\t\t\t\t\t\t@clickByMessageMenu=\"onClickByMessageMenu\"\n\t\t\t\t\t\t\t\t\t@clickByMessageRetry=\"onClickByMessageRetry\"\n\t\t\t\t\t\t\t\t\t@setMessageReaction=\"onMessageReactionSet\"\n\t\t\t\t\t\t\t\t\t@openMessageReactionList=\"onMessageReactionListOpen\"\n\t\t\t\t\t\t\t\t\t@dragMessage=\"onDragMessage\"\n\t\t\t\t\t\t\t\t\t@quoteMessage=\"onQuoteMessage\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if=\"element.templateType == TemplateType.group\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-group\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-dialog-group-date\">{{ element.text }}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if=\"element.templateType == TemplateType.delimiter\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-delimiter\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\"></div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\t\t\t\t</transition-group>\n\t\t\t\t<template v-if=\"unreadLoaderShow\">\n\t\t\t\t\t<div :class=\"['bx-im-dialog-load-more', 'bx-im-dialog-load-more-unread', DialogReferenceClassName.listUnreadLoader]\" v-bx-im-directive-dialog-observer=\"ObserverType.unread\">\n\t\t\t\t\t\t<span class=\"bx-im-dialog-load-more-text\">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition name=\"bx-im-dialog-status\">\n\t\t\t\t\t<template v-if=\"statusWriting\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-status\">\n\t\t\t\t\t\t\t<span class=\"bx-im-dialog-status-writing\"></span>\n\t\t\t\t\t\t\t{{ statusWriting }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else-if=\"statusReaded\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-status\" @click=\"onClickByReadedList\">\n\t\t\t\t\t\t\t{{ statusReaded }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<transition name=\"bx-im-dialog-scroll-button\">\n\t\t\t\t<div v-show=\"showScrollButton || unreadLoaderShow && unreadCounter\" class=\"bx-im-dialog-scroll-button-box\" @click=\"scrollToBottom()\">\n\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button\">\n\t\t\t\t\t\t<div v-show=\"unreadCounter\" class=\"bx-im-dialog-scroll-button-counter\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-counter-digit\">{{unreadCounter}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-arrow\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t`\n});\n\nconst Utils = {\n\tgetDateFormat(date)\n\t{\n\t\treturn date.toJSON().slice(0,10);\n\t},\n\n\tscrollToMessage(context, collection, messageId = 0, force = false, stickToTop = true)\n\t{\n\t\tlet body = context.$refs.body;\n\n\t\tlet element = body.getElementsByClassName(DialogReferenceClassName.listItem+'-'+messageId)[0];\n\n\t\tlet end = 0;\n\t\tif (!element)\n\t\t{\n\t\t\tif (stickToTop)\n\t\t\t{\n\t\t\t\tend = 10;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tend = body.scrollHeight - body.clientHeight;\n\t\t\t}\n\t\t}\n\t\telse if (stickToTop)\n\t\t{\n\t\t\tend = element.offsetTop - (context.templateMessageScrollOffset/2);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tend = element.offsetTop + element.offsetHeight - body.clientHeight + (context.templateMessageScrollOffset/2);\n\t\t}\n\n\t\tif (force)\n\t\t{\n\t\t\tthis.scrollToPosition(context, end);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcontext.scrollTo({end});\n\t\t}\n\n\t\treturn true;\n\t},\n\n\tgetFirstUnreadMessage(collection)\n\t{\n\t\tlet unreadId = null;\n\n\t\tfor (let index = collection.length-1; index >= 0; index--)\n\t\t{\n\t\t\tif (!collection[index].unread)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tunreadId = collection[index].id;\n\t\t}\n\n\t\treturn unreadId;\n\t},\n\n\tscrollToPosition(context, position)\n\t{\n\t\tlet body = context.$refs.body;\n\t\tif (!body)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tif (context.animateScrollId)\n\t\t{\n\t\t\tAnimation.cancel(context.animateScrollId);\n\t\t\tthis.scrollAnimating = false;\n\t\t\tcontext.animateScrollId = null;\n\t\t}\n\n\t\tbody.scrollTop = position;\n\t},\n\n\tscrollByMutationType(context)\n\t{\n\t\tif (\n\t\t\tcontext.collectionMutationType.applied\n\t\t\t|| context.collectionMutationType.initialType !== MutationType.set)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tcontext.$store.dispatch('messages/applyMutationType', {chatId: context.chatId});\n\n\t\tif (context.collectionMutationType.appliedType === MutationType.setBefore)\n\t\t{\n\t\t\tlet body = context.$refs.body;\n\t\t\tthis.scrollToPosition(context, body.scrollHeight - body.clientHeight);\n\n\t\t\treturn true;\n\t\t}\n\n\t\tif (context.collectionMutationType.scrollMessageId > 0)\n\t\t{\n\t\t\tlet unreadId = Utils.getFirstUnreadMessage(context.collection);\n\t\t\tlet toMessageId = context.collectionMutationType.scrollMessageId;\n\t\t\tlet force = !context.collectionMutationType.scrollStickToTop;\n\t\t\tlet stickToTop = context.collectionMutationType.scrollStickToTop;\n\n\t\t\tif (unreadId && toMessageId > unreadId)\n\t\t\t{\n\t\t\t\tstickToTop = true;\n\t\t\t\tforce = true;\n\t\t\t\ttoMessageId = unreadId;\n\t\t\t\tunreadId = null;\n\t\t\t}\n\n\t\t\tUtils.scrollToMessage(context, context.collection, toMessageId, force, stickToTop);\n\n\t\t\tif (unreadId)\n\t\t\t{\n\t\t\t\tUtils.scrollToMessage(context, context.collection, unreadId);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\tscrollToFirstUnreadMessage(context, collection, unreadId = null, force = false)\n\t{\n\t\tlet body = context.$refs.body;\n\n\t\tlet element = false;\n\t\tif (unreadId !== null)\n\t\t{\n\t\t\telement = body.getElementsByClassName(DialogReferenceClassName.listItem+'-'+unreadId)[0];\n\t\t}\n\t\tif (!element)\n\t\t{\n\t\t\tunreadId = this.getFirstUnreadMessage(collection);\n\t\t}\n\n\t\tthis.scrollToMessage(context, collection, unreadId, force);\n\t},\n\n\tscrollToElementAfterLoadHistory(context, element)\n\t{\n\t\tlet elementBody = element.getElementsByClassName(DialogReferenceClassName.listItemBody)[0];\n\t\tif (elementBody)\n\t\t{\n\t\t\telement = elementBody;\n\t\t}\n\n\t\tlet previousOffsetTop = element.getBoundingClientRect().top;\n\n\t\tcontext.$nextTick(() =>\n\t\t{\n\t\t\tclearTimeout(context.waitLoadHistoryTimeout);\n\t\t\tcontext.waitLoadHistoryTimeout = setTimeout(() => {\n\t\t\t\tcontext.waitLoadHistory = false;\n\t\t\t}, 1000);\n\n\t\t\tif (!element)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.scrollToPosition(context, element.getBoundingClientRect().top - previousOffsetTop);\n\t\t});\n\t},\n\n\tscrollToElementAfterLoadUnread(context, firstMessageId = 0)\n\t{\n\t\tcontext.showScrollButton = true;\n\n\t\tif (firstMessageId)\n\t\t{\n\t\t\tthis.scrollToMessage(context, context.collection, firstMessageId, false, false);\n\t\t}\n\t},\n\n\tgetMessageLoaderObserver(config)\n\t{\n\t\tif (\n\t\t\ttypeof window.IntersectionObserver === 'undefined'\n\t\t\t|| config.value === ObserverType.none\n\t\t)\n\t\t{\n\t\t\treturn {\n\t\t\t\tobserve: () => {},\n\t\t\t\tunobserve: () => {}\n\t\t\t};\n\t\t}\n\n\t\tlet observerCallback, observerOptions;\n\n\t\tif (config.type === ObserverType.read)\n\t\t{\n\t\t\tobserverCallback = function (entries, observer)\n\t\t\t{\n\t\t\t\tentries.forEach(function(entry)\n\t\t\t\t{\n\t\t\t\t\tlet sendReadEvent = false;\n\t\t\t\t\tif (entry.isIntersecting)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (entry.intersectionRatio >= 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsendReadEvent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (\n\t\t\t\t\t\t\tentry.intersectionRatio > 0\n\t\t\t\t\t\t\t&& entry.rootBounds.height < entry.boundingClientRect.height + 20\n\t\t\t\t\t\t\t&& entry.intersectionRect.height > entry.rootBounds.height / 2\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsendReadEvent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sendReadEvent)\n\t\t\t\t\t{\n\t\t\t\t\t\tconfig.context.readMessageQueue.push(entry.target.dataset.messageId);\n\t\t\t\t\t\tconfig.context.readMessageTarget[entry.target.dataset.messageId] = entry.target;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconfig.context.readMessageQueue = config.context.readMessageQueue.filter(messageId => messageId !== entry.target.dataset.messageId);\n\t\t\t\t\t\tdelete config.context.readMessageTarget[entry.target.dataset.messageId];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config.context.enableReadMessages)\n\t\t\t\t\t{\n\t\t\t\t\t\tconfig.context.readMessageDelayed();\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t};\n\t\t\tobserverOptions = {\n\t\t\t\troot: config.context.$refs.body,\n\t\t\t\tthreshold: new Array(101).fill(0).map((zero, index) => index * 0.01)\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\tobserverCallback = function (entries, observer)\n\t\t\t{\n\t\t\t\tentries.forEach(function(entry)\n\t\t\t\t{\n\t\t\t\t\tif (entry.isIntersecting)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (config.type === ObserverType.unread)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfig.context.requestUnreadBlockIntersect = true;\n\t\t\t\t\t\t\tconfig.context.requestUnreadDelayed();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfig.context.requestHistoryBlockIntersect = true;\n\t\t\t\t\t\t\tconfig.context.requestHistoryDelayed();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (config.type === ObserverType.unread)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfig.context.requestUnreadBlockIntersect = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconfig.context.requestHistoryBlockIntersect = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tobserverOptions = {\n\t\t\t\troot: config.context.$refs.body,\n\t\t\t\tthreshold: [0, 0.01, 0.99, 1]\n\t\t\t};\n\t\t}\n\n\t\treturn new IntersectionObserver(observerCallback, observerOptions);\n\t}\n};\n\nconst Blocks = {\n\tgetDelimiter(id = 0)\n\t{\n\t\treturn {\n\t\t\ttemplateId: 'delimiter'+id,\n\t\t\ttemplateType: TemplateType.delimiter\n\t\t};\n\t},\n\tgetGroup(id = 0, text = '')\n\t{\n\t\treturn {\n\t\t\ttemplateId: 'group'+id,\n\t\t\ttemplateType: TemplateType.group,\n\t\t\ttext: text\n\t\t};\n\t},\n\tgetHistoryLoader()\n\t{\n\t\treturn {\n\t\t\ttemplateId: 'historyLoader',\n\t\t\ttemplateType: TemplateType.historyLoader,\n\t\t};\n\t},\n\tgetUnreadLoader()\n\t{\n\t\treturn {\n\t\t\ttemplateId: 'unreadLoader',\n\t\t\ttemplateType: TemplateType.unreadLoader,\n\t\t};\n\t},\n\tgetLoadButton(id = 0, text = '', type = LoadButtonTypes.before)\n\t{\n\t\treturn {\n\t\t\ttemplateId: 'loadButton'+id+type,\n\t\t\ttemplateType: TemplateType.button,\n\t\t\ttext: text,\n\t\t\ttype: type,\n\t\t\tmessageId: id\n\t\t};\n\t}\n};\n"],"names":["TemplateType","Object","freeze","message","delimiter","group","historyLoader","unreadLoader","button","ObserverType","history","unread","read","none","LoadButtonTypes","before","after","AnimationType","mixed","enter","leave","Vue","component","props","userId","default","dialogId","chatId","messageLimit","messageExtraCount","listenEventScrollToBottom","listenEventRequestHistory","listenEventRequestUnread","listenEventSendReadMessages","enableReadMessages","enableReactions","enableDateActions","enableCreateContent","enableGestureQuote","enableGestureQuoteFromRight","enableGestureMenu","showMessageUserName","showMessageAvatar","showMessageMenu","data","scrollAnimating","showScrollButton","messageShowCount","unreadLoaderShow","historyLoaderBlocked","historyLoaderShow","startMessageLimit","templateMessageScrollOffset","templateMessageWithNameDifferent","DialogReferenceClassName","captureMove","capturedMoveEvent","lastMessageId","maxMessageId","created","unreadCounter","scrollChangedByUser","scrollButtonDiff","scrollButtonShowTimeout","scrollPosition","scrollPositionChangeTime","Date","getTime","animationScrollHeightStart","animationScrollHeightEnd","animationScrollTop","animationScrollChange","animationScrollLastUserId","animationType","animationCollection","animationCollectionOffset","animationLastElementBeforeStart","observers","requestHistoryInterval","requestUnreadInterval","lastAuthorId","firstMessageId","firstUnreadMessageId","dateFormatFunction","cacheGroupTitle","waitLoadHistory","waitLoadUnread","skipUnreadScroll","readMessageQueue","readMessageTarget","readMessageDelayed","MessengerUtils","debounce","readMessage","requestHistoryBlockIntersect","requestHistoryDelayed","requestHistory","requestUnreadBlockIntersect","requestUnreadDelayed","requestUnread","event","$on","onScrollToBottom","$root","onRequestHistoryAnswer","onRequestUnreadAnswer","onSendReadMessages","window","addEventListener","onOrientationChange","onWindowFocus","onWindowBlur","beforeDestroy","clearTimeout","clearInterval","$off","removeEventListener","mounted","unreadId","Utils","getFirstUnreadMessage","collection","scrollToFirstUnreadMessage","body","$refs","scrollToPosition","scrollHeight","clientHeight","windowFocused","platform","isBitrixMobile","document","hasFocus","computed","localize","getFilteredPhrases","$bitrixMessages","dialog","$store","getters","collectionMutationType","elementsWithLimit","unreadCount","filter","element","length","showLimit","start","slicedCollection","slice","lastMessageAuthorId","groupNode","forEach","id","_groupTitle","date","title","push","Blocks","getGroup","authorId","getDelimiter","unreadLastId","statusWriting","scrollToTimeout","writingList","setTimeout","scrollTo","duration","IM_MESSENGER_DIALOG_WRITES_MESSAGE","replace","map","userName","join","statusReaded","readedList","text","type","DialogType","private","record","messageId","dateFormat","getFormatType","BX","Messenger","Const","DateFormat","readedTitle","IM_MESSENGER_DIALOG_MESSAGES_READED_USER","_getDateFormat","format","IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT","IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL","counter","scrollBlocked","application","device","DeviceType","mobile","isDarkBackground","options","darkBackground","isMobile","Vuex","mapState","state","methods","onDialogClick","testNode","target","className","onCommandClick","onMentionClick","$emit","onDialogMove","value","dataset","entity","nextSibling","innerHTML","command","onScroll","scrollTop","offsetHeight","scrollToBottom","params","force","cancelIfScrollChange","scrollToMessageId","commit","scrollParams","callback","animateScrollId","Animation","cancel","isIos","getIosVersion","end","increment","container","Logger","warn","elementProperty","log","waitLoadHistoryTimeout","getElementsByClassName","listItem","count","scrollToElementAfterLoadHistory","lastId","error","scrollIntoView","listUnreadLoader","unobserve","requestReadMessage","onClickByUserName","onClickByUploadCancel","onClickByKeyboardButton","onClickByChatTeaser","onClickByMessageMenu","onClickByMessageRetry","onClickByReadedList","list","onMessageReactionSet","onMessageReactionListOpen","onDragMessage","result","onQuoteMessage","create","Main","_getMessage","phrase","getDateFormat","groupTitle","animationTrigger","templateId","templateType","applied","initialType","MutationType","set","animationStart","appliedType","setBefore","offset","animationScrollLastIsDelimeter","newScrollPosition","scrollByMutationType","directives","inserted","bindings","vnode","context","getMessageLoaderObserver","observe","unbind","template","toJSON","scrollToMessage","stickToTop","offsetTop","index","position","dispatch","scrollMessageId","toMessageId","scrollStickToTop","elementBody","listItemBody","previousOffsetTop","getBoundingClientRect","top","$nextTick","scrollToElementAfterLoadUnread","config","IntersectionObserver","observerCallback","observerOptions","entries","observer","entry","sendReadEvent","isIntersecting","intersectionRatio","rootBounds","height","boundingClientRect","intersectionRect","root","threshold","Array","fill","zero","getHistoryLoader","getUnreadLoader","getLoadButton"],"mappings":"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"}dialog/dist/dialog.bundle.map.js000066400000072326147744174710012623 0ustar00{"version":3,"sources":["dialog.bundle.js"],"names":["exports","main_polyfill_intersectionobserver","ui_vue","ui_vue_vuex","im_view_message","im_const","im_lib_utils","im_lib_animation","im_lib_logger","TemplateType","Object","freeze","message","delimiter","group","historyLoader","unreadLoader","button","ObserverType","history","unread","read","none","LoadButtonTypes","before","after","_AnimationType","mixed","enter","leave","Vue","component","props","userId","default","dialogId","chatId","messageLimit","messageExtraCount","listenEventScrollToBottom","listenEventRequestHistory","listenEventRequestUnread","listenEventSendReadMessages","enableReadMessages","enableReactions","enableDateActions","enableCreateContent","enableGestureQuote","enableGestureQuoteFromRight","enableGestureMenu","showMessageUserName","showMessageAvatar","showMessageMenu","data","scrollAnimating","showScrollButton","messageShowCount","unreadLoaderShow","historyLoaderBlocked","historyLoaderShow","startMessageLimit","templateMessageScrollOffset","templateMessageWithNameDifferent","DialogReferenceClassName","captureMove","capturedMoveEvent","lastMessageId","maxMessageId","created","this","unreadCounter","scrollChangedByUser","scrollButtonDiff","scrollButtonShowTimeout","scrollPosition","scrollPositionChangeTime","Date","getTime","animationScrollHeightStart","animationScrollHeightEnd","animationScrollTop","animationScrollChange","animationScrollLastUserId","animationType","animationCollection","animationCollectionOffset","animationLastElementBeforeStart","observers","requestHistoryInterval","requestUnreadInterval","lastAuthorId","firstMessageId","firstUnreadMessageId","dateFormatFunction","cacheGroupTitle","waitLoadHistory","waitLoadUnread","skipUnreadScroll","readMessageQueue","readMessageTarget","readMessageDelayed","Utils","debounce","readMessage","requestHistoryBlockIntersect","requestHistoryDelayed","requestHistory","requestUnreadBlockIntersect","requestUnreadDelayed","requestUnread","event","$on","onScrollToBottom","$root","onRequestHistoryAnswer","onRequestUnreadAnswer","onSendReadMessages","window","addEventListener","onOrientationChange","onWindowFocus","onWindowBlur","beforeDestroy","clearTimeout","clearInterval","$off","removeEventListener","mounted","unreadId","getFirstUnreadMessage","collection","scrollToFirstUnreadMessage","body","$refs","scrollToPosition","scrollHeight","clientHeight","windowFocused","platform","isBitrixMobile","document","hasFocus","computed","babelHelpers","objectSpread","localize","getFilteredPhrases","$bitrixMessages","dialog","$store","getters","collectionMutationType","elementsWithLimit","_this","unreadCount","filter","element","length","showLimit","start","slicedCollection","slice","lastMessageAuthorId","groupNode","forEach","id","_groupTitle","date","title","push","Blocks","getGroup","authorId","getDelimiter","unreadLastId","statusWriting","_this2","scrollToTimeout","writingList","setTimeout","scrollTo","duration","IM_MESSENGER_DIALOG_WRITES_MESSAGE","replace","map","userName","join","statusReaded","_this3","readedList","text","type","DialogType","private","record","messageId","dateFormat","getFormatType","BX","Messenger","Const","DateFormat","readedTitle","IM_MESSENGER_DIALOG_MESSAGES_READED_USER","_getDateFormat","format","IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT","IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL","counter","scrollBlocked","application","device","DeviceType","mobile","isDarkBackground","options","darkBackground","isMobile","AnimationType","Vuex","mapState","state","methods","onDialogClick","testNode","target","className","onCommandClick","onMentionClick","$emit","onDialogMove","value","dataset","entity","nextSibling","innerHTML","command","onScroll","_this4","scrollTop","offsetHeight","scrollToBottom","_this5","params","arguments","undefined","_params$force","force","_params$cancelIfScrol","cancelIfScrollChange","_params$duration","scrollToMessageId","commit","scrollParams","callback","_this6","animateScrollId","Animation","cancel","isIos","getIosVersion","_params","_params$start","_params$end","end","_params$increment","increment","_callback","_params$duration2","container","Logger","warn","elementProperty","_this7","log","_this8","waitLoadHistoryTimeout","getElementsByClassName","listItem","count","scrollToElementAfterLoadHistory","lastId","_this9","error","scrollIntoView","_this10","listUnreadLoader","_this11","unobserve","requestReadMessage","onClickByUserName","onClickByUploadCancel","onClickByKeyboardButton","onClickByChatTeaser","onClickByMessageMenu","onClickByMessageRetry","onClickByReadedList","_this12","list","onMessageReactionSet","onMessageReactionListOpen","onDragMessage","result","onQuoteMessage","_this13","create","Main","_getMessage","phrase","getDateFormat","groupTitle","animationTrigger","_this14","templateId","templateType","applied","initialType","MutationType","set","animationStart","appliedType","setBefore","offset","_offset","animationScrollLastIsDelimeter","_this15","newScrollPosition","scrollByMutationType","directives","bx-im-directive-dialog-observer","inserted","bindings","vnode","context","getMessageLoaderObserver","observe","unbind","template","toJSON","scrollToMessage","stickToTop","offsetTop","index","position","dispatch","scrollMessageId","toMessageId","scrollStickToTop","_this16","elementBody","listItemBody","previousOffsetTop","getBoundingClientRect","top","$nextTick","scrollToElementAfterLoadUnread","config","IntersectionObserver","observerCallback","observerOptions","entries","observer","entry","sendReadEvent","isIntersecting","intersectionRatio","rootBounds","height","boundingClientRect","intersectionRect","root","threshold","Array","fill","zero","getHistoryLoader","getUnreadLoader","getLoadButton","Lib"],"mappings":"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","file":"dialog.bundle.map.js"}dialog/dist/dialog.bundle.min.js000066400000100054147744174710012617 0ustar00(function(t,e,i,s,o,n,a,r,l){"use strict";var c=Object.freeze({message:"message",delimiter:"delimiter",group:"group",historyLoader:"historyLoader",unreadLoader:"unreadLoader",button:"button"});var u=Object.freeze({history:"history",unread:"unread",read:"read",none:"none"});var d=Object.freeze({before:"before",after:"after"});var h=Object.freeze({none:"none",mixed:"mixed",enter:"enter",leave:"leave"});i.Vue.component("bx-im-view-dialog",{props:{userId:{default:0},dialogId:{default:0},chatId:{default:0},messageLimit:{default:20},messageExtraCount:{default:0},listenEventScrollToBottom:{default:""},listenEventRequestHistory:{default:""},listenEventRequestUnread:{default:""},listenEventSendReadMessages:{default:""},enableReadMessages:{default:true},enableReactions:{default:true},enableDateActions:{default:true},enableCreateContent:{default:true},enableGestureQuote:{default:true},enableGestureQuoteFromRight:{default:true},enableGestureMenu:{default:false},showMessageUserName:{default:true},showMessageAvatar:{default:true},showMessageMenu:{default:true}},data:function t(){return{scrollAnimating:false,showScrollButton:false,messageShowCount:0,unreadLoaderShow:false,historyLoaderBlocked:false,historyLoaderShow:true,startMessageLimit:0,templateMessageScrollOffset:20,templateMessageWithNameDifferent:29,TemplateType:c,ObserverType:u,DialogReferenceClassName:n.DialogReferenceClassName,captureMove:false,capturedMoveEvent:null,lastMessageId:null,maxMessageId:null}},created:function t(){this.showScrollButton=this.unreadCounter>0;this.scrollChangedByUser=false;this.scrollButtonDiff=100;this.scrollButtonShowTimeout=null;this.scrollPosition=0;this.scrollPositionChangeTime=(new Date).getTime();this.animationScrollHeightStart=0;this.animationScrollHeightEnd=0;this.animationScrollTop=0;this.animationScrollChange=0;this.animationScrollLastUserId=0;this.animationType=h.none;this.animationCollection=[];this.animationCollectionOffset={};this.animationLastElementBeforeStart=0;this.observers={};this.requestHistoryInterval=null;this.requestUnreadInterval=null;this.lastAuthorId=0;this.firstMessageId=null;this.firstUnreadMessageId=null;this.dateFormatFunction=null;this.cacheGroupTitle={};this.waitLoadHistory=false;this.waitLoadUnread=false;this.skipUnreadScroll=false;this.readMessageQueue=[];this.readMessageTarget={};this.readMessageDelayed=a.Utils.debounce(this.readMessage,50,this);this.requestHistoryBlockIntersect=false;this.requestHistoryDelayed=a.Utils.debounce(this.requestHistory,50,this);this.requestUnreadBlockIntersect=false;this.requestUnreadDelayed=a.Utils.debounce(this.requestUnread,50,this);this.startMessageLimit=this.messageLimit;if(this.listenEventScrollToBottom){i.Vue.event.$on(this.listenEventScrollToBottom,this.onScrollToBottom);this.$root.$on(this.listenEventScrollToBottom,this.onScrollToBottom)}if(this.listenEventRequestHistory){i.Vue.event.$on(this.listenEventRequestHistory,this.onRequestHistoryAnswer);this.$root.$on(this.listenEventRequestHistory,this.onRequestHistoryAnswer)}if(this.listenEventRequestUnread){i.Vue.event.$on(this.listenEventRequestUnread,this.onRequestUnreadAnswer);this.$root.$on(this.listenEventRequestUnread,this.onRequestUnreadAnswer)}if(this.listenEventSendReadMessages){i.Vue.event.$on(this.listenEventSendReadMessages,this.onSendReadMessages);this.$root.$on(this.listenEventSendReadMessages,this.onSendReadMessages)}window.addEventListener("orientationchange",this.onOrientationChange);window.addEventListener("focus",this.onWindowFocus);window.addEventListener("blur",this.onWindowBlur);i.Vue.event.$on("bitrixmobile:controller:focus",this.onWindowFocus);i.Vue.event.$on("bitrixmobile:controller:blur",this.onWindowBlur)},beforeDestroy:function t(){this.observers={};clearTimeout(this.scrollButtonShowTimeout);clearInterval(this.requestHistoryInterval);clearInterval(this.requestUnreadInterval);if(this.listenEventScrollToBottom){i.Vue.event.$off(this.listenEventScrollToBottom,this.onScrollToBottom);this.$root.$off(this.listenEventScrollToBottom,this.onScrollToBottom)}if(this.listenEventRequestHistory){i.Vue.event.$off(this.listenEventRequestHistory,this.onRequestHistoryAnswer);this.$root.$off(this.listenEventRequestHistory,this.onRequestHistoryAnswer)}if(this.listenEventRequestUnread){i.Vue.event.$off(this.listenEventRequestUnread,this.onRequestUnreadAnswer);this.$root.$off(this.listenEventRequestUnread,this.onRequestUnreadAnswer)}if(this.listenEventSendReadMessages){i.Vue.event.$off(this.listenEventSendReadMessages,this.onSendReadMessages);this.$root.$off(this.listenEventSendReadMessages,this.onSendReadMessages)}window.removeEventListener("orientationchange",this.onOrientationChange);window.removeEventListener("focus",this.onWindowFocus);window.removeEventListener("blur",this.onWindowBlur);i.Vue.event.$off("bitrixmobile:controller:focus",this.onWindowFocus);i.Vue.event.$off("bitrixmobile:controller:blur",this.onWindowBlur)},mounted:function t(){var e=f.getFirstUnreadMessage(this.collection);if(e){f.scrollToFirstUnreadMessage(this,this.collection,e,true)}else{var i=this.$refs.body;f.scrollToPosition(this,i.scrollHeight-i.clientHeight)}this.windowFocused=a.Utils.platform.isBitrixMobile()?true:document.hasFocus()},computed:babelHelpers.objectSpread({localize:function t(){return i.Vue.getFilteredPhrases("IM_MESSENGER_DIALOG_",this.$root.$bitrixMessages)},dialog:function t(){var t=this.$store.getters["dialogues/get"](this.dialogId);return t?t:this.$store.getters["dialogues/getBlank"]()},collectionMutationType:function t(){return this.$store.getters["messages/getMutationType"](this.chatId)},collection:function t(){return this.$store.getters["messages/get"](this.chatId)},elementsWithLimit:function t(){var e=this;var i=this.collection.filter(function(t){return t.unread}).length;var s=this.messageExtraCount+this.messageLimit*2;if(i>s){s=i}var o=this.collection.length-s;if(!this.historyLoaderShow||o<0){o=0}var n=o===0?this.collection:this.collection.slice(o,this.collection.length);this.messageShowCount=n.length;this.firstMessageId=null;this.lastMessageId=0;this.maxMessageId=0;this.lastMessageAuthorId=0;var a=[];var r=0;var l={};this.firstUnreadMessageId=0;if(this.messageShowCount>0){n.forEach(function(t){if(e.firstMessageId===null||e.firstMessageId>t.id){e.firstMessageId=t.id}if(e.maxMessageId<t.id){e.maxMessageId=t.id}e.lastMessageId=t.id;var i=e._groupTitle(t.date);if(!l[i.title]){l[i.title]=i.id;a.push(g.getGroup(i.id,i.title))}else if(r!==t.authorId){a.push(g.getDelimiter(t.id))}a.push(t);r=t.authorId;if(t.unread){if(!e.firstUnreadMessageId){e.firstUnreadMessageId=t.id}}});this.lastMessageAuthorId=r}else{this.firstMessageId=0}if(this.collection.length>=this.messageLimit&&this.collection.length>=this.messageShowCount&&this.historyLoaderBlocked===false){this.historyLoaderShow=true}else{this.historyLoaderShow=false}if(this.dialog.unreadLastId>this.maxMessageId){this.unreadLoaderShow=true}else{this.unreadLoaderShow=false}return a},statusWriting:function t(){var e=this;clearTimeout(this.scrollToTimeout);if(this.dialog.writingList.length===0){return""}if(!this.scrollChangedByUser&&!this.showScrollButton){this.scrollToTimeout=setTimeout(function(){return e.scrollTo({duration:500})},300)}return this.localize.IM_MESSENGER_DIALOG_WRITES_MESSAGE.replace("#USER#",this.dialog.writingList.map(function(t){return t.userName}).join(", "))},statusReaded:function t(){var e=this;clearTimeout(this.scrollToTimeout);if(this.dialog.readedList.length===0){return""}var i="";if(this.dialog.type===n.DialogType.private){var s=this.dialog.readedList[0];if(s.messageId===this.lastMessageId&&s.userId!==this.lastMessageAuthorId){var o=a.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.readedTitle,this.$root.$bitrixMessages);i=this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_USER.replace("#DATE#",this._getDateFormat().format(o,s.date))}}else{var r=this.dialog.readedList.filter(function(t){return t.messageId===e.lastMessageId&&t.userId!==e.lastMessageAuthorId});if(r.length===1){i=this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace("#USERS#",r[0].userName)}else if(r.length>1){i=this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace("#USERS#",this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL.replace("#USER#",r[0].userName).replace("#COUNT#",r.length-1).replace("[LINK]","").replace("[/LINK]",""))}}if(!i){return""}if(!this.scrollChangedByUser&&!this.showScrollButton){this.scrollToTimeout=setTimeout(function(){return e.scrollTo({duration:500})},300)}return i},unreadCounter:function t(){return this.dialog.counter>999?999:this.dialog.counter},scrollBlocked:function t(){if(this.application.device.type!==n.DeviceType.mobile){return false}return this.scrollAnimating||this.captureMove},isDarkBackground:function t(){return this.application.options.darkBackground},isMobile:function t(){return this.application.device.type===n.DeviceType.mobile},AnimationType:function t(){return h}},s.Vuex.mapState({application:function t(e){return e.application}})),methods:{onDialogClick:function t(e){if(i.Vue.testNode(e.target,{className:"bx-im-message-command"})){this.onCommandClick(e)}else if(i.Vue.testNode(e.target,{className:"bx-im-mention"})){this.onMentionClick(e)}this.windowFocused=true;this.$emit("click",{event:e})},onDialogMove:function t(e){if(!this.captureMove){return}this.capturedMoveEvent=e},onCommandClick:function t(e){var i="";if(e.target.dataset.entity==="send"||e.target.dataset.entity==="put"){i=e.target.nextSibling.innerHTML}else if(e.target.dataset.entity==="call"){i=e.target.dataset.command}this.$emit("clickByCommand",{type:e.target.dataset.entity,value:i,event:e})},onMentionClick:function t(e){this.$emit("clickByMention",{type:e.target.dataset.type,value:e.target.dataset.value,event:e})},onScroll:function t(e){var i=this;clearTimeout(this.scrollToTimeout);this.scrollPosition=e.target.scrollTop;this.scrollPositionChangeTime=(new Date).getTime();this.scrollChangedByUser=!(e.target.scrollTop+this.scrollButtonDiff>=e.target.scrollHeight-e.target.clientHeight);clearTimeout(this.scrollButtonShowTimeout);this.scrollButtonShowTimeout=setTimeout(function(){if(i.scrollChangedByUser){if(!i.showScrollButton){i.showScrollButton=true}}else{if(i.showScrollButton&&!i.unreadLoaderShow){i.showScrollButton=false}}},200);if(e.target.scrollTop===e.target.scrollHeight-e.target.offsetHeight){clearTimeout(this.scrollButtonShowTimeout);if(this.showScrollButton&&!this.unreadLoaderShow){this.showScrollButton=false}}},scrollToBottom:function t(){var e=this;var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var s=i.force,o=s===void 0?false:s,n=i.cancelIfScrollChange,a=n===void 0?false:n,r=i.duration,l=r===void 0?null:r;if(a&&this.scrollChangedByUser){return false}var c=this.$refs.body;if(this.dialog.counter>0){var u=this.dialog.counter>1&&this.firstUnreadMessageId?this.firstUnreadMessageId:this.lastMessageId;f.scrollToFirstUnreadMessage(this,this.collection,u);if(this.dialog.counter<this.startMessageLimit){this.historyLoaderShow=true;this.historyLoaderBlocked=false}return true}this.showScrollButton=false;if(o){f.scrollToPosition(this,c.scrollHeight-c.clientHeight);if(this.messageExtraCount){this.$store.commit("application/clearDialogExtraCount")}this.historyLoaderShow=true;this.historyLoaderBlocked=false}else{var d={};if(l){d.duration=l}this.scrollTo(babelHelpers.objectSpread({callback:function t(){if(e.messageExtraCount){e.$store.commit("application/clearDialogExtraCount")}e.historyLoaderShow=true;e.historyLoaderBlocked=false}},d))}},scrollTo:function t(){var e=this;var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(this.animateScrollId){r.Animation.cancel(this.animateScrollId);this.scrollAnimating=false}if(typeof i==="function"){i={callback:i}}var s=this.$refs.body;if(!s){if(i.callback&&typeof i.callback==="function"){i.callback()}this.animateScrollId=null;this.scrollAnimating=false;return true}if(a.Utils.platform.isIos()&&a.Utils.platform.getIosVersion()>12&&a.Utils.platform.getIosVersion()<13.2){s.scrollTop=s.scrollHeight-s.clientHeight;return true}var o=i,n=o.start,c=n===void 0?s.scrollTop:n,u=o.end,d=u===void 0?s.scrollHeight-s.clientHeight:u,h=o.increment,f=h===void 0?20:h,g=o.callback,m=o.duration,v=m===void 0?500:m;var p=this.$refs.container;if(p&&d-c>p.offsetHeight*3){c=d-p.offsetHeight*3;l.Logger.warn("Dialog.scrollTo: Scroll trajectory has been reduced")}this.scrollAnimating=true;l.Logger.warn("Dialog.scrollTo: User scroll blocked while scrolling");this.animateScrollId=r.Animation.start({start:c,end:d,increment:f,duration:v,element:s,elementProperty:"scrollTop",callback:function t(){e.animateScrollId=null;e.scrollAnimating=false;if(g&&typeof g==="function"){g()}}})},onScrollToBottom:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};e.force=e.force===true;e.cancelIfScrollChange=e.cancelIfScrollChange===true;if(this.firstUnreadMessageId){l.Logger.warn("Dialog.onScrollToBottom: canceled - unread messages");return false}this.scrollToBottom(e);return true},onOrientationChange:function t(){var e=this;clearTimeout(this.scrollToTimeout);if(this.application.device.type!==n.DeviceType.mobile){return false}l.Logger.log("Orientation changed");if(!this.scrollChangedByUser){this.scrollToTimeout=setTimeout(function(){return e.scrollToBottom({force:true})},300)}},onWindowFocus:function t(){this.windowFocused=true;this.readMessage();return true},onWindowBlur:function t(){this.windowFocused=false},requestHistory:function t(){var e=this;if(!this.requestHistoryBlockIntersect){return false}if(this.waitLoadHistory||!this.windowFocused||this.animateScrollId){this.requestHistoryDelayed();return false}if(this.scrollPositionChangeTime+100>(new Date).getTime()){this.requestHistoryDelayed();return true}this.waitLoadHistory=true;clearTimeout(this.waitLoadHistoryTimeout);this.waitLoadHistoryTimeout=setTimeout(function(){e.waitLoadHistory=false},1e4);var i=this.collection.length;var s=this.messageShowCount;if(i>s){var o=this.$refs.body.getElementsByClassName(n.DialogReferenceClassName.listItem)[0];this.$store.commit("application/increaseDialogExtraCount",{count:this.startMessageLimit});f.scrollToElementAfterLoadHistory(this,o);return true}this.$emit("requestHistory",{lastId:this.firstMessageId})},requestUnread:function t(){if(!this.requestUnreadBlockIntersect){return false}if(this.waitLoadUnread||!this.windowFocused||this.animateScrollId){this.requestUnreadDelayed();return false}if(this.scrollPositionChangeTime+10>(new Date).getTime()){this.requestUnreadDelayed();return true}this.waitLoadUnread=true;this.skipUnreadScroll=true;this.$emit("requestUnread",{lastId:this.lastMessageId})},onRequestHistoryAnswer:function t(){var e=this;var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(i.error){this.historyLoaderBlocked=false}else{this.historyLoaderBlocked=i.count<this.startMessageLimit;this.$store.commit("application/increaseDialogExtraCount",{count:i.count})}if(this.historyLoaderBlocked){this.historyLoaderShow=false}var s=this.$refs.body.getElementsByClassName(n.DialogReferenceClassName.listItem)[0];if(i.count>0){if(s){f.scrollToElementAfterLoadHistory(this,s)}}else if(i.error){s.scrollIntoView(true)}else{f.scrollToPosition(this,0)}clearTimeout(this.waitLoadHistoryTimeout);this.waitLoadHistoryTimeout=setTimeout(function(){e.waitLoadHistory=false},1e3);return true},onRequestUnreadAnswer:function t(){var e=this;var i=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(i.error){this.historyLoaderBlocked=false}else{if(i.count<this.startMessageLimit){this.unreadLoaderShow=false}this.$store.commit("application/increaseDialogExtraCount",{count:i.count})}var s=this.$refs.body;if(i.count>0);else if(i.error){var o=this.$refs.body.getElementsByClassName(n.DialogReferenceClassName.listUnreadLoader)[0];if(o){f.scrollToPosition(this,s.scrollTop-o.offsetHeight*2)}else{f.scrollToPosition(this,s.scrollHeight-s.clientHeight)}}else{f.scrollToPosition(this,s.scrollHeight-s.clientHeight)}setTimeout(function(){return e.waitLoadUnread=false},1e3);return true},onSendReadMessages:function t(){this.readMessageDelayed();return true},readMessage:function t(){var e=this;if(!this.windowFocused){return false}this.readMessageQueue=this.readMessageQueue.filter(function(t){if(e.readMessageTarget[t]){if(e.observers[u.read]){e.observers[u.read].unobserve(e.readMessageTarget[t])}delete e.readMessageTarget[t]}e.requestReadMessage(t);return false})},requestReadMessage:function t(e){this.$emit("readMessage",{id:e})},onClickByUserName:function t(e){if(!this.windowFocused){return false}this.$emit("clickByUserName",e)},onClickByUploadCancel:function t(e){if(!this.windowFocused){return false}this.$emit("clickByUploadCancel",e)},onClickByKeyboardButton:function t(e){if(!this.windowFocused){return false}this.$emit("clickByKeyboardButton",e)},onClickByChatTeaser:function t(e){this.$emit("clickByChatTeaser",e)},onClickByMessageMenu:function t(e){if(!this.windowFocused){return false}this.$emit("clickByMessageMenu",e)},onClickByMessageRetry:function t(e){if(!this.windowFocused){return false}this.$emit("clickByMessageRetry",e)},onClickByReadedList:function t(e){var i=this;var s=this.dialog.readedList.filter(function(t){return t.messageId===i.lastMessageId&&t.userId!==i.lastMessageAuthorId});this.$emit("clickByReadedList",{list:s,event:e})},onMessageReactionSet:function t(e){this.$emit("setMessageReaction",e)},onMessageReactionListOpen:function t(e){this.$emit("openMessageReactionList",e)},onDragMessage:function t(e){if(!this.windowFocused){return false}this.captureMove=e.result;if(!e.result){this.capturedMoveEvent=null}},onQuoteMessage:function t(e){if(!this.windowFocused){return false}this.$emit("quoteMessage",e)},_getDateFormat:function t(){var e=this;if(this.dateFormatFunction){return this.dateFormatFunction}this.dateFormatFunction=Object.create(BX.Main.Date);if(this.$root.$bitrixMessages){this.dateFormatFunction._getMessage=function(t){return e.$root.$bitrixMessages[t]}}return this.dateFormatFunction},_groupTitle:function t(e){var i=f.getDateFormat(e);if(this.cacheGroupTitle[i]){return{id:i,title:this.cacheGroupTitle[i]}}var s=a.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.groupTitle,this.$root.$bitrixMessages);this.cacheGroupTitle[i]=this._getDateFormat().format(s,e);return{id:i,title:this.cacheGroupTitle[i]}},animationTrigger:function t(e,i,s){var o=this;var a=s.dataset.templateId;var r=s.dataset.type;var l=this.$refs.body;if(!l||!a){return false}if(i){if(!this.animationScrollHeightStart){this.animationScrollHeightStart=l.scrollHeight;this.animationScrollHeightEnd=l.scrollHeight;this.animationScrollTop=l.scrollTop;this.animationScrollChange=0;clearTimeout(this.scrollToTimeout);this.scrollChangedByUser=!(l.scrollTop+this.scrollButtonDiff>=l.scrollHeight-l.clientHeight);if(this.scrollChangedByUser&&!this.showScrollButton&&this.unreadCounter>1){this.showScrollButton=true}}}else{this.animationScrollHeightEnd=l.scrollHeight}if(!this.collectionMutationType.applied&&this.collectionMutationType.initialType!==n.MutationType.set){if(i){this.animationCollection.push(a)}else{this.animationCollection=this.animationCollection.filter(function(t){delete o.animationCollectionOffset[a];return t!==a})}this.animationStart();return false}if(!this.collectionMutationType.applied&&this.collectionMutationType.initialType===n.MutationType.set&&this.collectionMutationType.appliedType===n.MutationType.setBefore){var u=f.getFirstUnreadMessage(this.collection);if(u){f.scrollToFirstUnreadMessage(this,this.collection,u,true);return false}f.scrollToPosition(this,l.scrollHeight-l.clientHeight);if(i){this.animationCollection.push(a)}else{this.animationCollection=this.animationCollection.filter(function(t){delete o.animationCollectionOffset[a];return t!==a})}this.animationStart();return false}if(i){if(e===h.leave){this.animationCollectionOffset[a]=s.offsetHeight}if(this.animationType===h.none){this.animationType=e}else if(this.animationType!==e){this.animationType=h.mixed}this.animationCollection.push(a)}else{if(e===h.enter){var d=s.offsetHeight;this.animationScrollChange+=d;l.scrollTop+=d}else if(e===h.leave){var g=this.animationCollectionOffset[a]?this.animationCollectionOffset[a]:0;this.animationScrollChange-=g;l.scrollTop-=g;this.animationScrollLastIsDelimeter=r!==c.message}this.animationCollection=this.animationCollection.filter(function(t){delete o.animationCollectionOffset[a];return t!==a})}this.animationStart()},animationStart:function t(){var e=this;if(this.animationCollection.length>0){return false}var i=this.$refs.body;if(this.animationType===h.leave){var s=0;if(i.scrollTop!==this.animationScrollTop+this.animationScrollChange){s=this.animationScrollTop+this.animationScrollChange}else{s=i.scrollTop}if(!this.animationScrollLastIsDelimeter){s+=this.templateMessageWithNameDifferent}if(s!==i.scrollTop){f.scrollToPosition(this,s)}}else if(this.animationType===h.mixed){var o=f.getFirstUnreadMessage(this.collection);if(o){f.scrollToFirstUnreadMessage(this,this.collection,o,true)}}this.animationType=h.none;this.animationScrollHeightStart=0;this.animationScrollHeightEnd=0;this.animationScrollTop=0;this.animationScrollChange=0;if(f.scrollByMutationType(this)){return false}if(this.scrollChangedByUser){l.Logger.warn("Dialog.animationStart: canceled: scroll changed by user");return false}if(this.unreadCounter>0&&this.firstUnreadMessageId){if(this.skipUnreadScroll){this.skipUnreadScroll=false;return}f.scrollToFirstUnreadMessage(this,this.collection,this.firstUnreadMessageId);return}this.scrollTo(function(){if(e.unreadCounter<=0&&e.messageExtraCount){e.$store.commit("application/clearDialogExtraCount")}})}},directives:{"bx-im-directive-dialog-observer":{inserted:function t(e,i,s){if(i.value===u.none){return false}if(!s.context.observers[i.value]){s.context.observers[i.value]=f.getMessageLoaderObserver({type:i.value,context:s.context})}s.context.observers[i.value].observe(e);return true},unbind:function t(e,i,s){if(i.value===u.none){return true}if(s.context.observers[i.value]){s.context.observers[i.value].unobserve(e)}return true}}},template:'\n\t\t<div class="bx-im-dialog" @click="onDialogClick" @touchmove="onDialogMove" ref="container">\t\n\t\t\t<div :class="[DialogReferenceClassName.listBody, {\n\t\t\t\t\'bx-im-dialog-list-scroll-blocked\': scrollBlocked, \n\t\t\t\t\'bx-im-dialog-dark-background\': isDarkBackground,\n\t\t\t\t\'bx-im-dialog-mobile\': isMobile,\n\t\t\t}]" @scroll.passive="onScroll" ref="body">\n\t\t\t\t<template v-if="historyLoaderShow">\n\t\t\t\t\t<div class="bx-im-dialog-load-more bx-im-dialog-load-more-history" v-bx-im-directive-dialog-observer="ObserverType.history">\n\t\t\t\t\t\t<span class="bx-im-dialog-load-more-text">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition-group \n\t\t\t\t\ttag="div" class="bx-im-dialog-list-box" name="bx-im-dialog-message-animation" \n\t\t\t\t\t@before-enter="animationTrigger(AnimationType.enter, true, $event)" \n\t\t\t\t\t@after-enter="animationTrigger(AnimationType.enter, false, $event)" \n\t\t\t\t\t@before-leave="animationTrigger(AnimationType.leave, true, $event)" \n\t\t\t\t\t@after-leave="animationTrigger(AnimationType.leave, false, $event)"\n\t\t\t\t>\n\t\t\t\t\t<template v-for="element in elementsWithLimit">\n\t\t\t\t\t\t<template v-if="element.templateType == TemplateType.message">\n\t\t\t\t\t\t\t<div :class="[\'bx-im-dialog-list-item\', DialogReferenceClassName.listItem, DialogReferenceClassName.listItem+\'-\'+element.id]" :data-message-id="element.id" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId" v-bx-im-directive-dialog-observer="element.unread? ObserverType.read: ObserverType.none">\t\t\t\n\t\t\t\t\t\t\t\t<component :is="element.params.COMPONENT_ID"\n\t\t\t\t\t\t\t\t\t:userId="userId" \n\t\t\t\t\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t\t\t\t\t:chatId="chatId"\n\t\t\t\t\t\t\t\t\t:dialog="dialog"\n\t\t\t\t\t\t\t\t\t:message="element"\n\t\t\t\t\t\t\t\t\t:enableReactions="enableReactions"\n\t\t\t\t\t\t\t\t\t:enableDateActions="enableDateActions"\n\t\t\t\t\t\t\t\t\t:enableCreateContent="showMessageMenu"\n\t\t\t\t\t\t\t\t\t:enableGestureQuote="enableGestureQuote"\n\t\t\t\t\t\t\t\t\t:enableGestureQuoteFromRight="enableGestureQuoteFromRight"\n\t\t\t\t\t\t\t\t\t:enableGestureMenu="enableGestureMenu"\n\t\t\t\t\t\t\t\t\t:showName="showMessageUserName"\n\t\t\t\t\t\t\t\t\t:showAvatar="showMessageAvatar"\n\t\t\t\t\t\t\t\t\t:showMenu="showMessageMenu"\n\t\t\t\t\t\t\t\t\t:capturedMoveEvent="capturedMoveEvent"\n\t\t\t\t\t\t\t\t\t:referenceContentClassName="DialogReferenceClassName.listItem"\n\t\t\t\t\t\t\t\t\t:referenceContentBodyClassName="DialogReferenceClassName.listItemBody"\n\t\t\t\t\t\t\t\t\t:referenceContentNameClassName="DialogReferenceClassName.listItemName"\n\t\t\t\t\t\t\t\t\t@clickByUserName="onClickByUserName"\n\t\t\t\t\t\t\t\t\t@clickByUploadCancel="onClickByUploadCancel"\n\t\t\t\t\t\t\t\t\t@clickByKeyboardButton="onClickByKeyboardButton"\n\t\t\t\t\t\t\t\t\t@clickByChatTeaser="onClickByChatTeaser"\n\t\t\t\t\t\t\t\t\t@clickByMessageMenu="onClickByMessageMenu"\n\t\t\t\t\t\t\t\t\t@clickByMessageRetry="onClickByMessageRetry"\n\t\t\t\t\t\t\t\t\t@setMessageReaction="onMessageReactionSet"\n\t\t\t\t\t\t\t\t\t@openMessageReactionList="onMessageReactionListOpen"\n\t\t\t\t\t\t\t\t\t@dragMessage="onDragMessage"\n\t\t\t\t\t\t\t\t\t@quoteMessage="onQuoteMessage"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if="element.templateType == TemplateType.group">\n\t\t\t\t\t\t\t<div class="bx-im-dialog-group" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId">\n\t\t\t\t\t\t\t\t<div class="bx-im-dialog-group-date">{{ element.text }}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if="element.templateType == TemplateType.delimiter">\n\t\t\t\t\t\t\t<div class="bx-im-dialog-delimiter" :data-template-id="element.templateId" :data-type="element.templateType" :key="element.templateId"></div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\t\t\t\t</transition-group>\n\t\t\t\t<template v-if="unreadLoaderShow">\n\t\t\t\t\t<div :class="[\'bx-im-dialog-load-more\', \'bx-im-dialog-load-more-unread\', DialogReferenceClassName.listUnreadLoader]" v-bx-im-directive-dialog-observer="ObserverType.unread">\n\t\t\t\t\t\t<span class="bx-im-dialog-load-more-text">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition name="bx-im-dialog-status">\n\t\t\t\t\t<template v-if="statusWriting">\n\t\t\t\t\t\t<div class="bx-im-dialog-status">\n\t\t\t\t\t\t\t<span class="bx-im-dialog-status-writing"></span>\n\t\t\t\t\t\t\t{{ statusWriting }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else-if="statusReaded">\n\t\t\t\t\t\t<div class="bx-im-dialog-status" @click="onClickByReadedList">\n\t\t\t\t\t\t\t{{ statusReaded }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<transition name="bx-im-dialog-scroll-button">\n\t\t\t\t<div v-show="showScrollButton || unreadLoaderShow && unreadCounter" class="bx-im-dialog-scroll-button-box" @click="scrollToBottom()">\n\t\t\t\t\t<div class="bx-im-dialog-scroll-button">\n\t\t\t\t\t\t<div v-show="unreadCounter" class="bx-im-dialog-scroll-button-counter">\n\t\t\t\t\t\t\t<div class="bx-im-dialog-scroll-button-counter-digit">{{unreadCounter}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="bx-im-dialog-scroll-button-arrow"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t'});var f={getDateFormat:function t(e){return e.toJSON().slice(0,10)},scrollToMessage:function t(e,i){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;var r=e.$refs.body;var l=r.getElementsByClassName(n.DialogReferenceClassName.listItem+"-"+s)[0];var c=0;if(!l){if(a){c=10}else{c=r.scrollHeight-r.clientHeight}}else if(a){c=l.offsetTop-e.templateMessageScrollOffset/2}else{c=l.offsetTop+l.offsetHeight-r.clientHeight+e.templateMessageScrollOffset/2}if(o){this.scrollToPosition(e,c)}else{e.scrollTo({end:c})}return true},getFirstUnreadMessage:function t(e){var i=null;for(var s=e.length-1;s>=0;s--){if(!e[s].unread){break}i=e[s].id}return i},scrollToPosition:function t(e,i){var s=e.$refs.body;if(!s){return false}if(e.animateScrollId){r.Animation.cancel(e.animateScrollId);this.scrollAnimating=false;e.animateScrollId=null}s.scrollTop=i},scrollByMutationType:function t(e){if(e.collectionMutationType.applied||e.collectionMutationType.initialType!==n.MutationType.set){return false}e.$store.dispatch("messages/applyMutationType",{chatId:e.chatId});if(e.collectionMutationType.appliedType===n.MutationType.setBefore){var i=e.$refs.body;this.scrollToPosition(e,i.scrollHeight-i.clientHeight);return true}if(e.collectionMutationType.scrollMessageId>0){var s=f.getFirstUnreadMessage(e.collection);var o=e.collectionMutationType.scrollMessageId;var a=!e.collectionMutationType.scrollStickToTop;var r=e.collectionMutationType.scrollStickToTop;if(s&&o>s){r=true;a=true;o=s;s=null}f.scrollToMessage(e,e.collection,o,a,r);if(s){f.scrollToMessage(e,e.collection,s);return true}}return false},scrollToFirstUnreadMessage:function t(e,i){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var o=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var a=e.$refs.body;var r=false;if(s!==null){r=a.getElementsByClassName(n.DialogReferenceClassName.listItem+"-"+s)[0]}if(!r){s=this.getFirstUnreadMessage(i)}this.scrollToMessage(e,i,s,o)},scrollToElementAfterLoadHistory:function t(e,i){var s=this;var o=i.getElementsByClassName(n.DialogReferenceClassName.listItemBody)[0];if(o){i=o}var a=i.getBoundingClientRect().top;e.$nextTick(function(){clearTimeout(e.waitLoadHistoryTimeout);e.waitLoadHistoryTimeout=setTimeout(function(){e.waitLoadHistory=false},1e3);if(!i){return false}s.scrollToPosition(e,i.getBoundingClientRect().top-a)})},scrollToElementAfterLoadUnread:function t(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;e.showScrollButton=true;if(i){this.scrollToMessage(e,e.collection,i,false,false)}},getMessageLoaderObserver:function t(e){if(typeof window.IntersectionObserver==="undefined"||e.value===u.none){return{observe:function t(){},unobserve:function t(){}}}var i,s;if(e.type===u.read){i=function t(i,s){i.forEach(function(t){var i=false;if(t.isIntersecting){if(t.intersectionRatio>=1){i=true}else if(t.intersectionRatio>0&&t.rootBounds.height<t.boundingClientRect.height+20&&t.intersectionRect.height>t.rootBounds.height/2){i=true}}if(i){e.context.readMessageQueue.push(t.target.dataset.messageId);e.context.readMessageTarget[t.target.dataset.messageId]=t.target}else{e.context.readMessageQueue=e.context.readMessageQueue.filter(function(e){return e!==t.target.dataset.messageId});delete e.context.readMessageTarget[t.target.dataset.messageId]}if(e.context.enableReadMessages){e.context.readMessageDelayed()}})};s={root:e.context.$refs.body,threshold:new Array(101).fill(0).map(function(t,e){return e*.01})}}else{i=function t(i,s){i.forEach(function(t){if(t.isIntersecting){if(e.type===u.unread){e.context.requestUnreadBlockIntersect=true;e.context.requestUnreadDelayed()}else{e.context.requestHistoryBlockIntersect=true;e.context.requestHistoryDelayed()}}else{if(e.type===u.unread){e.context.requestUnreadBlockIntersect=false}else{e.context.requestHistoryBlockIntersect=false}}})};s={root:e.context.$refs.body,threshold:[0,.01,.99,1]}}return new IntersectionObserver(i,s)}};var g={getDelimiter:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;return{templateId:"delimiter"+e,templateType:c.delimiter}},getGroup:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"";return{templateId:"group"+e,templateType:c.group,text:i}},getHistoryLoader:function t(){return{templateId:"historyLoader",templateType:c.historyLoader}},getUnreadLoader:function t(){return{templateId:"unreadLoader",templateType:c.unreadLoader}},getLoadButton:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0;var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"";var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:d.before;return{templateId:"loadButton"+e+s,templateType:c.button,text:i,type:s,messageId:e}}}})(this.window=this.window||{},BX,BX,BX,window,BX.Messenger.Const,BX.Messenger.Lib,BX.Messenger.Lib,BX.Messenger.Lib);
//# sourceMappingURL=dialog.bundle.map.jsdialog/dist/dialog.bundle.js000066400000147423147744174710012050 0ustar00(function (exports,main_polyfill_intersectionobserver,ui_vue,ui_vue_vuex,im_view_message,im_const,im_lib_utils,im_lib_animation,im_lib_logger) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Dialog Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var TemplateType = Object.freeze({
	  message: 'message',
	  delimiter: 'delimiter',
	  group: 'group',
	  historyLoader: 'historyLoader',
	  unreadLoader: 'unreadLoader',
	  button: 'button'
	});
	var ObserverType = Object.freeze({
	  history: 'history',
	  unread: 'unread',
	  read: 'read',
	  none: 'none'
	});
	var LoadButtonTypes = Object.freeze({
	  before: 'before',
	  after: 'after'
	});

	var _AnimationType = Object.freeze({
	  none: 'none',
	  mixed: 'mixed',
	  enter: 'enter',
	  leave: 'leave'
	});

	ui_vue.Vue.component('bx-im-view-dialog', {
	  /**
	   * @emits 'requestHistory' {lastId: number, limit: number}
	   * @emits 'requestUnread' {lastId: number, limit: number}
	   * @emits 'readMessage' {id: number}
	   * @emits 'quoteMessage' {message: object}
	   * @emits 'click' {event: MouseEvent}
	   * @emits 'clickByUserName' {user: object, event: MouseEvent}
	   * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	   * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	   * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}
	   * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}
	   * @emits 'clickByCommand' {type: string, value: string, event: MouseEvent}
	   * @emits 'clickByMention' {type: string, value: string, event: MouseEvent}
	   * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}
	   * @emits 'clickByReadedList' {list: array, event: MouseEvent}
	   * @emits 'setMessageReaction' {message: object, reaction: object}
	   * @emits 'openMessageReactionList' {message: object, values: object}
	   */

	  /**
	   * @listens props.listenEventScrollToBottom {force:boolean, cancelIfScrollChange:boolean} (global|application) -- scroll dialog to bottom, see more in methods.onScrollToBottom()
	   * @listens props.listenEventRequestHistory {count:number} (application)
	   * @listens props.listenEventRequestUnread {count:number} (application)
	   * @listens props.listenEventSendReadMessages {} (application)
	   */
	  props: {
	    userId: {
	      default: 0
	    },
	    dialogId: {
	      default: 0
	    },
	    chatId: {
	      default: 0
	    },
	    messageLimit: {
	      default: 20
	    },
	    messageExtraCount: {
	      default: 0
	    },
	    listenEventScrollToBottom: {
	      default: ''
	    },
	    listenEventRequestHistory: {
	      default: ''
	    },
	    listenEventRequestUnread: {
	      default: ''
	    },
	    listenEventSendReadMessages: {
	      default: ''
	    },
	    enableReadMessages: {
	      default: true
	    },
	    enableReactions: {
	      default: true
	    },
	    enableDateActions: {
	      default: true
	    },
	    enableCreateContent: {
	      default: true
	    },
	    enableGestureQuote: {
	      default: true
	    },
	    enableGestureQuoteFromRight: {
	      default: true
	    },
	    enableGestureMenu: {
	      default: false
	    },
	    showMessageUserName: {
	      default: true
	    },
	    showMessageAvatar: {
	      default: true
	    },
	    showMessageMenu: {
	      default: true
	    }
	  },
	  data: function data() {
	    return {
	      scrollAnimating: false,
	      showScrollButton: false,
	      messageShowCount: 0,
	      unreadLoaderShow: false,
	      historyLoaderBlocked: false,
	      historyLoaderShow: true,
	      startMessageLimit: 0,
	      templateMessageScrollOffset: 20,
	      templateMessageWithNameDifferent: 29,
	      // name block + padding top
	      TemplateType: TemplateType,
	      ObserverType: ObserverType,
	      DialogReferenceClassName: im_const.DialogReferenceClassName,
	      captureMove: false,
	      capturedMoveEvent: null,
	      lastMessageId: null,
	      maxMessageId: null
	    };
	  },
	  created: function created() {
	    this.showScrollButton = this.unreadCounter > 0;
	    this.scrollChangedByUser = false;
	    this.scrollButtonDiff = 100;
	    this.scrollButtonShowTimeout = null;
	    this.scrollPosition = 0;
	    this.scrollPositionChangeTime = new Date().getTime();
	    this.animationScrollHeightStart = 0;
	    this.animationScrollHeightEnd = 0;
	    this.animationScrollTop = 0;
	    this.animationScrollChange = 0;
	    this.animationScrollLastUserId = 0;
	    this.animationType = _AnimationType.none;
	    this.animationCollection = [];
	    this.animationCollectionOffset = {};
	    this.animationLastElementBeforeStart = 0;
	    this.observers = {};
	    this.requestHistoryInterval = null;
	    this.requestUnreadInterval = null;
	    this.lastAuthorId = 0;
	    this.firstMessageId = null;
	    this.firstUnreadMessageId = null;
	    this.dateFormatFunction = null;
	    this.cacheGroupTitle = {};
	    this.waitLoadHistory = false;
	    this.waitLoadUnread = false;
	    this.skipUnreadScroll = false;
	    this.readMessageQueue = [];
	    this.readMessageTarget = {};
	    this.readMessageDelayed = im_lib_utils.Utils.debounce(this.readMessage, 50, this);
	    this.requestHistoryBlockIntersect = false;
	    this.requestHistoryDelayed = im_lib_utils.Utils.debounce(this.requestHistory, 50, this);
	    this.requestUnreadBlockIntersect = false;
	    this.requestUnreadDelayed = im_lib_utils.Utils.debounce(this.requestUnread, 50, this);
	    this.startMessageLimit = this.messageLimit;

	    if (this.listenEventScrollToBottom) {
	      ui_vue.Vue.event.$on(this.listenEventScrollToBottom, this.onScrollToBottom);
	      this.$root.$on(this.listenEventScrollToBottom, this.onScrollToBottom);
	    }

	    if (this.listenEventRequestHistory) {
	      ui_vue.Vue.event.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
	      this.$root.$on(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
	    }

	    if (this.listenEventRequestUnread) {
	      ui_vue.Vue.event.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
	      this.$root.$on(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
	    }

	    if (this.listenEventSendReadMessages) {
	      ui_vue.Vue.event.$on(this.listenEventSendReadMessages, this.onSendReadMessages);
	      this.$root.$on(this.listenEventSendReadMessages, this.onSendReadMessages);
	    }

	    window.addEventListener("orientationchange", this.onOrientationChange);
	    window.addEventListener('focus', this.onWindowFocus);
	    window.addEventListener('blur', this.onWindowBlur);
	    ui_vue.Vue.event.$on('bitrixmobile:controller:focus', this.onWindowFocus);
	    ui_vue.Vue.event.$on('bitrixmobile:controller:blur', this.onWindowBlur);
	  },
	  beforeDestroy: function beforeDestroy() {
	    this.observers = {};
	    clearTimeout(this.scrollButtonShowTimeout);
	    clearInterval(this.requestHistoryInterval);
	    clearInterval(this.requestUnreadInterval);

	    if (this.listenEventScrollToBottom) {
	      ui_vue.Vue.event.$off(this.listenEventScrollToBottom, this.onScrollToBottom);
	      this.$root.$off(this.listenEventScrollToBottom, this.onScrollToBottom);
	    }

	    if (this.listenEventRequestHistory) {
	      ui_vue.Vue.event.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
	      this.$root.$off(this.listenEventRequestHistory, this.onRequestHistoryAnswer);
	    }

	    if (this.listenEventRequestUnread) {
	      ui_vue.Vue.event.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
	      this.$root.$off(this.listenEventRequestUnread, this.onRequestUnreadAnswer);
	    }

	    if (this.listenEventSendReadMessages) {
	      ui_vue.Vue.event.$off(this.listenEventSendReadMessages, this.onSendReadMessages);
	      this.$root.$off(this.listenEventSendReadMessages, this.onSendReadMessages);
	    }

	    window.removeEventListener("orientationchange", this.onOrientationChange);
	    window.removeEventListener('focus', this.onWindowFocus);
	    window.removeEventListener('blur', this.onWindowBlur);
	    ui_vue.Vue.event.$off('bitrixmobile:controller:focus', this.onWindowFocus);
	    ui_vue.Vue.event.$off('bitrixmobile:controller:blur', this.onWindowBlur);
	  },
	  mounted: function mounted() {
	    var unreadId = Utils.getFirstUnreadMessage(this.collection);

	    if (unreadId) {
	      Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);
	    } else {
	      var body = this.$refs.body;
	      Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
	    }

	    this.windowFocused = im_lib_utils.Utils.platform.isBitrixMobile() ? true : document.hasFocus();
	  },
	  computed: babelHelpers.objectSpread({
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_DIALOG_', this.$root.$bitrixMessages);
	    },
	    dialog: function dialog() {
	      var dialog = this.$store.getters['dialogues/get'](this.dialogId);
	      return dialog ? dialog : this.$store.getters['dialogues/getBlank']();
	    },
	    collectionMutationType: function collectionMutationType() {
	      return this.$store.getters['messages/getMutationType'](this.chatId);
	    },
	    collection: function collection() {
	      return this.$store.getters['messages/get'](this.chatId);
	    },
	    elementsWithLimit: function elementsWithLimit() {
	      var _this = this;

	      var unreadCount = this.collection.filter(function (element) {
	        return element.unread;
	      }).length;
	      var showLimit = this.messageExtraCount + this.messageLimit * 2;

	      if (unreadCount > showLimit) {
	        showLimit = unreadCount;
	      }

	      var start = this.collection.length - showLimit;

	      if (!this.historyLoaderShow || start < 0) {
	        start = 0;
	      }

	      var slicedCollection = start === 0 ? this.collection : this.collection.slice(start, this.collection.length);
	      this.messageShowCount = slicedCollection.length;
	      this.firstMessageId = null;
	      this.lastMessageId = 0;
	      this.maxMessageId = 0;
	      this.lastMessageAuthorId = 0;
	      var collection = [];
	      var lastAuthorId = 0;
	      var groupNode = {};
	      this.firstUnreadMessageId = 0;

	      if (this.messageShowCount > 0) {
	        slicedCollection.forEach(function (element) {
	          if (_this.firstMessageId === null || _this.firstMessageId > element.id) {
	            _this.firstMessageId = element.id;
	          }

	          if (_this.maxMessageId < element.id) {
	            _this.maxMessageId = element.id;
	          }

	          _this.lastMessageId = element.id;

	          var group = _this._groupTitle(element.date);

	          if (!groupNode[group.title]) {
	            groupNode[group.title] = group.id;
	            collection.push(Blocks.getGroup(group.id, group.title));
	          } else if (lastAuthorId !== element.authorId) {
	            collection.push(Blocks.getDelimiter(element.id));
	          }

	          collection.push(element);
	          lastAuthorId = element.authorId;

	          if (element.unread) {
	            if (!_this.firstUnreadMessageId) {
	              _this.firstUnreadMessageId = element.id;
	            }
	          }
	        });
	        this.lastMessageAuthorId = lastAuthorId;
	      } else {
	        this.firstMessageId = 0;
	      }

	      if (this.collection.length >= this.messageLimit && this.collection.length >= this.messageShowCount && this.historyLoaderBlocked === false) {
	        this.historyLoaderShow = true;
	      } else {
	        this.historyLoaderShow = false;
	      }

	      if (this.dialog.unreadLastId > this.maxMessageId) {
	        this.unreadLoaderShow = true;
	      } else {
	        this.unreadLoaderShow = false;
	      }

	      return collection;
	    },
	    statusWriting: function statusWriting() {
	      var _this2 = this;

	      clearTimeout(this.scrollToTimeout);

	      if (this.dialog.writingList.length === 0) {
	        return '';
	      }

	      if (!this.scrollChangedByUser && !this.showScrollButton) {
	        this.scrollToTimeout = setTimeout(function () {
	          return _this2.scrollTo({
	            duration: 500
	          });
	        }, 300);
	      }

	      return this.localize.IM_MESSENGER_DIALOG_WRITES_MESSAGE.replace('#USER#', this.dialog.writingList.map(function (element) {
	        return element.userName;
	      }).join(', '));
	    },
	    statusReaded: function statusReaded() {
	      var _this3 = this;

	      clearTimeout(this.scrollToTimeout);

	      if (this.dialog.readedList.length === 0) {
	        return '';
	      }

	      var text = '';

	      if (this.dialog.type === im_const.DialogType.private) {
	        var record = this.dialog.readedList[0];

	        if (record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId) {
	          var dateFormat = im_lib_utils.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.readedTitle, this.$root.$bitrixMessages);
	          text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_USER.replace('#DATE#', this._getDateFormat().format(dateFormat, record.date));
	        }
	      } else {
	        var readedList = this.dialog.readedList.filter(function (record) {
	          return record.messageId === _this3.lastMessageId && record.userId !== _this3.lastMessageAuthorId;
	        });

	        if (readedList.length === 1) {
	          text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace('#USERS#', readedList[0].userName);
	        } else if (readedList.length > 1) {
	          text = this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT.replace('#USERS#', this.localize.IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL.replace('#USER#', readedList[0].userName).replace('#COUNT#', readedList.length - 1).replace('[LINK]', '').replace('[/LINK]', ''));
	        }
	      }

	      if (!text) {
	        return '';
	      }

	      if (!this.scrollChangedByUser && !this.showScrollButton) {
	        this.scrollToTimeout = setTimeout(function () {
	          return _this3.scrollTo({
	            duration: 500
	          });
	        }, 300);
	      }

	      return text;
	    },
	    unreadCounter: function unreadCounter() {
	      return this.dialog.counter > 999 ? 999 : this.dialog.counter;
	    },
	    scrollBlocked: function scrollBlocked() {
	      if (this.application.device.type !== im_const.DeviceType.mobile) {
	        return false;
	      }

	      return this.scrollAnimating || this.captureMove;
	    },
	    isDarkBackground: function isDarkBackground() {
	      return this.application.options.darkBackground;
	    },
	    isMobile: function isMobile() {
	      return this.application.device.type === im_const.DeviceType.mobile;
	    },
	    AnimationType: function AnimationType() {
	      return _AnimationType;
	    }
	  }, ui_vue_vuex.Vuex.mapState({
	    application: function application(state) {
	      return state.application;
	    }
	  })),
	  methods: {
	    onDialogClick: function onDialogClick(event) {
	      if (ui_vue.Vue.testNode(event.target, {
	        className: 'bx-im-message-command'
	      })) {
	        this.onCommandClick(event);
	      } else if (ui_vue.Vue.testNode(event.target, {
	        className: 'bx-im-mention'
	      })) {
	        this.onMentionClick(event);
	      }

	      this.windowFocused = true;
	      this.$emit('click', {
	        event: event
	      });
	    },
	    onDialogMove: function onDialogMove(event) {
	      if (!this.captureMove) {
	        return;
	      }

	      this.capturedMoveEvent = event;
	    },
	    onCommandClick: function onCommandClick(event) {
	      var value = '';

	      if (event.target.dataset.entity === 'send' || event.target.dataset.entity === 'put') {
	        value = event.target.nextSibling.innerHTML;
	      } else if (event.target.dataset.entity === 'call') {
	        value = event.target.dataset.command;
	      }

	      this.$emit('clickByCommand', {
	        type: event.target.dataset.entity,
	        value: value,
	        event: event
	      });
	    },
	    onMentionClick: function onMentionClick(event) {
	      this.$emit('clickByMention', {
	        type: event.target.dataset.type,
	        value: event.target.dataset.value,
	        event: event
	      });
	    },
	    onScroll: function onScroll(event) {
	      var _this4 = this;

	      clearTimeout(this.scrollToTimeout);
	      this.scrollPosition = event.target.scrollTop;
	      this.scrollPositionChangeTime = new Date().getTime();
	      this.scrollChangedByUser = !(event.target.scrollTop + this.scrollButtonDiff >= event.target.scrollHeight - event.target.clientHeight);
	      clearTimeout(this.scrollButtonShowTimeout);
	      this.scrollButtonShowTimeout = setTimeout(function () {
	        if (_this4.scrollChangedByUser) {
	          if (!_this4.showScrollButton) {
	            _this4.showScrollButton = true;
	          }
	        } else {
	          if (_this4.showScrollButton && !_this4.unreadLoaderShow) {
	            _this4.showScrollButton = false;
	          }
	        }
	      }, 200);

	      if (event.target.scrollTop === event.target.scrollHeight - event.target.offsetHeight) {
	        clearTimeout(this.scrollButtonShowTimeout);

	        if (this.showScrollButton && !this.unreadLoaderShow) {
	          this.showScrollButton = false;
	        }
	      }
	    },
	    scrollToBottom: function scrollToBottom() {
	      var _this5 = this;

	      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
	      var _params$force = params.force,
	          force = _params$force === void 0 ? false : _params$force,
	          _params$cancelIfScrol = params.cancelIfScrollChange,
	          cancelIfScrollChange = _params$cancelIfScrol === void 0 ? false : _params$cancelIfScrol,
	          _params$duration = params.duration,
	          duration = _params$duration === void 0 ? null : _params$duration;

	      if (cancelIfScrollChange && this.scrollChangedByUser) {
	        return false;
	      }

	      var body = this.$refs.body;

	      if (this.dialog.counter > 0) {
	        var scrollToMessageId = this.dialog.counter > 1 && this.firstUnreadMessageId ? this.firstUnreadMessageId : this.lastMessageId;
	        Utils.scrollToFirstUnreadMessage(this, this.collection, scrollToMessageId);

	        if (this.dialog.counter < this.startMessageLimit) {
	          this.historyLoaderShow = true;
	          this.historyLoaderBlocked = false;
	        }

	        return true;
	      }

	      this.showScrollButton = false;

	      if (force) {
	        Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);

	        if (this.messageExtraCount) {
	          this.$store.commit('application/clearDialogExtraCount');
	        }

	        this.historyLoaderShow = true;
	        this.historyLoaderBlocked = false;
	      } else {
	        var scrollParams = {};

	        if (duration) {
	          scrollParams.duration = duration;
	        }

	        this.scrollTo(babelHelpers.objectSpread({
	          callback: function callback() {
	            if (_this5.messageExtraCount) {
	              _this5.$store.commit('application/clearDialogExtraCount');
	            }

	            _this5.historyLoaderShow = true;
	            _this5.historyLoaderBlocked = false;
	          }
	        }, scrollParams));
	      }
	    },
	    scrollTo: function scrollTo() {
	      var _this6 = this;

	      var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

	      if (this.animateScrollId) {
	        im_lib_animation.Animation.cancel(this.animateScrollId);
	        this.scrollAnimating = false;
	      }

	      if (typeof params === 'function') {
	        params = {
	          callback: params
	        };
	      }

	      var body = this.$refs.body;

	      if (!body) {
	        if (params.callback && typeof params.callback === 'function') {
	          params.callback();
	        }

	        this.animateScrollId = null;
	        this.scrollAnimating = false;
	        return true;
	      }

	      if (im_lib_utils.Utils.platform.isIos() && im_lib_utils.Utils.platform.getIosVersion() > 12 && im_lib_utils.Utils.platform.getIosVersion() < 13.2) {
	        body.scrollTop = body.scrollHeight - body.clientHeight;
	        return true;
	      }

	      var _params = params,
	          _params$start = _params.start,
	          start = _params$start === void 0 ? body.scrollTop : _params$start,
	          _params$end = _params.end,
	          end = _params$end === void 0 ? body.scrollHeight - body.clientHeight : _params$end,
	          _params$increment = _params.increment,
	          increment = _params$increment === void 0 ? 20 : _params$increment,
	          _callback = _params.callback,
	          _params$duration2 = _params.duration,
	          duration = _params$duration2 === void 0 ? 500 : _params$duration2;
	      var container = this.$refs.container;

	      if (container && end - start > container.offsetHeight * 3) {
	        start = end - container.offsetHeight * 3;
	        im_lib_logger.Logger.warn('Dialog.scrollTo: Scroll trajectory has been reduced');
	      }

	      this.scrollAnimating = true;
	      im_lib_logger.Logger.warn('Dialog.scrollTo: User scroll blocked while scrolling');
	      this.animateScrollId = im_lib_animation.Animation.start({
	        start: start,
	        end: end,
	        increment: increment,
	        duration: duration,
	        element: body,
	        elementProperty: 'scrollTop',
	        callback: function callback() {
	          _this6.animateScrollId = null;
	          _this6.scrollAnimating = false;

	          if (_callback && typeof _callback === 'function') {
	            _callback();
	          }
	        }
	      });
	    },
	    onScrollToBottom: function onScrollToBottom() {
	      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
	      event.force = event.force === true;
	      event.cancelIfScrollChange = event.cancelIfScrollChange === true;

	      if (this.firstUnreadMessageId) {
	        im_lib_logger.Logger.warn('Dialog.onScrollToBottom: canceled - unread messages');
	        return false;
	      }

	      this.scrollToBottom(event);
	      return true;
	    },
	    onOrientationChange: function onOrientationChange() {
	      var _this7 = this;
	      clearTimeout(this.scrollToTimeout);

	      if (this.application.device.type !== im_const.DeviceType.mobile) {
	        return false;
	      }

	      im_lib_logger.Logger.log('Orientation changed');

	      if (!this.scrollChangedByUser) {
	        this.scrollToTimeout = setTimeout(function () {
	          return _this7.scrollToBottom({
	            force: true
	          });
	        }, 300);
	      }
	    },
	    onWindowFocus: function onWindowFocus() {
	      this.windowFocused = true;
	      this.readMessage();
	      return true;
	    },
	    onWindowBlur: function onWindowBlur() {
	      this.windowFocused = false;
	    },
	    requestHistory: function requestHistory() {
	      var _this8 = this;

	      if (!this.requestHistoryBlockIntersect) {
	        return false;
	      }

	      if (this.waitLoadHistory || !this.windowFocused || this.animateScrollId) {
	        this.requestHistoryDelayed();
	        return false;
	      }

	      if (this.scrollPositionChangeTime + 100 > new Date().getTime() //	|| this.$refs.body.scrollTop < 0
	      ) {
	          this.requestHistoryDelayed();
	          return true;
	        }

	      this.waitLoadHistory = true;
	      clearTimeout(this.waitLoadHistoryTimeout);
	      this.waitLoadHistoryTimeout = setTimeout(function () {
	        _this8.waitLoadHistory = false;
	      }, 10000);
	      var length = this.collection.length;
	      var messageShowCount = this.messageShowCount;

	      if (length > messageShowCount) {
	        var element = this.$refs.body.getElementsByClassName(im_const.DialogReferenceClassName.listItem)[0];
	        this.$store.commit('application/increaseDialogExtraCount', {
	          count: this.startMessageLimit
	        });
	        Utils.scrollToElementAfterLoadHistory(this, element);
	        return true;
	      }

	      this.$emit('requestHistory', {
	        lastId: this.firstMessageId
	      });
	    },
	    requestUnread: function requestUnread() {
	      if (!this.requestUnreadBlockIntersect) {
	        return false;
	      }

	      if (this.waitLoadUnread || !this.windowFocused || this.animateScrollId) {
	        this.requestUnreadDelayed();
	        return false;
	      }

	      if (this.scrollPositionChangeTime + 10 > new Date().getTime() //|| this.$refs.body.scrollTop > this.$refs.body.scrollHeight - this.$refs.body.clientHeight
	      ) {
	          this.requestUnreadDelayed();
	          return true;
	        }

	      this.waitLoadUnread = true;
	      this.skipUnreadScroll = true;
	      this.$emit('requestUnread', {
	        lastId: this.lastMessageId
	      });
	    },
	    onRequestHistoryAnswer: function onRequestHistoryAnswer() {
	      var _this9 = this;

	      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

	      if (event.error) {
	        this.historyLoaderBlocked = false;
	      } else {
	        this.historyLoaderBlocked = event.count < this.startMessageLimit;
	        this.$store.commit('application/increaseDialogExtraCount', {
	          count: event.count
	        });
	      }

	      if (this.historyLoaderBlocked) {
	        this.historyLoaderShow = false;
	      }

	      var element = this.$refs.body.getElementsByClassName(im_const.DialogReferenceClassName.listItem)[0];

	      if (event.count > 0) {
	        if (element) {
	          Utils.scrollToElementAfterLoadHistory(this, element);
	        }
	      } else if (event.error) {
	        element.scrollIntoView(true);
	      } else {
	        Utils.scrollToPosition(this, 0);
	      }

	      clearTimeout(this.waitLoadHistoryTimeout);
	      this.waitLoadHistoryTimeout = setTimeout(function () {
	        _this9.waitLoadHistory = false;
	      }, 1000);
	      return true;
	    },
	    onRequestUnreadAnswer: function onRequestUnreadAnswer() {
	      var _this10 = this;

	      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

	      if (event.error) {
	        this.historyLoaderBlocked = false;
	      } else {
	        if (event.count < this.startMessageLimit) {
	          this.unreadLoaderShow = false;
	        }

	        this.$store.commit('application/increaseDialogExtraCount', {
	          count: event.count
	        });
	      }

	      var body = this.$refs.body;

	      if (event.count > 0) ; else if (event.error) {
	        var element = this.$refs.body.getElementsByClassName(im_const.DialogReferenceClassName.listUnreadLoader)[0];

	        if (element) {
	          Utils.scrollToPosition(this, body.scrollTop - element.offsetHeight * 2);
	        } else {
	          Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
	        }
	      } else {
	        Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);
	      }

	      setTimeout(function () {
	        return _this10.waitLoadUnread = false;
	      }, 1000);
	      return true;
	    },
	    onSendReadMessages: function onSendReadMessages() {
	      this.readMessageDelayed();
	      return true;
	    },
	    readMessage: function readMessage() {
	      var _this11 = this;

	      if (!this.windowFocused) {
	        return false;
	      }

	      this.readMessageQueue = this.readMessageQueue.filter(function (messageId) {
	        if (_this11.readMessageTarget[messageId]) {
	          if (_this11.observers[ObserverType.read]) {
	            _this11.observers[ObserverType.read].unobserve(_this11.readMessageTarget[messageId]);
	          }

	          delete _this11.readMessageTarget[messageId];
	        }

	        _this11.requestReadMessage(messageId);

	        return false;
	      });
	    },
	    requestReadMessage: function requestReadMessage(messageId) {
	      this.$emit('readMessage', {
	        id: messageId
	      });
	    },
	    onClickByUserName: function onClickByUserName(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('clickByUserName', event);
	    },
	    onClickByUploadCancel: function onClickByUploadCancel(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('clickByUploadCancel', event);
	    },
	    onClickByKeyboardButton: function onClickByKeyboardButton(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('clickByKeyboardButton', event);
	    },
	    onClickByChatTeaser: function onClickByChatTeaser(event) {
	      this.$emit('clickByChatTeaser', event);
	    },
	    onClickByMessageMenu: function onClickByMessageMenu(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('clickByMessageMenu', event);
	    },
	    onClickByMessageRetry: function onClickByMessageRetry(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('clickByMessageRetry', event);
	    },
	    onClickByReadedList: function onClickByReadedList(event) {
	      var _this12 = this;

	      var readedList = this.dialog.readedList.filter(function (record) {
	        return record.messageId === _this12.lastMessageId && record.userId !== _this12.lastMessageAuthorId;
	      });
	      this.$emit('clickByReadedList', {
	        list: readedList,
	        event: event
	      });
	    },
	    onMessageReactionSet: function onMessageReactionSet(event) {
	      this.$emit('setMessageReaction', event);
	    },
	    onMessageReactionListOpen: function onMessageReactionListOpen(event) {
	      this.$emit('openMessageReactionList', event);
	    },
	    onDragMessage: function onDragMessage(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.captureMove = event.result;

	      if (!event.result) {
	        this.capturedMoveEvent = null;
	      }
	    },
	    onQuoteMessage: function onQuoteMessage(event) {
	      if (!this.windowFocused) {
	        return false;
	      }

	      this.$emit('quoteMessage', event);
	    },
	    _getDateFormat: function _getDateFormat() {
	      var _this13 = this;

	      if (this.dateFormatFunction) {
	        return this.dateFormatFunction;
	      }

	      this.dateFormatFunction = Object.create(BX.Main.Date);

	      if (this.$root.$bitrixMessages) {
	        this.dateFormatFunction._getMessage = function (phrase) {
	          return _this13.$root.$bitrixMessages[phrase];
	        };
	      }

	      return this.dateFormatFunction;
	    },
	    _groupTitle: function _groupTitle(date) {
	      var id = Utils.getDateFormat(date);

	      if (this.cacheGroupTitle[id]) {
	        return {
	          id: id,
	          title: this.cacheGroupTitle[id]
	        };
	      }

	      var dateFormat = im_lib_utils.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.groupTitle, this.$root.$bitrixMessages);
	      this.cacheGroupTitle[id] = this._getDateFormat().format(dateFormat, date);
	      return {
	        id: id,
	        title: this.cacheGroupTitle[id]
	      };
	    },
	    animationTrigger: function animationTrigger(type, start, element) {
	      var _this14 = this;

	      var templateId = element.dataset.templateId;
	      var templateType = element.dataset.type;
	      var body = this.$refs.body;

	      if (!body || !templateId) {
	        return false;
	      }

	      if (start) {
	        if (!this.animationScrollHeightStart) {
	          this.animationScrollHeightStart = body.scrollHeight;
	          this.animationScrollHeightEnd = body.scrollHeight;
	          this.animationScrollTop = body.scrollTop;
	          this.animationScrollChange = 0;
	          clearTimeout(this.scrollToTimeout);
	          this.scrollChangedByUser = !(body.scrollTop + this.scrollButtonDiff >= body.scrollHeight - body.clientHeight);

	          if (this.scrollChangedByUser && !this.showScrollButton && this.unreadCounter > 1) {
	            this.showScrollButton = true;
	          }
	        }
	      } else {
	        this.animationScrollHeightEnd = body.scrollHeight;
	      }

	      if (!this.collectionMutationType.applied && this.collectionMutationType.initialType !== im_const.MutationType.set) {
	        if (start) {
	          this.animationCollection.push(templateId);
	        } else {
	          this.animationCollection = this.animationCollection.filter(function (id) {
	            delete _this14.animationCollectionOffset[templateId];
	            return id !== templateId;
	          });
	        }

	        this.animationStart();
	        return false;
	      }

	      if (!this.collectionMutationType.applied && this.collectionMutationType.initialType === im_const.MutationType.set && this.collectionMutationType.appliedType === im_const.MutationType.setBefore) {
	        var unreadId = Utils.getFirstUnreadMessage(this.collection);

	        if (unreadId) {
	          Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);
	          return false;
	        }

	        Utils.scrollToPosition(this, body.scrollHeight - body.clientHeight);

	        if (start) {
	          this.animationCollection.push(templateId);
	        } else {
	          this.animationCollection = this.animationCollection.filter(function (id) {
	            delete _this14.animationCollectionOffset[templateId];
	            return id !== templateId;
	          });
	        }

	        this.animationStart();
	        return false;
	      }

	      if (start) {
	        if (type === _AnimationType.leave) {
	          this.animationCollectionOffset[templateId] = element.offsetHeight;
	        }

	        if (this.animationType === _AnimationType.none) {
	          this.animationType = type;
	        } else if (this.animationType !== type) {
	          this.animationType = _AnimationType.mixed;
	        }

	        this.animationCollection.push(templateId);
	      } else {
	        if (type === _AnimationType.enter) {
	          var offset = element.offsetHeight;
	          this.animationScrollChange += offset;
	          body.scrollTop += offset;
	        } else if (type === _AnimationType.leave) {
	          var _offset = this.animationCollectionOffset[templateId] ? this.animationCollectionOffset[templateId] : 0;

	          this.animationScrollChange -= _offset;
	          body.scrollTop -= _offset;
	          this.animationScrollLastIsDelimeter = templateType !== TemplateType.message;
	        }

	        this.animationCollection = this.animationCollection.filter(function (id) {
	          delete _this14.animationCollectionOffset[templateId];
	          return id !== templateId;
	        });
	      }

	      this.animationStart();
	    },
	    animationStart: function animationStart() {
	      var _this15 = this;

	      if (this.animationCollection.length > 0) {
	        return false;
	      }

	      var body = this.$refs.body;

	      if (this.animationType === _AnimationType.leave) {
	        var newScrollPosition = 0; // fix for chrome dom rendering: while delete node, scroll change immediately

	        if (body.scrollTop !== this.animationScrollTop + this.animationScrollChange) {
	          newScrollPosition = this.animationScrollTop + this.animationScrollChange;
	        } else {
	          newScrollPosition = body.scrollTop;
	        } // fix position if last element the same type of new element


	        if (!this.animationScrollLastIsDelimeter) {
	          newScrollPosition += this.templateMessageWithNameDifferent;
	        }

	        if (newScrollPosition !== body.scrollTop) {
	          Utils.scrollToPosition(this, newScrollPosition);
	        }
	      } else if (this.animationType === _AnimationType.mixed) {
	        var unreadId = Utils.getFirstUnreadMessage(this.collection);

	        if (unreadId) {
	          Utils.scrollToFirstUnreadMessage(this, this.collection, unreadId, true);
	        }
	      }

	      this.animationType = _AnimationType.none;
	      this.animationScrollHeightStart = 0;
	      this.animationScrollHeightEnd = 0;
	      this.animationScrollTop = 0;
	      this.animationScrollChange = 0;

	      if (Utils.scrollByMutationType(this)) {
	        return false;
	      }

	      if (this.scrollChangedByUser) {
	        im_lib_logger.Logger.warn('Dialog.animationStart: canceled: scroll changed by user');
	        return false;
	      }

	      if (this.unreadCounter > 0 && this.firstUnreadMessageId) {
	        if (this.skipUnreadScroll) {
	          this.skipUnreadScroll = false;
	          return;
	        }

	        Utils.scrollToFirstUnreadMessage(this, this.collection, this.firstUnreadMessageId);
	        return;
	      }

	      this.scrollTo(function () {
	        if (_this15.unreadCounter <= 0 && _this15.messageExtraCount) {
	          _this15.$store.commit('application/clearDialogExtraCount');
	        }
	      });
	    }
	  },
	  directives: {
	    'bx-im-directive-dialog-observer': {
	      inserted: function inserted(element, bindings, vnode) {
	        if (bindings.value === ObserverType.none) {
	          return false;
	        }

	        if (!vnode.context.observers[bindings.value]) {
	          vnode.context.observers[bindings.value] = Utils.getMessageLoaderObserver({
	            type: bindings.value,
	            context: vnode.context
	          });
	        }

	        vnode.context.observers[bindings.value].observe(element);
	        return true;
	      },
	      unbind: function unbind(element, bindings, vnode) {
	        if (bindings.value === ObserverType.none) {
	          return true;
	        }

	        if (vnode.context.observers[bindings.value]) {
	          vnode.context.observers[bindings.value].unobserve(element);
	        }

	        return true;
	      }
	    }
	  },
	  template: "\n\t\t<div class=\"bx-im-dialog\" @click=\"onDialogClick\" @touchmove=\"onDialogMove\" ref=\"container\">\t\n\t\t\t<div :class=\"[DialogReferenceClassName.listBody, {\n\t\t\t\t'bx-im-dialog-list-scroll-blocked': scrollBlocked, \n\t\t\t\t'bx-im-dialog-dark-background': isDarkBackground,\n\t\t\t\t'bx-im-dialog-mobile': isMobile,\n\t\t\t}]\" @scroll.passive=\"onScroll\" ref=\"body\">\n\t\t\t\t<template v-if=\"historyLoaderShow\">\n\t\t\t\t\t<div class=\"bx-im-dialog-load-more bx-im-dialog-load-more-history\" v-bx-im-directive-dialog-observer=\"ObserverType.history\">\n\t\t\t\t\t\t<span class=\"bx-im-dialog-load-more-text\">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition-group \n\t\t\t\t\ttag=\"div\" class=\"bx-im-dialog-list-box\" name=\"bx-im-dialog-message-animation\" \n\t\t\t\t\t@before-enter=\"animationTrigger(AnimationType.enter, true, $event)\" \n\t\t\t\t\t@after-enter=\"animationTrigger(AnimationType.enter, false, $event)\" \n\t\t\t\t\t@before-leave=\"animationTrigger(AnimationType.leave, true, $event)\" \n\t\t\t\t\t@after-leave=\"animationTrigger(AnimationType.leave, false, $event)\"\n\t\t\t\t>\n\t\t\t\t\t<template v-for=\"element in elementsWithLimit\">\n\t\t\t\t\t\t<template v-if=\"element.templateType == TemplateType.message\">\n\t\t\t\t\t\t\t<div :class=\"['bx-im-dialog-list-item', DialogReferenceClassName.listItem, DialogReferenceClassName.listItem+'-'+element.id]\" :data-message-id=\"element.id\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\" v-bx-im-directive-dialog-observer=\"element.unread? ObserverType.read: ObserverType.none\">\t\t\t\n\t\t\t\t\t\t\t\t<component :is=\"element.params.COMPONENT_ID\"\n\t\t\t\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t\t\t\t:dialog=\"dialog\"\n\t\t\t\t\t\t\t\t\t:message=\"element\"\n\t\t\t\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t\t\t\t:enableDateActions=\"enableDateActions\"\n\t\t\t\t\t\t\t\t\t:enableCreateContent=\"showMessageMenu\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuote=\"enableGestureQuote\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuoteFromRight=\"enableGestureQuoteFromRight\"\n\t\t\t\t\t\t\t\t\t:enableGestureMenu=\"enableGestureMenu\"\n\t\t\t\t\t\t\t\t\t:showName=\"showMessageUserName\"\n\t\t\t\t\t\t\t\t\t:showAvatar=\"showMessageAvatar\"\n\t\t\t\t\t\t\t\t\t:showMenu=\"showMessageMenu\"\n\t\t\t\t\t\t\t\t\t:capturedMoveEvent=\"capturedMoveEvent\"\n\t\t\t\t\t\t\t\t\t:referenceContentClassName=\"DialogReferenceClassName.listItem\"\n\t\t\t\t\t\t\t\t\t:referenceContentBodyClassName=\"DialogReferenceClassName.listItemBody\"\n\t\t\t\t\t\t\t\t\t:referenceContentNameClassName=\"DialogReferenceClassName.listItemName\"\n\t\t\t\t\t\t\t\t\t@clickByUserName=\"onClickByUserName\"\n\t\t\t\t\t\t\t\t\t@clickByUploadCancel=\"onClickByUploadCancel\"\n\t\t\t\t\t\t\t\t\t@clickByKeyboardButton=\"onClickByKeyboardButton\"\n\t\t\t\t\t\t\t\t\t@clickByChatTeaser=\"onClickByChatTeaser\"\n\t\t\t\t\t\t\t\t\t@clickByMessageMenu=\"onClickByMessageMenu\"\n\t\t\t\t\t\t\t\t\t@clickByMessageRetry=\"onClickByMessageRetry\"\n\t\t\t\t\t\t\t\t\t@setMessageReaction=\"onMessageReactionSet\"\n\t\t\t\t\t\t\t\t\t@openMessageReactionList=\"onMessageReactionListOpen\"\n\t\t\t\t\t\t\t\t\t@dragMessage=\"onDragMessage\"\n\t\t\t\t\t\t\t\t\t@quoteMessage=\"onQuoteMessage\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if=\"element.templateType == TemplateType.group\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-group\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-dialog-group-date\">{{ element.text }}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else-if=\"element.templateType == TemplateType.delimiter\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-delimiter\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\"></div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\t\t\t\t</transition-group>\n\t\t\t\t<template v-if=\"unreadLoaderShow\">\n\t\t\t\t\t<div :class=\"['bx-im-dialog-load-more', 'bx-im-dialog-load-more-unread', DialogReferenceClassName.listUnreadLoader]\" v-bx-im-directive-dialog-observer=\"ObserverType.unread\">\n\t\t\t\t\t\t<span class=\"bx-im-dialog-load-more-text\">{{ localize.IM_MESSENGER_DIALOG_LOAD_MESSAGES }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<transition name=\"bx-im-dialog-status\">\n\t\t\t\t\t<template v-if=\"statusWriting\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-status\">\n\t\t\t\t\t\t\t<span class=\"bx-im-dialog-status-writing\"></span>\n\t\t\t\t\t\t\t{{ statusWriting }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else-if=\"statusReaded\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-status\" @click=\"onClickByReadedList\">\n\t\t\t\t\t\t\t{{ statusReaded }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<transition name=\"bx-im-dialog-scroll-button\">\n\t\t\t\t<div v-show=\"showScrollButton || unreadLoaderShow && unreadCounter\" class=\"bx-im-dialog-scroll-button-box\" @click=\"scrollToBottom()\">\n\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button\">\n\t\t\t\t\t\t<div v-show=\"unreadCounter\" class=\"bx-im-dialog-scroll-button-counter\">\n\t\t\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-counter-digit\">{{unreadCounter}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-arrow\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t"
	});
	var Utils = {
	  getDateFormat: function getDateFormat(date) {
	    return date.toJSON().slice(0, 10);
	  },
	  scrollToMessage: function scrollToMessage(context, collection) {
	    var messageId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
	    var force = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
	    var stickToTop = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
	    var body = context.$refs.body;
	    var element = body.getElementsByClassName(im_const.DialogReferenceClassName.listItem + '-' + messageId)[0];
	    var end = 0;

	    if (!element) {
	      if (stickToTop) {
	        end = 10;
	      } else {
	        end = body.scrollHeight - body.clientHeight;
	      }
	    } else if (stickToTop) {
	      end = element.offsetTop - context.templateMessageScrollOffset / 2;
	    } else {
	      end = element.offsetTop + element.offsetHeight - body.clientHeight + context.templateMessageScrollOffset / 2;
	    }

	    if (force) {
	      this.scrollToPosition(context, end);
	    } else {
	      context.scrollTo({
	        end: end
	      });
	    }

	    return true;
	  },
	  getFirstUnreadMessage: function getFirstUnreadMessage(collection) {
	    var unreadId = null;

	    for (var index = collection.length - 1; index >= 0; index--) {
	      if (!collection[index].unread) {
	        break;
	      }

	      unreadId = collection[index].id;
	    }

	    return unreadId;
	  },
	  scrollToPosition: function scrollToPosition(context, position) {
	    var body = context.$refs.body;

	    if (!body) {
	      return false;
	    }

	    if (context.animateScrollId) {
	      im_lib_animation.Animation.cancel(context.animateScrollId);
	      this.scrollAnimating = false;
	      context.animateScrollId = null;
	    }

	    body.scrollTop = position;
	  },
	  scrollByMutationType: function scrollByMutationType(context) {
	    if (context.collectionMutationType.applied || context.collectionMutationType.initialType !== im_const.MutationType.set) {
	      return false;
	    }

	    context.$store.dispatch('messages/applyMutationType', {
	      chatId: context.chatId
	    });

	    if (context.collectionMutationType.appliedType === im_const.MutationType.setBefore) {
	      var body = context.$refs.body;
	      this.scrollToPosition(context, body.scrollHeight - body.clientHeight);
	      return true;
	    }

	    if (context.collectionMutationType.scrollMessageId > 0) {
	      var unreadId = Utils.getFirstUnreadMessage(context.collection);
	      var toMessageId = context.collectionMutationType.scrollMessageId;
	      var force = !context.collectionMutationType.scrollStickToTop;
	      var stickToTop = context.collectionMutationType.scrollStickToTop;

	      if (unreadId && toMessageId > unreadId) {
	        stickToTop = true;
	        force = true;
	        toMessageId = unreadId;
	        unreadId = null;
	      }

	      Utils.scrollToMessage(context, context.collection, toMessageId, force, stickToTop);

	      if (unreadId) {
	        Utils.scrollToMessage(context, context.collection, unreadId);
	        return true;
	      }
	    }

	    return false;
	  },
	  scrollToFirstUnreadMessage: function scrollToFirstUnreadMessage(context, collection) {
	    var unreadId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
	    var force = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
	    var body = context.$refs.body;
	    var element = false;

	    if (unreadId !== null) {
	      element = body.getElementsByClassName(im_const.DialogReferenceClassName.listItem + '-' + unreadId)[0];
	    }

	    if (!element) {
	      unreadId = this.getFirstUnreadMessage(collection);
	    }

	    this.scrollToMessage(context, collection, unreadId, force);
	  },
	  scrollToElementAfterLoadHistory: function scrollToElementAfterLoadHistory(context, element) {
	    var _this16 = this;

	    var elementBody = element.getElementsByClassName(im_const.DialogReferenceClassName.listItemBody)[0];

	    if (elementBody) {
	      element = elementBody;
	    }

	    var previousOffsetTop = element.getBoundingClientRect().top;
	    context.$nextTick(function () {
	      clearTimeout(context.waitLoadHistoryTimeout);
	      context.waitLoadHistoryTimeout = setTimeout(function () {
	        context.waitLoadHistory = false;
	      }, 1000);

	      if (!element) {
	        return false;
	      }

	      _this16.scrollToPosition(context, element.getBoundingClientRect().top - previousOffsetTop);
	    });
	  },
	  scrollToElementAfterLoadUnread: function scrollToElementAfterLoadUnread(context) {
	    var firstMessageId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
	    context.showScrollButton = true;

	    if (firstMessageId) {
	      this.scrollToMessage(context, context.collection, firstMessageId, false, false);
	    }
	  },
	  getMessageLoaderObserver: function getMessageLoaderObserver(config) {
	    if (typeof window.IntersectionObserver === 'undefined' || config.value === ObserverType.none) {
	      return {
	        observe: function observe() {},
	        unobserve: function unobserve() {}
	      };
	    }

	    var observerCallback, observerOptions;

	    if (config.type === ObserverType.read) {
	      observerCallback = function observerCallback(entries, observer) {
	        entries.forEach(function (entry) {
	          var sendReadEvent = false;

	          if (entry.isIntersecting) {
	            if (entry.intersectionRatio >= 1) {
	              sendReadEvent = true;
	            } else if (entry.intersectionRatio > 0 && entry.rootBounds.height < entry.boundingClientRect.height + 20 && entry.intersectionRect.height > entry.rootBounds.height / 2) {
	              sendReadEvent = true;
	            }
	          }

	          if (sendReadEvent) {
	            config.context.readMessageQueue.push(entry.target.dataset.messageId);
	            config.context.readMessageTarget[entry.target.dataset.messageId] = entry.target;
	          } else {
	            config.context.readMessageQueue = config.context.readMessageQueue.filter(function (messageId) {
	              return messageId !== entry.target.dataset.messageId;
	            });
	            delete config.context.readMessageTarget[entry.target.dataset.messageId];
	          }

	          if (config.context.enableReadMessages) {
	            config.context.readMessageDelayed();
	          }
	        });
	      };

	      observerOptions = {
	        root: config.context.$refs.body,
	        threshold: new Array(101).fill(0).map(function (zero, index) {
	          return index * 0.01;
	        })
	      };
	    } else {
	      observerCallback = function observerCallback(entries, observer) {
	        entries.forEach(function (entry) {
	          if (entry.isIntersecting) {
	            if (config.type === ObserverType.unread) {
	              config.context.requestUnreadBlockIntersect = true;
	              config.context.requestUnreadDelayed();
	            } else {
	              config.context.requestHistoryBlockIntersect = true;
	              config.context.requestHistoryDelayed();
	            }
	          } else {
	            if (config.type === ObserverType.unread) {
	              config.context.requestUnreadBlockIntersect = false;
	            } else {
	              config.context.requestHistoryBlockIntersect = false;
	            }
	          }
	        });
	      };

	      observerOptions = {
	        root: config.context.$refs.body,
	        threshold: [0, 0.01, 0.99, 1]
	      };
	    }

	    return new IntersectionObserver(observerCallback, observerOptions);
	  }
	};
	var Blocks = {
	  getDelimiter: function getDelimiter() {
	    var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
	    return {
	      templateId: 'delimiter' + id,
	      templateType: TemplateType.delimiter
	    };
	  },
	  getGroup: function getGroup() {
	    var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
	    var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
	    return {
	      templateId: 'group' + id,
	      templateType: TemplateType.group,
	      text: text
	    };
	  },
	  getHistoryLoader: function getHistoryLoader() {
	    return {
	      templateId: 'historyLoader',
	      templateType: TemplateType.historyLoader
	    };
	  },
	  getUnreadLoader: function getUnreadLoader() {
	    return {
	      templateId: 'unreadLoader',
	      templateType: TemplateType.unreadLoader
	    };
	  },
	  getLoadButton: function getLoadButton() {
	    var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
	    var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
	    var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : LoadButtonTypes.before;
	    return {
	      templateId: 'loadButton' + id + type,
	      templateType: TemplateType.button,
	      text: text,
	      type: type,
	      messageId: id
	    };
	  }
	};

}((this.window = this.window || {}),BX,BX,BX,window,BX.Messenger.Const,BX.Messenger.Lib,BX.Messenger.Lib,BX.Messenger.Lib));
//# sourceMappingURL=dialog.bundle.js.map
dialog/dist/dialog.bundle.min.css000066400000016256147744174710013005 0ustar00.bx-im-dialog{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;overflow:hidden}.bx-im-dialog-ajax{-webkit-text-decoration:dotted;text-decoration:dotted}.bx-im-dialog-list{overflow-y:auto;width:100%}.bx-im-dialog-list-scroll-blocked{overflow:hidden}.bx-im-dialog-list-box{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;overflow-x:hidden;overflow-y:auto;padding:10px 0}.bx-im-dialog-scroll-button-box{position:absolute;right:0;bottom:0;width:55px;height:55px;z-index:1;-webkit-tap-highlight-color:transparent;outline:0}.bx-im-dialog-scroll-button{background:#fff;border:1px solid #ececec;-webkit-box-shadow:0 2px 1px 0 rgba(0,0,0,0.2);box-shadow:0 2px 1px 0 rgba(0,0,0,0.2);border-radius:50%;width:34px;height:34px;margin-top:10px;margin-left:7px;cursor:pointer;-webkit-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s;text-align:center}.bx-im-dialog-scroll-button:hover{background-color:#f9f9f9}.bx-im-dialog-scroll-button-arrow{display:inline-block;width:7px;height:7px;border-top:3px solid #bbb8b8;border-right:3px solid #bbb8b8;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);margin-top:11px;cursor:pointer;-webkit-box-sizing:content-box;box-sizing:content-box}.bx-im-dialog-scroll-button-counter{width:100%;text-align:center;margin-top:-7px;position:absolute}.bx-im-dialog-scroll-button-counter-digit{display:inline-block;font:11px/16px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#fff;padding:0 5px 0 5px;border:2px solid #fff;border-radius:10px;background-color:#17b0e1}.bx-im-dialog-scroll-button-enter-active,.bx-im-dialog-scroll-button-leave-active{-webkit-transition:bottom .2s ease-out;-o-transition:bottom .2s ease-out;transition:bottom .2s ease-out}.bx-im-dialog-scroll-button-enter,.bx-im-dialog-scroll-button-leave-to{bottom:-60px}.bx-im-dialog-message-animation-enter-active,.bx-im-dialog-message-animation-leave-active{-webkit-transition:0s;-o-transition:0s;transition:0s}.bx-im-dialog-group{font:14px/19px "Helvetica Neue",Helvetica,Arial,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;text-align:center;position:relative}.bx-im-dialog-group-date{background-color:rgba(7,5,27,0.62);border:1px solid rgba(7,5,27,0.1);text-shadow:none;color:#fff!important;display:inline-block;padding:5px 15px;border-radius:15px;font-size:14px;text-decoration:none;margin:10px 15px}.bx-im-dialog-group-float.bx-im-dialog-group-date{position:absolute;display:block;margin-top:32px;z-index:30;-webkit-transform:translateZ(0);transform:translateZ(0)}.bx-im-dialog-load-more{position:relative;text-align:center}.bx-im-dialog-load-more+.bx-im-dialog-list-box{padding-top:0}.bx-im-dialog-load-more-history{padding-bottom:0}.bx-im-dialog-load-more-unread{padding-top:0;padding-bottom:13px}.bx-im-dialog-load-more-text:before{position:absolute;margin-left:-30px;margin-top:4px;width:20px;height:20px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%23677B8F%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;-webkit-animation:bx-im-dialog-load-more .8s linear infinite;animation:bx-im-dialog-load-more .8s linear infinite;content:""}.bx-im-dialog-load-more-text{display:inline-block;height:29px;font:15px/29px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#687b8c;vertical-align:top;padding:10px 15px;padding-left:30px}.bx-im-dialog-dark-background .bx-im-dialog-load-more-text{color:#949494}@-webkit-keyframes bx-im-dialog-load-more{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes bx-im-dialog-load-more{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bx-im-dialog-status{padding:0 20px 15px;display:block;font:15px/19px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#585858;word-wrap:break-word;vertical-align:middle;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:default;position:relative}.bx-im-dialog-status-enter-active,.bx-im-dialog-status-leave-active{-webkit-transition:opacity .1s ease-out;-o-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.bx-im-dialog-status-leave-active{-webkit-transition:opacity .05s ease-out;-o-transition:opacity .05s ease-out;transition:opacity .05s ease-out}.bx-im-dialog-status-enter,.bx-im-dialog-status-leave-to{opacity:0}.bx-im-dialog-status-writing{width:20px;height:11px;display:inline-block;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%228%22%20height%3D%222%22%3E%0A%20%20%3Cg%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%223.2%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%226.4%22%20rx%3D%22.8%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-position:bottom left;vertical-align:middle}.bx-im-dialog-status-writing:before{-webkit-animation:imWriting 1.4s linear infinite;animation:imWriting 1.4s linear infinite;content:'';height:16px;position:absolute;width:19px;margin-left:10px;margin-top:-1px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;zoom:1}@-webkit-keyframes imWriting{0%{margin-left:1px;margin-top:-0px}20%{margin-left:4px;margin-top:-1px}60%{margin-left:8px;margin-top:-2px}65%{margin-left:8px;margin-top:-2px}70%{margin-left:8px;margin-top:-3px;-webkit-transform:rotate(-20deg);transform:rotate(-20deg)}90%{margin-left:8px;margin-top:-5px;-webkit-transform:rotate(-40deg);transform:rotate(-40deg)}100%{margin-left:1px;margin-top:-3px}}@keyframes imWriting{0%{margin-left:1px;margin-top:-0px}20%{margin-left:4px;margin-top:-1px}60%{margin-left:8px;margin-top:-2px}65%{margin-left:8px;margin-top:-2px}70%{margin-left:8px;margin-top:-3px;-webkit-transform:rotate(-20deg);transform:rotate(-20deg)}90%{margin-left:8px;margin-top:-5px;-webkit-transform:rotate(-40deg);transform:rotate(-40deg)}100%{margin-left:1px;margin-top:-3px}}dialog/dist/dialog.bundle.css000066400000020115147744174710012210 0ustar00.bx-im-dialog {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	height: 100%;
	overflow: hidden;
}
.bx-im-dialog-ajax {
	-webkit-text-decoration: dotted;
	        text-decoration: dotted;
}
.bx-im-dialog-list {
	overflow-y: auto;
	width: 100%;
}
.bx-im-dialog-list-scroll-blocked {
	overflow: hidden;
}
.bx-im-dialog-list-box {
	width: 100%;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-orient: vertical;
	-webkit-box-direction: normal;
	    -ms-flex-direction: column;
	        flex-direction: column;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
	-webkit-overflow-scrolling: touch;
	overflow-x: hidden;
	overflow-y: auto;
	padding: 10px 0;
}
.bx-im-dialog-scroll-button-box {
	position: absolute;
	right: 0;
	bottom: 0;
	width: 55px;
	height: 55px;
	z-index: 1;
	-webkit-tap-highlight-color: transparent;
	outline: none;
}
.bx-im-dialog-scroll-button {
	background: #fff;
	border: 1px solid #ececec;
	-webkit-box-shadow: 0 2px 1px 0 rgba(0,0,0,0.2);
	        box-shadow: 0 2px 1px 0 rgba(0,0,0,0.2);
	border-radius: 50%;
	width: 34px;
	height: 34px;
	margin-top: 10px;
	margin-left: 7px;
	cursor: pointer;
	-webkit-transition: background-color .2s;
	-o-transition: background-color .2s;
	transition: background-color .2s;
	text-align: center;
}
.bx-im-dialog-scroll-button:hover {
	background-color: #f9f9f9;
}

.bx-im-dialog-scroll-button-arrow {
	display: inline-block;
	width: 7px;
	height: 7px;
	border-top: 3px solid #bbb8b8;
	border-right: 3px solid #bbb8b8;
	-webkit-transform: rotate(135deg);
	    -ms-transform: rotate(135deg);
	        transform: rotate(135deg);
	margin-top: 11px;
	cursor: pointer;
	-webkit-box-sizing: content-box;
	        box-sizing: content-box;
}
.bx-im-dialog-scroll-button-counter {
	width: 100%;
	text-align: center;
	margin-top:-7px;
	position: absolute;
}
.bx-im-dialog-scroll-button-counter-digit {
	display: inline-block;
    font: 11px/16px "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: #fff;
	padding: 0 5px 0 5px;
    border: 2px solid #fff;
    border-radius: 10px;
    background-color: #17b0e1;
}


.bx-im-dialog-scroll-button-enter-active, .bx-im-dialog-scroll-button-leave-active {
	-webkit-transition: bottom .2s ease-out;
	-o-transition: bottom .2s ease-out;
	transition: bottom .2s ease-out;
}
.bx-im-dialog-scroll-button-enter, .bx-im-dialog-scroll-button-leave-to {
	bottom: -60px;
}

.bx-im-dialog-message-animation-enter-active, .bx-im-dialog-message-animation-leave-active {
	-webkit-transition: 0s;
	-o-transition: 0s;
	transition: 0s;
}

.bx-im-dialog-list-item {}

.bx-im-dialog-group {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	-o-text-overflow: ellipsis;
	   text-overflow: ellipsis;
	white-space: nowrap;
	text-align: center;
	position: relative;
}
.bx-im-dialog-group-date {
	background-color: rgba(7, 5, 27, 0.62);
	border: 1px solid rgba(7, 5, 27, 0.1);
	text-shadow: none; color: #fff!important;
	display: inline-block;
	padding: 5px 15px;
	border-radius: 15px;
	font-size: 14px;
	text-decoration: none;
	margin: 10px 15px;
}
.bx-im-dialog-group-float.bx-im-dialog-group-date
{
	position: absolute;
	display: block;
	margin-top: 32px;
	z-index: 30;
	-webkit-transform: translateZ(0);
	transform: translateZ(0);
}

.bx-im-dialog-load-more {
	position: relative;
	text-align: center;
}
.bx-im-dialog-load-more + .bx-im-dialog-list-box { padding-top: 0; }
.bx-im-dialog-load-more-history {
	padding-bottom: 0;
}
.bx-im-dialog-load-more-unread {
    padding-top: 0;
    padding-bottom: 13px;
}

.bx-im-dialog-load-more-text:before {
	position: absolute;
	margin-left: -30px;
	margin-top: 4px;
	width: 20px;
	height: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%23677B8F%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	-webkit-animation: bx-im-dialog-load-more .8s linear infinite;
	animation: bx-im-dialog-load-more .8s linear infinite;
	content: ""
}
.bx-im-dialog-load-more-text {
	display: inline-block;
	height: 29px;
	font: 15px/29px "Helvetica Neue",Helvetica,Arial,sans-serif;
	color: #687B8C;
	vertical-align: top;
	padding: 10px 15px;
	padding-left: 30px;
}
.bx-im-dialog-dark-background .bx-im-dialog-load-more-text {
	color: #949494;
}

@-webkit-keyframes bx-im-dialog-load-more {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-dialog-load-more {
	0% {
		-webkit-transform:rotate(0deg);
		        transform:rotate(0deg);
	}
	100%
	{
		-webkit-transform:rotate(360deg);
		        transform:rotate(360deg);
	}
}

.bx-im-dialog-status {
	padding: 0 20px 15px;
	display: block;
	font: 15px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #585858;
	word-wrap: break-word;
	vertical-align: middle;
	-moz-user-select:none;
	-webkit-user-select:none;
	-ms-user-select:none;
	    user-select:none;
	cursor: default;
	position: relative;
}

.bx-im-dialog-status-enter-active, .bx-im-dialog-status-leave-active {
	-webkit-transition: opacity .1s ease-out;
	-o-transition: opacity .1s ease-out;
	transition: opacity .1s ease-out;
}
.bx-im-dialog-status-leave-active {
	-webkit-transition: opacity .05s ease-out;
	-o-transition: opacity .05s ease-out;
	transition: opacity .05s ease-out;
}
.bx-im-dialog-status-enter, .bx-im-dialog-status-leave-to {
	opacity: 0;
}

.bx-im-dialog-status-writing {
	width: 20px;
	height: 11px;
	display: inline-block;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%228%22%20height%3D%222%22%3E%0A%20%20%3Cg%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%223.2%22%20rx%3D%22.8%22/%3E%0A%20%20%20%20%3Crect%20width%3D%221.6%22%20height%3D%222%22%20x%3D%226.4%22%20rx%3D%22.8%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: bottom left;
	vertical-align: middle;
}
.bx-im-dialog-status-writing:before {
	-webkit-animation: imWriting 1.4s linear infinite;
	animation: imWriting 1.4s linear infinite;
	content: '';
	height: 16px;
	position: absolute;
	width: 19px;
	margin-left: 10px;
	margin-top:-1px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	zoom:1;
}

@-webkit-keyframes imWriting {
	0% { margin-left: 1px; margin-top:-0px; }
	20% { margin-left: 4px; margin-top:-1px; }
	60% { margin-left: 8px; margin-top:-2px; }
	65% { margin-left: 8px; margin-top:-2px; }
	70% { margin-left: 8px; margin-top:-3px; -webkit-transform:rotate(-20deg); transform:rotate(-20deg); }
	90% { margin-left: 8px; margin-top:-5px; -webkit-transform:rotate(-40deg); transform:rotate(-40deg);  }
	100% {  margin-left: 1px; margin-top:-3px; }
}

@keyframes imWriting {
	0% { margin-left: 1px; margin-top:-0px; }
	20% { margin-left: 4px; margin-top:-1px; }
	60% { margin-left: 8px; margin-top:-2px; }
	65% { margin-left: 8px; margin-top:-2px; }
	70% { margin-left: 8px; margin-top:-3px; -webkit-transform:rotate(-20deg); transform:rotate(-20deg); }
	90% { margin-left: 8px; margin-top:-5px; -webkit-transform:rotate(-40deg); transform:rotate(-40deg);  }
	100% {  margin-left: 1px; margin-top:-3px; }
}dialog/lang/ua/config.php000066400000000722147744174710011332 0ustar00<?
$MESS["IM_MESSENGER_DIALOG_LOAD_MESSAGES"] = "Завантаження повідомлень";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT"] = "Переглянуто: #USERS#";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL"] = "#USER# і [LINK] ще #COUNT#[/LINK]";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_USER"] = "Переглянуто: #DATE#";
$MESS["IM_MESSENGER_DIALOG_WRITES_MESSAGE"] = "#USER# пише повідомлення...";
?>dialog/lang/en/config.php000066400000000623147744174710011327 0ustar00<?
$MESS["IM_MESSENGER_DIALOG_LOAD_MESSAGES"] = "Loading messages...";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT"] = "Viewed by: #USERS#";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL"] = "#USER# and [LINK]#COUNT# more user(s)[/LINK]";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_USER"] = "Viewed: #DATE#";
$MESS["IM_MESSENGER_DIALOG_WRITES_MESSAGE"] = "#USER# is typing a message...";
?>dialog/lang/ru/config.php000066400000000706147744174710011355 0ustar00<?
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_USER"] = "Просмотрено: #DATE#";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT"] = "Просмотрено: #USERS#";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL"] = "#USER# и [LINK]еще #COUNT#[/LINK]";
$MESS["IM_MESSENGER_DIALOG_WRITES_MESSAGE"] = "#USER# пишет сообщение...";
$MESS["IM_MESSENGER_DIALOG_LOAD_MESSAGES"] = "Загрузка сообщений...";
?>dialog/lang/de/config.php000066400000000647147744174710011323 0ustar00<?
$MESS["IM_MESSENGER_DIALOG_LOAD_MESSAGES"] = "Nachrichten werden geladen...";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT"] = "Angezeigt von: #USERS#";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL"] = "#USER# und noch [LINK]#COUNT# Nutzer[/LINK]";
$MESS["IM_MESSENGER_DIALOG_MESSAGES_READED_USER"] = "Angezeigt: #DATE#";
$MESS["IM_MESSENGER_DIALOG_WRITES_MESSAGE"] = "#USER# schreibt eine Nachricht...";
?>quotepanel/config.php000066400000000410147744174710010714 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/quotepanel.bundle.js',
	],
	'css' => [
		'./dist/quotepanel.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
	],
	'skip_core' => true,
];quotepanel/bundle.config.js000066400000000134147744174710012014 0ustar00module.exports = {
	input: './src/quotepanel.js',
	output: './dist/quotepanel.bundle.js',
};quotepanel/src/quotepanel.js000066400000002636147744174710012254 0ustar00/**
 * Bitrix Messenger
 * Textarea Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './quotepanel.css';
import {Vue} from "ui.vue";

Vue.component('bx-im-view-quote-panel',
{
	/**
	 * @emits 'close' {}
	 */

	props:
	{
		id: { default: 0 },
		title: { default: '' },
		description: { default: '' },
		color: { default: '' },
		canClose: { default: true },
	},
	methods:
	{
		close(event)
		{
			this.$emit('close', event);
		},
	},
	computed:
	{
		formattedTittle()
		{
			return this.title? this.title.substr(0, 255): this.localize.IM_QUOTE_PANEL_DEFAULT_TITLE;
		},
		formattedDescription()
		{
			return this.description? this.description.substr(0, 255): '';
		},
		localize()
		{
			return Vue.getFilteredPhrases('IM_QUOTE_PANEL_', this.$root.$bitrixMessages);
		},
	},
	template: `
		<transition enter-active-class="bx-im-quote-panel-animation-show" leave-active-class="bx-im-quote-panel-animation-close">				
			<div v-if="id > 0" class="bx-im-quote-panel">
				<div class="bx-im-quote-panel-wrap">
					<div class="bx-im-quote-panel-box" :style="{borderLeftColor: color}">
						<div class="bx-im-quote-panel-box-title" :style="{color: color}">{{formattedTittle}}</div>
						<div class="bx-im-quote-panel-box-desc">{{formattedDescription}}</div>
					</div>
					<div v-if="canClose" class="bx-im-quote-panel-close" @click="close"></div>
				</div>
			</div>
		</transition>
	`
});quotepanel/src/quotepanel.css000066400000003335147744174710012425 0ustar00.bx-im-quote-panel {
	border-top: 1px solid rgba(31,170,241,.26);
	background: #fff;
	width: 100%;
	box-sizing: border-box;
}
.bx-im-quote-panel-wrap {
	position: relative;
}

.bx-im-quote-panel-box {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #333;
	position: relative;
	border-left: 2px solid #333;
	margin: 8px 16px;
	padding-left: 10px;
}
.bx-im-quote-panel-box > div {
	text-overflow: ellipsis;
	white-space: nowrap;
	height: 20px;
	overflow: hidden;
}
.bx-im-quote-panel-box-title {
	font-weight: bold;
	margin-right: 16px;
}
.bx-im-quote-panel-close {
	position: absolute;
	top: 4px;
	right: 4px;
	display: inline-block;
	width: 30px;
	height: 30px;
	background: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M5.722%204.747L10.108.36a.69.69%200%200%201%20.975.974L6.697%205.722l4.386%204.386a.69.69%200%200%201-.975.975L5.722%206.696l-4.386%204.387a.69.69%200%201%201-.975-.975l4.386-4.386L.361%201.335a.69.69%200%201%201%20.975-.974l4.386%204.386z%22/%3E%3C/svg%3E') center no-repeat;
	transition: opacity .3s;
	opacity: .2;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	z-index: 10;
}
.bx-im-quote-panel-close:hover {
	opacity: .8;
}


.bx-im-quote-panel-animation-show {
	animation: bx-im-quote-panel-animation-show .2s ease-out forwards;
}
.bx-im-quote-panel-animation-close {
	animation: bx-im-quote-panel-animation-close .2s linear forwards;
}

@keyframes bx-im-quote-panel-animation-show {
	0% {
		height: 0;
	}
	100% {
		height: 57px;
	}
}
@keyframes bx-im-quote-panel-animation-close {
	0% {
		height: 57px;
	}
	100% {
		height: 0;
	}
}
quotepanel/dist/quotepanel.bundle.min.css000066400000003706147744174710014635 0ustar00.bx-im-quote-panel{border-top:1px solid rgba(31,170,241,.26);background:#fff;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.bx-im-quote-panel-wrap{position:relative}.bx-im-quote-panel-box{font:14px/19px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#333;position:relative;border-left:2px solid #333;margin:8px 16px;padding-left:10px}.bx-im-quote-panel-box>div{-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;height:20px;overflow:hidden}.bx-im-quote-panel-box-title{font-weight:bold;margin-right:16px}.bx-im-quote-panel-close{position:absolute;top:4px;right:4px;display:inline-block;width:30px;height:30px;	background: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M5.722%204.747L10.108.36a.69.69%200%200%201%20.975.974L6.697%205.722l4.386%204.386a.69.69%200%200%201-.975.975L5.722%206.696l-4.386%204.387a.69.69%200%201%201-.975-.975l4.386-4.386L.361%201.335a.69.69%200%201%201%20.975-.974l4.386%204.386z%22/%3E%3C/svg%3E') center no-repeat; -webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;opacity:.2;-webkit-appearance:none;outline:0;cursor:pointer;z-index:10}.bx-im-quote-panel-close:hover{opacity:.8}.bx-im-quote-panel-animation-show{-webkit-animation:bx-im-quote-panel-animation-show .2s ease-out forwards;animation:bx-im-quote-panel-animation-show .2s ease-out forwards}.bx-im-quote-panel-animation-close{-webkit-animation:bx-im-quote-panel-animation-close .2s linear forwards;animation:bx-im-quote-panel-animation-close .2s linear forwards}@-webkit-keyframes bx-im-quote-panel-animation-show{0%{height:0}100%{height:57px}}@keyframes bx-im-quote-panel-animation-show{0%{height:0}100%{height:57px}}@-webkit-keyframes bx-im-quote-panel-animation-close{0%{height:57px}100%{height:0}}@keyframes bx-im-quote-panel-animation-close{0%{height:57px}100%{height:0}}quotepanel/dist/quotepanel.bundle.js000066400000003464147744174710013700 0ustar00(function (exports,ui_vue) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Textarea Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-im-view-quote-panel', {
	  /**
	   * @emits 'close' {}
	   */
	  props: {
	    id: {
	      default: 0
	    },
	    title: {
	      default: ''
	    },
	    description: {
	      default: ''
	    },
	    color: {
	      default: ''
	    },
	    canClose: {
	      default: true
	    }
	  },
	  methods: {
	    close: function close(event) {
	      this.$emit('close', event);
	    }
	  },
	  computed: {
	    formattedTittle: function formattedTittle() {
	      return this.title ? this.title.substr(0, 255) : this.localize.IM_QUOTE_PANEL_DEFAULT_TITLE;
	    },
	    formattedDescription: function formattedDescription() {
	      return this.description ? this.description.substr(0, 255) : '';
	    },
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_QUOTE_PANEL_', this.$root.$bitrixMessages);
	    }
	  },
	  template: "\n\t\t<transition enter-active-class=\"bx-im-quote-panel-animation-show\" leave-active-class=\"bx-im-quote-panel-animation-close\">\t\t\t\t\n\t\t\t<div v-if=\"id > 0\" class=\"bx-im-quote-panel\">\n\t\t\t\t<div class=\"bx-im-quote-panel-wrap\">\n\t\t\t\t\t<div class=\"bx-im-quote-panel-box\" :style=\"{borderLeftColor: color}\">\n\t\t\t\t\t\t<div class=\"bx-im-quote-panel-box-title\" :style=\"{color: color}\">{{formattedTittle}}</div>\n\t\t\t\t\t\t<div class=\"bx-im-quote-panel-box-desc\">{{formattedDescription}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"canClose\" class=\"bx-im-quote-panel-close\" @click=\"close\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</transition>\n\t"
	});

}((this.window = this.window || {}),BX));
//# sourceMappingURL=quotepanel.bundle.js.map
quotepanel/dist/quotepanel.bundle.map.js000066400000001603147744174710014445 0ustar00{"version":3,"sources":["quotepanel.bundle.js"],"names":["exports","ui_vue","Vue","component","props","id","default","title","description","color","canClose","methods","close","event","this","$emit","computed","formattedTittle","substr","localize","IM_QUOTE_PANEL_DEFAULT_TITLE","formattedDescription","getFilteredPhrases","$root","$bitrixMessages","template","window","BX"],"mappings":"CAAC,SAAUA,EAAQC,GAClB,aAUAA,EAAOC,IAAIC,UAAU,0BAInBC,OACEC,IACEC,QAAS,GAEXC,OACED,QAAS,IAEXE,aACEF,QAAS,IAEXG,OACEH,QAAS,IAEXI,UACEJ,QAAS,OAGbK,SACEC,MAAO,SAASA,EAAMC,GACpBC,KAAKC,MAAM,QAASF,KAGxBG,UACEC,gBAAiB,SAASA,IACxB,OAAOH,KAAKP,MAAQO,KAAKP,MAAMW,OAAO,EAAG,KAAOJ,KAAKK,SAASC,8BAEhEC,qBAAsB,SAASA,IAC7B,OAAOP,KAAKN,YAAcM,KAAKN,YAAYU,OAAO,EAAG,KAAO,IAE9DC,SAAU,SAASA,IACjB,OAAOlB,EAAOC,IAAIoB,mBAAmB,kBAAmBR,KAAKS,MAAMC,mBAGvEC,SAAU,0pBAhDb,CAmDGX,KAAKY,OAASZ,KAAKY,WAAcC","file":"quotepanel.bundle.map.js"}quotepanel/dist/quotepanel.bundle.js.map000066400000005603147744174710014451 0ustar00{"version":3,"file":"quotepanel.bundle.js","sources":["../src/quotepanel.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Textarea Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './quotepanel.css';\nimport {Vue} from \"ui.vue\";\n\nVue.component('bx-im-view-quote-panel',\n{\n\t/**\n\t * @emits 'close' {}\n\t */\n\n\tprops:\n\t{\n\t\tid: { default: 0 },\n\t\ttitle: { default: '' },\n\t\tdescription: { default: '' },\n\t\tcolor: { default: '' },\n\t\tcanClose: { default: true },\n\t},\n\tmethods:\n\t{\n\t\tclose(event)\n\t\t{\n\t\t\tthis.$emit('close', event);\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tformattedTittle()\n\t\t{\n\t\t\treturn this.title? this.title.substr(0, 255): this.localize.IM_QUOTE_PANEL_DEFAULT_TITLE;\n\t\t},\n\t\tformattedDescription()\n\t\t{\n\t\t\treturn this.description? this.description.substr(0, 255): '';\n\t\t},\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_QUOTE_PANEL_', this.$root.$bitrixMessages);\n\t\t},\n\t},\n\ttemplate: `\n\t\t<transition enter-active-class=\"bx-im-quote-panel-animation-show\" leave-active-class=\"bx-im-quote-panel-animation-close\">\t\t\t\t\n\t\t\t<div v-if=\"id > 0\" class=\"bx-im-quote-panel\">\n\t\t\t\t<div class=\"bx-im-quote-panel-wrap\">\n\t\t\t\t\t<div class=\"bx-im-quote-panel-box\" :style=\"{borderLeftColor: color}\">\n\t\t\t\t\t\t<div class=\"bx-im-quote-panel-box-title\" :style=\"{color: color}\">{{formattedTittle}}</div>\n\t\t\t\t\t\t<div class=\"bx-im-quote-panel-box-desc\">{{formattedDescription}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"canClose\" class=\"bx-im-quote-panel-close\" @click=\"close\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</transition>\n\t`\n});"],"names":["Vue","component","props","id","default","title","description","color","canClose","methods","close","event","$emit","computed","formattedTittle","substr","localize","IM_QUOTE_PANEL_DEFAULT_TITLE","formattedDescription","getFilteredPhrases","$root","$bitrixMessages","template"],"mappings":";;;CAAA;;;;;;;;AASA,AAGAA,WAAG,CAACC,SAAJ,CAAc,wBAAd,EACA;CACC;;;CAIAC,EAAAA,KAAK,EACL;CACCC,IAAAA,EAAE,EAAE;CAAEC,MAAAA,OAAO,EAAE;CAAX,KADL;CAECC,IAAAA,KAAK,EAAE;CAAED,MAAAA,OAAO,EAAE;CAAX,KAFR;CAGCE,IAAAA,WAAW,EAAE;CAAEF,MAAAA,OAAO,EAAE;CAAX,KAHd;CAICG,IAAAA,KAAK,EAAE;CAAEH,MAAAA,OAAO,EAAE;CAAX,KAJR;CAKCI,IAAAA,QAAQ,EAAE;CAAEJ,MAAAA,OAAO,EAAE;CAAX;CALX,GAND;CAaCK,EAAAA,OAAO,EACP;CACCC,IAAAA,KADD,iBACOC,KADP,EAEC;CACC,WAAKC,KAAL,CAAW,OAAX,EAAoBD,KAApB;CACA;CAJF,GAdD;CAoBCE,EAAAA,QAAQ,EACR;CACCC,IAAAA,eADD,6BAEC;CACC,aAAO,KAAKT,KAAL,GAAY,KAAKA,KAAL,CAAWU,MAAX,CAAkB,CAAlB,EAAqB,GAArB,CAAZ,GAAuC,KAAKC,QAAL,CAAcC,4BAA5D;CACA,KAJF;CAKCC,IAAAA,oBALD,kCAMC;CACC,aAAO,KAAKZ,WAAL,GAAkB,KAAKA,WAAL,CAAiBS,MAAjB,CAAwB,CAAxB,EAA2B,GAA3B,CAAlB,GAAmD,EAA1D;CACA,KARF;CASCC,IAAAA,QATD,sBAUC;CACC,aAAOhB,UAAG,CAACmB,kBAAJ,CAAuB,iBAAvB,EAA0C,KAAKC,KAAL,CAAWC,eAArD,CAAP;CACA;CAZF,GArBD;CAmCCC,EAAAA,QAAQ;CAnCT,CADA;;;;"}quotepanel/dist/quotepanel.bundle.css000066400000004340147744174710014046 0ustar00.bx-im-quote-panel {
	border-top: 1px solid rgba(31,170,241,.26);
	background: #fff;
	width: 100%;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
}
.bx-im-quote-panel-wrap {
	position: relative;
}

.bx-im-quote-panel-box {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #333;
	position: relative;
	border-left: 2px solid #333;
	margin: 8px 16px;
	padding-left: 10px;
}
.bx-im-quote-panel-box > div {
	-o-text-overflow: ellipsis;
	   text-overflow: ellipsis;
	white-space: nowrap;
	height: 20px;
	overflow: hidden;
}
.bx-im-quote-panel-box-title {
	font-weight: bold;
	margin-right: 16px;
}
.bx-im-quote-panel-close {
	position: absolute;
	top: 4px;
	right: 4px;
	display: inline-block;
	width: 30px;
	height: 30px;
	background: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2212%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M5.722%204.747L10.108.36a.69.69%200%200%201%20.975.974L6.697%205.722l4.386%204.386a.69.69%200%200%201-.975.975L5.722%206.696l-4.386%204.387a.69.69%200%201%201-.975-.975l4.386-4.386L.361%201.335a.69.69%200%201%201%20.975-.974l4.386%204.386z%22/%3E%3C/svg%3E') center no-repeat;
	-webkit-transition: opacity .3s;
	-o-transition: opacity .3s;
	transition: opacity .3s;
	opacity: .2;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	z-index: 10;
}
.bx-im-quote-panel-close:hover {
	opacity: .8;
}


.bx-im-quote-panel-animation-show {
	-webkit-animation: bx-im-quote-panel-animation-show .2s ease-out forwards;
	        animation: bx-im-quote-panel-animation-show .2s ease-out forwards;
}
.bx-im-quote-panel-animation-close {
	-webkit-animation: bx-im-quote-panel-animation-close .2s linear forwards;
	        animation: bx-im-quote-panel-animation-close .2s linear forwards;
}

@-webkit-keyframes bx-im-quote-panel-animation-show {
	0% {
		height: 0;
	}
	100% {
		height: 57px;
	}
}

@keyframes bx-im-quote-panel-animation-show {
	0% {
		height: 0;
	}
	100% {
		height: 57px;
	}
}
@-webkit-keyframes bx-im-quote-panel-animation-close {
	0% {
		height: 57px;
	}
	100% {
		height: 0;
	}
}
@keyframes bx-im-quote-panel-animation-close {
	0% {
		height: 57px;
	}
	100% {
		height: 0;
	}
}
quotepanel/dist/quotepanel.bundle.min.js000066400000002434147744174710014456 0ustar00(function(t,e){"use strict";e.Vue.component("bx-im-view-quote-panel",{props:{id:{default:0},title:{default:""},description:{default:""},color:{default:""},canClose:{default:true}},methods:{close:function t(e){this.$emit("close",e)}},computed:{formattedTittle:function t(){return this.title?this.title.substr(0,255):this.localize.IM_QUOTE_PANEL_DEFAULT_TITLE},formattedDescription:function t(){return this.description?this.description.substr(0,255):""},localize:function t(){return e.Vue.getFilteredPhrases("IM_QUOTE_PANEL_",this.$root.$bitrixMessages)}},template:'\n\t\t<transition enter-active-class="bx-im-quote-panel-animation-show" leave-active-class="bx-im-quote-panel-animation-close">\t\t\t\t\n\t\t\t<div v-if="id > 0" class="bx-im-quote-panel">\n\t\t\t\t<div class="bx-im-quote-panel-wrap">\n\t\t\t\t\t<div class="bx-im-quote-panel-box" :style="{borderLeftColor: color}">\n\t\t\t\t\t\t<div class="bx-im-quote-panel-box-title" :style="{color: color}">{{formattedTittle}}</div>\n\t\t\t\t\t\t<div class="bx-im-quote-panel-box-desc">{{formattedDescription}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if="canClose" class="bx-im-quote-panel-close" @click="close"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</transition>\n\t'})})(this.window=this.window||{},BX);
//# sourceMappingURL=quotepanel.bundle.map.jsquotepanel/lang/ua/config.php000066400000000132147744174710012243 0ustar00<?
$MESS["IM_QUOTE_PANEL_DEFAULT_TITLE"] = "Системне повідомлення";
?>quotepanel/lang/en/config.php000066400000000077147744174710012250 0ustar00<?
$MESS["IM_QUOTE_PANEL_DEFAULT_TITLE"] = "System message";
?>quotepanel/lang/ru/config.php000066400000000123147744174710012264 0ustar00<?
$MESS["IM_QUOTE_PANEL_DEFAULT_TITLE"] = "Системное сообщение";quotepanel/lang/de/config.php000066400000000100147744174710012221 0ustar00<?
$MESS["IM_QUOTE_PANEL_DEFAULT_TITLE"] = "Systemnachricht";
?>list/recent/config.php000066400000000514147744174710010777 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' =>[
		'./dist/recent.bundle.js',
	],
	'css' => [
		'./dist/recent.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue.components.list',
		'im.view.list.item.recent',
		'ui.vue',
		'im.lib.logger',
	],
	'skip_core' => true,
];list/recent/bundle.config.js000066400000000124147744174710012071 0ustar00module.exports = {
	input: './src/recent.js',
	output: './dist/recent.bundle.js',
};list/recent/src/recent.css000066400000001535147744174710011606 0ustar00/*.bx-messenger-list-recent {*/
/*	width: 80px;*/
/*}*/

.bx-messenger-list-recent .subtitle-left-icon-open {
	background: red;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .title-left-icon-open {
	background: green;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .title-right-icon-open {
	background: yellow;
	margin-left: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .date-left-icon-open {
	background: blue;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .avatar-top-left-icon-open {
	background: lightsalmon;
	position: absolute;
	height: 10px;
	width: 10px;
	top: 0;
	left: 0;
}

.bx-messenger-list-recent .avatar-bottom-right-icon-open {
	background: lightseagreen;
	position: absolute;
	height: 10px;
	width: 10px;
	top: 25px;
	left: 25px;
}list/recent/src/recent.js000066400000001702147744174710011426 0ustar00/**
 * Bitrix UI
 * Recent list Vue component
 *
 * @package bitrix
 * @subpackage ui
 * @copyright 2001-2019 Bitrix
 */

import "./recent.css";

import 'ui.vue.components.list';
import 'im.view.list.item.recent';

import {Vue} from 'ui.vue';
import {Logger} from "im.lib.logger";

Vue.cloneComponent('bx-im-view-list-recent', 'bx-list',
{
	props: [
		'recentData'
	],
	data()
	{
		return Object.assign(this.parentData(), {
			cssPrefix: 'bx-messenger-list-recent',
			elementComponent: 'bx-im-view-list-item-recent',
			showSectionNames: false
		});
	},
	created()
	{
		this.parentCreated();
	},
	computed:
	{
		list()
		{
			return this.recentData;
		},
		sections()
		{
			return ['pinned', 'general'];
		}
	},
	methods:
	{
		onClick(event, id)
		{
			this.$emit('click', {id: id, $event: event});
		},

		onRightClick(event, id)
		{
			this.$emit('rightClick', {id: id, $event: event});
		},

		onScroll(event)
		{
			this.$emit('scroll', event);
		}
	}
});
list/recent/dist/recent.bundle.map.js000066400000002006147744174710013624 0ustar00{"version":3,"sources":["recent.bundle.js"],"names":["exports","ui_vue_components_list","im_view_list_item_recent","ui_vue","im_lib_logger","Vue","cloneComponent","props","data","Object","assign","this","parentData","cssPrefix","elementComponent","showSectionNames","created","parentCreated","computed","list","recentData","sections","methods","onClick","event","id","$emit","$event","onRightClick","onScroll","window","BX","Messenger","Lib"],"mappings":"CAAC,SAAUA,EAAQC,EAAuBC,EAAyBC,EAAOC,GACzE,aAUAD,EAAOE,IAAIC,eAAe,yBAA0B,WAClDC,OAAQ,cACRC,KAAM,SAASA,IACb,OAAOC,OAAOC,OAAOC,KAAKC,cACxBC,UAAW,2BACXC,iBAAkB,8BAClBC,iBAAkB,SAGtBC,QAAS,SAASA,IAChBL,KAAKM,iBAEPC,UACEC,KAAM,SAASA,IACb,OAAOR,KAAKS,YAEdC,SAAU,SAASA,IACjB,OAAQ,SAAU,aAGtBC,SACEC,QAAS,SAASA,EAAQC,EAAOC,GAC/Bd,KAAKe,MAAM,SACTD,GAAIA,EACJE,OAAQH,KAGZI,aAAc,SAASA,EAAaJ,EAAOC,GACzCd,KAAKe,MAAM,cACTD,GAAIA,EACJE,OAAQH,KAGZK,SAAU,SAASA,EAASL,GAC1Bb,KAAKe,MAAM,SAAUF,QA7C5B,CAkDGb,KAAKmB,OAASnB,KAAKmB,WAAcA,OAAOA,OAAOC,GAAGA,GAAGC,UAAUC","file":"recent.bundle.map.js"}list/recent/dist/recent.bundle.min.css000066400000001264147744174710014013 0ustar00.bx-messenger-list-recent .subtitle-left-icon-open{background:red;margin-right:5px;height:10px;width:10px}.bx-messenger-list-recent .title-left-icon-open{background:green;margin-right:5px;height:10px;width:10px}.bx-messenger-list-recent .title-right-icon-open{background:yellow;margin-left:5px;height:10px;width:10px}.bx-messenger-list-recent .date-left-icon-open{background:blue;margin-right:5px;height:10px;width:10px}.bx-messenger-list-recent .avatar-top-left-icon-open{background:lightsalmon;position:absolute;height:10px;width:10px;top:0;left:0}.bx-messenger-list-recent .avatar-bottom-right-icon-open{background:lightseagreen;position:absolute;height:10px;width:10px;top:25px;left:25px}list/recent/dist/recent.bundle.js000066400000002412147744174710013051 0ustar00(function (exports,ui_vue_components_list,im_view_list_item_recent,ui_vue,im_lib_logger) {
	'use strict';

	/**
	 * Bitrix UI
	 * Recent list Vue component
	 *
	 * @package bitrix
	 * @subpackage ui
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.cloneComponent('bx-im-view-list-recent', 'bx-list', {
	  props: ['recentData'],
	  data: function data() {
	    return Object.assign(this.parentData(), {
	      cssPrefix: 'bx-messenger-list-recent',
	      elementComponent: 'bx-im-view-list-item-recent',
	      showSectionNames: false
	    });
	  },
	  created: function created() {
	    this.parentCreated();
	  },
	  computed: {
	    list: function list() {
	      return this.recentData;
	    },
	    sections: function sections() {
	      return ['pinned', 'general'];
	    }
	  },
	  methods: {
	    onClick: function onClick(event, id) {
	      this.$emit('click', {
	        id: id,
	        $event: event
	      });
	    },
	    onRightClick: function onRightClick(event, id) {
	      this.$emit('rightClick', {
	        id: id,
	        $event: event
	      });
	    },
	    onScroll: function onScroll(event) {
	      this.$emit('scroll', event);
	    }
	  }
	});

}((this.window = this.window || {}),window,window,BX,BX.Messenger.Lib));
//# sourceMappingURL=recent.bundle.js.map
list/recent/dist/recent.bundle.css000066400000001535147744174710013232 0ustar00/*.bx-messenger-list-recent {*/
/*	width: 80px;*/
/*}*/

.bx-messenger-list-recent .subtitle-left-icon-open {
	background: red;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .title-left-icon-open {
	background: green;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .title-right-icon-open {
	background: yellow;
	margin-left: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .date-left-icon-open {
	background: blue;
	margin-right: 5px;
	height: 10px;
	width: 10px;
}

.bx-messenger-list-recent .avatar-top-left-icon-open {
	background: lightsalmon;
	position: absolute;
	height: 10px;
	width: 10px;
	top: 0;
	left: 0;
}

.bx-messenger-list-recent .avatar-bottom-right-icon-open {
	background: lightseagreen;
	position: absolute;
	height: 10px;
	width: 10px;
	top: 25px;
	left: 25px;
}list/recent/dist/recent.bundle.js.map000066400000004550147744174710013632 0ustar00{"version":3,"file":"recent.bundle.js","sources":["../src/recent.js"],"sourcesContent":["/**\n * Bitrix UI\n * Recent list Vue component\n *\n * @package bitrix\n * @subpackage ui\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./recent.css\";\n\nimport 'ui.vue.components.list';\nimport 'im.view.list.item.recent';\n\nimport {Vue} from 'ui.vue';\nimport {Logger} from \"im.lib.logger\";\n\nVue.cloneComponent('bx-im-view-list-recent', 'bx-list',\n{\n\tprops: [\n\t\t'recentData'\n\t],\n\tdata()\n\t{\n\t\treturn Object.assign(this.parentData(), {\n\t\t\tcssPrefix: 'bx-messenger-list-recent',\n\t\t\telementComponent: 'bx-im-view-list-item-recent',\n\t\t\tshowSectionNames: false\n\t\t});\n\t},\n\tcreated()\n\t{\n\t\tthis.parentCreated();\n\t},\n\tcomputed:\n\t{\n\t\tlist()\n\t\t{\n\t\t\treturn this.recentData;\n\t\t},\n\t\tsections()\n\t\t{\n\t\t\treturn ['pinned', 'general'];\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tonClick(event, id)\n\t\t{\n\t\t\tthis.$emit('click', {id: id, $event: event});\n\t\t},\n\n\t\tonRightClick(event, id)\n\t\t{\n\t\t\tthis.$emit('rightClick', {id: id, $event: event});\n\t\t},\n\n\t\tonScroll(event)\n\t\t{\n\t\t\tthis.$emit('scroll', event);\n\t\t}\n\t}\n});\n"],"names":["Vue","cloneComponent","props","data","Object","assign","parentData","cssPrefix","elementComponent","showSectionNames","created","parentCreated","computed","list","recentData","sections","methods","onClick","event","id","$emit","$event","onRightClick","onScroll"],"mappings":";;;CAAA;;;;;;;;AASA,AAQAA,WAAG,CAACC,cAAJ,CAAmB,wBAAnB,EAA6C,SAA7C,EACA;CACCC,EAAAA,KAAK,EAAE,CACN,YADM,CADR;CAICC,EAAAA,IAJD,kBAKC;CACC,WAAOC,MAAM,CAACC,MAAP,CAAc,KAAKC,UAAL,EAAd,EAAiC;CACvCC,MAAAA,SAAS,EAAE,0BAD4B;CAEvCC,MAAAA,gBAAgB,EAAE,6BAFqB;CAGvCC,MAAAA,gBAAgB,EAAE;CAHqB,KAAjC,CAAP;CAKA,GAXF;CAYCC,EAAAA,OAZD,qBAaC;CACC,SAAKC,aAAL;CACA,GAfF;CAgBCC,EAAAA,QAAQ,EACR;CACCC,IAAAA,IADD,kBAEC;CACC,aAAO,KAAKC,UAAZ;CACA,KAJF;CAKCC,IAAAA,QALD,sBAMC;CACC,aAAO,CAAC,QAAD,EAAW,SAAX,CAAP;CACA;CARF,GAjBD;CA2BCC,EAAAA,OAAO,EACP;CACCC,IAAAA,OADD,mBACSC,KADT,EACgBC,EADhB,EAEC;CACC,WAAKC,KAAL,CAAW,OAAX,EAAoB;CAACD,QAAAA,EAAE,EAAEA,EAAL;CAASE,QAAAA,MAAM,EAAEH;CAAjB,OAApB;CACA,KAJF;CAMCI,IAAAA,YAND,wBAMcJ,KANd,EAMqBC,EANrB,EAOC;CACC,WAAKC,KAAL,CAAW,YAAX,EAAyB;CAACD,QAAAA,EAAE,EAAEA,EAAL;CAASE,QAAAA,MAAM,EAAEH;CAAjB,OAAzB;CACA,KATF;CAWCK,IAAAA,QAXD,oBAWUL,KAXV,EAYC;CACC,WAAKE,KAAL,CAAW,QAAX,EAAqBF,KAArB;CACA;CAdF;CA5BD,CADA;;;;"}list/recent/dist/recent.bundle.min.js000066400000001324147744174710013634 0ustar00(function(t,e,n,i,s){"use strict";i.Vue.cloneComponent("bx-im-view-list-recent","bx-list",{props:["recentData"],data:function t(){return Object.assign(this.parentData(),{cssPrefix:"bx-messenger-list-recent",elementComponent:"bx-im-view-list-item-recent",showSectionNames:false})},created:function t(){this.parentCreated()},computed:{list:function t(){return this.recentData},sections:function t(){return["pinned","general"]}},methods:{onClick:function t(e,n){this.$emit("click",{id:n,$event:e})},onRightClick:function t(e,n){this.$emit("rightClick",{id:n,$event:e})},onScroll:function t(e){this.$emit("scroll",e)}}})})(this.window=this.window||{},window,window,BX,BX.Messenger.Lib);
//# sourceMappingURL=recent.bundle.map.jslist/item/recent/config.php000066400000000421147744174710011732 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' =>[
		'./dist/recent.bundle.js',
	],
	'css' => [
		'./dist/recent.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.lib.utils',
	],
	'skip_core' => true,
];list/item/recent/bundle.config.js000066400000000124147744174710013027 0ustar00module.exports = {
	input: './src/recent.js',
	output: './dist/recent.bundle.js',
};list/item/recent/src/recent.css000066400000024205147744174710012543 0ustar00.bx-messenger-list-recent .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-messenger-list-recent .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-counter-left-pinned {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2221%22%20height%3D%2221%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M19.812%206.324c.553.554.524%201.48-.064%202.067-.588.587-1.514.613-2.066.06L16.65%207.418%2010.09%2016.02l1.007%201.007c.516.56.473%201.455-.1%202.027-.571.572-1.466.616-2.026.1l-2.46-2.456-5.336%203.773a.387.387%200%2001-.369.124.34.34%200%2001-.261-.263.387.387%200%2001.125-.368l3.702-5.409-2.41-2.408c-.528-.559-.488-1.463.088-2.039.577-.576%201.48-.615%202.039-.087l1.007%201.006%208.603-6.56-1.024-1.025c-.527-.558-.487-1.462.09-2.038.576-.577%201.48-.615%202.038-.088l5.01%205.007z%22%20fill%3D%22%23767C87%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-recent .bx-vue-list-icon-date-left-icon-read {
	background-color: #ccc;
}list/item/recent/src/recent.js000066400000010532147744174710012365 0ustar00import { Vue } from "ui.vue";
import { Utils } from "im.lib.utils";

import "./recent.css";

Vue.cloneComponent('bx-im-view-list-item-recent', 'bx-list-element',
{
	props: [
		'rawListItem',
		'itemTypes'
	],

	methods:
	{
		formatDate(date)
		{
			let weekDays = ['pn', 'vt', 'sr', 'ch', 'py', 'sb', 'vs'];

			date = new Date(date);
			let currentDate = new Date();

			let dateWeekDay = date.getDay() - (date.getDay() === 0 ? -6 : 1);
			let currentDayOfWeek = currentDate.getDay() - (currentDate.getDay() === 0 ? -6 : 1);

			let weekStartDate = currentDate.getDate() - currentDayOfWeek;
			let weekStartTime = new Date(new Date(new Date().setDate(weekStartDate)).setHours(0, 0, 0)).getTime();

			if (
				date.getFullYear() === currentDate.getFullYear()
				&& date.getMonth() === currentDate.getMonth()
				&& date.getDate() === currentDate.getDate()
			)
			{
				return Utils.date.format(date, 'H:i');
			}
			else if (date.getTime() > weekStartTime)
			{
				return weekDays[dateWeekDay];
			}
			else if (date.getFullYear() === currentDate.getFullYear())
			{
				return Utils.date.format(date, 'd.m');
			}
			else
			{
				return Utils.date.format(date, 'd.m.Y');
			}
		}
	},
	computed:
	{
		listItem()
		{
			return {
				id: this.rawListItem.id,
				template: this.rawListItem.template,
				type: this.rawListItem.chatType,
				sectionCode: this.rawListItem.sectionCode,
				title: {
					leftIcon: this.titleLeftIcon,
					value: this.titleValue
				},
				subtitle: {
					value: this.rawListItem.message.text
				},
				avatar: {
					url: this.avatarUrl,
					bottomRightIcon: this.avatarBottomRightIcon
				},
				message: this.rawListItem.message,
				date: {
					value: this.formatDate(this.rawListItem.message.date)
				},
				counter: {
					value: this.rawListItem.counter,
					leftIcon: this.rawListItem.pinned ? 'pinned' : ''
				},
				notification: false,
			}
		},

		listItemStyle()
		{
			if (this.rawListItem.sectionCode === 'pinned')
			{
				return {
					backgroundColor: '#f7f7f7'
				};
			}

			return {};
		},

		imageStyle()
		{
			let backgroundColor = '';
			if (!this.listItem.avatar.url)
			{
				backgroundColor = this.imageColor;
			}

			return {
				backgroundColor
			};
		},

		imageClass()
		{
			let classes = 'bx-vue-list-item-image ';

			if (this.isGeneralChat)
			{
				classes += 'bx-vue-list-item-image-general';
			}

			return classes;
		},

		imageColor()
		{
			if (this.isUser && this.userData)
			{
				return this.userData.color;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.color;
			}

			if (this.isNotificationChat)
			{
				return this.rawListItem.color;
			}
		},

		avatarUrl()
		{
			if (this.isGeneralChat)
			{
				return '/bitrix/js/im/images/blank.gif';
			}

			if (this.isUser && this.userData)
			{
				return this.userData.avatar;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.avatar;
			}
		},

		avatarBottomRightIcon()
		{
			if (this.isUser)
			{
				if (this.userData.isMobileOnline)
				{
					return 'mobile-online';
				}
				else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))
				{
					return this.userData.status;
				}
				else if (this.userData.isOnline)
				{
					return 'online';
				}
				else
				{
					return 'offline';
				}
			}
		},

		titleLeftIcon()
		{
			if (this.isUser)
			{
				if (this.userData.isAbsent)
				{
					return 'absent';
				}
				else if (this.userData.isBirthday)
				{
					return 'birthday';
				}
				else
				{
					return '';
				}
			}

			if (this.isChat)
			{
				return this.rawListItem.chatType;
			}
		},

		titleValue()
		{
			if (this.isUser && this.userData)
			{
				return this.userData.name;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.name;
			}

			if (this.isNotificationChat)
			{
				return this.rawListItem.title;
			}
		},

		userData()
		{
			return this.$root.$store.getters['users/get'](this.rawListItem.userId);
		},

		dialogData()
		{
			return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
		},

		isChat()
		{
			return ['chat', 'open'].includes(this.rawListItem.chatType)
		},

		isUser()
		{
			return this.rawListItem.chatType === 'user';
		},

		isNotificationChat()
		{
			return this.rawListItem.id === 'notify';
		},

		isGeneralChat()
		{
			return this.rawListItem.id === 'chat1';
		}
	}
});list/item/recent/dist/element.bundle.min.css000066400000017671147744174710015133 0ustar00.bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:6px 9px;}

.bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:center 4px;}

.bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-online{background-color:#58cc47;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-away{background-color:#f79d54;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-offline{background-color:#ccc;border-radius:50%;}

.bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-icon-counter-left-pinned{background-color:#aaa}.bx-vue-list-icon-date-left-icon-read{background-color:#ccc}list/item/recent/dist/element.bundle.css000066400000020041147744174710014332 0ustar00.bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-counter-left-pinned {
	background-color: #aaa;
}

.bx-vue-list-icon-date-left-icon-read {
	background-color: #ccc;
}list/item/recent/dist/recent.bundle.map.js000066400000007411147744174710014567 0ustar00{"version":3,"sources":["recent.bundle.js"],"names":["exports","ui_vue","im_lib_utils","Vue","cloneComponent","props","methods","formatDate","date","weekDays","Date","currentDate","dateWeekDay","getDay","currentDayOfWeek","weekStartDate","getDate","weekStartTime","setDate","setHours","getTime","getFullYear","getMonth","Utils","format","computed","listItem","id","this","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","subtitle","message","text","avatar","url","avatarUrl","bottomRightIcon","avatarBottomRightIcon","counter","pinned","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","classes","isGeneralChat","isUser","userData","color","isChat","dialogData","isNotificationChat","isMobileOnline","isOnline","status","isAbsent","isBirthday","name","$root","$store","getters","userId","chatId","includes","window","BX","Messenger","Lib"],"mappings":"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","file":"recent.bundle.map.js"}list/item/recent/dist/recent.bundle.min.css000066400000024023147744174710014747 0ustar00.bx-messenger-list-recent .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:6px 9px;}

.bx-messenger-list-recent .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:center 4px;}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-recent .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;background-size:cover}.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-online{background-color:#58cc47;border-radius:50%;}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-away{background-color:#f79d54;border-radius:50%;}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-offline{background-color:#ccc;border-radius:50%;}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-recent .bx-vue-list-icon-counter-left-pinned {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2221%22%20height%3D%2221%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M19.812%206.324c.553.554.524%201.48-.064%202.067-.588.587-1.514.613-2.066.06L16.65%207.418%2010.09%2016.02l1.007%201.007c.516.56.473%201.455-.1%202.027-.571.572-1.466.616-2.026.1l-2.46-2.456-5.336%203.773a.387.387%200%2001-.369.124.34.34%200%2001-.261-.263.387.387%200%2001.125-.368l3.702-5.409-2.41-2.408c-.528-.559-.488-1.463.088-2.039.577-.576%201.48-.615%202.039-.087l1.007%201.006%208.603-6.56-1.024-1.025c-.527-.558-.487-1.462.09-2.038.576-.577%201.48-.615%202.038-.088l5.01%205.007z%22%20fill%3D%22%23767C87%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;background-size:cover}.bx-messenger-list-recent .bx-vue-list-icon-date-left-icon-read{background-color:#ccc}list/item/recent/dist/recent.bundle.js000066400000012410147744174710014006 0ustar00(function (exports,ui_vue,im_lib_utils) {
	'use strict';

	ui_vue.Vue.cloneComponent('bx-im-view-list-item-recent', 'bx-list-element', {
	  props: ['rawListItem', 'itemTypes'],
	  methods: {
	    formatDate: function formatDate(date) {
	      var weekDays = ['pn', 'vt', 'sr', 'ch', 'py', 'sb', 'vs'];
	      date = new Date(date);
	      var currentDate = new Date();
	      var dateWeekDay = date.getDay() - (date.getDay() === 0 ? -6 : 1);
	      var currentDayOfWeek = currentDate.getDay() - (currentDate.getDay() === 0 ? -6 : 1);
	      var weekStartDate = currentDate.getDate() - currentDayOfWeek;
	      var weekStartTime = new Date(new Date(new Date().setDate(weekStartDate)).setHours(0, 0, 0)).getTime();

	      if (date.getFullYear() === currentDate.getFullYear() && date.getMonth() === currentDate.getMonth() && date.getDate() === currentDate.getDate()) {
	        return im_lib_utils.Utils.date.format(date, 'H:i');
	      } else if (date.getTime() > weekStartTime) {
	        return weekDays[dateWeekDay];
	      } else if (date.getFullYear() === currentDate.getFullYear()) {
	        return im_lib_utils.Utils.date.format(date, 'd.m');
	      } else {
	        return im_lib_utils.Utils.date.format(date, 'd.m.Y');
	      }
	    }
	  },
	  computed: {
	    listItem: function listItem() {
	      return {
	        id: this.rawListItem.id,
	        template: this.rawListItem.template,
	        type: this.rawListItem.chatType,
	        sectionCode: this.rawListItem.sectionCode,
	        title: {
	          leftIcon: this.titleLeftIcon,
	          value: this.titleValue
	        },
	        subtitle: {
	          value: this.rawListItem.message.text
	        },
	        avatar: {
	          url: this.avatarUrl,
	          bottomRightIcon: this.avatarBottomRightIcon
	        },
	        message: this.rawListItem.message,
	        date: {
	          value: this.formatDate(this.rawListItem.message.date)
	        },
	        counter: {
	          value: this.rawListItem.counter,
	          leftIcon: this.rawListItem.pinned ? 'pinned' : ''
	        },
	        notification: false
	      };
	    },
	    listItemStyle: function listItemStyle() {
	      if (this.rawListItem.sectionCode === 'pinned') {
	        return {
	          backgroundColor: '#f7f7f7'
	        };
	      }

	      return {};
	    },
	    imageStyle: function imageStyle() {
	      var backgroundColor = '';

	      if (!this.listItem.avatar.url) {
	        backgroundColor = this.imageColor;
	      }

	      return {
	        backgroundColor: backgroundColor
	      };
	    },
	    imageClass: function imageClass() {
	      var classes = 'bx-vue-list-item-image ';

	      if (this.isGeneralChat) {
	        classes += 'bx-vue-list-item-image-general';
	      }

	      return classes;
	    },
	    imageColor: function imageColor() {
	      if (this.isUser && this.userData) {
	        return this.userData.color;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.color;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.color;
	      }
	    },
	    avatarUrl: function avatarUrl() {
	      if (this.isGeneralChat) {
	        return '/bitrix/js/im/images/blank.gif';
	      }

	      if (this.isUser && this.userData) {
	        return this.userData.avatar;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.avatar;
	      }
	    },
	    avatarBottomRightIcon: function avatarBottomRightIcon() {
	      if (this.isUser) {
	        if (this.userData.isMobileOnline) {
	          return 'mobile-online';
	        } else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd')) {
	          return this.userData.status;
	        } else if (this.userData.isOnline) {
	          return 'online';
	        } else {
	          return 'offline';
	        }
	      }
	    },
	    titleLeftIcon: function titleLeftIcon() {
	      if (this.isUser) {
	        if (this.userData.isAbsent) {
	          return 'absent';
	        } else if (this.userData.isBirthday) {
	          return 'birthday';
	        } else {
	          return '';
	        }
	      }

	      if (this.isChat) {
	        return this.rawListItem.chatType;
	      }
	    },
	    titleValue: function titleValue() {
	      if (this.isUser && this.userData) {
	        return this.userData.name;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.name;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.title;
	      }
	    },
	    userData: function userData() {
	      return this.$root.$store.getters['users/get'](this.rawListItem.userId);
	    },
	    dialogData: function dialogData() {
	      return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
	    },
	    isChat: function isChat() {
	      return ['chat', 'open'].includes(this.rawListItem.chatType);
	    },
	    isUser: function isUser() {
	      return this.rawListItem.chatType === 'user';
	    },
	    isNotificationChat: function isNotificationChat() {
	      return this.rawListItem.id === 'notify';
	    },
	    isGeneralChat: function isGeneralChat() {
	      return this.rawListItem.id === 'chat1';
	    }
	  }
	});

}((this.window = this.window || {}),BX,BX.Messenger.Lib));
//# sourceMappingURL=recent.bundle.js.map
list/item/recent/dist/recent.bundle.css000066400000024205147744174710014167 0ustar00.bx-messenger-list-recent .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-messenger-list-recent .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-recent .bx-vue-list-icon-counter-left-pinned {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2221%22%20height%3D%2221%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M19.812%206.324c.553.554.524%201.48-.064%202.067-.588.587-1.514.613-2.066.06L16.65%207.418%2010.09%2016.02l1.007%201.007c.516.56.473%201.455-.1%202.027-.571.572-1.466.616-2.026.1l-2.46-2.456-5.336%203.773a.387.387%200%2001-.369.124.34.34%200%2001-.261-.263.387.387%200%2001.125-.368l3.702-5.409-2.41-2.408c-.528-.559-.488-1.463.088-2.039.577-.576%201.48-.615%202.039-.087l1.007%201.006%208.603-6.56-1.024-1.025c-.527-.558-.487-1.462.09-2.038.576-.577%201.48-.615%202.038-.088l5.01%205.007z%22%20fill%3D%22%23767C87%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-recent .bx-vue-list-icon-date-left-icon-read {
	background-color: #ccc;
}list/item/recent/dist/recent.bundle.js.map000066400000025577147744174710014604 0ustar00{"version":3,"file":"recent.bundle.js","sources":["../src/recent.js"],"sourcesContent":["import { Vue } from \"ui.vue\";\nimport { Utils } from \"im.lib.utils\";\n\nimport \"./recent.css\";\n\nVue.cloneComponent('bx-im-view-list-item-recent', 'bx-list-element',\n{\n\tprops: [\n\t\t'rawListItem',\n\t\t'itemTypes'\n\t],\n\n\tmethods:\n\t{\n\t\tformatDate(date)\n\t\t{\n\t\t\tlet weekDays = ['pn', 'vt', 'sr', 'ch', 'py', 'sb', 'vs'];\n\n\t\t\tdate = new Date(date);\n\t\t\tlet currentDate = new Date();\n\n\t\t\tlet dateWeekDay = date.getDay() - (date.getDay() === 0 ? -6 : 1);\n\t\t\tlet currentDayOfWeek = currentDate.getDay() - (currentDate.getDay() === 0 ? -6 : 1);\n\n\t\t\tlet weekStartDate = currentDate.getDate() - currentDayOfWeek;\n\t\t\tlet weekStartTime = new Date(new Date(new Date().setDate(weekStartDate)).setHours(0, 0, 0)).getTime();\n\n\t\t\tif (\n\t\t\t\tdate.getFullYear() === currentDate.getFullYear()\n\t\t\t\t&& date.getMonth() === currentDate.getMonth()\n\t\t\t\t&& date.getDate() === currentDate.getDate()\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'H:i');\n\t\t\t}\n\t\t\telse if (date.getTime() > weekStartTime)\n\t\t\t{\n\t\t\t\treturn weekDays[dateWeekDay];\n\t\t\t}\n\t\t\telse if (date.getFullYear() === currentDate.getFullYear())\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'd.m');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'd.m.Y');\n\t\t\t}\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tlistItem()\n\t\t{\n\t\t\treturn {\n\t\t\t\tid: this.rawListItem.id,\n\t\t\t\ttemplate: this.rawListItem.template,\n\t\t\t\ttype: this.rawListItem.chatType,\n\t\t\t\tsectionCode: this.rawListItem.sectionCode,\n\t\t\t\ttitle: {\n\t\t\t\t\tleftIcon: this.titleLeftIcon,\n\t\t\t\t\tvalue: this.titleValue\n\t\t\t\t},\n\t\t\t\tsubtitle: {\n\t\t\t\t\tvalue: this.rawListItem.message.text\n\t\t\t\t},\n\t\t\t\tavatar: {\n\t\t\t\t\turl: this.avatarUrl,\n\t\t\t\t\tbottomRightIcon: this.avatarBottomRightIcon\n\t\t\t\t},\n\t\t\t\tmessage: this.rawListItem.message,\n\t\t\t\tdate: {\n\t\t\t\t\tvalue: this.formatDate(this.rawListItem.message.date)\n\t\t\t\t},\n\t\t\t\tcounter: {\n\t\t\t\t\tvalue: this.rawListItem.counter,\n\t\t\t\t\tleftIcon: this.rawListItem.pinned ? 'pinned' : ''\n\t\t\t\t},\n\t\t\t\tnotification: false,\n\t\t\t}\n\t\t},\n\n\t\tlistItemStyle()\n\t\t{\n\t\t\tif (this.rawListItem.sectionCode === 'pinned')\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundColor: '#f7f7f7'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {};\n\t\t},\n\n\t\timageStyle()\n\t\t{\n\t\t\tlet backgroundColor = '';\n\t\t\tif (!this.listItem.avatar.url)\n\t\t\t{\n\t\t\t\tbackgroundColor = this.imageColor;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundColor\n\t\t\t};\n\t\t},\n\n\t\timageClass()\n\t\t{\n\t\t\tlet classes = 'bx-vue-list-item-image ';\n\n\t\t\tif (this.isGeneralChat)\n\t\t\t{\n\t\t\t\tclasses += 'bx-vue-list-item-image-general';\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\n\t\timageColor()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.color;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.color;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.color;\n\t\t\t}\n\t\t},\n\n\t\tavatarUrl()\n\t\t{\n\t\t\tif (this.isGeneralChat)\n\t\t\t{\n\t\t\t\treturn '/bitrix/js/im/images/blank.gif';\n\t\t\t}\n\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.avatar;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.avatar;\n\t\t\t}\n\t\t},\n\n\t\tavatarBottomRightIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isMobileOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'mobile-online';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))\n\t\t\t\t{\n\t\t\t\t\treturn this.userData.status;\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'online';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn 'offline';\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttitleLeftIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isAbsent)\n\t\t\t\t{\n\t\t\t\t\treturn 'absent';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn 'birthday';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.chatType;\n\t\t\t}\n\t\t},\n\n\t\ttitleValue()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.name;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.name;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.title;\n\t\t\t}\n\t\t},\n\n\t\tuserData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['users/get'](this.rawListItem.userId);\n\t\t},\n\n\t\tdialogData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);\n\t\t},\n\n\t\tisChat()\n\t\t{\n\t\t\treturn ['chat', 'open'].includes(this.rawListItem.chatType)\n\t\t},\n\n\t\tisUser()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'user';\n\t\t},\n\n\t\tisNotificationChat()\n\t\t{\n\t\t\treturn this.rawListItem.id === 'notify';\n\t\t},\n\n\t\tisGeneralChat()\n\t\t{\n\t\t\treturn this.rawListItem.id === 'chat1';\n\t\t}\n\t}\n});"],"names":["Vue","cloneComponent","props","methods","formatDate","date","weekDays","Date","currentDate","dateWeekDay","getDay","currentDayOfWeek","weekStartDate","getDate","weekStartTime","setDate","setHours","getTime","getFullYear","getMonth","Utils","format","computed","listItem","id","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","subtitle","message","text","avatar","url","avatarUrl","bottomRightIcon","avatarBottomRightIcon","counter","pinned","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","classes","isGeneralChat","isUser","userData","color","isChat","dialogData","isNotificationChat","isMobileOnline","isOnline","status","isAbsent","isBirthday","name","$root","$store","getters","userId","chatId","includes"],"mappings":"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"}list/item/recent/dist/recent.bundle.min.js000066400000006330147744174710014574 0ustar00(function(t,e,i){"use strict";e.Vue.cloneComponent("bx-im-view-list-item-recent","bx-list-element",{props:["rawListItem","itemTypes"],methods:{formatDate:function t(e){var a=["pn","vt","sr","ch","py","sb","vs"];e=new Date(e);var s=new Date;var r=e.getDay()-(e.getDay()===0?-6:1);var n=s.getDay()-(s.getDay()===0?-6:1);var o=s.getDate()-n;var u=new Date(new Date((new Date).setDate(o)).setHours(0,0,0)).getTime();if(e.getFullYear()===s.getFullYear()&&e.getMonth()===s.getMonth()&&e.getDate()===s.getDate()){return i.Utils.date.format(e,"H:i")}else if(e.getTime()>u){return a[r]}else if(e.getFullYear()===s.getFullYear()){return i.Utils.date.format(e,"d.m")}else{return i.Utils.date.format(e,"d.m.Y")}}},computed:{listItem:function t(){return{id:this.rawListItem.id,template:this.rawListItem.template,type:this.rawListItem.chatType,sectionCode:this.rawListItem.sectionCode,title:{leftIcon:this.titleLeftIcon,value:this.titleValue},subtitle:{value:this.rawListItem.message.text},avatar:{url:this.avatarUrl,bottomRightIcon:this.avatarBottomRightIcon},message:this.rawListItem.message,date:{value:this.formatDate(this.rawListItem.message.date)},counter:{value:this.rawListItem.counter,leftIcon:this.rawListItem.pinned?"pinned":""},notification:false}},listItemStyle:function t(){if(this.rawListItem.sectionCode==="pinned"){return{backgroundColor:"#f7f7f7"}}return{}},imageStyle:function t(){var e="";if(!this.listItem.avatar.url){e=this.imageColor}return{backgroundColor:e}},imageClass:function t(){var e="bx-vue-list-item-image ";if(this.isGeneralChat){e+="bx-vue-list-item-image-general"}return e},imageColor:function t(){if(this.isUser&&this.userData){return this.userData.color}if(this.isChat&&this.dialogData){return this.dialogData.color}if(this.isNotificationChat){return this.rawListItem.color}},avatarUrl:function t(){if(this.isGeneralChat){return"/bitrix/js/im/images/blank.gif"}if(this.isUser&&this.userData){return this.userData.avatar}if(this.isChat&&this.dialogData){return this.dialogData.avatar}},avatarBottomRightIcon:function t(){if(this.isUser){if(this.userData.isMobileOnline){return"mobile-online"}else if(this.userData.isOnline&&(this.userData.status==="away"||this.userData.status==="dnd")){return this.userData.status}else if(this.userData.isOnline){return"online"}else{return"offline"}}},titleLeftIcon:function t(){if(this.isUser){if(this.userData.isAbsent){return"absent"}else if(this.userData.isBirthday){return"birthday"}else{return""}}if(this.isChat){return this.rawListItem.chatType}},titleValue:function t(){if(this.isUser&&this.userData){return this.userData.name}if(this.isChat&&this.dialogData){return this.dialogData.name}if(this.isNotificationChat){return this.rawListItem.title}},userData:function t(){return this.$root.$store.getters["users/get"](this.rawListItem.userId)},dialogData:function t(){return this.$root.$store.getters["dialogues/getByChatId"](this.rawListItem.chatId)},isChat:function t(){return["chat","open"].includes(this.rawListItem.chatType)},isUser:function t(){return this.rawListItem.chatType==="user"},isNotificationChat:function t(){return this.rawListItem.id==="notify"},isGeneralChat:function t(){return this.rawListItem.id==="chat1"}}})})(this.window=this.window||{},BX,BX.Messenger.Lib);
//# sourceMappingURL=recent.bundle.map.jslist/item/recent/dist/element.bundle.js000066400000011127147744174710014163 0ustar00(function (exports,ui_vue,im_lib_utils) {
	'use strict';

	ui_vue.Vue.cloneComponent('bx-im-view-list-item-recent', 'bx-list-element', {
	  props: ['rawListItem', 'itemTypes'],
	  methods: {
	    formatDate: function formatDate(date) {
	      date = new Date(date);
	      var currentDate = new Date();
	      var weekAgo = currentDate.getTime() - 7 * 24 * 60 * 60 * 1000;
	      var weekDays = ['vs', 'pn', 'vt', 'sr', 'ch', 'py', 'sb'];

	      if (date.getFullYear() === currentDate.getFullYear() && date.getMonth() === currentDate.getMonth() && date.getDate() === currentDate.getDate()) {
	        return im_lib_utils.Utils.date.format(date, 'H:i');
	      } else if (date.getTime() > weekAgo) {
	        return weekDays[date.getDay()];
	      } else if (date.getFullYear() === currentDate.getFullYear()) {
	        return im_lib_utils.Utils.date.format(date, 'd.m');
	      } else {
	        return im_lib_utils.Utils.date.format(date, 'd.m.Y');
	      }
	    }
	  },
	  computed: {
	    listItem: function listItem() {
	      return {
	        id: this.rawListItem.id,
	        template: this.rawListItem.template,
	        type: this.rawListItem.chatType,
	        sectionCode: this.rawListItem.sectionCode,
	        title: {
	          leftIcon: this.titleLeftIcon,
	          value: this.titleValue
	        },
	        subtitle: {
	          value: this.rawListItem.message.text
	        },
	        avatar: {
	          url: this.avatarUrl,
	          bottomRightIcon: this.avatarBottomRightIcon
	        },
	        message: this.rawListItem.message,
	        date: {
	          value: this.formatDate(this.rawListItem.message.date)
	        },
	        counter: {
	          value: this.rawListItem.counter,
	          leftIcon: this.rawListItem.pinned ? 'pinned' : ''
	        },
	        notification: false
	      };
	    },
	    listItemStyle: function listItemStyle() {
	      if (this.rawListItem.sectionCode === 'pinned') {
	        return {
	          backgroundColor: '#f7f7f7'
	        };
	      }

	      return {};
	    },
	    imageStyle: function imageStyle() {
	      return {
	        backgroundColor: this.listItem.avatar.url ? '' : this.imageColor
	      };
	    },
	    imageClass: function imageClass() {
	      return 'bx-vue-list-item-image';
	    },
	    imageColor: function imageColor() {
	      if (this.isUser && this.userData) {
	        return this.userData.color;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.color;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.color;
	      }
	    },
	    avatarUrl: function avatarUrl() {
	      if (this.isUser && this.userData) {
	        return this.userData.avatar;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.avatar;
	      }
	    },
	    avatarBottomRightIcon: function avatarBottomRightIcon() {
	      if (this.isUser) {
	        if (this.userData.isMobileOnline) {
	          return 'mobile-online';
	        } else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd')) {
	          return this.userData.status;
	        } else if (this.userData.isOnline) {
	          return 'online';
	        } else {
	          return 'offline';
	        }
	      }
	    },
	    titleLeftIcon: function titleLeftIcon() {
	      if (this.isUser) {
	        if (this.userData.isAbsent) {
	          return 'absent';
	        } else if (this.userData.isBirthday) {
	          return 'birthday';
	        } else {
	          return '';
	        }
	      }

	      if (this.isChat) {
	        return this.rawListItem.chatType;
	      }
	    },
	    titleValue: function titleValue() {
	      if (this.isUser && this.userData) {
	        return this.userData.name;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.name;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.title;
	      }
	    },
	    userData: function userData() {
	      return this.$root.$store.getters['users/get'](this.rawListItem.userId);
	    },
	    dialogData: function dialogData() {
	      return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
	    },
	    isChat: function isChat() {
	      return ['chat', 'open'].includes(this.rawListItem.chatType);
	    },
	    isUser: function isUser() {
	      return this.rawListItem.chatType === 'user';
	    },
	    isNotificationChat: function isNotificationChat() {
	      return this.rawListItem.chatType === 'notification';
	    }
	  }
	});

}((this.window = this.window || {}),BX,BX.Messenger));
//# sourceMappingURL=element.bundle.js.map
list/item/recent/dist/element.bundle.min.js000066400000005614147744174710014751 0ustar00(function(t,e,i){"use strict";e.Vue.cloneComponent("bx-im-view-list-item-recent","bx-list-element",{props:["rawListItem","itemTypes"],methods:{formatDate:function t(e){e=new Date(e);var s=new Date;var a=s.getTime()-7*24*60*60*1e3;var r=["vs","pn","vt","sr","ch","py","sb"];if(e.getFullYear()===s.getFullYear()&&e.getMonth()===s.getMonth()&&e.getDate()===s.getDate()){return i.Utils.date.format(e,"H:i")}else if(e.getTime()>a){return r[e.getDay()]}else if(e.getFullYear()===s.getFullYear()){return i.Utils.date.format(e,"d.m")}else{return i.Utils.date.format(e,"d.m.Y")}}},computed:{listItem:function t(){return{id:this.rawListItem.id,template:this.rawListItem.template,type:this.rawListItem.chatType,sectionCode:this.rawListItem.sectionCode,title:{leftIcon:this.titleLeftIcon,value:this.titleValue},subtitle:{value:this.rawListItem.message.text},avatar:{url:this.avatarUrl,bottomRightIcon:this.avatarBottomRightIcon},message:this.rawListItem.message,date:{value:this.formatDate(this.rawListItem.message.date)},counter:{value:this.rawListItem.counter,leftIcon:this.rawListItem.pinned?"pinned":""},notification:false}},listItemStyle:function t(){if(this.rawListItem.sectionCode==="pinned"){return{backgroundColor:"#f7f7f7"}}return{}},imageStyle:function t(){return{backgroundColor:this.listItem.avatar.url?"":this.imageColor}},imageClass:function t(){return"bx-vue-list-item-image"},imageColor:function t(){if(this.isUser&&this.userData){return this.userData.color}if(this.isChat&&this.dialogData){return this.dialogData.color}if(this.isNotificationChat){return this.rawListItem.color}},avatarUrl:function t(){if(this.isUser&&this.userData){return this.userData.avatar}if(this.isChat&&this.dialogData){return this.dialogData.avatar}},avatarBottomRightIcon:function t(){if(this.isUser){if(this.userData.isMobileOnline){return"mobile-online"}else if(this.userData.isOnline&&(this.userData.status==="away"||this.userData.status==="dnd")){return this.userData.status}else if(this.userData.isOnline){return"online"}else{return"offline"}}},titleLeftIcon:function t(){if(this.isUser){if(this.userData.isAbsent){return"absent"}else if(this.userData.isBirthday){return"birthday"}else{return""}}if(this.isChat){return this.rawListItem.chatType}},titleValue:function t(){if(this.isUser&&this.userData){return this.userData.name}if(this.isChat&&this.dialogData){return this.dialogData.name}if(this.isNotificationChat){return this.rawListItem.title}},userData:function t(){return this.$root.$store.getters["users/get"](this.rawListItem.userId)},dialogData:function t(){return this.$root.$store.getters["dialogues/getByChatId"](this.rawListItem.chatId)},isChat:function t(){return["chat","open"].includes(this.rawListItem.chatType)},isUser:function t(){return this.rawListItem.chatType==="user"},isNotificationChat:function t(){return this.rawListItem.chatType==="notification"}}})})(this.window=this.window||{},BX,BX.Messenger);
//# sourceMappingURL=element.bundle.map.jslist/item/recent/dist/element.bundle.js.map000066400000022770147744174710014745 0ustar00{"version":3,"file":"element.bundle.js","sources":["../src/element.js"],"sourcesContent":["import { Vue } from \"ui.vue\";\nimport { Utils } from \"im.lib.utils\";\n\nimport \"./element.css\";\n\nVue.cloneComponent('bx-im-view-list-item-recent', 'bx-list-element',\n{\n\tprops: [\n\t\t'rawListItem',\n\t\t'itemTypes'\n\t],\n\n\tmethods:\n\t{\n\t\tformatDate(date)\n\t\t{\n\t\t\tdate = new Date(date);\n\t\t\tlet currentDate = new Date();\n\t\t\tlet weekAgo = currentDate.getTime() - (7*24*60*60*1000);\n\t\t\tlet weekDays = ['vs', 'pn', 'vt', 'sr', 'ch', 'py', 'sb'];\n\n\t\t\tif (\n\t\t\t\tdate.getFullYear() === currentDate.getFullYear()\n\t\t\t\t&& date.getMonth() === currentDate.getMonth()\n\t\t\t\t&& date.getDate() === currentDate.getDate()\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'H:i');\n\t\t\t}\n\t\t\telse if (date.getTime() > weekAgo)\n\t\t\t{\n\t\t\t\treturn weekDays[date.getDay()];\n\t\t\t}\n\t\t\telse if (date.getFullYear() === currentDate.getFullYear())\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'd.m');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn Utils.date.format(date, 'd.m.Y');\n\t\t\t}\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tlistItem()\n\t\t{\n\t\t\treturn {\n\t\t\t\tid: this.rawListItem.id,\n\t\t\t\ttemplate: this.rawListItem.template,\n\t\t\t\ttype: this.rawListItem.chatType,\n\t\t\t\tsectionCode: this.rawListItem.sectionCode,\n\t\t\t\ttitle: {\n\t\t\t\t\tleftIcon: this.titleLeftIcon,\n\t\t\t\t\tvalue: this.titleValue\n\t\t\t\t},\n\t\t\t\tsubtitle: {\n\t\t\t\t\tvalue: this.rawListItem.message.text\n\t\t\t\t},\n\t\t\t\tavatar: {\n\t\t\t\t\turl: this.avatarUrl,\n\t\t\t\t\tbottomRightIcon: this.avatarBottomRightIcon\n\t\t\t\t},\n\t\t\t\tmessage: this.rawListItem.message,\n\t\t\t\tdate: {\n\t\t\t\t\tvalue: this.formatDate(this.rawListItem.message.date)\n\t\t\t\t},\n\t\t\t\tcounter: {\n\t\t\t\t\tvalue: this.rawListItem.counter,\n\t\t\t\t\tleftIcon: this.rawListItem.pinned ? 'pinned' : ''\n\t\t\t\t},\n\t\t\t\tnotification: false,\n\t\t\t}\n\t\t},\n\n\t\tlistItemStyle()\n\t\t{\n\t\t\tif (this.rawListItem.sectionCode === 'pinned')\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundColor: '#f7f7f7'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {};\n\t\t},\n\n\t\timageStyle()\n\t\t{\n\t\t\treturn {\n\t\t\t\tbackgroundColor: this.listItem.avatar.url ? '' : this.imageColor\n\t\t\t};\n\t\t},\n\n\t\timageClass()\n\t\t{\n\t\t\treturn 'bx-vue-list-item-image';\n\t\t},\n\n\t\timageColor()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.color;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.color;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.color;\n\t\t\t}\n\t\t},\n\n\t\tavatarUrl()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.avatar;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.avatar;\n\t\t\t}\n\t\t},\n\n\t\tavatarBottomRightIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isMobileOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'mobile-online';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))\n\t\t\t\t{\n\t\t\t\t\treturn this.userData.status;\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'online';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn 'offline';\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttitleLeftIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isAbsent)\n\t\t\t\t{\n\t\t\t\t\treturn 'absent';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn 'birthday';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.chatType;\n\t\t\t}\n\t\t},\n\n\t\ttitleValue()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.name;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.name;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.title;\n\t\t\t}\n\t\t},\n\n\t\tuserData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['users/get'](this.rawListItem.userId);\n\t\t},\n\n\t\tdialogData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);\n\t\t},\n\n\t\tisChat()\n\t\t{\n\t\t\treturn ['chat', 'open'].includes(this.rawListItem.chatType)\n\t\t},\n\n\t\tisUser()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'user';\n\t\t},\n\n\t\tisNotificationChat()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'notification';\n\t\t}\n\t}\n});"],"names":["Vue","cloneComponent","props","methods","formatDate","date","Date","currentDate","weekAgo","getTime","weekDays","getFullYear","getMonth","getDate","Utils","format","getDay","computed","listItem","id","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","subtitle","message","text","avatar","url","avatarUrl","bottomRightIcon","avatarBottomRightIcon","counter","pinned","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","isUser","userData","color","isChat","dialogData","isNotificationChat","isMobileOnline","isOnline","status","isAbsent","isBirthday","name","$root","$store","getters","userId","chatId","includes"],"mappings":"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"}list/item/recent/dist/element.bundle.map.js000066400000006470147744174710014744 0ustar00{"version":3,"sources":["element.bundle.js"],"names":["exports","ui_vue","im_lib_utils","Vue","cloneComponent","props","methods","formatDate","date","Date","currentDate","weekAgo","getTime","weekDays","getFullYear","getMonth","getDate","Utils","format","getDay","computed","listItem","id","this","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","subtitle","message","text","avatar","url","avatarUrl","bottomRightIcon","avatarBottomRightIcon","counter","pinned","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","isUser","userData","color","isChat","dialogData","isNotificationChat","isMobileOnline","isOnline","status","isAbsent","isBirthday","name","$root","$store","getters","userId","chatId","includes","window","BX","Messenger"],"mappings":"CAAC,SAAUA,EAAQC,EAAOC,GACzB,aAEAD,EAAOE,IAAIC,eAAe,8BAA+B,mBACvDC,OAAQ,cAAe,aACvBC,SACEC,WAAY,SAASA,EAAWC,GAC9BA,EAAO,IAAIC,KAAKD,GAChB,IAAIE,EAAc,IAAID,KACtB,IAAIE,EAAUD,EAAYE,UAAY,EAAI,GAAK,GAAK,GAAK,IACzD,IAAIC,GAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAEpD,GAAIL,EAAKM,gBAAkBJ,EAAYI,eAAiBN,EAAKO,aAAeL,EAAYK,YAAcP,EAAKQ,YAAcN,EAAYM,UAAW,CAC9I,OAAOd,EAAae,MAAMT,KAAKU,OAAOV,EAAM,YACvC,GAAIA,EAAKI,UAAYD,EAAS,CACnC,OAAOE,EAASL,EAAKW,eAChB,GAAIX,EAAKM,gBAAkBJ,EAAYI,cAAe,CAC3D,OAAOZ,EAAae,MAAMT,KAAKU,OAAOV,EAAM,WACvC,CACL,OAAON,EAAae,MAAMT,KAAKU,OAAOV,EAAM,YAIlDY,UACEC,SAAU,SAASA,IACjB,OACEC,GAAIC,KAAKC,YAAYF,GACrBG,SAAUF,KAAKC,YAAYC,SAC3BC,KAAMH,KAAKC,YAAYG,SACvBC,YAAaL,KAAKC,YAAYI,YAC9BC,OACEC,SAAUP,KAAKQ,cACfC,MAAOT,KAAKU,YAEdC,UACEF,MAAOT,KAAKC,YAAYW,QAAQC,MAElCC,QACEC,IAAKf,KAAKgB,UACVC,gBAAiBjB,KAAKkB,uBAExBN,QAASZ,KAAKC,YAAYW,QAC1B3B,MACEwB,MAAOT,KAAKhB,WAAWgB,KAAKC,YAAYW,QAAQ3B,OAElDkC,SACEV,MAAOT,KAAKC,YAAYkB,QACxBZ,SAAUP,KAAKC,YAAYmB,OAAS,SAAW,IAEjDC,aAAc,QAGlBC,cAAe,SAASA,IACtB,GAAItB,KAAKC,YAAYI,cAAgB,SAAU,CAC7C,OACEkB,gBAAiB,WAIrB,UAEFC,WAAY,SAASA,IACnB,OACED,gBAAiBvB,KAAKF,SAASgB,OAAOC,IAAM,GAAKf,KAAKyB,aAG1DC,WAAY,SAASA,IACnB,MAAO,0BAETD,WAAY,SAASA,IACnB,GAAIzB,KAAK2B,QAAU3B,KAAK4B,SAAU,CAChC,OAAO5B,KAAK4B,SAASC,MAGvB,GAAI7B,KAAK8B,QAAU9B,KAAK+B,WAAY,CAClC,OAAO/B,KAAK+B,WAAWF,MAGzB,GAAI7B,KAAKgC,mBAAoB,CAC3B,OAAOhC,KAAKC,YAAY4B,QAG5Bb,UAAW,SAASA,IAClB,GAAIhB,KAAK2B,QAAU3B,KAAK4B,SAAU,CAChC,OAAO5B,KAAK4B,SAASd,OAGvB,GAAId,KAAK8B,QAAU9B,KAAK+B,WAAY,CAClC,OAAO/B,KAAK+B,WAAWjB,SAG3BI,sBAAuB,SAASA,IAC9B,GAAIlB,KAAK2B,OAAQ,CACf,GAAI3B,KAAK4B,SAASK,eAAgB,CAChC,MAAO,qBACF,GAAIjC,KAAK4B,SAASM,WAAalC,KAAK4B,SAASO,SAAW,QAAUnC,KAAK4B,SAASO,SAAW,OAAQ,CACxG,OAAOnC,KAAK4B,SAASO,YAChB,GAAInC,KAAK4B,SAASM,SAAU,CACjC,MAAO,aACF,CACL,MAAO,aAIb1B,cAAe,SAASA,IACtB,GAAIR,KAAK2B,OAAQ,CACf,GAAI3B,KAAK4B,SAASQ,SAAU,CAC1B,MAAO,cACF,GAAIpC,KAAK4B,SAASS,WAAY,CACnC,MAAO,eACF,CACL,MAAO,IAIX,GAAIrC,KAAK8B,OAAQ,CACf,OAAO9B,KAAKC,YAAYG,WAG5BM,WAAY,SAASA,IACnB,GAAIV,KAAK2B,QAAU3B,KAAK4B,SAAU,CAChC,OAAO5B,KAAK4B,SAASU,KAGvB,GAAItC,KAAK8B,QAAU9B,KAAK+B,WAAY,CAClC,OAAO/B,KAAK+B,WAAWO,KAGzB,GAAItC,KAAKgC,mBAAoB,CAC3B,OAAOhC,KAAKC,YAAYK,QAG5BsB,SAAU,SAASA,IACjB,OAAO5B,KAAKuC,MAAMC,OAAOC,QAAQ,aAAazC,KAAKC,YAAYyC,SAEjEX,WAAY,SAASA,IACnB,OAAO/B,KAAKuC,MAAMC,OAAOC,QAAQ,yBAAyBzC,KAAKC,YAAY0C,SAE7Eb,OAAQ,SAASA,IACf,OAAQ,OAAQ,QAAQc,SAAS5C,KAAKC,YAAYG,WAEpDuB,OAAQ,SAASA,IACf,OAAO3B,KAAKC,YAAYG,WAAa,QAEvC4B,mBAAoB,SAASA,IAC3B,OAAOhC,KAAKC,YAAYG,WAAa,oBAjJ5C,CAsJGJ,KAAK6C,OAAS7C,KAAK6C,WAAcC,GAAGA,GAAGC","file":"element.bundle.map.js"}list/item/sidebar/config.php000066400000000423147744174710012065 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' =>[
		'./dist/sidebar.bundle.js',
	],
	'css' => [
		'./dist/sidebar.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.lib.utils',
	],
	'skip_core' => true,
];list/item/sidebar/bundle.config.js000066400000000126147744174710013162 0ustar00module.exports = {
	input: './src/sidebar.js',
	output: './dist/sidebar.bundle.js',
};list/item/sidebar/src/sidebar.js000066400000010352147744174710012647 0ustar00import { Vue } from "ui.vue";
import { Utils } from "im.lib.utils";

import "./sidebar.css";

Vue.cloneComponent('bx-im-view-list-item-sidebar', 'bx-list-element',
{
	props: [
		'rawListItem',
		'itemTypes'
	],

	methods:
	{

	},
	computed:
	{
		listItem()
		{
			return {
				id: this.rawListItem.id,
				template: this.rawListItem.template,
				type: this.rawListItem.chatType,
				sectionCode: this.rawListItem.sectionCode,
				title: {
					leftIcon: this.titleLeftIcon,
					value: this.titleValue
				},
				avatar: {
					url: this.avatarUrl,
					topRightIcon: this.rawListItem.counter,
					bottomRightIcon: this.avatarBottomRightIcon
				},
				notification: false,
			}
		},

		listItemStyle()
		{
			if (this.rawListItem.sectionCode === 'pinned')
			{
				return {
					backgroundColor: '#f7f7f7'
				};
			}

			return {};
		},

		imageStyle()
		{
			let backgroundColor = '';
			if (!this.listItem.avatar.url)
			{
				backgroundColor = this.imageColor;
			}

			return {
				backgroundColor
			};
		},

		imageClass()
		{
			let classes = 'bx-vue-list-item-image ';

			if (this.isGeneralChat)
			{
				classes += 'bx-vue-list-item-image-general';
			}

			return classes;
		},

		imageColor()
		{
			if (this.isUser && this.userData)
			{
				return this.userData.color;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.color;
			}

			if (this.isNotificationChat)
			{
				return this.rawListItem.color;
			}
		},

		avatarUrl()
		{
			if (this.isGeneralChat)
			{
				return '/bitrix/js/im/images/blank.gif';
			}

			if (this.isUser && this.userData)
			{
				return this.userData.avatar;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.avatar;
			}
		},

		avatarBottomRightIcon()
		{
			if (this.isUser)
			{
				if (this.userData.isAbsent)
				{
					return 'absent';
				}
				else if (this.userData.isBirthday)
				{
					return 'birthday';
				}
				else if (this.userData.isMobileOnline)
				{
					return 'mobile-online';
				}
				else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))
				{
					return this.userData.status;
				}
				else if (this.userData.isOnline)
				{
					return 'online';
				}
				else
				{
					return 'offline';
				}
			}

			if (this.isChat)
			{
				return this.rawListItem.chatType;
			}
		},

		titleValue()
		{
			if (this.isUser && this.userData)
			{
				return this.userData.name;
			}

			if (this.isChat && this.dialogData)
			{
				return this.dialogData.name;
			}

			if (this.isNotificationChat)
			{
				return this.rawListItem.title;
			}
		},

		userData()
		{
			return this.$root.$store.getters['users/get'](this.rawListItem.userId);
		},

		dialogData()
		{
			return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
		},

		isChat()
		{
			return ['chat', 'open'].includes(this.rawListItem.chatType)
		},

		isUser()
		{
			return this.rawListItem.chatType === 'user';
		},

		isNotificationChat()
		{
			return this.rawListItem.id === 'notify';
		},

		isGeneralChat()
		{
			return this.rawListItem.id === 'chat1';
		}
	},
	template:
	`
	<div class="bx-vue-list-item" :style="listItemStyle">
		<template v-if="listItem.template !== itemTypes.placeholder">
			<div v-if="listItem.avatar" class="bx-vue-list-item-image-wrap">
				<img v-if="listItem.avatar.url" :src="listItem.avatar.url" :style="imageStyle" :class="imageClass" alt="">
				<div v-else-if="!listItem.avatar.url" :style="imageStyle" class="bx-vue-list-item-image-text">{{ avatarText }}</div>	
				<div v-if="listItem.avatar.topLeftIcon" :class="'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-' + listItem.avatar.topLeftIcon"></div>
				<div v-if="listItem.avatar.topRightIcon" class="bx-vue-list-icon-avatar-top-right">{{ listItem.avatar.topRightIcon }}</div>
				<div v-if="listItem.avatar.bottomRightIcon" :class="'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-' + listItem.avatar.bottomRightIcon"></div>
			</div>
		</template>
		<template v-else-if="listItem.template === itemTypes.placeholder">
			<div class="bx-vue-list-item-image-wrap"><img src="https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg" alt="" class="bx-vue-list-item-image"></div>
		</template>
	</div>
	`
});list/item/sidebar/src/sidebar.css000066400000022274147744174710013031 0ustar00.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}
list/item/sidebar/dist/sidebar-element.bundle.min.css000066400000017671147744174710016673 0ustar00.bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:6px 9px;}

.bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:center 4px;}

.bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-online{background-color:#58cc47;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-away{background-color:#f79d54;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-offline{background-color:#ccc;border-radius:50%;}

.bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-icon-counter-left-pinned{background-color:#aaa}.bx-vue-list-icon-date-left-icon-read{background-color:#ccc}list/item/sidebar/dist/sidebar.bundle.map.js000066400000005317147744174710015054 0ustar00{"version":3,"sources":["sidebar.bundle.js"],"names":["exports","ui_vue","im_lib_utils","Vue","cloneComponent","props","methods","computed","listItem","id","this","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","avatar","url","avatarUrl","topRightIcon","counter","bottomRightIcon","avatarBottomRightIcon","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","classes","isGeneralChat","isUser","userData","color","isChat","dialogData","isNotificationChat","isAbsent","isBirthday","isMobileOnline","isOnline","status","name","$root","$store","getters","userId","chatId","includes","window","BX","Messenger","Lib"],"mappings":"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","file":"sidebar.bundle.map.js"}list/item/sidebar/dist/sidebar.bundle.js000066400000012100147744174710014264 0ustar00(function (exports,ui_vue,im_lib_utils) {
	'use strict';

	ui_vue.Vue.cloneComponent('bx-im-view-list-item-sidebar', 'bx-list-element', {
	  props: ['rawListItem', 'itemTypes'],
	  methods: {},
	  computed: {
	    listItem: function listItem() {
	      return {
	        id: this.rawListItem.id,
	        template: this.rawListItem.template,
	        type: this.rawListItem.chatType,
	        sectionCode: this.rawListItem.sectionCode,
	        title: {
	          leftIcon: this.titleLeftIcon,
	          value: this.titleValue
	        },
	        avatar: {
	          url: this.avatarUrl,
	          topRightIcon: this.rawListItem.counter,
	          bottomRightIcon: this.avatarBottomRightIcon
	        },
	        notification: false
	      };
	    },
	    listItemStyle: function listItemStyle() {
	      if (this.rawListItem.sectionCode === 'pinned') {
	        return {
	          backgroundColor: '#f7f7f7'
	        };
	      }

	      return {};
	    },
	    imageStyle: function imageStyle() {
	      var backgroundColor = '';

	      if (!this.listItem.avatar.url) {
	        backgroundColor = this.imageColor;
	      }

	      return {
	        backgroundColor: backgroundColor
	      };
	    },
	    imageClass: function imageClass() {
	      var classes = 'bx-vue-list-item-image ';

	      if (this.isGeneralChat) {
	        classes += 'bx-vue-list-item-image-general';
	      }

	      return classes;
	    },
	    imageColor: function imageColor() {
	      if (this.isUser && this.userData) {
	        return this.userData.color;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.color;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.color;
	      }
	    },
	    avatarUrl: function avatarUrl() {
	      if (this.isGeneralChat) {
	        return '/bitrix/js/im/images/blank.gif';
	      }

	      if (this.isUser && this.userData) {
	        return this.userData.avatar;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.avatar;
	      }
	    },
	    avatarBottomRightIcon: function avatarBottomRightIcon() {
	      if (this.isUser) {
	        if (this.userData.isAbsent) {
	          return 'absent';
	        } else if (this.userData.isBirthday) {
	          return 'birthday';
	        } else if (this.userData.isMobileOnline) {
	          return 'mobile-online';
	        } else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd')) {
	          return this.userData.status;
	        } else if (this.userData.isOnline) {
	          return 'online';
	        } else {
	          return 'offline';
	        }
	      }

	      if (this.isChat) {
	        return this.rawListItem.chatType;
	      }
	    },
	    titleValue: function titleValue() {
	      if (this.isUser && this.userData) {
	        return this.userData.name;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.name;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.title;
	      }
	    },
	    userData: function userData() {
	      return this.$root.$store.getters['users/get'](this.rawListItem.userId);
	    },
	    dialogData: function dialogData() {
	      return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
	    },
	    isChat: function isChat() {
	      return ['chat', 'open'].includes(this.rawListItem.chatType);
	    },
	    isUser: function isUser() {
	      return this.rawListItem.chatType === 'user';
	    },
	    isNotificationChat: function isNotificationChat() {
	      return this.rawListItem.id === 'notify';
	    },
	    isGeneralChat: function isGeneralChat() {
	      return this.rawListItem.id === 'chat1';
	    }
	  },
	  template: "\n\t<div class=\"bx-vue-list-item\" :style=\"listItemStyle\">\n\t\t<template v-if=\"listItem.template !== itemTypes.placeholder\">\n\t\t\t<div v-if=\"listItem.avatar\" class=\"bx-vue-list-item-image-wrap\">\n\t\t\t\t<img v-if=\"listItem.avatar.url\" :src=\"listItem.avatar.url\" :style=\"imageStyle\" :class=\"imageClass\" alt=\"\">\n\t\t\t\t<div v-else-if=\"!listItem.avatar.url\" :style=\"imageStyle\" class=\"bx-vue-list-item-image-text\">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if=\"listItem.avatar.topLeftIcon\" :class=\"'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-' + listItem.avatar.topLeftIcon\"></div>\n\t\t\t\t<div v-if=\"listItem.avatar.topRightIcon\" class=\"bx-vue-list-icon-avatar-top-right\">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if=\"listItem.avatar.bottomRightIcon\" :class=\"'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-' + listItem.avatar.bottomRightIcon\"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"listItem.template === itemTypes.placeholder\">\n\t\t\t<div class=\"bx-vue-list-item-image-wrap\"><img src=\"https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg\" alt=\"\" class=\"bx-vue-list-item-image\"></div>\n\t\t</template>\n\t</div>\n\t"
	});

}((this.window = this.window || {}),BX,BX.Messenger.Lib));
//# sourceMappingURL=sidebar.bundle.js.map
list/item/sidebar/dist/sidebar.bundle.js.map000066400000021477147744174710015061 0ustar00{"version":3,"file":"sidebar.bundle.js","sources":["../src/sidebar.js"],"sourcesContent":["import { Vue } from \"ui.vue\";\nimport { Utils } from \"im.lib.utils\";\n\nimport \"./sidebar.css\";\n\nVue.cloneComponent('bx-im-view-list-item-sidebar', 'bx-list-element',\n{\n\tprops: [\n\t\t'rawListItem',\n\t\t'itemTypes'\n\t],\n\n\tmethods:\n\t{\n\n\t},\n\tcomputed:\n\t{\n\t\tlistItem()\n\t\t{\n\t\t\treturn {\n\t\t\t\tid: this.rawListItem.id,\n\t\t\t\ttemplate: this.rawListItem.template,\n\t\t\t\ttype: this.rawListItem.chatType,\n\t\t\t\tsectionCode: this.rawListItem.sectionCode,\n\t\t\t\ttitle: {\n\t\t\t\t\tleftIcon: this.titleLeftIcon,\n\t\t\t\t\tvalue: this.titleValue\n\t\t\t\t},\n\t\t\t\tavatar: {\n\t\t\t\t\turl: this.avatarUrl,\n\t\t\t\t\ttopRightIcon: this.rawListItem.counter,\n\t\t\t\t\tbottomRightIcon: this.avatarBottomRightIcon\n\t\t\t\t},\n\t\t\t\tnotification: false,\n\t\t\t}\n\t\t},\n\n\t\tlistItemStyle()\n\t\t{\n\t\t\tif (this.rawListItem.sectionCode === 'pinned')\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundColor: '#f7f7f7'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {};\n\t\t},\n\n\t\timageStyle()\n\t\t{\n\t\t\tlet backgroundColor = '';\n\t\t\tif (!this.listItem.avatar.url)\n\t\t\t{\n\t\t\t\tbackgroundColor = this.imageColor;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundColor\n\t\t\t};\n\t\t},\n\n\t\timageClass()\n\t\t{\n\t\t\tlet classes = 'bx-vue-list-item-image ';\n\n\t\t\tif (this.isGeneralChat)\n\t\t\t{\n\t\t\t\tclasses += 'bx-vue-list-item-image-general';\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\n\t\timageColor()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.color;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.color;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.color;\n\t\t\t}\n\t\t},\n\n\t\tavatarUrl()\n\t\t{\n\t\t\tif (this.isGeneralChat)\n\t\t\t{\n\t\t\t\treturn '/bitrix/js/im/images/blank.gif';\n\t\t\t}\n\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.avatar;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.avatar;\n\t\t\t}\n\t\t},\n\n\t\tavatarBottomRightIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isAbsent)\n\t\t\t\t{\n\t\t\t\t\treturn 'absent';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn 'birthday';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isMobileOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'mobile-online';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))\n\t\t\t\t{\n\t\t\t\t\treturn this.userData.status;\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'online';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn 'offline';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.chatType;\n\t\t\t}\n\t\t},\n\n\t\ttitleValue()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.name;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.name;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.title;\n\t\t\t}\n\t\t},\n\n\t\tuserData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['users/get'](this.rawListItem.userId);\n\t\t},\n\n\t\tdialogData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);\n\t\t},\n\n\t\tisChat()\n\t\t{\n\t\t\treturn ['chat', 'open'].includes(this.rawListItem.chatType)\n\t\t},\n\n\t\tisUser()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'user';\n\t\t},\n\n\t\tisNotificationChat()\n\t\t{\n\t\t\treturn this.rawListItem.id === 'notify';\n\t\t},\n\n\t\tisGeneralChat()\n\t\t{\n\t\t\treturn this.rawListItem.id === 'chat1';\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t<div class=\"bx-vue-list-item\" :style=\"listItemStyle\">\n\t\t<template v-if=\"listItem.template !== itemTypes.placeholder\">\n\t\t\t<div v-if=\"listItem.avatar\" class=\"bx-vue-list-item-image-wrap\">\n\t\t\t\t<img v-if=\"listItem.avatar.url\" :src=\"listItem.avatar.url\" :style=\"imageStyle\" :class=\"imageClass\" alt=\"\">\n\t\t\t\t<div v-else-if=\"!listItem.avatar.url\" :style=\"imageStyle\" class=\"bx-vue-list-item-image-text\">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if=\"listItem.avatar.topLeftIcon\" :class=\"'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-' + listItem.avatar.topLeftIcon\"></div>\n\t\t\t\t<div v-if=\"listItem.avatar.topRightIcon\" class=\"bx-vue-list-icon-avatar-top-right\">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if=\"listItem.avatar.bottomRightIcon\" :class=\"'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-' + listItem.avatar.bottomRightIcon\"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"listItem.template === itemTypes.placeholder\">\n\t\t\t<div class=\"bx-vue-list-item-image-wrap\"><img src=\"https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg\" alt=\"\" class=\"bx-vue-list-item-image\"></div>\n\t\t</template>\n\t</div>\n\t`\n});"],"names":["Vue","cloneComponent","props","methods","computed","listItem","id","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","avatar","url","avatarUrl","topRightIcon","counter","bottomRightIcon","avatarBottomRightIcon","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","classes","isGeneralChat","isUser","userData","color","isChat","dialogData","isNotificationChat","isAbsent","isBirthday","isMobileOnline","isOnline","status","name","$root","$store","getters","userId","chatId","includes"],"mappings":"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"}list/item/sidebar/dist/sidebar-element.bundle.js.map000066400000020220147744174710016471 0ustar00{"version":3,"file":"sidebar-element.bundle.js","sources":["../src/sidebar-element.js"],"sourcesContent":["import { Vue } from \"ui.vue\";\nimport { Utils } from \"im.lib.utils\";\n\nimport \"./sidebar-element.css\";\n\nVue.cloneComponent('bx-im-view-list-item-sidebar', 'bx-list-element',\n{\n\tprops: [\n\t\t'rawListItem',\n\t\t'itemTypes'\n\t],\n\n\tmethods:\n\t{\n\n\t},\n\tcomputed:\n\t{\n\t\tlistItem()\n\t\t{\n\t\t\treturn {\n\t\t\t\tid: this.rawListItem.id,\n\t\t\t\ttemplate: this.rawListItem.template,\n\t\t\t\ttype: this.rawListItem.chatType,\n\t\t\t\tsectionCode: this.rawListItem.sectionCode,\n\t\t\t\ttitle: {\n\t\t\t\t\tleftIcon: this.titleLeftIcon,\n\t\t\t\t\tvalue: this.titleValue\n\t\t\t\t},\n\t\t\t\tavatar: {\n\t\t\t\t\turl: this.avatarUrl,\n\t\t\t\t\ttopRightIcon: this.rawListItem.counter,\n\t\t\t\t\tbottomRightIcon: this.avatarBottomRightIcon\n\t\t\t\t},\n\t\t\t\tnotification: false,\n\t\t\t}\n\t\t},\n\n\t\tlistItemStyle()\n\t\t{\n\t\t\tif (this.rawListItem.sectionCode === 'pinned')\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundColor: '#f7f7f7'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {};\n\t\t},\n\n\t\timageStyle()\n\t\t{\n\t\t\treturn {\n\t\t\t\tbackgroundColor: this.listItem.avatar.url ? '' : this.imageColor\n\t\t\t};\n\t\t},\n\n\t\timageClass()\n\t\t{\n\t\t\treturn 'bx-vue-list-item-image';\n\t\t},\n\n\t\timageColor()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.color;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.color;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.color;\n\t\t\t}\n\t\t},\n\n\t\tavatarUrl()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.avatar;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.avatar;\n\t\t\t}\n\t\t},\n\n\t\tavatarBottomRightIcon()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\tif (this.userData.isAbsent)\n\t\t\t\t{\n\t\t\t\t\treturn 'absent';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isBirthday)\n\t\t\t\t{\n\t\t\t\t\treturn 'birthday';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isMobileOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'mobile-online';\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd'))\n\t\t\t\t{\n\t\t\t\t\treturn this.userData.status;\n\t\t\t\t}\n\t\t\t\telse if (this.userData.isOnline)\n\t\t\t\t{\n\t\t\t\t\treturn 'online';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treturn 'offline';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.chatType;\n\t\t\t}\n\t\t},\n\n\t\ttitleValue()\n\t\t{\n\t\t\tif (this.isUser && this.userData)\n\t\t\t{\n\t\t\t\treturn this.userData.name;\n\t\t\t}\n\n\t\t\tif (this.isChat && this.dialogData)\n\t\t\t{\n\t\t\t\treturn this.dialogData.name;\n\t\t\t}\n\n\t\t\tif (this.isNotificationChat)\n\t\t\t{\n\t\t\t\treturn this.rawListItem.title;\n\t\t\t}\n\t\t},\n\n\t\tuserData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['users/get'](this.rawListItem.userId);\n\t\t},\n\n\t\tdialogData()\n\t\t{\n\t\t\treturn this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);\n\t\t},\n\n\t\tisChat()\n\t\t{\n\t\t\treturn ['chat', 'open'].includes(this.rawListItem.chatType)\n\t\t},\n\n\t\tisUser()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'user';\n\t\t},\n\n\t\tisNotificationChat()\n\t\t{\n\t\t\treturn this.rawListItem.chatType === 'notification';\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t<div class=\"bx-vue-list-item\" :style=\"listItemStyle\">\n\t\t<template v-if=\"listItem.template !== itemTypes.placeholder\">\n\t\t\t<div v-if=\"listItem.avatar\" class=\"bx-vue-list-item-image-wrap\">\n\t\t\t\t<img v-if=\"listItem.avatar.url\" :src=\"listItem.avatar.url\" :style=\"imageStyle\" :class=\"imageClass\" alt=\"\">\n\t\t\t\t<div v-else-if=\"!listItem.avatar.url\" :style=\"imageStyle\" class=\"bx-vue-list-item-image-text\">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if=\"listItem.avatar.topLeftIcon\" :class=\"'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-' + listItem.avatar.topLeftIcon\"></div>\n\t\t\t\t<div v-if=\"listItem.avatar.topRightIcon\" class=\"bx-vue-list-icon-avatar-top-right\">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if=\"listItem.avatar.bottomRightIcon\" :class=\"'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-' + listItem.avatar.bottomRightIcon\"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"listItem.template === itemTypes.placeholder\">\n\t\t\t<div class=\"bx-vue-list-item-image-wrap\"><img src=\"https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg\" alt=\"\" class=\"bx-vue-list-item-image\"></div>\n\t\t</template>\n\t</div>\n\t`\n});"],"names":["Vue","cloneComponent","props","methods","computed","listItem","id","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","avatar","url","avatarUrl","topRightIcon","counter","bottomRightIcon","avatarBottomRightIcon","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","isUser","userData","color","isChat","dialogData","isNotificationChat","isAbsent","isBirthday","isMobileOnline","isOnline","status","name","$root","$store","getters","userId","chatId","includes"],"mappings":"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"}list/item/sidebar/dist/sidebar.bundle.min.css000066400000022132147744174710015230 0ustar00.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:6px 9px;}

.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:19px 15px;background-position:center 4px;}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-sidebar .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;background-size:cover}.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-online{background-color:#58cc47;border-radius:50%;}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-away{background-color:#f79d54;border-radius:50%;}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-offline{background-color:#ccc;border-radius:50%;}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}list/item/sidebar/dist/sidebar.bundle.min.js000066400000007230147744174710015056 0ustar00(function(t,i,e){"use strict";i.Vue.cloneComponent("bx-im-view-list-item-sidebar","bx-list-element",{props:["rawListItem","itemTypes"],methods:{},computed:{listItem:function t(){return{id:this.rawListItem.id,template:this.rawListItem.template,type:this.rawListItem.chatType,sectionCode:this.rawListItem.sectionCode,title:{leftIcon:this.titleLeftIcon,value:this.titleValue},avatar:{url:this.avatarUrl,topRightIcon:this.rawListItem.counter,bottomRightIcon:this.avatarBottomRightIcon},notification:false}},listItemStyle:function t(){if(this.rawListItem.sectionCode==="pinned"){return{backgroundColor:"#f7f7f7"}}return{}},imageStyle:function t(){var i="";if(!this.listItem.avatar.url){i=this.imageColor}return{backgroundColor:i}},imageClass:function t(){var i="bx-vue-list-item-image ";if(this.isGeneralChat){i+="bx-vue-list-item-image-general"}return i},imageColor:function t(){if(this.isUser&&this.userData){return this.userData.color}if(this.isChat&&this.dialogData){return this.dialogData.color}if(this.isNotificationChat){return this.rawListItem.color}},avatarUrl:function t(){if(this.isGeneralChat){return"/bitrix/js/im/images/blank.gif"}if(this.isUser&&this.userData){return this.userData.avatar}if(this.isChat&&this.dialogData){return this.dialogData.avatar}},avatarBottomRightIcon:function t(){if(this.isUser){if(this.userData.isAbsent){return"absent"}else if(this.userData.isBirthday){return"birthday"}else if(this.userData.isMobileOnline){return"mobile-online"}else if(this.userData.isOnline&&(this.userData.status==="away"||this.userData.status==="dnd")){return this.userData.status}else if(this.userData.isOnline){return"online"}else{return"offline"}}if(this.isChat){return this.rawListItem.chatType}},titleValue:function t(){if(this.isUser&&this.userData){return this.userData.name}if(this.isChat&&this.dialogData){return this.dialogData.name}if(this.isNotificationChat){return this.rawListItem.title}},userData:function t(){return this.$root.$store.getters["users/get"](this.rawListItem.userId)},dialogData:function t(){return this.$root.$store.getters["dialogues/getByChatId"](this.rawListItem.chatId)},isChat:function t(){return["chat","open"].includes(this.rawListItem.chatType)},isUser:function t(){return this.rawListItem.chatType==="user"},isNotificationChat:function t(){return this.rawListItem.id==="notify"},isGeneralChat:function t(){return this.rawListItem.id==="chat1"}},template:'\n\t<div class="bx-vue-list-item" :style="listItemStyle">\n\t\t<template v-if="listItem.template !== itemTypes.placeholder">\n\t\t\t<div v-if="listItem.avatar" class="bx-vue-list-item-image-wrap">\n\t\t\t\t<img v-if="listItem.avatar.url" :src="listItem.avatar.url" :style="imageStyle" :class="imageClass" alt="">\n\t\t\t\t<div v-else-if="!listItem.avatar.url" :style="imageStyle" class="bx-vue-list-item-image-text">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if="listItem.avatar.topLeftIcon" :class="\'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-\' + listItem.avatar.topLeftIcon"></div>\n\t\t\t\t<div v-if="listItem.avatar.topRightIcon" class="bx-vue-list-icon-avatar-top-right">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if="listItem.avatar.bottomRightIcon" :class="\'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-\' + listItem.avatar.bottomRightIcon"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if="listItem.template === itemTypes.placeholder">\n\t\t\t<div class="bx-vue-list-item-image-wrap"><img src="https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg" alt="" class="bx-vue-list-item-image"></div>\n\t\t</template>\n\t</div>\n\t'})})(this.window=this.window||{},BX,BX.Messenger.Lib);
//# sourceMappingURL=sidebar.bundle.map.jslist/item/sidebar/dist/sidebar-element.bundle.js000066400000011254147744174710015724 0ustar00(function (exports,ui_vue,im_lib_utils) {
	'use strict';

	ui_vue.Vue.cloneComponent('bx-im-view-list-item-sidebar', 'bx-list-element', {
	  props: ['rawListItem', 'itemTypes'],
	  methods: {},
	  computed: {
	    listItem: function listItem() {
	      return {
	        id: this.rawListItem.id,
	        template: this.rawListItem.template,
	        type: this.rawListItem.chatType,
	        sectionCode: this.rawListItem.sectionCode,
	        title: {
	          leftIcon: this.titleLeftIcon,
	          value: this.titleValue
	        },
	        avatar: {
	          url: this.avatarUrl,
	          topRightIcon: this.rawListItem.counter,
	          bottomRightIcon: this.avatarBottomRightIcon
	        },
	        notification: false
	      };
	    },
	    listItemStyle: function listItemStyle() {
	      if (this.rawListItem.sectionCode === 'pinned') {
	        return {
	          backgroundColor: '#f7f7f7'
	        };
	      }

	      return {};
	    },
	    imageStyle: function imageStyle() {
	      return {
	        backgroundColor: this.listItem.avatar.url ? '' : this.imageColor
	      };
	    },
	    imageClass: function imageClass() {
	      return 'bx-vue-list-item-image';
	    },
	    imageColor: function imageColor() {
	      if (this.isUser && this.userData) {
	        return this.userData.color;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.color;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.color;
	      }
	    },
	    avatarUrl: function avatarUrl() {
	      if (this.isUser && this.userData) {
	        return this.userData.avatar;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.avatar;
	      }
	    },
	    avatarBottomRightIcon: function avatarBottomRightIcon() {
	      if (this.isUser) {
	        if (this.userData.isAbsent) {
	          return 'absent';
	        } else if (this.userData.isBirthday) {
	          return 'birthday';
	        } else if (this.userData.isMobileOnline) {
	          return 'mobile-online';
	        } else if (this.userData.isOnline && (this.userData.status === 'away' || this.userData.status === 'dnd')) {
	          return this.userData.status;
	        } else if (this.userData.isOnline) {
	          return 'online';
	        } else {
	          return 'offline';
	        }
	      }

	      if (this.isChat) {
	        return this.rawListItem.chatType;
	      }
	    },
	    titleValue: function titleValue() {
	      if (this.isUser && this.userData) {
	        return this.userData.name;
	      }

	      if (this.isChat && this.dialogData) {
	        return this.dialogData.name;
	      }

	      if (this.isNotificationChat) {
	        return this.rawListItem.title;
	      }
	    },
	    userData: function userData() {
	      return this.$root.$store.getters['users/get'](this.rawListItem.userId);
	    },
	    dialogData: function dialogData() {
	      return this.$root.$store.getters['dialogues/getByChatId'](this.rawListItem.chatId);
	    },
	    isChat: function isChat() {
	      return ['chat', 'open'].includes(this.rawListItem.chatType);
	    },
	    isUser: function isUser() {
	      return this.rawListItem.chatType === 'user';
	    },
	    isNotificationChat: function isNotificationChat() {
	      return this.rawListItem.chatType === 'notification';
	    }
	  },
	  template: "\n\t<div class=\"bx-vue-list-item\" :style=\"listItemStyle\">\n\t\t<template v-if=\"listItem.template !== itemTypes.placeholder\">\n\t\t\t<div v-if=\"listItem.avatar\" class=\"bx-vue-list-item-image-wrap\">\n\t\t\t\t<img v-if=\"listItem.avatar.url\" :src=\"listItem.avatar.url\" :style=\"imageStyle\" :class=\"imageClass\" alt=\"\">\n\t\t\t\t<div v-else-if=\"!listItem.avatar.url\" :style=\"imageStyle\" class=\"bx-vue-list-item-image-text\">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if=\"listItem.avatar.topLeftIcon\" :class=\"'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-' + listItem.avatar.topLeftIcon\"></div>\n\t\t\t\t<div v-if=\"listItem.avatar.topRightIcon\" class=\"bx-vue-list-icon-avatar-top-right\">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if=\"listItem.avatar.bottomRightIcon\" :class=\"'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-' + listItem.avatar.bottomRightIcon\"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"listItem.template === itemTypes.placeholder\">\n\t\t\t<div class=\"bx-vue-list-item-image-wrap\"><img src=\"https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg\" alt=\"\" class=\"bx-vue-list-item-image\"></div>\n\t\t</template>\n\t</div>\n\t"
	});

}((this.window = this.window || {}),BX,BX.Messenger));
//# sourceMappingURL=sidebar-element.bundle.js.map
list/item/sidebar/dist/sidebar.bundle.css000066400000022274147744174710014455 0ustar00.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-messenger-list-sidebar .bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-item-image-general {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2250%22%20height%3D%2251%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20transform%3D%22translate%280%20.189%29%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2329619B%22%20cx%3D%2225%22%20cy%3D%2225%22%20r%3D%2225%22/%3E%3Cpath%20d%3D%22M18.423%2014.573c4.31%200%206.393%202.162%206.393%205.202%200%205.32-7.332%206.81-8.564%2010.873h8.828v3.39H11.032c.792-9.499%209.59-10.054%209.59-13.854%200-1.666-1.378-2.25-2.844-2.25-1.965%200-3.579.643-5.074%201.315l-1.027-3.069c1.672-.76%203.989-1.607%206.746-1.607zm18.506.058v11.603h2.874v3.215h-2.874v4.589h-3.9v-4.589h-8.653v-2.543l9.679-12.275h2.874zm-3.725%205.933l-4.37%205.758c.352-.03%201.76-.088%202.434-.088h1.76V24.16c0-1.49.117-3.215.176-3.595z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-messenger-list-sidebar .bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}
list/item/sidebar/dist/sidebar-element.bundle.min.js000066400000006725147744174710016515 0ustar00(function(t,i,e){"use strict";i.Vue.cloneComponent("bx-im-view-list-item-sidebar","bx-list-element",{props:["rawListItem","itemTypes"],methods:{},computed:{listItem:function t(){return{id:this.rawListItem.id,template:this.rawListItem.template,type:this.rawListItem.chatType,sectionCode:this.rawListItem.sectionCode,title:{leftIcon:this.titleLeftIcon,value:this.titleValue},avatar:{url:this.avatarUrl,topRightIcon:this.rawListItem.counter,bottomRightIcon:this.avatarBottomRightIcon},notification:false}},listItemStyle:function t(){if(this.rawListItem.sectionCode==="pinned"){return{backgroundColor:"#f7f7f7"}}return{}},imageStyle:function t(){return{backgroundColor:this.listItem.avatar.url?"":this.imageColor}},imageClass:function t(){return"bx-vue-list-item-image"},imageColor:function t(){if(this.isUser&&this.userData){return this.userData.color}if(this.isChat&&this.dialogData){return this.dialogData.color}if(this.isNotificationChat){return this.rawListItem.color}},avatarUrl:function t(){if(this.isUser&&this.userData){return this.userData.avatar}if(this.isChat&&this.dialogData){return this.dialogData.avatar}},avatarBottomRightIcon:function t(){if(this.isUser){if(this.userData.isAbsent){return"absent"}else if(this.userData.isBirthday){return"birthday"}else if(this.userData.isMobileOnline){return"mobile-online"}else if(this.userData.isOnline&&(this.userData.status==="away"||this.userData.status==="dnd")){return this.userData.status}else if(this.userData.isOnline){return"online"}else{return"offline"}}if(this.isChat){return this.rawListItem.chatType}},titleValue:function t(){if(this.isUser&&this.userData){return this.userData.name}if(this.isChat&&this.dialogData){return this.dialogData.name}if(this.isNotificationChat){return this.rawListItem.title}},userData:function t(){return this.$root.$store.getters["users/get"](this.rawListItem.userId)},dialogData:function t(){return this.$root.$store.getters["dialogues/getByChatId"](this.rawListItem.chatId)},isChat:function t(){return["chat","open"].includes(this.rawListItem.chatType)},isUser:function t(){return this.rawListItem.chatType==="user"},isNotificationChat:function t(){return this.rawListItem.chatType==="notification"}},template:'\n\t<div class="bx-vue-list-item" :style="listItemStyle">\n\t\t<template v-if="listItem.template !== itemTypes.placeholder">\n\t\t\t<div v-if="listItem.avatar" class="bx-vue-list-item-image-wrap">\n\t\t\t\t<img v-if="listItem.avatar.url" :src="listItem.avatar.url" :style="imageStyle" :class="imageClass" alt="">\n\t\t\t\t<div v-else-if="!listItem.avatar.url" :style="imageStyle" class="bx-vue-list-item-image-text">{{ avatarText }}</div>\t\n\t\t\t\t<div v-if="listItem.avatar.topLeftIcon" :class="\'bx-vue-list-icon-avatar-top-left bx-vue-list-icon-avatar-top-left-\' + listItem.avatar.topLeftIcon"></div>\n\t\t\t\t<div v-if="listItem.avatar.topRightIcon" class="bx-vue-list-icon-avatar-top-right">{{ listItem.avatar.topRightIcon }}</div>\n\t\t\t\t<div v-if="listItem.avatar.bottomRightIcon" :class="\'bx-vue-list-icon-avatar-bottom-right bx-vue-list-avatar-bottom-right-\' + listItem.avatar.bottomRightIcon"></div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if="listItem.template === itemTypes.placeholder">\n\t\t\t<div class="bx-vue-list-item-image-wrap"><img src="https://www.ischool.berkeley.edu/sites/default/files/default_images/avatar.jpeg" alt="" class="bx-vue-list-item-image"></div>\n\t\t</template>\n\t</div>\n\t'})})(this.window=this.window||{},BX,BX.Messenger);
//# sourceMappingURL=sidebar-element.bundle.map.jslist/item/sidebar/dist/sidebar-element.bundle.map.js000066400000005007147744174710016477 0ustar00{"version":3,"sources":["sidebar-element.bundle.js"],"names":["exports","ui_vue","im_lib_utils","Vue","cloneComponent","props","methods","computed","listItem","id","this","rawListItem","template","type","chatType","sectionCode","title","leftIcon","titleLeftIcon","value","titleValue","avatar","url","avatarUrl","topRightIcon","counter","bottomRightIcon","avatarBottomRightIcon","notification","listItemStyle","backgroundColor","imageStyle","imageColor","imageClass","isUser","userData","color","isChat","dialogData","isNotificationChat","isAbsent","isBirthday","isMobileOnline","isOnline","status","name","$root","$store","getters","userId","chatId","includes","window","BX","Messenger"],"mappings":"CAAC,SAAUA,EAAQC,EAAOC,GACzB,aAEAD,EAAOE,IAAIC,eAAe,+BAAgC,mBACxDC,OAAQ,cAAe,aACvBC,WACAC,UACEC,SAAU,SAASA,IACjB,OACEC,GAAIC,KAAKC,YAAYF,GACrBG,SAAUF,KAAKC,YAAYC,SAC3BC,KAAMH,KAAKC,YAAYG,SACvBC,YAAaL,KAAKC,YAAYI,YAC9BC,OACEC,SAAUP,KAAKQ,cACfC,MAAOT,KAAKU,YAEdC,QACEC,IAAKZ,KAAKa,UACVC,aAAcd,KAAKC,YAAYc,QAC/BC,gBAAiBhB,KAAKiB,uBAExBC,aAAc,QAGlBC,cAAe,SAASA,IACtB,GAAInB,KAAKC,YAAYI,cAAgB,SAAU,CAC7C,OACEe,gBAAiB,WAIrB,UAEFC,WAAY,SAASA,IACnB,OACED,gBAAiBpB,KAAKF,SAASa,OAAOC,IAAM,GAAKZ,KAAKsB,aAG1DC,WAAY,SAASA,IACnB,MAAO,0BAETD,WAAY,SAASA,IACnB,GAAItB,KAAKwB,QAAUxB,KAAKyB,SAAU,CAChC,OAAOzB,KAAKyB,SAASC,MAGvB,GAAI1B,KAAK2B,QAAU3B,KAAK4B,WAAY,CAClC,OAAO5B,KAAK4B,WAAWF,MAGzB,GAAI1B,KAAK6B,mBAAoB,CAC3B,OAAO7B,KAAKC,YAAYyB,QAG5Bb,UAAW,SAASA,IAClB,GAAIb,KAAKwB,QAAUxB,KAAKyB,SAAU,CAChC,OAAOzB,KAAKyB,SAASd,OAGvB,GAAIX,KAAK2B,QAAU3B,KAAK4B,WAAY,CAClC,OAAO5B,KAAK4B,WAAWjB,SAG3BM,sBAAuB,SAASA,IAC9B,GAAIjB,KAAKwB,OAAQ,CACf,GAAIxB,KAAKyB,SAASK,SAAU,CAC1B,MAAO,cACF,GAAI9B,KAAKyB,SAASM,WAAY,CACnC,MAAO,gBACF,GAAI/B,KAAKyB,SAASO,eAAgB,CACvC,MAAO,qBACF,GAAIhC,KAAKyB,SAASQ,WAAajC,KAAKyB,SAASS,SAAW,QAAUlC,KAAKyB,SAASS,SAAW,OAAQ,CACxG,OAAOlC,KAAKyB,SAASS,YAChB,GAAIlC,KAAKyB,SAASQ,SAAU,CACjC,MAAO,aACF,CACL,MAAO,WAIX,GAAIjC,KAAK2B,OAAQ,CACf,OAAO3B,KAAKC,YAAYG,WAG5BM,WAAY,SAASA,IACnB,GAAIV,KAAKwB,QAAUxB,KAAKyB,SAAU,CAChC,OAAOzB,KAAKyB,SAASU,KAGvB,GAAInC,KAAK2B,QAAU3B,KAAK4B,WAAY,CAClC,OAAO5B,KAAK4B,WAAWO,KAGzB,GAAInC,KAAK6B,mBAAoB,CAC3B,OAAO7B,KAAKC,YAAYK,QAG5BmB,SAAU,SAASA,IACjB,OAAOzB,KAAKoC,MAAMC,OAAOC,QAAQ,aAAatC,KAAKC,YAAYsC,SAEjEX,WAAY,SAASA,IACnB,OAAO5B,KAAKoC,MAAMC,OAAOC,QAAQ,yBAAyBtC,KAAKC,YAAYuC,SAE7Eb,OAAQ,SAASA,IACf,OAAQ,OAAQ,QAAQc,SAASzC,KAAKC,YAAYG,WAEpDoB,OAAQ,SAASA,IACf,OAAOxB,KAAKC,YAAYG,WAAa,QAEvCyB,mBAAoB,SAASA,IAC3B,OAAO7B,KAAKC,YAAYG,WAAa,iBAGzCF,SAAU,wtCAlHb,CAqHGF,KAAK0C,OAAS1C,KAAK0C,WAAcC,GAAGA,GAAGC","file":"sidebar-element.bundle.map.js"}list/item/sidebar/dist/sidebar-element.bundle.css000066400000020041147744174710016072 0ustar00.bx-vue-im-list-element-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2019%2015%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M12.03%2011.929v1.394a.7.7%200%200%201-.7.7H5.892a.7.7%200%200%201-.7-.7V9.987L3.899%209.62l-2.225.525v.353a.5.5%200%200%201-.5.5H.676a.5.5%200%200%201-.5-.5V4.242a.5.5%200%200%201%20.5-.5h.498a.5.5%200%200%201%20.5.5v.335l2.3.505L16.31%201.595v-.127a.5.5%200%200%201%20.5-.5h1.45a.5.5%200%200%201%20.5.5v11.804a.5.5%200%200%201-.5.5h-1.45a.5.5%200%200%201-.5-.5v-.128l-4.28-1.215zm-1.368-.389L6.56%2010.375v2.333h4.103V11.54z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: 6px 9px;
}

.bx-vue-im-list-element-image-default-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2018%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M16.79%2015.354c0-.77-1.026-1.65-3.047-2.163a6.926%206.926%200%200%201-1.929-.862c-.13-.072-.11-.745-.11-.745l-.65-.097c0-.055-.056-.862-.056-.862.779-.257.698-1.772.698-1.772.495.27.817-.93.817-.93.585-1.665-.291-1.564-.291-1.564.153-1.017.153-2.05%200-3.067-.39-3.373-6.254-2.457-5.559-1.356-1.713-.31-1.322%203.518-1.322%203.518l.371.991c-.73.465-.222%201.027-.197%201.674.036.955.632.757.632.757.036%201.577.828%201.782.828%201.782.149.99.056.822.056.822l-.705.083a2.7%202.7%200%200%201-.055.672c-.829.362-1.007.575-1.83.93-1.592.684-3.321%201.574-3.629%202.772C.505%2017.136.22%2019.746.22%2019.746h17.433l-.862-4.392z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 19px 15px;
	background-position: center 4px;
}

.bx-vue-list-icon-title-left-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-title-left-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-vue-list-icon-title-left-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-title-left-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-icon-counter-left-pinned {
	background-color: #aaa;
}

.bx-vue-list-icon-date-left-icon-read {
	background-color: #ccc;
}list/sidebar/config.php000066400000000517147744174710011133 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' =>[
		'./dist/sidebar.bundle.js',
	],
	'css' => [
		'./dist/sidebar.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue.components.list',
		'im.view.list.item.sidebar',
		'ui.vue',
		'im.lib.logger',
	],
	'skip_core' => true,
];list/sidebar/bundle.config.js000066400000000126147744174710012224 0ustar00module.exports = {
	input: './src/sidebar.js',
	output: './dist/sidebar.bundle.js',
};list/sidebar/src/sidebar.js000066400000001707147744174710011715 0ustar00/**
 * Bitrix IM
 * Sidebar Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./sidebar.css";

import 'ui.vue.components.list';
import 'im.view.list.item.sidebar';

import {Vue} from 'ui.vue';
import {Logger} from 'im.lib.logger';

Vue.cloneComponent('bx-im-view-list-sidebar', 'bx-list',
{
	props: ['recentData'],
	data()
	{
		return Object.assign(this.parentData(), {
			cssPrefix: 'bx-messenger-list-sidebar',
			elementComponent: 'bx-im-view-list-item-sidebar',
			showSectionNames: false
		});
	},
	created()
	{
		this.parentCreated();
	},
	methods:
	{
		onClick(event, id)
		{
			this.$emit('click', {id: id, $event: event});
		},

		onRightClick(event, id)
		{
			this.$emit('rightClick', {id: id, $event: event});
		},

		onScroll(event)
		{
			this.$emit('scroll', event);
		}
	},
	computed:
		{
			list()
			{
				return this.recentData;
			},
			sections()
			{
				return ['pinned', 'general'];
			}
		}
});list/sidebar/src/sidebar.css000066400000015050147744174710012065 0ustar00.bx-messenger-list-sidebar {
	width: auto;
}

.bx-vue-list-icon-avatar-top-right {
	position: absolute;
	display: flex;
	justify-content: center;
	align-items: center;
	font-family: "OpenSans-Bold","Helvetica Neue",Arial,Helvetica,sans-serif;;
	font-size: 11px;
	color: #fff;
	height: 10px;
	width: 10px;
	top: 0;
	left: 25px;
	background: #f84932;
	border-radius: 50%;
	padding: 3px;
}

.bx-vue-list-avatar-bottom-right-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}list/sidebar/dist/sidebar.bundle.map.js000066400000002015147744174710014106 0ustar00{"version":3,"sources":["sidebar.bundle.js"],"names":["exports","ui_vue_components_list","im_view_list_item_sidebar","ui_vue","im_lib_logger","Vue","cloneComponent","props","data","Object","assign","this","parentData","cssPrefix","elementComponent","showSectionNames","created","parentCreated","methods","onClick","event","id","$emit","$event","onRightClick","onScroll","computed","list","recentData","sections","window","BX","Messenger","Lib"],"mappings":"CAAC,SAAUA,EAAQC,EAAuBC,EAA0BC,EAAOC,GAC1E,aAUAD,EAAOE,IAAIC,eAAe,0BAA2B,WACnDC,OAAQ,cACRC,KAAM,SAASA,IACb,OAAOC,OAAOC,OAAOC,KAAKC,cACxBC,UAAW,4BACXC,iBAAkB,+BAClBC,iBAAkB,SAGtBC,QAAS,SAASA,IAChBL,KAAKM,iBAEPC,SACEC,QAAS,SAASA,EAAQC,EAAOC,GAC/BV,KAAKW,MAAM,SACTD,GAAIA,EACJE,OAAQH,KAGZI,aAAc,SAASA,EAAaJ,EAAOC,GACzCV,KAAKW,MAAM,cACTD,GAAIA,EACJE,OAAQH,KAGZK,SAAU,SAASA,EAASL,GAC1BT,KAAKW,MAAM,SAAUF,KAGzBM,UACEC,KAAM,SAASA,IACb,OAAOhB,KAAKiB,YAEdC,SAAU,SAASA,IACjB,OAAQ,SAAU,gBA7CzB,CAkDGlB,KAAKmB,OAASnB,KAAKmB,WAAcA,OAAOA,OAAOC,GAAGA,GAAGC,UAAUC","file":"sidebar.bundle.map.js"}list/sidebar/dist/sidebar.bundle.js000066400000002413147744174710013334 0ustar00(function (exports,ui_vue_components_list,im_view_list_item_sidebar,ui_vue,im_lib_logger) {
	'use strict';

	/**
	 * Bitrix IM
	 * Sidebar Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.cloneComponent('bx-im-view-list-sidebar', 'bx-list', {
	  props: ['recentData'],
	  data: function data() {
	    return Object.assign(this.parentData(), {
	      cssPrefix: 'bx-messenger-list-sidebar',
	      elementComponent: 'bx-im-view-list-item-sidebar',
	      showSectionNames: false
	    });
	  },
	  created: function created() {
	    this.parentCreated();
	  },
	  methods: {
	    onClick: function onClick(event, id) {
	      this.$emit('click', {
	        id: id,
	        $event: event
	      });
	    },
	    onRightClick: function onRightClick(event, id) {
	      this.$emit('rightClick', {
	        id: id,
	        $event: event
	      });
	    },
	    onScroll: function onScroll(event) {
	      this.$emit('scroll', event);
	    }
	  },
	  computed: {
	    list: function list() {
	      return this.recentData;
	    },
	    sections: function sections() {
	      return ['pinned', 'general'];
	    }
	  }
	});

}((this.window = this.window || {}),window,window,BX,BX.Messenger.Lib));
//# sourceMappingURL=sidebar.bundle.js.map
list/sidebar/dist/sidebar.bundle.js.map000066400000004557147744174710014123 0ustar00{"version":3,"file":"sidebar.bundle.js","sources":["../src/sidebar.js"],"sourcesContent":["/**\n * Bitrix IM\n * Sidebar Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./sidebar.css\";\n\nimport 'ui.vue.components.list';\nimport 'im.view.list.item.sidebar';\n\nimport {Vue} from 'ui.vue';\nimport {Logger} from 'im.lib.logger';\n\nVue.cloneComponent('bx-im-view-list-sidebar', 'bx-list',\n{\n\tprops: ['recentData'],\n\tdata()\n\t{\n\t\treturn Object.assign(this.parentData(), {\n\t\t\tcssPrefix: 'bx-messenger-list-sidebar',\n\t\t\telementComponent: 'bx-im-view-list-item-sidebar',\n\t\t\tshowSectionNames: false\n\t\t});\n\t},\n\tcreated()\n\t{\n\t\tthis.parentCreated();\n\t},\n\tmethods:\n\t{\n\t\tonClick(event, id)\n\t\t{\n\t\t\tthis.$emit('click', {id: id, $event: event});\n\t\t},\n\n\t\tonRightClick(event, id)\n\t\t{\n\t\t\tthis.$emit('rightClick', {id: id, $event: event});\n\t\t},\n\n\t\tonScroll(event)\n\t\t{\n\t\t\tthis.$emit('scroll', event);\n\t\t}\n\t},\n\tcomputed:\n\t\t{\n\t\t\tlist()\n\t\t\t{\n\t\t\t\treturn this.recentData;\n\t\t\t},\n\t\t\tsections()\n\t\t\t{\n\t\t\t\treturn ['pinned', 'general'];\n\t\t\t}\n\t\t}\n});"],"names":["Vue","cloneComponent","props","data","Object","assign","parentData","cssPrefix","elementComponent","showSectionNames","created","parentCreated","methods","onClick","event","id","$emit","$event","onRightClick","onScroll","computed","list","recentData","sections"],"mappings":";;;CAAA;;;;;;;;AASA,AAQAA,WAAG,CAACC,cAAJ,CAAmB,yBAAnB,EAA8C,SAA9C,EACA;CACCC,EAAAA,KAAK,EAAE,CAAC,YAAD,CADR;CAECC,EAAAA,IAFD,kBAGC;CACC,WAAOC,MAAM,CAACC,MAAP,CAAc,KAAKC,UAAL,EAAd,EAAiC;CACvCC,MAAAA,SAAS,EAAE,2BAD4B;CAEvCC,MAAAA,gBAAgB,EAAE,8BAFqB;CAGvCC,MAAAA,gBAAgB,EAAE;CAHqB,KAAjC,CAAP;CAKA,GATF;CAUCC,EAAAA,OAVD,qBAWC;CACC,SAAKC,aAAL;CACA,GAbF;CAcCC,EAAAA,OAAO,EACP;CACCC,IAAAA,OADD,mBACSC,KADT,EACgBC,EADhB,EAEC;CACC,WAAKC,KAAL,CAAW,OAAX,EAAoB;CAACD,QAAAA,EAAE,EAAEA,EAAL;CAASE,QAAAA,MAAM,EAAEH;CAAjB,OAApB;CACA,KAJF;CAMCI,IAAAA,YAND,wBAMcJ,KANd,EAMqBC,EANrB,EAOC;CACC,WAAKC,KAAL,CAAW,YAAX,EAAyB;CAACD,QAAAA,EAAE,EAAEA,EAAL;CAASE,QAAAA,MAAM,EAAEH;CAAjB,OAAzB;CACA,KATF;CAWCK,IAAAA,QAXD,oBAWUL,KAXV,EAYC;CACC,WAAKE,KAAL,CAAW,QAAX,EAAqBF,KAArB;CACA;CAdF,GAfD;CA+BCM,EAAAA,QAAQ,EACP;CACCC,IAAAA,IADD,kBAEC;CACC,aAAO,KAAKC,UAAZ;CACA,KAJF;CAKCC,IAAAA,QALD,sBAMC;CACC,aAAO,CAAC,QAAD,EAAW,SAAX,CAAP;CACA;CARF;CAhCF,CADA;;;;"}list/sidebar/dist/sidebar.bundle.min.css000066400000015061147744174710014275 0ustar00.bx-messenger-list-sidebar{width:auto}.bx-vue-list-icon-avatar-top-right{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-family:"OpenSans-Bold","Helvetica Neue",Arial,Helvetica,sans-serif;font-size:11px;color:#fff;height:10px;width:10px;top:0;left:25px;background:#f84932;border-radius:50%;padding:3px;}

.bx-vue-list-avatar-bottom-right-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-avatar-bottom-right-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-online{background-color:#58cc47;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-away{background-color:#f79d54;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}.bx-vue-list-avatar-bottom-right-offline{background-color:#ccc;border-radius:50%;}

.bx-vue-list-avatar-bottom-right-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center;}

.bx-vue-list-avatar-bottom-right-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E'); background-repeat:no-repeat;background-position:center}list/sidebar/dist/sidebar.bundle.min.js000066400000001330147744174710014113 0ustar00(function(t,e,i,n,s){"use strict";n.Vue.cloneComponent("bx-im-view-list-sidebar","bx-list",{props:["recentData"],data:function t(){return Object.assign(this.parentData(),{cssPrefix:"bx-messenger-list-sidebar",elementComponent:"bx-im-view-list-item-sidebar",showSectionNames:false})},created:function t(){this.parentCreated()},methods:{onClick:function t(e,i){this.$emit("click",{id:i,$event:e})},onRightClick:function t(e,i){this.$emit("rightClick",{id:i,$event:e})},onScroll:function t(e){this.$emit("scroll",e)}},computed:{list:function t(){return this.recentData},sections:function t(){return["pinned","general"]}}})})(this.window=this.window||{},window,window,BX,BX.Messenger.Lib);
//# sourceMappingURL=sidebar.bundle.map.jslist/sidebar/dist/sidebar.bundle.css000066400000015326147744174710013517 0ustar00.bx-messenger-list-sidebar {
	width: auto;
}

.bx-vue-list-icon-avatar-top-right {
	position: absolute;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-pack: center;
	    -ms-flex-pack: center;
	        justify-content: center;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
	font-family: "OpenSans-Bold","Helvetica Neue",Arial,Helvetica,sans-serif;;
	font-size: 11px;
	color: #fff;
	height: 10px;
	width: 10px;
	top: 0;
	left: 25px;
	background: #f84932;
	border-radius: 50%;
	padding: 3px;
}

.bx-vue-list-avatar-bottom-right-open {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%23A3BB47%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M8.726%203.065c-.007-.17-.093-.244-.245-.215-.47.111-.939.23-1.408.341-.727.178-1.461.364-2.189.541-.773.186-1.54.379-2.314.564-.165.037-.33.081-.503.119-.033-.245-.052-.267-.264-.267h-.126c-.218%200-.251.037-.251.281V6.564c0%20.186.053.238.212.238h.172c.198%200%20.231-.03.257-.26.02%200%20.033-.007.053%200%20.304.074.609.156.92.23.079.015.092.052.092.126v1.045c0%20.282.205.527.443.527h2.136c.218%200%20.41-.2.443-.445.02-.156.02-.319.033-.49.767.193%201.534.379%202.3.572.153.037.239-.045.246-.215v-.134-4.56c-.007-.044-.007-.088-.007-.133zM5.802%207.892c0%20.081-.022.118-.111.118H3.48c-.08%200-.125-.03-.125-.111v-.994c.163.03.311.06.46.09.622.133%201.252.274%201.875.407.089.015.119.052.111.134a2.85%202.85%200%200%200%200%20.356z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20viewBox%3D%220%200%2011%2011%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20fill%3D%22%2347A0BA%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3Cpath%20d%3D%22M7.863%204.724v-.982c0-1.2-1.062-2.176-2.366-2.176-1.303%200-2.365.976-2.365%202.176v.982h-.505v4.024h5.74V4.724h-.504zM5.905%207.646h-.81l.121-1.103a.486.486%200%200%201-.252-.413c0-.27.24-.488.533-.488.293%200%20.534.218.534.488a.468.468%200%200%201-.252.413l.126%201.103zm1.068-2.922H4.028v-.982c0-.746.66-1.355%201.475-1.355.81%200%201.47.609%201.47%201.355v.982z%22%20fill%3D%22%23FFF%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-online {
	background-color: #58cc47;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-mobile-online {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cdefs%3E%3Ccircle%20id%3D%22a%22%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22/%3E%3C/defs%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Cmask%20id%3D%22b%22%20fill%3D%22%23fff%22%3E%3Cuse%20xlink%3Ahref%3D%22%23a%22/%3E%3C/mask%3E%3Cuse%20fill%3D%22%2321B0DD%22%20xlink%3Ahref%3D%22%23a%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M3.3%201.757h4.4a.3.3%200%200%201%20.3.3v6.971a.3.3%200%200%201-.3.3H3.3a.3.3%200%200%201-.3-.3V2.057a.3.3%200%200%201%20.3-.3zm.815%201.355v3.919h2.77V3.112h-2.77zM5.441%208.62h.088a.483.483%200%200%200%20.483-.483v-.077a.483.483%200%200%200-.483-.483H5.44a.483.483%200%200%200-.483.483v.077c0%20.267.216.483.483.483z%22%20mask%3D%22url%28%23b%29%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-away {
	background-color: #f79d54;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-dnd {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23828B95%22/%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M4.329%207.618a2.334%202.334%200%200%200%203.174-3.174.758.758%200%200%201-.205.373L4.702%207.413a.758.758%200%200%201-.373.205zM3.42%206.71a.758.758%200%200%201%20.205-.373L6.221%203.74a.758.758%200%200%201%20.373-.205A2.334%202.334%200%200%200%203.42%206.71zm2.042%202.487a3.62%203.62%200%201%201%200-7.239%203.62%203.62%200%200%201%200%207.24z%22%20opacity%3D%22.9%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-offline {
	background-color: #ccc;
	border-radius: 50%;
}

.bx-vue-list-avatar-bottom-right-birthday {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%236DAA3A%22%20d%3D%22M2.614%209.286h2.29v-2.27h-2.29v2.27zm-.953-3.232h3.247V4.637H1.661v1.417zm4.261%203.232h2.29v-2.27h-2.29v2.27zm-.028-4.65v1.418H9.14V4.637H5.894zm1.332-.487a1.45%201.45%200%201%200-1.45-1.45c0%20.222-.005.682-.01.947h-.711c-.005-.27-.005-.668-.005-.867a1.45%201.45%200%201%200-1.45%201.45h1.27v.398h1.01V4.15h.194%201.152zm-.849-1.45a.848.848%200%201%201%20.849.848h-.853c.004-.27.004-.65.004-.849zm-2.782.923a.848.848%200%201%201%20.849-.848c0%20.2.004.578.004.848-.275.005-.663%200-.853%200z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}

.bx-vue-list-avatar-bottom-right-absent {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2211%22%20height%3D%2211%22%3E%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Ccircle%20cx%3D%225.5%22%20cy%3D%225.5%22%20r%3D%225.5%22%20fill%3D%22%23EDEEF0%22/%3E%3Cpath%20fill%3D%22%23CC7449%22%20d%3D%22M3.484%209.708s.321-3.05%202.086-4.815c.578-.257.514-.048.546.144-.963%201.784-.53%204.655-.53%204.655l-2.102.016z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.73%204.732c-.17-.164-1.492-1.235-4.044.033.177-.45%201.429-2.504%202.89-2.248%201.46.257%201.155%202.214%201.155%202.214v.001zm.017%200s.305-1.91%201.574-2.15c1.27-.242%202.327%201.38%202.327%201.38-.696-.096-1.4-.129-2.102-.097a4.477%204.477%200%200%200-1.799.866v.001z%22/%3E%3Cpath%20fill%3D%22%236EA441%22%20d%3D%22M5.717%204.82l-.099-.232.121-.179c.104.033.212.05.32.053.053-.014.158.112.21.097.717-.183%201.989-.345%202.43-.069.738.462.986%202.085%201.014%202.485-2.389-2.193-3.997-2.157-3.997-2.157v.001z%22/%3E%3C/g%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-position: center;
}textarea/config.php000066400000000457147744174710010367 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/textarea.bundle.js',
	],
	'css' => [
		'./dist/textarea.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.lib.localstorage',
		'im.lib.utils',
	],
	'skip_core' => true,
];textarea/bundle.config.js000066400000000130147744174710011450 0ustar00module.exports = {
	input: './src/textarea.js',
	output: './dist/textarea.bundle.js',
};textarea/src/textarea.css000066400000014361147744174710011526 0ustar00.bx-im-textarea {
	display: flex;
	flex-direction: column;
	height: 100%;
	box-sizing: border-box;
	padding: 10px 0 0 0;
	border-top: 1px solid rgba(31,170,241,.26);
}
.bx-im-textarea-box {
	display: flex;
	flex-grow: 1;
	flex-shrink: 1;
	padding: 0 16px;
}

.bx-im-textarea-input {
	margin: 0 5px 0 0;
	padding: 0 5px 0 0;
	width: 100%;
	min-width: auto;
	min-height: auto;
	border: none;
	background: transparent;
	font: 14px "Helvetica Neue", Arial, Helvetica, sans-serif;
	color: #333;
	resize: none;
	outline: none;
	-webkit-tap-highlight-color: transparent;
}
.bx-im-textarea-input::-webkit-input-placeholder { /* Chrome/Opera/Safari */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input::-moz-placeholder { /* Firefox 19+ */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input:-ms-input-placeholder { /* IE 10+ */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input:-moz-placeholder { /* Firefox 18- */
	color: rgba(82,92,105,.42);
}

.bx-im-textarea-send-button {
	display: block;
	width: 33px;
	height: 33px;
	background-color: transparent;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23646D7B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22%20opacity%3D%22.8%22/%3E%3C/svg%3E');
	background-position: center center;
	background-repeat: no-repeat;
	opacity: .5;
	transition: opacity .3s;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	border-radius: 50%;
	border: 1px solid #b1b1b1;
	flex-shrink: 0;
}
.bx-im-textarea-send-button:hover,
.bx-im-textarea-mobile .bx-im-textarea-send-button {
	opacity: 1;
}
.bx-im-textarea-send-button-bright-arrow {
	border-color: transparent;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22/%3E%3C/svg%3E');
}
.bx-im-textarea-send-button.bx-im-textarea-send-button-show {
	animation: bx-im-textarea-send-button-show .2s linear forwards;
}
.bx-im-textarea-send-button.bx-im-textarea-send-button-hide  {
	animation: bx-im-textarea-send-button-hide .2s linear forwards;
}

.bx-im-textarea-app-box {
	width: 100%;
	box-sizing: border-box;
	margin-top: 5px;
    height: 30px;
	flex: 0 0 30px;
	padding: 0 8px;
}

.bx-im-textarea-app-button {
	display: inline-block;
	width: 25px;
	height: 25px;
	border: none;
	background-color: transparent;
	background-position: center;
	background-repeat: no-repeat;
	transition: opacity .3s;
	opacity: .46;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	vertical-align: top;
}
.bx-im-textarea-app-button:hover {
	opacity: .8;
}
.bx-im-textarea-app-file {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2216%22%3E%3Cpath%20fill%3D%22%23525C69%22%20d%3D%22M8.891%206.092c0-.277.221-.502.494-.502.272%200%20.493.225.493.502v4.444c0%202.495-1.988%204.517-4.44%204.517-2.453%200-4.442-2.022-4.442-4.517V3.151c0-1.742%201.388-3.153%203.1-3.153%201.713%200%203.1%201.411%203.1%203.153v6.235c0%201.184-.943%202.143-2.107%202.143-1.165%200-2.108-.96-2.108-2.143V5.563c0-.277.22-.502.493-.502s.494.225.494.502v3.823c0%20.63.502%201.14%201.12%201.14.62%200%201.122-.51%201.122-1.14V3.15C6.21%201.964%205.264%201%204.097%201c-1.168%200-2.114.963-2.114%202.15v7.385c0%201.94%201.547%203.513%203.454%203.513%201.908%200%203.454-1.573%203.454-3.513V6.092z%22/%3E%3C/svg%3E');
}
.bx-im-textarea-app-file > input {display: none!important;}

.bx-im-textarea-app-smile {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2215%22%20height%3D%2215%22%3E%3Cg%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5.25%204a1%201%200%200%201%201%201v1a1%201%200%201%201-2%200V5a1%201%200%200%201%201-1zm4.5%200a1%201%200%200%201%201%201v1a1%201%200%200%201-2%200V5a1%201%200%200%201%201-1z%22/%3E%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7.5%2014a6.5%206.5%200%201%200%200-13%206.5%206.5%200%200%200%200%2013zm0%201a7.5%207.5%200%201%201%200-15%207.5%207.5%200%200%201%200%2015zm-3.349-4.81a.5.5%200%201%201%20.698-.716%203.985%203.985%200%200%200%202.792%201.135c1.064%200%202.06-.416%202.804-1.147a.5.5%200%200%201%20.701.713%204.985%204.985%200%200%201-3.505%201.434%204.984%204.984%200%200%201-3.49-1.419z%22/%3E%3C/g%3E%3C/svg%3E');
}
.bx-im-textarea-app-gif {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2215%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11%2013.201a.8.8%200%200%201-.799.799H1.768A.768.768%200%200%201%201%2013.231V1.828C1%201.371%201.371%201%201.828%201h5.221c.344%200%20.673.137.916.379l2.656%202.656c.243.242.379.572.379.915v8.251zm.621-9.58L8.379.379A1.298%201.298%200%200%200%207.463%200H1.295C.58%200%200%20.58%200%201.295v12.41C0%2014.42.58%2015%201.295%2015h9.41C11.42%2015%2012%2014.42%2012%2013.705V4.536c0-.343-.136-.673-.379-.915zM7.299%207.857l1.351-1.35-.657-.657-1.35%201.35c-.053.053-.118.082-.179.119V5.25h-.928v2.069c-.06-.037-.126-.066-.179-.119l-1.35-1.35-.657.656%201.35%201.35c.053.053.082.118.12.18H2.75v.928h2.07c-.038.06-.067.127-.12.179l-1.35%201.35.657.656%201.35-1.35c.053-.052.118-.082.179-.119v2.07h.928V9.68c.06.037.126.067.179.12l1.35%201.35.657-.657-1.35-1.35c-.053-.052-.082-.118-.12-.179h2.07v-.928H7.18c.038-.062.067-.127.12-.18z%22/%3E%3C/svg%3E');
}


.bx-im-textarea-smile-box {
	width: 340px;
	height: 420px;
	position: absolute;
	background: #fff;
}


@keyframes bx-im-textarea-send-button-show {
	0% {
		transform: translate(50px, 0);
	}
	100% {
		transform: translate(0, 0);
	}
}
@keyframes bx-im-textarea-send-button-hide {
	0% {
		transform: translate(0, 0);
	}
	100% {
		transform: translate(50px, 0);
	}
}textarea/src/textarea.js000066400000033150147744174710011347 0ustar00/**
 * Bitrix Messenger
 * Textarea Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './textarea.css';
import {Vue} from "ui.vue";
import {LocalStorage} from "im.lib.localstorage";
import {Utils} from "im.lib.utils";

Vue.component('bx-im-view-textarea',
{
	/**
	 * @emits 'send' {text: string}
	 * @emits 'edit' {}
	 * @emits 'writes' {text: string}
	 * @emits 'focus' {event: object} -- 'event' - focus event
	 * @emits 'blur' {event: object} -- 'event' - blur event
	 * @emits 'keyup' {event: object} -- 'event' - keyup event
	 * @emits 'keydown' {event: object} -- 'event' - keydown event
	 * @emits 'appButtonClick' {appId: string, event: object} -- 'appId' - application name, 'event' - event click
	 * @emits 'fileSelected' {fileInput: domNode} -- 'fileInput' - dom node element
	 */

	/**
	 * @listens props.listenEventInsertText {text: string, breakline: boolean, position: string, cursor: string, focus: boolean} (global|application) -- insert text to textarea, see more in methods.insertText()
	 * @listens props.listenEventFocus {} (global|application) -- set focus on textarea
	 * @listens props.listenEventBlur {} (global|application) -- clear focus on textarea
	 */

	props:
	{
		siteId: { default: 'default' },
		userId: { default: 0 },
		dialogId: { default: 0 },
		enableCommand: { default: true },
		enableMention: { default: true },
		desktopMode: { default: false },
		enableEdit: { default: false },
		enableFile: { default: false },
		sendByEnter: { default: true },
		autoFocus: { default: null },
		writesEventLetter: { default: 0 },
		styles: {
			type: Object,
			default: function () {
				return {}
			}
		},
		listenEventInsertText: { default: '' },
		listenEventFocus: { default: '' },
		listenEventBlur: { default: '' },
	},
	data()
	{
		return {
			placeholderMessage: '',
			currentMessage: '',
			previousMessage: '',
			commandListen: false,
			mentionListen: false,
			stylesDefault: Object.freeze({button: { backgroundColor: null, iconColor: null }})
		}
	},
	created()
	{
		if (this.listenEventInsertText)
		{
			Vue.event.$on(this.listenEventInsertText, this.onInsertText);
			this.$root.$on(this.listenEventInsertText, this.onInsertText);
		}
		if (this.listenEventFocus)
		{
			Vue.event.$on(this.listenEventFocus, this.onFocusSet);
			this.$root.$on(this.listenEventFocus, this.onFocusSet);
		}
		if (this.listenEventBlur)
		{
			Vue.event.$on(this.listenEventBlur, this.onFocusClear);
			this.$root.$on(this.listenEventBlur, this.onFocusClear);
		}

		this.localStorage = LocalStorage;

		this.textareaHistory = this.localStorage.get(this.siteId, this.userId, 'textarea-history', {});
		this.currentMessage = this.textareaHistory[this.dialogId] || '';
		this.placeholderMessage = this.currentMessage;
	},
	beforeDestroy()
	{
		if (this.listenEventInsertText)
		{
			Vue.event.$off(this.listenEventInsertText, this.onInsertText);
			this.$root.$off(this.listenEventInsertText, this.onInsertText);
		}
		if (this.listenEventFocus)
		{
			Vue.event.$off(this.listenEventFocus, this.onFocusSet);
			this.$root.$off(this.listenEventFocus, this.onFocusSet);
		}
		if (this.listenEventBlur)
		{
			Vue.event.$off(this.listenEventBlur, this.onFocusClear);
			this.$root.$off(this.listenEventBlur, this.onFocusClear);
		}
		clearTimeout(this.messageStoreTimeout);
		this.localStorage.set(this.siteId, this.userId, 'textarea-history', this.textareaHistory);
		this.localStorage = null;
	},
	computed:
	{
		textareaClassName()
		{
			return 'bx-im-textarea' + (Utils.device.isMobile()? ' bx-im-textarea-mobile': '');
		},

		buttonStyle()
		{
			let styles = Object.assign({}, this.stylesDefault, this.styles);

			let isIconDark = false;
			if (styles.button.iconColor)
			{
				isIconDark = Utils.isDarkColor(styles.button.iconColor);
			}
			else
			{
				isIconDark = !Utils.isDarkColor(styles.button.backgroundColor);
			}

			styles.button.className = isIconDark? 'bx-im-textarea-send-button': 'bx-im-textarea-send-button bx-im-textarea-send-button-bright-arrow';
			styles.button.style = styles.button.backgroundColor? 'background-color: '+styles.button.backgroundColor+';': '';

			return styles;
		},

		localize()
		{
			return Vue.getFilteredPhrases('BX_MESSENGER_TEXTAREA_', this.$root.$bitrixMessages)
		},
	},
	directives: {
		'bx-im-focus':
		{
			inserted(element, params)
			{
				if (
					params.value === true
					|| params.value === null && !Utils.device.isMobile()
				)
				{
					element.focus();
				}
			}
		}
	},
	methods:
	{
		/**
		 *
		 * @param text
		 * @param breakline - true/false (default)
		 * @param position - start, current (default), end
		 * @param cursor - start, before, after (default), end
		 * @param focus - set focus on textarea
		 */
		insertText(text, breakline = false, position = 'current', cursor = 'after', focus = true)
		{
			let textarea = this.$refs.textarea;
			let selectionStart = textarea.selectionStart;
			let selectionEnd = textarea.selectionEnd;

			if (position == 'start')
			{
				if (breakline)
				{
					text = text+"\n";
				}
				textarea.value = text + textarea.value;

				if (focus)
				{
					if (cursor == 'after')
					{
						textarea.selectionStart = text.length;
						textarea.selectionEnd = textarea.selectionStart;
					}
					else if (cursor == 'before')
					{
						textarea.selectionStart = 0;
						textarea.selectionEnd = textarea.selectionStart;
					}
				}
			}
			else if (position == 'current')
			{
				if (breakline)
				{
					if (textarea.value.substring(0, selectionStart).trim().length > 0)
					{
						text = "\n"+text;
					}
					text = text+"\n";
				}
				textarea.value = textarea.value.substring(0, selectionStart) + text + textarea.value.substring(selectionEnd, textarea.value.length);

				if (focus)
				{
					if (cursor == 'after')
					{
						textarea.selectionStart = selectionStart+text.length;
						textarea.selectionEnd = textarea.selectionStart;
					}
					else if (cursor == 'before')
					{
						textarea.selectionStart = selectionStart;
						textarea.selectionEnd = textarea.selectionStart;
					}
				}
			}
			else if (position == 'end')
			{
				if (breakline)
				{
					if (textarea.value.substring(0, selectionStart).trim().length > 0)
					{
						text = "\n"+text;
					}
					text = text+"\n";
				}
				textarea.value = textarea.value+text;

				if (focus)
				{
					if (cursor == 'after')
					{
						textarea.selectionStart = textarea.value.length;
						textarea.selectionEnd = textarea.selectionStart;
					}
					else if (cursor == 'before')
					{
						textarea.selectionStart = textarea.value.length-text.length;
						textarea.selectionEnd = textarea.selectionStart;
					}
				}
			}

			if (focus)
			{
				if (cursor == 'start')
				{
					textarea.selectionStart = 0;
					textarea.selectionEnd = 0;
				}
				else if (cursor == 'end')
				{
					textarea.selectionStart = textarea.value.length;
					textarea.selectionEnd = textarea.selectionStart;
				}

				textarea.focus();
			}

			this.textChangeEvent();
		},

		sendMessage()
		{
			this.$emit('send', {text: this.currentMessage.trim()});

			let textarea = this.$refs.textarea;
			if (textarea)
			{
				textarea.value = '';
			}

			if (this.autoFocus === null || this.autoFocus)
			{
				textarea.focus();
			}

			this.textChangeEvent();
		},

		textChangeEvent()
		{
			let textarea = this.$refs.textarea;
			if (!textarea)
			{
				return;
			}

			let text = textarea.value.trim();
			if (this.currentMessage === text)
			{
				return;
			}

			if (this.writesEventLetter <= text.length)
			{
				this.$emit('writes', {text});
			}

			this.previousMessage = this.currentMessage;
			this.previousSelectionStart = textarea.selectionStart;
			this.previousSelectionEnd = this.previousSelectionStart;
			this.currentMessage = text;

			if (text.toString().length > 0)
			{
				this.textareaHistory[this.dialogId] = text;
			}
			else
			{
				delete this.textareaHistory[this.dialogId];
			}

			clearTimeout(this.messageStoreTimeout);
			this.messageStoreTimeout = setTimeout(() => {
				this.localStorage.set(this.siteId, this.userId, 'textarea-history', this.textareaHistory, this.userId? 0: 10);
			}, 500);
		},

		onKeyDown(event)
		{
			this.$emit('keydown', event);

			let textarea = event.target;
			let text = textarea.value.trim();
			let isMac = Utils.platform.isMac();
			let isCtrlTEnable = Utils.platform.isBitrixDesktop() || !Utils.browser.isChrome();

			// TODO see more im/install/js/im/im.js:12324
			if (this.commandListen)
			{
			}
			else if (this.mentionListen)
			{
			}
			else if (!(event.altKey && event.ctrlKey))
			{
				if (this.enableMention && (event.shiftKey  && (event.keyCode == 61 || event.keyCode == 50 || event.keyCode == 187 || event.keyCode == 187)) || event.keyCode == 107)
				{
					// mention case
				}
				else if (this.enableCommand && (event.keyCode == 191 || event.keyCode == 111 || event.keyCode == 220))
				{
					// command case
				}
			}

			if (event.keyCode == 27)
			{
				if (textarea.value != '' && textarea === document.activeElement)
				{
					event.preventDefault();
					event.stopPropagation();
				}
				if (event.shiftKey)
				{
					textarea.value = '';
				}
			}
			else if (event.metaKey || event.ctrlKey)
			{
				// TODO translit messages
				if (
					isCtrlTEnable && event.key === 't'
					|| !isCtrlTEnable && event.key === 'e'
				)
				{
					// translit case
					event.preventDefault();
				}
				else if (['b','s','i','u'].includes(event.key))
				{
					let selectionStart = textarea.selectionStart;
					let selectionEnd = textarea.selectionEnd;

					let tagStart = '['+event.key.toLowerCase()+']';
					let tagEnd = '[/'+event.key.toLowerCase()+']';
					let selected = textarea.value.substring(selectionStart, selectionEnd);

					if (selected.startsWith(tagStart) && selected.endsWith(tagEnd))
					{
						selected = selected.substring(tagStart.length, selected.indexOf(tagEnd));
					}
					else
					{
						selected = tagStart + selected + tagEnd;
					}

					textarea.value = textarea.value.substring(0, selectionStart) + selected + textarea.value.substring(selectionEnd, textarea.value.length);

					textarea.selectionStart = selectionStart;
					textarea.selectionEnd = selectionStart + selected.length;

					event.preventDefault();
				}
			}

			if (event.keyCode == 9)
			{
				this.insertText("\t");
				event.preventDefault();
			}
			else if (this.enableEdit && event.keyCode == 38 && text.length <= 0)
			{
				this.$emit('edit', {});
			}
			else if (event.keyCode == 13)
			{
				if (Utils.device.isMobile())
				{
				}
				else if (this.sendByEnter == true)
				{
					if (event.ctrlKey || event.altKey || event.shiftKey)
					{
						if (!event.shiftKey)
						{
							this.insertText("\n");
						}
					}
					else if (text.length <= 0)
					{
						event.preventDefault();
					}
					else
					{
						this.sendMessage();
						event.preventDefault();
					}
				}
				else
				{
					if (event.ctrlKey == true)
					{
						this.sendMessage();
						event.preventDefault();
					}
					else if (isMac && (event.metaKey == true || event.altKey == true))
					{
						this.sendMessage();
						event.preventDefault();
					}
				}
			}
			else if ((event.ctrlKey || event.metaKey) && event.key == 'z')
			{
				if (this.previousMessage)
				{
					textarea.value = this.previousMessage;
					textarea.selectionStart = this.previousSelectionStart;
					textarea.selectionEnd = this.previousSelectionEnd;

					this.previousMessage = '';
					event.preventDefault();
				}
			}
		},
		onKeyUp(event)
		{
			this.$emit('keyup', {event, text: this.currentMessage});
			this.textChangeEvent();
		},
		onPaste(event)
		{
			this.$nextTick(this.textChangeEvent);
		},
		onInput(event)
		{
			this.textChangeEvent();
		},
		onFocus(event)
		{
			this.$emit('focus', event);
		},
		onBlur(event)
		{
			this.$emit('blur', event);
		},
		onAppButtonClick(appId, event)
		{
			this.$emit('appButtonClick', {appId, event});
		},
		onInsertText(event = {})
		{
			if (!event.text)
			{
				return false;
			}
			this.insertText(event.text, event.breakline, event.position, event.cursor, event.focus);

			this.$emit('keyup', {event, text: this.currentMessage});

			return true;
		},
		onFocusSet()
		{
			this.$refs.textarea.focus();

			return true;
		},
		onFocusClear()
		{
			this.$refs.textarea.blur();

			return true;
		},
		onFileClick(event)
		{
			event.target.value = "";
		},
		onFileSelect(event)
		{
			this.$emit('fileSelected', {fileInput: event.target});
		},
	},
	template: `
		<div :class="textareaClassName">
			<div class="bx-im-textarea-box">
				<textarea ref="textarea" class="bx-im-textarea-input" @keydown="onKeyDown" @keyup="onKeyUp" @paste="onPaste" @input="onInput" @focus="onFocus" @blur="onBlur" v-bx-im-focus="autoFocus" :placeholder="localize.BX_MESSENGER_TEXTAREA_PLACEHOLDER">{{placeholderMessage}}</textarea>
				<transition enter-active-class="bx-im-textarea-send-button-show" leave-active-class="bx-im-textarea-send-button-hide">
					<button v-if="currentMessage" :class="buttonStyle.button.className" :style="buttonStyle.button.style" @click="sendMessage" :title="localize.BX_MESSENGER_TEXTAREA_BUTTON_SEND"></button>
				</transition>
			</div>
			<div class="bx-im-textarea-app-box">
				<label v-if="enableFile" class="bx-im-textarea-app-button bx-im-textarea-app-file" :title="localize.BX_MESSENGER_TEXTAREA_FILE"><input type="file" @click="onFileClick($event)" @change="onFileSelect($event)"></label>
				<button class="bx-im-textarea-app-button bx-im-textarea-app-smile" :title="localize.BX_MESSENGER_TEXTAREA_SMILE" @click="onAppButtonClick('smile', $event)"></button>
				<button v-if="false" class="bx-im-textarea-app-button bx-im-textarea-app-gif" :title="localize.BX_MESSENGER_TEXTAREA_GIPHY" @click="onAppButtonClick('giphy', $event)"></button>
			</div>
		</div>
	`
});textarea/dist/textarea.bundle.min.js000066400000022022147744174710013551 0ustar00(function(e,t,s,i){"use strict";t.Vue.component("bx-im-view-textarea",{props:{siteId:{default:"default"},userId:{default:0},dialogId:{default:0},enableCommand:{default:true},enableMention:{default:true},desktopMode:{default:false},enableEdit:{default:false},enableFile:{default:false},sendByEnter:{default:true},autoFocus:{default:null},writesEventLetter:{default:0},styles:{type:Object,default:function e(){return{}}},listenEventInsertText:{default:""},listenEventFocus:{default:""},listenEventBlur:{default:""}},data:function e(){return{placeholderMessage:"",currentMessage:"",previousMessage:"",commandListen:false,mentionListen:false,stylesDefault:Object.freeze({button:{backgroundColor:null,iconColor:null}})}},created:function e(){if(this.listenEventInsertText){t.Vue.event.$on(this.listenEventInsertText,this.onInsertText);this.$root.$on(this.listenEventInsertText,this.onInsertText)}if(this.listenEventFocus){t.Vue.event.$on(this.listenEventFocus,this.onFocusSet);this.$root.$on(this.listenEventFocus,this.onFocusSet)}if(this.listenEventBlur){t.Vue.event.$on(this.listenEventBlur,this.onFocusClear);this.$root.$on(this.listenEventBlur,this.onFocusClear)}this.localStorage=s.LocalStorage;this.textareaHistory=this.localStorage.get(this.siteId,this.userId,"textarea-history",{});this.currentMessage=this.textareaHistory[this.dialogId]||"";this.placeholderMessage=this.currentMessage},beforeDestroy:function e(){if(this.listenEventInsertText){t.Vue.event.$off(this.listenEventInsertText,this.onInsertText);this.$root.$off(this.listenEventInsertText,this.onInsertText)}if(this.listenEventFocus){t.Vue.event.$off(this.listenEventFocus,this.onFocusSet);this.$root.$off(this.listenEventFocus,this.onFocusSet)}if(this.listenEventBlur){t.Vue.event.$off(this.listenEventBlur,this.onFocusClear);this.$root.$off(this.listenEventBlur,this.onFocusClear)}clearTimeout(this.messageStoreTimeout);this.localStorage.set(this.siteId,this.userId,"textarea-history",this.textareaHistory);this.localStorage=null},computed:{textareaClassName:function e(){return"bx-im-textarea"+(i.Utils.device.isMobile()?" bx-im-textarea-mobile":"")},buttonStyle:function e(){var t=Object.assign({},this.stylesDefault,this.styles);var s=false;if(t.button.iconColor){s=i.Utils.isDarkColor(t.button.iconColor)}else{s=!i.Utils.isDarkColor(t.button.backgroundColor)}t.button.className=s?"bx-im-textarea-send-button":"bx-im-textarea-send-button bx-im-textarea-send-button-bright-arrow";t.button.style=t.button.backgroundColor?"background-color: "+t.button.backgroundColor+";":"";return t},localize:function e(){return t.Vue.getFilteredPhrases("BX_MESSENGER_TEXTAREA_",this.$root.$bitrixMessages)}},directives:{"bx-im-focus":{inserted:function e(t,s){if(s.value===true||s.value===null&&!i.Utils.device.isMobile()){t.focus()}}}},methods:{insertText:function e(t){var s=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"current";var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:"after";var a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;var o=this.$refs.textarea;var l=o.selectionStart;var r=o.selectionEnd;if(i=="start"){if(s){t=t+"\n"}o.value=t+o.value;if(a){if(n=="after"){o.selectionStart=t.length;o.selectionEnd=o.selectionStart}else if(n=="before"){o.selectionStart=0;o.selectionEnd=o.selectionStart}}}else if(i=="current"){if(s){if(o.value.substring(0,l).trim().length>0){t="\n"+t}t=t+"\n"}o.value=o.value.substring(0,l)+t+o.value.substring(r,o.value.length);if(a){if(n=="after"){o.selectionStart=l+t.length;o.selectionEnd=o.selectionStart}else if(n=="before"){o.selectionStart=l;o.selectionEnd=o.selectionStart}}}else if(i=="end"){if(s){if(o.value.substring(0,l).trim().length>0){t="\n"+t}t=t+"\n"}o.value=o.value+t;if(a){if(n=="after"){o.selectionStart=o.value.length;o.selectionEnd=o.selectionStart}else if(n=="before"){o.selectionStart=o.value.length-t.length;o.selectionEnd=o.selectionStart}}}if(a){if(n=="start"){o.selectionStart=0;o.selectionEnd=0}else if(n=="end"){o.selectionStart=o.value.length;o.selectionEnd=o.selectionStart}o.focus()}this.textChangeEvent()},sendMessage:function e(){this.$emit("send",{text:this.currentMessage.trim()});var t=this.$refs.textarea;if(t){t.value=""}if(this.autoFocus===null||this.autoFocus){t.focus()}this.textChangeEvent()},textChangeEvent:function e(){var t=this;var s=this.$refs.textarea;if(!s){return}var i=s.value.trim();if(this.currentMessage===i){return}if(this.writesEventLetter<=i.length){this.$emit("writes",{text:i})}this.previousMessage=this.currentMessage;this.previousSelectionStart=s.selectionStart;this.previousSelectionEnd=this.previousSelectionStart;this.currentMessage=i;if(i.toString().length>0){this.textareaHistory[this.dialogId]=i}else{delete this.textareaHistory[this.dialogId]}clearTimeout(this.messageStoreTimeout);this.messageStoreTimeout=setTimeout(function(){t.localStorage.set(t.siteId,t.userId,"textarea-history",t.textareaHistory,t.userId?0:10)},500)},onKeyDown:function e(t){this.$emit("keydown",t);var s=t.target;var n=s.value.trim();var a=i.Utils.platform.isMac();var o=i.Utils.platform.isBitrixDesktop()||!i.Utils.browser.isChrome();if(this.commandListen);else if(this.mentionListen);else if(!(t.altKey&&t.ctrlKey)){if(this.enableMention&&t.shiftKey&&(t.keyCode==61||t.keyCode==50||t.keyCode==187||t.keyCode==187)||t.keyCode==107);else if(this.enableCommand&&(t.keyCode==191||t.keyCode==111||t.keyCode==220));}if(t.keyCode==27){if(s.value!=""&&s===document.activeElement){t.preventDefault();t.stopPropagation()}if(t.shiftKey){s.value=""}}else if(t.metaKey||t.ctrlKey){if(o&&t.key==="t"||!o&&t.key==="e"){t.preventDefault()}else if(["b","s","i","u"].includes(t.key)){var l=s.selectionStart;var r=s.selectionEnd;var u="["+t.key.toLowerCase()+"]";var c="[/"+t.key.toLowerCase()+"]";var f=s.value.substring(l,r);if(f.startsWith(u)&&f.endsWith(c)){f=f.substring(u.length,f.indexOf(c))}else{f=u+f+c}s.value=s.value.substring(0,l)+f+s.value.substring(r,s.value.length);s.selectionStart=l;s.selectionEnd=l+f.length;t.preventDefault()}}if(t.keyCode==9){this.insertText("\t");t.preventDefault()}else if(this.enableEdit&&t.keyCode==38&&n.length<=0){this.$emit("edit",{})}else if(t.keyCode==13){if(i.Utils.device.isMobile());else if(this.sendByEnter==true){if(t.ctrlKey||t.altKey||t.shiftKey){if(!t.shiftKey){this.insertText("\n")}}else if(n.length<=0){t.preventDefault()}else{this.sendMessage();t.preventDefault()}}else{if(t.ctrlKey==true){this.sendMessage();t.preventDefault()}else if(a&&(t.metaKey==true||t.altKey==true)){this.sendMessage();t.preventDefault()}}}else if((t.ctrlKey||t.metaKey)&&t.key=="z"){if(this.previousMessage){s.value=this.previousMessage;s.selectionStart=this.previousSelectionStart;s.selectionEnd=this.previousSelectionEnd;this.previousMessage="";t.preventDefault()}}},onKeyUp:function e(t){this.$emit("keyup",{event:t,text:this.currentMessage});this.textChangeEvent()},onPaste:function e(t){this.$nextTick(this.textChangeEvent)},onInput:function e(t){this.textChangeEvent()},onFocus:function e(t){this.$emit("focus",t)},onBlur:function e(t){this.$emit("blur",t)},onAppButtonClick:function e(t,s){this.$emit("appButtonClick",{appId:t,event:s})},onInsertText:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};if(!t.text){return false}this.insertText(t.text,t.breakline,t.position,t.cursor,t.focus);this.$emit("keyup",{event:t,text:this.currentMessage});return true},onFocusSet:function e(){this.$refs.textarea.focus();return true},onFocusClear:function e(){this.$refs.textarea.blur();return true},onFileClick:function e(t){t.target.value=""},onFileSelect:function e(t){this.$emit("fileSelected",{fileInput:t.target})}},template:'\n\t\t<div :class="textareaClassName">\n\t\t\t<div class="bx-im-textarea-box">\n\t\t\t\t<textarea ref="textarea" class="bx-im-textarea-input" @keydown="onKeyDown" @keyup="onKeyUp" @paste="onPaste" @input="onInput" @focus="onFocus" @blur="onBlur" v-bx-im-focus="autoFocus" :placeholder="localize.BX_MESSENGER_TEXTAREA_PLACEHOLDER">{{placeholderMessage}}</textarea>\n\t\t\t\t<transition enter-active-class="bx-im-textarea-send-button-show" leave-active-class="bx-im-textarea-send-button-hide">\n\t\t\t\t\t<button v-if="currentMessage" :class="buttonStyle.button.className" :style="buttonStyle.button.style" @click="sendMessage" :title="localize.BX_MESSENGER_TEXTAREA_BUTTON_SEND"></button>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<div class="bx-im-textarea-app-box">\n\t\t\t\t<label v-if="enableFile" class="bx-im-textarea-app-button bx-im-textarea-app-file" :title="localize.BX_MESSENGER_TEXTAREA_FILE"><input type="file" @click="onFileClick($event)" @change="onFileSelect($event)"></label>\n\t\t\t\t<button class="bx-im-textarea-app-button bx-im-textarea-app-smile" :title="localize.BX_MESSENGER_TEXTAREA_SMILE" @click="onAppButtonClick(\'smile\', $event)"></button>\n\t\t\t\t<button v-if="false" class="bx-im-textarea-app-button bx-im-textarea-app-gif" :title="localize.BX_MESSENGER_TEXTAREA_GIPHY" @click="onAppButtonClick(\'giphy\', $event)"></button>\n\t\t\t</div>\n\t\t</div>\n\t'})})(this.window=this.window||{},BX,BX.Messenger.Lib,BX.Messenger.Lib);
//# sourceMappingURL=textarea.bundle.map.jstextarea/dist/textarea.bundle.js.map000066400000074414147744174710013557 0ustar00{"version":3,"file":"textarea.bundle.js","sources":["../src/textarea.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Textarea Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './textarea.css';\nimport {Vue} from \"ui.vue\";\nimport {LocalStorage} from \"im.lib.localstorage\";\nimport {Utils} from \"im.lib.utils\";\n\nVue.component('bx-im-view-textarea',\n{\n\t/**\n\t * @emits 'send' {text: string}\n\t * @emits 'edit' {}\n\t * @emits 'writes' {text: string}\n\t * @emits 'focus' {event: object} -- 'event' - focus event\n\t * @emits 'blur' {event: object} -- 'event' - blur event\n\t * @emits 'keyup' {event: object} -- 'event' - keyup event\n\t * @emits 'keydown' {event: object} -- 'event' - keydown event\n\t * @emits 'appButtonClick' {appId: string, event: object} -- 'appId' - application name, 'event' - event click\n\t * @emits 'fileSelected' {fileInput: domNode} -- 'fileInput' - dom node element\n\t */\n\n\t/**\n\t * @listens props.listenEventInsertText {text: string, breakline: boolean, position: string, cursor: string, focus: boolean} (global|application) -- insert text to textarea, see more in methods.insertText()\n\t * @listens props.listenEventFocus {} (global|application) -- set focus on textarea\n\t * @listens props.listenEventBlur {} (global|application) -- clear focus on textarea\n\t */\n\n\tprops:\n\t{\n\t\tsiteId: { default: 'default' },\n\t\tuserId: { default: 0 },\n\t\tdialogId: { default: 0 },\n\t\tenableCommand: { default: true },\n\t\tenableMention: { default: true },\n\t\tdesktopMode: { default: false },\n\t\tenableEdit: { default: false },\n\t\tenableFile: { default: false },\n\t\tsendByEnter: { default: true },\n\t\tautoFocus: { default: null },\n\t\twritesEventLetter: { default: 0 },\n\t\tstyles: {\n\t\t\ttype: Object,\n\t\t\tdefault: function () {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\t\tlistenEventInsertText: { default: '' },\n\t\tlistenEventFocus: { default: '' },\n\t\tlistenEventBlur: { default: '' },\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tplaceholderMessage: '',\n\t\t\tcurrentMessage: '',\n\t\t\tpreviousMessage: '',\n\t\t\tcommandListen: false,\n\t\t\tmentionListen: false,\n\t\t\tstylesDefault: Object.freeze({button: { backgroundColor: null, iconColor: null }})\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tif (this.listenEventInsertText)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventInsertText, this.onInsertText);\n\t\t\tthis.$root.$on(this.listenEventInsertText, this.onInsertText);\n\t\t}\n\t\tif (this.listenEventFocus)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventFocus, this.onFocusSet);\n\t\t\tthis.$root.$on(this.listenEventFocus, this.onFocusSet);\n\t\t}\n\t\tif (this.listenEventBlur)\n\t\t{\n\t\t\tVue.event.$on(this.listenEventBlur, this.onFocusClear);\n\t\t\tthis.$root.$on(this.listenEventBlur, this.onFocusClear);\n\t\t}\n\n\t\tthis.localStorage = LocalStorage;\n\n\t\tthis.textareaHistory = this.localStorage.get(this.siteId, this.userId, 'textarea-history', {});\n\t\tthis.currentMessage = this.textareaHistory[this.dialogId] || '';\n\t\tthis.placeholderMessage = this.currentMessage;\n\t},\n\tbeforeDestroy()\n\t{\n\t\tif (this.listenEventInsertText)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventInsertText, this.onInsertText);\n\t\t\tthis.$root.$off(this.listenEventInsertText, this.onInsertText);\n\t\t}\n\t\tif (this.listenEventFocus)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventFocus, this.onFocusSet);\n\t\t\tthis.$root.$off(this.listenEventFocus, this.onFocusSet);\n\t\t}\n\t\tif (this.listenEventBlur)\n\t\t{\n\t\t\tVue.event.$off(this.listenEventBlur, this.onFocusClear);\n\t\t\tthis.$root.$off(this.listenEventBlur, this.onFocusClear);\n\t\t}\n\t\tclearTimeout(this.messageStoreTimeout);\n\t\tthis.localStorage.set(this.siteId, this.userId, 'textarea-history', this.textareaHistory);\n\t\tthis.localStorage = null;\n\t},\n\tcomputed:\n\t{\n\t\ttextareaClassName()\n\t\t{\n\t\t\treturn 'bx-im-textarea' + (Utils.device.isMobile()? ' bx-im-textarea-mobile': '');\n\t\t},\n\n\t\tbuttonStyle()\n\t\t{\n\t\t\tlet styles = Object.assign({}, this.stylesDefault, this.styles);\n\n\t\t\tlet isIconDark = false;\n\t\t\tif (styles.button.iconColor)\n\t\t\t{\n\t\t\t\tisIconDark = Utils.isDarkColor(styles.button.iconColor);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tisIconDark = !Utils.isDarkColor(styles.button.backgroundColor);\n\t\t\t}\n\n\t\t\tstyles.button.className = isIconDark? 'bx-im-textarea-send-button': 'bx-im-textarea-send-button bx-im-textarea-send-button-bright-arrow';\n\t\t\tstyles.button.style = styles.button.backgroundColor? 'background-color: '+styles.button.backgroundColor+';': '';\n\n\t\t\treturn styles;\n\t\t},\n\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('BX_MESSENGER_TEXTAREA_', this.$root.$bitrixMessages)\n\t\t},\n\t},\n\tdirectives: {\n\t\t'bx-im-focus':\n\t\t{\n\t\t\tinserted(element, params)\n\t\t\t{\n\t\t\t\tif (\n\t\t\t\t\tparams.value === true\n\t\t\t\t\t|| params.value === null && !Utils.device.isMobile()\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\telement.focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\t/**\n\t\t *\n\t\t * @param text\n\t\t * @param breakline - true/false (default)\n\t\t * @param position - start, current (default), end\n\t\t * @param cursor - start, before, after (default), end\n\t\t * @param focus - set focus on textarea\n\t\t */\n\t\tinsertText(text, breakline = false, position = 'current', cursor = 'after', focus = true)\n\t\t{\n\t\t\tlet textarea = this.$refs.textarea;\n\t\t\tlet selectionStart = textarea.selectionStart;\n\t\t\tlet selectionEnd = textarea.selectionEnd;\n\n\t\t\tif (position == 'start')\n\t\t\t{\n\t\t\t\tif (breakline)\n\t\t\t\t{\n\t\t\t\t\ttext = text+\"\\n\";\n\t\t\t\t}\n\t\t\t\ttextarea.value = text + textarea.value;\n\n\t\t\t\tif (focus)\n\t\t\t\t{\n\t\t\t\t\tif (cursor == 'after')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = text.length;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t\telse if (cursor == 'before')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = 0;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (position == 'current')\n\t\t\t{\n\t\t\t\tif (breakline)\n\t\t\t\t{\n\t\t\t\t\tif (textarea.value.substring(0, selectionStart).trim().length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\ttext = \"\\n\"+text;\n\t\t\t\t\t}\n\t\t\t\t\ttext = text+\"\\n\";\n\t\t\t\t}\n\t\t\t\ttextarea.value = textarea.value.substring(0, selectionStart) + text + textarea.value.substring(selectionEnd, textarea.value.length);\n\n\t\t\t\tif (focus)\n\t\t\t\t{\n\t\t\t\t\tif (cursor == 'after')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = selectionStart+text.length;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t\telse if (cursor == 'before')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = selectionStart;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (position == 'end')\n\t\t\t{\n\t\t\t\tif (breakline)\n\t\t\t\t{\n\t\t\t\t\tif (textarea.value.substring(0, selectionStart).trim().length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\ttext = \"\\n\"+text;\n\t\t\t\t\t}\n\t\t\t\t\ttext = text+\"\\n\";\n\t\t\t\t}\n\t\t\t\ttextarea.value = textarea.value+text;\n\n\t\t\t\tif (focus)\n\t\t\t\t{\n\t\t\t\t\tif (cursor == 'after')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = textarea.value.length;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t\telse if (cursor == 'before')\n\t\t\t\t\t{\n\t\t\t\t\t\ttextarea.selectionStart = textarea.value.length-text.length;\n\t\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (focus)\n\t\t\t{\n\t\t\t\tif (cursor == 'start')\n\t\t\t\t{\n\t\t\t\t\ttextarea.selectionStart = 0;\n\t\t\t\t\ttextarea.selectionEnd = 0;\n\t\t\t\t}\n\t\t\t\telse if (cursor == 'end')\n\t\t\t\t{\n\t\t\t\t\ttextarea.selectionStart = textarea.value.length;\n\t\t\t\t\ttextarea.selectionEnd = textarea.selectionStart;\n\t\t\t\t}\n\n\t\t\t\ttextarea.focus();\n\t\t\t}\n\n\t\t\tthis.textChangeEvent();\n\t\t},\n\n\t\tsendMessage()\n\t\t{\n\t\t\tthis.$emit('send', {text: this.currentMessage.trim()});\n\n\t\t\tlet textarea = this.$refs.textarea;\n\t\t\tif (textarea)\n\t\t\t{\n\t\t\t\ttextarea.value = '';\n\t\t\t}\n\n\t\t\tif (this.autoFocus === null || this.autoFocus)\n\t\t\t{\n\t\t\t\ttextarea.focus();\n\t\t\t}\n\n\t\t\tthis.textChangeEvent();\n\t\t},\n\n\t\ttextChangeEvent()\n\t\t{\n\t\t\tlet textarea = this.$refs.textarea;\n\t\t\tif (!textarea)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet text = textarea.value.trim();\n\t\t\tif (this.currentMessage === text)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.writesEventLetter <= text.length)\n\t\t\t{\n\t\t\t\tthis.$emit('writes', {text});\n\t\t\t}\n\n\t\t\tthis.previousMessage = this.currentMessage;\n\t\t\tthis.previousSelectionStart = textarea.selectionStart;\n\t\t\tthis.previousSelectionEnd = this.previousSelectionStart;\n\t\t\tthis.currentMessage = text;\n\n\t\t\tif (text.toString().length > 0)\n\t\t\t{\n\t\t\t\tthis.textareaHistory[this.dialogId] = text;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdelete this.textareaHistory[this.dialogId];\n\t\t\t}\n\n\t\t\tclearTimeout(this.messageStoreTimeout);\n\t\t\tthis.messageStoreTimeout = setTimeout(() => {\n\t\t\t\tthis.localStorage.set(this.siteId, this.userId, 'textarea-history', this.textareaHistory, this.userId? 0: 10);\n\t\t\t}, 500);\n\t\t},\n\n\t\tonKeyDown(event)\n\t\t{\n\t\t\tthis.$emit('keydown', event);\n\n\t\t\tlet textarea = event.target;\n\t\t\tlet text = textarea.value.trim();\n\t\t\tlet isMac = Utils.platform.isMac();\n\t\t\tlet isCtrlTEnable = Utils.platform.isBitrixDesktop() || !Utils.browser.isChrome();\n\n\t\t\t// TODO see more im/install/js/im/im.js:12324\n\t\t\tif (this.commandListen)\n\t\t\t{\n\t\t\t}\n\t\t\telse if (this.mentionListen)\n\t\t\t{\n\t\t\t}\n\t\t\telse if (!(event.altKey && event.ctrlKey))\n\t\t\t{\n\t\t\t\tif (this.enableMention && (event.shiftKey  && (event.keyCode == 61 || event.keyCode == 50 || event.keyCode == 187 || event.keyCode == 187)) || event.keyCode == 107)\n\t\t\t\t{\n\t\t\t\t\t// mention case\n\t\t\t\t}\n\t\t\t\telse if (this.enableCommand && (event.keyCode == 191 || event.keyCode == 111 || event.keyCode == 220))\n\t\t\t\t{\n\t\t\t\t\t// command case\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (event.keyCode == 27)\n\t\t\t{\n\t\t\t\tif (textarea.value != '' && textarea === document.activeElement)\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t\t\tif (event.shiftKey)\n\t\t\t\t{\n\t\t\t\t\ttextarea.value = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (event.metaKey || event.ctrlKey)\n\t\t\t{\n\t\t\t\t// TODO translit messages\n\t\t\t\tif (\n\t\t\t\t\tisCtrlTEnable && event.key === 't'\n\t\t\t\t\t|| !isCtrlTEnable && event.key === 'e'\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\t// translit case\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\telse if (['b','s','i','u'].includes(event.key))\n\t\t\t\t{\n\t\t\t\t\tlet selectionStart = textarea.selectionStart;\n\t\t\t\t\tlet selectionEnd = textarea.selectionEnd;\n\n\t\t\t\t\tlet tagStart = '['+event.key.toLowerCase()+']';\n\t\t\t\t\tlet tagEnd = '[/'+event.key.toLowerCase()+']';\n\t\t\t\t\tlet selected = textarea.value.substring(selectionStart, selectionEnd);\n\n\t\t\t\t\tif (selected.startsWith(tagStart) && selected.endsWith(tagEnd))\n\t\t\t\t\t{\n\t\t\t\t\t\tselected = selected.substring(tagStart.length, selected.indexOf(tagEnd));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tselected = tagStart + selected + tagEnd;\n\t\t\t\t\t}\n\n\t\t\t\t\ttextarea.value = textarea.value.substring(0, selectionStart) + selected + textarea.value.substring(selectionEnd, textarea.value.length);\n\n\t\t\t\t\ttextarea.selectionStart = selectionStart;\n\t\t\t\t\ttextarea.selectionEnd = selectionStart + selected.length;\n\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (event.keyCode == 9)\n\t\t\t{\n\t\t\t\tthis.insertText(\"\\t\");\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\telse if (this.enableEdit && event.keyCode == 38 && text.length <= 0)\n\t\t\t{\n\t\t\t\tthis.$emit('edit', {});\n\t\t\t}\n\t\t\telse if (event.keyCode == 13)\n\t\t\t{\n\t\t\t\tif (Utils.device.isMobile())\n\t\t\t\t{\n\t\t\t\t}\n\t\t\t\telse if (this.sendByEnter == true)\n\t\t\t\t{\n\t\t\t\t\tif (event.ctrlKey || event.altKey || event.shiftKey)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!event.shiftKey)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.insertText(\"\\n\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (text.length <= 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sendMessage();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (event.ctrlKey == true)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sendMessage();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\telse if (isMac && (event.metaKey == true || event.altKey == true))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.sendMessage();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ((event.ctrlKey || event.metaKey) && event.key == 'z')\n\t\t\t{\n\t\t\t\tif (this.previousMessage)\n\t\t\t\t{\n\t\t\t\t\ttextarea.value = this.previousMessage;\n\t\t\t\t\ttextarea.selectionStart = this.previousSelectionStart;\n\t\t\t\t\ttextarea.selectionEnd = this.previousSelectionEnd;\n\n\t\t\t\t\tthis.previousMessage = '';\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonKeyUp(event)\n\t\t{\n\t\t\tthis.$emit('keyup', {event, text: this.currentMessage});\n\t\t\tthis.textChangeEvent();\n\t\t},\n\t\tonPaste(event)\n\t\t{\n\t\t\tthis.$nextTick(this.textChangeEvent);\n\t\t},\n\t\tonInput(event)\n\t\t{\n\t\t\tthis.textChangeEvent();\n\t\t},\n\t\tonFocus(event)\n\t\t{\n\t\t\tthis.$emit('focus', event);\n\t\t},\n\t\tonBlur(event)\n\t\t{\n\t\t\tthis.$emit('blur', event);\n\t\t},\n\t\tonAppButtonClick(appId, event)\n\t\t{\n\t\t\tthis.$emit('appButtonClick', {appId, event});\n\t\t},\n\t\tonInsertText(event = {})\n\t\t{\n\t\t\tif (!event.text)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.insertText(event.text, event.breakline, event.position, event.cursor, event.focus);\n\n\t\t\tthis.$emit('keyup', {event, text: this.currentMessage});\n\n\t\t\treturn true;\n\t\t},\n\t\tonFocusSet()\n\t\t{\n\t\t\tthis.$refs.textarea.focus();\n\n\t\t\treturn true;\n\t\t},\n\t\tonFocusClear()\n\t\t{\n\t\t\tthis.$refs.textarea.blur();\n\n\t\t\treturn true;\n\t\t},\n\t\tonFileClick(event)\n\t\t{\n\t\t\tevent.target.value = \"\";\n\t\t},\n\t\tonFileSelect(event)\n\t\t{\n\t\t\tthis.$emit('fileSelected', {fileInput: event.target});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div :class=\"textareaClassName\">\n\t\t\t<div class=\"bx-im-textarea-box\">\n\t\t\t\t<textarea ref=\"textarea\" class=\"bx-im-textarea-input\" @keydown=\"onKeyDown\" @keyup=\"onKeyUp\" @paste=\"onPaste\" @input=\"onInput\" @focus=\"onFocus\" @blur=\"onBlur\" v-bx-im-focus=\"autoFocus\" :placeholder=\"localize.BX_MESSENGER_TEXTAREA_PLACEHOLDER\">{{placeholderMessage}}</textarea>\n\t\t\t\t<transition enter-active-class=\"bx-im-textarea-send-button-show\" leave-active-class=\"bx-im-textarea-send-button-hide\">\n\t\t\t\t\t<button v-if=\"currentMessage\" :class=\"buttonStyle.button.className\" :style=\"buttonStyle.button.style\" @click=\"sendMessage\" :title=\"localize.BX_MESSENGER_TEXTAREA_BUTTON_SEND\"></button>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-textarea-app-box\">\n\t\t\t\t<label v-if=\"enableFile\" class=\"bx-im-textarea-app-button bx-im-textarea-app-file\" :title=\"localize.BX_MESSENGER_TEXTAREA_FILE\"><input type=\"file\" @click=\"onFileClick($event)\" @change=\"onFileSelect($event)\"></label>\n\t\t\t\t<button class=\"bx-im-textarea-app-button bx-im-textarea-app-smile\" :title=\"localize.BX_MESSENGER_TEXTAREA_SMILE\" @click=\"onAppButtonClick('smile', $event)\"></button>\n\t\t\t\t<button v-if=\"false\" class=\"bx-im-textarea-app-button bx-im-textarea-app-gif\" :title=\"localize.BX_MESSENGER_TEXTAREA_GIPHY\" @click=\"onAppButtonClick('giphy', $event)\"></button>\n\t\t\t</div>\n\t\t</div>\n\t`\n});"],"names":["Vue","component","props","siteId","default","userId","dialogId","enableCommand","enableMention","desktopMode","enableEdit","enableFile","sendByEnter","autoFocus","writesEventLetter","styles","type","Object","listenEventInsertText","listenEventFocus","listenEventBlur","data","placeholderMessage","currentMessage","previousMessage","commandListen","mentionListen","stylesDefault","freeze","button","backgroundColor","iconColor","created","event","$on","onInsertText","$root","onFocusSet","onFocusClear","localStorage","LocalStorage","textareaHistory","get","beforeDestroy","$off","clearTimeout","messageStoreTimeout","set","computed","textareaClassName","Utils","device","isMobile","buttonStyle","assign","isIconDark","isDarkColor","className","style","localize","getFilteredPhrases","$bitrixMessages","directives","inserted","element","params","value","focus","methods","insertText","text","breakline","position","cursor","textarea","$refs","selectionStart","selectionEnd","length","substring","trim","textChangeEvent","sendMessage","$emit","previousSelectionStart","previousSelectionEnd","toString","setTimeout","onKeyDown","target","isMac","platform","isCtrlTEnable","isBitrixDesktop","browser","isChrome","altKey","ctrlKey","shiftKey","keyCode","document","activeElement","preventDefault","stopPropagation","metaKey","key","includes","tagStart","toLowerCase","tagEnd","selected","startsWith","endsWith","indexOf","onKeyUp","onPaste","$nextTick","onInput","onFocus","onBlur","onAppButtonClick","appId","blur","onFileClick","onFileSelect","fileInput","template"],"mappings":"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"}textarea/dist/textarea.bundle.js000066400000040334147744174710012775 0ustar00(function (exports,ui_vue,im_lib_localstorage,im_lib_utils) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Textarea Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-im-view-textarea', {
	  /**
	   * @emits 'send' {text: string}
	   * @emits 'edit' {}
	   * @emits 'writes' {text: string}
	   * @emits 'focus' {event: object} -- 'event' - focus event
	   * @emits 'blur' {event: object} -- 'event' - blur event
	   * @emits 'keyup' {event: object} -- 'event' - keyup event
	   * @emits 'keydown' {event: object} -- 'event' - keydown event
	   * @emits 'appButtonClick' {appId: string, event: object} -- 'appId' - application name, 'event' - event click
	   * @emits 'fileSelected' {fileInput: domNode} -- 'fileInput' - dom node element
	   */

	  /**
	   * @listens props.listenEventInsertText {text: string, breakline: boolean, position: string, cursor: string, focus: boolean} (global|application) -- insert text to textarea, see more in methods.insertText()
	   * @listens props.listenEventFocus {} (global|application) -- set focus on textarea
	   * @listens props.listenEventBlur {} (global|application) -- clear focus on textarea
	   */
	  props: {
	    siteId: {
	      default: 'default'
	    },
	    userId: {
	      default: 0
	    },
	    dialogId: {
	      default: 0
	    },
	    enableCommand: {
	      default: true
	    },
	    enableMention: {
	      default: true
	    },
	    desktopMode: {
	      default: false
	    },
	    enableEdit: {
	      default: false
	    },
	    enableFile: {
	      default: false
	    },
	    sendByEnter: {
	      default: true
	    },
	    autoFocus: {
	      default: null
	    },
	    writesEventLetter: {
	      default: 0
	    },
	    styles: {
	      type: Object,
	      default: function _default() {
	        return {};
	      }
	    },
	    listenEventInsertText: {
	      default: ''
	    },
	    listenEventFocus: {
	      default: ''
	    },
	    listenEventBlur: {
	      default: ''
	    }
	  },
	  data: function data() {
	    return {
	      placeholderMessage: '',
	      currentMessage: '',
	      previousMessage: '',
	      commandListen: false,
	      mentionListen: false,
	      stylesDefault: Object.freeze({
	        button: {
	          backgroundColor: null,
	          iconColor: null
	        }
	      })
	    };
	  },
	  created: function created() {
	    if (this.listenEventInsertText) {
	      ui_vue.Vue.event.$on(this.listenEventInsertText, this.onInsertText);
	      this.$root.$on(this.listenEventInsertText, this.onInsertText);
	    }

	    if (this.listenEventFocus) {
	      ui_vue.Vue.event.$on(this.listenEventFocus, this.onFocusSet);
	      this.$root.$on(this.listenEventFocus, this.onFocusSet);
	    }

	    if (this.listenEventBlur) {
	      ui_vue.Vue.event.$on(this.listenEventBlur, this.onFocusClear);
	      this.$root.$on(this.listenEventBlur, this.onFocusClear);
	    }

	    this.localStorage = im_lib_localstorage.LocalStorage;
	    this.textareaHistory = this.localStorage.get(this.siteId, this.userId, 'textarea-history', {});
	    this.currentMessage = this.textareaHistory[this.dialogId] || '';
	    this.placeholderMessage = this.currentMessage;
	  },
	  beforeDestroy: function beforeDestroy() {
	    if (this.listenEventInsertText) {
	      ui_vue.Vue.event.$off(this.listenEventInsertText, this.onInsertText);
	      this.$root.$off(this.listenEventInsertText, this.onInsertText);
	    }

	    if (this.listenEventFocus) {
	      ui_vue.Vue.event.$off(this.listenEventFocus, this.onFocusSet);
	      this.$root.$off(this.listenEventFocus, this.onFocusSet);
	    }

	    if (this.listenEventBlur) {
	      ui_vue.Vue.event.$off(this.listenEventBlur, this.onFocusClear);
	      this.$root.$off(this.listenEventBlur, this.onFocusClear);
	    }

	    clearTimeout(this.messageStoreTimeout);
	    this.localStorage.set(this.siteId, this.userId, 'textarea-history', this.textareaHistory);
	    this.localStorage = null;
	  },
	  computed: {
	    textareaClassName: function textareaClassName() {
	      return 'bx-im-textarea' + (im_lib_utils.Utils.device.isMobile() ? ' bx-im-textarea-mobile' : '');
	    },
	    buttonStyle: function buttonStyle() {
	      var styles = Object.assign({}, this.stylesDefault, this.styles);
	      var isIconDark = false;

	      if (styles.button.iconColor) {
	        isIconDark = im_lib_utils.Utils.isDarkColor(styles.button.iconColor);
	      } else {
	        isIconDark = !im_lib_utils.Utils.isDarkColor(styles.button.backgroundColor);
	      }

	      styles.button.className = isIconDark ? 'bx-im-textarea-send-button' : 'bx-im-textarea-send-button bx-im-textarea-send-button-bright-arrow';
	      styles.button.style = styles.button.backgroundColor ? 'background-color: ' + styles.button.backgroundColor + ';' : '';
	      return styles;
	    },
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('BX_MESSENGER_TEXTAREA_', this.$root.$bitrixMessages);
	    }
	  },
	  directives: {
	    'bx-im-focus': {
	      inserted: function inserted(element, params) {
	        if (params.value === true || params.value === null && !im_lib_utils.Utils.device.isMobile()) {
	          element.focus();
	        }
	      }
	    }
	  },
	  methods: {
	    /**
	     *
	     * @param text
	     * @param breakline - true/false (default)
	     * @param position - start, current (default), end
	     * @param cursor - start, before, after (default), end
	     * @param focus - set focus on textarea
	     */
	    insertText: function insertText(text) {
	      var breakline = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
	      var position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'current';
	      var cursor = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'after';
	      var focus = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
	      var textarea = this.$refs.textarea;
	      var selectionStart = textarea.selectionStart;
	      var selectionEnd = textarea.selectionEnd;

	      if (position == 'start') {
	        if (breakline) {
	          text = text + "\n";
	        }

	        textarea.value = text + textarea.value;

	        if (focus) {
	          if (cursor == 'after') {
	            textarea.selectionStart = text.length;
	            textarea.selectionEnd = textarea.selectionStart;
	          } else if (cursor == 'before') {
	            textarea.selectionStart = 0;
	            textarea.selectionEnd = textarea.selectionStart;
	          }
	        }
	      } else if (position == 'current') {
	        if (breakline) {
	          if (textarea.value.substring(0, selectionStart).trim().length > 0) {
	            text = "\n" + text;
	          }

	          text = text + "\n";
	        }

	        textarea.value = textarea.value.substring(0, selectionStart) + text + textarea.value.substring(selectionEnd, textarea.value.length);

	        if (focus) {
	          if (cursor == 'after') {
	            textarea.selectionStart = selectionStart + text.length;
	            textarea.selectionEnd = textarea.selectionStart;
	          } else if (cursor == 'before') {
	            textarea.selectionStart = selectionStart;
	            textarea.selectionEnd = textarea.selectionStart;
	          }
	        }
	      } else if (position == 'end') {
	        if (breakline) {
	          if (textarea.value.substring(0, selectionStart).trim().length > 0) {
	            text = "\n" + text;
	          }

	          text = text + "\n";
	        }

	        textarea.value = textarea.value + text;

	        if (focus) {
	          if (cursor == 'after') {
	            textarea.selectionStart = textarea.value.length;
	            textarea.selectionEnd = textarea.selectionStart;
	          } else if (cursor == 'before') {
	            textarea.selectionStart = textarea.value.length - text.length;
	            textarea.selectionEnd = textarea.selectionStart;
	          }
	        }
	      }

	      if (focus) {
	        if (cursor == 'start') {
	          textarea.selectionStart = 0;
	          textarea.selectionEnd = 0;
	        } else if (cursor == 'end') {
	          textarea.selectionStart = textarea.value.length;
	          textarea.selectionEnd = textarea.selectionStart;
	        }

	        textarea.focus();
	      }

	      this.textChangeEvent();
	    },
	    sendMessage: function sendMessage() {
	      this.$emit('send', {
	        text: this.currentMessage.trim()
	      });
	      var textarea = this.$refs.textarea;

	      if (textarea) {
	        textarea.value = '';
	      }

	      if (this.autoFocus === null || this.autoFocus) {
	        textarea.focus();
	      }

	      this.textChangeEvent();
	    },
	    textChangeEvent: function textChangeEvent() {
	      var _this = this;

	      var textarea = this.$refs.textarea;

	      if (!textarea) {
	        return;
	      }

	      var text = textarea.value.trim();

	      if (this.currentMessage === text) {
	        return;
	      }

	      if (this.writesEventLetter <= text.length) {
	        this.$emit('writes', {
	          text: text
	        });
	      }

	      this.previousMessage = this.currentMessage;
	      this.previousSelectionStart = textarea.selectionStart;
	      this.previousSelectionEnd = this.previousSelectionStart;
	      this.currentMessage = text;

	      if (text.toString().length > 0) {
	        this.textareaHistory[this.dialogId] = text;
	      } else {
	        delete this.textareaHistory[this.dialogId];
	      }

	      clearTimeout(this.messageStoreTimeout);
	      this.messageStoreTimeout = setTimeout(function () {
	        _this.localStorage.set(_this.siteId, _this.userId, 'textarea-history', _this.textareaHistory, _this.userId ? 0 : 10);
	      }, 500);
	    },
	    onKeyDown: function onKeyDown(event) {
	      this.$emit('keydown', event);
	      var textarea = event.target;
	      var text = textarea.value.trim();
	      var isMac = im_lib_utils.Utils.platform.isMac();
	      var isCtrlTEnable = im_lib_utils.Utils.platform.isBitrixDesktop() || !im_lib_utils.Utils.browser.isChrome(); // TODO see more im/install/js/im/im.js:12324

	      if (this.commandListen) ; else if (this.mentionListen) ; else if (!(event.altKey && event.ctrlKey)) {
	        if (this.enableMention && event.shiftKey && (event.keyCode == 61 || event.keyCode == 50 || event.keyCode == 187 || event.keyCode == 187) || event.keyCode == 107) ; else if (this.enableCommand && (event.keyCode == 191 || event.keyCode == 111 || event.keyCode == 220)) ;
	      }

	      if (event.keyCode == 27) {
	        if (textarea.value != '' && textarea === document.activeElement) {
	          event.preventDefault();
	          event.stopPropagation();
	        }

	        if (event.shiftKey) {
	          textarea.value = '';
	        }
	      } else if (event.metaKey || event.ctrlKey) {
	        // TODO translit messages
	        if (isCtrlTEnable && event.key === 't' || !isCtrlTEnable && event.key === 'e') {
	          // translit case
	          event.preventDefault();
	        } else if (['b', 's', 'i', 'u'].includes(event.key)) {
	          var selectionStart = textarea.selectionStart;
	          var selectionEnd = textarea.selectionEnd;
	          var tagStart = '[' + event.key.toLowerCase() + ']';
	          var tagEnd = '[/' + event.key.toLowerCase() + ']';
	          var selected = textarea.value.substring(selectionStart, selectionEnd);

	          if (selected.startsWith(tagStart) && selected.endsWith(tagEnd)) {
	            selected = selected.substring(tagStart.length, selected.indexOf(tagEnd));
	          } else {
	            selected = tagStart + selected + tagEnd;
	          }

	          textarea.value = textarea.value.substring(0, selectionStart) + selected + textarea.value.substring(selectionEnd, textarea.value.length);
	          textarea.selectionStart = selectionStart;
	          textarea.selectionEnd = selectionStart + selected.length;
	          event.preventDefault();
	        }
	      }

	      if (event.keyCode == 9) {
	        this.insertText("\t");
	        event.preventDefault();
	      } else if (this.enableEdit && event.keyCode == 38 && text.length <= 0) {
	        this.$emit('edit', {});
	      } else if (event.keyCode == 13) {
	        if (im_lib_utils.Utils.device.isMobile()) ; else if (this.sendByEnter == true) {
	          if (event.ctrlKey || event.altKey || event.shiftKey) {
	            if (!event.shiftKey) {
	              this.insertText("\n");
	            }
	          } else if (text.length <= 0) {
	            event.preventDefault();
	          } else {
	            this.sendMessage();
	            event.preventDefault();
	          }
	        } else {
	          if (event.ctrlKey == true) {
	            this.sendMessage();
	            event.preventDefault();
	          } else if (isMac && (event.metaKey == true || event.altKey == true)) {
	            this.sendMessage();
	            event.preventDefault();
	          }
	        }
	      } else if ((event.ctrlKey || event.metaKey) && event.key == 'z') {
	        if (this.previousMessage) {
	          textarea.value = this.previousMessage;
	          textarea.selectionStart = this.previousSelectionStart;
	          textarea.selectionEnd = this.previousSelectionEnd;
	          this.previousMessage = '';
	          event.preventDefault();
	        }
	      }
	    },
	    onKeyUp: function onKeyUp(event) {
	      this.$emit('keyup', {
	        event: event,
	        text: this.currentMessage
	      });
	      this.textChangeEvent();
	    },
	    onPaste: function onPaste(event) {
	      this.$nextTick(this.textChangeEvent);
	    },
	    onInput: function onInput(event) {
	      this.textChangeEvent();
	    },
	    onFocus: function onFocus(event) {
	      this.$emit('focus', event);
	    },
	    onBlur: function onBlur(event) {
	      this.$emit('blur', event);
	    },
	    onAppButtonClick: function onAppButtonClick(appId, event) {
	      this.$emit('appButtonClick', {
	        appId: appId,
	        event: event
	      });
	    },
	    onInsertText: function onInsertText() {
	      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

	      if (!event.text) {
	        return false;
	      }

	      this.insertText(event.text, event.breakline, event.position, event.cursor, event.focus);
	      this.$emit('keyup', {
	        event: event,
	        text: this.currentMessage
	      });
	      return true;
	    },
	    onFocusSet: function onFocusSet() {
	      this.$refs.textarea.focus();
	      return true;
	    },
	    onFocusClear: function onFocusClear() {
	      this.$refs.textarea.blur();
	      return true;
	    },
	    onFileClick: function onFileClick(event) {
	      event.target.value = "";
	    },
	    onFileSelect: function onFileSelect(event) {
	      this.$emit('fileSelected', {
	        fileInput: event.target
	      });
	    }
	  },
	  template: "\n\t\t<div :class=\"textareaClassName\">\n\t\t\t<div class=\"bx-im-textarea-box\">\n\t\t\t\t<textarea ref=\"textarea\" class=\"bx-im-textarea-input\" @keydown=\"onKeyDown\" @keyup=\"onKeyUp\" @paste=\"onPaste\" @input=\"onInput\" @focus=\"onFocus\" @blur=\"onBlur\" v-bx-im-focus=\"autoFocus\" :placeholder=\"localize.BX_MESSENGER_TEXTAREA_PLACEHOLDER\">{{placeholderMessage}}</textarea>\n\t\t\t\t<transition enter-active-class=\"bx-im-textarea-send-button-show\" leave-active-class=\"bx-im-textarea-send-button-hide\">\n\t\t\t\t\t<button v-if=\"currentMessage\" :class=\"buttonStyle.button.className\" :style=\"buttonStyle.button.style\" @click=\"sendMessage\" :title=\"localize.BX_MESSENGER_TEXTAREA_BUTTON_SEND\"></button>\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-textarea-app-box\">\n\t\t\t\t<label v-if=\"enableFile\" class=\"bx-im-textarea-app-button bx-im-textarea-app-file\" :title=\"localize.BX_MESSENGER_TEXTAREA_FILE\"><input type=\"file\" @click=\"onFileClick($event)\" @change=\"onFileSelect($event)\"></label>\n\t\t\t\t<button class=\"bx-im-textarea-app-button bx-im-textarea-app-smile\" :title=\"localize.BX_MESSENGER_TEXTAREA_SMILE\" @click=\"onAppButtonClick('smile', $event)\"></button>\n\t\t\t\t<button v-if=\"false\" class=\"bx-im-textarea-app-button bx-im-textarea-app-gif\" :title=\"localize.BX_MESSENGER_TEXTAREA_GIPHY\" @click=\"onAppButtonClick('giphy', $event)\"></button>\n\t\t\t</div>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),BX,BX.Messenger.Lib,BX.Messenger.Lib));
//# sourceMappingURL=textarea.bundle.js.map
textarea/dist/textarea.bundle.css000066400000017137147744174710013156 0ustar00.bx-im-textarea {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-orient: vertical;
	-webkit-box-direction: normal;
	    -ms-flex-direction: column;
	        flex-direction: column;
	height: 100%;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
	padding: 10px 0 0 0;
	border-top: 1px solid rgba(31,170,241,.26);
}
.bx-im-textarea-box {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-flex: 1;
	    -ms-flex-positive: 1;
	        flex-grow: 1;
	-ms-flex-negative: 1;
	    flex-shrink: 1;
	padding: 0 16px;
}

.bx-im-textarea-input {
	margin: 0 5px 0 0;
	padding: 0 5px 0 0;
	width: 100%;
	min-width: auto;
	min-height: auto;
	border: none;
	background: transparent;
	font: 14px "Helvetica Neue", Arial, Helvetica, sans-serif;
	color: #333;
	resize: none;
	outline: none;
	-webkit-tap-highlight-color: transparent;
}
.bx-im-textarea-input::-webkit-input-placeholder { /* Chrome/Opera/Safari */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input::-moz-placeholder { /* Firefox 19+ */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input:-ms-input-placeholder { /* IE 10+ */
	color: rgba(82,92,105,.42);
}
.bx-im-textarea-input:-moz-placeholder { /* Firefox 18- */
	color: rgba(82,92,105,.42);
}

.bx-im-textarea-send-button {
	display: block;
	width: 33px;
	height: 33px;
	background-color: transparent;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23646D7B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22%20opacity%3D%22.8%22/%3E%3C/svg%3E');
	background-position: center center;
	background-repeat: no-repeat;
	opacity: .5;
	-webkit-transition: opacity .3s;
	-o-transition: opacity .3s;
	transition: opacity .3s;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	border-radius: 50%;
	border: 1px solid #b1b1b1;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
.bx-im-textarea-send-button:hover,
.bx-im-textarea-mobile .bx-im-textarea-send-button {
	opacity: 1;
}
.bx-im-textarea-send-button-bright-arrow {
	border-color: transparent;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22/%3E%3C/svg%3E');
}
.bx-im-textarea-send-button.bx-im-textarea-send-button-show {
	-webkit-animation: bx-im-textarea-send-button-show .2s linear forwards;
	        animation: bx-im-textarea-send-button-show .2s linear forwards;
}
.bx-im-textarea-send-button.bx-im-textarea-send-button-hide  {
	-webkit-animation: bx-im-textarea-send-button-hide .2s linear forwards;
	        animation: bx-im-textarea-send-button-hide .2s linear forwards;
}

.bx-im-textarea-app-box {
	width: 100%;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
	margin-top: 5px;
    height: 30px;
	-webkit-box-flex: 0;
	    -ms-flex: 0 0 30px;
	        flex: 0 0 30px;
	padding: 0 8px;
}

.bx-im-textarea-app-button {
	display: inline-block;
	width: 25px;
	height: 25px;
	border: none;
	background-color: transparent;
	background-position: center;
	background-repeat: no-repeat;
	-webkit-transition: opacity .3s;
	-o-transition: opacity .3s;
	transition: opacity .3s;
	opacity: .46;
	-webkit-appearance: none;
	outline: none;
	cursor: pointer;
	vertical-align: top;
}
.bx-im-textarea-app-button:hover {
	opacity: .8;
}
.bx-im-textarea-app-file {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2216%22%3E%3Cpath%20fill%3D%22%23525C69%22%20d%3D%22M8.891%206.092c0-.277.221-.502.494-.502.272%200%20.493.225.493.502v4.444c0%202.495-1.988%204.517-4.44%204.517-2.453%200-4.442-2.022-4.442-4.517V3.151c0-1.742%201.388-3.153%203.1-3.153%201.713%200%203.1%201.411%203.1%203.153v6.235c0%201.184-.943%202.143-2.107%202.143-1.165%200-2.108-.96-2.108-2.143V5.563c0-.277.22-.502.493-.502s.494.225.494.502v3.823c0%20.63.502%201.14%201.12%201.14.62%200%201.122-.51%201.122-1.14V3.15C6.21%201.964%205.264%201%204.097%201c-1.168%200-2.114.963-2.114%202.15v7.385c0%201.94%201.547%203.513%203.454%203.513%201.908%200%203.454-1.573%203.454-3.513V6.092z%22/%3E%3C/svg%3E');
}
.bx-im-textarea-app-file > input {display: none!important;}

.bx-im-textarea-app-smile {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2215%22%20height%3D%2215%22%3E%3Cg%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5.25%204a1%201%200%200%201%201%201v1a1%201%200%201%201-2%200V5a1%201%200%200%201%201-1zm4.5%200a1%201%200%200%201%201%201v1a1%201%200%200%201-2%200V5a1%201%200%200%201%201-1z%22/%3E%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7.5%2014a6.5%206.5%200%201%200%200-13%206.5%206.5%200%200%200%200%2013zm0%201a7.5%207.5%200%201%201%200-15%207.5%207.5%200%200%201%200%2015zm-3.349-4.81a.5.5%200%201%201%20.698-.716%203.985%203.985%200%200%200%202.792%201.135c1.064%200%202.06-.416%202.804-1.147a.5.5%200%200%201%20.701.713%204.985%204.985%200%200%201-3.505%201.434%204.984%204.984%200%200%201-3.49-1.419z%22/%3E%3C/g%3E%3C/svg%3E');
}
.bx-im-textarea-app-gif {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2215%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11%2013.201a.8.8%200%200%201-.799.799H1.768A.768.768%200%200%201%201%2013.231V1.828C1%201.371%201.371%201%201.828%201h5.221c.344%200%20.673.137.916.379l2.656%202.656c.243.242.379.572.379.915v8.251zm.621-9.58L8.379.379A1.298%201.298%200%200%200%207.463%200H1.295C.58%200%200%20.58%200%201.295v12.41C0%2014.42.58%2015%201.295%2015h9.41C11.42%2015%2012%2014.42%2012%2013.705V4.536c0-.343-.136-.673-.379-.915zM7.299%207.857l1.351-1.35-.657-.657-1.35%201.35c-.053.053-.118.082-.179.119V5.25h-.928v2.069c-.06-.037-.126-.066-.179-.119l-1.35-1.35-.657.656%201.35%201.35c.053.053.082.118.12.18H2.75v.928h2.07c-.038.06-.067.127-.12.179l-1.35%201.35.657.656%201.35-1.35c.053-.052.118-.082.179-.119v2.07h.928V9.68c.06.037.126.067.179.12l1.35%201.35.657-.657-1.35-1.35c-.053-.052-.082-.118-.12-.179h2.07v-.928H7.18c.038-.062.067-.127.12-.18z%22/%3E%3C/svg%3E');
}


.bx-im-textarea-smile-box {
	width: 340px;
	height: 420px;
	position: absolute;
	background: #fff;
}


@-webkit-keyframes bx-im-textarea-send-button-show {
	0% {
		-webkit-transform: translate(50px, 0);
		        transform: translate(50px, 0);
	}
	100% {
		-webkit-transform: translate(0, 0);
		        transform: translate(0, 0);
	}
}


@keyframes bx-im-textarea-send-button-show {
	0% {
		-webkit-transform: translate(50px, 0);
		        transform: translate(50px, 0);
	}
	100% {
		-webkit-transform: translate(0, 0);
		        transform: translate(0, 0);
	}
}
@-webkit-keyframes bx-im-textarea-send-button-hide {
	0% {
		-webkit-transform: translate(0, 0);
		        transform: translate(0, 0);
	}
	100% {
		-webkit-transform: translate(50px, 0);
		        transform: translate(50px, 0);
	}
}
@keyframes bx-im-textarea-send-button-hide {
	0% {
		-webkit-transform: translate(0, 0);
		        transform: translate(0, 0);
	}
	100% {
		-webkit-transform: translate(50px, 0);
		        transform: translate(50px, 0);
	}
}textarea/dist/textarea.bundle.min.css000066400000015611147744174710013733 0ustar00.bx-im-textarea{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px 0 0 0;border-top:1px solid rgba(31,170,241,.26)}.bx-im-textarea-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:0 16px}.bx-im-textarea-input{margin:0 5px 0 0;padding:0 5px 0 0;width:100%;min-width:auto;min-height:auto;border:0;background:transparent;font:14px "Helvetica Neue",Arial,Helvetica,sans-serif;color:#333;resize:none;outline:0;-webkit-tap-highlight-color:transparent}.bx-im-textarea-input::-webkit-input-placeholder{color:rgba(82,92,105,.42)}.bx-im-textarea-input::-moz-placeholder{color:rgba(82,92,105,.42)}.bx-im-textarea-input:-ms-input-placeholder{color:rgba(82,92,105,.42)}.bx-im-textarea-input:-moz-placeholder{color:rgba(82,92,105,.42)}.bx-im-textarea-send-button{display:block;width:33px;height:33px;background-color:transparent;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23646D7B%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22%20opacity%3D%22.8%22/%3E%3C/svg%3E'); background-position:center center;background-repeat:no-repeat;opacity:.5;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;-webkit-appearance:none;outline:0;cursor:pointer;border-radius:50%;border:1px solid #b1b1b1;-ms-flex-negative:0;flex-shrink:0}.bx-im-textarea-send-button:hover,.bx-im-textarea-mobile .bx-im-textarea-send-button{opacity:1}.bx-im-textarea-send-button-bright-arrow{border-color:transparent;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2213%22%3E%3Cpath%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22%20d%3D%22M4.059%209.152L4.04%2012.21.165%208.333l3.92-3.92-.018%203.245h2.862a3%203%200%200%200%203-3v-.156a3%203%200%200%200-3-3H5.545L6.06.286h1.38a4%204%200%200%201%204%204v.866a4%204%200%200%201-4%204H4.06z%22/%3E%3C/svg%3E');}.bx-im-textarea-send-button.bx-im-textarea-send-button-show{-webkit-animation:bx-im-textarea-send-button-show .2s linear forwards;animation:bx-im-textarea-send-button-show .2s linear forwards}.bx-im-textarea-send-button.bx-im-textarea-send-button-hide{-webkit-animation:bx-im-textarea-send-button-hide .2s linear forwards;animation:bx-im-textarea-send-button-hide .2s linear forwards}.bx-im-textarea-app-box{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:5px;height:30px;-webkit-box-flex:0;-ms-flex:0 0 30px;flex:0 0 30px;padding:0 8px}.bx-im-textarea-app-button{display:inline-block;width:25px;height:25px;border:0;background-color:transparent;background-position:center;background-repeat:no-repeat;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;opacity:.46;-webkit-appearance:none;outline:0;cursor:pointer;vertical-align:top}.bx-im-textarea-app-button:hover{opacity:.8;}
.bx-im-textarea-app-file {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2216%22%3E%3Cpath%20fill%3D%22%23525C69%22%20d%3D%22M8.891%206.092c0-.277.221-.502.494-.502.272%200%20.493.225.493.502v4.444c0%202.495-1.988%204.517-4.44%204.517-2.453%200-4.442-2.022-4.442-4.517V3.151c0-1.742%201.388-3.153%203.1-3.153%201.713%200%203.1%201.411%203.1%203.153v6.235c0%201.184-.943%202.143-2.107%202.143-1.165%200-2.108-.96-2.108-2.143V5.563c0-.277.22-.502.493-.502s.494.225.494.502v3.823c0%20.63.502%201.14%201.12%201.14.62%200%201.122-.51%201.122-1.14V3.15C6.21%201.964%205.264%201%204.097%201c-1.168%200-2.114.963-2.114%202.15v7.385c0%201.94%201.547%203.513%203.454%203.513%201.908%200%203.454-1.573%203.454-3.513V6.092z%22/%3E%3C/svg%3E');}.bx-im-textarea-app-file>input{display:none!important}
.bx-im-textarea-app-smile {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2215%22%20height%3D%2215%22%3E%3Cg%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5.25%204a1%201%200%200%201%201%201v1a1%201%200%201%201-2%200V5a1%201%200%200%201%201-1zm4.5%200a1%201%200%200%201%201%201v1a1%201%200%200%201-2%200V5a1%201%200%200%201%201-1z%22/%3E%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7.5%2014a6.5%206.5%200%201%200%200-13%206.5%206.5%200%200%200%200%2013zm0%201a7.5%207.5%200%201%201%200-15%207.5%207.5%200%200%201%200%2015zm-3.349-4.81a.5.5%200%201%201%20.698-.716%203.985%203.985%200%200%200%202.792%201.135c1.064%200%202.06-.416%202.804-1.147a.5.5%200%200%201%20.701.713%204.985%204.985%200%200%201-3.505%201.434%204.984%204.984%200%200%201-3.49-1.419z%22/%3E%3C/g%3E%3C/svg%3E'); }
.bx-im-textarea-app-gif {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2212%22%20height%3D%2215%22%3E%3Cpath%20fill%3D%22%23525C69%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11%2013.201a.8.8%200%200%201-.799.799H1.768A.768.768%200%200%201%201%2013.231V1.828C1%201.371%201.371%201%201.828%201h5.221c.344%200%20.673.137.916.379l2.656%202.656c.243.242.379.572.379.915v8.251zm.621-9.58L8.379.379A1.298%201.298%200%200%200%207.463%200H1.295C.58%200%200%20.58%200%201.295v12.41C0%2014.42.58%2015%201.295%2015h9.41C11.42%2015%2012%2014.42%2012%2013.705V4.536c0-.343-.136-.673-.379-.915zM7.299%207.857l1.351-1.35-.657-.657-1.35%201.35c-.053.053-.118.082-.179.119V5.25h-.928v2.069c-.06-.037-.126-.066-.179-.119l-1.35-1.35-.657.656%201.35%201.35c.053.053.082.118.12.18H2.75v.928h2.07c-.038.06-.067.127-.12.179l-1.35%201.35.657.656%201.35-1.35c.053-.052.118-.082.179-.119v2.07h.928V9.68c.06.037.126.067.179.12l1.35%201.35.657-.657-1.35-1.35c-.053-.052-.082-.118-.12-.179h2.07v-.928H7.18c.038-.062.067-.127.12-.18z%22/%3E%3C/svg%3E');}.bx-im-textarea-smile-box{width:340px;height:420px;position:absolute;background:#fff}@-webkit-keyframes bx-im-textarea-send-button-show{0%{-webkit-transform:translate(50px,0);transform:translate(50px,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes bx-im-textarea-send-button-show{0%{-webkit-transform:translate(50px,0);transform:translate(50px,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes bx-im-textarea-send-button-hide{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(50px,0);transform:translate(50px,0)}}@keyframes bx-im-textarea-send-button-hide{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(50px,0);transform:translate(50px,0)}}textarea/dist/textarea.bundle.map.js000066400000022150147744174710013545 0ustar00{"version":3,"sources":["textarea.bundle.js"],"names":["exports","ui_vue","im_lib_localstorage","im_lib_utils","Vue","component","props","siteId","default","userId","dialogId","enableCommand","enableMention","desktopMode","enableEdit","enableFile","sendByEnter","autoFocus","writesEventLetter","styles","type","Object","_default","listenEventInsertText","listenEventFocus","listenEventBlur","data","placeholderMessage","currentMessage","previousMessage","commandListen","mentionListen","stylesDefault","freeze","button","backgroundColor","iconColor","created","this","event","$on","onInsertText","$root","onFocusSet","onFocusClear","localStorage","LocalStorage","textareaHistory","get","beforeDestroy","$off","clearTimeout","messageStoreTimeout","set","computed","textareaClassName","Utils","device","isMobile","buttonStyle","assign","isIconDark","isDarkColor","className","style","localize","getFilteredPhrases","$bitrixMessages","directives","bx-im-focus","inserted","element","params","value","focus","methods","insertText","text","breakline","arguments","length","undefined","position","cursor","textarea","$refs","selectionStart","selectionEnd","substring","trim","textChangeEvent","sendMessage","$emit","_this","previousSelectionStart","previousSelectionEnd","toString","setTimeout","onKeyDown","target","isMac","platform","isCtrlTEnable","isBitrixDesktop","browser","isChrome","altKey","ctrlKey","shiftKey","keyCode","document","activeElement","preventDefault","stopPropagation","metaKey","key","includes","tagStart","toLowerCase","tagEnd","selected","startsWith","endsWith","indexOf","onKeyUp","onPaste","$nextTick","onInput","onFocus","onBlur","onAppButtonClick","appId","blur","onFileClick","onFileSelect","fileInput","template","window","BX","Messenger","Lib"],"mappings":"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","file":"textarea.bundle.map.js"}textarea/lang/ua/config.php000066400000000623147744174710011710 0ustar00<?
$MESS["BX_MESSENGER_TEXTAREA_PLACEHOLDER"] = "Введіть повідомлення...";
$MESS["BX_MESSENGER_TEXTAREA_BUTTON_SEND"] = "Відправити повідомлення";
$MESS["BX_MESSENGER_TEXTAREA_FILE"] = "Відправити файл";
$MESS["BX_MESSENGER_TEXTAREA_SMILE"] = "Вибір смайлів";
$MESS["BX_MESSENGER_TEXTAREA_GIPHY"] = "Вибір GIF-картинок";
?>textarea/lang/en/config.php000066400000000454147744174710011707 0ustar00<?
$MESS["BX_MESSENGER_TEXTAREA_PLACEHOLDER"] = "Enter message...";
$MESS["BX_MESSENGER_TEXTAREA_BUTTON_SEND"] = "Send message";
$MESS["BX_MESSENGER_TEXTAREA_FILE"] = "Send file";
$MESS["BX_MESSENGER_TEXTAREA_SMILE"] = "Select emoticon";
$MESS["BX_MESSENGER_TEXTAREA_GIPHY"] = "Browse GIF images";
?>textarea/lang/ru/config.php000066400000000600147744174710011724 0ustar00<?
$MESS["BX_MESSENGER_TEXTAREA_PLACEHOLDER"] = "Введите сообщение...";
$MESS["BX_MESSENGER_TEXTAREA_BUTTON_SEND"] = "Отправить сообщение";
$MESS["BX_MESSENGER_TEXTAREA_FILE"] = "Отправить файл";
$MESS["BX_MESSENGER_TEXTAREA_SMILE"] = "Выбор смайлов";
$MESS["BX_MESSENGER_TEXTAREA_GIPHY"] = "Выбор GIF-картинок";textarea/lang/de/config.php000066400000000502147744174710011667 0ustar00<?
$MESS["BX_MESSENGER_TEXTAREA_PLACEHOLDER"] = "Nachricht schreiben...";
$MESS["BX_MESSENGER_TEXTAREA_BUTTON_SEND"] = "Nachricht senden";
$MESS["BX_MESSENGER_TEXTAREA_FILE"] = "Datei senden";
$MESS["BX_MESSENGER_TEXTAREA_SMILE"] = "Emoticon auswählen";
$MESS["BX_MESSENGER_TEXTAREA_GIPHY"] = "GIF-Bilder durchsuchen";
?>element/keyboard/config.php000066400000000451147744174710011775 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/keyboard.bundle.js',
	],
	'css' => [
		'./dist/keyboard.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.lib.utils',
		'im.lib.logger',
	],
	'skip_core' => true,
];element/keyboard/bundle.config.js000066400000000130147744174710013064 0ustar00module.exports = {
	input: './src/keyboard.js',
	output: './dist/keyboard.bundle.js',
};element/keyboard/src/keyboard.js000066400000007254147744174710012754 0ustar00/**
 * Bitrix Messenger
 * Attach element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './keyboard.css';
import {Vue} from 'ui.vue';
import {Utils} from "im.lib.utils";
import {Logger} from "im.lib.logger";

const ButtonType = Object.freeze({
	newline: 'NEWLINE',
	button: 'BUTTON'
});

Vue.component('bx-im-view-element-keyboard',
{
	/*
	 * @emits 'click' {action: string, params: Object}
	 */
	props:
	{
		buttons: {type: Array, default: () => []},
		messageId: {default: 0},
		userId: {default: 0},
		dialogId: {default: 0},
	},
	data: function()
	{
		return {
			isMobile : Utils.platform.isMobile(),
			isBlocked : false,
			localButtons : [],
		}

	},
	created()
	{
		this.localButtons = this.prepareButtons(this.buttons);
	},
	watch:
	{
		buttons()
		{
			clearTimeout(this.recoverStateButton);

			this.isBlocked = false;
			this.localButtons = this.prepareButtons(this.buttons);
		}
	},
	methods:
	{
		click(button)
		{
			if (this.isBlocked)
			{
				return false;
			}

			if (button.DISABLED && button.DISABLED === 'Y')
			{
				return false;
			}

			if (button.FUNCTION)
			{
				let execFunction = button.FUNCTION.toString()
					.replace('#MESSAGE_ID#', this.messageId)
					.replace('#DIALOG_ID#', this.dialogId)
					.replace('#USER_ID#', this.userId);
				eval(execFunction);
			}
			else if (button.APP_ID)
			{
				Logger.warn('Messenger keyboard: open app is not implemented.');
			}
			else if (button.LINK)
			{
				if (Utils.platform.isBitrixMobile())
				{
					app.openNewPage(button.LINK);
				}
				else
				{
					window.open(button.LINK, '_blank');
				}
			}
			else if (button.WAIT !== 'Y')
			{
				if (button.BLOCK === 'Y')
				{
					this.isBlocked = true;
				}

				button.WAIT = 'Y';

				this.$emit('click', {action: 'COMMAND', params: {
					dialogId: this.dialogId,
					messageId: this.messageId,
					botId: button.BOT_ID,
					command: button.COMMAND,
					params: button.COMMAND_PARAMS,
				}});

				this.recoverStateButton = setTimeout(() => {
					this.isBlocked = false;
					button.WAIT = 'N';
				}, 10000)
			}

			return true;
		},
		getStyles(button)
		{
			let styles = {};
			if (button.WIDTH)
			{
				styles['width'] = button.WIDTH+'px';
			}
			else if (button.DISPLAY === 'BLOCK')
			{
				styles['width'] = '225px';
			}
			if (button.BG_COLOR)
			{
				styles['backgroundColor'] = button.BG_COLOR;
			}
			if (button.TEXT_COLOR)
			{
				styles['color'] = button.TEXT_COLOR;
			}

			return styles;
		},

		prepareButtons(buttons)
		{
			return buttons.filter(button =>
			{
				if (!button.CONTEXT)
				{
					return true;
				}

				if (Utils.platform.isBitrixMobile() && button.CONTEXT === 'DESKTOP')
				{
					return false;
				}

				if (!Utils.platform.isBitrixMobile() && button.CONTEXT === 'MOBILE')
				{
					return false;
				}

				return true;
			});
		},
	},
	computed:
	{
		ButtonType: () => ButtonType,
	},
	template: `
		<div :class="['bx-im-element-keyboard', {'bx-im-element-keyboard-mobile': isMobile}]">
			<template v-for="(button, index) in localButtons">
				<div v-if="button.TYPE === ButtonType.newline" class="bx-im-element-keyboard-button-separator"></div>
				<span v-else-if="button.TYPE === ButtonType.button" :class="[
					'bx-im-element-keyboard-button', 
					'bx-im-element-keyboard-button-'+button.DISPLAY.toLowerCase(), 
					{
						'bx-im-element-keyboard-button-disabled': isBlocked || button.DISABLED === 'Y',
						'bx-im-element-keyboard-button-progress': button.WAIT === 'Y',
					}
				]" @click="click(button)">
					<span class="bx-im-element-keyboard-button-text bx-im-element-keyboard-button-text" :style="getStyles(button)">{{button.TEXT}}</span>
				</span>
			</template>
		</div>
	`
});element/keyboard/src/keyboard.css000066400000002401147744174710013115 0ustar00.bx-im-element-keyboard {
	display: block;
	text-align: left;
	word-break: break-all;
	margin-top: 2px;
	margin-bottom: 7px;
}
.bx-im-element-keyboard-mobile
{
	margin-bottom: 10px;
}

.bx-im-element-keyboard-button {
	display: block;
	margin-top: 5px;
	cursor: pointer;
}
.bx-im-element-keyboard-button-disabled {
	cursor: default;
}
.bx-im-element-keyboard-button-progress {
	cursor: wait;
}

.bx-im-element-keyboard-button-line {
	display: inline-block;
	margin-right: 4px;
}
.bx-im-element-keyboard-button-text {
	font: 13px/20px "Helvetica Neue", Helvetica, Arial, sans-serif;
	padding: 4px 10px;
	display: inline-block;
	text-decoration: none;
	background-color: #fff;
	border-radius: 4px;
	color: #333;
	text-align: center;
	min-width: 24px;

	transition: opacity .5s;
	opacity: 1;
	box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
}
.bx-im-element-keyboard-button-progress .bx-im-element-keyboard-button-text,
.bx-im-element-keyboard-button-disabled .bx-im-element-keyboard-button-text {
	opacity: .6;
}
.bx-im-element-keyboard-mobile .bx-im-element-keyboard-button-text {
	font-size: 15px;
	line-height: 22px;
	padding: 6px 12px;
}

.bx-im-element-keyboard-button-text:hover {
	text-decoration: none;
	color: #000;
}
.bx-im-element-keyboard-button-separator {
	display: block;
}element/keyboard/dist/keyboard.bundle.css000066400000002576147744174710014556 0ustar00.bx-im-element-keyboard {
	display: block;
	text-align: left;
	word-break: break-all;
	margin-top: 2px;
	margin-bottom: 7px;
}
.bx-im-element-keyboard-mobile
{
	margin-bottom: 10px;
}

.bx-im-element-keyboard-button {
	display: block;
	margin-top: 5px;
	cursor: pointer;
}
.bx-im-element-keyboard-button-disabled {
	cursor: default;
}
.bx-im-element-keyboard-button-progress {
	cursor: wait;
}

.bx-im-element-keyboard-button-line {
	display: inline-block;
	margin-right: 4px;
}
.bx-im-element-keyboard-button-text {
	font: 13px/20px "Helvetica Neue", Helvetica, Arial, sans-serif;
	padding: 4px 10px;
	display: inline-block;
	text-decoration: none;
	background-color: #fff;
	border-radius: 4px;
	color: #333;
	text-align: center;
	min-width: 24px;

	-webkit-transition: opacity .5s;

	-o-transition: opacity .5s;

	transition: opacity .5s;
	opacity: 1;
	-webkit-box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	        box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
}
.bx-im-element-keyboard-button-progress .bx-im-element-keyboard-button-text,
.bx-im-element-keyboard-button-disabled .bx-im-element-keyboard-button-text {
	opacity: .6;
}
.bx-im-element-keyboard-mobile .bx-im-element-keyboard-button-text {
	font-size: 15px;
	line-height: 22px;
	padding: 6px 12px;
}

.bx-im-element-keyboard-button-text:hover {
	text-decoration: none;
	color: #000;
}
.bx-im-element-keyboard-button-separator {
	display: block;
}element/keyboard/dist/keyboard.bundle.js000066400000011023147744174710014365 0ustar00(function (exports,ui_vue,im_lib_utils,im_lib_logger) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Attach element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */

	var _ButtonType = Object.freeze({
	  newline: 'NEWLINE',
	  button: 'BUTTON'
	});

	ui_vue.Vue.component('bx-im-view-element-keyboard', {
	  /*
	   * @emits 'click' {action: string, params: Object}
	   */
	  props: {
	    buttons: {
	      type: Array,
	      default: function _default() {
	        return [];
	      }
	    },
	    messageId: {
	      default: 0
	    },
	    userId: {
	      default: 0
	    },
	    dialogId: {
	      default: 0
	    }
	  },
	  data: function data() {
	    return {
	      isMobile: im_lib_utils.Utils.platform.isMobile(),
	      isBlocked: false,
	      localButtons: []
	    };
	  },
	  created: function created() {
	    this.localButtons = this.prepareButtons(this.buttons);
	  },
	  watch: {
	    buttons: function buttons() {
	      clearTimeout(this.recoverStateButton);
	      this.isBlocked = false;
	      this.localButtons = this.prepareButtons(this.buttons);
	    }
	  },
	  methods: {
	    click: function click(button) {
	      var _this = this;

	      if (this.isBlocked) {
	        return false;
	      }

	      if (button.DISABLED && button.DISABLED === 'Y') {
	        return false;
	      }

	      if (button.FUNCTION) {
	        var execFunction = button.FUNCTION.toString().replace('#MESSAGE_ID#', this.messageId).replace('#DIALOG_ID#', this.dialogId).replace('#USER_ID#', this.userId);
	        eval(execFunction);
	      } else if (button.APP_ID) {
	        im_lib_logger.Logger.warn('Messenger keyboard: open app is not implemented.');
	      } else if (button.LINK) {
	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          app.openNewPage(button.LINK);
	        } else {
	          window.open(button.LINK, '_blank');
	        }
	      } else if (button.WAIT !== 'Y') {
	        if (button.BLOCK === 'Y') {
	          this.isBlocked = true;
	        }

	        button.WAIT = 'Y';
	        this.$emit('click', {
	          action: 'COMMAND',
	          params: {
	            dialogId: this.dialogId,
	            messageId: this.messageId,
	            botId: button.BOT_ID,
	            command: button.COMMAND,
	            params: button.COMMAND_PARAMS
	          }
	        });
	        this.recoverStateButton = setTimeout(function () {
	          _this.isBlocked = false;
	          button.WAIT = 'N';
	        }, 10000);
	      }

	      return true;
	    },
	    getStyles: function getStyles(button) {
	      var styles = {};

	      if (button.WIDTH) {
	        styles['width'] = button.WIDTH + 'px';
	      } else if (button.DISPLAY === 'BLOCK') {
	        styles['width'] = '225px';
	      }

	      if (button.BG_COLOR) {
	        styles['backgroundColor'] = button.BG_COLOR;
	      }

	      if (button.TEXT_COLOR) {
	        styles['color'] = button.TEXT_COLOR;
	      }

	      return styles;
	    },
	    prepareButtons: function prepareButtons(buttons) {
	      return buttons.filter(function (button) {
	        if (!button.CONTEXT) {
	          return true;
	        }

	        if (im_lib_utils.Utils.platform.isBitrixMobile() && button.CONTEXT === 'DESKTOP') {
	          return false;
	        }

	        if (!im_lib_utils.Utils.platform.isBitrixMobile() && button.CONTEXT === 'MOBILE') {
	          return false;
	        }

	        return true;
	      });
	    }
	  },
	  computed: {
	    ButtonType: function ButtonType() {
	      return _ButtonType;
	    }
	  },
	  template: "\n\t\t<div :class=\"['bx-im-element-keyboard', {'bx-im-element-keyboard-mobile': isMobile}]\">\n\t\t\t<template v-for=\"(button, index) in localButtons\">\n\t\t\t\t<div v-if=\"button.TYPE === ButtonType.newline\" class=\"bx-im-element-keyboard-button-separator\"></div>\n\t\t\t\t<span v-else-if=\"button.TYPE === ButtonType.button\" :class=\"[\n\t\t\t\t\t'bx-im-element-keyboard-button', \n\t\t\t\t\t'bx-im-element-keyboard-button-'+button.DISPLAY.toLowerCase(), \n\t\t\t\t\t{\n\t\t\t\t\t\t'bx-im-element-keyboard-button-disabled': isBlocked || button.DISABLED === 'Y',\n\t\t\t\t\t\t'bx-im-element-keyboard-button-progress': button.WAIT === 'Y',\n\t\t\t\t\t}\n\t\t\t\t]\" @click=\"click(button)\">\n\t\t\t\t\t<span class=\"bx-im-element-keyboard-button-text bx-im-element-keyboard-button-text\" :style=\"getStyles(button)\">{{button.TEXT}}</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),BX,BX.Messenger.Lib,BX.Messenger.Lib));
//# sourceMappingURL=keyboard.bundle.js.map
element/keyboard/dist/keyboard.bundle.map.js000066400000005224147744174710015147 0ustar00{"version":3,"sources":["keyboard.bundle.js"],"names":["exports","ui_vue","im_lib_utils","im_lib_logger","_ButtonType","Object","freeze","newline","button","Vue","component","props","buttons","type","Array","default","_default","messageId","userId","dialogId","data","isMobile","Utils","platform","isBlocked","localButtons","created","this","prepareButtons","watch","clearTimeout","recoverStateButton","methods","click","_this","DISABLED","FUNCTION","execFunction","toString","replace","eval","APP_ID","Logger","warn","LINK","isBitrixMobile","app","openNewPage","window","open","WAIT","BLOCK","$emit","action","params","botId","BOT_ID","command","COMMAND","COMMAND_PARAMS","setTimeout","getStyles","styles","WIDTH","DISPLAY","BG_COLOR","TEXT_COLOR","filter","CONTEXT","computed","ButtonType","template","BX","Messenger","Lib"],"mappings":"CAAC,SAAUA,QAAQC,OAAOC,aAAaC,eACtC,aAWA,IAAIC,YAAcC,OAAOC,QACvBC,QAAS,UACTC,OAAQ,WAGVP,OAAOQ,IAAIC,UAAU,+BAInBC,OACEC,SACEC,KAAMC,MACNC,QAAS,SAASC,IAChB,WAGJC,WACEF,QAAS,GAEXG,QACEH,QAAS,GAEXI,UACEJ,QAAS,IAGbK,KAAM,SAASA,IACb,OACEC,SAAUnB,aAAaoB,MAAMC,SAASF,WACtCG,UAAW,MACXC,kBAGJC,QAAS,SAASA,IAChBC,KAAKF,aAAeE,KAAKC,eAAeD,KAAKf,UAE/CiB,OACEjB,QAAS,SAASA,IAChBkB,aAAaH,KAAKI,oBAClBJ,KAAKH,UAAY,MACjBG,KAAKF,aAAeE,KAAKC,eAAeD,KAAKf,WAGjDoB,SACEC,MAAO,SAASA,MAAMzB,QACpB,IAAI0B,MAAQP,KAEZ,GAAIA,KAAKH,UAAW,CAClB,OAAO,MAGT,GAAIhB,OAAO2B,UAAY3B,OAAO2B,WAAa,IAAK,CAC9C,OAAO,MAGT,GAAI3B,OAAO4B,SAAU,CACnB,IAAIC,aAAe7B,OAAO4B,SAASE,WAAWC,QAAQ,eAAgBZ,KAAKV,WAAWsB,QAAQ,cAAeZ,KAAKR,UAAUoB,QAAQ,YAAaZ,KAAKT,QACtJsB,KAAKH,mBACA,GAAI7B,OAAOiC,OAAQ,CACxBtC,cAAcuC,OAAOC,KAAK,yDACrB,GAAInC,OAAOoC,KAAM,CACtB,GAAI1C,aAAaoB,MAAMC,SAASsB,iBAAkB,CAChDC,IAAIC,YAAYvC,OAAOoC,UAClB,CACLI,OAAOC,KAAKzC,OAAOoC,KAAM,gBAEtB,GAAIpC,OAAO0C,OAAS,IAAK,CAC9B,GAAI1C,OAAO2C,QAAU,IAAK,CACxBxB,KAAKH,UAAY,KAGnBhB,OAAO0C,KAAO,IACdvB,KAAKyB,MAAM,SACTC,OAAQ,UACRC,QACEnC,SAAUQ,KAAKR,SACfF,UAAWU,KAAKV,UAChBsC,MAAO/C,OAAOgD,OACdC,QAASjD,OAAOkD,QAChBJ,OAAQ9C,OAAOmD,kBAGnBhC,KAAKI,mBAAqB6B,WAAW,WACnC1B,MAAMV,UAAY,MAClBhB,OAAO0C,KAAO,KACb,KAGL,OAAO,MAETW,UAAW,SAASA,EAAUrD,GAC5B,IAAIsD,KAEJ,GAAItD,EAAOuD,MAAO,CAChBD,EAAO,SAAWtD,EAAOuD,MAAQ,UAC5B,GAAIvD,EAAOwD,UAAY,QAAS,CACrCF,EAAO,SAAW,QAGpB,GAAItD,EAAOyD,SAAU,CACnBH,EAAO,mBAAqBtD,EAAOyD,SAGrC,GAAIzD,EAAO0D,WAAY,CACrBJ,EAAO,SAAWtD,EAAO0D,WAG3B,OAAOJ,GAETlC,eAAgB,SAASA,EAAehB,GACtC,OAAOA,EAAQuD,OAAO,SAAU3D,GAC9B,IAAKA,EAAO4D,QAAS,CACnB,OAAO,KAGT,GAAIlE,aAAaoB,MAAMC,SAASsB,kBAAoBrC,EAAO4D,UAAY,UAAW,CAChF,OAAO,MAGT,IAAKlE,aAAaoB,MAAMC,SAASsB,kBAAoBrC,EAAO4D,UAAY,SAAU,CAChF,OAAO,MAGT,OAAO,SAIbC,UACEC,WAAY,SAASA,IACnB,OAAOlE,cAGXmE,SAAU,s4BAhJb,CAmJG5C,KAAKqB,OAASrB,KAAKqB,WAAcwB,GAAGA,GAAGC,UAAUC,IAAIF,GAAGC,UAAUC","file":"keyboard.bundle.map.js"}element/keyboard/dist/keyboard.bundle.min.js000066400000006061147744174710015155 0ustar00(function(exports,ui_vue,im_lib_utils,im_lib_logger){"use strict";var _ButtonType=Object.freeze({newline:"NEWLINE",button:"BUTTON"});ui_vue.Vue.component("bx-im-view-element-keyboard",{props:{buttons:{type:Array,default:function t(){return[]}},messageId:{default:0},userId:{default:0},dialogId:{default:0}},data:function t(){return{isMobile:im_lib_utils.Utils.platform.isMobile(),isBlocked:false,localButtons:[]}},created:function t(){this.localButtons=this.prepareButtons(this.buttons)},watch:{buttons:function t(){clearTimeout(this.recoverStateButton);this.isBlocked=false;this.localButtons=this.prepareButtons(this.buttons)}},methods:{click:function click(button){var _this=this;if(this.isBlocked){return false}if(button.DISABLED&&button.DISABLED==="Y"){return false}if(button.FUNCTION){var execFunction=button.FUNCTION.toString().replace("#MESSAGE_ID#",this.messageId).replace("#DIALOG_ID#",this.dialogId).replace("#USER_ID#",this.userId);eval(execFunction)}else if(button.APP_ID){im_lib_logger.Logger.warn("Messenger keyboard: open app is not implemented.")}else if(button.LINK){if(im_lib_utils.Utils.platform.isBitrixMobile()){app.openNewPage(button.LINK)}else{window.open(button.LINK,"_blank")}}else if(button.WAIT!=="Y"){if(button.BLOCK==="Y"){this.isBlocked=true}button.WAIT="Y";this.$emit("click",{action:"COMMAND",params:{dialogId:this.dialogId,messageId:this.messageId,botId:button.BOT_ID,command:button.COMMAND,params:button.COMMAND_PARAMS}});this.recoverStateButton=setTimeout(function(){_this.isBlocked=false;button.WAIT="N"},1e4)}return true},getStyles:function t(e){var i={};if(e.WIDTH){i["width"]=e.WIDTH+"px"}else if(e.DISPLAY==="BLOCK"){i["width"]="225px"}if(e.BG_COLOR){i["backgroundColor"]=e.BG_COLOR}if(e.TEXT_COLOR){i["color"]=e.TEXT_COLOR}return i},prepareButtons:function t(e){return e.filter(function(t){if(!t.CONTEXT){return true}if(im_lib_utils.Utils.platform.isBitrixMobile()&&t.CONTEXT==="DESKTOP"){return false}if(!im_lib_utils.Utils.platform.isBitrixMobile()&&t.CONTEXT==="MOBILE"){return false}return true})}},computed:{ButtonType:function t(){return _ButtonType}},template:'\n\t\t<div :class="[\'bx-im-element-keyboard\', {\'bx-im-element-keyboard-mobile\': isMobile}]">\n\t\t\t<template v-for="(button, index) in localButtons">\n\t\t\t\t<div v-if="button.TYPE === ButtonType.newline" class="bx-im-element-keyboard-button-separator"></div>\n\t\t\t\t<span v-else-if="button.TYPE === ButtonType.button" :class="[\n\t\t\t\t\t\'bx-im-element-keyboard-button\', \n\t\t\t\t\t\'bx-im-element-keyboard-button-\'+button.DISPLAY.toLowerCase(), \n\t\t\t\t\t{\n\t\t\t\t\t\t\'bx-im-element-keyboard-button-disabled\': isBlocked || button.DISABLED === \'Y\',\n\t\t\t\t\t\t\'bx-im-element-keyboard-button-progress\': button.WAIT === \'Y\',\n\t\t\t\t\t}\n\t\t\t\t]" @click="click(button)">\n\t\t\t\t\t<span class="bx-im-element-keyboard-button-text bx-im-element-keyboard-button-text" :style="getStyles(button)">{{button.TEXT}}</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</div>\n\t'})})(this.window=this.window||{},BX,BX.Messenger.Lib,BX.Messenger.Lib);
//# sourceMappingURL=keyboard.bundle.map.jselement/keyboard/dist/keyboard.bundle.min.css000066400000002322147744174710015325 0ustar00.bx-im-element-keyboard{display:block;text-align:left;word-break:break-all;margin-top:2px;margin-bottom:7px}.bx-im-element-keyboard-mobile{margin-bottom:10px}.bx-im-element-keyboard-button{display:block;margin-top:5px;cursor:pointer}.bx-im-element-keyboard-button-disabled{cursor:default}.bx-im-element-keyboard-button-progress{cursor:wait}.bx-im-element-keyboard-button-line{display:inline-block;margin-right:4px}.bx-im-element-keyboard-button-text{font:13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;padding:4px 10px;display:inline-block;text-decoration:none;background-color:#fff;border-radius:4px;color:#333;text-align:center;min-width:24px;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s;opacity:1;-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,0.15);box-shadow:0 1px 0 0 rgba(0,0,0,0.15)}.bx-im-element-keyboard-button-progress .bx-im-element-keyboard-button-text,.bx-im-element-keyboard-button-disabled .bx-im-element-keyboard-button-text{opacity:.6}.bx-im-element-keyboard-mobile .bx-im-element-keyboard-button-text{font-size:15px;line-height:22px;padding:6px 12px}.bx-im-element-keyboard-button-text:hover{text-decoration:none;color:#000}.bx-im-element-keyboard-button-separator{display:block}element/keyboard/dist/keyboard.bundle.js.map000066400000020577147744174710015157 0ustar00{"version":3,"file":"keyboard.bundle.js","sources":["../src/keyboard.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Attach element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './keyboard.css';\nimport {Vue} from 'ui.vue';\nimport {Utils} from \"im.lib.utils\";\nimport {Logger} from \"im.lib.logger\";\n\nconst ButtonType = Object.freeze({\n\tnewline: 'NEWLINE',\n\tbutton: 'BUTTON'\n});\n\nVue.component('bx-im-view-element-keyboard',\n{\n\t/*\n\t * @emits 'click' {action: string, params: Object}\n\t */\n\tprops:\n\t{\n\t\tbuttons: {type: Array, default: () => []},\n\t\tmessageId: {default: 0},\n\t\tuserId: {default: 0},\n\t\tdialogId: {default: 0},\n\t},\n\tdata: function()\n\t{\n\t\treturn {\n\t\t\tisMobile : Utils.platform.isMobile(),\n\t\t\tisBlocked : false,\n\t\t\tlocalButtons : [],\n\t\t}\n\n\t},\n\tcreated()\n\t{\n\t\tthis.localButtons = this.prepareButtons(this.buttons);\n\t},\n\twatch:\n\t{\n\t\tbuttons()\n\t\t{\n\t\t\tclearTimeout(this.recoverStateButton);\n\n\t\t\tthis.isBlocked = false;\n\t\t\tthis.localButtons = this.prepareButtons(this.buttons);\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tclick(button)\n\t\t{\n\t\t\tif (this.isBlocked)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (button.DISABLED && button.DISABLED === 'Y')\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (button.FUNCTION)\n\t\t\t{\n\t\t\t\tlet execFunction = button.FUNCTION.toString()\n\t\t\t\t\t.replace('#MESSAGE_ID#', this.messageId)\n\t\t\t\t\t.replace('#DIALOG_ID#', this.dialogId)\n\t\t\t\t\t.replace('#USER_ID#', this.userId);\n\t\t\t\teval(execFunction);\n\t\t\t}\n\t\t\telse if (button.APP_ID)\n\t\t\t{\n\t\t\t\tLogger.warn('Messenger keyboard: open app is not implemented.');\n\t\t\t}\n\t\t\telse if (button.LINK)\n\t\t\t{\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\tapp.openNewPage(button.LINK);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(button.LINK, '_blank');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (button.WAIT !== 'Y')\n\t\t\t{\n\t\t\t\tif (button.BLOCK === 'Y')\n\t\t\t\t{\n\t\t\t\t\tthis.isBlocked = true;\n\t\t\t\t}\n\n\t\t\t\tbutton.WAIT = 'Y';\n\n\t\t\t\tthis.$emit('click', {action: 'COMMAND', params: {\n\t\t\t\t\tdialogId: this.dialogId,\n\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t\tbotId: button.BOT_ID,\n\t\t\t\t\tcommand: button.COMMAND,\n\t\t\t\t\tparams: button.COMMAND_PARAMS,\n\t\t\t\t}});\n\n\t\t\t\tthis.recoverStateButton = setTimeout(() => {\n\t\t\t\t\tthis.isBlocked = false;\n\t\t\t\t\tbutton.WAIT = 'N';\n\t\t\t\t}, 10000)\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tgetStyles(button)\n\t\t{\n\t\t\tlet styles = {};\n\t\t\tif (button.WIDTH)\n\t\t\t{\n\t\t\t\tstyles['width'] = button.WIDTH+'px';\n\t\t\t}\n\t\t\telse if (button.DISPLAY === 'BLOCK')\n\t\t\t{\n\t\t\t\tstyles['width'] = '225px';\n\t\t\t}\n\t\t\tif (button.BG_COLOR)\n\t\t\t{\n\t\t\t\tstyles['backgroundColor'] = button.BG_COLOR;\n\t\t\t}\n\t\t\tif (button.TEXT_COLOR)\n\t\t\t{\n\t\t\t\tstyles['color'] = button.TEXT_COLOR;\n\t\t\t}\n\n\t\t\treturn styles;\n\t\t},\n\n\t\tprepareButtons(buttons)\n\t\t{\n\t\t\treturn buttons.filter(button =>\n\t\t\t{\n\t\t\t\tif (!button.CONTEXT)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (Utils.platform.isBitrixMobile() && button.CONTEXT === 'DESKTOP')\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!Utils.platform.isBitrixMobile() && button.CONTEXT === 'MOBILE')\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tButtonType: () => ButtonType,\n\t},\n\ttemplate: `\n\t\t<div :class=\"['bx-im-element-keyboard', {'bx-im-element-keyboard-mobile': isMobile}]\">\n\t\t\t<template v-for=\"(button, index) in localButtons\">\n\t\t\t\t<div v-if=\"button.TYPE === ButtonType.newline\" class=\"bx-im-element-keyboard-button-separator\"></div>\n\t\t\t\t<span v-else-if=\"button.TYPE === ButtonType.button\" :class=\"[\n\t\t\t\t\t'bx-im-element-keyboard-button', \n\t\t\t\t\t'bx-im-element-keyboard-button-'+button.DISPLAY.toLowerCase(), \n\t\t\t\t\t{\n\t\t\t\t\t\t'bx-im-element-keyboard-button-disabled': isBlocked || button.DISABLED === 'Y',\n\t\t\t\t\t\t'bx-im-element-keyboard-button-progress': button.WAIT === 'Y',\n\t\t\t\t\t}\n\t\t\t\t]\" @click=\"click(button)\">\n\t\t\t\t\t<span class=\"bx-im-element-keyboard-button-text bx-im-element-keyboard-button-text\" :style=\"getStyles(button)\">{{button.TEXT}}</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</div>\n\t`\n});"],"names":["ButtonType","Object","freeze","newline","button","Vue","component","props","buttons","type","Array","default","messageId","userId","dialogId","data","isMobile","Utils","platform","isBlocked","localButtons","created","prepareButtons","watch","clearTimeout","recoverStateButton","methods","click","DISABLED","FUNCTION","execFunction","toString","replace","eval","APP_ID","Logger","warn","LINK","isBitrixMobile","app","openNewPage","window","open","WAIT","BLOCK","$emit","action","params","botId","BOT_ID","command","COMMAND","COMMAND_PARAMS","setTimeout","getStyles","styles","WIDTH","DISPLAY","BG_COLOR","TEXT_COLOR","filter","CONTEXT","computed","template"],"mappings":"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"}element/chatteaser/config.php000066400000000432147744174710012317 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/chatteaser.bundle.js',
	],
	'css' => [
		'./dist/chatteaser.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.lib.utils',
	],
	'skip_core' => true,
];element/chatteaser/bundle.config.js000066400000000134147744174710013413 0ustar00module.exports = {
	input: './src/chatteaser.js',
	output: './dist/chatteaser.bundle.js',
};element/chatteaser/src/chatteaser.css000066400000001421147744174710013764 0ustar00.bx-im-element-chat-teaser {
	display: block;
	text-align: left;
	word-break: break-all;
	margin-top: 2px;
	margin-bottom: 7px;
	margin-left: 5px;
	margin-right: 5px;
}
.bx-im-message-type-system .bx-im-element-chat-teaser {
	margin-left: 15px;
}

.bx-im-element-chat-teaser-join {
	font: 13px/20px "Helvetica Neue", Helvetica, Arial, sans-serif;
	padding: 4px 10px;
	display: inline-block;
	text-decoration: none;
	background-color: #fff;
	border-radius: 4px;
	color: #333;
	text-align: center;
	min-width: 24px;
	transition: opacity .5s;
	opacity: 1;
	box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	cursor: pointer;
}

.bx-im-element-chat-teaser-comment {
	font-size: 13px;
	margin-left: 10px;
}

.bx-im-element-chat-teaser-counter {
	border-bottom: 1px dashed #000;
	cursor: pointer;
}element/chatteaser/src/chatteaser.js000066400000002264147744174710013616 0ustar00/**
 * Bitrix Messenger
 * ChatTeaser element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './chatteaser.css';
import {Vue} from 'ui.vue';
import {Utils} from "im.lib.utils";

Vue.component('bx-im-view-element-chat-teaser',
{
	/*
	 * @emits 'click' {}
	 */
	props:
	{
		messageCounter: {default: 0},
		messageLastDate: {default: 0},
		languageId: {default: 'en'},
	},
	computed:
	{
		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_COMMENT_', this.$root.$bitrixMessages);
		},
		formattedDate()
		{
			return Utils.date.format(this.messageLastDate, null, this.$root.$bitrixMessages);
		},
		formattedCounter()
		{
			return this.messageCounter+' '+Utils.text.getLocalizeForNumber('IM_MESSENGER_COMMENT', this.messageCounter, this.languageId, this.$root.$bitrixMessages);
		},
	},
	template: `
		<div class="bx-im-element-chat-teaser" @click="$emit('click', $event)">
			<span class="bx-im-element-chat-teaser-join">{{localize.IM_MESSENGER_COMMENT_OPEN}}</span>
			<span class="bx-im-element-chat-teaser-comment">
				<span class="bx-im-element-chat-teaser-counter">{{formattedCounter}}</span>, {{formattedDate}}
			</span>
		</div>
	`
});element/chatteaser/dist/chatteaser.bundle.js000066400000002762147744174710015245 0ustar00(function (exports,ui_vue,im_lib_utils) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * ChatTeaser element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-im-view-element-chat-teaser', {
	  /*
	   * @emits 'click' {}
	   */
	  props: {
	    messageCounter: {
	      default: 0
	    },
	    messageLastDate: {
	      default: 0
	    },
	    languageId: {
	      default: 'en'
	    }
	  },
	  computed: {
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_COMMENT_', this.$root.$bitrixMessages);
	    },
	    formattedDate: function formattedDate() {
	      return im_lib_utils.Utils.date.format(this.messageLastDate, null, this.$root.$bitrixMessages);
	    },
	    formattedCounter: function formattedCounter() {
	      return this.messageCounter + ' ' + im_lib_utils.Utils.text.getLocalizeForNumber('IM_MESSENGER_COMMENT', this.messageCounter, this.languageId, this.$root.$bitrixMessages);
	    }
	  },
	  template: "\n\t\t<div class=\"bx-im-element-chat-teaser\" @click=\"$emit('click', $event)\">\n\t\t\t<span class=\"bx-im-element-chat-teaser-join\">{{localize.IM_MESSENGER_COMMENT_OPEN}}</span>\n\t\t\t<span class=\"bx-im-element-chat-teaser-comment\">\n\t\t\t\t<span class=\"bx-im-element-chat-teaser-counter\">{{formattedCounter}}</span>, {{formattedDate}}\n\t\t\t</span>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),BX,BX.Messenger.Lib));
//# sourceMappingURL=chatteaser.bundle.js.map
element/chatteaser/dist/chatteaser.bundle.min.js000066400000002042147744174710016016 0ustar00(function(t,e,s){"use strict";e.Vue.component("bx-im-view-element-chat-teaser",{props:{messageCounter:{default:0},messageLastDate:{default:0},languageId:{default:"en"}},computed:{localize:function t(){return e.Vue.getFilteredPhrases("IM_MESSENGER_COMMENT_",this.$root.$bitrixMessages)},formattedDate:function t(){return s.Utils.date.format(this.messageLastDate,null,this.$root.$bitrixMessages)},formattedCounter:function t(){return this.messageCounter+" "+s.Utils.text.getLocalizeForNumber("IM_MESSENGER_COMMENT",this.messageCounter,this.languageId,this.$root.$bitrixMessages)}},template:'\n\t\t<div class="bx-im-element-chat-teaser" @click="$emit(\'click\', $event)">\n\t\t\t<span class="bx-im-element-chat-teaser-join">{{localize.IM_MESSENGER_COMMENT_OPEN}}</span>\n\t\t\t<span class="bx-im-element-chat-teaser-comment">\n\t\t\t\t<span class="bx-im-element-chat-teaser-counter">{{formattedCounter}}</span>, {{formattedDate}}\n\t\t\t</span>\n\t\t</div>\n\t'})})(this.window=this.window||{},BX,BX.Messenger.Lib);
//# sourceMappingURL=chatteaser.bundle.map.jselement/chatteaser/dist/chatteaser.bundle.min.css000066400000001421147744174710016172 0ustar00.bx-im-element-chat-teaser{display:block;text-align:left;word-break:break-all;margin-top:2px;margin-bottom:7px;margin-left:5px;margin-right:5px}.bx-im-message-type-system .bx-im-element-chat-teaser{margin-left:15px}.bx-im-element-chat-teaser-join{font:13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;padding:4px 10px;display:inline-block;text-decoration:none;background-color:#fff;border-radius:4px;color:#333;text-align:center;min-width:24px;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s;opacity:1;-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,0.15);box-shadow:0 1px 0 0 rgba(0,0,0,0.15);cursor:pointer}.bx-im-element-chat-teaser-comment{font-size:13px;margin-left:10px}.bx-im-element-chat-teaser-counter{border-bottom:1px dashed #000;cursor:pointer}element/chatteaser/dist/chatteaser.bundle.map.js000066400000001576147744174710016023 0ustar00{"version":3,"sources":["chatteaser.bundle.js"],"names":["exports","ui_vue","im_lib_utils","Vue","component","props","messageCounter","default","messageLastDate","languageId","computed","localize","getFilteredPhrases","this","$root","$bitrixMessages","formattedDate","Utils","date","format","formattedCounter","text","getLocalizeForNumber","template","window","BX","Messenger","Lib"],"mappings":"CAAC,SAAUA,EAAQC,EAAOC,GACzB,aAUAD,EAAOE,IAAIC,UAAU,kCAInBC,OACEC,gBACEC,QAAS,GAEXC,iBACED,QAAS,GAEXE,YACEF,QAAS,OAGbG,UACEC,SAAU,SAASA,IACjB,OAAOV,EAAOE,IAAIS,mBAAmB,wBAAyBC,KAAKC,MAAMC,kBAE3EC,cAAe,SAASA,IACtB,OAAOd,EAAae,MAAMC,KAAKC,OAAON,KAAKL,gBAAiB,KAAMK,KAAKC,MAAMC,kBAE/EK,iBAAkB,SAASA,IACzB,OAAOP,KAAKP,eAAiB,IAAMJ,EAAae,MAAMI,KAAKC,qBAAqB,uBAAwBT,KAAKP,eAAgBO,KAAKJ,WAAYI,KAAKC,MAAMC,mBAG7JQ,SAAU,sXArCb,CAwCGV,KAAKW,OAASX,KAAKW,WAAcC,GAAGA,GAAGC,UAAUC","file":"chatteaser.bundle.map.js"}element/chatteaser/dist/chatteaser.bundle.css000066400000001614147744174710015414 0ustar00.bx-im-element-chat-teaser {
	display: block;
	text-align: left;
	word-break: break-all;
	margin-top: 2px;
	margin-bottom: 7px;
	margin-left: 5px;
	margin-right: 5px;
}
.bx-im-message-type-system .bx-im-element-chat-teaser {
	margin-left: 15px;
}

.bx-im-element-chat-teaser-join {
	font: 13px/20px "Helvetica Neue", Helvetica, Arial, sans-serif;
	padding: 4px 10px;
	display: inline-block;
	text-decoration: none;
	background-color: #fff;
	border-radius: 4px;
	color: #333;
	text-align: center;
	min-width: 24px;
	-webkit-transition: opacity .5s;
	-o-transition: opacity .5s;
	transition: opacity .5s;
	opacity: 1;
	-webkit-box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	        box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	cursor: pointer;
}

.bx-im-element-chat-teaser-comment {
	font-size: 13px;
	margin-left: 10px;
}

.bx-im-element-chat-teaser-counter {
	border-bottom: 1px dashed #000;
	cursor: pointer;
}element/chatteaser/dist/chatteaser.bundle.js.map000066400000004617147744174710016022 0ustar00{"version":3,"file":"chatteaser.bundle.js","sources":["../src/chatteaser.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * ChatTeaser element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './chatteaser.css';\nimport {Vue} from 'ui.vue';\nimport {Utils} from \"im.lib.utils\";\n\nVue.component('bx-im-view-element-chat-teaser',\n{\n\t/*\n\t * @emits 'click' {}\n\t */\n\tprops:\n\t{\n\t\tmessageCounter: {default: 0},\n\t\tmessageLastDate: {default: 0},\n\t\tlanguageId: {default: 'en'},\n\t},\n\tcomputed:\n\t{\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_COMMENT_', this.$root.$bitrixMessages);\n\t\t},\n\t\tformattedDate()\n\t\t{\n\t\t\treturn Utils.date.format(this.messageLastDate, null, this.$root.$bitrixMessages);\n\t\t},\n\t\tformattedCounter()\n\t\t{\n\t\t\treturn this.messageCounter+' '+Utils.text.getLocalizeForNumber('IM_MESSENGER_COMMENT', this.messageCounter, this.languageId, this.$root.$bitrixMessages);\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-im-element-chat-teaser\" @click=\"$emit('click', $event)\">\n\t\t\t<span class=\"bx-im-element-chat-teaser-join\">{{localize.IM_MESSENGER_COMMENT_OPEN}}</span>\n\t\t\t<span class=\"bx-im-element-chat-teaser-comment\">\n\t\t\t\t<span class=\"bx-im-element-chat-teaser-counter\">{{formattedCounter}}</span>, {{formattedDate}}\n\t\t\t</span>\n\t\t</div>\n\t`\n});"],"names":["Vue","component","props","messageCounter","default","messageLastDate","languageId","computed","localize","getFilteredPhrases","$root","$bitrixMessages","formattedDate","Utils","date","format","formattedCounter","text","getLocalizeForNumber","template"],"mappings":";;;CAAA;;;;;;;;AASA,AAIAA,WAAG,CAACC,SAAJ,CAAc,gCAAd,EACA;CACC;;;CAGAC,EAAAA,KAAK,EACL;CACCC,IAAAA,cAAc,EAAE;CAACC,MAAAA,OAAO,EAAE;CAAV,KADjB;CAECC,IAAAA,eAAe,EAAE;CAACD,MAAAA,OAAO,EAAE;CAAV,KAFlB;CAGCE,IAAAA,UAAU,EAAE;CAACF,MAAAA,OAAO,EAAE;CAAV;CAHb,GALD;CAUCG,EAAAA,QAAQ,EACR;CACCC,IAAAA,QADD,sBAEC;CACC,aAAOR,UAAG,CAACS,kBAAJ,CAAuB,uBAAvB,EAAgD,KAAKC,KAAL,CAAWC,eAA3D,CAAP;CACA,KAJF;CAKCC,IAAAA,aALD,2BAMC;CACC,aAAOC,kBAAK,CAACC,IAAN,CAAWC,MAAX,CAAkB,KAAKV,eAAvB,EAAwC,IAAxC,EAA8C,KAAKK,KAAL,CAAWC,eAAzD,CAAP;CACA,KARF;CASCK,IAAAA,gBATD,8BAUC;CACC,aAAO,KAAKb,cAAL,GAAoB,GAApB,GAAwBU,kBAAK,CAACI,IAAN,CAAWC,oBAAX,CAAgC,sBAAhC,EAAwD,KAAKf,cAA7D,EAA6E,KAAKG,UAAlF,EAA8F,KAAKI,KAAL,CAAWC,eAAzG,CAA/B;CACA;CAZF,GAXD;CAyBCQ,EAAAA,QAAQ;CAzBT,CADA;;;;"}element/chatteaser/lang/ua/config.php000066400000000503147744174710013644 0ustar00<?
$MESS["IM_MESSENGER_COMMENT_PLURAL_0"] = "коментар";
$MESS["IM_MESSENGER_COMMENT_PLURAL_1"] = "коментаря";
$MESS["IM_MESSENGER_COMMENT_PLURAL_2"] = "коментарів";
$MESS["IM_MESSENGER_COMMENT_ZERO"] = "Немає коментарів";
$MESS["IM_MESSENGER_COMMENT_OPEN"] = "Відкрити";
?>element/chatteaser/lang/en/config.php000066400000000404147744174710013641 0ustar00<?
$MESS["IM_MESSENGER_COMMENT_PLURAL_0"] = "comment";
$MESS["IM_MESSENGER_COMMENT_PLURAL_1"] = "comments";
$MESS["IM_MESSENGER_COMMENT_PLURAL_2"] = "comments";
$MESS["IM_MESSENGER_COMMENT_ZERO"] = "No comments";
$MESS["IM_MESSENGER_COMMENT_OPEN"] = "Open";
?>element/chatteaser/lang/ru/config.php000066400000000517147744174710013672 0ustar00<?
$MESS["IM_MESSENGER_COMMENT_PLURAL_0"] = "комментарий";
$MESS["IM_MESSENGER_COMMENT_PLURAL_1"] = "комментария";
$MESS["IM_MESSENGER_COMMENT_PLURAL_2"] = "комментариев";
$MESS["IM_MESSENGER_COMMENT_ZERO"] = "Нет комментариев";
$MESS["IM_MESSENGER_COMMENT_OPEN"] = "Открыть";
?>element/chatteaser/lang/de/config.php000066400000000422147744174710013627 0ustar00<?
$MESS["IM_MESSENGER_COMMENT_PLURAL_0"] = "Kommentar";
$MESS["IM_MESSENGER_COMMENT_PLURAL_1"] = "Kommentare";
$MESS["IM_MESSENGER_COMMENT_PLURAL_2"] = "Kommentare";
$MESS["IM_MESSENGER_COMMENT_ZERO"] = "Keine Kommentare";
$MESS["IM_MESSENGER_COMMENT_OPEN"] = "Öffnen";
?>element/attach/config.php000066400000000440147744174710011437 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/attach.bundle.js',
	],
	'css' => [
		'./dist/attach.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'im.model',
		'im.lib.utils',
		'ui.vue',
	],
	'skip_core' => true,
];element/attach/bundle.config.js000066400000000124147744174710012533 0ustar00module.exports = {
	input: './src/attach.js',
	output: './dist/attach.bundle.js',
};element/attach/src/attach.css000066400000001116147744174710012227 0ustar00.bx-im-element-attach {
	display: flex;
	flex-wrap: nowrap;
	align-items: stretch;
	flex-direction: row;
	font: 14px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	position: relative;
	margin-top: 2px;
}

.bx-im-message-content-text + .bx-im-element-attach {
	margin-top: 5px;
}
.bx-im-element-attach-border {
	display: inline-block;
	border: 2px solid transparent;
	border-radius: 4px/6px;
	box-sizing: border-box;
	flex-shrink: 0;
	margin-right: 10px;
}
.bx-im-element-attach-content {
	display: inline-block;
	flex-grow: 1;
	box-sizing: border-box;
    width: calc(100% - 14px);
}element/attach/src/attach.js000066400000003655147744174710012065 0ustar00/**
 * Bitrix Messenger
 * Attach element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './attach.css';

import {AttachTypeDelimiter} from './types/delimiter';
import {AttachTypeFile} from './types/file';
import {AttachTypeGrid} from './types/grid';
import {AttachTypeHtml} from './types/html';
import {AttachTypeImage} from './types/image';
import {AttachTypeLink} from './types/link';
import {AttachTypeMessage} from './types/message';
import {AttachTypeRich} from './types/rich';
import {AttachTypeUser} from './types/user';

import {Vue} from 'ui.vue';

const AttachTypes = [
	AttachTypeDelimiter,
	AttachTypeFile,
	AttachTypeGrid,
	AttachTypeHtml,
	AttachTypeImage,
	AttachTypeLink,
	AttachTypeMessage,
	AttachTypeRich,
	AttachTypeUser
];

const AttachComponents = {};
AttachTypes.forEach(attachType => {
	AttachComponents[attachType.name] = attachType.component;
});

Vue.component('bx-im-view-element-attach',
{
	props:
	{
		config: {type: Object, default: {}},
		baseColor: {type: String, default: '#17a3ea'},
	},
	methods:
	{
		getComponentForBlock(block)
		{
			for (let attachType of AttachTypes)
			{
				if (typeof block[attachType.property] !== 'undefined')
				{
					return attachType.name;
				}
			}

			return '';
		}
	},
	computed:
	{
		color()
		{
			if (
				typeof(this.config.COLOR) === 'undefined'
				|| !this.config.COLOR
			)
			{
				return this.baseColor;
			}

			if (this.config.COLOR === 'transparent')
			{
				return '';
			}

			return this.config.COLOR;
		},
	},
	components: AttachComponents,
	template: `
		<div class="bx-im-element-attach">
			<div v-if="color" class="bx-im-element-attach-border" :style="{borderColor: color}"></div>
			<div class="bx-im-element-attach-content">
				<template v-for="(block, index) in config.BLOCKS">
					<component :is="getComponentForBlock(block)" :config="block" :color="color" :key="index" />
				</template>
			</div>
		</div>
	`
});element/attach/src/types/user.css000066400000012221147744174710013104 0ustar00.bx-im-element-attach-type-user {
	font-weight: bold;
}
.bx-im-element-attach-type-user-body {
	display: flex;
	align-items: center;
}
.bx-im-element-attach-type-user-avatar {
    display: inline-block;
	width: 26px;
	height: 26px;
	background: #fff;
	border: 1px solid #ccc;
	border-radius: 50%;
	overflow: hidden;
	flex-shrink: 0;
}
.bx-im-element-attach-type-user-avatar-type {
	display: inline-block;
	width: 22px;
	height: 22px;
	overflow: hidden;
	border-radius: 50%;
	margin: 2px;
    background-position: center center;
}

.bx-im-element-attach-type-user-avatar-type-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M55.03%2042.705s-.474%201.492-.55%201.692c-.171.256-.316.53-.432.816.1%200%201.107.47%201.107.47l3.917%201.227-.057%201.86a4.639%204.639%200%200%200-1.894%201.4c-.19.413-.42.805-.69%201.17%203.568%201.45%205.655%203.573%205.74%205.949.058.423%202.223%208.206%202.347%209.959H81c.014-.073-.5-10.142-.5-10.217%200%200-.946-2.425-2.446-2.672a11.739%2011.739%200%200%201-4.233-1.388%2015.618%2015.618%200%200%200-2.721-1.252%204.069%204.069%200%200%201-1.095-1.555%204.616%204.616%200%200%200-1.894-1.4l-.056-1.861%203.917-1.226s1.01-.471%201.107-.471a7.533%207.533%200%200%200-.54-.947c-.074-.2-.443-1.554-.443-1.554a10.07%2010.07%200%200%200%201.992%201.933%2027.952%2027.952%200%200%201-1.708-3.877%2024.708%2024.708%200%200%201-.653-3.754%2055.8%2055.8%200%200%200-1.255-6.987%206.567%206.567%200%200%200-2.072-2.923%209.593%209.593%200%200%200-4.742-1.685h-.2c-1.7.13-3.334.712-4.733%201.685a6.589%206.589%200%200%200-2.071%202.925%2055.45%2055.45%200%200%200-1.254%206.987%2024.1%2024.1%200%200%201-.622%203.84%2024.6%2024.6%200%200%201-1.737%203.792%2010.093%2010.093%200%200%200%201.988-1.936z%22/%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M60.272%2057.434c0-1.84-2.4-3.941-7.135-5.165a16.073%2016.073%200%200%201-4.517-2.057c-.3-.174-.258-1.78-.258-1.78l-1.525-.235c0-.131-.13-2.057-.13-2.057%201.824-.613%201.636-4.23%201.636-4.23%201.158.645%201.912-2.213%201.912-2.213%201.37-3.976-.682-3.736-.682-3.736a25.034%2025.034%200%200%200%200-7.323c-.912-8.054-14.646-5.868-13.018-3.241-4.014-.744-3.1%208.4-3.1%208.4l.87%202.364c-1.71%201.108-.521%202.45-.463%204%20.084%202.28%201.476%201.808%201.476%201.808.086%203.764%201.939%204.259%201.939%204.259.349%202.364.132%201.962.132%201.962l-1.651.2a6.565%206.565%200%200%201-.13%201.6c-1.945.866-2.36%201.374-4.287%202.219-3.726%201.634-7.777%203.76-8.5%206.62C22.118%2061.692%2021%2070.998%2021%2070.998h42l-2.73-13.563z%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: cover;
}
.bx-im-element-attach-type-user-avatar-type-user {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.786%2062.254c0-2.31-3.03-4.95-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.41-2.784%202.41-2.784%201.729-4.994-.86-4.693-.86-4.693.823-3.738%200-9.2%200-9.2-1.15-10.116-18.47-7.37-16.416-4.065-5.062-.934-3.907%2010.55-3.907%2010.55l1.1%202.97c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.86%202.272%201.86%202.272.11%204.728%202.447%205.35%202.447%205.35.44%202.969.166%202.464.166%202.464l-2.082.25a8.223%208.223%200%200%201-.164%202.013c-2.45%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.317C24.679%2067.606%2023%2075.995%2023%2075.995h53l-3.215-13.74z%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: cover;
}
.bx-im-element-attach-type-user-avatar-type-bot {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2252%22%20height%3D%2246%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M41.994%2012.743l2.8-9.598a2.497%202.497%200%200%200-.54-2.375%202.316%202.316%200%200%200-2.262-.705c-.822.2-1.478.836-1.722%201.67l-2.398%208.239A24.944%2024.944%200%200%200%2014.08%2010l-2.41-8.265C11.294.445%209.976-.285%208.726.105c-1.25.389-1.956%201.75-1.58%203.04l2.812%209.635C3.645%2017.99-.022%2025.89%200%2034.235c0%2015.06%2011.636%2011.364%2026%2011.364s26%203.696%2026-11.364c.025-8.367-3.661-16.286-10.006-21.492zM25.976%2032.188c-10.253%200-18.57%201.098-18.57-3.389s8.317-8.13%2018.57-8.13c10.254%200%2018.582%203.64%2018.582%208.13s-8.316%203.39-18.582%203.39zm-8.493-8.158c-1.464.276-2.467%201.682-2.288%203.207.179%201.525%201.477%202.643%202.962%202.551%201.486-.092%202.645-1.362%202.645-2.899-.165-1.728-1.642-3-3.319-2.859zm14.695%203.214c.182%201.525%201.482%202.641%202.967%202.547%201.486-.094%202.644-1.365%202.644-2.902-.166-1.733-1.65-3.007-3.331-2.859-1.463.281-2.462%201.69-2.28%203.214z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 15px;
}
.bx-im-element-attach-type-user-avatar-source {
	width: inherit;
	height: inherit;
	border: 0;

}
.bx-im-element-attach-type-user-avatar-type-user {

}
.bx-im-element-attach-type-user-name {
	display: inline-block;
	margin-left: 5px;
}element/attach/src/types/image.js000066400000005152147744174710013041 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Image (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./image.css";
import {Utils} from "im.lib.utils";

export const AttachTypeImage =
{
	property: 'IMAGE',
	name: 'bx-im-view-element-attach-image',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		methods:
		{
			open(file)
			{
				if (!file)
				{
					return false;
				}

				if (Utils.platform.isBitrixMobile())
				{
					// TODO add multiply
					BXMobileApp.UI.Photo.show({photos: [{url: file}], default_photo: file})
				}
				else
				{
					window.open(file, '_blank');
				}
			},
			getImageSize(width, height, maxWidth)
			{
				let aspectRatio;

				if (width > maxWidth)
				{
					aspectRatio = maxWidth / width;
				}
				else
				{
					aspectRatio = 1;
				}

				return {
					width: width * aspectRatio,
					height: height * aspectRatio
				};
			},
			getElementSource(element)
			{
				return element.PREVIEW? element.PREVIEW: element.LINK;
			},
			getElementTitle(element)
			{
				return Utils.text.htmlspecialcharsback(element.NAME);
			},
			lazyLoadCallback(event)
			{
				if (!event.element.style.width)
				{
					event.element.style.width = event.element.offsetWidth+'px';
				}
				if (!event.element.style.height)
				{
					event.element.style.height = event.element.offsetHeight+'px';
				}
			},
			styleFileSizes(image)
			{
				if (!(image.WIDTH && image.HEIGHT))
				{
					return {
						maxHeight: '100%',
						backgroundSize: 'contain'
					};
				}

				let sizes = this.getImageSize(image.WIDTH, image.HEIGHT, 250);

				return {
					width: sizes.width+'px',
					height: sizes.height+'px',
					backgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'
				}
			},
			styleBoxSizes(image)
			{
				if (!(image.WIDTH && image.HEIGHT))
				{
					return {
						height: '150px'
					};
				}

				if (parseInt(this.styleFileSizes(image).height) <= 250)
				{
					return {};
				}

				return {
					height: '280px'
				}
			},
		},
		template: `
			<div class="bx-im-element-attach-type-image">
				<template v-for="(image, index) in config.IMAGE">
					<div class="bx-im-element-attach-type-image-block" @click="open(image.LINK)" :style="styleBoxSizes(image)" :key="index">
						<img v-bx-lazyload="{callback: lazyLoadCallback}"
							class="bx-im-element-attach-type-image-source"
							:data-lazyload-src="getElementSource(image)"
							:style="styleFileSizes(image)"
							:title="getElementTitle(image)"
						/>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/link.css000066400000000324147744174710013064 0ustar00.bx-im-element-attach-type-link-image {
	cursor: pointer;
}
.bx-im-element-attach-type-link-name {
	cursor: pointer;
	color: #1d54a2;
}
.bx-im-element-attach-type-link-name:hover {
	text-decoration: underline;
}
element/attach/src/types/file.css000066400000001420147744174710013044 0ustar00.bx-im-element-attach-type-file {
	display: flex;
	flex-wrap: nowrap;
	overflow: hidden;
	margin-left: -4px;
	cursor: pointer;
	min-width: 135px;
}
.bx-im-element-attach-type-file + .bx-im-message-content-body-with-text {
	display: block;
	margin-top:7px
}
.bx-im-element-attach-type-file + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}
.bx-im-element-attach-type-file + .bx-im-element-attach-type-file {
	margin-top: 10px;
}
.bx-im-element-attach-type-file-icon {
	display: flex;
	flex-shrink: 0;
	padding-right: 7px;
}
.bx-im-element-attach-type-file-block {
	overflow: hidden;
}
.bx-im-element-attach-type-file-name {
	display: flex;
	flex-wrap: nowrap;
}

.bx-im-element-attach-type-file-size {
	color: #717171;
	font-size: 12px;
}element/attach/src/types/grid.js000066400000010525147744174710012704 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Grid (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./grid.css";
import {Utils} from "im.lib.utils";
import {MessagesModel} from "im.model";

export const AttachTypeGrid =
{
	property: 'GRID',
	name: 'bx-im-view-element-attach-grid',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		created()
		{
			if (Utils.platform.isBitrixMobile())
			{
				this.maxCellWith = Math.floor(Math.min(screen.availWidth, screen.availHeight)/4);
			}
			else
			{
				this.maxCellWith = null;
			}
		},
		methods:
		{
			openLink(element)
			{
				if (element.LINK)
				{
					Utils.platform.openNewPage(element.LINK);
				}
				else
				{
					// element.NETWORK_ID
					// element.USER_ID
					// element.CHAT_ID
					// TODO exec openDialog with params
				}
			},
			getWidth(element)
			{
				if (this.type !== 'row')
				{
					return element.WIDTH? element.WIDTH+'px': '';
				}

				if (!element.VALUE)
				{
					return false;
				}

				if (this.maxCellWith && element.WIDTH > this.maxCellWith)
				{
					return this.maxCellWith+'px';
				}

				return element.WIDTH? element.WIDTH+'px': '';
			},

			getValue(element)
			{
				if (!element.VALUE)
				{
					return '';
				}

				return MessagesModel.decodeBbCode({text: element.VALUE});
			},
		},
		computed:
		{
			type()
			{
				return this.config.GRID[0].DISPLAY.toLowerCase();
			},
		},
		template: `
			<div class="bx-im-element-attach-type-grid">
				<template v-if="type === 'block'">
					<template v-for="(element, index) in config.GRID">
						<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-block" :style="{width: getWidth(element)}">
							<div class="bx-im-element-attach-type-grid-element-name" v-html="element.NAME"></div>
							<template v-if="element.LINK">
								<div class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)"></div>
							</template>
							<template v-else>
								<div class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)"></div>
							</template>
						</div>	
					</template>
				</template>
				<template v-else-if="type === 'line'">
					<template v-for="(element, index) in config.GRID">
						<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-card" :style="{width: getWidth(element)}">
							<div class="bx-im-element-attach-type-grid-element-name" v-html="element.NAME"></div>
							<template v-if="element.LINK">
								<div class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)" :style="{color: element.COLOR? element.COLOR: ''}"></div>
							</template>
							<template v-else>
								<div class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)" :style="{color: element.COLOR? element.COLOR: ''}"></div>
							</template>
						</div>
					</template>
				</template>
				<template v-else-if="type === 'row'">
					<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-column">
						<table class="bx-im-element-attach-type-display-column-table">
							<tbody>
								<template v-for="(element, index) in config.GRID">
									<tr>
										<template v-if="element.NAME">
											<td class="bx-im-element-attach-type-grid-element-name" :colspan="element.VALUE? 1: 2" v-html="element.NAME" :style="{width: getWidth(element)}"></td>
										</template>
										<template v-if="element.VALUE">
											<template v-if="element.LINK">
												<td class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)" :colspan="element.NAME? 1: 2" :style="{color: element.COLOR? element.COLOR: ''}"></td>
											</template>
											<template v-else>
												<td class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)" :colspan="element.NAME? 1: 2" :style="{color: element.COLOR? element.COLOR: ''}"></td>
											</template>
										</template>
									</tr>
								</template>
							</tbody>
						</table>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/grid.css000066400000002513147744174710013056 0ustar00.bx-im-element-attach-type-display-block {
	max-width: 100%;
}

.bx-im-element-attach-type-display-block .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
}

.bx-im-element-attach-type-display-block + .bx-im-element-attach-type-display-block {
	margin-top: 5px;
}

.bx-im-element-attach-type-grid-element-value-link {
	cursor: pointer;
	color: #1d54a2;
}
.bx-im-element-attach-type-grid-element-value-link:hover {
	text-decoration: underline;
}

.bx-im-element-attach-type-display-column-table {
	border-collapse: unset;
	border-spacing: unset;
}

.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
	line-height: 20px;
	vertical-align: top;
	padding-right: 10px;
	text-align: left;
	min-width: 50px;
}
.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-value {
	vertical-align: top;
	line-height: 21px;
}

.bx-im-element-attach-type-display-table {
	overflow: auto;
	max-width: 100%;
	max-height: 250px;
}

.bx-im-element-attach-type-display-card {
	display: inline-block;
	padding-right: 10px;
	max-width: 100%;
	box-sizing: border-box;
}

.bx-im-element-attach-type-display-card .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
}

.bx-im-element-attach-type-display-card + .bx-im-element-attach-type-display-card {

}element/attach/src/types/html.css000066400000000043147744174710013071 0ustar00.bx-im-element-attach-type-html {
}element/attach/src/types/file.js000066400000005077147744174710012704 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * File (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./file.css";
import {Vue} from "ui.vue";
import {FilesModel} from "im.model";
import {Utils} from "im.lib.utils";

export const AttachTypeFile =
{
	property: 'FILE',
	name: 'bx-im-element-attach-file',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		methods:
		{
			openLink(element)
			{
				Utils.platform.openNewPage(element.LINK);
			},
			file()
			{
				return {
					name: this.config.FILE.NAME,
					extension: this.config.FILE.NAME.split('.').splice(-1)[0],
					size: this.config.FILE.SIZE,
				};
			},
			fileName(element)
			{
				let maxLength = 70;

				if (!element.NAME || element.NAME.length < maxLength)
				{
					return element.NAME;
				}

				let endWordLength = 10;

				let extension = element.NAME.split('.').splice(-1)[0];
				let secondPart = element.NAME.substring(element.NAME.length-1 - (extension.length+1+endWordLength));
				let firstPart = element.NAME.substring(0, maxLength-secondPart.length-3);

				return firstPart.trim()+'...'+secondPart.trim();
			},
			fileNameFull(element)
			{
				return Utils.text.htmlspecialcharsback(element.NAME);
			},
			fileSize(element)
			{
				let size = element.SIZE;

				if (size <= 0)
				{
					return '';
				}

				let sizes = ["BYTE", "KB", "MB", "GB", "TB"];
				let position = 0;

				while (size >= 1024 && position < 4)
				{
					size /= 1024;
					position++;
				}

				return Math.round(size) + " " + this.localize['IM_MESSENGER_ATTACH_FILE_SIZE_'+sizes[position]];
			},
			fileIcon(element)
			{
				return FilesModel.getIconType(element.NAME.split('.').splice(-1)[0]);
			}
		},
		computed:
		{
			localize()
			{
				return Vue.getFilteredPhrases('IM_MESSENGER_ATTACH_FILE_', this.$root.$bitrixMessages);
			},
		},
		template: `
			<div class="bx-im-element-attach-type-file-element">
				<template v-for="(element, index) in config.FILE">
					<div class="bx-im-element-attach-type-file" @click="openLink(element)">
						<div class="bx-im-element-attach-type-file-icon">
							<div :class="['ui-icon', 'ui-icon-file-'+fileIcon(element)]"><i></i></div>
						</div>
						<div class="bx-im-element-attach-type-file-block">
							<div class="bx-im-element-attach-type-file-name" :title="fileNameFull(element)">
								{{fileName(element)}}
							</div>
							<div class="bx-im-element-attach-type-file-size">{{fileSize(element)}}</div>
						</div>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/html.js000066400000000725147744174710012724 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Rich Attach type
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./html.css";

export const AttachTypeHtml =
{
	property: 'HTML',
	name: 'bx-im-view-element-attach-html',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		template: `<div class="bx-im-element-attach-type-html" v-html="config.HTML"></div>`
	},
};element/attach/src/types/image.css000066400000006024147744174710013214 0ustar00.bx-im-element-attach-type-image {
    border-radius: 6px;
    overflow: hidden;
}
.bx-im-element-attach-type-image-block
{
	display: flex;
	cursor: pointer;
	align-items: center;
    justify-content: center;
	overflow: hidden;
	min-width: 100px;
	min-height: 100px;
}
.bx-im-element-attach-type-image-source {
	display: inline-block;
	max-width: 100%;
}
.bx-im-element-attach-type-image-source.bx-lazyload-loading,
.bx-im-element-attach-type-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}
.bx-im-element-attach-type-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}element/attach/src/types/rich.js000066400000003321147744174710012700 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Rich (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./rich.css";
import {AttachTypeImage} from "./image";
import {Utils} from "im.lib.utils";

export const AttachTypeRich =
{
	property: 'RICH_LINK',
	name: 'bx-im-view-element-attach-rich',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		methods:
		{
			getImageConfig(element)
			{
				return {IMAGE: [{
					NAME: element.NAME,
					PREVIEW: element.PREVIEW,
					WIDTH: element.WIDTH,
					HEIGHT: element.HEIGHT,
				}]};
			},
			openLink(element)
			{
				if (element.LINK)
				{
					Utils.platform.openNewPage(element.LINK);
				}
				else
				{
					// element.NETWORK_ID
					// element.USER_ID
					// element.CHAT_ID
					// TODO exec openDialog with params
				}
			}
		},
		computed:
		{
			imageComponentName()
			{
				return AttachTypeImage.name;
			}
		},
		components:
		{
			[AttachTypeImage.name]: AttachTypeImage.component
		},
		template: `
			<div class="bx-im-element-attach-type-rich">
				<template v-for="(element, index) in config.RICH_LINK">
					<div class="bx-im-element-attach-type-rich-element" :key="index">
						<div v-if="element.PREVIEW" class="bx-im-element-attach-type-rich-image" @click="openLink(element)">
							<component :is="imageComponentName" :config="getImageConfig(element)" :color="color"/>
						</div>
						<div class="bx-im-element-attach-type-rich-name" @click="openLink(element)" v-html="element.NAME"></div>
						<div v-if="element.DESC" class="bx-im-element-attach-type-rich-desc" v-html="element.DESC"></div>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/message.js000066400000001145147744174710013401 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Message (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import {MessagesModel} from "im.model";

export const AttachTypeMessage =
{
	property: 'MESSAGE',
	name: 'bx-im-view-element-attach-message',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		computed:
		{
			message()
			{
				return MessagesModel.decodeBbCode({text: this.config.MESSAGE});
			}
		},
		template: `<div class="bx-im-element-attach-type-message" v-html="message"></div>`
	},
};element/attach/src/types/user.js000066400000003355147744174710012740 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * User (Attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./user.css";
import {Utils} from "im.lib.utils";

export const AttachTypeUser =
{
	property: 'USER',
	name: 'bx-im-view-element-attach-user',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		methods:
		{
			openLink(element)
			{
				if (element.LINK)
				{
					Utils.platform.openNewPage(element.LINK);
				}
				else
				{
					// element.NETWORK_ID
					// element.USER_ID
					// element.CHAT_ID
					// TODO exec openDialog with params
				}
			},
			getAvatarType(element)
			{
				if (element.AVATAR)
				{
					return '';
				}

				let avatarType = 'user';

				if (element.AVATAR_TYPE === 'CHAT')
				{
					avatarType = 'chat';
				}
				else if (element.AVATAR_TYPE === 'BOT')
				{
					avatarType = 'bot';
				}

				return 'bx-im-element-attach-type-user-avatar-type-'+avatarType;
			}
		},
		template: `
			<div class="bx-im-element-attach-type-user">
				<template v-for="(element, index) in config.USER">
					<div class="bx-im-element-attach-type-user-body" @click="openLink(element)">
						<div class="bx-im-element-attach-type-user-avatar">
							<div :class="['bx-im-element-attach-type-user-avatar-type', getAvatarType(element)]" :style="{backgroundColor: element.AVATAR? '': color}">
								<img v-if="element.AVATAR" 
									v-bx-lazyload
									class="bx-im-element-attach-type-user-avatar-source"
									:data-lazyload-src="element.AVATAR"
								/>
							</div>
						</div>
						<div class="bx-im-element-attach-type-user-name" v-html="element.NAME"></div>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/delimiter.js000066400000001340147744174710013730 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Delimiter (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./delimiter.css";

export const AttachTypeDelimiter =
{
	property: 'DELIMITER',
	name: 'bx-im-view-element-attach-delimiter',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		computed:
		{
			styles()
			{
				return {
					width: this.config.DELIMITER.SIZE? this.config.DELIMITER.SIZE+'px': '',
					backgroundColor: this.config.DELIMITER.COLOR? this.config.DELIMITER.COLOR: this.color,
				}
			}
		},
		template: `<div class="bx-im-element-attach-type-delimiter" :style="styles">Delimiter</div>`
	},
};element/attach/src/types/link.js000066400000003307147744174710012714 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Link (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import "./link.css";
import {AttachTypeImage} from "./image";
import {Utils} from "im.lib.utils";

export const AttachTypeLink =
{
	property: 'LINK',
	name: 'bx-im-view-element-attach-link',
	component:
	{
		props:
		{
			config: {type: Object, default: {}},
			color: {type: String, default: 'transparent'},
		},
		methods:
		{
			getImageConfig(element)
			{
				return {IMAGE: [{
					NAME: element.NAME,
					PREVIEW: element.PREVIEW,
					WIDTH: element.WIDTH,
					HEIGHT: element.HEIGHT,
				}]};
			},
			openLink(element)
			{
				if (element.LINK)
				{
					Utils.platform.openNewPage(element.LINK);
				}
				else
				{
					// element.NETWORK_ID
					// element.USER_ID
					// element.CHAT_ID
					// TODO exec openDialog with params
				}
			}
		},
		computed:
		{
			imageComponentName()
			{
				return AttachTypeImage.name;
			}
		},
		components:
		{
			[AttachTypeImage.name]: AttachTypeImage.component
		},
		template: `
			<div class="bx-im-element-attach-type-link">
				<template v-for="(element, index) in config.LINK">
					<div class="bx-im-element-attach-type-link-element" :key="index">
						<div v-if="element.PREVIEW" class="bx-im-element-attach-type-link-image" @click="openLink(element)">
							<component :is="imageComponentName" :config="getImageConfig(element)" :color="color"/>
						</div>
						<div class="bx-im-element-attach-type-link-name" @click="openLink(element)" v-html="element.NAME"></div>
						<div v-if="element.DESC" class="bx-im-element-attach-type-link-desc" v-html="element.DESC"></div>
					</div>
				</template>
			</div>
		`
	},
};element/attach/src/types/delimiter.css000066400000000267147744174710014113 0ustar00.bx-im-element-attach-type-delimiter {
	display: block;
	font-size: 0;
	height: 1px;
	width: 300px;
	max-width: 100%;
	background-color: #ccc;
	margin-top: 7px;
	margin-bottom: 7px;
}element/attach/src/types/rich.css000066400000000712147744174710013055 0ustar00.bx-im-element-attach-type-rich {
	background: #fff;
    border-radius: 10px;
    border: 1px solid #e8e8e8;
    overflow: hidden;
}
.bx-im-element-attach-type-rich-image {
	cursor: pointer;
}
.bx-im-element-attach-type-rich-name {
	cursor: pointer;
    color: #000000;
    padding: 5px 10px;
    font-weight: bold;
}
.bx-im-element-attach-type-rich-name:hover {
	text-decoration: underline;
}
.bx-im-element-attach-type-rich-desc {
	padding: 0 10px 10px;
}
element/attach/dist/attach.bundle.css000066400000031254147744174710013661 0ustar00.bx-im-element-attach {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
	-webkit-box-align: stretch;
	    -ms-flex-align: stretch;
	        align-items: stretch;
	-webkit-box-orient: horizontal;
	-webkit-box-direction: normal;
	    -ms-flex-direction: row;
	        flex-direction: row;
	font: 14px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	position: relative;
	margin-top: 2px;
}

.bx-im-message-content-text + .bx-im-element-attach {
	margin-top: 5px;
}
.bx-im-element-attach-border {
	display: inline-block;
	border: 2px solid transparent;
	border-radius: 4px/6px;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	margin-right: 10px;
}
.bx-im-element-attach-content {
	display: inline-block;
	-webkit-box-flex: 1;
	    -ms-flex-positive: 1;
	        flex-grow: 1;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
    width: calc(100% - 14px);
}
.bx-im-element-attach-type-file {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
	overflow: hidden;
	margin-left: -4px;
	cursor: pointer;
	min-width: 135px;
}
.bx-im-element-attach-type-file + .bx-im-message-content-body-with-text {
	display: block;
	margin-top:7px
}
.bx-im-element-attach-type-file + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}
.bx-im-element-attach-type-file + .bx-im-element-attach-type-file {
	margin-top: 10px;
}
.bx-im-element-attach-type-file-icon {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	padding-right: 7px;
}
.bx-im-element-attach-type-file-block {
	overflow: hidden;
}
.bx-im-element-attach-type-file-name {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
}

.bx-im-element-attach-type-file-size {
	color: #717171;
	font-size: 12px;
}
.bx-im-element-attach-type-display-block {
	max-width: 100%;
}

.bx-im-element-attach-type-display-block .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
}

.bx-im-element-attach-type-display-block + .bx-im-element-attach-type-display-block {
	margin-top: 5px;
}

.bx-im-element-attach-type-grid-element-value-link {
	cursor: pointer;
	color: #1d54a2;
}
.bx-im-element-attach-type-grid-element-value-link:hover {
	text-decoration: underline;
}

.bx-im-element-attach-type-display-column-table {
	border-collapse: unset;
	border-spacing: unset;
}

.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
	line-height: 20px;
	vertical-align: top;
	padding-right: 10px;
	text-align: left;
	min-width: 50px;
}
.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-value {
	vertical-align: top;
	line-height: 21px;
}

.bx-im-element-attach-type-display-table {
	overflow: auto;
	max-width: 100%;
	max-height: 250px;
}

.bx-im-element-attach-type-display-card {
	display: inline-block;
	padding-right: 10px;
	max-width: 100%;
	-webkit-box-sizing: border-box;
	        box-sizing: border-box;
}

.bx-im-element-attach-type-display-card .bx-im-element-attach-type-grid-element-name {
	font-weight: bold;
}

.bx-im-element-attach-type-display-card + .bx-im-element-attach-type-display-card {

}
.bx-im-element-attach-type-delimiter {
	display: block;
	font-size: 0;
	height: 1px;
	width: 300px;
	max-width: 100%;
	background-color: #ccc;
	margin-top: 7px;
	margin-bottom: 7px;
}
.bx-im-element-attach-type-html {
}
.bx-im-element-attach-type-image {
    border-radius: 6px;
    overflow: hidden;
}
.bx-im-element-attach-type-image-block
{
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	cursor: pointer;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
	overflow: hidden;
	min-width: 100px;
	min-height: 100px;
}
.bx-im-element-attach-type-image-source {
	display: inline-block;
	max-width: 100%;
}
.bx-im-element-attach-type-image-source.bx-lazyload-loading,
.bx-im-element-attach-type-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}
.bx-im-element-attach-type-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}
.bx-im-element-attach-type-rich {
	background: #fff;
    border-radius: 10px;
    border: 1px solid #e8e8e8;
    overflow: hidden;
}
.bx-im-element-attach-type-rich-image {
	cursor: pointer;
}
.bx-im-element-attach-type-rich-name {
	cursor: pointer;
    color: #000000;
    padding: 5px 10px;
    font-weight: bold;
}
.bx-im-element-attach-type-rich-name:hover {
	text-decoration: underline;
}
.bx-im-element-attach-type-rich-desc {
	padding: 0 10px 10px;
}

.bx-im-element-attach-type-link-image {
	cursor: pointer;
}
.bx-im-element-attach-type-link-name {
	cursor: pointer;
	color: #1d54a2;
}
.bx-im-element-attach-type-link-name:hover {
	text-decoration: underline;
}

.bx-im-element-attach-type-user {
	font-weight: bold;
}
.bx-im-element-attach-type-user-body {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
}
.bx-im-element-attach-type-user-avatar {
    display: inline-block;
	width: 26px;
	height: 26px;
	background: #fff;
	border: 1px solid #ccc;
	border-radius: 50%;
	overflow: hidden;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
.bx-im-element-attach-type-user-avatar-type {
	display: inline-block;
	width: 22px;
	height: 22px;
	overflow: hidden;
	border-radius: 50%;
	margin: 2px;
    background-position: center center;
}

.bx-im-element-attach-type-user-avatar-type-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M55.03%2042.705s-.474%201.492-.55%201.692c-.171.256-.316.53-.432.816.1%200%201.107.47%201.107.47l3.917%201.227-.057%201.86a4.639%204.639%200%200%200-1.894%201.4c-.19.413-.42.805-.69%201.17%203.568%201.45%205.655%203.573%205.74%205.949.058.423%202.223%208.206%202.347%209.959H81c.014-.073-.5-10.142-.5-10.217%200%200-.946-2.425-2.446-2.672a11.739%2011.739%200%200%201-4.233-1.388%2015.618%2015.618%200%200%200-2.721-1.252%204.069%204.069%200%200%201-1.095-1.555%204.616%204.616%200%200%200-1.894-1.4l-.056-1.861%203.917-1.226s1.01-.471%201.107-.471a7.533%207.533%200%200%200-.54-.947c-.074-.2-.443-1.554-.443-1.554a10.07%2010.07%200%200%200%201.992%201.933%2027.952%2027.952%200%200%201-1.708-3.877%2024.708%2024.708%200%200%201-.653-3.754%2055.8%2055.8%200%200%200-1.255-6.987%206.567%206.567%200%200%200-2.072-2.923%209.593%209.593%200%200%200-4.742-1.685h-.2c-1.7.13-3.334.712-4.733%201.685a6.589%206.589%200%200%200-2.071%202.925%2055.45%2055.45%200%200%200-1.254%206.987%2024.1%2024.1%200%200%201-.622%203.84%2024.6%2024.6%200%200%201-1.737%203.792%2010.093%2010.093%200%200%200%201.988-1.936z%22/%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M60.272%2057.434c0-1.84-2.4-3.941-7.135-5.165a16.073%2016.073%200%200%201-4.517-2.057c-.3-.174-.258-1.78-.258-1.78l-1.525-.235c0-.131-.13-2.057-.13-2.057%201.824-.613%201.636-4.23%201.636-4.23%201.158.645%201.912-2.213%201.912-2.213%201.37-3.976-.682-3.736-.682-3.736a25.034%2025.034%200%200%200%200-7.323c-.912-8.054-14.646-5.868-13.018-3.241-4.014-.744-3.1%208.4-3.1%208.4l.87%202.364c-1.71%201.108-.521%202.45-.463%204%20.084%202.28%201.476%201.808%201.476%201.808.086%203.764%201.939%204.259%201.939%204.259.349%202.364.132%201.962.132%201.962l-1.651.2a6.565%206.565%200%200%201-.13%201.6c-1.945.866-2.36%201.374-4.287%202.219-3.726%201.634-7.777%203.76-8.5%206.62C22.118%2061.692%2021%2070.998%2021%2070.998h42l-2.73-13.563z%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: cover;
}
.bx-im-element-attach-type-user-avatar-type-user {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.786%2062.254c0-2.31-3.03-4.95-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.41-2.784%202.41-2.784%201.729-4.994-.86-4.693-.86-4.693.823-3.738%200-9.2%200-9.2-1.15-10.116-18.47-7.37-16.416-4.065-5.062-.934-3.907%2010.55-3.907%2010.55l1.1%202.97c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.86%202.272%201.86%202.272.11%204.728%202.447%205.35%202.447%205.35.44%202.969.166%202.464.166%202.464l-2.082.25a8.223%208.223%200%200%201-.164%202.013c-2.45%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.317C24.679%2067.606%2023%2075.995%2023%2075.995h53l-3.215-13.74z%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: cover;
}
.bx-im-element-attach-type-user-avatar-type-bot {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2252%22%20height%3D%2246%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M41.994%2012.743l2.8-9.598a2.497%202.497%200%200%200-.54-2.375%202.316%202.316%200%200%200-2.262-.705c-.822.2-1.478.836-1.722%201.67l-2.398%208.239A24.944%2024.944%200%200%200%2014.08%2010l-2.41-8.265C11.294.445%209.976-.285%208.726.105c-1.25.389-1.956%201.75-1.58%203.04l2.812%209.635C3.645%2017.99-.022%2025.89%200%2034.235c0%2015.06%2011.636%2011.364%2026%2011.364s26%203.696%2026-11.364c.025-8.367-3.661-16.286-10.006-21.492zM25.976%2032.188c-10.253%200-18.57%201.098-18.57-3.389s8.317-8.13%2018.57-8.13c10.254%200%2018.582%203.64%2018.582%208.13s-8.316%203.39-18.582%203.39zm-8.493-8.158c-1.464.276-2.467%201.682-2.288%203.207.179%201.525%201.477%202.643%202.962%202.551%201.486-.092%202.645-1.362%202.645-2.899-.165-1.728-1.642-3-3.319-2.859zm14.695%203.214c.182%201.525%201.482%202.641%202.967%202.547%201.486-.094%202.644-1.365%202.644-2.902-.166-1.733-1.65-3.007-3.331-2.859-1.463.281-2.462%201.69-2.28%203.214z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	background-size: 15px;
}
.bx-im-element-attach-type-user-avatar-source {
	width: inherit;
	height: inherit;
	border: 0;

}
.bx-im-element-attach-type-user-avatar-type-user {

}
.bx-im-element-attach-type-user-name {
	display: inline-block;
	margin-left: 5px;
}element/attach/dist/attach.bundle.map.js000066400000017244147744174710014264 0ustar00{"version":3,"sources":["attach.bundle.js"],"names":["exports","im_model","im_lib_utils","ui_vue","AttachTypeDelimiter","property","name","component","props","config","type","Object","default","color","String","computed","styles","width","this","DELIMITER","SIZE","backgroundColor","COLOR","template","AttachTypeFile","methods","openLink","element","Utils","platform","openNewPage","LINK","file","FILE","NAME","extension","split","splice","size","fileName","maxLength","length","endWordLength","secondPart","substring","firstPart","trim","fileNameFull","text","htmlspecialcharsback","fileSize","sizes","position","Math","round","localize","fileIcon","FilesModel","getIconType","Vue","getFilteredPhrases","$root","$bitrixMessages","AttachTypeGrid","created","isBitrixMobile","maxCellWith","floor","min","screen","availWidth","availHeight","getWidth","WIDTH","VALUE","getValue","MessagesModel","decodeBbCode","GRID","DISPLAY","toLowerCase","AttachTypeHtml","AttachTypeImage","open","BXMobileApp","UI","Photo","show","photos","url","default_photo","window","getImageSize","height","maxWidth","aspectRatio","getElementSource","PREVIEW","getElementTitle","lazyLoadCallback","event","style","offsetWidth","offsetHeight","styleFileSizes","image","HEIGHT","maxHeight","backgroundSize","styleBoxSizes","parseInt","AttachTypeLink","getImageConfig","IMAGE","imageComponentName","components","babelHelpers","defineProperty","AttachTypeMessage","message","MESSAGE","AttachTypeRich","AttachTypeUser","getAvatarType","AVATAR","avatarType","AVATAR_TYPE","AttachTypes","AttachComponents","forEach","attachType","baseColor","getComponentForBlock","block","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_iterator","Symbol","iterator","_step","next","done","value","err","return","BX","Messenger","Model","Lib"],"mappings":"CAAC,SAAUA,EAAQC,EAASC,EAAaC,GACxC,aAYA,IAAIC,GACFC,SAAU,YACVC,KAAM,sCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGbG,UACEC,OAAQ,SAASA,IACf,OACEC,MAAOC,KAAKT,OAAOU,UAAUC,KAAOF,KAAKT,OAAOU,UAAUC,KAAO,KAAO,GACxEC,gBAAiBH,KAAKT,OAAOU,UAAUG,MAAQJ,KAAKT,OAAOU,UAAUG,MAAQJ,KAAKL,SAIxFU,SAAU,qFAcd,IAAIC,GACFnB,SAAU,OACVC,KAAM,4BACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGba,SACEC,SAAU,SAASA,EAASC,GAC1BzB,EAAa0B,MAAMC,SAASC,YAAYH,EAAQI,OAElDC,KAAM,SAASA,IACb,OACE1B,KAAMY,KAAKT,OAAOwB,KAAKC,KACvBC,UAAWjB,KAAKT,OAAOwB,KAAKC,KAAKE,MAAM,KAAKC,QAAQ,GAAG,GACvDC,KAAMpB,KAAKT,OAAOwB,KAAKb,OAG3BmB,SAAU,SAASA,EAASZ,GAC1B,IAAIa,EAAY,GAEhB,IAAKb,EAAQO,MAAQP,EAAQO,KAAKO,OAASD,EAAW,CACpD,OAAOb,EAAQO,KAGjB,IAAIQ,EAAgB,GACpB,IAAIP,EAAYR,EAAQO,KAAKE,MAAM,KAAKC,QAAQ,GAAG,GACnD,IAAIM,EAAahB,EAAQO,KAAKU,UAAUjB,EAAQO,KAAKO,OAAS,GAAKN,EAAUM,OAAS,EAAIC,IAC1F,IAAIG,EAAYlB,EAAQO,KAAKU,UAAU,EAAGJ,EAAYG,EAAWF,OAAS,GAC1E,OAAOI,EAAUC,OAAS,MAAQH,EAAWG,QAE/CC,aAAc,SAASA,EAAapB,GAClC,OAAOzB,EAAa0B,MAAMoB,KAAKC,qBAAqBtB,EAAQO,OAE9DgB,SAAU,SAASA,EAASvB,GAC1B,IAAIW,EAAOX,EAAQP,KAEnB,GAAIkB,GAAQ,EAAG,CACb,MAAO,GAGT,IAAIa,GAAS,OAAQ,KAAM,KAAM,KAAM,MACvC,IAAIC,EAAW,EAEf,MAAOd,GAAQ,MAAQc,EAAW,EAAG,CACnCd,GAAQ,KACRc,IAGF,OAAOC,KAAKC,MAAMhB,GAAQ,IAAMpB,KAAKqC,SAAS,iCAAmCJ,EAAMC,KAEzFI,SAAU,SAASA,EAAS7B,GAC1B,OAAO1B,EAASwD,WAAWC,YAAY/B,EAAQO,KAAKE,MAAM,KAAKC,QAAQ,GAAG,MAG9EtB,UACEwC,SAAU,SAASA,IACjB,OAAOpD,EAAOwD,IAAIC,mBAAmB,4BAA6B1C,KAAK2C,MAAMC,mBAGjFvC,SAAU,ywBAcd,IAAIwC,GACF1D,SAAU,OACVC,KAAM,iCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGboD,QAAS,SAASA,IAChB,GAAI9D,EAAa0B,MAAMC,SAASoC,iBAAkB,CAChD/C,KAAKgD,YAAcb,KAAKc,MAAMd,KAAKe,IAAIC,OAAOC,WAAYD,OAAOE,aAAe,OAC3E,CACLrD,KAAKgD,YAAc,OAGvBzC,SACEC,SAAU,SAASA,EAASC,GAC1B,GAAIA,EAAQI,KAAM,CAChB7B,EAAa0B,MAAMC,SAASC,YAAYH,EAAQI,QAGpDyC,SAAU,SAASA,EAAS7C,GAC1B,GAAIT,KAAKR,OAAS,MAAO,CACvB,OAAOiB,EAAQ8C,MAAQ9C,EAAQ8C,MAAQ,KAAO,GAGhD,IAAK9C,EAAQ+C,MAAO,CAClB,OAAO,MAGT,GAAIxD,KAAKgD,aAAevC,EAAQ8C,MAAQvD,KAAKgD,YAAa,CACxD,OAAOhD,KAAKgD,YAAc,KAG5B,OAAOvC,EAAQ8C,MAAQ9C,EAAQ8C,MAAQ,KAAO,IAEhDE,SAAU,SAASA,EAAShD,GAC1B,IAAKA,EAAQ+C,MAAO,CAClB,MAAO,GAGT,OAAOzE,EAAS2E,cAAcC,cAC5B7B,KAAMrB,EAAQ+C,UAIpB3D,UACEL,KAAM,SAASA,IACb,OAAOQ,KAAKT,OAAOqE,KAAK,GAAGC,QAAQC,gBAGvCzD,SAAU,6wGAcd,IAAI0D,GACF5E,SAAU,OACVC,KAAM,iCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGbW,SAAU,4EAcd,IAAI2D,GACF7E,SAAU,QACVC,KAAM,kCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGba,SACE0D,KAAM,SAASA,EAAKnD,GAClB,IAAKA,EAAM,CACT,OAAO,MAGT,GAAI9B,EAAa0B,MAAMC,SAASoC,iBAAkB,CAEhDmB,YAAYC,GAAGC,MAAMC,MACnBC,SACEC,IAAKzD,IAEP0D,cAAe1D,QAEZ,CACL2D,OAAOR,KAAKnD,EAAM,YAGtB4D,aAAc,SAASA,EAAa3E,EAAO4E,EAAQC,GACjD,IAAIC,EAEJ,GAAI9E,EAAQ6E,EAAU,CACpBC,EAAcD,EAAW7E,MACpB,CACL8E,EAAc,EAGhB,OACE9E,MAAOA,EAAQ8E,EACfF,OAAQA,EAASE,IAGrBC,iBAAkB,SAASA,EAAiBrE,GAC1C,OAAOA,EAAQsE,QAAUtE,EAAQsE,QAAUtE,EAAQI,MAErDmE,gBAAiB,SAASA,EAAgBvE,GACxC,OAAOzB,EAAa0B,MAAMoB,KAAKC,qBAAqBtB,EAAQO,OAE9DiE,iBAAkB,SAASA,EAAiBC,GAC1C,IAAKA,EAAMzE,QAAQ0E,MAAMpF,MAAO,CAC9BmF,EAAMzE,QAAQ0E,MAAMpF,MAAQmF,EAAMzE,QAAQ2E,YAAc,KAG1D,IAAKF,EAAMzE,QAAQ0E,MAAMR,OAAQ,CAC/BO,EAAMzE,QAAQ0E,MAAMR,OAASO,EAAMzE,QAAQ4E,aAAe,OAG9DC,eAAgB,SAASA,EAAeC,GACtC,KAAMA,EAAMhC,OAASgC,EAAMC,QAAS,CAClC,OACEC,UAAW,OACXC,eAAgB,WAIpB,IAAIzD,EAAQjC,KAAK0E,aAAaa,EAAMhC,MAAOgC,EAAMC,OAAQ,KACzD,OACEzF,MAAOkC,EAAMlC,MAAQ,KACrB4E,OAAQ1C,EAAM0C,OAAS,KACvBe,eAAgBzD,EAAMlC,MAAQ,KAAOkC,EAAM0C,OAAS,IAAM,UAAY,YAG1EgB,cAAe,SAASA,EAAcJ,GACpC,KAAMA,EAAMhC,OAASgC,EAAMC,QAAS,CAClC,OACEb,OAAQ,SAIZ,GAAIiB,SAAS5F,KAAKsF,eAAeC,GAAOZ,SAAW,IAAK,CACtD,SAGF,OACEA,OAAQ,WAIdtE,SAAU,0lBAcd,IAAIwF,GACF1G,SAAU,OACVC,KAAM,iCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGba,SACEuF,eAAgB,SAASA,EAAerF,GACtC,OACEsF,QACE/E,KAAMP,EAAQO,KACd+D,QAAStE,EAAQsE,QACjBxB,MAAO9C,EAAQ8C,MACfiC,OAAQ/E,EAAQ+E,WAItBhF,SAAU,SAASA,EAASC,GAC1B,GAAIA,EAAQI,KAAM,CAChB7B,EAAa0B,MAAMC,SAASC,YAAYH,EAAQI,SAItDhB,UACEmG,mBAAoB,SAASA,IAC3B,OAAOhC,EAAgB5E,OAG3B6G,WAAYC,aAAaC,kBAAmBnC,EAAgB5E,KAAM4E,EAAgB3E,WAClFgB,SAAU,8sBAcd,IAAI+F,GACFjH,SAAU,UACVC,KAAM,oCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGbG,UACEwG,QAAS,SAASA,IAChB,OAAOtH,EAAS2E,cAAcC,cAC5B7B,KAAM9B,KAAKT,OAAO+G,YAIxBjG,SAAU,2EAcd,IAAIkG,GACFpH,SAAU,YACVC,KAAM,iCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGba,SACEuF,eAAgB,SAASA,EAAerF,GACtC,OACEsF,QACE/E,KAAMP,EAAQO,KACd+D,QAAStE,EAAQsE,QACjBxB,MAAO9C,EAAQ8C,MACfiC,OAAQ/E,EAAQ+E,WAItBhF,SAAU,SAASA,EAASC,GAC1B,GAAIA,EAAQI,KAAM,CAChB7B,EAAa0B,MAAMC,SAASC,YAAYH,EAAQI,SAItDhB,UACEmG,mBAAoB,SAASA,IAC3B,OAAOhC,EAAgB5E,OAG3B6G,WAAYC,aAAaC,kBAAmBnC,EAAgB5E,KAAM4E,EAAgB3E,WAClFgB,SAAU,mtBAcd,IAAImG,GACFrH,SAAU,OACVC,KAAM,iCACNC,WACEC,OACEC,QACEC,KAAMC,OACNC,YAEFC,OACEH,KAAMI,OACNF,QAAS,gBAGba,SACEC,SAAU,SAASA,EAASC,GAC1B,GAAIA,EAAQI,KAAM,CAChB7B,EAAa0B,MAAMC,SAASC,YAAYH,EAAQI,QAGpD4F,cAAe,SAASA,EAAchG,GACpC,GAAIA,EAAQiG,OAAQ,CAClB,MAAO,GAGT,IAAIC,EAAa,OAEjB,GAAIlG,EAAQmG,cAAgB,OAAQ,CAClCD,EAAa,YACR,GAAIlG,EAAQmG,cAAgB,MAAO,CACxCD,EAAa,MAGf,MAAO,8CAAgDA,IAG3DtG,SAAU,80BAYd,IAAIwG,GAAe3H,EAAqBoB,EAAgBuC,EAAgBkB,EAAgBC,EAAiB6B,EAAgBO,EAAmBG,EAAgBC,GAC5J,IAAIM,KACJD,EAAYE,QAAQ,SAAUC,GAC5BF,EAAiBE,EAAW5H,MAAQ4H,EAAW3H,YAEjDJ,EAAOwD,IAAIpD,UAAU,6BACnBC,OACEC,QACEC,KAAMC,OACNC,YAEFuH,WACEzH,KAAMI,OACNF,QAAS,YAGba,SACE2G,qBAAsB,SAASA,EAAqBC,GAClD,IAAIC,EAA4B,KAChC,IAAIC,EAAoB,MACxB,IAAIC,EAAiBC,UAErB,IACE,IAAK,IAAIC,EAAYX,EAAYY,OAAOC,YAAaC,IAASP,GAA6BO,EAAQH,EAAUI,QAAQC,MAAOT,EAA4B,KAAM,CAC5J,IAAIJ,EAAaW,EAAMG,MAEvB,UAAWX,EAAMH,EAAW7H,YAAc,YAAa,CACrD,OAAO6H,EAAW5H,OAGtB,MAAO2I,GACPV,EAAoB,KACpBC,EAAiBS,EACjB,QACA,IACE,IAAKX,GAA6BI,EAAUQ,QAAU,KAAM,CAC1DR,EAAUQ,UAEZ,QACA,GAAIX,EAAmB,CACrB,MAAMC,IAKZ,MAAO,KAGXzH,UACEF,MAAO,SAASA,IACd,UAAWK,KAAKT,OAAOa,QAAU,cAAgBJ,KAAKT,OAAOa,MAAO,CAClE,OAAOJ,KAAKiH,UAGd,GAAIjH,KAAKT,OAAOa,QAAU,cAAe,CACvC,MAAO,GAGT,OAAOJ,KAAKT,OAAOa,QAGvB6F,WAAYa,EACZzG,SAAU,wZAtkBb,CAykBGL,KAAKyE,OAASzE,KAAKyE,WAAcwD,GAAGC,UAAUC,MAAMF,GAAGC,UAAUE,IAAIH","file":"attach.bundle.map.js"}element/attach/dist/attach.bundle.js.map000066400000106215147744174710014261 0ustar00{"version":3,"file":"attach.bundle.js","sources":["../src/types/delimiter.js","../src/types/file.js","../src/types/grid.js","../src/types/html.js","../src/types/image.js","../src/types/link.js","../src/types/message.js","../src/types/rich.js","../src/types/user.js","../src/attach.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Vue component\n *\n * Delimiter (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./delimiter.css\";\n\nexport const AttachTypeDelimiter =\n{\n\tproperty: 'DELIMITER',\n\tname: 'bx-im-view-element-attach-delimiter',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\tstyles()\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\twidth: this.config.DELIMITER.SIZE? this.config.DELIMITER.SIZE+'px': '',\n\t\t\t\t\tbackgroundColor: this.config.DELIMITER.COLOR? this.config.DELIMITER.COLOR: this.color,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttemplate: `<div class=\"bx-im-element-attach-type-delimiter\" :style=\"styles\">Delimiter</div>`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * File (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./file.css\";\nimport {Vue} from \"ui.vue\";\nimport {FilesModel} from \"im.model\";\nimport {Utils} from \"im.lib.utils\";\n\nexport const AttachTypeFile =\n{\n\tproperty: 'FILE',\n\tname: 'bx-im-element-attach-file',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\topenLink(element)\n\t\t\t{\n\t\t\t\tUtils.platform.openNewPage(element.LINK);\n\t\t\t},\n\t\t\tfile()\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tname: this.config.FILE.NAME,\n\t\t\t\t\textension: this.config.FILE.NAME.split('.').splice(-1)[0],\n\t\t\t\t\tsize: this.config.FILE.SIZE,\n\t\t\t\t};\n\t\t\t},\n\t\t\tfileName(element)\n\t\t\t{\n\t\t\t\tlet maxLength = 70;\n\n\t\t\t\tif (!element.NAME || element.NAME.length < maxLength)\n\t\t\t\t{\n\t\t\t\t\treturn element.NAME;\n\t\t\t\t}\n\n\t\t\t\tlet endWordLength = 10;\n\n\t\t\t\tlet extension = element.NAME.split('.').splice(-1)[0];\n\t\t\t\tlet secondPart = element.NAME.substring(element.NAME.length-1 - (extension.length+1+endWordLength));\n\t\t\t\tlet firstPart = element.NAME.substring(0, maxLength-secondPart.length-3);\n\n\t\t\t\treturn firstPart.trim()+'...'+secondPart.trim();\n\t\t\t},\n\t\t\tfileNameFull(element)\n\t\t\t{\n\t\t\t\treturn Utils.text.htmlspecialcharsback(element.NAME);\n\t\t\t},\n\t\t\tfileSize(element)\n\t\t\t{\n\t\t\t\tlet size = element.SIZE;\n\n\t\t\t\tif (size <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tlet sizes = [\"BYTE\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\t\t\t\tlet position = 0;\n\n\t\t\t\twhile (size >= 1024 && position < 4)\n\t\t\t\t{\n\t\t\t\t\tsize /= 1024;\n\t\t\t\t\tposition++;\n\t\t\t\t}\n\n\t\t\t\treturn Math.round(size) + \" \" + this.localize['IM_MESSENGER_ATTACH_FILE_SIZE_'+sizes[position]];\n\t\t\t},\n\t\t\tfileIcon(element)\n\t\t\t{\n\t\t\t\treturn FilesModel.getIconType(element.NAME.split('.').splice(-1)[0]);\n\t\t\t}\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\tlocalize()\n\t\t\t{\n\t\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_ATTACH_FILE_', this.$root.$bitrixMessages);\n\t\t\t},\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-file-element\">\n\t\t\t\t<template v-for=\"(element, index) in config.FILE\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-file\" @click=\"openLink(element)\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-icon\">\n\t\t\t\t\t\t\t<div :class=\"['ui-icon', 'ui-icon-file-'+fileIcon(element)]\"><i></i></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-block\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-name\" :title=\"fileNameFull(element)\">\n\t\t\t\t\t\t\t\t{{fileName(element)}}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-size\">{{fileSize(element)}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Grid (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./grid.css\";\nimport {Utils} from \"im.lib.utils\";\nimport {MessagesModel} from \"im.model\";\n\nexport const AttachTypeGrid =\n{\n\tproperty: 'GRID',\n\tname: 'bx-im-view-element-attach-grid',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tcreated()\n\t\t{\n\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t{\n\t\t\t\tthis.maxCellWith = Math.floor(Math.min(screen.availWidth, screen.availHeight)/4);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.maxCellWith = null;\n\t\t\t}\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\topenLink(element)\n\t\t\t{\n\t\t\t\tif (element.LINK)\n\t\t\t\t{\n\t\t\t\t\tUtils.platform.openNewPage(element.LINK);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// element.NETWORK_ID\n\t\t\t\t\t// element.USER_ID\n\t\t\t\t\t// element.CHAT_ID\n\t\t\t\t\t// TODO exec openDialog with params\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetWidth(element)\n\t\t\t{\n\t\t\t\tif (this.type !== 'row')\n\t\t\t\t{\n\t\t\t\t\treturn element.WIDTH? element.WIDTH+'px': '';\n\t\t\t\t}\n\n\t\t\t\tif (!element.VALUE)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (this.maxCellWith && element.WIDTH > this.maxCellWith)\n\t\t\t\t{\n\t\t\t\t\treturn this.maxCellWith+'px';\n\t\t\t\t}\n\n\t\t\t\treturn element.WIDTH? element.WIDTH+'px': '';\n\t\t\t},\n\n\t\t\tgetValue(element)\n\t\t\t{\n\t\t\t\tif (!element.VALUE)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn MessagesModel.decodeBbCode({text: element.VALUE});\n\t\t\t},\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\ttype()\n\t\t\t{\n\t\t\t\treturn this.config.GRID[0].DISPLAY.toLowerCase();\n\t\t\t},\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-grid\">\n\t\t\t\t<template v-if=\"type === 'block'\">\n\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-block\" :style=\"{width: getWidth(element)}\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\"></div>\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<div class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\t\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if=\"type === 'line'\">\n\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-card\" :style=\"{width: getWidth(element)}\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></div>\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<div class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if=\"type === 'row'\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-column\">\n\t\t\t\t\t\t<table class=\"bx-im-element-attach-type-display-column-table\">\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.NAME\">\n\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-name\" :colspan=\"element.VALUE? 1: 2\" v-html=\"element.NAME\" :style=\"{width: getWidth(element)}\"></td>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.VALUE\">\n\t\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\" :colspan=\"element.NAME? 1: 2\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\" :colspan=\"element.NAME? 1: 2\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Rich Attach type\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./html.css\";\n\nexport const AttachTypeHtml =\n{\n\tproperty: 'HTML',\n\tname: 'bx-im-view-element-attach-html',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\ttemplate: `<div class=\"bx-im-element-attach-type-html\" v-html=\"config.HTML\"></div>`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Image (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./image.css\";\nimport {Utils} from \"im.lib.utils\";\n\nexport const AttachTypeImage =\n{\n\tproperty: 'IMAGE',\n\tname: 'bx-im-view-element-attach-image',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\topen(file)\n\t\t\t{\n\t\t\t\tif (!file)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\t// TODO add multiply\n\t\t\t\t\tBXMobileApp.UI.Photo.show({photos: [{url: file}], default_photo: file})\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(file, '_blank');\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetImageSize(width, height, maxWidth)\n\t\t\t{\n\t\t\t\tlet aspectRatio;\n\n\t\t\t\tif (width > maxWidth)\n\t\t\t\t{\n\t\t\t\t\taspectRatio = maxWidth / width;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taspectRatio = 1;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twidth: width * aspectRatio,\n\t\t\t\t\theight: height * aspectRatio\n\t\t\t\t};\n\t\t\t},\n\t\t\tgetElementSource(element)\n\t\t\t{\n\t\t\t\treturn element.PREVIEW? element.PREVIEW: element.LINK;\n\t\t\t},\n\t\t\tgetElementTitle(element)\n\t\t\t{\n\t\t\t\treturn Utils.text.htmlspecialcharsback(element.NAME);\n\t\t\t},\n\t\t\tlazyLoadCallback(event)\n\t\t\t{\n\t\t\t\tif (!event.element.style.width)\n\t\t\t\t{\n\t\t\t\t\tevent.element.style.width = event.element.offsetWidth+'px';\n\t\t\t\t}\n\t\t\t\tif (!event.element.style.height)\n\t\t\t\t{\n\t\t\t\t\tevent.element.style.height = event.element.offsetHeight+'px';\n\t\t\t\t}\n\t\t\t},\n\t\t\tstyleFileSizes(image)\n\t\t\t{\n\t\t\t\tif (!(image.WIDTH && image.HEIGHT))\n\t\t\t\t{\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmaxHeight: '100%',\n\t\t\t\t\t\tbackgroundSize: 'contain'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tlet sizes = this.getImageSize(image.WIDTH, image.HEIGHT, 250);\n\n\t\t\t\treturn {\n\t\t\t\t\twidth: sizes.width+'px',\n\t\t\t\t\theight: sizes.height+'px',\n\t\t\t\t\tbackgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'\n\t\t\t\t}\n\t\t\t},\n\t\t\tstyleBoxSizes(image)\n\t\t\t{\n\t\t\t\tif (!(image.WIDTH && image.HEIGHT))\n\t\t\t\t{\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: '150px'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (parseInt(this.styleFileSizes(image).height) <= 250)\n\t\t\t\t{\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\theight: '280px'\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-image\">\n\t\t\t\t<template v-for=\"(image, index) in config.IMAGE\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-image-block\" @click=\"open(image.LINK)\" :style=\"styleBoxSizes(image)\" :key=\"index\">\n\t\t\t\t\t\t<img v-bx-lazyload=\"{callback: lazyLoadCallback}\"\n\t\t\t\t\t\t\tclass=\"bx-im-element-attach-type-image-source\"\n\t\t\t\t\t\t\t:data-lazyload-src=\"getElementSource(image)\"\n\t\t\t\t\t\t\t:style=\"styleFileSizes(image)\"\n\t\t\t\t\t\t\t:title=\"getElementTitle(image)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Link (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./link.css\";\nimport {AttachTypeImage} from \"./image\";\nimport {Utils} from \"im.lib.utils\";\n\nexport const AttachTypeLink =\n{\n\tproperty: 'LINK',\n\tname: 'bx-im-view-element-attach-link',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\tgetImageConfig(element)\n\t\t\t{\n\t\t\t\treturn {IMAGE: [{\n\t\t\t\t\tNAME: element.NAME,\n\t\t\t\t\tPREVIEW: element.PREVIEW,\n\t\t\t\t\tWIDTH: element.WIDTH,\n\t\t\t\t\tHEIGHT: element.HEIGHT,\n\t\t\t\t}]};\n\t\t\t},\n\t\t\topenLink(element)\n\t\t\t{\n\t\t\t\tif (element.LINK)\n\t\t\t\t{\n\t\t\t\t\tUtils.platform.openNewPage(element.LINK);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// element.NETWORK_ID\n\t\t\t\t\t// element.USER_ID\n\t\t\t\t\t// element.CHAT_ID\n\t\t\t\t\t// TODO exec openDialog with params\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\timageComponentName()\n\t\t\t{\n\t\t\t\treturn AttachTypeImage.name;\n\t\t\t}\n\t\t},\n\t\tcomponents:\n\t\t{\n\t\t\t[AttachTypeImage.name]: AttachTypeImage.component\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-link\">\n\t\t\t\t<template v-for=\"(element, index) in config.LINK\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-link-element\" :key=\"index\">\n\t\t\t\t\t\t<div v-if=\"element.PREVIEW\" class=\"bx-im-element-attach-type-link-image\" @click=\"openLink(element)\">\n\t\t\t\t\t\t\t<component :is=\"imageComponentName\" :config=\"getImageConfig(element)\" :color=\"color\"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-link-name\" @click=\"openLink(element)\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t<div v-if=\"element.DESC\" class=\"bx-im-element-attach-type-link-desc\" v-html=\"element.DESC\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Message (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport {MessagesModel} from \"im.model\";\n\nexport const AttachTypeMessage =\n{\n\tproperty: 'MESSAGE',\n\tname: 'bx-im-view-element-attach-message',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\tmessage()\n\t\t\t{\n\t\t\t\treturn MessagesModel.decodeBbCode({text: this.config.MESSAGE});\n\t\t\t}\n\t\t},\n\t\ttemplate: `<div class=\"bx-im-element-attach-type-message\" v-html=\"message\"></div>`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * Rich (attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./rich.css\";\nimport {AttachTypeImage} from \"./image\";\nimport {Utils} from \"im.lib.utils\";\n\nexport const AttachTypeRich =\n{\n\tproperty: 'RICH_LINK',\n\tname: 'bx-im-view-element-attach-rich',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\tgetImageConfig(element)\n\t\t\t{\n\t\t\t\treturn {IMAGE: [{\n\t\t\t\t\tNAME: element.NAME,\n\t\t\t\t\tPREVIEW: element.PREVIEW,\n\t\t\t\t\tWIDTH: element.WIDTH,\n\t\t\t\t\tHEIGHT: element.HEIGHT,\n\t\t\t\t}]};\n\t\t\t},\n\t\t\topenLink(element)\n\t\t\t{\n\t\t\t\tif (element.LINK)\n\t\t\t\t{\n\t\t\t\t\tUtils.platform.openNewPage(element.LINK);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// element.NETWORK_ID\n\t\t\t\t\t// element.USER_ID\n\t\t\t\t\t// element.CHAT_ID\n\t\t\t\t\t// TODO exec openDialog with params\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcomputed:\n\t\t{\n\t\t\timageComponentName()\n\t\t\t{\n\t\t\t\treturn AttachTypeImage.name;\n\t\t\t}\n\t\t},\n\t\tcomponents:\n\t\t{\n\t\t\t[AttachTypeImage.name]: AttachTypeImage.component\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-rich\">\n\t\t\t\t<template v-for=\"(element, index) in config.RICH_LINK\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-rich-element\" :key=\"index\">\n\t\t\t\t\t\t<div v-if=\"element.PREVIEW\" class=\"bx-im-element-attach-type-rich-image\" @click=\"openLink(element)\">\n\t\t\t\t\t\t\t<component :is=\"imageComponentName\" :config=\"getImageConfig(element)\" :color=\"color\"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-rich-name\" @click=\"openLink(element)\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t<div v-if=\"element.DESC\" class=\"bx-im-element-attach-type-rich-desc\" v-html=\"element.DESC\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Vue component\n *\n * User (Attach type)\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport \"./user.css\";\nimport {Utils} from \"im.lib.utils\";\n\nexport const AttachTypeUser =\n{\n\tproperty: 'USER',\n\tname: 'bx-im-view-element-attach-user',\n\tcomponent:\n\t{\n\t\tprops:\n\t\t{\n\t\t\tconfig: {type: Object, default: {}},\n\t\t\tcolor: {type: String, default: 'transparent'},\n\t\t},\n\t\tmethods:\n\t\t{\n\t\t\topenLink(element)\n\t\t\t{\n\t\t\t\tif (element.LINK)\n\t\t\t\t{\n\t\t\t\t\tUtils.platform.openNewPage(element.LINK);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// element.NETWORK_ID\n\t\t\t\t\t// element.USER_ID\n\t\t\t\t\t// element.CHAT_ID\n\t\t\t\t\t// TODO exec openDialog with params\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetAvatarType(element)\n\t\t\t{\n\t\t\t\tif (element.AVATAR)\n\t\t\t\t{\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tlet avatarType = 'user';\n\n\t\t\t\tif (element.AVATAR_TYPE === 'CHAT')\n\t\t\t\t{\n\t\t\t\t\tavatarType = 'chat';\n\t\t\t\t}\n\t\t\t\telse if (element.AVATAR_TYPE === 'BOT')\n\t\t\t\t{\n\t\t\t\t\tavatarType = 'bot';\n\t\t\t\t}\n\n\t\t\t\treturn 'bx-im-element-attach-type-user-avatar-type-'+avatarType;\n\t\t\t}\n\t\t},\n\t\ttemplate: `\n\t\t\t<div class=\"bx-im-element-attach-type-user\">\n\t\t\t\t<template v-for=\"(element, index) in config.USER\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-body\" @click=\"openLink(element)\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-avatar\">\n\t\t\t\t\t\t\t<div :class=\"['bx-im-element-attach-type-user-avatar-type', getAvatarType(element)]\" :style=\"{backgroundColor: element.AVATAR? '': color}\">\n\t\t\t\t\t\t\t\t<img v-if=\"element.AVATAR\" \n\t\t\t\t\t\t\t\t\tv-bx-lazyload\n\t\t\t\t\t\t\t\t\tclass=\"bx-im-element-attach-type-user-avatar-source\"\n\t\t\t\t\t\t\t\t\t:data-lazyload-src=\"element.AVATAR\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t`\n\t},\n};","/**\n * Bitrix Messenger\n * Attach element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './attach.css';\n\nimport {AttachTypeDelimiter} from './types/delimiter';\nimport {AttachTypeFile} from './types/file';\nimport {AttachTypeGrid} from './types/grid';\nimport {AttachTypeHtml} from './types/html';\nimport {AttachTypeImage} from './types/image';\nimport {AttachTypeLink} from './types/link';\nimport {AttachTypeMessage} from './types/message';\nimport {AttachTypeRich} from './types/rich';\nimport {AttachTypeUser} from './types/user';\n\nimport {Vue} from 'ui.vue';\n\nconst AttachTypes = [\n\tAttachTypeDelimiter,\n\tAttachTypeFile,\n\tAttachTypeGrid,\n\tAttachTypeHtml,\n\tAttachTypeImage,\n\tAttachTypeLink,\n\tAttachTypeMessage,\n\tAttachTypeRich,\n\tAttachTypeUser\n];\n\nconst AttachComponents = {};\nAttachTypes.forEach(attachType => {\n\tAttachComponents[attachType.name] = attachType.component;\n});\n\nVue.component('bx-im-view-element-attach',\n{\n\tprops:\n\t{\n\t\tconfig: {type: Object, default: {}},\n\t\tbaseColor: {type: String, default: '#17a3ea'},\n\t},\n\tmethods:\n\t{\n\t\tgetComponentForBlock(block)\n\t\t{\n\t\t\tfor (let attachType of AttachTypes)\n\t\t\t{\n\t\t\t\tif (typeof block[attachType.property] !== 'undefined')\n\t\t\t\t{\n\t\t\t\t\treturn attachType.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn '';\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tcolor()\n\t\t{\n\t\t\tif (\n\t\t\t\ttypeof(this.config.COLOR) === 'undefined'\n\t\t\t\t|| !this.config.COLOR\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn this.baseColor;\n\t\t\t}\n\n\t\t\tif (this.config.COLOR === 'transparent')\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn this.config.COLOR;\n\t\t},\n\t},\n\tcomponents: AttachComponents,\n\ttemplate: `\n\t\t<div class=\"bx-im-element-attach\">\n\t\t\t<div v-if=\"color\" class=\"bx-im-element-attach-border\" :style=\"{borderColor: color}\"></div>\n\t\t\t<div class=\"bx-im-element-attach-content\">\n\t\t\t\t<template v-for=\"(block, index) in config.BLOCKS\">\n\t\t\t\t\t<component :is=\"getComponentForBlock(block)\" :config=\"block\" :color=\"color\" :key=\"index\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t`\n});"],"names":["AttachTypeDelimiter","property","name","component","props","config","type","Object","default","color","String","computed","styles","width","DELIMITER","SIZE","backgroundColor","COLOR","template","AttachTypeFile","methods","openLink","element","Utils","platform","openNewPage","LINK","file","FILE","NAME","extension","split","splice","size","fileName","maxLength","length","endWordLength","secondPart","substring","firstPart","trim","fileNameFull","text","htmlspecialcharsback","fileSize","sizes","position","Math","round","localize","fileIcon","FilesModel","getIconType","Vue","getFilteredPhrases","$root","$bitrixMessages","AttachTypeGrid","created","isBitrixMobile","maxCellWith","floor","min","screen","availWidth","availHeight","getWidth","WIDTH","VALUE","getValue","MessagesModel","decodeBbCode","GRID","DISPLAY","toLowerCase","AttachTypeHtml","AttachTypeImage","open","BXMobileApp","UI","Photo","show","photos","url","default_photo","window","getImageSize","height","maxWidth","aspectRatio","getElementSource","PREVIEW","getElementTitle","lazyLoadCallback","event","style","offsetWidth","offsetHeight","styleFileSizes","image","HEIGHT","maxHeight","backgroundSize","styleBoxSizes","parseInt","AttachTypeLink","getImageConfig","IMAGE","imageComponentName","components","AttachTypeMessage","message","MESSAGE","AttachTypeRich","AttachTypeUser","getAvatarType","AVATAR","avatarType","AVATAR_TYPE","AttachTypes","AttachComponents","forEach","attachType","baseColor","getComponentForBlock","block"],"mappings":";;;CAAA;;;;;;;;;;AAWA,CAEO,IAAMA,mBAAmB,GAChC;CACCC,EAAAA,QAAQ,EAAE,WADX;CAECC,EAAAA,IAAI,EAAE,qCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCG,IAAAA,QAAQ,EACR;CACCC,MAAAA,MADD,oBAEC;CACC,eAAO;CACNC,UAAAA,KAAK,EAAE,KAAKR,MAAL,CAAYS,SAAZ,CAAsBC,IAAtB,GAA4B,KAAKV,MAAL,CAAYS,SAAZ,CAAsBC,IAAtB,GAA2B,IAAvD,GAA6D,EAD9D;CAENC,UAAAA,eAAe,EAAE,KAAKX,MAAL,CAAYS,SAAZ,CAAsBG,KAAtB,GAA6B,KAAKZ,MAAL,CAAYS,SAAZ,CAAsBG,KAAnD,GAA0D,KAAKR;CAF1E,SAAP;CAIA;CAPF,KAPD;CAgBCS,IAAAA,QAAQ;CAhBT;CAJD,CADO;;CCbP;;;;;;;;;;AAWA,CAKO,IAAMC,cAAc,GAC3B;CACClB,EAAAA,QAAQ,EAAE,MADX;CAECC,EAAAA,IAAI,EAAE,2BAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCY,IAAAA,OAAO,EACP;CACCC,MAAAA,QADD,oBACUC,OADV,EAEC;CACCC,QAAAA,kBAAK,CAACC,QAAN,CAAeC,WAAf,CAA2BH,OAAO,CAACI,IAAnC;CACA,OAJF;CAKCC,MAAAA,IALD,kBAMC;CACC,eAAO;CACNzB,UAAAA,IAAI,EAAE,KAAKG,MAAL,CAAYuB,IAAZ,CAAiBC,IADjB;CAENC,UAAAA,SAAS,EAAE,KAAKzB,MAAL,CAAYuB,IAAZ,CAAiBC,IAAjB,CAAsBE,KAAtB,CAA4B,GAA5B,EAAiCC,MAAjC,CAAwC,CAAC,CAAzC,EAA4C,CAA5C,CAFL;CAGNC,UAAAA,IAAI,EAAE,KAAK5B,MAAL,CAAYuB,IAAZ,CAAiBb;CAHjB,SAAP;CAKA,OAZF;CAaCmB,MAAAA,QAbD,oBAaUZ,OAbV,EAcC;CACC,YAAIa,SAAS,GAAG,EAAhB;;CAEA,YAAI,CAACb,OAAO,CAACO,IAAT,IAAiBP,OAAO,CAACO,IAAR,CAAaO,MAAb,GAAsBD,SAA3C,EACA;CACC,iBAAOb,OAAO,CAACO,IAAf;CACA;;CAED,YAAIQ,aAAa,GAAG,EAApB;CAEA,YAAIP,SAAS,GAAGR,OAAO,CAACO,IAAR,CAAaE,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+B,CAAC,CAAhC,EAAmC,CAAnC,CAAhB;CACA,YAAIM,UAAU,GAAGhB,OAAO,CAACO,IAAR,CAAaU,SAAb,CAAuBjB,OAAO,CAACO,IAAR,CAAaO,MAAb,GAAoB,CAApB,IAAyBN,SAAS,CAACM,MAAV,GAAiB,CAAjB,GAAmBC,aAA5C,CAAvB,CAAjB;CACA,YAAIG,SAAS,GAAGlB,OAAO,CAACO,IAAR,CAAaU,SAAb,CAAuB,CAAvB,EAA0BJ,SAAS,GAACG,UAAU,CAACF,MAArB,GAA4B,CAAtD,CAAhB;CAEA,eAAOI,SAAS,CAACC,IAAV,KAAiB,KAAjB,GAAuBH,UAAU,CAACG,IAAX,EAA9B;CACA,OA7BF;CA8BCC,MAAAA,YA9BD,wBA8BcpB,OA9Bd,EA+BC;CACC,eAAOC,kBAAK,CAACoB,IAAN,CAAWC,oBAAX,CAAgCtB,OAAO,CAACO,IAAxC,CAAP;CACA,OAjCF;CAkCCgB,MAAAA,QAlCD,oBAkCUvB,OAlCV,EAmCC;CACC,YAAIW,IAAI,GAAGX,OAAO,CAACP,IAAnB;;CAEA,YAAIkB,IAAI,IAAI,CAAZ,EACA;CACC,iBAAO,EAAP;CACA;;CAED,YAAIa,KAAK,GAAG,CAAC,MAAD,EAAS,IAAT,EAAe,IAAf,EAAqB,IAArB,EAA2B,IAA3B,CAAZ;CACA,YAAIC,QAAQ,GAAG,CAAf;;CAEA,eAAOd,IAAI,IAAI,IAAR,IAAgBc,QAAQ,GAAG,CAAlC,EACA;CACCd,UAAAA,IAAI,IAAI,IAAR;CACAc,UAAAA,QAAQ;CACR;;CAED,eAAOC,IAAI,CAACC,KAAL,CAAWhB,IAAX,IAAmB,GAAnB,GAAyB,KAAKiB,QAAL,CAAc,mCAAiCJ,KAAK,CAACC,QAAD,CAApD,CAAhC;CACA,OArDF;CAsDCI,MAAAA,QAtDD,oBAsDU7B,OAtDV,EAuDC;CACC,eAAO8B,mBAAU,CAACC,WAAX,CAAuB/B,OAAO,CAACO,IAAR,CAAaE,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+B,CAAC,CAAhC,EAAmC,CAAnC,CAAvB,CAAP;CACA;CAzDF,KAPD;CAkECrB,IAAAA,QAAQ,EACR;CACCuC,MAAAA,QADD,sBAEC;CACC,eAAOI,UAAG,CAACC,kBAAJ,CAAuB,2BAAvB,EAAoD,KAAKC,KAAL,CAAWC,eAA/D,CAAP;CACA;CAJF,KAnED;CAyECvC,IAAAA,QAAQ;CAzET;CAJD,CADO;;CChBP;;;;;;;;;;AAWA,CAIO,IAAMwC,cAAc,GAC3B;CACCzD,EAAAA,QAAQ,EAAE,MADX;CAECC,EAAAA,IAAI,EAAE,gCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCmD,IAAAA,OAND,qBAOC;CACC,UAAIpC,kBAAK,CAACC,QAAN,CAAeoC,cAAf,EAAJ,EACA;CACC,aAAKC,WAAL,GAAmBb,IAAI,CAACc,KAAL,CAAWd,IAAI,CAACe,GAAL,CAASC,MAAM,CAACC,UAAhB,EAA4BD,MAAM,CAACE,WAAnC,IAAgD,CAA3D,CAAnB;CACA,OAHD,MAKA;CACC,aAAKL,WAAL,GAAmB,IAAnB;CACA;CACD,KAhBF;CAiBCzC,IAAAA,OAAO,EACP;CACCC,MAAAA,QADD,oBACUC,OADV,EAEC;CACC,YAAIA,OAAO,CAACI,IAAZ,EACA;CACCH,UAAAA,kBAAK,CAACC,QAAN,CAAeC,WAAf,CAA2BH,OAAO,CAACI,IAAnC;CACA,SAHD;CAWA,OAdF;CAeCyC,MAAAA,QAfD,oBAeU7C,OAfV,EAgBC;CACC,YAAI,KAAKhB,IAAL,KAAc,KAAlB,EACA;CACC,iBAAOgB,OAAO,CAAC8C,KAAR,GAAe9C,OAAO,CAAC8C,KAAR,GAAc,IAA7B,GAAmC,EAA1C;CACA;;CAED,YAAI,CAAC9C,OAAO,CAAC+C,KAAb,EACA;CACC,iBAAO,KAAP;CACA;;CAED,YAAI,KAAKR,WAAL,IAAoBvC,OAAO,CAAC8C,KAAR,GAAgB,KAAKP,WAA7C,EACA;CACC,iBAAO,KAAKA,WAAL,GAAiB,IAAxB;CACA;;CAED,eAAOvC,OAAO,CAAC8C,KAAR,GAAe9C,OAAO,CAAC8C,KAAR,GAAc,IAA7B,GAAmC,EAA1C;CACA,OAjCF;CAmCCE,MAAAA,QAnCD,oBAmCUhD,OAnCV,EAoCC;CACC,YAAI,CAACA,OAAO,CAAC+C,KAAb,EACA;CACC,iBAAO,EAAP;CACA;;CAED,eAAOE,sBAAa,CAACC,YAAd,CAA2B;CAAC7B,UAAAA,IAAI,EAAErB,OAAO,CAAC+C;CAAf,SAA3B,CAAP;CACA;CA3CF,KAlBD;CA+DC1D,IAAAA,QAAQ,EACR;CACCL,MAAAA,IADD,kBAEC;CACC,eAAO,KAAKD,MAAL,CAAYoE,IAAZ,CAAiB,CAAjB,EAAoBC,OAApB,CAA4BC,WAA5B,EAAP;CACA;CAJF,KAhED;CAsECzD,IAAAA,QAAQ;CAtET;CAJD,CADO;;CCfP;;;;;;;;;;AAWA,CAEO,IAAM0D,cAAc,GAC3B;CACC3E,EAAAA,QAAQ,EAAE,MADX;CAECC,EAAAA,IAAI,EAAE,gCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCU,IAAAA,QAAQ;CANT;CAJD,CADO;;CCbP;;;;;;;;;;AAWA,CAGO,IAAM2D,eAAe,GAC5B;CACC5E,EAAAA,QAAQ,EAAE,OADX;CAECC,EAAAA,IAAI,EAAE,iCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCY,IAAAA,OAAO,EACP;CACC0D,MAAAA,IADD,gBACMnD,IADN,EAEC;CACC,YAAI,CAACA,IAAL,EACA;CACC,iBAAO,KAAP;CACA;;CAED,YAAIJ,kBAAK,CAACC,QAAN,CAAeoC,cAAf,EAAJ,EACA;CACC;CACAmB,UAAAA,WAAW,CAACC,EAAZ,CAAeC,KAAf,CAAqBC,IAArB,CAA0B;CAACC,YAAAA,MAAM,EAAE,CAAC;CAACC,cAAAA,GAAG,EAAEzD;CAAN,aAAD,CAAT;CAAwB0D,YAAAA,aAAa,EAAE1D;CAAvC,WAA1B;CACA,SAJD,MAMA;CACC2D,UAAAA,MAAM,CAACR,IAAP,CAAYnD,IAAZ,EAAkB,QAAlB;CACA;CACD,OAjBF;CAkBC4D,MAAAA,YAlBD,wBAkBc1E,KAlBd,EAkBqB2E,MAlBrB,EAkB6BC,QAlB7B,EAmBC;CACC,YAAIC,WAAJ;;CAEA,YAAI7E,KAAK,GAAG4E,QAAZ,EACA;CACCC,UAAAA,WAAW,GAAGD,QAAQ,GAAG5E,KAAzB;CACA,SAHD,MAKA;CACC6E,UAAAA,WAAW,GAAG,CAAd;CACA;;CAED,eAAO;CACN7E,UAAAA,KAAK,EAAEA,KAAK,GAAG6E,WADT;CAENF,UAAAA,MAAM,EAAEA,MAAM,GAAGE;CAFX,SAAP;CAIA,OAnCF;CAoCCC,MAAAA,gBApCD,4BAoCkBrE,OApClB,EAqCC;CACC,eAAOA,OAAO,CAACsE,OAAR,GAAiBtE,OAAO,CAACsE,OAAzB,GAAkCtE,OAAO,CAACI,IAAjD;CACA,OAvCF;CAwCCmE,MAAAA,eAxCD,2BAwCiBvE,OAxCjB,EAyCC;CACC,eAAOC,kBAAK,CAACoB,IAAN,CAAWC,oBAAX,CAAgCtB,OAAO,CAACO,IAAxC,CAAP;CACA,OA3CF;CA4CCiE,MAAAA,gBA5CD,4BA4CkBC,KA5ClB,EA6CC;CACC,YAAI,CAACA,KAAK,CAACzE,OAAN,CAAc0E,KAAd,CAAoBnF,KAAzB,EACA;CACCkF,UAAAA,KAAK,CAACzE,OAAN,CAAc0E,KAAd,CAAoBnF,KAApB,GAA4BkF,KAAK,CAACzE,OAAN,CAAc2E,WAAd,GAA0B,IAAtD;CACA;;CACD,YAAI,CAACF,KAAK,CAACzE,OAAN,CAAc0E,KAAd,CAAoBR,MAAzB,EACA;CACCO,UAAAA,KAAK,CAACzE,OAAN,CAAc0E,KAAd,CAAoBR,MAApB,GAA6BO,KAAK,CAACzE,OAAN,CAAc4E,YAAd,GAA2B,IAAxD;CACA;CACD,OAtDF;CAuDCC,MAAAA,cAvDD,0BAuDgBC,KAvDhB,EAwDC;CACC,YAAI,EAAEA,KAAK,CAAChC,KAAN,IAAegC,KAAK,CAACC,MAAvB,CAAJ,EACA;CACC,iBAAO;CACNC,YAAAA,SAAS,EAAE,MADL;CAENC,YAAAA,cAAc,EAAE;CAFV,WAAP;CAIA;;CAED,YAAIzD,KAAK,GAAG,KAAKyC,YAAL,CAAkBa,KAAK,CAAChC,KAAxB,EAA+BgC,KAAK,CAACC,MAArC,EAA6C,GAA7C,CAAZ;CAEA,eAAO;CACNxF,UAAAA,KAAK,EAAEiC,KAAK,CAACjC,KAAN,GAAY,IADb;CAEN2E,UAAAA,MAAM,EAAE1C,KAAK,CAAC0C,MAAN,GAAa,IAFf;CAGNe,UAAAA,cAAc,EAAEzD,KAAK,CAACjC,KAAN,GAAc,GAAd,IAAqBiC,KAAK,CAAC0C,MAAN,GAAe,GAApC,GAAyC,SAAzC,GAAoD;CAH9D,SAAP;CAKA,OAxEF;CAyECgB,MAAAA,aAzED,yBAyEeJ,KAzEf,EA0EC;CACC,YAAI,EAAEA,KAAK,CAAChC,KAAN,IAAegC,KAAK,CAACC,MAAvB,CAAJ,EACA;CACC,iBAAO;CACNb,YAAAA,MAAM,EAAE;CADF,WAAP;CAGA;;CAED,YAAIiB,QAAQ,CAAC,KAAKN,cAAL,CAAoBC,KAApB,EAA2BZ,MAA5B,CAAR,IAA+C,GAAnD,EACA;CACC,iBAAO,EAAP;CACA;;CAED,eAAO;CACNA,UAAAA,MAAM,EAAE;CADF,SAAP;CAGA;CA1FF,KAPD;CAmGCtE,IAAAA,QAAQ;CAnGT;CAJD,CADO;;CCdP;;;;;;;;;;AAWA,CAIO,IAAMwF,cAAc,GAC3B;CACCzG,EAAAA,QAAQ,EAAE,MADX;CAECC,EAAAA,IAAI,EAAE,gCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCY,IAAAA,OAAO,EACP;CACCuF,MAAAA,cADD,0BACgBrF,OADhB,EAEC;CACC,eAAO;CAACsF,UAAAA,KAAK,EAAE,CAAC;CACf/E,YAAAA,IAAI,EAAEP,OAAO,CAACO,IADC;CAEf+D,YAAAA,OAAO,EAAEtE,OAAO,CAACsE,OAFF;CAGfxB,YAAAA,KAAK,EAAE9C,OAAO,CAAC8C,KAHA;CAIfiC,YAAAA,MAAM,EAAE/E,OAAO,CAAC+E;CAJD,WAAD;CAAR,SAAP;CAMA,OATF;CAUChF,MAAAA,QAVD,oBAUUC,OAVV,EAWC;CACC,YAAIA,OAAO,CAACI,IAAZ,EACA;CACCH,UAAAA,kBAAK,CAACC,QAAN,CAAeC,WAAf,CAA2BH,OAAO,CAACI,IAAnC;CACA,SAHD;CAWA;CAvBF,KAPD;CAgCCf,IAAAA,QAAQ,EACR;CACCkG,MAAAA,kBADD,gCAEC;CACC,eAAOhC,eAAe,CAAC3E,IAAvB;CACA;CAJF,KAjCD;CAuCC4G,IAAAA,UAAU,kCAERjC,eAAe,CAAC3E,IAFR,EAEe2E,eAAe,CAAC1E,SAF/B,CAvCX;CA2CCe,IAAAA,QAAQ;CA3CT;CAJD,CADO;;CCfP;;;;;;;;;;AAWA,CAEO,IAAM6F,iBAAiB,GAC9B;CACC9G,EAAAA,QAAQ,EAAE,SADX;CAECC,EAAAA,IAAI,EAAE,mCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCG,IAAAA,QAAQ,EACR;CACCqG,MAAAA,OADD,qBAEC;CACC,eAAOzC,sBAAa,CAACC,YAAd,CAA2B;CAAC7B,UAAAA,IAAI,EAAE,KAAKtC,MAAL,CAAY4G;CAAnB,SAA3B,CAAP;CACA;CAJF,KAPD;CAaC/F,IAAAA,QAAQ;CAbT;CAJD,CADO;;CCbP;;;;;;;;;;AAWA,CAIO,IAAMgG,cAAc,GAC3B;CACCjH,EAAAA,QAAQ,EAAE,WADX;CAECC,EAAAA,IAAI,EAAE,gCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCY,IAAAA,OAAO,EACP;CACCuF,MAAAA,cADD,0BACgBrF,OADhB,EAEC;CACC,eAAO;CAACsF,UAAAA,KAAK,EAAE,CAAC;CACf/E,YAAAA,IAAI,EAAEP,OAAO,CAACO,IADC;CAEf+D,YAAAA,OAAO,EAAEtE,OAAO,CAACsE,OAFF;CAGfxB,YAAAA,KAAK,EAAE9C,OAAO,CAAC8C,KAHA;CAIfiC,YAAAA,MAAM,EAAE/E,OAAO,CAAC+E;CAJD,WAAD;CAAR,SAAP;CAMA,OATF;CAUChF,MAAAA,QAVD,oBAUUC,OAVV,EAWC;CACC,YAAIA,OAAO,CAACI,IAAZ,EACA;CACCH,UAAAA,kBAAK,CAACC,QAAN,CAAeC,WAAf,CAA2BH,OAAO,CAACI,IAAnC;CACA,SAHD;CAWA;CAvBF,KAPD;CAgCCf,IAAAA,QAAQ,EACR;CACCkG,MAAAA,kBADD,gCAEC;CACC,eAAOhC,eAAe,CAAC3E,IAAvB;CACA;CAJF,KAjCD;CAuCC4G,IAAAA,UAAU,kCAERjC,eAAe,CAAC3E,IAFR,EAEe2E,eAAe,CAAC1E,SAF/B,CAvCX;CA2CCe,IAAAA,QAAQ;CA3CT;CAJD,CADO;;CCfP;;;;;;;;;;AAWA,CAGO,IAAMiG,cAAc,GAC3B;CACClH,EAAAA,QAAQ,EAAE,MADX;CAECC,EAAAA,IAAI,EAAE,gCAFP;CAGCC,EAAAA,SAAS,EACT;CACCC,IAAAA,KAAK,EACL;CACCC,MAAAA,MAAM,EAAE;CAACC,QAAAA,IAAI,EAAEC,MAAP;CAAeC,QAAAA,OAAO,EAAE;CAAxB,OADT;CAECC,MAAAA,KAAK,EAAE;CAACH,QAAAA,IAAI,EAAEI,MAAP;CAAeF,QAAAA,OAAO,EAAE;CAAxB;CAFR,KAFD;CAMCY,IAAAA,OAAO,EACP;CACCC,MAAAA,QADD,oBACUC,OADV,EAEC;CACC,YAAIA,OAAO,CAACI,IAAZ,EACA;CACCH,UAAAA,kBAAK,CAACC,QAAN,CAAeC,WAAf,CAA2BH,OAAO,CAACI,IAAnC;CACA,SAHD;CAWA,OAdF;CAeC0F,MAAAA,aAfD,yBAee9F,OAff,EAgBC;CACC,YAAIA,OAAO,CAAC+F,MAAZ,EACA;CACC,iBAAO,EAAP;CACA;;CAED,YAAIC,UAAU,GAAG,MAAjB;;CAEA,YAAIhG,OAAO,CAACiG,WAAR,KAAwB,MAA5B,EACA;CACCD,UAAAA,UAAU,GAAG,MAAb;CACA,SAHD,MAIK,IAAIhG,OAAO,CAACiG,WAAR,KAAwB,KAA5B,EACL;CACCD,UAAAA,UAAU,GAAG,KAAb;CACA;;CAED,eAAO,gDAA8CA,UAArD;CACA;CAlCF,KAPD;CA2CCpG,IAAAA,QAAQ;CA3CT;CAJD,CADO;;CCdP;;;;;;;;AASA,CAcA,IAAMsG,WAAW,GAAG,CACnBxH,mBADmB,EAEnBmB,cAFmB,EAGnBuC,cAHmB,EAInBkB,cAJmB,EAKnBC,eALmB,EAMnB6B,cANmB,EAOnBK,iBAPmB,EAQnBG,cARmB,EASnBC,cATmB,CAApB;CAYA,IAAMM,gBAAgB,GAAG,EAAzB;CACAD,WAAW,CAACE,OAAZ,CAAoB,UAAAC,UAAU,EAAI;CACjCF,EAAAA,gBAAgB,CAACE,UAAU,CAACzH,IAAZ,CAAhB,GAAoCyH,UAAU,CAACxH,SAA/C;CACA,CAFD;AAIAmD,WAAG,CAACnD,SAAJ,CAAc,2BAAd,EACA;CACCC,EAAAA,KAAK,EACL;CACCC,IAAAA,MAAM,EAAE;CAACC,MAAAA,IAAI,EAAEC,MAAP;CAAeC,MAAAA,OAAO,EAAE;CAAxB,KADT;CAECoH,IAAAA,SAAS,EAAE;CAACtH,MAAAA,IAAI,EAAEI,MAAP;CAAeF,MAAAA,OAAO,EAAE;CAAxB;CAFZ,GAFD;CAMCY,EAAAA,OAAO,EACP;CACCyG,IAAAA,oBADD,gCACsBC,KADtB,EAEC;CAAA;CAAA;CAAA;;CAAA;CACC,6BAAuBN,WAAvB,8HACA;CAAA,cADSG,UACT;;CACC,cAAI,OAAOG,KAAK,CAACH,UAAU,CAAC1H,QAAZ,CAAZ,KAAsC,WAA1C,EACA;CACC,mBAAO0H,UAAU,CAACzH,IAAlB;CACA;CACD;CAPF;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;;CASC,aAAO,EAAP;CACA;CAZF,GAPD;CAqBCS,EAAAA,QAAQ,EACR;CACCF,IAAAA,KADD,mBAEC;CACC,UACC,OAAO,KAAKJ,MAAL,CAAYY,KAAnB,KAA8B,WAA9B,IACG,CAAC,KAAKZ,MAAL,CAAYY,KAFjB,EAIA;CACC,eAAO,KAAK2G,SAAZ;CACA;;CAED,UAAI,KAAKvH,MAAL,CAAYY,KAAZ,KAAsB,aAA1B,EACA;CACC,eAAO,EAAP;CACA;;CAED,aAAO,KAAKZ,MAAL,CAAYY,KAAnB;CACA;CAjBF,GAtBD;CAyCC6F,EAAAA,UAAU,EAAEW,gBAzCb;CA0CCvG,EAAAA,QAAQ;CA1CT,CADA;;;;"}element/attach/dist/attach.bundle.js000066400000052520147744174710013504 0ustar00(function (exports,im_model,im_lib_utils,ui_vue) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Delimiter (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeDelimiter = {
	  property: 'DELIMITER',
	  name: 'bx-im-view-element-attach-delimiter',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    computed: {
	      styles: function styles() {
	        return {
	          width: this.config.DELIMITER.SIZE ? this.config.DELIMITER.SIZE + 'px' : '',
	          backgroundColor: this.config.DELIMITER.COLOR ? this.config.DELIMITER.COLOR : this.color
	        };
	      }
	    },
	    template: "<div class=\"bx-im-element-attach-type-delimiter\" :style=\"styles\">Delimiter</div>"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * File (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeFile = {
	  property: 'FILE',
	  name: 'bx-im-element-attach-file',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      openLink: function openLink(element) {
	        im_lib_utils.Utils.platform.openNewPage(element.LINK);
	      },
	      file: function file() {
	        return {
	          name: this.config.FILE.NAME,
	          extension: this.config.FILE.NAME.split('.').splice(-1)[0],
	          size: this.config.FILE.SIZE
	        };
	      },
	      fileName: function fileName(element) {
	        var maxLength = 70;

	        if (!element.NAME || element.NAME.length < maxLength) {
	          return element.NAME;
	        }

	        var endWordLength = 10;
	        var extension = element.NAME.split('.').splice(-1)[0];
	        var secondPart = element.NAME.substring(element.NAME.length - 1 - (extension.length + 1 + endWordLength));
	        var firstPart = element.NAME.substring(0, maxLength - secondPart.length - 3);
	        return firstPart.trim() + '...' + secondPart.trim();
	      },
	      fileNameFull: function fileNameFull(element) {
	        return im_lib_utils.Utils.text.htmlspecialcharsback(element.NAME);
	      },
	      fileSize: function fileSize(element) {
	        var size = element.SIZE;

	        if (size <= 0) {
	          return '';
	        }

	        var sizes = ["BYTE", "KB", "MB", "GB", "TB"];
	        var position = 0;

	        while (size >= 1024 && position < 4) {
	          size /= 1024;
	          position++;
	        }

	        return Math.round(size) + " " + this.localize['IM_MESSENGER_ATTACH_FILE_SIZE_' + sizes[position]];
	      },
	      fileIcon: function fileIcon(element) {
	        return im_model.FilesModel.getIconType(element.NAME.split('.').splice(-1)[0]);
	      }
	    },
	    computed: {
	      localize: function localize() {
	        return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_ATTACH_FILE_', this.$root.$bitrixMessages);
	      }
	    },
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-file-element\">\n\t\t\t\t<template v-for=\"(element, index) in config.FILE\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-file\" @click=\"openLink(element)\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-icon\">\n\t\t\t\t\t\t\t<div :class=\"['ui-icon', 'ui-icon-file-'+fileIcon(element)]\"><i></i></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-block\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-name\" :title=\"fileNameFull(element)\">\n\t\t\t\t\t\t\t\t{{fileName(element)}}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-file-size\">{{fileSize(element)}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Grid (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeGrid = {
	  property: 'GRID',
	  name: 'bx-im-view-element-attach-grid',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    created: function created() {
	      if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	        this.maxCellWith = Math.floor(Math.min(screen.availWidth, screen.availHeight) / 4);
	      } else {
	        this.maxCellWith = null;
	      }
	    },
	    methods: {
	      openLink: function openLink(element) {
	        if (element.LINK) {
	          im_lib_utils.Utils.platform.openNewPage(element.LINK);
	        }
	      },
	      getWidth: function getWidth(element) {
	        if (this.type !== 'row') {
	          return element.WIDTH ? element.WIDTH + 'px' : '';
	        }

	        if (!element.VALUE) {
	          return false;
	        }

	        if (this.maxCellWith && element.WIDTH > this.maxCellWith) {
	          return this.maxCellWith + 'px';
	        }

	        return element.WIDTH ? element.WIDTH + 'px' : '';
	      },
	      getValue: function getValue(element) {
	        if (!element.VALUE) {
	          return '';
	        }

	        return im_model.MessagesModel.decodeBbCode({
	          text: element.VALUE
	        });
	      }
	    },
	    computed: {
	      type: function type() {
	        return this.config.GRID[0].DISPLAY.toLowerCase();
	      }
	    },
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-grid\">\n\t\t\t\t<template v-if=\"type === 'block'\">\n\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-block\" :style=\"{width: getWidth(element)}\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\"></div>\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<div class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\t\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if=\"type === 'line'\">\n\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-card\" :style=\"{width: getWidth(element)}\">\n\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></div>\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<div class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if=\"type === 'row'\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-column\">\n\t\t\t\t\t\t<table class=\"bx-im-element-attach-type-display-column-table\">\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<template v-for=\"(element, index) in config.GRID\">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.NAME\">\n\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-name\" :colspan=\"element.VALUE? 1: 2\" v-html=\"element.NAME\" :style=\"{width: getWidth(element)}\"></td>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.VALUE\">\n\t\t\t\t\t\t\t\t\t\t\t<template v-if=\"element.LINK\">\n\t\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link\" @click=\"openLink(element)\" v-html=\"getValue(element)\" :colspan=\"element.NAME? 1: 2\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t\t\t\t\t<td class=\"bx-im-element-attach-type-grid-element-value\" v-html=\"getValue(element)\" :colspan=\"element.NAME? 1: 2\" :style=\"{color: element.COLOR? element.COLOR: ''}\"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Rich Attach type
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeHtml = {
	  property: 'HTML',
	  name: 'bx-im-view-element-attach-html',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    template: "<div class=\"bx-im-element-attach-type-html\" v-html=\"config.HTML\"></div>"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Image (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeImage = {
	  property: 'IMAGE',
	  name: 'bx-im-view-element-attach-image',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      open: function open(file) {
	        if (!file) {
	          return false;
	        }

	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          // TODO add multiply
	          BXMobileApp.UI.Photo.show({
	            photos: [{
	              url: file
	            }],
	            default_photo: file
	          });
	        } else {
	          window.open(file, '_blank');
	        }
	      },
	      getImageSize: function getImageSize(width, height, maxWidth) {
	        var aspectRatio;

	        if (width > maxWidth) {
	          aspectRatio = maxWidth / width;
	        } else {
	          aspectRatio = 1;
	        }

	        return {
	          width: width * aspectRatio,
	          height: height * aspectRatio
	        };
	      },
	      getElementSource: function getElementSource(element) {
	        return element.PREVIEW ? element.PREVIEW : element.LINK;
	      },
	      getElementTitle: function getElementTitle(element) {
	        return im_lib_utils.Utils.text.htmlspecialcharsback(element.NAME);
	      },
	      lazyLoadCallback: function lazyLoadCallback(event) {
	        if (!event.element.style.width) {
	          event.element.style.width = event.element.offsetWidth + 'px';
	        }

	        if (!event.element.style.height) {
	          event.element.style.height = event.element.offsetHeight + 'px';
	        }
	      },
	      styleFileSizes: function styleFileSizes(image) {
	        if (!(image.WIDTH && image.HEIGHT)) {
	          return {
	            maxHeight: '100%',
	            backgroundSize: 'contain'
	          };
	        }

	        var sizes = this.getImageSize(image.WIDTH, image.HEIGHT, 250);
	        return {
	          width: sizes.width + 'px',
	          height: sizes.height + 'px',
	          backgroundSize: sizes.width < 100 || sizes.height < 100 ? 'contain' : 'initial'
	        };
	      },
	      styleBoxSizes: function styleBoxSizes(image) {
	        if (!(image.WIDTH && image.HEIGHT)) {
	          return {
	            height: '150px'
	          };
	        }

	        if (parseInt(this.styleFileSizes(image).height) <= 250) {
	          return {};
	        }

	        return {
	          height: '280px'
	        };
	      }
	    },
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-image\">\n\t\t\t\t<template v-for=\"(image, index) in config.IMAGE\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-image-block\" @click=\"open(image.LINK)\" :style=\"styleBoxSizes(image)\" :key=\"index\">\n\t\t\t\t\t\t<img v-bx-lazyload=\"{callback: lazyLoadCallback}\"\n\t\t\t\t\t\t\tclass=\"bx-im-element-attach-type-image-source\"\n\t\t\t\t\t\t\t:data-lazyload-src=\"getElementSource(image)\"\n\t\t\t\t\t\t\t:style=\"styleFileSizes(image)\"\n\t\t\t\t\t\t\t:title=\"getElementTitle(image)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Link (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeLink = {
	  property: 'LINK',
	  name: 'bx-im-view-element-attach-link',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      getImageConfig: function getImageConfig(element) {
	        return {
	          IMAGE: [{
	            NAME: element.NAME,
	            PREVIEW: element.PREVIEW,
	            WIDTH: element.WIDTH,
	            HEIGHT: element.HEIGHT
	          }]
	        };
	      },
	      openLink: function openLink(element) {
	        if (element.LINK) {
	          im_lib_utils.Utils.platform.openNewPage(element.LINK);
	        }
	      }
	    },
	    computed: {
	      imageComponentName: function imageComponentName() {
	        return AttachTypeImage.name;
	      }
	    },
	    components: babelHelpers.defineProperty({}, AttachTypeImage.name, AttachTypeImage.component),
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-link\">\n\t\t\t\t<template v-for=\"(element, index) in config.LINK\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-link-element\" :key=\"index\">\n\t\t\t\t\t\t<div v-if=\"element.PREVIEW\" class=\"bx-im-element-attach-type-link-image\" @click=\"openLink(element)\">\n\t\t\t\t\t\t\t<component :is=\"imageComponentName\" :config=\"getImageConfig(element)\" :color=\"color\"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-link-name\" @click=\"openLink(element)\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t<div v-if=\"element.DESC\" class=\"bx-im-element-attach-type-link-desc\" v-html=\"element.DESC\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Message (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeMessage = {
	  property: 'MESSAGE',
	  name: 'bx-im-view-element-attach-message',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    computed: {
	      message: function message() {
	        return im_model.MessagesModel.decodeBbCode({
	          text: this.config.MESSAGE
	        });
	      }
	    },
	    template: "<div class=\"bx-im-element-attach-type-message\" v-html=\"message\"></div>"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * Rich (attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeRich = {
	  property: 'RICH_LINK',
	  name: 'bx-im-view-element-attach-rich',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      getImageConfig: function getImageConfig(element) {
	        return {
	          IMAGE: [{
	            NAME: element.NAME,
	            PREVIEW: element.PREVIEW,
	            WIDTH: element.WIDTH,
	            HEIGHT: element.HEIGHT
	          }]
	        };
	      },
	      openLink: function openLink(element) {
	        if (element.LINK) {
	          im_lib_utils.Utils.platform.openNewPage(element.LINK);
	        }
	      }
	    },
	    computed: {
	      imageComponentName: function imageComponentName() {
	        return AttachTypeImage.name;
	      }
	    },
	    components: babelHelpers.defineProperty({}, AttachTypeImage.name, AttachTypeImage.component),
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-rich\">\n\t\t\t\t<template v-for=\"(element, index) in config.RICH_LINK\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-rich-element\" :key=\"index\">\n\t\t\t\t\t\t<div v-if=\"element.PREVIEW\" class=\"bx-im-element-attach-type-rich-image\" @click=\"openLink(element)\">\n\t\t\t\t\t\t\t<component :is=\"imageComponentName\" :config=\"getImageConfig(element)\" :color=\"color\"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-rich-name\" @click=\"openLink(element)\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t\t<div v-if=\"element.DESC\" class=\"bx-im-element-attach-type-rich-desc\" v-html=\"element.DESC\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Vue component
	 *
	 * User (Attach type)
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypeUser = {
	  property: 'USER',
	  name: 'bx-im-view-element-attach-user',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      openLink: function openLink(element) {
	        if (element.LINK) {
	          im_lib_utils.Utils.platform.openNewPage(element.LINK);
	        }
	      },
	      getAvatarType: function getAvatarType(element) {
	        if (element.AVATAR) {
	          return '';
	        }

	        var avatarType = 'user';

	        if (element.AVATAR_TYPE === 'CHAT') {
	          avatarType = 'chat';
	        } else if (element.AVATAR_TYPE === 'BOT') {
	          avatarType = 'bot';
	        }

	        return 'bx-im-element-attach-type-user-avatar-type-' + avatarType;
	      }
	    },
	    template: "\n\t\t\t<div class=\"bx-im-element-attach-type-user\">\n\t\t\t\t<template v-for=\"(element, index) in config.USER\">\n\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-body\" @click=\"openLink(element)\">\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-avatar\">\n\t\t\t\t\t\t\t<div :class=\"['bx-im-element-attach-type-user-avatar-type', getAvatarType(element)]\" :style=\"{backgroundColor: element.AVATAR? '': color}\">\n\t\t\t\t\t\t\t\t<img v-if=\"element.AVATAR\" \n\t\t\t\t\t\t\t\t\tv-bx-lazyload\n\t\t\t\t\t\t\t\t\tclass=\"bx-im-element-attach-type-user-avatar-source\"\n\t\t\t\t\t\t\t\t\t:data-lazyload-src=\"element.AVATAR\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"bx-im-element-attach-type-user-name\" v-html=\"element.NAME\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t"
	  }
	};

	/**
	 * Bitrix Messenger
	 * Attach element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var AttachTypes = [AttachTypeDelimiter, AttachTypeFile, AttachTypeGrid, AttachTypeHtml, AttachTypeImage, AttachTypeLink, AttachTypeMessage, AttachTypeRich, AttachTypeUser];
	var AttachComponents = {};
	AttachTypes.forEach(function (attachType) {
	  AttachComponents[attachType.name] = attachType.component;
	});
	ui_vue.Vue.component('bx-im-view-element-attach', {
	  props: {
	    config: {
	      type: Object,
	      default: {}
	    },
	    baseColor: {
	      type: String,
	      default: '#17a3ea'
	    }
	  },
	  methods: {
	    getComponentForBlock: function getComponentForBlock(block) {
	      var _iteratorNormalCompletion = true;
	      var _didIteratorError = false;
	      var _iteratorError = undefined;

	      try {
	        for (var _iterator = AttachTypes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
	          var attachType = _step.value;

	          if (typeof block[attachType.property] !== 'undefined') {
	            return attachType.name;
	          }
	        }
	      } catch (err) {
	        _didIteratorError = true;
	        _iteratorError = err;
	      } finally {
	        try {
	          if (!_iteratorNormalCompletion && _iterator.return != null) {
	            _iterator.return();
	          }
	        } finally {
	          if (_didIteratorError) {
	            throw _iteratorError;
	          }
	        }
	      }

	      return '';
	    }
	  },
	  computed: {
	    color: function color() {
	      if (typeof this.config.COLOR === 'undefined' || !this.config.COLOR) {
	        return this.baseColor;
	      }

	      if (this.config.COLOR === 'transparent') {
	        return '';
	      }

	      return this.config.COLOR;
	    }
	  },
	  components: AttachComponents,
	  template: "\n\t\t<div class=\"bx-im-element-attach\">\n\t\t\t<div v-if=\"color\" class=\"bx-im-element-attach-border\" :style=\"{borderColor: color}\"></div>\n\t\t\t<div class=\"bx-im-element-attach-content\">\n\t\t\t\t<template v-for=\"(block, index) in config.BLOCKS\">\n\t\t\t\t\t<component :is=\"getComponentForBlock(block)\" :config=\"block\" :color=\"color\" :key=\"index\" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),BX.Messenger.Model,BX.Messenger.Lib,BX));
//# sourceMappingURL=attach.bundle.js.map
element/attach/dist/attach.bundle.min.js000066400000032770147744174710014273 0ustar00(function(t,e,n,i){"use strict";var l={property:"DELIMITER",name:"bx-im-view-element-attach-delimiter",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},computed:{styles:function t(){return{width:this.config.DELIMITER.SIZE?this.config.DELIMITER.SIZE+"px":"",backgroundColor:this.config.DELIMITER.COLOR?this.config.DELIMITER.COLOR:this.color}}},template:'<div class="bx-im-element-attach-type-delimiter" :style="styles">Delimiter</div>'}};var a={property:"FILE",name:"bx-im-element-attach-file",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},methods:{openLink:function t(e){n.Utils.platform.openNewPage(e.LINK)},file:function t(){return{name:this.config.FILE.NAME,extension:this.config.FILE.NAME.split(".").splice(-1)[0],size:this.config.FILE.SIZE}},fileName:function t(e){var n=70;if(!e.NAME||e.NAME.length<n){return e.NAME}var i=10;var l=e.NAME.split(".").splice(-1)[0];var a=e.NAME.substring(e.NAME.length-1-(l.length+1+i));var m=e.NAME.substring(0,n-a.length-3);return m.trim()+"..."+a.trim()},fileNameFull:function t(e){return n.Utils.text.htmlspecialcharsback(e.NAME)},fileSize:function t(e){var n=e.SIZE;if(n<=0){return""}var i=["BYTE","KB","MB","GB","TB"];var l=0;while(n>=1024&&l<4){n/=1024;l++}return Math.round(n)+" "+this.localize["IM_MESSENGER_ATTACH_FILE_SIZE_"+i[l]]},fileIcon:function t(n){return e.FilesModel.getIconType(n.NAME.split(".").splice(-1)[0])}},computed:{localize:function t(){return i.Vue.getFilteredPhrases("IM_MESSENGER_ATTACH_FILE_",this.$root.$bitrixMessages)}},template:'\n\t\t\t<div class="bx-im-element-attach-type-file-element">\n\t\t\t\t<template v-for="(element, index) in config.FILE">\n\t\t\t\t\t<div class="bx-im-element-attach-type-file" @click="openLink(element)">\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-file-icon">\n\t\t\t\t\t\t\t<div :class="[\'ui-icon\', \'ui-icon-file-\'+fileIcon(element)]"><i></i></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-file-block">\n\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-file-name" :title="fileNameFull(element)">\n\t\t\t\t\t\t\t\t{{fileName(element)}}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-file-size">{{fileSize(element)}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var m={property:"GRID",name:"bx-im-view-element-attach-grid",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},created:function t(){if(n.Utils.platform.isBitrixMobile()){this.maxCellWith=Math.floor(Math.min(screen.availWidth,screen.availHeight)/4)}else{this.maxCellWith=null}},methods:{openLink:function t(e){if(e.LINK){n.Utils.platform.openNewPage(e.LINK)}},getWidth:function t(e){if(this.type!=="row"){return e.WIDTH?e.WIDTH+"px":""}if(!e.VALUE){return false}if(this.maxCellWith&&e.WIDTH>this.maxCellWith){return this.maxCellWith+"px"}return e.WIDTH?e.WIDTH+"px":""},getValue:function t(n){if(!n.VALUE){return""}return e.MessagesModel.decodeBbCode({text:n.VALUE})}},computed:{type:function t(){return this.config.GRID[0].DISPLAY.toLowerCase()}},template:'\n\t\t\t<div class="bx-im-element-attach-type-grid">\n\t\t\t\t<template v-if="type === \'block\'">\n\t\t\t\t\t<template v-for="(element, index) in config.GRID">\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-block" :style="{width: getWidth(element)}">\n\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-element-name" v-html="element.NAME"></div>\n\t\t\t\t\t\t\t<template v-if="element.LINK">\n\t\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)"></div>\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<div class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\t\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if="type === \'line\'">\n\t\t\t\t\t<template v-for="(element, index) in config.GRID">\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-card" :style="{width: getWidth(element)}">\n\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-element-name" v-html="element.NAME"></div>\n\t\t\t\t\t\t\t<template v-if="element.LINK">\n\t\t\t\t\t\t\t\t<div class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)" :style="{color: element.COLOR? element.COLOR: \'\'}"></div>\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<div class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)" :style="{color: element.COLOR? element.COLOR: \'\'}"></div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if="type === \'row\'">\n\t\t\t\t\t<div class="bx-im-element-attach-type-grid-display bx-im-element-attach-type-display-column">\n\t\t\t\t\t\t<table class="bx-im-element-attach-type-display-column-table">\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<template v-for="(element, index) in config.GRID">\n\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<template v-if="element.NAME">\n\t\t\t\t\t\t\t\t\t\t\t<td class="bx-im-element-attach-type-grid-element-name" :colspan="element.VALUE? 1: 2" v-html="element.NAME" :style="{width: getWidth(element)}"></td>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t<template v-if="element.VALUE">\n\t\t\t\t\t\t\t\t\t\t\t<template v-if="element.LINK">\n\t\t\t\t\t\t\t\t\t\t\t\t<td class="bx-im-element-attach-type-grid-element-value bx-im-element-attach-type-grid-element-value-link" @click="openLink(element)" v-html="getValue(element)" :colspan="element.NAME? 1: 2" :style="{color: element.COLOR? element.COLOR: \'\'}"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t\t\t\t\t<td class="bx-im-element-attach-type-grid-element-value" v-html="getValue(element)" :colspan="element.NAME? 1: 2" :style="{color: element.COLOR? element.COLOR: \'\'}"></td>\n\t\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var o={property:"HTML",name:"bx-im-view-element-attach-html",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},template:'<div class="bx-im-element-attach-type-html" v-html="config.HTML"></div>'}};var c={property:"IMAGE",name:"bx-im-view-element-attach-image",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},methods:{open:function t(e){if(!e){return false}if(n.Utils.platform.isBitrixMobile()){BXMobileApp.UI.Photo.show({photos:[{url:e}],default_photo:e})}else{window.open(e,"_blank")}},getImageSize:function t(e,n,i){var l;if(e>i){l=i/e}else{l=1}return{width:e*l,height:n*l}},getElementSource:function t(e){return e.PREVIEW?e.PREVIEW:e.LINK},getElementTitle:function t(e){return n.Utils.text.htmlspecialcharsback(e.NAME)},lazyLoadCallback:function t(e){if(!e.element.style.width){e.element.style.width=e.element.offsetWidth+"px"}if(!e.element.style.height){e.element.style.height=e.element.offsetHeight+"px"}},styleFileSizes:function t(e){if(!(e.WIDTH&&e.HEIGHT)){return{maxHeight:"100%",backgroundSize:"contain"}}var n=this.getImageSize(e.WIDTH,e.HEIGHT,250);return{width:n.width+"px",height:n.height+"px",backgroundSize:n.width<100||n.height<100?"contain":"initial"}},styleBoxSizes:function t(e){if(!(e.WIDTH&&e.HEIGHT)){return{height:"150px"}}if(parseInt(this.styleFileSizes(e).height)<=250){return{}}return{height:"280px"}}},template:'\n\t\t\t<div class="bx-im-element-attach-type-image">\n\t\t\t\t<template v-for="(image, index) in config.IMAGE">\n\t\t\t\t\t<div class="bx-im-element-attach-type-image-block" @click="open(image.LINK)" :style="styleBoxSizes(image)" :key="index">\n\t\t\t\t\t\t<img v-bx-lazyload="{callback: lazyLoadCallback}"\n\t\t\t\t\t\t\tclass="bx-im-element-attach-type-image-source"\n\t\t\t\t\t\t\t:data-lazyload-src="getElementSource(image)"\n\t\t\t\t\t\t\t:style="styleFileSizes(image)"\n\t\t\t\t\t\t\t:title="getElementTitle(image)"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var r={property:"LINK",name:"bx-im-view-element-attach-link",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},methods:{getImageConfig:function t(e){return{IMAGE:[{NAME:e.NAME,PREVIEW:e.PREVIEW,WIDTH:e.WIDTH,HEIGHT:e.HEIGHT}]}},openLink:function t(e){if(e.LINK){n.Utils.platform.openNewPage(e.LINK)}}},computed:{imageComponentName:function t(){return c.name}},components:babelHelpers.defineProperty({},c.name,c.component),template:'\n\t\t\t<div class="bx-im-element-attach-type-link">\n\t\t\t\t<template v-for="(element, index) in config.LINK">\n\t\t\t\t\t<div class="bx-im-element-attach-type-link-element" :key="index">\n\t\t\t\t\t\t<div v-if="element.PREVIEW" class="bx-im-element-attach-type-link-image" @click="openLink(element)">\n\t\t\t\t\t\t\t<component :is="imageComponentName" :config="getImageConfig(element)" :color="color"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-link-name" @click="openLink(element)" v-html="element.NAME"></div>\n\t\t\t\t\t\t<div v-if="element.DESC" class="bx-im-element-attach-type-link-desc" v-html="element.DESC"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var s={property:"MESSAGE",name:"bx-im-view-element-attach-message",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},computed:{message:function t(){return e.MessagesModel.decodeBbCode({text:this.config.MESSAGE})}},template:'<div class="bx-im-element-attach-type-message" v-html="message"></div>'}};var p={property:"RICH_LINK",name:"bx-im-view-element-attach-rich",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},methods:{getImageConfig:function t(e){return{IMAGE:[{NAME:e.NAME,PREVIEW:e.PREVIEW,WIDTH:e.WIDTH,HEIGHT:e.HEIGHT}]}},openLink:function t(e){if(e.LINK){n.Utils.platform.openNewPage(e.LINK)}}},computed:{imageComponentName:function t(){return c.name}},components:babelHelpers.defineProperty({},c.name,c.component),template:'\n\t\t\t<div class="bx-im-element-attach-type-rich">\n\t\t\t\t<template v-for="(element, index) in config.RICH_LINK">\n\t\t\t\t\t<div class="bx-im-element-attach-type-rich-element" :key="index">\n\t\t\t\t\t\t<div v-if="element.PREVIEW" class="bx-im-element-attach-type-rich-image" @click="openLink(element)">\n\t\t\t\t\t\t\t<component :is="imageComponentName" :config="getImageConfig(element)" :color="color"/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-rich-name" @click="openLink(element)" v-html="element.NAME"></div>\n\t\t\t\t\t\t<div v-if="element.DESC" class="bx-im-element-attach-type-rich-desc" v-html="element.DESC"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var d={property:"USER",name:"bx-im-view-element-attach-user",component:{props:{config:{type:Object,default:{}},color:{type:String,default:"transparent"}},methods:{openLink:function t(e){if(e.LINK){n.Utils.platform.openNewPage(e.LINK)}},getAvatarType:function t(e){if(e.AVATAR){return""}var n="user";if(e.AVATAR_TYPE==="CHAT"){n="chat"}else if(e.AVATAR_TYPE==="BOT"){n="bot"}return"bx-im-element-attach-type-user-avatar-type-"+n}},template:'\n\t\t\t<div class="bx-im-element-attach-type-user">\n\t\t\t\t<template v-for="(element, index) in config.USER">\n\t\t\t\t\t<div class="bx-im-element-attach-type-user-body" @click="openLink(element)">\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-user-avatar">\n\t\t\t\t\t\t\t<div :class="[\'bx-im-element-attach-type-user-avatar-type\', getAvatarType(element)]" :style="{backgroundColor: element.AVATAR? \'\': color}">\n\t\t\t\t\t\t\t\t<img v-if="element.AVATAR" \n\t\t\t\t\t\t\t\t\tv-bx-lazyload\n\t\t\t\t\t\t\t\t\tclass="bx-im-element-attach-type-user-avatar-source"\n\t\t\t\t\t\t\t\t\t:data-lazyload-src="element.AVATAR"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="bx-im-element-attach-type-user-name" v-html="element.NAME"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t'}};var f=[l,a,m,o,c,r,s,p,d];var h={};f.forEach(function(t){h[t.name]=t.component});i.Vue.component("bx-im-view-element-attach",{props:{config:{type:Object,default:{}},baseColor:{type:String,default:"#17a3ea"}},methods:{getComponentForBlock:function t(e){var n=true;var i=false;var l=undefined;try{for(var a=f[Symbol.iterator](),m;!(n=(m=a.next()).done);n=true){var o=m.value;if(typeof e[o.property]!=="undefined"){return o.name}}}catch(t){i=true;l=t}finally{try{if(!n&&a.return!=null){a.return()}}finally{if(i){throw l}}}return""}},computed:{color:function t(){if(typeof this.config.COLOR==="undefined"||!this.config.COLOR){return this.baseColor}if(this.config.COLOR==="transparent"){return""}return this.config.COLOR}},components:h,template:'\n\t\t<div class="bx-im-element-attach">\n\t\t\t<div v-if="color" class="bx-im-element-attach-border" :style="{borderColor: color}"></div>\n\t\t\t<div class="bx-im-element-attach-content">\n\t\t\t\t<template v-for="(block, index) in config.BLOCKS">\n\t\t\t\t\t<component :is="getComponentForBlock(block)" :config="block" :color="color" :key="index" />\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t'})})(this.window=this.window||{},BX.Messenger.Model,BX.Messenger.Lib,BX);
//# sourceMappingURL=attach.bundle.map.jselement/attach/dist/attach.bundle.min.css000066400000027245147744174710014450 0ustar00.bx-im-element-attach{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font:14px/18px "Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;margin-top:2px}.bx-im-message-content-text+.bx-im-element-attach{margin-top:5px}.bx-im-element-attach-border{display:inline-block;border:2px solid transparent;border-radius:4px/6px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;margin-right:10px}.bx-im-element-attach-content{display:inline-block;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-sizing:border-box;box-sizing:border-box;width:calc(100% - 14px)}.bx-im-element-attach-type-file{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;margin-left:-4px;cursor:pointer;min-width:135px}.bx-im-element-attach-type-file+.bx-im-message-content-body-with-text{display:block;margin-top:7px}.bx-im-element-attach-type-file+.bx-im-message-content-body-without-text .bx-im-message-content-params{margin-top:-21px}.bx-im-element-attach-type-file+.bx-im-element-attach-type-file{margin-top:10px}.bx-im-element-attach-type-file-icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;padding-right:7px}.bx-im-element-attach-type-file-block{overflow:hidden}.bx-im-element-attach-type-file-name{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bx-im-element-attach-type-file-size{color:#717171;font-size:12px}.bx-im-element-attach-type-display-block{max-width:100%}.bx-im-element-attach-type-display-block .bx-im-element-attach-type-grid-element-name{font-weight:bold}.bx-im-element-attach-type-display-block+.bx-im-element-attach-type-display-block{margin-top:5px}.bx-im-element-attach-type-grid-element-value-link{cursor:pointer;color:#1d54a2}.bx-im-element-attach-type-grid-element-value-link:hover{text-decoration:underline}.bx-im-element-attach-type-display-column-table{border-collapse:unset;border-spacing:unset}.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-name{font-weight:bold;line-height:20px;vertical-align:top;padding-right:10px;text-align:left;min-width:50px}.bx-im-element-attach-type-display-column-table .bx-im-element-attach-type-grid-element-value{vertical-align:top;line-height:21px}.bx-im-element-attach-type-display-table{overflow:auto;max-width:100%;max-height:250px}.bx-im-element-attach-type-display-card{display:inline-block;padding-right:10px;max-width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.bx-im-element-attach-type-display-card .bx-im-element-attach-type-grid-element-name{font-weight:bold}.bx-im-element-attach-type-delimiter{display:block;font-size:0;height:1px;width:300px;max-width:100%;background-color:#ccc;margin-top:7px;margin-bottom:7px}.bx-im-element-attach-type-image{border-radius:6px;overflow:hidden}.bx-im-element-attach-type-image-block{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;min-width:100px;min-height:100px}.bx-im-element-attach-type-image-source{display:inline-block;max-width:100%;}
.bx-im-element-attach-type-image-source.bx-lazyload-loading,
.bx-im-element-attach-type-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-position:center;background-size:inherit;min-width:50px;min-height:50px;}
.bx-im-element-attach-type-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-position:center;background-size:inherit;min-width:50px;min-height:50px}.bx-im-element-attach-type-rich{background:#fff;border-radius:10px;border:1px solid #e8e8e8;overflow:hidden}.bx-im-element-attach-type-rich-image{cursor:pointer}.bx-im-element-attach-type-rich-name{cursor:pointer;color:#000;padding:5px 10px;font-weight:bold}.bx-im-element-attach-type-rich-name:hover{text-decoration:underline}.bx-im-element-attach-type-rich-desc{padding:0 10px 10px}.bx-im-element-attach-type-link-image{cursor:pointer}.bx-im-element-attach-type-link-name{cursor:pointer;color:#1d54a2}.bx-im-element-attach-type-link-name:hover{text-decoration:underline}.bx-im-element-attach-type-user{font-weight:bold}.bx-im-element-attach-type-user-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.bx-im-element-attach-type-user-avatar{display:inline-block;width:26px;height:26px;background:#fff;border:1px solid #ccc;border-radius:50%;overflow:hidden;-ms-flex-negative:0;flex-shrink:0}.bx-im-element-attach-type-user-avatar-type{display:inline-block;width:22px;height:22px;overflow:hidden;border-radius:50%;margin:2px;background-position:center center;}

.bx-im-element-attach-type-user-avatar-type-chat {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M55.03%2042.705s-.474%201.492-.55%201.692c-.171.256-.316.53-.432.816.1%200%201.107.47%201.107.47l3.917%201.227-.057%201.86a4.639%204.639%200%200%200-1.894%201.4c-.19.413-.42.805-.69%201.17%203.568%201.45%205.655%203.573%205.74%205.949.058.423%202.223%208.206%202.347%209.959H81c.014-.073-.5-10.142-.5-10.217%200%200-.946-2.425-2.446-2.672a11.739%2011.739%200%200%201-4.233-1.388%2015.618%2015.618%200%200%200-2.721-1.252%204.069%204.069%200%200%201-1.095-1.555%204.616%204.616%200%200%200-1.894-1.4l-.056-1.861%203.917-1.226s1.01-.471%201.107-.471a7.533%207.533%200%200%200-.54-.947c-.074-.2-.443-1.554-.443-1.554a10.07%2010.07%200%200%200%201.992%201.933%2027.952%2027.952%200%200%201-1.708-3.877%2024.708%2024.708%200%200%201-.653-3.754%2055.8%2055.8%200%200%200-1.255-6.987%206.567%206.567%200%200%200-2.072-2.923%209.593%209.593%200%200%200-4.742-1.685h-.2c-1.7.13-3.334.712-4.733%201.685a6.589%206.589%200%200%200-2.071%202.925%2055.45%2055.45%200%200%200-1.254%206.987%2024.1%2024.1%200%200%201-.622%203.84%2024.6%2024.6%200%200%201-1.737%203.792%2010.093%2010.093%200%200%200%201.988-1.936z%22/%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M60.272%2057.434c0-1.84-2.4-3.941-7.135-5.165a16.073%2016.073%200%200%201-4.517-2.057c-.3-.174-.258-1.78-.258-1.78l-1.525-.235c0-.131-.13-2.057-.13-2.057%201.824-.613%201.636-4.23%201.636-4.23%201.158.645%201.912-2.213%201.912-2.213%201.37-3.976-.682-3.736-.682-3.736a25.034%2025.034%200%200%200%200-7.323c-.912-8.054-14.646-5.868-13.018-3.241-4.014-.744-3.1%208.4-3.1%208.4l.87%202.364c-1.71%201.108-.521%202.45-.463%204%20.084%202.28%201.476%201.808%201.476%201.808.086%203.764%201.939%204.259%201.939%204.259.349%202.364.132%201.962.132%201.962l-1.651.2a6.565%206.565%200%200%201-.13%201.6c-1.945.866-2.36%201.374-4.287%202.219-3.726%201.634-7.777%203.76-8.5%206.62C22.118%2061.692%2021%2070.998%2021%2070.998h42l-2.73-13.563z%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:cover;}
.bx-im-element-attach-type-user-avatar-type-user {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.786%2062.254c0-2.31-3.03-4.95-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.41-2.784%202.41-2.784%201.729-4.994-.86-4.693-.86-4.693.823-3.738%200-9.2%200-9.2-1.15-10.116-18.47-7.37-16.416-4.065-5.062-.934-3.907%2010.55-3.907%2010.55l1.1%202.97c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.86%202.272%201.86%202.272.11%204.728%202.447%205.35%202.447%205.35.44%202.969.166%202.464.166%202.464l-2.082.25a8.223%208.223%200%200%201-.164%202.013c-2.45%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.317C24.679%2067.606%2023%2075.995%2023%2075.995h53l-3.215-13.74z%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:cover;}
.bx-im-element-attach-type-user-avatar-type-bot {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2252%22%20height%3D%2246%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M41.994%2012.743l2.8-9.598a2.497%202.497%200%200%200-.54-2.375%202.316%202.316%200%200%200-2.262-.705c-.822.2-1.478.836-1.722%201.67l-2.398%208.239A24.944%2024.944%200%200%200%2014.08%2010l-2.41-8.265C11.294.445%209.976-.285%208.726.105c-1.25.389-1.956%201.75-1.58%203.04l2.812%209.635C3.645%2017.99-.022%2025.89%200%2034.235c0%2015.06%2011.636%2011.364%2026%2011.364s26%203.696%2026-11.364c.025-8.367-3.661-16.286-10.006-21.492zM25.976%2032.188c-10.253%200-18.57%201.098-18.57-3.389s8.317-8.13%2018.57-8.13c10.254%200%2018.582%203.64%2018.582%208.13s-8.316%203.39-18.582%203.39zm-8.493-8.158c-1.464.276-2.467%201.682-2.288%203.207.179%201.525%201.477%202.643%202.962%202.551%201.486-.092%202.645-1.362%202.645-2.899-.165-1.728-1.642-3-3.319-2.859zm14.695%203.214c.182%201.525%201.482%202.641%202.967%202.547%201.486-.094%202.644-1.365%202.644-2.902-.166-1.733-1.65-3.007-3.331-2.859-1.463.281-2.462%201.69-2.28%203.214z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;background-size:15px}.bx-im-element-attach-type-user-avatar-source{width:inherit;height:inherit;border:0}.bx-im-element-attach-type-user-name{display:inline-block;margin-left:5px}element/attach/lang/ua/config.php000066400000000731147744174710012770 0ustar00<?
$MESS["IM_MESSENGER_ATTACH_FILE_DOWNLOAD_TITLE"] = "Завантажити: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SHOW_TITLE"] = "Відкрити повну версію: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_BYTE"] = "байт";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_GB"] = "Гб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_KB"] = "Кб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_MB"] = "Мб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_TB"] = "Тб";
?>element/attach/lang/en/config.php000066400000000651147744174710012766 0ustar00<?
$MESS["IM_MESSENGER_ATTACH_FILE_DOWNLOAD_TITLE"] = "Download: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SHOW_TITLE"] = "Open full version: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_BYTE"] = "bytes";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_KB"] = "KB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_TB"] = "TB";
?>element/attach/lang/ru/config.php000066400000000716147744174710013014 0ustar00<?
$MESS["IM_MESSENGER_ATTACH_FILE_DOWNLOAD_TITLE"] = "Скачать: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SHOW_TITLE"] = "Открыть полную версию: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_BYTE"] = "байт";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_KB"] = "Кб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_MB"] = "Мб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_GB"] = "Гб";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_TB"] = "Тб";element/attach/lang/de/config.php000066400000000660147744174710012754 0ustar00<?
$MESS["IM_MESSENGER_ATTACH_FILE_DOWNLOAD_TITLE"] = "Herunterladen: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SHOW_TITLE"] = "Vollversion öffnen: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_BYTE"] = "Bytes";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_KB"] = "KB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ATTACH_FILE_SIZE_TB"] = "TB";
?>element/media/config.php000066400000000720147744174710011253 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/media.bundle.js',
	],
	'css' => [
		'./dist/media.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.progressbarjs.uploader',
		'ui.vue.vuex',
		'im.model',
		'im.const',
		'ui.vue.components.audioplayer',
		'ui.vue.directives.lazyload',
		'ui.icons',
		'ui.vue.components.socialvideo',
		'im.lib.utils',
		'ui.vue',
	],
	'skip_core' => true,
];element/media/bundle.config.js000066400000000125147744174710012347 0ustar00module.exports = {
	input: './src/register.js',
	output: './dist/media.bundle.js',
};element/media/src/video.css000066400000001322147744174710011703 0ustar00.bx-im-element-file-video
{
	overflow: hidden;
	border-radius: 12px;
	max-width: 280px;
}

.bx-im-element-file-video-safari {
	transform: rotate(0.000001deg); /* fix safari video bug */
}

.bx-im-element-file-video .ui-vue-socialvideo-timers-container {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.bx-im-element-file-video .ui-vue-socialvideo-image-source,
.bx-im-element-file-video .ui-vue-socialvideo-source {
	max-width: 100%;
}

.bx-im-element-file-video .ui-vue-socialvideo-info-container {
	padding-top: 40px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file-video .ui-vue-socialvideo-image-source,
	.bx-im-element-file-video .ui-vue-socialvideo-source { object-fit: cover; }
}element/media/src/image.js000066400000003144147744174710011507 0ustar00/**
 * Bitrix Messenger
 * File element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './image.css';
import 'ui.vue.directives.lazyload';
import 'ui.icons';

import "ui.vue.components.audioplayer";

import {Vue} from 'ui.vue';

Vue.cloneComponent('bx-im-view-element-file-image', 'bx-im-view-element-file',
{
	methods:
	{
		getImageSize(width, height, maxWidth)
		{
			let aspectRatio;

			if (width > maxWidth)
			{
				aspectRatio = maxWidth / width;
			}
			else
			{
				aspectRatio = 1;
			}

			return {
				width: width * aspectRatio,
				height: height * aspectRatio
			};
		}
	},
	computed:
	{
		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
		},
		styleFileSizes()
		{
			let sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);

			return {
				width: sizes.width+'px',
				height: sizes.height+'px',
				backgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'
			}
		},
		styleBoxSizes()
		{
			if (parseInt(this.styleFileSizes.height) <= 280)
			{
				return {};
			}

			return {
				height: '280px'
			}
		},
		fileSource()
		{
			return this.file.urlPreview;
		},
	},
	template: `
		<div class="bx-im-element-file-image" @click="download(file, $event)" :style="styleBoxSizes" ref="container">
			<img v-bx-lazyload
				class="bx-im-element-file-image-source"
				:data-lazyload-src="fileSource"
				:title="localize.IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE.replace('#NAME#', file.name).replace('#SIZE#', fileSize)"
				:style="styleFileSizes"
			/>
		</div>
	`
});element/media/src/file.css000066400000001723147744174710011521 0ustar00.bx-im-element-file {
	display: flex;
	flex-wrap: nowrap;
	overflow: hidden;
	margin-left: -4px;
	cursor: pointer;
	min-width: 135px;
}
.bx-im-message-content-name + .bx-im-message-content-body .bx-im-element-file:first-child {
	margin-top: 5px;
}
.bx-im-dialog-list-item + .bx-im-dialog-list-item .bx-im-element-file:first-child {
	margin-top: 0;
}
.bx-im-element-file + .bx-im-message-content-body-with-text {
	display: block;
	margin-top:7px
}
.bx-im-element-file + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}

.bx-im-element-file + .bx-im-element-file {
	margin-top: 10px;
}

.bx-im-element-file-icon {
	display: flex;
	flex-shrink: 0;
	padding-right: 7px;
}

.bx-im-element-file-block {
	overflow: hidden;
}

.bx-im-element-file-name {
	display: flex;
	flex-wrap: nowrap;
}

.bx-im-element-file-size {
	color: #717171;
	font-size: 12px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file { max-width: 210px; }
}element/media/src/video.js000066400000003510147744174710011530 0ustar00/**
 * Bitrix Messenger
 * File element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './video.css';
import 'ui.vue.directives.lazyload';
import 'ui.icons';
import "ui.vue.components.socialvideo";
import {Utils} from "im.lib.utils";

import {Vue} from 'ui.vue';

Vue.cloneComponent('bx-im-view-element-file-video', 'bx-im-view-element-file',
{
	methods:
	{
		getImageSize(width, height, maxWidth)
		{
			let aspectRatio;

			if (width > maxWidth)
			{
				aspectRatio = maxWidth / width;
			}
			else
			{
				aspectRatio = 1;
			}

			return {
				width: width * aspectRatio,
				height: height * aspectRatio
			};
		}
	},
	computed:
	{
		isSafari()
		{
			return Utils.browser.isSafari() || Utils.platform.isBitrixMobile();
		},

		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
		},
		styleBoxSizes()
		{
			if (parseInt(this.styleVideoSizes.height) <= 280)
			{
				return {};
			}

			return {
				height: '280px'
			}
		},
		styleVideoSizes()
		{
			if (!this.file.image)
			{
				return {};
			}

			let sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);

			return {
				width: sizes.width+'px',
				height: sizes.height+'px',
				backgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'
			}
		},
		autoplay()
		{
			return this.file.size < 5000000 && this.application.options.autoplayVideo;
		}
	},
	template: `
		<div :class="['bx-im-element-file-video', {'bx-im-element-file-video-safari': isSafari}]" :style="styleBoxSizes" ref="container">
			<bx-socialvideo 
				:id="file.id" 
				:src="file.urlShow" 
				:preview="file.urlPreview" 
				:containerStyle="styleBoxSizes"
				:elementStyle="styleVideoSizes"
				:autoplay="autoplay"
				@click="download(file, $event)"
			/>
		</div>
	`
});element/media/src/file.js000066400000015455147744174710011354 0ustar00/**
 * Bitrix Messenger
 * File element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './file.css';
import 'ui.icons';

import {Uploader} from "ui.progressbarjs.uploader";

import {Vue} from 'ui.vue';
import {Vuex} from "ui.vue.vuex";
import {FilesModel} from 'im.model';
import {FileType, FileStatus, MessageType} from 'im.const';
import {Utils} from "im.lib.utils";

Vue.component('bx-im-view-element-file',
{
	/*
	 * @emits 'uploadCancel' {file: object, event: MouseEvent}
	 */

	mounted()
	{
		this.createProgressbar();
	},
	beforeDestroy()
	{
		this.removeProgressbar();
	},
	props:
	{
		userId: { default: 0 },
		messageType: { default: MessageType.self },
		file: {
			type: Object,
			default: FilesModel.create().getElementState
		},
	},
	methods:
	{
		download(file)
		{
			if (file.progress !== 100)
			{
				return false;
			}

			if (file.type === FileType.image && file.urlShow)
			{
				if (Utils.platform.isBitrixMobile())
				{
					BXMobileApp.UI.Photo.show({
						photos: this.files.collection[this.application.dialog.chatId].filter(file => file.type === 'image').map(file => {return {url: file.urlShow.replace('bxhttp', 'http')}}).reverse(),
						default_photo: file.urlShow.replace('bxhttp', 'http')
					})
				}
				else
				{
					window.open(file.urlShow, '_blank');
				}
			}
			else if (file.type === FileType.video && file.urlShow)
			{
				if (Utils.platform.isBitrixMobile())
				{
					app.openDocument({url: file.urlShow, name: file.name});
				}
				else
				{
					window.open(file.urlShow, '_blank');
				}
			}
			else if (file.urlDownload)
			{
				if (Utils.platform.isBitrixMobile())
				{
					app.openDocument({url: file.urlDownload, name: file.name});
				}
				else
				{
					window.open(file.urlDownload, '_blank');
				}
			}
			else
			{
				if (Utils.platform.isBitrixMobile())
				{
					app.openDocument({url: file.urlShow, name: file.name});
				}
				else
				{
					window.open(file.urlShow, '_blank');
				}
			}
		},
		createProgressbar()
		{
			if (this.uploader)
			{
				return true;
			}

			if (this.file.progress === 100)
			{
				return false;
			}

			let blurElement = undefined;

			if (
				this.file.progress < 0
				|| this.file.type !== FileType.image && this.file.type !== FileType.video
			)
			{
				blurElement = false;
			}

			this.uploader = new Uploader({
				container: this.$refs.container,
				blurElement,
				direction: this.$refs.container.offsetHeight > 54? Uploader.direction.vertical: Uploader.direction.horizontal,
				icon: this.file.progress < 0? Uploader.icon.cloud: Uploader.icon.cancel,
				sizes: {
					circle: this.$refs.container.offsetHeight > 54? 54: 38,
					progress: this.$refs.container.offsetHeight > 54? 4: 8,
				},
				labels: {
					loading: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING'],
					completed: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED'],
					canceled: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED'],
					cancelTitle: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE'],
					megabyte: this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_MB'],
				},
				cancelCallback: this.file.progress < 0? null: (event) => {
					this.$emit('uploadCancel', {file: this.file, event});
				},
				destroyCallback: () => {
					if (this.uploader)
					{
						this.uploader = null;
					}
				}
			});

			this.uploader.start();

			if(
				this.file.size && (this.file.size/1024/1024) <= 2
				|| this.$refs.container.offsetHeight <= 54 && this.$refs.container.offsetWidth < 240
			)
			{
				this.uploader.setProgressTitleVisibility(false)
			}

			this.updateProgressbar();

			return true;
		},
		updateProgressbar()
		{
			if (!this.uploader)
			{
				let result = this.createProgressbar();
				if (!result)
				{
					return false;
				}
			}

			if (this.file.status === FileStatus.error)
			{
				this.uploader.setProgress(0);
				this.uploader.setCancelDisable(false);
				this.uploader.setIcon(Uploader.icon.error);
				this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR']);
			}
			else if (this.file.status === FileStatus.wait)
			{
				this.uploader.setProgress(this.file.progress > 5? this.file.progress: 5);
				this.uploader.setCancelDisable(true);
				this.uploader.setIcon(Uploader.icon.cloud);
				this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING']);
			}
			else if (this.file.progress === 100)
			{
				this.uploader.setProgress(100);
			}
			else if (this.file.progress === -1)
			{
				this.uploader.setProgress(10);
				this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING']);
			}
			else
			{
				if (this.file.progress === 0)
				{
					this.uploader.setIcon(Uploader.icon.cancel);
				}
				let progress = this.file.progress > 5? this.file.progress: 5;

				this.uploader.setProgress(progress);

				if((this.file.size/1024/1024) <= 2)
				{
					this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING']);
				}
				else
				{
					this.uploader.setByteSent(this.file.size/100*this.file.progress, this.file.size);
				}
			}
		},
		removeProgressbar()
		{
			if (!this.uploader)
			{
				return true;
			}

			this.uploader.destroy(false);

			return true;
		}
	},
	computed:
	{
		FileStatus: () => FileStatus,
		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
		},
		fileName()
		{
			let maxLength = 70;

			if (this.file.name.length < maxLength)
			{
				return this.file.name;
			}

			let endWordLength = 10;

			let secondPart = this.file.name.substring(this.file.name.length-1 - (this.file.extension.length+1+endWordLength));
			let firstPart = this.file.name.substring(0, maxLength-secondPart.length-3);

			return firstPart.trim()+'...'+secondPart.trim();
		},
		fileSize()
		{
			let size = this.file.size;

			if (size <= 0)
			{
				return '&nbsp;';
			}

			let sizes = ["BYTE", "KB", "MB", "GB", "TB"];
			let position = 0;

			while (size >= 1024 && position < 4)
			{
				size /= 1024;
				position++;
			}

			return Math.round(size) + " " + this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_'+sizes[position]];
		},
		uploadProgress()
		{
			return this.file.status+' '+this.file.progress;
		},
		...Vuex.mapState({
			application: state => state.application,
			files: state => state.files,
		})
	},
	watch:
	{
		uploadProgress()
		{
			this.updateProgressbar();
		},
	},
	template: `
		<div class="bx-im-element-file" @click="download(file, $event)" ref="container">
			<div class="bx-im-element-file-icon">
				<div :class="['ui-icon', 'ui-icon-file-'+file.icon]"><i></i></div>
			</div>
			<div class="bx-im-element-file-block">
				<div class="bx-im-element-file-name" :title="file.name">
					{{fileName}}
				</div>
				<div class="bx-im-element-file-size" v-html="fileSize"></div>
			</div>
		</div>
	`
});element/media/src/image.css000066400000006367147744174710011675 0ustar00.bx-im-element-file-image
{
	display: flex;
	cursor: pointer;
	align-items: center;
    justify-content: center;
	overflow: hidden;
	min-width: 100px;
	min-height: 100px;
	border-radius: 12px;
}

.bx-im-element-file-image-source {
	display: inline-block;
	max-width: 100%;
}
.bx-im-element-file-image-source-text {
	display: inline-block;
	max-width: 100%;
	max-height: 280px;
}

.bx-im-element-file-image-source.bx-lazyload-loading,
.bx-im-element-file-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}
.bx-im-element-file-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}

.bx-im-element-file-image + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file-image-source { object-fit: cover; }
}element/media/src/register.js000066400000000106147744174710012244 0ustar00import './file';
import './audio';
import './image';
import './video';element/media/src/audio.css000066400000000722147744174710011701 0ustar00.bx-im-element-file-audio {
	width: 219px;
	margin-bottom: -13px;
	margin-right: -9px;
	margin-top: 6px;
}

.bx-im-element-file-audio .ui-vue-audioplayer-timers-container {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.bx-im-element-file-audio + .bx-im-message-content-body-with-text {
	margin-top: 30px;
}

.bx-im-element-file-audio + .bx-im-element-file-audio {
	margin-top: 25px
}
.bx-im-element-file-audio:first-child {
	margin-top: 6px;
}element/media/src/audio.js000066400000001225147744174710011524 0ustar00/**
 * Bitrix Messenger
 * File element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './audio.css';
import "ui.vue.components.audioplayer";

import {Vue} from 'ui.vue';
import {MessageType} from 'im.const';

Vue.cloneComponent('bx-im-view-element-file-audio', 'bx-im-view-element-file',
{
	computed:
	{
		background()
		{
			return this.messageType === MessageType.self? 'dark': 'light';
		},
	},
	template: `
		<div :class="['bx-im-element-file-audio', 'bx-im-element-file-audio-'+messageType]" ref="container">
			<bx-audioplayer :id="file.id" :src="file.urlShow" :background="background"/>
		</div>	
	`
});element/media/dist/media.bundle.css000066400000013610147744174710013303 0ustar00.bx-im-element-file {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
	overflow: hidden;
	margin-left: -4px;
	cursor: pointer;
	min-width: 135px;
}
.bx-im-message-content-name + .bx-im-message-content-body .bx-im-element-file:first-child {
	margin-top: 5px;
}
.bx-im-dialog-list-item + .bx-im-dialog-list-item .bx-im-element-file:first-child {
	margin-top: 0;
}
.bx-im-element-file + .bx-im-message-content-body-with-text {
	display: block;
	margin-top:7px
}
.bx-im-element-file + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}

.bx-im-element-file + .bx-im-element-file {
	margin-top: 10px;
}

.bx-im-element-file-icon {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	padding-right: 7px;
}

.bx-im-element-file-block {
	overflow: hidden;
}

.bx-im-element-file-name {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
}

.bx-im-element-file-size {
	color: #717171;
	font-size: 12px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file { max-width: 210px; }
}
.bx-im-element-file-image
{
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	cursor: pointer;
	-webkit-box-align: center;
	    -ms-flex-align: center;
	        align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
	overflow: hidden;
	min-width: 100px;
	min-height: 100px;
	border-radius: 12px;
}

.bx-im-element-file-image-source {
	display: inline-block;
	max-width: 100%;
}
.bx-im-element-file-image-source-text {
	display: inline-block;
	max-width: 100%;
	max-height: 280px;
}

.bx-im-element-file-image-source.bx-lazyload-loading,
.bx-im-element-file-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}
.bx-im-element-file-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-position: center;
	background-size: inherit;
	min-width: 50px;
	min-height: 50px;
}

.bx-im-element-file-image + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file-image-source { -o-object-fit: cover; object-fit: cover; }
}
.bx-im-element-file-audio {
	width: 219px;
	margin-bottom: -13px;
	margin-right: -9px;
	margin-top: 6px;
}

.bx-im-element-file-audio .ui-vue-audioplayer-timers-container {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.bx-im-element-file-audio + .bx-im-message-content-body-with-text {
	margin-top: 30px;
}

.bx-im-element-file-audio + .bx-im-element-file-audio {
	margin-top: 25px
}
.bx-im-element-file-audio:first-child {
	margin-top: 6px;
}
.bx-im-element-file-video
{
	overflow: hidden;
	border-radius: 12px;
	max-width: 280px;
}

.bx-im-element-file-video-safari {
	-webkit-transform: rotate(0.000001deg);
	    -ms-transform: rotate(0.000001deg);
	        transform: rotate(0.000001deg); /* fix safari video bug */
}

.bx-im-element-file-video .ui-vue-socialvideo-timers-container {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.bx-im-element-file-video .ui-vue-socialvideo-image-source,
.bx-im-element-file-video .ui-vue-socialvideo-source {
	max-width: 100%;
}

.bx-im-element-file-video .ui-vue-socialvideo-info-container {
	padding-top: 40px;
}

@media screen and (max-width: 320px) {
	.bx-im-element-file-video .ui-vue-socialvideo-image-source,
	.bx-im-element-file-video .ui-vue-socialvideo-source { -o-object-fit: cover; object-fit: cover; }
}element/media/dist/media.bundle.js000066400000032070147744174710013130 0ustar00(function (exports,ui_progressbarjs_uploader,ui_vue_vuex,im_model,im_const,ui_vue_components_audioplayer,ui_vue_directives_lazyload,ui_icons,ui_vue_components_socialvideo,im_lib_utils,ui_vue) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-im-view-element-file', {
	  /*
	   * @emits 'uploadCancel' {file: object, event: MouseEvent}
	   */
	  mounted: function mounted() {
	    this.createProgressbar();
	  },
	  beforeDestroy: function beforeDestroy() {
	    this.removeProgressbar();
	  },
	  props: {
	    userId: {
	      default: 0
	    },
	    messageType: {
	      default: im_const.MessageType.self
	    },
	    file: {
	      type: Object,
	      default: im_model.FilesModel.create().getElementState
	    }
	  },
	  methods: {
	    download: function download(file) {
	      if (file.progress !== 100) {
	        return false;
	      }

	      if (file.type === im_const.FileType.image && file.urlShow) {
	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          BXMobileApp.UI.Photo.show({
	            photos: this.files.collection[this.application.dialog.chatId].filter(function (file) {
	              return file.type === 'image';
	            }).map(function (file) {
	              return {
	                url: file.urlShow.replace('bxhttp', 'http')
	              };
	            }).reverse(),
	            default_photo: file.urlShow.replace('bxhttp', 'http')
	          });
	        } else {
	          window.open(file.urlShow, '_blank');
	        }
	      } else if (file.type === im_const.FileType.video && file.urlShow) {
	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          app.openDocument({
	            url: file.urlShow,
	            name: file.name
	          });
	        } else {
	          window.open(file.urlShow, '_blank');
	        }
	      } else if (file.urlDownload) {
	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          app.openDocument({
	            url: file.urlDownload,
	            name: file.name
	          });
	        } else {
	          window.open(file.urlDownload, '_blank');
	        }
	      } else {
	        if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	          app.openDocument({
	            url: file.urlShow,
	            name: file.name
	          });
	        } else {
	          window.open(file.urlShow, '_blank');
	        }
	      }
	    },
	    createProgressbar: function createProgressbar() {
	      var _this = this;

	      if (this.uploader) {
	        return true;
	      }

	      if (this.file.progress === 100) {
	        return false;
	      }

	      var blurElement = undefined;

	      if (this.file.progress < 0 || this.file.type !== im_const.FileType.image && this.file.type !== im_const.FileType.video) {
	        blurElement = false;
	      }

	      this.uploader = new ui_progressbarjs_uploader.Uploader({
	        container: this.$refs.container,
	        blurElement: blurElement,
	        direction: this.$refs.container.offsetHeight > 54 ? ui_progressbarjs_uploader.Uploader.direction.vertical : ui_progressbarjs_uploader.Uploader.direction.horizontal,
	        icon: this.file.progress < 0 ? ui_progressbarjs_uploader.Uploader.icon.cloud : ui_progressbarjs_uploader.Uploader.icon.cancel,
	        sizes: {
	          circle: this.$refs.container.offsetHeight > 54 ? 54 : 38,
	          progress: this.$refs.container.offsetHeight > 54 ? 4 : 8
	        },
	        labels: {
	          loading: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING'],
	          completed: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED'],
	          canceled: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED'],
	          cancelTitle: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE'],
	          megabyte: this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_MB']
	        },
	        cancelCallback: this.file.progress < 0 ? null : function (event) {
	          _this.$emit('uploadCancel', {
	            file: _this.file,
	            event: event
	          });
	        },
	        destroyCallback: function destroyCallback() {
	          if (_this.uploader) {
	            _this.uploader = null;
	          }
	        }
	      });
	      this.uploader.start();

	      if (this.file.size && this.file.size / 1024 / 1024 <= 2 || this.$refs.container.offsetHeight <= 54 && this.$refs.container.offsetWidth < 240) {
	        this.uploader.setProgressTitleVisibility(false);
	      }

	      this.updateProgressbar();
	      return true;
	    },
	    updateProgressbar: function updateProgressbar() {
	      if (!this.uploader) {
	        var result = this.createProgressbar();

	        if (!result) {
	          return false;
	        }
	      }

	      if (this.file.status === im_const.FileStatus.error) {
	        this.uploader.setProgress(0);
	        this.uploader.setCancelDisable(false);
	        this.uploader.setIcon(ui_progressbarjs_uploader.Uploader.icon.error);
	        this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR']);
	      } else if (this.file.status === im_const.FileStatus.wait) {
	        this.uploader.setProgress(this.file.progress > 5 ? this.file.progress : 5);
	        this.uploader.setCancelDisable(true);
	        this.uploader.setIcon(ui_progressbarjs_uploader.Uploader.icon.cloud);
	        this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING']);
	      } else if (this.file.progress === 100) {
	        this.uploader.setProgress(100);
	      } else if (this.file.progress === -1) {
	        this.uploader.setProgress(10);
	        this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING']);
	      } else {
	        if (this.file.progress === 0) {
	          this.uploader.setIcon(ui_progressbarjs_uploader.Uploader.icon.cancel);
	        }

	        var progress = this.file.progress > 5 ? this.file.progress : 5;
	        this.uploader.setProgress(progress);

	        if (this.file.size / 1024 / 1024 <= 2) {
	          this.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING']);
	        } else {
	          this.uploader.setByteSent(this.file.size / 100 * this.file.progress, this.file.size);
	        }
	      }
	    },
	    removeProgressbar: function removeProgressbar() {
	      if (!this.uploader) {
	        return true;
	      }

	      this.uploader.destroy(false);
	      return true;
	    }
	  },
	  computed: babelHelpers.objectSpread({
	    FileStatus: function FileStatus() {
	      return im_const.FileStatus;
	    },
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
	    },
	    fileName: function fileName() {
	      var maxLength = 70;

	      if (this.file.name.length < maxLength) {
	        return this.file.name;
	      }

	      var endWordLength = 10;
	      var secondPart = this.file.name.substring(this.file.name.length - 1 - (this.file.extension.length + 1 + endWordLength));
	      var firstPart = this.file.name.substring(0, maxLength - secondPart.length - 3);
	      return firstPart.trim() + '...' + secondPart.trim();
	    },
	    fileSize: function fileSize() {
	      var size = this.file.size;

	      if (size <= 0) {
	        return '&nbsp;';
	      }

	      var sizes = ["BYTE", "KB", "MB", "GB", "TB"];
	      var position = 0;

	      while (size >= 1024 && position < 4) {
	        size /= 1024;
	        position++;
	      }

	      return Math.round(size) + " " + this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_' + sizes[position]];
	    },
	    uploadProgress: function uploadProgress() {
	      return this.file.status + ' ' + this.file.progress;
	    }
	  }, ui_vue_vuex.Vuex.mapState({
	    application: function application(state) {
	      return state.application;
	    },
	    files: function files(state) {
	      return state.files;
	    }
	  })),
	  watch: {
	    uploadProgress: function uploadProgress() {
	      this.updateProgressbar();
	    }
	  },
	  template: "\n\t\t<div class=\"bx-im-element-file\" @click=\"download(file, $event)\" ref=\"container\">\n\t\t\t<div class=\"bx-im-element-file-icon\">\n\t\t\t\t<div :class=\"['ui-icon', 'ui-icon-file-'+file.icon]\"><i></i></div>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-element-file-block\">\n\t\t\t\t<div class=\"bx-im-element-file-name\" :title=\"file.name\">\n\t\t\t\t\t{{fileName}}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-element-file-size\" v-html=\"fileSize\"></div>\n\t\t\t</div>\n\t\t</div>\n\t"
	});

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.cloneComponent('bx-im-view-element-file-audio', 'bx-im-view-element-file', {
	  computed: {
	    background: function background() {
	      return this.messageType === im_const.MessageType.self ? 'dark' : 'light';
	    }
	  },
	  template: "\n\t\t<div :class=\"['bx-im-element-file-audio', 'bx-im-element-file-audio-'+messageType]\" ref=\"container\">\n\t\t\t<bx-audioplayer :id=\"file.id\" :src=\"file.urlShow\" :background=\"background\"/>\n\t\t</div>\t\n\t"
	});

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.cloneComponent('bx-im-view-element-file-image', 'bx-im-view-element-file', {
	  methods: {
	    getImageSize: function getImageSize(width, height, maxWidth) {
	      var aspectRatio;

	      if (width > maxWidth) {
	        aspectRatio = maxWidth / width;
	      } else {
	        aspectRatio = 1;
	      }

	      return {
	        width: width * aspectRatio,
	        height: height * aspectRatio
	      };
	    }
	  },
	  computed: {
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
	    },
	    styleFileSizes: function styleFileSizes() {
	      var sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);
	      return {
	        width: sizes.width + 'px',
	        height: sizes.height + 'px',
	        backgroundSize: sizes.width < 100 || sizes.height < 100 ? 'contain' : 'initial'
	      };
	    },
	    styleBoxSizes: function styleBoxSizes() {
	      if (parseInt(this.styleFileSizes.height) <= 280) {
	        return {};
	      }

	      return {
	        height: '280px'
	      };
	    },
	    fileSource: function fileSource() {
	      return this.file.urlPreview;
	    }
	  },
	  template: "\n\t\t<div class=\"bx-im-element-file-image\" @click=\"download(file, $event)\" :style=\"styleBoxSizes\" ref=\"container\">\n\t\t\t<img v-bx-lazyload\n\t\t\t\tclass=\"bx-im-element-file-image-source\"\n\t\t\t\t:data-lazyload-src=\"fileSource\"\n\t\t\t\t:title=\"localize.IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE.replace('#NAME#', file.name).replace('#SIZE#', fileSize)\"\n\t\t\t\t:style=\"styleFileSizes\"\n\t\t\t/>\n\t\t</div>\n\t"
	});

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.cloneComponent('bx-im-view-element-file-video', 'bx-im-view-element-file', {
	  methods: {
	    getImageSize: function getImageSize(width, height, maxWidth) {
	      var aspectRatio;

	      if (width > maxWidth) {
	        aspectRatio = maxWidth / width;
	      } else {
	        aspectRatio = 1;
	      }

	      return {
	        width: width * aspectRatio,
	        height: height * aspectRatio
	      };
	    }
	  },
	  computed: {
	    isSafari: function isSafari() {
	      return im_lib_utils.Utils.browser.isSafari() || im_lib_utils.Utils.platform.isBitrixMobile();
	    },
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
	    },
	    styleBoxSizes: function styleBoxSizes() {
	      if (parseInt(this.styleVideoSizes.height) <= 280) {
	        return {};
	      }

	      return {
	        height: '280px'
	      };
	    },
	    styleVideoSizes: function styleVideoSizes() {
	      if (!this.file.image) {
	        return {};
	      }

	      var sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);
	      return {
	        width: sizes.width + 'px',
	        height: sizes.height + 'px',
	        backgroundSize: sizes.width < 100 || sizes.height < 100 ? 'contain' : 'initial'
	      };
	    },
	    autoplay: function autoplay() {
	      return this.file.size < 5000000 && this.application.options.autoplayVideo;
	    }
	  },
	  template: "\n\t\t<div :class=\"['bx-im-element-file-video', {'bx-im-element-file-video-safari': isSafari}]\" :style=\"styleBoxSizes\" ref=\"container\">\n\t\t\t<bx-socialvideo \n\t\t\t\t:id=\"file.id\" \n\t\t\t\t:src=\"file.urlShow\" \n\t\t\t\t:preview=\"file.urlPreview\" \n\t\t\t\t:containerStyle=\"styleBoxSizes\"\n\t\t\t\t:elementStyle=\"styleVideoSizes\"\n\t\t\t\t:autoplay=\"autoplay\"\n\t\t\t\t@click=\"download(file, $event)\"\n\t\t\t/>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),BX.ProgressBarJs,BX,BX.Messenger.Model,BX.Messenger.Const,window,window,BX,window,BX.Messenger.Lib,BX));
//# sourceMappingURL=media.bundle.js.map
element/media/dist/media.bundle.min.js000066400000020061147744174710013707 0ustar00(function(e,t,i,s,l,r,o,n,a,f,u){"use strict";u.Vue.component("bx-im-view-element-file",{mounted:function e(){this.createProgressbar()},beforeDestroy:function e(){this.removeProgressbar()},props:{userId:{default:0},messageType:{default:l.MessageType.self},file:{type:Object,default:s.FilesModel.create().getElementState}},methods:{download:function e(t){if(t.progress!==100){return false}if(t.type===l.FileType.image&&t.urlShow){if(f.Utils.platform.isBitrixMobile()){BXMobileApp.UI.Photo.show({photos:this.files.collection[this.application.dialog.chatId].filter(function(e){return e.type==="image"}).map(function(e){return{url:e.urlShow.replace("bxhttp","http")}}).reverse(),default_photo:t.urlShow.replace("bxhttp","http")})}else{window.open(t.urlShow,"_blank")}}else if(t.type===l.FileType.video&&t.urlShow){if(f.Utils.platform.isBitrixMobile()){app.openDocument({url:t.urlShow,name:t.name})}else{window.open(t.urlShow,"_blank")}}else if(t.urlDownload){if(f.Utils.platform.isBitrixMobile()){app.openDocument({url:t.urlDownload,name:t.name})}else{window.open(t.urlDownload,"_blank")}}else{if(f.Utils.platform.isBitrixMobile()){app.openDocument({url:t.urlShow,name:t.name})}else{window.open(t.urlShow,"_blank")}}},createProgressbar:function e(){var i=this;if(this.uploader){return true}if(this.file.progress===100){return false}var s=undefined;if(this.file.progress<0||this.file.type!==l.FileType.image&&this.file.type!==l.FileType.video){s=false}this.uploader=new t.Uploader({container:this.$refs.container,blurElement:s,direction:this.$refs.container.offsetHeight>54?t.Uploader.direction.vertical:t.Uploader.direction.horizontal,icon:this.file.progress<0?t.Uploader.icon.cloud:t.Uploader.icon.cancel,sizes:{circle:this.$refs.container.offsetHeight>54?54:38,progress:this.$refs.container.offsetHeight>54?4:8},labels:{loading:this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"],completed:this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED"],canceled:this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED"],cancelTitle:this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE"],megabyte:this.localize["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"]},cancelCallback:this.file.progress<0?null:function(e){i.$emit("uploadCancel",{file:i.file,event:e})},destroyCallback:function e(){if(i.uploader){i.uploader=null}}});this.uploader.start();if(this.file.size&&this.file.size/1024/1024<=2||this.$refs.container.offsetHeight<=54&&this.$refs.container.offsetWidth<240){this.uploader.setProgressTitleVisibility(false)}this.updateProgressbar();return true},updateProgressbar:function e(){if(!this.uploader){var i=this.createProgressbar();if(!i){return false}}if(this.file.status===l.FileStatus.error){this.uploader.setProgress(0);this.uploader.setCancelDisable(false);this.uploader.setIcon(t.Uploader.icon.error);this.uploader.setProgressTitle(this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR"])}else if(this.file.status===l.FileStatus.wait){this.uploader.setProgress(this.file.progress>5?this.file.progress:5);this.uploader.setCancelDisable(true);this.uploader.setIcon(t.Uploader.icon.cloud);this.uploader.setProgressTitle(this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING"])}else if(this.file.progress===100){this.uploader.setProgress(100)}else if(this.file.progress===-1){this.uploader.setProgress(10);this.uploader.setProgressTitle(this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING"])}else{if(this.file.progress===0){this.uploader.setIcon(t.Uploader.icon.cancel)}var s=this.file.progress>5?this.file.progress:5;this.uploader.setProgress(s);if(this.file.size/1024/1024<=2){this.uploader.setProgressTitle(this.localize["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"])}else{this.uploader.setByteSent(this.file.size/100*this.file.progress,this.file.size)}}},removeProgressbar:function e(){if(!this.uploader){return true}this.uploader.destroy(false);return true}},computed:babelHelpers.objectSpread({FileStatus:function e(){return l.FileStatus},localize:function e(){return u.Vue.getFilteredPhrases("IM_MESSENGER_ELEMENT_FILE_",this.$root.$bitrixMessages)},fileName:function e(){var t=70;if(this.file.name.length<t){return this.file.name}var i=10;var s=this.file.name.substring(this.file.name.length-1-(this.file.extension.length+1+i));var l=this.file.name.substring(0,t-s.length-3);return l.trim()+"..."+s.trim()},fileSize:function e(){var t=this.file.size;if(t<=0){return"&nbsp;"}var i=["BYTE","KB","MB","GB","TB"];var s=0;while(t>=1024&&s<4){t/=1024;s++}return Math.round(t)+" "+this.localize["IM_MESSENGER_ELEMENT_FILE_SIZE_"+i[s]]},uploadProgress:function e(){return this.file.status+" "+this.file.progress}},i.Vuex.mapState({application:function e(t){return t.application},files:function e(t){return t.files}})),watch:{uploadProgress:function e(){this.updateProgressbar()}},template:'\n\t\t<div class="bx-im-element-file" @click="download(file, $event)" ref="container">\n\t\t\t<div class="bx-im-element-file-icon">\n\t\t\t\t<div :class="[\'ui-icon\', \'ui-icon-file-\'+file.icon]"><i></i></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-element-file-block">\n\t\t\t\t<div class="bx-im-element-file-name" :title="file.name">\n\t\t\t\t\t{{fileName}}\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-element-file-size" v-html="fileSize"></div>\n\t\t\t</div>\n\t\t</div>\n\t'});u.Vue.cloneComponent("bx-im-view-element-file-audio","bx-im-view-element-file",{computed:{background:function e(){return this.messageType===l.MessageType.self?"dark":"light"}},template:'\n\t\t<div :class="[\'bx-im-element-file-audio\', \'bx-im-element-file-audio-\'+messageType]" ref="container">\n\t\t\t<bx-audioplayer :id="file.id" :src="file.urlShow" :background="background"/>\n\t\t</div>\t\n\t'});u.Vue.cloneComponent("bx-im-view-element-file-image","bx-im-view-element-file",{methods:{getImageSize:function e(t,i,s){var l;if(t>s){l=s/t}else{l=1}return{width:t*l,height:i*l}}},computed:{localize:function e(){return u.Vue.getFilteredPhrases("IM_MESSENGER_ELEMENT_FILE_",this.$root.$bitrixMessages)},styleFileSizes:function e(){var t=this.getImageSize(this.file.image.width,this.file.image.height,280);return{width:t.width+"px",height:t.height+"px",backgroundSize:t.width<100||t.height<100?"contain":"initial"}},styleBoxSizes:function e(){if(parseInt(this.styleFileSizes.height)<=280){return{}}return{height:"280px"}},fileSource:function e(){return this.file.urlPreview}},template:'\n\t\t<div class="bx-im-element-file-image" @click="download(file, $event)" :style="styleBoxSizes" ref="container">\n\t\t\t<img v-bx-lazyload\n\t\t\t\tclass="bx-im-element-file-image-source"\n\t\t\t\t:data-lazyload-src="fileSource"\n\t\t\t\t:title="localize.IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE.replace(\'#NAME#\', file.name).replace(\'#SIZE#\', fileSize)"\n\t\t\t\t:style="styleFileSizes"\n\t\t\t/>\n\t\t</div>\n\t'});u.Vue.cloneComponent("bx-im-view-element-file-video","bx-im-view-element-file",{methods:{getImageSize:function e(t,i,s){var l;if(t>s){l=s/t}else{l=1}return{width:t*l,height:i*l}}},computed:{isSafari:function e(){return f.Utils.browser.isSafari()||f.Utils.platform.isBitrixMobile()},localize:function e(){return u.Vue.getFilteredPhrases("IM_MESSENGER_ELEMENT_FILE_",this.$root.$bitrixMessages)},styleBoxSizes:function e(){if(parseInt(this.styleVideoSizes.height)<=280){return{}}return{height:"280px"}},styleVideoSizes:function e(){if(!this.file.image){return{}}var t=this.getImageSize(this.file.image.width,this.file.image.height,280);return{width:t.width+"px",height:t.height+"px",backgroundSize:t.width<100||t.height<100?"contain":"initial"}},autoplay:function e(){return this.file.size<5e6&&this.application.options.autoplayVideo}},template:'\n\t\t<div :class="[\'bx-im-element-file-video\', {\'bx-im-element-file-video-safari\': isSafari}]" :style="styleBoxSizes" ref="container">\n\t\t\t<bx-socialvideo \n\t\t\t\t:id="file.id" \n\t\t\t\t:src="file.urlShow" \n\t\t\t\t:preview="file.urlPreview" \n\t\t\t\t:containerStyle="styleBoxSizes"\n\t\t\t\t:elementStyle="styleVideoSizes"\n\t\t\t\t:autoplay="autoplay"\n\t\t\t\t@click="download(file, $event)"\n\t\t\t/>\n\t\t</div>\n\t'})})(this.window=this.window||{},BX.ProgressBarJs,BX,BX.Messenger.Model,BX.Messenger.Const,window,window,BX,window,BX.Messenger.Lib,BX);
//# sourceMappingURL=media.bundle.map.jselement/media/dist/media.bundle.js.map000066400000060755147744174710013717 0ustar00{"version":3,"file":"media.bundle.js","sources":["../src/file.js","../src/audio.js","../src/image.js","../src/video.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * File element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './file.css';\nimport 'ui.icons';\n\nimport {Uploader} from \"ui.progressbarjs.uploader\";\n\nimport {Vue} from 'ui.vue';\nimport {Vuex} from \"ui.vue.vuex\";\nimport {FilesModel} from 'im.model';\nimport {FileType, FileStatus, MessageType} from 'im.const';\nimport {Utils} from \"im.lib.utils\";\n\nVue.component('bx-im-view-element-file',\n{\n\t/*\n\t * @emits 'uploadCancel' {file: object, event: MouseEvent}\n\t */\n\n\tmounted()\n\t{\n\t\tthis.createProgressbar();\n\t},\n\tbeforeDestroy()\n\t{\n\t\tthis.removeProgressbar();\n\t},\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tmessageType: { default: MessageType.self },\n\t\tfile: {\n\t\t\ttype: Object,\n\t\t\tdefault: FilesModel.create().getElementState\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tdownload(file)\n\t\t{\n\t\t\tif (file.progress !== 100)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (file.type === FileType.image && file.urlShow)\n\t\t\t{\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\tBXMobileApp.UI.Photo.show({\n\t\t\t\t\t\tphotos: this.files.collection[this.application.dialog.chatId].filter(file => file.type === 'image').map(file => {return {url: file.urlShow.replace('bxhttp', 'http')}}).reverse(),\n\t\t\t\t\t\tdefault_photo: file.urlShow.replace('bxhttp', 'http')\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(file.urlShow, '_blank');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (file.type === FileType.video && file.urlShow)\n\t\t\t{\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\tapp.openDocument({url: file.urlShow, name: file.name});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(file.urlShow, '_blank');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (file.urlDownload)\n\t\t\t{\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\tapp.openDocument({url: file.urlDownload, name: file.name});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(file.urlDownload, '_blank');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t{\n\t\t\t\t\tapp.openDocument({url: file.urlShow, name: file.name});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.open(file.urlShow, '_blank');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcreateProgressbar()\n\t\t{\n\t\t\tif (this.uploader)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (this.file.progress === 100)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet blurElement = undefined;\n\n\t\t\tif (\n\t\t\t\tthis.file.progress < 0\n\t\t\t\t|| this.file.type !== FileType.image && this.file.type !== FileType.video\n\t\t\t)\n\t\t\t{\n\t\t\t\tblurElement = false;\n\t\t\t}\n\n\t\t\tthis.uploader = new Uploader({\n\t\t\t\tcontainer: this.$refs.container,\n\t\t\t\tblurElement,\n\t\t\t\tdirection: this.$refs.container.offsetHeight > 54? Uploader.direction.vertical: Uploader.direction.horizontal,\n\t\t\t\ticon: this.file.progress < 0? Uploader.icon.cloud: Uploader.icon.cancel,\n\t\t\t\tsizes: {\n\t\t\t\t\tcircle: this.$refs.container.offsetHeight > 54? 54: 38,\n\t\t\t\t\tprogress: this.$refs.container.offsetHeight > 54? 4: 8,\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tloading: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING'],\n\t\t\t\t\tcompleted: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED'],\n\t\t\t\t\tcanceled: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED'],\n\t\t\t\t\tcancelTitle: this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE'],\n\t\t\t\t\tmegabyte: this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_MB'],\n\t\t\t\t},\n\t\t\t\tcancelCallback: this.file.progress < 0? null: (event) => {\n\t\t\t\t\tthis.$emit('uploadCancel', {file: this.file, event});\n\t\t\t\t},\n\t\t\t\tdestroyCallback: () => {\n\t\t\t\t\tif (this.uploader)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.uploader = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.uploader.start();\n\n\t\t\tif(\n\t\t\t\tthis.file.size && (this.file.size/1024/1024) <= 2\n\t\t\t\t|| this.$refs.container.offsetHeight <= 54 && this.$refs.container.offsetWidth < 240\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.uploader.setProgressTitleVisibility(false)\n\t\t\t}\n\n\t\t\tthis.updateProgressbar();\n\n\t\t\treturn true;\n\t\t},\n\t\tupdateProgressbar()\n\t\t{\n\t\t\tif (!this.uploader)\n\t\t\t{\n\t\t\t\tlet result = this.createProgressbar();\n\t\t\t\tif (!result)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.file.status === FileStatus.error)\n\t\t\t{\n\t\t\t\tthis.uploader.setProgress(0);\n\t\t\t\tthis.uploader.setCancelDisable(false);\n\t\t\t\tthis.uploader.setIcon(Uploader.icon.error);\n\t\t\t\tthis.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR']);\n\t\t\t}\n\t\t\telse if (this.file.status === FileStatus.wait)\n\t\t\t{\n\t\t\t\tthis.uploader.setProgress(this.file.progress > 5? this.file.progress: 5);\n\t\t\t\tthis.uploader.setCancelDisable(true);\n\t\t\t\tthis.uploader.setIcon(Uploader.icon.cloud);\n\t\t\t\tthis.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING']);\n\t\t\t}\n\t\t\telse if (this.file.progress === 100)\n\t\t\t{\n\t\t\t\tthis.uploader.setProgress(100);\n\t\t\t}\n\t\t\telse if (this.file.progress === -1)\n\t\t\t{\n\t\t\t\tthis.uploader.setProgress(10);\n\t\t\t\tthis.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING']);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.file.progress === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.uploader.setIcon(Uploader.icon.cancel);\n\t\t\t\t}\n\t\t\t\tlet progress = this.file.progress > 5? this.file.progress: 5;\n\n\t\t\t\tthis.uploader.setProgress(progress);\n\n\t\t\t\tif((this.file.size/1024/1024) <= 2)\n\t\t\t\t{\n\t\t\t\t\tthis.uploader.setProgressTitle(this.localize['IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING']);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.uploader.setByteSent(this.file.size/100*this.file.progress, this.file.size);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremoveProgressbar()\n\t\t{\n\t\t\tif (!this.uploader)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.uploader.destroy(false);\n\n\t\t\treturn true;\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tFileStatus: () => FileStatus,\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);\n\t\t},\n\t\tfileName()\n\t\t{\n\t\t\tlet maxLength = 70;\n\n\t\t\tif (this.file.name.length < maxLength)\n\t\t\t{\n\t\t\t\treturn this.file.name;\n\t\t\t}\n\n\t\t\tlet endWordLength = 10;\n\n\t\t\tlet secondPart = this.file.name.substring(this.file.name.length-1 - (this.file.extension.length+1+endWordLength));\n\t\t\tlet firstPart = this.file.name.substring(0, maxLength-secondPart.length-3);\n\n\t\t\treturn firstPart.trim()+'...'+secondPart.trim();\n\t\t},\n\t\tfileSize()\n\t\t{\n\t\t\tlet size = this.file.size;\n\n\t\t\tif (size <= 0)\n\t\t\t{\n\t\t\t\treturn '&nbsp;';\n\t\t\t}\n\n\t\t\tlet sizes = [\"BYTE\", \"KB\", \"MB\", \"GB\", \"TB\"];\n\t\t\tlet position = 0;\n\n\t\t\twhile (size >= 1024 && position < 4)\n\t\t\t{\n\t\t\t\tsize /= 1024;\n\t\t\t\tposition++;\n\t\t\t}\n\n\t\t\treturn Math.round(size) + \" \" + this.localize['IM_MESSENGER_ELEMENT_FILE_SIZE_'+sizes[position]];\n\t\t},\n\t\tuploadProgress()\n\t\t{\n\t\t\treturn this.file.status+' '+this.file.progress;\n\t\t},\n\t\t...Vuex.mapState({\n\t\t\tapplication: state => state.application,\n\t\t\tfiles: state => state.files,\n\t\t})\n\t},\n\twatch:\n\t{\n\t\tuploadProgress()\n\t\t{\n\t\t\tthis.updateProgressbar();\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-im-element-file\" @click=\"download(file, $event)\" ref=\"container\">\n\t\t\t<div class=\"bx-im-element-file-icon\">\n\t\t\t\t<div :class=\"['ui-icon', 'ui-icon-file-'+file.icon]\"><i></i></div>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-element-file-block\">\n\t\t\t\t<div class=\"bx-im-element-file-name\" :title=\"file.name\">\n\t\t\t\t\t{{fileName}}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-element-file-size\" v-html=\"fileSize\"></div>\n\t\t\t</div>\n\t\t</div>\n\t`\n});","/**\n * Bitrix Messenger\n * File element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './audio.css';\nimport \"ui.vue.components.audioplayer\";\n\nimport {Vue} from 'ui.vue';\nimport {MessageType} from 'im.const';\n\nVue.cloneComponent('bx-im-view-element-file-audio', 'bx-im-view-element-file',\n{\n\tcomputed:\n\t{\n\t\tbackground()\n\t\t{\n\t\t\treturn this.messageType === MessageType.self? 'dark': 'light';\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div :class=\"['bx-im-element-file-audio', 'bx-im-element-file-audio-'+messageType]\" ref=\"container\">\n\t\t\t<bx-audioplayer :id=\"file.id\" :src=\"file.urlShow\" :background=\"background\"/>\n\t\t</div>\t\n\t`\n});","/**\n * Bitrix Messenger\n * File element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './image.css';\nimport 'ui.vue.directives.lazyload';\nimport 'ui.icons';\n\nimport \"ui.vue.components.audioplayer\";\n\nimport {Vue} from 'ui.vue';\n\nVue.cloneComponent('bx-im-view-element-file-image', 'bx-im-view-element-file',\n{\n\tmethods:\n\t{\n\t\tgetImageSize(width, height, maxWidth)\n\t\t{\n\t\t\tlet aspectRatio;\n\n\t\t\tif (width > maxWidth)\n\t\t\t{\n\t\t\t\taspectRatio = maxWidth / width;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taspectRatio = 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\twidth: width * aspectRatio,\n\t\t\t\theight: height * aspectRatio\n\t\t\t};\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);\n\t\t},\n\t\tstyleFileSizes()\n\t\t{\n\t\t\tlet sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);\n\n\t\t\treturn {\n\t\t\t\twidth: sizes.width+'px',\n\t\t\t\theight: sizes.height+'px',\n\t\t\t\tbackgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'\n\t\t\t}\n\t\t},\n\t\tstyleBoxSizes()\n\t\t{\n\t\t\tif (parseInt(this.styleFileSizes.height) <= 280)\n\t\t\t{\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\theight: '280px'\n\t\t\t}\n\t\t},\n\t\tfileSource()\n\t\t{\n\t\t\treturn this.file.urlPreview;\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-im-element-file-image\" @click=\"download(file, $event)\" :style=\"styleBoxSizes\" ref=\"container\">\n\t\t\t<img v-bx-lazyload\n\t\t\t\tclass=\"bx-im-element-file-image-source\"\n\t\t\t\t:data-lazyload-src=\"fileSource\"\n\t\t\t\t:title=\"localize.IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE.replace('#NAME#', file.name).replace('#SIZE#', fileSize)\"\n\t\t\t\t:style=\"styleFileSizes\"\n\t\t\t/>\n\t\t</div>\n\t`\n});","/**\n * Bitrix Messenger\n * File element Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './video.css';\nimport 'ui.vue.directives.lazyload';\nimport 'ui.icons';\nimport \"ui.vue.components.socialvideo\";\nimport {Utils} from \"im.lib.utils\";\n\nimport {Vue} from 'ui.vue';\n\nVue.cloneComponent('bx-im-view-element-file-video', 'bx-im-view-element-file',\n{\n\tmethods:\n\t{\n\t\tgetImageSize(width, height, maxWidth)\n\t\t{\n\t\t\tlet aspectRatio;\n\n\t\t\tif (width > maxWidth)\n\t\t\t{\n\t\t\t\taspectRatio = maxWidth / width;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taspectRatio = 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\twidth: width * aspectRatio,\n\t\t\t\theight: height * aspectRatio\n\t\t\t};\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tisSafari()\n\t\t{\n\t\t\treturn Utils.browser.isSafari() || Utils.platform.isBitrixMobile();\n\t\t},\n\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);\n\t\t},\n\t\tstyleBoxSizes()\n\t\t{\n\t\t\tif (parseInt(this.styleVideoSizes.height) <= 280)\n\t\t\t{\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\theight: '280px'\n\t\t\t}\n\t\t},\n\t\tstyleVideoSizes()\n\t\t{\n\t\t\tif (!this.file.image)\n\t\t\t{\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tlet sizes = this.getImageSize(this.file.image.width, this.file.image.height, 280);\n\n\t\t\treturn {\n\t\t\t\twidth: sizes.width+'px',\n\t\t\t\theight: sizes.height+'px',\n\t\t\t\tbackgroundSize: sizes.width < 100 || sizes.height < 100? 'contain': 'initial'\n\t\t\t}\n\t\t},\n\t\tautoplay()\n\t\t{\n\t\t\treturn this.file.size < 5000000 && this.application.options.autoplayVideo;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :class=\"['bx-im-element-file-video', {'bx-im-element-file-video-safari': isSafari}]\" :style=\"styleBoxSizes\" ref=\"container\">\n\t\t\t<bx-socialvideo \n\t\t\t\t:id=\"file.id\" \n\t\t\t\t:src=\"file.urlShow\" \n\t\t\t\t:preview=\"file.urlPreview\" \n\t\t\t\t:containerStyle=\"styleBoxSizes\"\n\t\t\t\t:elementStyle=\"styleVideoSizes\"\n\t\t\t\t:autoplay=\"autoplay\"\n\t\t\t\t@click=\"download(file, $event)\"\n\t\t\t/>\n\t\t</div>\n\t`\n});"],"names":["Vue","component","mounted","createProgressbar","beforeDestroy","removeProgressbar","props","userId","default","messageType","MessageType","self","file","type","Object","FilesModel","create","getElementState","methods","download","progress","FileType","image","urlShow","Utils","platform","isBitrixMobile","BXMobileApp","UI","Photo","show","photos","files","collection","application","dialog","chatId","filter","map","url","replace","reverse","default_photo","window","open","video","app","openDocument","name","urlDownload","uploader","blurElement","undefined","Uploader","container","$refs","direction","offsetHeight","vertical","horizontal","icon","cloud","cancel","sizes","circle","labels","loading","localize","completed","canceled","cancelTitle","megabyte","cancelCallback","event","$emit","destroyCallback","start","size","offsetWidth","setProgressTitleVisibility","updateProgressbar","result","status","FileStatus","error","setProgress","setCancelDisable","setIcon","setProgressTitle","wait","setByteSent","destroy","computed","getFilteredPhrases","$root","$bitrixMessages","fileName","maxLength","length","endWordLength","secondPart","substring","extension","firstPart","trim","fileSize","position","Math","round","uploadProgress","Vuex","mapState","state","watch","template","cloneComponent","background","getImageSize","width","height","maxWidth","aspectRatio","styleFileSizes","backgroundSize","styleBoxSizes","parseInt","fileSource","urlPreview","isSafari","browser","styleVideoSizes","autoplay","options","autoplayVideo"],"mappings":";;;CAAA;;;;;;;;AASA,AAWAA,WAAG,CAACC,SAAJ,CAAc,yBAAd,EACA;CACC;;;CAIAC,EAAAA,OALD,qBAMC;CACC,SAAKC,iBAAL;CACA,GARF;CASCC,EAAAA,aATD,2BAUC;CACC,SAAKC,iBAAL;CACA,GAZF;CAaCC,EAAAA,KAAK,EACL;CACCC,IAAAA,MAAM,EAAE;CAAEC,MAAAA,OAAO,EAAE;CAAX,KADT;CAECC,IAAAA,WAAW,EAAE;CAAED,MAAAA,OAAO,EAAEE,oBAAW,CAACC;CAAvB,KAFd;CAGCC,IAAAA,IAAI,EAAE;CACLC,MAAAA,IAAI,EAAEC,MADD;CAELN,MAAAA,OAAO,EAAEO,mBAAU,CAACC,MAAX,GAAoBC;CAFxB;CAHP,GAdD;CAsBCC,EAAAA,OAAO,EACP;CACCC,IAAAA,QADD,oBACUP,IADV,EAEC;CACC,UAAIA,IAAI,CAACQ,QAAL,KAAkB,GAAtB,EACA;CACC,eAAO,KAAP;CACA;;CAED,UAAIR,IAAI,CAACC,IAAL,KAAcQ,iBAAQ,CAACC,KAAvB,IAAgCV,IAAI,CAACW,OAAzC,EACA;CACC,YAAIC,kBAAK,CAACC,QAAN,CAAeC,cAAf,EAAJ,EACA;CACCC,UAAAA,WAAW,CAACC,EAAZ,CAAeC,KAAf,CAAqBC,IAArB,CAA0B;CACzBC,YAAAA,MAAM,EAAE,KAAKC,KAAL,CAAWC,UAAX,CAAsB,KAAKC,WAAL,CAAiBC,MAAjB,CAAwBC,MAA9C,EAAsDC,MAAtD,CAA6D,UAAAzB,IAAI;CAAA,qBAAIA,IAAI,CAACC,IAAL,KAAc,OAAlB;CAAA,aAAjE,EAA4FyB,GAA5F,CAAgG,UAAA1B,IAAI,EAAI;CAAC,qBAAO;CAAC2B,gBAAAA,GAAG,EAAE3B,IAAI,CAACW,OAAL,CAAaiB,OAAb,CAAqB,QAArB,EAA+B,MAA/B;CAAN,eAAP;CAAqD,aAA9J,EAAgKC,OAAhK,EADiB;CAEzBC,YAAAA,aAAa,EAAE9B,IAAI,CAACW,OAAL,CAAaiB,OAAb,CAAqB,QAArB,EAA+B,MAA/B;CAFU,WAA1B;CAIA,SAND,MAQA;CACCG,UAAAA,MAAM,CAACC,IAAP,CAAYhC,IAAI,CAACW,OAAjB,EAA0B,QAA1B;CACA;CACD,OAbD,MAcK,IAAIX,IAAI,CAACC,IAAL,KAAcQ,iBAAQ,CAACwB,KAAvB,IAAgCjC,IAAI,CAACW,OAAzC,EACL;CACC,YAAIC,kBAAK,CAACC,QAAN,CAAeC,cAAf,EAAJ,EACA;CACCoB,UAAAA,GAAG,CAACC,YAAJ,CAAiB;CAACR,YAAAA,GAAG,EAAE3B,IAAI,CAACW,OAAX;CAAoByB,YAAAA,IAAI,EAAEpC,IAAI,CAACoC;CAA/B,WAAjB;CACA,SAHD,MAKA;CACCL,UAAAA,MAAM,CAACC,IAAP,CAAYhC,IAAI,CAACW,OAAjB,EAA0B,QAA1B;CACA;CACD,OAVI,MAWA,IAAIX,IAAI,CAACqC,WAAT,EACL;CACC,YAAIzB,kBAAK,CAACC,QAAN,CAAeC,cAAf,EAAJ,EACA;CACCoB,UAAAA,GAAG,CAACC,YAAJ,CAAiB;CAACR,YAAAA,GAAG,EAAE3B,IAAI,CAACqC,WAAX;CAAwBD,YAAAA,IAAI,EAAEpC,IAAI,CAACoC;CAAnC,WAAjB;CACA,SAHD,MAKA;CACCL,UAAAA,MAAM,CAACC,IAAP,CAAYhC,IAAI,CAACqC,WAAjB,EAA8B,QAA9B;CACA;CACD,OAVI,MAYL;CACC,YAAIzB,kBAAK,CAACC,QAAN,CAAeC,cAAf,EAAJ,EACA;CACCoB,UAAAA,GAAG,CAACC,YAAJ,CAAiB;CAACR,YAAAA,GAAG,EAAE3B,IAAI,CAACW,OAAX;CAAoByB,YAAAA,IAAI,EAAEpC,IAAI,CAACoC;CAA/B,WAAjB;CACA,SAHD,MAKA;CACCL,UAAAA,MAAM,CAACC,IAAP,CAAYhC,IAAI,CAACW,OAAjB,EAA0B,QAA1B;CACA;CACD;CACD,KAvDF;CAwDCpB,IAAAA,iBAxDD,+BAyDC;CAAA;;CACC,UAAI,KAAK+C,QAAT,EACA;CACC,eAAO,IAAP;CACA;;CAED,UAAI,KAAKtC,IAAL,CAAUQ,QAAV,KAAuB,GAA3B,EACA;CACC,eAAO,KAAP;CACA;;CAED,UAAI+B,WAAW,GAAGC,SAAlB;;CAEA,UACC,KAAKxC,IAAL,CAAUQ,QAAV,GAAqB,CAArB,IACG,KAAKR,IAAL,CAAUC,IAAV,KAAmBQ,iBAAQ,CAACC,KAA5B,IAAqC,KAAKV,IAAL,CAAUC,IAAV,KAAmBQ,iBAAQ,CAACwB,KAFrE,EAIA;CACCM,QAAAA,WAAW,GAAG,KAAd;CACA;;CAED,WAAKD,QAAL,GAAgB,IAAIG,kCAAJ,CAAa;CAC5BC,QAAAA,SAAS,EAAE,KAAKC,KAAL,CAAWD,SADM;CAE5BH,QAAAA,WAAW,EAAXA,WAF4B;CAG5BK,QAAAA,SAAS,EAAE,KAAKD,KAAL,CAAWD,SAAX,CAAqBG,YAArB,GAAoC,EAApC,GAAwCJ,kCAAQ,CAACG,SAAT,CAAmBE,QAA3D,GAAqEL,kCAAQ,CAACG,SAAT,CAAmBG,UAHvE;CAI5BC,QAAAA,IAAI,EAAE,KAAKhD,IAAL,CAAUQ,QAAV,GAAqB,CAArB,GAAwBiC,kCAAQ,CAACO,IAAT,CAAcC,KAAtC,GAA6CR,kCAAQ,CAACO,IAAT,CAAcE,MAJrC;CAK5BC,QAAAA,KAAK,EAAE;CACNC,UAAAA,MAAM,EAAE,KAAKT,KAAL,CAAWD,SAAX,CAAqBG,YAArB,GAAoC,EAApC,GAAwC,EAAxC,GAA4C,EAD9C;CAENrC,UAAAA,QAAQ,EAAE,KAAKmC,KAAL,CAAWD,SAAX,CAAqBG,YAArB,GAAoC,EAApC,GAAwC,CAAxC,GAA2C;CAF/C,SALqB;CAS5BQ,QAAAA,MAAM,EAAE;CACPC,UAAAA,OAAO,EAAE,KAAKC,QAAL,CAAc,0CAAd,CADF;CAEPC,UAAAA,SAAS,EAAE,KAAKD,QAAL,CAAc,4CAAd,CAFJ;CAGPE,UAAAA,QAAQ,EAAE,KAAKF,QAAL,CAAc,2CAAd,CAHH;CAIPG,UAAAA,WAAW,EAAE,KAAKH,QAAL,CAAc,+CAAd,CAJN;CAKPI,UAAAA,QAAQ,EAAE,KAAKJ,QAAL,CAAc,mCAAd;CALH,SAToB;CAgB5BK,QAAAA,cAAc,EAAE,KAAK5D,IAAL,CAAUQ,QAAV,GAAqB,CAArB,GAAwB,IAAxB,GAA8B,UAACqD,KAAD,EAAW;CACxD,UAAA,KAAI,CAACC,KAAL,CAAW,cAAX,EAA2B;CAAC9D,YAAAA,IAAI,EAAE,KAAI,CAACA,IAAZ;CAAkB6D,YAAAA,KAAK,EAALA;CAAlB,WAA3B;CACA,SAlB2B;CAmB5BE,QAAAA,eAAe,EAAE,2BAAM;CACtB,cAAI,KAAI,CAACzB,QAAT,EACA;CACC,YAAA,KAAI,CAACA,QAAL,GAAgB,IAAhB;CACA;CACD;CAxB2B,OAAb,CAAhB;CA2BA,WAAKA,QAAL,CAAc0B,KAAd;;CAEA,UACC,KAAKhE,IAAL,CAAUiE,IAAV,IAAmB,KAAKjE,IAAL,CAAUiE,IAAV,GAAe,IAAf,GAAoB,IAArB,IAA8B,CAAhD,IACG,KAAKtB,KAAL,CAAWD,SAAX,CAAqBG,YAArB,IAAqC,EAArC,IAA2C,KAAKF,KAAL,CAAWD,SAAX,CAAqBwB,WAArB,GAAmC,GAFlF,EAIA;CACC,aAAK5B,QAAL,CAAc6B,0BAAd,CAAyC,KAAzC;CACA;;CAED,WAAKC,iBAAL;CAEA,aAAO,IAAP;CACA,KAtHF;CAuHCA,IAAAA,iBAvHD,+BAwHC;CACC,UAAI,CAAC,KAAK9B,QAAV,EACA;CACC,YAAI+B,MAAM,GAAG,KAAK9E,iBAAL,EAAb;;CACA,YAAI,CAAC8E,MAAL,EACA;CACC,iBAAO,KAAP;CACA;CACD;;CAED,UAAI,KAAKrE,IAAL,CAAUsE,MAAV,KAAqBC,mBAAU,CAACC,KAApC,EACA;CACC,aAAKlC,QAAL,CAAcmC,WAAd,CAA0B,CAA1B;CACA,aAAKnC,QAAL,CAAcoC,gBAAd,CAA+B,KAA/B;CACA,aAAKpC,QAAL,CAAcqC,OAAd,CAAsBlC,kCAAQ,CAACO,IAAT,CAAcwB,KAApC;CACA,aAAKlC,QAAL,CAAcsC,gBAAd,CAA+B,KAAKrB,QAAL,CAAc,wCAAd,CAA/B;CACA,OAND,MAOK,IAAI,KAAKvD,IAAL,CAAUsE,MAAV,KAAqBC,mBAAU,CAACM,IAApC,EACL;CACC,aAAKvC,QAAL,CAAcmC,WAAd,CAA0B,KAAKzE,IAAL,CAAUQ,QAAV,GAAqB,CAArB,GAAwB,KAAKR,IAAL,CAAUQ,QAAlC,GAA4C,CAAtE;CACA,aAAK8B,QAAL,CAAcoC,gBAAd,CAA+B,IAA/B;CACA,aAAKpC,QAAL,CAAcqC,OAAd,CAAsBlC,kCAAQ,CAACO,IAAT,CAAcC,KAApC;CACA,aAAKX,QAAL,CAAcsC,gBAAd,CAA+B,KAAKrB,QAAL,CAAc,yCAAd,CAA/B;CACA,OANI,MAOA,IAAI,KAAKvD,IAAL,CAAUQ,QAAV,KAAuB,GAA3B,EACL;CACC,aAAK8B,QAAL,CAAcmC,WAAd,CAA0B,GAA1B;CACA,OAHI,MAIA,IAAI,KAAKzE,IAAL,CAAUQ,QAAV,KAAuB,CAAC,CAA5B,EACL;CACC,aAAK8B,QAAL,CAAcmC,WAAd,CAA0B,EAA1B;CACA,aAAKnC,QAAL,CAAcsC,gBAAd,CAA+B,KAAKrB,QAAL,CAAc,0CAAd,CAA/B;CACA,OAJI,MAML;CACC,YAAI,KAAKvD,IAAL,CAAUQ,QAAV,KAAuB,CAA3B,EACA;CACC,eAAK8B,QAAL,CAAcqC,OAAd,CAAsBlC,kCAAQ,CAACO,IAAT,CAAcE,MAApC;CACA;;CACD,YAAI1C,QAAQ,GAAG,KAAKR,IAAL,CAAUQ,QAAV,GAAqB,CAArB,GAAwB,KAAKR,IAAL,CAAUQ,QAAlC,GAA4C,CAA3D;CAEA,aAAK8B,QAAL,CAAcmC,WAAd,CAA0BjE,QAA1B;;CAEA,YAAI,KAAKR,IAAL,CAAUiE,IAAV,GAAe,IAAf,GAAoB,IAArB,IAA8B,CAAjC,EACA;CACC,eAAK3B,QAAL,CAAcsC,gBAAd,CAA+B,KAAKrB,QAAL,CAAc,0CAAd,CAA/B;CACA,SAHD,MAKA;CACC,eAAKjB,QAAL,CAAcwC,WAAd,CAA0B,KAAK9E,IAAL,CAAUiE,IAAV,GAAe,GAAf,GAAmB,KAAKjE,IAAL,CAAUQ,QAAvD,EAAiE,KAAKR,IAAL,CAAUiE,IAA3E;CACA;CACD;CACD,KA5KF;CA6KCxE,IAAAA,iBA7KD,+BA8KC;CACC,UAAI,CAAC,KAAK6C,QAAV,EACA;CACC,eAAO,IAAP;CACA;;CAED,WAAKA,QAAL,CAAcyC,OAAd,CAAsB,KAAtB;CAEA,aAAO,IAAP;CACA;CAvLF,GAvBD;CAgNCC,EAAAA,QAAQ;CAEPT,IAAAA,UAAU,EAAE;CAAA,aAAMA,mBAAN;CAAA,KAFL;CAGPhB,IAAAA,QAHO,sBAIP;CACC,aAAOnE,UAAG,CAAC6F,kBAAJ,CAAuB,4BAAvB,EAAqD,KAAKC,KAAL,CAAWC,eAAhE,CAAP;CACA,KANM;CAOPC,IAAAA,QAPO,sBAQP;CACC,UAAIC,SAAS,GAAG,EAAhB;;CAEA,UAAI,KAAKrF,IAAL,CAAUoC,IAAV,CAAekD,MAAf,GAAwBD,SAA5B,EACA;CACC,eAAO,KAAKrF,IAAL,CAAUoC,IAAjB;CACA;;CAED,UAAImD,aAAa,GAAG,EAApB;CAEA,UAAIC,UAAU,GAAG,KAAKxF,IAAL,CAAUoC,IAAV,CAAeqD,SAAf,CAAyB,KAAKzF,IAAL,CAAUoC,IAAV,CAAekD,MAAf,GAAsB,CAAtB,IAA2B,KAAKtF,IAAL,CAAU0F,SAAV,CAAoBJ,MAApB,GAA2B,CAA3B,GAA6BC,aAAxD,CAAzB,CAAjB;CACA,UAAII,SAAS,GAAG,KAAK3F,IAAL,CAAUoC,IAAV,CAAeqD,SAAf,CAAyB,CAAzB,EAA4BJ,SAAS,GAACG,UAAU,CAACF,MAArB,GAA4B,CAAxD,CAAhB;CAEA,aAAOK,SAAS,CAACC,IAAV,KAAiB,KAAjB,GAAuBJ,UAAU,CAACI,IAAX,EAA9B;CACA,KAtBM;CAuBPC,IAAAA,QAvBO,sBAwBP;CACC,UAAI5B,IAAI,GAAG,KAAKjE,IAAL,CAAUiE,IAArB;;CAEA,UAAIA,IAAI,IAAI,CAAZ,EACA;CACC,eAAO,QAAP;CACA;;CAED,UAAId,KAAK,GAAG,CAAC,MAAD,EAAS,IAAT,EAAe,IAAf,EAAqB,IAArB,EAA2B,IAA3B,CAAZ;CACA,UAAI2C,QAAQ,GAAG,CAAf;;CAEA,aAAO7B,IAAI,IAAI,IAAR,IAAgB6B,QAAQ,GAAG,CAAlC,EACA;CACC7B,QAAAA,IAAI,IAAI,IAAR;CACA6B,QAAAA,QAAQ;CACR;;CAED,aAAOC,IAAI,CAACC,KAAL,CAAW/B,IAAX,IAAmB,GAAnB,GAAyB,KAAKV,QAAL,CAAc,oCAAkCJ,KAAK,CAAC2C,QAAD,CAArD,CAAhC;CACA,KA1CM;CA2CPG,IAAAA,cA3CO,4BA4CP;CACC,aAAO,KAAKjG,IAAL,CAAUsE,MAAV,GAAiB,GAAjB,GAAqB,KAAKtE,IAAL,CAAUQ,QAAtC;CACA;CA9CM,KA+CJ0F,gBAAI,CAACC,QAAL,CAAc;CAChB7E,IAAAA,WAAW,EAAE,qBAAA8E,KAAK;CAAA,aAAIA,KAAK,CAAC9E,WAAV;CAAA,KADF;CAEhBF,IAAAA,KAAK,EAAE,eAAAgF,KAAK;CAAA,aAAIA,KAAK,CAAChF,KAAV;CAAA;CAFI,GAAd,CA/CI,CAhNT;CAoQCiF,EAAAA,KAAK,EACL;CACCJ,IAAAA,cADD,4BAEC;CACC,WAAK7B,iBAAL;CACA;CAJF,GArQD;CA2QCkC,EAAAA,QAAQ;CA3QT,CADA;;CCpBA;;;;;;;;AASA,AAMAlH,WAAG,CAACmH,cAAJ,CAAmB,+BAAnB,EAAoD,yBAApD,EACA;CACCvB,EAAAA,QAAQ,EACR;CACCwB,IAAAA,UADD,wBAEC;CACC,aAAO,KAAK3G,WAAL,KAAqBC,oBAAW,CAACC,IAAjC,GAAuC,MAAvC,GAA+C,OAAtD;CACA;CAJF,GAFD;CAQCuG,EAAAA,QAAQ;CART,CADA;;CCfA;;;;;;;;AASA,AAQAlH,WAAG,CAACmH,cAAJ,CAAmB,+BAAnB,EAAoD,yBAApD,EACA;CACCjG,EAAAA,OAAO,EACP;CACCmG,IAAAA,YADD,wBACcC,KADd,EACqBC,MADrB,EAC6BC,QAD7B,EAEC;CACC,UAAIC,WAAJ;;CAEA,UAAIH,KAAK,GAAGE,QAAZ,EACA;CACCC,QAAAA,WAAW,GAAGD,QAAQ,GAAGF,KAAzB;CACA,OAHD,MAKA;CACCG,QAAAA,WAAW,GAAG,CAAd;CACA;;CAED,aAAO;CACNH,QAAAA,KAAK,EAAEA,KAAK,GAAGG,WADT;CAENF,QAAAA,MAAM,EAAEA,MAAM,GAAGE;CAFX,OAAP;CAIA;CAlBF,GAFD;CAsBC7B,EAAAA,QAAQ,EACR;CACCzB,IAAAA,QADD,sBAEC;CACC,aAAOnE,UAAG,CAAC6F,kBAAJ,CAAuB,4BAAvB,EAAqD,KAAKC,KAAL,CAAWC,eAAhE,CAAP;CACA,KAJF;CAKC2B,IAAAA,cALD,4BAMC;CACC,UAAI3D,KAAK,GAAG,KAAKsD,YAAL,CAAkB,KAAKzG,IAAL,CAAUU,KAAV,CAAgBgG,KAAlC,EAAyC,KAAK1G,IAAL,CAAUU,KAAV,CAAgBiG,MAAzD,EAAiE,GAAjE,CAAZ;CAEA,aAAO;CACND,QAAAA,KAAK,EAAEvD,KAAK,CAACuD,KAAN,GAAY,IADb;CAENC,QAAAA,MAAM,EAAExD,KAAK,CAACwD,MAAN,GAAa,IAFf;CAGNI,QAAAA,cAAc,EAAE5D,KAAK,CAACuD,KAAN,GAAc,GAAd,IAAqBvD,KAAK,CAACwD,MAAN,GAAe,GAApC,GAAyC,SAAzC,GAAoD;CAH9D,OAAP;CAKA,KAdF;CAeCK,IAAAA,aAfD,2BAgBC;CACC,UAAIC,QAAQ,CAAC,KAAKH,cAAL,CAAoBH,MAArB,CAAR,IAAwC,GAA5C,EACA;CACC,eAAO,EAAP;CACA;;CAED,aAAO;CACNA,QAAAA,MAAM,EAAE;CADF,OAAP;CAGA,KAzBF;CA0BCO,IAAAA,UA1BD,wBA2BC;CACC,aAAO,KAAKlH,IAAL,CAAUmH,UAAjB;CACA;CA7BF,GAvBD;CAsDCb,EAAAA,QAAQ;CAtDT,CADA;;CCjBA;;;;;;;;AASA,AAQAlH,WAAG,CAACmH,cAAJ,CAAmB,+BAAnB,EAAoD,yBAApD,EACA;CACCjG,EAAAA,OAAO,EACP;CACCmG,IAAAA,YADD,wBACcC,KADd,EACqBC,MADrB,EAC6BC,QAD7B,EAEC;CACC,UAAIC,WAAJ;;CAEA,UAAIH,KAAK,GAAGE,QAAZ,EACA;CACCC,QAAAA,WAAW,GAAGD,QAAQ,GAAGF,KAAzB;CACA,OAHD,MAKA;CACCG,QAAAA,WAAW,GAAG,CAAd;CACA;;CAED,aAAO;CACNH,QAAAA,KAAK,EAAEA,KAAK,GAAGG,WADT;CAENF,QAAAA,MAAM,EAAEA,MAAM,GAAGE;CAFX,OAAP;CAIA;CAlBF,GAFD;CAsBC7B,EAAAA,QAAQ,EACR;CACCoC,IAAAA,QADD,sBAEC;CACC,aAAOxG,kBAAK,CAACyG,OAAN,CAAcD,QAAd,MAA4BxG,kBAAK,CAACC,QAAN,CAAeC,cAAf,EAAnC;CACA,KAJF;CAMCyC,IAAAA,QAND,sBAOC;CACC,aAAOnE,UAAG,CAAC6F,kBAAJ,CAAuB,4BAAvB,EAAqD,KAAKC,KAAL,CAAWC,eAAhE,CAAP;CACA,KATF;CAUC6B,IAAAA,aAVD,2BAWC;CACC,UAAIC,QAAQ,CAAC,KAAKK,eAAL,CAAqBX,MAAtB,CAAR,IAAyC,GAA7C,EACA;CACC,eAAO,EAAP;CACA;;CAED,aAAO;CACNA,QAAAA,MAAM,EAAE;CADF,OAAP;CAGA,KApBF;CAqBCW,IAAAA,eArBD,6BAsBC;CACC,UAAI,CAAC,KAAKtH,IAAL,CAAUU,KAAf,EACA;CACC,eAAO,EAAP;CACA;;CAED,UAAIyC,KAAK,GAAG,KAAKsD,YAAL,CAAkB,KAAKzG,IAAL,CAAUU,KAAV,CAAgBgG,KAAlC,EAAyC,KAAK1G,IAAL,CAAUU,KAAV,CAAgBiG,MAAzD,EAAiE,GAAjE,CAAZ;CAEA,aAAO;CACND,QAAAA,KAAK,EAAEvD,KAAK,CAACuD,KAAN,GAAY,IADb;CAENC,QAAAA,MAAM,EAAExD,KAAK,CAACwD,MAAN,GAAa,IAFf;CAGNI,QAAAA,cAAc,EAAE5D,KAAK,CAACuD,KAAN,GAAc,GAAd,IAAqBvD,KAAK,CAACwD,MAAN,GAAe,GAApC,GAAyC,SAAzC,GAAoD;CAH9D,OAAP;CAKA,KAnCF;CAoCCY,IAAAA,QApCD,sBAqCC;CACC,aAAO,KAAKvH,IAAL,CAAUiE,IAAV,GAAiB,OAAjB,IAA4B,KAAK3C,WAAL,CAAiBkG,OAAjB,CAAyBC,aAA5D;CACA;CAvCF,GAvBD;CAgECnB,EAAAA,QAAQ;CAhET,CADA;;;;"}element/media/dist/media.bundle.map.js000066400000017517147744174710013715 0ustar00{"version":3,"sources":["media.bundle.js"],"names":["exports","ui_progressbarjs_uploader","ui_vue_vuex","im_model","im_const","ui_vue_components_audioplayer","ui_vue_directives_lazyload","ui_icons","ui_vue_components_socialvideo","im_lib_utils","ui_vue","Vue","component","mounted","this","createProgressbar","beforeDestroy","removeProgressbar","props","userId","default","messageType","MessageType","self","file","type","Object","FilesModel","create","getElementState","methods","download","progress","FileType","image","urlShow","Utils","platform","isBitrixMobile","BXMobileApp","UI","Photo","show","photos","files","collection","application","dialog","chatId","filter","map","url","replace","reverse","default_photo","window","open","video","app","openDocument","name","urlDownload","_this","uploader","blurElement","undefined","Uploader","container","$refs","direction","offsetHeight","vertical","horizontal","icon","cloud","cancel","sizes","circle","labels","loading","localize","completed","canceled","cancelTitle","megabyte","cancelCallback","event","$emit","destroyCallback","start","size","offsetWidth","setProgressTitleVisibility","updateProgressbar","result","status","FileStatus","error","setProgress","setCancelDisable","setIcon","setProgressTitle","wait","setByteSent","destroy","computed","babelHelpers","objectSpread","getFilteredPhrases","$root","$bitrixMessages","fileName","maxLength","length","endWordLength","secondPart","substring","extension","firstPart","trim","fileSize","position","Math","round","uploadProgress","Vuex","mapState","state","watch","template","cloneComponent","background","getImageSize","width","height","maxWidth","aspectRatio","styleFileSizes","backgroundSize","styleBoxSizes","parseInt","fileSource","urlPreview","isSafari","browser","styleVideoSizes","autoplay","options","autoplayVideo","BX","ProgressBarJs","Messenger","Model","Const","Lib"],"mappings":"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","file":"media.bundle.map.js"}element/media/dist/media.bundle.min.css000066400000012645147744174710014074 0ustar00.bx-im-element-file{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;margin-left:-4px;cursor:pointer;min-width:135px}.bx-im-message-content-name+.bx-im-message-content-body .bx-im-element-file:first-child{margin-top:5px}.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-element-file:first-child{margin-top:0}.bx-im-element-file+.bx-im-message-content-body-with-text{display:block;margin-top:7px}.bx-im-element-file+.bx-im-message-content-body-without-text .bx-im-message-content-params{margin-top:-21px}.bx-im-element-file+.bx-im-element-file{margin-top:10px}.bx-im-element-file-icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;padding-right:7px}.bx-im-element-file-block{overflow:hidden}.bx-im-element-file-name{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.bx-im-element-file-size{color:#717171;font-size:12px}@media screen and (max-width:320px){.bx-im-element-file{max-width:210px}}.bx-im-element-file-image{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;min-width:100px;min-height:100px;border-radius:12px}.bx-im-element-file-image-source{display:inline-block;max-width:100%}.bx-im-element-file-image-source-text{display:inline-block;max-width:100%;max-height:280px;}

.bx-im-element-file-image-source.bx-lazyload-loading,
.bx-im-element-file-image-source.bx-lazyload-hidden {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20fill-rule%3D%22nonzero%22%20d%3D%22M63.14%2032.0863H10.008v54.4566h55V32.0873H63.14v-.001zm-.132%2052.4754h-51V34.0665h51v50.4952z%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23B9BEC4%22%20d%3D%22M60.008%2081.591v-2.97l-12-11.881-6%205.94-15-14.851-12%2011.881v11.881z%22/%3E%0A%20%20%20%20%3Cellipse%20cx%3D%2251.712%22%20cy%3D%2246.785%22%20fill%3D%22%23B9BEC4%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-position:center;background-size:inherit;min-width:50px;min-height:50px;}
.bx-im-element-file-image-source.bx-lazyload-error {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2275%22%20height%3D%2298%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23E5E8EB%22%20d%3D%22M0%200h54l21%2022.227V98H0z%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M7%2034.897l7.515%2053.474%2023.219-3.263-.676-34.282-6.84-19.191%202.611-.367L7%2034.897zM36.367%2083.28l-21.14%202.97L8.27%2036.739l21.139-2.97%206.227%2017.258.732%2032.255z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M37.529%2079.675l-.147-15.915-9.094-6.782-10.23%2013.435%201.654%2011.766z%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23535C69%22%20d%3D%22M54%200l21%2022.227H54z%22%20opacity%3D%22.3%22/%3E%0A%20%20%20%20%3Cg%20fill%3D%22%23B9BEC4%22%20transform%3D%22rotate%285%20-359.005%20511.676%29%22%3E%0A%20%20%20%20%20%20%3Cpath%20fill-rule%3D%22nonzero%22%20d%3D%22M.316.001l3.638%2019.956L1%2054h24V.001H.316zM24%2052H2.353l1.601-16.033%201.621-16.01L2%202h22v50z%22/%3E%0A%20%20%20%20%20%20%3Cpath%20d%3D%22M20.008%2049.591v-2.97l-12-11.881L1.96%2049.591z%22/%3E%0A%20%20%20%20%20%20%3Cellipse%20cx%3D%2211.712%22%20cy%3D%2214.785%22%20rx%3D%225.231%22%20ry%3D%225.172%22/%3E%0A%20%20%20%20%3C/g%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-position:center;background-size:inherit;min-width:50px;min-height:50px}.bx-im-element-file-image+.bx-im-message-content-body-without-text .bx-im-message-content-params{margin-top:-21px}@media screen and (max-width:320px){.bx-im-element-file-image-source{-o-object-fit:cover;object-fit:cover}}.bx-im-element-file-audio{width:219px;margin-bottom:-13px;margin-right:-9px;margin-top:6px}.bx-im-element-file-audio .ui-vue-audioplayer-timers-container{font:11px/18px "Helvetica Neue",Helvetica,Arial,sans-serif}.bx-im-element-file-audio+.bx-im-message-content-body-with-text{margin-top:30px}.bx-im-element-file-audio+.bx-im-element-file-audio{margin-top:25px}.bx-im-element-file-audio:first-child{margin-top:6px}.bx-im-element-file-video{overflow:hidden;border-radius:12px;max-width:280px}.bx-im-element-file-video-safari{-webkit-transform:rotate(0.000001deg);-ms-transform:rotate(0.000001deg);transform:rotate(0.000001deg)}.bx-im-element-file-video .ui-vue-socialvideo-timers-container{font:11px/18px "Helvetica Neue",Helvetica,Arial,sans-serif}.bx-im-element-file-video .ui-vue-socialvideo-image-source,.bx-im-element-file-video .ui-vue-socialvideo-source{max-width:100%}.bx-im-element-file-video .ui-vue-socialvideo-info-container{padding-top:40px}@media screen and (max-width:320px){.bx-im-element-file-video .ui-vue-socialvideo-image-source,.bx-im-element-file-video .ui-vue-socialvideo-source{-o-object-fit:cover;object-fit:cover}}element/media/lang/ua/config.php000066400000002076147744174710012607 0ustar00<?
$MESS["IM_MESSENGER_ELEMENT_FILE_DOWNLOAD_TITLE"] = "Скачати: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE"] = "Відкрити повну версію: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_BYTE"] = "байт";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "Гб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_KB"] = "Кб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "Мб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "Тб";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED"] = "Скасовано";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE"] = "Скасувати завантаження файлу";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED"] = "Завантажено";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR"] = "Помилка завантаження";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"] = "Завантаження...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING"] = "Обробка...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING"] = "Файл завантажується...";
?>element/media/lang/en/config.php000066400000001623147744174710012601 0ustar00<?
$MESS["IM_MESSENGER_ELEMENT_FILE_DOWNLOAD_TITLE"] = "Download: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE"] = "Open full version: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_BYTE"] = "byte";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_KB"] = "KB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "TB";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED"] = "Canceled";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE"] = "Cancel file upload";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED"] = "Completed";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR"] = "Upload error";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"] = "Loading...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING"] = "Processing...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING"] = "Uploading file...";
?>element/media/lang/ru/config.php000066400000002027147744174710012624 0ustar00<?
$MESS["IM_MESSENGER_ELEMENT_FILE_DOWNLOAD_TITLE"] = "Скачать: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE"] = "Открыть полную версию: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_BYTE"] = "байт";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_KB"] = "Кб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "Мб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "Гб";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "Тб";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR"] = "Ошибка загрузки";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING"] = "Обработка...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"] = "Загрузка...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING"] = "Файл загружается...";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED"] = "Загружено";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED"] = "Отменено";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE"] = "Отменить загрузку файла";element/media/lang/de/config.php000066400000001665147744174710012575 0ustar00<?
$MESS["IM_MESSENGER_ELEMENT_FILE_DOWNLOAD_TITLE"] = "#NAME# (#SIZE#) herunterladen";
$MESS["IM_MESSENGER_ELEMENT_FILE_SHOW_TITLE"] = "Volle Version öffnen: #NAME# (#SIZE#)";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_BYTE"] = "Byte";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_KB"] = "KB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "TB";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCELED"] = "Abgebrochen";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_CANCEL_TITLE"] = "Datei-Upload abbrechen";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_COMPLETED"] = "Fertig";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_ERROR"] = "Fehler beim Hochladen";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_LOADING"] = "Wird geladen?";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_SAVING"] = "Wird verarbeitet?";
$MESS["IM_MESSENGER_ELEMENT_FILE_UPLOAD_WAITING"] = "Datei wird hochgeladen?";
?>message/config.php000066400000000540147744174710010167 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/message.bundle.js',
	],
	'css' => [
		'./dist/message.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'im.view.message.body',
		'im.model',
		'ui.vue',
		'im.const',
		'im.lib.utils',
		'im.lib.animation',
	],
	'skip_core' => true,
];message/bundle.config.js000066400000000126147744174710011264 0ustar00module.exports = {
	input: './src/message.js',
	output: './dist/message.bundle.js',
};message/body/config.php000066400000000720147744174710011124 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'./dist/body.bundle.js',
	],
	'css' => [
		'./dist/body.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'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',
	],
	'skip_core' => true,
];message/body/bundle.config.js000066400000000120147744174710012213 0ustar00module.exports = {
	input: './src/body.js',
	output: './dist/body.bundle.js',
};message/body/src/body.css000066400000030216147744174710011407 0ustar00.bx-im-message-content-wrap {
	padding-bottom: 1px;
}
.bx-im-message-content {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	display: block;
	padding: 8px 16px;
	border: 1px solid rgba(0,0,0,.07);
	border-radius: 12px;
	background: #CFEFFF;
	color: #333;
	box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	word-break: break-word;
	transition: background-color .5s, color .5s, font-size .3s;
	margin-bottom: 5px;
}

.bx-im-message-content a {color:#1d54a2; text-decoration:underline;}
.bx-im-message-content a:hover {text-decoration:none;}

.bx-im-message-type-opponent .bx-im-message-content {
	border: 0;
	background-color: #fff;
}

.bx-im-message-type-system .bx-im-message-content {
	border: 0;
	background: transparent;
	box-shadow: none;
	color: #717171;
}

.bx-im-message-status-unread .bx-im-message-content {
	background-color: #fffadd;
}

.bx-im-message-status-deleted .bx-im-message-content {
	font-style: italic;
    color: #7d7d7d;
}

.bx-im-message-status-blink .bx-im-message-content {
	background-color: #fffadd;
}

.bx-im-message-status-error .bx-im-message-content {
	background-color: #fcdcde;
}
.bx-im-message-status-error .bx-im-message-content {
	box-shadow: 0 1px 0 0 rgba(255, 0, 0, 0.15);
}

.bx-im-message-content-box {
	padding: 7px 0 7px;
	display: inline-block;
	word-wrap: break-word;
	width: 100%;
	vertical-align: middle;
}

.bx-im-message-content-box .bx-smile {
	vertical-align: bottom;
}

.bx-im-message-content-name {
	font-size: 14px;
	color: #048bd0;
	cursor: pointer;
	transition: color 1s;
}
.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-content-name {
	display: none;
}

.bx-im-message-content-quote {
	display: inline-block;
	vertical-align: top;
}
.bx-im-message-content-quote-wrap {
	border-left: 2px solid #c2c4c6;
	padding-left: 8px;
	font-size: 12px;
	color: #505050;
	padding-bottom: 2px;
	padding-top: 0;
}
.bx-im-message-content-quote-name {
	padding-bottom: 0;
	font-size: 12px;
	color: #767a7e;
	padding-top: 1px;
}
.bx-im-message-content-quote-name-text {
	padding-right: 5px;
}
.bx-im-message-content-quote-name-time {
	display: inline-block;
	font-size: 11px;
}
.bx-im-message-content-code {
	white-space: pre-line;
	padding-left: 5px;
	color: #505050;
	border-left: 3px solid #505050;
}

.bx-im-message-content-params {
	float: right;
	display: block;
	white-space: nowrap;
	position: relative;
	padding-right: 10px;
    margin-right: -10px;
}

.bx-im-message-content-date {
	display:inline-block;
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #546d77;
	text-align: right;
	padding-top: 1px;
	padding-left: 10px;
}
.bx-im-message-type-opponent .bx-im-message-content-date { color: #8e8e8e; }
.bx-im-message-type-system .bx-im-message-content-date { color: #717171; }
.bx-im-message-status-error .bx-im-message-content-date { color: #fa6168; }

.bx-im-message-status-edited .bx-im-message-content-date { color: #484848; padding-left: 23px; }
.bx-im-message-status-edited .bx-im-message-content-date:before {
	position: absolute;
	content: '';
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-size: cover;
	height: 8px;
	width: 8px;
	margin-top: 5px;
	margin-left: -13px;
}

.bx-im-message .bx-im-message-content-fit {
	padding: 0;
	border: 0;
	margin-bottom: 14px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-box {
	padding:0;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-name {
	padding: 10px 16px 9px 16px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text
{
	padding: 0 16px 0 16px
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -37px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-date {
	color: #fff;
	text-shadow: 0 0 1px #000, 0 0 1px #fff;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-with-text {
	padding: 7px 16px 8px 16px;
}

.bx-im-mention {
	color: #1d54a2;
	border-bottom: 1px dotted #1d54a2;
}

.bx-im-smile-like {
	display: inline-block;
	height: 20px;
	width: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%233BC8F5%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2016.6095c0-.5573.4434-1.009%201.0094-1.009h1.9812c.5575%200%201.0094.4388%201.0094%201.009v10.313c0%20.5573-.4434%201.009-1.0094%201.009h-1.9812c-.5575%200-1.0094-.4388-1.0094-1.009v-10.313zm20.1278-1.294c1.034%200%201.2214%201.0147%201.2147%201.7227-.0067.708-.1353%201.406-1.048%201.854.6713.6454.4347%202.6414-.7707%203.104.7287.3747.4527%202.634-.6666%202.8747.8333.7293-.0787%202.6447-.8547%202.938-.7753.2927-1.614.21-1.614.21s-.9093.0393-1.042.0393h-8.3567c-.7253%200-1.3146-.58-1.3146-1.296V16.1576c0-.342.14-.6727.386-.9154%200%200%203.2346-2.266%205.9053-6.1786.3753-.55%201.1433-.508%201.6587%200%20.246.242.3866.5726.3866.9146v1.046c0%20.0967-.012.3134-.0933.8507-.0827.538-1.152%202.9487-1.152%202.9487-.144.638.64.492%201.4867.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-size: cover;
}

.bx-im-smile-dislike {
	display: inline-block;
	height: 20px;
	width: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%23FE908E%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2024.1154c0%20.5573.4434%201.009%201.0094%201.009h1.9812c.5575%200%201.0094-.4388%201.0094-1.009v-10.313c0-.5573-.4434-1.009-1.0094-1.009h-1.9812c-.5575%200-1.0094.4388-1.0094%201.009v10.313zm20.1278%201.294c1.034%200%201.2214-1.0147%201.2147-1.7227-.0067-.708-.1353-1.406-1.048-1.854.6713-.6454.4347-2.6414-.7707-3.104.7287-.3747.4527-2.634-.6666-2.8747.8333-.7293-.0787-2.6447-.8547-2.938-.7753-.2927-1.614-.21-1.614-.21s-.9093-.0393-1.042-.0393h-8.3567c-.7253%200-1.3146.58-1.3146%201.296v10.6046c0%20.342.14.6727.386.9154%200%200%203.2346%202.266%205.9053%206.1786.3753.55%201.1433.508%201.6587%200%20.246-.242.3866-.5726.3866-.9146v-1.046c0-.0967-.012-.3134-.0933-.8507-.0827-.538-1.152-2.9487-1.152-2.9487-.144-.638.64-.492%201.4867-.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-size: cover;
}

.bx-im-message-content-reaction {
	position: relative;
	z-index: 1;
}

.bx-im-message-content-reaction .ui-vue-reaction {
   	float: right;
	margin-top: -6px;
	margin-bottom: -21px;
	margin-right: -12px;
}
.bx-im-message-content-reaction .ui-vue-reaction-mobile {
	margin-top: -9px;
}

.bx-im-message-content-fit .bx-im-message-content-reaction {
	margin-right: 16px;
	margin-top: -9px;
}

.bx-im-dialog-dark-background .bx-im-message-type-system .bx-im-message-content {
	color: #949494;
}

.bx-im-dialog-dark-background .bx-im-dialog-status {
	color: #949494;
}

/*
temporary
 */


/* region 04. Message params (date, like, etc) */
.bx-messenger-content-item-params { float: right;display: block; white-space: nowrap; position: relative;}
.bx-messenger-content-item-params {
	padding-right: 10px;
    margin-right: -10px;
	transition: background .3s;
	border-radius: 12px;
	background: transparent;
}
.bx-messenger-content-item-content-without-padding:hover .bx-messenger-content-item-params {
	background-color: rgba(14, 14, 14, 0.78);
}
.bx-messenger-content-item-ol-start .bx-messenger-content-item-params  { display: none; }

.bx-messenger-content-item-like {
	display:inline-block;
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #bac5cd; text-align: right; padding-top: 1px; padding-left: 3px;margin-right: -9px;white-space: nowrap;
	-moz-user-select:none; -khtml-user-select:none; -o-user-select:none; -webkit-user-select:none; user-select:none;
}
.bx-messenger-content-like-digit {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #b0b6be;display: inline-block;min-width: 6px; cursor: pointer;
}
.bx-messenger-content-item-like-disable .bx-messenger-content-like-button,
.bx-messenger-content-like-digit-off { cursor: default; }
.bx-messenger-content-like-button {
	background:  no-repeat scroll -129px -1073px transparent;
	cursor: pointer;
	display: inline-block;
	position: relative;
	vertical-align: top;
	line-height: 18px;
	padding-left: 18px;
	padding-right: 10px;
	color: #c2c4c7;
	transition: all .3s;
	height: 19px;
}

.bx-messenger-content-item-liked .bx-messenger-content-like-button {background-position: -129px -1047px;}
.bx-messenger-content-item-liked .bx-messenger-content-like-digit,
.bx-im-message-content-self .bx-messenger-content-item-liked .bx-messenger-content-like-digit { color: #f99500;}
.bx-messenger-content-item-system .bx-messenger-content-item-liked .bx-messenger-content-like-digit { color: #378ad1;}
.bx-messenger-content-item-system .bx-messenger-content-like-button {color: #c6c8cb;}

.bx-messenger-content-item-liked .bx-messenger-content-like-digit,
.bx-im-message-type-opponent .bx-messenger-content-item-liked .bx-messenger-content-like-digit {color: #6a9cd9;}

.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-like { display: none; }
.bx-messenger-content-item-vote .bx-messenger-content-item-like {display: none;}

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date { color: #bac5cd!important; }
.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date { color: #a6aaae!important; }

.bx-messenger-content-item-system .bx-messenger-content-item-date { color: #fff; }
.bx-messenger-content-item-new .bx-messenger-content-item-date { color: #bbb178; }
.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-date { color: #fa6168; }

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date,
.bx-messenger-content-item-vote .bx-messenger-content-item-date { color: #859aa9!important; }

.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date { padding-right: 15px; cursor: pointer; }
.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date:after {
    background: rgba(255,255,255,.9)  no-repeat scroll -58px -4px;
    content: '';
    height: 16px;
    position: absolute;
    width: 17px;
    margin-left: 5px;
    margin-top: 1px;
    border-radius: 50%;
}
.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date { padding-right: 0; cursor: default;}
.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date:after { display: none; }
.bx-messenger-content-item-notice .bx-messenger-content-item-date  { color: #717171; }

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date { color: #bac5cd!important; }
.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date { color: #a6aaae!important; }

/* endregion 03. Message params (date, like, etc) */

.bx-notifier-popup-user-more, .bx-messenger-cl, .bx-messenger-cl-notify-button, .bx-messenger-content-item-avatar, .bx-messenger-content-item-date, .bx-messenger-history-item-avatar,
.bx-messenger-textarea-cntr-enter, .bx-notifier-item-help-popup { -moz-user-select:none; -khtml-user-select:none; -o-user-select:none; -webkit-user-select:none; user-select:none; cursor: default; }

.bx-im-message-large-font .bx-im-message-content {
	font-size: 35px;
	line-height: 35px;
}message/body/src/body.js000066400000026665147744174710011250 0ustar00/**
 * Bitrix Messenger
 * Message Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './body.css';
import 'im.view.element.media';
import 'im.view.element.attach';
import 'im.view.element.keyboard';
import 'im.view.element.chatteaser';
import 'ui.vue.components.reaction';

import {Vue} from "ui.vue";
import {Vuex} from "ui.vue.vuex";
import {DialoguesModel, FilesModel, MessagesModel, UsersModel} from 'im.model';
import {DialogType, MessageType} from "im.const";
import {Utils} from "im.lib.utils";

const BX = window.BX;

const ContentType = Object.freeze({
	default: 'default',
	progress: 'progress',
	image: 'image',
	audio: 'audio',
	video: 'video',
	richLink: 'richLink',
});

Vue.component('bx-im-view-message-body',
{
	/**
	 * @emits 'clickByUserName' {user: object, event: MouseEvent}
	 * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	 * @emits 'clickByChatTeaser' {params: object, event: MouseEvent}
	 * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	 * @emits 'setReaction' {message: object, reaction: object}
	 * @emits 'openReactionList' {message: object, values: object}
	 */
	props:
	{
		userId: { default: 0 },
		dialogId: { default: '0' },
		chatId: { default: 0 },
		messageType: { default: MessageType.self },
		message: {
			type: Object,
			default: MessagesModel.create().getElementState
		},
		user: {
			type: Object,
			default: UsersModel.create().getElementState
		},
		dialog: {
			type: Object,
			default: DialoguesModel.create().getElementState
		},
		files: {
			type: Object,
			default: {}
		},
		enableReactions: { default: true },
		showName: { default: true },
		showAvatar: { default: true },
		referenceContentBodyClassName: { default: ''},
		referenceContentNameClassName: { default: ''},
	},
	created()
	{
		this.dateFormatFunction = null;
		this.cacheFormatDate = {};
	},
	methods:
	{
		clickByUserName(event)
		{
			this.$emit('clickByUserName', event)
		},
		clickByUploadCancel(event)
		{
			this.$emit('clickByUploadCancel', event)
		},
		clickByChatTeaser(event)
		{
			this.$emit('clickByChatTeaser', {message: event.message, event});
		},
		clickByKeyboardButton(event)
		{
			this.$emit('clickByKeyboardButton', {message: event.message, ...event.event});
		},
		setReaction(event)
		{
			this.$emit('setReaction', event)
		},
		openReactionList(event)
		{
			this.$emit('openReactionList', event)
		},
		formatDate(date)
		{
			const id = date.toJSON().slice(0, 10);

			if (this.cacheFormatDate[id])
			{
				return this.cacheFormatDate[id];
			}

			let dateFormat = Utils.date.getFormatType(
				BX.Messenger.Const.DateFormat.message,
				this.$root.$bitrixMessages
			);

			this.cacheFormatDate[id] = this._getDateFormat().format(dateFormat, date);

			return this.cacheFormatDate[id];
		},
		_getDateFormat()
		{
			if (this.dateFormatFunction)
			{
				return this.dateFormatFunction;
			}

			this.dateFormatFunction = Object.create(BX.Main.Date);
			if (this.$root.$bitrixMessages)
			{
				this.dateFormatFunction._getMessage = (phrase) => this.$root.$bitrixMessages[phrase];
			}

			return this.dateFormatFunction;
		},
	},
	computed:
	{
		MessageType: () => MessageType,
		ContentType: () => ContentType,

		contentType()
		{
			if (this.filesData.length > 0)
			{
				let onlyImage = false;
				let onlyVideo = false;
				let onlyAudio = false;
				let inProgress = false;

				for (let file of this.filesData)
				{
					if (file.progress < 0)
					{
						inProgress = true;
						break;
					}
					else if (file.type === 'audio')
					{
						if (onlyVideo || onlyImage)
						{
							onlyImage = false;
							onlyVideo = false;
							break;
						}
						onlyAudio = true;
					}
					else if (file.type === 'image' && file.image)
					{
						if (onlyVideo || onlyAudio)
						{
							onlyAudio = false;
							onlyVideo = false;
							break;
						}
						onlyImage = true;
					}
					else if (file.type === 'video')
					{
						if (onlyImage || onlyAudio)
						{
							onlyAudio = false;
							onlyImage = false;
							break;
						}
						onlyVideo = true;
					}
					else
					{
						onlyAudio = false;
						onlyImage = false;
						onlyVideo = false;
						break;
					}
				}

				if (inProgress)
				{
					return ContentType.progress;
				}
				else if (onlyImage)
				{
					return ContentType.image;
				}
				else if (onlyAudio)
				{
					return ContentType.audio;
				}
				else if (onlyVideo)
				{
					return ContentType.video;
				}
			}

			return ContentType.default;
		},

		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);
		},

		formattedDate()
		{
			return this.formatDate(this.message.date);
		},

		messageText()
		{
			if (this.isDeleted)
			{
				return this.localize.IM_MESSENGER_MESSAGE_DELETED;
			}

			return this.message.textConverted;
		},

		messageAttach()
		{
			return this.message.params.ATTACH;
		},

		messageReactions()
		{
			return this.message.params.REACTION || {};
		},

		isEdited()
		{
			return this.message.params.IS_EDITED === 'Y';
		},

		isDeleted()
		{
			return this.message.params.IS_DELETED === 'Y';
		},

		chatColor()
		{
			return this.dialog.type !== DialogType.private? this.dialog.color: this.user.color;
		},

		filesData()
		{
			let files = [];

			if (!this.message.params.FILE_ID || this.message.params.FILE_ID.length <= 0)
			{
				return files;
			}

			this.message.params.FILE_ID.forEach(fileId => {
				if (!fileId)
				{
					return false;
				}

				let file = this.$store.getters['files/get'](this.chatId, fileId, true);
				if (!file)
				{
					this.$store.commit('files/set', {data: [
						this.$store.getters['files/getBlank']({id: fileId, chatId: this.chatId})
					]});
					file = this.$store.getters['files/get'](this.chatId, fileId, true);
				}
				if (file)
				{
					files.push(file);
				}
			});

			return files;
		},

		keyboardButtons()
		{
			let result = false;

			if (!this.message.params.KEYBOARD || this.message.params.KEYBOARD === 'N')
			{
				return result;
			}

			return this.message.params.KEYBOARD;
		},
		chatTeaser()
		{
			if (
				typeof this.message.params.CHAT_ID === 'undefined'
				|| typeof this.message.params.CHAT_LAST_DATE === 'undefined'
				|| typeof this.message.params.CHAT_MESSAGE === 'undefined'
			)
			{
				return false;
			}

			return {
				messageCounter: this.message.params.CHAT_MESSAGE,
				messageLastDate: this.message.params.CHAT_LAST_DATE,
				languageId: this.application.common.languageId
			};
		},

		userName()
		{
			if (this.message.params.NAME)
			{
				return this.message.params.NAME;
			}

			if (!this.showAvatar)
			{
				return this.user.name;
			}
			else
			{
				return this.user.firstName ? this.user.firstName : this.user.name;
			}
		},

		...Vuex.mapState({
			application: state => state.application,
		})
	},
	template: `
		<div class="bx-im-message-content-wrap">
			<template v-if="contentType == ContentType.default || contentType == ContentType.audio || contentType == ContentType.progress">
				<div class="bx-im-message-content">
					<span class="bx-im-message-content-box">
						<template v-if="showName && messageType == MessageType.opponent">
							<div :class="['bx-im-message-content-name', referenceContentNameClassName]" :style="{color: user.color}" @click="clickByUserName({user: user, event: $event})">{{userName}}</div>
						</template>
						<div :class="['bx-im-message-content-body', referenceContentBodyClassName]">
							<template v-if="contentType == ContentType.audio">
								<bx-im-view-element-file-audio v-for="file in filesData" :messageType="messageType" :file="file" :key="file.templateId" @uploadCancel="clickByUploadCancel"/>
							</template>
							<template v-else>
								<bx-im-view-element-file v-for="file in filesData" :messageType="messageType" :file="file" :key="file.templateId" @uploadCancel="clickByUploadCancel"/>
							</template>
							<div :class="['bx-im-message-content-body-wrap', {
								'bx-im-message-content-body-with-text': messageText.length > 0,
								'bx-im-message-content-body-without-text': messageText.length <= 0,
							}]">
								<template v-if="messageText">
									<span class="bx-im-message-content-text" v-html="messageText"></span>
								</template>
								<template v-for="(config, id) in messageAttach">
									<bx-im-view-element-attach :baseColor="chatColor" :config="config" :key="id"/>
								</template>
								<span class="bx-im-message-content-params">
									<span class="bx-im-message-content-date">{{formattedDate}}</span>
								</span>
							</div>
						</div>
					</span>
					<div v-if="!message.push && enableReactions && message.authorId" class="bx-im-message-content-reaction">
						<bx-reaction :values="messageReactions" :userId="userId" :openList="false" @set="setReaction({message: message, reaction: $event})" @list="openReactionList({message: message, values: $event.values})"/>
					</div>
				</div>
			</template>
			<template v-else-if="contentType == ContentType.richLink">
				<!-- richLink type markup -->
			</template>
			<template v-else-if="contentType == ContentType.image || contentType == ContentType.video">
				<div class="bx-im-message-content bx-im-message-content-fit">
					<span class="bx-im-message-content-box">
						<template v-if="showName && messageType == MessageType.opponent">
							<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)}}</div>
						</template>
						<div :class="['bx-im-message-content-body', referenceContentBodyClassName]">
							<template v-if="contentType == ContentType.image">
								<bx-im-view-element-file-image v-for="file in filesData" :messageType="messageType" :file="file" :key="file.templateId" @uploadCancel="clickByUploadCancel"/>
							</template>
							<template v-else-if="contentType == ContentType.video">
								<bx-im-view-element-file-video v-for="file in filesData" :messageType="messageType" :file="file" :key="file.templateId" @uploadCancel="clickByUploadCancel"/>
							</template>
							<div :class="['bx-im-message-content-body-wrap', {
								'bx-im-message-content-body-with-text': messageText.length > 0,
								'bx-im-message-content-body-without-text': messageText.length <= 0,
							}]">
								<template v-if="messageText">
									<span class="bx-im-message-content-text" v-html="messageText"></span>
								</template>
								<span class="bx-im-message-content-params">
									<span class="bx-im-message-content-date">{{formattedDate}}</span>
								</span>
							</div>
						</div>
					</span>
					<div v-if="!message.push && enableReactions && message.authorId" class="bx-im-message-content-reaction">
						<bx-reaction :values="messageReactions" :userId="userId" :openList="false" @set="setReaction({message: message, reaction: $event})" @list="openReactionList({message: message, values: $event.values})"/>
					</div>
				</div>
			</template>
			<template v-if="keyboardButtons">
				<bx-im-view-element-keyboard :buttons="keyboardButtons" :messageId="message.id" :userId="userId" :dialogId="dialogId" @click="clickByKeyboardButton({message: message, event: $event})"/>
			</template>
			<template v-if="chatTeaser">
				<bx-im-view-element-chat-teaser :messageCounter="chatTeaser.messageCounter" :messageLastDate="chatTeaser.messageLastDate" :languageId="chatTeaser.languageId" @click="clickByChatTeaser({message: message, event: $event})"/>
			</template>
		</div>
	`
});message/body/dist/body.bundle.min.js000066400000023624147744174710013446 0ustar00(function(t,e,s,a,n,i,r,o,m,l,c){"use strict";var f=window.BX;var u=Object.freeze({default:"default",progress:"progress",image:"image",audio:"audio",video:"video",richLink:"richLink"});r.Vue.component("bx-im-view-message-body",{props:{userId:{default:0},dialogId:{default:"0"},chatId:{default:0},messageType:{default:l.MessageType.self},message:{type:Object,default:m.MessagesModel.create().getElementState},user:{type:Object,default:m.UsersModel.create().getElementState},dialog:{type:Object,default:m.DialoguesModel.create().getElementState},files:{type:Object,default:{}},enableReactions:{default:true},showName:{default:true},showAvatar:{default:true},referenceContentBodyClassName:{default:""},referenceContentNameClassName:{default:""}},created:function t(){this.dateFormatFunction=null;this.cacheFormatDate={}},methods:{clickByUserName:function t(e){this.$emit("clickByUserName",e)},clickByUploadCancel:function t(e){this.$emit("clickByUploadCancel",e)},clickByChatTeaser:function t(e){this.$emit("clickByChatTeaser",{message:e.message,event:e})},clickByKeyboardButton:function t(e){this.$emit("clickByKeyboardButton",babelHelpers.objectSpread({message:e.message},e.event))},setReaction:function t(e){this.$emit("setReaction",e)},openReactionList:function t(e){this.$emit("openReactionList",e)},formatDate:function t(e){var s=e.toJSON().slice(0,10);if(this.cacheFormatDate[s]){return this.cacheFormatDate[s]}var a=c.Utils.date.getFormatType(f.Messenger.Const.DateFormat.message,this.$root.$bitrixMessages);this.cacheFormatDate[s]=this._getDateFormat().format(a,e);return this.cacheFormatDate[s]},_getDateFormat:function t(){var e=this;if(this.dateFormatFunction){return this.dateFormatFunction}this.dateFormatFunction=Object.create(f.Main.Date);if(this.$root.$bitrixMessages){this.dateFormatFunction._getMessage=function(t){return e.$root.$bitrixMessages[t]}}return this.dateFormatFunction}},computed:babelHelpers.objectSpread({MessageType:function t(){return l.MessageType},ContentType:function t(){return u},contentType:function t(){if(this.filesData.length>0){var e=false;var s=false;var a=false;var n=false;var i=true;var r=false;var o=undefined;try{for(var m=this.filesData[Symbol.iterator](),l;!(i=(l=m.next()).done);i=true){var c=l.value;if(c.progress<0){n=true;break}else if(c.type==="audio"){if(s||e){e=false;s=false;break}a=true}else if(c.type==="image"&&c.image){if(s||a){a=false;s=false;break}e=true}else if(c.type==="video"){if(e||a){a=false;e=false;break}s=true}else{a=false;e=false;s=false;break}}}catch(t){r=true;o=t}finally{try{if(!i&&m.return!=null){m.return()}}finally{if(r){throw o}}}if(n){return u.progress}else if(e){return u.image}else if(a){return u.audio}else if(s){return u.video}}return u.default},localize:function t(){return r.Vue.getFilteredPhrases("IM_MESSENGER_MESSAGE_",this.$root.$bitrixMessages)},formattedDate:function t(){return this.formatDate(this.message.date)},messageText:function t(){if(this.isDeleted){return this.localize.IM_MESSENGER_MESSAGE_DELETED}return this.message.textConverted},messageAttach:function t(){return this.message.params.ATTACH},messageReactions:function t(){return this.message.params.REACTION||{}},isEdited:function t(){return this.message.params.IS_EDITED==="Y"},isDeleted:function t(){return this.message.params.IS_DELETED==="Y"},chatColor:function t(){return this.dialog.type!==l.DialogType.private?this.dialog.color:this.user.color},filesData:function t(){var e=this;var s=[];if(!this.message.params.FILE_ID||this.message.params.FILE_ID.length<=0){return s}this.message.params.FILE_ID.forEach(function(t){if(!t){return false}var a=e.$store.getters["files/get"](e.chatId,t,true);if(!a){e.$store.commit("files/set",{data:[e.$store.getters["files/getBlank"]({id:t,chatId:e.chatId})]});a=e.$store.getters["files/get"](e.chatId,t,true)}if(a){s.push(a)}});return s},keyboardButtons:function t(){var e=false;if(!this.message.params.KEYBOARD||this.message.params.KEYBOARD==="N"){return e}return this.message.params.KEYBOARD},chatTeaser:function t(){if(typeof this.message.params.CHAT_ID==="undefined"||typeof this.message.params.CHAT_LAST_DATE==="undefined"||typeof this.message.params.CHAT_MESSAGE==="undefined"){return false}return{messageCounter:this.message.params.CHAT_MESSAGE,messageLastDate:this.message.params.CHAT_LAST_DATE,languageId:this.application.common.languageId}},userName:function t(){if(this.message.params.NAME){return this.message.params.NAME}if(!this.showAvatar){return this.user.name}else{return this.user.firstName?this.user.firstName:this.user.name}}},o.Vuex.mapState({application:function t(e){return e.application}})),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">\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<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})">{{userName}}</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.audio">\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" @uploadCancel="clickByUploadCancel"/>\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" @uploadCancel="clickByUploadCancel"/>\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 :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\x3c!-- richLink type markup --\x3e\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)}}</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" @uploadCancel="clickByUploadCancel"/>\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" @uploadCancel="clickByUploadCancel"/>\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 :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'})})(this.window=this.window||{},window,window,window,window,window,BX,BX,BX.Messenger.Model,BX.Messenger.Const,BX.Messenger.Lib);
//# sourceMappingURL=body.bundle.map.jsmessage/body/dist/body.bundle.min.css000066400000027052147744174710013621 0ustar00.bx-im-message-content-wrap{padding-bottom:1px}.bx-im-message-content{font:14px/19px "Helvetica Neue",Helvetica,Arial,sans-serif;display:block;padding:8px 16px;border:1px solid rgba(0,0,0,.07);border-radius:12px;background:#cfefff;color:#333;-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,0.15);box-shadow:0 1px 0 0 rgba(0,0,0,0.15);word-break:break-word;-webkit-transition:background-color .5s,color .5s,font-size .3s;-o-transition:background-color .5s,color .5s,font-size .3s;transition:background-color .5s,color .5s,font-size .3s;margin-bottom:5px}.bx-im-message-content a{color:#1d54a2;text-decoration:underline}.bx-im-message-content a:hover{text-decoration:none}.bx-im-message-type-opponent .bx-im-message-content{border:0;background-color:#fff}.bx-im-message-type-system .bx-im-message-content{border:0;background:transparent;-webkit-box-shadow:none;box-shadow:none;color:#717171}.bx-im-message-status-unread .bx-im-message-content{background-color:#fffadd}.bx-im-message-status-deleted .bx-im-message-content{font-style:italic;color:#7d7d7d}.bx-im-message-status-blink .bx-im-message-content{background-color:#fffadd}.bx-im-message-status-error .bx-im-message-content{background-color:#fcdcde}.bx-im-message-status-error .bx-im-message-content{-webkit-box-shadow:0 1px 0 0 rgba(255,0,0,0.15);box-shadow:0 1px 0 0 rgba(255,0,0,0.15)}.bx-im-message-content-box{padding:7px 0 7px;display:inline-block;word-wrap:break-word;width:100%;vertical-align:middle}.bx-im-message-content-box .bx-smile{vertical-align:bottom}.bx-im-message-content-name{font-size:14px;color:#048bd0;cursor:pointer;-webkit-transition:color 1s;-o-transition:color 1s;transition:color 1s}.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-content-name{display:none}.bx-im-message-content-quote{display:inline-block;vertical-align:top}.bx-im-message-content-quote-wrap{border-left:2px solid #c2c4c6;padding-left:8px;font-size:12px;color:#505050;padding-bottom:2px;padding-top:0}.bx-im-message-content-quote-name{padding-bottom:0;font-size:12px;color:#767a7e;padding-top:1px}.bx-im-message-content-quote-name-text{padding-right:5px}.bx-im-message-content-quote-name-time{display:inline-block;font-size:11px}.bx-im-message-content-code{white-space:pre-line;padding-left:5px;color:#505050;border-left:3px solid #505050}.bx-im-message-content-params{float:right;display:block;white-space:nowrap;position:relative;padding-right:10px;margin-right:-10px}.bx-im-message-content-date{display:inline-block;font:11px/18px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#546d77;text-align:right;padding-top:1px;padding-left:10px}.bx-im-message-type-opponent .bx-im-message-content-date{color:#8e8e8e}.bx-im-message-type-system .bx-im-message-content-date{color:#717171}.bx-im-message-status-error .bx-im-message-content-date{color:#fa6168}.bx-im-message-status-edited .bx-im-message-content-date{color:#484848;padding-left:23px}.bx-im-message-status-edited .bx-im-message-content-date:before{position:absolute;content:'';	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-size:cover;height:8px;width:8px;margin-top:5px;margin-left:-13px}.bx-im-message .bx-im-message-content-fit{padding:0;border:0;margin-bottom:14px}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-box{padding:0}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-name{padding:10px 16px 9px 16px}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text{padding:0 16px 0 16px}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-params{margin-top:-37px}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-date{color:#fff;text-shadow:0 0 1px #000,0 0 1px #fff}.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-with-text{padding:7px 16px 8px 16px}.bx-im-mention{color:#1d54a2;border-bottom:1px dotted #1d54a2}.bx-im-smile-like{display:inline-block;height:20px;width:20px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%233BC8F5%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2016.6095c0-.5573.4434-1.009%201.0094-1.009h1.9812c.5575%200%201.0094.4388%201.0094%201.009v10.313c0%20.5573-.4434%201.009-1.0094%201.009h-1.9812c-.5575%200-1.0094-.4388-1.0094-1.009v-10.313zm20.1278-1.294c1.034%200%201.2214%201.0147%201.2147%201.7227-.0067.708-.1353%201.406-1.048%201.854.6713.6454.4347%202.6414-.7707%203.104.7287.3747.4527%202.634-.6666%202.8747.8333.7293-.0787%202.6447-.8547%202.938-.7753.2927-1.614.21-1.614.21s-.9093.0393-1.042.0393h-8.3567c-.7253%200-1.3146-.58-1.3146-1.296V16.1576c0-.342.14-.6727.386-.9154%200%200%203.2346-2.266%205.9053-6.1786.3753-.55%201.1433-.508%201.6587%200%20.246.242.3866.5726.3866.9146v1.046c0%20.0967-.012.3134-.0933.8507-.0827.538-1.152%202.9487-1.152%202.9487-.144.638.64.492%201.4867.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-size:cover}.bx-im-smile-dislike{display:inline-block;height:20px;width:20px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%23FE908E%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2024.1154c0%20.5573.4434%201.009%201.0094%201.009h1.9812c.5575%200%201.0094-.4388%201.0094-1.009v-10.313c0-.5573-.4434-1.009-1.0094-1.009h-1.9812c-.5575%200-1.0094.4388-1.0094%201.009v10.313zm20.1278%201.294c1.034%200%201.2214-1.0147%201.2147-1.7227-.0067-.708-.1353-1.406-1.048-1.854.6713-.6454.4347-2.6414-.7707-3.104.7287-.3747.4527-2.634-.6666-2.8747.8333-.7293-.0787-2.6447-.8547-2.938-.7753-.2927-1.614-.21-1.614-.21s-.9093-.0393-1.042-.0393h-8.3567c-.7253%200-1.3146.58-1.3146%201.296v10.6046c0%20.342.14.6727.386.9154%200%200%203.2346%202.266%205.9053%206.1786.3753.55%201.1433.508%201.6587%200%20.246-.242.3866-.5726.3866-.9146v-1.046c0-.0967-.012-.3134-.0933-.8507-.0827-.538-1.152-2.9487-1.152-2.9487-.144-.638.64-.492%201.4867-.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); background-size:cover}.bx-im-message-content-reaction{position:relative;z-index:1}.bx-im-message-content-reaction .ui-vue-reaction{float:right;margin-top:-6px;margin-bottom:-21px;margin-right:-12px}.bx-im-message-content-reaction .ui-vue-reaction-mobile{margin-top:-9px}.bx-im-message-content-fit .bx-im-message-content-reaction{margin-right:16px;margin-top:-9px}.bx-im-dialog-dark-background .bx-im-message-type-system .bx-im-message-content{color:#949494}.bx-im-dialog-dark-background .bx-im-dialog-status{color:#949494}.bx-messenger-content-item-params{float:right;display:block;white-space:nowrap;position:relative}.bx-messenger-content-item-params{padding-right:10px;margin-right:-10px;-webkit-transition:background .3s;-o-transition:background .3s;transition:background .3s;border-radius:12px;background:transparent}.bx-messenger-content-item-content-without-padding:hover .bx-messenger-content-item-params{background-color:rgba(14,14,14,0.78)}.bx-messenger-content-item-ol-start .bx-messenger-content-item-params{display:none}.bx-messenger-content-item-like{display:inline-block;font:11px/18px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#bac5cd;text-align:right;padding-top:1px;padding-left:3px;margin-right:-9px;white-space:nowrap;-moz-user-select:none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.bx-messenger-content-like-digit{font:11px/18px "Helvetica Neue",Helvetica,Arial,sans-serif;color:#b0b6be;display:inline-block;min-width:6px;cursor:pointer}.bx-messenger-content-item-like-disable .bx-messenger-content-like-button,.bx-messenger-content-like-digit-off{cursor:default}.bx-messenger-content-like-button{background:no-repeat scroll -129px -1073px transparent;cursor:pointer;display:inline-block;position:relative;vertical-align:top;line-height:18px;padding-left:18px;padding-right:10px;color:#c2c4c7;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;height:19px}.bx-messenger-content-item-liked .bx-messenger-content-like-button{background-position:-129px -1047px}.bx-messenger-content-item-liked .bx-messenger-content-like-digit,.bx-im-message-content-self .bx-messenger-content-item-liked .bx-messenger-content-like-digit{color:#f99500}.bx-messenger-content-item-system .bx-messenger-content-item-liked .bx-messenger-content-like-digit{color:#378ad1}.bx-messenger-content-item-system .bx-messenger-content-like-button{color:#c6c8cb}.bx-messenger-content-item-liked .bx-messenger-content-like-digit,.bx-im-message-type-opponent .bx-messenger-content-item-liked .bx-messenger-content-like-digit{color:#6a9cd9}.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-like{display:none}.bx-messenger-content-item-vote .bx-messenger-content-item-like{display:none}.bx-messenger-content-item-ol-output .bx-messenger-content-item-date{color:#bac5cd!important}.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date{color:#a6aaae!important}.bx-messenger-content-item-system .bx-messenger-content-item-date{color:#fff}.bx-messenger-content-item-new .bx-messenger-content-item-date{color:#bbb178}.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-date{color:#fa6168}.bx-messenger-content-item-ol-output .bx-messenger-content-item-date,.bx-messenger-content-item-vote .bx-messenger-content-item-date{color:#859aa9!important}.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date{padding-right:15px;cursor:pointer}.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date:after{background:rgba(255,255,255,.9) no-repeat scroll -58px -4px;content:'';height:16px;position:absolute;width:17px;margin-left:5px;margin-top:1px;border-radius:50%}.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date{padding-right:0;cursor:default}.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date:after{display:none}.bx-messenger-content-item-notice .bx-messenger-content-item-date{color:#717171}.bx-messenger-content-item-ol-output .bx-messenger-content-item-date{color:#bac5cd!important}.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date{color:#a6aaae!important}.bx-notifier-popup-user-more,.bx-messenger-cl,.bx-messenger-cl-notify-button,.bx-messenger-content-item-avatar,.bx-messenger-content-item-date,.bx-messenger-history-item-avatar,.bx-messenger-textarea-cntr-enter,.bx-notifier-item-help-popup{-moz-user-select:none;-o-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.bx-im-message-large-font .bx-im-message-content{font-size:35px;line-height:35px}message/body/dist/body.bundle.js000066400000035111147744174710012656 0ustar00(function (exports,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) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Message Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	var BX = window.BX;

	var _ContentType = Object.freeze({
	  default: 'default',
	  progress: 'progress',
	  image: 'image',
	  audio: 'audio',
	  video: 'video',
	  richLink: 'richLink'
	});

	ui_vue.Vue.component('bx-im-view-message-body', {
	  /**
	   * @emits 'clickByUserName' {user: object, event: MouseEvent}
	   * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	   * @emits 'clickByChatTeaser' {params: object, event: MouseEvent}
	   * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	   * @emits 'setReaction' {message: object, reaction: object}
	   * @emits 'openReactionList' {message: object, values: object}
	   */
	  props: {
	    userId: {
	      default: 0
	    },
	    dialogId: {
	      default: '0'
	    },
	    chatId: {
	      default: 0
	    },
	    messageType: {
	      default: im_const.MessageType.self
	    },
	    message: {
	      type: Object,
	      default: im_model.MessagesModel.create().getElementState
	    },
	    user: {
	      type: Object,
	      default: im_model.UsersModel.create().getElementState
	    },
	    dialog: {
	      type: Object,
	      default: im_model.DialoguesModel.create().getElementState
	    },
	    files: {
	      type: Object,
	      default: {}
	    },
	    enableReactions: {
	      default: true
	    },
	    showName: {
	      default: true
	    },
	    showAvatar: {
	      default: true
	    },
	    referenceContentBodyClassName: {
	      default: ''
	    },
	    referenceContentNameClassName: {
	      default: ''
	    }
	  },
	  created: function created() {
	    this.dateFormatFunction = null;
	    this.cacheFormatDate = {};
	  },
	  methods: {
	    clickByUserName: function clickByUserName(event) {
	      this.$emit('clickByUserName', event);
	    },
	    clickByUploadCancel: function clickByUploadCancel(event) {
	      this.$emit('clickByUploadCancel', event);
	    },
	    clickByChatTeaser: function clickByChatTeaser(event) {
	      this.$emit('clickByChatTeaser', {
	        message: event.message,
	        event: event
	      });
	    },
	    clickByKeyboardButton: function clickByKeyboardButton(event) {
	      this.$emit('clickByKeyboardButton', babelHelpers.objectSpread({
	        message: event.message
	      }, event.event));
	    },
	    setReaction: function setReaction(event) {
	      this.$emit('setReaction', event);
	    },
	    openReactionList: function openReactionList(event) {
	      this.$emit('openReactionList', event);
	    },
	    formatDate: function formatDate(date) {
	      var id = date.toJSON().slice(0, 10);

	      if (this.cacheFormatDate[id]) {
	        return this.cacheFormatDate[id];
	      }

	      var dateFormat = im_lib_utils.Utils.date.getFormatType(BX.Messenger.Const.DateFormat.message, this.$root.$bitrixMessages);
	      this.cacheFormatDate[id] = this._getDateFormat().format(dateFormat, date);
	      return this.cacheFormatDate[id];
	    },
	    _getDateFormat: function _getDateFormat() {
	      var _this = this;

	      if (this.dateFormatFunction) {
	        return this.dateFormatFunction;
	      }

	      this.dateFormatFunction = Object.create(BX.Main.Date);

	      if (this.$root.$bitrixMessages) {
	        this.dateFormatFunction._getMessage = function (phrase) {
	          return _this.$root.$bitrixMessages[phrase];
	        };
	      }

	      return this.dateFormatFunction;
	    }
	  },
	  computed: babelHelpers.objectSpread({
	    MessageType: function MessageType() {
	      return im_const.MessageType;
	    },
	    ContentType: function ContentType() {
	      return _ContentType;
	    },
	    contentType: function contentType() {
	      if (this.filesData.length > 0) {
	        var onlyImage = false;
	        var onlyVideo = false;
	        var onlyAudio = false;
	        var inProgress = false;
	        var _iteratorNormalCompletion = true;
	        var _didIteratorError = false;
	        var _iteratorError = undefined;

	        try {
	          for (var _iterator = this.filesData[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
	            var file = _step.value;

	            if (file.progress < 0) {
	              inProgress = true;
	              break;
	            } else if (file.type === 'audio') {
	              if (onlyVideo || onlyImage) {
	                onlyImage = false;
	                onlyVideo = false;
	                break;
	              }

	              onlyAudio = true;
	            } else if (file.type === 'image' && file.image) {
	              if (onlyVideo || onlyAudio) {
	                onlyAudio = false;
	                onlyVideo = false;
	                break;
	              }

	              onlyImage = true;
	            } else if (file.type === 'video') {
	              if (onlyImage || onlyAudio) {
	                onlyAudio = false;
	                onlyImage = false;
	                break;
	              }

	              onlyVideo = true;
	            } else {
	              onlyAudio = false;
	              onlyImage = false;
	              onlyVideo = false;
	              break;
	            }
	          }
	        } catch (err) {
	          _didIteratorError = true;
	          _iteratorError = err;
	        } finally {
	          try {
	            if (!_iteratorNormalCompletion && _iterator.return != null) {
	              _iterator.return();
	            }
	          } finally {
	            if (_didIteratorError) {
	              throw _iteratorError;
	            }
	          }
	        }

	        if (inProgress) {
	          return _ContentType.progress;
	        } else if (onlyImage) {
	          return _ContentType.image;
	        } else if (onlyAudio) {
	          return _ContentType.audio;
	        } else if (onlyVideo) {
	          return _ContentType.video;
	        }
	      }

	      return _ContentType.default;
	    },
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);
	    },
	    formattedDate: function formattedDate() {
	      return this.formatDate(this.message.date);
	    },
	    messageText: function messageText() {
	      if (this.isDeleted) {
	        return this.localize.IM_MESSENGER_MESSAGE_DELETED;
	      }

	      return this.message.textConverted;
	    },
	    messageAttach: function messageAttach() {
	      return this.message.params.ATTACH;
	    },
	    messageReactions: function messageReactions() {
	      return this.message.params.REACTION || {};
	    },
	    isEdited: function isEdited() {
	      return this.message.params.IS_EDITED === 'Y';
	    },
	    isDeleted: function isDeleted() {
	      return this.message.params.IS_DELETED === 'Y';
	    },
	    chatColor: function chatColor() {
	      return this.dialog.type !== im_const.DialogType.private ? this.dialog.color : this.user.color;
	    },
	    filesData: function filesData() {
	      var _this2 = this;

	      var files = [];

	      if (!this.message.params.FILE_ID || this.message.params.FILE_ID.length <= 0) {
	        return files;
	      }

	      this.message.params.FILE_ID.forEach(function (fileId) {
	        if (!fileId) {
	          return false;
	        }

	        var file = _this2.$store.getters['files/get'](_this2.chatId, fileId, true);

	        if (!file) {
	          _this2.$store.commit('files/set', {
	            data: [_this2.$store.getters['files/getBlank']({
	              id: fileId,
	              chatId: _this2.chatId
	            })]
	          });

	          file = _this2.$store.getters['files/get'](_this2.chatId, fileId, true);
	        }

	        if (file) {
	          files.push(file);
	        }
	      });
	      return files;
	    },
	    keyboardButtons: function keyboardButtons() {
	      var result = false;

	      if (!this.message.params.KEYBOARD || this.message.params.KEYBOARD === 'N') {
	        return result;
	      }

	      return this.message.params.KEYBOARD;
	    },
	    chatTeaser: function chatTeaser() {
	      if (typeof this.message.params.CHAT_ID === 'undefined' || typeof this.message.params.CHAT_LAST_DATE === 'undefined' || typeof this.message.params.CHAT_MESSAGE === 'undefined') {
	        return false;
	      }

	      return {
	        messageCounter: this.message.params.CHAT_MESSAGE,
	        messageLastDate: this.message.params.CHAT_LAST_DATE,
	        languageId: this.application.common.languageId
	      };
	    },
	    userName: function userName() {
	      if (this.message.params.NAME) {
	        return this.message.params.NAME;
	      }

	      if (!this.showAvatar) {
	        return this.user.name;
	      } else {
	        return this.user.firstName ? this.user.firstName : this.user.name;
	      }
	    }
	  }, ui_vue_vuex.Vuex.mapState({
	    application: function application(state) {
	      return state.application;
	    }
	  })),
	  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\">\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<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})\">{{userName}}</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.audio\">\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\" @uploadCancel=\"clickByUploadCancel\"/>\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\" @uploadCancel=\"clickByUploadCancel\"/>\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 :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)}}</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\" @uploadCancel=\"clickByUploadCancel\"/>\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\" @uploadCancel=\"clickByUploadCancel\"/>\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 :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"
	});

}((this.window = this.window || {}),window,window,window,window,window,BX,BX,BX.Messenger.Model,BX.Messenger.Const,BX.Messenger.Lib));
//# sourceMappingURL=body.bundle.js.map
message/body/dist/body.bundle.map.js000066400000014566147744174710013445 0ustar00{"version":3,"sources":["body.bundle.js"],"names":["exports","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","BX","window","_ContentType","Object","freeze","default","progress","image","audio","video","richLink","Vue","component","props","userId","dialogId","chatId","messageType","MessageType","self","message","type","MessagesModel","create","getElementState","user","UsersModel","dialog","DialoguesModel","files","enableReactions","showName","showAvatar","referenceContentBodyClassName","referenceContentNameClassName","created","this","dateFormatFunction","cacheFormatDate","methods","clickByUserName","event","$emit","clickByUploadCancel","clickByChatTeaser","clickByKeyboardButton","babelHelpers","objectSpread","setReaction","openReactionList","formatDate","date","id","toJSON","slice","dateFormat","Utils","getFormatType","Messenger","Const","DateFormat","$root","$bitrixMessages","_getDateFormat","format","_this","Main","Date","_getMessage","phrase","computed","ContentType","contentType","filesData","length","onlyImage","onlyVideo","onlyAudio","inProgress","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_iterator","Symbol","iterator","_step","next","done","file","value","err","return","localize","getFilteredPhrases","formattedDate","messageText","isDeleted","IM_MESSENGER_MESSAGE_DELETED","textConverted","messageAttach","params","ATTACH","messageReactions","REACTION","isEdited","IS_EDITED","IS_DELETED","chatColor","DialogType","private","color","_this2","FILE_ID","forEach","fileId","$store","getters","commit","data","push","keyboardButtons","result","KEYBOARD","chatTeaser","CHAT_ID","CHAT_LAST_DATE","CHAT_MESSAGE","messageCounter","messageLastDate","languageId","application","common","userName","NAME","name","firstName","Vuex","mapState","state","template","Model","Lib"],"mappings":"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","file":"body.bundle.map.js"}message/body/dist/body.bundle.css000066400000031137147744174710013036 0ustar00.bx-im-message-content-wrap {
	padding-bottom: 1px;
}
.bx-im-message-content {
	font: 14px/19px "Helvetica Neue", Helvetica, Arial, sans-serif;
	display: block;
	padding: 8px 16px;
	border: 1px solid rgba(0,0,0,.07);
	border-radius: 12px;
	background: #CFEFFF;
	color: #333;
	-webkit-box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	        box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15);
	word-break: break-word;
	-webkit-transition: background-color .5s, color .5s, font-size .3s;
	-o-transition: background-color .5s, color .5s, font-size .3s;
	transition: background-color .5s, color .5s, font-size .3s;
	margin-bottom: 5px;
}

.bx-im-message-content a {color:#1d54a2; text-decoration:underline;}
.bx-im-message-content a:hover {text-decoration:none;}

.bx-im-message-type-opponent .bx-im-message-content {
	border: 0;
	background-color: #fff;
}

.bx-im-message-type-system .bx-im-message-content {
	border: 0;
	background: transparent;
	-webkit-box-shadow: none;
	        box-shadow: none;
	color: #717171;
}

.bx-im-message-status-unread .bx-im-message-content {
	background-color: #fffadd;
}

.bx-im-message-status-deleted .bx-im-message-content {
	font-style: italic;
    color: #7d7d7d;
}

.bx-im-message-status-blink .bx-im-message-content {
	background-color: #fffadd;
}

.bx-im-message-status-error .bx-im-message-content {
	background-color: #fcdcde;
}
.bx-im-message-status-error .bx-im-message-content {
	-webkit-box-shadow: 0 1px 0 0 rgba(255, 0, 0, 0.15);
	        box-shadow: 0 1px 0 0 rgba(255, 0, 0, 0.15);
}

.bx-im-message-content-box {
	padding: 7px 0 7px;
	display: inline-block;
	word-wrap: break-word;
	width: 100%;
	vertical-align: middle;
}

.bx-im-message-content-box .bx-smile {
	vertical-align: bottom;
}

.bx-im-message-content-name {
	font-size: 14px;
	color: #048bd0;
	cursor: pointer;
	-webkit-transition: color 1s;
	-o-transition: color 1s;
	transition: color 1s;
}
.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-content-name {
	display: none;
}

.bx-im-message-content-quote {
	display: inline-block;
	vertical-align: top;
}
.bx-im-message-content-quote-wrap {
	border-left: 2px solid #c2c4c6;
	padding-left: 8px;
	font-size: 12px;
	color: #505050;
	padding-bottom: 2px;
	padding-top: 0;
}
.bx-im-message-content-quote-name {
	padding-bottom: 0;
	font-size: 12px;
	color: #767a7e;
	padding-top: 1px;
}
.bx-im-message-content-quote-name-text {
	padding-right: 5px;
}
.bx-im-message-content-quote-name-time {
	display: inline-block;
	font-size: 11px;
}
.bx-im-message-content-code {
	white-space: pre-line;
	padding-left: 5px;
	color: #505050;
	border-left: 3px solid #505050;
}

.bx-im-message-content-params {
	float: right;
	display: block;
	white-space: nowrap;
	position: relative;
	padding-right: 10px;
    margin-right: -10px;
}

.bx-im-message-content-date {
	display:inline-block;
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #546d77;
	text-align: right;
	padding-top: 1px;
	padding-left: 10px;
}
.bx-im-message-type-opponent .bx-im-message-content-date { color: #8e8e8e; }
.bx-im-message-type-system .bx-im-message-content-date { color: #717171; }
.bx-im-message-status-error .bx-im-message-content-date { color: #fa6168; }

.bx-im-message-status-edited .bx-im-message-content-date { color: #484848; padding-left: 23px; }
.bx-im-message-status-edited .bx-im-message-content-date:before {
	position: absolute;
	content: '';
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2210%22%20height%3D%2210%22%3E%0A%20%20%3Cpath%20fill%3D%22%23717171%22%20fill-rule%3D%22evenodd%22%20d%3D%22M7.8128%204.807L5.1751%202.1694a.041.041%200%200%200-.0578%200L.0328%207.2538c-.0739.0733%200%202.696%200%202.696s2.6222.0734%202.6961%200l5.0845-5.0844a.0416.0416%200%200%200-.0006-.0583zM1.0647%208.9376v-1.047h1.0495V8.94H1.0647v-.0025zm8.8785-6.2584L7.3054.0413a.0421.0421%200%200%200-.0578%200L6.1144%201.1746a.0416.0416%200%200%200%200%20.0577l2.6378%202.6378a.041.041%200%200%200%20.0577%200l1.1338-1.1333a.0427.0427%200%200%200-.0028-.0577h.0023z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-size: cover;
	height: 8px;
	width: 8px;
	margin-top: 5px;
	margin-left: -13px;
}

.bx-im-message .bx-im-message-content-fit {
	padding: 0;
	border: 0;
	margin-bottom: 14px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-box {
	padding:0;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-name {
	padding: 10px 16px 9px 16px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text
{
	padding: 0 16px 0 16px
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -37px;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-without-text .bx-im-message-content-date {
	color: #fff;
	text-shadow: 0 0 1px #000, 0 0 1px #fff;
}
.bx-im-message .bx-im-message-content-fit .bx-im-message-content-body-with-text {
	padding: 7px 16px 8px 16px;
}

.bx-im-mention {
	color: #1d54a2;
	border-bottom: 1px dotted #1d54a2;
}

.bx-im-smile-like {
	display: inline-block;
	height: 20px;
	width: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%233BC8F5%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2016.6095c0-.5573.4434-1.009%201.0094-1.009h1.9812c.5575%200%201.0094.4388%201.0094%201.009v10.313c0%20.5573-.4434%201.009-1.0094%201.009h-1.9812c-.5575%200-1.0094-.4388-1.0094-1.009v-10.313zm20.1278-1.294c1.034%200%201.2214%201.0147%201.2147%201.7227-.0067.708-.1353%201.406-1.048%201.854.6713.6454.4347%202.6414-.7707%203.104.7287.3747.4527%202.634-.6666%202.8747.8333.7293-.0787%202.6447-.8547%202.938-.7753.2927-1.614.21-1.614.21s-.9093.0393-1.042.0393h-8.3567c-.7253%200-1.3146-.58-1.3146-1.296V16.1576c0-.342.14-.6727.386-.9154%200%200%203.2346-2.266%205.9053-6.1786.3753-.55%201.1433-.508%201.6587%200%20.246.242.3866.5726.3866.9146v1.046c0%20.0967-.012.3134-.0933.8507-.0827.538-1.152%202.9487-1.152%202.9487-.144.638.64.492%201.4867.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-size: cover;
}

.bx-im-smile-dislike {
	display: inline-block;
	height: 20px;
	width: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Crect%20width%3D%2240%22%20height%3D%2240%22%20fill%3D%22%23FE908E%22%20rx%3D%2220%22/%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M10%2024.1154c0%20.5573.4434%201.009%201.0094%201.009h1.9812c.5575%200%201.0094-.4388%201.0094-1.009v-10.313c0-.5573-.4434-1.009-1.0094-1.009h-1.9812c-.5575%200-1.0094.4388-1.0094%201.009v10.313zm20.1278%201.294c1.034%200%201.2214-1.0147%201.2147-1.7227-.0067-.708-.1353-1.406-1.048-1.854.6713-.6454.4347-2.6414-.7707-3.104.7287-.3747.4527-2.634-.6666-2.8747.8333-.7293-.0787-2.6447-.8547-2.938-.7753-.2927-1.614-.21-1.614-.21s-.9093-.0393-1.042-.0393h-8.3567c-.7253%200-1.3146.58-1.3146%201.296v10.6046c0%20.342.14.6727.386.9154%200%200%203.2346%202.266%205.9053%206.1786.3753.55%201.1433.508%201.6587%200%20.246-.242.3866-.5726.3866-.9146v-1.046c0-.0967-.012-.3134-.0933-.8507-.0827-.538-1.152-2.9487-1.152-2.9487-.144-.638.64-.492%201.4867-.492h5.8746z%22/%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A');
	background-size: cover;
}

.bx-im-message-content-reaction {
	position: relative;
	z-index: 1;
}

.bx-im-message-content-reaction .ui-vue-reaction {
   	float: right;
	margin-top: -6px;
	margin-bottom: -21px;
	margin-right: -12px;
}
.bx-im-message-content-reaction .ui-vue-reaction-mobile {
	margin-top: -9px;
}

.bx-im-message-content-fit .bx-im-message-content-reaction {
	margin-right: 16px;
	margin-top: -9px;
}

.bx-im-dialog-dark-background .bx-im-message-type-system .bx-im-message-content {
	color: #949494;
}

.bx-im-dialog-dark-background .bx-im-dialog-status {
	color: #949494;
}

/*
temporary
 */


/* region 04. Message params (date, like, etc) */
.bx-messenger-content-item-params { float: right;display: block; white-space: nowrap; position: relative;}
.bx-messenger-content-item-params {
	padding-right: 10px;
    margin-right: -10px;
	-webkit-transition: background .3s;
	-o-transition: background .3s;
	transition: background .3s;
	border-radius: 12px;
	background: transparent;
}
.bx-messenger-content-item-content-without-padding:hover .bx-messenger-content-item-params {
	background-color: rgba(14, 14, 14, 0.78);
}
.bx-messenger-content-item-ol-start .bx-messenger-content-item-params  { display: none; }

.bx-messenger-content-item-like {
	display:inline-block;
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #bac5cd; text-align: right; padding-top: 1px; padding-left: 3px;margin-right: -9px;white-space: nowrap;
	-moz-user-select:none; -o-user-select:none; -webkit-user-select:none; -ms-user-select:none; user-select:none;
}
.bx-messenger-content-like-digit {
	font: 11px/18px "Helvetica Neue", Helvetica, Arial, sans-serif;
	color: #b0b6be;display: inline-block;min-width: 6px; cursor: pointer;
}
.bx-messenger-content-item-like-disable .bx-messenger-content-like-button,
.bx-messenger-content-like-digit-off { cursor: default; }
.bx-messenger-content-like-button {
	background:  no-repeat scroll -129px -1073px transparent;
	cursor: pointer;
	display: inline-block;
	position: relative;
	vertical-align: top;
	line-height: 18px;
	padding-left: 18px;
	padding-right: 10px;
	color: #c2c4c7;
	-webkit-transition: all .3s;
	-o-transition: all .3s;
	transition: all .3s;
	height: 19px;
}

.bx-messenger-content-item-liked .bx-messenger-content-like-button {background-position: -129px -1047px;}
.bx-messenger-content-item-liked .bx-messenger-content-like-digit,
.bx-im-message-content-self .bx-messenger-content-item-liked .bx-messenger-content-like-digit { color: #f99500;}
.bx-messenger-content-item-system .bx-messenger-content-item-liked .bx-messenger-content-like-digit { color: #378ad1;}
.bx-messenger-content-item-system .bx-messenger-content-like-button {color: #c6c8cb;}

.bx-messenger-content-item-liked .bx-messenger-content-like-digit,
.bx-im-message-type-opponent .bx-messenger-content-item-liked .bx-messenger-content-like-digit {color: #6a9cd9;}

.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-like { display: none; }
.bx-messenger-content-item-vote .bx-messenger-content-item-like {display: none;}

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date { color: #bac5cd!important; }
.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date { color: #a6aaae!important; }

.bx-messenger-content-item-system .bx-messenger-content-item-date { color: #fff; }
.bx-messenger-content-item-new .bx-messenger-content-item-date { color: #bbb178; }
.bx-messenger-content-item-content-progress-error .bx-messenger-content-item-date { color: #fa6168; }

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date,
.bx-messenger-content-item-vote .bx-messenger-content-item-date { color: #859aa9!important; }

.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date { padding-right: 15px; cursor: pointer; }
.bx-messenger-chat-lines .bx-messenger-content-item-system .bx-messenger-content-item-date:after {
    background: rgba(255,255,255,.9)  no-repeat scroll -58px -4px;
    content: '';
    height: 16px;
    position: absolute;
    width: 17px;
    margin-left: 5px;
    margin-top: 1px;
    border-radius: 50%;
}
.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date { padding-right: 0; cursor: default;}
.bx-messenger-chat-lines .bx-messenger-content-item-ol-output .bx-messenger-content-item-date:after { display: none; }
.bx-messenger-content-item-notice .bx-messenger-content-item-date  { color: #717171; }

.bx-messenger-content-item-ol-output .bx-messenger-content-item-date { color: #bac5cd!important; }
.bx-messenger-content-item-ol-attention .bx-messenger-content-item-date { color: #a6aaae!important; }

/* endregion 03. Message params (date, like, etc) */

.bx-notifier-popup-user-more, .bx-messenger-cl, .bx-messenger-cl-notify-button, .bx-messenger-content-item-avatar, .bx-messenger-content-item-date, .bx-messenger-history-item-avatar,
.bx-messenger-textarea-cntr-enter, .bx-notifier-item-help-popup { -moz-user-select:none; -o-user-select:none; -webkit-user-select:none; -ms-user-select:none; user-select:none; cursor: default; }

.bx-im-message-large-font .bx-im-message-content {
	font-size: 35px;
	line-height: 35px;
}message/body/dist/body.bundle.js.map000066400000054234147744174710013441 0ustar00{"version":3,"file":"body.bundle.js","sources":["../src/body.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Message Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './body.css';\nimport 'im.view.element.media';\nimport 'im.view.element.attach';\nimport 'im.view.element.keyboard';\nimport 'im.view.element.chatteaser';\nimport 'ui.vue.components.reaction';\n\nimport {Vue} from \"ui.vue\";\nimport {Vuex} from \"ui.vue.vuex\";\nimport {DialoguesModel, FilesModel, MessagesModel, UsersModel} from 'im.model';\nimport {DialogType, MessageType} from \"im.const\";\nimport {Utils} from \"im.lib.utils\";\n\nconst BX = window.BX;\n\nconst ContentType = Object.freeze({\n\tdefault: 'default',\n\tprogress: 'progress',\n\timage: 'image',\n\taudio: 'audio',\n\tvideo: 'video',\n\trichLink: 'richLink',\n});\n\nVue.component('bx-im-view-message-body',\n{\n\t/**\n\t * @emits 'clickByUserName' {user: object, event: MouseEvent}\n\t * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}\n\t * @emits 'clickByChatTeaser' {params: object, event: MouseEvent}\n\t * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}\n\t * @emits 'setReaction' {message: object, reaction: object}\n\t * @emits 'openReactionList' {message: object, values: object}\n\t */\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tdialogId: { default: '0' },\n\t\tchatId: { default: 0 },\n\t\tmessageType: { default: MessageType.self },\n\t\tmessage: {\n\t\t\ttype: Object,\n\t\t\tdefault: MessagesModel.create().getElementState\n\t\t},\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\tdefault: UsersModel.create().getElementState\n\t\t},\n\t\tdialog: {\n\t\t\ttype: Object,\n\t\t\tdefault: DialoguesModel.create().getElementState\n\t\t},\n\t\tfiles: {\n\t\t\ttype: Object,\n\t\t\tdefault: {}\n\t\t},\n\t\tenableReactions: { default: true },\n\t\tshowName: { default: true },\n\t\tshowAvatar: { default: true },\n\t\treferenceContentBodyClassName: { default: ''},\n\t\treferenceContentNameClassName: { default: ''},\n\t},\n\tcreated()\n\t{\n\t\tthis.dateFormatFunction = null;\n\t\tthis.cacheFormatDate = {};\n\t},\n\tmethods:\n\t{\n\t\tclickByUserName(event)\n\t\t{\n\t\t\tthis.$emit('clickByUserName', event)\n\t\t},\n\t\tclickByUploadCancel(event)\n\t\t{\n\t\t\tthis.$emit('clickByUploadCancel', event)\n\t\t},\n\t\tclickByChatTeaser(event)\n\t\t{\n\t\t\tthis.$emit('clickByChatTeaser', {message: event.message, event});\n\t\t},\n\t\tclickByKeyboardButton(event)\n\t\t{\n\t\t\tthis.$emit('clickByKeyboardButton', {message: event.message, ...event.event});\n\t\t},\n\t\tsetReaction(event)\n\t\t{\n\t\t\tthis.$emit('setReaction', event)\n\t\t},\n\t\topenReactionList(event)\n\t\t{\n\t\t\tthis.$emit('openReactionList', event)\n\t\t},\n\t\tformatDate(date)\n\t\t{\n\t\t\tconst id = date.toJSON().slice(0, 10);\n\n\t\t\tif (this.cacheFormatDate[id])\n\t\t\t{\n\t\t\t\treturn this.cacheFormatDate[id];\n\t\t\t}\n\n\t\t\tlet dateFormat = Utils.date.getFormatType(\n\t\t\t\tBX.Messenger.Const.DateFormat.message,\n\t\t\t\tthis.$root.$bitrixMessages\n\t\t\t);\n\n\t\t\tthis.cacheFormatDate[id] = this._getDateFormat().format(dateFormat, date);\n\n\t\t\treturn this.cacheFormatDate[id];\n\t\t},\n\t\t_getDateFormat()\n\t\t{\n\t\t\tif (this.dateFormatFunction)\n\t\t\t{\n\t\t\t\treturn this.dateFormatFunction;\n\t\t\t}\n\n\t\t\tthis.dateFormatFunction = Object.create(BX.Main.Date);\n\t\t\tif (this.$root.$bitrixMessages)\n\t\t\t{\n\t\t\t\tthis.dateFormatFunction._getMessage = (phrase) => this.$root.$bitrixMessages[phrase];\n\t\t\t}\n\n\t\t\treturn this.dateFormatFunction;\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tMessageType: () => MessageType,\n\t\tContentType: () => ContentType,\n\n\t\tcontentType()\n\t\t{\n\t\t\tif (this.filesData.length > 0)\n\t\t\t{\n\t\t\t\tlet onlyImage = false;\n\t\t\t\tlet onlyVideo = false;\n\t\t\t\tlet onlyAudio = false;\n\t\t\t\tlet inProgress = false;\n\n\t\t\t\tfor (let file of this.filesData)\n\t\t\t\t{\n\t\t\t\t\tif (file.progress < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tinProgress = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse if (file.type === 'audio')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (onlyVideo || onlyImage)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tonlyImage = false;\n\t\t\t\t\t\t\tonlyVideo = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonlyAudio = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if (file.type === 'image' && file.image)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (onlyVideo || onlyAudio)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tonlyAudio = false;\n\t\t\t\t\t\t\tonlyVideo = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonlyImage = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if (file.type === 'video')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (onlyImage || onlyAudio)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tonlyAudio = false;\n\t\t\t\t\t\t\tonlyImage = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonlyVideo = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tonlyAudio = false;\n\t\t\t\t\t\tonlyImage = false;\n\t\t\t\t\t\tonlyVideo = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (inProgress)\n\t\t\t\t{\n\t\t\t\t\treturn ContentType.progress;\n\t\t\t\t}\n\t\t\t\telse if (onlyImage)\n\t\t\t\t{\n\t\t\t\t\treturn ContentType.image;\n\t\t\t\t}\n\t\t\t\telse if (onlyAudio)\n\t\t\t\t{\n\t\t\t\t\treturn ContentType.audio;\n\t\t\t\t}\n\t\t\t\telse if (onlyVideo)\n\t\t\t\t{\n\t\t\t\t\treturn ContentType.video;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ContentType.default;\n\t\t},\n\n\t\tlocalize()\n\t\t{\n\t\t\treturn Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);\n\t\t},\n\n\t\tformattedDate()\n\t\t{\n\t\t\treturn this.formatDate(this.message.date);\n\t\t},\n\n\t\tmessageText()\n\t\t{\n\t\t\tif (this.isDeleted)\n\t\t\t{\n\t\t\t\treturn this.localize.IM_MESSENGER_MESSAGE_DELETED;\n\t\t\t}\n\n\t\t\treturn this.message.textConverted;\n\t\t},\n\n\t\tmessageAttach()\n\t\t{\n\t\t\treturn this.message.params.ATTACH;\n\t\t},\n\n\t\tmessageReactions()\n\t\t{\n\t\t\treturn this.message.params.REACTION || {};\n\t\t},\n\n\t\tisEdited()\n\t\t{\n\t\t\treturn this.message.params.IS_EDITED === 'Y';\n\t\t},\n\n\t\tisDeleted()\n\t\t{\n\t\t\treturn this.message.params.IS_DELETED === 'Y';\n\t\t},\n\n\t\tchatColor()\n\t\t{\n\t\t\treturn this.dialog.type !== DialogType.private? this.dialog.color: this.user.color;\n\t\t},\n\n\t\tfilesData()\n\t\t{\n\t\t\tlet files = [];\n\n\t\t\tif (!this.message.params.FILE_ID || this.message.params.FILE_ID.length <= 0)\n\t\t\t{\n\t\t\t\treturn files;\n\t\t\t}\n\n\t\t\tthis.message.params.FILE_ID.forEach(fileId => {\n\t\t\t\tif (!fileId)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlet file = this.$store.getters['files/get'](this.chatId, fileId, true);\n\t\t\t\tif (!file)\n\t\t\t\t{\n\t\t\t\t\tthis.$store.commit('files/set', {data: [\n\t\t\t\t\t\tthis.$store.getters['files/getBlank']({id: fileId, chatId: this.chatId})\n\t\t\t\t\t]});\n\t\t\t\t\tfile = this.$store.getters['files/get'](this.chatId, fileId, true);\n\t\t\t\t}\n\t\t\t\tif (file)\n\t\t\t\t{\n\t\t\t\t\tfiles.push(file);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn files;\n\t\t},\n\n\t\tkeyboardButtons()\n\t\t{\n\t\t\tlet result = false;\n\n\t\t\tif (!this.message.params.KEYBOARD || this.message.params.KEYBOARD === 'N')\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn this.message.params.KEYBOARD;\n\t\t},\n\t\tchatTeaser()\n\t\t{\n\t\t\tif (\n\t\t\t\ttypeof this.message.params.CHAT_ID === 'undefined'\n\t\t\t\t|| typeof this.message.params.CHAT_LAST_DATE === 'undefined'\n\t\t\t\t|| typeof this.message.params.CHAT_MESSAGE === 'undefined'\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmessageCounter: this.message.params.CHAT_MESSAGE,\n\t\t\t\tmessageLastDate: this.message.params.CHAT_LAST_DATE,\n\t\t\t\tlanguageId: this.application.common.languageId\n\t\t\t};\n\t\t},\n\n\t\tuserName()\n\t\t{\n\t\t\tif (this.message.params.NAME)\n\t\t\t{\n\t\t\t\treturn this.message.params.NAME;\n\t\t\t}\n\n\t\t\tif (!this.showAvatar)\n\t\t\t{\n\t\t\t\treturn this.user.name;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this.user.firstName ? this.user.firstName : this.user.name;\n\t\t\t}\n\t\t},\n\n\t\t...Vuex.mapState({\n\t\t\tapplication: state => state.application,\n\t\t})\n\t},\n\ttemplate: `\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\">\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<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})\">{{userName}}</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.audio\">\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\" @uploadCancel=\"clickByUploadCancel\"/>\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\" @uploadCancel=\"clickByUploadCancel\"/>\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 :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)}}</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\" @uploadCancel=\"clickByUploadCancel\"/>\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\" @uploadCancel=\"clickByUploadCancel\"/>\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 :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`\n});"],"names":["BX","window","ContentType","Object","freeze","default","progress","image","audio","video","richLink","Vue","component","props","userId","dialogId","chatId","messageType","MessageType","self","message","type","MessagesModel","create","getElementState","user","UsersModel","dialog","DialoguesModel","files","enableReactions","showName","showAvatar","referenceContentBodyClassName","referenceContentNameClassName","created","dateFormatFunction","cacheFormatDate","methods","clickByUserName","event","$emit","clickByUploadCancel","clickByChatTeaser","clickByKeyboardButton","setReaction","openReactionList","formatDate","date","id","toJSON","slice","dateFormat","Utils","getFormatType","Messenger","Const","DateFormat","$root","$bitrixMessages","_getDateFormat","format","Main","Date","_getMessage","phrase","computed","contentType","filesData","length","onlyImage","onlyVideo","onlyAudio","inProgress","file","localize","getFilteredPhrases","formattedDate","messageText","isDeleted","IM_MESSENGER_MESSAGE_DELETED","textConverted","messageAttach","params","ATTACH","messageReactions","REACTION","isEdited","IS_EDITED","IS_DELETED","chatColor","DialogType","private","color","FILE_ID","forEach","fileId","$store","getters","commit","data","push","keyboardButtons","result","KEYBOARD","chatTeaser","CHAT_ID","CHAT_LAST_DATE","CHAT_MESSAGE","messageCounter","messageLastDate","languageId","application","common","userName","NAME","name","firstName","Vuex","mapState","state","template"],"mappings":"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"}message/body/lang/ua/config.php000066400000000250147744174710012450 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_LIKE"] = "Подобається";
$MESS["IM_MESSENGER_MESSAGE_DELETED"] = "Це повідомлення було видалено.";
?>message/body/lang/en/config.php000066400000000167147744174710012454 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_LIKE"] = "Like";
$MESS["IM_MESSENGER_MESSAGE_DELETED"] = "This message was deleted.";
?>message/body/lang/ru/config.php000066400000000231147744174710012470 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_LIKE"] = "Нравится";
$MESS["IM_MESSENGER_MESSAGE_DELETED"] = "Это сообщение было удалено.";message/body/lang/de/config.php000066400000000206147744174710012434 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_LIKE"] = "Gefällt mir";
$MESS["IM_MESSENGER_MESSAGE_DELETED"] = "Diese Nachricht wurde gelöscht.";
?>message/src/message.css000066400000023575147744174710011153 0ustar00/* region 01. base */
.bx-im-message {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: flex-start;
	margin: 10px 0 5px;
	outline: none;
	-webkit-appearance: none;
	-webkit-tap-highlight-color: transparent;
	position: relative;
}
.bx-im-message.bx-im-message-type-self {
	flex-direction: row-reverse;
	margin-right: 15px;
	margin-left: 0;
}

.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message {
	margin-top: 0;
}

.bx-im-message-without-avatar {
	margin-left: 15px;
}
.bx-im-message-without-menu {
	margin-right: 15px;
}
.bx-im-message-without-menu.bx-im-message-type-opponent {
	margin-right: 30px;
}

/* endregion */

/* region 02. avatar */
.bx-im-message-avatar {
	flex-shrink: 0;
	width: 65px;
    height: 52px;
	text-align: center;
}

.bx-im-message-avatar-image {
	width: 40px;
    height: 40px;
	border-radius: 50%;
	background-size: cover;
	margin: 15px auto 0;
	cursor: pointer;
}
.bx-im-message-avatar-image-source {
	width: 40px;
    height: 40px;
	border-radius: 50%;
}
.bx-im-message-avatar-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%0A%20%20%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.7857%2062.254c0-2.311-3.029-4.951-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.411-2.784%202.411-2.784%201.728-4.994-.86-4.693-.86-4.693.822-3.738%200-9.2001%200-9.2001-1.15-10.116-18.47-7.37-16.417-4.065-5.062-.934-3.907%2010.551-3.907%2010.551l1.1%202.969c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.861%202.272%201.861%202.272.109%204.7281%202.446%205.3501%202.446%205.3501.44%202.969.166%202.464.166%202.464l-2.082.25a8.2231%208.2231%200%200%201-.164%202.013c-2.449%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.3171-.907%203.594-2.585%2011.983-2.585%2011.983h53l-3.215-13.741z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
}

.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-avatar-image {
	display: none;
}
/* endregion */

.bx-im-message-box {
	/*overflow: hidden; comment for reaction*/
}

.bx-im-message-command-wrap { display: inline-block; }
.bx-im-message-command { border-bottom: 1px dashed #2067B0; cursor: pointer; color: #2067B0; display: inline-block; }
.bx-im-message-command-data { display: none; }

/* region 03. status: sending, retry, menu  */

.bx-im-message-box-status {
	flex-shrink: 0;
	width: 33px;
    height: 52px;
	position: relative;
}

.bx-im-message-sending {
	display: inline-block;
	width: 20px;
	height: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%2380868E%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	-webkit-animation: bx-im-message-sending .8s linear infinite;
	animation: bx-im-message-sending .8s linear infinite;
	margin-top: 16px;
	margin-left: 7px;
	opacity: 1;
	position: absolute;
}
@-webkit-keyframes bx-im-message-sending {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-message-sending {
	0% {
		-moz-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100%
	{
		-moz-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
.bx-im-message-sending-enter-active {
	-webkit-animation: bx-im-message-sending-show 10s linear;
	animation: bx-im-message-sending-show 10s linear;
}
.bx-im-message-sending-leave-active {
	opacity: 0;
}

@-webkit-keyframes bx-im-message-sending-show {
	0% {
		opacity: 0;
	}
	92% {
		opacity: 0;
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		opacity: 1;
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-message-sending-show {
	0% {
		opacity: 0;
	}
	92% {
		opacity: 0;
		-moz-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		opacity: 1;
		-moz-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}

.bx-im-message-status-retry {
	width: 33px;
	height: 52px;
	text-align: center;
	position: absolute;
}

.bx-im-message-retry-icon {
	display: inline-block;
	width: 19px;
	height: 19px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm5.5291-9.9206V4.77l-1.2384%201.2388c-1.0083-1.2414-2.5432-2.037-4.2676-2.037-3.0412%200-5.5064%202.4653-5.5064%205.5065s2.4652%205.506%205.5064%205.506c1.2971%200%202.487-.4515%203.4282-1.2017l-1.3953-1.7122c-.5604.44-1.2653.705-2.033.705-1.8208%200-3.297-1.4762-3.297-3.297%200-1.821%201.4762-3.2975%203.297-3.2975%201.1142%200%202.0986.5538%202.6951%201.4l-1.4983%201.4984h4.3093z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	opacity: .8;
	transition: opacity .1s ease-out;
	cursor: pointer;
	margin-top: 17px;
}
.bx-im-message-retry-icon:hover .bx-im-message-retry-icon:hover {
	opacity: 1;
}

.bx-im-message-status-retry-enter-active {
	transition: opacity .1s ease-out;
}
.bx-im-message-status-retry-enter {
	opacity: 0;
}

.bx-im-message-status-retry-leave-active {
	-webkit-animation: bx-im-message-status-retry .2s linear;
	animation: bx-im-message-status-retry .2s linear;
}

@-webkit-keyframes bx-im-message-status-retry {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		-webkit-transform:rotate(180deg);
		transform:rotate(180deg);
	}
}
@keyframes bx-im-message-status-retry {
	0% {
		-moz-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		-moz-transform:rotate(180deg);
		transform:rotate(180deg);
	}
}

.bx-im-message-status-menu {
	width: 33px;
	height: 52px;
}

/* endregion message status */

/* region 04. menu */
.bx-im-message-menu {
	flex-shrink: 0;
	width: 33px;
	height: 52px;
	text-align: center;
	position: relative;
}

.bx-im-message-menu-icon {
	display: inline-block;
	width: 19px;
	height: 19px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm0-8.6806L5.6053%206.4247%203.658%208.372%209.5%2014.214l5.842-5.842-1.9473-1.9473L9.5%2010.3194z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	opacity: 0;
	transition: opacity .05s ease-out;
	cursor: pointer;
	margin-top: 16px;
}
.bx-im-message:hover .bx-im-message-menu-icon {
	opacity: .5;
	transition: opacity .2s ease-out;
}
.bx-im-message:hover .bx-im-message-menu-icon:hover {
	opacity: 1;
}

/*
.bx-messenger-content-item-menu-with-apps {  background-position: 0 -30px;  opacity: .8;  }
.bx-messenger-content-item-menu-with-apps:hover {  background-position: 0 -15px;  }
.bx-messenger-content-item:hover .bx-messenger-content-item-menu { opacity: 0.6 }
.bx-messenger-content-item:hover .bx-messenger-content-item-menu-with-apps { opacity: .8 }
.bx-messenger-content-item-menu-hover .bx-messenger-content-item-menu { opacity: 1!important; }
.bx-im-message-type-opponent .bx-messenger-content-item-menu { float: right; margin-left: 0; margin-right: -42px; }
.bx-messenger-chat-guest .bx-messenger-content-item-menu { display: none; }
*/

/* endregion */

/* region 05. reply */
.bx-im-message-reply {
	flex-shrink: 0;
	width: 0;
	height: 52px;
	text-align: center;
	position: relative;
}

.bx-im-message-reply-left {
	position: absolute;
	left: -60px;
}
.bx-im-message-type-other .bx-im-message-reply-left {
	position: relative;
	left: -60px;
}
.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-left {
	position: relative;
	left: -65px;
}

.bx-im-message-reply-right {
	position: absolute;
	right: -25px;
}
.bx-im-message-type-other .bx-im-message-reply-right {
	right: -40px;
}
.bx-im-message-without-avatar .bx-im-message-reply-right {
	right: 0;
}
.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-right {
	right: -30px;
}

.bx-im-message-reply-icon {
	position: absolute;
	display: inline-block;
	width: 32px;
	height: 32px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2227%22%20height%3D%2223%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%20%20%3Cpath%20d%3D%22M26.532%2022.975c-.416-1.804-1.298-3.169-2.312-4.521a11.577%2011.577%200%200%200-3.603-3.178%2010.267%2010.267%200%200%200-4.138-1.29c-.351-.03-.7-.04-1.041-.03-.325.009-1.338-.037-1.524%200v4.996L6.28%2013.419.828%209.476l5.453-4.033L13.914%200v4.975c.178.043%201.721.279%202.264.468%201.144.398%202.192.978%203.175%201.61a16.635%2016.635%200%200%201%204.803%204.685%2015.385%2015.385%200%200%201%202.376%205.759c.37%201.979.419%203.677%200%205.478z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-color: rgba(7, 5, 27, 0.62);
	background-position: center center;
	background-size: 16px;
	cursor: pointer;
	border-radius: 50%;
	margin-top: 10px;
	margin-left: 15px;
	animation: bx-im-message-reply-icon-show .5s linear 1;
}

@keyframes bx-im-message-reply-icon-show {
	0% {
		opacity: 0;
		transform: scale(0);
	}

	20% {
		opacity: 0;
		transform: scale(0);
	}

	40% {
		opacity: 0.5;
		transform: scale(1);
	}

	50% {
		opacity: 1;
		transform: scale(1.4);
	}

	60% {
		opacity: 1;
		transform: scale(1);
	}

	100% {
		opacity: 1;
		transform: scale(1);
	}
}

/* endregion */


message/src/message.js000066400000036640147744174710010774 0ustar00/**
 * Bitrix Messenger
 * Message Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './message.css';
import 'im.view.message.body';

import {DialoguesModel, MessagesModel} from 'im.model';
import {Vue} from "ui.vue";
import {MessageType} from "im.const";
import {Utils} from "im.lib.utils";
import {Animation} from "im.lib.animation";

Vue.component('bx-im-view-message',
{
	/**
	 * @emits 'clickByUserName' {user: object, event: MouseEvent}
	 * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	 * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	 * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}
	 * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}
	 * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}
	 * @emits 'setMessageReaction' {message: object, reaction: object}
	 * @emits 'openMessageReactionList' {message: object, values: object}
	 * @emits 'dragMessage' {result: boolean, event: MouseEvent}
	 * @emits 'quoteMessage' {message: object}
	 */
	props:
	{
		userId: { default: 0 },
		dialogId: { default: 0 },
		chatId: { default: 0 },
		enableReactions: { default: true },
		enableDateActions: { default: true },
		enableCreateContent: { default: true },
		enableGestureQuote: { default: true },
		enableGestureQuoteFromRight: { default: true },
		enableGestureMenu: { default: false },
		showAvatar: { default: true },
		showMenu: { default: true },
		showName: { default: true },
		showLargeFont: { default: true },
		capturedMoveEvent: { default: null },
		referenceContentClassName: { default: ''},
		referenceContentBodyClassName: { default: ''},
		referenceContentNameClassName: { default: ''},
		dialog: {
			type: Object,
			default: DialoguesModel.create().getElementState
		},
		message: {
			type: Object,
			default: MessagesModel.create().getElementState
		},
	},
	data()
	{
		return {
			componentBodyId: 'bx-im-view-message-body',
			drag: false,
			dragWidth: 0,
			dragPosition: 0,
			dragIconShowLeft: false,
			dragIconShowRight: false,
		}
	},
	created()
	{
		this.dragStartPositionX = 0;
		this.dragStartPositionY = 0;
		this.dragMovePositionX = 0;
		this.dragMovePositionY = 0;
	},
	beforeDestroy()
	{
		clearTimeout(this.dragStartTimeout1);
		clearTimeout(this.dragStartTimeout2);

		if (this.dragBackAnimation)
		{
			Animation.cancel(this.dragBackAnimation);
		}
	},
	methods:
	{
		clickByAvatar(event)
		{
			this.$emit('clickByUserName', event)
		},
		clickByUserName(event)
		{
			if (this.showAvatar && Utils.platform.isMobile())
			{
				return false;
			}

			this.$emit('clickByUserName', event)
		},
		clickByUploadCancel(event)
		{
			this.$emit('clickByUploadCancel', event)
		},
		clickByKeyboardButton(event)
		{
			this.$emit('clickByKeyboardButton', event)
		},
		clickByChatTeaser(event)
		{
			this.$emit('clickByChatTeaser', event)
		},
		clickByMessageMenu(event)
		{
			this.$emit('clickByMessageMenu', event)
		},
		clickByMessageRetry(event)
		{
			this.$emit('clickByMessageRetry', event)
		},
		setMessageReaction(event)
		{
			this.$emit('setMessageReaction', event)
		},
		openMessageReactionList(event)
		{
			this.$emit('openMessageReactionList', event)
		},
		gestureRouter(eventName, event)
		{
			this.gestureQuote(eventName, event);
			this.gestureMenu(eventName, event);
		},
		gestureMenu(eventName, event)
		{
			if (!this.enableGestureMenu)
			{
				return;
			}

			if (eventName === 'touchstart')
			{
				this.gestureMenuStarted = true;
				this.gestureMenuPreventTouchEnd = false;
				if (event.target.tagName === "A")
				{
					return false;
				}

				this.gestureMenuStartPosition = {
					x: event.changedTouches[0].clientX,
					y: event.changedTouches[0].clientY
				};

				this.gestureMenuTimeout = setTimeout(() => {
					this.gestureMenuPreventTouchEnd = true;
					this.$emit('clickByMessageMenu', {message: this.message, event});
				}, 500);
			}
			else if (eventName === 'touchmove')
			{
				if (!this.gestureMenuStarted)
				{
					return false;
				}

				if (
					Math.abs(this.gestureMenuStartPosition.x - event.changedTouches[0].clientX) >= 10
					|| Math.abs(this.gestureMenuStartPosition.y - event.changedTouches[0].clientY) >= 10
				)
				{
					this.gestureMenuStarted = false;
					clearTimeout(this.gestureMenuTimeout);
				}
			}
			else if (eventName === 'touchend')
			{
				if (!this.gestureMenuStarted)
				{
					return false;
				}

				this.gestureMenuStarted = false;
				clearTimeout(this.gestureMenuTimeout);
				if (this.gestureMenuPreventTouchEnd)
				{
					event.preventDefault();
				}
			}
		},
		gestureQuote(eventName, event)
		{
			let target = Utils.browser.findParent(event.target, 'bx-im-message') || event.target;
			if (!this.enableGestureQuote || Utils.platform.isAndroid())
			{
				return;
			}

			const fromRight = this.enableGestureQuoteFromRight;

			const layerX = target.getBoundingClientRect().left + event.layerX;
			const layerY = target.getBoundingClientRect().top + event.layerY;

			if (eventName === 'touchstart')
			{
				this.dragCheck = true;

				this.dragStartInitialX = target.getBoundingClientRect().left;
				this.dragStartInitialY = target.getBoundingClientRect().top;
				this.dragStartPositionX = layerX;
				this.dragStartPositionY = layerY;
				this.dragMovePositionX = null;
				this.dragMovePositionY = null;

				clearTimeout(this.dragStartTimeout1);
				clearTimeout(this.dragStartTimeout2);
				this.dragStartTimeout1 = setTimeout(() => {
					if (this.dragMovePositionX !== null)
					{
						if (Math.abs(this.dragStartPositionY - this.dragMovePositionY) >= 10)
						{
							this.dragCheck = false;
						}
					}
				}, 29);

				this.dragStartTimeout2 = setTimeout(() => {
					this.dragCheck = false;

					if (Math.abs(this.dragStartPositionY - this.dragMovePositionY) >= 10)
					{
						return;
					}

					if (this.dragMovePositionX === null)
					{
						return;
					}
					else if (fromRight && this.dragStartPositionX - this.dragMovePositionX < 9)
					{
						return;
					}
					else if (!fromRight && this.dragStartPositionX - this.dragMovePositionX > 9)
					{
						return;
					}

					Animation.cancel(this.dragBackAnimation);

					this.drag = true;

					this.$emit('dragMessage', {result: this.drag, event});
					this.dragWidth = this.$refs.body.offsetWidth;

				}, 80);
			}
			else if (eventName === 'touchmove')
			{
				if (this.drag || !this.dragCheck)
				{
					return false;
				}

				this.dragMovePositionX = layerX;
				this.dragMovePositionY = layerY;
			}
			else if (eventName === 'touchend')
			{
				clearTimeout(this.dragStartTimeout1);
				clearTimeout(this.dragStartTimeout2);

				this.dragCheck = false;

				if (!this.drag)
				{
					this.dragIconShowLeft = false;
					this.dragIconShowRight = false;

					return;
				}

				Animation.cancel(this.dragBackAnimation);

				this.drag = false;
				this.$emit('dragMessage', {result: this.drag, event});

				if (
					this.enableGestureQuoteFromRight && this.dragIconShowRight && this.dragPosition !== 0
					|| !this.enableGestureQuoteFromRight && this.dragIconShowLeft && this.dragPosition !== this.dragStartInitialX
				)
				{
					if (Utils.platform.isBitrixMobile())
					{
						setTimeout(() => app.exec("callVibration"), 200);
					}
					this.$emit('quoteMessage', {message: this.message});
				}

				this.dragIconShowLeft = false;
				this.dragIconShowRight = false;

				this.dragBackAnimation = Animation.start({
					start: this.dragPosition,
					end: this.dragStartInitialX,
					increment: 20,
					duration:  300,

					element: this,
					elementProperty: 'dragPosition',

					callback: () => {
						this.dragLayerPosition = undefined;
						this.dragWidth = 0;
						this.dragPosition = 0;
					},
				});
			}
		},
	},
	watch:
	{
		capturedMoveEvent(event)
		{
			if (!this.drag || !event)
			{
				return;
			}

			let target = Utils.browser.findParent(event.target, 'bx-im-message') || event.target;

			const layerX = target.getBoundingClientRect().left + event.layerX;

			if (typeof this.dragLayerPosition === 'undefined')
			{
				this.dragLayerPosition = layerX;
			}

			const movementX = this.dragLayerPosition - layerX;

			this.dragLayerPosition = layerX;

			this.dragPosition = this.dragPosition - movementX;

			if (this.enableGestureQuoteFromRight)
			{
				const dragPositionMax = (this.showAvatar? 30: 0) + 45;
				const dragPositionIcon = (this.showAvatar? 30: 30);

				if (this.dragPosition < -dragPositionMax)
				{
					this.dragPosition = -dragPositionMax;
				}
				else if (this.dragPosition < -dragPositionIcon)
				{
					if (!this.dragIconShowRight)
					{
						this.dragIconShowRight = true;
					}
				}
				else if (this.dragPosition >= 0)
				{
					this.dragPosition = 0;
				}
			}
			else
			{
				const dragPositionMax = 60;
				const dragPositionIcon = 40;

				if (this.dragPosition <= this.dragStartInitialX)
				{
					this.dragPosition = this.dragStartInitialX;
				}
				else if (this.dragPosition >= dragPositionMax)
				{
					this.dragPosition = dragPositionMax;
				}
				else if (this.dragPosition >= dragPositionIcon)
				{
					if (!this.dragIconShowLeft)
					{
						this.dragIconShowLeft = true;
					}
				}
			}
		}
	},
	computed:
	{
		MessageType: () => MessageType,

		type()
		{
			if (this.message.system || this.message.authorId == 0)
			{
				return MessageType.system;
			}
			else if (this.message.authorId === -1 || this.message.authorId == this.userId)
			{
				return MessageType.self;
			}
			else
			{
				return MessageType.opponent;
			}
		},

		localize()
		{
			let localize = Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);

			return Object.freeze(
				Object.assign({}, localize, {
					'IM_MESSENGER_MESSAGE_MENU_TITLE': localize.IM_MESSENGER_MESSAGE_MENU_TITLE.replace('#SHORTCUT#', Utils.platform.isMac()? 'CMD':'CTRL')
				})
			);
		},

		userData()
		{
			return this.$store.getters['users/get'](this.message.authorId, true);
		},

		userAvatar()
		{
			if (this.message.params.AVATAR)
			{
				return `url('${this.message.params.AVATAR}')`;
			}
			if (this.userData.avatar)
			{
				return `url('${this.userData.avatar}')`;
			}
			return '';
		},

		filesData()
		{
			let files = this.$store.getters['files/getList'](this.chatId);
			return files? files: {};
		},

		isEdited()
		{
			return this.message.params.IS_EDITED === 'Y';
		},

		isDeleted()
		{
			return this.message.params.IS_DELETED === 'Y';
		},

		isLargeFont()
		{
			return this.showLargeFont && this.message.params.LARGE_FONT === 'Y';
		},
	},
	template: `
		<div :class="['bx-im-message', {
				'bx-im-message-without-menu': !showMenu,
				'bx-im-message-without-avatar': !showAvatar,
				'bx-im-message-type-system': type === MessageType.system,
				'bx-im-message-type-self': type === MessageType.self,
				'bx-im-message-type-other': type !== MessageType.self,
				'bx-im-message-type-opponent': type === MessageType.opponent,
				'bx-im-message-status-error': message.error,
				'bx-im-message-status-unread': message.unread,
				'bx-im-message-status-blink': message.blink,
				'bx-im-message-status-edited': isEdited,
				'bx-im-message-status-deleted': isDeleted,
				'bx-im-message-large-font': isLargeFont,
			}]" 
			@touchstart="gestureRouter('touchstart', $event)"
			@touchmove="gestureRouter('touchmove', $event)"
			@touchend="gestureRouter('touchend', $event)"
			ref="body"
			:style="{
				width: dragWidth > 0? dragWidth+'px': '', 
				marginLeft: (enableGestureQuoteFromRight && dragPosition < 0) || (!enableGestureQuoteFromRight && dragPosition > 0)? dragPosition+'px': '',
			}"
		>
			<template v-if="type === MessageType.self">
				<template v-if="dragIconShowRight">
					<div class="bx-im-message-reply bx-im-message-reply-right">
						<div class="bx-im-message-reply-icon"></div>
					</div>
				</template> 
				<div class="bx-im-message-box">
					<component :is="componentBodyId"
						:userId="userId" 
						:dialogId="dialogId"
						:chatId="chatId"
						:messageType="type"
						:dialog="dialog"
						:message="message"
						:user="userData"
						:files="filesData"
						:showAvatar="showAvatar"
						:showName="showName"
						:enableReactions="enableReactions"
						:referenceContentBodyClassName="referenceContentBodyClassName"
						:referenceContentNameClassName="referenceContentNameClassName"
						@clickByUserName="clickByUserName"
						@clickByUploadCancel="clickByUploadCancel"
						@clickByKeyboardButton="clickByKeyboardButton"
						@clickByChatTeaser="clickByChatTeaser"
						@setReaction="setMessageReaction"
						@openReactionList="openMessageReactionList"
					/>
				</div>
				<div class="bx-im-message-box-status">
					<template v-if="message.sending">
						<div class="bx-im-message-sending"></div>
					</template>
					<transition name="bx-im-message-status-retry">
						<template v-if="!message.sending && message.error && message.retry">
							<div class="bx-im-message-status-retry" :title="localize.IM_MESSENGER_MESSAGE_RETRY_TITLE" @click="clickByMessageRetry({message: message, event: $event})">
								<span class="bx-im-message-retry-icon"></span>
							</div>
						</template>
					</transition>
					<template v-if="showMenu && !message.sending && !message.error">
						<div class="bx-im-message-status-menu" :title="localize.IM_MESSENGER_MESSAGE_MENU_TITLE" @click="clickByMessageMenu({message: message, event: $event})">
							<span class="bx-im-message-menu-icon"></span>
						</div>
					</template> 
				</div>
				<template v-if="dragIconShowLeft">
					<div class="bx-im-message-reply bx-im-message-reply-left">
						<div class="bx-im-message-reply-icon"></div>
					</div>
				</template> 
			</template>
			<template v-else-if="type !== MessageType.self">
				<template v-if="dragIconShowLeft">
					<div class="bx-im-message-reply bx-im-message-reply-left">
						<div class="bx-im-message-reply-icon"></div>
					</div>
				</template> 
				<template v-if="type === MessageType.opponent">
					<div v-if="showAvatar" class="bx-im-message-avatar" @click="clickByAvatar({user: userData, event: $event})">
						<div :class="['bx-im-message-avatar-image', {
								'bx-im-message-avatar-image-default': !userData.avatar
							}]"
							:style="{
								backgroundColor: !userData.avatar? userData.color: '', 
								backgroundImage: userAvatar
							}" 
							:title="userData.name"
						></div>	
					</div>
				</template>
				<div class="bx-im-message-box">
					<component :is="componentBodyId"
						:userId="userId" 
						:dialogId="dialogId"
						:chatId="chatId"
						:messageType="type"
						:message="message"
						:user="userData"
						:files="filesData"
						:showAvatar="showAvatar"
						:showName="showName"
						:enableReactions="enableReactions"
						:referenceContentBodyClassName="referenceContentBodyClassName"
						:referenceContentNameClassName="referenceContentNameClassName"
						@clickByUserName="clickByUserName"
						@clickByUploadCancel="clickByUploadCancel"
						@clickByKeyboardButton="clickByKeyboardButton"
						@clickByChatTeaser="clickByChatTeaser"
						@setReaction="setMessageReaction"
						@openReactionList="openMessageReactionList"
					/>
				</div>
				<div v-if="showMenu"  class="bx-im-message-menu" :title="localize.IM_MESSENGER_MESSAGE_MENU_TITLE" @click="clickByMessageMenu({message: message, event: $event})">
					<span class="bx-im-message-menu-icon"></span>
				</div>	
				<template v-if="dragIconShowRight">
					<div class="bx-im-message-reply bx-im-message-reply-right">
						<div class="bx-im-message-reply-icon"></div>
					</div>
				</template> 
			</template>
		</div>
	`
});message/dist/message.bundle.map.js000066400000020457147744174710013173 0ustar00{"version":3,"sources":["message.bundle.js"],"names":["exports","im_view_message_body","im_model","ui_vue","im_const","im_lib_utils","im_lib_animation","Vue","component","props","userId","default","dialogId","chatId","enableReactions","enableDateActions","enableCreateContent","enableGestureQuote","enableGestureQuoteFromRight","enableGestureMenu","showAvatar","showMenu","showName","showLargeFont","capturedMoveEvent","referenceContentClassName","referenceContentBodyClassName","referenceContentNameClassName","dialog","type","Object","DialoguesModel","create","getElementState","message","MessagesModel","data","componentBodyId","drag","dragWidth","dragPosition","dragIconShowLeft","dragIconShowRight","created","this","dragStartPositionX","dragStartPositionY","dragMovePositionX","dragMovePositionY","beforeDestroy","clearTimeout","dragStartTimeout1","dragStartTimeout2","dragBackAnimation","Animation","cancel","methods","clickByAvatar","event","$emit","clickByUserName","Utils","platform","isMobile","clickByUploadCancel","clickByKeyboardButton","clickByChatTeaser","clickByMessageMenu","clickByMessageRetry","setMessageReaction","openMessageReactionList","gestureRouter","eventName","gestureQuote","gestureMenu","_this","gestureMenuStarted","gestureMenuPreventTouchEnd","target","tagName","gestureMenuStartPosition","x","changedTouches","clientX","y","clientY","gestureMenuTimeout","setTimeout","Math","abs","preventDefault","_this2","browser","findParent","isAndroid","fromRight","layerX","getBoundingClientRect","left","layerY","top","dragCheck","dragStartInitialX","dragStartInitialY","result","$refs","body","offsetWidth","isBitrixMobile","app","exec","start","end","increment","duration","element","elementProperty","callback","dragLayerPosition","undefined","watch","movementX","dragPositionMax","dragPositionIcon","_dragPositionMax","_dragPositionIcon","computed","MessageType","system","authorId","self","opponent","localize","getFilteredPhrases","$root","$bitrixMessages","freeze","assign","IM_MESSENGER_MESSAGE_MENU_TITLE","replace","isMac","userData","$store","getters","userAvatar","params","AVATAR","concat","avatar","filesData","files","isEdited","IS_EDITED","isDeleted","IS_DELETED","isLargeFont","LARGE_FONT","template","window","BX","Messenger","Model","Const","Lib"],"mappings":"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","file":"message.bundle.map.js"}message/dist/message.bundle.css000066400000027112147744174710012566 0ustar00/* region 01. base */
.bx-im-message {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-orient: horizontal;
	-webkit-box-direction: normal;
	    -ms-flex-direction: row;
	        flex-direction: row;
	-ms-flex-wrap: nowrap;
	    flex-wrap: nowrap;
	-webkit-box-align: start;
	    -ms-flex-align: start;
	        align-items: flex-start;
	margin: 10px 0 5px;
	outline: none;
	-webkit-appearance: none;
	-webkit-tap-highlight-color: transparent;
	position: relative;
}
.bx-im-message.bx-im-message-type-self {
	-webkit-box-orient: horizontal;
	-webkit-box-direction: reverse;
	    -ms-flex-direction: row-reverse;
	        flex-direction: row-reverse;
	margin-right: 15px;
	margin-left: 0;
}

.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message {
	margin-top: 0;
}

.bx-im-message-without-avatar {
	margin-left: 15px;
}
.bx-im-message-without-menu {
	margin-right: 15px;
}
.bx-im-message-without-menu.bx-im-message-type-opponent {
	margin-right: 30px;
}

/* endregion */

/* region 02. avatar */
.bx-im-message-avatar {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	width: 65px;
    height: 52px;
	text-align: center;
}

.bx-im-message-avatar-image {
	width: 40px;
    height: 40px;
	border-radius: 50%;
	background-size: cover;
	margin: 15px auto 0;
	cursor: pointer;
}
.bx-im-message-avatar-image-source {
	width: 40px;
    height: 40px;
	border-radius: 50%;
}
.bx-im-message-avatar-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%0A%20%20%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.7857%2062.254c0-2.311-3.029-4.951-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.411-2.784%202.411-2.784%201.728-4.994-.86-4.693-.86-4.693.822-3.738%200-9.2001%200-9.2001-1.15-10.116-18.47-7.37-16.417-4.065-5.062-.934-3.907%2010.551-3.907%2010.551l1.1%202.969c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.861%202.272%201.861%202.272.109%204.7281%202.446%205.3501%202.446%205.3501.44%202.969.166%202.464.166%202.464l-2.082.25a8.2231%208.2231%200%200%201-.164%202.013c-2.449%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.3171-.907%203.594-2.585%2011.983-2.585%2011.983h53l-3.215-13.741z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
}

.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-avatar-image {
	display: none;
}
/* endregion */

.bx-im-message-box {
	/*overflow: hidden; comment for reaction*/
}

.bx-im-message-command-wrap { display: inline-block; }
.bx-im-message-command { border-bottom: 1px dashed #2067B0; cursor: pointer; color: #2067B0; display: inline-block; }
.bx-im-message-command-data { display: none; }

/* region 03. status: sending, retry, menu  */

.bx-im-message-box-status {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	width: 33px;
    height: 52px;
	position: relative;
}

.bx-im-message-sending {
	display: inline-block;
	width: 20px;
	height: 20px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%2380868E%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E');
	background-repeat: no-repeat;
	-webkit-animation: bx-im-message-sending .8s linear infinite;
	animation: bx-im-message-sending .8s linear infinite;
	margin-top: 16px;
	margin-left: 7px;
	opacity: 1;
	position: absolute;
}
@-webkit-keyframes bx-im-message-sending {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-message-sending {
	0% {
		-webkit-transform:rotate(0deg);
		        transform:rotate(0deg);
	}
	100%
	{
		-webkit-transform:rotate(360deg);
		        transform:rotate(360deg);
	}
}
.bx-im-message-sending-enter-active {
	-webkit-animation: bx-im-message-sending-show 10s linear;
	animation: bx-im-message-sending-show 10s linear;
}
.bx-im-message-sending-leave-active {
	opacity: 0;
}

@-webkit-keyframes bx-im-message-sending-show {
	0% {
		opacity: 0;
	}
	92% {
		opacity: 0;
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	100% {
		opacity: 1;
		-webkit-transform:rotate(360deg);
		transform:rotate(360deg);
	}
}
@keyframes bx-im-message-sending-show {
	0% {
		opacity: 0;
	}
	92% {
		opacity: 0;
		-webkit-transform:rotate(0deg);
		        transform:rotate(0deg);
	}
	100% {
		opacity: 1;
		-webkit-transform:rotate(360deg);
		        transform:rotate(360deg);
	}
}

.bx-im-message-status-retry {
	width: 33px;
	height: 52px;
	text-align: center;
	position: absolute;
}

.bx-im-message-retry-icon {
	display: inline-block;
	width: 19px;
	height: 19px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm5.5291-9.9206V4.77l-1.2384%201.2388c-1.0083-1.2414-2.5432-2.037-4.2676-2.037-3.0412%200-5.5064%202.4653-5.5064%205.5065s2.4652%205.506%205.5064%205.506c1.2971%200%202.487-.4515%203.4282-1.2017l-1.3953-1.7122c-.5604.44-1.2653.705-2.033.705-1.8208%200-3.297-1.4762-3.297-3.297%200-1.821%201.4762-3.2975%203.297-3.2975%201.1142%200%202.0986.5538%202.6951%201.4l-1.4983%201.4984h4.3093z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	opacity: .8;
	-webkit-transition: opacity .1s ease-out;
	-o-transition: opacity .1s ease-out;
	transition: opacity .1s ease-out;
	cursor: pointer;
	margin-top: 17px;
}
.bx-im-message-retry-icon:hover .bx-im-message-retry-icon:hover {
	opacity: 1;
}

.bx-im-message-status-retry-enter-active {
	-webkit-transition: opacity .1s ease-out;
	-o-transition: opacity .1s ease-out;
	transition: opacity .1s ease-out;
}
.bx-im-message-status-retry-enter {
	opacity: 0;
}

.bx-im-message-status-retry-leave-active {
	-webkit-animation: bx-im-message-status-retry .2s linear;
	animation: bx-im-message-status-retry .2s linear;
}

@-webkit-keyframes bx-im-message-status-retry {
	0% {
		-webkit-transform:rotate(0deg);
		transform:rotate(0deg);
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		-webkit-transform:rotate(180deg);
		transform:rotate(180deg);
	}
}
@keyframes bx-im-message-status-retry {
	0% {
		-webkit-transform:rotate(0deg);
		        transform:rotate(0deg);
	}
	90% {
		opacity: 1;
	}
	100% {
		opacity: 0;
		-webkit-transform:rotate(180deg);
		        transform:rotate(180deg);
	}
}

.bx-im-message-status-menu {
	width: 33px;
	height: 52px;
}

/* endregion message status */

/* region 04. menu */
.bx-im-message-menu {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	width: 33px;
	height: 52px;
	text-align: center;
	position: relative;
}

.bx-im-message-menu-icon {
	display: inline-block;
	width: 19px;
	height: 19px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm0-8.6806L5.6053%206.4247%203.658%208.372%209.5%2014.214l5.842-5.842-1.9473-1.9473L9.5%2010.3194z%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	opacity: 0;
	-webkit-transition: opacity .05s ease-out;
	-o-transition: opacity .05s ease-out;
	transition: opacity .05s ease-out;
	cursor: pointer;
	margin-top: 16px;
}
.bx-im-message:hover .bx-im-message-menu-icon {
	opacity: .5;
	-webkit-transition: opacity .2s ease-out;
	-o-transition: opacity .2s ease-out;
	transition: opacity .2s ease-out;
}
.bx-im-message:hover .bx-im-message-menu-icon:hover {
	opacity: 1;
}

/*
.bx-messenger-content-item-menu-with-apps {  background-position: 0 -30px;  opacity: .8;  }
.bx-messenger-content-item-menu-with-apps:hover {  background-position: 0 -15px;  }
.bx-messenger-content-item:hover .bx-messenger-content-item-menu { opacity: 0.6 }
.bx-messenger-content-item:hover .bx-messenger-content-item-menu-with-apps { opacity: .8 }
.bx-messenger-content-item-menu-hover .bx-messenger-content-item-menu { opacity: 1!important; }
.bx-im-message-type-opponent .bx-messenger-content-item-menu { float: right; margin-left: 0; margin-right: -42px; }
.bx-messenger-chat-guest .bx-messenger-content-item-menu { display: none; }
*/

/* endregion */

/* region 05. reply */
.bx-im-message-reply {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	width: 0;
	height: 52px;
	text-align: center;
	position: relative;
}

.bx-im-message-reply-left {
	position: absolute;
	left: -60px;
}
.bx-im-message-type-other .bx-im-message-reply-left {
	position: relative;
	left: -60px;
}
.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-left {
	position: relative;
	left: -65px;
}

.bx-im-message-reply-right {
	position: absolute;
	right: -25px;
}
.bx-im-message-type-other .bx-im-message-reply-right {
	right: -40px;
}
.bx-im-message-without-avatar .bx-im-message-reply-right {
	right: 0;
}
.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-right {
	right: -30px;
}

.bx-im-message-reply-icon {
	position: absolute;
	display: inline-block;
	width: 32px;
	height: 32px;
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2227%22%20height%3D%2223%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%20%20%3Cpath%20d%3D%22M26.532%2022.975c-.416-1.804-1.298-3.169-2.312-4.521a11.577%2011.577%200%200%200-3.603-3.178%2010.267%2010.267%200%200%200-4.138-1.29c-.351-.03-.7-.04-1.041-.03-.325.009-1.338-.037-1.524%200v4.996L6.28%2013.419.828%209.476l5.453-4.033L13.914%200v4.975c.178.043%201.721.279%202.264.468%201.144.398%202.192.978%203.175%201.61a16.635%2016.635%200%200%201%204.803%204.685%2015.385%2015.385%200%200%201%202.376%205.759c.37%201.979.419%203.677%200%205.478z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22/%3E%0A%3C/svg%3E%0A');
	background-repeat: no-repeat;
	background-color: rgba(7, 5, 27, 0.62);
	background-position: center center;
	background-size: 16px;
	cursor: pointer;
	border-radius: 50%;
	margin-top: 10px;
	margin-left: 15px;
	-webkit-animation: bx-im-message-reply-icon-show .5s linear 1;
	        animation: bx-im-message-reply-icon-show .5s linear 1;
}

@-webkit-keyframes bx-im-message-reply-icon-show {
	0% {
		opacity: 0;
		-webkit-transform: scale(0);
		        transform: scale(0);
	}

	20% {
		opacity: 0;
		-webkit-transform: scale(0);
		        transform: scale(0);
	}

	40% {
		opacity: 0.5;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}

	50% {
		opacity: 1;
		-webkit-transform: scale(1.4);
		        transform: scale(1.4);
	}

	60% {
		opacity: 1;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}

	100% {
		opacity: 1;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}
}

@keyframes bx-im-message-reply-icon-show {
	0% {
		opacity: 0;
		-webkit-transform: scale(0);
		        transform: scale(0);
	}

	20% {
		opacity: 0;
		-webkit-transform: scale(0);
		        transform: scale(0);
	}

	40% {
		opacity: 0.5;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}

	50% {
		opacity: 1;
		-webkit-transform: scale(1.4);
		        transform: scale(1.4);
	}

	60% {
		opacity: 1;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}

	100% {
		opacity: 1;
		-webkit-transform: scale(1);
		        transform: scale(1);
	}
}

/* endregion */


message/dist/message.bundle.min.css000066400000022624147744174710013353 0ustar00.bx-im-message{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:10px 0 5px;outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;position:relative}.bx-im-message.bx-im-message-type-self{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;margin-right:15px;margin-left:0}.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message{margin-top:0}.bx-im-message-without-avatar{margin-left:15px}.bx-im-message-without-menu{margin-right:15px}.bx-im-message-without-menu.bx-im-message-type-opponent{margin-right:30px}.bx-im-message-avatar{-ms-flex-negative:0;flex-shrink:0;width:65px;height:52px;text-align:center}.bx-im-message-avatar-image{width:40px;height:40px;border-radius:50%;background-size:cover;margin:15px auto 0;cursor:pointer}.bx-im-message-avatar-image-source{width:40px;height:40px;border-radius:50%;}
.bx-im-message-avatar-image-default {
	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20100%20100%22%3E%0A%20%20%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M72.7857%2062.254c0-2.311-3.029-4.951-9-6.489a20.3%2020.3%200%200%201-5.7-2.584c-.383-.218-.325-2.236-.325-2.236l-1.922-.292c0-.164-.164-2.584-.164-2.584%202.3-.77%202.063-5.314%202.063-5.314%201.46.807%202.411-2.784%202.411-2.784%201.728-4.994-.86-4.693-.86-4.693.822-3.738%200-9.2001%200-9.2001-1.15-10.116-18.47-7.37-16.417-4.065-5.062-.934-3.907%2010.551-3.907%2010.551l1.1%202.969c-2.156%201.392-.658%203.079-.585%205.02.106%202.865%201.861%202.272%201.861%202.272.109%204.7281%202.446%205.3501%202.446%205.3501.44%202.969.166%202.464.166%202.464l-2.082.25a8.2231%208.2231%200%200%201-.164%202.013c-2.449%201.093-2.971%201.727-5.406%202.793-4.7%202.053-9.808%204.723-10.715%208.3171-.907%203.594-2.585%2011.983-2.585%2011.983h53l-3.215-13.741z%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat}.bx-im-dialog-list-item+.bx-im-dialog-list-item .bx-im-message-avatar-image{display:none}.bx-im-message-command-wrap{display:inline-block}.bx-im-message-command{border-bottom:1px dashed #2067b0;cursor:pointer;color:#2067b0;display:inline-block}.bx-im-message-command-data{display:none}.bx-im-message-box-status{-ms-flex-negative:0;flex-shrink:0;width:33px;height:52px;position:relative}.bx-im-message-sending{display:inline-block;width:20px;height:20px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M1%2010c0%204.9706%204.0294%209%209%209s9-4.0294%209-9-4.0294-9-9-9c-2.4048%200-4.5893.9432-6.2038%202.4798%22%20stroke%3D%22%2380868E%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22/%3E%3C/svg%3E'); background-repeat:no-repeat;-webkit-animation:bx-im-message-sending .8s linear infinite;animation:bx-im-message-sending .8s linear infinite;margin-top:16px;margin-left:7px;opacity:1;position:absolute}@-webkit-keyframes bx-im-message-sending{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes bx-im-message-sending{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bx-im-message-sending-enter-active{-webkit-animation:bx-im-message-sending-show 10s linear;animation:bx-im-message-sending-show 10s linear}.bx-im-message-sending-leave-active{opacity:0}@-webkit-keyframes bx-im-message-sending-show{0%{opacity:0}92%{opacity:0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{opacity:1;-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes bx-im-message-sending-show{0%{opacity:0}92%{opacity:0;-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{opacity:1;-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bx-im-message-status-retry{width:33px;height:52px;text-align:center;position:absolute}.bx-im-message-retry-icon{display:inline-block;width:19px;height:19px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm5.5291-9.9206V4.77l-1.2384%201.2388c-1.0083-1.2414-2.5432-2.037-4.2676-2.037-3.0412%200-5.5064%202.4653-5.5064%205.5065s2.4652%205.506%205.5064%205.506c1.2971%200%202.487-.4515%203.4282-1.2017l-1.3953-1.7122c-.5604.44-1.2653.705-2.033.705-1.8208%200-3.297-1.4762-3.297-3.297%200-1.821%201.4762-3.2975%203.297-3.2975%201.1142%200%202.0986.5538%202.6951%201.4l-1.4983%201.4984h4.3093z%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;opacity:.8;-webkit-transition:opacity .1s ease-out;-o-transition:opacity .1s ease-out;transition:opacity .1s ease-out;cursor:pointer;margin-top:17px}.bx-im-message-retry-icon:hover .bx-im-message-retry-icon:hover{opacity:1}.bx-im-message-status-retry-enter-active{-webkit-transition:opacity .1s ease-out;-o-transition:opacity .1s ease-out;transition:opacity .1s ease-out}.bx-im-message-status-retry-enter{opacity:0}.bx-im-message-status-retry-leave-active{-webkit-animation:bx-im-message-status-retry .2s linear;animation:bx-im-message-status-retry .2s linear}@-webkit-keyframes bx-im-message-status-retry{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}90%{opacity:1}100%{opacity:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}}@keyframes bx-im-message-status-retry{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}90%{opacity:1}100%{opacity:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}}.bx-im-message-status-menu{width:33px;height:52px}.bx-im-message-menu{-ms-flex-negative:0;flex-shrink:0;width:33px;height:52px;text-align:center;position:relative}.bx-im-message-menu-icon{display:inline-block;width:19px;height:19px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2219%22%20height%3D%2219%22%3E%0A%20%20%3Cpath%20fill%3D%22%2380868E%22%20fill-rule%3D%22evenodd%22%20d%3D%22M9.5%2019C4.2533%2019%200%2014.7467%200%209.5S4.2533%200%209.5%200%2019%204.2533%2019%209.5%2014.7467%2019%209.5%2019zm0-8.6806L5.6053%206.4247%203.658%208.372%209.5%2014.214l5.842-5.842-1.9473-1.9473L9.5%2010.3194z%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;opacity:0;-webkit-transition:opacity .05s ease-out;-o-transition:opacity .05s ease-out;transition:opacity .05s ease-out;cursor:pointer;margin-top:16px}.bx-im-message:hover .bx-im-message-menu-icon{opacity:.5;-webkit-transition:opacity .2s ease-out;-o-transition:opacity .2s ease-out;transition:opacity .2s ease-out}.bx-im-message:hover .bx-im-message-menu-icon:hover{opacity:1}.bx-im-message-reply{-ms-flex-negative:0;flex-shrink:0;width:0;height:52px;text-align:center;position:relative}.bx-im-message-reply-left{position:absolute;left:-60px}.bx-im-message-type-other .bx-im-message-reply-left{position:relative;left:-60px}.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-left{position:relative;left:-65px}.bx-im-message-reply-right{position:absolute;right:-25px}.bx-im-message-type-other .bx-im-message-reply-right{right:-40px}.bx-im-message-without-avatar .bx-im-message-reply-right{right:0}.bx-im-message-type-other.bx-im-message-without-avatar .bx-im-message-reply-right{right:-30px}.bx-im-message-reply-icon{position:absolute;display:inline-block;width:32px;height:32px;	background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2227%22%20height%3D%2223%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%0A%20%20%3Cpath%20d%3D%22M26.532%2022.975c-.416-1.804-1.298-3.169-2.312-4.521a11.577%2011.577%200%200%200-3.603-3.178%2010.267%2010.267%200%200%200-4.138-1.29c-.351-.03-.7-.04-1.041-.03-.325.009-1.338-.037-1.524%200v4.996L6.28%2013.419.828%209.476l5.453-4.033L13.914%200v4.975c.178.043%201.721.279%202.264.468%201.144.398%202.192.978%203.175%201.61a16.635%2016.635%200%200%201%204.803%204.685%2015.385%2015.385%200%200%201%202.376%205.759c.37%201.979.419%203.677%200%205.478z%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22/%3E%0A%3C/svg%3E%0A'); background-repeat:no-repeat;background-color:rgba(7,5,27,0.62);background-position:center center;background-size:16px;cursor:pointer;border-radius:50%;margin-top:10px;margin-left:15px;-webkit-animation:bx-im-message-reply-icon-show .5s linear 1;animation:bx-im-message-reply-icon-show .5s linear 1}@-webkit-keyframes bx-im-message-reply-icon-show{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}20%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}40%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(1.4);transform:scale(1.4)}60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bx-im-message-reply-icon-show{0%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}20%{opacity:0;-webkit-transform:scale(0);transform:scale(0)}40%{opacity:.5;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(1.4);transform:scale(1.4)}60%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}message/dist/message.bundle.js000066400000045242147744174710012416 0ustar00(function (exports,im_view_message_body,im_model,ui_vue,im_const,im_lib_utils,im_lib_animation) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * Message Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-im-view-message', {
	  /**
	   * @emits 'clickByUserName' {user: object, event: MouseEvent}
	   * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}
	   * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}
	   * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}
	   * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}
	   * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}
	   * @emits 'setMessageReaction' {message: object, reaction: object}
	   * @emits 'openMessageReactionList' {message: object, values: object}
	   * @emits 'dragMessage' {result: boolean, event: MouseEvent}
	   * @emits 'quoteMessage' {message: object}
	   */
	  props: {
	    userId: {
	      default: 0
	    },
	    dialogId: {
	      default: 0
	    },
	    chatId: {
	      default: 0
	    },
	    enableReactions: {
	      default: true
	    },
	    enableDateActions: {
	      default: true
	    },
	    enableCreateContent: {
	      default: true
	    },
	    enableGestureQuote: {
	      default: true
	    },
	    enableGestureQuoteFromRight: {
	      default: true
	    },
	    enableGestureMenu: {
	      default: false
	    },
	    showAvatar: {
	      default: true
	    },
	    showMenu: {
	      default: true
	    },
	    showName: {
	      default: true
	    },
	    showLargeFont: {
	      default: true
	    },
	    capturedMoveEvent: {
	      default: null
	    },
	    referenceContentClassName: {
	      default: ''
	    },
	    referenceContentBodyClassName: {
	      default: ''
	    },
	    referenceContentNameClassName: {
	      default: ''
	    },
	    dialog: {
	      type: Object,
	      default: im_model.DialoguesModel.create().getElementState
	    },
	    message: {
	      type: Object,
	      default: im_model.MessagesModel.create().getElementState
	    }
	  },
	  data: function data() {
	    return {
	      componentBodyId: 'bx-im-view-message-body',
	      drag: false,
	      dragWidth: 0,
	      dragPosition: 0,
	      dragIconShowLeft: false,
	      dragIconShowRight: false
	    };
	  },
	  created: function created() {
	    this.dragStartPositionX = 0;
	    this.dragStartPositionY = 0;
	    this.dragMovePositionX = 0;
	    this.dragMovePositionY = 0;
	  },
	  beforeDestroy: function beforeDestroy() {
	    clearTimeout(this.dragStartTimeout1);
	    clearTimeout(this.dragStartTimeout2);

	    if (this.dragBackAnimation) {
	      im_lib_animation.Animation.cancel(this.dragBackAnimation);
	    }
	  },
	  methods: {
	    clickByAvatar: function clickByAvatar(event) {
	      this.$emit('clickByUserName', event);
	    },
	    clickByUserName: function clickByUserName(event) {
	      if (this.showAvatar && im_lib_utils.Utils.platform.isMobile()) {
	        return false;
	      }

	      this.$emit('clickByUserName', event);
	    },
	    clickByUploadCancel: function clickByUploadCancel(event) {
	      this.$emit('clickByUploadCancel', event);
	    },
	    clickByKeyboardButton: function clickByKeyboardButton(event) {
	      this.$emit('clickByKeyboardButton', event);
	    },
	    clickByChatTeaser: function clickByChatTeaser(event) {
	      this.$emit('clickByChatTeaser', event);
	    },
	    clickByMessageMenu: function clickByMessageMenu(event) {
	      this.$emit('clickByMessageMenu', event);
	    },
	    clickByMessageRetry: function clickByMessageRetry(event) {
	      this.$emit('clickByMessageRetry', event);
	    },
	    setMessageReaction: function setMessageReaction(event) {
	      this.$emit('setMessageReaction', event);
	    },
	    openMessageReactionList: function openMessageReactionList(event) {
	      this.$emit('openMessageReactionList', event);
	    },
	    gestureRouter: function gestureRouter(eventName, event) {
	      this.gestureQuote(eventName, event);
	      this.gestureMenu(eventName, event);
	    },
	    gestureMenu: function gestureMenu(eventName, event) {
	      var _this = this;

	      if (!this.enableGestureMenu) {
	        return;
	      }

	      if (eventName === 'touchstart') {
	        this.gestureMenuStarted = true;
	        this.gestureMenuPreventTouchEnd = false;

	        if (event.target.tagName === "A") {
	          return false;
	        }

	        this.gestureMenuStartPosition = {
	          x: event.changedTouches[0].clientX,
	          y: event.changedTouches[0].clientY
	        };
	        this.gestureMenuTimeout = setTimeout(function () {
	          _this.gestureMenuPreventTouchEnd = true;

	          _this.$emit('clickByMessageMenu', {
	            message: _this.message,
	            event: event
	          });
	        }, 500);
	      } else if (eventName === 'touchmove') {
	        if (!this.gestureMenuStarted) {
	          return false;
	        }

	        if (Math.abs(this.gestureMenuStartPosition.x - event.changedTouches[0].clientX) >= 10 || Math.abs(this.gestureMenuStartPosition.y - event.changedTouches[0].clientY) >= 10) {
	          this.gestureMenuStarted = false;
	          clearTimeout(this.gestureMenuTimeout);
	        }
	      } else if (eventName === 'touchend') {
	        if (!this.gestureMenuStarted) {
	          return false;
	        }

	        this.gestureMenuStarted = false;
	        clearTimeout(this.gestureMenuTimeout);

	        if (this.gestureMenuPreventTouchEnd) {
	          event.preventDefault();
	        }
	      }
	    },
	    gestureQuote: function gestureQuote(eventName, event) {
	      var _this2 = this;

	      var target = im_lib_utils.Utils.browser.findParent(event.target, 'bx-im-message') || event.target;

	      if (!this.enableGestureQuote || im_lib_utils.Utils.platform.isAndroid()) {
	        return;
	      }

	      var fromRight = this.enableGestureQuoteFromRight;
	      var layerX = target.getBoundingClientRect().left + event.layerX;
	      var layerY = target.getBoundingClientRect().top + event.layerY;

	      if (eventName === 'touchstart') {
	        this.dragCheck = true;
	        this.dragStartInitialX = target.getBoundingClientRect().left;
	        this.dragStartInitialY = target.getBoundingClientRect().top;
	        this.dragStartPositionX = layerX;
	        this.dragStartPositionY = layerY;
	        this.dragMovePositionX = null;
	        this.dragMovePositionY = null;
	        clearTimeout(this.dragStartTimeout1);
	        clearTimeout(this.dragStartTimeout2);
	        this.dragStartTimeout1 = setTimeout(function () {
	          if (_this2.dragMovePositionX !== null) {
	            if (Math.abs(_this2.dragStartPositionY - _this2.dragMovePositionY) >= 10) {
	              _this2.dragCheck = false;
	            }
	          }
	        }, 29);
	        this.dragStartTimeout2 = setTimeout(function () {
	          _this2.dragCheck = false;

	          if (Math.abs(_this2.dragStartPositionY - _this2.dragMovePositionY) >= 10) {
	            return;
	          }

	          if (_this2.dragMovePositionX === null) {
	            return;
	          } else if (fromRight && _this2.dragStartPositionX - _this2.dragMovePositionX < 9) {
	            return;
	          } else if (!fromRight && _this2.dragStartPositionX - _this2.dragMovePositionX > 9) {
	            return;
	          }

	          im_lib_animation.Animation.cancel(_this2.dragBackAnimation);
	          _this2.drag = true;

	          _this2.$emit('dragMessage', {
	            result: _this2.drag,
	            event: event
	          });

	          _this2.dragWidth = _this2.$refs.body.offsetWidth;
	        }, 80);
	      } else if (eventName === 'touchmove') {
	        if (this.drag || !this.dragCheck) {
	          return false;
	        }

	        this.dragMovePositionX = layerX;
	        this.dragMovePositionY = layerY;
	      } else if (eventName === 'touchend') {
	        clearTimeout(this.dragStartTimeout1);
	        clearTimeout(this.dragStartTimeout2);
	        this.dragCheck = false;

	        if (!this.drag) {
	          this.dragIconShowLeft = false;
	          this.dragIconShowRight = false;
	          return;
	        }

	        im_lib_animation.Animation.cancel(this.dragBackAnimation);
	        this.drag = false;
	        this.$emit('dragMessage', {
	          result: this.drag,
	          event: event
	        });

	        if (this.enableGestureQuoteFromRight && this.dragIconShowRight && this.dragPosition !== 0 || !this.enableGestureQuoteFromRight && this.dragIconShowLeft && this.dragPosition !== this.dragStartInitialX) {
	          if (im_lib_utils.Utils.platform.isBitrixMobile()) {
	            setTimeout(function () {
	              return app.exec("callVibration");
	            }, 200);
	          }

	          this.$emit('quoteMessage', {
	            message: this.message
	          });
	        }

	        this.dragIconShowLeft = false;
	        this.dragIconShowRight = false;
	        this.dragBackAnimation = im_lib_animation.Animation.start({
	          start: this.dragPosition,
	          end: this.dragStartInitialX,
	          increment: 20,
	          duration: 300,
	          element: this,
	          elementProperty: 'dragPosition',
	          callback: function callback() {
	            _this2.dragLayerPosition = undefined;
	            _this2.dragWidth = 0;
	            _this2.dragPosition = 0;
	          }
	        });
	      }
	    }
	  },
	  watch: {
	    capturedMoveEvent: function capturedMoveEvent(event) {
	      if (!this.drag || !event) {
	        return;
	      }

	      var target = im_lib_utils.Utils.browser.findParent(event.target, 'bx-im-message') || event.target;
	      var layerX = target.getBoundingClientRect().left + event.layerX;

	      if (typeof this.dragLayerPosition === 'undefined') {
	        this.dragLayerPosition = layerX;
	      }

	      var movementX = this.dragLayerPosition - layerX;
	      this.dragLayerPosition = layerX;
	      this.dragPosition = this.dragPosition - movementX;

	      if (this.enableGestureQuoteFromRight) {
	        var dragPositionMax = (this.showAvatar ? 30 : 0) + 45;
	        var dragPositionIcon = this.showAvatar ? 30 : 30;

	        if (this.dragPosition < -dragPositionMax) {
	          this.dragPosition = -dragPositionMax;
	        } else if (this.dragPosition < -dragPositionIcon) {
	          if (!this.dragIconShowRight) {
	            this.dragIconShowRight = true;
	          }
	        } else if (this.dragPosition >= 0) {
	          this.dragPosition = 0;
	        }
	      } else {
	        var _dragPositionMax = 60;
	        var _dragPositionIcon = 40;

	        if (this.dragPosition <= this.dragStartInitialX) {
	          this.dragPosition = this.dragStartInitialX;
	        } else if (this.dragPosition >= _dragPositionMax) {
	          this.dragPosition = _dragPositionMax;
	        } else if (this.dragPosition >= _dragPositionIcon) {
	          if (!this.dragIconShowLeft) {
	            this.dragIconShowLeft = true;
	          }
	        }
	      }
	    }
	  },
	  computed: {
	    MessageType: function MessageType() {
	      return im_const.MessageType;
	    },
	    type: function type() {
	      if (this.message.system || this.message.authorId == 0) {
	        return im_const.MessageType.system;
	      } else if (this.message.authorId === -1 || this.message.authorId == this.userId) {
	        return im_const.MessageType.self;
	      } else {
	        return im_const.MessageType.opponent;
	      }
	    },
	    localize: function localize() {
	      var localize = ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);
	      return Object.freeze(Object.assign({}, localize, {
	        'IM_MESSENGER_MESSAGE_MENU_TITLE': localize.IM_MESSENGER_MESSAGE_MENU_TITLE.replace('#SHORTCUT#', im_lib_utils.Utils.platform.isMac() ? 'CMD' : 'CTRL')
	      }));
	    },
	    userData: function userData() {
	      return this.$store.getters['users/get'](this.message.authorId, true);
	    },
	    userAvatar: function userAvatar() {
	      if (this.message.params.AVATAR) {
	        return "url('".concat(this.message.params.AVATAR, "')");
	      }

	      if (this.userData.avatar) {
	        return "url('".concat(this.userData.avatar, "')");
	      }

	      return '';
	    },
	    filesData: function filesData() {
	      var files = this.$store.getters['files/getList'](this.chatId);
	      return files ? files : {};
	    },
	    isEdited: function isEdited() {
	      return this.message.params.IS_EDITED === 'Y';
	    },
	    isDeleted: function isDeleted() {
	      return this.message.params.IS_DELETED === 'Y';
	    },
	    isLargeFont: function isLargeFont() {
	      return this.showLargeFont && this.message.params.LARGE_FONT === 'Y';
	    }
	  },
	  template: "\n\t\t<div :class=\"['bx-im-message', {\n\t\t\t\t'bx-im-message-without-menu': !showMenu,\n\t\t\t\t'bx-im-message-without-avatar': !showAvatar,\n\t\t\t\t'bx-im-message-type-system': type === MessageType.system,\n\t\t\t\t'bx-im-message-type-self': type === MessageType.self,\n\t\t\t\t'bx-im-message-type-other': type !== MessageType.self,\n\t\t\t\t'bx-im-message-type-opponent': type === MessageType.opponent,\n\t\t\t\t'bx-im-message-status-error': message.error,\n\t\t\t\t'bx-im-message-status-unread': message.unread,\n\t\t\t\t'bx-im-message-status-blink': message.blink,\n\t\t\t\t'bx-im-message-status-edited': isEdited,\n\t\t\t\t'bx-im-message-status-deleted': isDeleted,\n\t\t\t\t'bx-im-message-large-font': isLargeFont,\n\t\t\t}]\" \n\t\t\t@touchstart=\"gestureRouter('touchstart', $event)\"\n\t\t\t@touchmove=\"gestureRouter('touchmove', $event)\"\n\t\t\t@touchend=\"gestureRouter('touchend', $event)\"\n\t\t\tref=\"body\"\n\t\t\t:style=\"{\n\t\t\t\twidth: dragWidth > 0? dragWidth+'px': '', \n\t\t\t\tmarginLeft: (enableGestureQuoteFromRight && dragPosition < 0) || (!enableGestureQuoteFromRight && dragPosition > 0)? dragPosition+'px': '',\n\t\t\t}\"\n\t\t>\n\t\t\t<template v-if=\"type === MessageType.self\">\n\t\t\t\t<template v-if=\"dragIconShowRight\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-right\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<div class=\"bx-im-message-box\">\n\t\t\t\t\t<component :is=\"componentBodyId\"\n\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t:messageType=\"type\"\n\t\t\t\t\t\t:dialog=\"dialog\"\n\t\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t\t:user=\"userData\"\n\t\t\t\t\t\t:files=\"filesData\"\n\t\t\t\t\t\t:showAvatar=\"showAvatar\"\n\t\t\t\t\t\t:showName=\"showName\"\n\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t:referenceContentBodyClassName=\"referenceContentBodyClassName\"\n\t\t\t\t\t\t:referenceContentNameClassName=\"referenceContentNameClassName\"\n\t\t\t\t\t\t@clickByUserName=\"clickByUserName\"\n\t\t\t\t\t\t@clickByUploadCancel=\"clickByUploadCancel\"\n\t\t\t\t\t\t@clickByKeyboardButton=\"clickByKeyboardButton\"\n\t\t\t\t\t\t@clickByChatTeaser=\"clickByChatTeaser\"\n\t\t\t\t\t\t@setReaction=\"setMessageReaction\"\n\t\t\t\t\t\t@openReactionList=\"openMessageReactionList\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-message-box-status\">\n\t\t\t\t\t<template v-if=\"message.sending\">\n\t\t\t\t\t\t<div class=\"bx-im-message-sending\"></div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<transition name=\"bx-im-message-status-retry\">\n\t\t\t\t\t\t<template v-if=\"!message.sending && message.error && message.retry\">\n\t\t\t\t\t\t\t<div class=\"bx-im-message-status-retry\" :title=\"localize.IM_MESSENGER_MESSAGE_RETRY_TITLE\" @click=\"clickByMessageRetry({message: message, event: $event})\">\n\t\t\t\t\t\t\t\t<span class=\"bx-im-message-retry-icon\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</transition>\n\t\t\t\t\t<template v-if=\"showMenu && !message.sending && !message.error\">\n\t\t\t\t\t\t<div class=\"bx-im-message-status-menu\" :title=\"localize.IM_MESSENGER_MESSAGE_MENU_TITLE\" @click=\"clickByMessageMenu({message: message, event: $event})\">\n\t\t\t\t\t\t\t<span class=\"bx-im-message-menu-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template> \n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"dragIconShowLeft\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-left\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t\t<template v-else-if=\"type !== MessageType.self\">\n\t\t\t\t<template v-if=\"dragIconShowLeft\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-left\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<template v-if=\"type === MessageType.opponent\">\n\t\t\t\t\t<div v-if=\"showAvatar\" class=\"bx-im-message-avatar\" @click=\"clickByAvatar({user: userData, event: $event})\">\n\t\t\t\t\t\t<div :class=\"['bx-im-message-avatar-image', {\n\t\t\t\t\t\t\t\t'bx-im-message-avatar-image-default': !userData.avatar\n\t\t\t\t\t\t\t}]\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundColor: !userData.avatar? userData.color: '', \n\t\t\t\t\t\t\t\tbackgroundImage: userAvatar\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\t:title=\"userData.name\"\n\t\t\t\t\t\t></div>\t\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<div class=\"bx-im-message-box\">\n\t\t\t\t\t<component :is=\"componentBodyId\"\n\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t:messageType=\"type\"\n\t\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t\t:user=\"userData\"\n\t\t\t\t\t\t:files=\"filesData\"\n\t\t\t\t\t\t:showAvatar=\"showAvatar\"\n\t\t\t\t\t\t:showName=\"showName\"\n\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t:referenceContentBodyClassName=\"referenceContentBodyClassName\"\n\t\t\t\t\t\t:referenceContentNameClassName=\"referenceContentNameClassName\"\n\t\t\t\t\t\t@clickByUserName=\"clickByUserName\"\n\t\t\t\t\t\t@clickByUploadCancel=\"clickByUploadCancel\"\n\t\t\t\t\t\t@clickByKeyboardButton=\"clickByKeyboardButton\"\n\t\t\t\t\t\t@clickByChatTeaser=\"clickByChatTeaser\"\n\t\t\t\t\t\t@setReaction=\"setMessageReaction\"\n\t\t\t\t\t\t@openReactionList=\"openMessageReactionList\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"showMenu\"  class=\"bx-im-message-menu\" :title=\"localize.IM_MESSENGER_MESSAGE_MENU_TITLE\" @click=\"clickByMessageMenu({message: message, event: $event})\">\n\t\t\t\t\t<span class=\"bx-im-message-menu-icon\"></span>\n\t\t\t\t</div>\t\n\t\t\t\t<template v-if=\"dragIconShowRight\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-right\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t</div>\n\t"
	});

}((this.window = this.window || {}),window,BX.Messenger.Model,BX,BX.Messenger.Const,BX.Messenger.Lib,BX.Messenger.Lib));
//# sourceMappingURL=message.bundle.js.map
message/dist/message.bundle.min.js000066400000032021147744174710013167 0ustar00(function(t,e,s,a,i,n,r){"use strict";a.Vue.component("bx-im-view-message",{props:{userId:{default:0},dialogId:{default:0},chatId:{default:0},enableReactions:{default:true},enableDateActions:{default:true},enableCreateContent:{default:true},enableGestureQuote:{default:true},enableGestureQuoteFromRight:{default:true},enableGestureMenu:{default:false},showAvatar:{default:true},showMenu:{default:true},showName:{default:true},showLargeFont:{default:true},capturedMoveEvent:{default:null},referenceContentClassName:{default:""},referenceContentBodyClassName:{default:""},referenceContentNameClassName:{default:""},dialog:{type:Object,default:s.DialoguesModel.create().getElementState},message:{type:Object,default:s.MessagesModel.create().getElementState}},data:function t(){return{componentBodyId:"bx-im-view-message-body",drag:false,dragWidth:0,dragPosition:0,dragIconShowLeft:false,dragIconShowRight:false}},created:function t(){this.dragStartPositionX=0;this.dragStartPositionY=0;this.dragMovePositionX=0;this.dragMovePositionY=0},beforeDestroy:function t(){clearTimeout(this.dragStartTimeout1);clearTimeout(this.dragStartTimeout2);if(this.dragBackAnimation){r.Animation.cancel(this.dragBackAnimation)}},methods:{clickByAvatar:function t(e){this.$emit("clickByUserName",e)},clickByUserName:function t(e){if(this.showAvatar&&n.Utils.platform.isMobile()){return false}this.$emit("clickByUserName",e)},clickByUploadCancel:function t(e){this.$emit("clickByUploadCancel",e)},clickByKeyboardButton:function t(e){this.$emit("clickByKeyboardButton",e)},clickByChatTeaser:function t(e){this.$emit("clickByChatTeaser",e)},clickByMessageMenu:function t(e){this.$emit("clickByMessageMenu",e)},clickByMessageRetry:function t(e){this.$emit("clickByMessageRetry",e)},setMessageReaction:function t(e){this.$emit("setMessageReaction",e)},openMessageReactionList:function t(e){this.$emit("openMessageReactionList",e)},gestureRouter:function t(e,s){this.gestureQuote(e,s);this.gestureMenu(e,s)},gestureMenu:function t(e,s){var a=this;if(!this.enableGestureMenu){return}if(e==="touchstart"){this.gestureMenuStarted=true;this.gestureMenuPreventTouchEnd=false;if(s.target.tagName==="A"){return false}this.gestureMenuStartPosition={x:s.changedTouches[0].clientX,y:s.changedTouches[0].clientY};this.gestureMenuTimeout=setTimeout(function(){a.gestureMenuPreventTouchEnd=true;a.$emit("clickByMessageMenu",{message:a.message,event:s})},500)}else if(e==="touchmove"){if(!this.gestureMenuStarted){return false}if(Math.abs(this.gestureMenuStartPosition.x-s.changedTouches[0].clientX)>=10||Math.abs(this.gestureMenuStartPosition.y-s.changedTouches[0].clientY)>=10){this.gestureMenuStarted=false;clearTimeout(this.gestureMenuTimeout)}}else if(e==="touchend"){if(!this.gestureMenuStarted){return false}this.gestureMenuStarted=false;clearTimeout(this.gestureMenuTimeout);if(this.gestureMenuPreventTouchEnd){s.preventDefault()}}},gestureQuote:function t(e,s){var a=this;var i=n.Utils.browser.findParent(s.target,"bx-im-message")||s.target;if(!this.enableGestureQuote||n.Utils.platform.isAndroid()){return}var o=this.enableGestureQuoteFromRight;var g=i.getBoundingClientRect().left+s.layerX;var l=i.getBoundingClientRect().top+s.layerY;if(e==="touchstart"){this.dragCheck=true;this.dragStartInitialX=i.getBoundingClientRect().left;this.dragStartInitialY=i.getBoundingClientRect().top;this.dragStartPositionX=g;this.dragStartPositionY=l;this.dragMovePositionX=null;this.dragMovePositionY=null;clearTimeout(this.dragStartTimeout1);clearTimeout(this.dragStartTimeout2);this.dragStartTimeout1=setTimeout(function(){if(a.dragMovePositionX!==null){if(Math.abs(a.dragStartPositionY-a.dragMovePositionY)>=10){a.dragCheck=false}}},29);this.dragStartTimeout2=setTimeout(function(){a.dragCheck=false;if(Math.abs(a.dragStartPositionY-a.dragMovePositionY)>=10){return}if(a.dragMovePositionX===null){return}else if(o&&a.dragStartPositionX-a.dragMovePositionX<9){return}else if(!o&&a.dragStartPositionX-a.dragMovePositionX>9){return}r.Animation.cancel(a.dragBackAnimation);a.drag=true;a.$emit("dragMessage",{result:a.drag,event:s});a.dragWidth=a.$refs.body.offsetWidth},80)}else if(e==="touchmove"){if(this.drag||!this.dragCheck){return false}this.dragMovePositionX=g;this.dragMovePositionY=l}else if(e==="touchend"){clearTimeout(this.dragStartTimeout1);clearTimeout(this.dragStartTimeout2);this.dragCheck=false;if(!this.drag){this.dragIconShowLeft=false;this.dragIconShowRight=false;return}r.Animation.cancel(this.dragBackAnimation);this.drag=false;this.$emit("dragMessage",{result:this.drag,event:s});if(this.enableGestureQuoteFromRight&&this.dragIconShowRight&&this.dragPosition!==0||!this.enableGestureQuoteFromRight&&this.dragIconShowLeft&&this.dragPosition!==this.dragStartInitialX){if(n.Utils.platform.isBitrixMobile()){setTimeout(function(){return app.exec("callVibration")},200)}this.$emit("quoteMessage",{message:this.message})}this.dragIconShowLeft=false;this.dragIconShowRight=false;this.dragBackAnimation=r.Animation.start({start:this.dragPosition,end:this.dragStartInitialX,increment:20,duration:300,element:this,elementProperty:"dragPosition",callback:function t(){a.dragLayerPosition=undefined;a.dragWidth=0;a.dragPosition=0}})}}},watch:{capturedMoveEvent:function t(e){if(!this.drag||!e){return}var s=n.Utils.browser.findParent(e.target,"bx-im-message")||e.target;var a=s.getBoundingClientRect().left+e.layerX;if(typeof this.dragLayerPosition==="undefined"){this.dragLayerPosition=a}var i=this.dragLayerPosition-a;this.dragLayerPosition=a;this.dragPosition=this.dragPosition-i;if(this.enableGestureQuoteFromRight){var r=(this.showAvatar?30:0)+45;var o=this.showAvatar?30:30;if(this.dragPosition<-r){this.dragPosition=-r}else if(this.dragPosition<-o){if(!this.dragIconShowRight){this.dragIconShowRight=true}}else if(this.dragPosition>=0){this.dragPosition=0}}else{var g=60;var l=40;if(this.dragPosition<=this.dragStartInitialX){this.dragPosition=this.dragStartInitialX}else if(this.dragPosition>=g){this.dragPosition=g}else if(this.dragPosition>=l){if(!this.dragIconShowLeft){this.dragIconShowLeft=true}}}}},computed:{MessageType:function t(){return i.MessageType},type:function t(){if(this.message.system||this.message.authorId==0){return i.MessageType.system}else if(this.message.authorId===-1||this.message.authorId==this.userId){return i.MessageType.self}else{return i.MessageType.opponent}},localize:function t(){var t=a.Vue.getFilteredPhrases("IM_MESSENGER_MESSAGE_",this.$root.$bitrixMessages);return Object.freeze(Object.assign({},t,{IM_MESSENGER_MESSAGE_MENU_TITLE:t.IM_MESSENGER_MESSAGE_MENU_TITLE.replace("#SHORTCUT#",n.Utils.platform.isMac()?"CMD":"CTRL")}))},userData:function t(){return this.$store.getters["users/get"](this.message.authorId,true)},userAvatar:function t(){if(this.message.params.AVATAR){return"url('".concat(this.message.params.AVATAR,"')")}if(this.userData.avatar){return"url('".concat(this.userData.avatar,"')")}return""},filesData:function t(){var e=this.$store.getters["files/getList"](this.chatId);return e?e:{}},isEdited:function t(){return this.message.params.IS_EDITED==="Y"},isDeleted:function t(){return this.message.params.IS_DELETED==="Y"},isLargeFont:function t(){return this.showLargeFont&&this.message.params.LARGE_FONT==="Y"}},template:'\n\t\t<div :class="[\'bx-im-message\', {\n\t\t\t\t\'bx-im-message-without-menu\': !showMenu,\n\t\t\t\t\'bx-im-message-without-avatar\': !showAvatar,\n\t\t\t\t\'bx-im-message-type-system\': type === MessageType.system,\n\t\t\t\t\'bx-im-message-type-self\': type === MessageType.self,\n\t\t\t\t\'bx-im-message-type-other\': type !== MessageType.self,\n\t\t\t\t\'bx-im-message-type-opponent\': type === MessageType.opponent,\n\t\t\t\t\'bx-im-message-status-error\': message.error,\n\t\t\t\t\'bx-im-message-status-unread\': message.unread,\n\t\t\t\t\'bx-im-message-status-blink\': message.blink,\n\t\t\t\t\'bx-im-message-status-edited\': isEdited,\n\t\t\t\t\'bx-im-message-status-deleted\': isDeleted,\n\t\t\t\t\'bx-im-message-large-font\': isLargeFont,\n\t\t\t}]" \n\t\t\t@touchstart="gestureRouter(\'touchstart\', $event)"\n\t\t\t@touchmove="gestureRouter(\'touchmove\', $event)"\n\t\t\t@touchend="gestureRouter(\'touchend\', $event)"\n\t\t\tref="body"\n\t\t\t:style="{\n\t\t\t\twidth: dragWidth > 0? dragWidth+\'px\': \'\', \n\t\t\t\tmarginLeft: (enableGestureQuoteFromRight && dragPosition < 0) || (!enableGestureQuoteFromRight && dragPosition > 0)? dragPosition+\'px\': \'\',\n\t\t\t}"\n\t\t>\n\t\t\t<template v-if="type === MessageType.self">\n\t\t\t\t<template v-if="dragIconShowRight">\n\t\t\t\t\t<div class="bx-im-message-reply bx-im-message-reply-right">\n\t\t\t\t\t\t<div class="bx-im-message-reply-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<div class="bx-im-message-box">\n\t\t\t\t\t<component :is="componentBodyId"\n\t\t\t\t\t\t:userId="userId" \n\t\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t\t:chatId="chatId"\n\t\t\t\t\t\t:messageType="type"\n\t\t\t\t\t\t:dialog="dialog"\n\t\t\t\t\t\t:message="message"\n\t\t\t\t\t\t:user="userData"\n\t\t\t\t\t\t:files="filesData"\n\t\t\t\t\t\t:showAvatar="showAvatar"\n\t\t\t\t\t\t:showName="showName"\n\t\t\t\t\t\t:enableReactions="enableReactions"\n\t\t\t\t\t\t:referenceContentBodyClassName="referenceContentBodyClassName"\n\t\t\t\t\t\t:referenceContentNameClassName="referenceContentNameClassName"\n\t\t\t\t\t\t@clickByUserName="clickByUserName"\n\t\t\t\t\t\t@clickByUploadCancel="clickByUploadCancel"\n\t\t\t\t\t\t@clickByKeyboardButton="clickByKeyboardButton"\n\t\t\t\t\t\t@clickByChatTeaser="clickByChatTeaser"\n\t\t\t\t\t\t@setReaction="setMessageReaction"\n\t\t\t\t\t\t@openReactionList="openMessageReactionList"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-message-box-status">\n\t\t\t\t\t<template v-if="message.sending">\n\t\t\t\t\t\t<div class="bx-im-message-sending"></div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<transition name="bx-im-message-status-retry">\n\t\t\t\t\t\t<template v-if="!message.sending && message.error && message.retry">\n\t\t\t\t\t\t\t<div class="bx-im-message-status-retry" :title="localize.IM_MESSENGER_MESSAGE_RETRY_TITLE" @click="clickByMessageRetry({message: message, event: $event})">\n\t\t\t\t\t\t\t\t<span class="bx-im-message-retry-icon"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</transition>\n\t\t\t\t\t<template v-if="showMenu && !message.sending && !message.error">\n\t\t\t\t\t\t<div class="bx-im-message-status-menu" :title="localize.IM_MESSENGER_MESSAGE_MENU_TITLE" @click="clickByMessageMenu({message: message, event: $event})">\n\t\t\t\t\t\t\t<span class="bx-im-message-menu-icon"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template> \n\t\t\t\t</div>\n\t\t\t\t<template v-if="dragIconShowLeft">\n\t\t\t\t\t<div class="bx-im-message-reply bx-im-message-reply-left">\n\t\t\t\t\t\t<div class="bx-im-message-reply-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t\t<template v-else-if="type !== MessageType.self">\n\t\t\t\t<template v-if="dragIconShowLeft">\n\t\t\t\t\t<div class="bx-im-message-reply bx-im-message-reply-left">\n\t\t\t\t\t\t<div class="bx-im-message-reply-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<template v-if="type === MessageType.opponent">\n\t\t\t\t\t<div v-if="showAvatar" class="bx-im-message-avatar" @click="clickByAvatar({user: userData, event: $event})">\n\t\t\t\t\t\t<div :class="[\'bx-im-message-avatar-image\', {\n\t\t\t\t\t\t\t\t\'bx-im-message-avatar-image-default\': !userData.avatar\n\t\t\t\t\t\t\t}]"\n\t\t\t\t\t\t\t:style="{\n\t\t\t\t\t\t\t\tbackgroundColor: !userData.avatar? userData.color: \'\', \n\t\t\t\t\t\t\t\tbackgroundImage: userAvatar\n\t\t\t\t\t\t\t}" \n\t\t\t\t\t\t\t:title="userData.name"\n\t\t\t\t\t\t></div>\t\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<div class="bx-im-message-box">\n\t\t\t\t\t<component :is="componentBodyId"\n\t\t\t\t\t\t:userId="userId" \n\t\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t\t:chatId="chatId"\n\t\t\t\t\t\t:messageType="type"\n\t\t\t\t\t\t:message="message"\n\t\t\t\t\t\t:user="userData"\n\t\t\t\t\t\t:files="filesData"\n\t\t\t\t\t\t:showAvatar="showAvatar"\n\t\t\t\t\t\t:showName="showName"\n\t\t\t\t\t\t:enableReactions="enableReactions"\n\t\t\t\t\t\t:referenceContentBodyClassName="referenceContentBodyClassName"\n\t\t\t\t\t\t:referenceContentNameClassName="referenceContentNameClassName"\n\t\t\t\t\t\t@clickByUserName="clickByUserName"\n\t\t\t\t\t\t@clickByUploadCancel="clickByUploadCancel"\n\t\t\t\t\t\t@clickByKeyboardButton="clickByKeyboardButton"\n\t\t\t\t\t\t@clickByChatTeaser="clickByChatTeaser"\n\t\t\t\t\t\t@setReaction="setMessageReaction"\n\t\t\t\t\t\t@openReactionList="openMessageReactionList"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="showMenu"  class="bx-im-message-menu" :title="localize.IM_MESSENGER_MESSAGE_MENU_TITLE" @click="clickByMessageMenu({message: message, event: $event})">\n\t\t\t\t\t<span class="bx-im-message-menu-icon"></span>\n\t\t\t\t</div>\t\n\t\t\t\t<template v-if="dragIconShowRight">\n\t\t\t\t\t<div class="bx-im-message-reply bx-im-message-reply-right">\n\t\t\t\t\t\t<div class="bx-im-message-reply-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t</div>\n\t'})})(this.window=this.window||{},window,BX.Messenger.Model,BX,BX.Messenger.Const,BX.Messenger.Lib,BX.Messenger.Lib);
//# sourceMappingURL=message.bundle.map.jsmessage/dist/message.bundle.js.map000066400000074717147744174710013203 0ustar00{"version":3,"file":"message.bundle.js","sources":["../src/message.js"],"sourcesContent":["/**\n * Bitrix Messenger\n * Message Vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2019 Bitrix\n */\n\nimport './message.css';\nimport 'im.view.message.body';\n\nimport {DialoguesModel, MessagesModel} from 'im.model';\nimport {Vue} from \"ui.vue\";\nimport {MessageType} from \"im.const\";\nimport {Utils} from \"im.lib.utils\";\nimport {Animation} from \"im.lib.animation\";\n\nVue.component('bx-im-view-message',\n{\n\t/**\n\t * @emits 'clickByUserName' {user: object, event: MouseEvent}\n\t * @emits 'clickByUploadCancel' {file: object, event: MouseEvent}\n\t * @emits 'clickByKeyboardButton' {message: object, action: string, params: Object}\n\t * @emits 'clickByChatTeaser' {message: object, event: MouseEvent}\n\t * @emits 'clickByMessageMenu' {message: object, event: MouseEvent}\n\t * @emits 'clickByMessageRetry' {message: object, event: MouseEvent}\n\t * @emits 'setMessageReaction' {message: object, reaction: object}\n\t * @emits 'openMessageReactionList' {message: object, values: object}\n\t * @emits 'dragMessage' {result: boolean, event: MouseEvent}\n\t * @emits 'quoteMessage' {message: object}\n\t */\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tdialogId: { default: 0 },\n\t\tchatId: { default: 0 },\n\t\tenableReactions: { default: true },\n\t\tenableDateActions: { default: true },\n\t\tenableCreateContent: { default: true },\n\t\tenableGestureQuote: { default: true },\n\t\tenableGestureQuoteFromRight: { default: true },\n\t\tenableGestureMenu: { default: false },\n\t\tshowAvatar: { default: true },\n\t\tshowMenu: { default: true },\n\t\tshowName: { default: true },\n\t\tshowLargeFont: { default: true },\n\t\tcapturedMoveEvent: { default: null },\n\t\treferenceContentClassName: { default: ''},\n\t\treferenceContentBodyClassName: { default: ''},\n\t\treferenceContentNameClassName: { default: ''},\n\t\tdialog: {\n\t\t\ttype: Object,\n\t\t\tdefault: DialoguesModel.create().getElementState\n\t\t},\n\t\tmessage: {\n\t\t\ttype: Object,\n\t\t\tdefault: MessagesModel.create().getElementState\n\t\t},\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tcomponentBodyId: 'bx-im-view-message-body',\n\t\t\tdrag: false,\n\t\t\tdragWidth: 0,\n\t\t\tdragPosition: 0,\n\t\t\tdragIconShowLeft: false,\n\t\t\tdragIconShowRight: false,\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.dragStartPositionX = 0;\n\t\tthis.dragStartPositionY = 0;\n\t\tthis.dragMovePositionX = 0;\n\t\tthis.dragMovePositionY = 0;\n\t},\n\tbeforeDestroy()\n\t{\n\t\tclearTimeout(this.dragStartTimeout1);\n\t\tclearTimeout(this.dragStartTimeout2);\n\n\t\tif (this.dragBackAnimation)\n\t\t{\n\t\t\tAnimation.cancel(this.dragBackAnimation);\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tclickByAvatar(event)\n\t\t{\n\t\t\tthis.$emit('clickByUserName', event)\n\t\t},\n\t\tclickByUserName(event)\n\t\t{\n\t\t\tif (this.showAvatar && Utils.platform.isMobile())\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.$emit('clickByUserName', event)\n\t\t},\n\t\tclickByUploadCancel(event)\n\t\t{\n\t\t\tthis.$emit('clickByUploadCancel', event)\n\t\t},\n\t\tclickByKeyboardButton(event)\n\t\t{\n\t\t\tthis.$emit('clickByKeyboardButton', event)\n\t\t},\n\t\tclickByChatTeaser(event)\n\t\t{\n\t\t\tthis.$emit('clickByChatTeaser', event)\n\t\t},\n\t\tclickByMessageMenu(event)\n\t\t{\n\t\t\tthis.$emit('clickByMessageMenu', event)\n\t\t},\n\t\tclickByMessageRetry(event)\n\t\t{\n\t\t\tthis.$emit('clickByMessageRetry', event)\n\t\t},\n\t\tsetMessageReaction(event)\n\t\t{\n\t\t\tthis.$emit('setMessageReaction', event)\n\t\t},\n\t\topenMessageReactionList(event)\n\t\t{\n\t\t\tthis.$emit('openMessageReactionList', event)\n\t\t},\n\t\tgestureRouter(eventName, event)\n\t\t{\n\t\t\tthis.gestureQuote(eventName, event);\n\t\t\tthis.gestureMenu(eventName, event);\n\t\t},\n\t\tgestureMenu(eventName, event)\n\t\t{\n\t\t\tif (!this.enableGestureMenu)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (eventName === 'touchstart')\n\t\t\t{\n\t\t\t\tthis.gestureMenuStarted = true;\n\t\t\t\tthis.gestureMenuPreventTouchEnd = false;\n\t\t\t\tif (event.target.tagName === \"A\")\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthis.gestureMenuStartPosition = {\n\t\t\t\t\tx: event.changedTouches[0].clientX,\n\t\t\t\t\ty: event.changedTouches[0].clientY\n\t\t\t\t};\n\n\t\t\t\tthis.gestureMenuTimeout = setTimeout(() => {\n\t\t\t\t\tthis.gestureMenuPreventTouchEnd = true;\n\t\t\t\t\tthis.$emit('clickByMessageMenu', {message: this.message, event});\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t\telse if (eventName === 'touchmove')\n\t\t\t{\n\t\t\t\tif (!this.gestureMenuStarted)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tMath.abs(this.gestureMenuStartPosition.x - event.changedTouches[0].clientX) >= 10\n\t\t\t\t\t|| Math.abs(this.gestureMenuStartPosition.y - event.changedTouches[0].clientY) >= 10\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tthis.gestureMenuStarted = false;\n\t\t\t\t\tclearTimeout(this.gestureMenuTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (eventName === 'touchend')\n\t\t\t{\n\t\t\t\tif (!this.gestureMenuStarted)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthis.gestureMenuStarted = false;\n\t\t\t\tclearTimeout(this.gestureMenuTimeout);\n\t\t\t\tif (this.gestureMenuPreventTouchEnd)\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgestureQuote(eventName, event)\n\t\t{\n\t\t\tlet target = Utils.browser.findParent(event.target, 'bx-im-message') || event.target;\n\t\t\tif (!this.enableGestureQuote || Utils.platform.isAndroid())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst fromRight = this.enableGestureQuoteFromRight;\n\n\t\t\tconst layerX = target.getBoundingClientRect().left + event.layerX;\n\t\t\tconst layerY = target.getBoundingClientRect().top + event.layerY;\n\n\t\t\tif (eventName === 'touchstart')\n\t\t\t{\n\t\t\t\tthis.dragCheck = true;\n\n\t\t\t\tthis.dragStartInitialX = target.getBoundingClientRect().left;\n\t\t\t\tthis.dragStartInitialY = target.getBoundingClientRect().top;\n\t\t\t\tthis.dragStartPositionX = layerX;\n\t\t\t\tthis.dragStartPositionY = layerY;\n\t\t\t\tthis.dragMovePositionX = null;\n\t\t\t\tthis.dragMovePositionY = null;\n\n\t\t\t\tclearTimeout(this.dragStartTimeout1);\n\t\t\t\tclearTimeout(this.dragStartTimeout2);\n\t\t\t\tthis.dragStartTimeout1 = setTimeout(() => {\n\t\t\t\t\tif (this.dragMovePositionX !== null)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (Math.abs(this.dragStartPositionY - this.dragMovePositionY) >= 10)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.dragCheck = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 29);\n\n\t\t\t\tthis.dragStartTimeout2 = setTimeout(() => {\n\t\t\t\t\tthis.dragCheck = false;\n\n\t\t\t\t\tif (Math.abs(this.dragStartPositionY - this.dragMovePositionY) >= 10)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.dragMovePositionX === null)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if (fromRight && this.dragStartPositionX - this.dragMovePositionX < 9)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!fromRight && this.dragStartPositionX - this.dragMovePositionX > 9)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tAnimation.cancel(this.dragBackAnimation);\n\n\t\t\t\t\tthis.drag = true;\n\n\t\t\t\t\tthis.$emit('dragMessage', {result: this.drag, event});\n\t\t\t\t\tthis.dragWidth = this.$refs.body.offsetWidth;\n\n\t\t\t\t}, 80);\n\t\t\t}\n\t\t\telse if (eventName === 'touchmove')\n\t\t\t{\n\t\t\t\tif (this.drag || !this.dragCheck)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tthis.dragMovePositionX = layerX;\n\t\t\t\tthis.dragMovePositionY = layerY;\n\t\t\t}\n\t\t\telse if (eventName === 'touchend')\n\t\t\t{\n\t\t\t\tclearTimeout(this.dragStartTimeout1);\n\t\t\t\tclearTimeout(this.dragStartTimeout2);\n\n\t\t\t\tthis.dragCheck = false;\n\n\t\t\t\tif (!this.drag)\n\t\t\t\t{\n\t\t\t\t\tthis.dragIconShowLeft = false;\n\t\t\t\t\tthis.dragIconShowRight = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tAnimation.cancel(this.dragBackAnimation);\n\n\t\t\t\tthis.drag = false;\n\t\t\t\tthis.$emit('dragMessage', {result: this.drag, event});\n\n\t\t\t\tif (\n\t\t\t\t\tthis.enableGestureQuoteFromRight && this.dragIconShowRight && this.dragPosition !== 0\n\t\t\t\t\t|| !this.enableGestureQuoteFromRight && this.dragIconShowLeft && this.dragPosition !== this.dragStartInitialX\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tif (Utils.platform.isBitrixMobile())\n\t\t\t\t\t{\n\t\t\t\t\t\tsetTimeout(() => app.exec(\"callVibration\"), 200);\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('quoteMessage', {message: this.message});\n\t\t\t\t}\n\n\t\t\t\tthis.dragIconShowLeft = false;\n\t\t\t\tthis.dragIconShowRight = false;\n\n\t\t\t\tthis.dragBackAnimation = Animation.start({\n\t\t\t\t\tstart: this.dragPosition,\n\t\t\t\t\tend: this.dragStartInitialX,\n\t\t\t\t\tincrement: 20,\n\t\t\t\t\tduration:  300,\n\n\t\t\t\t\telement: this,\n\t\t\t\t\telementProperty: 'dragPosition',\n\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tthis.dragLayerPosition = undefined;\n\t\t\t\t\t\tthis.dragWidth = 0;\n\t\t\t\t\t\tthis.dragPosition = 0;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tcapturedMoveEvent(event)\n\t\t{\n\t\t\tif (!this.drag || !event)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet target = Utils.browser.findParent(event.target, 'bx-im-message') || event.target;\n\n\t\t\tconst layerX = target.getBoundingClientRect().left + event.layerX;\n\n\t\t\tif (typeof this.dragLayerPosition === 'undefined')\n\t\t\t{\n\t\t\t\tthis.dragLayerPosition = layerX;\n\t\t\t}\n\n\t\t\tconst movementX = this.dragLayerPosition - layerX;\n\n\t\t\tthis.dragLayerPosition = layerX;\n\n\t\t\tthis.dragPosition = this.dragPosition - movementX;\n\n\t\t\tif (this.enableGestureQuoteFromRight)\n\t\t\t{\n\t\t\t\tconst dragPositionMax = (this.showAvatar? 30: 0) + 45;\n\t\t\t\tconst dragPositionIcon = (this.showAvatar? 30: 30);\n\n\t\t\t\tif (this.dragPosition < -dragPositionMax)\n\t\t\t\t{\n\t\t\t\t\tthis.dragPosition = -dragPositionMax;\n\t\t\t\t}\n\t\t\t\telse if (this.dragPosition < -dragPositionIcon)\n\t\t\t\t{\n\t\t\t\t\tif (!this.dragIconShowRight)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.dragIconShowRight = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (this.dragPosition >= 0)\n\t\t\t\t{\n\t\t\t\t\tthis.dragPosition = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst dragPositionMax = 60;\n\t\t\t\tconst dragPositionIcon = 40;\n\n\t\t\t\tif (this.dragPosition <= this.dragStartInitialX)\n\t\t\t\t{\n\t\t\t\t\tthis.dragPosition = this.dragStartInitialX;\n\t\t\t\t}\n\t\t\t\telse if (this.dragPosition >= dragPositionMax)\n\t\t\t\t{\n\t\t\t\t\tthis.dragPosition = dragPositionMax;\n\t\t\t\t}\n\t\t\t\telse if (this.dragPosition >= dragPositionIcon)\n\t\t\t\t{\n\t\t\t\t\tif (!this.dragIconShowLeft)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.dragIconShowLeft = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tMessageType: () => MessageType,\n\n\t\ttype()\n\t\t{\n\t\t\tif (this.message.system || this.message.authorId == 0)\n\t\t\t{\n\t\t\t\treturn MessageType.system;\n\t\t\t}\n\t\t\telse if (this.message.authorId === -1 || this.message.authorId == this.userId)\n\t\t\t{\n\t\t\t\treturn MessageType.self;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn MessageType.opponent;\n\t\t\t}\n\t\t},\n\n\t\tlocalize()\n\t\t{\n\t\t\tlet localize = Vue.getFilteredPhrases('IM_MESSENGER_MESSAGE_', this.$root.$bitrixMessages);\n\n\t\t\treturn Object.freeze(\n\t\t\t\tObject.assign({}, localize, {\n\t\t\t\t\t'IM_MESSENGER_MESSAGE_MENU_TITLE': localize.IM_MESSENGER_MESSAGE_MENU_TITLE.replace('#SHORTCUT#', Utils.platform.isMac()? 'CMD':'CTRL')\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\tuserData()\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.message.authorId, true);\n\t\t},\n\n\t\tuserAvatar()\n\t\t{\n\t\t\tif (this.message.params.AVATAR)\n\t\t\t{\n\t\t\t\treturn `url('${this.message.params.AVATAR}')`;\n\t\t\t}\n\t\t\tif (this.userData.avatar)\n\t\t\t{\n\t\t\t\treturn `url('${this.userData.avatar}')`;\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\n\t\tfilesData()\n\t\t{\n\t\t\tlet files = this.$store.getters['files/getList'](this.chatId);\n\t\t\treturn files? files: {};\n\t\t},\n\n\t\tisEdited()\n\t\t{\n\t\t\treturn this.message.params.IS_EDITED === 'Y';\n\t\t},\n\n\t\tisDeleted()\n\t\t{\n\t\t\treturn this.message.params.IS_DELETED === 'Y';\n\t\t},\n\n\t\tisLargeFont()\n\t\t{\n\t\t\treturn this.showLargeFont && this.message.params.LARGE_FONT === 'Y';\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div :class=\"['bx-im-message', {\n\t\t\t\t'bx-im-message-without-menu': !showMenu,\n\t\t\t\t'bx-im-message-without-avatar': !showAvatar,\n\t\t\t\t'bx-im-message-type-system': type === MessageType.system,\n\t\t\t\t'bx-im-message-type-self': type === MessageType.self,\n\t\t\t\t'bx-im-message-type-other': type !== MessageType.self,\n\t\t\t\t'bx-im-message-type-opponent': type === MessageType.opponent,\n\t\t\t\t'bx-im-message-status-error': message.error,\n\t\t\t\t'bx-im-message-status-unread': message.unread,\n\t\t\t\t'bx-im-message-status-blink': message.blink,\n\t\t\t\t'bx-im-message-status-edited': isEdited,\n\t\t\t\t'bx-im-message-status-deleted': isDeleted,\n\t\t\t\t'bx-im-message-large-font': isLargeFont,\n\t\t\t}]\" \n\t\t\t@touchstart=\"gestureRouter('touchstart', $event)\"\n\t\t\t@touchmove=\"gestureRouter('touchmove', $event)\"\n\t\t\t@touchend=\"gestureRouter('touchend', $event)\"\n\t\t\tref=\"body\"\n\t\t\t:style=\"{\n\t\t\t\twidth: dragWidth > 0? dragWidth+'px': '', \n\t\t\t\tmarginLeft: (enableGestureQuoteFromRight && dragPosition < 0) || (!enableGestureQuoteFromRight && dragPosition > 0)? dragPosition+'px': '',\n\t\t\t}\"\n\t\t>\n\t\t\t<template v-if=\"type === MessageType.self\">\n\t\t\t\t<template v-if=\"dragIconShowRight\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-right\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<div class=\"bx-im-message-box\">\n\t\t\t\t\t<component :is=\"componentBodyId\"\n\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t:messageType=\"type\"\n\t\t\t\t\t\t:dialog=\"dialog\"\n\t\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t\t:user=\"userData\"\n\t\t\t\t\t\t:files=\"filesData\"\n\t\t\t\t\t\t:showAvatar=\"showAvatar\"\n\t\t\t\t\t\t:showName=\"showName\"\n\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t:referenceContentBodyClassName=\"referenceContentBodyClassName\"\n\t\t\t\t\t\t:referenceContentNameClassName=\"referenceContentNameClassName\"\n\t\t\t\t\t\t@clickByUserName=\"clickByUserName\"\n\t\t\t\t\t\t@clickByUploadCancel=\"clickByUploadCancel\"\n\t\t\t\t\t\t@clickByKeyboardButton=\"clickByKeyboardButton\"\n\t\t\t\t\t\t@clickByChatTeaser=\"clickByChatTeaser\"\n\t\t\t\t\t\t@setReaction=\"setMessageReaction\"\n\t\t\t\t\t\t@openReactionList=\"openMessageReactionList\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-message-box-status\">\n\t\t\t\t\t<template v-if=\"message.sending\">\n\t\t\t\t\t\t<div class=\"bx-im-message-sending\"></div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<transition name=\"bx-im-message-status-retry\">\n\t\t\t\t\t\t<template v-if=\"!message.sending && message.error && message.retry\">\n\t\t\t\t\t\t\t<div class=\"bx-im-message-status-retry\" :title=\"localize.IM_MESSENGER_MESSAGE_RETRY_TITLE\" @click=\"clickByMessageRetry({message: message, event: $event})\">\n\t\t\t\t\t\t\t\t<span class=\"bx-im-message-retry-icon\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</transition>\n\t\t\t\t\t<template v-if=\"showMenu && !message.sending && !message.error\">\n\t\t\t\t\t\t<div class=\"bx-im-message-status-menu\" :title=\"localize.IM_MESSENGER_MESSAGE_MENU_TITLE\" @click=\"clickByMessageMenu({message: message, event: $event})\">\n\t\t\t\t\t\t\t<span class=\"bx-im-message-menu-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template> \n\t\t\t\t</div>\n\t\t\t\t<template v-if=\"dragIconShowLeft\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-left\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t\t<template v-else-if=\"type !== MessageType.self\">\n\t\t\t\t<template v-if=\"dragIconShowLeft\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-left\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t\t<template v-if=\"type === MessageType.opponent\">\n\t\t\t\t\t<div v-if=\"showAvatar\" class=\"bx-im-message-avatar\" @click=\"clickByAvatar({user: userData, event: $event})\">\n\t\t\t\t\t\t<div :class=\"['bx-im-message-avatar-image', {\n\t\t\t\t\t\t\t\t'bx-im-message-avatar-image-default': !userData.avatar\n\t\t\t\t\t\t\t}]\"\n\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\tbackgroundColor: !userData.avatar? userData.color: '', \n\t\t\t\t\t\t\t\tbackgroundImage: userAvatar\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\t:title=\"userData.name\"\n\t\t\t\t\t\t></div>\t\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<div class=\"bx-im-message-box\">\n\t\t\t\t\t<component :is=\"componentBodyId\"\n\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t:messageType=\"type\"\n\t\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t\t:user=\"userData\"\n\t\t\t\t\t\t:files=\"filesData\"\n\t\t\t\t\t\t:showAvatar=\"showAvatar\"\n\t\t\t\t\t\t:showName=\"showName\"\n\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t:referenceContentBodyClassName=\"referenceContentBodyClassName\"\n\t\t\t\t\t\t:referenceContentNameClassName=\"referenceContentNameClassName\"\n\t\t\t\t\t\t@clickByUserName=\"clickByUserName\"\n\t\t\t\t\t\t@clickByUploadCancel=\"clickByUploadCancel\"\n\t\t\t\t\t\t@clickByKeyboardButton=\"clickByKeyboardButton\"\n\t\t\t\t\t\t@clickByChatTeaser=\"clickByChatTeaser\"\n\t\t\t\t\t\t@setReaction=\"setMessageReaction\"\n\t\t\t\t\t\t@openReactionList=\"openMessageReactionList\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"showMenu\"  class=\"bx-im-message-menu\" :title=\"localize.IM_MESSENGER_MESSAGE_MENU_TITLE\" @click=\"clickByMessageMenu({message: message, event: $event})\">\n\t\t\t\t\t<span class=\"bx-im-message-menu-icon\"></span>\n\t\t\t\t</div>\t\n\t\t\t\t<template v-if=\"dragIconShowRight\">\n\t\t\t\t\t<div class=\"bx-im-message-reply bx-im-message-reply-right\">\n\t\t\t\t\t\t<div class=\"bx-im-message-reply-icon\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</template> \n\t\t\t</template>\n\t\t</div>\n\t`\n});"],"names":["Vue","component","props","userId","default","dialogId","chatId","enableReactions","enableDateActions","enableCreateContent","enableGestureQuote","enableGestureQuoteFromRight","enableGestureMenu","showAvatar","showMenu","showName","showLargeFont","capturedMoveEvent","referenceContentClassName","referenceContentBodyClassName","referenceContentNameClassName","dialog","type","Object","DialoguesModel","create","getElementState","message","MessagesModel","data","componentBodyId","drag","dragWidth","dragPosition","dragIconShowLeft","dragIconShowRight","created","dragStartPositionX","dragStartPositionY","dragMovePositionX","dragMovePositionY","beforeDestroy","clearTimeout","dragStartTimeout1","dragStartTimeout2","dragBackAnimation","Animation","cancel","methods","clickByAvatar","event","$emit","clickByUserName","Utils","platform","isMobile","clickByUploadCancel","clickByKeyboardButton","clickByChatTeaser","clickByMessageMenu","clickByMessageRetry","setMessageReaction","openMessageReactionList","gestureRouter","eventName","gestureQuote","gestureMenu","gestureMenuStarted","gestureMenuPreventTouchEnd","target","tagName","gestureMenuStartPosition","x","changedTouches","clientX","y","clientY","gestureMenuTimeout","setTimeout","Math","abs","preventDefault","browser","findParent","isAndroid","fromRight","layerX","getBoundingClientRect","left","layerY","top","dragCheck","dragStartInitialX","dragStartInitialY","result","$refs","body","offsetWidth","isBitrixMobile","app","exec","start","end","increment","duration","element","elementProperty","callback","dragLayerPosition","undefined","watch","movementX","dragPositionMax","dragPositionIcon","computed","MessageType","system","authorId","self","opponent","localize","getFilteredPhrases","$root","$bitrixMessages","freeze","assign","IM_MESSENGER_MESSAGE_MENU_TITLE","replace","isMac","userData","$store","getters","userAvatar","params","AVATAR","avatar","filesData","files","isEdited","IS_EDITED","isDeleted","IS_DELETED","isLargeFont","LARGE_FONT","template"],"mappings":"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"}message/lang/ua/config.php000066400000000765147744174710011526 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_FILE_DELETED"] = "Файл був видалений";
$MESS["IM_MESSENGER_MESSAGE_MENU_TITLE"] = "Натисніть, щоб відкрити меню дій або клікніть утримуючи #SHORTCUT# для цитування повідомлення";
$MESS["IM_MESSENGER_MESSAGE_RETRY_TITLE"] = "Клікніть для повторного відправлення повідомлення";
$MESS["IM_MESSENGER_MESSAGE_USER_ANONYM"] = "Анонім";
?>message/lang/en/config.php000066400000000534147744174710011515 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_FILE_DELETED"] = "File has been deleted";
$MESS["IM_MESSENGER_MESSAGE_MENU_TITLE"] = "Click to open the action menu, or click while holding #SHORTCUT# down to quote the message";
$MESS["IM_MESSENGER_MESSAGE_RETRY_TITLE"] = "Click to send the message again";
$MESS["IM_MESSENGER_MESSAGE_USER_ANONYM"] = "Anonymous";
?>message/lang/ru/config.php000066400000000741147744174710011541 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_USER_ANONYM"] = "Аноним";
$MESS["IM_MESSENGER_MESSAGE_FILE_DELETED"] = "Файл был удален";
$MESS["IM_MESSENGER_MESSAGE_MENU_TITLE"] = "Кликните для открытия меню действий или кликните удерживая #SHORTCUT# для цитирования сообщения";
$MESS["IM_MESSENGER_MESSAGE_RETRY_TITLE"] = "Кликните для повторной отправки сообщения";message/lang/de/config.php000066400000000633147744174710011503 0ustar00<?
$MESS["IM_MESSENGER_MESSAGE_FILE_DELETED"] = "Datei wurde gelöscht";
$MESS["IM_MESSENGER_MESSAGE_MENU_TITLE"] = "Klicken Sie, um das Kontextmenü zu öffnen, oder klicken Sie, indem Sie gleichzeitig auf #SHORTCUT# drücken, um die Nachricht zu zitieren";
$MESS["IM_MESSENGER_MESSAGE_RETRY_TITLE"] = "Klicken Sie, um die Nachricht erneut zu senden";
$MESS["IM_MESSENGER_MESSAGE_USER_ANONYM"] = "Anonymus";
?>