Your IP : 172.69.7.233


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/uploader/core/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/uploader/core/dist/ui.uploader.bundle.js.map

{"version":3,"file":"ui.uploader.bundle.js","sources":["../src/enums/file-status.js","../src/enums/file-origin.js","../src/enums/file-event.js","../src/uploader-error.js","../src/backend/abstract-upload-controller.js","../src/backend/abstract-load-controller.js","../src/backend/abstract-remove-controller.js","../src/helpers/create-unique-id.js","../src/helpers/get-extension-from-type.js","../src/helpers/create-file-from-blob.js","../src/helpers/is-data-uri.js","../src/helpers/create-blob-from-data-uri.js","../src/helpers/get-file-extension.js","../src/helpers/is-resizable-image.js","../src/helpers/format-file-size.js","../src/uploader-file.js","../src/backend/chunk.js","../src/backend/upload-controller.js","../src/backend/server-load-multiple.js","../src/backend/server-load-controller.js","../src/backend/client-load-controller.js","../src/backend/remove-multiple.js","../src/backend/remove-controller.js","../src/backend/server.js","../src/filters/filter.js","../src/filters/file-size-filter.js","../src/helpers/is-valid-file-type.js","../src/filters/file-type-filter.js","../src/helpers/get-array-buffer.js","../src/helpers/image-size/convert-string-to-buffer.js","../src/helpers/image-size/compare-buffers.js","../src/helpers/image-size/types/gif.js","../src/helpers/image-size/types/png.js","../src/helpers/image-size/types/bmp.js","../src/helpers/image-size/types/jpeg.js","../src/helpers/image-size/types/webp.js","../src/helpers/image-size/get-image-size.js","../src/filters/image-size-filter.js","../src/helpers/create-worker.js","../src/helpers/bitmap-worker.js","../src/helpers/load-image.js","../src/helpers/create-image-preview.js","../src/helpers/get-canvas-to-blob-type.js","../src/helpers/get-filename-without-extension.js","../src/helpers/rename-file-to-match-mime-type.js","../src/helpers/convert-canvas-to-blob.js","../src/helpers/get-resized-image-size.js","../src/helpers/resize-image.js","../src/helpers/is-video.js","../src/helpers/create-video-preview.js","../src/filters/image-preview-filter.js","../src/filters/image-resize-filter.js","../src/enums/uploader-status.js","../src/enums/uploader-event.js","../src/enums/filter-type.js","../src/helpers/get-files-from-data-transfer.js","../src/helpers/can-append-file-to-form.js","../src/helpers/assign-file-to-input.js","../src/uploader.js","../src/adapters/vue-uploader-adapter.js","../src/adapters/vue-uploader-widget.js","../src/adapters/vue-uploader-component.js","../src/helpers/is-image.js","../src/helpers/get-jpeg-orientation.js","../src/helpers/is-jpeg.js"],"sourcesContent":["export const FileStatus = {\n\tINIT: 'init',\n\tADDED: 'added',\n\tLOADING: 'loading',\n\tPENDING: 'pending',\n\tUPLOADING: 'uploading',\n\tCOMPLETE: 'complete',\n\t//REMOVING: 'removing',\n\t//REMOVE_FAILED: 'remove-failed',\n\tLOAD_FAILED: 'load-failed',\n\tUPLOAD_FAILED: 'upload-failed',\n};","export const FileOrigin = {\n\tCLIENT: 'client',\n\tSERVER: 'server',\n};","export const FileEvent = {\n\tADD: 'onAdd',\n\tBEFORE_UPLOAD: 'onBeforeUpload',\n\tUPLOAD_START: 'onUploadStart',\n\tUPLOAD_ERROR: 'onUploadError',\n\tUPLOAD_PROGRESS: 'onUploadProgress',\n\tUPLOAD_COMPLETE: 'onUploadComplete',\n\tUPLOAD_CONTROLLER_INIT: 'onUploadControllerInit',\n\tLOAD_START: 'onLoadStart',\n\tLOAD_PROGRESS: 'onLoadProgress',\n\tLOAD_COMPLETE: 'onLoadComplete',\n\tLOAD_ERROR: 'onLoadError',\n\tLOAD_CONTROLLER_INIT: 'onLoadControllerInit',\n\tREMOVE_ERROR: 'onRemoveError',\n\tREMOVE_COMPLETE: 'onRemoveComplete',\n\tREMOVE_CONTROLLER_INIT: 'onRemoveControllerInit',\n\tSTATE_CHANGE: 'onStateChange',\n\tSTATUS_CHANGE: 'onStatusChange',\n\tPREPARE_FILE_ASYNC: 'onPrepareFileAsync',\n};","import { BaseError, Type, Loc } from 'main.core';\n\nexport default class UploaderError extends BaseError\n{\n\tstatic Origin = {\n\t\tSERVER: 'server',\n\t\tCLIENT: 'client',\n\t};\n\n\tstatic Type = {\n\t\tUSER: 'user',\n\t\tSYSTEM: 'system',\n\t\tUNKNOWN: 'unknown',\n\t};\n\n\tdescription: string = '';\n\torigin: $Values<UploaderError.Origin> = UploaderError.Origin.CLIENT;\n\ttype: $Values<UploaderError.Type> = UploaderError.Type.USER;\n\n\tconstructor(code: string, ...args)\n\t{\n\t\tlet message = Type.isString(args[0]) ? args[0] : null;\n\t\tlet description = Type.isString(args[1]) ? args[1] : null;\n\t\tconst customData = Type.isPlainObject(args[args.length - 1]) ? args[args.length - 1] : {};\n\n\t\tconst replacements = {};\n\t\tObject.keys(customData).forEach((key: string) => {\n\t\t\treplacements[`#${key}#`] = customData[key];\n\t\t});\n\n\t\tif (!Type.isString(message) && Loc.hasMessage(`UPLOADER_${code}`))\n\t\t{\n\t\t\tmessage = Loc.getMessage(`UPLOADER_${code}`, replacements);\n\t\t}\n\n\t\tif (Type.isStringFilled(message) && !Type.isString(description) && Loc.hasMessage(`UPLOADER_${code}_DESC`))\n\t\t{\n\t\t\tdescription = Loc.getMessage(`UPLOADER_${code}_DESC`, replacements);\n\t\t}\n\n\t\tsuper(message, code, customData);\n\t\tthis.setDescription(description);\n\t}\n\n\tstatic createFromAjaxErrors(errors: Array): UploaderError\n\t{\n\t\tif (!Type.isArrayFilled(errors) || !Type.isPlainObject(errors[0]))\n\t\t{\n\t\t\treturn new this('SERVER_ERROR');\n\t\t}\n\n\t\tconst uploaderError = errors.find(error => {\n\t\t\treturn error.type === 'file-uploader';\n\t\t});\n\n\t\tif (uploaderError && !uploaderError.system)\n\t\t{\n\t\t\t// Take the First Uploader User Error\n\t\t\tconst { code, message, description, customData } = uploaderError;\n\t\t\tconst error = new this(code, message, description, customData);\n\t\t\terror.setOrigin(UploaderError.Origin.SERVER);\n\t\t\terror.setType(UploaderError.Type.USER);\n\n\t\t\treturn error;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet { code, message, description } = errors[0];\n\t\t\tconst { customData, system, type } = errors[0];\n\n\t\t\tif (code === 'NETWORK_ERROR')\n\t\t\t{\n\t\t\t\tmessage = Loc.getMessage('UPLOADER_NETWORK_ERROR');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcode = Type.isStringFilled(code) ? code : 'SERVER_ERROR';\n\t\t\t\tif (!Type.isStringFilled(description))\n\t\t\t\t{\n\t\t\t\t\tdescription = message;\n\t\t\t\t\tmessage = Loc.getMessage('UPLOADER_SERVER_ERROR');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconsole.error('Uploader', errors);\n\n\t\t\tconst error = new this(code, message, description, customData);\n\t\t\terror.setOrigin(UploaderError.Origin.SERVER);\n\n\t\t\tif (type === 'file-uploader')\n\t\t\t{\n\t\t\t\terror.setType(system ? UploaderError.Type.SYSTEM : UploaderError.Type.USER);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\terror.setType(UploaderError.Type.UNKNOWN);\n\t\t\t}\n\n\t\t\treturn error;\n\t\t}\n\t}\n\n\tstatic createFromError(error: Error): UploaderError\n\t{\n\t\treturn new this(error.name, error.message);\n\t}\n\n\tgetDescription(): string\n\t{\n\t\treturn this.description;\n\t}\n\n\tsetDescription(text: string): this\n\t{\n\t\tif (Type.isString(text))\n\t\t{\n\t\t\tthis.description = text;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetOrigin(): $Values<UploaderError.Origin>\n\t{\n\t\treturn this.origin;\n\t}\n\n\tsetOrigin(origin: $Values<UploaderError.Origin>): this\n\t{\n\t\tif (Object.values(UploaderError.Origin).includes(origin))\n\t\t{\n\t\t\tthis.origin = origin;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetType(): $Values<UploaderError.Type>\n\t{\n\t\treturn this.type;\n\t}\n\n\tsetType(type: $Values<UploaderError.Type>): this\n\t{\n\t\tif (Type.isStringFilled(type))\n\t\t{\n\t\t\tthis.type = type;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tclone(): UploaderError\n\t{\n\t\tconst options = JSON.parse(JSON.stringify(this));\n\t\tconst error = new UploaderError(\n\t\t\toptions.code,\n\t\t\toptions.message,\n\t\t\toptions.description,\n\t\t\toptions.customData\n\t\t);\n\n\t\terror.setOrigin(options.origin);\n\t\terror.setType(options.type);\n\n\t\treturn error;\n\t}\n\n\ttoString(): string\n\t{\n\t\treturn `Uploader Error (${this.getCode()}): ${this.getMessage()} (${this.getOrigin()})`;\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tcode: this.getCode(),\n\t\t\tmessage: this.getMessage(),\n\t\t\tdescription: this.getDescription(),\n\t\t\torigin: this.getOrigin(),\n\t\t\ttype: this.getType(),\n\t\t\tcustomData: this.getCustomData(),\n\t\t};\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\nimport { Type } from 'main.core';\n\nexport default class AbstractUploadController extends EventEmitter\n{\n\t#server: Server;\n\t#options: { [key: string]: any };\n\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.UploadController');\n\n\t\tthis.#server = server;\n\t\tthis.#options = options;\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.#server;\n\t}\n\n\tgetOptions(): { [key: string]: any }\n\t{\n\t\treturn this.#options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.#options[option]))\n\t\t{\n\t\t\treturn this.#options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tupload(file: UploaderFile): void\n\t{\n\t\tthrow new Error('You must implement upload() method.');\n\t}\n\n\tabort(): void\n\t{\n\t\tthrow new Error('You must implement abort() method.');\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\nimport { Type } from 'main.core';\n\nexport default class AbstractLoadController extends EventEmitter\n{\n\t#server: Server;\n\t#options: { [key: string]: any };\n\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.LoadController');\n\n\t\tthis.#server = server;\n\t\tthis.#options = options;\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.#server;\n\t}\n\n\tgetOptions(): { [key: string]: any }\n\t{\n\t\treturn this.#options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.#options[option]))\n\t\t{\n\t\t\treturn this.#options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tload(file: UploaderFile): void\n\t{\n\t\tthrow new Error('You must implement load() method.');\n\t}\n\n\tabort(): void\n\t{\n\t\tthrow new Error('You must implement abort() method.');\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\n\nexport default class AbstractRemoveController extends EventEmitter\n{\n\t#server: Server;\n\t#options: { [key: string]: any };\n\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.RemoveController');\n\n\t\tthis.#server = server;\n\t\tthis.#options = options;\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.#server;\n\t}\n\n\tgetOptions(): { [key: string]: any }\n\t{\n\t\treturn this.#options;\n\t}\n\n\tgetOption(option: string, defaultValue?: any): any\n\t{\n\t\tif (!Type.isUndefined(this.#options[option]))\n\t\t{\n\t\t\treturn this.#options[option];\n\t\t}\n\t\telse if (!Type.isUndefined(defaultValue))\n\t\t{\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tremove(file: UploaderFile): void\n\t{\n\t\tthrow new Error('You must implement remove() method.');\n\t}\n}\n","let crypto = window.crypto || window.msCrypto;\nif (!crypto && typeof(process) === 'object')\n{\n\tcrypto = require('crypto').webcrypto;\n}\n\nconst createUniqueId = (): string => {\n\treturn (`${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`).replace(/[018]/g, c =>\n\t\t(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n\t);\n};\n\nexport default createUniqueId;","import { Type } from 'main.core';\n\nconst getExtensionFromType = (type) => {\n\tif (!Type.isStringFilled(type))\n\t{\n\t\treturn '';\n\t}\n\n\tconst subtype = type.split('/').pop();\n\n\tif (/javascript/.test(subtype))\n\t{\n\t\treturn 'js';\n\t}\n\n\tif (/plain/.test(subtype))\n\t{\n\t\treturn 'txt';\n\t}\n\n\tif (/svg/.test(subtype))\n\t{\n\t\treturn 'svg';\n\t}\n\n\tif (/[a-z]+/.test(subtype))\n\t{\n\t\treturn subtype;\n\t}\n\n\treturn '';\n};\n\nexport default getExtensionFromType;","import { Type } from 'main.core';\nimport getExtensionFromType from './get-extension-from-type';\n\nlet counter = 0;\nconst createFileFromBlob = (blob: Blob, fileName: string): File => {\n\n\tif (!Type.isStringFilled(fileName))\n\t{\n\t\tconst date = new Date();\n\t\tfileName = `File ${date.getFullYear()}-${date.getMonth()}-${date.getDate()}-${++counter}`;\n\n\t\tconst extension = getExtensionFromType(blob.type);\n\t\tif (extension)\n\t\t{\n\t\t\tfileName += `.${extension}`;\n\t\t}\n\t}\n\n\ttry\n\t{\n\t\treturn new File(\n\t\t\t[blob],\n\t\t\tfileName,\n\t\t\t{\n\t\t\t\tlastModified: Date.now(),\n\t\t\t\tlastModifiedDate: new Date(),\n\t\t\t\ttype: blob.type\n\t\t\t}\n\t\t);\n\t}\n\tcatch (exception)\n\t{\n\t\tconst file = blob.slice(0, blob.size, blob.type);\n\t\tfile.name = fileName;\n\t\tfile.lastModified = Date.now();\n\t\tfile.lastModifiedDate = new Date();\n\n\t\treturn file;\n\t}\n};\n\nexport default createFileFromBlob;","const regexp = /^data:((?:\\w+\\/(?:(?!;).)+)?)((?:;[\\w\\W]*?[^;])*),(.+)$/;\n\nconst isDataUri = (str: string): boolean => {\n\treturn typeof(str) === 'string' ? str.match(regexp) : false;\n};\n\nexport default isDataUri;","const createBlobFromDataUri = (dataURI: string): Blob => {\n\tconst byteString = atob(dataURI.split(',')[1]);\n\tconst mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n\tconst buffer = new ArrayBuffer(byteString.length);\n\tconst view = new Uint8Array(buffer);\n\n\tfor (let i = 0; i < byteString.length; i++)\n\t{\n\t\tview[i] = byteString.charCodeAt(i);\n\t}\n\n\treturn new Blob([buffer], { type: mimeString });\n};\n\nexport default createBlobFromDataUri;","import { Type } from 'main.core';\n\nconst getFileExtension = (filename: string) => {\n\tconst position = Type.isStringFilled(filename) ? filename.lastIndexOf('.') : -1;\n\n\treturn position > 0 ? filename.substring(position + 1) : '';\n};\n\nexport default getFileExtension;\n\n\n","import { Type } from 'main.core';\nimport getFileExtension from './get-file-extension';\n\nconst imageExtensions = ['jpg', 'bmp', 'jpeg', 'jpe', 'gif', 'png', 'webp'];\n\nconst isResizableImage = (file: File | string, mimeType: string = null) => {\n\tconst fileName = Type.isFile(file) ? file.name : file;\n\tconst type = Type.isFile(file) ? file.type : mimeType;\n\tconst extension = getFileExtension(fileName).toLowerCase();\n\n\tif (imageExtensions.includes(extension))\n\t{\n\t\tif (type === null || /^image\\/[a-z0-9.-]+$/i.test(type))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport default isResizableImage;\n","import { Loc, Type } from 'main.core';\n\nconst formatFileSize = (size: number, base: number = 1024): string => {\n\tlet i = 0;\n\tconst units = getUnits();\n\twhile (size >= base && units[i + 1])\n\t{\n\t\tsize /= base;\n\t\ti++;\n\t}\n\n\treturn (Type.isInteger(size) ? size : size.toFixed(1)) + units[i];\n};\n\nlet fileSizeUnits = null;\nconst getUnits = () => {\n\tif (fileSizeUnits !== null)\n\t{\n\t\treturn fileSizeUnits;\n\t}\n\n\tconst units = Loc.getMessage('UPLOADER_FILE_SIZE_POSTFIXES').split(/[|]/);\n\tfileSizeUnits = Type.isArrayFilled(units) ? units : ['B', 'kB', 'MB', 'GB', 'TB'];\n\n\treturn fileSizeUnits;\n};\n\nexport default formatFileSize;","import { Type } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\n\nimport { FileStatus } from './enums/file-status';\nimport { FileOrigin } from './enums/file-origin';\nimport { FileEvent } from './enums/file-event';\n\nimport type { FileInfo } from './types/file-info';\nimport type { UploaderFileOptions } from './types/uploader-file-options';\n\nimport UploaderError from './uploader-error';\nimport AbstractUploadController from './backend/abstract-upload-controller';\nimport AbstractLoadController from './backend/abstract-load-controller';\nimport AbstractRemoveController from './backend/abstract-remove-controller';\n\nimport createUniqueId from './helpers/create-unique-id';\nimport createFileFromBlob from './helpers/create-file-from-blob';\nimport isDataUri from './helpers/is-data-uri';\nimport createBlobFromDataUri from './helpers/create-blob-from-data-uri';\nimport isResizableImage from './helpers/is-resizable-image';\nimport formatFileSize from './helpers/format-file-size';\n\nexport default class UploaderFile extends EventEmitter\n{\n\t#id: string = null;\n\t#file: File = null;\n\t#serverId: number | string = null;\n\n\t#name: string = '';\n\t#originalName: string = null;\n\t#size: number = 0;\n\t#type: string = '';\n\t#width: ?number = null;\n\t#height: ?number = null;\n\n\t#clientPreview: ?Blob = null;\n\t#clientPreviewUrl: ?string = null;\n\t#clientPreviewWidth: ?number = null;\n\t#clientPreviewHeight: ?number = null;\n\n\t#serverPreviewUrl: ?string = null;\n\t#serverPreviewWidth: ?number = null;\n\t#serverPreviewHeight: ?number = null;\n\n\t#downloadUrl: ?string = null;\n\t#removeUrl: ?string = null;\n\n\t#status: FileStatus = FileStatus.INIT;\n\t#origin: FileOrigin = FileOrigin.CLIENT;\n\t#errors: UploaderError[] = [];\n\t#progress: number = 0;\n\n\t#uploadController: AbstractUploadController = null;\n\t#loadController: AbstractLoadController = null;\n\t#removeController: AbstractRemoveController = null;\n\n\t#uploadCallbacks: CallbackCollection = new CallbackCollection(this);\n\n\tconstructor(source: File | Blob | string | number, fileOptions: UploaderFileOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.File');\n\n\t\tconst options = Type.isPlainObject(fileOptions) ? fileOptions : {};\n\n\t\tif (Type.isFile(source))\n\t\t{\n\t\t\tthis.#file = source;\n\t\t}\n\t\telse if (Type.isBlob(source))\n\t\t{\n\t\t\tthis.#file = createFileFromBlob(source, options.name || source.name);\n\t\t}\n\t\telse if (isDataUri(source))\n\t\t{\n\t\t\tconst blob = createBlobFromDataUri(source);\n\t\t\tthis.#file = createFileFromBlob(blob, options.name);\n\t\t}\n\t\telse if (Type.isNumber(source) || Type.isStringFilled(source))\n\t\t{\n\t\t\tthis.#origin = FileOrigin.SERVER;\n\t\t\tthis.#serverId = source;\n\t\t\tif (Type.isPlainObject(options))\n\t\t\t{\n\t\t\t\tthis.setFile(options);\n\t\t\t}\n\t\t}\n\n\t\tthis.#id = Type.isStringFilled(options.id) ? options.id : createUniqueId();\n\n\t\tthis.subscribeFromOptions({\n\t\t\t[FileEvent.ADD]: () => {\n\t\t\t\tthis.#setStatus(FileStatus.ADDED);\n\t\t\t},\n\t\t});\n\n\t\tthis.subscribeFromOptions(options.events);\n\t}\n\n\tload(): void\n\t{\n\t\tif (!this.canLoad())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setStatus(FileStatus.LOADING);\n\t\tthis.emit(FileEvent.LOAD_START);\n\n\t\tthis.#loadController.load(this);\n\t}\n\n\tupload(callbacks: { onComplete: Function, onError: Function } = {}): void\n\t{\n\t\tthis.#uploadCallbacks.subscribe(callbacks);\n\t\tif (this.isComplete() && this.isUploadable())\n\t\t{\n\t\t\treturn this.#uploadCallbacks.emit('onComplete');\n\t\t}\n\t\telse if (this.isUploadFailed())\n\t\t{\n\t\t\treturn this.#uploadCallbacks.emit('onError', { error: this.getError() });\n\t\t}\n\t\telse if (!this.canUpload())\n\t\t{\n\t\t\treturn this.#uploadCallbacks.emit('onError', { error: new UploaderError('FILE_UPLOAD_NOT_ALLOWED') });\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { file: this } });\n\t\tthis.emit(FileEvent.BEFORE_UPLOAD, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setStatus(FileStatus.UPLOADING);\n\t\tthis.emit(FileEvent.UPLOAD_START);\n\t\tthis.#uploadController.upload(this);\n\t}\n\n\tremove(): void\n\t{\n\t\tif (this.getStatus() === FileStatus.INIT)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setStatus(FileStatus.INIT);\n\t\tthis.emit(FileEvent.REMOVE_COMPLETE);\n\n\t\tthis.abort();\n\n\t\t//this.#setStatus(FileStatus.REMOVING);\n\t\t//this.#removeController.remove(this);\n\n\t\tif (this.#removeController !== null && this.getOrigin() === FileOrigin.CLIENT)\n\t\t{\n\t\t\tthis.#removeController.remove(this);\n\t\t}\n\n\t\tthis.#uploadController = null;\n\t\tthis.#loadController = null;\n\t\tthis.#removeController = null;\n\t}\n\n\t// stop(): void\n\t// {\n\t// \tif (this.isUploading())\n\t// \t{\n\t// \t\tthis.abort();\n\t// \t\tthis.setStatus(FileStatus.PENDING);\n\t// \t}\n\t// }\n\t//\n\t// resume(): void\n\t// {\n\t//\n\t// }\n\t// retry(): void\n\t// {\n\t// \t// TODO\n\t// }\n\n\tabort(): void\n\t{\n\t\tif (this.isLoading())\n\t\t{\n\t\t\tthis.#setStatus(FileStatus.LOAD_FAILED);\n\n\t\t\tconst error = new UploaderError('FILE_LOAD_ABORTED');\n\t\t\tthis.emit(FileEvent.LOAD_ERROR, { error });\n\t\t}\n\t\telse if (this.isUploading())\n\t\t{\n\t\t\tthis.#setStatus(FileStatus.UPLOAD_FAILED);\n\n\t\t\tconst error = new UploaderError('FILE_UPLOAD_ABORTED');\n\t\t\tthis.emit('onUploadError', { error });\n\t\t\tthis.#uploadCallbacks.emit('onError', { error });\n\t\t}\n\n\t\tif (this.#loadController)\n\t\t{\n\t\t\tthis.#loadController.abort();\n\t\t}\n\n\t\tif (this.#uploadController)\n\t\t{\n\t\t\tthis.#uploadController.abort();\n\t\t}\n\t}\n\n\tgetUploadController(): ?AbstractUploadController\n\t{\n\t\treturn this.#uploadController;\n\t}\n\n\tsetUploadController(controller: ?AbstractUploadController): void\n\t{\n\t\tif (this.getOrigin() === FileOrigin.SERVER)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(controller instanceof AbstractUploadController) && !Type.isNull(controller))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst changed = this.#uploadController !== controller;\n\t\tthis.#uploadController = controller;\n\n\t\tif (this.#uploadController && changed)\n\t\t{\n\t\t\tthis.#uploadController.subscribeOnce('onError', (event: BaseEvent) => {\n\t\t\t\tconst error = this.addError(event.getData().error);\n\t\t\t\tthis.#setStatus(FileStatus.UPLOAD_FAILED);\n\t\t\t\tthis.emit(FileEvent.UPLOAD_ERROR, { error });\n\t\t\t\tthis.#uploadCallbacks.emit('onError', { error });\n\t\t\t});\n\n\t\t\tthis.#uploadController.subscribe('onProgress', (event: BaseEvent) => {\n\t\t\t\tconst { progress } = event.getData();\n\t\t\t\tthis.setProgress(progress);\n\t\t\t\tthis.emit(FileEvent.UPLOAD_PROGRESS, { progress });\n\t\t\t});\n\n\t\t\tthis.#uploadController.subscribeOnce('onUpload', (event: BaseEvent) => {\n\t\t\t\tthis.#setStatus(FileStatus.COMPLETE);\n\t\t\t\tthis.setFile(event.getData().fileInfo);\n\t\t\t\tthis.emit(FileEvent.UPLOAD_COMPLETE);\n\n\t\t\t\tthis.#uploadCallbacks.emit('onComplete');\n\t\t\t});\n\t\t}\n\n\t\tif (changed)\n\t\t{\n\t\t\tthis.emit(FileEvent.UPLOAD_CONTROLLER_INIT, { controller });\n\t\t}\n\t}\n\n\tsetLoadController(controller: AbstractLoadController): void\n\t{\n\t\tif (!(controller instanceof AbstractLoadController))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst changed = this.#loadController !== controller;\n\t\tthis.#loadController = controller;\n\n\t\tif (this.#loadController && changed)\n\t\t{\n\t\t\tthis.#loadController.subscribeOnce('onError', (event: BaseEvent) => {\n\t\t\t\tconst error = this.addError(event.getData().error);\n\t\t\t\tthis.#setStatus(FileStatus.LOAD_FAILED);\n\t\t\t\tthis.emit(FileEvent.LOAD_ERROR, { error });\n\t\t\t});\n\n\t\t\tthis.#loadController.subscribe('onProgress', (event: BaseEvent) => {\n\t\t\t\tconst { progress } = event.getData();\n\t\t\t\tthis.emit(FileEvent.LOAD_PROGRESS, { progress });\n\t\t\t});\n\n\t\t\tthis.#loadController.subscribeOnce('onLoad', (event: BaseEvent) => {\n\t\t\t\tif (this.getOrigin() === FileOrigin.SERVER)\n\t\t\t\t{\n\t\t\t\t\tthis.setFile(event.getData().fileInfo);\n\t\t\t\t\tthis.#setStatus(FileStatus.COMPLETE);\n\t\t\t\t\tthis.emit(FileEvent.LOAD_COMPLETE);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconst event = new BaseEvent({ data: { file: this } });\n\t\t\t\t\tthis.emitAsync(FileEvent.PREPARE_FILE_ASYNC, event)\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (this.isUploadable())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.#setStatus(FileStatus.PENDING);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.#setStatus(FileStatus.COMPLETE);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.emit(FileEvent.LOAD_COMPLETE);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\terror = this.addError(error);\n\t\t\t\t\t\t\tthis.#setStatus(FileStatus.LOAD_FAILED);\n\t\t\t\t\t\t\tthis.emit(FileEvent.LOAD_ERROR, { error });\n\t\t\t\t\t\t})\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (changed)\n\t\t{\n\t\t\tthis.emit(FileEvent.LOAD_CONTROLLER_INIT, { controller });\n\t\t}\n\t}\n\n\tsetRemoveController(controller: ?AbstractRemoveController): void\n\t{\n\t\tif (!(controller instanceof AbstractRemoveController) && !Type.isNull(controller))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst changed = this.#removeController !== controller;\n\t\tthis.#removeController = controller;\n\n\t\tif (this.#removeController && changed)\n\t\t{\n\t\t\tthis.#removeController.subscribeOnce('onError', (event: BaseEvent) => {\n\t\t\t\t//const error = this.addError(event.getData().error);\n\t\t\t\t//this.emit(FileEvent.REMOVE_ERROR, { error });\n\t\t\t});\n\n\t\t\tthis.#removeController.subscribeOnce('onRemove', (event: BaseEvent) => {\n\t\t\t\t//this.#setStatus(FileStatus.INIT);\n\t\t\t\t//this.emit(FileEvent.REMOVE_COMPLETE);\n\t\t\t});\n\t\t}\n\n\t\tif (changed)\n\t\t{\n\t\t\tthis.emit(FileEvent.REMOVE_CONTROLLER_INIT, { controller });\n\t\t}\n\t}\n\n\tisReadyToUpload(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.PENDING;\n\t}\n\n\tisUploadable(): boolean\n\t{\n\t\treturn this.#uploadController !== null;\n\t}\n\n\tisLoadable(): boolean\n\t{\n\t\treturn this.#loadController !== null;\n\t}\n\n\tcanUpload(): boolean\n\t{\n\t\treturn this.isReadyToUpload() && this.isUploadable();\n\t}\n\n\tcanLoad(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.ADDED && this.isLoadable();\n\t}\n\n\tisUploading(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.UPLOADING;\n\t}\n\n\tisLoading(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.LOADING;\n\t}\n\n\tisComplete(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.COMPLETE;\n\t}\n\n\tisFailed(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.LOAD_FAILED || this.getStatus() === FileStatus.UPLOAD_FAILED;\n\t}\n\n\tisLoadFailed(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.LOAD_FAILED;\n\t}\n\n\tisUploadFailed(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.UPLOAD_FAILED;\n\t}\n\n\tgetBinary(): ?File\n\t{\n\t\treturn this.#file;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetFile(file: File | FileInfo): void\n\t{\n\t\tif (Type.isFile(file))\n\t\t{\n\t\t\tthis.#file = file;\n\t\t}\n\t\telse if (Type.isBlob(file))\n\t\t{\n\t\t\tthis.#file = createFileFromBlob(file, this.getName());\n\t\t}\n\t\telse if (Type.isPlainObject(file))\n\t\t{\n\t\t\tthis.setName(file.name);\n\t\t\tthis.setOriginalName(file.originalName);\n\t\t\tthis.setType(file.type);\n\t\t\tthis.setSize(file.size);\n\n\t\t\tthis.setServerId(file.serverId);\n\t\t\tthis.setWidth(file.width);\n\t\t\tthis.setHeight(file.height);\n\n\t\t\tthis.setClientPreview(file.clientPreview, file.clientPreviewWidth, file.clientPreviewHeight);\n\t\t\tthis.setServerPreview(file.serverPreviewUrl, file.serverPreviewWidth, file.serverPreviewHeight);\n\n\t\t\tthis.setDownloadUrl(file.downloadUrl);\n\t\t\tthis.setRemoveUrl(file.removeUrl);\n\t\t}\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.getBinary() ? this.getBinary().name : this.#name;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetName(name: string): void\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.#name = name;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'name', value: name });\n\t\t}\n\t}\n\n\tgetOriginalName(): string\n\t{\n\t\treturn this.#originalName ? this.#originalName : this.getName();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetOriginalName(name: string): void\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.#originalName = name;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'originalName', value: name });\n\t\t}\n\t}\n\n\tgetExtension(): string\n\t{\n\t\tconst name = this.getOriginalName();\n\t\tconst position = name.lastIndexOf('.');\n\n\t\treturn position >= 0 ? name.substring(position + 1).toLowerCase() : '';\n\t}\n\n\tgetType(): string\n\t{\n\t\treturn this.getBinary() ? this.getBinary().type : this.#type;\n\t}\n\n\t/**\n\t * internal\n\t */\n\tsetType(type: string): string\n\t{\n\t\tif (Type.isStringFilled(type))\n\t\t{\n\t\t\tthis.#type = type;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'type', value: type });\n\t\t}\n\t}\n\n\tgetSize(): number\n\t{\n\t\treturn this.getBinary() ? this.getBinary().size : this.#size;\n\t}\n\n\tgetSizeFormatted(): string\n\t{\n\t\treturn formatFileSize(this.getSize());\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetSize(size: number): void\n\t{\n\t\tif (Type.isNumber(size) && size >= 0)\n\t\t{\n\t\t\tthis.#size = size;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'size', value: size });\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.#id;\n\t}\n\n\tgetServerId(): number | string | null\n\t{\n\t\treturn this.#serverId;\n\t}\n\n\tsetServerId(id: number | string): void\n\t{\n\t\tif (Type.isNumber(id) || Type.isStringFilled(id))\n\t\t{\n\t\t\tthis.#serverId = id;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'serverId', value: id });\n\t\t}\n\t}\n\n\tgetStatus(): FileStatus\n\t{\n\t\treturn this.#status;\n\t}\n\n\t#setStatus(status: FileStatus): void\n\t{\n\t\tthis.#status = status;\n\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'status', value: status });\n\t\tthis.emit(FileEvent.STATUS_CHANGE);\n\t}\n\n\tgetOrigin(): FileOrigin\n\t{\n\t\treturn this.#origin;\n\t}\n\n\tgetDownloadUrl(): ?string\n\t{\n\t\treturn this.#downloadUrl;\n\t}\n\n\tsetDownloadUrl(url: string): void\n\t{\n\t\tif (Type.isStringFilled(url))\n\t\t{\n\t\t\tthis.#downloadUrl = url;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'downloadUrl', value: url });\n\t\t}\n\t}\n\n\tgetRemoveUrl(): ?string\n\t{\n\t\treturn this.#removeUrl;\n\t}\n\n\tsetRemoveUrl(url: string)\n\t{\n\t\tif (Type.isStringFilled(url))\n\t\t{\n\t\t\tthis.#removeUrl = url;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'removeUrl', value: url });\n\t\t}\n\t}\n\n\tgetWidth(): ?number\n\t{\n\t\treturn this.#width;\n\t}\n\n\tsetWidth(width: number)\n\t{\n\t\tif (Type.isNumber(width))\n\t\t{\n\t\t\tthis.#width = width;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'width', value: width });\n\t\t}\n\t}\n\n\tgetHeight(): ?number\n\t{\n\t\treturn this.#height;\n\t}\n\n\tsetHeight(height: ?number)\n\t{\n\t\tif (Type.isNumber(height))\n\t\t{\n\t\t\tthis.#height = height;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'height', value: height });\n\t\t}\n\t}\n\n\tgetPreviewUrl(): ?string\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewUrl() : this.getServerPreviewUrl();\n\t}\n\n\tgetPreviewWidth(): ?number\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewWidth() : this.getServerPreviewWidth();\n\t}\n\n\tgetPreviewHeight(): ?number\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewHeight() : this.getServerPreviewHeight();\n\t}\n\n\tgetClientPreview(): ?Blob\n\t{\n\t\treturn this.#clientPreview;\n\t}\n\n\tsetClientPreview(file: ?Blob, width: number = null, height: number = null): void\n\t{\n\t\tif (Type.isBlob(file) || Type.isNull(file))\n\t\t{\n\t\t\tthis.revokeClientPreviewUrl();\n\n\t\t\tconst url = Type.isNull(file) ? null : URL.createObjectURL(file);\n\t\t\tthis.#clientPreview = file;\n\t\t\tthis.#clientPreviewUrl = url;\n\t\t\tthis.#clientPreviewWidth = width;\n\t\t\tthis.#clientPreviewHeight = height;\n\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'clientPreviewUrl', value: url });\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'clientPreviewWidth', value: width });\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'clientPreviewHeight', value: height });\n\t\t}\n\t}\n\n\tgetClientPreviewUrl(): ?string\n\t{\n\t\treturn this.#clientPreviewUrl;\n\t}\n\n\trevokeClientPreviewUrl(): void\n\t{\n\t\tif (this.#clientPreviewUrl !== null)\n\t\t{\n\t\t\tURL.revokeObjectURL(this.#clientPreviewUrl);\n\n\t\t\tthis.#clientPreviewUrl = null;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'clientPreviewUrl', value: null });\n\t\t}\n\t}\n\n\tgetClientPreviewWidth(): ?number\n\t{\n\t\treturn this.#clientPreviewWidth;\n\t}\n\n\tgetClientPreviewHeight(): ?number\n\t{\n\t\treturn this.#clientPreviewHeight;\n\t}\n\n\tgetServerPreviewUrl(): ?string\n\t{\n\t\treturn this.#serverPreviewUrl;\n\t}\n\n\tsetServerPreview(url: ?string, width: number = null, height: number = null): ?string\n\t{\n\t\tif (Type.isStringFilled(url) || Type.isNull(url))\n\t\t{\n\t\t\tthis.#serverPreviewUrl = url;\n\t\t\tthis.#serverPreviewWidth = width;\n\t\t\tthis.#serverPreviewHeight = height;\n\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'serverPreviewUrl', value: url });\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'serverPreviewWidth', value: width });\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'serverPreviewHeight', value: height });\n\t\t}\n\t}\n\n\tgetServerPreviewWidth(): ?number\n\t{\n\t\treturn this.#serverPreviewWidth;\n\t}\n\n\tgetServerPreviewHeight(): ?number\n\t{\n\t\treturn this.#serverPreviewHeight;\n\t}\n\n\tisImage(): boolean\n\t{\n\t\treturn isResizableImage(this.getOriginalName(), this.getType());\n\t}\n\n\tgetProgress(): number\n\t{\n\t\treturn this.#progress;\n\t}\n\n\tsetProgress(progress: ?number)\n\t{\n\t\tif (Type.isNumber(progress))\n\t\t{\n\t\t\tthis.#progress = progress;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'progress', value: progress });\n\t\t}\n\t}\n\n\taddError(error: Error | UploaderError): UploaderError\n\t{\n\t\tif (error instanceof Error)\n\t\t{\n\t\t\terror = UploaderError.createFromError(error);\n\t\t}\n\n\t\tthis.#errors.push(error);\n\t\tthis.emit(FileEvent.STATE_CHANGE);\n\n\t\treturn error;\n\t}\n\n\tgetError(): ?UploaderError\n\t{\n\t\treturn this.#errors[0] || null;\n\t}\n\n\tgetErrors(): UploaderError[]\n\t{\n\t\treturn this.#errors;\n\t}\n\n\tgetState(): { [key: string]: any }\n\t{\n\t\treturn JSON.parse(JSON.stringify(this));\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tserverId: this.getServerId(),\n\t\t\tstatus: this.getStatus(),\n\t\t\tname: this.getName(),\n\t\t\toriginalName: this.getOriginalName(),\n\t\t\tsize: this.getSize(),\n\t\t\tsizeFormatted: this.getSizeFormatted(),\n\t\t\ttype: this.getType(),\n\t\t\textension: this.getExtension(),\n\t\t\torigin: this.getOrigin(),\n\t\t\tisImage: this.isImage(),\n\t\t\tfailed: this.isFailed(),\n\t\t\twidth: this.getWidth(),\n\t\t\theight: this.getHeight(),\n\t\t\tprogress: this.getProgress(),\n\t\t\terror: this.getError(),\n\t\t\terrors: this.getErrors(),\n\n\t\t\tpreviewUrl: this.getPreviewUrl(),\n\t\t\tpreviewWidth: this.getPreviewWidth(),\n\t\t\tpreviewHeight: this.getPreviewHeight(),\n\n\t\t\tclientPreviewUrl: this.getClientPreviewUrl(),\n\t\t\tclientPreviewWidth: this.getClientPreviewWidth(),\n\t\t\tclientPreviewHeight: this.getClientPreviewHeight(),\n\n\t\t\tserverPreviewUrl: this.getServerPreviewUrl(),\n\t\t\tserverPreviewWidth: this.getServerPreviewWidth(),\n\t\t\tserverPreviewHeight: this.getServerPreviewHeight(),\n\n\t\t\tdownloadUrl: this.getDownloadUrl(),\n\t\t\tremoveUrl: this.getRemoveUrl(),\n\t\t};\n\t}\n}\n\nclass CallbackCollection\n{\n\t#emitter: EventEmitter = null;\n\tconstructor(file: UploaderFile)\n\t{\n\t\tthis.#emitter = new EventEmitter(file, 'BX.UI.Uploader.File.UploadCallbacks');\n\t}\n\n\tsubscribe(callbacks: { onComplete: Function, onError: Function } = {})\n\t{\n\t\tcallbacks = Type.isPlainObject(callbacks) ? callbacks : {};\n\t\tif (Type.isFunction(callbacks.onComplete))\n\t\t{\n\t\t\tthis.getEmitter().subscribeOnce('onComplete', callbacks.onComplete);\n\t\t}\n\n\t\tif (Type.isFunction(callbacks.onError))\n\t\t{\n\t\t\tthis.getEmitter().subscribeOnce('onError', callbacks.onError);\n\t\t}\n\t}\n\n\temit(eventName: string, event: BaseEvent | {[key: string]: any})\n\t{\n\t\tif (this.#emitter)\n\t\t{\n\t\t\tthis.#emitter.emit(eventName, event);\n\t\t\tthis.#emitter.unsubscribeAll();\n\t\t}\n\t}\n\n\tgetEmitter(): EventEmitter\n\t{\n\t\tif (Type.isNull(this.#emitter))\n\t\t{\n\t\t\tthis.#emitter = new EventEmitter(this, 'BX.UI.Uploader.File.UploadCallbacks');\n\t\t}\n\n\t\treturn this.#emitter;\n\t}\n}\n","import { Type } from 'main.core';\n\nexport default class Chunk\n{\n\t#data: Blob = null;\n\t#offset: number = 0;\n\t#retries: number[] = [];\n\n\tconstructor(data, offset)\n\t{\n\t\tthis.#data = data;\n\t\tthis.#offset = offset;\n\t}\n\n\tgetNextRetryDelay(): ?number\n\t{\n\t\tif (this.#retries.length === 0)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.#retries.shift();\n\t}\n\n\tsetRetries(retries: number[]): void\n\t{\n\t\tif (Type.isArray(retries))\n\t\t{\n\t\t\tthis.#retries = retries;\n\t\t}\n\t}\n\n\tgetData(): Blob\n\t{\n\t\treturn this.#data;\n\t}\n\n\tgetOffset(): number\n\t{\n\t\treturn this.#offset;\n\t}\n\n\tgetSize(): number\n\t{\n\t\treturn this.getData().size;\n\t}\n}","import Server from './server';\nimport Chunk from './chunk';\nimport { ajax as Ajax, Type } from 'main.core';\nimport AbstractUploadController from './abstract-upload-controller';\nimport UploaderError from '../uploader-error';\nimport type UploaderFile from '../uploader-file';\n\nexport default class UploadController extends AbstractUploadController\n{\n\t#file: UploaderFile = null;\n\t#chunkOffset: ?number = null;\n\t#chunkTimeout: ?number = null;\n\t#token: string = null;\n\t#xhr: XMLHttpRequest = null;\n\t#aborted: boolean = false;\n\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper(server, options);\n\t}\n\n\tupload(file: UploaderFile): void\n\t{\n\t\tif (this.#chunkOffset !== null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#file = file;\n\n\t\tconst nextChunk = this.#getNextChunk();\n\t\tif (nextChunk)\n\t\t{\n\t\t\tthis.#uploadChunk(nextChunk);\n\t\t}\n\t}\n\n\tabort(): void\n\t{\n\t\tif (this.#xhr)\n\t\t{\n\t\t\tthis.#aborted = true;\n\t\t\tthis.#xhr.abort();\n\t\t\tthis.#xhr = null;\n\t\t}\n\n\t\tclearTimeout(this.#chunkTimeout);\n\t}\n\n\t#uploadChunk(chunk: Chunk)\n\t{\n\t\tconst totalSize = this.getFile().getSize();\n\t\tconst isOnlyOneChunk = chunk.getOffset() === 0 && totalSize === chunk.getSize();\n\n\t\tlet fileName = this.getFile().getName();\n\t\tif (fileName.normalize)\n\t\t{\n\t\t\tfileName = fileName.normalize();\n\t\t}\n\n\t\tconst type = Type.isStringFilled(this.getFile().getType())\n\t\t\t? this.getFile().getType()\n\t\t\t: 'application/octet-stream'\n\t\t;\n\n\t\tconst headers = [\n\t\t\t{ name: 'Content-Type', value: type },\n\t\t\t{ name: 'X-Upload-Content-Name', value: encodeURIComponent(fileName) },\n\t\t];\n\n\t\tif (!isOnlyOneChunk)\n\t\t{\n\t\t\tconst rangeStart = chunk.getOffset();\n\t\t\tconst rangeEnd = chunk.getOffset() + chunk.getSize() - 1;\n\t\t\tconst rangeHeader = `bytes ${rangeStart}-${rangeEnd}/${totalSize}`;\n\n\t\t\theaders.push({ name: 'Content-Range', value: rangeHeader });\n\t\t}\n\n\t\tconst controllerOptions = this.getServer().getControllerOptions();\n\t\tAjax.runAction('ui.fileuploader.upload', {\n\t\t\t\theaders,\n\t\t\t\tdata: chunk.getData(),\n\t\t\t\tpreparePost: false,\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontroller: this.getServer().getController(),\n\t\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t\t\ttoken: this.getToken() || '',\n\t\t\t\t},\n\t\t\t\tonrequeststart: (xhr) => {\n\t\t\t\t\tthis.#xhr = xhr;\n\t\t\t\t\tthis.#aborted = false;\n\t\t\t\t},\n\t\t\t\tonprogressupload: (event: ProgressEvent) => {\n\t\t\t\t\tif (event.lengthComputable)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst size = this.getFile().getSize();\n\t\t\t\t\t\tconst uploadedBytes = Math.min(size, chunk.getOffset() + event.loaded);\n\t\t\t\t\t\tconst progress = size > 0 ? Math.floor(uploadedBytes / size * 100) : 100;\n\t\t\t\t\t\tthis.emit('onProgress', { progress });\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(response => {\n\t\t\t\tif (response.data.token)\n\t\t\t\t{\n\t\t\t\t\tthis.setToken(response.data.token);\n\n\t\t\t\t\tif (this.getFile().getServerId() === null)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Now we can remove a temp file on the backend\n\t\t\t\t\t\tthis.getFile().setServerId(response.data.token);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst size = this.getFile().getSize();\n\t\t\t\t\tconst progress = size > 0 ? Math.floor((chunk.getOffset() + chunk.getSize()) / size * 100) : 100;\n\t\t\t\t\tthis.emit('onProgress', { progress });\n\n\t\t\t\t\tconst nextChunk = this.#getNextChunk();\n\t\t\t\t\tif (nextChunk)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#uploadChunk(nextChunk);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.emit('onProgress', { progress: 100 });\n\t\t\t\t\t\tthis.emit('onUpload', { fileInfo: response.data.file });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.emit('onError', { error: new UploaderError('SERVER_ERROR') });\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(response => {\n\t\t\t\tif (this.#aborted)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst error = UploaderError.createFromAjaxErrors(response.errors);\n\t\t\t\tconst shouldRetry = error.getCode() === 'NETWORK_ERROR' || error.getType() === UploaderError.Type.UNKNOWN;\n\n\t\t\t\tif (!shouldRetry || !this.#retryUploadChunk(chunk))\n\t\t\t\t{\n\t\t\t\t\tthis.emit('onError', { error });\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\t#retryUploadChunk(chunk: Chunk): boolean\n\t{\n\t\tconst nextDelay = chunk.getNextRetryDelay();\n\t\tif (nextDelay === null)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout(this.#chunkTimeout);\n\n\t\tthis.#chunkTimeout = setTimeout(() => {\n\t\t\tthis.#uploadChunk(chunk);\n\t\t}, nextDelay);\n\n\t\treturn true;\n\t}\n\n\t#getNextChunk(): ?Chunk\n\t{\n\t\tif (this.getChunkOffset() !== null && this.getChunkOffset() >= this.getFile().getSize())\n\t\t{\n\t\t\t// End of File\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getChunkOffset() === null)\n\t\t{\n\t\t\t// First call\n\t\t\tthis.#chunkOffset = 0;\n\t\t}\n\n\t\tlet chunk: Chunk;\n\t\tif (this.getChunkOffset() === 0 && this.getFile().getSize() <= this.getChunkSize())\n\t\t{\n\t\t\tchunk = new Chunk(this.getFile().getBinary(), this.getChunkOffset());\n\t\t\tthis.#chunkOffset = this.getFile().getSize();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst currentChunkSize = Math.min(this.getChunkSize(), this.getFile().getSize() - this.getChunkOffset());\n\t\t\tconst nextOffset = this.getChunkOffset() + currentChunkSize;\n\t\t\tconst fileRange = this.getFile().getBinary().slice(this.getChunkOffset(), nextOffset);\n\n\t\t\tchunk = new Chunk(fileRange, this.getChunkOffset());\n\t\t\tthis.#chunkOffset = nextOffset;\n\t\t}\n\n\t\tchunk.setRetries([...this.getServer().getChunkRetryDelays()]);\n\n\t\treturn chunk;\n\t}\n\n\tgetFile(): UploaderFile\n\t{\n\t\treturn this.#file;\n\t}\n\n\tgetChunkSize(): number\n\t{\n\t\treturn this.getServer().getChunkSize();\n\t}\n\n\tgetChunkOffset(): number\n\t{\n\t\treturn this.#chunkOffset;\n\t}\n\n\tgetToken(): ?string\n\t{\n\t\treturn this.#token;\n\t}\n\n\tsetToken(token: string): void\n\t{\n\t\tif (Type.isStringFilled(token))\n\t\t{\n\t\t\tthis.#token = token;\n\t\t}\n\t}\n}","import { ajax as Ajax, Runtime } from 'main.core';\n\nimport UploaderError from '../uploader-error';\n\nimport type UploaderFile from '../uploader-file';\nimport type Server from './server';\nimport type ServerLoadController from './server-load-controller';\n\ntype Queue = {\n\ttasks: Array<{ controller: ServerLoadController, file: UploaderFile }>,\n\tload: Function,\n\txhr: XMLHttpRequest,\n\taborted: boolean,\n};\n\nconst pendingQueues: WeakMap<Server, Queue> = new WeakMap();\nconst loadingFiles: WeakMap<UploaderFile, Queue> = new WeakMap();\n\nexport function loadMultiple(controller: ServerLoadController, file: UploaderFile)\n{\n\tconst server = controller.getServer();\n\tconst timeout = controller.getOption('timeout', 100);\n\n\tlet queue = pendingQueues.get(server);\n\tif (!queue)\n\t{\n\t\tqueue = {\n\t\t\ttasks: [],\n\t\t\tload: Runtime.debounce(loadInternal, timeout, server),\n\t\t\txhr: null,\n\t\t\taborted: false,\n\t\t};\n\n\t\tpendingQueues.set(server, queue);\n\t}\n\n\tqueue.tasks.push({ controller, file });\n\tqueue.load();\n}\n\nexport function abort(controller: ServerLoadController, file: UploaderFile)\n{\n\tconst server = controller.getServer();\n\tconst queue: Queue = pendingQueues.get(server);\n\tif (queue)\n\t{\n\t\tqueue.tasks = queue.tasks.filter(task => {\n\t\t\treturn task.file !== file;\n\t\t});\n\n\t\tif (queue.tasks.length === 0)\n\t\t{\n\t\t\tpendingQueues.delete(server);\n\t\t}\n\t}\n\telse\n\t{\n\t\tconst queue: Queue = loadingFiles.get(file);\n\t\tif (queue)\n\t\t{\n\t\t\tqueue.tasks = queue.tasks.filter(task => {\n\t\t\t\treturn task.file !== file;\n\t\t\t});\n\n\t\t\tloadingFiles.delete(file);\n\n\t\t\tif (queue.tasks.length === 0)\n\t\t\t{\n\t\t\t\tqueue.aborted = true;\n\t\t\t\tqueue.xhr.abort();\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction loadInternal()\n{\n\tconst server: Server = this;\n\tconst queue: Queue = pendingQueues.get(server);\n\tif (!queue)\n\t{\n\t\treturn;\n\t}\n\n\tpendingQueues.delete(server);\n\n\tif (queue.tasks.length === 0)\n\t{\n\t\treturn;\n\t}\n\n\tconst fileIds = [];\n\tqueue.tasks.forEach(task => {\n\t\tconst file: UploaderFile = task.file;\n\t\tfileIds.push(file.getServerId());\n\t\tloadingFiles.set(file, queue);\n\t});\n\n\tconst controllerOptions = server.getControllerOptions();\n\tAjax.runAction('ui.fileuploader.load', {\n\t\t\tdata: {\n\t\t\t\tfileIds: fileIds,\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontroller: server.getController(),\n\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t},\n\t\t\tonrequeststart: (xhr) => {\n\t\t\t\tqueue.xhr = xhr;\n\t\t\t},\n\t\t\tonprogress: (event: ProgressEvent) => {\n\t\t\t\tif (event.lengthComputable)\n\t\t\t\t{\n\t\t\t\t\tconst progress = event.total > 0 ? Math.floor(event.loaded / event.total * 100) : 100;\n\n\t\t\t\t\tqueue.tasks.forEach(task => {\n\t\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\t\tcontroller.emit('onProgress', { file, progress });\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t\t.then(response => {\n\t\t\tif (response.data?.files)\n\t\t\t{\n\t\t\t\tconst fileResults = {};\n\t\t\t\tresponse.data.files.forEach((fileResult) => {\n\t\t\t\t\tfileResults[fileResult.id] = fileResult;\n\t\t\t\t});\n\n\t\t\t\tqueue.tasks.forEach(task => {\n\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\tconst fileResult = fileResults[file.getServerId()] || null;\n\n\t\t\t\t\tloadingFiles.delete(file);\n\n\t\t\t\t\tif (fileResult && fileResult.success)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontroller.emit('onProgress', { file, progress: 100 });\n\t\t\t\t\t\tcontroller.emit('onLoad', { fileInfo: fileResult.data.file });\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconst error = UploaderError.createFromAjaxErrors(fileResult?.errors);\n\t\t\t\t\t\tcontroller.emit('onError', { error });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst error = new UploaderError('SERVER_ERROR');\n\t\t\t\tqueue.tasks.forEach(task => {\n\t\t\t\t\tconst { controller, file } = task;\n\n\t\t\t\t\tloadingFiles.delete(file);\n\t\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.catch(response => {\n\t\t\tconst error = queue.aborted ? null : UploaderError.createFromAjaxErrors(response.errors);\n\t\t\tqueue.tasks.forEach(task => {\n\t\t\t\tconst { controller, file } = task;\n\n\t\t\t\tloadingFiles.delete(file);\n\n\t\t\t\tif (!queue.aborted)\n\t\t\t\t{\n\t\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t\t}\n\t\t\t});\n\t\t})\n\t;\n}","import AbstractLoadController from './abstract-load-controller';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\nimport { loadMultiple, abort } from './server-load-multiple';\n\nexport default class ServerLoadController extends AbstractLoadController\n{\n\t#file: UploaderFile = null;\n\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper(server, options);\n\t}\n\n\tload(file: UploaderFile): void\n\t{\n\t\tif (this.getServer().getController())\n\t\t{\n\t\t\tthis.#file = file;\n\t\t\tloadMultiple(this, file);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onProgress', { file, progress: 100 });\n\t\t\tthis.emit('onLoad', { fileInfo: null });\n\t\t}\n\t}\n\n\tabort(): void\n\t{\n\t\tif (this.getServer().getController() && this.#file)\n\t\t{\n\t\t\tabort(this, this.#file);\n\t\t}\n\t}\n}","import AbstractLoadController from './abstract-load-controller';\nimport Server from './server';\nimport UploaderFile from '../uploader-file';\nimport { Type } from 'main.core';\nimport UploaderError from '../uploader-error';\n\nexport default class ClientLoadController extends AbstractLoadController\n{\n\tconstructor(server: Server, options: { [key: string]: any } = {})\n\t{\n\t\tsuper(server, options);\n\t}\n\n\tload(file: UploaderFile): void\n\t{\n\t\tif (Type.isFile(file.getBinary()))\n\t\t{\n\t\t\tthis.emit('onProgress', { file, progress: 100 });\n\t\t\tthis.emit('onLoad', { fileInfo: file });\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onError', { error: new UploaderError('WRONG_FILE_SOURCE') });\n\t\t}\n\t}\n\n\tabort(): void\n\t{\n\n\t}\n\n}","import { ajax as Ajax, Runtime } from 'main.core';\n\nimport UploaderError from '../uploader-error';\n\nimport type UploaderFile from '../uploader-file';\nimport type Server from './server';\nimport type RemoveController from './remove-controller';\nimport type ServerLoadController from './server-load-controller';\n\ntype Queue = {\n\ttasks: Array<{ controller: ServerLoadController, file: UploaderFile }>,\n\tremove: Function,\n\txhr: XMLHttpRequest,\n}\n\nconst queues: WeakMap<Server, Queue> = new WeakMap();\n\nexport function removeMultiple(controller: RemoveController, file: UploaderFile)\n{\n\tconst server = controller.getServer();\n\tlet queue = queues.get(server);\n\tif (!queue)\n\t{\n\t\tqueue = {\n\t\t\ttasks: [],\n\t\t\tremove: Runtime.debounce(removeInternal, 1000, server),\n\t\t\txhr: null,\n\t\t};\n\n\t\tqueues.set(server, queue);\n\t}\n\n\tqueue.tasks.push({ controller, file });\n\tqueue.remove();\n}\n\nfunction removeInternal()\n{\n\tconst server: Server = this;\n\tconst queue = queues.get(server);\n\tif (!queue)\n\t{\n\t\treturn;\n\t}\n\n\tconst { tasks } = queue;\n\tqueues.delete(server);\n\n\tconst fileIds = [];\n\ttasks.forEach(task => {\n\t\tconst file: UploaderFile = task.file;\n\t\tif (file.getServerId() !== null)\n\t\t{\n\t\t\tfileIds.push(file.getServerId());\n\t\t}\n\t});\n\n\tif (fileIds.length === 0)\n\t{\n\t\treturn;\n\t}\n\n\tconst controllerOptions = server.getControllerOptions();\n\tAjax.runAction('ui.fileuploader.remove', {\n\t\t\tdata: {\n\t\t\t\tfileIds: fileIds,\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontroller: server.getController(),\n\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t},\n\t\t\tonrequeststart: (xhr) => {\n\t\t\t\tqueue.xhr = xhr;\n\t\t\t},\n\t\t})\n\t\t.then(response => {\n\t\t\tif (response.data?.files)\n\t\t\t{\n\t\t\t\tconst fileResults = {};\n\t\t\t\tresponse.data.files.forEach((fileResult) => {\n\t\t\t\t\tfileResults[fileResult.id] = fileResult;\n\t\t\t\t});\n\n\t\t\t\ttasks.forEach(task => {\n\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\tconst fileResult = fileResults[file.getServerId()] || null;\n\n\t\t\t\t\tif (fileResult && fileResult.success)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontroller.emit('onRemove', { fileId: fileResult.id });\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconst error = UploaderError.createFromAjaxErrors(fileResult?.errors);\n\t\t\t\t\t\tcontroller.emit('onError', { error });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst error = new UploaderError('SERVER_ERROR');\n\t\t\t\ttasks.forEach(task => {\n\t\t\t\t\tconst { controller } = task;\n\t\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.catch(response => {\n\t\t\tconst error = UploaderError.createFromAjaxErrors(response.errors);\n\t\t\ttasks.forEach(task => {\n\t\t\t\tconst { controller } = task;\n\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t});\n\t\t})\n\t;\n}","import AbstractRemoveController from './abstract-remove-controller';\nimport { removeMultiple } from './remove-multiple';\n\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\n\nexport default class RemoveController extends AbstractRemoveController\n{\n\tconstructor(server: Server)\n\t{\n\t\tsuper(server);\n\t}\n\n\tremove(file: UploaderFile): void\n\t{\n\t\tremoveMultiple(this, file);\n\t}\n}","import { Extension, Runtime, Type } from 'main.core';\nimport type { ServerOptions } from '../types/server-options';\nimport UploadController from './upload-controller';\nimport AbstractUploadController from './abstract-upload-controller';\nimport ServerLoadController from './server-load-controller';\nimport AbstractLoadController from './abstract-load-controller';\nimport ClientLoadController from './client-load-controller';\nimport AbstractRemoveController from './abstract-remove-controller';\nimport RemoveController from './remove-controller';\n\nexport default class Server\n{\n\t#controller: ?string = null;\n\t#controllerOptions: ?{ [key: string]: any } = null;\n\t#uploadControllerClass: Class<AbstractUploadController> = null;\n\t#uploadControllerOptions: ?{ [key: string]: any } = {};\n\t#loadControllerClass: Class<AbstractLoadController> = null;\n\t#loadControllerOptions: ?{ [key: string]: any } = {};\n\t#removeControllerClass: Class<AbstractRemoveController> = null;\n\t#removeControllerOptions: ?{ [key: string]: any } = {};\n\t#chunkSize: number = null;\n\t#defaultChunkSize: number = null;\n\t#chunkMinSize: number = null;\n\t#chunkMaxSize: number = null;\n\t#chunkRetryDelays: number[] = [1000, 3000, 6000];\n\n\tconstructor(serverOptions: ServerOptions)\n\t{\n\t\tconst options = Type.isPlainObject(serverOptions) ? serverOptions : {};\n\n\t\tthis.#controller = Type.isStringFilled(options.controller) ? options.controller : null;\n\t\tthis.#controllerOptions = Type.isPlainObject(options.controllerOptions) ? options.controllerOptions : null;\n\n\t\tconst chunkSize =\n\t\t\tType.isNumber(options.chunkSize) && options.chunkSize > 0\n\t\t\t\t? options.chunkSize\n\t\t\t\t: this.getDefaultChunkSize()\n\t\t;\n\n\t\tthis.#chunkSize = options.forceChunkSize === true ? chunkSize : this.#calcChunkSize(chunkSize);\n\n\t\tif (options.chunkRetryDelays === false || options.chunkRetryDelays === null)\n\t\t{\n\t\t\tthis.#chunkRetryDelays = [];\n\t\t}\n\t\telse if (Type.isArray(options.chunkRetryDelays))\n\t\t{\n\t\t\tthis.#chunkRetryDelays = options.chunkRetryDelays;\n\t\t}\n\n\t\t['uploadControllerClass', 'loadControllerClass', 'removeControllerClass'].forEach((controllerClass: string) => {\n\n\t\t\tlet fn = null;\n\t\t\tif (Type.isStringFilled(options[controllerClass]))\n\t\t\t{\n\t\t\t\tfn = Runtime.getClass(options[controllerClass]);\n\t\t\t\tif (!Type.isFunction(fn))\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`Uploader.Server: \"${controllerClass}\" must be a function.`);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (Type.isFunction(options[controllerClass]))\n\t\t\t{\n\t\t\t\tfn = options[controllerClass];\n\t\t\t}\n\n\t\t\tif (controllerClass === 'uploadControllerClass')\n\t\t\t{\n\t\t\t\tthis.#uploadControllerClass = fn;\n\t\t\t}\n\t\t\telse if (controllerClass === 'loadControllerClass')\n\t\t\t{\n\t\t\t\tthis.#loadControllerClass = fn;\n\t\t\t}\n\t\t\telse if (controllerClass === 'removeControllerClass')\n\t\t\t{\n\t\t\t\tthis.#removeControllerClass = fn;\n\t\t\t}\n\t\t});\n\n\t\tthis.#loadControllerOptions =\n\t\t\tType.isPlainObject(options.loadControllerOptions) ? options.loadControllerOptions : {}\n\t\t;\n\n\t\tthis.#uploadControllerOptions =\n\t\t\tType.isPlainObject(options.uploadControllerOptions) ? options.uploadControllerOptions : {}\n\t\t;\n\n\t\tthis.#removeControllerOptions =\n\t\t\tType.isPlainObject(options.removeControllerOptions) ? options.removeControllerOptions : {}\n\t\t;\n\t}\n\n\tcreateUploadController(): ?UploadController\n\t{\n\t\tif (this.#uploadControllerClass)\n\t\t{\n\t\t\tconst controller = new this.#uploadControllerClass(this, this.#uploadControllerOptions);\n\t\t\tif (!(controller instanceof AbstractUploadController))\n\t\t\t{\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Uploader.Server: \"uploadControllerClass\" must be an instance of AbstractUploadController.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn controller;\n\t\t}\n\t\telse if (Type.isStringFilled(this.#controller))\n\t\t{\n\t\t\treturn new UploadController(this, this.#uploadControllerOptions);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tcreateLoadController(): ServerLoadController\n\t{\n\t\tif (this.#loadControllerClass)\n\t\t{\n\t\t\tconst controller = new this.#loadControllerClass(this, this.#loadControllerOptions);\n\t\t\tif (!(controller instanceof AbstractLoadController))\n\t\t\t{\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Uploader.Server: \"loadControllerClass\" must be an instance of AbstractLoadController.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn controller;\n\t\t}\n\n\t\treturn new ServerLoadController(this, this.#loadControllerOptions);\n\t}\n\n\tcreateClientLoadController(): ClientLoadController\n\t{\n\t\treturn new ClientLoadController(this, this.#loadControllerOptions);\n\t}\n\n\tcreateRemoveController(): ?AbstractRemoveController\n\t{\n\t\tif (this.#removeControllerClass)\n\t\t{\n\t\t\tconst controller = new this.#removeControllerClass(this, this.#removeControllerOptions);\n\t\t\tif (!(controller instanceof AbstractRemoveController))\n\t\t\t{\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Uploader.Server: \"removeControllerClass\" must be an instance of AbstractRemoveController.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn controller;\n\t\t}\n\t\telse if (Type.isStringFilled(this.#controller))\n\t\t{\n\t\t\treturn new RemoveController(this, this.#removeControllerOptions);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetController(): ?string\n\t{\n\t\treturn this.#controller;\n\t}\n\n\tgetControllerOptions(): ?{ [key: string]: any }\n\t{\n\t\treturn this.#controllerOptions;\n\t}\n\n\tgetChunkSize(): number\n\t{\n\t\treturn this.#chunkSize;\n\t}\n\n\tgetDefaultChunkSize(): number\n\t{\n\t\tif (this.#defaultChunkSize === null)\n\t\t{\n\t\t\tconst settings = Extension.getSettings('ui.uploader.core');\n\t\t\tthis.#defaultChunkSize = settings.get('defaultChunkSize', 5 * 1024 * 1024);\n\t\t}\n\n\t\treturn this.#defaultChunkSize;\n\t}\n\n\tgetChunkMinSize(): number\n\t{\n\t\tif (this.#chunkMinSize === null)\n\t\t{\n\t\t\tconst settings = Extension.getSettings('ui.uploader.core');\n\t\t\tthis.#chunkMinSize = settings.get('chunkMinSize', 1024 * 1024);\n\t\t}\n\n\t\treturn this.#chunkMinSize;\n\t}\n\n\tgetChunkMaxSize(): number\n\t{\n\t\tif (this.#chunkMaxSize === null)\n\t\t{\n\t\t\tconst settings = Extension.getSettings('ui.uploader.core');\n\t\t\tthis.#chunkMaxSize = settings.get('chunkMaxSize', 5 * 1024 * 1024);\n\t\t}\n\n\t\treturn this.#chunkMaxSize;\n\t}\n\n\tgetChunkRetryDelays(): number[]\n\t{\n\t\treturn this.#chunkRetryDelays;\n\t}\n\n\t#calcChunkSize(chunkSize: number): number\n\t{\n\t\treturn Math.min(Math.max(this.getChunkMinSize(), chunkSize), this.getChunkMaxSize());\n\t}\n}\n","import type Uploader from '../uploader';\n\nexport default class Filter\n{\n\t#uploader: Uploader = null;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tthis.#uploader = uploader;\n\t}\n\n\tgetUploader(): Uploader\n\t{\n\t\treturn this.#uploader;\n\t}\n\n\t/**\n\t * @abstract\n\t */\n\tapply(...args): Promise\n\t{\n\t\tthrow new Error('You must implement apply() method.');\n\t}\n}\n","import { Extension, Type } from 'main.core';\nimport Filter from './filter';\nimport UploaderError from '../uploader-error';\nimport formatFileSize from '../helpers/format-file-size';\n\nimport type Uploader from '../uploader';\nimport type UploaderFile from '../uploader-file';\n\nexport default class FileSizeFilter extends Filter\n{\n\t#maxFileSize: ?number = 256 * 1024 * 1024;\n\t#minFileSize: number = 0;\n\t#maxTotalFileSize: ?number = null;\n\t#imageMaxFileSize: ?number = 48 * 1024 * 1024;\n\t#imageMinFileSize: number = 0;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst settings = Extension.getSettings('ui.uploader.core');\n\t\tthis.#maxFileSize = settings.get('maxFileSize', this.#maxFileSize);\n\t\tthis.#minFileSize = settings.get('minFileSize', this.#minFileSize);\n\t\tthis.#maxTotalFileSize = settings.get('maxTotalFileSize', this.#maxTotalFileSize);\n\t\tthis.#imageMaxFileSize = settings.get('imageMaxFileSize', this.#imageMaxFileSize);\n\t\tthis.#imageMinFileSize = settings.get('imageMinFileSize', this.#imageMinFileSize);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\t\tthis.setMaxFileSize(options['maxFileSize']);\n\t\tthis.setMinFileSize(options['minFileSize']);\n\t\tthis.setMaxTotalFileSize(options['maxTotalFileSize']);\n\t\tthis.setImageMaxFileSize(options['imageMaxFileSize']);\n\t\tthis.setImageMinFileSize(options['imageMinFileSize']);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (this.getMaxFileSize() !== null && file.getSize() > this.getMaxFileSize())\n\t\t\t{\n\t\t\t\treject(\n\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t'MAX_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmaxFileSize: formatFileSize(this.getMaxFileSize()),\n\t\t\t\t\t\t\tmaxFileSizeInBytes: this.getMaxFileSize(),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (file.getSize() < this.getMinFileSize())\n\t\t\t{\n\t\t\t\treject(\n\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t'MIN_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tminFileSize: formatFileSize(this.getMinFileSize()),\n\t\t\t\t\t\t\tminFileSizeInBytes: this.getMinFileSize(),\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (file.isImage())\n\t\t\t{\n\t\t\t\tif (this.getImageMaxFileSize() !== null && file.getSize() > this.getImageMaxFileSize())\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'IMAGE_MAX_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\timageMaxFileSize: formatFileSize(this.getImageMaxFileSize()),\n\t\t\t\t\t\t\t\timageMaxFileSizeInBytes: this.getImageMaxFileSize(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (file.getSize() < this.getImageMinFileSize())\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'IMAGE_MIN_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\timageMinFileSize: formatFileSize(this.getImageMinFileSize()),\n\t\t\t\t\t\t\t\timageMinFileSizeInBytes: this.getImageMinFileSize(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.getMaxTotalFileSize() !== null)\n\t\t\t{\n\t\t\t\tif (this.getUploader().getTotalSize() > this.getMaxTotalFileSize())\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'MAX_TOTAL_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmaxTotalFileSize: formatFileSize(this.getMaxTotalFileSize()),\n\t\t\t\t\t\t\t\tmaxTotalFileSizeInBytes: this.getMaxTotalFileSize(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\n\t}\n\n\tgetMaxFileSize(): ?number\n\t{\n\t\treturn this.#maxFileSize;\n\t}\n\n\tsetMaxFileSize(value: ?number)\n\t{\n\t\tif ((Type.isNumber(value) && value >= 0) || Type.isNull(value))\n\t\t{\n\t\t\tthis.#maxFileSize = value;\n\t\t}\n\t}\n\n\tgetMinFileSize(): number\n\t{\n\t\treturn this.#minFileSize;\n\t}\n\n\tsetMinFileSize(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value >= 0)\n\t\t{\n\t\t\tthis.#minFileSize = value;\n\t\t}\n\t}\n\n\tgetMaxTotalFileSize(): ?number\n\t{\n\t\treturn this.#maxTotalFileSize;\n\t}\n\n\tsetMaxTotalFileSize(value: ?number)\n\t{\n\t\tif ((Type.isNumber(value) && value >= 0) || Type.isNull(value))\n\t\t{\n\t\t\tthis.#maxTotalFileSize = value;\n\t\t}\n\t}\n\n\tgetImageMaxFileSize(): ?number\n\t{\n\t\treturn this.#imageMaxFileSize;\n\t}\n\n\tsetImageMaxFileSize(value: ?number)\n\t{\n\t\tif ((Type.isNumber(value) && value >= 0) || Type.isNull(value))\n\t\t{\n\t\t\tthis.#imageMaxFileSize = value;\n\t\t}\n\t}\n\n\tgetImageMinFileSize(): number\n\t{\n\t\treturn this.#imageMinFileSize;\n\t}\n\n\tsetImageMinFileSize(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value >= 0)\n\t\t{\n\t\t\tthis.#imageMinFileSize = value;\n\t\t}\n\t}\n}\n","import { Type } from 'main.core';\n\nconst isValidFileType = (file: File, fileTypes: string[]): boolean => {\n\tif (!Type.isArrayFilled(fileTypes))\n\t{\n\t\treturn true;\n\t}\n\n\tconst mimeType = file.type;\n\tconst baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n\tfor (let i = 0; i < fileTypes.length; i++)\n\t{\n\t\tif (!Type.isStringFilled(fileTypes[i]))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst type = fileTypes[i].trim().toLowerCase();\n\n\t\tif (type.charAt(0) === '.') // extension case\n\t\t{\n\t\t\tif (file.name.toLowerCase().indexOf(type, file.name.length - type.length) !== -1)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse if (/\\/\\*$/.test(type)) // image/* mime type case\n\t\t{\n\t\t\tif (baseMimeType === type.replace(/\\/.*$/, ''))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse if (mimeType === type)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport default isValidFileType;","import Filter from './filter';\nimport isValidFileType from '../helpers/is-valid-file-type';\nimport UploaderError from '../uploader-error';\n\nimport type UploaderFile from '../uploader-file';\nimport type Uploader from '../uploader';\n\nexport default class FileTypeFilter extends Filter\n{\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (isValidFileType(file.getBinary(), this.getUploader().getAcceptedFileTypes()))\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treject(new UploaderError('FILE_TYPE_NOT_ALLOWED'));\n\t\t\t}\n\t\t});\n\t}\n}\n","const getArrayBuffer = (file: File | Blob): Promise<ArrayBuffer> => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst fileReader = new FileReader();\n\t\tfileReader.readAsArrayBuffer(file);\n\n\t\tfileReader.onload = () => {\n\t\t\tconst buffer: ArrayBuffer = fileReader.result;\n\n\t\t\tresolve(buffer);\n\t\t};\n\n\t\tfileReader.onerror = () => {\n\t\t\treject(fileReader.error);\n\t\t};\n\t});\n};\n\nexport default getArrayBuffer;","const convertStringToBuffer = (str: string): ArrayLike => {\n\tconst result = [];\n\tfor (let i = 0; i < str.length; i++)\n\t{\n\t\tresult.push(str.charCodeAt(i) & 0xFF);\n\t}\n\n\treturn result;\n};\nexport default convertStringToBuffer;","const compareBuffers = (dataView: DataView, dest: ArrayLike, start: number): boolean => {\n\tfor (let i = start, j = 0; j < dest.length;)\n\t{\n\t\tif (dataView.getUint8(i++) !== dest[j++])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\nexport default compareBuffers;","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\n\nimport type { ImageSize } from '../image-size-type';\n\nconst GIF87a = convertStringToBuffer('GIF87a');\nconst GIF89a = convertStringToBuffer('GIF89a');\n\nexport default class Gif\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 10)\n\t\t\t{\n\t\t\t\treturn reject(new Error('GIF signature not found.'));\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 10);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\n\t\t\t\t\tif (!compareBuffers(view, GIF87a, 0) && !compareBuffers(view, GIF89a, 0))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('GIF signature not found.'));\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\twidth: view.getUint16(6, true),\n\t\t\t\t\t\theight: view.getUint16(8, true),\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\nimport type { ImageSize } from '../image-size-type';\n\nconst PNG_SIGNATURE = convertStringToBuffer('\\x89PNG\\r\\n\\x1a\\n');\nconst IHDR_SIGNATURE = convertStringToBuffer('IHDR');\nconst FRIED_CHUNK_NAME = convertStringToBuffer('CgBI');\n\nexport default class Png\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 40)\n\t\t\t{\n\t\t\t\treturn reject(new Error('PNG signature not found.'));\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 40);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\n\t\t\t\t\tif (!compareBuffers(view, PNG_SIGNATURE, 0))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('PNG signature not found.'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (compareBuffers(view, FRIED_CHUNK_NAME, 12))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (compareBuffers(view, IHDR_SIGNATURE, 28))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\twidth: view.getUint32(32),\n\t\t\t\t\t\t\t\theight: view.getUint32(36),\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\treturn reject(new Error('PNG IHDR not found.'));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (compareBuffers(view, IHDR_SIGNATURE, 12))\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\twidth: view.getUint32(16),\n\t\t\t\t\t\t\theight: view.getUint32(20),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('PNG IHDR not found.'));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treturn reject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n};\n","import getArrayBuffer from '../../get-array-buffer';\nimport type { ImageSize } from '../image-size-type';\n\nconst BMP_SIGNATURE = 0x424d; // BM\n\nexport default class Bmp\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 26)\n\t\t\t{\n\t\t\t\treturn reject(new Error('BMP signature not found.'));\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 26);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\t\t\t\t\tif (!view.getUint16(0) === BMP_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('BMP signature not found.'));\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\twidth: view.getUint32(18, true),\n\t\t\t\t\t\theight: Math.abs(view.getInt32(22, true)),\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\n\nimport type { ImageSize } from '../image-size-type';\n\nconst EXIF_SIGNATURE = convertStringToBuffer('Exif\\0\\0');\n\nexport default class Jpeg\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 2)\n\t\t\t{\n\t\t\t\treturn reject(new Error('JPEG signature not found.'));\n\t\t\t}\n\n\t\t\tgetArrayBuffer(file)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\t\t\t\t\tif (view.getUint8(0) !== 0xFF || view.getUint8(1) !== 0xD8)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('JPEG signature not found.'));\n\t\t\t\t\t}\n\n\t\t\t\t\tlet offset = 2;\n\t\t\t\t\tlet orientation = -1;\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (view.byteLength - offset < 2)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn reject(new Error('JPEG signature not found.'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (view.getUint8(offset++) !== 0xFF)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn reject(new Error('JPEG signature not found.'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet code = view.getUint8(offset++);\n\t\t\t\t\t\tlet length;\n\n\t\t\t\t\t\t// skip padding bytes\n\t\t\t\t\t\twhile (code === 0xFF)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode = view.getUint8(offset++);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((0xD0 <= code && code <= 0xD9) || code === 0x01)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlength = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (0xC0 <= code && code <= 0xFE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// the rest of the unreserved markers\n\t\t\t\t\t\t\tif (view.byteLength - offset < 2)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn reject(new Error('JPEG signature not found.'));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlength = view.getUint16(offset) - 2;\n\t\t\t\t\t\t\toffset += 2;\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\treturn reject(new Error('JPEG unknown markers.'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (code === 0xD9 /* EOI */ || code === 0xDA /* SOS */)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn reject(new Error('JPEG end of the data stream.'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// try to get orientation from Exif segment\n\t\t\t\t\t\tif (code === 0xE1 && length >= 10 && compareBuffers(view, EXIF_SIGNATURE, offset))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst exifBlock = new DataView(view.buffer, offset + 6, offset + length);\n\t\t\t\t\t\t\torientation = getOrientation(exifBlock);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tlength >= 5\n\t\t\t\t\t\t\t&& (0xC0 <= code && code <= 0xCF)\n\t\t\t\t\t\t\t&& code !== 0xC4 && code !== 0xC8 && code !== 0xCC\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (view.byteLength - offset < length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn reject(new Error('JPEG size not found.'));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet width = view.getUint16(offset + 3);\n\t\t\t\t\t\t\tlet height = view.getUint16(offset + 1);\n\t\t\t\t\t\t\tif (orientation >= 5 && orientation <= 8)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[width, height] = [height, width];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn resolve({\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\torientation,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\toffset += length;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n\nconst Marker = {\n\tBIG_ENDIAN: 0x4d4d,\n\tLITTLE_ENDIAN: 0x4949,\n};\n\nconst getOrientation = (exifBlock: DataView) => {\n\tconst byteAlign = exifBlock.getUint16(0);\n\tconst isBigEndian = byteAlign === Marker.BIG_ENDIAN;\n\tconst isLittleEndian = byteAlign === Marker.LITTLE_ENDIAN;\n\n\tif (isBigEndian || isLittleEndian)\n\t{\n\t\treturn extractOrientation(exifBlock, isLittleEndian);\n\t}\n\n\treturn -1;\n};\n\nconst extractOrientation = (exifBlock: DataView, littleEndian: boolean = false) => {\n\n\tconst offset = 8; // idf offset\n\tconst idfDirectoryEntries = exifBlock.getUint16(offset, littleEndian);\n\n\tconst IDF_ENTRY_BYTES = 12;\n\tconst NUM_DIRECTORY_ENTRIES_BYTES = 2;\n\n\tfor (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++)\n\t{\n\t\tconst start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES);\n\t\tconst end = start + IDF_ENTRY_BYTES;\n\n\t\t// Skip on corrupt EXIF blocks\n\t\tif (start > exifBlock.byteLength)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst block = new DataView(exifBlock.buffer, exifBlock.byteOffset + start, end - start);\n\t\tconst tagNumber = block.getUint16(0, littleEndian);\n\n\t\t// 274 is the `orientation` tag ID\n\t\tif (tagNumber === 274)\n\t\t{\n\t\t\tconst dataFormat = block.getUint16(2, littleEndian)\n\t\t\tif (dataFormat !== 3)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tconst numberOfComponents = block.getUint32(4, littleEndian);\n\t\t\tif (numberOfComponents !== 1)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\treturn block.getUint16(8, littleEndian)\n\t\t}\n\t}\n};\n","import getArrayBuffer from '../../get-array-buffer';\nimport type { ImageSize } from '../image-size-type';\n\nconst RIFF_HEADER = 0x52494646; // RIFF\nconst WEBP_SIGNATURE = 0x57454250; // WEBP\nconst VP8_SIGNATURE = 0x56503820; // VP8\nconst VP8L_SIGNATURE = 0x5650384c; // VP8L\nconst VP8X_SIGNATURE = 0x56503858; // VP8X\n\nexport default class Webp\n{\n\tgetSize(file: File): Promise<?ImageSize>\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 16)\n\t\t\t{\n\t\t\t\treturn reject(new Error('WEBP signature not found.'));\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 30);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\t\t\t\t\tif (view.getUint32(0) !== RIFF_HEADER && view.getUint32(8) !== WEBP_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn reject(new Error('WEBP signature not found.'));\n\t\t\t\t\t}\n\n\t\t\t\t\tconst headerType = view.getUint32(12);\n\t\t\t\t\tconst headerView = new DataView(buffer, 20, 10);\n\t\t\t\t\tif (headerType === VP8_SIGNATURE && headerView.getUint8(0) !== 0x2f)\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\twidth: headerView.getUint16(6, true) & 0x3fff,\n\t\t\t\t\t\t\theight: headerView.getUint16(8, true) & 0x3fff,\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\telse if (headerType === VP8L_SIGNATURE && headerView.getUint8(0) === 0x2f)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst bits = headerView.getUint32(1, true);\n\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\twidth: (bits & 0x3FFF) + 1,\n\t\t\t\t\t\t\theight: ((bits >> 14) & 0x3FFF) + 1,\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\telse if (headerType === VP8X_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst extendedHeader = headerView.getUint8(0);\n\t\t\t\t\t\tconst validStart = (extendedHeader & 0xc0) === 0;\n\t\t\t\t\t\tconst validEnd = (extendedHeader & 0x01) === 0;\n\t\t\t\t\t\tif (validStart && validEnd)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst width = 1 + (\n\t\t\t\t\t\t\t\t(headerView.getUint8(6) << 16)\n\t\t\t\t\t\t\t\t| (headerView.getUint8(5) << 8)\n\t\t\t\t\t\t\t\t| headerView.getUint8(4)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst height = 1 + (\n\t\t\t\t\t\t\t\t(headerView.getUint8(9) << 0)\n\t\t\t\t\t\t\t\t| (headerView.getUint8(8) << 8)\n\t\t\t\t\t\t\t\t| headerView.getUint8(7)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tresolve({ width, height });\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treject(new Error('WEBP signature not found.'));\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n","import Gif from './types/gif';\nimport Png from './types/png';\nimport Bmp from './types/bmp';\nimport Jpeg from './types/jpeg';\nimport Webp from './types/webp';\n\nimport getFileExtension from '../get-file-extension';\nimport type { ImageSize } from './image-size-type';\n\nconst jpg = new Jpeg();\nconst typeHandlers = {\n\tgif: new Gif(),\n\tpng: new Png(),\n\tbmp: new Bmp(),\n\tjpg: jpg,\n\tjpeg: jpg,\n\tjpe: jpg,\n\twebp: new Webp()\n};\n\nconst getImageSize = (file: File): Promise<ImageSize> => {\n\tif (file.size === 0)\n\t{\n\t\treturn Promise.reject(new Error('Unknown image type.'));\n\t}\n\n\tconst extension = getFileExtension(file.name).toLowerCase();\n\tconst type = file.type.replace(/^image\\//, '');\n\tconst typeHandler = typeHandlers[extension] || typeHandlers[type];\n\tif (!typeHandler)\n\t{\n\t\treturn Promise.reject(new Error('Unknown image type.'));\n\t}\n\n\treturn typeHandler.getSize(file);\n};\n\nexport default getImageSize;\n\n","import { Extension, Type } from 'main.core';\n\nimport Filter from './filter';\nimport UploaderError from '../uploader-error';\nimport getImageSize from '../helpers/image-size/get-image-size';\n\nimport type Uploader from '../uploader';\nimport type UploaderFile from '../uploader-file';\n\nexport default class ImageSizeFilter extends Filter\n{\n\t#imageMinWidth: number = 1;\n\t#imageMinHeight: number = 1;\n\t#imageMaxWidth: number = 7000;\n\t#imageMaxHeight: number = 7000;\n\t#ignoreUnknownImageTypes: boolean = false;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst settings = Extension.getSettings('ui.uploader.core');\n\t\tthis.#imageMinWidth = settings.get('imageMinWidth', this.#imageMinWidth);\n\t\tthis.#imageMinHeight = settings.get('imageMinHeight', this.#imageMinHeight);\n\t\tthis.#imageMaxWidth = settings.get('imageMaxWidth', this.#imageMaxWidth);\n\t\tthis.#imageMaxHeight = settings.get('imageMaxHeight', this.#imageMaxHeight);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\tthis.setImageMinWidth(options['imageMinWidth']);\n\t\tthis.setImageMinHeight(options['imageMinHeight']);\n\t\tthis.setImageMaxWidth(options['imageMaxWidth']);\n\t\tthis.setImageMaxHeight(options['imageMaxHeight']);\n\t\tthis.setIgnoreUnknownImageTypes(options['ignoreUnknownImageTypes']);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (!file.isImage())\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgetImageSize(file.getBinary())\n\t\t\t\t.then(({ width, height }) => {\n\t\t\t\t\tfile.setWidth(width);\n\t\t\t\t\tfile.setHeight(height);\n\n\t\t\t\t\tif (width < this.getImageMinWidth() || height < this.getImageMinHeight())\n\t\t\t\t\t{\n\t\t\t\t\t\treject(new UploaderError(\n\t\t\t\t\t\t\t'IMAGE_IS_TOO_SMALL',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tminWidth: this.getImageMinWidth(),\n\t\t\t\t\t\t\t\tminHeight: this.getImageMinHeight(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\telse if (width > this.getImageMaxWidth() || height > this.getImageMaxHeight())\n\t\t\t\t\t{\n\t\t\t\t\t\treject(new UploaderError(\n\t\t\t\t\t\t\t'IMAGE_IS_TOO_BIG',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmaxWidth: this.getImageMaxWidth(),\n\t\t\t\t\t\t\t\tmaxHeight: this.getImageMaxHeight(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (this.getIgnoreUnknownImageTypes())\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.log('Uploader ImageSizeFilter:', error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treject(new UploaderError('IMAGE_TYPE_NOT_SUPPORTED'));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\tgetImageMinWidth(): number\n\t{\n\t\treturn this.#imageMinWidth;\n\t}\n\n\tsetImageMinWidth(value: number): void\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imageMinWidth = value;\n\t\t}\n\t}\n\n\tgetImageMinHeight(): number\n\t{\n\t\treturn this.#imageMinHeight;\n\t}\n\n\tsetImageMinHeight(value: number): void\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imageMinHeight = value;\n\t\t}\n\t}\n\n\tgetImageMaxWidth(): number\n\t{\n\t\treturn this.#imageMaxWidth;\n\t}\n\n\tsetImageMaxWidth(value: number): void\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imageMaxWidth = value;\n\t\t}\n\t}\n\n\tgetImageMaxHeight(): number\n\t{\n\t\treturn this.#imageMaxHeight;\n\t}\n\n\tsetImageMaxHeight(value: number): void\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imageMaxHeight = value;\n\t\t}\n\t}\n\n\tgetIgnoreUnknownImageTypes(): boolean\n\t{\n\t\treturn this.#ignoreUnknownImageTypes;\n\t}\n\n\tsetIgnoreUnknownImageTypes(value: boolean): void\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis.#ignoreUnknownImageTypes = value;\n\t\t}\n\t}\n}\n","import createUniqueId from './create-unique-id';\n\nconst createWorker = (fn: Function) => {\n\tconst workerBlob = new Blob(['(', fn.toString(), ')()'], { type: 'application/javascript' });\n\tconst workerURL = URL.createObjectURL(workerBlob);\n\tconst worker = new Worker(workerURL);\n\n\treturn {\n\t\tpost: (message, callback, transfer): void => {\n\t\t\tconst id = createUniqueId();\n\t\t\tworker.onmessage = event => {\n\t\t\t\tif (event.data.id === id)\n\t\t\t\t{\n\t\t\t\t\tcallback(event.data.message);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tworker.postMessage({ id, message }, transfer);\n\t\t},\n\t\tterminate: (): void => {\n\t\t\tworker.terminate();\n\t\t\tURL.revokeObjectURL(workerURL);\n\t\t}\n\t};\n};\n\nexport default createWorker;","const BitmapWorker = function() {\n\tself.onmessage = event => {\n\t\t// Hack for Safari. Workers can become unpredictable.\n\t\t// Sometimes 'self.postMessage' doesn't emit 'onmessage' event.\n\t\tsetTimeout(() => {\n\t\t\tcreateImageBitmap(event.data.message.file)\n\t\t\t\t.then(bitmap => {\n\t\t\t\t\tself.postMessage({ id: event?.data?.id, message: bitmap }, [bitmap]);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tself.postMessage({ id: event.data.id, message: null }, []);\n\t\t\t\t})\n\t\t\t;\n\t\t}, 0);\n\t};\n};\n\nexport default BitmapWorker;","const loadImage = (file: File | Blob) => new Promise((resolve, reject) => {\n\n\tconst image = document.createElement('img');\n\tconst url = URL.createObjectURL(file);\n\timage.src = url;\n\n\timage.onerror = error => {\n\t\tURL.revokeObjectURL(image.src);\n\t\treject(error);\n\t};\n\n\timage.onload = () => {\n\t\tURL.revokeObjectURL(url);\n\t\tresolve({\n\t\t\twidth: image.naturalWidth,\n\t\t\theight: image.naturalHeight,\n\t\t\timage\n\t\t});\n\t};\n});\n\nexport default loadImage;","const createImagePreview = (data, width: number, height: number) => {\n\twidth = Math.round(width);\n\theight = Math.round(height);\n\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = width;\n\tcanvas.height = height;\n\n\tconst context = canvas.getContext('2d');\n\t// context.imageSmoothingQuality = 'high';\n\tcontext.drawImage(data, 0, 0, width, height);\n\n\treturn canvas;\n};\n\nexport default createImagePreview;","import { Browser } from 'main.core';\n\nconst supportedMimeTypes =\n\tBrowser.isSafari()\n\t\t? ['image/jpeg', 'image/png']\n\t\t: ['image/jpeg', 'image/png', 'image/webp']\n;\n\nconst getCanvasToBlobType = (blob: Blob, mimeType = 'image/jpeg', mimeTypeMode = 'auto'): string => {\n\n\tmimeType = supportedMimeTypes.includes(mimeType) ? mimeType : 'image/jpeg';\n\tif (mimeTypeMode === 'force')\n\t{\n\t\treturn mimeType;\n\t}\n\telse\n\t{\n\t\treturn supportedMimeTypes.includes(blob.type) ? blob.type : mimeType;\n\t}\n};\n\nexport default getCanvasToBlobType;","const getFilenameWithoutExtension = (name) => {\n\treturn name.substr(0, name.lastIndexOf('.')) || name;\n};\n\nexport default getFilenameWithoutExtension;","import getFilenameWithoutExtension from './get-filename-without-extension';\n\nconst extensionMap = {\n\t'jpeg': 'jpg',\n};\n\nconst renameFileToMatchMimeType = (filename, mimeType) => {\n\tconst name = getFilenameWithoutExtension(filename);\n\tconst type = mimeType.split('/')[1];\n\tconst extension = extensionMap[type] || type;\n\n\treturn `${name}.${extension}`;\n};\n\nexport default renameFileToMatchMimeType;","import createBlobFromDataUri from './create-blob-from-data-uri';\n\nconst canvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\nconst hasToBlobSupport = window.HTMLCanvasElement && canvasPrototype.toBlob;\n\nconst convertCanvasToBlob = (canvas: HTMLCanvasElement, type: string, quality: number) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (hasToBlobSupport)\n\t\t{\n\t\t\tcanvas.toBlob((blob: Blob) => {\n\t\t\t\tresolve(blob);\n\t\t\t}, type, quality);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst blob = createBlobFromDataUri(canvas.toDataURL(type, quality));\n\n\t\t\tresolve(blob);\n\t\t}\n\t});\n};\n\nexport default convertCanvasToBlob;","import { ResizeImageOptions } from '../types/resize-image-options';\n\ntype ImageData = ImageBitmap | HTMLImageElement | { width: number, height: number };\ntype ResizedImageSizeResult = { targetWidth: number, targetHeight: number, useOriginalSize: boolean };\n\nconst getResizedImageSize = (imageData: ImageData, options: ResizeImageOptions): ResizedImageSizeResult => {\n\tconst { mode = 'contain', upscale = false } = options;\n\tlet { width, height } = options;\n\n\tif (!width && !height)\n\t{\n\t\treturn {\n\t\t\ttargetWidth: 0,\n\t\t\ttargetHeight: 0,\n\t\t\tuseOriginalSize: true,\n\t\t};\n\t}\n\n\tif (width === null)\n\t{\n\t\twidth = height;\n\t}\n\telse if (height === null)\n\t{\n\t\theight = width;\n\t}\n\n\tif (mode !== 'force')\n\t{\n\t\tconst ratioWidth = width / imageData.width;\n\t\tconst ratioHeight = height / imageData.height;\n\t\tlet ratio = 1;\n\n\t\tif (mode === 'cover')\n\t\t{\n\t\t\tratio = Math.max(ratioWidth, ratioHeight);\n\t\t}\n\t\telse if (mode === 'contain')\n\t\t{\n\t\t\tratio = Math.min(ratioWidth, ratioHeight);\n\t\t}\n\n\t\t// if image is too small, exit here with original image\n\t\tif (ratio > 1 && upscale === false)\n\t\t{\n\t\t\treturn {\n\t\t\t\ttargetWidth: imageData.width,\n\t\t\t\ttargetHeight: imageData.height,\n\t\t\t\tuseOriginalSize: true,\n\t\t\t};\n\t\t}\n\n\t\twidth = imageData.width * ratio;\n\t\theight = imageData.height * ratio;\n\t}\n\n\t/*if (mode === 'crop')\n\t{\n\t\tconst sourceImageRatio = sourceImageWidth / sourceImageHeight;\n\t\tconst targetRatio = targetWidth / targetHeight;\n\n\t\tif (sourceImageRatio > targetRatio)\n\t\t{\n\t\t\tconst newWidth = sourceImageHeight * targetRatio;\n\t\t\tsrcX = (sourceImageWidth - newWidth) / 2;\n\t\t\tsourceImageWidth = newWidth;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst newHeight = sourceImageWidth / targetRatio;\n\t\t\tsrcY = (sourceImageHeight - newHeight) / 2;\n\t\t\tsourceImageHeight = newHeight;\n\t\t}\n\n\t\tcontext.drawImage(image, srcX, srcY, sourceImageWidth, sourceImageHeight, 0, 0, targetWidth, targetHeight);\n\t}*/\n\n\treturn {\n\t\ttargetWidth: Math.round(width),\n\t\ttargetHeight: Math.round(height),\n\t\tuseOriginalSize: false,\n\t};\n};\n\nexport default getResizedImageSize;","import { Browser, Type } from 'main.core';\n\nimport createWorker from './create-worker';\nimport BitmapWorker from './bitmap-worker';\nimport loadImage from './load-image';\nimport createImagePreview from './create-image-preview';\nimport getCanvasToBlobType from './get-canvas-to-blob-type';\nimport renameFileToMatchMimeType from './rename-file-to-match-mime-type';\nimport createFileFromBlob from './create-file-from-blob';\nimport convertCanvasToBlob from './convert-canvas-to-blob';\nimport getResizedImageSize from './get-resized-image-size';\n\nimport type { ResizeImageOptions } from '../types/resize-image-options';\nimport type { ResizeImageResult } from '../types/resize-image-result';\n\nlet canCreateImageBitmap = (\n\t'createImageBitmap' in window\n\t&& typeof ImageBitmap !== 'undefined'\n\t&& ImageBitmap.prototype\n\t&& ImageBitmap.prototype.close\n);\n\nif (canCreateImageBitmap && Browser.isSafari())\n{\n\tconst ua = navigator.userAgent.toLowerCase();\n\tconst regex = new RegExp('version\\\\/([0-9.]+)', 'i');\n\tconst result = regex.exec(ua);\n\tif (result && result[1] && result[1] < '16.4')\n\t{\n\t\t// Webkit bug https://bugs.webkit.org/show_bug.cgi?id=223326\n\t\tcanCreateImageBitmap = false;\n\t}\n}\n\nconst resizeImage = (source: Blob | File, options: ResizeImageOptions): Promise<ResizeImageResult> => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst loadImageDataFallback = () => {\n\t\t\tloadImage(source)\n\t\t\t\t.then(({ image }) => {\n\t\t\t\t\thandleImageLoad(image);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t};\n\n\t\tconst handleImageLoad = (imageData: ImageBitmap | HTMLImageElement) => {\n\t\t\tconst { targetWidth, targetHeight, useOriginalSize } = getResizedImageSize(imageData, options);\n\t\t\tif (useOriginalSize)\n\t\t\t{\n\t\t\t\tif ('close' in imageData)\n\t\t\t\t{\n\t\t\t\t\timageData.close();\n\t\t\t\t}\n\n\t\t\t\tresolve({\n\t\t\t\t\tpreview: source,\n\t\t\t\t\twidth: imageData.width,\n\t\t\t\t\theight: imageData.height,\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst canvas = createImagePreview(imageData, targetWidth, targetHeight);\n\n\t\t\t// if it was ImageBitmap\n\t\t\tif ('close' in imageData)\n\t\t\t{\n\t\t\t\timageData.close();\n\t\t\t}\n\n\t\t\tconst { quality = 0.92, mimeType, mimeTypeMode } = options;\n\t\t\tconst type = getCanvasToBlobType(source, mimeType, mimeTypeMode);\n\n\t\t\tconvertCanvasToBlob(canvas, type, quality)\n\t\t\t\t.then((blob: Blob) => {\n\t\t\t\t\tlet preview = blob;\n\t\t\t\t\tif (Type.isFile(source))\n\t\t\t\t\t{\n\t\t\t\t\t\t// File type could be changed pic.gif -> pic.jpg\n\t\t\t\t\t\tconst newFileName = renameFileToMatchMimeType(source.name, type);\n\t\t\t\t\t\tpreview = createFileFromBlob(blob, newFileName);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tpreview,\n\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\theight: targetHeight,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t};\n\n\t\tif (canCreateImageBitmap)\n\t\t{\n\t\t\tconst bitmapWorker = createWorker(BitmapWorker);\n\t\t\tbitmapWorker.post({ file: source },\n\t\t\t\t(imageBitmap: ImageBitmap) => {\n\t\t\t\t\tbitmapWorker.terminate();\n\t\t\t\t\tif (imageBitmap)\n\t\t\t\t\t{\n\t\t\t\t\t\thandleImageLoad(imageBitmap);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tloadImageDataFallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tloadImageDataFallback();\n\t\t}\n\t});\n};\n\nexport default resizeImage;","const isVideo = (blob: Blob) => {\n\treturn /^video\\/[a-z0-9.-]+$/i.test(blob.type);\n};\n\nexport default isVideo;","import { Event } from 'main.core';\nimport getResizedImageSize from './get-resized-image-size';\nimport type { ResizeImageOptions } from '../types/resize-image-options';\nimport convertCanvasToBlob from './convert-canvas-to-blob';\nimport createImagePreview from './create-image-preview';\n\nconst createVideoPreview = (\n\tblob: Blob,\n\toptions: ResizeImageOptions = { width: 300, height: 3000 },\n\tseekTime: number = 10\n): Promise => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst video: HTMLVideoElement = document.createElement('video');\n\t\tvideo.setAttribute('src', URL.createObjectURL(blob));\n\t\tvideo.load();\n\n\t\tEvent.bind(video, 'error', (error) => {\n\t\t\treject('Error while loading video file', error);\n\t\t});\n\n\t\tEvent.bind(video, 'loadedmetadata', () => {\n\t\t\tif (video.duration < seekTime)\n\t\t\t{\n\t\t\t\tseekTime = 0;\n\t\t\t}\n\n\t\t\tvideo.currentTime = seekTime;\n\n\t\t\tEvent.bind(video, 'seeked', () => {\n\t\t\t\tconst imageData = { width: video.videoWidth, height: video.videoHeight };\n\t\t\t\tconst { targetWidth, targetHeight } = getResizedImageSize(imageData, options);\n\t\t\t\tif (!targetWidth || !targetHeight)\n\t\t\t\t{\n\t\t\t\t\treject();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst canvas = createImagePreview(video, targetWidth, targetHeight);\n\t\t\t\tconst { quality = 0.92, mimeType = 'image/jpeg' } = options;\n\t\t\t\tconvertCanvasToBlob(canvas, mimeType, quality)\n\t\t\t\t\t.then((blob: Blob) => {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tpreview: blob,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t});\n\t\t});\n\t});\n};\n\nexport default createVideoPreview;","import { Browser, Type } from 'main.core';\n\nimport Filter from './filter';\nimport resizeImage from '../helpers/resize-image';\nimport isResizableImage from '../helpers/is-resizable-image';\nimport isVideo from '../helpers/is-video';\nimport createVideoPreview from '../helpers/create-video-preview';\n\nimport type UploaderFile from '../uploader-file';\nimport type Uploader from '../uploader';\nimport type {\n\tResizeImageOptions,\n\tResizeImageMimeTypeMode,\n\tResizeImageMimeType,\n\tResizeImageMode,\n} from '../types/resize-image-options';\n\nexport default class ImagePreviewFilter extends Filter\n{\n\t#imagePreviewWidth: number = 300;\n\t#imagePreviewHeight: number = 300;\n\t#imagePreviewQuality: number = 0.92;\n\t#imagePreviewMimeType: ResizeImageMimeType = 'image/jpeg';\n\t#imagePreviewMimeTypeMode: ResizeImageMimeTypeMode = 'auto';\n\t#imagePreviewUpscale: boolean = false;\n\t#imagePreviewResizeMode: ResizeImageMode = 'contain';\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\tthis.setImagePreviewWidth(options['imagePreviewWidth']);\n\t\tthis.setImagePreviewHeight(options['imagePreviewHeight']);\n\t\tthis.setImagePreviewQuality(options['imagePreviewQuality']);\n\t\tthis.setImagePreviewUpscale(options['imagePreviewUpscale']);\n\t\tthis.setImagePreviewResizeMode(options['imagePreviewResizeMode']);\n\t\tthis.setImagePreviewMimeType(options['imagePreviewMimeType'])\n\t\tthis.setImagePreviewMimeTypeMode(options['imagePreviewMimeTypeMode']);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (isResizableImage(file.getBinary()))\n\t\t\t{\n\t\t\t\tresizeImage(file.getBinary(), this.#getResizeImageOptions())\n\t\t\t\t\t.then(({ preview, width, height }) => {\n\t\t\t\t\t\tfile.setClientPreview(preview, width, height);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.log('Uploader: image resize error', error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t}\n\t\t\telse if (isVideo(file.getBinary()) && !Browser.isSafari())\n\t\t\t{\n\t\t\t\tcreateVideoPreview(file.getBinary(), this.#getResizeImageOptions())\n\t\t\t\t\t.then(({ preview, width, height }) => {\n\t\t\t\t\t\tfile.setClientPreview(preview, width, height);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.log('Uploader: video preview error', error);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetImagePreviewWidth(): number\n\t{\n\t\treturn this.#imagePreviewWidth;\n\t}\n\n\tsetImagePreviewWidth(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imagePreviewWidth = value;\n\t\t}\n\t}\n\n\tgetImagePreviewHeight(): number\n\t{\n\t\treturn this.#imagePreviewHeight;\n\t}\n\n\tsetImagePreviewHeight(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value > 0)\n\t\t{\n\t\t\tthis.#imagePreviewHeight = value;\n\t\t}\n\t}\n\n\tgetImagePreviewQuality(): number\n\t{\n\t\treturn this.#imagePreviewQuality;\n\t}\n\n\tsetImagePreviewQuality(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value > 0.1 && value <= 1)\n\t\t{\n\t\t\tthis.#imagePreviewQuality = value;\n\t\t}\n\t}\n\n\tgetImagePreviewUpscale(): boolean\n\t{\n\t\treturn this.#imagePreviewUpscale;\n\t}\n\n\tsetImagePreviewUpscale(value: boolean)\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis.#imagePreviewUpscale = value;\n\t\t}\n\t}\n\n\tgetImagePreviewResizeMode(): ResizeImageMode\n\t{\n\t\treturn this.#imagePreviewResizeMode;\n\t}\n\n\tsetImagePreviewResizeMode(value: ResizeImageMode)\n\t{\n\t\tif (['contain', 'force', 'cover'].includes(value))\n\t\t{\n\t\t\tthis.#imagePreviewResizeMode = value;\n\t\t}\n\t}\n\n\tgetImagePreviewMimeType(): ResizeImageMimeType\n\t{\n\t\treturn this.#imagePreviewMimeType;\n\t}\n\n\tsetImagePreviewMimeType(value: ResizeImageMimeType)\n\t{\n\t\tif (['image/jpeg', 'image/png', 'image/webp'].includes(value))\n\t\t{\n\t\t\tthis.#imagePreviewMimeType = value;\n\t\t}\n\t}\n\n\tgetImagePreviewMimeTypeMode(): ResizeImageMimeTypeMode\n\t{\n\t\treturn this.#imagePreviewMimeTypeMode;\n\t}\n\n\tsetImagePreviewMimeTypeMode(value: ResizeImageMimeTypeMode)\n\t{\n\t\tif (['auto', 'force'].includes(value))\n\t\t{\n\t\t\tthis.#imagePreviewMimeTypeMode = value;\n\t\t}\n\t}\n\n\t#getResizeImageOptions(): ResizeImageOptions\n\t{\n\t\treturn {\n\t\t\twidth: this.getImagePreviewWidth(),\n\t\t\theight: this.getImagePreviewHeight(),\n\t\t\tmode: this.getImagePreviewResizeMode(),\n\t\t\tupscale: this.getImagePreviewUpscale(),\n\t\t\tquality: this.getImagePreviewQuality(),\n\t\t\tmimeType: this.getImagePreviewMimeType(),\n\t\t\tmimeTypeMode: this.getImagePreviewMimeTypeMode(),\n\t\t};\n\t}\n}\n","import { Type } from 'main.core';\nimport Filter from './filter';\n\nimport isResizableImage from '../helpers/is-resizable-image';\nimport resizeImage from '../helpers/resize-image';\n\nimport type Uploader from '../uploader';\nimport type UploaderFile from '../uploader-file';\nimport type {\n\tResizeImageOptions,\n\tResizeImageMimeTypeMode,\n\tResizeImageMimeType,\n\tResizeImageMode,\n} from '../types/resize-image-options';\n\nexport default class ImageResizeFilter extends Filter\n{\n\t#resizeWidth: number = null;\n\t#resizeHeight: number = null;\n\t#resizeMethod: ResizeImageMode = 'contain';\n\t#resizeMimeType: ResizeImageMimeType = 'image/jpeg';\n\t#resizeMimeTypeMode: ResizeImageMimeTypeMode = 'auto';\n\t#resizeQuality: number = 0.92;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\tthis.setResizeWidth(options['imageResizeWidth'])\n\t\tthis.setResizeHeight(options['imageResizeHeight'])\n\t\tthis.setResizeMode(options['imageResizeMode']);\n\t\tthis.setResizeMimeType(options['imageResizeMimeType']);\n\t\tthis.setResizeMimeTypeMode(options['imageResizeMimeTypeMode']);\n\t\tthis.setResizeQuality(options['imageResizeQuality']);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (this.getResizeWidth() === null && this.getResizeHeight() === null)\n\t\t\t{\n\t\t\t\treturn resolve();\n\t\t\t}\n\n\t\t\tif (!isResizableImage(file.getBinary()))\n\t\t\t{\n\t\t\t\treturn resolve();\n\t\t\t}\n\n\t\t\tconst options: ResizeImageOptions = {\n\t\t\t\twidth: this.getResizeWidth(),\n\t\t\t\theight: this.getResizeHeight(),\n\t\t\t\tmode: this.getResizeMode(),\n\t\t\t\tquality: this.getResizeQuality(),\n\t\t\t\tmimeType: this.getResizeMimeType(),\n\t\t\t\tmimeTypeMode: this.getResizeMimeTypeMode(),\n\t\t\t};\n\n\t\t\tresizeImage(file.getBinary(), options)\n\t\t\t\t.then(({ preview, width, height }) => {\n\t\t\t\t\tfile.setWidth(width);\n\t\t\t\t\tfile.setHeight(height);\n\t\t\t\t\tfile.setFile(preview);\n\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (error)\n\t\t\t\t\t{\n\t\t\t\t\t\tconsole.log('image resize error', error);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n\n\tgetResizeWidth(): ?number\n\t{\n\t\treturn this.#resizeWidth;\n\t}\n\n\tsetResizeWidth(value: ?number)\n\t{\n\t\tif ((Type.isNumber(value) && value > 0) || Type.isNull(value))\n\t\t{\n\t\t\tthis.#resizeWidth = value;\n\t\t}\n\t}\n\n\tgetResizeHeight(): ?number\n\t{\n\t\treturn this.#resizeHeight;\n\t}\n\n\tsetResizeHeight(value: ?number)\n\t{\n\t\tif ((Type.isNumber(value) && value > 0) || Type.isNull(value))\n\t\t{\n\t\t\tthis.#resizeHeight = value;\n\t\t}\n\t}\n\n\tgetResizeMode(): ResizeImageMode\n\t{\n\t\treturn this.#resizeMethod;\n\t}\n\n\tsetResizeMode(value): ResizeImageMode\n\t{\n\t\tif (['contain', 'force', 'cover'].includes(value))\n\t\t{\n\t\t\tthis.#resizeMethod = value;\n\t\t}\n\t}\n\n\tgetResizeMimeType(): ResizeImageMimeType\n\t{\n\t\treturn this.#resizeMimeType;\n\t}\n\n\tsetResizeMimeType(value): ResizeImageMimeType\n\t{\n\t\tif (['image/jpeg', 'image/png', 'image/webp'].includes(value))\n\t\t{\n\t\t\tthis.#resizeMimeType = value;\n\t\t}\n\t}\n\n\tgetResizeMimeTypeMode(): ResizeImageMimeTypeMode\n\t{\n\t\treturn this.#resizeMimeTypeMode;\n\t}\n\n\tsetResizeMimeTypeMode(value): ResizeImageMimeTypeMode\n\t{\n\t\tif (['auto', 'force'].includes(value))\n\t\t{\n\t\t\tthis.#resizeMimeTypeMode = value;\n\t\t}\n\t}\n\n\tgetResizeQuality(): number\n\t{\n\t\treturn this.#resizeQuality;\n\t}\n\n\tsetResizeQuality(value: number)\n\t{\n\t\tif (Type.isNumber(value) && value > 0.1 && value <= 1)\n\t\t{\n\t\t\tthis.#resizeQuality = value;\n\t\t}\n\t}\n}\n","export const UploaderStatus = {\n\tSTARTED: 0,\n\tSTOPPED: 1,\n};","export const UploaderEvent = {\n\tUPLOAD_START: 'onUploadStart',\n\tUPLOAD_COMPLETE: 'onUploadComplete',\n\tERROR: 'onError',\n\tMAX_FILE_COUNT_EXCEEDED: 'onMaxFileCountExceeded',\n\tDESTROY: 'onDestroy',\n\tBEFORE_BROWSE: 'onBeforeBrowse',\n\tBEFORE_DROP: 'onBeforeDrop',\n\tBEFORE_PASTE: 'onBeforePaste',\n\tFILE_BEFORE_ADD: 'File:onBeforeAdd',\n\tFILE_ADD_START: 'File:onAddStart',\n\tFILE_LOAD_START: 'File:onLoadStart',\n\tFILE_LOAD_PROGRESS: 'File:onLoadProgress',\n\tFILE_LOAD_COMPLETE: 'File:onLoadComplete',\n\tFILE_ERROR: 'File:onError',\n\tFILE_ADD: 'File:onAdd',\n\tFILE_REMOVE: 'File:onRemove',\n\tFILE_UPLOAD_START: 'File:onUploadStart',\n\tFILE_UPLOAD_PROGRESS: 'File:onUploadProgress',\n\tFILE_UPLOAD_COMPLETE: 'File:onUploadComplete',\n\tFILE_COMPLETE: 'File:onComplete',\n\tFILE_STATUS_CHANGE: 'File:onStatusChange',\n\tFILE_STATE_CHANGE: 'File:onStateChange',\n};","export const FilterType = {\n\tVALIDATION: 'validation',\n\tPREPARATION: 'preparation',\n};","const getFilesFromDataTransfer = (dataTransfer: DataTransfer) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!dataTransfer.items)\n\t\t{\n\t\t\tresolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = Array.from(dataTransfer.items)\n\t\t\t.filter(item => isFileSystemItem(item))\n\t\t\t.map(item => getFilesFromItem(item))\n\t\t;\n\n\t\tPromise.all(items)\n\t\t\t.then((fileGroups: Array<File[]>) => {\n\t\t\t\tconst files = [];\n\t\t\t\tfileGroups.forEach((group: File[]) => {\n\t\t\t\t\tfiles.push.apply(files, group);\n\t\t\t\t});\n\n\t\t\t\tresolve(files);\n\t\t\t})\n\t\t\t.catch(reject)\n\t\t;\n\t});\n};\n\nexport default getFilesFromDataTransfer;\n\nconst isFileSystemItem = (item: DataTransferItem) => {\n\tif ('webkitGetAsEntry' in item)\n\t{\n\t\tconst entry = item.webkitGetAsEntry();\n\t\tif (entry)\n\t\t{\n\t\t\treturn entry.isFile || entry.isDirectory;\n\t\t}\n\t}\n\n\treturn item.kind === 'file';\n};\n\nconst getFilesFromItem = (item: DataTransferItem) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (isDirectoryEntry(item))\n\t\t{\n\t\t\tgetFilesInDirectory(getAsEntry(item))\n\t\t\t\t.then(resolve)\n\t\t\t\t.catch(reject)\n\t\t\t;\n\n\t\t\treturn;\n\t\t}\n\n\t\tresolve([item.getAsFile()]);\n\t});\n};\n\nconst getFilesInDirectory = entry => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst files = [];\n\t\tlet dirCounter = 0;\n\t\tlet fileCounter = 0;\n\n\t\tconst resolveIfDone = () => {\n\t\t\tif (fileCounter === 0 && dirCounter === 0)\n\t\t\t{\n\t\t\t\tresolve(files);\n\t\t\t}\n\t\t};\n\n\t\tconst readEntries = dirEntry => {\n\t\t\tdirCounter++;\n\t\t\tconst directoryReader = dirEntry.createReader();\n\t\t\tconst readBatch = () => {\n\t\t\t\tdirectoryReader.readEntries(entries => {\n\t\t\t\t\tif (entries.length === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdirCounter--;\n\t\t\t\t\t\tresolveIfDone();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.forEach(entry => {\n\t\t\t\t\t\tif (entry.isDirectory)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadEntries(entry);\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\tfileCounter++;\n\t\t\t\t\t\t\tentry.file(file => {\n\t\t\t\t\t\t\t\tfiles.push(file);\n\t\t\t\t\t\t\t\tfileCounter--;\n\t\t\t\t\t\t\t\tresolveIfDone();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treadBatch();\n\t\t\t\t}, reject);\n\t\t\t};\n\n\t\t\treadBatch();\n\t\t};\n\n\t\treadEntries(entry);\n\t});\n};\n\nconst isDirectoryEntry = item => isEntry(item) && (getAsEntry(item) || {}).isDirectory;\nconst isEntry = item => 'webkitGetAsEntry' in item;\nconst getAsEntry = item => item.webkitGetAsEntry();","let result = null;\n\nconst canAppendFileToForm = () => {\n\tif (result === null)\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst dataTransfer = new DataTransfer();\n\t\t\tconst file = new File(['hello'], 'my.txt');\n\t\t\tdataTransfer.items.add(file);\n\n\t\t\tconst input = document.createElement('input');\n\t\t\tinput.setAttribute('type', 'file');\n\t\t\tinput.files = dataTransfer.files;\n\n\t\t\tresult = input.files.length === 1;\n\t\t}\n\t\tcatch (err)\n\t\t{\n\t\t\tresult = false;\n\t\t}\n\t}\n\n\treturn result;\n};\n\nexport default canAppendFileToForm;","import { Type } from 'main.core';\n\nconst assignFileToInput = (input: HTMLInputElement, file: File | File[]) => {\n\ttry\n\t{\n\t\tconst dataTransfer = new DataTransfer();\n\t\tconst files = Type.isArray(file) ? file : [file];\n\n\t\tfiles.forEach(file => {\n\t\t\tdataTransfer.items.add(file);\n\t\t});\n\n\t\tinput.files = dataTransfer.files;\n\t}\n\tcatch (error)\n\t{\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nexport default assignFileToInput;","import { Type, Event, Reflection, Dom, Extension } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\nimport UploaderFile from './uploader-file';\nimport UploaderError from './uploader-error';\nimport Server from './backend/server';\n\nimport Filter from './filters/filter';\nimport FileSizeFilter from './filters/file-size-filter';\nimport FileTypeFilter from './filters/file-type-filter';\nimport ImageSizeFilter from './filters/image-size-filter';\nimport ImagePreviewFilter from './filters/image-preview-filter';\nimport ImageResizeFilter from './filters/image-resize-filter';\n\nimport { UploaderStatus } from './enums/uploader-status';\nimport { UploaderEvent } from './enums/uploader-event';\nimport { FileStatus } from './enums/file-status';\nimport { FileOrigin } from './enums/file-origin';\nimport { FileEvent } from './enums/file-event';\nimport { FilterType } from './enums/filter-type';\n\nimport getFilesFromDataTransfer from './helpers/get-files-from-data-transfer';\nimport canAppendFileToForm from './helpers/can-append-file-to-form';\nimport assignFileToInput from './helpers/assign-file-to-input';\n\nimport type { UploaderOptions } from './types/uploader-options';\nimport type { UploaderFileOptions } from './types/uploader-file-options';\n\nexport default class Uploader extends EventEmitter\n{\n\t#files: UploaderFile[] = [];\n\t#multiple: boolean = false;\n\t#autoUpload: boolean = true;\n\t#allowReplaceSingle: boolean = true;\n\t#maxParallelUploads: number = 2;\n\t#maxParallelLoads: number = 10;\n\t#acceptOnlyImages: boolean = false;\n\t#acceptedFileTypes: string[] = [];\n\t#ignoredFileNames: string[] = ['.ds_store', 'thumbs.db', 'desktop.ini'];\n\t#maxFileCount: ?number = null;\n\t#server: Server = null;\n\n\t#hiddenFields: Map<string, HTMLInputElement> = new Map();\n\t#hiddenFieldsContainer: HTMLElement = null;\n\t#hiddenFieldName: string = 'file';\n\t#assignAsFile: boolean = false;\n\n\t#filters: Map<FilterType, Filter[]> = new Map();\n\t#status: UploaderStatus = UploaderStatus.STOPPED;\n\n\t#onBeforeUploadHandler: Function = null;\n\t#onFileStatusChangeHandler: Function = null;\n\t#onFileStateChangeHandler: Function = null;\n\t#onInputFileChangeHandler: Function = null;\n\t#onPasteHandler: Function = null;\n\t#onDropHandler: Function = null;\n\n\t#browsingNodes: Map<HTMLElement, ?Function> = new Map();\n\t#dropNodes: Set<HTMLElement> = new Set();\n\t#pastingNodes: Set<HTMLElement> = new Set();\n\n\tconstructor(uploaderOptions: UploaderOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader');\n\n\t\tthis.#onBeforeUploadHandler = this.#handleBeforeUpload.bind(this);\n\t\tthis.#onFileStatusChangeHandler = this.#handleFileStatusChange.bind(this);\n\t\tthis.#onFileStateChangeHandler = this.#handleFileStateChange.bind(this);\n\t\tthis.#onInputFileChangeHandler = this.#handleInputFileChange.bind(this);\n\t\tthis.#onPasteHandler = this.#handlePaste.bind(this);\n\t\tthis.#onDropHandler = this.#handleDrop.bind(this);\n\n\t\tconst options = Type.isPlainObject(uploaderOptions) ? Object.assign({}, uploaderOptions) : {};\n\t\tthis.#multiple = Type.isBoolean(options.multiple) ? options.multiple : false;\n\n\t\tconst acceptedFileTypes =\n\t\t\tType.isString(options.acceptedFileTypes) || Type.isArray(options.acceptedFileTypes)\n\t\t\t\t? options.acceptedFileTypes\n\t\t\t\t: Uploader.getGlobalOption('acceptedFileTypes', null)\n\t\t;\n\n\t\tthis.setAcceptedFileTypes(acceptedFileTypes);\n\n\t\tconst acceptOnlyImages =\n\t\t\tType.isBoolean(options.acceptOnlyImages)\n\t\t\t\t? options.acceptOnlyImages\n\t\t\t\t: Uploader.getGlobalOption('acceptOnlyImages', null)\n\t\t;\n\n\t\tthis.setAcceptOnlyImages(acceptOnlyImages);\n\n\t\tconst ignoredFileNames =\n\t\t\tType.isArray(options.ignoredFileNames)\n\t\t\t\t? options.ignoredFileNames\n\t\t\t\t: Uploader.getGlobalOption('ignoredFileNames', null)\n\t\t;\n\t\tthis.setIgnoredFileNames(ignoredFileNames);\n\n\t\tthis.setMaxFileCount(options.maxFileCount);\n\t\tthis.setAllowReplaceSingle(options.allowReplaceSingle);\n\n\t\tthis.assignBrowse(options.browseElement);\n\t\tthis.assignDropzone(options.dropElement);\n\t\tthis.assignPaste(options.pasteElement);\n\n\t\tthis.setHiddenFieldsContainer(options.hiddenFieldsContainer);\n\t\tthis.setHiddenFieldName(options.hiddenFieldName);\n\t\tthis.setAssignAsFile(options.assignAsFile);\n\n\t\tthis.setAutoUpload(options.autoUpload);\n\t\tthis.setMaxParallelUploads(options.maxParallelUploads);\n\t\tthis.setMaxParallelLoads(options.maxParallelLoads);\n\n\t\tlet serverOptions = Type.isPlainObject(options.serverOptions) ? options.serverOptions : {};\n\t\tserverOptions = Object.assign(\n\t\t\t{},\n\t\t\t{ controller: options.controller, controllerOptions: options.controllerOptions },\n\t\t\tserverOptions\n\t\t);\n\n\t\tthis.#server = new Server(serverOptions);\n\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tthis.addFilter(FilterType.VALIDATION, new FileSizeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new FileTypeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new ImageSizeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new ImagePreviewFilter(this, options));\n\t\tthis.addFilter(FilterType.PREPARATION, new ImageResizeFilter(this, options));\n\t\tthis.addFilters(options.filters);\n\n\t\tthis.addFiles(options.files);\n\t}\n\n\tstatic getGlobalOption(path: string, defaultValue: any = null): any\n\t{\n\t\tconst globalOptions = Extension.getSettings('ui.uploader.core');\n\n\t\treturn globalOptions.get(path, defaultValue);\n\t}\n\n\taddFiles(fileList: ArrayLike): void\n\t{\n\t\tif (!Type.isArrayLike(fileList))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst files = Array.from(fileList);\n\t\tif (this.#exceedsMaxFileCount(files))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfiles.forEach(file => {\n\t\t\tif (Type.isArrayFilled(file))\n\t\t\t{\n\t\t\t\tthis.addFile(file[0], file[1]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.addFile(file);\n\t\t\t}\n\t\t});\n\t}\n\n\taddFile(source: File | Blob | string | number, options: UploaderFileOptions)\n\t{\n\t\tconst file = new UploaderFile(source, options);\n\n\t\tif (this.getIgnoredFileNames().includes(file.getName().toLowerCase()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#exceedsMaxFileCount([file]))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.isMultiple() && this.shouldReplaceSingle() && this.#files.length > 0)\n\t\t{\n\t\t\tconst fileToReplace: UploaderFile = this.#files[0];\n\t\t\tthis.removeFile(fileToReplace);\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { file: file } });\n\t\tthis.emit(UploaderEvent.FILE_BEFORE_ADD, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfile.subscribe(FileEvent.STATUS_CHANGE, this.#onFileStatusChangeHandler);\n\t\tfile.subscribe(FileEvent.STATE_CHANGE, this.#onFileStateChangeHandler);\n\n\t\tthis.#setUploadEvents(file);\n\t\tthis.#setLoadEvents(file);\n\t\tthis.#setRemoveEvents(file);\n\n\t\tif (file.getOrigin() === FileOrigin.SERVER)\n\t\t{\n\t\t\tfile.setLoadController(this.getServer().createLoadController());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfile.setLoadController(this.getServer().createClientLoadController());\n\t\t}\n\n\t\tif (file.getOrigin() === FileOrigin.CLIENT)\n\t\t{\n\t\t\tconst uploadController = this.getServer().createUploadController();\n\t\t\tfile.setUploadController(uploadController);\n\t\t}\n\n\t\tfile.setRemoveController(this.getServer().createRemoveController());\n\n\t\tthis.#files.push(file);\n\n\t\tfile.emit(FileEvent.ADD);\n\t\tthis.emit(UploaderEvent.FILE_ADD_START, { file });\n\n\t\tif (file.getOrigin() === FileOrigin.SERVER)\n\t\t{\n\t\t\tfile.load();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#loadNext();\n\t\t}\n\t}\n\n\t#setLoadEvents(file: UploaderFile): void\n\t{\n\t\tfile.subscribeFromOptions({\n\t\t\t[FileEvent.LOAD_START]: () => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_LOAD_START, { file });\n\t\t\t},\n\t\t\t[FileEvent.LOAD_PROGRESS]: (event: BaseEvent) => {\n\t\t\t\tconst { progress } = event.getData();\n\t\t\t\tthis.emit(UploaderEvent.FILE_LOAD_PROGRESS, { file, progress });\n\t\t\t},\n\t\t\t[FileEvent.LOAD_ERROR]: (event: BaseEvent) => {\n\t\t\t\tconst { error } = event.getData();\n\t\t\t\tthis.emit(UploaderEvent.FILE_ERROR, { file, error });\n\t\t\t\tthis.emit(UploaderEvent.FILE_ADD, { file, error });\n\t\t\t\tthis.#loadNext();\n\t\t\t},\n\t\t\t[FileEvent.LOAD_COMPLETE]: () => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_ADD, { file });\n\t\t\t\tthis.emit(UploaderEvent.FILE_LOAD_COMPLETE, { file });\n\n\t\t\t\tif (file.getOrigin() === FileOrigin.SERVER || !file.isUploadable())\n\t\t\t\t{\n\t\t\t\t\tthis.emit(UploaderEvent.FILE_COMPLETE, { file });\n\t\t\t\t\tthis.#setHiddenField(file);\n\t\t\t\t}\n\t\t\t\telse if (file.isUploadable() && this.shouldAutoUpload())\n\t\t\t\t{\n\t\t\t\t\tfile.upload();\n\t\t\t\t}\n\n\t\t\t\tthis.#loadNext();\n\t\t\t},\n\t\t\t[FileEvent.PREPARE_FILE_ASYNC]: (event: BaseEvent) => {\n\t\t\t\tconst file: UploaderFile  = event.getData().file;\n\t\t\t\treturn (\n\t\t\t\t\tthis.#applyFilters(FilterType.VALIDATION, file)\n\t\t\t\t\t\t.then(() => this.#applyFilters(FilterType.PREPARATION, file))\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\t#setUploadEvents(file: UploaderFile): void\n\t{\n\t\tfile.subscribeFromOptions({\n\t\t\t[FileEvent.BEFORE_UPLOAD]: this.#onBeforeUploadHandler,\n\t\t\t[FileEvent.UPLOAD_START]: () => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_UPLOAD_START, { file });\n\t\t\t},\n\t\t\t[FileEvent.UPLOAD_PROGRESS]: (event: BaseEvent) => {\n\t\t\t\tconst { progress } = event.getData();\n\t\t\t\tthis.emit(UploaderEvent.FILE_UPLOAD_PROGRESS, { file, progress });\n\t\t\t},\n\t\t\t[FileEvent.UPLOAD_ERROR]: (event: BaseEvent) => {\n\t\t\t\tconst { error } = event.getData();\n\t\t\t\tthis.emit(UploaderEvent.FILE_ERROR, { file, error });\n\t\t\t\tthis.#uploadNext();\n\t\t\t},\n\t\t\t[FileEvent.UPLOAD_COMPLETE]: () => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_UPLOAD_COMPLETE, { file });\n\t\t\t\tthis.emit(UploaderEvent.FILE_COMPLETE, { file });\n\t\t\t\tthis.#setHiddenField(file);\n\t\t\t\tthis.#uploadNext();\n\t\t\t},\n\t\t});\n\t}\n\n\t#setRemoveEvents(file: UploaderFile): void\n\t{\n\t\tfile.subscribeOnce(FileEvent.REMOVE_ERROR, (event: BaseEvent) => {\n\t\t\t\tconst { error } = event.getData();\n\t\t\t\tthis.emit(UploaderEvent.FILE_ERROR, { file, error });\n\t\t\t}\n\t\t);\n\n\t\tfile.subscribeOnce(FileEvent.REMOVE_COMPLETE, () => {\n\t\t\tthis.#removeFile(file);\n\t\t});\n\t}\n\n\t#handleBeforeUpload(event: BaseEvent): void\n\t{\n\t\tif (this.getStatus() === UploaderStatus.STOPPED)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t\tthis.start();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getUploadingFileCount() >= this.getMaxParallelUploads())\n\t\t\t{\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\t#handleFileStatusChange(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tthis.emit(UploaderEvent.FILE_STATUS_CHANGE, { file });\n\t}\n\n\t#handleFileStateChange(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tconst property: string = event.getData().property;\n\t\tconst value: any = event.getData().value;\n\n\t\tthis.emit(UploaderEvent.FILE_STATE_CHANGE, { file, property, value });\n\t}\n\n\t#exceedsMaxFileCount(fileList: Array): boolean\n\t{\n\t\tconst totalNewFiles = fileList.length;\n\t\tconst totalFiles = this.#files.length;\n\n\t\tif (!this.isMultiple() && totalNewFiles > 1)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tlet maxFileCount;\n\t\tif (this.isMultiple())\n\t\t{\n\t\t\tmaxFileCount = this.getMaxFileCount();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmaxFileCount = this.shouldReplaceSingle() ? null : 1;\n\t\t}\n\n\t\tif (maxFileCount !== null && totalFiles + totalNewFiles > maxFileCount)\n\t\t{\n\t\t\tconst error = new UploaderError('MAX_FILE_COUNT_EXCEEDED', { maxFileCount });\n\t\t\tthis.emit(UploaderEvent.MAX_FILE_COUNT_EXCEEDED, { error });\n\t\t\tthis.emit(UploaderEvent.ERROR, { error });\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#applyFilters(type: FilterType, ...args): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst filters = [...(this.#filters.get(type) || [])];\n\t\t\tif (filters.length === 0)\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstFilter: Filter = filters.shift();\n\n\t\t\t// chain filters\n\t\t\tfilters\n\t\t\t\t.reduce(\n\t\t\t\t\t(current: Promise, next: Filter) => {\n\t\t\t\t\t\treturn current.then(() => next.apply(...args));\n\t\t\t\t\t},\n\t\t\t\t\tfirstFilter.apply(...args)\n\t\t\t\t)\n\t\t\t\t.then((result) => resolve(result))\n\t\t\t\t.catch(error => reject(error))\n\t\t\t;\n\t\t});\n\t}\n\n\tstart(): void\n\t{\n\t\tif (this.getStatus() !== UploaderStatus.STARTED && this.getPendingFileCount() > 0)\n\t\t{\n\t\t\tthis.#status = UploaderStatus.STARTED;\n\t\t\tthis.emit(UploaderEvent.UPLOAD_START);\n\t\t\tthis.#uploadNext();\n\t\t}\n\t}\n\n\t// stop(): void\n\t// {\n\t// \tthis.#status = UploaderStatus.STOPPED;\n\t//\n\t// \tthis.getFiles().forEach((file: UploaderFile) => {\n\t// \t\tif (file.isUploading())\n\t// \t\t{\n\t// \t\t\tfile.abort();\n\t// \t\t\tfile.setStatus(FileStatus.PENDING);\n\t// \t\t}\n\t// \t});\n\t//\n\t// \tthis.emit('onStop');\n\t// }\n\n\tcancel(): void\n\t{\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tfile.remove();\n\t\t});\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.emit(UploaderEvent.DESTROY);\n\n\t\tthis.unassignBrowseAll();\n\t\tthis.unassignDropzoneAll();\n\t\tthis.unassignPasteAll();\n\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tfile.remove();\n\t\t});\n\n\t\tthis.#resetHiddenFields();\n\n\t\tthis.#files = [];\n\t\tthis.#server = null;\n\t\tthis.#acceptedFileTypes = null;\n\t\tthis.#ignoredFileNames = null;\n\t\tthis.#filters = null;\n\n\t\tObject.setPrototypeOf(this, null);\n\t}\n\n\tremoveFile(file: UploaderFile | string): void\n\t{\n\t\tif (Type.isString(file))\n\t\t{\n\t\t\tfile = this.getFile(file);\n\t\t}\n\n\t\tconst index = this.#files.findIndex(element => element === file);\n\t\tif (index === -1)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfile.remove();\n\t}\n\n\t#removeFile(file: UploaderFile)\n\t{\n\t\tconst index = this.#files.findIndex(element => element === file);\n\t\tif (index !== -1)\n\t\t{\n\t\t\tthis.#files.splice(index, 1);\n\t\t}\n\n\t\tfile.unsubscribeAll();\n\n\t\tthis.emit(UploaderEvent.FILE_REMOVE, { file });\n\t\tthis.#resetHiddenField(file);\n\t}\n\n\tgetFile(id: string): ?UploaderFile\n\t{\n\t\treturn this.#files.find((file: UploaderFile) => file.getId() === id) || null;\n\t}\n\n\tgetFiles(): UploaderFile[]\n\t{\n\t\treturn Array.from(this.#files);\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.#multiple;\n\t}\n\n\tgetStatus(): UploaderStatus\n\t{\n\t\treturn this.#status;\n\t}\n\n\taddFilter(type: FilterType, filter: Filter | Function | string, filterOptions: { [key: string]: any } = {}): void\n\t{\n\t\tif (Type.isFunction(filter) || Type.isString(filter))\n\t\t{\n\t\t\tconst className = Type.isString(filter) ? Reflection.getClass(filter) : filter;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tfilter = new className(this, filterOptions);\n\t\t\t}\n\t\t}\n\n\t\tif (filter instanceof Filter)\n\t\t{\n\t\t\tlet filters = this.#filters.get(type);\n\t\t\tif (!Type.isArray(filters))\n\t\t\t{\n\t\t\t\tfilters = [];\n\t\t\t\tthis.#filters.set(type, filters);\n\t\t\t}\n\n\t\t\tfilters.push(filter);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error('Uploader: a filter must be an instance of FileUploader.Filter.');\n\t\t}\n\t}\n\n\taddFilters(filters: Array): void\n\t{\n\t\tif (Type.isArray(filters))\n\t\t{\n\t\t\tfilters.forEach(filter => {\n\t\t\t\tif (Type.isPlainObject(filter))\n\t\t\t\t{\n\t\t\t\t\tthis.addFilter(filter.type, filter.filter, filter.options);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.#server;\n\t}\n\n\tassignBrowse(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement | HTMLInputElement) => {\n\t\t\tif (!Type.isElementNode(node) || this.#browsingNodes.has(node))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet input: HTMLInputElement;\n\t\t\tif (node.tagName === 'INPUT' && node.type === 'file')\n\t\t\t{\n\t\t\t\tinput = node;\n\n\t\t\t\t// Add already selected files\n\t\t\t\tif (input.files && input.files.length)\n\t\t\t\t{\n\t\t\t\t\tthis.addFiles(input.files);\n\t\t\t\t}\n\n\t\t\t\tconst acceptAttr = input.getAttribute('accept');\n\t\t\t\tif (Type.isStringFilled(acceptAttr))\n\t\t\t\t{\n\t\t\t\t\tthis.setAcceptedFileTypes(acceptAttr);\n\t\t\t\t}\n\n\t\t\t\tthis.#browsingNodes.set(node, null);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tinput = document.createElement('input');\n\t\t\t\tinput.setAttribute('type', 'file');\n\n\t\t\t\tconst onBrowseClickHandler = this.#handleBrowseClick.bind(this, input, node);\n\t\t\t\tthis.#browsingNodes.set(node, onBrowseClickHandler);\n\t\t\t\tEvent.bind(node, 'click', onBrowseClickHandler);\n\t\t\t}\n\n\t\t\tif (this.isMultiple())\n\t\t\t{\n\t\t\t\tinput.setAttribute('multiple', 'multiple');\n\t\t\t}\n\n\t\t\tif (Type.isArrayFilled(this.getAcceptedFileTypes()))\n\t\t\t{\n\t\t\t\tinput.setAttribute('accept', this.getAcceptedFileTypes().join(','));\n\t\t\t}\n\n\t\t\tEvent.bind(input, 'change', this.#onInputFileChangeHandler);\n\t\t});\n\t}\n\n\t#handleBrowseClick(input: HTMLInputElement, node: HTMLElement): void\n\t{\n\t\tconst event = new BaseEvent({ data: { input, node } });\n\t\tthis.emit(UploaderEvent.BEFORE_BROWSE, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tinput.click();\n\t}\n\n\t#handleInputFileChange(event: Event): void\n\t{\n\t\tconst input = event.currentTarget;\n\n\t\tthis.addFiles(Array.from(input.files));\n\n\t\t// reset file input\n\t\tinput.value = '';\n\t}\n\n\tunassignBrowse(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement | HTMLInputElement) => {\n\t\t\tif (this.#browsingNodes.has(node))\n\t\t\t{\n\t\t\t\tEvent.unbind(node, 'click', this.#browsingNodes.get(node));\n\t\t\t\tEvent.unbind(node, 'change', this.#onInputFileChangeHandler);\n\t\t\t\tthis.#browsingNodes.delete(node);\n\t\t\t}\n\t\t});\n\t}\n\n\tunassignBrowseAll(): void\n\t{\n\t\tArray.from(this.#browsingNodes.keys()).forEach(node => {\n\t\t\tthis.unassignBrowse(node);\n\t\t});\n\t}\n\n\tassignDropzone(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (!Type.isElementNode(node) || this.#dropNodes.has(node))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEvent.bind(node, 'dragover', this.#preventDefault);\n\t\t\tEvent.bind(node, 'dragenter', this.#preventDefault);\n\t\t\tEvent.bind(node, 'drop', this.#onDropHandler);\n\n\t\t\tthis.#dropNodes.add(node);\n\t\t});\n\t}\n\n\t#handleDrop(dragEvent: DragEvent): void\n\t{\n\t\tdragEvent.preventDefault();\n\n\t\tconst event = new BaseEvent({ data: { dragEvent } });\n\t\tthis.emit(UploaderEvent.BEFORE_DROP, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tgetFilesFromDataTransfer(dragEvent.dataTransfer).then((files: File[]) => {\n\t\t\tthis.addFiles(files);\n\t\t});\n\t}\n\n\t#preventDefault(event: DragEvent): void\n\t{\n\t\tevent.preventDefault();\n\t}\n\n\tunassignDropzone(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (this.#dropNodes.has(node))\n\t\t\t{\n\t\t\t\tEvent.unbind(node, 'dragover', this.#preventDefault);\n\t\t\t\tEvent.unbind(node, 'dragenter', this.#preventDefault);\n\t\t\t\tEvent.unbind(node, 'drop', this.#onDropHandler);\n\t\t\t\tthis.#dropNodes.delete(node);\n\t\t\t}\n\t\t});\n\t}\n\n\tunassignDropzoneAll(): void\n\t{\n\t\tArray.from(this.#dropNodes).forEach(node => {\n\t\t\tthis.unassignDropzone(node);\n\t\t});\n\t}\n\n\tassignPaste(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (!Type.isElementNode(node) || this.#pastingNodes.has(node))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEvent.bind(node, 'paste', this.#onPasteHandler);\n\t\t\tthis.#pastingNodes.add(node);\n\t\t});\n\t}\n\n\t#handlePaste(clipboardEvent: ClipboardEvent): void\n\t{\n\t\tclipboardEvent.preventDefault();\n\n\t\tconst clipboardData: DataTransfer = clipboardEvent.clipboardData;\n\t\tif (!clipboardData)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { clipboardEvent } });\n\t\tthis.emit(UploaderEvent.BEFORE_PASTE, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tgetFilesFromDataTransfer(clipboardData).then((files: File[]) => {\n\t\t\tthis.addFiles(files);\n\t\t});\n\t}\n\n\tunassignPaste(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (this.#pastingNodes.has(node))\n\t\t\t{\n\t\t\t\tEvent.unbind(node, 'paste', this.#onPasteHandler);\n\t\t\t\tthis.#pastingNodes.delete(node);\n\t\t\t}\n\t\t});\n\t}\n\n\tunassignPasteAll(): void\n\t{\n\t\tArray.from(this.#pastingNodes).forEach(node => {\n\t\t\tthis.unassignPaste(node);\n\t\t});\n\t}\n\n\tgetHiddenFieldsContainer(): ?HTMLElement\n\t{\n\t\tlet element = null;\n\t\tif (Type.isStringFilled(this.#hiddenFieldsContainer))\n\t\t{\n\t\t\telement = document.querySelector(this.#hiddenFieldsContainer);\n\t\t\tif (!Type.isElementNode(element))\n\t\t\t{\n\t\t\t\tconsole.error(`Uploader: a hidden field container was not found (${this.#hiddenFieldsContainer}).`);\n\t\t\t}\n\t\t}\n\t\telse if (Type.isElementNode(this.#hiddenFieldsContainer))\n\t\t{\n\t\t\telement = this.#hiddenFieldsContainer;\n\t\t}\n\n\t\treturn element;\n\t}\n\n\tsetHiddenFieldsContainer(container: string | HTMLElement): void\n\t{\n\t\tif (Type.isStringFilled(container) || Type.isElementNode(container) || Type.isNull(container))\n\t\t{\n\t\t\tthis.#hiddenFieldsContainer = container;\n\t\t}\n\t}\n\n\tgetHiddenFieldName(): string\n\t{\n\t\treturn this.#hiddenFieldName;\n\t}\n\n\tsetHiddenFieldName(name: string)\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.#hiddenFieldName = name;\n\t\t}\n\t}\n\n\tshouldAssignAsFile(): boolean\n\t{\n\t\treturn this.#assignAsFile;\n\t}\n\n\tsetAssignAsFile(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#assignAsFile = flag;\n\t\t}\n\t}\n\n\tgetTotalSize(): number\n\t{\n\t\treturn this.#files.reduce((totalSize: number, file: UploaderFile) => {\n\t\t\treturn totalSize + file.getSize();\n\t\t}, 0);\n\t}\n\n\tshouldAutoUpload(): boolean\n\t{\n\t\treturn this.#autoUpload;\n\t}\n\n\tsetAutoUpload(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#autoUpload = flag;\n\t\t}\n\t}\n\n\tgetMaxParallelUploads(): number\n\t{\n\t\treturn this.#maxParallelUploads;\n\t}\n\n\tsetMaxParallelUploads(number: number): void\n\t{\n\t\tif (Type.isNumber(number) && number > 0)\n\t\t{\n\t\t\tthis.#maxParallelUploads = number;\n\t\t}\n\t}\n\n\tgetMaxParallelLoads(): number\n\t{\n\t\treturn this.#maxParallelLoads;\n\t}\n\n\tsetMaxParallelLoads(number: number): void\n\t{\n\t\tif (Type.isNumber(number) && number > 0)\n\t\t{\n\t\t\tthis.#maxParallelLoads = number;\n\t\t}\n\t}\n\n\tgetUploadingFileCount(): number\n\t{\n\t\treturn this.#files.filter(file => file.isUploading()).length;\n\t}\n\n\tgetPendingFileCount(): number\n\t{\n\t\treturn this.#files.filter(file => file.isReadyToUpload()).length;\n\t}\n\n\tstatic getImageExtensions(): Array<string>\n\t{\n\t\treturn this.getGlobalOption(\n\t\t\t'imageExtensions',\n\t\t\t['.jpg', '.bmp', '.jpeg', '.jpe', '.gif', '.png', '.webp']\n\t\t);\n\t}\n\n\tsetAcceptOnlyImages(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.acceptOnlyImages(flag);\n\t\t}\n\t}\n\n\tacceptOnlyImages(flag: boolean = true): void\n\t{\n\t\tconst imageExtensions = flag ? Uploader.getImageExtensions() : [];\n\t\tthis.setAcceptedFileTypes(imageExtensions);\n\t\tthis.#acceptOnlyImages = flag;\n\t}\n\n\tshouldAcceptOnlyImages(): boolean\n\t{\n\t\treturn this.#acceptOnlyImages;\n\t}\n\n\tgetAcceptedFileTypes(): string[]\n\t{\n\t\treturn this.#acceptedFileTypes;\n\t}\n\n\tsetAcceptedFileTypes(fileTypes: string | string[]): void\n\t{\n\t\tif (Type.isString(fileTypes))\n\t\t{\n\t\t\tfileTypes = fileTypes.split(',');\n\t\t}\n\n\t\tif (Type.isArray(fileTypes))\n\t\t{\n\t\t\tthis.#acceptedFileTypes = [];\n\t\t\tthis.#acceptOnlyImages = false;\n\n\t\t\tfileTypes.forEach(type => {\n\t\t\t\tif (Type.isStringFilled(type))\n\t\t\t\t{\n\t\t\t\t\tthis.#acceptedFileTypes.push(type);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetIgnoredFileNames(): string[]\n\t{\n\t\treturn this.#ignoredFileNames;\n\t}\n\n\tsetIgnoredFileNames(fileNames: string[]): void\n\t{\n\t\tif (Type.isArray(fileNames))\n\t\t{\n\t\t\tthis.#ignoredFileNames = [];\n\n\t\t\tfileNames.forEach(fileName => {\n\t\t\t\tif (Type.isStringFilled(fileName))\n\t\t\t\t{\n\t\t\t\t\tthis.#ignoredFileNames.push(fileName.toLowerCase());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tsetMaxFileCount(maxFileCount: ?number): void\n\t{\n\t\tif ((Type.isNumber(maxFileCount) && maxFileCount > 0) || maxFileCount === null)\n\t\t{\n\t\t\tthis.#maxFileCount = maxFileCount;\n\t\t}\n\t}\n\n\tgetMaxFileCount(): ?number\n\t{\n\t\treturn this.#maxFileCount;\n\t}\n\n\tsetAllowReplaceSingle(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#allowReplaceSingle = flag;\n\t\t}\n\t}\n\n\tshouldReplaceSingle(): boolean\n\t{\n\t\treturn this.#allowReplaceSingle;\n\t}\n\n\t#uploadNext(): void\n\t{\n\t\tif (this.getStatus() !== UploaderStatus.STARTED)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxParallelUploads = this.getMaxParallelUploads();\n\t\tconst currentUploads = this.getUploadingFileCount();\n\t\tconst pendingFiles: Array<UploaderFile> = this.#files.filter(file => file.isReadyToUpload());\n\t\tconst pendingUploads = pendingFiles.length;\n\n\t\tif (currentUploads < maxParallelUploads)\n\t\t{\n\t\t\tconst limit = Math.min(maxParallelUploads - currentUploads, pendingFiles.length);\n\t\t\tfor (let i = 0; i < limit; i++)\n\t\t\t{\n\t\t\t\tconst pendingFile = pendingFiles[i];\n\t\t\t\tpendingFile.upload();\n\t\t\t}\n\t\t}\n\n\t\t// All files are COMPLETE or FAILED\n\t\tif (currentUploads === 0 && pendingUploads === 0)\n\t\t{\n\t\t\tthis.#status = UploaderStatus.STOPPED;\n\t\t\tthis.emit(UploaderEvent.UPLOAD_COMPLETE);\n\t\t}\n\t}\n\n\t#loadNext(): void\n\t{\n\t\tconst maxParallelLoads = this.getMaxParallelLoads();\n\t\tconst currentLoads = this.#files.filter(file => file.isLoading()).length;\n\t\tconst pendingFiles = this.#files.filter(file => {\n\t\t\treturn file.getStatus() === FileStatus.ADDED && file.getOrigin() === FileOrigin.CLIENT;\n\t\t});\n\n\t\tif (currentLoads < maxParallelLoads)\n\t\t{\n\t\t\tconst limit = Math.min(maxParallelLoads - currentLoads, pendingFiles.length);\n\t\t\tfor (let i = 0; i < limit; i++)\n\t\t\t{\n\t\t\t\tconst pendingFile = pendingFiles[i];\n\t\t\t\tpendingFile.load();\n\t\t\t}\n\t\t}\n\t}\n\n\t#setHiddenField(file: UploaderFile): void\n\t{\n\t\tconst container = this.getHiddenFieldsContainer();\n\t\tif (!container || this.#hiddenFields.has(file.getId()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO: is it needed?\n\t\tconst isExistingServerFile = Type.isNumber(file.getServerId());\n\t\tif (isExistingServerFile)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst assignAsFile =\n\t\t\tfile.getOrigin() === FileOrigin.CLIENT\n\t\t\t&& !file.isUploadable()\n\t\t\t&& this.shouldAssignAsFile()\n\t\t\t&& canAppendFileToForm()\n\t\t;\n\n\t\tconst input = document.createElement('input');\n\t\tinput.type = assignAsFile ? 'file' : 'hidden';\n\t\tinput.name = this.getHiddenFieldName() + (this.isMultiple() ? '[]' : '');\n\n\t\tif (assignAsFile)\n\t\t{\n\t\t\tDom.style(input, {\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tposition: 'absolute',\n\t\t\t\t'pointer-events': 'none',\n\t\t\t});\n\n\t\t\tassignFileToInput(input, file.getBinary());\n\t\t}\n\t\telse if (file.getServerId() !== null)\n\t\t{\n\t\t\tinput.value = file.getServerId();\n\t\t}\n\n\t\tDom.append(input, container);\n\t\tthis.#hiddenFields.set(file.getId(), input);\n\n\t\tthis.#syncInputPositions();\n\t}\n\n\t#resetHiddenField(file: UploaderFile): void\n\t{\n\t\tconst input = this.#hiddenFields.get(file.getId());\n\t\tif (input)\n\t\t{\n\t\t\tDom.remove(input);\n\t\t\tthis.#hiddenFields.delete(file.getId());\n\t\t}\n\t}\n\n\t#resetHiddenFields(): void\n\t{\n\t\tArray.from(this.#hiddenFields.values()).forEach(input => {\n\t\t\tDom.remove(input);\n\t\t})\n\n\t\tthis.#hiddenFields = [];\n\t}\n\n\t#syncInputPositions(): void\n\t{\n\t\tconst container = this.getHiddenFieldsContainer();\n\t\tif (!container)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tconst input = this.#hiddenFields.get(file.getId());\n\t\t\tif (input)\n\t\t\t{\n\t\t\t\tDom.append(input, container);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Type } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\nimport { Uploader, UploaderOptions } from 'ui.uploader.core';\nimport { ref, shallowRef, VueRefValue } from 'ui.vue3';\n\n/**\n * @memberof BX.UI.Uploader\n */\nexport default class VueUploaderAdapter extends EventEmitter\n{\n\t#uploader: Uploader = null;\n\t#items: VueRefValue<Array> = null;\n\t#uploaderError = null;\n\n\tconstructor(uploaderOptions: UploaderOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.Vue.Adapter');\n\n\t\tthis.#items = ref([]);\n\t\tthis.#uploaderError = shallowRef(null);\n\n\t\tconst options = Type.isPlainObject(uploaderOptions) ? Object.assign({}, uploaderOptions) : {};\n\t\tconst userEvents = options.events;\n\t\toptions.events = {\n\t\t\t'File:onAddStart': this.#handleFileAdd.bind(this),\n\t\t\t'File:onRemove': this.#handleFileRemove.bind(this),\n\t\t\t'File:onStateChange': this.#handleFileStateChange.bind(this),\n\t\t\t'onError': this.#handleError.bind(this),\n\t\t\t'onUploadStart': this.#handleUploadStart.bind(this),\n\t\t\t'onUploadComplete': this.#handleUploadComplete.bind(this),\n\t\t};\n\n\t\tthis.#uploader = new Uploader(options);\n\t\tthis.#uploader.subscribeFromOptions(userEvents);\n\t}\n\n\tgetUploader(): Uploader\n\t{\n\t\treturn this.#uploader;\n\t}\n\n\tgetItems(): VueRefValue<Array>\n\t{\n\t\treturn this.#items;\n\t}\n\n\tgetUploaderError(): VueRefValue<Object>\n\t{\n\t\treturn this.#uploaderError;\n\t}\n\n\t#getItemsArray(): Array\n\t{\n\t\treturn this.#items.value;\n\t}\n\n\t#getItem(id): { [key: string]: any }\n\t{\n\t\treturn this.#getItemsArray().find(item => item.id === id);\n\t}\n\n\t#handleFileAdd(event: BaseEvent): void\n\t{\n\t\tconst { file } = event.getData();\n\t\tconst item = file.getState();\n\t\tthis.#getItemsArray().push(item);\n\n\t\tthis.emit('Item:onAdd', { item });\n\t}\n\n\t#handleFileRemove(event: BaseEvent): void\n\t{\n\t\tconst { file } = event.getData();\n\n\t\tconst position = this.#getItemsArray().findIndex(fileInfo => fileInfo.id === file.getId());\n\t\tif (position >= 0)\n\t\t{\n\t\t\tconst result = this.#getItemsArray().splice(position, 1);\n\t\t\tthis.emit('Item:onRemove', { item: result[0] });\n\t\t}\n\t}\n\n\t#handleFileStateChange(event: BaseEvent): void\n\t{\n\t\tconst { file } = event.getData();\n\t\tconst item = this.#getItem(file.getId());\n\t\tif (item)\n\t\t{\n\t\t\tObject.assign(item, file.getState());\n\t\t}\n\t}\n\n\t#handleError(event: BaseEvent): void\n\t{\n\t\tconst { error } = event.getData();\n\t\tthis.#uploaderError.value = error.toJSON();\n\n\t\tthis.emit('Uploader:onError', event);\n\t}\n\n\t#handleUploadStart(event: BaseEvent): void\n\t{\n\t\tthis.emit('Uploader:onUploadStart', event);\n\t}\n\n\t#handleUploadComplete(event: BaseEvent): void\n\t{\n\t\tthis.emit('Uploader:onUploadComplete', event);\n\t}\n}\n","import { Type } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\nimport type { UploaderOptions, Uploader } from 'ui.uploader.core';\nimport { BitrixVue, VueCreateAppResult } from 'ui.vue3';\n\nimport VueUploaderAdapter from './vue-uploader-adapter';\n\n/**\n * @memberof BX.UI.Uploader\n */\nexport default class VueUploaderWidget extends EventEmitter\n{\n\t#vueAdapter: VueUploaderAdapter = null;\n\t#uploaderOptions: UploaderOptions = null;\n\t#widgetOptions = {};\n\t#vueApp = null;\n\n\tconstructor(uploaderOptions: UploaderOptions, widgetOptions: {[key: string]: any} = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.Vue.Widget');\n\n\t\tthis.#uploaderOptions = uploaderOptions;\n\t\tthis.#widgetOptions = widgetOptions;\n\t}\n\n\tgetRootComponent(): ?Function\n\t{\n\t\treturn null;\n\t}\n\n\tgetAdapter(): VueUploaderAdapter\n\t{\n\t\tif (this.#vueAdapter === null)\n\t\t{\n\t\t\tthis.#vueAdapter = new VueUploaderAdapter(this.#uploaderOptions);\n\t\t}\n\n\t\treturn this.#vueAdapter;\n\t}\n\n\tgetUploader(): Uploader\n\t{\n\t\treturn this.getAdapter().getUploader();\n\t}\n\n\tgetVueApp(): VueCreateAppResult\n\t{\n\t\tif (this.#vueApp !== null)\n\t\t{\n\t\t\treturn this.#vueApp;\n\t\t}\n\n\t\tthis.#vueApp = BitrixVue.createApp(this.getRootComponent(), {\n\t\t\tuploaderOptions: this.#uploaderOptions,\n\t\t\twidgetOptions: this.#widgetOptions,\n\t\t\tuploaderAdapter: this.getAdapter(),\n\t\t});\n\n\t\treturn this.#vueApp;\n\t}\n\n\trenderTo(node: HTMLElement): void\n\t{\n\t\tif (Type.isDomNode(node))\n\t\t{\n\t\t\tthis.getVueApp().mount(node);\n\t\t}\n\t}\n}\n","import { Type } from 'main.core';\nimport VueUploaderAdapter from './vue-uploader-adapter';\n\n/**\n * @memberof BX.UI.Uploader\n */\nexport const VueUploaderComponent = {\n\tname: 'VueUploaderComponent',\n\tprops: {\n\t\tuploaderOptions: {\n\t\t\ttype: Object\n\t\t},\n\t\twidgetOptions: {\n\t\t\ttype: Object,\n\t\t\tdefault: {},\n\t\t},\n\t\tuploaderAdapter: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata: () => ({\n\t\titems: [],\n\t\tuploaderError: null,\n\t}),\n\tprovide() {\n\t\treturn {\n\t\t\tuploader: this.uploader,\n\t\t\tadapter: this.adapter,\n\t\t\twidgetOptions: this.widgetOptions,\n\t\t}\n\t},\n\tbeforeCreate()\n\t{\n\t\tthis.adapter = this.uploaderAdapter === null ? new VueUploaderAdapter(this.uploaderOptions) : this.uploaderAdapter;\n\t\tthis.uploader = this.adapter.getUploader();\n\t},\n\tcreated()\n\t{\n\t\tthis.items = this.adapter.getItems();\n\t\tthis.uploaderError = this.adapter.getUploaderError();\n\t},\n\tunmounted()\n\t{\n\t\tthis.uploader.destroy();\n\t}\n}","const isImage = (blob: Blob) => {\n\treturn /^image\\/[a-z0-9.-]+$/i.test(blob.type);\n};\n\nexport default isImage;","const Marker = {\n\tJPEG: 0xffd8,\n\tAPP1: 0xffe1,\n\tEXIF: 0x45786966,\n\tTIFF: 0x4949,\n\tOrientation: 0x0112,\n\tUnknown: 0xff00\n};\n\nconst getUint16 = (view, offset, little = false) => view.getUint16(offset, little);\nconst getUint32 = (view, offset, little = false) => view.getUint32(offset, little);\n\nconst getJpegOrientation = file => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\t\treader.onload = function(e) {\n\t\t\tconst view = new DataView(e.target.result);\n\t\t\tif (getUint16(view, 0) !== Marker.JPEG)\n\t\t\t{\n\t\t\t\tresolve(-1);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst length = view.byteLength;\n\t\t\tlet offset = 2;\n\n\t\t\twhile (offset < length)\n\t\t\t{\n\t\t\t\tconst marker = getUint16(view, offset);\n\t\t\t\toffset += 2;\n\n\t\t\t\t// APP1 Marker\n\t\t\t\tif (marker === Marker.APP1)\n\t\t\t\t{\n\t\t\t\t\tif (getUint32(view, (offset += 2)) !== Marker.EXIF)\n\t\t\t\t\t{\n\t\t\t\t\t\t// no EXIF\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst little = getUint16(view, (offset += 6)) === Marker.TIFF;\n\t\t\t\t\toffset += getUint32(view, offset + 4, little);\n\n\t\t\t\t\tconst tags = getUint16(view, offset, little);\n\t\t\t\t\toffset += 2;\n\n\t\t\t\t\tfor (let i = 0; i < tags; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Found the orientation tag\n\t\t\t\t\t\tif (getUint16(view, offset + i * 12, little) === Marker.Orientation)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresolve(getUint16(view, offset + i * 12 + 8, little));\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse if ((marker & Marker.Unknown) !== Marker.Unknown)\n\t\t\t\t{\n\t\t\t\t\tbreak; // Invalid\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toffset += getUint16(view, offset);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Nothing found\n\t\t\tresolve(-1);\n\t\t};\n\n\t\treader.readAsArrayBuffer(file.slice(0, 64 * 1024));\n\t});\n};\n\nexport default getJpegOrientation;","const isJpeg = (blob: Blob) => {\n\treturn /^image\\/jpeg$/i.test(blob.type);\n};\n\nexport default isJpeg;"],"names":["FileStatus","INIT","ADDED","LOADING","PENDING","UPLOADING","COMPLETE","LOAD_FAILED","UPLOAD_FAILED","FileOrigin","CLIENT","SERVER","FileEvent","ADD","BEFORE_UPLOAD","UPLOAD_START","UPLOAD_ERROR","UPLOAD_PROGRESS","UPLOAD_COMPLETE","UPLOAD_CONTROLLER_INIT","LOAD_START","LOAD_PROGRESS","LOAD_COMPLETE","LOAD_ERROR","LOAD_CONTROLLER_INIT","REMOVE_ERROR","REMOVE_COMPLETE","REMOVE_CONTROLLER_INIT","STATE_CHANGE","STATUS_CHANGE","PREPARE_FILE_ASYNC","UploaderError","BaseError","constructor","code","args","message","Type","isString","description","customData","isPlainObject","length","replacements","Object","keys","forEach","key","Loc","hasMessage","getMessage","isStringFilled","origin","Origin","type","USER","setDescription","createFromAjaxErrors","errors","isArrayFilled","uploaderError","find","error","system","setOrigin","setType","console","SYSTEM","UNKNOWN","createFromError","name","getDescription","text","getOrigin","values","includes","getType","clone","options","JSON","parse","stringify","toString","getCode","toJSON","getCustomData","AbstractUploadController","EventEmitter","server","setEventNamespace","getServer","getOptions","getOption","option","defaultValue","isUndefined","upload","file","Error","abort","AbstractLoadController","load","AbstractRemoveController","remove","crypto","window","msCrypto","process","require","webcrypto","createUniqueId","replace","c","getRandomValues","Uint8Array","getExtensionFromType","subtype","split","pop","test","counter","createFileFromBlob","blob","fileName","date","Date","getFullYear","getMonth","getDate","extension","File","lastModified","now","lastModifiedDate","exception","slice","size","regexp","isDataUri","str","match","createBlobFromDataUri","dataURI","byteString","atob","mimeString","buffer","ArrayBuffer","view","i","charCodeAt","Blob","getFileExtension","filename","position","lastIndexOf","substring","imageExtensions","isResizableImage","mimeType","isFile","toLowerCase","formatFileSize","base","units","getUnits","isInteger","toFixed","fileSizeUnits","UploaderFile","source","fileOptions","CallbackCollection","isBlob","isNumber","setFile","id","subscribeFromOptions","events","canLoad","emit","callbacks","subscribe","isComplete","isUploadable","isUploadFailed","getError","canUpload","event","BaseEvent","data","isDefaultPrevented","getStatus","isLoading","isUploading","getUploadController","setUploadController","controller","isNull","changed","subscribeOnce","addError","getData","progress","setProgress","fileInfo","setLoadController","emitAsync","then","catch","setRemoveController","isReadyToUpload","isLoadable","isFailed","isLoadFailed","getBinary","getName","setName","setOriginalName","originalName","setSize","setServerId","serverId","setWidth","width","setHeight","height","setClientPreview","clientPreview","clientPreviewWidth","clientPreviewHeight","setServerPreview","serverPreviewUrl","serverPreviewWidth","serverPreviewHeight","setDownloadUrl","downloadUrl","setRemoveUrl","removeUrl","property","value","getOriginalName","getExtension","getSize","getSizeFormatted","getId","getServerId","getDownloadUrl","url","getRemoveUrl","getWidth","getHeight","getPreviewUrl","getClientPreview","getClientPreviewUrl","getServerPreviewUrl","getPreviewWidth","getClientPreviewWidth","getServerPreviewWidth","getPreviewHeight","getClientPreviewHeight","getServerPreviewHeight","revokeClientPreviewUrl","URL","createObjectURL","revokeObjectURL","isImage","getProgress","push","getErrors","getState","status","sizeFormatted","failed","previewUrl","previewWidth","previewHeight","clientPreviewUrl","isFunction","onComplete","getEmitter","onError","eventName","unsubscribeAll","Chunk","offset","getNextRetryDelay","shift","setRetries","retries","isArray","getOffset","UploadController","nextChunk","clearTimeout","getFile","getChunkSize","getChunkOffset","getToken","setToken","token","chunk","totalSize","isOnlyOneChunk","normalize","headers","encodeURIComponent","rangeStart","rangeEnd","rangeHeader","controllerOptions","getControllerOptions","Ajax","runAction","preparePost","getParameters","getController","onrequeststart","xhr","onprogressupload","lengthComputable","uploadedBytes","Math","min","loaded","floor","response","shouldRetry","nextDelay","setTimeout","currentChunkSize","nextOffset","fileRange","getChunkRetryDelays","pendingQueues","WeakMap","loadingFiles","loadMultiple","timeout","queue","get","tasks","Runtime","debounce","loadInternal","aborted","set","filter","task","delete","fileIds","onprogress","total","files","fileResults","fileResult","success","ServerLoadController","ClientLoadController","queues","removeMultiple","removeInternal","fileId","RemoveController","Server","serverOptions","chunkSize","getDefaultChunkSize","forceChunkSize","chunkRetryDelays","controllerClass","fn","getClass","loadControllerOptions","uploadControllerOptions","removeControllerOptions","createUploadController","createLoadController","createClientLoadController","createRemoveController","settings","Extension","getSettings","getChunkMinSize","getChunkMaxSize","max","Filter","uploader","filterOptions","getUploader","apply","FileSizeFilter","setMaxFileSize","setMinFileSize","setMaxTotalFileSize","setImageMaxFileSize","setImageMinFileSize","Promise","resolve","reject","getMaxFileSize","maxFileSize","maxFileSizeInBytes","getMinFileSize","minFileSize","minFileSizeInBytes","getImageMaxFileSize","imageMaxFileSize","imageMaxFileSizeInBytes","getImageMinFileSize","imageMinFileSize","imageMinFileSizeInBytes","getMaxTotalFileSize","getTotalSize","maxTotalFileSize","maxTotalFileSizeInBytes","isValidFileType","fileTypes","baseMimeType","trim","charAt","indexOf","FileTypeFilter","getAcceptedFileTypes","getArrayBuffer","fileReader","FileReader","readAsArrayBuffer","onload","result","onerror","convertStringToBuffer","compareBuffers","dataView","dest","start","j","getUint8","GIF87a","GIF89a","Gif","DataView","getUint16","PNG_SIGNATURE","IHDR_SIGNATURE","FRIED_CHUNK_NAME","Png","getUint32","BMP_SIGNATURE","Bmp","abs","getInt32","EXIF_SIGNATURE","Jpeg","orientation","byteLength","exifBlock","getOrientation","Marker","BIG_ENDIAN","LITTLE_ENDIAN","byteAlign","isBigEndian","isLittleEndian","extractOrientation","littleEndian","idfDirectoryEntries","IDF_ENTRY_BYTES","NUM_DIRECTORY_ENTRIES_BYTES","directoryEntryNumber","end","block","byteOffset","tagNumber","dataFormat","numberOfComponents","RIFF_HEADER","WEBP_SIGNATURE","VP8_SIGNATURE","VP8L_SIGNATURE","VP8X_SIGNATURE","Webp","headerType","headerView","bits","extendedHeader","validStart","validEnd","jpg","typeHandlers","gif","png","bmp","jpeg","jpe","webp","getImageSize","typeHandler","ImageSizeFilter","setImageMinWidth","setImageMinHeight","setImageMaxWidth","setImageMaxHeight","setIgnoreUnknownImageTypes","getImageMinWidth","getImageMinHeight","minWidth","minHeight","getImageMaxWidth","getImageMaxHeight","maxWidth","maxHeight","getIgnoreUnknownImageTypes","log","isBoolean","createWorker","workerBlob","workerURL","worker","Worker","post","callback","transfer","onmessage","postMessage","terminate","BitmapWorker","self","createImageBitmap","bitmap","loadImage","image","document","createElement","src","naturalWidth","naturalHeight","createImagePreview","round","canvas","context","getContext","drawImage","supportedMimeTypes","Browser","isSafari","getCanvasToBlobType","mimeTypeMode","getFilenameWithoutExtension","substr","extensionMap","renameFileToMatchMimeType","canvasPrototype","HTMLCanvasElement","prototype","hasToBlobSupport","toBlob","convertCanvasToBlob","quality","toDataURL","getResizedImageSize","imageData","mode","upscale","targetWidth","targetHeight","useOriginalSize","ratioWidth","ratioHeight","ratio","canCreateImageBitmap","ImageBitmap","close","ua","navigator","userAgent","regex","RegExp","exec","resizeImage","loadImageDataFallback","handleImageLoad","preview","newFileName","bitmapWorker","imageBitmap","isVideo","createVideoPreview","seekTime","video","setAttribute","Event","bind","duration","currentTime","videoWidth","videoHeight","ImagePreviewFilter","setImagePreviewWidth","setImagePreviewHeight","setImagePreviewQuality","setImagePreviewUpscale","setImagePreviewResizeMode","setImagePreviewMimeType","setImagePreviewMimeTypeMode","getImagePreviewWidth","getImagePreviewHeight","getImagePreviewQuality","getImagePreviewUpscale","getImagePreviewResizeMode","getImagePreviewMimeType","getImagePreviewMimeTypeMode","ImageResizeFilter","setResizeWidth","setResizeHeight","setResizeMode","setResizeMimeType","setResizeMimeTypeMode","setResizeQuality","getResizeWidth","getResizeHeight","getResizeMode","getResizeQuality","getResizeMimeType","getResizeMimeTypeMode","UploaderStatus","STARTED","STOPPED","UploaderEvent","ERROR","MAX_FILE_COUNT_EXCEEDED","DESTROY","BEFORE_BROWSE","BEFORE_DROP","BEFORE_PASTE","FILE_BEFORE_ADD","FILE_ADD_START","FILE_LOAD_START","FILE_LOAD_PROGRESS","FILE_LOAD_COMPLETE","FILE_ERROR","FILE_ADD","FILE_REMOVE","FILE_UPLOAD_START","FILE_UPLOAD_PROGRESS","FILE_UPLOAD_COMPLETE","FILE_COMPLETE","FILE_STATUS_CHANGE","FILE_STATE_CHANGE","FilterType","VALIDATION","PREPARATION","getFilesFromDataTransfer","dataTransfer","items","Array","from","item","isFileSystemItem","map","getFilesFromItem","all","fileGroups","group","entry","webkitGetAsEntry","isDirectory","kind","isDirectoryEntry","getFilesInDirectory","getAsEntry","getAsFile","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","entries","isEntry","canAppendFileToForm","DataTransfer","add","input","err","assignFileToInput","Uploader","uploaderOptions","Map","Set","assign","multiple","acceptedFileTypes","getGlobalOption","setAcceptedFileTypes","acceptOnlyImages","setAcceptOnlyImages","ignoredFileNames","setIgnoredFileNames","setMaxFileCount","maxFileCount","setAllowReplaceSingle","allowReplaceSingle","assignBrowse","browseElement","assignDropzone","dropElement","assignPaste","pasteElement","setHiddenFieldsContainer","hiddenFieldsContainer","setHiddenFieldName","hiddenFieldName","setAssignAsFile","assignAsFile","setAutoUpload","autoUpload","setMaxParallelUploads","maxParallelUploads","setMaxParallelLoads","maxParallelLoads","addFilter","addFilters","filters","addFiles","path","globalOptions","fileList","isArrayLike","addFile","getIgnoredFileNames","isMultiple","shouldReplaceSingle","fileToReplace","removeFile","uploadController","getPendingFileCount","cancel","getFiles","destroy","unassignBrowseAll","unassignDropzoneAll","unassignPasteAll","setPrototypeOf","index","findIndex","element","className","Reflection","nodes","isElementNode","node","has","tagName","acceptAttr","getAttribute","onBrowseClickHandler","join","unassignBrowse","unbind","unassignDropzone","unassignPaste","getHiddenFieldsContainer","querySelector","container","getHiddenFieldName","shouldAssignAsFile","flag","reduce","shouldAutoUpload","getMaxParallelUploads","number","getMaxParallelLoads","getUploadingFileCount","getImageExtensions","shouldAcceptOnlyImages","fileNames","getMaxFileCount","preventDefault","getTarget","totalNewFiles","totalFiles","firstFilter","current","next","splice","click","currentTarget","dragEvent","clipboardEvent","clipboardData","currentUploads","pendingFiles","pendingUploads","limit","pendingFile","currentLoads","isExistingServerFile","Dom","style","visibility","left","top","append","VueUploaderAdapter","ref","shallowRef","userEvents","getItems","getUploaderError","VueUploaderWidget","widgetOptions","getRootComponent","getAdapter","getVueApp","BitrixVue","createApp","uploaderAdapter","renderTo","isDomNode","mount","VueUploaderComponent","props","default","provide","adapter","beforeCreate","created","unmounted","JPEG","APP1","EXIF","TIFF","Orientation","Unknown","little","getJpegOrientation","reader","e","target","marker","tags","isJpeg"],"mappings":"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"}