Your IP : 172.69.59.17


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/stamp/uploader/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/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}","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'),\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} 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\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: ['image/png', 'image/jpeg'],\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 (Type.isNil(error))\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\t\t\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\t\t\t\t\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().getCanvas().toBlob((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\tthis.getStatus().showUploadStatus({reset: true});\n\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\tUploader.#delay(() => {\n\t\t\t\t\t\t\t\tthis.getPreview().show(uploaderFile.getClientPreview());\n\t\t\t\t\t\t\t\tthis.getStatus().showPreparingStatus();\n\t\t\t\t\t\t\t}, 1000);\n\n\t\t\t\t\t\t\treturn this.emitAsync('onSaveAsync', {file: uploaderFile.toJSON()});\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\tUploader.#delay(() => {\n\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\tthis.getStatus().showPreparingStatus();\n\t\t\t\t\t\t\t\t\t\t}, 1000);\n\n\t\t\t\t\t\t\t\t\t\treturn this.emitAsync('onSaveAsync', {file: uploaderFile.toJSON()});\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\tBX.SidePanel.Instance.close();\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","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","FileUploader","controller","upload","assignAsFile","browseElement","getHiddenInput","dropElement","imagePreviewHeight","imagePreviewWidth","autoUpload","acceptedFileTypes","UploaderEvent","FILE_ADD","error","isNil","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","blob","addFile","resultFile","getFiles","subscribeOnce","FileEvent","LOAD_COMPLETE","onComplete","onError","console","button","setWaiting","uploaderFile","emitAsync","toJSON","setSliderButtons","cancelButton","SidePanelInstance","open","contentCallback","Layout","createContent","extensions","content","design","section","SaveButton","BX","SidePanel","Instance","close","onClose","denyAction","message","onOk","messageBox","getSlider","okCaption","onCancel","cancelCaption","callback","delay"],"mappings":"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"}