Your IP : 52.14.244.213


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

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

return [
	'js' => [
		'/bitrix/js/im/component/element/file/dist/file.bundle.js',
	],
	'css' => [
		'/bitrix/js/im/component/element/file/dist/file.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue.directives.lazyload',
		'ui.icons',
		'ui.vue',
		'im.model',
	],
	'skip_core' => true,
];file/bundle.config.js000066400000000120147744571540010553 0ustar00module.exports = {
	input: './src/file.js',
	output: './dist/file.bundle.js',
};file/src/file.css000066400000010075147744571540007732 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-name-left {
	white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}
.bx-im-element-file-name-right {
	flex-shrink: 0;
}

.bx-im-element-file-size {
	color: #717171;
	font-size: 12px;
}

.bx-im-element-file-image
{
	display: flex;
	cursor: pointer;
	align-items: center;
    justify-content: center;
	overflow: hidden;
	min-width: 100px;
	min-height: 100px;
}

.bx-im-element-file-image-source {
	display: inline-block;
}
.bx-im-element-file-image-source-text {
	display: inline-block;
	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;
}
.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;
}

.bx-im-element-file-image + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}file/src/file.js000066400000006516147744571540007563 0ustar00/**
 * Bitrix Messenger
 * File element Vue component
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

import './file.css';
import 'ui.vue.directives.lazyload';
import 'ui.icons';

import {Vue} from 'ui.vue';
import {FilesModel} from 'im.model';

Vue.component('bx-messenger-element-file',
{
	props:
	{
		userId: { default: 0 },
		file: {
			type: Object,
			default: FilesModel.create().getElementStore
		},
	},
	methods:
	{
		download(file, event)
		{
			if (file.image && file.urlShow)
			{
				window.open(file.urlShow, '_blank');
			}
			else if (file.video && file.urlShow)
			{
				window.open(file.urlShow, '_blank');
			}
			else if (file.urlDownload)
			{
				window.open(file.urlDownload, '_self');
			}
			else
			{
				window.open(file.urlShow, '_blank');
			}
		},
	},
	computed:
	{
		localize()
		{
			return Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
		},
		fileNameLeft()
		{
			let end = this.file.name.length - this.fileNameRight.length;

			return this.file.name.substring(0, end);
		},
		fileNameRight()
		{
			let cutLength = this.file.extension.length+1;
			if (this.file.name.length > 30)
			{
				cutLength = cutLength+5;
			}

			let start = this.file.name.length-1 - cutLength;

			return this.file.name.substring(start);
		},
		fileSize()
		{
			let size = this.file.size;

			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]];
		}
	},
	template: `
		<div class="bx-im-element-file" @click="download(file, $event)">
			<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">
					<span class="bx-im-element-file-name-left">{{fileNameLeft}}</span><span class="bx-im-element-file-name-right">{{fileNameRight}}</span>
				</div>
				<div class="bx-im-element-file-size">{{fileSize}}</div>
			</div>
		</div>
	`
});

Vue.cloneComponent('bx-messenger-element-file-image', 'bx-messenger-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:
	{
		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">
			<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>
	`
});file/dist/file.bundle.min.css000066400000010275147744571540012142 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-name-left{white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.bx-im-element-file-name-right{-ms-flex-negative:0;flex-shrink:0}.bx-im-element-file-size{color:#717171;font-size:12px}.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}.bx-im-element-file-image-source{display:inline-block}.bx-im-element-file-image-source-text{display:inline-block;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}.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}.bx-im-element-file-image+.bx-im-message-content-body-without-text .bx-im-message-content-params{margin-top:-21px}file/dist/file.bundle.js000066400000007772147744571540011214 0ustar00(function (exports,ui_vue_directives_lazyload,ui_icons,ui_vue,im_model) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-messenger-element-file', {
	  props: {
	    userId: {
	      default: 0
	    },
	    file: {
	      type: Object,
	      default: im_model.FilesModel.create().getElementStore
	    }
	  },
	  methods: {
	    download: function download(file, event) {
	      if (file.image && file.urlShow) {
	        window.open(file.urlShow, '_blank');
	      } else if (file.video && file.urlShow) {
	        window.open(file.urlShow, '_blank');
	      } else if (file.urlDownload) {
	        window.open(file.urlDownload, '_self');
	      } else {
	        window.open(file.urlShow, '_blank');
	      }
	    }
	  },
	  computed: {
	    localize: function localize() {
	      return ui_vue.Vue.getFilteredPhrases('IM_MESSENGER_ELEMENT_FILE_', this.$root.$bitrixMessages);
	    },
	    fileNameLeft: function fileNameLeft() {
	      var end = this.file.name.length - this.fileNameRight.length;
	      return this.file.name.substring(0, end);
	    },
	    fileNameRight: function fileNameRight() {
	      var cutLength = this.file.extension.length + 1;

	      if (this.file.name.length > 30) {
	        cutLength = cutLength + 5;
	      }

	      var start = this.file.name.length - 1 - cutLength;
	      return this.file.name.substring(start);
	    },
	    fileSize: function fileSize() {
	      var size = this.file.size;
	      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]];
	    }
	  },
	  template: "\n\t\t<div class=\"bx-im-element-file\" @click=\"download(file, $event)\">\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<span class=\"bx-im-element-file-name-left\">{{fileNameLeft}}</span><span class=\"bx-im-element-file-name-right\">{{fileNameRight}}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-element-file-size\">{{fileSize}}</div>\n\t\t\t</div>\n\t\t</div>\n\t"
	});
	ui_vue.Vue.cloneComponent('bx-messenger-element-file-image', 'bx-messenger-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: {
	    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\">\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"
	});

}((this.window = this.window || {}),window,BX,BX,BX.Messenger.Model));
//# sourceMappingURL=file.bundle.js.map
file/dist/file.bundle.css000066400000011014147744571540011350 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-name-left {
	white-space: nowrap;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis;
    overflow: hidden;
}
.bx-im-element-file-name-right {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}

.bx-im-element-file-size {
	color: #717171;
	font-size: 12px;
}

.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;
}

.bx-im-element-file-image-source {
	display: inline-block;
}
.bx-im-element-file-image-source-text {
	display: inline-block;
	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;
}
.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;
}

.bx-im-element-file-image + .bx-im-message-content-body-without-text .bx-im-message-content-params {
	margin-top: -21px;
}file/dist/file.bundle.map.js000066400000004557147744571540011766 0ustar00{"version":3,"sources":["file.bundle.js"],"names":["exports","ui_vue_directives_lazyload","ui_icons","ui_vue","im_model","Vue","component","props","userId","default","file","type","Object","FilesModel","create","getElementStore","methods","download","event","image","urlShow","window","open","video","urlDownload","computed","localize","getFilteredPhrases","this","$root","$bitrixMessages","fileNameLeft","end","name","length","fileNameRight","substring","cutLength","extension","start","fileSize","size","sizes","position","Math","round","template","cloneComponent","getImageSize","width","height","maxWidth","aspectRatio","styleFileSizes","backgroundSize","styleBoxSizes","parseInt","fileSource","urlPreview","BX","Messenger","Model"],"mappings":"CAAC,SAAUA,EAAQC,EAA2BC,EAASC,EAAOC,GAC7D,aAUAD,EAAOE,IAAIC,UAAU,6BACnBC,OACEC,QACEC,QAAS,GAEXC,MACEC,KAAMC,OACNH,QAASL,EAASS,WAAWC,SAASC,kBAG1CC,SACEC,SAAU,SAASA,EAASP,EAAMQ,GAChC,GAAIR,EAAKS,OAAST,EAAKU,QAAS,CAC9BC,OAAOC,KAAKZ,EAAKU,QAAS,eACrB,GAAIV,EAAKa,OAASb,EAAKU,QAAS,CACrCC,OAAOC,KAAKZ,EAAKU,QAAS,eACrB,GAAIV,EAAKc,YAAa,CAC3BH,OAAOC,KAAKZ,EAAKc,YAAa,aACzB,CACLH,OAAOC,KAAKZ,EAAKU,QAAS,aAIhCK,UACEC,SAAU,SAASA,IACjB,OAAOvB,EAAOE,IAAIsB,mBAAmB,6BAA8BC,KAAKC,MAAMC,kBAEhFC,aAAc,SAASA,IACrB,IAAIC,EAAMJ,KAAKlB,KAAKuB,KAAKC,OAASN,KAAKO,cAAcD,OACrD,OAAON,KAAKlB,KAAKuB,KAAKG,UAAU,EAAGJ,IAErCG,cAAe,SAASA,IACtB,IAAIE,EAAYT,KAAKlB,KAAK4B,UAAUJ,OAAS,EAE7C,GAAIN,KAAKlB,KAAKuB,KAAKC,OAAS,GAAI,CAC9BG,EAAYA,EAAY,EAG1B,IAAIE,EAAQX,KAAKlB,KAAKuB,KAAKC,OAAS,EAAIG,EACxC,OAAOT,KAAKlB,KAAKuB,KAAKG,UAAUG,IAElCC,SAAU,SAASA,IACjB,IAAIC,EAAOb,KAAKlB,KAAK+B,KACrB,IAAIC,GAAS,OAAQ,KAAM,KAAM,KAAM,MACvC,IAAIC,EAAW,EAEf,MAAOF,GAAQ,MAAQE,EAAW,EAAG,CACnCF,GAAQ,KACRE,IAGF,OAAOC,KAAKC,MAAMJ,GAAQ,IAAMb,KAAKF,SAAS,kCAAoCgB,EAAMC,MAG5FG,SAAU,ukBAEZ3C,EAAOE,IAAI0C,eAAe,kCAAmC,6BAC3D/B,SACEgC,aAAc,SAASA,EAAaC,EAAOC,EAAQC,GACjD,IAAIC,EAEJ,GAAIH,EAAQE,EAAU,CACpBC,EAAcD,EAAWF,MACpB,CACLG,EAAc,EAGhB,OACEH,MAAOA,EAAQG,EACfF,OAAQA,EAASE,KAIvB3B,UACE4B,eAAgB,SAASA,IACvB,IAAIX,EAAQd,KAAKoB,aAAapB,KAAKlB,KAAKS,MAAM8B,MAAOrB,KAAKlB,KAAKS,MAAM+B,OAAQ,KAC7E,OACED,MAAOP,EAAMO,MAAQ,KACrBC,OAAQR,EAAMQ,OAAS,KACvBI,eAAgBZ,EAAMO,MAAQ,KAAOP,EAAMQ,OAAS,IAAM,UAAY,YAG1EK,cAAe,SAASA,IACtB,GAAIC,SAAS5B,KAAKyB,eAAeH,SAAW,IAAK,CAC/C,SAGF,OACEA,OAAQ,UAGZO,WAAY,SAASA,IACnB,OAAO7B,KAAKlB,KAAKgD,aAGrBZ,SAAU,qZA1Gb,CA6GGlB,KAAKP,OAASO,KAAKP,WAAcA,OAAOsC,GAAGA,GAAGA,GAAGC,UAAUC","file":"file.bundle.map.js"}file/dist/file.bundle.min.js000066400000005210147744571540011757 0ustar00(function(e,t,i,l,n){"use strict";l.Vue.component("bx-messenger-element-file",{props:{userId:{default:0},file:{type:Object,default:n.FilesModel.create().getElementStore}},methods:{download:function e(t,i){if(t.image&&t.urlShow){window.open(t.urlShow,"_blank")}else if(t.video&&t.urlShow){window.open(t.urlShow,"_blank")}else if(t.urlDownload){window.open(t.urlDownload,"_self")}else{window.open(t.urlShow,"_blank")}}},computed:{localize:function e(){return l.Vue.getFilteredPhrases("IM_MESSENGER_ELEMENT_FILE_",this.$root.$bitrixMessages)},fileNameLeft:function e(){var t=this.file.name.length-this.fileNameRight.length;return this.file.name.substring(0,t)},fileNameRight:function e(){var t=this.file.extension.length+1;if(this.file.name.length>30){t=t+5}var i=this.file.name.length-1-t;return this.file.name.substring(i)},fileSize:function e(){var t=this.file.size;var i=["BYTE","KB","MB","GB","TB"];var l=0;while(t>=1024&&l<4){t/=1024;l++}return Math.round(t)+" "+this.localize["IM_MESSENGER_ELEMENT_FILE_SIZE_"+i[l]]}},template:'\n\t\t<div class="bx-im-element-file" @click="download(file, $event)">\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<span class="bx-im-element-file-name-left">{{fileNameLeft}}</span><span class="bx-im-element-file-name-right">{{fileNameRight}}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-element-file-size">{{fileSize}}</div>\n\t\t\t</div>\n\t\t</div>\n\t'});l.Vue.cloneComponent("bx-messenger-element-file-image","bx-messenger-element-file",{methods:{getImageSize:function e(t,i,l){var n;if(t>l){n=l/t}else{n=1}return{width:t*n,height:i*n}}},computed:{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">\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'})})(this.window=this.window||{},window,BX,BX,BX.Messenger.Model);
//# sourceMappingURL=file.bundle.map.jsfile/dist/file.bundle.js.map000066400000016704147744571540011763 0ustar00{"version":3,"file":"file.bundle.js","sources":["../src/file.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.vue.directives.lazyload';\nimport 'ui.icons';\n\nimport {Vue} from 'ui.vue';\nimport {FilesModel} from 'im.model';\n\nVue.component('bx-messenger-element-file',\n{\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tfile: {\n\t\t\ttype: Object,\n\t\t\tdefault: FilesModel.create().getElementStore\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tdownload(file, event)\n\t\t{\n\t\t\tif (file.image && file.urlShow)\n\t\t\t{\n\t\t\t\twindow.open(file.urlShow, '_blank');\n\t\t\t}\n\t\t\telse if (file.video && file.urlShow)\n\t\t\t{\n\t\t\t\twindow.open(file.urlShow, '_blank');\n\t\t\t}\n\t\t\telse if (file.urlDownload)\n\t\t\t{\n\t\t\t\twindow.open(file.urlDownload, '_self');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twindow.open(file.urlShow, '_blank');\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\tfileNameLeft()\n\t\t{\n\t\t\tlet end = this.file.name.length - this.fileNameRight.length;\n\n\t\t\treturn this.file.name.substring(0, end);\n\t\t},\n\t\tfileNameRight()\n\t\t{\n\t\t\tlet cutLength = this.file.extension.length+1;\n\t\t\tif (this.file.name.length > 30)\n\t\t\t{\n\t\t\t\tcutLength = cutLength+5;\n\t\t\t}\n\n\t\t\tlet start = this.file.name.length-1 - cutLength;\n\n\t\t\treturn this.file.name.substring(start);\n\t\t},\n\t\tfileSize()\n\t\t{\n\t\t\tlet size = this.file.size;\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},\n\ttemplate: `\n\t\t<div class=\"bx-im-element-file\" @click=\"download(file, $event)\">\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<span class=\"bx-im-element-file-name-left\">{{fileNameLeft}}</span><span class=\"bx-im-element-file-name-right\">{{fileNameRight}}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-element-file-size\">{{fileSize}}</div>\n\t\t\t</div>\n\t\t</div>\n\t`\n});\n\nVue.cloneComponent('bx-messenger-element-file-image', 'bx-messenger-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\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\">\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});"],"names":["Vue","component","props","userId","default","file","type","Object","FilesModel","create","getElementStore","methods","download","event","image","urlShow","window","open","video","urlDownload","computed","localize","getFilteredPhrases","$root","$bitrixMessages","fileNameLeft","end","name","length","fileNameRight","substring","cutLength","extension","start","fileSize","size","sizes","position","Math","round","template","cloneComponent","getImageSize","width","height","maxWidth","aspectRatio","styleFileSizes","backgroundSize","styleBoxSizes","parseInt","fileSource","urlPreview"],"mappings":"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"}file/lang/ua/config.php000066400000000730147744571540011013 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"] = "Тб";
?>file/lang/en/config.php000066400000000657147744571540011020 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_KB"] = "KB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "TB";
?>file/lang/ru/config.php000066400000000725147744571540011040 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"] = "Тб";file/lang/de/config.php000066400000000667147744571540011007 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_KB"] = "KB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_MB"] = "MB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_GB"] = "GB";
$MESS["IM_MESSENGER_ELEMENT_FILE_SIZE_TB"] = "TB";
?>keyboard/config.php000066400000000540147744571540010345 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'/bitrix/js/im/component/element/keyboard/dist/keyboard.bundle.js',
	],
	'css' => [
		'/bitrix/js/im/component/element/keyboard/dist/keyboard.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.utils',
	],
	'skip_core' => true,
];keyboard/bundle.config.js000066400000000130147744571540011435 0ustar00module.exports = {
	input: './src/keyboard.js',
	output: './dist/keyboard.bundle.js',
};keyboard/src/keyboard.js000066400000007205147744571540011321 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.utils";

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

Vue.component('bx-messenger-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)
			{
				console.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>
	`
});keyboard/src/keyboard.css000066400000002401147744571540011466 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;
}keyboard/dist/keyboard.bundle.css000066400000002576147744571540013127 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;
}keyboard/dist/keyboard.bundle.js000066400000010721147744571540012742 0ustar00(function (exports,ui_vue,im_utils) {
	'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-messenger-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_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) {
	        console.warn('Messenger keyboard: open app is not implemented.');
	      } else if (button.LINK) {
	        if (im_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_utils.Utils.platform.isBitrixMobile() && button.CONTEXT === 'DESKTOP') {
	          return false;
	        }

	        if (!im_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));
//# sourceMappingURL=keyboard.bundle.js.map
keyboard/dist/keyboard.bundle.map.js000066400000005124147744571540013517 0ustar00{"version":3,"sources":["keyboard.bundle.js"],"names":["exports","ui_vue","im_utils","_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","console","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"],"mappings":"CAAC,SAAUA,QAAQC,OAAOC,UACzB,aAWA,IAAIC,YAAcC,OAAOC,QACvBC,QAAS,UACTC,OAAQ,WAGVN,OAAOO,IAAIC,UAAU,iCAInBC,OACEC,SACEC,KAAMC,MACNC,QAAS,SAASC,IAChB,WAGJC,WACEF,QAAS,GAEXG,QACEH,QAAS,GAEXI,UACEJ,QAAS,IAGbK,KAAM,SAASA,IACb,OACEC,SAAUlB,SAASmB,MAAMC,SAASF,WAClCG,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,CACxBC,QAAQC,KAAK,yDACR,GAAInC,OAAOoC,KAAM,CACtB,GAAIzC,SAASmB,MAAMC,SAASsB,iBAAkB,CAC5CC,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,GAAIjE,SAASmB,MAAMC,SAASsB,kBAAoBrC,EAAO4D,UAAY,UAAW,CAC5E,OAAO,MAGT,IAAKjE,SAASmB,MAAMC,SAASsB,kBAAoBrC,EAAO4D,UAAY,SAAU,CAC5E,OAAO,MAGT,OAAO,SAIbC,UACEC,WAAY,SAASA,IACnB,OAAOlE,cAGXmE,SAAU,s4BAhJb,CAmJG5C,KAAKqB,OAASrB,KAAKqB,WAAcwB,GAAGA,GAAGC","file":"keyboard.bundle.map.js"}keyboard/dist/keyboard.bundle.min.js000066400000005757147744571540013541 0ustar00(function(exports,ui_vue,im_utils){"use strict";var _ButtonType=Object.freeze({newline:"NEWLINE",button:"BUTTON"});ui_vue.Vue.component("bx-messenger-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_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){console.warn("Messenger keyboard: open app is not implemented.")}else if(button.LINK){if(im_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 n={};if(e.WIDTH){n["width"]=e.WIDTH+"px"}else if(e.DISPLAY==="BLOCK"){n["width"]="225px"}if(e.BG_COLOR){n["backgroundColor"]=e.BG_COLOR}if(e.TEXT_COLOR){n["color"]=e.TEXT_COLOR}return n},prepareButtons:function t(e){return e.filter(function(t){if(!t.CONTEXT){return true}if(im_utils.Utils.platform.isBitrixMobile()&&t.CONTEXT==="DESKTOP"){return false}if(!im_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);
//# sourceMappingURL=keyboard.bundle.map.jskeyboard/dist/keyboard.bundle.min.css000066400000002322147744571540013676 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}keyboard/dist/keyboard.bundle.js.map000066400000020521147744571540013515 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.utils\";\n\nconst ButtonType = Object.freeze({\n\tnewline: 'NEWLINE',\n\tbutton: 'BUTTON'\n});\n\nVue.component('bx-messenger-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\tconsole.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","console","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":";;;CAAA;;;;;;;;AASA;CAIA,IAAMA,WAAU,GAAGC,MAAM,CAACC,MAAP,CAAc;CAChCC,EAAAA,OAAO,EAAE,SADuB;CAEhCC,EAAAA,MAAM,EAAE;CAFwB,CAAd,CAAnB;;AAKAC,WAAG,CAACC,SAAJ,CAAc,+BAAd,EACA;CACC;;;CAGAC,EAAAA,KAAK,EACL;CACCC,IAAAA,OAAO,EAAE;CAACC,MAAAA,IAAI,EAAEC,KAAP;CAAcC,MAAAA,OAAO,EAAE;CAAA,eAAM,EAAN;CAAA;CAAvB,KADV;CAECC,IAAAA,SAAS,EAAE;CAACD,MAAAA,OAAO,EAAE;CAAV,KAFZ;CAGCE,IAAAA,MAAM,EAAE;CAACF,MAAAA,OAAO,EAAE;CAAV,KAHT;CAICG,IAAAA,QAAQ,EAAE;CAACH,MAAAA,OAAO,EAAE;CAAV;CAJX,GALD;CAWCI,EAAAA,IAAI,EAAE,gBACN;CACC,WAAO;CACNC,MAAAA,QAAQ,EAAGC,cAAK,CAACC,QAAN,CAAeF,QAAf,EADL;CAENG,MAAAA,SAAS,EAAG,KAFN;CAGNC,MAAAA,YAAY,EAAG;CAHT,KAAP;CAMA,GAnBF;CAoBCC,EAAAA,OApBD,qBAqBC;CACC,SAAKD,YAAL,GAAoB,KAAKE,cAAL,CAAoB,KAAKd,OAAzB,CAApB;CACA,GAvBF;CAwBCe,EAAAA,KAAK,EACL;CACCf,IAAAA,OADD,qBAEC;CACCgB,MAAAA,YAAY,CAAC,KAAKC,kBAAN,CAAZ;CAEA,WAAKN,SAAL,GAAiB,KAAjB;CACA,WAAKC,YAAL,GAAoB,KAAKE,cAAL,CAAoB,KAAKd,OAAzB,CAApB;CACA;CAPF,GAzBD;CAkCCkB,EAAAA,OAAO,EACP;CACCC,IAAAA,KADD,iBACOvB,MADP,EAEC;CAAA;;CACC,UAAI,KAAKe,SAAT,EACA;CACC,eAAO,KAAP;CACA;;CAED,UAAIf,MAAM,CAACwB,QAAP,IAAmBxB,MAAM,CAACwB,QAAP,KAAoB,GAA3C,EACA;CACC,eAAO,KAAP;CACA;;CAED,UAAIxB,MAAM,CAACyB,QAAX,EACA;CACC,YAAIC,YAAY,GAAG1B,MAAM,CAACyB,QAAP,CAAgBE,QAAhB,GACjBC,OADiB,CACT,cADS,EACO,KAAKpB,SADZ,EAEjBoB,OAFiB,CAET,aAFS,EAEM,KAAKlB,QAFX,EAGjBkB,OAHiB,CAGT,WAHS,EAGI,KAAKnB,MAHT,CAAnB;CAIAoB,QAAAA,IAAI,CAACH,YAAD,CAAJ;CACA,OAPD,MAQK,IAAI1B,MAAM,CAAC8B,MAAX,EACL;CACCC,QAAAA,OAAO,CAACC,IAAR,CAAa,kDAAb;CACA,OAHI,MAIA,IAAIhC,MAAM,CAACiC,IAAX,EACL;CACC,YAAIpB,cAAK,CAACC,QAAN,CAAeoB,cAAf,EAAJ,EACA;CACCC,UAAAA,GAAG,CAACC,WAAJ,CAAgBpC,MAAM,CAACiC,IAAvB;CACA,SAHD,MAKA;CACCI,UAAAA,MAAM,CAACC,IAAP,CAAYtC,MAAM,CAACiC,IAAnB,EAAyB,QAAzB;CACA;CACD,OAVI,MAWA,IAAIjC,MAAM,CAACuC,IAAP,KAAgB,GAApB,EACL;CACC,YAAIvC,MAAM,CAACwC,KAAP,KAAiB,GAArB,EACA;CACC,eAAKzB,SAAL,GAAiB,IAAjB;CACA;;CAEDf,QAAAA,MAAM,CAACuC,IAAP,GAAc,GAAd;CAEA,aAAKE,KAAL,CAAW,OAAX,EAAoB;CAACC,UAAAA,MAAM,EAAE,SAAT;CAAoBC,UAAAA,MAAM,EAAE;CAC/CjC,YAAAA,QAAQ,EAAE,KAAKA,QADgC;CAE/CF,YAAAA,SAAS,EAAE,KAAKA,SAF+B;CAG/CoC,YAAAA,KAAK,EAAE5C,MAAM,CAAC6C,MAHiC;CAI/CC,YAAAA,OAAO,EAAE9C,MAAM,CAAC+C,OAJ+B;CAK/CJ,YAAAA,MAAM,EAAE3C,MAAM,CAACgD;CALgC;CAA5B,SAApB;CAQA,aAAK3B,kBAAL,GAA0B4B,UAAU,CAAC,YAAM;CAC1C,UAAA,KAAI,CAAClC,SAAL,GAAiB,KAAjB;CACAf,UAAAA,MAAM,CAACuC,IAAP,GAAc,GAAd;CACA,SAHmC,EAGjC,KAHiC,CAApC;CAIA;;CAED,aAAO,IAAP;CACA,KA5DF;CA6DCW,IAAAA,SA7DD,qBA6DWlD,MA7DX,EA8DC;CACC,UAAImD,MAAM,GAAG,EAAb;;CACA,UAAInD,MAAM,CAACoD,KAAX,EACA;CACCD,QAAAA,MAAM,CAAC,OAAD,CAAN,GAAkBnD,MAAM,CAACoD,KAAP,GAAa,IAA/B;CACA,OAHD,MAIK,IAAIpD,MAAM,CAACqD,OAAP,KAAmB,OAAvB,EACL;CACCF,QAAAA,MAAM,CAAC,OAAD,CAAN,GAAkB,OAAlB;CACA;;CACD,UAAInD,MAAM,CAACsD,QAAX,EACA;CACCH,QAAAA,MAAM,CAAC,iBAAD,CAAN,GAA4BnD,MAAM,CAACsD,QAAnC;CACA;;CACD,UAAItD,MAAM,CAACuD,UAAX,EACA;CACCJ,QAAAA,MAAM,CAAC,OAAD,CAAN,GAAkBnD,MAAM,CAACuD,UAAzB;CACA;;CAED,aAAOJ,MAAP;CACA,KAlFF;CAoFCjC,IAAAA,cApFD,0BAoFgBd,OApFhB,EAqFC;CACC,aAAOA,OAAO,CAACoD,MAAR,CAAe,UAAAxD,MAAM,EAC5B;CACC,YAAI,CAACA,MAAM,CAACyD,OAAZ,EACA;CACC,iBAAO,IAAP;CACA;;CAED,YAAI5C,cAAK,CAACC,QAAN,CAAeoB,cAAf,MAAmClC,MAAM,CAACyD,OAAP,KAAmB,SAA1D,EACA;CACC,iBAAO,KAAP;CACA;;CAED,YAAI,CAAC5C,cAAK,CAACC,QAAN,CAAeoB,cAAf,EAAD,IAAoClC,MAAM,CAACyD,OAAP,KAAmB,QAA3D,EACA;CACC,iBAAO,KAAP;CACA;;CAED,eAAO,IAAP;CACA,OAlBM,CAAP;CAmBA;CAzGF,GAnCD;CA8ICC,EAAAA,QAAQ,EACR;CACC9D,IAAAA,UAAU,EAAE;CAAA,aAAMA,WAAN;CAAA;CADb,GA/ID;CAkJC+D,EAAAA,QAAQ;CAlJT,CADA;;;;"}chatteaser/config.php000066400000000550147744571540010671 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'/bitrix/js/im/component/element/chatteaser/dist/chatteaser.bundle.js',
	],
	'css' => [
		'/bitrix/js/im/component/element/chatteaser/dist/chatteaser.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.vue',
		'im.utils',
	],
	'skip_core' => true,
];chatteaser/bundle.config.js000066400000000134147744571540011764 0ustar00module.exports = {
	input: './src/chatteaser.js',
	output: './dist/chatteaser.bundle.js',
};chatteaser/src/chatteaser.css000066400000001421147744571540012335 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;
}chatteaser/src/chatteaser.js000066400000002262147744571540012165 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.utils";

Vue.component('bx-messenger-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>
	`
});chatteaser/dist/chatteaser.bundle.js000066400000002744147744571540013616 0ustar00(function (exports,ui_vue,im_utils) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * ChatTeaser element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-messenger-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_utils.Utils.date.format(this.messageLastDate, null, this.$root.$bitrixMessages);
	    },
	    formattedCounter: function formattedCounter() {
	      return this.messageCounter + ' ' + im_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));
//# sourceMappingURL=chatteaser.bundle.js.map
chatteaser/dist/chatteaser.bundle.min.js000066400000002040147744571540014365 0ustar00(function(t,e,s){"use strict";e.Vue.component("bx-messenger-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);
//# sourceMappingURL=chatteaser.bundle.map.jschatteaser/dist/chatteaser.bundle.min.css000066400000001421147744571540014543 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}chatteaser/dist/chatteaser.bundle.map.js000066400000001556147744571540014372 0ustar00{"version":3,"sources":["chatteaser.bundle.js"],"names":["exports","ui_vue","im_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"],"mappings":"CAAC,SAAUA,EAAQC,EAAOC,GACzB,aAUAD,EAAOE,IAAIC,UAAU,oCAInBC,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,EAASe,MAAMC,KAAKC,OAAON,KAAKL,gBAAiB,KAAMK,KAAKC,MAAMC,kBAE3EK,iBAAkB,SAASA,IACzB,OAAOP,KAAKP,eAAiB,IAAMJ,EAASe,MAAMI,KAAKC,qBAAqB,uBAAwBT,KAAKP,eAAgBO,KAAKJ,WAAYI,KAAKC,MAAMC,mBAGzJQ,SAAU,sXArCb,CAwCGV,KAAKW,OAASX,KAAKW,WAAcC,GAAGA,GAAGC","file":"chatteaser.bundle.map.js"}chatteaser/dist/chatteaser.bundle.css000066400000001614147744571540013765 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;
}chatteaser/dist/chatteaser.bundle.js.map000066400000004613147744571540014367 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.utils\";\n\nVue.component('bx-messenger-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,kCAAd,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,cAAK,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,cAAK,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;;;;"}chatteaser/lang/ua/config.php000066400000000503147744571540012215 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"] = "Відкрити";
?>chatteaser/lang/en/config.php000066400000000404147744571540012212 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";
?>chatteaser/lang/ru/config.php000066400000000517147744571540012243 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"] = "Открыть";
?>chatteaser/lang/de/config.php000066400000000422147744571540012200 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";
?>attach/config.php000066400000000546147744571540010017 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'/bitrix/js/im/component/element/attach/dist/attach.bundle.js',
	],
	'css' => [
		'/bitrix/js/im/component/element/attach/dist/attach.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'im.model',
		'im.utils',
		'ui.vue',
	],
	'skip_core' => true,
];attach/bundle.config.js000066400000000124147744571540011104 0ustar00module.exports = {
	input: './src/attach.js',
	output: './dist/attach.bundle.js',
};attach/src/attach.css000066400000001116147744571540010600 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);
}attach/src/attach.js000066400000003657147744571540010440 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-messenger-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>
	`
});attach/src/types/user.css000066400000012221147744571540011455 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;
}attach/src/types/image.js000066400000005150147744571540011410 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Image (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

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

export const AttachTypeImage =
{
	property: 'IMAGE',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/link.css000066400000000324147744571540011435 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;
}
attach/src/types/file.css000066400000001420147744571540011415 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;
}attach/src/types/grid.js000066400000010523147744571540011253 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * Grid (attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

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

export const AttachTypeGrid =
{
	property: 'GRID',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/grid.css000066400000002513147744571540011427 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 {

}attach/src/types/html.css000066400000000043147744571540011442 0ustar00.bx-im-element-attach-type-html {
}attach/src/types/file.js000066400000005102147744571540011242 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.utils";

export const AttachTypeFile =
{
	property: 'FILE',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/html.js000066400000000727147744571540011277 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-messenger-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>`
	},
};attach/src/types/image.css000066400000006024147744571540011565 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;
}attach/src/types/rich.js000066400000003317147744571540011256 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.utils";

export const AttachTypeRich =
{
	property: 'RICH_LINK',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/message.js000066400000001147147744571540011754 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-messenger-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>`
	},
};attach/src/types/user.js000066400000003353147744571540011307 0ustar00/**
 * Bitrix Messenger
 * Vue component
 *
 * User (Attach type)
 *
 * @package bitrix
 * @subpackage im
 * @copyright 2001-2019 Bitrix
 */

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

export const AttachTypeUser =
{
	property: 'USER',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/delimiter.js000066400000001342147744571540012303 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-messenger-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>`
	},
};attach/src/types/link.js000066400000003305147744571540011263 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.utils";

export const AttachTypeLink =
{
	property: 'LINK',
	name: 'bx-messenger-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>
		`
	},
};attach/src/types/delimiter.css000066400000000267147744571540012464 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;
}attach/src/types/rich.css000066400000000712147744571540011426 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;
}
attach/dist/attach.bundle.css000066400000031254147744571540012232 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-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-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-html {
}
.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-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-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-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-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;
}attach/dist/attach.bundle.map.js000066400000017224147744571540012633 0ustar00{"version":3,"sources":["attach.bundle.js"],"names":["exports","im_model","im_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"],"mappings":"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","file":"attach.bundle.map.js"}attach/dist/attach.bundle.js.map000066400000106205147744571540012631 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-messenger-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.utils\";\n\nexport const AttachTypeFile =\n{\n\tproperty: 'FILE',\n\tname: 'bx-messenger-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.utils\";\nimport {MessagesModel} from \"im.model\";\n\nexport const AttachTypeGrid =\n{\n\tproperty: 'GRID',\n\tname: 'bx-messenger-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-messenger-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.utils\";\n\nexport const AttachTypeImage =\n{\n\tproperty: 'IMAGE',\n\tname: 'bx-messenger-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.utils\";\n\nexport const AttachTypeLink =\n{\n\tproperty: 'LINK',\n\tname: 'bx-messenger-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-messenger-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.utils\";\n\nexport const AttachTypeRich =\n{\n\tproperty: 'RICH_LINK',\n\tname: 'bx-messenger-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.utils\";\n\nexport const AttachTypeUser =\n{\n\tproperty: 'USER',\n\tname: 'bx-messenger-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-messenger-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":"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"}attach/dist/attach.bundle.js000066400000052475147744571540012066 0ustar00(function (exports,im_model,im_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-messenger-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-messenger-element-attach-file',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      openLink: function openLink(element) {
	        im_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_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-messenger-element-attach-grid',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    created: function created() {
	      if (im_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_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-messenger-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-messenger-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_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_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-messenger-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_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-messenger-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-messenger-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_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-messenger-element-attach-user',
	  component: {
	    props: {
	      config: {
	        type: Object,
	        default: {}
	      },
	      color: {
	        type: String,
	        default: 'transparent'
	      }
	    },
	    methods: {
	      openLink: function openLink(element) {
	        if (element.LINK) {
	          im_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-messenger-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,BX));
//# sourceMappingURL=attach.bundle.js.map
attach/dist/attach.bundle.min.js000066400000033015147744571540012635 0ustar00(function(t,e,n,i){"use strict";var l={property:"DELIMITER",name:"bx-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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-messenger-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,BX);
//# sourceMappingURL=attach.bundle.map.jsattach/dist/attach.bundle.min.css000066400000027245147744571540013021 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-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-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-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-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-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-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-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}attach/lang/ua/config.php000066400000000731147744571540011341 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"] = "Тб";
?>attach/lang/en/config.php000066400000000651147744571540011337 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";
?>attach/lang/ru/config.php000066400000000716147744571540011365 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"] = "Тб";attach/lang/de/config.php000066400000000660147744571540011325 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";
?>media/config.php000066400000001024147744571540007622 0ustar00<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

return [
	'js' => [
		'/bitrix/js/im/component/element/media/dist/media.bundle.js',
	],
	'css' => [
		'/bitrix/js/im/component/element/media/dist/media.bundle.css',
	],
	'rel' => [
		'main.polyfill.core',
		'ui.progressbarjs.uploader',
		'ui.vue.vuex',
		'im.model',
		'im.utils',
		'im.const',
		'ui.vue.components.audioplayer',
		'ui.vue.directives.lazyload',
		'ui.icons',
		'ui.vue.components.socialvideo',
		'ui.vue',
	],
	'skip_core' => true,
];media/bundle.config.js000066400000000125147744571540010720 0ustar00module.exports = {
	input: './src/register.js',
	output: './dist/media.bundle.js',
};media/src/video.css000066400000001231147744571540010253 0ustar00.bx-im-element-file-video
{
	overflow: hidden;
	border-radius: 12px;
	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; }
}media/src/image.js000066400000003150147744571540010055 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-messenger-element-file-image', 'bx-messenger-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>
	`
});media/src/file.css000066400000001723147744571540010072 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; }
}media/src/video.js000066400000003226147744571540010105 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 {Vue} from 'ui.vue';

Vue.cloneComponent('bx-messenger-element-file-video', 'bx-messenger-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);
		},
		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" :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>
	`
});media/src/file.js000066400000015453147744571540007723 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.utils";

Vue.component('bx-messenger-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>
	`
});media/src/image.css000066400000006367147744571540010246 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; }
}media/src/register.js000066400000000106147744571540010615 0ustar00import './file';
import './audio';
import './image';
import './video';media/src/audio.css000066400000000722147744571540010252 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;
}media/src/audio.js000066400000001231147744571540010072 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-messenger-element-file-audio', 'bx-messenger-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>	
	`
});media/dist/media.bundle.css000066400000013517147744571540011662 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-video
{
	overflow: hidden;
	border-radius: 12px;
	-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; }
}
.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;
}media/dist/media.bundle.js000066400000031550147744571540011503 0ustar00(function (exports,ui_progressbarjs_uploader,ui_vue_vuex,im_model,im_utils,im_const,ui_vue_components_audioplayer,ui_vue_directives_lazyload,ui_icons,ui_vue_components_socialvideo,ui_vue) {
	'use strict';

	/**
	 * Bitrix Messenger
	 * File element Vue component
	 *
	 * @package bitrix
	 * @subpackage im
	 * @copyright 2001-2019 Bitrix
	 */
	ui_vue.Vue.component('bx-messenger-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_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_utils.Utils.platform.isBitrixMobile()) {
	          app.openDocument({
	            url: file.urlShow,
	            name: file.name
	          });
	        } else {
	          window.open(file.urlShow, '_blank');
	        }
	      } else if (file.urlDownload) {
	        if (im_utils.Utils.platform.isBitrixMobile()) {
	          app.openDocument({
	            url: file.urlDownload,
	            name: file.name
	          });
	        } else {
	          window.open(file.urlDownload, '_blank');
	        }
	      } else {
	        if (im_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-messenger-element-file-audio', 'bx-messenger-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-messenger-element-file-image', 'bx-messenger-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-messenger-element-file-video', 'bx-messenger-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);
	    },
	    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\" :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,BX.Messenger.Const,window,window,BX,window,BX));
//# sourceMappingURL=media.bundle.js.map
media/dist/media.bundle.min.js000066400000017647147744571540012300 0ustar00(function(e,t,i,s,l,r,n,o,a,f,h){"use strict";h.Vue.component("bx-messenger-element-file",{mounted:function e(){this.createProgressbar()},beforeDestroy:function e(){this.removeProgressbar()},props:{userId:{default:0},messageType:{default:r.MessageType.self},file:{type:Object,default:s.FilesModel.create().getElementState}},methods:{download:function e(t){if(t.progress!==100){return false}if(t.type===r.FileType.image&&t.urlShow){if(l.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===r.FileType.video&&t.urlShow){if(l.Utils.platform.isBitrixMobile()){app.openDocument({url:t.urlShow,name:t.name})}else{window.open(t.urlShow,"_blank")}}else if(t.urlDownload){if(l.Utils.platform.isBitrixMobile()){app.openDocument({url:t.urlDownload,name:t.name})}else{window.open(t.urlDownload,"_blank")}}else{if(l.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!==r.FileType.image&&this.file.type!==r.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===r.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===r.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 r.FileStatus},localize:function e(){return h.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'});h.Vue.cloneComponent("bx-messenger-element-file-audio","bx-messenger-element-file",{computed:{background:function e(){return this.messageType===r.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'});h.Vue.cloneComponent("bx-messenger-element-file-image","bx-messenger-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 h.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'});h.Vue.cloneComponent("bx-messenger-element-file-video","bx-messenger-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 h.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" :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,BX.Messenger.Const,window,window,BX,window,BX);
//# sourceMappingURL=media.bundle.map.jsmedia/dist/media.bundle.js.map000066400000060241147744571540012256 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.utils\";\n\nVue.component('bx-messenger-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-messenger-element-file-audio', 'bx-messenger-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-messenger-element-file-image', 'bx-messenger-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\";\n\nimport {Vue} from 'ui.vue';\n\nVue.cloneComponent('bx-messenger-element-file-video', 'bx-messenger-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\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\" :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","styleVideoSizes","autoplay","options","autoplayVideo"],"mappings":"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"}media/dist/media.bundle.map.js000066400000017332147744571540012261 0ustar00{"version":3,"sources":["media.bundle.js"],"names":["exports","ui_progressbarjs_uploader","ui_vue_vuex","im_model","im_utils","im_const","ui_vue_components_audioplayer","ui_vue_directives_lazyload","ui_icons","ui_vue_components_socialvideo","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","styleVideoSizes","autoplay","options","autoplayVideo","BX","ProgressBarJs","Messenger","Model","Const"],"mappings":"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","file":"media.bundle.map.js"}media/dist/media.bundle.min.css000066400000012564147744571540012445 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-video{overflow:hidden;border-radius:12px;-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}}.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}media/lang/ua/config.php000066400000002076147744571540011160 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"] = "Файл завантажується...";
?>media/lang/en/config.php000066400000001623147744571540011152 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...";
?>media/lang/ru/config.php000066400000002027147744571540011175 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"] = "Отменить загрузку файла";media/lang/de/config.php000066400000001665147744571540011146 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?";
?>