{"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/editor-in-slider.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``;\n\t\t\t}\n\t\t\treturn Tag.render`${title}`;\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
${this.getBody()}
`;\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
\n\t\t\t\t${id.toUpperCase()}\n\t\t\t
`;\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
\n\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\t
\n\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\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_ERROR')}\n\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\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\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
\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
\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
`;\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`
\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
  1. \n\t\t\t\t\t\t\t\t1\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\n\t\t\t\t\t\t\t
  2. \n\t\t\t\t\t\t\t
  3. \n\t\t\t\t\t\t\t\t2\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
    \n\t\t\t\t\t\t\t
  4. \n\t\t\t\t\t\t\t
  5. ${Loc.getMessage('UI_AVATAR_EDITOR_MASK_CREATOR_CONTENT_3_POINT')}\n\t\t\t\t\t\t\t\t3\n\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\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    ${Loc.getMessage('JS_AVATAR_EDITOR_TITLE')}
    \n\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\t\t
    \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
    \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\t
    \n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t
    ${Loc.getMessage('JS_AVATAR_EDITOR_ACCESS')}
    \n\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\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
    \n\t\t\t\t\t\t\t
  6. \n\t\t\t\t\t\t
\n\t\t\t\t\t
`;\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 = 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 = 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 `
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

#GROUP_TITLE#

\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    #MASK_TITLE#
    \n\t\t\t\t\t\t\t\t
    #MASK_SUBTITLE#
    \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
\n\t\t\t\t\n\t\t\t
`\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`
${Text.encode(message)}
`\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`
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

${Loc.getMessage('JS_AVATAR_EDITOR_RECENT_MASKS')}

\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

${Loc.getMessage('UI_AVATAR_EDITOR_MASK_LIST_SHARED')}

\n\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\t
\n\t\t\t\t\t\t

\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
\n\t\t\t\t\t\t

\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\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
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
${Loc.getMessage('UI_AVATAR_EDITOR_MASK_ADD_MY_OWN')}
\n\t\t\t\t\t\t\t${Loc.getMessage('UI_AVATAR_EDITOR_MASK_DOWNLOAD_TEMPLATE1')}\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\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
\n\t\t\t\t\t
\n\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\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\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\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\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\t
\n\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_ERROR')}\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\t\n\t\t\t\t\t\t
\n\n\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\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_UPLOAD')}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${Loc.getMessage('JS_AVATAR_EDITOR_SNAP')}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
`;\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.#image.crossOrigin = 'anonymous';\n\t\tthis.#canvas = Tag.render``;\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\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#minValue = -1;\n\t#maxValue = 1;\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): CanvasZooming\n\t{\n\t\tthis.#defaultValue = defaultValue > this.#minValue && defaultValue <= this.#maxValue ? defaultValue : 0;\n\n\t\treturn this;\n\t}\n\n\tgetValue(): Number\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\tconst width = containerPos.width - Dom.getPosition(this.#knob).width;\n\t\tif (width > 0)\n\t\t{\n\t\t\tthis.#containerWidth = width;\n\n\t\t\treturn this.#containerWidth;\n\t\t}\n\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\t// eslint-disable-next-line no-param-reassign\n\t\tvalue = Math.ceil(value * 1000) / 1000;\n\t\tif (value !== this.#value && value >= this.#minValue && value <= this.#maxValue)\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\t),\n\t\t\t1,\n\t\t);\n\t\tthis.setValue(value);\n\t}\n\n\t#adjust()\n\t{\n\t\tconst middle = this.#getContainerWidth() / (this.#maxValue - this.#minValue);\n\t\tconst value = middle + (middle * this.getValue());\n\t\tDom.adjust(this.#knob, {\n\t\t\tstyle: {\n\t\t\t\tleft: [Math.ceil(value), '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
\n\t\t\t\t\t\n\t\t\t\t\t
\n\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\t
\n\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\t
\n\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\t\t
\n\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\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\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
`;\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 {Dom, Loc, Type, Cache, Tag, Event} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport EditorInPopup from './editor-in-popup';\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';\nimport MaskEditor from './mask-tool/mask-editor';\nimport {Layout} from \"ui.sidepanel.layout\";\n\nexport default class EditorInSlider extends EditorInPopup\n{\n\t#id: String = 'editor-in-slider';\n\n\tinit()\n\t{\n\t\tsuper.init();\n\t\tMaskEditor.subscribe('onOpen', (baseEvent: BaseEvent) => {\n\t\t\tthis.hide();\n\t\t});\n\t}\n\n\t#showSlider(): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tBX.SidePanel.Instance.open(\n\t\t\t\t\tthis.#id, {\n\t\t\t\t\t// width: 800,\n\t\t\t\t\tcacheable: true,\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\tonClose: () => {\n\t\t\t\t\t\t\tthis.emit('onClose');\n\t\t\t\t\t\t}\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('JS_AVATAR_EDITOR_TITLE_BAR'),\n\t\t\t\t\t\t\tcontent: () => {\n\t\t\t\t\t\t\t\treturn Tag.render`
${this.getContainer()}
`\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\tconst SB = new SaveButton({\n\t\t\t\t\t\t\t\t\tonclick: (button) => {\n\t\t\t\t\t\t\t\t\t\tif (SB.getState() === ButtonState.DISABLED)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tthis.apply();\n\t\t\t\t\t\t\t\t\t\tslider.close();\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\tif (this.isEmpty())\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tSB.setState(ButtonState.DISABLED);\n\t\t\t\t\t\t\t\t\tthis.subscribeOnce('onSet', () => {\n\t\t\t\t\t\t\t\t\t\tSB.setState(ButtonState.ACTIVE);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tSB,\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\tthis.hide();\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}\n\n\tshow(tabCode: ?String)\n\t{\n\t\tthis\n\t\t\t.#showSlider()\n\t\t\t.then(() => {\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}\n\n\tshowFile(url: ?String)\n\t{\n\t\tthis\n\t\t\t.#showSlider()\n\t\t\t.then(() => {\n\t\t\t\tthis.loadSrc(url);\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 {};\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","crossOrigin","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","middle","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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"}