File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/modules/ui/install/js/ui/avatar-editor/dist/main.avatar-editor.bundle.js.map
Back
{"version":3,"file":"main.avatar-editor.bundle.js","sources":["../src/tabs/default-tab.js","../src/tabs/camera-tab.js","../src/backend.js","../src/tabs/upload-tab.js","../src/options.js","../src/mask-tool/mask-editor.js","../src/mask-tool/mask-item.js","../src/mask-tool/mask-list.js","../src/tabs/mask-tab.js","../src/tabs/canvas-tab.js","../src/canvas-tool/canvas-loader.js","../src/canvas-tool/canvas-default.js","../src/canvas-tool/canvas-master.js","../src/canvas-tool/canvas-preview.js","../src/canvas-tool/canvas-zooming.js","../src/canvas-tool/canvas-mask.js","../src/editor.js","../src/editor-in-popup.js","../src/index.js"],"sourcesContent":["import {Tag, Dom, Loc, Type, Cache} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\n\nexport default class DefaultTab extends EventEmitter\n{\n\tcache = new Cache.MemoryCache();\n\tstatic priority = 1;\n\t#parent: ?DefaultTab;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\t}\n\n\tgetPriority(): Number\n\t{\n\t\treturn this.constructor.priority;\n\t}\n\n\tsetParentTab(tab: DefaultTab)\n\t{\n\t\tthis.#parent = tab;\n\t}\n\n\tgetHeaderContainer(): Element\n\t{\n\t\treturn this.cache.remember('headerContainer', () => {\n\t\t\tconst id = this.constructor.code;\n\t\t\tconst title = this.getHeader();\n\t\t\tif (title === null)\n\t\t\t{\n\t\t\t\treturn Tag.render`<span style=\"display: none;\" data-bx-role=\"tab-header\" data-bx-state=\"hidden\" data-bx-name=\"${id}\"></span>`;\n\t\t\t}\n\t\t\treturn Tag.render`<span class=\"ui-avatar-editor__tab-button-item\" data-bx-role=\"tab-header\" data-bx-state=\"visible\" data-bx-name=\"${id}\">${title}</span>`;\n\t\t})\n\t}\n\n\tgetHeader(): ?String\n\t{\n\t\tif (this.#parent !== null)\n\t\t\treturn this.constructor.code.toUpperCase();\n\n\t\treturn null;\n\t}\n\n\tgetBodyContainer(): Element\n\t{\n\t\treturn this.cache.remember('bodyContainer', () => {\n\t\t\tconst id = this.constructor.code;\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-avatar-editor__content-block ui-avatar-editor__${id}-block\" data-bx-role=\"tab-body\" data-bx-name=\"${id}\">${this.getBody()}</div>`;\n\t\t})\n\t}\n\n\tgetBody(): String|Element\n\t{\n\t\tconst id = this.constructor.code;\n\n\t\treturn this.cache.remember('body', () => {\n\t\t\treturn Tag.render`\n\t\t\t<div>\n\t\t\t\t${id.toUpperCase()}\n\t\t\t</div>`;\n\t\t})\n\t}\n\n\tinactivate(): DefaultTab\n\t{\n\t\tif (this.#parent)\n\t\t{\n\t\t\tthis.#parent.getHeaderContainer().removeAttribute('data-bx-active');\n\t\t\tDom.removeClass(this.#parent.getHeaderContainer(), 'ui-avatar-editor__tab-button-active');\n\t\t}\n\t\tthis.getHeaderContainer().removeAttribute('data-bx-active');\n\t\tDom.removeClass(this.getHeaderContainer(), 'ui-avatar-editor__tab-button-active');\n\t\tthis.getBodyContainer().removeAttribute('data-bx-active');\n\t\tthis.emit('onInactive');\n\t\treturn this;\n\t}\n\n\tactivate(): DefaultTab\n\t{\n\t\tif (this.#parent)\n\t\t{\n\t\t\tthis.#parent.getHeaderContainer().setAttribute('data-bx-active', 'Y');\n\t\t\tDom.addClass(this.#parent.getHeaderContainer(), 'ui-avatar-editor__tab-button-active');\n\t\t}\n\t\tthis.getHeaderContainer().setAttribute('data-bx-active', 'Y');\n\t\tDom.addClass(this.getHeaderContainer(), 'ui-avatar-editor__tab-button-active');\n\t\tthis.getBodyContainer().setAttribute('data-bx-active', 'Y');\n\t\tthis.emit('onActive');\n\t\treturn this;\n\t}\n\n\tshowError({message, code})\n\t{\n\t\tconst errorContainer = this.getBody().querySelector('[data-bx-role=\"error-container\"]');\n\t\tif (errorContainer)\n\t\t{\n\t\t\terrorContainer.innerText = message || code;\n\t\t}\n\t\tDom.addClass(this.getBodyContainer(), 'ui-avatar-editor--error');\n\t}\n\n\tstatic isAvailable()\n\t{\n\t\treturn true;\n\t}\n\n\tstatic get code()\n\t{\n\t\treturn 'default';\n\t}\n}\n","import {Tag, Loc, Dom, Text} from 'main.core';\nimport DefaultTab from './default-tab';\n\nexport default class CameraTab extends DefaultTab\n{\n\tstatic priority = 2;\n\n\tstatic #isCameraEnabled = null;\n\n\tgetHeader(): ?String\n\t{\n\t\treturn null;\n\t}\n\n\tgetBody(): Element\n\t{\n\t\treturn this.cache.remember('body', () => {\n\t\t\tconst res = Tag.render`\n\t\t\t\t<div>\n\t\t\t\t\t<div class=\"ui-avatar-editor__camera-block-image\">\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__btn-back\" data-bx-role=\"button-back\"></div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__user-loader-item\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__loader\">\n\t\t\t\t\t\t\t\t<svg class=\"ui-avatar-editor__circular\" viewBox=\"25 25 50 50\">\n\t\t\t\t\t\t\t\t\t<circle class=\"ui-avatar-editor__path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"1\" stroke-miterlimit=\"10\"/>\n\t\t\t\t\t\t\t\t</svg>\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=\"ui-avatar-editor__error\">\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_ERROR')}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span data-bx-role=\"tab-camera-error\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__camera-block-image-inner\">\n\t\t\t\t\t\t\t<video autoplay></video>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-avatar-editor__button-layout\" data-bx-role=\"camera-button\">\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__button\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__button-icon\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t\tconst video = res.querySelector('VIDEO');\n\t\t\tvideo.addEventListener(\"playing\", (event) => {\n\t\t\t\tconst visibleWidth = res.clientWidth,\n\t\t\t\t\tvisibleHeight = res.clientHeight,\n\t\t\t\t\tw = video.clientWidth,\n\t\t\t\t\th = video.clientHeight,\n\t\t\t\t\tscale = Math.max(\n\t\t\t\t\t\t( w > 0 ? visibleWidth / w : 1 ),\n\t\t\t\t\t\t( h > 0 ? visibleHeight / h : 1 )\n\t\t\t\t\t),\n\t\t\t\t\tleft = (w * scale - w) / 2 + (visibleWidth - w * scale) / 2,\n\t\t\t\t\ttop = (h * scale - h) / 2 + (visibleHeight - h * scale) / 2;\n\t\t\t\tDom.adjust(\n\t\t\t\t\tvideo.parentNode, {style : {\n\t\t\t\t\t\t\twidth : w + 'px',\n\t\t\t\t\t\t\theight : h + 'px',\n\t\t\t\t\t\t\ttransform : 'translate(' +\n\t\t\t\t\t\t\t\tMath.ceil(left) + 'px, ' +\n\t\t\t\t\t\t\t\tMath.ceil(top) + 'px) scale(' + scale + ', ' + scale + ')'\n\t\t\t\t\t\t}}\n\t\t\t\t);\n\t\t\t});\n\t\t\tres.querySelector('[data-bx-role=\"camera-button\"]').onclick = () => {\n\t\t\t\tthis.emit('onSetFile', video);\n\t\t\t};\n\t\t\tres.querySelector('[data-bx-role=\"button-back\"]').onclick = () => {\n\t\t\t\tthis.emit('onClickBack');\n\t\t\t};\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tinactivate(): DefaultTab {\n\t\tthis.stopStreaming();\n\t\treturn super.inactivate();\n\t}\n\n\tactivate(): DefaultTab {\n\t\tthis.startStreaming();\n\t\treturn super.activate();\n\t}\n\n\tstartStreaming()\n\t{\n\t\tconst video = this.getBody().querySelector('VIDEO');\n\t\tvideo.setAttribute(\"active\", \"Y\");\n\t\tnavigator.mediaDevices.getUserMedia({\n\t\t\taudio: false,\n\t\t\tvideo: {\n\t\t\t\twidth: {max: 1024, min: 640, ideal: 1024},\n\t\t\t\theight: {max: 860, min: 480, ideal: 860}\n\t\t\t}\n\t\t}).then(function(stream) {\n\t\t\tif (video.hasAttribute(\"active\"))\n\t\t\t{\n\t\t\t\tvideo.srcObject = stream;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tstream.getTracks()[0].stop();\n\t\t\t}\n\t\t})\n\t\t.catch((error) => {\n\t\t\tthis.getBody().querySelector('[data-bx-role=\"tab-camera-error\"]')\n\t\t\t\t.innerHTML = Text.encode(error);\n\t\t});\n\t}\n\n\tstopStreaming()\n\t{\n\t\tconst video = this.getBody().querySelector('VIDEO');\n\t\tvideo.removeAttribute(\"active\");\n\t\tvideo.pause();\n\t\tvideo.src = \"\";\n\t\tif (video.srcObject)\n\t\t{\n\t\t\tvideo.srcObject.getTracks()[0].stop();\n\t\t}\n\t}\n\n\tstatic check(): void\n\t{\n\t\tif (this.#isCameraEnabled === null)\n\t\t{\n\t\t\tif (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n\t\t\t{\n\t\t\t\tnavigator.mediaDevices\n\t\t\t\t\t.enumerateDevices()\n\t\t\t\t\t.then((devices) =>\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#isCameraEnabled = Array\n\t\t\t\t\t\t\t.from(devices)\n\t\t\t\t\t\t\t.filter(function(deviceInfo) {\n\t\t\t\t\t\t\t\treturn deviceInfo.kind === 'videoinput';\n\t\t\t\t\t\t\t}).length > 0;\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\tthis.#isCameraEnabled = false;\n\t\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.#isCameraEnabled = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic isAvailable(): boolean\n\t{\n\t\tthis.check();\n\t\treturn this.#isCameraEnabled;\n\t}\n\n\tstatic get code()\n\t{\n\t\treturn 'camera';\n\t}\n}\n","import {ajax, Loc} from 'main.core';\n\nexport default class Backend\n{\n\tstatic #ajaxRepo = {};\n\n\tstatic saveMask({id, title, accessCode}, file)\n\t{\n\t\tif (Loc.getMessage('USER_ID') <= 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst formObj = new FormData();\n\t\tformObj.append('id', id);\n\t\tformObj.append('title', title);\n\t\tif (accessCode.length > 0)\n\t\t{\n\t\t\tArray\n\t\t\t\t.from(accessCode)\n\t\t\t\t.forEach((accessCode, index) => {\n\t\t\t\t\tformObj.append('accessCode[' + index + '][0]', accessCode[0]);\n\t\t\t\t\tformObj.append('accessCode[' + index + '][1]', accessCode[1]);\n\t\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tformObj.append('accessCode[]', '');\n\t\t}\n\t\tif (file instanceof Blob)\n\t\t{\n\t\t\tformObj.append('file[changed]', 'Y');\n\t\t\tformObj.append('file', file, file['name']);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tformObj.append('file[changed]', 'N');\n\t\t}\n\n\t\treturn ajax\n\t\t\t.runAction(\n\t\t\t\t'ui.avatar.mask.save',\n\t\t\t\t{\n\t\t\t\t\tdata: formObj,\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\t\tactionType: 'edit',\n\t\t\t\t\t\taction: 'save',\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t;\n\t}\n\n\tstatic getMaskList(actionName: String, {page, size}): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tajax\n\t\t\t\t.runAction('ui.avatar.mask.get' + actionName, {\n\t\t\t\t\tdata: {},\n\t\t\t\t\tnavigation: {\n\t\t\t\t\t\tpage: page,\n\t\t\t\t\t\tsize: size\n\t\t\t\t\t},\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\t\tactionType: 'read',\n\t\t\t\t\t\taction: 'list',\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(({data: {groupedItems}}) => {\n\t\t\t\t\tresolve(groupedItems);\n\t\t\t\t})\n\t\t\t\t.catch(reject)\n\t\t\t;\n\t\t});\n\t}\n\n\tstatic getMaskInitialInfo({size, recentlyUsedListSize})\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.#ajaxRepo['getMaskInitialInfo'])\n\t\t\t{\n\t\t\t\treturn resolve(this.#ajaxRepo['getMaskInitialInfo']);\n\t\t\t}\n\t\t\tajax\n\t\t\t\t.runAction('ui.avatar.mask.getMaskInitialInfo', {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\trecentlyUsedListSize: recentlyUsedListSize\n\t\t\t\t\t},\n\t\t\t\t\tnavigation: {\n\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\tsize: size\n\t\t\t\t\t},\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\t\tactionType: 'read',\n\t\t\t\t\t\taction: 'initialInfo',\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(({data: {initialInfo}}) => {\n\t\t\t\t\tthis.#ajaxRepo['getMaskInitialInfo'] = initialInfo;\n\t\t\t\t\tresolve(initialInfo)\n\t\t\t\t})\n\t\t\t\t.catch(reject)\n\t\t\t;\n\t\t})\n\t}\n\n\tstatic getMaskAccessCode(itemId)\n\t{\n\t\treturn ajax\n\t\t\t.runAction('ui.avatar.mask.getMaskAccessCode', {\n\t\t\t\tdata: {\n\t\t\t\t\tid: itemId\n\t\t\t\t},\n\t\t\t\tanalyticsLabel: {\n\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\tactionType: 'edit',\n\t\t\t\t\taction: 'accessCode',\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tstatic deleteMask(itemId)\n\t{\n\t\treturn ajax\n\t\t\t.runAction('ui.avatar.mask.delete', {\n\t\t\t\tdata: {\n\t\t\t\t\tid: itemId\n\t\t\t\t},\n\t\t\t\tanalyticsLabel: {\n\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\tactionType: 'edit',\n\t\t\t\t\taction: 'delete',\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tstatic useRecently(itemId)\n\t{\n\t\treturn ajax\n\t\t\t.runAction('ui.avatar.mask.useRecently', {\n\t\t\t\tdata: {\n\t\t\t\t\tid: itemId\n\t\t\t\t},\n\t\t\t\tanalyticsLabel: {\n\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\tactionType: 'read',\n\t\t\t\t\taction: 'read',\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tstatic cleanUp()\n\t{\n\t\treturn ajax\n\t\t\t.runAction('ui.avatar.mask.cleanUp', {\n\t\t\t\tanalyticsLabel: {\n\t\t\t\t\tui: 'avatarMask',\n\t\t\t\t\tactionType: 'edit',\n\t\t\t\t\taction: 'cleanUp',\n\t\t\t\t}\n\t\t\t})\n\t\t\t;\n\t}\n}","import {Tag, Loc, Dom, Event, Text, Extension,} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\n\nimport DefaultTab from './default-tab';\n\nfunction isImage(name, type, size)\n{\n\ttype = type ? String(type) : null;\n\tsize = size ? Number(size) : null;\n\tname = String(name).toLowerCase();\n\tlet ext = name.split('.').pop();\n\tif (ext === name)\n\t{\n\t\text = null;\n\t}\n\n\treturn (\n\t\t(type === null || type.indexOf(\"image/\") === 0)\n\t\t&& (size === null || (size < 20 * 1024 * 1024))\n\t\t&& (ext !== name && 'jpg,bmp,jpeg,jpe,gif,png,webp'.split(',').indexOf(ext) >= 0));\n}\n\nexport default class UploadTab extends DefaultTab\n{\n\tstatic priority = 3;\n\t#fileId;\n\t#fileAccept = 'image/*';\n\n\tconstructor(options: ?{\n\t\tfileAccept: ?String\n\t})\n\t{\n\t\tsuper();\n\t\tthis.#fileId = ['fileUpload_', (new Date()).valueOf()].join('_');\n\t\tif (options && options.fileAccept)\n\t\t{\n\t\t\tthis.#fileAccept = options.fileAccept;\n\t\t}\n\t}\n\n\tgetHeader(): ?String\n\t{\n\t\treturn null;\n\t}\n\n\tgetBody(): Element {\n\t\treturn this.cache.remember('body', () => {\n\t\t\tconst res = Tag.render`\n\t\t\t<div>\n\t\t\t\t<div class=\"ui-avatar-editor__btn-back\" data-bx-role=\"button-back\"></div>\n\t\t\t\t<div class=\"ui-avatar-editor__upload-link-container\">\n\t\t\t\t\t<div data-bx-role=\"error-container\" class=\"ui-avatar-editor__upload-error-desc\"></div>\n\t\t\t\t\t<label for=\"${this.#fileId}\" class=\"ui-avatar-editor__upload-link\">\n\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_PICK_UP_THE_FILE')}\n\t\t\t\t\t\t<input type=\"file\" id=\"${this.#fileId}\" data-bx-role=\"file-button\" accept=\"${Text.encode(this.#fileAccept)}\" />\n\t\t\t\t\t</label>\n\t\t\t\t\t<div class=\"ui-avatar-editor__upload-desc\">\n\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_DROP_FILES_INTO_THIS_AREA')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ui-avatar-editor__upload-info\">\n\t\t\t\t\t<div class=\"ui-avatar-editor__upload-info-item\"><!-- place for limit text --></div>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t\t\tconst f = (event) => {\n\t\t\t\tconst {target} = event;\n\t\t\t\tconst fileButton = res.querySelector('[data-bx-role=\"file-button\"]');\n\t\t\t\tconst file = Array.from(target && target.files ? target.files : fileButton.files).shift();\n\t\t\t\tif (isImage(file.name, file.type, file.size))\n\t\t\t\t{\n\t\t\t\t\tthis.emit('onSetFile', file);\n\t\t\t\t}\n\t\t\t\tEvent.unbindAll(fileButton);\n\t\t\t\tconst node = fileButton.cloneNode(true, {value : \"\"});\n\t\t\t\tDom.adjust(node, {props : {value : \"\"}, attrs: {}});\n\t\t\t\tnode.setAttribute(\"new\", \"Y\" + (new Date()).valueOf());\n\t\t\t\tfileButton.parentNode.insertBefore(node, fileButton);\n\t\t\t\tfileButton.parentNode.removeChild(fileButton);\n\t\t\t\tEvent.bind(node, \"change\", f)\n\t\t\t};\n\t\t\tEvent.bind(res.querySelector('[data-bx-role=\"file-button\"]'), 'change', f);\n\n\t\t\tconst dropZone = new BX.DD.dropFiles(res);\n\t\t\tif (dropZone && dropZone.supported())\n\t\t\t{\n\t\t\t\tEventEmitter.subscribe(\n\t\t\t\t\tdropZone,\n\t\t\t\t\t'dropFiles',\n\t\t\t\t\t(files, e) => {\n\t\t\t\t\t\tif (e && e[\"dataTransfer\"] && e[\"dataTransfer\"][\"items\"] && e[\"dataTransfer\"][\"items\"].length > 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst fileCopy = [];\n\t\t\t\t\t\t\tArray\n\t\t\t\t\t\t\t\t.from(e[\"dataTransfer\"][\"items\"])\n\t\t\t\t\t\t\t\t.forEach((item) => {\n\t\t\t\t\t\t\t\t\tif (item[\"webkitGetAsEntry\"] && item[\"getAsFile\"])\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlet entry = item[\"webkitGetAsEntry\"]();\n\t\t\t\t\t\t\t\t\t\tif (entry && entry.isFile )\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfileCopy.push(item[\"getAsFile\"]());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (fileCopy.length > 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfiles = fileCopy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tf({target: {files: files}});\n\t\t\t\t\t},\n\t\t\t\t\t{compatMode: true}\n\t\t\t\t);\n\t\t\t\tEventEmitter.subscribe(\n\t\t\t\t\tdropZone,\n\t\t\t\t\t'dragEnter',\n\t\t\t\t\t(e) => {\n\t\t\t\t\t\tif (e\n\t\t\t\t\t\t\t&& e[\"dataTransfer\"]\n\t\t\t\t\t\t\t&& e.dataTransfer.types\n\t\t\t\t\t\t\t&& e.dataTransfer.items\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst isFileTransfer = Array.from(e.dataTransfer.types)\n\t\t\t\t\t\t\t\t.filter((type) => {\n\t\t\t\t\t\t\t\t\treturn type === \"Files\";\n\t\t\t\t\t\t\t\t}).length > 0;\n\n\t\t\t\t\t\t\tif (isFileTransfer)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDom.addClass(res.parentNode, 'dnd-over');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{compatMode: true}\n\t\t\t\t);\n\t\t\t\tEventEmitter.subscribe(\n\t\t\t\t\tdropZone,\n\t\t\t\t\t'dragLeave',\n\t\t\t\t\t() => { Dom.removeClass(res.parentNode, 'dnd-over'); },\n\t\t\t\t\t{compatMode: true}\n\t\t\t\t);\n\t\t\t}\n\t\t\tres.querySelector('[data-bx-role=\"button-back\"]').onclick = () => {\n\t\t\t\tthis.emit('onClickBack');\n\t\t\t};\n\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tdeleteError()\n\t{\n\t\tthis.getBody().querySelector('[data-bx-role=\"error-container\"]').innerText = '';\n\t\tDom.removeClass(this.getBodyContainer(), 'ui-avatar-editor--error');\n\t}\n\n\tstatic get code()\n\t{\n\t\treturn 'upload';\n\t}\n}\n","import {Uri} from 'main.core';\n\nconst Options = {\n\tmaskSize: 400,\n\timageSize: 1024,\n\n\trawSrc: document.currentScript.src,\n\trawPath: null,\n\teventNamespace: 'Main.Avatar.Editor',\n\n\tget path(): String {\n\t\tif (Options.rawPath === null)\n\t\t{\n\t\t\tconst res = Options.rawSrc.split('/');\n\t\t\tlet buf;\n\t\t\twhile (buf = res.pop())\n\t\t\t{\n\t\t\t\tif (buf === 'dist')\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tOptions.rawPath = (new Uri(res.join('/'))).getPath();\n\t\t}\n\t\treturn Options.rawPath;\n\t},\n\tgetCollections: () => {\n\t\tconst settings = Extension.getSettings('ui.avatar-editor');\n\t\treturn Array.from(settings['commonCollection'])\n\t\t\t[\n\t\t\t{\n\t\t\t\ttitle: 'Sys',\n\t\t\t\titems:[\n\t\t\t\t\t'001_flower.png',\n\t\t\t\t\t'002_flower.png',\n\t\t\t\t\t'003_christmas_tree256.png',\n\t\t\t\t\t'005_red_rectangle.png',\n\t\t\t\t\t'005_blue_circle.png',\n\t\t\t\t\t'004_bow_purple.png',\n\t\t\t\t]\n\t\t\t\t.map(function(title)\n\t\t\t\t{\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: title,\n\t\t\t\t\t\ttitle: title,\n\t\t\t\t\t\tthumb: [Options.path, 'badges', title].join('/').replace('//', '/'),\n\t\t\t\t\t\tsrc: [Options.path, 'badges', title].join('/').replace('//', '/'),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t];\n\t}\n};\n\nexport {Options};","import {Tag, Text, Cache, Event, Loc} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Layout} from 'ui.sidepanel.layout';\nimport {Editor} from '../editor'\nimport Backend from \"../backend\";\nimport type {MaskType} from \"../editor\";\nimport UploadTab from '../tabs/upload-tab';\nimport 'ui.notification';\nimport {TagSelector, Dialog} from \"ui.entity-selector\";\nimport {Options} from '../options';\n\nexport default class MaskEditor extends EventEmitter\n{\n\tstatic #instance: this;\n\tcache = new Cache.MemoryCache();\n\t#data: ?MaskType;\n\t#id: Number;\n\t#changesCount: Number = 0;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace([Options.eventNamespace, 'mask:editor'].join(':'));\n\n\t\tthis.#id = [this.getEventNamespace(), (new Date()).getTime()].join(':');\n\t}\n\n\tgetContentContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('content', () => {\n\t\t\tconst res = Tag.render\n\t\t\t\t`<div class=\"ui-avatar-editor--scope\">\n\t\t\t\t\t\t<ol class=\"ui-avatar-editor-list\">\n\t\t\t\t\t\t\t<li class=\"ui-avatar-editor-list-item\">\n\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor-list-item-num\">1</span>\n\t\t\t\t\t\t\t\t${Loc\n\t\t\t\t\t\t\t\t\t.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_CONTENT_1_POINT')\n\t\t\t\t\t\t\t\t\t.replace(/#SIZE/gi, Loc.getMessage('UI_AVATAR_MASK_MAX_SIZE'))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor-list-link-box\">\n\t\t\t\t\t\t\t\t\t<a href=\"${Loc.getMessage('UI_AVATAR_MASK_PATH_ARTICLE')}\" class=\"ui-avatar-editor-list-link\">${Loc.getMessage('JS_AVATAR_EDITOR_HOW_TO')}</a>\n\t\t\t\t\t\t\t\t\t<a href=\"/bitrix/js/ui/avatar-editor/dist/user_frame_template.zip\" download class=\"ui-avatar-editor-list-link\">${Loc.getMessage('UI_AVATAR_EDITOR_MASK_DOWNLOAD_TEMPLATE2')}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li class=\"ui-avatar-editor-list-item\">\n\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor-list-item-num\">2</span>\n\t\t\t\t\t\t\t\t${Loc.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_CONTENT_2_POINT')}\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor-mask-file\" data-bx-role=\"mask-file\"></div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li class=\"ui-avatar-editor-list-item\">${Loc.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_CONTENT_3_POINT')}\n\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor-list-item-num\">3</span>\n\t\t\t\t\t\t\t\t<div class=\"ui-form\">\n\t\t\t\t\t\t\t\t\t<div class=\"ui-form-row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ui-form-label\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ui-ctl-label-text\">${Loc.getMessage('JS_AVATAR_EDITOR_TITLE')}</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ui-form-content\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ui-ctl ui-ctl-textbox ui-ctl-w100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<input data-bx-role=\"title\" type=\"text\" class=\"ui-ctl-element\" placeholder=\"${Loc.getMessage('JS_AVATAR_EDITOR_PLACEHOLDER')}\">\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class=\"ui-form-row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"ui-form-label\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ui-ctl-label-text\">${Loc.getMessage('JS_AVATAR_EDITOR_ACCESS')}</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ui-form-content\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"ui-ctl ui-ctl-textbox ui-ctl-w100\" data-bx-role=\"access-container\"></div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ol>\n\t\t\t\t\t</div>`;\n\t\t\tres\n\t\t\t\t.querySelector('[data-bx-role=\"mask-file\"]')\n\t\t\t\t.appendChild(this.#getEditor().getContainer());\n\t\t\tthis.#getEditor().getCanvasZooming().setDefaultValue(0.5).reset();\n\t\t\treturn res;\n\t\t});\n\t}\n\n\t#getEditor(): Editor\n\t{\n\t\treturn this.cache.remember('editor', () => {\n\t\t\tconst res = new Editor({\n\t\t\t\tenableCamera: false,\n\t\t\t\tenableUpload: true,\n\t\t\t\tuploadTabOptions: {fileAccept: 'image/png'},\n\t\t\t\tenableMask: false,\n\t\t\t});\n\t\t\tres.subscribe('onChange', ({data}) => {\n\t\t\t\tthis.#changesCount++;\n\t\t\t});\n\t\t\treturn res;\n\t\t});\n\t}\n\n\t#initAccessSelector(): TagSelector\n\t{\n\t\treturn this.cache.remember('TagSelector', () => {\n\t\t\tconst handler = ({target}) => {\n\t\t\t\tif (target instanceof Dialog)\n\t\t\t\t{\n\t\t\t\t\tthis.#data.accessCode = target.getSelectedItems()\n\t\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\t\treturn [item.entityId, item.id];\n\t\t\t\t\t\t})\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst selector = new top.BX.UI.EntitySelector.TagSelector({\n\t\t\t\tid: this.constructor.name,\n\t\t\t\tdialogOptions: {\n\t\t\t\t\tid: this.constructor.name,\n\t\t\t\t\tcontext: null,\n\t\t\t\t\tpreselectedItems: this.#data.accessCode,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\t'Item:onSelect': handler,\n\t\t\t\t\t\t'Item:onDeselect': handler\n\t\t\t\t\t},\n\t\t\t\t\tentities: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'meta-user',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t'all-users': {\n\t\t\t\t\t\t\t\t\ttitle: 'All users',\n\t\t\t\t\t\t\t\t\tallowView: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'user',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\temailUsers: false,\n\t\t\t\t\t\t\t\tinviteGuestLink: false,\n\t\t\t\t\t\t\t\tmyEmailUsers: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'department',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tselectMode: 'usersAndDepartments',\n\t\t\t\t\t\t\t\tallowFlatDepartments: false,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t});\n\t\t\tselector.renderTo(\n\t\t\t\tthis.getContentContainer()\n\t\t\t\t\t.querySelector('[data-bx-role=\"access-container\"]')\n\t\t\t);\n\t\t\treturn selector;\n\t\t})\n\t}\n\n\tisModified(): boolean\n\t{\n\t\treturn this.#changesCount > 0;\n\t}\n\n\topenNew()\n\t{\n\t\tthis\n\t\t\t.#showSlider()\n\t\t\t.then(() => {\n\t\t\t\tthis.#changesCount = 0;\n\t\t\t\tthis.#data = {\n\t\t\t\t\tid: null,\n\t\t\t\t\ttitle: '',\n\t\t\t\t\tsrc: null,\n\t\t\t\t\taccessCode: [['meta-user', 'all-users']]\n\t\t\t\t};\n\t\t\t\tthis.#getEditor().reset();\n\t\t\t\tthis.getContentContainer()\n\t\t\t\t\t.querySelector('[data-bx-role=\"title\"]').value = '';\n\t\t\t\tthis.#initAccessSelector();\n\t\t\t});\n\t}\n\n\topenSaved(data: MaskType)\n\t{\n\t\tthis.#data = {\n\t\t\tid: data.id,\n\t\t\ttitle: data.title,\n\t\t\tsrc: data.src,\n\t\t\taccessCode: data.accessCode || null\n\t\t};\n\n\t\tthis.getContentContainer().querySelector('[data-bx-role=\"title\"]').value = Text.encode(data.title);\n\t\tthis\n\t\t\t.#showSlider()\n\t\t\t.then(() => {\n\t\t\t\tthis.#getEditor()\n\t\t\t\t\t.loadSrc(data.src)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tthis.#changesCount = 0;\n\t\t\t\t\t\tif (!data.accessCode)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBackend.getMaskAccessCode(data.id)\n\t\t\t\t\t\t\t\t.then(({data: {accessCode}}) => {\n\t\t\t\t\t\t\t\t\tthis.emit('maskAccessCodeHasGot', accessCode);\n\t\t\t\t\t\t\t\t\tthis.#data.accessCode = accessCode\n\t\t\t\t\t\t\t\t\tthis.#initAccessSelector();\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.#data.accessCode = Array.from(data.accessCode);\n\t\t\t\t\t\t\tthis.#initAccessSelector();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t})\n\t\t;\n\t}\n\n\tcheckOpened(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet isSuccess = true;\n\t\t\tif (this.#getEditor().isEmpty())\n\t\t\t{\n\t\t\t\tthis.#getEditor()\n\t\t\t\t\t.getTab(UploadTab.code)\n\t\t\t\t\t.showError({message: Loc.getMessage('JS_AVATAR_EDITOR_ERROR_IMAGE_IS_NOT_CHOSEN')});\n\t\t\t\tisSuccess = false;\n\t\t\t}\n\t\t\tconst title = this.getContentContainer()\n\t\t\t\t.querySelector('[data-bx-role=\"title\"]').value.trim();\n\t\t\tif (title.length <= 0)\n\t\t\t{\n\t\t\t\tthis.getContentContainer()\n\t\t\t\t\t.querySelector('[data-bx-role=\"title\"]').style.border = '3px solid red';\n\t\t\t\tisSuccess = false;\n\t\t\t}\n\t\t\tif (isSuccess)\n\t\t\t{\n\t\t\t\treturn resolve();\n\t\t\t}\n\t\t\treturn reject();\n\t\t});\n\t}\n\n\tsaveOpened(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst cb = ({blob}) => {\n\t\t\t\tBackend\n\t\t\t\t\t.saveMask({\n\t\t\t\t\t\tid: this.#data.id,\n\t\t\t\t\t\ttitle: this.getContentContainer()\n\t\t\t\t\t\t\t.querySelector('[data-bx-role=\"title\"]').value,\n\t\t\t\t\t\taccessCode: this.#data.accessCode\n\t\t\t\t\t}, blob)\n\t\t\t\t\t.then(resolve)\n\t\t\t\t\t.catch(reject)\n\t\t\t\t;\n\t\t\t}\n\t\t\tif (!this.isModified())\n\t\t\t{\n\t\t\t\treturn cb({blob: null});\n\t\t\t}\n\t\t\treturn this.#getEditor()\n\t\t\t\t.packBlob()\n\t\t\t\t.then(cb);\n\t\t})\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.#getEditor().reset();\n\t\tthis.getContentContainer()\n\t\t\t.querySelector('[data-bx-role=\"title\"]').value = '';\n\t\tthis.#data = null;\n\t\tthis.cache.storage.clear();\n\t}\n\n\t#showSlider(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tBX.SidePanel.Instance.open(this.#id, {\n\t\t\t\t\twidth: 800,\n\t\t\t\t\tcacheable: false,\n\t\t\t\t\tallowChangeHistory: false,\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tonCloseByEsc: (event) => {\n\t\t\t\t\t\t\tevent.denyAction();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonOpen: () => {\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tthis.emit('onOpen', {});\n\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonCloseComplete: this.destroy.bind(this),\n\t\t\t\t\t},\n\t\t\t\t\tcontentCallback: (slider) => {\n\t\t\t\t\t\treturn Layout.createContent({\n\t\t\t\t\t\t\textensions: [],\n\t\t\t\t\t\t\ttitle: Loc.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_TITLE'),\n\t\t\t\t\t\t\tcontent: () => {\n\t\t\t\t\t\t\t\tconst res = this.getContentContainer();\n\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\tthis.#getEditor().getCanvasZooming().setDefaultValue(0.5).reset();\n\t\t\t\t\t\t\t\t}, 0);\n\t\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbuttons: ({CancelButton, SaveButton}) => {\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tnew SaveButton({\n\t\t\t\t\t\t\t\t\t\tonclick: (button) => {\n\t\t\t\t\t\t\t\t\t\t\tbutton.setWaiting(true);\n\t\t\t\t\t\t\t\t\t\t\tthis\n\t\t\t\t\t\t\t\t\t\t\t\t.checkOpened()\n\t\t\t\t\t\t\t\t\t\t\t\t.then(this.saveOpened.bind(this))\n\t\t\t\t\t\t\t\t\t\t\t\t.then(({data}) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.emit('onSave', {id: this.#data.id, data: data});\n\t\t\t\t\t\t\t\t\t\t\t\t\tbutton.setWaiting(false);\n\t\t\t\t\t\t\t\t\t\t\t\t\tslider.close();\n\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBX.UI.Notification.Center.notify({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: ['Error is here', ...arguments].join('-')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbutton.setWaiting(false);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\tnew CancelButton({\n\t\t\t\t\t\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\t\t\t\t\t\tslider.close();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\ttext: Loc.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_LABEL'),\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t)\n\t}\n\n\t/**\n\t * Emits specified event with specified event object\n\t * @param {string} eventName\n\t * @param {BaseEvent | any} event\n\t * @return {this}\n\t */\n\temit(eventName: string, event?: BaseEvent): this\n\t{\n\t\tBX.SidePanel.Instance.postMessageAll(this.#id, eventName, event);\n\t\treturn this;\n\t}\n\n\tstatic #subscribedToASliderEvents = false\n\n\tstatic subscribe(eventName: string, listener: (event: BaseEvent) => void): void\n\t{\n\t\tEventEmitter.subscribe(([Options.eventNamespace, 'mask:editor', eventName].join(':')), listener);\n\t\tif (this.#subscribedToASliderEvents)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.#subscribedToASliderEvents = true;\n\t\tEventEmitter.subscribe('SidePanel.Slider:onMessage', ({data: [BXSidePanelMessageEvent]}) => {\n\t\t\tif (BXSidePanelMessageEvent.getSender().getUrl().indexOf([Options.eventNamespace, 'mask:editor'].join(':')) === 0)\n\t\t\t{\n\t\t\t\tEventEmitter.emit(\n\t\t\t\t\t[Options.eventNamespace, 'mask:editor', BXSidePanelMessageEvent.getEventId()].join(':'),\n\t\t\t\t\tBXSidePanelMessageEvent.getData()\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getInstance(): ?this\n\t{\n\t\tif (this.#instance)\n\t\t{\n\t\t\treturn this.#instance;\n\t\t}\n\n\t\tif (window === window.top)\n\t\t{\n\t\t\tif (!this.#instance)\n\t\t\t{\n\t\t\t\tthis.#instance = new this();\n\t\t\t}\n\t\t\treturn this.#instance;\n\t\t}\n\t\treturn null;\n\t}\n\n\tstatic getPromiseWithInstance(): Promise\n\t{\n\t\tif (this.#instance || this.getInstance())\n\t\t{\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tresolve(this.#instance);\n\t\t\t});\n\t\t}\n\n\t\treturn new Promise((resolve) => {\n\t\t\ttop\n\t\t\t\t.BX\n\t\t\t\t.Runtime\n\t\t\t\t.loadExtension(['ui.avatar-editor'])\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.#instance = top.BX.UI.AvatarEditor.MaskEditor.getInstance();\n\t\t\t\t\tresolve(this.#instance);\n\t\t\t\t});\n\t\t});\n\t}\n}\n","import {Dom, Tag, Text, Cache, Event, Loc} from 'main.core';\nimport {BaseEvent, EventEmitter} from 'main.core.events'\nimport {MenuManager, Popup} from 'main.popup';\nimport {MaskType} from '../editor';\nimport MaskEditor from './mask-editor';\n\nexport class MaskItem extends EventEmitter\n{\n\tstatic #repo: WeakMap<HTMLElement, MaskItem> = new WeakMap()\n\tcache = new Cache.MemoryCache();\n\tdata: MaskType;\n\t#template: String;\n\n\tconstructor(data: MaskType, template: String)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\t\tthis.data = data;\n\t\tthis.#template = template;\n\n\t\tMaskEditor.subscribe(\n\t\t\t'onSave',\n\t\t\t(event: BaseEvent) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst {data: {id, data}} = event;\n\t\t\t\t\tif (String(this.data.id) === String(id)) {\n\t\t\t\t\t\tthis.update(data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tconsole.log(e.message);\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst itemText = this.#template\n\t\t\t\t.replace(/#MASK_ID#/gi, Text.encode(this.data.id))\n\t\t\t\t.replace(/#MASK_TITLE#/gi, Text.encode(this.data.title || ''))\n\t\t\t\t.replace(/#MASK_SUBTITLE#/gi, Text.encode(this.data.description || ''))\n\t\t\t\t.replace(/#MASK_SRC#/gi, Text.encode(this.data.src));\n\n\t\t\tconst res = Tag.render`${itemText}`;\n\t\t\tEvent.bind(res.querySelector('[data-bx-role=\"mask-item-menu-pointer\"]'), 'click', this.onClickMenuPointer.bind(this));\n\n\t\t\tthis.constructor.#repo.set(res, this);\n\t\t\tEvent.bind(res, 'click', this.setActive.bind(this));\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tgetData(): MaskType\n\t{\n\t\treturn Object.assign({}, this.data);\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.data.id;\n\t}\n\n\tupdate(data: MaskType)\n\t{\n\t\tthis.data.title = data.title;\n\t\tthis.data.src = data.src;\n\t\tthis.data.description = data.description;\n\t\tthis.data.accessCode = data.accessCode;\n\t\tthis.data.editable = data.editable;\n\t\tconst oldContainer = this.getContainer();\n\t\tthis.cache.delete('container');\n\t\tconst newContainer = this.getContainer();\n\t\tDom.replace(oldContainer, newContainer);\n\t}\n\n\tsetActive()\n\t{\n\t\tthis.emit('onClickMask');\n\t}\n\n\tonClickMenuPointer(event)\n\t{\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tconst thisPopupId = 'mask-item-menu-context-' + this.data.id;\n\n\t\tconst thisPopup = (MenuManager.create(\n\t\t\tthisPopupId,\n\t\t\tevent.target,\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\thref: this.data.src,\n\t\t\t\t\tdataset: {\n\t\t\t\t\t\tid: 'download'\n\t\t\t\t\t},\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_DOWNLOAD_BUTTON'),\n\t\t\t\t\tonclick: (event, item) => {\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis.data.editable ?\n\t\t\t\t{\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_EDIT_BUTTON'),\n\t\t\t\t\tonclick: (event, item) => {\n\t\t\t\t\t\tthis.emit('onClickEditMask');\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t}\n\t\t\t\t} : null,\n\t\t\t\tthis.data.editable ?\n\t\t\t\t{\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_DELETE_BUTTON'),\n\t\t\t\t\tonclick:(event, item) => {\n\t\t\t\t\t\tthis.emit('onClickDeleteMask');\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t}\n\t\t\t\t} : null,\n\t\t\t],\n\t\t\t{\n\t\t\t\tcloseByEsc: true,\n\t\t\t\tautoHide: true,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 15,\n\t\t\t\tangle: true,\n\t\t\t\tcacheable: false,\n\t\t\t\ttargetContainer: event.target.closest('.ui-avatar-editor__mask-block-container'),\n\t\t\t\tclassName: 'popup-window-content-frame-item-menu',\n\t\t\t\tevents: {\n\t\t\t\t\tonFirstShow: ({compatData: [popup: Popup]}) => {\n\t\t\t\t\t\tpopup.getContentContainer().querySelector('[data-id=\"download\"]').setAttribute('download', '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t));\n\t\tthisPopup.show();\n\t\tEventEmitter.subscribeOnce(\n\t\t\tthisPopup.getPopupWindow().getEventNamespace() + ':onBeforeShow',\n\t\t\t() => {\n\t\t\t\tthisPopup.close();\n\t\t\t})\n\t\t;\n\t\treturn false;\n\t}\n\n\tstatic getByNode(node): ?MaskItem\n\t{\n\t\treturn this.#repo.get(node);\n\t}\n}\n\n","import {Loc, Tag, Text, Cache, Dom} from 'main.core';\nimport {BaseEvent, EventEmitter} from 'main.core.events';\nimport {MaskItem} from './mask-item';\nimport {MaskType} from '../editor';\nimport Backend from \"../backend\";\nimport {Button, ButtonSize} from 'ui.buttons';\nimport MaskEditor from \"./mask-editor\";\n\nexport class MaskList extends EventEmitter\n{\n\tstatic repoList: WeakMap<HTMLElement, MaskList> = new WeakMap();\n\tstatic paginationStates = {ready: 0, inprogress: 1, finished: 3};\n\tstatic regularPageSize = 9;\n\tstatic shortPageSize = 3;\n\n\t#container: Element;\n\n\tcache = new Cache.MemoryCache();\n\n\t#state: String = this.constructor.paginationStates['ready'];\n\t#pageSize: Number = 10;\n\t#pageNumber: Number = 1;\n\n\tconstructor({initialPageSize, items})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\n\t\tthis.#container = this.getContainer()\n\t\t\t.querySelector('[data-bx-role=\"avatar-mask-list-container\"]');\n\n\t\tthis.#pageSize = this.constructor.regularPageSize;\n\t\tthis.loadItems(items);\n\n\t\tthis.setReady();\n\t}\n\n\tstatic getTemplate(): String\n\t{\n\t\treturn `<div>\n\t\t\t\t<div class=\"ui-avatar-editor--scope\" data-bx-role=\"avatar-mask-list-container\">\n\t\t\t\t\t<section class=\"ui-avatar-editor__mask-block-list-container\" id=\"mask_group\">\n\t\t\t\t\t\t<h3 class=\"ui-avatar-editor__mask-title\" data-bx-role=\"group_title\" data-bx-group-id=\"#GROUP_ID#\">#GROUP_TITLE#</h3>\n\t\t\t\t\t\t<ul class=\"ui-avatar-editor__mask-block-mask-box\" data-bx-role=\"group_body\" data-bx-group-id=\"#GROUP_ID#\">\n\t\t\t\t\t\t\t<li class=\"ui-avatar-editor__mask-block-mask-element\" \n\t\t\t\t\t\t\t\tid=\"mask_item\"\n\t\t\t\t\t\t\t\tdata-bx-role=\"mask_item\"\n\t\t\t\t\t\t\t\ttitle=\"#MASK_TITLE# \\n #MASK_SUBTITLE#\"\n\t\t\t\t\t\t\t\tdata-bx-id=\"#MASK_ID#\">\n\t\t\t\t\t\t\t\t<div data-bx-role=\"mask-thumb\" class=\"ui-avatar-editor__mask-block-mask-image\" style=\"background-image: url('#MASK_SRC#'); \"/></div>\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-block-mask-name\">#MASK_TITLE#</div>\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-block-mask-subname\">#MASK_SUBTITLE#</div>\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-block-mask-menu\" data-bx-role=\"mask-item-menu-pointer\"></div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</section>\n\t\t\t\t</div>\n\t\t\t\t<nav class=\"ui-avatar-editor-pagination\" data-bx-role=\"avatar-mask-list-pagination\"></nav>\n\t\t\t</div>`\n\t\t;\n\t}\n\n\tstatic setByNode(node, object: MaskList)\n\t{\n\t\treturn this.repoList.set(node, object);\n\t}\n\n\tstatic getByNode(node): ?MaskList\n\t{\n\t\treturn this.repoList.get(node);\n\t}\n\n\t#getTemplateGroup(): String\n\t{\n\t\treturn this.cache.remember('templateGroup', () => {\n\t\t\tconst maskGroup = Tag.render`${this.constructor.getTemplate()}`.querySelector('#mask_group');\n\t\t\tconst maskItem = maskGroup.querySelector('#mask_item');\n\t\t\tmaskItem.parentNode.removeChild(maskItem);\n\t\t\tmaskGroup.removeAttribute('id');\n\t\t\treturn maskGroup.outerHTML.trim();\n\t\t});\n\t}\n\n\t#getTemplateItem(): String\n\t{\n\t\treturn this.cache.remember('templateItem', () => {\n\t\t\tconst maskItem = Tag.render`${this.constructor.getTemplate()}`.querySelector('#mask_item');\n\t\t\tmaskItem.removeAttribute('id');\n\t\t\treturn maskItem.outerHTML.trim();\n\t\t});\n\t}\n\n\tsetPageSize(pageSize: number): MaskList\n\t{\n\t\tthis.#pageSize = pageSize;\n\t\treturn this;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst res = Tag.render`${this.constructor.getTemplate()}`;\n\t\t\tDom.remove(res.querySelector('#mask_item'))\n\t\t\tDom.remove(res.querySelector('#mask_group'))\n\t\t\treturn res;\n\t\t});\n\t}\n\n\tisReady()\n\t{\n\t\treturn (this.#state === this.constructor.paginationStates.ready);\n\t}\n\n\tsetReady()\n\t{\n\t\tthis.getMoreButton().setWaiting(false);\n\t\tthis.#state = this.constructor.paginationStates.ready;\n\t}\n\n\tsetBusy()\n\t{\n\t\tthis.getMoreButton().setWaiting(true);\n\t\tthis.#state = this.constructor.paginationStates.inprogress;\n\t}\n\n\tsetFinished()\n\t{\n\t\tthis.getMoreButton().setDisabled(true);\n\t\tthis.#state = this.constructor.paginationStates.finished;\n\t\tDom.remove(this.getContainer().querySelector('[data-bx-role=\"avatar-mask-list-pagination\"]'));\n\t}\n\n\tgetMoreButton(): Button\n\t{\n\t\treturn this.cache.remember('moreButton', () => {\n\t\t\tconst butt = new Button({\n\t\t\t\ttext: Loc.getMessage('UI_AVATAR_EDITOR_MASK_LIST_PAGINATION'),\n\t\t\t\tbaseClass: 'ui-btn ui-btn-light-border',\n\t\t\t\tsize: ButtonSize.SMALL,\n\t\t\t\tnoCaps: true,\n\t\t\t\tround: true,\n\t\t\t\tonclick: this.load.bind(this)\n\t\t\t});\n\t\t\tbutt.renderTo(this.getContainer().querySelector('[data-bx-role=\"avatar-mask-list-pagination\"]'));\n\t\t\treturn butt;\n\t\t});\n\t}\n\n\tload(): void\n\t{\n\t\tif (!this.isReady())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.setBusy();\n\n\t\tBackend.getMaskList(\n\t\t\tthis.constructor.name.replace('Mask', ''),\n\t\t\t{page: ++this.#pageNumber, size: this.#pageSize})\n\t\t\t.then(this.loadItems.bind(this))\n\t\t\t.catch(this.terminate.bind(this))\n\t\t;\n\t}\n\n\tloadItems(items)\n\t{\n\t\tthis.renderItems(items);\n\t\tthis.finish(items);\n\t}\n\n\trenderItems(data)\n\t{\n\t\tlet maxCount = this.#pageSize;\n\t\tObject\n\t\t\t.values(data)\n\t\t\t.forEach(({id, title, items}) =>\n\t\t\t{\n\t\t\t\tif (maxCount <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\titems = Object.values(items).slice(0, maxCount);\n\t\t\t\tmaxCount -= items.length;\n\n\t\t\t\tid = id || '0';\n\t\t\t\tif (!this.#container.querySelector(`[data-bx-group-id=\"${id}\"][data-bx-role=\"group_body\"]`))\n\t\t\t\t{\n\t\t\t\t\tconst groupText = this.#getTemplateGroup()\n\t\t\t\t\t\t.replace(/#GROUP_ID#/gi, Text.encode(id))\n\t\t\t\t\t\t.replace(/#GROUP_TITLE#/gi, Text.encode(title || ''))\n\t\t\t\t\tthis.#container.appendChild(Tag.render`${groupText}`);\n\t\t\t\t}\n\t\t\t\tconst badgeContainer = this.#container.querySelector(`[data-bx-group-id=\"${id}\"][data-bx-role=\"group_body\"]`);\n\t\t\t\titems.forEach((item: MaskType) => {\n\t\t\t\t\tconst maskItem = new MaskItem(item, this.#getTemplateItem());\n\t\t\t\t\tbadgeContainer.appendChild(maskItem.getContainer());\n\t\t\t\t});\n\t\t\t})\n\t\t;\n\t}\n\n\trenderItemsReverse(data)\n\t{\n\t\tObject\n\t\t\t.values(data)\n\t\t\t.forEach(({id, title, items}) =>\n\t\t\t{\n\t\t\t\tid = id || '0';\n\t\t\t\tif (!this.#container.querySelector(`[data-bx-group-id=\"${id}\"][data-bx-role=\"group_body\"]`))\n\t\t\t\t{\n\t\t\t\t\tconst groupText = this.#getTemplateGroup()\n\t\t\t\t\t\t.replace(/#GROUP_ID#/gi, Text.encode(id))\n\t\t\t\t\t\t.replace(/#GROUP_TITLE#/gi, Text.encode(title || ''));\n\t\t\t\t\tDom.prepend(Tag.render`${groupText}`, this.#container);\n\t\t\t\t}\n\t\t\t\tconst badgeContainer = this.#container.querySelector(`[data-bx-group-id=\"${id}\"][data-bx-role=\"group_body\"]`);\n\t\t\t\titems.forEach((item: MaskType) => {\n\t\t\t\t\tconst maskItem = new MaskItem(item, this.#getTemplateItem());\n\t\t\t\t\tDom.prepend(maskItem.getContainer(), badgeContainer);\n\t\t\t\t});\n\t\t\t})\n\t\t;\n\t}\n\n\tfinish(data)\n\t{\n\t\tlet thisPageItemCount = 0;\n\t\tdata.forEach(({items}) =>\n\t\t{\n\t\t\tthisPageItemCount += items.length;\n\t\t});\n\t\tif (thisPageItemCount >= this.#pageSize)\n\t\t{\n\t\t\tthis.setReady();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setFinished();\n\t\t}\n\t}\n\n\tterminate(data)\n\t{\n\t\tlet errors = [];\n\t\tif (data instanceof Error)\n\t\t{\n\t\t\tconsole.log('data: ', data);\n\n\t\t\terrors.push(data);\n\t\t}\n\t\telse if (data['errors'])\n\t\t{\n\t\t\terrors = data.errors;\n\t\t}\n\t\telse\n\t\t{\n\t\t\terrors.push({message: 'Some error'});\n\t\t}\n\t\tthis.setFinished();\n\t\terrors.forEach(({code, message}) => {\n\t\t\tthis.#container.appendChild(\n\t\t\t\tTag.render`<pre>${Text.encode(message)}</pre>`\n\t\t\t)\n\t\t});\n\t}\n}\n\nexport class MaskRecentlyUsedList extends MaskList{}\n\nexport class MaskSystemList extends MaskList {}\n\nexport class MaskUserList extends MaskList {\n\tconstructor()\n\t{\n\t\tsuper(...arguments);\n\t\tMaskEditor.subscribe(\n\t\t\t'onSave',\n\t\t\t(event: BaseEvent) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst {data: {id, data}} = event;\n\t\t\t\t\tif (id === null)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.renderItemsReverse({'doesNotMatter': {items: [data]}})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tconsole.log(e.message);\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n}\n\nexport class MaskSharedList extends MaskList {}\n","import {Dom, Tag, Loc, Type, Event} from 'main.core';\nimport DefaultTab from './default-tab';\nimport {MaskList, MaskRecentlyUsedList, MaskSystemList, MaskUserList, MaskSharedList} from '../mask-tool/mask-list';\nimport MaskEditor from '../mask-tool/mask-editor';\nimport {BaseEvent, EventEmitter} from \"main.core.events\";\nimport {MaskItem} from \"../mask-tool/mask-item\";\nimport {MaskType} from \"../editor\";\nimport Backend from \"../backend\";\nimport {MenuManager} from \"main.popup\";\nimport {MessageBox, MessageBoxButtons} from 'ui.dialogs.messagebox';\nimport {Loader} from \"main.loader\";\n\nexport default class MaskTab extends DefaultTab\n{\n\tstatic maxCount = 5;\n\tstatic priority = 4;\n\t#ready: boolean = false;\n\t#callbacks: Array = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.badges = null;\n\t\tthis.activeId = null;\n\t\tthis.mask = this.mask.bind(this)\n\t\tthis.subscribeOnce('onActive', this.initialize.bind(this));\n\t}\n\n\tgetHeader(): ?String\n\t{\n\t\treturn Loc.getMessage('JS_AVATAR_EDITOR_MASKS');\n\t}\n\n\tgetBody(): String| Element\n\t{\n\t\treturn this.cache.remember('body', () => {\n\t\t\treturn Tag.render\n\t\t\t`<div class=\"ui-avatar-editor__mask-block-container\">\n\t\t\t\t<div class=\"ui-avatar-editor__mask-block-content\">\n\t\t\t\t\t<div data-bx-role=\"semantic-container\" data-bx-id=\"recently-used\" style=\"display: none;\">\n\t\t\t\t\t\t<h3 class=\"ui-avatar-editor__mask-title\">${Loc.getMessage('JS_AVATAR_EDITOR_RECENT_MASKS')}</h3>\n\t\t\t\t\t\t<div data-bx-role=\"list-container\" data-bx-id=\"recently-used\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div data-bx-role=\"list-container\" data-bx-id=\"system\"></div>\n\t\t\t\t\t<div data-bx-role=\"semantic-container\" data-bx-id=\"shared\" style=\"display: none\">\n\t\t\t\t\t\t<h3 class=\"ui-avatar-editor__mask-title\">${Loc.getMessage('UI_AVATAR_EDITOR_MASK_LIST_SHARED')}</h3>\n\t\t\t\t\t\t<div data-bx-role=\"list-container\" data-bx-id=\"shared\">\n\t\t\t\t\t\t\t<a class=\"ui-btn ui-btn-lg ui-btn-link ui-btn-wait ui-btn-no-caps ui-btn-icon-add\">...</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div data-bx-role=\"semantic-container\" data-bx-id=\"my-own\">\n\t\t\t\t\t\t<h3 class=\"ui-avatar-editor__mask-title\" data-bx-id=\"rest-market-export-menu\">\n\t\t\t\t\t\t\t${Loc.getMessage('UI_AVATAR_EDITOR_MASK_LIST_MY_OWN')}\n\t\t\t\t\t\t\t<div data-bx-id=\"rest-market-export-menu-pointer\" class=\"ui-avatar-editor__menu-more\"></div>\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<div data-bx-role=\"list-container\" data-bx-id=\"my-own\"></div>\n\n\t\t\t\t\t\t<a href=\"#\" class=\"ui-avatar-editor__mask-create-box\" data-bx-role=\"semantic-container\" data-bx-id=\"rest-market\" style=\"display: none;\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-btn-load\">\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-btn-load-icon\"></div>\n\t\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_LOAD_FROM_MARKET')}\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-btn-load-cloud\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-create-box\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__mask-btn-add\" data-bx-id=\"avatar-mask-list-own-create\">${Loc.getMessage('UI_AVATAR_EDITOR_MASK_ADD_MY_OWN')}</div>\n\t\t\t\t\t\t\t<a href=\"/bitrix/js/ui/avatar-editor/dist/user_frame_template.zip\" download class=\"ui-avatar-editor__mask-link\">${Loc.getMessage('UI_AVATAR_EDITOR_MASK_DOWNLOAD_TEMPLATE1')}</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>`;\n\t\t});\n\t}\n\n\tinitialize()\n\t{\n\t\tBackend\n\t\t\t.getMaskInitialInfo({size: MaskList.regularPageSize, recentlyUsedListSize: MaskList.shortPageSize})\n\t\t\t.then(this.initializeData.bind(this))\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log('errors: ', error);\n\t\t\t});\n\t}\n\n\tinitializeData({recentlyUsedItems, systemItems, myOwnItems, sharedItems, restMarketInfo})\n\t{\n\t\tconst body = this.getBody();\n\t\tif (Loc.getMessage('USER_ID') > 0)\n\t\t{\n\t\t\tEvent.bind(\n\t\t\t\tbody.querySelector('[data-bx-id=\"avatar-mask-list-own-create\"]'),\n\t\t\t\t'click',\n\t\t\t\tthis.onClickCreateMask.bind(this)\n\t\t\t);\n\n\t\t\tEventEmitter.subscribe(this.getEventNamespace() + ':' + 'onClickEditMask', this.onClickEditMask.bind(this));\n\t\t\tEventEmitter.subscribe(this.getEventNamespace() + ':' + 'onClickDeleteMask', this.onClickDeleteMask.bind(this));\n\t\t}\n\t\tif (restMarketInfo['available'] === 'Y')\n\t\t{\n\t\t\tconst menuItem = body.querySelector('[data-bx-id=\"rest-market-export-menu\"]');\n\t\t\tDom.addClass(menuItem, '--menuable');\n\t\t\tEvent.bind(\n\t\t\t\tmenuItem.querySelector('[data-bx-id=\"rest-market-export-menu-pointer\"]'),\n\t\t\t\t'click',\n\t\t\t\t(event) => {\n\t\t\t\t\tthis.onClickOwnMaskMenu(event, restMarketInfo);\n\t\t\t\t})\n\t\t\t;\n\t\t\tconst marketLink = body.querySelector('[data-bx-role=\"semantic-container\"][data-bx-id=\"rest-market\"]');\n\t\t\tmarketLink.style.display = '';\n\t\t\tmarketLink.href = restMarketInfo['marketUrl'];\n\t\t}\n\n\t\t[\n\t\t\t[MaskRecentlyUsedList, recentlyUsedItems, body.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"recently-used\"]')],\n\t\t\t[MaskSystemList, systemItems, body.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"system\"]')],\n\t\t\t[MaskUserList, myOwnItems, body.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"my-own\"]')],\n\t\t\t[MaskSharedList, sharedItems, body.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"shared\"]')],\n\t\t].forEach(([className, items, container]) => {\n\t\t\titems = items || [];\n\t\t\tif (items.length > 0)\n\t\t\t{\n\t\t\t\tconst semanticContainer = container.closest('[data-bx-role=\"semantic-container\"]');\n\t\t\t\tif (semanticContainer)\n\t\t\t\t{\n\t\t\t\t\tsemanticContainer.style.display = '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontainer.innerHTML = '';\n\t\t\t/**\n\t\t\t * @typedef {MaskList} list\n\t\t\t */\n\t\t\tconst list = new className({\n\t\t\t\tinitialPageSize: this.constructor.initialPageSize,\n\t\t\t\titems: items\n\t\t\t});\n\t\t\tcontainer.appendChild(list.getContainer());\n\t\t\tMaskList.setByNode(container, list);\n\t\t});\n\t\tEventEmitter.subscribe(\n\t\t\tthis.getEventNamespace() + ':' + 'onClickMask',\n\t\t\t({target: maskItem}: BaseEvent) => {\n\t\t\t\t/**\n\t\t\t\t * @typedef {MaskItem} maskItem\n\t\t\t\t */\n\t\t\t\tif (this.getBody().contains(maskItem.getContainer()))\n\t\t\t\t{\n\t\t\t\t\tif (this.activeId === maskItem.getId())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.unmask();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.mask(maskItem.getData());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\n\t\tthis.#ready = true;\n\t\tthis.fulfillReadyCallbacks();\n\t}\n\n\tonReady(callback: Function)\n\t{\n\t\tthis.#callbacks.push(callback);\n\t\tif (this.#ready)\n\t\t{\n\t\t\tthis.fulfillReadyCallbacks();\n\t\t}\n\t}\n\n\t#fulfillReadyCallbacksTimeout: ?Number\n\n\tfulfillReadyCallbacks()\n\t{\n\t\tif (this.#fulfillReadyCallbacksTimeout > 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst callback = this.#callbacks.shift();\n\t\tif (callback)\n\t\t{\n\t\t\tif (this.#callbacks.length > 0)\n\t\t\t{\n\t\t\t\tthis.#fulfillReadyCallbacksTimeout = setTimeout(() => {\n\t\t\t\t\tthis.#fulfillReadyCallbacksTimeout = 0;\n\t\t\t\t\tthis.fulfillReadyCallbacks();\n\t\t\t\t}, 10);\n\t\t\t}\n\t\t\tcallback.call(this);\n\t\t}\n\t}\n\n\tunmask()\n\t{\n\t\tif (this.activeId !== null)\n\t\t{\n\t\t\tlet foundAtLeastOneNode;\n\t\t\tthis\n\t\t\t\t.getBody()\n\t\t\t\t.querySelectorAll(`[data-bx-role=\"mask_item\"][data-bx-id=\"${this.activeId}\"]`)\n\t\t\t\t.forEach((node) => {\n\t\t\t\t\tfoundAtLeastOneNode = node;\n\t\t\t\t\tDom.removeClass(node, '--active');\n\t\t\t\t})\n\t\t\t;\n\t\t\tif (foundAtLeastOneNode)\n\t\t\t{\n\t\t\t\tthis.emit('onUnsetMask', this.activeId);\n\t\t\t}\n\t\t}\n\t\tthis.activeId = null;\n\t}\n\n\tmaskById(id)\n\t{\n\t\tthis.onReady(() => {\n\t\t\tconst maskItem = MaskItem.getByNode(\n\t\t\t\tthis\n\t\t\t\t\t.getBody()\n\t\t\t\t\t.querySelector(`[data-bx-role=\"mask_item\"][data-bx-id=\"${id}\"]`)\n\t\t\t);\n\t\t\tif (maskItem instanceof MaskItem)\n\t\t\t{\n\t\t\t\tmaskItem.setActive();\n\t\t\t}\n\t\t})\n\t}\n\n\tmask({id, src, thumb}: MaskType): void\n\t{\n\t\tif (this.activeId !== id && Type.isStringFilled(id))\n\t\t{\n\t\t\tthis.unmask();\n\t\t\tlet foundAtLeastOneNode;\n\t\t\tthis\n\t\t\t\t.getBody()\n\t\t\t\t.querySelectorAll(`[data-bx-role=\"mask_item\"][data-bx-id=\"${id}\"]`)\n\t\t\t\t.forEach((node) => {\n\t\t\t\t\tfoundAtLeastOneNode = node;\n\t\t\t\t\tDom.addClass(node, ' --active');\n\t\t\t\t})\n\t\t\t;\n\t\t\tif (foundAtLeastOneNode)\n\t\t\t{\n\t\t\t\tthis.activeId = id;\n\t\t\t\tthis.emit('onSetMask', {\n\t\t\t\t\tid: id,\n\t\t\t\t\tsrc: src,\n\t\t\t\t\tthumb: thumb || src\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tonClickCreateMask(event: BaseEvent)\n\t{\n\t\tevent.stopImmediatePropagation();\n\t\tMaskEditor\n\t\t\t.getPromiseWithInstance()\n\t\t\t.then((maskEditor: MaskEditor) => {\n\t\t\t\tmaskEditor.openNew();\n\t\t\t});\n\t}\n\n\tonClickEditMask(event: BaseEvent)\n\t{\n\t\t/* @var MaskItem maskItem */\n\t\tconst maskItem = event.getTarget();\n\t\tif (this.getBody().contains(maskItem.getContainer()))\n\t\t{\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tMaskEditor\n\t\t\t\t.getPromiseWithInstance()\n\t\t\t\t.then((maskEditor: MaskEditor) => {\n\t\t\t\t\tmaskEditor.openSaved(Object.assign({}, maskItem.getData()));\n\t\t\t\t});\n\t\t}\n\t}\n\n\t#deleteMaskVisually(maskItem: MaskItem)\n\t{\n\t\t/* @var MaskItem target */\n\t\tthis\n\t\t\t.getBody()\n\t\t\t.querySelectorAll(`[data-bx-role=\"mask_item\"][data-bx-id=\"${maskItem.getId()}\"]`)\n\t\t\t.forEach((node) => {\n\t\t\t\t// node.style.display = 'none';\n\t\t\t\tDom.remove(node);\n\t\t\t})\n\t\t;\n\t\tconst listContainer = this.getBodyContainer().querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"recently-used\"]');\n\t\tif (listContainer.childNodes.length <= 1)\n\t\t{\n\t\t\tconst semanticContainer = listContainer.closest('[data-bx-role=\"semantic-container\"]');\n\t\t\tif (semanticContainer)\n\t\t\t{\n\t\t\t\tsemanticContainer.style.display = 'none';\n\t\t\t}\n\t\t}\n\t\tif (String(this.activeId) === String(maskItem.getId()))\n\t\t{\n\t\t\tthis.unmask();\n\t\t}\n\t}\n\n\tonClickDeleteMask({target}: BaseEvent)\n\t{\n\t\tif (this.getBody().contains(target.getContainer()))\n\t\t{\n\t\t\t/* @var MaskItem target */\n\t\t\tthis.#deleteMaskVisually(target);\n\t\t\tBackend\n\t\t\t\t.deleteMask(target.getId())\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis\n\t\t\t\t\t\t.getBody()\n\t\t\t\t\t\t.querySelectorAll(`[data-bx-role=\"mask_item\"][data-bx-id=\"${target.getId()}\"]`)\n\t\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\t\tDom.remove(node);\n\t\t\t\t\t\t})\n\t\t\t\t\t;\n\t\t\t\t})\n\t\t\t\t.catch(({errors}) => {\n\t\t\t\t\tBX.UI.Notification.Center.notify({\n\t\t\t\t\t\tcontent: [Loc.getMessage('JS_AVATAR_EDITOR_ERROR'), ...(errors.map(({message, code}) => {return message||code;}))].join(' ')\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t;\n\t\t}\n\t}\n\n\tonClickOwnMaskMenu(event: BaseEvent, urls)\n\t{\n\t\tconst thisPopupId = 'mask-item-menu-context-own-masks';\n\t\tconst isFilled = !!this.getBody()\n\t\t\t.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"my-own\"]')\n\t\t\t.querySelector(`[data-bx-role=\"mask_item\"]`);\n\n\t\tconst thisPopup = (MenuManager.create(\n\t\t\tthisPopupId,\n\t\t\tevent.target,\n\t\t\t[\n\t\t\t\tisFilled && Type.isStringFilled(urls.exportUrl) ? {\n\t\t\t\t\thref: urls.exportUrl,\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_EXPORT_BUTTON'),\n\t\t\t\t\tonclick: (event, item) => {\n\t\t\t\t\t\tthis.emit('onClickExport');\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t}\n\t\t\t\t} : null,\n\t\t\t\tisFilled ? {\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_CLEAN_BUTTON'),\n\t\t\t\t\tonclick: (event, item) => {\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t\t(new MessageBox({\n\t\t\t\t\t\t\tmessage: Loc.getMessage('JS_AVATAR_EDITOR_CLEAN_NOTIFICATION'),\n\t\t\t\t\t\t\ttitle: Loc.getMessage('JS_AVATAR_EDITOR_CLEAN_NOTIFICATION_TITLE'),\n\t\t\t\t\t\t\tbuttons: MessageBoxButtons.OK_CANCEL,\n\t\t\t\t\t\t\tokCaption: 'Ok',\n\t\t\t\t\t\t\tonOk: (messageBox) => {\n\t\t\t\t\t\t\t\tmessageBox.close();\n\t\t\t\t\t\t\t\tthis.cleanUp();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})).show();\n\t\t\t\t\t}\n\t\t\t\t} : null,\n\t\t\t\t{\n\t\t\t\t\thref: urls.importUrl,\n\t\t\t\t\ttext: Loc.getMessage('JS_AVATAR_EDITOR_IMPORT_BUTTON'),\n\t\t\t\t\tonclick:(event, item) => {\n\t\t\t\t\t\tthis.emit('onClickImport');\n\t\t\t\t\t\titem.getMenuWindow().close();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t],\n\t\t\t{\n\t\t\t\tcloseByEsc: true,\n\t\t\t\tautoHide: true,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 15,\n\t\t\t\tangle: true,\n\t\t\t\tcacheable: false,\n\t\t\t\ttargetContainer: event.target.closest('.ui-avatar-editor__mask-block-container'),\n\t\t\t\tclassName: 'popup-window-content-frame-item-menu',\n\t\t\t}\n\t\t));\n\t\tthisPopup.show();\n\t\tEventEmitter.subscribeOnce(\n\t\t\tthisPopup.getPopupWindow().getEventNamespace() + ':onBeforeShow',\n\t\t\t() => {\n\t\t\t\tthisPopup.close();\n\t\t\t})\n\t\t;\n\t\treturn false;\n\t}\n\n\tcleanUp() //delete all my masks\n\t{\n\t\tconst container = this.getBody()\n\t\t\t.querySelector('[data-bx-role=\"list-container\"][data-bx-id=\"my-own\"]');\n\n\t\tconst loader = new Loader({\n\t\t\ttarget: container,\n\t\t\tcolor: 'rgba(82, 92, 105, 0.9)'\n\t\t});\n\t\tloader.show();\n\t\tBackend\n\t\t\t.cleanUp()\n\t\t\t.then(() => {\n\t\t\t\tMaskList.getByNode(container).setFinished();\n\t\t\t\tcontainer\n\t\t\t\t\t.querySelectorAll(`[data-bx-role=\"mask_item\"]`)\n\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\tthis.#deleteMaskVisually(MaskItem.getByNode(node));\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t\tloader.hide();\n\t\t\t});\n\t}\n\n\t//TODO delete this string and its using after testing\n\tstatic isAvailable(): boolean\n\t{\n\t\treturn Loc.getMessage('UI_AVATAR_MASK_IS_AVAILABLE') === true;\n\t}\n\n\tstatic get code()\n\t{\n\t\treturn 'mask';\n\t}\n}\n","import {Tag, Loc} from 'main.core';\nimport DefaultTab from './default-tab';\n\nexport default class CanvasTab extends DefaultTab\n{\n\tstatic priority = 1;\n\n\tgetHeader(): ?String\n\t{\n\t\treturn Loc.getMessage('JS_AVATAR_EDITOR_PHOTO');\n\t}\n\n\tgetBody(): Element\n\t{\n\t\treturn this.cache.remember('body', () => {\n\t\t\tconst res = Tag.render`\n\t\t\t\t<div class=\"ui-avatar-editor__content-block\" data-bx-role=\"tab-canvas-body\">\n\t\t\t\t\t<div class=\"ui-avatar-editor__control\" data-bx-role=\"canvas-zooming\">\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__control-controller\" data-bx-role=\"zoom-minus-button\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__control-minus\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__control-inner\" data-bx-role=\"zoom-scale\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__control-slide-container ui-avatar-editor__control-slide-drag-state\">\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__control-slide\" data-bx-role=\"zoom-knob\"></div>\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=\"ui-avatar-editor__control-controller\" data-bx-role=\"zoom-plus-button\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__control-plus\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-avatar-editor__camera-block-image\">\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__user-loader-item\" data-bx-role=\"canvas-loader\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__loader\">\n\t\t\t\t\t\t\t\t<svg class=\"ui-avatar-editor__circular\" viewBox=\"25 25 50 50\">\n\t\t\t\t\t\t\t\t\t<circle class=\"ui-avatar-editor__path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\" stroke-width=\"1\" stroke-miterlimit=\"10\"></circle>\n\t\t\t\t\t\t\t\t</svg>\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=\"ui-avatar-editor__error\" data-bx-role=\"canvas-error\">\n\t\t\t\t\t\t\t<span>${Loc.getMessage('JS_AVATAR_EDITOR_ERROR')}</span>\n\t\t\t\t\t\t\t<span data-bx-role=\"tab-canvas-error\"></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__user-avatar-item\" data-bx-role=\"canvas-holder\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__tab-avatar-image-item\"></span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div data-editor-role=\"canvas-holder\">\n\t\t\t\t\t\t\t<canvas data-bx-canvas=\"canvas\" height=\"330\" width=\"330\"></canvas>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-avatar-editor__button-layout\">\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__button\" data-bx-role=\"button-add-picture\" data-bx-id=\"upload-file\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__button-name\">${Loc.getMessage('JS_AVATAR_EDITOR_UPLOAD')}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__button\" data-bx-role=\"button-add-picture\" data-bx-id=\"snap-picture\">\n\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__button-name\">${Loc.getMessage('JS_AVATAR_EDITOR_SNAP')}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>`;\n\t\t\treturn res;\n\t\t})\n\t}\n\n\tstatic get code()\n\t{\n\t\treturn 'canvas';\n\t}\n}","import {Tag, Loc, Browser, Runtime, Type} from 'main.core';\n\nexport default class CanvasLoader\n{\n\tstatic instance: ?CanvasLoader = null;\n\t#justACounter: Number = 0;\n\t#queue: Map;\n\t#image: Element;\n\t#canvas: HTMLCanvasElement;\n\t#context: Element;\n\t#reader: ?FileReader;\n\t#isReady: boolean = true;\n\t#id: string;\n\n\tconstructor()\n\t{\n\t\tthis.#reader = new FileReader();\n\t\tthis.#queue = new Map();\n\t\tthis.#image = new Image();\n\t\tthis.#canvas = Tag.render`<canvas id=\"loadercanvas\"></canvas>`;\n\t\t// document.querySelector('#workarea-content').appendChild(this.#canvas);\n\t\tthis.#context = this.#canvas.getContext('2d');\n\t\tthis.#id = String((new Date()).getTime());\n\t}\n\n\t#load(itemId)\n\t{\n\t\tif (!this.#queue.has(itemId) || this.#isReady !== true)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#isReady = false;\n\t\tconst [file, successCallback, failCallback] = this.#queue.get(itemId);\n\n\t\tthis.#image.onload = function() {};\n\t\tthis.#image.onerror = function() {};\n\n\t\t/* Almost all browsers cache images from local resource except of FF on 06.03.2017. It appears that\n\t\tFF collect src and does not abort image uploading when src is changed. And we had a bug when in\n\t\tonload event we got e.target.src of one element but source of image was from '/bitrix/images/1.gif'. */\n\t\t// TODO check if chrome and other browsers cache local files for now. If it does not then delete next 2 strings\n\t\ttry {\n\t\t\twindow[\"URL\"][\"revokeObjectURL\"](this.#image.src);\n\t\t}\n\t\tcatch (e) {\n\n\t\t}\n\t\tif (!Browser.isFirefox())\n\t\t{\n\t\t\tthis.#image.src = '/bitrix/images/1.gif';\n\t\t}\n\n\t\tconst onFinish = () => {\n\t\t\tthis.#queue.delete(itemId);\n\t\t\tthis.#isReady = true;\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.#exec();\n\t\t\t}, 0);\n\t\t};\n\n\t\tconst onLoad = (e) => {\n\t\t\tconst image = e && e.target ? e.target : this.#image;\n\t\t\tif (image.src.indexOf('/bitrix/images/1.gif') >= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!!successCallback)\n\t\t\t{\n\t\t\t\tonFinish();\n\t\t\t\tsuccessCallback(image);\n\t\t\t}\n\t\t};\n\t\tconst onError = () => {\n\t\t\tif (!!failCallback)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tfailCallback();\n\t\t\t\t}\n\t\t\t\tcatch (e)\n\t\t\t\t{\n\t\t\t\t\tRuntime.debug(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tonFinish();\n\t\t}\n\n\t\tthis.#image.name = file.name;\n\t\tthis.#image.onload = onLoad;\n\t\tthis.#image.onerror = onError;\n\n\t\tif (Type.isPlainObject(file) && (file['src'] || file['tmp_url']))\n\t\t{\n\t\t\tconst src = file['src'] || file['tmp_url'];\n\t\t\tthis.#image.src = encodeURI(src) + (src.indexOf(\"?\") > 0 ? '&' : '?')\n\t\t\t\t+ 'imageUploader' + this.#id + (this.#justACounter++);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst res = Object.prototype.toString.call(file);\n\t\t\tif (res !== '[object File]' && res !== '[object Blob]')\n\t\t\t{\n\t\t\t\tonError();\n\t\t\t}\n\t\t\telse if (window[\"URL\"])\n\t\t\t{\n\t\t\t\tthis.#image.src = window[\"URL\"][\"createObjectURL\"](file);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.#reader.onloadend = (e) => {\n\t\t\t\t\tthis.#reader.onloadend = null;\n\t\t\t\t\tthis.#reader.onerror = null;\n\t\t\t\t\tthis.#image.src = e.target.result;\n\t\t\t\t};\n\t\t\t\tthis.#reader.onerror = () => {\n\t\t\t\t\tthis.#reader.onloadend = null;\n\t\t\t\t\tthis.#reader.onerror = null;\n\t\t\t\t\tonError();\n\t\t\t\t};\n\t\t\t\tthis.#reader.readAsDataURL(file);\n\t\t\t}\n\t\t}\n\t}\n\n\tpush(file, successCallback, failCallback)\n\t{\n\t\tconst id = [this.#id, this.#justACounter++].join('_');\n\t\tthis.#queue.set(id, [file, successCallback, failCallback]);\n\t\tthis.#exec();\n\t}\n\n\t#exec()\n\t{\n\t\tif (this.#isReady === true)\n\t\t{\n\t\t\tconst itemId = Array.from(this.#queue.keys()).shift();\n\t\t\tif (itemId)\n\t\t\t{\n\t\t\t\tthis.#load(itemId);\n\t\t\t}\n\t\t}\n\t}\n\n\tgetCanvas(): Element\n\t{\n\t\treturn this.#canvas;\n\t}\n\n\tgetContext(): Element\n\t{\n\t\treturn this.#context;\n\t}\n\n\tstatic #dataURLToBlob(dataURL)\n\t{\n\t\tlet marker = ';base64,', parts, contentType, raw, rawLength;\n\t\tif (dataURL.indexOf(marker) < 0)\n\t\t{\n\t\t\tparts = dataURL.split(',');\n\t\t\tcontentType = parts[0].split(':')[1];\n\t\t\traw = parts[1];\n\t\t\treturn new Blob([raw], {type: contentType});\n\t\t}\n\n\t\tparts = dataURL.split(marker);\n\t\tcontentType = parts[0].split(':')[1];\n\t\traw = window.atob(parts[1]);\n\t\trawLength = raw.length;\n\n\t\tconst uInt8Array = new Uint8Array(rawLength);\n\n\t\tfor(let i = 0; i < rawLength; ++i)\n\t\t{\n\t\t\tuInt8Array[i] = raw.charCodeAt(i);\n\t\t}\n\n\t\treturn new Blob([uInt8Array], {type: contentType});\n\t}\n\n\tpack(fileType)\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif (this.#canvas['toBlob'])\n\t\t\t\t{\n\t\t\t\t\tthis.#canvas.toBlob(resolve, fileType);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresolve(this.constructor.#dataURLToBlob(this.#canvas.toDataURL(fileType)));\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e)\n\t\t\t{\n\t\t\t\te.message = 'Packing error: ' + e.message;\n\t\t\t\treject(e);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getInstance(): CanvasLoader\n\t{\n\t\tif (this.instance === null)\n\t\t{\n\t\t\tthis.instance = new this();\n\t\t}\n\t\treturn this.instance;\n\t}\n\n\tstatic loadFile(file, successCallback, failCallback)\n\t{\n\t\tif (!window[\"FileReader\"])\n\t\t{\n\t\t\treturn failCallback(new Error({message: 'FileReader is not supported.'}));\n\t\t}\n\n\n\t\tlet newFile = file;\n\t\tif (Type.isString(file))\n\t\t{\n\t\t\tnewFile = {\n\t\t\t\tsrc: file,\n\t\t\t\tname: file.split('/').pop()\n\t\t\t}\n\t\t}\n\t\tthis.getInstance().push(newFile, successCallback, failCallback);\n\t}\n\n\tstatic loadCanvas()\n\t{\n\t\tthis.getInstance().getCanvas()\n\t}\n}\n","import {Dom, Loc, Type, Cache, Event} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Options} from '../options';\nimport CanvasLoader from \"./canvas-loader\";\n\n\nexport class CanvasDefault extends EventEmitter\n{\n\tstatic imageSize = {\n\t\twidth: 1024,\n\t\theight: 1024,\n\t};\n\n\t#isSet: Boolean = false;\n\t#canvas: HTMLCanvasElement;\n\t#ctx: CanvasRenderingContext2D;\n\n\t#table: Element;\n\t#tableCloth: Element;\n\t#tableFrame: Element;\n\n\t#stretchToCanvasSize = true;\n\n\tconstructor(canvas: Element, options: ?Object) {\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\n\t\tthis.#canvas = canvas;\n\t\tthis.#ctx = this.#canvas.getContext(\"2d\");\n\n\t\tthis.#table = this.#canvas.parentNode;\n\n\t\tif (this.#canvas.clientWidth)\n\t\t{\n\t\t\tthis.#table.width = this.#canvas.clientWidth;\n\t\t\tthis.#table.height = this.#canvas.clientHeight;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#table.width = this.#canvas.width;\n\t\t\tthis.#table.height = this.#canvas.height;\n\t\t}\n\n\t\tDom.adjust(this.#canvas, {\n\t\t\tstyle: {\n\t\t\t\t// 'background' : '#fdbd00',\n\t\t\t}}\n\t\t);\n\t\tDom.adjust(this.#table, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t\tborder: 'none',\n\t\t\t\tposition: 'relative',\n\t\t\t\toverflow: 'visible',\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\trole: 'table',\n\t\t\t\twidth: this.#table.width,\n\t\t\t\theight: this.#table.height,\n\t\t\t}\n\t\t})\n\n\t\tthis.#tableCloth = Dom.create('DIV');\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\t'border': 'none',\n\t\t\t\t// 'background' : '#ffd7e1',\n\t\t\t\t'position' : 'absolute',\n\t\t\t\t'display': 'flex',\n\t\t\t\t'align-items': 'center',\n\t\t\t\t'justify-content': 'center',\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\trole: 'tableCloth'\n\t\t\t}\n\t\t});\n\t\tthis.#tableCloth.appendChild(this.#canvas);\n\t\tthis.#table.appendChild(this.#tableCloth);\n\n\t\tthis.#tableFrame = Dom.create('DIV');\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\t'box-sizing': 'border-box',\n\t\t\t\t// 'border' : '4px dotted grey',\n\t\t\t\t'position' : 'absolute',\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\trole: 'tableFrame'\n\t\t\t}\n\t\t});\n\t\tthis.#tableCloth.appendChild(this.#tableFrame);\n\n\t\tthis.mouseMove = this.mouseMove.bind(this);\n\t\tthis.stopMoving = this.stopMoving.bind(this);\n\n\t\tthis.#stretchToCanvasSize = !(options && options.stretchToCanvasSize === false);\n\n\t\tthis.reset();\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn !this.#isSet;\n\t}\n\n\treset()\n\t{\n\t\tthis.#ctx.clearRect(0, 0, this.#canvas.width, this.#canvas.height);\n\t\tthis.#isSet = false;\n\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t}\n\t\t});\n\n\t\tDom.adjust(this.#canvas, {\n\t\t\tstyle: {\n\t\t\t\ttransform: 'none',\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t}\n\t\t});\n\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${this.#table.width}px`,\n\t\t\t\theight: `${this.#table.height}px`,\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t}\n\t\t});\n\n\t\tthis.disableToMove();\n\n\t\tthis.emit('onReset', this.#canvas);\n\t}\n\n\tset(imageNode)\n\t{\n\t\t//region set image\n\t\tconst image = {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tscale: 1,\n\t\t\tname: imageNode[\"name\"]\n\t\t};\n\n\t\tif (imageNode.clientWidth)\n\t\t{\n\t\t\timage.width = imageNode.clientWidth;\n\t\t\timage.height = imageNode.clientHeight;\n\t\t}\n\t\telse\n\t\t{\n\t\t\timage.width = imageNode.width;\n\t\t\timage.height = imageNode.height;\n\t\t}\n\t\tif (image.width <= 0 || image.height <= 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst scaleForImage = Math.ceil(Math.max(\n\t\t\t(image.width > Options.imageSize ? Options.imageSize / image.width : (\n\t\t\t\tthis.#stretchToCanvasSize !== false && image.width < this.#table.width\n\t\t\t\t\t? this.#table.width / image.width : 1\n\t\t\t)),\n\t\t\t(image.height > Options.imageSize ? Options.imageSize / image.height : (\n\t\t\t\tthis.#stretchToCanvasSize !== false && image.height < this.#table.height\n\t\t\t\t\t? this.#table.height / image.height : 1\n\t\t\t))\n\t\t) * 1000) / 1000;\n\n\t\timage.width = Math.ceil(image.width * scaleForImage);\n\t\timage.height = Math.ceil(image.height * scaleForImage);\n\n\t\tconst k = Math.ceil(Math.max(\n\t\t\t(image.width > 0 ? this.#table.width / image.width : 1),\n\t\t\t(image.height > 0 ? this.#table.height / image.height : 1)\n\t\t) * 1000) / 1000;\n\n\t\timage.scale = (0 < k && k < 1 ? k : 1);\n\n\n\t\tDom.adjust(\n\t\t\tthis.#canvas,\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\twidth: image.width,\n\t\t\t\t\theight: image.height\n\t\t\t\t},\n\t\t\t\tstyle: {\n\t\t\t\t\twidth: image.width + 'px',\n\t\t\t\t\theight: image.height + 'px',\n\t\t\t\t\ttransform:\n\t\t\t\t\t\t'scale(' + image.scale + ', ' + image.scale + ')'\n\t\t\t\t},\n\t\t\t\tdataset: {\n\t\t\t\t\twidth: image.width,\n\t\t\t\t\theight: image.height,\n\t\t\t\t\tscale: image.scale,\n\t\t\t\t\tinitialScale: image.scale,\n\t\t\t\t\thasChanged: false\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.#isSet = true;\n\t\tthis.#ctx.drawImage(imageNode, 0, 0, image.width, image.height);\n\t\t//endregion\n\n\t\t//region set TableCloth\n\t\tconst tableFrame = {\n\t\t\twidth: this.#table.width,\n\t\t\theight: this.#table.height,\n\t\t};\n\n\t\tconst tableCloth = {\n\t\t\twidth: 2 * tableFrame.width + Math.ceil(image.scale * image.width),\n\t\t\theight: 2 * tableFrame.height + Math.ceil(image.scale * image.height),\n\t\t\tleft: (-1) * Math.ceil((tableFrame.width + image.scale * image.width) / 2),\n\t\t\ttop: (-1) * Math.ceil((tableFrame.height + image.scale * image.height) / 2)\n\t\t};\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${tableCloth.width}px`,\n\t\t\t\theight: `${tableCloth.height}px`,\n\t\t\t\ttop: `${tableCloth.top}px`,\n\t\t\t\tleft: `${tableCloth.left}px`\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\ttop: tableCloth.top,\n\t\t\t\tleft: tableCloth.left,\n\t\t\t\ttopToBeInTheCenter: tableCloth.top,\n\t\t\t\tleftToBeInTheCenter: tableCloth.left,\n\t\t\t\theight: tableCloth.height,\n\t\t\t\twidth: tableCloth.width,\n\t\t\t}\n\t\t});\n\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${tableCloth.top * (-1)}px`,\n\t\t\t\tleft: `${tableCloth.left * (-1)}px`\n\t\t\t}}\n\t\t);\n\t\t//endregion\n\n\t\tthis.enableToMove();\n\n\t\tthis.emit('onSetImage', {canvas: this.#canvas});\n\t}\n\n\tscale(zoomScale)\n\t{\n\t\tzoomScale = Math.max(0.01, (1 + zoomScale));\n\t\tconst oldScale = Number(this.#canvas.dataset.scale);\n\t\tconst newScale = zoomScale * Number(this.#canvas.dataset.initialScale);\n\t\t//region set image\n\t\tDom.adjust(\n\t\t\tthis.#canvas,\n\t\t\t{\n\t\t\t\tstyle: {\n\t\t\t\t\ttransform: 'scale(' + newScale + ', ' + newScale + ')'\n\t\t\t\t},\n\t\t\t\tdataset: {\n\t\t\t\t\tscale: newScale,\n\t\t\t\t\thasChanged: true\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t//endregion\n\n\t\t//region set TableCloth\n\t\tconst tableFrame = {\n\t\t\theight: this.#table.height,\n\t\t\twidth: this.#table.width,\n\t\t};\n\n\t\tconst tableCloth = {\n\t\t\theight: 2 * tableFrame.height + Math.ceil(newScale * Number(this.#canvas.dataset.height)),\n\t\t\twidth: 2 * tableFrame.width + Math.ceil(newScale * Number(this.#canvas.dataset.width)),\n\t\t\ttopToBeInTheCenter: (-1) * Math.ceil((tableFrame.height + newScale * Number(this.#canvas.dataset.height)) / 2),\n\t\t\tleftToBeInTheCenter: (-1) * Math.ceil((tableFrame.width + newScale * Number(this.#canvas.dataset.width)) / 2),\n\t\t\ttop: null,\n\t\t\tleft: null,\n\t\t};\n\t\tconst deltaTopOld = this.#tableCloth.dataset.top - this.#tableCloth.dataset.topToBeInTheCenter;\n\t\tconst deltaTop = deltaTopOld / oldScale * newScale;\n\t\ttableCloth.top = Math.ceil(tableCloth.topToBeInTheCenter + deltaTop);\n\t\ttableCloth.top = Math.max(\n\t\t\tMath.min(\n\t\t\t\ttableCloth.top,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(tableCloth.height) - tableFrame.height)\n\t\t);\n\n\t\tconst deltaLeftOld = (this.#tableCloth.dataset.left - this.#tableCloth.dataset.leftToBeInTheCenter);\n\t\tconst deltaLeft = deltaLeftOld / oldScale * newScale;\n\t\ttableCloth.left = Math.ceil(deltaLeft + tableCloth.leftToBeInTheCenter);\n\t\ttableCloth.left = Math.max(\n\t\t\tMath.min(\n\t\t\t\ttableCloth.left,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(tableCloth.width) - tableFrame.width)\n\t\t);\n\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${tableCloth.width}px`,\n\t\t\t\theight: `${tableCloth.height}px`,\n\t\t\t\ttop: `${tableCloth.top}px`,\n\t\t\t\tleft: `${tableCloth.left}px`\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\ttop: tableCloth.top,\n\t\t\t\tleft: tableCloth.left,\n\t\t\t\ttopToBeInTheCenter: tableCloth.topToBeInTheCenter,\n\t\t\t\tleftToBeInTheCenter: tableCloth.leftToBeInTheCenter,\n\t\t\t\theight: tableCloth.height,\n\t\t\t\twidth: tableCloth.width,\n\t\t\t}\n\t\t});\n\t\t//endregion\n\n\t\t//region set Table sights\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${tableCloth.top * (-1)}px`,\n\t\t\t\tleft: `${tableCloth.left * (-1)}px`\n\t\t\t}}\n\t\t);\n\t\t//endregion\n\n\n\t\tthis.emit('onScale', {\n\t\t\tzoomScale,\n\t\t\tscale: newScale,\n\t\t\ttopOffsetFromTheCenter: Number(this.#tableCloth.dataset.top) - Number(this.#tableCloth.dataset.topToBeInTheCenter),\n\t\t\tleftOffsetFromTheCenter: Number(this.#tableCloth.dataset.left) - Number(this.#tableCloth.dataset.leftToBeInTheCenter),\n\t\t\ttopInPercent: Math.ceil(this.#tableCloth.dataset.top * 1000 / Number(this.#tableCloth.dataset.topToBeInTheCenter)) / 1000,\n\t\t\tleftInPercent: Math.ceil(this.#tableCloth.dataset.left * 1000 / Number(this.#tableCloth.dataset.leftToBeInTheCenter)) / 1000,\n\t\t\toldScale,\n\t\t});\n\t}\n\n\tonScale({data: {oldScale, scale, topOffsetFromTheCenter, leftOffsetFromTheCenter, topInPercent, leftInPercent}})\n\t{\n\t\tconst deltaScale = scale / oldScale;\n\t\tlet top, left, newScale;\n\t\tif (Number(oldScale) === Number(this.#canvas.dataset.scale))\n\t\t{\n\t\t\tnewScale = scale;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tnewScale = this.#canvas.dataset.scale * deltaScale;\n\t\t}\n\n\t\t//region set image\n\t\tDom.adjust(\n\t\t\tthis.#canvas,\n\t\t\t{\n\t\t\t\tstyle: {\n\t\t\t\t\ttransform: 'scale(' + newScale + ', ' + newScale + ')'\n\t\t\t\t},\n\t\t\t\tdataset: {\n\t\t\t\t\tscale: newScale,\n\t\t\t\t\thasChanged: true\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t//endregion\n\n\t\t//region set TableCloth\n\t\tconst tableFrame = {\n\t\t\theight: this.#table.height,\n\t\t\twidth: this.#table.width,\n\t\t};\n\n\t\tconst tableCloth = {\n\t\t\theight: 2 * tableFrame.height + Math.ceil(newScale * Number(this.#canvas.dataset.height)),\n\t\t\twidth: 2 * tableFrame.width + Math.ceil(newScale * Number(this.#canvas.dataset.width)),\n\t\t\ttopToBeInTheCenter: (-1) * Math.ceil((tableFrame.height + newScale * Number(this.#canvas.dataset.height)) / 2),\n\t\t\tleftToBeInTheCenter: (-1) * Math.ceil((tableFrame.width + newScale * Number(this.#canvas.dataset.width)) / 2),\n\t\t\ttop: null,\n\t\t\tleft: null,\n\t\t};\n\n\t\tif (Number(scale) === Number(this.#canvas.dataset.scale))\n\t\t{\n\t\t\ttop = Number(this.#tableCloth.dataset.topToBeInTheCenter) + topOffsetFromTheCenter;\n\t\t\tleft = Number(this.#tableCloth.dataset.leftToBeInTheCenter) + leftOffsetFromTheCenter;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttop = Math.ceil(Number(this.#tableCloth.dataset.topToBeInTheCenter) * topInPercent);\n\t\t\tleft = Math.ceil(Number(this.#tableCloth.dataset.leftToBeInTheCenter) * leftInPercent);\n\t\t}\n\t\ttableCloth.top = Math.max(\n\t\t\tMath.min(\n\t\t\t\ttop,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.height) - this.#table.height)\n\t\t);\n\t\ttableCloth.left = Math.max(\n\t\t\tMath.min(\n\t\t\t\tleft,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.width) - this.#table.width)\n\t\t);\n\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\twidth: `${tableCloth.width}px`,\n\t\t\t\theight: `${tableCloth.height}px`,\n\t\t\t\ttop: `${tableCloth.top}px`,\n\t\t\t\tleft: `${tableCloth.left}px`\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\ttop: tableCloth.top,\n\t\t\t\tleft: tableCloth.left,\n\t\t\t\ttopToBeInTheCenter: tableCloth.topToBeInTheCenter,\n\t\t\t\tleftToBeInTheCenter: tableCloth.leftToBeInTheCenter,\n\t\t\t\theight: tableCloth.height,\n\t\t\t\twidth: tableCloth.width,\n\t\t\t}\n\t\t});\n\t\t//endregion\n\n\t\t//region set Table sights\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${tableCloth.top * (-1)}px`,\n\t\t\t\tleft: `${tableCloth.left * (-1)}px`\n\t\t\t}}\n\t\t);\n\t\t//endregion\n\t}\n\n\tenableToMove()\n\t{\n\t\tif (this.#table.style.cursor === 'move')\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#table.style.cursor = 'move';\n\t\tEvent.bind(this.#table, 'mousedown', (e) => {\n\t\t\tthis.cursor = {\n\t\t\t\tstartX : e.pageX,\n\t\t\t\tstartY : e.pageY\n\t\t\t};\n\t\t\tEvent.bind(document, 'mousemove', this.mouseMove);\n\t\t\tEvent.bind(document, 'mouseup', this.stopMoving);\n\t\t});\n\t}\n\n\tdisableToMove()\n\t{\n\t\tthis.#table.style.cursor = 'default';\n\t\tEvent.unbindAll(this.#table);\n\t\tEvent.unbind(document, 'mousemove', this.mouseMove);\n\t\tEvent.unbind(document, 'mouseup', this.stopMoving);\n\t}\n\n\tmove(deltaX, deltaY)\n\t{\n\t\t//region set image\n\t\tDom.adjust(\n\t\t\tthis.#canvas,\n\t\t\t{\n\t\t\t\tdataset: {\n\t\t\t\t\thasChanged: true\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t//endregion\n\n\t\t//region set TableCloth\n\t\tconst tableFrame = {\n\t\t\theight: this.#table.height,\n\t\t\twidth: this.#table.width,\n\t\t};\n\n\t\tconst left = Math.max(\n\t\t\tMath.min(\n\t\t\t\tNumber(this.#tableCloth.dataset.left) - deltaX,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.width) - tableFrame.width)\n\t\t);\n\t\tconst top = Math.max(\n\t\t\tMath.min(\n\t\t\t\tNumber(this.#tableCloth.dataset.top) - deltaY,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.height) - tableFrame.height)\n\t\t);\n\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${top}px`,\n\t\t\t\tleft: `${left}px`\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\ttop: top,\n\t\t\t\tleft: left\n\t\t\t}\n\t\t});\n\n\t\tthis.emit('onMove', {\n\t\t\ttopOffsetFromTheCenter: top - Number(this.#tableCloth.dataset.topToBeInTheCenter),\n\t\t\tleftOffsetFromTheCenter: left - Number(this.#tableCloth.dataset.leftToBeInTheCenter),\n\t\t\tscale: this.#canvas.dataset.scale,\n\t\t\ttopInPercent: Math.ceil(top * 1000 / Number(this.#tableCloth.dataset.topToBeInTheCenter)) / 1000,\n\t\t\tleftInPercent: Math.ceil(left * 1000 / Number(this.#tableCloth.dataset.leftToBeInTheCenter)) / 1000,\n\t\t});\n\t\t//region set Table sights\n\t\tDom.adjust(this.#tableFrame, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${top * (-1)}px`,\n\t\t\t\tleft: `${left * (-1)}px`\n\t\t\t}}\n\t\t);\n\t\t//endregion\n\t}\n\n\tonMove({data: {scale, topOffsetFromTheCenter, leftOffsetFromTheCenter, topInPercent, leftInPercent}})\n\t{\n\t\tlet top, left;\n\t\tif (Number(scale) === Number(this.#canvas.dataset.scale))\n\t\t{\n\t\t\ttop = Number(this.#tableCloth.dataset.topToBeInTheCenter) + topOffsetFromTheCenter;\n\t\t\tleft = Number(this.#tableCloth.dataset.leftToBeInTheCenter) + leftOffsetFromTheCenter;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttop = Math.ceil(Number(this.#tableCloth.dataset.topToBeInTheCenter) * topInPercent);\n\t\t\tleft = Math.ceil(Number(this.#tableCloth.dataset.leftToBeInTheCenter) * leftInPercent);\n\t\t}\n\t\tleft = Math.max(\n\t\t\tMath.min(\n\t\t\t\tleft,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.width) - this.#table.width)\n\t\t);\n\t\ttop = Math.max(\n\t\t\tMath.min(\n\t\t\t\ttop,\n\t\t\t\t0\n\t\t\t),\n\t\t\t(-1) * (Number(this.#tableCloth.dataset.height) - this.#table.height)\n\t\t);\n\n\t\tDom.adjust(this.#tableCloth, {\n\t\t\tstyle: {\n\t\t\t\ttop: `${top}px`,\n\t\t\t\tleft: `${left}px`\n\t\t\t},\n\t\t\tdataset: {\n\t\t\t\ttop: top,\n\t\t\t\tleft: left\n\t\t\t}\n\t\t});\n\t}\n\n\tmouseMove(e)\n\t{\n\t\tif (this.cursor === null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.move(this.cursor.startX - e.pageX, this.cursor.startY - e.pageY);\n\t\tthis.cursor.startX = e.pageX;\n\t\tthis.cursor.startY = e.pageY;\n\t}\n\n\tstopMoving()\n\t{\n\t\tBX.unbind(document, \"mousemove\", this.mouseMove);\n\t\tBX.unbind(document, \"mouseup\", this.stopMoving);\n\t}\n\n\tgetCanvas()\n\t{\n\t\treturn this.#canvas;\n\t}\n\n\tgetContext()\n\t{\n\t\treturn this.#ctx;\n\t}\n\n\tgetTable()\n\t{\n\t\treturn this.#table;\n\t}\n\n\tgetTableCloth()\n\t{\n\t\treturn this.#tableCloth;\n\t}\n\n\tpackBlob(): Promise\n\t{\n\t\tif (this.#isSet !== true)\n\t\t{\n\t\t\treturn Promise.reject({message: 'Source canvas does not exist.', code: 'empty data'});\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t//region set TableCloth\n\t\t\tconst tableFrame = {\n\t\t\t\theight: this.#table.height,\n\t\t\t\twidth: this.#table.width,\n\t\t\t};\n\t\t\tconst scale = this.#canvas.dataset.scale;\n\t\t\tconst size = Math.min(\n\t\t\t\tOptions.imageSize,\n\t\t\t\tMath.max(\n\t\t\t\t\tthis.#table.width / scale,\n\t\t\t\t\tthis.#table.width\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst scaleToResult = size / this.#table.width;\n\t\t\tconst loader = CanvasLoader.getInstance();\n\n\t\t\tloader.getCanvas().height = size;\n\t\t\tloader.getCanvas().width = size;\n\t\t\tloader.getContext().clearRect(0, 0, size, size);\n\t\t\t//region getY\n\t\t\tlet imageY, imageY1, imageY2;\n\t\t\tlet canvasY1, canvasY2;\n\n\t\t\timageY = ((-1) * (this.#tableCloth.dataset.topToBeInTheCenter\n\t\t\t\t - this.#tableCloth.dataset.top)\n\t\t\t\t + tableFrame.height / 2\n\t\t\t\t - this.#canvas.height * scale / 2\n\t\t\t );\n\n\t\t\tif (imageY > 0)\n\t\t\t{\n\t\t\t\tcanvasY1 = imageY;\n\t\t\t\timageY1 = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcanvasY1 = 0;\n\t\t\t\timageY1 = (-1) * imageY;\n\t\t\t}\n\n\t\t\timageY2 = imageY + this.#canvas.height * scale;\n\t\t\tif (imageY2 > tableFrame.height)\n\t\t\t{\n\t\t\t\tcanvasY2 = tableFrame.height;\n\t\t\t\timageY2 = tableFrame.height - imageY;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcanvasY2 = imageY2;\n\t\t\t\timageY2 = this.#canvas.height * scale;\n\t\t\t}\n\t\t\t//endregion\n\t\t\t//region getX\n\t\t\tlet imageX, imageX1, imageX2;\n\t\t\tlet canvasX1, canvasX2;\n\n\t\t\timageX = ((-1) * (this.#tableCloth.dataset.leftToBeInTheCenter\n\t\t\t\t\t- this.#tableCloth.dataset.left)\n\t\t\t\t+ tableFrame.width / 2\n\t\t\t\t- this.#canvas.width * scale / 2\n\t\t\t);\n\n\t\t\tif (imageX > 0)\n\t\t\t{\n\t\t\t\tcanvasX1 = imageX;\n\t\t\t\timageX1 = 0;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcanvasX1 = 0;\n\t\t\t\timageX1 = (-1) * imageX;\n\t\t\t}\n\n\t\t\timageX2 = imageX + this.#canvas.width * scale;\n\t\t\tif (imageX2 > tableFrame.width)\n\t\t\t{\n\t\t\t\tcanvasX2 = tableFrame.width;\n\t\t\t\timageX2 = tableFrame.width - imageX;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcanvasX2 = imageX2;\n\t\t\t\timageX2 = this.#canvas.width * scale;\n\t\t\t}\n\t\t\t//endregion\n\n\t\t\timageX1 /= scale;\n\t\t\timageX2 /= scale;\n\t\t\timageY1 /= scale;\n\t\t\timageY2 /= scale;\n\t\t\tcanvasX1 *= scaleToResult;\n\t\t\tcanvasY1 *= scaleToResult;\n\t\t\tcanvasX2 *= scaleToResult;\n\t\t\tcanvasY2 *= scaleToResult;\n\n\t\t\tloader.getContext().drawImage(\n\t\t\t\tthis.#canvas,\n\t\t\t\timageX1, imageY1, imageX2 - imageX1, imageY2 - imageY1,\n\t\t\t\tcanvasX1, canvasY1, canvasX2 - canvasX1, canvasY2 - canvasY1\n\t\t\t);\n\n\t\t\tconst changed = this.#canvas.dataset.changed;\n\t\t\tloader.pack()\n\t\t\t\t.then((blob) => {\n\t\t\t\t\tblob.changed = changed;\n\t\t\t\t\tblob.width = size;\n\t\t\t\t\tblob.height = size;\n\t\t\t\t\tresolve(blob);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n\n","import {Dom, Event, Loc} from 'main.core';\nimport {ImageType, CanvasDefault} from './canvas-default';\nimport CanvasLoader from './canvas-loader';\n\nexport default class CanvasMaster extends CanvasDefault\n{\n\t#fileName: ?String;\n\tload(file): Promise\n\t{\n\t\tthis.emit('onLoad');\n\t\tthis.#fileName = null;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.reset();\n\t\t\tCanvasLoader.loadFile(\n\t\t\t\tfile,\n\t\t\t\t(imageNode) => {\n\t\t\t\t\tthis.#fileName = imageNode.name;\n\t\t\t\t\tthis.set(imageNode);\n\t\t\t\t\tresolve();\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.emit('onError', Loc.getMessage('JS_AVATAR_EDITOR_ERROR_IMAGE_DEPLOYING'));\n\t\t\t\t\treject();\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t#applyNameAndExtensionToBlob(result: Blob): Blob\n\t{\n\t\tresult.name = this.#fileName || 'image';\n\t\tlet ext = result.name.split('.').pop().toLowerCase();\n\t\text = (ext === result.name ? '' : ext);\n\n\t\tif (result.type === 'image/png' && ext !== 'png')\n\t\t{\n\t\t\tif ('jpg,bmp,jpeg,jpe,gif,png,webp'.lastIndexOf(ext) > 0)\n\t\t\t{\n\t\t\t\tresult.name = result.name.substr(0, result.name.lastIndexOf('.'));\n\t\t\t}\n\t\t\tresult.name = [(result.name || 'image'), 'png'].join('.');\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetBlob(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.packBlob()\n\t\t\t\t.then((blob) => {\n\t\t\t\t\tthis.#applyNameAndExtensionToBlob(blob);\n\t\t\t\t\tresolve({blob});\n\t\t\t\t})\n\t\t\t\t.catch(reject);\n\t\t});\n\t}\n}\n","import {Dom} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport CanvasMaster from './canvas-master';\nimport {CanvasDefault} from \"./canvas-default\";\n\nexport default class CanvasPreview extends CanvasDefault\n{\n}\n\n","import {Event, Dom} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\n\nexport default class CanvasZooming extends EventEmitter\n{\n\t#stepSize = 0.01;\n\t#value = 0;\n\t#defaultValue = 0;\n\t#containerWidth = 0;\n\t#scale: Element;\n\t#knob: Element;\n\n\tconstructor({knob, scale, minus, plus}, defaultValue: ?Number)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\n\t\tEvent.bind(minus, 'click', () => {\n\t\t\tthis.#makeAStep(false)\n\t\t});\n\t\tEvent.bind(plus, 'click', () => {\n\t\t\tthis.#makeAStep(true)\n\t\t});\n\n\t\tthis.stopMoving = this.stopMoving.bind(this);\n\t\tthis.move = this.move.bind(this);\n\n\t\tEvent.bind(knob, 'mousedown', (event) => {\n\t\t\tthis.startMoving(event);\n\t\t});\n\t\tif (defaultValue)\n\t\t{\n\t\t\tthis.setDefaultValue(defaultValue);\n\t\t}\n\t\tthis.#scale = scale;\n\t\tthis.#knob = knob;\n\t\tthis.reset();\n\t}\n\n\tsetDefaultValue(defaultValue)\n\t{\n\t\tthis.#defaultValue = defaultValue > 0 && defaultValue <= 1 ? defaultValue : 0;\n\t\treturn this;\n\t}\n\n\tgetValue()\n\t{\n\t\treturn this.#value;\n\t}\n\n\t#getContainerWidth(): Number\n\t{\n\t\tif (this.#containerWidth > 0)\n\t\t{\n\t\t\treturn this.#containerWidth;\n\t\t}\n\t\tconst containerPos = Dom.getPosition(this.#scale);\n\t\tlet width = containerPos.width - Dom.getPosition(this.#knob).width;\n\t\tif (width > 0)\n\t\t{\n\t\t\tthis.#containerWidth = width;\n\t\t\treturn this.#containerWidth;\n\t\t}\n\t\treturn 0;\n\t}\n\n\treset()\n\t{\n\t\tthis.#value = this.#defaultValue;\n\t\tthis.#adjust();\n\t}\n\n\tsetValue(value)\n\t{\n\t\tvalue = Math.ceil(value * 1000) / 1000;\n\t\tif (value !== this.#value && value >= 0 && value <= 1)\n\t\t{\n\t\t\tthis.#value = value;\n\t\t\tthis.#adjust();\n\t\t\tthis.emit('onChange', this.#value - this.#defaultValue);\n\t\t}\n\t}\n\n\t#makeAStep(increase)\n\t{\n\t\tconst value = Math.min(\n\t\t\tMath.max(\n\t\t\t\tthis.getValue() + (increase === false ? (-1) : 1) * this.#stepSize,\n\t\t\t\t0),\n\t\t\t1\n\t\t);\n\t\tthis.setValue(value);\n\t}\n\n\t#adjust()\n\t{\n\t\tDom.adjust(this.#knob, {\n\t\t\tstyle: {\n\t\t\t\tleft: [Math.ceil(this.#getContainerWidth() * this.getValue()), 'px'].join('')\n\t\t\t}\n\t\t});\n\t}\n\n\tmove({pageX})\n\t{\n\t\tif (pageX > 0 && this.#getContainerWidth() > 0)\n\t\t{\n\t\t\tconst percent = (pageX - this.#knob.startPageX) / this.#getContainerWidth();\n\t\t\tthis.#knob.startPageX = pageX;\n\t\t\tthis.setValue(this.getValue() + percent);\n\t\t}\n\t}\n\n\tstartMoving({pageX})\n\t{\n\t\tthis.#knob.startPageX = pageX;\n\n\t\tEvent.bind(document, 'mousemove', this.move);\n\t\tEvent.bind(document, 'mouseup', this.stopMoving);\n\t}\n\n\tstopMoving()\n\t{\n\t\tEvent.unbind(document, 'mousemove', this.move);\n\t\tEvent.unbind(document, 'mouseup', this.stopMoving);\n\t}\n}\n","import {Text, Dom, Tag} from 'main.core';\nimport {EventEmitter} from \"main.core.events\";\nimport CanvasLoader from \"./canvas-loader\";\nimport {Options} from '../options';\n\ntype ActiveMaskType = {\n\tid: String,\n\tsrc: String\n};\n\nexport default class CanvasMask extends EventEmitter\n{\n\t#canvas: ?HTMLCanvasElement;\n\t#ctx: ?CanvasRenderingContext2D;\n\t#container: HTMLElement;\n\t#activeMask: ?ActiveMaskType = null;\n\n\tconstructor(container)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\t\tthis.#container = container;\n\t\tthis.set = this.set.bind(this);\n\t\tthis.mask = this.mask.bind(this);\n\t\tthis.unmask = this.unmask.bind(this);\n\t}\n\n\tmask({id, src, thumb})\n\t{\n\t\tDom.style(this.#container, 'background-image', 'url(\"' + Text.encode(thumb) + '\")');\n\t\tthis.#activeMask = {id, src};\n\t\tCanvasLoader.loadFile(\n\t\t\tsrc,\n\t\t\tthis.set,\n\t\t\tthis.unmask\n\t\t);\n\t}\n\n\tset(imageSource)\n\t{\n\t\t//region set image\n\t\tconst trueK = Math.max(\n\t\t\timageSource.width > 0 ? Options.maskSize / imageSource.width : 1,\n\t\t\timageSource.height > 0 ? Options.maskSize / imageSource.height : 1\n\t\t);\n\t\tconst sourceS = parseInt(Options.maskSize / trueK);\n\t\tconst sourceX = parseInt((imageSource.width - sourceS) / 2);\n\t\tconst sourceY = parseInt((imageSource.height - sourceS) / 2);\n\t\tthis.getCanvas().width = Options.maskSize;\n\t\tthis.getCanvas().height = Options.maskSize;\n\t\tthis.getContext().clearRect(0, 0, Options.maskSize, Options.maskSize);\n\t\tthis.getContext().drawImage(imageSource,\n\t\t\tsourceX, sourceY, sourceS, sourceS,\n\t\t\t0, 0, Options.maskSize, Options.maskSize\n\t\t);\n\t\t//endregion\n\t}\n\n\tapplyAndPack(imageSource: HTMLCanvasElement): Promise\n\t{\n\t\tif (this.#activeMask === null\n\t\t\t|| imageSource.width < 100\n\t\t\t|| imageSource.height < 100\n\t\t)\n\t\t{\n\t\t\treturn Promise.reject({message: 'Image for masking has not appropriate format', code: 'bad image'});\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tconst trueK = Math.max(\n\t\t\t\timageSource.width > 0 ? Options.maskSize / imageSource.width : 1,\n\t\t\t\timageSource.height > 0 ? Options.maskSize / imageSource.height : 1\n\t\t\t);\n\n\t\t\tconst sourceS = parseInt(Options.maskSize / trueK);\n\t\t\tconst sourceX = parseInt((imageSource.width - sourceS) / 2);\n\t\t\tconst sourceY = parseInt((imageSource.height - sourceS) / 2);\n\n\t\t\tconst loader = CanvasLoader.getInstance();\n\t\t\tloader.getCanvas().width = Options.maskSize;\n\t\t\tloader.getCanvas().height = Options.maskSize;\n\n\t\t\tloader.getContext().clearRect(0, 0, Options.maskSize, Options.maskSize);\n\t\t\tloader.getContext().drawImage(imageSource,\n\t\t\t\tsourceX, sourceY, sourceS, sourceS,\n\t\t\t\t0, 0, Options.maskSize, Options.maskSize\n\t\t\t);\n\t\t\tloader.getContext().drawImage(\n\t\t\t\tthis.getCanvas(),\n\t\t\t\t0, 0, Options.maskSize, Options.maskSize\n\t\t\t);\n\t\t\tloader\n\t\t\t\t.pack('image/png')\n\t\t\t\t.then(blob => {\n\t\t\t\t\tblob.name = 'mask.png';\n\t\t\t\t\tblob.maskId = this.#activeMask.id;\n\t\t\t\t\tresolve(blob, this.#activeMask.id);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\tgetCanvas(): HTMLCanvasElement\n\t{\n\t\tif (!this.#canvas)\n\t\t{\n\t\t\tthis.#canvas = document.createElement('CANVAS');\n\t\t}\n\t\treturn this.#canvas;\n\t}\n\n\tgetContext(): CanvasRenderingContext2D\n\t{\n\t\tif (!this.#ctx)\n\t\t{\n\t\t\tthis.#ctx = this.getCanvas().getContext(\"2d\");\n\t\t}\n\t\treturn this.#ctx;\n\t}\n\n\tunmask()\n\t{\n\t\tthis.#container.style.backgroundImage = '';\n\t\tthis.#activeMask = null;\n\t}\n}","import {Dom, Loc, Type, Cache, Tag, Event} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport DefaultTab from './tabs/default-tab';\nimport CameraTab from './tabs/camera-tab';\nimport MaskTab from './tabs/mask-tab';\nimport UploadTab from './tabs/upload-tab';\nimport CanvasTab from './tabs/canvas-tab';\nimport CanvasMaster from './canvas-tool/canvas-master';\nimport CanvasPreview from './canvas-tool/canvas-preview';\nimport CanvasZooming from \"./canvas-tool/canvas-zooming\";\nimport CanvasMask from \"./canvas-tool/canvas-mask\";\nimport CanvasLoader from \"./canvas-tool/canvas-loader\";\nimport {CanvasDefault} from \"./canvas-tool/canvas-default\";\n\nexport type MaskType = {\n\tid: String,\n\ttitle: String,\n\tsrc: String,\n\tdescription: ?String,\n\taccessCode: ?String,\n\teditable: boolean\n};\n\nexport type FileType = {\n\tsrc: String,\n\tmaskId: ?String\n};\nconst hiddenCanvas = Symbol('hiddenCanvas');\nexport class Editor extends EventEmitter\n{\n\tstatic justANumber = 0;\n\tstatic repo = new Map();\n\t#id = 0;\n\t#activeTabId: String;\n\t#previousActiveTabId: String;\n\t#tabs = new Map();\n\tcache = new Cache.MemoryCache();\n\t#canvasMaster: CanvasMaster;\n\t#canvasPreview: CanvasPreview;\n\t#canvasZooming: CanvasZooming;\n\t#canvasMask: ?CanvasMask;\n\n\tconstructor(options: {\n\t\tenableCamera: boolean,\n\t\tenableUpload: boolean,\n\t\tuploadTabOptions: ?Object,\n\t\tenableMask: boolean,\n\t})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('Main.Avatar.Editor');\n\t\tthis.#id = Editor.justANumber++;\n\t\toptions = Type.isPlainObject(options) ? options : {};\n\t\tconst tabsWithThePictureInside = [\n\t\t\t[CanvasTab, true],\n\t\t\t[MaskTab, options.enableMask, null]\n\t\t];\n\t\ttabsWithThePictureInside.forEach(([tabClass, enabled, initialOptions]) =>\n\t\t{\n\t\t\tif (enabled === true && tabClass.isAvailable() !== false)\n\t\t\t{\n\t\t\t\tconst tab = new tabClass(initialOptions);\n\t\t\t\tthis.#tabs.set(tabClass.code, tab);\n\n\t\t\t\ttab.subscribe('onSetMask', ({data}) => {\n\t\t\t\t\tthis.getContainer().setAttribute('data-badge-is-set', 'Y');\n\t\t\t\t\tthis.#canvasMask.mask(data);\n\t\t\t\t});\n\t\t\t\ttab.subscribe('onUnsetMask', () => {\n\t\t\t\t\tthis.getContainer().removeAttribute('data-badge-is-set');\n\t\t\t\t\tthis.#canvasMask.unmask();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst tabsWithConnectionsToThePicture = [\n\t\t\t[UploadTab, options.enableUpload, options.uploadTabOptions],\n\t\t\t[CameraTab, options.enableCamera, null]\n\t\t];\n\t\ttabsWithConnectionsToThePicture.forEach(([tabClass, enabled, initialOptions]) =>\n\t\t{\n\t\t\tif (enabled !== false && tabClass.isAvailable() !== false)\n\t\t\t{\n\t\t\t\tconst tab = new tabClass(initialOptions);\n\t\t\t\tthis.#tabs.set(tabClass.code, tab);\n\t\t\t\ttab.setParentTab(this.#tabs.get(CanvasTab.code));\n\t\t\t\ttab.subscribe('onClickBack', () => {\n\t\t\t\t\tthis.setActiveTab(CanvasTab.code);\n\t\t\t\t});\n\t\t\t\ttab.subscribe('onSetFile', ({data}) => {\n\t\t\t\t\tif (data instanceof Blob)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#canvasMaster.load(data);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#canvasMaster.set(data);\n\t\t\t\t\t}\n\t\t\t\t\tthis.setActiveTab(CanvasTab.code);\n\t\t\t\t});\n\t\t\t\tif (tab instanceof CameraTab)\n\t\t\t\t{\n\t\t\t\t\tthis.subscribe('onOpen', () => {\n\t\t\t\t\t\tif (this.#activeTabId === CameraTab.code)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttab.activate.call(tab);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tthis.subscribe('onClose', () => {\n\t\t\t\t\t\tif (this.#activeTabId === CameraTab.code)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttab.inactivate.call(tab);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tlet theFutureActiveTab = this.#activeTabId;\n\t\tthis.#tabs.forEach((tab, tabId) => {\n\t\t\tif (!theFutureActiveTab || this.#tabs.get(theFutureActiveTab).getPriority() < tab.getPriority())\n\t\t\t{\n\t\t\t\ttheFutureActiveTab = tabId;\n\t\t\t}\n\t\t});\n\t\tthis.#setActiveTabByDefault(theFutureActiveTab);\n\n\t\tEventEmitter.subscribe(\n\t\t\tthis.getEventNamespace() + ':' + 'onEditMask',\n\t\t\t(baseEvent: BaseEvent) => {\n\t\t\t\t//TODO describe that true mask has changed and this view is not actual.\n\t\t\t})\n\t\t;\n\t\tEventEmitter.subscribe(\n\t\t\tthis.getEventNamespace() + ':' + 'onDeleteMask',\n\t\t\t(baseEvent: BaseEvent) => {\n\t\t\t\t//TODO describe that true mask has changed and this view is not actual.\n\t\t\t})\n\t\t;\n\t\tthis.init();\n\t}\n\n\tinit()\n\t{\n\t\tif (!this.getContainer().querySelector('canvas[data-bx-canvas=\"canvas\"]'))\n\t\t{\n\t\t\treturn setTimeout(this.init.bind(this), 1);\n\t\t}\n\t\tconst tabsWithConnectionsToThePicture = [UploadTab, CameraTab];\n\t\ttabsWithConnectionsToThePicture.forEach((tabClass) => {\n\t\t\tthis.getContainer().setAttribute('data-bx-' + tabClass.code + '-tab-available', this.#tabs.has(tabClass.code) ? 'Y' : 'N');\n\t\t});\n\t\tthis.#canvasMaster = new CanvasMaster(this.getContainer().querySelector('canvas[data-bx-canvas=\"canvas\"]'));\n\t\tthis.#canvasPreview = new CanvasPreview(this.getContainer().querySelector('canvas[data-bx-canvas=\"preview\"]'));\n\t\tthis.#canvasZooming = new CanvasZooming({\n\t\t\tknob: this.getContainer().querySelector('[data-bx-role=\"zoom-knob\"]'),\n\t\t\tscale: this.getContainer().querySelector('[data-bx-role=\"zoom-scale\"]'),\n\t\t\tplus: this.getContainer().querySelector('[data-bx-role=\"zoom-plus-button\"]'),\n\t\t\tminus: this.getContainer().querySelector('[data-bx-role=\"zoom-minus-button\"]'),\n\t\t});\n\t\tthis.#canvasMask = this.#tabs.has(MaskTab.code) ? new CanvasMask(\n\t\t\tthis.getContainer().querySelector('[data-bx-role=\"canvas-mask\"]')\n\t\t) : false;\n\t\tthis.getContainer()\n\t\t\t.querySelector('[data-bx-role=\"unset-canvas-mask\"]')\n\t\t\t.addEventListener('click', () => {\n\t\t\t\tthis.getContainer().removeAttribute('data-badge-is-set');\n\t\t\t\tthis.#canvasMask.unmask();\n\t\t\t\tthis.#tabs.get(MaskTab.code).unmask();\n\t\t\t})\n\t\t;\n\t\tthis.#canvasMaster.subscribe('onLoad', (event) => {\n\t\t\tthis.getContainer().setAttribute('data-bx-canvas-load-status', 'loading');\n\t\t\tthis.emit('onChange');\n\t\t});\n\t\tthis.#canvasMaster.subscribe('onReset', (event \t) => {\n\t\t\tthis.getContainer().setAttribute('data-bx-canvas-load-status', 'isnotset');\n\t\t\tthis.#canvasZooming.reset();\n\t\t\tthis.#canvasPreview.reset();\n\t\t\tthis.emit('onChange');\n\t\t});\n\t\tthis.getContainer().setAttribute('data-bx-canvas-load-status', 'isnotset');\n\n\t\tthis.#canvasMaster.subscribe('onSetImage', ({data: {canvas}}) => {\n\t\t\tthis.getContainer().setAttribute('data-bx-canvas-load-status', 'set');\n\t\t\tthis.#canvasZooming.reset();\n\t\t\tthis.#canvasPreview.set(canvas);\n\t\t\tthis.emit('onSet');\n\t\t\tthis.emit('onChange');\n\t\t});\n\t\tthis.#canvasMaster.subscribe('onMove', (event) => {\n\t\t\tthis.#canvasPreview.onMove(event);\n\t\t\tthis.emit('onChange');\n\t\t});\n\t\tthis.#canvasMaster.subscribe('onScale', (event) => {\n\t\t\tthis.#canvasPreview.onScale(event);\n\t\t\tthis.emit('onChange');\n\t\t});\n\t\tthis.#canvasZooming.subscribe('onChange', ({data}) => {\n\t\t\tthis.#canvasMaster.scale(data);\n\t\t});\n\t\tthis.#canvasMaster.subscribe('onError', ({data}) => {\n\t\t\tthis.getContainer().setAttribute('data-bx-canvas-load-status', 'errored');\n\t\t\tthis.#canvasZooming.reset();\n\t\t\tthis.#canvasPreview.reset();\n\t\t\tthis.getContainer()\n\t\t\t\t.querySelector('[data-bx-role=\"tab-canvas-error\"]').innerHTML = data;\n\t\t});\n\t\tthis.emit('onReady');\n\t}\n\n\tready(callback)\n\t{\n\t\tif (this.#canvasMaster)\n\t\t{\n\t\t\tcallback.call();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.subscribe('onReady', callback);\n\t\t}\n\t\treturn this;\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.#id;\n\t}\n\n\tgetContainer()\n\t{\n\t\treturn this.cache.remember('container', () => {\n\t\t\tconst res = Tag.render`\n\t\t\t\t<div class=\"ui-avatar-editor__tab-wrapper ui-avatar-editor--scope\">\n\t\t\t\t\t<input type=\"hidden\" data-bx-active-tab=\"doesNotMatterForNowItIsAFile\">\n\t\t\t\t\t<div class=\"ui-avatar-editor__tab-button-container\" data-bx-role=\"headers\" style=\"display:none;\"></div>\n\t\t\t\t\t<div class=\"ui-avatar-editor__tab-container\">\n\t\t\t\t\t\t<div data-bx-role=\"bodies\"></div>\n\t\t\t\t\t\t<div class=\"ui-avatar-editor__tab-avatar-block\">\n\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__tab-avatar-inner\">\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__arrow-icon-container\">\n\t\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__arrow-icon\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__tab-avatar-image-container\">\n\t\t\t\t\t\t\t\t\t<div data-bx-role=\"unset-canvas-mask\" class=\"ui-avatar-editor__tab-avatar-image-not-allowed\"></div>\n\t\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__tab-avatar-image-item\" data-bx-role=\"canvas-button\">\n\t\t\t\t\t\t\t\t\t\t<div data-editor-role=\"preview-holder\">\n\t\t\t\t\t\t\t\t\t\t\t<canvas data-bx-canvas=\"preview\" height=\"165\" width=\"165\"></canvas>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__tab-avatar-mask\" data-bx-role=\"canvas-mask\"></div>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"ui-avatar-editor__tab-avatar-desc-container\">\n\t\t\t\t\t\t\t\t\t<span class=\"ui-avatar-editor__tab-avatar-desc-item\"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>`;\n\n\t\t\tconst headers = res.querySelector('[data-bx-role=\"headers\"]');\n\t\t\tconst bodies = res.querySelector('[data-bx-role=\"bodies\"]');\n\t\t\tArray.from(this.#tabs.entries())\n\t\t\t\t.forEach(\n\t\t\t\t\t([itemId, itemTab: DefaultTab]) => {\n\t\t\t\t\t\tEvent.bind(\n\t\t\t\t\t\t\titemTab.getHeaderContainer(),\n\t\t\t\t\t\t\t'click',\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tthis.setActiveTab(itemId);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tDom.append(itemTab.getHeaderContainer(), headers);\n\t\t\t\t\t\tDom.append(itemTab.getBodyContainer(), bodies);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\tif (headers.querySelectorAll('[data-bx-state=\"visible\"]').length > 1)\n\t\t\t{\n\t\t\t\theaders.style.display = \"block\";\n\t\t\t}\n\n\t\t\t[\n\t\t\t\t[\n\t\t\t\t\tUploadTab.code,\n\t\t\t\t\tres.querySelector('[data-bx-role=\"button-add-picture\"][data-bx-id=\"upload-file\"]'),\n\t\t\t\t\t() => { this.#selectFile(); }\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\tCameraTab.code,\n\t\t\t\t\tres.querySelector('[data-bx-role=\"button-add-picture\"][data-bx-id=\"snap-picture\"]'),\n\t\t\t\t\t() => { this.#snapAPicture(); }\n\t\t\t\t]\n\t\t\t].forEach(([tabName, buttonNode, callback]) => {\n\t\t\t\tif (this.#tabs.has(tabName))\n\t\t\t\t{\n\t\t\t\t\tEvent.bind(buttonNode, 'click', callback);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tDom.remove(buttonNode);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t});\n\t}\n\n\t#setActiveTabByDefault(activeTab: ?String)\n\t{\n\t\tif (this.cache.get('activeTabChangesCounter') > 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.setActiveTab(activeTab);\n\t\tthis.cache.delete('activeTabChangesCounter');\n\t}\n\n\tsetActiveTab(activeTab: ?String, isIt: boolean = false): ?DefaultTab\n\t{\n\t\tif (!this.#tabs.has(activeTab))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst activeTabChangesCounter = this.cache.get('activeTabChangesCounter') || 0;\n\t\tif (this.#activeTabId !== activeTab)\n\t\t{\n\t\t\tif (this.#activeTabId === null)\n\t\t\t{\n\t\t\t\tthis.#activeTabId = activeTab;\n\t\t\t}\n\t\t\telse if (this.#tabs.has(this.#activeTabId))\n\t\t\t{\n\t\t\t\tthis.#tabs.get(this.#activeTabId).inactivate();\n\t\t\t}\n\n\t\t\tif (this.#activeTabId === UploadTab.code || this.#activeTabId === CameraTab.code)\n\t\t\t{\n\t\t\t\tthis.#previousActiveTabId = this.#activeTabId;\n\t\t\t}\n\n\t\t\tthis.#activeTabId = activeTab;\n\t\t\tthis.#tabs.get(this.#activeTabId).activate();\n\t\t}\n\t\tthis.cache.set('activeTabChangesCounter', activeTabChangesCounter + 1);\n\t\treturn this.#tabs.get(this.#activeTabId);\n\t}\n\n\tgetTab(tabName: String): ?DefaultTab\n\t{\n\t\treturn this.#tabs.get(tabName);\n\t}\n\n\t#setPreviousActiveTab()\n\t{\n\t\tthis.setActiveTab(this.#previousActiveTabId);\n\t}\n\t\n\tloadJSON(data: FileType): Promise\n\t{\n\t\treturn this.loadData(JSON.parse(data));\n\t}\n\n\tloadData(data: FileType): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (Type.isPlainObject(data) && data['src'])\n\t\t\t{\n\t\t\t\tthis.#canvasMaster\n\t\t\t\t\t.load(data['src'])\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tif (data['maskId'] && this.#tabs.has(MaskTab.code))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.#tabs.get(MaskTab.code).maskById(data['maskId']);\n\t\t\t\t\t\t\tthis.#setActiveTabByDefault(MaskTab.code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.#setActiveTabByDefault(CanvasTab.code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data['src'], this);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(reject);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.#setActiveTabByDefault(UploadTab.code);\n\t\t\t\tresolve(null, this);\n\t\t\t}\n\t\t});\n\t}\n\n\tloadSrc(src)\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.#canvasMaster\n\t\t\t\t.load(src)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.setActiveTab(this.#tabs.has(MaskTab.code) ? MaskTab.code : CanvasTab.code);\n\t\t\t\t\tresolve(src, this);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.#setPreviousActiveTab();\n\t\t\t\t\treject(src, this);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\treset(): this\n\t{\n\t\tthis.#canvasMaster.reset();\n\t\tthis.#setPreviousActiveTab();\n\t\treturn this;\n\t}\n\n\t#selectFile()\n\t{\n\t\t// this.#canvasMaster.reset();\n\t\tthis.setActiveTab(UploadTab.code);\n\t\treturn this;\n\t}\n\n\t#snapAPicture()\n\t{\n\t\t// this.#canvasMaster.reset();\n\t\tthis.setActiveTab(CameraTab.code);\n\t\treturn this;\n\t}\n\n\tpackBlobAndMask(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.#canvasMaster.getBlob()\n\t\t\t\t.then(({blob}) =>{\n\t\t\t\t\tconst loader = CanvasLoader.getInstance();\n\t\t\t\t\tloader[hiddenCanvas] = loader[hiddenCanvas] ?? document.createElement('canvas');\n\t\t\t\t\tconst canvas = loader[hiddenCanvas];\n\t\t\t\t\tcanvas.width = blob.width;\n\t\t\t\t\tcanvas.height = blob.height;\n\n\t\t\t\t\tcanvas\n\t\t\t\t\t\t.getContext('2d')\n\t\t\t\t\t\t.drawImage(loader.getCanvas(), 0, 0);\n\n\t\t\t\t\tif (!this.#canvasMask)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn resolve({blob, canvas});\n\t\t\t\t\t}\n\n\t\t\t\t\tthis\n\t\t\t\t\t\t.#canvasMask\n\t\t\t\t\t\t.applyAndPack(canvas)\n\t\t\t\t\t\t.then((maskedBlob: Blob, maskId: Number) => {\n\t\t\t\t\t\t\tresolve({blob, maskedBlob, maskId, canvas});\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tresolve({blob, canvas});\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treturn reject(error);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tpackBlob(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.#canvasMaster.getBlob()\n\t\t\t\t.then(resolve)\n\t\t\t\t.catch(reject);\n\t\t});\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn this.#canvasMaster.isEmpty();\n\t}\n\n\tisModified(): boolean\n\t{\n\t\treturn this.#canvasMaster.imageFrame.changed;\n\t}\n\n\tgetCanvasEditor(): CanvasDefault\n\t{\n\t\treturn this.#canvasMaster;\n\t}\n\n\tgetCanvasZooming(): CanvasZooming\n\t{\n\t\treturn this.#canvasZooming;\n\t}\n\n\tdestroy()\n\t{\n\n\t}\n\n\tstatic createInstance(id, options): this\n\t{\n\t\tif (this.repo.has(id))\n\t\t{\n\t\t\tthis.repo.get(id).destroy();\n\t\t}\n\n\t\tconst editor = new this(options);\n\t\tif (document.querySelector('#' + id))\n\t\t{\n\t\t\teditor.ready(() => {\n\t\t\t\t\teditor.loadJSON(\n\t\t\t\t\t\tdocument.querySelector('#' + id)\n\t\t\t\t\t\t\t.getAttribute('data-bx-ui-avatar-editor-info')\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t;\n\t\t}\n\n\t\tif (Type.isStringFilled(id))\n\t\t{\n\t\t\tthis.repo.set(id, editor);\n\t\t}\n\n\t\treturn editor;\n\t}\n\n\tstatic getInstanceById(id): ?Editor\n\t{\n\t\tif (this.repo.has(id))\n\t\t{\n\t\t\treturn this.repo.get(id);\n\t\t}\n\t\treturn null;\n\t}\n\n\tstatic getOrCreateInstanceById(id, options): this\n\t{\n\t\treturn this.getInstanceById(id) || this.createInstance(...arguments)\n\t}\n}\n","import {Dom, Loc, Type, Cache, Tag, Event} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Editor} from './editor';\nimport CameraTab from './tabs/camera-tab';\nimport UploadTab from './tabs/upload-tab';\nimport MaskTab from './tabs/mask-tab';\nimport {PopupManager, Popup} from 'main.popup';\nimport {CancelButton, SaveButton, ButtonTag} from 'ui.buttons';\nimport Backend from './backend';\nimport {ButtonState} from 'ui.buttons';\n\nexport default class EditorInPopup extends Editor\n{\n\t#getPopup(): Popup\n\t{\n\t\tthis.cache.remember('okButton', () => {\n\t\t\tconst okButton = new SaveButton({\n\t\t\t\tonclick: () => {\n\t\t\t\t\tif (okButton.getState() === ButtonState.ACTIVE)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.apply();\n\t\t\t\t\t}\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.isEmpty())\n\t\t\t{\n\t\t\t\tokButton.setState(ButtonState.DISABLED);\n\t\t\t\tthis.subscribeOnce('onSet', () => {\n\t\t\t\t\tokButton.setState(ButtonState.ACTIVE);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn okButton;\n\t\t});\n\t\treturn this.cache.remember('popup', () => {\n\t\t\treturn PopupManager.create(\n\t\t\t\t'popup_' + this.getId(),\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\tclassName : \"ui-avatar-editor__popup\",\n\t\t\t\t\tautoHide : false,\n\t\t\t\t\tlightShadow : true,\n\t\t\t\t\tcloseIcon : true,\n\t\t\t\t\tcloseByEsc : true,\n\t\t\t\t\ttitleBar : Loc.getMessage('JS_AVATAR_EDITOR_TITLE_BAR'),\n\t\t\t\t\tcontent: this.getContainer(),\n\t\t\t\t\tzIndex : BX.PopupWindowManager.getMaxZIndex() + 1,\n\t\t\t\t\toverlay : {},\n\t\t\t\t\tcontentColor : \"white\",\n\t\t\t\t\tcontentNoPaddings : true,\n\t\t\t\t\tbindOnResize: false,\n\t\t\t\t\tdraggable: true,\n\t\t\t\t\tisScrollBlock: true,\n\t\t\t\t\tbuttons: [\n\t\t\t\t\t\tthis.cache.remember('okButton'),\n\t\t\t\t\t\tnew CancelButton({\n\t\t\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t\t} }),\n\t\t\t\t\t],\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tonShow: () => { this.emit('onOpen'); },\n\t\t\t\t\t\tonClose: () => { this.emit('onClose'); }\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t}\n\n\thide()\n\t{\n\t\tthis.#getPopup().close();\n\t}\n\n\tshow(tabCode: ?String)\n\t{\n\t\tthis.ready(() => {\n\t\t\t\tthis.#getPopup().show();\n\t\t\t\tif (Type.isStringFilled(tabCode))\n\t\t\t\t{\n\t\t\t\t\tthis.setActiveTab(tabCode);\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tshowFile(url: ?String)\n\t{\n\t\tthis.ready(() => {\n\t\t\t\tthis.#getPopup().show();\n\t\t\t\tif (url)\n\t\t\t\t{\n\t\t\t\t\treturn this.loadSrc(url);\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\tapply()\n\t{\n\t\tthis.packBlobAndMask()\n\t\t\t.then(({blob, maskedBlob, maskId, canvas}) =>\n\t\t\t{\n\t\t\t\tif (blob instanceof Blob)\n\t\t\t\t{\n\t\t\t\t\tif (maskId > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tBackend.useRecently(maskId);\n\t\t\t\t\t}\n\t\t\t\t\tconst ev = new BaseEvent({\n\t\t\t\t\t\tcompatData: [blob, canvas],\n\t\t\t\t\t\tdata: {blob, maskedBlob}\n\t\t\t\t\t});\n\t\t\t\t\tEventEmitter.emit(this, 'onApply', ev, {useGlobalNaming: true});\n\t\t\t\t\tthis.emit('onApply', ev);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.log('error: ', error);\n\t\t\t});\n\t\t;\n\t}\n\n\tonApply(callback): this\n\t{\n\t\tthis.subscribe('onApply', callback);\n\t\treturn this;\n\t}\n\n\tsubscribeOnFormIsReady(fieldName, callback): Promise\n\t{\n\t\tthis.subscribe('onApply', (event: BaseEvent) => {\n\t\t\tconst formObj = new FormData();\n\t\t\tconst {blob, maskedBlob} = event.getData();\n\n\t\t\tformObj.append(fieldName, blob, blob['name']);\n\t\t\tconst maskedFileId = ['maskedFile', Editor.justANumber++].join(':');\n\t\t\tformObj.append( Loc.getMessage('UI_AVATAR_MASK_REQUEST_FIELD_NAME') + fieldName, maskedFileId);\n\t\t\tif (maskedBlob)\n\t\t\t{\n\t\t\t\tformObj.append(Loc.getMessage('UI_AVATAR_MASK_REQUEST_FIELD_NAME') + '[' + maskedFileId + ']', maskedBlob, blob['name']);\n\t\t\t\tformObj.append(Loc.getMessage('UI_AVATAR_MASK_REQUEST_FIELD_NAME') + '[' + maskedFileId + '][maskId]', maskedBlob['maskId']);\n\t\t\t\tcallback(new BaseEvent({data: {form: formObj, blob, maskedBlob, maskId: maskedBlob['maskId']}}));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcallback(new BaseEvent({data: {form: formObj, blob}}));\n\t\t\t}\n\t\t});\n\t}\n\n\t//region Compatibility\n\tclick()\n\t{\n\t\tthis.show();\n\t}\n\n\tget popup()\n\t{\n\t\treturn this.#getPopup();\n\t}\n\n\tstatic isCameraAvailable(): boolean\n\t{\n\t\treturn CameraTab.isAvailable();\n\t}\n\t//endregion\n}\n","import {Reflection} from 'main.core';\nimport 'ui.fonts.opensans';\nimport 'ui.design-tokens';\nimport './css/core_avatar_editor.css';\nimport './css/logic.css';\nimport EditorInPopup from './editor-in-popup';\nimport EditorInSlider from './editor-in-slider';\nimport CameraTab from \"./tabs/camera-tab\";\nimport MaskEditor from \"./mask-tool/mask-editor\";\nimport type {FileType} from './editor';\n\nexport type {\n\tFileType\n};\n\nlet currentEditor = EditorInPopup;\n/**\n * @namespace BX.UI.AvatarEditor\n */\nfunction createInstance()\n{\n\treturn currentEditor.createInstance(...arguments);\n}\n\nfunction isCameraAvailable()\n{\n\treturn currentEditor.isCameraAvailable();\n}\n\nfunction getInstanceById()\n{\n\treturn currentEditor.getInstanceById(...arguments);\n}\n\nfunction getOrCreateInstanceById()\n{\n\treturn currentEditor.getOrCreateInstanceById(...arguments);\n}\nexport {\n\tcurrentEditor as Editor,\n\tMaskEditor,\n\tcreateInstance,\n\tgetInstanceById,\n\tgetOrCreateInstanceById,\n\tisCameraAvailable\n};\n\nCameraTab.check();\nconst BX = Reflection.namespace('BX');\nBX.AvatarEditor = currentEditor;\n"],"names":["DefaultTab","EventEmitter","constructor","cache","Cache","MemoryCache","setEventNamespace","getPriority","priority","setParentTab","tab","getHeaderContainer","remember","id","code","title","getHeader","Tag","render","toUpperCase","getBodyContainer","getBody","inactivate","removeAttribute","Dom","removeClass","emit","activate","setAttribute","addClass","showError","message","errorContainer","querySelector","innerText","isAvailable","CameraTab","res","Loc","getMessage","video","addEventListener","event","visibleWidth","clientWidth","visibleHeight","clientHeight","w","h","scale","Math","max","left","top","adjust","parentNode","style","width","height","transform","ceil","onclick","stopStreaming","startStreaming","navigator","mediaDevices","getUserMedia","audio","min","ideal","then","stream","hasAttribute","srcObject","getTracks","stop","catch","error","innerHTML","Text","encode","pause","src","check","enumerateDevices","devices","Array","from","filter","deviceInfo","kind","length","Backend","saveMask","accessCode","file","formObj","FormData","append","forEach","index","Blob","ajax","runAction","data","analyticsLabel","ui","actionType","action","getMaskList","actionName","page","size","Promise","resolve","reject","navigation","groupedItems","getMaskInitialInfo","recentlyUsedListSize","initialInfo","getMaskAccessCode","itemId","deleteMask","useRecently","cleanUp","isImage","name","type","String","Number","toLowerCase","ext","split","pop","indexOf","UploadTab","options","Date","valueOf","join","fileAccept","f","target","fileButton","files","shift","Event","unbindAll","node","cloneNode","value","props","attrs","insertBefore","removeChild","bind","dropZone","BX","DD","dropFiles","supported","subscribe","e","fileCopy","item","entry","isFile","push","compatMode","dataTransfer","types","items","isFileTransfer","deleteError","Options","maskSize","imageSize","rawSrc","document","currentScript","rawPath","eventNamespace","path","buf","Uri","getPath","getCollections","settings","Extension","getSettings","map","thumb","replace","MaskEditor","getEventNamespace","getTime","getContentContainer","appendChild","getContainer","getCanvasZooming","setDefaultValue","reset","isModified","openNew","openSaved","loadSrc","checkOpened","isSuccess","isEmpty","getTab","trim","border","saveOpened","cb","blob","packBlob","destroy","storage","clear","eventName","SidePanel","Instance","postMessageAll","listener","BXSidePanelMessageEvent","getSender","getUrl","getEventId","getData","getInstance","window","getPromiseWithInstance","Runtime","loadExtension","UI","AvatarEditor","Editor","enableCamera","enableUpload","uploadTabOptions","enableMask","handler","Dialog","getSelectedItems","entityId","selector","EntitySelector","TagSelector","dialogOptions","context","preselectedItems","events","entities","allowView","emailUsers","inviteGuestLink","myEmailUsers","selectMode","allowFlatDepartments","renderTo","open","cacheable","allowChangeHistory","onCloseByEsc","denyAction","onOpen","setTimeout","onCloseComplete","contentCallback","slider","Layout","createContent","extensions","content","buttons","CancelButton","SaveButton","button","setWaiting","close","Notification","Center","notify","arguments","label","text","MaskItem","template","update","console","log","itemText","description","onClickMenuPointer","set","setActive","Object","assign","getId","editable","oldContainer","delete","newContainer","preventDefault","stopPropagation","thisPopupId","thisPopup","MenuManager","create","href","dataset","getMenuWindow","closeByEsc","autoHide","offsetTop","offsetLeft","angle","targetContainer","closest","className","onFirstShow","compatData","popup","show","subscribeOnce","getPopupWindow","getByNode","get","WeakMap","MaskList","initialPageSize","paginationStates","regularPageSize","loadItems","setReady","getTemplate","setByNode","object","repoList","setPageSize","pageSize","remove","isReady","ready","getMoreButton","setBusy","inprogress","setFinished","setDisabled","finished","butt","Button","baseClass","ButtonSize","SMALL","noCaps","round","load","terminate","renderItems","finish","maxCount","values","slice","groupText","badgeContainer","maskItem","renderItemsReverse","prepend","thisPageItemCount","errors","Error","maskGroup","outerHTML","shortPageSize","MaskRecentlyUsedList","MaskSystemList","MaskUserList","MaskSharedList","MaskTab","badges","activeId","mask","initialize","initializeData","recentlyUsedItems","systemItems","myOwnItems","sharedItems","restMarketInfo","body","onClickCreateMask","onClickEditMask","onClickDeleteMask","menuItem","onClickOwnMaskMenu","marketLink","display","container","semanticContainer","list","contains","unmask","fulfillReadyCallbacks","onReady","callback","call","foundAtLeastOneNode","querySelectorAll","maskById","Type","isStringFilled","stopImmediatePropagation","maskEditor","getTarget","urls","isFilled","exportUrl","MessageBox","MessageBoxButtons","OK_CANCEL","okCaption","onOk","messageBox","importUrl","loader","Loader","color","hide","listContainer","childNodes","CanvasTab","CanvasLoader","FileReader","Map","Image","getContext","successCallback","failCallback","getCanvas","pack","fileType","toBlob","toDataURL","instance","loadFile","newFile","isString","loadCanvas","has","onload","onerror","Browser","isFirefox","onFinish","onLoad","image","onError","debug","isPlainObject","encodeURI","prototype","toString","onloadend","result","readAsDataURL","keys","dataURL","marker","parts","contentType","raw","rawLength","atob","uInt8Array","Uint8Array","i","charCodeAt","CanvasDefault","canvas","position","overflow","role","mouseMove","stopMoving","stretchToCanvasSize","clearRect","disableToMove","imageNode","scaleForImage","k","initialScale","hasChanged","drawImage","tableFrame","tableCloth","topToBeInTheCenter","leftToBeInTheCenter","enableToMove","zoomScale","oldScale","newScale","deltaTopOld","deltaTop","deltaLeftOld","deltaLeft","topOffsetFromTheCenter","leftOffsetFromTheCenter","topInPercent","leftInPercent","onScale","deltaScale","cursor","startX","pageX","startY","pageY","unbind","move","deltaX","deltaY","onMove","getTable","getTableCloth","scaleToResult","imageY","imageY1","imageY2","canvasY1","canvasY2","imageX","imageX1","imageX2","canvasX1","canvasX2","changed","CanvasMaster","getBlob","lastIndexOf","substr","CanvasPreview","CanvasZooming","knob","minus","plus","defaultValue","startMoving","getValue","setValue","percent","startPageX","containerPos","getPosition","increase","CanvasMask","imageSource","trueK","sourceS","parseInt","sourceX","sourceY","applyAndPack","maskId","createElement","backgroundImage","hiddenCanvas","Symbol","justANumber","tabsWithThePictureInside","tabClass","enabled","initialOptions","tabsWithConnectionsToThePicture","setActiveTab","theFutureActiveTab","tabId","baseEvent","init","headers","bodies","entries","itemTab","tabName","buttonNode","activeTab","isIt","activeTabChangesCounter","loadJSON","loadData","JSON","parse","packBlobAndMask","maskedBlob","imageFrame","getCanvasEditor","createInstance","repo","editor","getAttribute","getInstanceById","getOrCreateInstanceById","EditorInPopup","tabCode","showFile","url","apply","ev","BaseEvent","useGlobalNaming","onApply","subscribeOnFormIsReady","fieldName","maskedFileId","form","click","isCameraAvailable","okButton","getState","ButtonState","ACTIVE","setState","DISABLED","PopupManager","lightShadow","closeIcon","titleBar","zIndex","PopupWindowManager","getMaxZIndex","overlay","contentColor","contentNoPaddings","bindOnResize","draggable","isScrollBlock","onShow","onClose","currentEditor","Reflection","namespace"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings