Current Path : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/ui/stamp/uploader/dist/ |
Current File : /var/www/www-root/data/www/monolith-realty.ru/bitrix/js/ui/stamp/uploader/dist/uploader.bundle.js |
this.BX = this.BX || {}; this.BX.UI = this.BX.UI || {}; (function (exports,ui_uploader_core,ui_dialogs_messagebox,ui_sidepanel_layout,main_loader,ui_draganddrop_draggable,main_core,main_core_events,ui_buttons) { 'use strict'; let _ = t => t, _t, _t2; class Header { constructor(options) { this.cache = new main_core.Cache.MemoryCache(); this.setOptions(options); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } setValue(value) { if (main_core.Type.isString(value) || main_core.Type.isNumber(value)) { this.getValueLayout().textContent = value; } } getValueLayout() { return this.cache.remember('valueLayout', () => { return main_core.Tag.render(_t || (_t = _` <div class="ui-stamp-uploader-header-text-value"> <span title="${0}">${0}</span> </div> `), main_core.Text.encode(this.getOptions().contact.label), main_core.Text.encode(this.getOptions().contact.label)); }); } getChangeContactButton() { return this.cache.remember('changeContactButton', () => { return new ui_buttons.Button({ text: main_core.Loc.getMessage('UI_STAMP_UPLOADER_HEADER_CHANGE_CONTACT_BUTTON_LABEL'), size: ui_buttons.Button.Size.EXTRA_SMALL, color: ui_buttons.Button.Color.LIGHT_BORDER, round: true }); }); } getLayout() { return this.cache.remember('headerLayout', () => { return main_core.Tag.render(_t2 || (_t2 = _` <div class="ui-stamp-uploader-header"> <div class="ui-stamp-uploader-header-icon"> <div class="ui-stamp-uploader-header-icon-image"></div> </div> <div class="ui-stamp-uploader-header-text"> <div class="ui-stamp-uploader-header-text-label"> ${0} </div> ${0} </div> <div class="ui-stamp-uploader-header-action"> </div> </div> `), main_core.Loc.getMessage('UI_STAMP_UPLOADER_HEADER_TITLE'), this.getValueLayout()); }); } appendTo(target) { if (main_core.Type.isDomNode(target)) { main_core.Dom.append(this.getLayout(), target); } } prependTo(target) { if (main_core.Type.isDomNode(target)) { main_core.Dom.prepend(this.getLayout(), target); } } renderTo(target) { this.appendTo(target); } } let _$1 = t => t, _t$1; class UploadLayout { constructor(options) { this.cache = new main_core.Cache.MemoryCache(); this.setOptions(options); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t$1 || (_t$1 = _$1` <div class="ui-stamp-uploader-upload-layout"> ${0} </div> `), this.getOptions().children.map(item => item.getLayout())); }); } } let _$2 = t => t, _t$2; class Dropzone extends main_core_events.EventEmitter { constructor(options = {}) { super(); this.cache = new main_core.Cache.MemoryCache(); this.setEventNamespace('BX.UI.Stamp.Uploader.Dropzone'); this.subscribeFromOptions(options.events); this.setOptions(options); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t$2 || (_t$2 = _$2` <div class="ui-stamp-uploader-dropzone"> <div class="ui-stamp-uploader-dropzone-icon"></div> <div class="ui-stamp-uploader-dropzone-header"> ${0} </div> <div class="ui-stamp-uploader-dropzone-text"> ${0} </div> </div> `), main_core.Loc.getMessage('UI_STAMP_UPLOADER_DROPZONE_HEADER'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_DROPZONE_TEXT')); }); } } let _$3 = t => t, _t$3, _t2$1, _t3; class ActionPanel extends main_core_events.EventEmitter { constructor(options) { super(); this.cache = new main_core.Cache.MemoryCache(); this.setEventNamespace('BX.UI.Stamp.Uploader.ActionPanel'); this.subscribeFromOptions(options.events); this.setOptions(options); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getCropButton() { return this.cache.remember('cropButton', () => { const onClick = event => { event.preventDefault(); this.emit('onCropClick'); }; return main_core.Tag.render(_t$3 || (_t$3 = _$3` <div class="ui-stamp-uploader-crop-button" onclick="${0}" > ${0} </div> `), onClick, main_core.Loc.getMessage('UI_STAMP_UPLOADER_CROP_BUTTON_LABEL')); }); } getApplyButton() { return this.cache.remember('applyButton', () => { return new ui_buttons.ApplyButton({ color: ui_buttons.Button.Color.PRIMARY, size: ui_buttons.Button.Size.EXTRA_SMALL, round: true, onclick: () => { this.emit('onApplyClick'); } }); }); } getCancelButton() { return this.cache.remember('cancelButton', () => { return new ui_buttons.CancelButton({ color: ui_buttons.Button.Color.LIGHT_BORDER, size: ui_buttons.Button.Size.EXTRA_SMALL, round: true, onclick: () => { this.emit('onCancelClick'); } }); }); } getCropActionsLayout() { return this.cache.remember('cropActionsLayout', () => { return main_core.Tag.render(_t2$1 || (_t2$1 = _$3` <div class="ui-stamp-uploader-action-crop-actions" hidden> ${0} ${0} </div> `), this.getApplyButton().render(), this.getCancelButton().render()); }); } showCropAction() { main_core.Dom.show(this.getCropActionsLayout()); main_core.Dom.hide(this.getCropButton()); } hideCropActions() { main_core.Dom.hide(this.getCropActionsLayout()); main_core.Dom.show(this.getCropButton()); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t3 || (_t3 = _$3` <div class="ui-stamp-uploader-action-panel"> ${0} ${0} </div> `), this.getCropActionsLayout(), this.getCropButton()); }); } disable() { main_core.Dom.addClass(this.getLayout(), 'ui-stamp-uploader-action-panel-disabled'); } enable() { main_core.Dom.removeClass(this.getLayout(), 'ui-stamp-uploader-action-panel-disabled'); } } let _$4 = t => t, _t$4, _t2$2, _t3$1, _t4; class Status { constructor() { this.cache = new main_core.Cache.MemoryCache(); } static formatSize(bytes) { if (bytes === 0) { return `0 ${main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_B')}`; } const sizes = [main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_B'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_KB'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE_MB')]; const textIndex = Math.floor(Math.log(bytes) / Math.log(1024)); return { number: parseFloat((bytes / Math.pow(1024, textIndex)).toFixed(2)), text: sizes[textIndex] }; } getUploadStatusLayout() { return this.cache.remember('statusLayout', () => { const loaderLayout = main_core.Tag.render(_t$4 || (_t$4 = _$4` <div class="ui-stamp-uploader-upload-status-loader"></div> `)); const loader = new main_loader.Loader({ target: loaderLayout, mode: 'inline', size: 45 }); void loader.show(); return main_core.Tag.render(_t2$2 || (_t2$2 = _$4` <div class="ui-stamp-uploader-upload-status"> ${0} <div class="ui-stamp-uploader-upload-status-text"> ${0} </div> <div class="ui-stamp-uploader-upload-status-percent"> ${0} </div> <div class="ui-stamp-uploader-upload-status-size"> ${0} </div> </div> `), loaderLayout, main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_TEXT'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_PERCENT'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE')); }); } updateUploadStatus(options = { percent: 0, size: 0 }) { const percentNode = this.cache.remember('percentNode', () => { return this.getUploadStatusLayout().querySelector('.ui-stamp-uploader-upload-status-percent'); }); const sizeNode = this.cache.remember('sizeNode', () => { return this.getUploadStatusLayout().querySelector('.ui-stamp-uploader-upload-status-size'); }); percentNode.innerHTML = main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_PERCENT').replace('{{number}}', `<strong>${main_core.Text.encode(options.percent)}</strong>`); const formatted = Status.formatSize(options.size); sizeNode.textContent = main_core.Loc.getMessage('UI_STAMP_UPLOADER_UPLOAD_STATUS_SIZE').replace('{{number}}', formatted.number).replace('{{text}}', formatted.text); } getPreparingStatusLayout() { return this.cache.remember('preparingStatusLayout', () => { return main_core.Tag.render(_t3$1 || (_t3$1 = _$4` <div class="ui-stamp-uploader-preparing-status"> <div class="ui-stamp-uploader-preparing-status-icon"></div> <div class="ui-stamp-uploader-preparing-status-text"> ${0} </div> </div> `), main_core.Loc.getMessage('UI_STAMP_UPLOADER_PREPARING_STATUS')); }); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t4 || (_t4 = _$4` <div class="ui-stamp-uploader-status"></div> `)); }); } showUploadStatus(options = { reset: false }) { const layout = this.getLayout(); const uploadStatusLayout = this.getUploadStatusLayout(); const preparingStatusLayout = this.getPreparingStatusLayout(); main_core.Dom.remove(preparingStatusLayout); main_core.Dom.append(uploadStatusLayout, layout); if (options.reset === true) { this.updateUploadStatus({ percent: 0, size: 0 }); } this.setOpacity(1); this.show(); } showPreparingStatus() { const layout = this.getLayout(); const uploadStatusLayout = this.getUploadStatusLayout(); const preparingStatusLayout = this.getPreparingStatusLayout(); main_core.Dom.remove(uploadStatusLayout); main_core.Dom.append(preparingStatusLayout, layout); this.setOpacity(.45); this.show(); } setOpacity(value) { main_core.Dom.style(this.getLayout(), 'background-color', `rgba(255, 255, 255, ${value})`); } hide() { main_core.Dom.removeClass(this.getLayout(), 'ui-stamp-uploader-status-show'); } show() { main_core.Dom.addClass(this.getLayout(), 'ui-stamp-uploader-status-show'); } } let _$5 = t => t, _t$5, _t2$3, _t3$2, _t4$1; var _loadImage = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("loadImage"); var _setIsCropEnabled = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("setIsCropEnabled"); class Preview extends main_core_events.EventEmitter { constructor(options = {}) { super(); Object.defineProperty(this, _setIsCropEnabled, { value: _setIsCropEnabled2 }); this.cache = new main_core.Cache.MemoryCache(); this.setEventNamespace('BX.UI.Stamp.Uploader'); this.subscribeFromOptions(options.events); this.setOptions(options); const draggable = this.cache.remember('draggable', () => { return new ui_draganddrop_draggable.Draggable({ container: this.getLayout(), draggable: '.ui-stamp-uploader-preview-crop > div', type: ui_draganddrop_draggable.Draggable.HEADLESS, context: window.top }); }); draggable.subscribe('start', this.onDragStart.bind(this)); draggable.subscribe('move', this.onDragMove.bind(this)); draggable.subscribe('end', this.onDragEnd.bind(this)); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getDraggable() { return this.cache.get('draggable'); } getDevicePixelRatio() { return window.devicePixelRatio; } getCanvas() { const canvas = this.cache.remember('canvas', () => { return main_core.Tag.render(_t$5 || (_t$5 = _$5` <canvas class="ui-stamp-uploader-preview-canvas"></canvas> `)); }); const timeoutId = setTimeout(() => { if (main_core.Type.isDomNode(canvas.parentElement) && !this.cache.has('adjustCanvas')) { const parentRect = { width: canvas.parentElement.clientWidth, height: canvas.parentElement.clientHeight }; if (parentRect.width > 0 && parentRect.height > 0) { void this.cache.remember('adjustCanvas', () => { const ratio = this.getDevicePixelRatio(); canvas.width = parentRect.width * ratio; canvas.height = parentRect.height * ratio; main_core.Dom.style(canvas, { width: `${parentRect.width}px`, height: `${parentRect.height}px` }); const context2d = canvas.getContext('2d'); const { context2d: context2dOptions = {} } = this.getOptions(); if (main_core.Type.isPlainObject(context2dOptions)) { Object.assign(context2d, context2dOptions); } context2d.scale(ratio, ratio); }); } } clearTimeout(timeoutId); }); return canvas; } getImagePreviewLayout() { return this.cache.remember('imagePreviewLayout', () => { return main_core.Tag.render(_t2$3 || (_t2$3 = _$5` <div class="ui-stamp-uploader-preview-image"> ${0} </div> `), this.getCanvas()); }); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t3$2 || (_t3$2 = _$5` <div class="ui-stamp-uploader-preview" title="${0}" > ${0} ${0} </div> `), main_core.Loc.getMessage('UI_STAMP_UPLOADER_PREVIEW_TITLE'), this.getImagePreviewLayout(), this.getCropControl()); }); } clear() { const canvas = this.getCanvas(); const context = canvas.getContext('2d'); context.clearRect(0, 0, canvas.width, canvas.height); } setSourceImage(image) { this.cache.set('sourceImage', image); } getSourceImage() { return this.cache.get('sourceImage', null); } setSourceImageRect(rect) { this.cache.set('sourceImageRect', rect); } getSourceImageRect() { return this.cache.get('sourceImageRect', {}); } setCurrentDrawOptions(drawOptions) { this.cache.set('currentDrawOptions', drawOptions); } getCurrentDrawOptions() { return this.cache.get('currentDrawOptions', {}); } applyCrop() { const cropRect = this.getCropRect(); const drawOptions = this.getCurrentDrawOptions(); const sourceImageRect = this.getSourceImageRect(); const imageScaleRatio = sourceImageRect.width / drawOptions.dWidth; const canvas = this.getCanvas(); const cropOptions = { sX: (cropRect.left - drawOptions.dX) * imageScaleRatio, sY: (cropRect.top - drawOptions.dY) * imageScaleRatio, sWidth: cropRect.width * imageScaleRatio, sHeight: cropRect.height * imageScaleRatio, dWidth: cropRect.width, dHeight: cropRect.height, dX: (canvas.clientWidth - cropRect.width) / 2, dY: (canvas.clientHeight - cropRect.height) / 2 }; return this.renderImage(this.getSourceImage(), cropOptions); } renderImage(file, drawOptions = {}) { const canvas = this.getCanvas(); const context2d = canvas.getContext('2d'); return babelHelpers.classPrivateFieldLooseBase(Preview, _loadImage)[_loadImage](file).then(sourceImage => { const sourceImageRect = { width: sourceImage.width, height: sourceImage.height }; const scaleRatio = Math.min(canvas.clientWidth / sourceImageRect.width, canvas.clientHeight / sourceImageRect.height); const preparedDrawOptions = { sX: 0, sY: 0, sWidth: sourceImageRect.width, sHeight: sourceImageRect.height, dX: (canvas.clientWidth - sourceImageRect.width * scaleRatio) / 2, dY: (canvas.clientHeight - sourceImageRect.height * scaleRatio) / 2, dWidth: sourceImageRect.width * scaleRatio, dHeight: sourceImageRect.height * scaleRatio, ...drawOptions }; this.setSourceImageRect(sourceImageRect); this.setCurrentDrawOptions(preparedDrawOptions); this.clear(); context2d.drawImage(sourceImage, preparedDrawOptions.sX, preparedDrawOptions.sY, preparedDrawOptions.sWidth, preparedDrawOptions.sHeight, preparedDrawOptions.dX, preparedDrawOptions.dY, preparedDrawOptions.dWidth, preparedDrawOptions.dHeight); }); } setInitialCropRect(rect) { this.cache.set('initialCropRect', rect); } getInitialCropRect() { return this.cache.get('initialCropRect'); } getCropControl() { return this.cache.remember('cropControl', () => { return main_core.Tag.render(_t4$1 || (_t4$1 = _$5` <div class="ui-stamp-uploader-preview-crop"> <div class="ui-stamp-uploader-preview-crop-top"></div> <div class="ui-stamp-uploader-preview-crop-right"></div> <div class="ui-stamp-uploader-preview-crop-bottom"></div> <div class="ui-stamp-uploader-preview-crop-left"></div> <div class="ui-stamp-uploader-preview-crop-rotate"></div> </div> `)); }); } isCropEnabled() { return this.cache.get('isCropEnabled', false); } enableCrop() { this.renderImage(this.getSourceImage()).then(() => { const control = this.getCropControl(); const drawOptions = this.getCurrentDrawOptions(); main_core.Dom.style(control, { top: `${drawOptions.dY}px`, bottom: `${drawOptions.dY}px`, left: `${drawOptions.dX}px`, right: `${drawOptions.dX}px` }); main_core.Dom.addClass(control, 'ui-stamp-uploader-preview-crop-show'); babelHelpers.classPrivateFieldLooseBase(this, _setIsCropEnabled)[_setIsCropEnabled](true); }); } disableCrop() { main_core.Dom.removeClass(this.getCropControl(), 'ui-stamp-uploader-preview-crop-show'); babelHelpers.classPrivateFieldLooseBase(this, _setIsCropEnabled)[_setIsCropEnabled](false); } onDragStart() { const cropControl = this.getCropControl(); this.setInitialCropRect({ top: main_core.Text.toNumber(main_core.Dom.style(cropControl, 'top')), left: main_core.Text.toNumber(main_core.Dom.style(cropControl, 'left')), right: main_core.Text.toNumber(main_core.Dom.style(cropControl, 'right')), bottom: main_core.Text.toNumber(main_core.Dom.style(cropControl, 'bottom')) }); } onDragMove(event) { const data = event.getData(); const initialRect = this.getInitialCropRect(); const drawOptions = this.getCurrentDrawOptions(); const requiredOffset = 20; const canvasWidth = drawOptions.dX + drawOptions.dWidth + drawOptions.dX; const canvasHeight = drawOptions.dY + drawOptions.dHeight + drawOptions.dY; if (data.source.matches('.ui-stamp-uploader-preview-crop-right')) { const position = Math.max(Math.min(initialRect.right - data.offsetX, canvasWidth - initialRect.left - requiredOffset), drawOptions.dX); main_core.Dom.style(this.getCropControl(), 'right', `${position}px`); } if (data.source.matches('.ui-stamp-uploader-preview-crop-left')) { const position = Math.max(Math.min(initialRect.left + data.offsetX, canvasWidth - initialRect.right - requiredOffset), drawOptions.dX); main_core.Dom.style(this.getCropControl(), 'left', `${position}px`); } if (data.source.matches('.ui-stamp-uploader-preview-crop-top')) { const position = Math.max(drawOptions.dY, Math.min(initialRect.top + data.offsetY, canvasHeight - initialRect.bottom - requiredOffset)); main_core.Dom.style(this.getCropControl(), 'top', `${position}px`); } if (data.source.matches('.ui-stamp-uploader-preview-crop-bottom')) { const position = Math.max(Math.min(canvasHeight - initialRect.top - requiredOffset, initialRect.bottom - data.offsetY), drawOptions.dY); main_core.Dom.style(this.getCropControl(), 'bottom', `${position}px`); } } getCropRect() { const cropControl = this.getCropControl(); const width = cropControl.clientWidth; const height = cropControl.clientHeight; const left = Math.round(main_core.Text.toNumber(main_core.Dom.style(cropControl, 'left'))); const top = Math.round(main_core.Text.toNumber(main_core.Dom.style(cropControl, 'top'))); const canvas = this.getCanvas(); const canvasRect = canvas.getBoundingClientRect(); const right = canvasRect.width - (left + width); const bottom = canvasRect.height - (top + height); return { width, height, top, left, right, bottom }; } async getValue() { const canvas = this.getCanvas(); return await new Promise(resolve => { canvas.toBlob(resolve, 'image/png'); }); } onDragEnd(event) {} show(file) { this.setSourceImage(file); void this.renderImage(file); main_core.Dom.addClass(this.getLayout(), 'ui-stamp-uploader-preview-show'); } hide() { main_core.Dom.removeClass(this.getLayout(), 'ui-stamp-uploader-preview-show'); } getFile() { const drawOptions = this.getCurrentDrawOptions(); const canvas = document.createElement('canvas'); const context2d = canvas.getContext('2d'); return new Promise(resolve => { this.getCanvas().toBlob(blob => { void babelHelpers.classPrivateFieldLooseBase(Preview, _loadImage)[_loadImage](blob).then(image => { const ratio = this.getDevicePixelRatio(); canvas.width = drawOptions.dWidth * ratio; canvas.height = drawOptions.dHeight * ratio; context2d.drawImage(image, 0, 0, image.width, image.height, -((image.width - canvas.width) / 2), -((image.height - canvas.height) / 2), image.width, image.height); canvas.toBlob(resultBlob => { resolve(resultBlob); }); }); }); }); } } function _loadImage2(file) { const fileReader = new FileReader(); return new Promise(resolve => { fileReader.readAsDataURL(file); main_core.Event.bindOnce(fileReader, 'loadend', () => { const image = new Image(); image.src = fileReader.result; main_core.Event.bindOnce(image, 'load', () => { resolve(image); }); }); }); } function _setIsCropEnabled2(value) { this.cache.set('isCropEnabled', value); } Object.defineProperty(Preview, _loadImage, { value: _loadImage2 }); let _$6 = t => t, _t$6; class Message { constructor() { this.cache = new main_core.Cache.MemoryCache(); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t$6 || (_t$6 = _$6` <div class="ui-stamp-uploader-message"> <div class="ui-stamp-uploader-message-icon"></div> <div class="ui-stamp-uploader-message-text"> <div class="ui-stamp-uploader-message-text-header"> ${0} </div> <div class="ui-stamp-uploader-message-text-description"> ${0} </div> </div> </div> `), main_core.Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_MESSAGE_TITLE'), main_core.Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_MESSAGE_DESCRIPTION')); }); } } let _$7 = t => t, _t$7; class FileSelect extends main_core_events.EventEmitter { constructor(options = {}) { super(); this.cache = new main_core.Cache.MemoryCache(); this.setEventNamespace('BX.UI.Stamp.Uploader.FileSelect'); this.subscribeFromOptions(options.events); this.setOptions(options); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getTakePhotoButton() { return this.cache.remember('takePhotoButton', () => { return new ui_buttons.Button({ text: main_core.Loc.getMessage('UI_STAMP_UPLOADER_TAKE_PHOTO_BUTTON_LABEL'), color: ui_buttons.Button.Color.LIGHT_BORDER, size: ui_buttons.Button.Size.LARGE, icon: ui_buttons.Button.Icon.CAMERA, round: true, onclick: () => { this.emit('onTakePhotoClick'); } }); }); } getSelectPhotoButton() { return this.cache.remember('selectPhotoButton', () => { return new ui_buttons.Button({ text: main_core.Loc.getMessage('UI_STAMP_UPLOADER_SELECT_PHOTO_BUTTON_LABEL_1'), color: ui_buttons.Button.Color.LIGHT_BORDER, size: ui_buttons.Button.Size.LARGE, icon: ui_buttons.Button.Icon.DOWNLOAD, round: true, onclick: () => { this.emit('onTakePhotoClick'); } }); }); } getLayout() { return this.cache.remember('layout', () => { return main_core.Tag.render(_t$7 || (_t$7 = _$7` <div class="ui-stamp-uploader-file-select"> <div class="ui-stamp-uploader-file-select-select-photo"> ${0} </div> </div> `), this.getSelectPhotoButton().render()); }); } } let _$8 = t => t, _t$8, _t2$4, _t3$3; var _delay = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("delay"); var _setPreventConfirmShow = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("setPreventConfirmShow"); var _isConfirmShowPrevented = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("isConfirmShowPrevented"); /** * @namespace BX.UI.Stamp */ class Uploader extends main_core_events.EventEmitter { constructor(options) { super(); Object.defineProperty(this, _isConfirmShowPrevented, { value: _isConfirmShowPrevented2 }); Object.defineProperty(this, _setPreventConfirmShow, { value: _setPreventConfirmShow2 }); this.cache = new main_core.Cache.MemoryCache(); this.setEventNamespace('BX.UI.Stamp.Uploader'); this.subscribeFromOptions(options.events); this.setOptions(options); this.cache.remember('fileUploader', () => { var _this$getOptions$cont; const dropzoneLayout = this.getDropzone().getLayout(); const previewLayout = this.getPreview().getLayout(); const fileSelectButtonLayout = this.getFileSelect().getLayout(); main_core.Event.bind(previewLayout, 'click', event => { if (this.getPreview().isCropEnabled()) { event.stopImmediatePropagation(); } }); const acceptedFileTypes = ['image/png', 'image/jpeg']; return new ui_uploader_core.Uploader({ controller: (_this$getOptions$cont = this.getOptions().controller) == null ? void 0 : _this$getOptions$cont.upload, assignAsFile: true, browseElement: [dropzoneLayout, previewLayout, fileSelectButtonLayout, this.getHiddenInput()], dropElement: [dropzoneLayout, previewLayout], imagePreviewHeight: 556, imagePreviewWidth: 1000, autoUpload: false, acceptedFileTypes, events: { [ui_uploader_core.UploaderEvent.FILE_ADD]: event => { const { file, error } = event.getData(); if (main_core.Type.isNil(error) && ui_uploader_core.Helpers.isValidFileType(file.getBinary(), acceptedFileTypes)) { this.getPreview().show(file.getClientPreview()); this.setUploaderFile(file); if (this.getMode() === Uploader.Mode.SLIDER) { this.getSliderButtons().saveButton.setDisabled(false); this.getActionPanel().enable(); } if (this.getMode() === Uploader.Mode.INLINE) { this.getInlineSaveButton().setDisabled(false); this.getActionPanel().enable(); } this.setIsChanged(true); } }, [ui_uploader_core.UploaderEvent.FILE_UPLOAD_PROGRESS]: event => { const { progress, file } = event.getData(); this.getStatus().updateUploadStatus({ percent: progress, size: file.getSize() / 100 * progress }); }, [ui_uploader_core.UploaderEvent.FILE_ERROR]: function (event) { const { error } = event.getData(); Uploader.showAlert(error.getMessage()); } } }); }); } static showAlert(...args) { const TopMessageBox = main_core.Reflection.getClass('top.BX.UI.Dialogs.MessageBox'); if (!main_core.Type.isNil(TopMessageBox)) { TopMessageBox.alert(...args); } } static showConfirm(options) { const TopMessageBox = main_core.Reflection.getClass('top.BX.UI.Dialogs.MessageBox'); const TopMessageBoxButtons = main_core.Reflection.getClass('top.BX.UI.Dialogs.MessageBoxButtons'); if (!main_core.Type.isNil(TopMessageBox)) { TopMessageBox.show({ modal: true, buttons: TopMessageBoxButtons.OK_CANCEL, ...options }); } } setIsChanged(value) { this.cache.set('isChanged', value); } isChanged() { return this.cache.get('isChanged', false); } getFileUploader() { return this.cache.get('fileUploader'); } setUploaderFile(file) { this.cache.set('uploaderFile', file); } getUploaderFile() { return this.cache.get('uploaderFile', null); } setOptions(options) { this.cache.set('options', { ...options }); } getOptions() { return this.cache.get('options', {}); } getMode() { const { mode } = this.getOptions(); if (Object.values(Uploader.Mode).includes(mode)) { return mode; } return Uploader.Mode.SLIDER; } getHeader() { return this.cache.remember('header', () => { return new Header(this.getOptions()); }); } getPreview() { return this.cache.remember('preview', () => { return new Preview({}); }); } getFileSelect() { return this.cache.remember('fileSelect', () => { return new FileSelect({ events: { onTakePhotoClick: () => { this.emit('onTakePhotoClick'); }, onSelectPhotoClick: () => {} } }); }); } getUploadLayout() { return this.cache.remember('uploadLayout', () => { return new UploadLayout({ children: [(() => { if (this.getMode() === Uploader.Mode.INLINE) { return this.getFileSelect(); } return this.getDropzone(); })(), this.getActionPanel(), this.getStatus(), this.getPreview()] }); }); } getDropzone() { return this.cache.remember('dropzone', () => { return new Dropzone({}); }); } getActionPanel() { return this.cache.remember('actionPanel', () => { return new ActionPanel({ events: { onCropClick: this.onCropClick.bind(this), onApplyClick: this.onCropApplyClick.bind(this), onCancelClick: this.onCropCancelClick.bind(this) } }); }); } onCropApplyClick() { this.getPreview().applyCrop(); this.getPreview().disableCrop(); this.getActionPanel().hideCropActions(); this.getInlineSaveButton().setDisabled(false); this.getActionPanel().enable(); } onCropCancelClick() { this.getPreview().disableCrop(); this.getActionPanel().hideCropActions(); this.getInlineSaveButton().setDisabled(false); this.getActionPanel().enable(); } onCropClick() { this.getPreview().enableCrop(); this.getActionPanel().showCropAction(); this.getInlineSaveButton().setDisabled(true); this.getActionPanel().enable(); } getStatus() { return this.cache.remember('status', () => { return new Status(); }); } getLayout() { return this.cache.remember('layout', () => { const mode = this.getMode(); return main_core.Tag.render(_t$8 || (_t$8 = _$8` <div class="ui-stamp-uploader ui-stamp-uploader-mode-${0}"> ${0} ${0} ${0} ${0} ${0} </div> `), mode, (() => { if (mode === Uploader.Mode.SLIDER) { return this.getMessage().getLayout(); } return ''; })(), this.getHeader().getLayout(), this.getUploadLayout().getLayout(), (() => { if (mode === Uploader.Mode.INLINE) { return main_core.Tag.render(_t2$4 || (_t2$4 = _$8` <div class="ui-stamp-uploader-footer"> ${0} </div> `), this.getInlineSaveButton().render()); } return ''; })(), this.getHiddenInput()); }); } getHiddenInput() { return this.cache.remember('hiddenInput', () => { return main_core.Tag.render(_t3$3 || (_t3$3 = _$8` <input type="file" name="STAMP_UPLOADER_INPUT" hidden> `)); }); } renderTo(target) { if (main_core.Type.isDomNode(target)) { main_core.Dom.append(this.getLayout(), target); } } upload() { return new Promise(resolve => { this.getPreview().getFile().then(blob => { this.getFileUploader().addFile(blob); const [resultFile] = this.getFileUploader().getFiles(); resultFile.subscribeOnce(ui_uploader_core.FileEvent.LOAD_COMPLETE, () => { this.getPreview().hide(); const { controller } = this.getOptions(); if (!controller) { resolve(resultFile); return; } this.getStatus().showUploadStatus({ reset: true }); resultFile.upload({ onComplete: () => { resolve(resultFile); }, onError: console.error }); }); }); }); } getMessage() { return this.cache.remember('message', () => { return new Message(); }); } getInlineSaveButton() { return this.cache.remember('inlineSaveButton', () => { const button = new ui_buttons.Button({ text: main_core.Loc.getMessage('UI_STAMP_UPLOADER_SAVE_BUTTON_LABEL'), color: ui_buttons.Button.Color.PRIMARY, size: ui_buttons.Button.Size.LARGE, round: true, onclick: () => { const saveButton = this.getInlineSaveButton(); saveButton.setWaiting(true); this.upload().then(uploaderFile => { const { controller } = this.getOptions(); if (!controller) { return this.emitAsync('onSaveAsync', { file: uploaderFile.toJSON() }); } return Promise.all([new Promise(resolve => { babelHelpers.classPrivateFieldLooseBase(Uploader, _delay)[_delay](() => { this.getPreview().show(uploaderFile.getClientPreview()); this.getStatus().showPreparingStatus(); resolve(); }, 1000); }), this.emitAsync('onSaveAsync', { file: uploaderFile.toJSON() })]); }).then(() => { this.getStatus().hide(); babelHelpers.classPrivateFieldLooseBase(Uploader, _delay)[_delay](() => { saveButton.setWaiting(false); saveButton.setDisabled(true); this.getActionPanel().disable(); }, 500); }); } }); button.setDisabled(true); this.getActionPanel().disable(); return button; }); } setSliderButtons(buttons) { this.cache.set('sliderButtons', buttons); } getSliderButtons() { return this.cache.get('sliderButtons', { saveButton: null, cancelButton: null }); } show() { const SidePanelInstance = main_core.Reflection.getClass('BX.SidePanel.Instance'); if (main_core.Type.isNil(SidePanelInstance)) { return; } this.getPreview().hide(); this.getStatus().hide(); this.getActionPanel().disable(); SidePanelInstance.open('stampUploader', { width: 640, contentCallback: () => { return ui_sidepanel_layout.Layout.createContent({ extensions: ['ui.stamp.uploader'], content: () => { return this.getLayout(); }, design: { section: false }, buttons: ({ cancelButton, SaveButton }) => { const saveButton = new SaveButton({ onclick: () => { saveButton.setWaiting(true); this.setIsChanged(false); babelHelpers.classPrivateFieldLooseBase(this, _setPreventConfirmShow)[_setPreventConfirmShow](true); this.upload().then(uploaderFile => { return Promise.all([new Promise(resolve => { babelHelpers.classPrivateFieldLooseBase(Uploader, _delay)[_delay](() => { this.getPreview().show(uploaderFile.getClientPreview()); this.getStatus().showPreparingStatus(); resolve(); }, 1000); }), this.emitAsync('onSaveAsync', { file: uploaderFile.toJSON() })]); }).then(() => { this.getStatus().hide(); babelHelpers.classPrivateFieldLooseBase(Uploader, _delay)[_delay](() => { saveButton.setWaiting(false); saveButton.setDisabled(true); this.getActionPanel().disable(); const topSlider = BX.SidePanel.Instance.getTopSlider(); if (topSlider && topSlider.url === 'stampUploader') { topSlider.close(); } }, 500); }); } }); saveButton.setDisabled(true); this.getActionPanel().disable(); this.setSliderButtons({ saveButton, cancelButton }); return [saveButton, cancelButton]; } }); }, events: { onClose: event => { if (this.isChanged()) { event.denyAction(); if (!babelHelpers.classPrivateFieldLooseBase(this, _isConfirmShowPrevented)[_isConfirmShowPrevented]()) { Uploader.showConfirm({ message: main_core.Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM'), onOk: messageBox => { this.setIsChanged(false); event.getSlider().close(); messageBox.close(); }, okCaption: main_core.Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM_CLOSE'), onCancel: messageBox => { messageBox.close(); }, cancelCaption: main_core.Loc.getMessage('UI_STAMP_UPLOADER_SLIDER_CLOSE_CONFIRM_CANCEL') }); } else { this.setIsChanged(false); event.getSlider().close(); } } } } }); } } function _delay2(callback, delay) { const timeoutId = setTimeout(() => { callback(); clearTimeout(timeoutId); }, delay); } function _setPreventConfirmShow2(value) { this.cache.set('preventConfirmShow', value); } function _isConfirmShowPrevented2() { return this.cache.get('preventConfirmShow', false); } Object.defineProperty(Uploader, _delay, { value: _delay2 }); Uploader.Mode = { SLIDER: 'slider', INLINE: 'inline' }; exports.Uploader = Uploader; }((this.BX.UI.Stamp = this.BX.UI.Stamp || {}),BX.UI.Uploader,BX.UI.Dialogs,BX.UI.SidePanel,BX,BX.UI.DragAndDrop,BX,BX.Event,BX.UI)); //# sourceMappingURL=uploader.bundle.js.map