Your IP : 18.118.210.6


Current Path : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/js/ui/stamp/uploader/dist/
Upload File :
Current File : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/js/ui/stamp/uploader/dist/uploader.bundle.js.map

{"version":3,"file":"uploader.bundle.js","sources":["../src/header/header.js","../src/upload-layout/upload-layout.js","../src/dropzone/dropzone.js","../src/action-panel/action-panel.js","../src/status/status.js","../src/preview/preview.js","../src/message/message.js","../src/file-select/file-select.js","../src/uploader.js"],"sourcesContent":["import {Tag, Cache, Loc, Type, Dom, Text} from 'main.core';\nimport {Button} from 'ui.buttons';\n\nimport './css/style.css';\n\ntype HeaderOptions = {\n\tcontact: {\n\t\tlabel: string,\n\t\thref: string,\n\t},\n\tcontactsList: Array<any>,\n};\n\nexport default class Header\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options)\n\t{\n\t\tthis.setOptions(options);\n\t}\n\n\tsetOptions(options: HeaderOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): HeaderOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tsetValue(value: string)\n\t{\n\t\tif (Type.isString(value) || Type.isNumber(value))\n\t\t{\n\t\t\tthis.getValueLayout().textContent = value;\n\t\t}\n\t}\n\n\tgetValueLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('valueLayout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-header-text-value\">\n\t\t\t\t\t<span title=\"${Text.encode(this.getOptions().contact.label)}\">${Text.encode(this.getOptions().contact.label)}</span>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetChangeContactButton(): Button\n\t{\n\t\treturn this.cache.remember('changeContactButton', () => {\n\t\t\treturn new Button({\n\t\t\t\ttext: Loc.getMessage('UI_STAMP_UPLOADER_HEADER_CHANGE_CONTACT_BUTTON_LABEL'),\n\t\t\t\tsize: Button.Size.EXTRA_SMALL,\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\tround: true,\n\t\t\t});\n\t\t});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('headerLayout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-header\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-header-icon\">\n\t\t\t\t\t\t<div class=\"ui-stamp-uploader-header-icon-image\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-header-text\">\n\t\t\t\t\t\t<div class=\"ui-stamp-uploader-header-text-label\">\n\t\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_HEADER_TITLE')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${this.getValueLayout()}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-header-action\">\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tappendTo(target: HTMLElement)\n\t{\n\t\tif (Type.isDomNode(target))\n\t\t{\n\t\t\tDom.append(this.getLayout(), target);\n\t\t}\n\t}\n\n\tprependTo(target: HTMLElement)\n\t{\n\t\tif (Type.isDomNode(target))\n\t\t{\n\t\t\tDom.prepend(this.getLayout(), target);\n\t\t}\n\t}\n\n\trenderTo(target: HTMLElement)\n\t{\n\t\tthis.appendTo(target);\n\t}\n}","import {Cache, Tag} from 'main.core';\n\nimport './css/style.css';\n\ntype UploadLayoutOptions = {\n\tchildren: Array<{getLayout: () => HTMLElement}>,\n}\n\nexport default class UploadLayout\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: UploadLayoutOptions)\n\t{\n\t\tthis.setOptions(options);\n\t}\n\n\tsetOptions(options: UploadLayoutOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): UploadLayoutOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-upload-layout\">\n\t\t\t\t\t${this.getOptions().children.map((item) => item.getLayout())}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n}","import {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Tag, Cache, Loc} from 'main.core';\n\nimport './css/style.css';\n\ntype DropzoneOptions = {\n\tevents?: {[key: string]: (BaseEvent) => void},\n};\n\nexport default class Dropzone extends EventEmitter\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: DropzoneOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Stamp.Uploader.Dropzone');\n\t\tthis.subscribeFromOptions(options.events);\n\t\tthis.setOptions(options);\n\t}\n\n\tsetOptions(options: DropzoneOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): DropzoneOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-dropzone\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-dropzone-icon\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-dropzone-header\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_DROPZONE_HEADER')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-dropzone-text\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_DROPZONE_TEXT')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n}","import {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Tag, Cache, Loc, Dom} from 'main.core';\nimport {ApplyButton, CancelButton, Button} from 'ui.buttons';\n\nimport './css/style.css';\n\ntype ActionPanelOptions = {\n\tevents?: {\n\t\tonCropClick: (event: BaseEvent) => void,\n\t},\n};\n\nexport default class ActionPanel extends EventEmitter\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: ActionPanelOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Stamp.Uploader.ActionPanel');\n\t\tthis.subscribeFromOptions(options.events);\n\t\tthis.setOptions(options);\n\t}\n\n\tsetOptions(options: ActionPanelOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): ActionPanelOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetCropButton(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('cropButton', () => {\n\t\t\tconst onClick = (event: MouseEvent) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.emit('onCropClick');\n\t\t\t};\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-stamp-uploader-crop-button\"\n\t\t\t\t\tonclick=\"${onClick}\"\n\t\t\t\t>\n\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_CROP_BUTTON_LABEL')}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetApplyButton(): Button\n\t{\n\t\treturn this.cache.remember('applyButton', () => {\n\t\t\treturn new ApplyButton({\n\t\t\t\tcolor: Button.Color.PRIMARY,\n\t\t\t\tsize: Button.Size.EXTRA_SMALL,\n\t\t\t\tround: true,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.emit('onApplyClick');\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tgetCancelButton(): Button\n\t{\n\t\treturn this.cache.remember('cancelButton', () => {\n\t\t\treturn new CancelButton({\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\tsize: Button.Size.EXTRA_SMALL,\n\t\t\t\tround: true,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.emit('onCancelClick');\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tgetCropActionsLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('cropActionsLayout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-action-crop-actions\" hidden>\n\t\t\t\t\t${this.getApplyButton().render()}\n\t\t\t\t\t${this.getCancelButton().render()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tshowCropAction()\n\t{\n\t\tDom.show(this.getCropActionsLayout());\n\t\tDom.hide(this.getCropButton());\n\t}\n\n\thideCropActions()\n\t{\n\t\tDom.hide(this.getCropActionsLayout());\n\t\tDom.show(this.getCropButton());\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-action-panel\">\n\t\t\t\t\t${this.getCropActionsLayout()}\n\t\t\t\t\t${this.getCropButton()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tdisable()\n\t{\n\t\tDom.addClass(this.getLayout(), 'ui-stamp-uploader-action-panel-disabled');\n\t}\n\n\tenable()\n\t{\n\t\tDom.removeClass(this.getLayout(), 'ui-stamp-uploader-action-panel-disabled');\n\t}\n}","import {Cache, Tag, Text, Dom, Loc} from 'main.core';\nimport {Loader} from 'main.loader';\n\nimport './css/style.css';\n\nexport default class Status\n{\n\tcache = new Cache.MemoryCache();\n\n\tstatic formatSize(bytes: number): {number: number, text: string}\n\t{\n\t\tif (bytes === 0)\n\t\t{\n\t\t\treturn `0 ${Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_B')}`;\n\t\t}\n\n\t\tconst sizes = [\n\t\t\tLoc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_B'),\n\t\t\tLoc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_KB'),\n\t\t\tLoc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_MB'),\n\t\t];\n\n\t\tconst textIndex = Math.floor(Math.log(bytes) / Math.log(1024));\n\n\t\treturn {\n\t\t\tnumber: parseFloat((bytes / Math.pow(1024, textIndex)).toFixed(2)),\n\t\t\ttext: sizes[textIndex],\n\t\t};\n\t}\n\n\tgetUploadStatusLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('statusLayout', () => {\n\t\t\tconst loaderLayout = Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-upload-status-loader\"></div>\n\t\t\t`;\n\t\t\tconst loader = new Loader({target: loaderLayout, mode: 'inline', size: 45});\n\t\t\tvoid loader.show();\n\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-upload-status\">\n\t\t\t\t\t${loaderLayout}\n\t\t\t\t\t<div class=\"ui-stamp-uploader-upload-status-text\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_TEXT')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-upload-status-percent\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_PERCENT')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-upload-status-size\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tupdateUploadStatus(options: {percent: number, size: number} = {percent: 0, size: 0})\n\t{\n\t\tconst percentNode = this.cache.remember('percentNode', () => {\n\t\t\treturn this.getUploadStatusLayout().querySelector('.ui-stamp-uploader-upload-status-percent');\n\t\t});\n\n\t\tconst sizeNode = this.cache.remember('sizeNode', () => {\n\t\t\treturn this.getUploadStatusLayout().querySelector('.ui-stamp-uploader-upload-status-size');\n\t\t});\n\n\t\tpercentNode.innerHTML = (\n\t\t\tLoc\n\t\t\t\t.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_PERCENT')\n\t\t\t\t.replace('{{number}}', `<strong>${Text.encode(options.percent)}</strong>`)\n\t\t);\n\n\t\tconst formatted = Status.formatSize(options.size);\n\t\tsizeNode.textContent = (\n\t\t\tLoc\n\t\t\t\t.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE')\n\t\t\t\t.replace('{{number}}', formatted.number)\n\t\t\t\t.replace('{{text}}', formatted.text)\n\t\t);\n\t}\n\n\tgetPreparingStatusLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('preparingStatusLayout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-preparing-status\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preparing-status-icon\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preparing-status-text\">\n\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_PREPARING_STATUS')}\t\t\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-status\"></div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tshowUploadStatus(options: {reset: boolean} = {reset: false})\n\t{\n\t\tconst layout = this.getLayout();\n\t\tconst uploadStatusLayout = this.getUploadStatusLayout();\n\t\tconst preparingStatusLayout = this.getPreparingStatusLayout();\n\n\t\tDom.remove(preparingStatusLayout);\n\t\tDom.append(uploadStatusLayout, layout);\n\n\t\tif (options.reset === true)\n\t\t{\n\t\t\tthis.updateUploadStatus({percent: 0, size: 0});\n\t\t}\n\n\t\tthis.setOpacity(1);\n\n\t\tthis.show();\n\t}\n\n\tshowPreparingStatus()\n\t{\n\t\tconst layout = this.getLayout();\n\t\tconst uploadStatusLayout = this.getUploadStatusLayout();\n\t\tconst preparingStatusLayout = this.getPreparingStatusLayout();\n\n\t\tDom.remove(uploadStatusLayout);\n\t\tDom.append(preparingStatusLayout, layout);\n\n\t\tthis.setOpacity(.45);\n\n\t\tthis.show();\n\t}\n\n\tsetOpacity(value: number)\n\t{\n\t\tDom.style(this.getLayout(), 'background-color', `rgba(255, 255, 255, ${value})`);\n\t}\n\n\thide()\n\t{\n\t\tDom.removeClass(this.getLayout(), 'ui-stamp-uploader-status-show');\n\t}\n\n\tshow()\n\t{\n\t\tDom.addClass(this.getLayout(), 'ui-stamp-uploader-status-show');\n\t}\n}","import {BaseEvent, EventEmitter} from 'main.core.events';\nimport {Dom, Tag, Cache, Loc, Type, Event, Text} from 'main.core';\nimport {DragEndEvent, Draggable, DragMoveEvent} from 'ui.draganddrop.draggable';\n\nimport './css/style.css';\n\ntype PreviewOptions = {\n\tevents: {\n\t\t[key: string]: (event: BaseEvent) => void,\n\t},\n};\n\ntype DrawOptions = {\n\tsX: number,\n\tsY: number,\n\tsWidth: number,\n\tsHeight: number,\n\tdX?: number,\n\tdY?: number,\n\tdWidth?: number,\n\tdHeight?: number,\n};\n\nexport default class Preview extends EventEmitter\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: PreviewOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Stamp.Uploader');\n\t\tthis.subscribeFromOptions(options.events);\n\t\tthis.setOptions(options);\n\n\t\tconst draggable = this.cache.remember('draggable', () => {\n\t\t\treturn new Draggable({\n\t\t\t\tcontainer: this.getLayout(),\n\t\t\t\tdraggable: '.ui-stamp-uploader-preview-crop > div',\n\t\t\t\ttype: Draggable.HEADLESS,\n\t\t\t\tcontext: window.top,\n\t\t\t});\n\t\t});\n\n\t\tdraggable.subscribe('start', this.onDragStart.bind(this));\n\t\tdraggable.subscribe('move', this.onDragMove.bind(this));\n\t\tdraggable.subscribe('end', this.onDragEnd.bind(this));\n\t}\n\n\tstatic #loadImage(file: File | Blob): Promise<HTMLImageElement>\n\t{\n\t\tconst fileReader = new FileReader();\n\n\t\treturn new Promise((resolve) => {\n\t\t\tfileReader.readAsDataURL(file);\n\t\t\tEvent.bindOnce(fileReader, 'loadend', () => {\n\t\t\t\tconst image = new Image();\n\t\t\t\timage.src = fileReader.result;\n\t\t\t\tEvent.bindOnce(image, 'load', () => {\n\t\t\t\t\tresolve(image);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tsetOptions(options: PreviewOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): PreviewOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetDraggable(): Draggable\n\t{\n\t\treturn this.cache.get('draggable');\n\t}\n\n\tgetDevicePixelRatio(): number\n\t{\n\t\treturn window.devicePixelRatio;\n\t}\n\n\tgetCanvas(): HTMLCanvasElement\n\t{\n\t\tconst canvas = this.cache.remember('canvas', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<canvas class=\"ui-stamp-uploader-preview-canvas\"></canvas>\n\t\t\t`;\n\t\t});\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tif (Type.isDomNode(canvas.parentElement) && !this.cache.has('adjustCanvas'))\n\t\t\t{\n\t\t\t\tconst parentRect = {\n\t\t\t\t\twidth: canvas.parentElement.clientWidth,\n\t\t\t\t\theight: canvas.parentElement.clientHeight,\n\t\t\t\t};\n\n\t\t\t\tif (parentRect.width > 0 && parentRect.height > 0)\n\t\t\t\t{\n\t\t\t\t\tvoid this.cache.remember('adjustCanvas', () => {\n\t\t\t\t\t\tconst ratio = this.getDevicePixelRatio();\n\n\t\t\t\t\t\tcanvas.width = parentRect.width * ratio;\n\t\t\t\t\t\tcanvas.height = parentRect.height * ratio;\n\n\t\t\t\t\t\tDom.style(canvas, {\n\t\t\t\t\t\t\twidth: `${parentRect.width}px`,\n\t\t\t\t\t\t\theight: `${parentRect.height}px`,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst context2d = canvas.getContext('2d');\n\n\t\t\t\t\t\tconst {context2d: context2dOptions = {}} = this.getOptions();\n\t\t\t\t\t\tif (Type.isPlainObject(context2dOptions))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tObject.assign(context2d, context2dOptions);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontext2d.scale(ratio, ratio);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tclearTimeout(timeoutId);\n\t\t});\n\n\t\treturn canvas;\n\t}\n\n\tgetImagePreviewLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('imagePreviewLayout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-preview-image\">\n\t\t\t\t\t${this.getCanvas()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div \n\t\t\t\t\tclass=\"ui-stamp-uploader-preview\" \n\t\t\t\t\ttitle=\"${Loc.getMessage('UI_STAMP_UPLOADER_PREVIEW_TITLE')}\"\n\t\t\t\t>\n\t\t\t\t\t${this.getImagePreviewLayout()}\n\t\t\t\t\t${this.getCropControl()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tclear()\n\t{\n\t\tconst canvas = this.getCanvas();\n\t\tconst context = canvas.getContext('2d');\n\t\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\t}\n\n\tsetSourceImage(image: File | Blob)\n\t{\n\t\tthis.cache.set('sourceImage', image);\n\t}\n\n\tgetSourceImage(): File | Blob\n\t{\n\t\treturn this.cache.get('sourceImage', null);\n\t}\n\n\tsetSourceImageRect(rect: DOMRect | {width: number, height: number})\n\t{\n\t\tthis.cache.set('sourceImageRect', rect);\n\t}\n\n\tgetSourceImageRect(): DOMRect | {width: number, height: number}\n\t{\n\t\treturn this.cache.get('sourceImageRect', {});\n\t}\n\n\tsetCurrentDrawOptions(drawOptions: DrawOptions)\n\t{\n\t\tthis.cache.set('currentDrawOptions', drawOptions);\n\t}\n\n\tgetCurrentDrawOptions(): DrawOptions\n\t{\n\t\treturn this.cache.get('currentDrawOptions', {});\n\t}\n\n\tapplyCrop(): Promise<any>\n\t{\n\t\tconst cropRect = this.getCropRect();\n\t\tconst drawOptions = this.getCurrentDrawOptions();\n\t\tconst sourceImageRect = this.getSourceImageRect();\n\t\tconst imageScaleRatio = (sourceImageRect.width / drawOptions.dWidth);\n\t\tconst canvas = this.getCanvas();\n\n\t\tconst cropOptions = {\n\t\t\tsX: (cropRect.left - drawOptions.dX) * imageScaleRatio,\n\t\t\tsY: (cropRect.top - drawOptions.dY) * imageScaleRatio,\n\t\t\tsWidth: cropRect.width * imageScaleRatio,\n\t\t\tsHeight: cropRect.height * imageScaleRatio,\n\t\t\tdWidth: cropRect.width,\n\t\t\tdHeight: cropRect.height,\n\t\t\tdX: (canvas.clientWidth - cropRect.width) / 2,\n\t\t\tdY: (canvas.clientHeight - cropRect.height) / 2,\n\t\t};\n\n\t\treturn this.renderImage(this.getSourceImage(), cropOptions);\n\t}\n\n\trenderImage(file: File | Blob, drawOptions: DrawOptions = {}): Promise<any>\n\t{\n\t\tconst canvas: HTMLCanvasElement = this.getCanvas();\n\t\tconst context2d: CanvasRenderingContext2D = canvas.getContext('2d');\n\n\t\treturn Preview\n\t\t\t.#loadImage(file)\n\t\t\t.then((sourceImage: HTMLImageElement) => {\n\t\t\t\tconst sourceImageRect = {\n\t\t\t\t\twidth: sourceImage.width,\n\t\t\t\t\theight: sourceImage.height,\n\t\t\t\t};\n\n\t\t\t\tconst scaleRatio = Math.min(\n\t\t\t\t\tcanvas.clientWidth / sourceImageRect.width,\n\t\t\t\t\tcanvas.clientHeight / sourceImageRect.height,\n\t\t\t\t);\n\n\t\t\t\tconst preparedDrawOptions = {\n\t\t\t\t\tsX: 0,\n\t\t\t\t\tsY: 0,\n\t\t\t\t\tsWidth: sourceImageRect.width,\n\t\t\t\t\tsHeight: sourceImageRect.height,\n\t\t\t\t\tdX: (canvas.clientWidth - (sourceImageRect.width * scaleRatio)) / 2,\n\t\t\t\t\tdY: (canvas.clientHeight - (sourceImageRect.height * scaleRatio)) / 2,\n\t\t\t\t\tdWidth: sourceImageRect.width * scaleRatio,\n\t\t\t\t\tdHeight: sourceImageRect.height * scaleRatio,\n\t\t\t\t\t...drawOptions,\n\t\t\t\t};\n\n\t\t\t\tthis.setSourceImageRect(sourceImageRect);\n\t\t\t\tthis.setCurrentDrawOptions(preparedDrawOptions);\n\n\t\t\t\tthis.clear();\n\n\t\t\t\tcontext2d.drawImage(\n\t\t\t\t\tsourceImage,\n\t\t\t\t\tpreparedDrawOptions.sX,\n\t\t\t\t\tpreparedDrawOptions.sY,\n\t\t\t\t\tpreparedDrawOptions.sWidth,\n\t\t\t\t\tpreparedDrawOptions.sHeight,\n\t\t\t\t\tpreparedDrawOptions.dX,\n\t\t\t\t\tpreparedDrawOptions.dY,\n\t\t\t\t\tpreparedDrawOptions.dWidth,\n\t\t\t\t\tpreparedDrawOptions.dHeight,\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tsetInitialCropRect(rect: {} | DOMRect)\n\t{\n\t\tthis.cache.set('initialCropRect', rect);\n\t}\n\n\tgetInitialCropRect(): {} | DOMRect\n\t{\n\t\treturn this.cache.get('initialCropRect');\n\t}\n\n\tgetCropControl(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('cropControl', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop-top\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop-right\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop-bottom\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop-left\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-preview-crop-rotate\"></div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\t#setIsCropEnabled(value: boolean)\n\t{\n\t\tthis.cache.set('isCropEnabled', value);\n\t}\n\n\tisCropEnabled(): boolean\n\t{\n\t\treturn this.cache.get('isCropEnabled', false);\n\t}\n\n\tenableCrop()\n\t{\n\t\tthis.renderImage(this.getSourceImage())\n\t\t\t.then(() => {\n\t\t\t\tconst control = this.getCropControl();\n\t\t\t\tconst drawOptions = this.getCurrentDrawOptions();\n\n\t\t\t\tDom.style(control, {\n\t\t\t\t\ttop: `${drawOptions.dY}px`,\n\t\t\t\t\tbottom: `${drawOptions.dY}px`,\n\t\t\t\t\tleft: `${drawOptions.dX}px`,\n\t\t\t\t\tright: `${drawOptions.dX}px`,\n\t\t\t\t});\n\n\t\t\t\tDom.addClass(control, 'ui-stamp-uploader-preview-crop-show');\n\n\t\t\t\tthis.#setIsCropEnabled(true);\n\t\t\t});\n\t}\n\n\tdisableCrop()\n\t{\n\t\tDom.removeClass(this.getCropControl(), 'ui-stamp-uploader-preview-crop-show');\n\t\tthis.#setIsCropEnabled(false);\n\t}\n\n\tonDragStart()\n\t{\n\t\tconst cropControl = this.getCropControl();\n\n\t\tthis.setInitialCropRect({\n\t\t\ttop: Text.toNumber(Dom.style(cropControl, 'top')),\n\t\t\tleft: Text.toNumber(Dom.style(cropControl, 'left')),\n\t\t\tright: Text.toNumber(Dom.style(cropControl, 'right')),\n\t\t\tbottom: Text.toNumber(Dom.style(cropControl, 'bottom')),\n\t\t});\n\t}\n\n\tonDragMove(event: DragMoveEvent)\n\t{\n\t\tconst data = event.getData();\n\t\tconst initialRect = this.getInitialCropRect();\n\t\tconst drawOptions = this.getCurrentDrawOptions();\n\t\tconst requiredOffset = 20;\n\t\tconst canvasWidth = drawOptions.dX + drawOptions.dWidth + drawOptions.dX;\n\t\tconst canvasHeight = drawOptions.dY + drawOptions.dHeight + drawOptions.dY;\n\n\t\tif (data.source.matches('.ui-stamp-uploader-preview-crop-right'))\n\t\t{\n\t\t\tconst position = Math.max(\n\t\t\t\tMath.min(\n\t\t\t\t\tinitialRect.right - data.offsetX,\n\t\t\t\t\t(canvasWidth - initialRect.left) - requiredOffset,\n\t\t\t\t),\n\t\t\t\tdrawOptions.dX,\n\t\t\t);\n\n\t\t\tDom.style(this.getCropControl(), 'right', `${position}px`);\n\t\t}\n\n\t\tif (data.source.matches('.ui-stamp-uploader-preview-crop-left'))\n\t\t{\n\t\t\tconst position = Math.max(\n\t\t\t\tMath.min(\n\t\t\t\t\tinitialRect.left + data.offsetX,\n\t\t\t\t\tcanvasWidth - initialRect.right - requiredOffset,\n\t\t\t\t),\n\t\t\t\tdrawOptions.dX,\n\t\t\t);\n\n\t\t\tDom.style(this.getCropControl(), 'left', `${position}px`);\n\t\t}\n\n\t\tif (data.source.matches('.ui-stamp-uploader-preview-crop-top'))\n\t\t{\n\t\t\tconst position = Math.max(\n\t\t\t\tdrawOptions.dY,\n\t\t\t\tMath.min(\n\t\t\t\t\tinitialRect.top + data.offsetY,\n\t\t\t\t\tcanvasHeight - initialRect.bottom - requiredOffset,\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tDom.style(this.getCropControl(), 'top', `${position}px`);\n\t\t}\n\n\t\tif (data.source.matches('.ui-stamp-uploader-preview-crop-bottom'))\n\t\t{\n\t\t\tconst position = Math.max(\n\t\t\t\tMath.min(\n\t\t\t\t\tcanvasHeight - initialRect.top - requiredOffset,\n\t\t\t\t\tinitialRect.bottom - data.offsetY,\n\t\t\t\t),\n\t\t\t\tdrawOptions.dY,\n\t\t\t);\n\n\t\t\tDom.style(this.getCropControl(), 'bottom', `${position}px`);\n\t\t}\n\t}\n\n\tgetCropRect(): DOMRect | {}\n\t{\n\t\tconst cropControl = this.getCropControl();\n\t\tconst width = cropControl.clientWidth;\n\t\tconst height = cropControl.clientHeight;\n\t\tconst left = Math.round(Text.toNumber(Dom.style(cropControl, 'left')));\n\t\tconst top = Math.round(Text.toNumber(Dom.style(cropControl, 'top')));\n\t\tconst canvas = this.getCanvas();\n\t\tconst canvasRect = canvas.getBoundingClientRect();\n\t\tconst right = canvasRect.width - (left + width);\n\t\tconst bottom = canvasRect.height - (top + height);\n\n\t\treturn {\n\t\t\twidth,\n\t\t\theight,\n\t\t\ttop,\n\t\t\tleft,\n\t\t\tright,\n\t\t\tbottom,\n\t\t};\n\t}\n\n\tasync getValue(): Promise<Blob>\n\t{\n\t\tconst canvas = this.getCanvas();\n\t\treturn await new Promise((resolve) => {\n\t\t\tcanvas.toBlob(resolve, 'image/png');\n\t\t});\n\t}\n\n\tonDragEnd(event: DragEndEvent)\n\t{\n\n\t}\n\n\tshow(file: File | Blob)\n\t{\n\t\tthis.setSourceImage(file);\n\t\tvoid this.renderImage(file);\n\t\tDom.addClass(this.getLayout(), 'ui-stamp-uploader-preview-show');\n\t}\n\n\thide()\n\t{\n\t\tDom.removeClass(this.getLayout(), 'ui-stamp-uploader-preview-show');\n\t}\n\n\tgetFile(): Promise<Blob | File>\n\t{\n\t\tconst drawOptions = this.getCurrentDrawOptions();\n\t\tconst canvas = document.createElement('canvas');\n\t\tconst context2d = canvas.getContext('2d');\n\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.getCanvas().toBlob((blob) => {\n\t\t\t\tvoid Preview\n\t\t\t\t\t.#loadImage(blob)\n\t\t\t\t\t.then((image) => {\n\t\t\t\t\t\tconst ratio = this.getDevicePixelRatio();\n\n\t\t\t\t\t\tcanvas.width = drawOptions.dWidth * ratio;\n\t\t\t\t\t\tcanvas.height = drawOptions.dHeight * ratio;\n\n\t\t\t\t\t\tcontext2d.drawImage(\n\t\t\t\t\t\t\timage,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\timage.width,\n\t\t\t\t\t\t\timage.height,\n\t\t\t\t\t\t\t-((image.width - canvas.width) / 2),\n\t\t\t\t\t\t\t-((image.height - canvas.height) / 2),\n\t\t\t\t\t\t\timage.width,\n\t\t\t\t\t\t\timage.height,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tcanvas.toBlob((resultBlob) => {\n\t\t\t\t\t\t\tresolve(resultBlob);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n}","import {Cache, Tag, Loc} from 'main.core';\n\nimport './css/style.css';\n\nexport default class Message\n{\n\tcache = new Cache.MemoryCache();\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-message\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-message-icon\"></div>\n\t\t\t\t\t<div class=\"ui-stamp-uploader-message-text\">\n\t\t\t\t\t\t<div class=\"ui-stamp-uploader-message-text-header\">\n\t\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_MESSAGE_TITLE')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"ui-stamp-uploader-message-text-description\">\n\t\t\t\t\t\t\t${Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_MESSAGE_DESCRIPTION')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n}","import {Cache, Loc, Tag} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Button} from 'ui.buttons';\n\nimport './css/style.css';\n\ntype FileSelectOptions = {\n\tevents: {\n\t\t[key: string]: (BaseEvent) => void,\n\t},\n};\n\nexport default class FileSelect extends EventEmitter\n{\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: FileSelectOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Stamp.Uploader.FileSelect');\n\t\tthis.subscribeFromOptions(options.events);\n\t\tthis.setOptions(options);\n\t}\n\n\tsetOptions(options: FileSelectOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): FileSelectOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetTakePhotoButton(): Button\n\t{\n\t\treturn this.cache.remember('takePhotoButton', () => {\n\t\t\treturn new Button({\n\t\t\t\ttext: Loc.getMessage('UI_STAMP_UPLOADER_TAKE_PHOTO_BUTTON_LABEL'),\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\tsize: Button.Size.LARGE,\n\t\t\t\ticon: Button.Icon.CAMERA,\n\t\t\t\tround: true,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.emit('onTakePhotoClick');\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tgetSelectPhotoButton(): Button\n\t{\n\t\treturn this.cache.remember('selectPhotoButton', () => {\n\t\t\treturn new Button({\n\t\t\t\ttext: Loc.getMessage('UI_STAMP_UPLOADER_SELECT_PHOTO_BUTTON_LABEL_1'),\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\tsize: Button.Size.LARGE,\n\t\t\t\ticon: Button.Icon.DOWNLOAD,\n\t\t\t\tround: true,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.emit('onTakePhotoClick');\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader-file-select\">\n\t\t\t\t\t<div class=\"ui-stamp-uploader-file-select-select-photo\">\n\t\t\t\t\t\t${this.getSelectPhotoButton().render()}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n}","import {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Type, Cache, Tag, Dom, Reflection, Loc, Event} from 'main.core';\nimport {Uploader as FileUploader, UploaderFile, FileEvent, UploaderEvent, Helpers} from 'ui.uploader.core';\nimport 'ui.dialogs.messagebox';\nimport {Layout} from 'ui.sidepanel.layout';\nimport {Button} from 'ui.buttons';\nimport Header from './header/header';\nimport UploadLayout from './upload-layout/upload-layout';\nimport Dropzone from './dropzone/dropzone';\nimport ActionPanel from './action-panel/action-panel';\nimport Status from './status/status';\nimport Preview from './preview/preview';\nimport Message from './message/message';\nimport FileSelect from './file-select/file-select';\n\nimport './css/style.css';\n\nexport type ContactItem = {\n\tid: number | string,\n\tlabel: string,\n\thref?: string,\n};\n\nexport type UploaderOptions = {\n\tcontroller: {\n\t\tupload: string,\n\t},\n\tmode: $Values<Uploader.Mode>,\n\tcontact: ContactItem,\n\tcontactsList: Array<ContactItem>,\n\tevents: {\n\t\t[key: string]: (event: BaseEvent) => void,\n\t},\n};\n\n/**\n * @namespace BX.UI.Stamp\n */\nexport class Uploader extends EventEmitter\n{\n\tstatic Mode = {\n\t\tSLIDER: 'slider',\n\t\tINLINE: 'inline',\n\t};\n\n\tcache = new Cache.MemoryCache();\n\n\tconstructor(options: UploaderOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Stamp.Uploader');\n\t\tthis.subscribeFromOptions(options.events);\n\t\tthis.setOptions(options);\n\n\t\tthis.cache.remember('fileUploader', () => {\n\t\t\tconst dropzoneLayout = this.getDropzone().getLayout();\n\t\t\tconst previewLayout = this.getPreview().getLayout();\n\t\t\tconst fileSelectButtonLayout = this.getFileSelect().getLayout();\n\n\t\t\tEvent.bind(previewLayout, 'click', (event: MouseEvent) => {\n\t\t\t\tif (this.getPreview().isCropEnabled())\n\t\t\t\t{\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst acceptedFileTypes = ['image/png', 'image/jpeg'];\n\n\t\t\treturn new FileUploader({\n\t\t\t\tcontroller: this.getOptions().controller?.upload,\n\t\t\t\tassignAsFile: true,\n\t\t\t\tbrowseElement: [\n\t\t\t\t\tdropzoneLayout,\n\t\t\t\t\tpreviewLayout,\n\t\t\t\t\tfileSelectButtonLayout,\n\t\t\t\t\tthis.getHiddenInput(),\n\t\t\t\t],\n\t\t\t\tdropElement: [\n\t\t\t\t\tdropzoneLayout,\n\t\t\t\t\tpreviewLayout,\n\t\t\t\t],\n\t\t\t\timagePreviewHeight: 556,\n\t\t\t\timagePreviewWidth: 1000,\n\t\t\t\tautoUpload: false,\n\t\t\t\tacceptedFileTypes,\n\t\t\t\tevents: {\n\t\t\t\t\t[UploaderEvent.FILE_ADD]: (event: BaseEvent) => {\n\t\t\t\t\t\tconst {file, error} = event.getData();\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tType.isNil(error)\n\t\t\t\t\t\t\t&& Helpers.isValidFileType(file.getBinary(), acceptedFileTypes)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.getPreview().show(file.getClientPreview());\n\t\t\t\t\t\t\tthis.setUploaderFile(file);\n\n\t\t\t\t\t\t\tif (this.getMode() === Uploader.Mode.SLIDER)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.getSliderButtons().saveButton.setDisabled(false);\n\t\t\t\t\t\t\t\tthis.getActionPanel().enable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.getMode() === Uploader.Mode.INLINE)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.getInlineSaveButton().setDisabled(false);\n\t\t\t\t\t\t\t\tthis.getActionPanel().enable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setIsChanged(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t[UploaderEvent.FILE_UPLOAD_PROGRESS]: (event: BaseEvent) => {\n\t\t\t\t\t\tconst {progress, file} = event.getData();\n\n\t\t\t\t\t\tthis.getStatus().updateUploadStatus({\n\t\t\t\t\t\t\tpercent: progress,\n\t\t\t\t\t\t\tsize: (file.getSize() / 100) * progress,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t[UploaderEvent.FILE_ERROR]: function(event: BaseEvent) {\n\t\t\t\t\t\tconst {error} = event.getData();\n\t\t\t\t\t\tUploader.showAlert(error.getMessage());\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tstatic showAlert(...args)\n\t{\n\t\tconst TopMessageBox = Reflection.getClass('top.BX.UI.Dialogs.MessageBox');\n\t\tif (!Type.isNil(TopMessageBox))\n\t\t{\n\t\t\tTopMessageBox.alert(...args);\n\t\t}\n\t}\n\n\tstatic showConfirm(options: {[key: string]: any})\n\t{\n\t\tconst TopMessageBox = Reflection.getClass('top.BX.UI.Dialogs.MessageBox');\n\t\tconst TopMessageBoxButtons = Reflection.getClass('top.BX.UI.Dialogs.MessageBoxButtons');\n\t\tif (!Type.isNil(TopMessageBox))\n\t\t{\n\t\t\tTopMessageBox.show({\n\t\t\t\tmodal: true,\n\t\t\t\tbuttons: TopMessageBoxButtons.OK_CANCEL,\n\t\t\t\t...options,\n\t\t\t});\n\t\t}\n\t}\n\n\tsetIsChanged(value: boolean)\n\t{\n\t\tthis.cache.set('isChanged', value);\n\t}\n\n\tisChanged(): boolean\n\t{\n\t\treturn this.cache.get('isChanged', false);\n\t}\n\n\tstatic #delay(callback: () => void, delay: number)\n\t{\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tcallback();\n\t\t\tclearTimeout(timeoutId);\n\t\t}, delay);\n\t}\n\n\tgetFileUploader(): FileUploader\n\t{\n\t\treturn this.cache.get('fileUploader');\n\t}\n\n\tsetUploaderFile(file: UploaderFile)\n\t{\n\t\tthis.cache.set('uploaderFile', file);\n\t}\n\n\tgetUploaderFile(): UploaderFile\n\t{\n\t\treturn this.cache.get('uploaderFile', null);\n\t}\n\n\tsetOptions(options: UploaderOptions)\n\t{\n\t\tthis.cache.set('options', {...options});\n\t}\n\n\tgetOptions(): UploaderOptions\n\t{\n\t\treturn this.cache.get('options', {});\n\t}\n\n\tgetMode(): $Values<Uploader.Mode>\n\t{\n\t\tconst {mode} = this.getOptions();\n\t\tif (Object.values(Uploader.Mode).includes(mode))\n\t\t{\n\t\t\treturn mode;\n\t\t}\n\n\t\treturn Uploader.Mode.SLIDER;\n\t}\n\n\tgetHeader(): Header\n\t{\n\t\treturn this.cache.remember('header', () => {\n\t\t\treturn new Header(this.getOptions());\n\t\t});\n\t}\n\n\tgetPreview(): Preview\n\t{\n\t\treturn this.cache.remember('preview', () => {\n\t\t\treturn new Preview({});\n\t\t});\n\t}\n\n\tgetFileSelect(): FileSelect\n\t{\n\t\treturn this.cache.remember('fileSelect', () => {\n\t\t\treturn new FileSelect({\n\t\t\t\tevents: {\n\t\t\t\t\tonTakePhotoClick: () => {\n\t\t\t\t\t\tthis.emit('onTakePhotoClick');\n\t\t\t\t\t},\n\t\t\t\t\tonSelectPhotoClick: () => {\n\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tgetUploadLayout(): UploadLayout\n\t{\n\t\treturn this.cache.remember('uploadLayout', () => {\n\t\t\treturn new UploadLayout({\n\t\t\t\tchildren: [\n\t\t\t\t\t(() => {\n\t\t\t\t\t\tif (this.getMode() === Uploader.Mode.INLINE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn this.getFileSelect();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.getDropzone();\n\t\t\t\t\t})(),\n\t\t\t\t\tthis.getActionPanel(),\n\t\t\t\t\tthis.getStatus(),\n\t\t\t\t\tthis.getPreview(),\n\t\t\t\t],\n\t\t\t});\n\t\t});\n\t}\n\n\tgetDropzone(): Dropzone\n\t{\n\t\treturn this.cache.remember('dropzone', () => {\n\t\t\treturn new Dropzone({});\n\t\t});\n\t}\n\n\tgetActionPanel(): ActionPanel\n\t{\n\t\treturn this.cache.remember('actionPanel', () => {\n\t\t\treturn new ActionPanel({\n\t\t\t\tevents: {\n\t\t\t\t\tonCropClick: this.onCropClick.bind(this),\n\t\t\t\t\tonApplyClick: this.onCropApplyClick.bind(this),\n\t\t\t\t\tonCancelClick: this.onCropCancelClick.bind(this),\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tonCropApplyClick()\n\t{\n\t\tthis.getPreview().applyCrop();\n\t\tthis.getPreview().disableCrop();\n\t\tthis.getActionPanel().hideCropActions();\n\t\tthis.getInlineSaveButton().setDisabled(false);\n\t\tthis.getActionPanel().enable();\n\t}\n\n\tonCropCancelClick()\n\t{\n\t\tthis.getPreview().disableCrop();\n\t\tthis.getActionPanel().hideCropActions();\n\t\tthis.getInlineSaveButton().setDisabled(false);\n\t\tthis.getActionPanel().enable();\n\t}\n\n\tonCropClick()\n\t{\n\t\tthis.getPreview().enableCrop();\n\t\tthis.getActionPanel().showCropAction();\n\t\tthis.getInlineSaveButton().setDisabled(true);\n\t\tthis.getActionPanel().enable();\n\t}\n\n\tgetStatus(): Status\n\t{\n\t\treturn this.cache.remember('status', () => {\n\t\t\treturn new Status();\n\t\t});\n\t}\n\n\tgetLayout(): HTMLDivElement\n\t{\n\t\treturn this.cache.remember('layout', () => {\n\t\t\tconst mode = this.getMode();\n\t\t\treturn Tag.render`\n\t\t\t\t<div class=\"ui-stamp-uploader ui-stamp-uploader-mode-${mode}\">\n\t\t\t\t\t${(() => {\n\t\t\t\t\t\tif (mode === Uploader.Mode.SLIDER)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn this.getMessage().getLayout();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t})()}\n\t\t\t\t\t${this.getHeader().getLayout()}\n\t\t\t\t\t${this.getUploadLayout().getLayout()}\n\t\t\t\t\t${(() => {\n\t\t\t\t\t\tif (mode === Uploader.Mode.INLINE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn Tag.render`\n\t\t\t\t\t\t\t\t<div class=\"ui-stamp-uploader-footer\">\n\t\t\t\t\t\t\t\t\t${this.getInlineSaveButton().render()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t})()}\n\t\t\t\t\t${this.getHiddenInput()}\n\t\t\t\t</div>\n\t\t\t`;\n\t\t});\n\t}\n\n\tgetHiddenInput(): HTMLInputElement\n\t{\n\t\treturn this.cache.remember('hiddenInput', () => {\n\t\t\treturn Tag.render`\n\t\t\t\t<input type=\"file\" name=\"STAMP_UPLOADER_INPUT\" hidden>\n\t\t\t`;\n\t\t});\n\t}\n\n\trenderTo(target: HTMLElement)\n\t{\n\t\tif (Type.isDomNode(target))\n\t\t{\n\t\t\tDom.append(this.getLayout(), target);\n\t\t}\n\t}\n\n\tupload(): Promise<UploaderFile>\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.getPreview().getFile().then((blob) => {\n\t\t\t\tthis.getFileUploader().addFile(blob);\n\t\t\t\tconst [resultFile] = this.getFileUploader().getFiles();\n\n\t\t\t\tresultFile.subscribeOnce(FileEvent.LOAD_COMPLETE, () => {\n\t\t\t\t\tthis.getPreview().hide();\n\t\t\t\t\tconst { controller } = this.getOptions();\n\t\t\t\t\tif (!controller)\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve(resultFile);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.getStatus().showUploadStatus({reset: true});\n\t\t\t\t\tresultFile.upload({\n\t\t\t\t\t\tonComplete: () => {\n\t\t\t\t\t\t\tresolve(resultFile);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError: console.error,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tgetMessage(): Message\n\t{\n\t\treturn this.cache.remember('message', () => {\n\t\t\treturn new Message();\n\t\t});\n\t}\n\n\tgetInlineSaveButton(): Button\n\t{\n\t\treturn this.cache.remember('inlineSaveButton', () => {\n\t\t\tconst button = new Button({\n\t\t\t\ttext: Loc.getMessage('UI_STAMP_UPLOADER_SAVE_BUTTON_LABEL'),\n\t\t\t\tcolor: Button.Color.PRIMARY,\n\t\t\t\tsize: Button.Size.LARGE,\n\t\t\t\tround: true,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tconst saveButton = this.getInlineSaveButton();\n\t\t\t\t\tsaveButton.setWaiting(true);\n\n\t\t\t\t\tthis.upload()\n\t\t\t\t\t\t.then((uploaderFile) => {\n\t\t\t\t\t\t\tconst { controller } = this.getOptions();\n\t\t\t\t\t\t\tif (!controller)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn this.emitAsync('onSaveAsync', {file: uploaderFile.toJSON()});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\t\t\t\t\tUploader.#delay(() => {\n\t\t\t\t\t\t\t\t\t\tthis.getPreview().show(uploaderFile.getClientPreview());\n\t\t\t\t\t\t\t\t\t\tthis.getStatus().showPreparingStatus();\n\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tthis.emitAsync('onSaveAsync', {file: uploaderFile.toJSON()}),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tthis.getStatus().hide();\n\n\t\t\t\t\t\t\tUploader.#delay(() => {\n\t\t\t\t\t\t\t\tsaveButton.setWaiting(false);\n\t\t\t\t\t\t\t\tsaveButton.setDisabled(true);\n\t\t\t\t\t\t\t\tthis.getActionPanel().disable();\n\t\t\t\t\t\t\t}, 500);\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tbutton.setDisabled(true);\n\t\t\tthis.getActionPanel().disable();\n\n\t\t\treturn button;\n\t\t});\n\t}\n\n\tsetSliderButtons(buttons: {saveButton: Button, cancelButton: Button})\n\t{\n\t\tthis.cache.set('sliderButtons', buttons);\n\t}\n\n\tgetSliderButtons(): {saveButton: Button, cancelButton: Button}\n\t{\n\t\treturn this.cache.get('sliderButtons', {saveButton: null, cancelButton: null});\n\t}\n\n\t#setPreventConfirmShow(value: boolean)\n\t{\n\t\tthis.cache.set('preventConfirmShow', value);\n\t}\n\n\t#isConfirmShowPrevented(): boolean\n\t{\n\t\treturn this.cache.get('preventConfirmShow', false);\n\t}\n\n\tshow()\n\t{\n\t\tconst SidePanelInstance = Reflection.getClass('BX.SidePanel.Instance');\n\t\tif (Type.isNil(SidePanelInstance))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getPreview().hide();\n\t\tthis.getStatus().hide();\n\t\tthis.getActionPanel().disable();\n\n\t\tSidePanelInstance.open('stampUploader', {\n\t\t\twidth: 640,\n\t\t\tcontentCallback: () => {\n\t\t\t\treturn Layout.createContent({\n\t\t\t\t\textensions: [\n\t\t\t\t\t\t'ui.stamp.uploader',\n\t\t\t\t\t],\n\t\t\t\t\tcontent: () => {\n\t\t\t\t\t\treturn this.getLayout();\n\t\t\t\t\t},\n\t\t\t\t\tdesign: {\n\t\t\t\t\t\tsection: false,\n\t\t\t\t\t},\n\t\t\t\t\tbuttons: ({cancelButton, SaveButton}) => {\n\t\t\t\t\t\tconst saveButton = new SaveButton({\n\t\t\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\t\t\tsaveButton.setWaiting(true);\n\t\t\t\t\t\t\t\tthis.setIsChanged(false);\n\t\t\t\t\t\t\t\tthis.#setPreventConfirmShow(true);\n\n\t\t\t\t\t\t\t\tthis.upload()\n\t\t\t\t\t\t\t\t\t.then((uploaderFile) => {\n\t\t\t\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\t\t\t\t\t\t\t\tUploader.#delay(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.getPreview().show(uploaderFile.getClientPreview());\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.getStatus().showPreparingStatus();\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\tthis.emitAsync('onSaveAsync', {file: uploaderFile.toJSON()})\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.then(() => {\n\t\t\t\t\t\t\t\t\t\tthis.getStatus().hide();\n\n\t\t\t\t\t\t\t\t\t\tUploader.#delay(() => {\n\t\t\t\t\t\t\t\t\t\t\tsaveButton.setWaiting(false);\n\t\t\t\t\t\t\t\t\t\t\tsaveButton.setDisabled(true);\n\t\t\t\t\t\t\t\t\t\t\tthis.getActionPanel().disable();\n\t\t\t\t\t\t\t\t\t\t\tconst topSlider = BX.SidePanel.Instance.getTopSlider();\n\t\t\t\t\t\t\t\t\t\t\tif (topSlider && topSlider.url === 'stampUploader')\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttopSlider.close();\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}, 500);\n\t\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\tsaveButton.setDisabled(true);\n\t\t\t\t\t\tthis.getActionPanel().disable();\n\t\t\t\t\t\tthis.setSliderButtons({saveButton, cancelButton});\n\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tsaveButton,\n\t\t\t\t\t\t\tcancelButton,\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\tevents: {\n\t\t\t\tonClose: (event) => {\n\t\t\t\t\tif (this.isChanged())\n\t\t\t\t\t{\n\t\t\t\t\t\tevent.denyAction();\n\t\t\t\t\t\tif (!this.#isConfirmShowPrevented())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tUploader.showConfirm({\n\t\t\t\t\t\t\t\tmessage: Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM'),\n\t\t\t\t\t\t\t\tonOk: (messageBox) => {\n\t\t\t\t\t\t\t\t\tthis.setIsChanged(false);\n\t\t\t\t\t\t\t\t\tevent.getSlider().close();\n\t\t\t\t\t\t\t\t\tmessageBox.close();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tokCaption: Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM_CLOSE'),\n\t\t\t\t\t\t\t\tonCancel: (messageBox) => {\n\t\t\t\t\t\t\t\t\tmessageBox.close();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcancelCaption: Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM_CANCEL'),\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.setIsChanged(false);\n\t\t\t\t\t\t\tevent.getSlider().close();\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"],"names":["Header","constructor","options","cache","Cache","MemoryCache","setOptions","set","getOptions","get","setValue","value","Type","isString","isNumber","getValueLayout","textContent","remember","Tag","render","Text","encode","contact","label","getChangeContactButton","Button","text","Loc","getMessage","size","Size","EXTRA_SMALL","color","Color","LIGHT_BORDER","round","getLayout","appendTo","target","isDomNode","Dom","append","prependTo","prepend","renderTo","UploadLayout","children","map","item","Dropzone","EventEmitter","setEventNamespace","subscribeFromOptions","events","ActionPanel","getCropButton","onClick","event","preventDefault","emit","getApplyButton","ApplyButton","PRIMARY","onclick","getCancelButton","CancelButton","getCropActionsLayout","showCropAction","show","hide","hideCropActions","disable","addClass","enable","removeClass","Status","formatSize","bytes","sizes","textIndex","Math","floor","log","number","parseFloat","pow","toFixed","getUploadStatusLayout","loaderLayout","loader","Loader","mode","updateUploadStatus","percent","percentNode","querySelector","sizeNode","innerHTML","replace","formatted","getPreparingStatusLayout","showUploadStatus","reset","layout","uploadStatusLayout","preparingStatusLayout","remove","setOpacity","showPreparingStatus","style","Preview","draggable","Draggable","container","type","HEADLESS","context","window","top","subscribe","onDragStart","bind","onDragMove","onDragEnd","getDraggable","getDevicePixelRatio","devicePixelRatio","getCanvas","canvas","timeoutId","setTimeout","parentElement","has","parentRect","width","clientWidth","height","clientHeight","ratio","context2d","getContext","context2dOptions","isPlainObject","Object","assign","scale","clearTimeout","getImagePreviewLayout","getCropControl","clear","clearRect","setSourceImage","image","getSourceImage","setSourceImageRect","rect","getSourceImageRect","setCurrentDrawOptions","drawOptions","getCurrentDrawOptions","applyCrop","cropRect","getCropRect","sourceImageRect","imageScaleRatio","dWidth","cropOptions","sX","left","dX","sY","dY","sWidth","sHeight","dHeight","renderImage","file","then","sourceImage","scaleRatio","min","preparedDrawOptions","drawImage","setInitialCropRect","getInitialCropRect","isCropEnabled","enableCrop","control","bottom","right","disableCrop","cropControl","toNumber","data","getData","initialRect","requiredOffset","canvasWidth","canvasHeight","source","matches","position","max","offsetX","offsetY","canvasRect","getBoundingClientRect","getValue","Promise","resolve","toBlob","getFile","document","createElement","blob","resultBlob","fileReader","FileReader","readAsDataURL","Event","bindOnce","Image","src","result","Message","FileSelect","getTakePhotoButton","LARGE","icon","Icon","CAMERA","getSelectPhotoButton","DOWNLOAD","Uploader","dropzoneLayout","getDropzone","previewLayout","getPreview","fileSelectButtonLayout","getFileSelect","stopImmediatePropagation","acceptedFileTypes","FileUploader","controller","upload","assignAsFile","browseElement","getHiddenInput","dropElement","imagePreviewHeight","imagePreviewWidth","autoUpload","UploaderEvent","FILE_ADD","error","isNil","Helpers","isValidFileType","getBinary","getClientPreview","setUploaderFile","getMode","Mode","SLIDER","getSliderButtons","saveButton","setDisabled","getActionPanel","INLINE","getInlineSaveButton","setIsChanged","FILE_UPLOAD_PROGRESS","progress","getStatus","getSize","FILE_ERROR","showAlert","args","TopMessageBox","Reflection","getClass","alert","showConfirm","TopMessageBoxButtons","modal","buttons","OK_CANCEL","isChanged","getFileUploader","getUploaderFile","values","includes","getHeader","onTakePhotoClick","onSelectPhotoClick","getUploadLayout","onCropClick","onApplyClick","onCropApplyClick","onCancelClick","onCropCancelClick","addFile","resultFile","getFiles","subscribeOnce","FileEvent","LOAD_COMPLETE","onComplete","onError","console","button","setWaiting","uploaderFile","emitAsync","toJSON","all","setSliderButtons","cancelButton","SidePanelInstance","open","contentCallback","Layout","createContent","extensions","content","design","section","SaveButton","topSlider","BX","SidePanel","Instance","getTopSlider","url","close","onClose","denyAction","message","onOk","messageBox","getSlider","okCaption","onCancel","cancelCaption","callback","delay"],"mappings":"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"}