File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/im/v2/component/call-background/dist/call-background.bundle.js.map
Back
{"version":3,"file":"call-background.bundle.js","sources":["../src/classes/progress-bar-manager.js","../src/classes/items/background.js","../src/components/background.js","../src/classes/items/action.js","../src/components/action.js","../src/classes/items/mask.js","../src/components/mask.js","../src/components/loader.js","../src/classes/limit-manager.js","../src/const.js","../src/components/tab-panel.js","../src/components/video-preview.js","../src/classes/background-service.js","../src/classes/upload-manager.js","../src/call-background.js"],"sourcesContent":["import {Loc} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Uploader as ProgressBar} from 'ui.progressbarjs.uploader';\n\nimport {FileStatus} from 'im.v2.const';\n\nimport type {UploadState} from './items/background';\n\nconst EVENT_NAMESPACE = 'BX.Messenger.v2.CallBackground.ProgressBar';\nconst SIZE_LOWER_THRESHOLD = 1024 * 1024 * 2;\nconst STARTING_PROGRESS = 5;\n\nexport class ProgressBarManager extends EventEmitter\n{\n\tstatic event = {\n\t\tcancel: 'cancel',\n\t\tdestroy: 'destroy'\n\t};\n\n\tcontainer: HTMLElement;\n\tuploadState: UploadState;\n\n\tconstructor(params: {container: HTMLElement, uploadState: UploadState})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(EVENT_NAMESPACE);\n\n\t\tconst {container, uploadState} = params;\n\t\tthis.container = container;\n\t\tthis.uploadState = uploadState;\n\n\t\tthis.progressBar = new ProgressBar({\n\t\t\t...this.#getProgressBarParams(),\n\t\t\tcontainer\n\t\t});\n\n\t\tthis.#adjustProgressBarTitleVisibility();\n\t}\n\n\tstart()\n\t{\n\t\tthis.progressBar.start();\n\t\tthis.update();\n\t}\n\n\tupdate()\n\t{\n\t\tif (this.uploadState.status === FileStatus.error)\n\t\t{\n\t\t\tthis.progressBar.setProgress(0);\n\t\t\tthis.progressBar.setCancelDisable(false);\n\t\t\tthis.progressBar.setIcon(ProgressBar.icon.error);\n\t\t\tthis.progressBar.setProgressTitle(Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_ERROR'));\n\t\t}\n\t\telse if (this.uploadState.status === FileStatus.wait)\n\t\t{\n\t\t\tthis.progressBar.setProgress(this.item.state.progress > STARTING_PROGRESS? this.item.state.progress: STARTING_PROGRESS);\n\t\t\tthis.progressBar.setCancelDisable(true);\n\t\t\tthis.progressBar.setIcon(ProgressBar.icon.cloud);\n\t\t\tthis.progressBar.setProgressTitle(Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_SAVING'));\n\t\t}\n\t\telse if (this.uploadState.progress === 100)\n\t\t{\n\t\t\tthis.progressBar.setProgress(100);\n\t\t}\n\t\telse if (this.uploadState.progress === -1)\n\t\t{\n\t\t\tthis.progressBar.setProgress(10);\n\t\t\tthis.progressBar.setProgressTitle(Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_WAITING'));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.uploadState.progress === 0)\n\t\t\t{\n\t\t\t\tthis.progressBar.setIcon(ProgressBar.icon.cancel);\n\t\t\t}\n\t\t\tconst progress = this.uploadState.progress > STARTING_PROGRESS ? this.uploadState.progress: STARTING_PROGRESS;\n\t\t\tthis.progressBar.setProgress(progress);\n\n\t\t\tif (this.#isSmallSizeFile())\n\t\t\t{\n\t\t\t\tthis.progressBar.setProgressTitle(Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_LOADING'));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst byteSent = (this.uploadState.size / 100) * this.uploadState.progress;\n\t\t\t\tthis.progressBar.setByteSent(byteSent, this.uploadState.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.progressBar.destroy(false);\n\t}\n\n\t#getProgressBarParams()\n\t{\n\t\treturn {\n\t\t\tlabels: {\n\t\t\t\tloading: Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_LOADING'),\n\t\t\t\tcompleted: Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_COMPLETED'),\n\t\t\t\tcanceled: Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_CANCELED'),\n\t\t\t\tcancelTitle: Loc.getMessage('BX_IM_CALL_BG_FILE_UPLOAD_CANCEL_TITLE'),\n\t\t\t\tmegabyte: Loc.getMessage('BX_IM_CALL_BG_FILE_SIZE_MB'),\n\t\t\t},\n\t\t\tcancelCallback: () => {\n\t\t\t\tthis.emit(ProgressBarManager.event.cancel);\n\t\t\t},\n\t\t\tdestroyCallback: () => {\n\t\t\t\tthis.emit(ProgressBarManager.event.destroy);\n\t\t\t}\n\t\t};\n\t}\n\n\t#adjustProgressBarTitleVisibility()\n\t{\n\t\tif (this.#isSmallSizeFile() || this.#isSmallContainer())\n\t\t{\n\t\t\tthis.progressBar.setProgressTitleVisibility(false);\n\t\t}\n\t}\n\n\t#isSmallSizeFile(): boolean\n\t{\n\t\treturn this.uploadState.size < SIZE_LOWER_THRESHOLD;\n\t}\n\n\t#isSmallContainer(): boolean\n\t{\n\t\tconst WIDTH_LOWER_THRESHOLD = 240;\n\t\tconst HEIGHT_LOWER_THRESHOLD = 54;\n\n\t\treturn this.container.offsetHeight <= HEIGHT_LOWER_THRESHOLD && this.container.offsetWidth < WIDTH_LOWER_THRESHOLD;\n\t}\n}","import {Loc} from 'main.core';\n\nimport {FileStatus} from 'im.v2.const';\n\nimport type {BackgroundRestResult} from '../../types/rest';\n\nexport type UploadState = {\n\tprogress: number,\n\tstatus: string,\n\tsize: number\n};\n\nexport class Background\n{\n\tid: string = '';\n\ttitle: string = '';\n\tbackground: string = '';\n\tpreview: string = '';\n\tisVideo: boolean = false;\n\tisSupported: boolean = true;\n\tisCustom: boolean = false;\n\tcanRemove: boolean = false;\n\n\tisLoading: boolean = false;\n\tuploadState: UploadState = null;\n\n\tconstructor(params)\n\t{\n\t\tObject.assign(this, params);\n\t}\n\n\tstatic createDefaultFromRest(restItem: BackgroundRestResult): Background\n\t{\n\t\treturn new Background({\n\t\t\t...restItem,\n\t\t\tisVideo: restItem.id.includes(':video'),\n\t\t\tisCustom: false,\n\t\t\tcanRemove: false,\n\t\t\tisSupported: true\n\t\t});\n\t}\n\n\tstatic createCustomFromRest(restItem: BackgroundRestResult): Background\n\t{\n\t\tlet title = Loc.getMessage('BX_IM_CALL_BG_CUSTOM');\n\t\tif (!restItem.isSupported)\n\t\t{\n\t\t\ttitle = Loc.getMessage('BX_IM_CALL_BG_UNSUPPORTED');\n\t\t}\n\n\t\treturn new Background({\n\t\t\t...restItem,\n\t\t\ttitle,\n\t\t\tisCustom: true,\n\t\t\tcanRemove: true\n\t\t});\n\t}\n\n\tstatic createCustomFromUploaderEvent(uploaderData: {id: string, filePreview: string, file: File}): Background\n\t{\n\t\tconst {id, filePreview, file} = uploaderData;\n\n\t\treturn new Background({\n\t\t\tid: id,\n\t\t\tbackground: filePreview,\n\t\t\tpreview: filePreview,\n\t\t\ttitle: Loc.getMessage('BX_IM_CALL_BG_CUSTOM'),\n\t\t\tisVideo: file.type.startsWith('video'),\n\t\t\tisCustom: true,\n\t\t\tcanRemove: false,\n\t\t\tisSupported: true,\n\t\t\tisLoading: true,\n\t\t\tuploadState: {\n\t\t\t\tprogress: 0,\n\t\t\t\tstatus: FileStatus.upload,\n\t\t\t\tsize: file.size,\n\t\t\t}\n\t\t});\n\t}\n\n\tsetUploadProgress(progress: number)\n\t{\n\t\tthis.uploadState.progress = progress;\n\t}\n\n\tsetUploadError()\n\t{\n\t\tthis.uploadState.status = FileStatus.error;\n\t\tthis.uploadState.progress = 0;\n\t}\n\n\tonUploadComplete(fileResult)\n\t{\n\t\tthis.id = fileResult.id;\n\n\t\tif (this.isVideo)\n\t\t{\n\t\t\tthis.background = fileResult.links.download;\n\t\t}\n\n\t\tthis.isLoading = false;\n\t\tthis.canRemove = true;\n\t}\n}","import {BaseEvent} from 'main.core.events';\nimport {Uploader as ProgressBar} from 'ui.progressbarjs.uploader';\n\nimport {FileStatus} from 'im.v2.const';\n\nimport {ProgressBarManager} from '../classes/progress-bar-manager';\nimport {Background} from '../classes/items/background';\n\nimport '../css/background-item.css';\n\n// @vue/component\nexport const BackgroundComponent = {\n\tprops:\n\t{\n\t\telement: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tisSelected: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\temits: ['click', 'remove', 'cancel'],\n\tdata()\n\t{\n\t\treturn {};\n\t},\n\tcomputed:\n\t{\n\t\tbackground(): Background\n\t\t{\n\t\t\treturn this.element;\n\t\t},\n\t\tcontainerClasses(): string[]\n\t\t{\n\t\t\tconst classes = [];\n\n\t\t\tif (this.isSelected)\n\t\t\t{\n\t\t\t\tclasses.push('--selected');\n\t\t\t}\n\n\t\t\tif (!this.background.isSupported)\n\t\t\t{\n\t\t\t\tclasses.push('--unsupported');\n\t\t\t}\n\n\t\t\tif (this.background.isLoading)\n\t\t\t{\n\t\t\t\tclasses.push('--loading');\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\timageStyle(): {backgroundImage: string}\n\t\t{\n\t\t\tlet backgroundImage = '';\n\t\t\tif (this.background.preview)\n\t\t\t{\n\t\t\t\tbackgroundImage = `url('${this.background.preview}')`;\n\t\t\t}\n\n\t\t\treturn {backgroundImage};\n\t\t}\n\t},\n\twatch:\n\t{\n\t\t'background.uploadState.status'()\n\t\t{\n\t\t\tthis.getProgressBarManager().update();\n\t\t},\n\t\t'background.uploadState.progress'()\n\t\t{\n\t\t\tthis.getProgressBarManager().update();\n\t\t}\n\t},\n\tmounted()\n\t{\n\t\tthis.initProgressBar();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.removeProgressBar();\n\t},\n\tmethods:\n\t{\n\t\tinitProgressBar()\n\t\t{\n\t\t\tif (!this.background.uploadState || this.background.uploadState.progress === 100)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.progressBarManager = new ProgressBarManager({\n\t\t\t\tcontainer: this.$refs['container'],\n\t\t\t\tuploadState: this.background.uploadState\n\t\t\t});\n\n\t\t\tthis.progressBarManager.subscribe(ProgressBarManager.event.cancel, () => {\n\t\t\t\tthis.$emit('cancel', this.background);\n\t\t\t});\n\t\t\tthis.progressBarManager.subscribe(ProgressBarManager.event.destroy, () => {\n\t\t\t\tif (this.progressBar)\n\t\t\t\t{\n\t\t\t\t\tthis.progressBar = null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.progressBarManager.start();\n\t\t},\n\t\tremoveProgressBar()\n\t\t{\n\t\t\tif (!this.progressBarManager)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.progressBarManager.destroy();\n\t\t},\n\t\tgetProgressBarManager(): ProgressBarManager\n\t\t{\n\t\t\treturn this.progressBarManager;\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t\t<div @click=\"$emit('click')\" :class=\"containerClasses\" class=\"bx-im-call-background__item\" ref=\"container\">\n\t\t\t<div :style=\"imageStyle\" class=\"bx-im-call-background__item_image\"></div>\n\t\t\t<div v-if=\"background.isSupported && background.isVideo\" class=\"bx-im-call-background__item_video\"></div>\n\t\t\t<div v-if=\"!background.isLoading\" class=\"bx-im-call-background__item_title_container\">\n\t\t\t\t<span class=\"bx-im-call-background__item_title\">{{background.title}}</span>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"background.canRemove\"\n\t\t\t\t\t:title=\"loc('BX_IM_CALL_BG_REMOVE')\"\n\t\t\t\t\t@click.stop=\"$emit('remove')\"\n\t\t\t\t\tclass=\"bx-im-call-background__item_remove\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {Loc} from 'main.core';\n\nexport class Action\n{\n\tstatic type = {\n\t\tnone: 'none',\n\t\tupload: 'upload',\n\t\tblur: 'blur',\n\t\tgaussianBlur: 'gaussianBlur'\n\t};\n\n\tid: string;\n\ttitle: string;\n\tbackground: string;\n\n\tconstructor(type: String)\n\t{\n\t\tlet id = Action.type.none;\n\t\tlet background = Action.type.none;\n\t\tlet title = Loc.getMessage('BX_IM_CALL_BG_ACTION_NONE');\n\n\t\tif (type === Action.type.upload)\n\t\t{\n\t\t\tid = type;\n\t\t\tbackground = type;\n\t\t\ttitle = Loc.getMessage('BX_IM_CALL_BG_ACTION_UPLOAD');\n\t\t}\n\t\telse if (type === Action.type.gaussianBlur)\n\t\t{\n\t\t\tid = type;\n\t\t\tbackground = type;\n\t\t\ttitle = Loc.getMessage('BX_IM_CALL_BG_ACTION_BLUR');\n\t\t}\n\t\telse if (type === Action.type.blur)\n\t\t{\n\t\t\tid = type;\n\t\t\tbackground = type;\n\t\t\ttitle = Loc.getMessage('BX_IM_CALL_BG_ACTION_BLUR_MAX');\n\t\t}\n\n\t\tthis.id = id;\n\t\tthis.background = background;\n\t\tthis.title = title;\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.id === Action.type.none;\n\t}\n\n\tisBlur(): boolean\n\t{\n\t\treturn this.id === Action.type.gaussianBlur || this.id === Action.type.blur;\n\t}\n\n\tisUpload(): boolean\n\t{\n\t\treturn this.id === Action.type.upload;\n\t}\n}","import {Action} from '../classes/items/action';\n\n// @vue/component\nexport const ActionComponent = {\n\tprops:\n\t{\n\t\telement: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tisSelected: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata()\n\t{\n\t\treturn {};\n\t},\n\tcomputed:\n\t{\n\t\taction(): Action\n\t\t{\n\t\t\treturn this.element;\n\t\t},\n\t\tcontainerClasses(): string[]\n\t\t{\n\t\t\tconst classes = [`--${this.action.id}`];\n\t\t\tif (this.isSelected)\n\t\t\t{\n\t\t\t\tclasses.push('--selected');\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t\t<div :class=\"containerClasses\" class=\"bx-im-call-background__item --action\">\n\t\t\t<div class=\"bx-im-call-background__action_icon\"></div>\n\t\t\t<div class=\"bx-im-call-background__action_title\">\n\t\t\t\t{{ action.title }}\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {Loc} from 'main.core';\n\nimport type {MaskRestResult} from '../../types/rest';\n\nexport class Mask\n{\n\tid: string = '';\n\tactive: boolean = true;\n\tmask: string = '';\n\tbackground: string = '';\n\tpreview: string = '';\n\ttitle: string = '';\n\n\tisLoading: boolean = false;\n\n\tconstructor(params)\n\t{\n\t\tObject.assign(this, params);\n\t}\n\n\tisEmpty()\n\t{\n\t\treturn this.id === '';\n\t}\n\n\tstatic createEmpty()\n\t{\n\t\treturn new Mask({\n\t\t\tactive: true,\n\t\t\tid: '',\n\t\t\tmask: '',\n\t\t\tpreview: '',\n\t\t\tbackground: '',\n\t\t\ttitle: Loc.getMessage('BX_IM_CALL_BG_NO_MASK_TITLE')\n\t\t});\n\t}\n\n\tstatic createFromRest(rawMask: MaskRestResult)\n\t{\n\t\tconst {active, id, mask, background, preview, title} = rawMask;\n\n\t\treturn new Mask({\n\t\t\tactive,\n\t\t\tid,\n\t\t\tmask,\n\t\t\tpreview,\n\t\t\tbackground,\n\t\t\ttitle\n\t\t});\n\t}\n}","import '../css/mask.css';\n\nimport {Mask} from '../classes/items/mask';\n\n// @vue/component\nexport const MaskComponent = {\n\tprops:\n\t{\n\t\telement: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tisSelected: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata()\n\t{\n\t\treturn {};\n\t},\n\tcomputed:\n\t{\n\t\tmask(): Mask\n\t\t{\n\t\t\treturn this.element;\n\t\t},\n\t\tcontainerClasses(): string[]\n\t\t{\n\t\t\tconst classes = [`--${this.mask.id}`];\n\t\t\tif (this.isSelected)\n\t\t\t{\n\t\t\t\tclasses.push('--selected');\n\t\t\t}\n\n\t\t\tif (!this.mask.active)\n\t\t\t{\n\t\t\t\tclasses.push('--inactive');\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\timageStyle(): {backgroundImage: string}\n\t\t{\n\t\t\tlet backgroundImage = '';\n\t\t\tif (this.mask.preview)\n\t\t\t{\n\t\t\t\tbackgroundImage = `url('${this.mask.preview}')`;\n\t\t\t}\n\n\t\t\treturn {backgroundImage};\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :class=\"containerClasses\" class=\"bx-im-call-background__item --mask\">\n\t\t\t<div v-if=\"!mask.active\" class=\"bx-im-call-background__mask_fade\"></div>\n\t\t\t<div class=\"bx-im-call-background__mask_background\"></div>\n\t\t\t<div :style=\"imageStyle\" class=\"bx-im-call-background__item_image\"></div>\n\t\t\t<div v-if=\"mask.isLoading\" class=\"bx-im-call-background__mask_loading-container\">\n\t\t\t\t<div class=\"bx-im-call-background__mask_loading-icon\"></div>\n\t\t\t\t<div class=\"bx-im-call-background__mask_loading-text\">{{ loc('BX_IM_CALL_BG_MASK_LOADING') }}</div>\n\t\t\t</div>\n\t\t\t<div v-else-if=\"!mask.active\" class=\"bx-im-call-background__mask_soon-container\">\n\t\t\t\t<div class=\"bx-im-call-background__mask_soon-text\">{{ loc('BX_IM_CALL_BG_MASK_COMING_SOON') }}</div>\n\t\t\t</div>\n\t\t\t<div v-else class=\"bx-im-call-background__mask_title\">{{ mask.title }}</div>\n\t\t</div>\n\t`\n};","// @vue/component\nexport const Loader = {\n\tname: 'CallBackgroundLoader',\n\tdata()\n\t{\n\t\treturn {};\n\t},\n\ttemplate:\n\t`\n\t\t<div class=\"bx-im-call-background__loader\">\n\t\t\t<svg class=\"bx-desktop-loader-circular\" viewBox=\"25 25 50 50\">\n\t\t\t\t<circle class=\"bx-desktop-loader-path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-miterlimit=\"10\"/>\n\t\t\t</svg>\n\t\t</div>\n\t`\n};","import 'ui.info-helper';\n\nimport {Utils} from 'im.v2.lib.utils';\nimport {DesktopFeature} from 'im.v2.const';\n\nimport {Action} from './items/action';\n\nimport type {LimitRestResult} from '../types/rest';\n\nexport class LimitManager\n{\n\tstatic limitCode = {\n\t\tblur: 'call_blur_background',\n\t\timage: 'call_background'\n\t};\n\n\tlimits: {[limitId: string]: LimitRestResult} = {};\n\n\tconstructor(params: {limits: LimitRestResult[], infoHelperUrlTemplate: string})\n\t{\n\t\tconst {limits, infoHelperUrlTemplate} = params;\n\t\tthis.#initLimits(limits);\n\t\tthis.#initInfoHelper(infoHelperUrlTemplate);\n\t}\n\n\tisLimitedAction(action: Action): boolean\n\t{\n\t\tif (action.isEmpty() || action.isUpload())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\treturn action.isBlur() && this.#limitIsActive(LimitManager.limitCode.blur);\n\t}\n\n\tisLimitedBackground(): boolean\n\t{\n\t\treturn this.#limitIsActive(LimitManager.limitCode.image);\n\t}\n\n\tshowLimitSlider(limitCode: string)\n\t{\n\t\twindow.BX.UI.InfoHelper.show(this.limits[limitCode].articleCode);\n\t}\n\n\t// region Mask feature\n\tstatic isMaskFeatureAvailable(): boolean\n\t{\n\t\tif (!Utils.platform.isBitrixDesktop())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn Utils.platform.isDesktopFeatureEnabled(DesktopFeature.mask.id);\n\t}\n\n\tstatic isMaskFeatureSupportedByDesktopVersion(): boolean\n\t{\n\t\tif (!Utils.platform.isBitrixDesktop())\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn Utils.platform.getDesktopVersion() >= DesktopFeature.mask.availableFromVersion;\n\t}\n\t// endregion Mask feature\n\n\tstatic showHelpArticle(articleCode: string)\n\t{\n\t\twindow.BX.Helper?.show(`redirect=detail&code=${articleCode}`);\n\t}\n\n\t#initLimits(limits: LimitRestResult[])\n\t{\n\t\tlimits.forEach((limit: LimitRestResult) => {\n\t\t\tthis.limits[limit.id] = limit;\n\t\t});\n\t}\n\n\t#initInfoHelper(infoHelperUrlTemplate: string)\n\t{\n\t\tif (window.BX.UI.InfoHelper.isInited())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\twindow.BX.UI.InfoHelper.init({\n\t\t\tframeUrlTemplate: infoHelperUrlTemplate\n\t\t});\n\t}\n\n\t#limitIsActive(limitCode: string): boolean\n\t{\n\t\tconst limitIsActive = !!this.limits[limitCode]?.active;\n\t\tconst articleIsActive = !!this.limits[limitCode]?.articleCode;\n\n\t\treturn limitIsActive && articleIsActive;\n\t}\n}","export const TabId = {\n\tmask: 'mask',\n\tbackground: 'background'\n};\n\nexport const MASK_HELP_ARTICLE_CODE = 12398124;","import {LimitManager} from '../classes/limit-manager';\nimport {TabId} from '../const';\n\nimport '../css/tab-panel.css';\n\nimport type {Tab} from '../types/tab';\n\n// @vue/component\nexport const TabPanel = {\n\tprops:\n\t{\n\t\tselectedTab: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\temits: ['tabChange'],\n\tdata()\n\t{\n\t\treturn {};\n\t},\n\tcomputed:\n\t{\n\t\ttabs(): Tab[]\n\t\t{\n\t\t\tconst tabs = [];\n\t\t\tif (LimitManager.isMaskFeatureAvailable())\n\t\t\t{\n\t\t\t\ttabs.push({\n\t\t\t\t\tid: TabId.mask,\n\t\t\t\t\tloc: 'BX_IM_CALL_BG_TAB_MASK',\n\t\t\t\t\tisNew: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttabs.push({\n\t\t\t\tid: TabId.background,\n\t\t\t\tloc: 'BX_IM_CALL_BG_TAB_BG',\n\t\t\t\tisNew: false\n\t\t\t});\n\n\t\t\treturn tabs;\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t\t<div class=\"bx-im-call-background__tab-panel\">\n\t\t\t<div\n\t\t\t\tv-for=\"tab in tabs\"\n\t\t\t\t:key=\"tab.id\"\n\t\t\t\t@click=\"$emit('tabChange', tab.id)\"\n\t\t\t\t:class=\"{'--active': selectedTab === tab.id, '--new': tab.isNew}\"\n\t\t\t\tclass=\"bx-im-call-background__tab\"\n\t\t\t>\n\t\t\t\t<div v-if=\"tab.isNew\" class=\"bx-im-call-background__tab_new\">{{ loc('BX_IM_CALL_BG_TAB_NEW') }}</div>\n\t\t\t\t<div class=\"bx-im-call-background__tab_text\">{{ loc(tab.loc) }}</div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {Logger} from 'im.v2.lib.logger';\n\nconst VIDEO_CONSTRAINT_WIDTH = 1280;\nconst VIDEO_CONSTRAINT_HEIGHT = 720;\n\n// @vue/component\nexport const VideoPreview = {\n\tdata()\n\t{\n\t\treturn {\n\t\t\tnoVideo: false\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tvideoClasses()\n\t\t{\n\t\t\treturn {'--flipped': BX.Call.Hardware.enableMirroring};\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.initHardware().then(() => {\n\t\t\tthis.getDefaultDevices();\n\t\t}).catch(error => {\n\t\t\tconsole.error('VideoPreview: error initing hardware', error);\n\t\t});\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.videoStream.getTracks().forEach(tr => tr.stop());\n\t\tthis.videoStream = null;\n\t},\n\tmethods:\n\t{\n\t\tgetDefaultDevices()\n\t\t{\n\t\t\tconst constraints = {audio: false, video: true};\n\t\t\tconstraints.video = {};\n\t\t\tconstraints.video.width = {ideal: VIDEO_CONSTRAINT_WIDTH};\n\t\t\tconstraints.video.height = {ideal: VIDEO_CONSTRAINT_HEIGHT};\n\n\t\t\tif (BX.Call.Hardware.defaultCamera)\n\t\t\t{\n\t\t\t\tthis.selectedCamera = BX.Call.Hardware.defaultCamera;\n\t\t\t\tconstraints.video = {...constraints.video, ...{deviceId: {exact: this.selectedCamera}}};\n\t\t\t}\n\t\t\telse if (Object.keys(BX.Call.Hardware.cameraList).length === 0)\n\t\t\t{\n\t\t\t\tconsole.error('VideoPreview: no camera');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnavigator.mediaDevices.getUserMedia(constraints).then((stream: MediaStream) => {\n\t\t\t\tthis.videoStream = stream;\n\t\t\t\tif (stream.getVideoTracks().length === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.noVideo = true;\n\t\t\t\t\tconsole.error('VideoPreview: no video tracks');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this.selectedCamera)\n\t\t\t\t{\n\t\t\t\t\tthis.selectedCamera = stream.getVideoTracks()[0].getSettings().deviceId;\n\t\t\t\t}\n\t\t\t\tthis.playLocalVideo();\n\t\t\t});\n\t\t},\n\t\tplayLocalVideo()\n\t\t{\n\t\t\tLogger.warn('VideoPreview: playing local video');\n\t\t\tthis.$refs['video'].volume = 0;\n\t\t\tthis.$refs['video'].srcObject = this.videoStream;\n\t\t\tthis.$refs['video'].play();\n\t\t},\n\t\tinitHardware(): Promise\n\t\t{\n\t\t\treturn BX.Call.Hardware.init();\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-im-call-background__video\">\n\t\t\t<div v-if=\"noVideo\" class=\"bx-im-call-background__no-cam_container\">\n\t\t\t\t<div class=\"bx-im-call-background__no-cam_icon\"></div>\n\t\t\t\t<div class=\"bx-im-call-background__no-cam_title\">{{ loc('BX_IM_CALL_BG_NO_CAM') }}</div>\n\t\t\t</div>\n\t\t\t<video v-else :class=\"videoClasses\" ref=\"video\" muted autoplay playsinline></video>\n\t\t</div>\n\t`\n};","import {rest as RestClient} from 'rest.client';\n\nimport {Logger} from 'im.v2.lib.logger';\nimport {RestMethod} from 'im.v2.const';\n\nimport type {BackgroundListRestResult} from '../types/rest';\n\ntype ElementsListRestResult = {\n\t[RestMethod.imCallBackgroundGet]: RestResult,\n\t[RestMethod.imCallMaskGet]: RestResult\n};\n\nexport class BackgroundService\n{\n\tgetElementsList(): Promise<BackgroundListRestResult>\n\t{\n\t\tconst query = {\n\t\t\t[RestMethod.imCallBackgroundGet]: [RestMethod.imCallBackgroundGet],\n\t\t\t[RestMethod.imCallMaskGet]: [RestMethod.imCallMaskGet]\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tRestClient.callBatch(query, (response: ElementsListRestResult) => {\n\t\t\t\tLogger.warn('BackgroundService: getElementsList result', response);\n\t\t\t\tconst backgroundResult: RestResult = response[RestMethod.imCallBackgroundGet];\n\t\t\t\tconst maskResult: RestResult = response[RestMethod.imCallMaskGet];\n\t\t\t\tif (backgroundResult.error())\n\t\t\t\t{\n\t\t\t\t\tconsole.error('BackgroundService: error getting background list', backgroundResult.error());\n\t\t\t\t\treturn reject('Error getting background list');\n\t\t\t\t}\n\t\t\t\tif (maskResult.error())\n\t\t\t\t{\n\t\t\t\t\tconsole.error('BackgroundService: error getting mask list', maskResult.error());\n\t\t\t\t\treturn reject('Error getting mask list');\n\t\t\t\t}\n\n\t\t\t\treturn resolve({\n\t\t\t\t\tbackgroundResult: backgroundResult.data(),\n\t\t\t\t\tmaskResult: maskResult.data()\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tcommitBackground(fileId: string): Promise\n\t{\n\t\treturn RestClient.callMethod(RestMethod.imCallBackgroundCommit, {\n\t\t\tfileId\n\t\t});\n\t}\n\n\tdeleteFile(fileId: string): Promise\n\t{\n\t\treturn RestClient.callMethod(RestMethod.imCallBackgroundDelete, {\n\t\t\tfileId\n\t\t});\n\t}\n}","import {Loc} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\n\nimport {Logger} from 'im.v2.lib.logger';\nimport {Uploader} from 'im.lib.uploader';\n\nimport 'ui.notification';\n\nconst FILE_MAX_SIZE = 100 * 1024 * 1024;\nconst FILE_MAX_SIZE_PHRASE_NUMBER = 100;\nconst UPLOAD_CHUNK_SIZE = 1024 * 1024;\nconst NOTIFICATION_HIDE_DELAY = 5000;\nconst CUSTOM_BG_TASK_PREFIX = 'custom';\nconst EVENT_NAMESPACE = 'BX.Messenger.v2.CallBackground.UploadManager';\n\nexport class UploadManager extends EventEmitter\n{\n\tstatic allowedFileTypes = [\n\t\t'image/png',\n\t\t'image/jpg',\n\t\t'image/jpeg',\n\t\t'video/avi',\n\t\t'video/mp4',\n\t\t'video/quicktime'\n\t];\n\n\tstatic event = {\n\t\tuploadStart: 'uploadStart',\n\t\tuploadProgress: 'uploadProgress',\n\t\tuploadComplete: 'uploadComplete',\n\t\tuploadError: 'uploadError'\n\t};\n\n\tuploader: Uploader;\n\tdiskFolderId: number;\n\n\tconstructor(params: {inputNode: HTMLElement})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(EVENT_NAMESPACE);\n\n\t\tconst {inputNode} = params;\n\t\tthis.uploader = new Uploader({\n\t\t\tinputNode,\n\t\t\tgeneratePreview: true,\n\t\t\tfileMaxSize: FILE_MAX_SIZE\n\t\t});\n\n\t\tthis.#bindEvents();\n\t}\n\n\tsetDiskFolderId(diskFolderId: number)\n\t{\n\t\tthis.diskFolderId = diskFolderId;\n\t}\n\n\tcancelUpload(fileId: string)\n\t{\n\t\tthis.uploader.deleteTask(fileId);\n\t}\n\n\t// region events\n\t#bindEvents()\n\t{\n\t\tthis.uploader.subscribe('onFileMaxSizeExceeded', this.#onFileMaxSizeExceeded.bind(this));\n\t\tthis.uploader.subscribe('onSelectFile', this.#onSelectFile.bind(this));\n\t\tthis.uploader.subscribe('onStartUpload', this.#onStartUpload.bind(this));\n\t\tthis.uploader.subscribe('onProgress', this.#onProgress.bind(this));\n\t\tthis.uploader.subscribe('onComplete', this.#onComplete.bind(this));\n\t\tthis.uploader.subscribe('onUploadFileError', this.#onUploadError.bind(this));\n\t\tthis.uploader.subscribe('onCreateFileError', this.#onUploadError.bind(this));\n\t}\n\n\t#onFileMaxSizeExceeded(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onFileMaxSizeExceeded', event);\n\t\tconst eventData = event.getData();\n\t\tconst {file} = eventData;\n\n\t\tconst phrase = Loc.getMessage('BX_IM_CALL_BG_FILE_SIZE_EXCEEDED')\n\t\t\t.replace('#LIMIT#', FILE_MAX_SIZE_PHRASE_NUMBER)\n\t\t\t.replace('#FILE_NAME#', file.name);\n\n\t\tthis.#showNotification(phrase);\n\t}\n\n\t#onSelectFile(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onSelectFile', event);\n\t\tconst {file, previewData} = event.getData();\n\n\t\tif (!this.#isAllowedType(file.type) || !previewData)\n\t\t{\n\t\t\tconst phrase = Loc.getMessage('BX_IM_CALL_BG_UNSUPPORTED_FILE')\n\t\t\t\t.replace('#FILE_NAME#', file.name);\n\t\t\tthis.#showNotification(phrase);\n\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.#addUploadTask(file, previewData);\n\t}\n\n\t#onStartUpload(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onStartUpload', event);\n\t\tconst {previewData, id, file} = event.getData();\n\n\t\tconst filePreview = URL.createObjectURL(previewData);\n\t\tthis.emit(UploadManager.event.uploadStart, {\n\t\t\tid,\n\t\t\tfilePreview,\n\t\t\tfile\n\t\t});\n\t}\n\n\t#onProgress(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onProgress', event);\n\t\tconst {id, progress} = event.getData();\n\t\tthis.emit(UploadManager.event.uploadProgress, {\n\t\t\tid,\n\t\t\tprogress\n\t\t});\n\t}\n\n\t#onComplete(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onComplete', event);\n\t\tconst {id, result} = event.getData();\n\t\tthis.emit(UploadManager.event.uploadComplete, {\n\t\t\tid,\n\t\t\tfileResult: result.data.file\n\t\t});\n\t}\n\n\t#onUploadError(event: BaseEvent)\n\t{\n\t\tLogger.warn('UploadManager: onUploadError', event);\n\t\tconst eventData = event.getData();\n\t\tthis.emit(UploadManager.event.uploadError, {\n\t\t\tid: eventData.id\n\t\t});\n\t}\n\t// endregion events\n\n\t#addUploadTask(file: File, previewData)\n\t{\n\t\tthis.uploader.addTask({\n\t\t\ttaskId: `${CUSTOM_BG_TASK_PREFIX}:${Date.now()}`,\n\t\t\tchunkSize: UPLOAD_CHUNK_SIZE,\n\t\t\tfileData: file,\n\t\t\tfileName: file.name,\n\t\t\tdiskFolderId: this.diskFolderId,\n\t\t\tgenerateUniqueName: true,\n\t\t\tpreviewBlob: previewData,\n\t\t});\n\t}\n\n\t#isAllowedType(fileType: string): boolean\n\t{\n\t\treturn UploadManager.allowedFileTypes.includes(fileType);\n\t}\n\n\t#showNotification(text: string)\n\t{\n\t\tBX.UI.Notification.Center.notify({\n\t\t\tcontent: text,\n\t\t\tautoHideDelay: NOTIFICATION_HIDE_DELAY\n\t\t});\n\t}\n}","import {BaseEvent} from 'main.core.events';\n\nimport 'ui.buttons';\nimport 'ui.fonts.opensans';\n\nimport {Utils} from 'im.v2.lib.utils';\nimport {Logger} from 'im.v2.lib.logger';\n\nimport {BackgroundComponent} from './components/background';\nimport {ActionComponent} from './components/action';\nimport {MaskComponent} from './components/mask';\nimport {Loader} from './components/loader';\nimport {TabPanel} from './components/tab-panel';\nimport {VideoPreview} from './components/video-preview';\n\nimport {Action} from './classes/items/action';\nimport {Background} from './classes/items/background';\nimport {Mask} from './classes/items/mask';\nimport {BackgroundService} from './classes/background-service';\nimport {UploadManager} from './classes/upload-manager';\nimport {LimitManager} from './classes/limit-manager';\nimport {TabId, MASK_HELP_ARTICLE_CODE} from './const';\n\nimport './css/call-background.css';\nimport './css/call-background-dark.css';\n\nimport type {ElementListRestResult, BackgroundListRestResult, BackgroundRestResult, MaskListRestResult, MaskRestResult} from './types/rest';\n\n// @vue/component\nexport const CallBackground = {\n\tname: 'CallBackground',\n\tcomponents: {BackgroundComponent, ActionComponent, MaskComponent, Loader, TabPanel, VideoPreview},\n\tprops: {\n\t\ttab: {\n\t\t\ttype: String,\n\t\t\tdefault: TabId.background,\n\t\t}\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tselectedTab: '',\n\t\t\tselectedBackgroundId: '',\n\t\t\tselectedMaskId: '',\n\t\t\tloadingItems: true,\n\t\t\tactions: [],\n\t\t\tdefaultBackgrounds: [],\n\t\t\tcustomBackgrounds: [],\n\t\t\tmasks: [],\n\t\t\tlistIsScrolled: false\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tTabId: () => TabId,\n\t\tbackgrounds(): Background[]\n\t\t{\n\t\t\treturn [...this.customBackgrounds, ...this.defaultBackgrounds];\n\t\t},\n\t\tcontainerClasses(): string[]\n\t\t{\n\t\t\tconst classes = [];\n\n\t\t\tif (this.isDesktop)\n\t\t\t{\n\t\t\t\tclasses.push('--desktop');\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tuploadTypes(): string\n\t\t{\n\t\t\treturn UploadManager.allowedFileTypes.join(', ');\n\t\t},\n\t\tdescriptionText(): string\n\t\t{\n\t\t\tconst replaces = {\n\t\t\t\t'#HIGHLIGHT_START#': '<span class=\"bx-im-call-background__description_highlight\">',\n\t\t\t\t'#HIGHLIGHT_END#': '</span>',\n\t\t\t\t'#BR#': '</br></br>'\n\t\t\t};\n\t\t\tif (this.selectedTab === TabId.mask)\n\t\t\t{\n\t\t\t\treturn this.loc('BX_IM_CALL_BG_DESCRIPTION_MASK_2', replaces);\n\t\t\t}\n\n\t\t\treturn this.loc('BX_IM_CALL_BG_DESCRIPTION_BG', replaces);\n\t\t},\n\t\tisDesktop()\n\t\t{\n\t\t\treturn Utils.platform.isBitrixDesktop();\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.initSelectedTab();\n\n\t\tthis.getBackgroundService().getElementsList().then((result: ElementListRestResult) => {\n\t\t\tconst {backgroundResult, maskResult} = result;\n\n\t\t\tthis.initLimitManager(backgroundResult);\n\t\t\tthis.initBackgroundList(backgroundResult);\n\n\t\t\tthis.uploadManager.setDiskFolderId(backgroundResult.upload.folderId);\n\t\t\tconst uploadActionIsAvailable = !!backgroundResult.upload.folderId;\n\t\t\tthis.initActions(uploadActionIsAvailable);\n\n\t\t\tthis.initMasks(maskResult);\n\t\t\tthis.initMaskLoadEventHandler();\n\n\t\t\tthis.initPreviouslySelectedItem();\n\t\t\tthis.loadingItems = false;\n\n\t\t\tthis.hideLoader();\n\t\t}).catch(() => {\n\t\t\tthis.loadingItems = false;\n\t\t});\n\t},\n\tmounted()\n\t{\n\t\tthis.initUploader();\n\t},\n\tmethods:\n\t{\n\t\t// region init\n\t\tinitSelectedTab()\n\t\t{\n\t\t\tif (this.tab === TabId.mask && !LimitManager.isMaskFeatureAvailable())\n\t\t\t{\n\t\t\t\tthis.selectedTab = TabId.background;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.tab === TabId.mask && !LimitManager.isMaskFeatureSupportedByDesktopVersion())\n\t\t\t{\n\t\t\t\tthis.selectedTab = TabId.background;\n\t\t\t\tLimitManager.showHelpArticle(MASK_HELP_ARTICLE_CODE);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectedTab = this.tab;\n\t\t},\n\t\tinitPreviouslySelectedItem()\n\t\t{\n\t\t\tthis.initPreviouslySelectedMask();\n\t\t\tthis.initPreviouslySelectedBackground();\n\t\t},\n\t\tinitPreviouslySelectedMask()\n\t\t{\n\t\t\tif (this.isDesktop)\n\t\t\t{\n\t\t\t\tconst {id: maskId} = window.BX.desktop.getMask();\n\t\t\t\tlet foundMask = this.masks.find(mask => mask.id === maskId);\n\t\t\t\tif (!foundMask)\n\t\t\t\t{\n\t\t\t\t\tfoundMask = Mask.createEmpty();\n\t\t\t\t}\n\t\t\t\tthis.previouslySelectedMask = foundMask;\n\t\t\t\tLogger.warn('CallBackground: previously selected mask', this.previouslySelectedMask);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.previouslySelectedMask = Mask.createEmpty();\n\t\t\t}\n\n\t\t\tthis.selectedMaskId = this.previouslySelectedMask.id;\n\t\t},\n\t\tinitPreviouslySelectedBackground()\n\t\t{\n\t\t\tif (this.isDesktop)\n\t\t\t{\n\t\t\t\tconst {id: backgroundId} = window.BX.desktop.getBackgroundImage();\n\t\t\t\tconst itemsToSearch = [...this.actions, ...this.backgrounds];\n\t\t\t\tlet foundBackground = itemsToSearch.find(item => item.id === backgroundId);\n\t\t\t\tif (!foundBackground)\n\t\t\t\t{\n\t\t\t\t\tfoundBackground = new Action(Action.type.none);\n\t\t\t\t}\n\t\t\t\tthis.previouslySelectedBackground = foundBackground;\n\t\t\t\tLogger.warn('CallBackground: previously selected background', this.previouslySelectedBackground);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.previouslySelectedBackground = new Action(Action.type.none);\n\t\t\t}\n\n\t\t\tthis.selectedBackgroundId = this.previouslySelectedBackground.id;\n\t\t},\n\t\tinitActions(uploadActionIsAvailable: boolean)\n\t\t{\n\t\t\tthis.actions = [\n\t\t\t\tnew Action(Action.type.none),\n\t\t\t\t...uploadActionIsAvailable ? [new Action(Action.type.upload)]: [],\n\t\t\t\tnew Action(Action.type.gaussianBlur),\n\t\t\t\tnew Action(Action.type.blur),\n\t\t\t];\n\t\t},\n\t\tinitBackgroundList(restResult: BackgroundListRestResult)\n\t\t{\n\t\t\tthis.defaultBackgrounds = [];\n\t\t\trestResult.backgrounds.default.forEach((background: BackgroundRestResult) => {\n\t\t\t\tthis.defaultBackgrounds.push(Background.createDefaultFromRest(background));\n\t\t\t});\n\n\t\t\tthis.customBackgrounds = [];\n\t\t\trestResult.backgrounds.custom.forEach((background: BackgroundRestResult) => {\n\t\t\t\tthis.customBackgrounds.push(Background.createCustomFromRest(background));\n\t\t\t});\n\t\t},\n\t\tinitLimitManager(result: BackgroundListRestResult)\n\t\t{\n\t\t\tconst {limits, infoHelperParams} = result;\n\t\t\tthis.limitManager = new LimitManager({\n\t\t\t\tlimits,\n\t\t\t\tinfoHelperUrlTemplate: infoHelperParams.frameUrlTemplate\n\t\t\t});\n\t\t},\n\t\tinitUploader()\n\t\t{\n\t\t\tthis.uploadManager = new UploadManager({\n\t\t\t\tinputNode: this.$refs['uploadInput']\n\t\t\t});\n\n\t\t\tthis.uploadManager.subscribe(UploadManager.event.uploadStart, (event: BaseEvent) => {\n\t\t\t\tconst backgroundsInstance = Background.createCustomFromUploaderEvent(event.getData());\n\t\t\t\tthis.customBackgrounds.unshift(backgroundsInstance);\n\t\t\t});\n\t\t\tthis.uploadManager.subscribe(UploadManager.event.uploadProgress, (event: BaseEvent) => {\n\t\t\t\tconst {id, progress} = event.getData();\n\t\t\t\tconst background = this.findCustomBackgroundById(id);\n\t\t\t\tif (!background)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbackground.setUploadProgress(progress);\n\t\t\t});\n\t\t\tthis.uploadManager.subscribe(UploadManager.event.uploadComplete, (event: BaseEvent) => {\n\t\t\t\tconst {id, fileResult} = event.getData();\n\t\t\t\tconst background = this.findCustomBackgroundById(id);\n\t\t\t\tif (!background)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbackground.onUploadComplete(fileResult);\n\n\t\t\t\tthis.onBackgroundClick(background);\n\n\t\t\t\tthis.getBackgroundService().commitBackground(background.id);\n\t\t\t});\n\t\t\tthis.uploadManager.subscribe(UploadManager.event.uploadError, (event: BaseEvent) => {\n\t\t\t\tconst {id} = event.getData();\n\t\t\t\tconst background = this.findCustomBackgroundById(id);\n\t\t\t\tif (!background)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tbackground.setUploadError();\n\t\t\t});\n\t\t},\n\t\tinitMasks(result: MaskListRestResult)\n\t\t{\n\t\t\tconst {masks} = result;\n\t\t\tthis.masks.push(Mask.createEmpty());\n\t\t\tmasks.forEach((mask: MaskRestResult) => {\n\t\t\t\tthis.masks.push(Mask.createFromRest(mask));\n\t\t\t});\n\t\t},\n\t\tinitMaskLoadEventHandler()\n\t\t{\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.maskLoadTimeouts = {};\n\t\t\twindow.BX.desktop.setCallMaskLoadHandlers(this.onMaskLoad.bind(this));\n\t\t},\n\t\t// endregion init\n\t\t// region component events\n\t\tonActionClick(action: Action)\n\t\t{\n\t\t\tif (this.getLimitManager().isLimitedAction(action))\n\t\t\t{\n\t\t\t\tthis.getLimitManager().showLimitSlider(LimitManager.limitCode.blur);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (action.isUpload())\n\t\t\t{\n\t\t\t\tthis.$refs['uploadInput'].click();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectedBackgroundId = action.id;\n\n\t\t\tif (action.isEmpty())\n\t\t\t{\n\t\t\t\tthis.removeCallBackground();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectedMaskId = '';\n\t\t\tthis.setCallBlur(action);\n\t\t},\n\t\tonBackgroundClick(background: Background)\n\t\t{\n\t\t\tif (this.getLimitManager().isLimitedBackground())\n\t\t\t{\n\t\t\t\tthis.getLimitManager().showLimitSlider(LimitManager.limitCode.image);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!background.isSupported || background.isLoading)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectedBackgroundId = background.id;\n\t\t\tthis.selectedMaskId = '';\n\t\t\tthis.setCallBackground(background);\n\t\t},\n\t\tonBackgroundRemove(background: Background)\n\t\t{\n\t\t\tif (background.id === this.selectedBackgroundId)\n\t\t\t{\n\t\t\t\tthis.selectedBackgroundId = Action.type.none;\n\t\t\t\tthis.removeCallBackground();\n\t\t\t}\n\n\t\t\tif (background.isLoading)\n\t\t\t{\n\t\t\t\tthis.uploadManager.cancelUpload(background.id);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getBackgroundService().deleteFile(background.id);\n\t\t\t}\n\n\t\t\tthis.customBackgrounds = this.customBackgrounds.filter(element => element.id !== background.id);\n\t\t},\n\t\tonMaskClick(mask: Mask)\n\t\t{\n\t\t\tif (!mask.active)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (mask.isEmpty())\n\t\t\t{\n\t\t\t\tthis.selectedMaskId = mask.id;\n\t\t\t\tthis.removeCallMask();\n\t\t\t}\n\n\t\t\tthis.setCallMask(mask);\n\t\t},\n\t\tonSaveButtonClick()\n\t\t{\n\t\t\twindow.close();\n\t\t},\n\t\tonCancelButtonClick()\n\t\t{\n\t\t\tconst backgroundWasChanged = this.previouslySelectedBackground.id !== this.selectedBackgroundId;\n\t\t\tconst maskWasChanged = this.previouslySelectedMask.id !== this.selectedMaskId;\n\t\t\tif (!backgroundWasChanged && !maskWasChanged)\n\t\t\t{\n\t\t\t\twindow.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet backgroundPromise = Promise.resolve();\n\t\t\tif (backgroundWasChanged)\n\t\t\t{\n\t\t\t\tbackgroundPromise = this.setCallBackground(this.previouslySelectedBackground);\n\t\t\t}\n\n\t\t\tbackgroundPromise.then(() => {\n\t\t\t\tif (maskWasChanged && !this.previouslySelectedMask.isEmpty())\n\t\t\t\t{\n\t\t\t\t\tthis.setCallMask(this.previouslySelectedMask);\n\t\t\t\t\tthis.isWaitingForMaskToCancel = true;\n\t\t\t\t}\n\t\t\t\telse if (this.previouslySelectedMask.isEmpty())\n\t\t\t\t{\n\t\t\t\t\tthis.removeCallMask();\n\t\t\t\t\twindow.close();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twindow.close();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tonListScroll(event: Event)\n\t\t{\n\t\t\tif (event.target.scrollTop === 0)\n\t\t\t{\n\t\t\t\tthis.listIsScrolled = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.listIsScrolled = true;\n\t\t},\n\t\tonTabChange(newTabId: string)\n\t\t{\n\t\t\tif (newTabId === TabId.mask && !LimitManager.isMaskFeatureSupportedByDesktopVersion())\n\t\t\t{\n\t\t\t\tLimitManager.showHelpArticle(MASK_HELP_ARTICLE_CODE);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.selectedTab = newTabId;\n\t\t},\n\t\tonMaskLoad(url: string)\n\t\t{\n\t\t\tLogger.warn('CallBackground: onMaskLoad', url);\n\t\t\tif (this.isWaitingForMaskToCancel)\n\t\t\t{\n\t\t\t\twindow.close();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst masksWithoutEmpty = this.masks.filter((mask: Mask) => !mask.isEmpty());\n\t\t\tconst loadedMask = masksWithoutEmpty.find((mask: Mask) => url.includes(mask.mask));\n\t\t\tLogger.warn('CallBackground: loaded mask', loadedMask);\n\t\t\tif (!loadedMask)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(this.maskLoadTimeouts[loadedMask.id]);\n\t\t\tloadedMask.isLoading = false;\n\t\t\tif (this.lastRequestedMaskId === loadedMask.id)\n\t\t\t{\n\t\t\t\tthis.selectedMaskId = loadedMask.id;\n\t\t\t}\n\t\t},\n\t\t// endregion component events\n\t\t// region desktop interactions\n\t\tsetCallBackground(backgroundInstance: Background): Promise\n\t\t{\n\t\t\tLogger.warn('CallBackground: set background', backgroundInstance);\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn window.BX.desktop.setCallBackground(backgroundInstance.id, backgroundInstance.background);\n\t\t},\n\t\tsetCallBlur(action: Action): Promise\n\t\t{\n\t\t\tLogger.warn('CallBackground: set blur', action);\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn window.BX.desktop.setCallBackground(action.id, action.background);\n\t\t},\n\t\tremoveCallBackground(): Promise\n\t\t{\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn window.BX.desktop.setCallBackground(Action.type.none, Action.type.none);\n\t\t},\n\t\tsetCallMask(mask: Mask)\n\t\t{\n\t\t\tLogger.warn('CallBackground: set mask', mask);\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (mask.isEmpty())\n\t\t\t{\n\t\t\t\tLogger.warn('CallBackground: empty mask - removing it');\n\t\t\t\twindow.BX.desktop.setCallMask();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.lastRequestedMaskId = mask.id;\n\n\t\t\tconst MASK_LOAD_STATUS_DELAY = 500;\n\t\t\tthis.maskLoadTimeouts[mask.id] = setTimeout(() => {\n\t\t\t\tmask.isLoading = true;\n\t\t\t}, MASK_LOAD_STATUS_DELAY);\n\t\t\twindow.BX.desktop.setCallMask(mask.id, mask.mask, mask.background);\n\t\t},\n\t\tremoveCallMask()\n\t\t{\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.BX.desktop.setCallMask();\n\t\t},\n\t\thideLoader()\n\t\t{\n\t\t\tif (!this.isDesktop)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.BX.desktop.hideLoader();\n\t\t},\n\t\t// endregion desktop interactions\n\t\tfindCustomBackgroundById(id: string): ?Background\n\t\t{\n\t\t\treturn this.customBackgrounds.find(element => element.id === id);\n\t\t},\n\t\tgetBackgroundService(): BackgroundService\n\t\t{\n\t\t\tif (!this.backgroundService)\n\t\t\t{\n\t\t\t\tthis.backgroundService = new BackgroundService();\n\t\t\t}\n\n\t\t\treturn this.backgroundService;\n\t\t},\n\t\tgetLimitManager(): LimitManager\n\t\t{\n\t\t\treturn this.limitManager;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t}\n\t},\n\ttemplate:\n\t`\n\t\t<div :class=\"{'--desktop': isDesktop}\" class=\"bx-im-call-background__scope bx-im-call-background__container\">\n\t\t\t<div v-if=\"loadingItems\" class=\"bx-im-call-background__loader_container\">\n\t\t\t\t<Loader />\n\t\t\t</div>\n\t\t\t<div v-else class=\"bx-im-call-background__content\">\n\t\t\t\t<div class=\"bx-im-call-background__left\">\n\t\t\t\t\t<VideoPreview />\n\t\t\t\t\t<div v-html=\"descriptionText\" class=\"bx-im-call-background__description\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div :class=\"{'--scrolled': listIsScrolled}\" class=\"bx-im-call-background__right\">\n\t\t\t\t\t<TabPanel :selectedTab=\"selectedTab\" @tabChange=\"onTabChange\" />\n\t\t\t\t\t<div v-if=\"selectedTab === TabId.background\" @scroll=\"onListScroll\" class=\"bx-im-call-background__list\">\n\t\t\t\t\t\t<ActionComponent\n\t\t\t\t\t\t\tv-for=\"action in actions\"\n\t\t\t\t\t\t\t:element=\"action\"\n\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t:isSelected=\"selectedBackgroundId === action.id\"\n\t\t\t\t\t\t\t@click=\"onActionClick(action)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundComponent\n\t\t\t\t\t\t\tv-for=\"background in backgrounds\"\n\t\t\t\t\t\t\t:element=\"background\"\n\t\t\t\t\t\t\t:key=\"background.id\"\n\t\t\t\t\t\t\t:isSelected=\"selectedBackgroundId === background.id\"\n\t\t\t\t\t\t\t@click=\"onBackgroundClick(background)\"\n\t\t\t\t\t\t\t@cancel=\"onBackgroundRemove(background)\"\n\t\t\t\t\t\t\t@remove=\"onBackgroundRemove(background)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-else-if=\"selectedTab === TabId.mask\" @scroll=\"onListScroll\" class=\"bx-im-call-background__list\">\n\t\t\t\t\t\t<MaskComponent\n\t\t\t\t\t\t\tv-for=\"mask in masks\"\n\t\t\t\t\t\t\t:element=\"mask\"\n\t\t\t\t\t\t\t:key=\"mask.id\"\n\t\t\t\t\t\t\t:isSelected=\"selectedMaskId === mask.id\"\n\t\t\t\t\t\t\t@click=\"onMaskClick(mask)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-call-background__button-panel\">\n\t\t\t\t<button @click=\"onSaveButtonClick\" :class=\"{'ui-btn-wait ui-btn-disabled': loadingItems}\" class=\"ui-btn ui-btn-success\">\n\t\t\t\t\t{{ loc('BX_IM_CALL_BG_SAVE') }}\n\t\t\t\t</button>\n\t\t\t\t<button @click=\"onCancelButtonClick\" class=\"ui-btn ui-btn-link\">\n\t\t\t\t\t{{ loc('BX_IM_CALL_BG_CANCEL') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"bx-im-call-background__upload-input\">\n\t\t\t<input type=\"file\" :accept=\"uploadTypes\" ref=\"uploadInput\"/>\n\t\t</div>\n\t`\n};"],"names":["EVENT_NAMESPACE","SIZE_LOWER_THRESHOLD","STARTING_PROGRESS","ProgressBarManager","params","setEventNamespace","container","uploadState","progressBar","ProgressBar","start","update","status","FileStatus","error","setProgress","setCancelDisable","setIcon","icon","setProgressTitle","Loc","getMessage","wait","item","state","progress","cloud","cancel","byteSent","size","setByteSent","destroy","EventEmitter","labels","loading","completed","canceled","cancelTitle","megabyte","cancelCallback","emit","event","destroyCallback","setProgressTitleVisibility","WIDTH_LOWER_THRESHOLD","HEIGHT_LOWER_THRESHOLD","offsetHeight","offsetWidth","Background","Object","assign","fileResult","id","isVideo","background","links","download","isLoading","canRemove","restItem","includes","isCustom","isSupported","title","uploaderData","filePreview","file","preview","type","startsWith","upload","BackgroundComponent","props","element","required","isSelected","Boolean","emits","data","computed","containerClasses","classes","push","imageStyle","backgroundImage","watch","getProgressBarManager","mounted","initProgressBar","beforeUnmount","removeProgressBar","methods","progressBarManager","$refs","subscribe","$emit","loc","phraseCode","$Bitrix","template","Action","none","gaussianBlur","blur","ActionComponent","action","Mask","active","mask","rawMask","MaskComponent","Loader","name","LimitManager","_classPrivateMethodInitSpec","limits","infoHelperUrlTemplate","_classPrivateMethodGet","isEmpty","isUpload","isBlur","limitCode","image","window","BX","UI","InfoHelper","show","articleCode","Utils","platform","isBitrixDesktop","isDesktopFeatureEnabled","DesktopFeature","getDesktopVersion","availableFromVersion","Helper","forEach","limit","isInited","init","frameUrlTemplate","limitIsActive","articleIsActive","TabId","MASK_HELP_ARTICLE_CODE","TabPanel","selectedTab","String","tabs","isMaskFeatureAvailable","isNew","VIDEO_CONSTRAINT_WIDTH","VIDEO_CONSTRAINT_HEIGHT","VideoPreview","noVideo","videoClasses","Call","Hardware","enableMirroring","created","initHardware","then","getDefaultDevices","console","videoStream","getTracks","tr","stop","constraints","audio","video","width","ideal","height","defaultCamera","selectedCamera","deviceId","exact","keys","cameraList","length","navigator","mediaDevices","getUserMedia","stream","getVideoTracks","getSettings","playLocalVideo","Logger","warn","volume","srcObject","play","BackgroundService","query","RestMethod","imCallBackgroundGet","imCallMaskGet","Promise","resolve","reject","RestClient","callBatch","response","backgroundResult","maskResult","fileId","callMethod","imCallBackgroundCommit","imCallBackgroundDelete","FILE_MAX_SIZE","FILE_MAX_SIZE_PHRASE_NUMBER","UPLOAD_CHUNK_SIZE","NOTIFICATION_HIDE_DELAY","CUSTOM_BG_TASK_PREFIX","UploadManager","inputNode","uploader","Uploader","generatePreview","fileMaxSize","diskFolderId","deleteTask","bind","eventData","getData","phrase","replace","previewData","URL","createObjectURL","uploadStart","uploadProgress","result","uploadComplete","uploadError","addTask","taskId","Date","now","chunkSize","fileData","fileName","generateUniqueName","previewBlob","fileType","allowedFileTypes","text","Notification","Center","notify","content","autoHideDelay","CallBackground","components","tab","selectedBackgroundId","selectedMaskId","loadingItems","actions","defaultBackgrounds","customBackgrounds","masks","listIsScrolled","backgrounds","isDesktop","uploadTypes","join","descriptionText","replaces","initSelectedTab","getBackgroundService","getElementsList","initLimitManager","initBackgroundList","uploadManager","setDiskFolderId","folderId","uploadActionIsAvailable","initActions","initMasks","initMaskLoadEventHandler","initPreviouslySelectedItem","hideLoader","initUploader","isMaskFeatureSupportedByDesktopVersion","showHelpArticle","initPreviouslySelectedMask","initPreviouslySelectedBackground","desktop","getMask","maskId","foundMask","find","createEmpty","previouslySelectedMask","getBackgroundImage","backgroundId","itemsToSearch","foundBackground","previouslySelectedBackground","restResult","createDefaultFromRest","custom","createCustomFromRest","infoHelperParams","limitManager","backgroundsInstance","createCustomFromUploaderEvent","unshift","findCustomBackgroundById","setUploadProgress","onUploadComplete","onBackgroundClick","commitBackground","setUploadError","createFromRest","maskLoadTimeouts","setCallMaskLoadHandlers","onMaskLoad","onActionClick","getLimitManager","isLimitedAction","showLimitSlider","click","removeCallBackground","setCallBlur","isLimitedBackground","setCallBackground","onBackgroundRemove","cancelUpload","deleteFile","filter","onMaskClick","removeCallMask","setCallMask","onSaveButtonClick","close","onCancelButtonClick","backgroundWasChanged","maskWasChanged","backgroundPromise","isWaitingForMaskToCancel","onListScroll","target","scrollTop","onTabChange","newTabId","url","masksWithoutEmpty","loadedMask","clearTimeout","lastRequestedMaskId","backgroundInstance","MASK_LOAD_STATUS_DELAY","setTimeout","backgroundService","replacements"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings