403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/uploader/core/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.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/helpers/get-file-extension.js","../src/helpers/is-supported-video.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/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/serverless-load-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/resize-worker.js","../src/helpers/load-image.js","../src/helpers/create-image-preview-canvas.js","../src/helpers/get-resized-image-size.js","../src/helpers/convert-canvas-to-blob.js","../src/helpers/is-supported-mime-type.js","../src/helpers/sharpen.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/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-in-directory.js","../src/helpers/is-directory-entry.js","../src/helpers/is-file-system-item.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/helpers/is-image.js","../src/helpers/get-jpeg-orientation.js","../src/helpers/is-jpeg.js"],"sourcesContent":["/**\n * @namespace BX.UI.Uploader\n */\nexport type FileStatusType = {\n\tINIT: string,\n\tADDED: string,\n\tLOADING: string,\n\tPENDING: string,\n\tPREPARING: string,\n\tUPLOADING: string,\n\tCOMPLETE: string,\n\tLOAD_FAILED: string,\n\tUPLOAD_FAILED: string,\n};\n\n/**\n * @namespace BX.UI.Uploader\n */\nexport const FileStatus: FileStatusType = {\n\tINIT: 'init',\n\tADDED: 'added',\n\tLOADING: 'loading',\n\tPENDING: 'pending',\n\tPREPARING: 'preparing',\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};\n","/**\n * @namespace BX.UI.Uploader\n */\nexport const FileOrigin = {\n\tCLIENT: 'client',\n\tSERVER: 'server',\n};\n","/**\n * @namespace BX.UI.Uploader\n */\nexport 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\tVALIDATE_FILE_ASYNC: 'onValidateFileAsync',\n\tPREPARE_FILE_ASYNC: 'onPrepareFileAsync',\n};\n","import { Type } from 'main.core';\n\nconst getFileExtension = (filename: string): string => {\n\tconst position: number = Type.isStringFilled(filename) ? filename.lastIndexOf('.') : -1;\n\n\treturn position > 0 ? filename.slice(Math.max(0, position + 1)) : '';\n};\n\nexport default getFileExtension;\n","import { Type } from 'main.core';\nimport getFileExtension from './get-file-extension';\nimport Uploader from '../uploader';\n\nlet videoExtensions = null;\n\nconst isSupportedVideo = (file: File | string, mimeType: string = null): boolean => {\n\tif (videoExtensions === null)\n\t{\n\t\tvideoExtensions = Uploader.getVideoExtensions();\n\t}\n\n\tconst fileName: string = Type.isFile(file) ? file.name : file;\n\tconst type: string = Type.isFile(file) ? file.type : mimeType;\n\tconst extension: string = getFileExtension(fileName).toLowerCase();\n\n\treturn videoExtensions.includes(extension) && (type === null || /^video\\/[\\d.a-z-]+$/i.test(type));\n};\n\nexport default isSupportedVideo;\n","import { BaseError, Type, Loc } from 'main.core';\n\n/**\n * @namespace BX.UI.Uploader\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\t/**\n\t * new UploaderError(code)\n\t * new UploaderError(code, customData)\n\t * new UploaderError(code, message)\n\t * new UploaderError(code, message, description)\n\t * new UploaderError(code, message, customData)\n\t * new UploaderError(code, message, description, customData)\n\t */\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): void => {\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: UploaderError = 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\n\t\tlet { code, message, description } = errors[0];\n\t\tconst { customData, system, type } = errors[0];\n\n\t\tif (code === 'NETWORK_ERROR')\n\t\t{\n\t\t\tmessage = Loc.getMessage('UPLOADER_NETWORK_ERROR');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcode = Type.isStringFilled(code) ? code : 'SERVER_ERROR';\n\t\t\tif (!Type.isStringFilled(description))\n\t\t\t{\n\t\t\t\tdescription = message;\n\t\t\t\tmessage = Loc.getMessage('UPLOADER_SERVER_ERROR');\n\t\t\t}\n\t\t}\n\n\t\tconsole.error('Uploader', errors);\n\n\t\tconst error: UploaderError = new this(code, message, description, customData);\n\t\terror.setOrigin(UploaderError.Origin.SERVER);\n\n\t\tif (type === 'file-uploader')\n\t\t{\n\t\t\terror.setType(system ? UploaderError.Type.SYSTEM : UploaderError.Type.USER);\n\t\t}\n\t\telse\n\t\t{\n\t\t\terror.setType(UploaderError.Type.UNKNOWN);\n\t\t}\n\n\t\treturn error;\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\n\t\tif (!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 { Type } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\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\n\t\tif (!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 { Type } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\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\n\t\tif (!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","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\nlet crypto = window.crypto || window.msCrypto;\nif (!crypto && typeof (process) === 'object')\n{\n\t// eslint-disable-next-line no-undef\n\tcrypto = require('crypto').webcrypto;\n}\n\nconst createUniqueId = (): string => {\n\treturn (`${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`).replaceAll(\n\t\t/[018]/g,\n\t\t(part: string) => (part ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (part / 4)))).toString(16),\n\t);\n};\n\nexport default createUniqueId;\n","import { Type } from 'main.core';\n\nconst getExtensionFromType = (type): string => {\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;\n","import { Type } from 'main.core';\nimport getExtensionFromType from './get-extension-from-type';\n\nlet counter = 0;\nconst createFileFromBlob = (blob: Blob, fileName: string): File => {\n\tlet newFileName = fileName;\n\tif (!Type.isStringFilled(newFileName))\n\t{\n\t\tconst date = new Date();\n\t\tnewFileName = `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\tnewFileName += `.${extension}`;\n\t\t}\n\t}\n\n\ttry\n\t{\n\t\treturn new File(\n\t\t\t[blob],\n\t\t\tnewFileName,\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\n\t{\n\t\tconst file = blob.slice(0, blob.size, blob.type);\n\t\tfile.name = newFileName;\n\t\tfile.lastModified = Date.now();\n\t\tfile.lastModifiedDate = new Date();\n\n\t\treturn file;\n\t}\n};\n\nexport default createFileFromBlob;\n","import { Type } from 'main.core';\n\nconst regexp = /^data:((?:\\w+\\/(?:(?!;).)+)?)((?:;[\\W\\w]*?[^;])*),(.+)$/;\n\nconst isDataUri = (str: string): boolean => {\n\treturn Type.isString(str) ? str.match(regexp) : false;\n};\n\nexport default isDataUri;\n","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.codePointAt(i);\n\t}\n\n\treturn new Blob([buffer], { type: mimeString });\n};\n\nexport default createBlobFromDataUri;\n","import { Type } from 'main.core';\nimport getFileExtension from './get-file-extension';\n\nconst imageExtensions: Set<string> = new Set(['jpg', 'bmp', 'jpeg', 'jpe', 'gif', 'png', 'webp']);\n\nconst isResizableImage = (file: File | string, mimeType: string = null): boolean => {\n\tconst fileName: string = Type.isFile(file) ? file.name : file;\n\tconst type: string = Type.isFile(file) ? file.type : mimeType;\n\tconst extension: string = getFileExtension(fileName).toLowerCase();\n\n\treturn imageExtensions.has(extension) && (type === null || /^image\\/[\\d.a-z-]+$/i.test(type));\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\tlet currentSize = size;\n\twhile (currentSize >= base && units[i + 1])\n\t{\n\t\tcurrentSize /= base;\n\t\ti++;\n\t}\n\n\treturn (Type.isInteger(currentSize) ? currentSize : currentSize.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;\n","// eslint-disable-next-line max-classes-per-file\nimport { 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';\nimport isSupportedVideo from './helpers/is-supported-video';\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\nimport type { UploaderFileOptions } from './types/uploader-file-options';\nimport type { UploaderFileInfo } from './types/uploader-file-info';\nimport type { RemoveFileOptions } from './types/remove-file-options';\n\nexport default class UploaderFile extends EventEmitter\n{\n\t#id: string = null;\n\t#file: File = null;\n\t#serverFileId: number | string = null;\n\n\t#name: string = null;\n\t#size: number = 0;\n\t#type: string = '';\n\t#width: ?number = null;\n\t#height: ?number = null;\n\t#animated: boolean = false;\n\t#treatImageAsFile: boolean = false;\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\n\t#status: FileStatus = FileStatus.INIT;\n\t#origin: FileOrigin = FileOrigin.CLIENT;\n\t#errors: UploaderError[] = [];\n\t#progress: number = 0;\n\t#customData: Object<string, any> = Object.create(null);\n\n\t#uploadController: AbstractUploadController = null;\n\t#loadController: AbstractLoadController = null;\n\t#removeController: AbstractRemoveController = null;\n\t#forceServerLoad: boolean = false;\n\n\t#uploadCallbacks: CallbackCollection = new CallbackCollection(this);\n\n\tconstructor(source: File | Blob | string | number | UploaderFileOptions, fileOptions: UploaderFileOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Uploader.File');\n\n\t\tconst options: UploaderFileOptions = Type.isPlainObject(fileOptions) ? fileOptions : {};\n\n\t\tif (Type.isFile(source))\n\t\t{\n\t\t\tthis.#file = source;\n\t\t\tthis.update(options);\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\tthis.update(options);\n\t\t}\n\t\telse if (isDataUri(source))\n\t\t{\n\t\t\tconst blob: Blob = createBlobFromDataUri(source);\n\t\t\tthis.#file = createFileFromBlob(blob, options.name);\n\t\t\tthis.update(options);\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.#serverFileId = source;\n\t\t\tthis.update(options);\n\t\t}\n\t\telse if (\n\t\t\tType.isPlainObject(source)\n\t\t\t&& (Type.isNumber(source.serverFileId) || Type.isStringFilled(source.serverFileId))\n\t\t)\n\t\t{\n\t\t\tthis.#origin = FileOrigin.SERVER;\n\t\t\tthis.update(source);\n\t\t}\n\n\t\tthis.#id = Type.isStringFilled(options.id) ? options.id : createUniqueId();\n\t\tif (this.#origin === FileOrigin.SERVER)\n\t\t{\n\t\t\tthis.#forceServerLoad = options.preload === true || (Type.isPlainObject(source) && source.preload === true);\n\t\t}\n\n\t\tthis.subscribeFromOptions({\n\t\t\t[FileEvent.ADD]: (): void => {\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\tshouldForceServerLoad(): boolean\n\t{\n\t\treturn this.#forceServerLoad;\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\tthis.#uploadCallbacks.emit('onComplete');\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.isUploadFailed())\n\t\t{\n\t\t\tthis.#uploadCallbacks.emit('onError', { error: this.getError() });\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.canUpload())\n\t\t{\n\t\t\tthis.#uploadCallbacks.emit('onError', { error: new UploaderError('FILE_UPLOAD_NOT_ALLOWED') });\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst event: BaseEvent<{ file: UploaderFile }> = 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.PREPARING);\n\n\t\tconst prepareEvent: BaseEvent = new BaseEvent({ data: { file: this } });\n\t\tthis.emitAsync(FileEvent.PREPARE_FILE_ASYNC, prepareEvent)\n\t\t\t.then((): void => {\n\t\t\t\tthis.#setStatus(FileStatus.UPLOADING);\n\t\t\t\tthis.emit(FileEvent.UPLOAD_START);\n\t\t\t\tthis.#uploadController.upload(this);\n\t\t\t})\n\t\t\t.catch((prepareError) => {\n\t\t\t\tconst error = this.addError(prepareError);\n\t\t\t\tthis.#setStatus(FileStatus.UPLOAD_FAILED);\n\t\t\t\tthis.emit(FileEvent.UPLOAD_ERROR, { error });\n\t\t\t})\n\t\t;\n\t}\n\n\tremove(options?: RemoveFileOptions): 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\tconst removeFromServer: boolean = !options || options.removeFromServer !== false;\n\t\tif (removeFromServer && 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: UploaderError = 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: UploaderError = 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 (!(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): void => {\n\t\t\t\tconst error: UploaderError = 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): void => {\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): void => {\n\t\t\t\tthis.#setStatus(FileStatus.COMPLETE);\n\t\t\t\tthis.update(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): void => {\n\t\t\t\tconst error: UploaderError = 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): void => {\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): void => {\n\t\t\t\tif (this.getOrigin() === FileOrigin.CLIENT)\n\t\t\t\t{\n\t\t\t\t\tconst validationEvent: BaseEvent = new BaseEvent({ data: { file: this } });\n\t\t\t\t\tthis.emitAsync(FileEvent.VALIDATE_FILE_ASYNC, validationEvent)\n\t\t\t\t\t\t.then((): void => {\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\tthis.emit(FileEvent.LOAD_COMPLETE);\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\tconst preparationEvent: BaseEvent = new BaseEvent({ data: { file: this } });\n\t\t\t\t\t\t\t\tthis.emitAsync(FileEvent.PREPARE_FILE_ASYNC, preparationEvent)\n\t\t\t\t\t\t\t\t\t.then((): void => {\n\t\t\t\t\t\t\t\t\t\tthis.#setStatus(FileStatus.COMPLETE);\n\t\t\t\t\t\t\t\t\t\tthis.emit(FileEvent.LOAD_COMPLETE);\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.catch((preparationError) => {\n\t\t\t\t\t\t\t\t\t\tconst error = this.addError(preparationError);\n\t\t\t\t\t\t\t\t\t\tthis.#setStatus(FileStatus.LOAD_FAILED);\n\t\t\t\t\t\t\t\t\t\tthis.emit(FileEvent.LOAD_ERROR, { error });\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch((validationError) => {\n\t\t\t\t\t\t\tconst error = this.addError(validationError);\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\telse\n\t\t\t\t{\n\t\t\t\t\tthis.update(event.getData().fileInfo);\n\n\t\t\t\t\tif (this.isUploadable())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#setStatus(FileStatus.PENDING);\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.#setStatus(FileStatus.COMPLETE);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.emit(FileEvent.LOAD_COMPLETE);\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\tisRemoveable(): boolean\n\t{\n\t\treturn this.#removeController !== 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\tisPreparing(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.PREPARING;\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\tsetFile(file: File | Blob): 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}\n\n\tupdate(options: UploaderFileOptions): void\n\t{\n\t\tif (Type.isPlainObject(options))\n\t\t{\n\t\t\tthis.setName(options.name);\n\t\t\tthis.setType(options.type);\n\t\t\tthis.setSize(options.size);\n\n\t\t\tthis.setServerFileId(options.serverFileId);\n\t\t\tthis.setWidth(options.width);\n\t\t\tthis.setHeight(options.height);\n\t\t\tthis.setTreatImageAsFile(options.treatImageAsFile);\n\n\t\t\tthis.setClientPreview(options.clientPreview, options.clientPreviewWidth, options.clientPreviewHeight);\n\t\t\tthis.setServerPreview(options.serverPreviewUrl, options.serverPreviewWidth, options.serverPreviewHeight);\n\n\t\t\tthis.setDownloadUrl(options.downloadUrl);\n\t\t\tthis.setCustomData(options.customData);\n\n\t\t\tthis.setLoadController(options.loadController);\n\t\t\tthis.setUploadController(options.uploadController);\n\t\t\tthis.setRemoveController(options.removeController);\n\t\t}\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.#name === null ? (this.getBinary() ? this.getBinary().name : '') : this.#name;\n\t}\n\n\tsetName(name: string | null): void\n\t{\n\t\tif (Type.isStringFilled(name) || Type.isNull(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\tgetExtension(): string\n\t{\n\t\tconst name: string = this.getName();\n\t\tconst position: number = name.lastIndexOf('.');\n\n\t\treturn position >= 0 ? name.slice(Math.max(0, 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\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\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\tgetServerFileId(): number | string | null\n\t{\n\t\treturn this.#serverFileId;\n\t}\n\n\t/**\n\t * @deprecated\n\t * use getServerFileId\n\t */\n\tgetServerId(): number | string | null\n\t{\n\t\treturn this.getServerFileId();\n\t}\n\n\tsetServerFileId(id: number | string): void\n\t{\n\t\tif (Type.isNumber(id) || Type.isStringFilled(id))\n\t\t{\n\t\t\tthis.#serverFileId = id;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'serverFileId', 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\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\tisAnimated(): boolean\n\t{\n\t\treturn this.#animated;\n\t}\n\n\tsetAnimated(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#animated = flag;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'animated', value: flag });\n\t\t}\n\t}\n\n\tsetTreatImageAsFile(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#treatImageAsFile = flag;\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'treatImageAsFile', value: flag });\n\t\t}\n\t}\n\n\tshouldTreatImageAsFile(): boolean\n\t{\n\t\treturn this.#treatImageAsFile;\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\tif (this.shouldTreatImageAsFile())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\t// return isResizableImage(this.getName(), this.getType());\n\t\treturn this.getWidth() > 0 && this.getHeight() > 0 && isResizableImage(this.getName(), this.getType());\n\t}\n\n\tisVideo(): boolean\n\t{\n\t\treturn isSupportedVideo(this.getName());\n\t}\n\n\tgetProgress(): number\n\t{\n\t\treturn this.#progress;\n\t}\n\n\tsetProgress(progress: ?number): void\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\tconst uploaderError: UploaderError = error instanceof Error ? UploaderError.createFromError(error) : error;\n\n\t\tthis.#errors.push(uploaderError);\n\t\tthis.emit(FileEvent.STATE_CHANGE);\n\n\t\treturn uploaderError;\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(): UploaderFileInfo\n\t{\n\t\treturn JSON.parse(JSON.stringify(this));\n\t}\n\n\tsetCustomData(property: ?string | { [key: string]: any }, value?: any): void\n\t{\n\t\tif (Type.isNull(property))\n\t\t{\n\t\t\tthis.#customData = Object.create(null);\n\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'customData', value: null });\n\t\t}\n\t\telse if (Type.isPlainObject(property))\n\t\t{\n\t\t\tObject.entries(property).forEach((item) => {\n\t\t\t\tconst [currentKey, currentValue] = item;\n\t\t\t\tthis.setCustomData(currentKey, currentValue);\n\t\t\t});\n\t\t}\n\t\telse if (Type.isString(property))\n\t\t{\n\t\t\tif (Type.isNull(value))\n\t\t\t{\n\t\t\t\tdelete this.#customData[property];\n\t\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'customData', customProperty: property, value: null });\n\t\t\t}\n\t\t\telse if (!Type.isUndefined(value))\n\t\t\t{\n\t\t\t\tthis.#customData[property] = value;\n\t\t\t\tthis.emit(FileEvent.STATE_CHANGE, { property: 'customData', customProperty: property, value });\n\t\t\t}\n\t\t}\n\t}\n\n\tgetCustomData(property?: string): any\n\t{\n\t\tif (Type.isUndefined(property))\n\t\t{\n\t\t\treturn this.#customData;\n\t\t}\n\n\t\tif (Type.isStringFilled(property))\n\t\t{\n\t\t\treturn this.#customData[property];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\ttoJSON(): UploaderFileInfo\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tserverFileId: this.getServerFileId(),\n\t\t\tserverId: this.getServerFileId(), // compatibility\n\t\t\tstatus: this.getStatus(),\n\t\t\tname: this.getName(),\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\tisVideo: this.isVideo(),\n\t\t\tfailed: this.isFailed(),\n\t\t\twidth: this.getWidth(),\n\t\t\theight: this.getHeight(),\n\t\t\tanimated: this.isAnimated(),\n\t\t\tprogress: this.getProgress(),\n\t\t\terror: this.getError(),\n\t\t\terrors: this.getErrors(),\n\t\t\tpreviewUrl: this.getPreviewUrl(),\n\t\t\tpreviewWidth: this.getPreviewWidth(),\n\t\t\tpreviewHeight: this.getPreviewHeight(),\n\t\t\tclientPreviewUrl: this.getClientPreviewUrl(),\n\t\t\tclientPreviewWidth: this.getClientPreviewWidth(),\n\t\t\tclientPreviewHeight: this.getClientPreviewHeight(),\n\t\t\tserverPreviewUrl: this.getServerPreviewUrl(),\n\t\t\tserverPreviewWidth: this.getServerPreviewWidth(),\n\t\t\tserverPreviewHeight: this.getServerPreviewHeight(),\n\t\t\tdownloadUrl: this.getDownloadUrl(),\n\t\t\tcustomData: this.getCustomData(),\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 } = {}): void\n\t{\n\t\tconst handlers = Type.isPlainObject(callbacks) ? callbacks : {};\n\t\tif (Type.isFunction(handlers.onComplete))\n\t\t{\n\t\t\tthis.getEmitter().subscribeOnce('onComplete', handlers.onComplete);\n\t\t}\n\n\t\tif (Type.isFunction(handlers.onError))\n\t\t{\n\t\t\tthis.getEmitter().subscribeOnce('onError', handlers.onError);\n\t\t}\n\t}\n\n\temit(eventName: string, event: BaseEvent | {[key: string]: any}): void\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}\n","import { ajax as Ajax, Type, type AjaxResponse, type JsonObject } from 'main.core';\n\nimport Server from './server';\nimport Chunk from './chunk';\nimport AbstractUploadController from './abstract-upload-controller';\nimport UploaderError from '../uploader-error';\n\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 (!Type.isFile(file.getBinary()))\n\t\t{\n\t\t\tthis.emit('onError', { error: new UploaderError('WRONG_FILE_SOURCE') });\n\n\t\t\treturn;\n\t\t}\n\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: ?Chunk = 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): void\n\t{\n\t\tconst totalSize: number = this.getFile().getSize();\n\t\tconst isOnlyOneChunk: boolean = chunk.getOffset() === 0 && totalSize === chunk.getSize();\n\n\t\tlet fileName: string = 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: string = 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: number = chunk.getOffset();\n\t\t\tconst rangeEnd: number = 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\theaders,\n\t\t\tdata: chunk.getData(),\n\t\t\tpreparePost: false,\n\t\t\tgetParameters: {\n\t\t\t\tcontroller: this.getServer().getController(),\n\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t\ttoken: this.getToken() || '',\n\t\t\t},\n\t\t\tonrequeststart: (xhr): void => {\n\t\t\t\tthis.#xhr = xhr;\n\t\t\t\tthis.#aborted = false;\n\t\t\t},\n\t\t\tonprogressupload: (event: ProgressEvent): void => {\n\t\t\t\tif (event.lengthComputable)\n\t\t\t\t{\n\t\t\t\t\tconst size: number = this.getFile().getSize();\n\t\t\t\t\tconst uploadedBytes: number = Math.min(size, chunk.getOffset() + event.loaded);\n\t\t\t\t\tconst progress: number = size > 0 ? Math.floor(uploadedBytes / size * 100) : 100;\n\t\t\t\t\tthis.emit('onProgress', { progress });\n\t\t\t\t}\n\t\t\t},\n\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().getServerFileId() === 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().setServerFileId(response.data.token);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst size: number = this.getFile().getSize();\n\t\t\t\t\tconst progress: number = 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: ?Chunk = 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: AjaxResponse<JsonObject>) => {\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 = UploaderError.createFromAjaxErrors(response.errors);\n\t\t\t\tconst shouldRetry: boolean = (\n\t\t\t\t\terror.getCode() === 'NETWORK_ERROR'\n\t\t\t\t\t|| error.getType() === UploaderError.Type.UNKNOWN\n\t\t\t\t);\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: ?number = 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((): void => {\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 = null;\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: number = Math.min(this.getChunkSize(), this.getFile().getSize() - this.getChunkOffset());\n\t\t\tconst nextOffset: number = this.getChunkOffset() + currentChunkSize;\n\t\t\tconst fileRange: Blob = 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}\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 QueueTask = {\n\tcontroller: ServerLoadController,\n\tfile: UploaderFile,\n}\n\ntype Queue = {\n\ttasks: QueueTask[],\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): void\n{\n\tconst server: 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): void\n{\n\tconst server: Server = controller.getServer();\n\tconst queue: Queue = pendingQueues.get(server);\n\tif (queue)\n\t{\n\t\tqueue.tasks = queue.tasks.filter((task: QueueTask): boolean => {\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: QueueTask): boolean => {\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(): void\n{\n\t// eslint-disable-next-line no-invalid-this,unicorn/no-this-assignment\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: QueueTask): void => {\n\t\tconst file: UploaderFile = task.file;\n\t\tfileIds.push(file.getServerFileId());\n\t\tloadingFiles.set(file, queue);\n\t});\n\n\tconst controllerOptions = server.getControllerOptions();\n\tAjax.runAction('ui.fileuploader.load', {\n\t\tdata: {\n\t\t\tfileIds,\n\t\t},\n\t\tgetParameters: {\n\t\t\tcontroller: server.getController(),\n\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t},\n\t\tonrequeststart: (xhr): void => {\n\t\t\tqueue.xhr = xhr;\n\t\t},\n\t\tonprogress: (event: ProgressEvent): void => {\n\t\t\tif (event.lengthComputable)\n\t\t\t{\n\t\t\t\tconst progress: number = event.total > 0 ? Math.floor(event.loaded / event.total * 100) : 100;\n\n\t\t\t\tqueue.tasks.forEach((task: QueueTask): void => {\n\t\t\t\t\tconst { controller } = task;\n\t\t\t\t\tcontroller.emit('onProgress', { progress });\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\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): void => {\n\t\t\t\t\tfileResults[fileResult.id] = fileResult;\n\t\t\t\t});\n\n\t\t\t\tqueue.tasks.forEach((task: QueueTask): void => {\n\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\tconst fileResult = fileResults[file.getServerFileId()] || 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', { 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 = 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: UploaderError = new UploaderError('SERVER_ERROR');\n\t\t\t\tqueue.tasks.forEach((task: QueueTask): void => {\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: ?UploaderError = queue.aborted ? null : UploaderError.createFromAjaxErrors(response.errors);\n\t\t\tqueue.tasks.forEach((task: QueueTask): void => {\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}\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', { 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}\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', { 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\t\t// silent abort\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\t// eslint-disable-next-line no-invalid-this,unicorn/no-this-assignment\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.getServerFileId() !== null)\n\t\t{\n\t\t\tfileIds.push(file.getServerFileId());\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\tdata: {\n\t\t\tfileIds,\n\t\t},\n\t\tgetParameters: {\n\t\t\tcontroller: server.getController(),\n\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t},\n\t\tonrequeststart: (xhr) => {\n\t\t\tqueue.xhr = xhr;\n\t\t},\n\t}).then((response) => {\n\t\tif (response.data?.files)\n\t\t{\n\t\t\tconst fileResults = {};\n\t\t\tresponse.data.files.forEach((fileResult) => {\n\t\t\t\tfileResults[fileResult.id] = fileResult;\n\t\t\t});\n\n\t\t\ttasks.forEach((task) => {\n\t\t\t\tconst { controller, file } = task;\n\t\t\t\tconst fileResult = fileResults[file.getServerFileId()] || null;\n\n\t\t\t\tif (fileResult && fileResult.success)\n\t\t\t\t{\n\t\t\t\t\tcontroller.emit('onRemove', { fileId: fileResult.id });\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tconst error = UploaderError.createFromAjaxErrors(fileResult?.errors);\n\t\t\t\t\tcontroller.emit('onError', { error });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst error = new UploaderError('SERVER_ERROR');\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}).catch((response) => {\n\t\tconst error = UploaderError.createFromAjaxErrors(response.errors);\n\t\ttasks.forEach((task) => {\n\t\t\tconst { controller } = task;\n\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t});\n\t});\n}\n","import AbstractRemoveController from './abstract-remove-controller';\nimport { removeMultiple } from './remove-multiple';\n\nimport type UploaderFile from '../uploader-file';\n\nexport default class RemoveController extends AbstractRemoveController\n{\n\tremove(file: UploaderFile): void\n\t{\n\t\tremoveMultiple(this, file);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport AbstractLoadController from './abstract-load-controller';\nimport UploaderError from '../uploader-error';\n\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\n\nexport default class ServerlessLoadController 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.isStringFilled(file.getName()))\n\t\t{\n\t\t\tthis.emit('onProgress', { 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\t\t// silent abort\n\t}\n}\n","import { Extension, Runtime, Type } from 'main.core';\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';\nimport ServerlessLoadController from './serverless-load-controller';\n\nimport type { ServerOptions } from '../types/server-options';\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: ServerOptions = 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: number = (\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\tconst controllerClasses: string[] = ['uploadControllerClass', 'loadControllerClass', 'removeControllerClass'];\n\t\tcontrollerClasses.forEach((controllerClass: string): void => {\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 TypeError(`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\tswitch (controllerClass)\n\t\t\t{\n\t\t\t\tcase 'uploadControllerClass':\n\t\t\t\t\tthis.#uploadControllerClass = fn;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'loadControllerClass':\n\t\t\t\t\tthis.#loadControllerClass = fn;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'removeControllerClass':\n\t\t\t\t\tthis.#removeControllerClass = fn;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// No default\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: AbstractUploadController = new this.#uploadControllerClass(this, this.#uploadControllerOptions);\n\t\t\tif (!(controller instanceof AbstractUploadController))\n\t\t\t{\n\t\t\t\tthrow new TypeError(\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\n\t\tif (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\tcreateServerLoadController(): AbstractLoadController\n\t{\n\t\tif (this.#loadControllerClass)\n\t\t{\n\t\t\tconst controller: AbstractLoadController = new this.#loadControllerClass(this, this.#loadControllerOptions);\n\t\t\tif (!(controller instanceof AbstractLoadController))\n\t\t\t{\n\t\t\t\tthrow new TypeError(\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 this.createDefaultServerLoadController();\n\t}\n\n\tcreateDefaultServerLoadController(): ServerLoadController\n\t{\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\tcreateServerlessLoadController(): ServerlessLoadController\n\t{\n\t\treturn new ServerlessLoadController(this, this.#loadControllerOptions);\n\t}\n\n\tcreateRemoveController(): ?AbstractRemoveController\n\t{\n\t\tif (this.#removeControllerClass)\n\t\t{\n\t\t\tconst controller: AbstractRemoveController = new this.#removeControllerClass(this, this.#removeControllerOptions);\n\t\t\tif (!(controller instanceof AbstractRemoveController))\n\t\t\t{\n\t\t\t\tthrow new TypeError(\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\n\t\tif (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';\nimport isResizableImage from '../helpers/is-resizable-image';\n\nimport type Uploader from '../uploader';\nimport type UploaderFile from '../uploader-file';\nimport type { UploaderOptions } from '../types/uploader-options';\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\t#treatOversizeImageAsFile: boolean = false;\n\n\tconstructor(uploader: Uploader, filterOptions: UploaderOptions = {})\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: UploaderOptions = 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\tthis.setTreatOversizeImageAsFile(options.treatOversizeImageAsFile);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject): void => {\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 (isResizableImage(file.getName(), file.getType()))\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\tif (this.shouldTreatOversizeImageAsFile())\n\t\t\t\t\t{\n\t\t\t\t\t\tfile.setTreatImageAsFile(true);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t\t'IMAGE_MAX_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\timageMaxFileSize: formatFileSize(this.getImageMaxFileSize()),\n\t\t\t\t\t\t\t\t\timageMaxFileSizeInBytes: this.getImageMaxFileSize(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\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\tif (this.shouldTreatOversizeImageAsFile())\n\t\t\t\t\t{\n\t\t\t\t\t\tfile.setTreatImageAsFile(true);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t\t'IMAGE_MIN_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\timageMinFileSize: formatFileSize(this.getImageMinFileSize()),\n\t\t\t\t\t\t\t\t\timageMinFileSizeInBytes: this.getImageMinFileSize(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.getMaxTotalFileSize() !== null && this.getUploader().getTotalSize() > this.getMaxTotalFileSize())\n\t\t\t{\n\t\t\t\treject(\n\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t'MAX_TOTAL_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmaxTotalFileSize: formatFileSize(this.getMaxTotalFileSize()),\n\t\t\t\t\t\t\tmaxTotalFileSizeInBytes: this.getMaxTotalFileSize(),\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\tresolve();\n\t\t});\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\tsetTreatOversizeImageAsFile(value: boolean): void\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis.#treatOversizeImageAsFile = value;\n\t\t}\n\t}\n\n\tshouldTreatOversizeImageAsFile(): boolean\n\t{\n\t\treturn this.#treatOversizeImageAsFile;\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 (const fileType of fileTypes)\n\t{\n\t\tif (!Type.isStringFilled(fileType))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst type = fileType.trim().toLowerCase();\n\n\t\tif (type.charAt(0) === '.') // extension case\n\t\t{\n\t\t\tif (file.name.toLowerCase().includes(type, file.name.length - type.length))\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;\n","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): void => {\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\tif (file.arrayBuffer)\n\t{\n\t\treturn file.arrayBuffer();\n\t}\n\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;\n","const convertStringToBuffer = (str: string): ArrayLike => {\n\tconst result = [];\n\tfor (let i = 0; i < str.length; i++)\n\t{\n\t\tresult.push(str.codePointAt(i) & 0xFF);\n\t}\n\n\treturn result;\n};\nexport default convertStringToBuffer;\n","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;\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 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\treject(new Error('GIF signature not found.'));\n\n\t\t\t\treturn;\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\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\treject(new Error('GIF signature not found.'));\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// * a static 4-byte sequence (\\x00\\x21\\xF9\\x04)\n\t\t\t\t\t// * 4 variable bytes\n\t\t\t\t\t// * a static 2-byte sequence (\\x00\\x2C) (some variants may use \\x00\\x21 ?)\n\t\t\t\t\t// We read through the file til we reach the end of the file, or we've found\n\t\t\t\t\t// at least 2 frame headers\n\t\t\t\t\tlet frames = 0;\n\t\t\t\t\tfor (let i = 0, len = view.byteLength - 9; i < len && frames < 2; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tview.getUint8(i) === 0x00\n\t\t\t\t\t\t\t&& view.getUint8(i + 1) === 0x21\n\t\t\t\t\t\t\t&& view.getUint8(i + 2) === 0xF9\n\t\t\t\t\t\t\t&& view.getUint8(i + 3) === 0x04\n\t\t\t\t\t\t\t&& view.getUint8(i + 8) === 0x00\n\t\t\t\t\t\t\t&& (view.getUint8(i + 9) === 0x2C || view.getUint8(i + 9) === 0x21)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tframes++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst animated = frames > 1;\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\tanimated,\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';\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\treject(new Error('PNG signature not found.'));\n\n\t\t\t\treturn;\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\t\t\t\t\tif (!compareBuffers(view, PNG_SIGNATURE, 0))\n\t\t\t\t\t{\n\t\t\t\t\t\treject(new Error('PNG signature not found.'));\n\n\t\t\t\t\t\treturn;\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\treject(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\treject(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\treject(new Error('BMP signature not found.'));\n\n\t\t\t\treturn;\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): void => {\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\treject(new Error('BMP signature not found.'));\n\n\t\t\t\t\t\treturn;\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): void => {\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\treject(new Error('JPEG signature not found.'));\n\n\t\t\t\treturn;\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\treject(new Error('JPEG signature not found.'));\n\n\t\t\t\t\t\treturn;\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\treject(new Error('JPEG signature not found.'));\n\n\t\t\t\t\t\t\treturn;\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\treject(new Error('JPEG signature not found.'));\n\n\t\t\t\t\t\t\treturn;\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 = 0;\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 ((code >= 0xD0 && 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 (code >= 0xC0 && 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\treject(new Error('JPEG signature not found.'));\n\n\t\t\t\t\t\t\t\treturn;\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\treject(new Error('JPEG unknown markers.'));\n\n\t\t\t\t\t\t\treturn;\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\treject(new Error('JPEG end of the data stream.'));\n\n\t\t\t\t\t\t\treturn;\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&& (code >= 0xC0 && 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\treject(new Error('JPEG size not found.'));\n\n\t\t\t\t\t\t\t\treturn;\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\tresolve({\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\n\t\t\t\t\t\t\treturn;\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): number => {\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): number => {\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\treturn -1;\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\treject(new Error('WEBP signature not found.'));\n\n\t\t\t\treturn;\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\treject(new Error('WEBP signature not found.'));\n\n\t\t\t\t\t\treturn;\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\n\t\t\t\t\tif (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\n\t\t\t\t\tif (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 animated = (extendedHeader & 2) === 2; // 00000010 means an animated image\n\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(Math.trunc(headerView.getUint8(9)))\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, animated });\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,\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","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';\nimport isResizableImage from '../helpers/is-resizable-image';\n\nimport type Uploader from '../uploader';\nimport type UploaderFile from '../uploader-file';\nimport type { UploaderOptions } from '../types/uploader-options';\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\t#treatOversizeImageAsFile: boolean = false;\n\n\tconstructor(uploader: Uploader, filterOptions: UploaderOptions = {})\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: UploaderOptions = 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\tthis.setTreatOversizeImageAsFile(options.treatOversizeImageAsFile);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject): void => {\n\t\t\tif (!isResizableImage(file.getName(), file.getType()))\n\t\t\t{\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgetImageSize(file.getBinary())\n\t\t\t\t.then(({ width, height, animated }): void => {\n\t\t\t\t\tfile.setWidth(width);\n\t\t\t\t\tfile.setHeight(height);\n\t\t\t\t\tfile.setAnimated(animated === true);\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\tif (this.shouldTreatOversizeImageAsFile())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile.setTreatImageAsFile(true);\n\t\t\t\t\t\t\tresolve();\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\treject(new UploaderError(\n\t\t\t\t\t\t\t\t'IMAGE_IS_TOO_SMALL',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tminWidth: this.getImageMinWidth(),\n\t\t\t\t\t\t\t\t\tminHeight: this.getImageMinHeight(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (width > this.getImageMaxWidth() || height > this.getImageMaxHeight())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.shouldTreatOversizeImageAsFile())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile.setTreatImageAsFile(true);\n\t\t\t\t\t\t\tresolve();\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\treject(new UploaderError(\n\t\t\t\t\t\t\t\t'IMAGE_IS_TOO_BIG',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmaxWidth: this.getImageMaxWidth(),\n\t\t\t\t\t\t\t\t\tmaxHeight: this.getImageMaxHeight(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\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): void => {\n\t\t\t\t\tif (this.getIgnoreUnknownImageTypes())\n\t\t\t\t\t{\n\t\t\t\t\t\tfile.setTreatImageAsFile(true);\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\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.warn('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\tsetTreatOversizeImageAsFile(value: boolean): void\n\t{\n\t\tif (Type.isBoolean(value))\n\t\t{\n\t\t\tthis.#treatOversizeImageAsFile = value;\n\t\t}\n\t}\n\n\tshouldTreatOversizeImageAsFile(): boolean\n\t{\n\t\treturn this.#treatOversizeImageAsFile;\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;\n","const BitmapWorker = function() {\n\tself.onmessage = (event: MessageEvent) => {\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: ImageBitmap) => {\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;\n","/* eslint-disable no-new-func */\n\nconst ResizeWorker = (): void => {\n\tself.onmessage = (event: MessageEvent): void => {\n\t\t// Hack for Safari. Workers can become unpredictable.\n\t\t// Sometimes 'self.postMessage' doesn't emit 'onmessage' event.\n\t\tsetTimeout((): void => {\n\t\t\tconst {\n\t\t\t\tfile,\n\t\t\t\toptions = {},\n\t\t\t\tgetResizedImageSizeSource,\n\t\t\t\tcreateImagePreviewCanvasSource,\n\t\t\t\tsharpenSource,\n\t\t\t\tshouldSharpenSource,\n\t\t\t\t/* type, */\n\t\t\t} = event.data.message;\n\n\t\t\tcreateImageBitmap(file)\n\t\t\t\t.then((bitmap: ImageBitmap) => {\n\t\t\t\t\tconst getResizedImageSize = new Function(`return ${getResizedImageSizeSource}`)();\n\t\t\t\t\tconst { targetWidth, targetHeight, useOriginalSize } = getResizedImageSize(bitmap, options);\n\n\t\t\t\t\tif (useOriginalSize)\n\t\t\t\t\t{\n\t\t\t\t\t\tbitmap.close();\n\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\tid: event?.data?.id,\n\t\t\t\t\t\t\tmessage: {\n\t\t\t\t\t\t\t\tuseOriginalSize,\n\t\t\t\t\t\t\t\ttargetWidth,\n\t\t\t\t\t\t\t\ttargetHeight,\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\tconst createImagePreviewCanvas = new Function(`return ${createImagePreviewCanvasSource}`)();\n\t\t\t\t\t\tlet offscreenCanvas: OffscreenCanvas = createImagePreviewCanvas(bitmap, targetWidth, targetHeight);\n\n\t\t\t\t\t\tconst sharpen = new Function(`return ${sharpenSource}`)();\n\t\t\t\t\t\tconst shouldSharpen = new Function(`return ${shouldSharpenSource}`)();\n\t\t\t\t\t\tif (shouldSharpen(bitmap, targetWidth, targetHeight))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsharpen(offscreenCanvas, targetWidth, targetHeight, 0.2);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbitmap.close();\n\n\t\t\t\t\t\tconst previewBitmap = offscreenCanvas.transferToImageBitmap();\n\n\t\t\t\t\t\toffscreenCanvas.width = 0;\n\t\t\t\t\t\toffscreenCanvas.height = 0;\n\t\t\t\t\t\toffscreenCanvas = null;\n\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\tid: event?.data?.id,\n\t\t\t\t\t\t\tmessage: {\n\t\t\t\t\t\t\t\tbitmap: previewBitmap,\n\t\t\t\t\t\t\t\tuseOriginalSize,\n\t\t\t\t\t\t\t\ttargetWidth,\n\t\t\t\t\t\t\t\ttargetHeight,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, [previewBitmap]);\n\n\t\t\t\t\t\t// const { quality = 0.92 } = options;\n\t\t\t\t\t\t// offscreenCanvas.convertToBlob({ quality, type })\n\t\t\t\t\t\t// \t.then((blob: Blob): void => {\n\t\t\t\t\t\t// \t\tself.postMessage({\n\t\t\t\t\t\t// \t\t\tid: event?.data?.id,\n\t\t\t\t\t\t// \t\t\tmessage: {\n\t\t\t\t\t\t// \t\t\t\tblob,\n\t\t\t\t\t\t// \t\t\t\tuseOriginalSize,\n\t\t\t\t\t\t// \t\t\t\ttargetWidth,\n\t\t\t\t\t\t// \t\t\t\ttargetHeight,\n\t\t\t\t\t\t// \t\t\t},\n\t\t\t\t\t\t// \t\t}, []);\n\t\t\t\t\t\t// \t})\n\t\t\t\t\t\t// \t.catch((error): void => {\n\t\t\t\t\t\t// \t\tconsole.log('Resize Worker Error (convertToBlob)', error);\n\t\t\t\t\t\t// \t\tself.postMessage({\n\t\t\t\t\t\t// \t\t\tid: event.data.id,\n\t\t\t\t\t\t// \t\t\tmessage: null,\n\t\t\t\t\t\t// \t\t}, []);\n\t\t\t\t\t\t// \t})\n\t\t\t\t\t\t// ;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error): void => {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.log('Uploader: Resize Worker Error (createImageBitmap)', error);\n\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\tid: event.data.id,\n\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t}, []);\n\t\t\t\t})\n\t\t\t;\n\t\t}, 0);\n\t};\n};\n\nexport default ResizeWorker;\n","const loadImage = (file: File | Blob) => new Promise((resolve, reject) => {\n\tconst image: HTMLImageElement = 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;\n","/* eslint-disable @bitrix24/bitrix24-rules/no-typeof */\n\n// Warning!\n// This function uses in a resize workers.\n// You cannot import anything from other files and extensions.\nconst createImagePreviewCanvas = (\n\timageSource: CanvasImageSource,\n\tnewWidth: number,\n\tnewHeight: number,\n): HTMLCanvasElement | OffscreenCanvas => {\n\tconst width: number = Math.round(newWidth);\n\tconst height: number = Math.round(newHeight);\n\n\tconst isPageContext: boolean = (\n\t\ttypeof (window) !== 'undefined'\n\t\t&& typeof (document) !== 'undefined'\n\t\t&& typeof (parent) !== 'undefined'\n\t);\n\n\tconst createCanvas = (canvasWidth: number, canvasHeight: number): HTMLCanvasElement | OffscreenCanvas => {\n\t\tif (isPageContext)\n\t\t{\n\t\t\tconst canvas: HTMLCanvasElement = document.createElement('canvas');\n\t\t\tcanvas.width = canvasWidth;\n\t\t\tcanvas.height = canvasHeight;\n\n\t\t\treturn canvas;\n\t\t}\n\n\t\treturn new OffscreenCanvas(canvasWidth, canvasHeight);\n\t};\n\n\tif (imageSource.height <= height && imageSource.width <= width)\n\t{\n\t\tconst canvas: HTMLCanvasElement = createCanvas(width, height);\n\t\tconst context: CanvasRenderingContext2D = canvas.getContext('2d');\n\t\tcontext.imageSmoothingQuality = 'high';\n\t\tcontext.drawImage(imageSource, 0, 0, width, height);\n\n\t\treturn canvas;\n\t}\n\n\tlet currentImageWidth: number = Math.floor(imageSource.width);\n\tlet currentImageHeight: number = Math.floor(imageSource.height);\n\tlet currentImageSource: CanvasImageSource = imageSource;\n\tlet resizingCanvas: HTMLCanvasElement = null;\n\n\twhile (currentImageWidth * 0.5 > width)\n\t{\n\t\tconst halfImageWidth: number = Math.floor(currentImageWidth * 0.5);\n\t\tconst halfImageHeight: number = Math.floor(currentImageHeight * 0.5);\n\n\t\tresizingCanvas = createCanvas(halfImageWidth, halfImageHeight);\n\t\tconst resizingCanvasContext: CanvasRenderingContext2D = resizingCanvas.getContext('2d');\n\t\tresizingCanvasContext.imageSmoothingQuality = 'high';\n\n\t\tresizingCanvasContext.drawImage(\n\t\t\tcurrentImageSource,\n\t\t\t0,\n\t\t\t0,\n\t\t\tcurrentImageWidth,\n\t\t\tcurrentImageHeight,\n\t\t\t0,\n\t\t\t0,\n\t\t\thalfImageWidth,\n\t\t\thalfImageHeight,\n\t\t);\n\n\t\tcurrentImageWidth = halfImageWidth;\n\t\tcurrentImageHeight = halfImageHeight;\n\t\tcurrentImageSource = resizingCanvas;\n\t}\n\n\tconst outputCanvas: HTMLCanvasElement = createCanvas(width, height);\n\tconst outputCanvasContext: CanvasRenderingContext2D = outputCanvas.getContext('2d');\n\toutputCanvasContext.imageSmoothingQuality = 'high';\n\toutputCanvasContext.drawImage(\n\t\tresizingCanvas === null ? imageSource : resizingCanvas,\n\t\t0,\n\t\t0,\n\t\tcurrentImageWidth,\n\t\tcurrentImageHeight,\n\t\t0,\n\t\t0,\n\t\twidth,\n\t\theight,\n\t);\n\n\tif (resizingCanvas)\n\t{\n\t\tresizingCanvas.width = 0;\n\t\tresizingCanvas.height = 0;\n\t\tresizingCanvas = null;\n\n\t\tcurrentImageSource.width = 0;\n\t\tcurrentImageSource.height = 0;\n\t\tcurrentImageSource = null;\n\t}\n\n\treturn outputCanvas;\n};\n\nexport default createImagePreviewCanvas;\n","import type { 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/*\n\tif (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\t*/\n\n\treturn {\n\t\ttargetWidth: Math.floor(width),\n\t\ttargetHeight: Math.floor(height),\n\t\tuseOriginalSize: false,\n\t};\n};\n\nexport default getResizedImageSize;\n","import { Type } from 'main.core';\nimport createBlobFromDataUri from './create-blob-from-data-uri';\n\nconst canvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\nconst hasToBlobSupport = window.HTMLCanvasElement && canvasPrototype.toBlob;\nconst canUseOffscreenCanvas: boolean = !Type.isUndefined(window.OffscreenCanvas);\n\nconst convertCanvasToBlob = (canvas: HTMLCanvasElement, type: string, quality: number): Promise<Blob> => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (canUseOffscreenCanvas && (canvas instanceof OffscreenCanvas))\n\t\t{\n\t\t\tcanvas.convertToBlob({ type, quality }).then((blob: Blob) => {\n\t\t\t\tresolve(blob);\n\t\t\t}).catch((error) => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t\telse if (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;\n","import { Browser } from 'main.core';\n\nconst supportedMimeTypes: string[] = (\n\tBrowser.isSafari()\n\t\t? ['image/jpeg', 'image/png']\n\t\t: ['image/jpeg', 'image/png', 'image/webp']\n);\n\nconst isSupportedMimeType = (mimeType: string): boolean => {\n\treturn supportedMimeTypes.includes(mimeType);\n};\n\nexport default isSupportedMimeType;\n","export const sharpen = (\n\tcanvas: HTMLCanvasElement | OffscreenCanvas,\n\twidth: number,\n\theight: number,\n\tmixFactor: number,\n): void => {\n\tconst context: CanvasRenderingContext2D = canvas.getContext('2d');\n\tconst weights: number[] = [0, -1, 0, -1, 5, -1, 0, -1, 0];\n\tconst katet: number = Math.round(Math.sqrt(weights.length));\n\tconst half: number = Math.trunc(katet * 0.5);\n\tconst destinationData: ImageData = context.createImageData(width, height);\n\tconst destinationBuffer: Uint8ClampedArray = destinationData.data;\n\tconst sourceBuffer: Uint8ClampedArray = context.getImageData(0, 0, width, height).data;\n\tlet y: number = height;\n\twhile (y--)\n\t{\n\t\tlet x: number = width;\n\t\twhile (x--)\n\t\t{\n\t\t\tconst sy: number = y;\n\t\t\tconst sx: number = x;\n\t\t\tconst dstOff: number = (y * width + x) * 4;\n\t\t\tlet red = 0;\n\t\t\tlet green = 0;\n\t\t\tlet blue = 0;\n\t\t\t// let alpha = 0;\n\n\t\t\tfor (let cy = 0; cy < katet; cy++)\n\t\t\t{\n\t\t\t\tfor (let cx = 0; cx < katet; cx++)\n\t\t\t\t{\n\t\t\t\t\tconst scy: number = sy + cy - half;\n\t\t\t\t\tconst scx: number = sx + cx - half;\n\t\t\t\t\tif (scy >= 0 && scy < height && scx >= 0 && scx < width)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst srcOff: number = (scy * width + scx) * 4;\n\t\t\t\t\t\tconst wt: number = weights[cy * katet + cx];\n\t\t\t\t\t\tred += sourceBuffer[srcOff] * wt;\n\t\t\t\t\t\tgreen += sourceBuffer[srcOff + 1] * wt;\n\t\t\t\t\t\tblue += sourceBuffer[srcOff + 2] * wt;\n\t\t\t\t\t\t// alpha += sourceBuffer[srcOff + 3] * wt;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdestinationBuffer[dstOff] = red * mixFactor + sourceBuffer[dstOff] * (1 - mixFactor);\n\t\t\tdestinationBuffer[dstOff + 1] = green * mixFactor + sourceBuffer[dstOff + 1] * (1 - mixFactor);\n\t\t\tdestinationBuffer[dstOff + 2] = blue * mixFactor + sourceBuffer[dstOff + 2] * (1 - mixFactor);\n\t\t\tdestinationBuffer[dstOff + 3] = sourceBuffer[dstOff + 3];\n\t\t}\n\t}\n\n\tcontext.putImageData(destinationData, 0, 0);\n};\n\nexport const shouldSharpen = (imageData: CanvasImageSource, width: number, height: number): boolean => {\n\tconst scaleX: number = width / imageData.width;\n\tconst scaleY: number = height / imageData.height;\n\n\tconst scale: number = Math.min(scaleX, scaleY);\n\n\t// if target scale is less than half\n\treturn scale < 0.5;\n};\n","import getResizedImageSize from './get-resized-image-size';\nimport createImagePreviewCanvas from './create-image-preview-canvas';\nimport convertCanvasToBlob from './convert-canvas-to-blob';\nimport isSupportedMimeType from './is-supported-mime-type';\nimport { sharpen, shouldSharpen } from './sharpen';\n\nimport type { ResizeImageMimeType, ResizeImageOptions } from '../types/resize-image-options';\n\nconst createImagePreview = (imageData: ImageBitmap | HTMLImageElement, options: ResizeImageOptions): Promise => {\n\tconst { targetWidth, targetHeight } = getResizedImageSize(imageData, options);\n\n\tconst canvas: HTMLCanvasElement = createImagePreviewCanvas(imageData, targetWidth, targetHeight);\n\tif (shouldSharpen(imageData, targetWidth, targetHeight))\n\t{\n\t\tsharpen(canvas, targetWidth, targetHeight, 0.2);\n\t}\n\n\tconst { quality = 0.92 } = options;\n\tconst mimeType: ResizeImageMimeType = isSupportedMimeType(options.mimeType) ? options.mimeType : 'image/jpeg';\n\n\treturn convertCanvasToBlob(canvas, mimeType, quality).then((blob) => {\n\t\treturn {\n\t\t\twidth: targetWidth,\n\t\t\theight: targetHeight,\n\t\t\tblob,\n\t\t};\n\t});\n};\n\nexport default createImagePreview;\n","import isSupportedMimeType from './is-supported-mime-type';\n\nimport type { ResizeImageOptions, ResizeImageMimeTypeMode, ResizeImageMimeType } from '../types/resize-image-options';\n\nconst getCanvasToBlobType = (blob: Blob, options: ResizeImageOptions): string => {\n\tconst mimeType: ResizeImageMimeType = isSupportedMimeType(options.mimeType) ? options.mimeType : 'image/jpeg';\n\tconst mimeTypeMode: ResizeImageMimeTypeMode = options.mimeTypeMode;\n\tif (mimeTypeMode === 'force')\n\t{\n\t\treturn mimeType;\n\t}\n\n\treturn isSupportedMimeType(blob.type) ? blob.type : mimeType;\n};\n\nexport default getCanvasToBlobType;\n","const getFilenameWithoutExtension = (name) => {\n\treturn name.slice(0, Math.max(0, name.lastIndexOf('.'))) || name;\n};\n\nexport default getFilenameWithoutExtension;\n","import getFilenameWithoutExtension from './get-filename-without-extension';\n\nconst extensionMap = {\n\tjpeg: '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;\n","import { Browser, Type } from 'main.core';\n\nimport createWorker from './create-worker';\nimport BitmapWorker from './bitmap-worker';\nimport ResizeWorker from './resize-worker';\nimport loadImage from './load-image';\nimport createImagePreviewCanvas from './create-image-preview-canvas';\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 getResizedImageSize from './get-resized-image-size';\nimport { sharpen, shouldSharpen } from './sharpen';\n\nimport type { ResizeImageOptions } from '../types/resize-image-options';\nimport type { ResizeImageResult } from '../types/resize-image-result';\nimport convertCanvasToBlob from './convert-canvas-to-blob';\n\nlet canCreateImageBitmap = (\n\t'createImageBitmap' in window\n\t&& !Type.isUndefined(window.ImageBitmap)\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 = /version\\/([\\d.]+)/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 createImagePreviewCanvasSource = createImagePreviewCanvas.toString();\nconst getResizedImageSizeSource = getResizedImageSize.toString();\nconst sharpenSource = sharpen.toString();\nconst shouldSharpenSource = shouldSharpen.toString();\nconst canUseOffscreenCanvas: boolean = canCreateImageBitmap && !Type.isUndefined(window.OffscreenCanvas);\n\n// eslint-disable-next-line max-lines-per-function\nconst resizeImage = (source: Blob | File, options: ResizeImageOptions): Promise<ResizeImageResult> => {\n\t// eslint-disable-next-line max-lines-per-function\n\treturn new Promise((resolve, reject) => {\n\t\tif (canUseOffscreenCanvas)\n\t\t{\n\t\t\tconst resizeWorker = createWorker(ResizeWorker);\n\t\t\tconst type: string = getCanvasToBlobType(source, options);\n\n\t\t\tresizeWorker.post(\n\t\t\t\t{\n\t\t\t\t\tfile: source,\n\t\t\t\t\ttype,\n\t\t\t\t\toptions,\n\t\t\t\t\tcreateImagePreviewCanvasSource,\n\t\t\t\t\tgetResizedImageSizeSource,\n\t\t\t\t\tsharpenSource,\n\t\t\t\t\tshouldSharpenSource,\n\t\t\t\t},\n\t\t\t\t(message): void => {\n\t\t\t\t\tresizeWorker.terminate();\n\t\t\t\t\tif (message)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst { bitmap, targetWidth, targetHeight, useOriginalSize } = message;\n\t\t\t\t\t\tif (useOriginalSize)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\tpreview: source,\n\t\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\t\theight: targetHeight,\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\tlet canvas: HTMLCanvasElement = document.createElement('canvas');\n\t\t\t\t\t\t\tcanvas.width = bitmap.width;\n\t\t\t\t\t\t\tcanvas.height = bitmap.height;\n\t\t\t\t\t\t\tconst context = canvas.getContext('bitmaprenderer');\n\t\t\t\t\t\t\tcontext.transferFromImageBitmap(bitmap);\n\n\t\t\t\t\t\t\t// console.log('bitmaprenderer');\n\n\t\t\t\t\t\t\tconst { quality = 0.92 } = options;\n\t\t\t\t\t\t\tconvertCanvasToBlob(canvas, type, quality).then((blob) => {\n\t\t\t\t\t\t\t\tlet preview: Blob = blob;\n\t\t\t\t\t\t\t\tif (Type.isFile(source))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// File type could be changed pic.gif -> pic.jpg\n\t\t\t\t\t\t\t\t\tconst newFileName = renameFileToMatchMimeType(source.name, type);\n\t\t\t\t\t\t\t\t\tpreview = createFileFromBlob(blob, newFileName);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\tpreview,\n\t\t\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\t\t\theight: targetHeight,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((error) => {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\t\tconsole.log('Uploader: convertCanvasToBlob error', error);\n\t\t\t\t\t\t\t\tloadImageDataFallback();\n\t\t\t\t\t\t\t}).finally(() => {\n\t\t\t\t\t\t\t\tcanvas.width = 0;\n\t\t\t\t\t\t\t\tcanvas.height = 0;\n\t\t\t\t\t\t\t\tcanvas = null;\n\n\t\t\t\t\t\t\t\tbitmap.close();\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t// let preview: Blob = blob;\n\t\t\t\t\t\t\t// if (Type.isFile(source))\n\t\t\t\t\t\t\t// {\n\t\t\t\t\t\t\t// \t// File type could be changed pic.gif -> pic.jpg\n\t\t\t\t\t\t\t// \tconst newFileName = renameFileToMatchMimeType(source.name, type);\n\t\t\t\t\t\t\t// \tpreview = createFileFromBlob(blob, newFileName);\n\t\t\t\t\t\t\t// }\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// resolve({\n\t\t\t\t\t\t\t// \tpreview,\n\t\t\t\t\t\t\t// \twidth: targetWidth,\n\t\t\t\t\t\t\t// \theight: targetHeight,\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\tloadImageDataFallback();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\telse if (canCreateImageBitmap)\n\t\t{\n\t\t\tconst bitmapWorker = createWorker(BitmapWorker);\n\t\t\tbitmapWorker.post(\n\t\t\t\t{ file: source },\n\t\t\t\t(imageBitmap: ImageBitmap): void => {\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\n\t\tfunction handleImageLoad(imageData: ImageBitmap | HTMLImageElement): void\n\t\t{\n\t\t\tconst { useOriginalSize, targetWidth, targetHeight } = getResizedImageSize(imageData, options);\n\t\t\tif (useOriginalSize)\n\t\t\t{\n\t\t\t\t// if it was ImageBitmap\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: targetWidth,\n\t\t\t\t\theight: targetHeight,\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst mimeType: string = getCanvasToBlobType(source, options);\n\t\t\t\tcreateImagePreview(imageData, { ...options, mimeType })\n\t\t\t\t\t.then(({ blob, width, height }): void => {\n\t\t\t\t\t\tlet preview: Blob = blob;\n\t\t\t\t\t\tif (Type.isFile(source))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// File type could be changed pic.gif -> pic.jpg\n\t\t\t\t\t\t\tconst newFileName = renameFileToMatchMimeType(source.name, mimeType);\n\t\t\t\t\t\t\tpreview = createFileFromBlob(blob, newFileName);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve({ preview, width, height });\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t})\n\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t// if it was ImageBitmap\n\t\t\t\t\t\tif ('close' in imageData)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\timageData.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t}\n\t\t}\n\n\t\tfunction loadImageDataFallback(): void\n\t\t{\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log('Uploader: resize image fallback');\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\t});\n};\n\nexport default resizeImage;\n","import type UploaderFile from '../uploader-file';\n\nconst isVideo = (file: UploaderFile) => {\n\treturn /^video\\/[\\d.a-z-]+$/i.test(file.getType()) || file.getExtension() === 'mkv';\n};\n\nexport default isVideo;\n","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 createImagePreviewCanvas from './create-image-preview-canvas';\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 || 'Error while loading video file');\n\t\t});\n\n\t\tEvent.bind(video, 'loadedmetadata', () => {\n\t\t\tvideo.currentTime = video.duration < seekTime ? 0 : 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\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst canvas: HTMLCanvasElement = createImagePreviewCanvas(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;\n","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 { UploaderOptions } from '../types/uploader-options';\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\t#imagePreviewFilter: Function = null;\n\n\tconstructor(uploader: Uploader, filterOptions: UploaderOptions = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options: UploaderOptions = 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\tthis.setImagePreviewFilter(options.imagePreviewFilter);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve): void => {\n\t\t\tif (!file.shouldTreatImageAsFile() && isResizableImage(file.getBinary()))\n\t\t\t{\n\t\t\t\tconst result: boolean | ResizeImageOptions = this.invokeFilter(file);\n\t\t\t\tif (result === false)\n\t\t\t\t{\n\t\t\t\t\tresolve();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst resizeOptions = Type.isPlainObject(result) ? result : {};\n\n\t\t\t\t// const start = performance.now();\n\t\t\t\tresizeImage(file.getBinary(), this.#getResizeImageOptions(resizeOptions))\n\t\t\t\t\t.then(({ preview, width, height }): void => {\n\t\t\t\t\t\t// console.log(`resizeImage took ${performance.now() - start} milliseconds.`);\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): void => {\n\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.warn('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) && !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 }): void => {\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): void => {\n\t\t\t\t\t\tif (error)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.warn('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): void\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): void\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): void\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): void\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): void\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): void\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): void\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\tsetImagePreviewFilter(fn: Function): void\n\t{\n\t\tif (Type.isFunction(fn))\n\t\t{\n\t\t\tthis.#imagePreviewFilter = fn;\n\t\t}\n\t}\n\n\tinvokeFilter(file: UploaderFile): boolean | ResizeImageOptions\n\t{\n\t\tif (this.#imagePreviewFilter !== null)\n\t\t{\n\t\t\tconst result = this.#imagePreviewFilter(file);\n\t\t\tif (Type.isBoolean(result) || Type.isPlainObject(result))\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t#getResizeImageOptions(overrides: ResizeImageOptions = {}): ResizeImageOptions\n\t{\n\t\treturn {\n\t\t\twidth: Type.isNumber(overrides.width) ? overrides.width : this.getImagePreviewWidth(),\n\t\t\theight: Type.isNumber(overrides.height) ? overrides.height : this.getImagePreviewHeight(),\n\t\t\tmode: Type.isStringFilled(overrides.mode) ? overrides.mode : this.getImagePreviewResizeMode(),\n\t\t\tupscale: Type.isBoolean(overrides.upscale) ? overrides.upscale : this.getImagePreviewUpscale(),\n\t\t\tquality: Type.isNumber(overrides.quality) ? overrides.quality : this.getImagePreviewQuality(),\n\t\t\tmimeType: Type.isStringFilled(overrides.mimeType) ? overrides.mimeType : this.getImagePreviewMimeType(),\n\t\t\tmimeTypeMode:\n\t\t\t\tType.isStringFilled(overrides.mimeTypeMode)\n\t\t\t\t\t? overrides.mimeTypeMode\n\t\t\t\t\t: this.getImagePreviewMimeTypeMode()\n\t\t\t,\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 { UploaderOptions } from '../types/uploader-options';\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\t#resizeFilter: Function = null;\n\n\tconstructor(uploader: Uploader, filterOptions: UploaderOptions = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options: UploaderOptions = 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\tthis.setResizeFilter(options.imageResizeFilter);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve): void => {\n\t\t\tif (this.getResizeWidth() === null && this.getResizeHeight() === null)\n\t\t\t{\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (file.shouldTreatImageAsFile() || !isResizableImage(file.getBinary()))\n\t\t\t{\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst result: boolean | ResizeImageOptions = this.invokeFilter(file);\n\t\t\tif (result === false)\n\t\t\t{\n\t\t\t\tresolve();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = Type.isPlainObject(result) ? result : {};\n\t\t\tconst options: ResizeImageOptions = {\n\t\t\t\twidth: Type.isNumber(overrides.width) ? overrides.width : this.getResizeWidth(),\n\t\t\t\theight: Type.isNumber(overrides.height) ? overrides.height : this.getResizeHeight(),\n\t\t\t\tmode: Type.isStringFilled(overrides.mode) ? overrides.mode : this.getResizeMode(),\n\t\t\t\tquality: Type.isNumber(overrides.quality) ? overrides.quality : this.getResizeQuality(),\n\t\t\t\tmimeType: Type.isStringFilled(overrides.mimeType) ? overrides.mimeType : this.getResizeMimeType(),\n\t\t\t\tmimeTypeMode: (\n\t\t\t\t\tType.isStringFilled(overrides.mimeTypeMode) ? overrides.mimeTypeMode : this.getResizeMimeTypeMode()\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tresizeImage(file.getBinary(), options)\n\t\t\t\t.then(({ preview, width, height }): void => {\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): void => {\n\t\t\t\t\tif (error)\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn('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): void\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): void\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): void\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\tsetResizeFilter(fn: Function): void\n\t{\n\t\tif (Type.isFunction(fn))\n\t\t{\n\t\t\tthis.#resizeFilter = fn;\n\t\t}\n\t}\n\n\tinvokeFilter(file: UploaderFile): boolean | ResizeImageOptions\n\t{\n\t\tif (this.#resizeFilter !== null)\n\t\t{\n\t\t\tconst result = this.#resizeFilter(file);\n\t\t\tif (Type.isBoolean(result) || Type.isPlainObject(result))\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","export const UploaderStatus: Object<string, string> = {\n\tSTARTED: 0,\n\tSTOPPED: 1,\n};\n","/**\n * @namespace BX.UI.Uploader\n */\nexport 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\tBEFORE_FILES_ADD: 'onBeforeFilesAdd',\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};\n","/**\n * @namespace BX.UI.Uploader\n */\nexport const FilterType = {\n\tVALIDATION: 'validation',\n\tPREPARATION: 'preparation',\n};\n","const getFilesInDirectory = (entry: FileSystemDirectoryEntry): Promise<File[]> => {\n\treturn new Promise((resolve, reject): void => {\n\t\tconst files = [];\n\t\tlet dirCounter = 0;\n\t\tlet fileCounter = 0;\n\n\t\tconst resolveIfDone = (): void => {\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: FileSystemDirectoryEntry): void => {\n\t\t\tdirCounter++;\n\t\t\tconst directoryReader: FileSystemDirectoryReader = dirEntry.createReader();\n\t\t\tconst readBatch = (): void => {\n\t\t\t\tdirectoryReader.readEntries((entries: FileSystemEntry[]): void => {\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\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.forEach((fileEntry: FileSystemFileEntry | FileSystemDirectoryEntry): void => {\n\t\t\t\t\t\tif (fileEntry.isDirectory)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadEntries(fileEntry);\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\tfileEntry.file((file: File): void => {\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\nexport default getFilesInDirectory;\n","const isDirectoryEntry = (item: DataTransferItem): boolean => {\n\treturn 'webkitGetAsEntry' in item && (item.webkitGetAsEntry() || {}).isDirectory === true;\n};\n\nexport default isDirectoryEntry;\n","const isFileSystemItem = (item: DataTransferItem) => {\n\tif ('webkitGetAsEntry' in item)\n\t{\n\t\tconst entry: ?FileSystemEntry = 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\nexport default isFileSystemItem;\n","import getFilesInDirectory from './get-files-in-directory';\nimport isDirectoryEntry from './is-directory-entry';\nimport isFileSystemItem from './is-file-system-item';\n\nconst getFilesFromItem = (item: DataTransferItem): Promise<File[]> => {\n\treturn new Promise((resolve, reject): void => {\n\t\tif (isDirectoryEntry(item))\n\t\t{\n\t\t\tgetFilesInDirectory(item.webkitGetAsEntry())\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\nexport const getFilesFromDataTransfer = (dataTransfer: DataTransfer, browseFolders = true): Promise<File[]> => {\n\treturn new Promise((resolve, reject): void => {\n\t\tif (!dataTransfer.items || dataTransfer.items.length === 0)\n\t\t{\n\t\t\tresolve(dataTransfer.files ? [...dataTransfer.files] : []);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst items: Promise[] = [...dataTransfer.items]\n\t\t\t.filter((item: DataTransferItem): boolean => {\n\t\t\t\treturn browseFolders ? isFileSystemItem(item) : item.kind === 'file';\n\t\t\t})\n\t\t\t.map((item: DataTransferItem): Promise => {\n\t\t\t\treturn getFilesFromItem(item);\n\t\t\t})\n\t\t;\n\n\t\tPromise.all(items)\n\t\t\t.then((fileGroups: Array<File[]>): void => {\n\t\t\t\tconst files = [];\n\t\t\t\tfileGroups.forEach((group: File[]): void => {\n\t\t\t\t\tfiles.push(...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 const hasDataTransferOnlyFiles = (dataTransfer: DataTransfer, browseFolders = true): Promise<File[]> => {\n\treturn new Promise((resolve, reject): void => {\n\t\tif (!dataTransfer.items)\n\t\t{\n\t\t\tresolve(dataTransfer.files ? dataTransfer.files.length > 0 : false);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst success: boolean = [...dataTransfer.items].every((item: DataTransferItem): boolean => {\n\t\t\treturn browseFolders ? isFileSystemItem(item) : item.kind === 'file' && !isDirectoryEntry(item);\n\t\t});\n\n\t\tresolve(success);\n\t});\n};\n\nexport const isFilePasted = (dataTransfer: DataTransfer, browseFolders = true): boolean => {\n\tif (!dataTransfer.types.includes('Files'))\n\t{\n\t\treturn false;\n\t}\n\n\tlet files = 0;\n\tlet texts = 0;\n\tconst items: DataTransferItemList = dataTransfer.items;\n\tfor (const item of items)\n\t{\n\t\tif (item.kind === 'string')\n\t\t{\n\t\t\ttexts++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst isFile = browseFolders ? isFileSystemItem(item) : item.kind === 'file' && !isDirectoryEntry(item);\n\t\t\tif (isFile)\n\t\t\t{\n\t\t\t\tfiles++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn files >= texts;\n};\n","let result = null;\n\nconst canAppendFileToForm = (): boolean => {\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\n\t\t{\n\t\t\tresult = false;\n\t\t}\n\t}\n\n\treturn result;\n};\n\nexport default canAppendFileToForm;\n","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((item) => {\n\t\t\tdataTransfer.items.add(item);\n\t\t});\n\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tinput.files = dataTransfer.files;\n\t}\n\tcatch\n\t{\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nexport default assignFileToInput;\n","import { Type, Event, Reflection, Dom, Extension, Text, type JsonObject } 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';\nimport UploadController from './backend/upload-controller';\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, isFilePasted } 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';\nimport type { ServerOptions } from './types/server-options';\nimport type { RemoveFileOptions } from './types/remove-file-options';\nimport type { DestroyOptions } from './types/destroy-options';\n\nconst instances = new Map();\n\n/**\n * @namespace BX.UI.Uploader\n */\nexport default class Uploader extends EventEmitter\n{\n\t#id: ?string = null;\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\t#assignServerFile: boolean = true;\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\tstatic getById(id: string): ?Uploader\n\t{\n\t\treturn instances.get(id) || null;\n\t}\n\n\tstatic getInstances(): Uploader[]\n\t{\n\t\treturn [...instances.values()];\n\t}\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: UploaderOptions = Type.isPlainObject(uploaderOptions) ? ({ ...uploaderOptions }) : {};\n\t\tthis.#id = Type.isStringFilled(options.id) ? options.id : `ui-uploader-${Text.getRandom().toLowerCase()}`;\n\t\tthis.#multiple = Type.isBoolean(options.multiple) ? options.multiple : false;\n\n\t\tconst acceptOnlyImages: ?boolean = Type.isBoolean(options.acceptOnlyImages) ? options.acceptOnlyImages : null;\n\t\tconst acceptOnlyImagesGlobal: ?boolean = Uploader.getGlobalOption('acceptOnlyImages', null);\n\t\tthis.setAcceptOnlyImages(acceptOnlyImages || acceptOnlyImagesGlobal);\n\n\t\tif (Type.isString(options.acceptedFileTypes) || Type.isArray(options.acceptedFileTypes))\n\t\t{\n\t\t\tthis.setAcceptedFileTypes(options.acceptedFileTypes);\n\t\t}\n\t\telse if (acceptOnlyImages !== true)\n\t\t{\n\t\t\tconst acceptedFileTypesGlobal = Uploader.getGlobalOption('acceptedFileTypes', null);\n\t\t\tthis.setAcceptedFileTypes(acceptedFileTypesGlobal);\n\t\t}\n\n\t\tconst ignoredFileNames: ?string[] = (\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\t\tthis.setAssignServerFile(options.assignServerFile);\n\n\t\tthis.setAutoUpload(options.autoUpload);\n\t\tthis.setMaxParallelUploads(options.maxParallelUploads);\n\t\tthis.setMaxParallelLoads(options.maxParallelLoads);\n\n\t\tlet serverOptions: ServerOptions = Type.isPlainObject(options.serverOptions) ? options.serverOptions : {};\n\t\tserverOptions = {\n\t\t\tcontroller: options.controller,\n\t\t\tcontrollerOptions: options.controllerOptions,\n\t\t\t...serverOptions,\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\n\t\tinstances.set(this.#id, this);\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): UploaderFile[]\n\t{\n\t\tif (!Type.isArrayLike(fileList))\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tconst files: UploaderFile[] = [];\n\t\t[...fileList].forEach((item) => {\n\t\t\tif (item instanceof UploaderFile)\n\t\t\t{\n\t\t\t\tif (item.getStatus() === FileStatus.INIT)\n\t\t\t\t{\n\t\t\t\t\tfiles.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (Type.isArrayFilled(item))\n\t\t\t{\n\t\t\t\tfiles.push(new UploaderFile(item[0], item[1]));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfiles.push(new UploaderFile(item));\n\t\t\t}\n\t\t});\n\n\t\tconst event: BaseEvent = new BaseEvent({ data: { files: [...files] } });\n\t\tthis.emit(UploaderEvent.BEFORE_FILES_ADD, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\tconst { error } = event.getData();\n\t\t\tif (error instanceof UploaderError)\n\t\t\t{\n\t\t\t\tthis.emit(UploaderEvent.ERROR, { error });\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\n\t\tif (this.#exceedsMaxFileCount(files))\n\t\t{\n\t\t\treturn [];\n\t\t}\n\n\t\tconst results = [];\n\t\tfiles.forEach((file) => {\n\t\t\tconst result: UploaderFile | null = this.addFile(file);\n\t\t\tif (result !== null)\n\t\t\t{\n\t\t\t\tresults.push(result);\n\t\t\t}\n\t\t});\n\n\t\treturn results;\n\t}\n\n\taddFile(\n\t\tsource: File | Blob | string | number | UploaderFileOptions,\n\t\toptions: UploaderFileOptions,\n\t): UploaderFile | null\n\t{\n\t\tlet file: UploaderFile = null;\n\t\tif (source instanceof UploaderFile)\n\t\t{\n\t\t\tif (source.getStatus() === FileStatus.INIT)\n\t\t\t{\n\t\t\t\tfile = source;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfile = new UploaderFile(source, options);\n\t\t}\n\n\t\tif (this.getIgnoredFileNames().includes(file.getName().toLowerCase()))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.#exceedsMaxFileCount([file]))\n\t\t{\n\t\t\treturn null;\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: BaseEvent = new BaseEvent({ data: { file } });\n\t\tthis.emit(UploaderEvent.FILE_BEFORE_ADD, event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn null;\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.isLoadable())\n\t\t{\n\t\t\tif (file.getOrigin() === FileOrigin.SERVER)\n\t\t\t{\n\t\t\t\tconst preloaded: boolean = Type.isStringFilled(file.getName());\n\t\t\t\tif (!preloaded || file.shouldForceServerLoad())\n\t\t\t\t{\n\t\t\t\t\tfile.setLoadController(this.getServer().createServerLoadController());\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfile.setLoadController(this.getServer().createServerlessLoadController());\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfile.setLoadController(this.getServer().createClientLoadController());\n\t\t\t}\n\t\t}\n\n\t\tif (!file.isUploadable() && file.getOrigin() === FileOrigin.CLIENT)\n\t\t{\n\t\t\tconst uploadController: UploadController | null = this.getServer().createUploadController();\n\t\t\tfile.setUploadController(uploadController);\n\t\t}\n\n\t\tif (!file.isRemoveable())\n\t\t{\n\t\t\tfile.setRemoveController(this.getServer().createRemoveController());\n\t\t}\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.CLIENT)\n\t\t{\n\t\t\tthis.#loadNext();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfile.load();\n\t\t}\n\n\t\treturn file;\n\t}\n\n\t#setLoadEvents(file: UploaderFile): void\n\t{\n\t\tfile.subscribeFromOptions({\n\t\t\t[FileEvent.LOAD_START]: (): void => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_LOAD_START, { file });\n\t\t\t},\n\t\t\t[FileEvent.LOAD_PROGRESS]: (event: BaseEvent): void => {\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): void => {\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]: (): void => {\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.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 (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.VALIDATE_FILE_ASYNC]: (event: BaseEvent) => {\n\t\t\t\tconst file: UploaderFile = event.getData().file;\n\n\t\t\t\treturn this.#applyFilters(FilterType.VALIDATION, file);\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\n\t\t\t\treturn this.#applyFilters(FilterType.PREPARATION, file);\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]: (): void => {\n\t\t\t\tthis.emit(UploaderEvent.FILE_UPLOAD_START, { file });\n\t\t\t},\n\t\t\t[FileEvent.UPLOAD_PROGRESS]: (event: BaseEvent): void => {\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): void => {\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]: (): void => {\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): void => {\n\t\t\tconst { error } = event.getData();\n\t\t\tthis.emit(UploaderEvent.FILE_ERROR, { file, error });\n\t\t});\n\n\t\tfile.subscribeOnce(FileEvent.REMOVE_COMPLETE, (): void => {\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 if (this.getUploadingFileCount() >= this.getMaxParallelUploads())\n\t\t{\n\t\t\tevent.preventDefault();\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\tif (property === 'serverFileId')\n\t\t{\n\t\t\tthis.#updateHiddenField(file);\n\t\t}\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: number = fileList.length;\n\t\tconst totalFiles: number = 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 = null;\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: UploaderError = 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\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\tstop(): void\n\t{\n\t\tif (this.#status !== UploaderStatus.STOPPED)\n\t\t{\n\t\t\tthis.#status = UploaderStatus.STOPPED;\n\n\t\t\t// this.getFiles().forEach((file: UploaderFile) => {\n\t\t\t// \tif (file.isUploading())\n\t\t\t// \t{\n\t\t\t// \t\tfile.abort();\n\t\t\t// \t\tfile.setStatus(FileStatus.PENDING);\n\t\t\t// \t}\n\t\t\t// });\n\n\t\t\tthis.emit('onStop');\n\t\t}\n\t}\n\n\tdestroy(options?: DestroyOptions): 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\tconst removeFromServer: boolean = !options || options.removeFilesFromServer !== false;\n\t\tthis.removeFiles({ removeFromServer });\n\n\t\tthis.#resetHiddenFields();\n\t\tinstances.delete(this.getId());\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\tremoveFiles(options?: RemoveFileOptions): void\n\t{\n\t\tthis.getFiles().forEach((file: UploaderFile): void => {\n\t\t\tfile.remove(options);\n\t\t});\n\t}\n\n\tremoveFile(fileOrId: UploaderFile | string, options?: RemoveFileOptions): void\n\t{\n\t\tconst file: UploaderFile = Type.isString(fileOrId) ? this.getFile(fileOrId) : fileOrId;\n\t\tconst index: number = this.#files.indexOf(file);\n\t\tif (index === -1)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfile.remove(options);\n\t}\n\n\t#removeFile(file: UploaderFile)\n\t{\n\t\tconst index: number = this.#files.indexOf(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): boolean => file.getId() === id) || null;\n\t}\n\n\tgetFiles(): UploaderFile[]\n\t{\n\t\treturn [...this.#files];\n\t}\n\n\tgetFileCount(): number\n\t{\n\t\treturn this.#files.length;\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.#id;\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, filterEntity: Filter | Class<Filter> | string, filterOptions: JsonObject = {}): void\n\t{\n\t\tlet filter: Filter = null;\n\t\tif (Type.isFunction(filterEntity) || Type.isString(filterEntity))\n\t\t{\n\t\t\tconst ClassName: Class<Filter> = Type.isString(filterEntity) ? Reflection.getClass(filterEntity) : filterEntity;\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\t\telse\n\t\t{\n\t\t\tfilter = filterEntity;\n\t\t}\n\n\t\tif (filter instanceof Filter)\n\t\t{\n\t\t\tlet filters: Filter[] = 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 TypeError('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): void => {\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(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes: HTMLElement[] = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\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 = null;\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 > 0)\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: BaseEvent = 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([...input.files]);\n\n\t\t// reset file input\n\t\tinput.value = '';\n\t}\n\n\tunassignBrowse(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes: HTMLElement[] = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement | HTMLInputElement): void => {\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\t[...this.#browsingNodes.keys()].forEach((node: HTMLElement): void => {\n\t\t\tthis.unassignBrowse(node);\n\t\t});\n\t}\n\n\tassignDropzone(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement): void => {\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: BaseEvent = 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[]): void => {\n\t\t\tthis.addFiles(files);\n\t\t}).catch((error) => {\n\t\t\tconsole.error('Uploader: data transfer error', error);\n\t\t});\n\t}\n\n\t#preventDefault(event: DragEvent): void\n\t{\n\t\tevent.preventDefault();\n\t}\n\n\tunassignDropzone(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes: HTMLElement[] = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement): void => {\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\t[...this.#dropNodes].forEach((node: HTMLElement): void => {\n\t\t\tthis.unassignDropzone(node);\n\t\t});\n\t}\n\n\tassignPaste(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes: HTMLElement[] = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement): void => {\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\tconst clipboardData: DataTransfer = clipboardEvent.clipboardData;\n\t\tif (!clipboardData)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event: BaseEvent = 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\tif (isFilePasted(clipboardData))\n\t\t{\n\t\t\tclipboardEvent.preventDefault();\n\n\t\t\tgetFilesFromDataTransfer(clipboardData).then((files: File[]): void => {\n\t\t\t\tthis.addFiles(files);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error('Uploader: data transfer error', error);\n\t\t\t});\n\t\t}\n\t}\n\n\tunassignPaste(htmlElement: HTMLElement | HTMLElement[]): void\n\t{\n\t\tconst nodes: HTMLElement[] = Type.isElementNode(htmlElement) ? [htmlElement] : htmlElement;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement): void => {\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\t[...this.#pastingNodes].forEach((node: HTMLElement): void => {\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): void\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\tshouldAssignServerFile(): boolean\n\t{\n\t\treturn this.#assignServerFile;\n\t}\n\n\tsetAssignServerFile(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.#assignServerFile = 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: UploaderFile): boolean => file.isUploading() || file.isPreparing()).length;\n\t}\n\n\tgetPendingFileCount(): number\n\t{\n\t\treturn this.#files.filter((file: UploaderFile): boolean => 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\tstatic getVideoExtensions(): Array<string>\n\t{\n\t\treturn this.getGlobalOption(\n\t\t\t'videoExtensions',\n\t\t\t['avi', 'wmv', 'mp4', 'mov', 'webm', 'flv', 'm4v', 'mkv', 'vob', '3gp', 'ogv', 'h264'],\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\tif (flag)\n\t\t\t{\n\t\t\t\tthis.acceptOnlyImages();\n\t\t\t}\n\t\t}\n\t}\n\n\tacceptOnlyImages(): void\n\t{\n\t\tconst imageExtensions: string[] = Uploader.getImageExtensions().map((extension: string): string => {\n\t\t\treturn `.${extension}`;\n\t\t});\n\n\t\tthis.setAcceptedFileTypes(imageExtensions);\n\t\tthis.#acceptOnlyImages = true;\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\tconst types: string[] = Type.isString(fileTypes) ? fileTypes.split(',') : fileTypes;\n\t\tif (Type.isArray(types))\n\t\t{\n\t\t\tthis.#acceptedFileTypes = [];\n\t\t\tthis.#acceptOnlyImages = false;\n\n\t\t\ttypes.forEach((type: string) => {\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: string): void => {\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: number = this.getMaxParallelUploads();\n\t\tconst currentUploads: number = this.getUploadingFileCount();\n\t\tconst pendingFiles: UploaderFile[] = this.#files.filter((file: UploaderFile): boolean => file.isReadyToUpload());\n\t\tconst pendingUploads: number = pendingFiles.length;\n\n\t\tif (currentUploads < maxParallelUploads)\n\t\t{\n\t\t\tconst limit: number = 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: UploaderFile = 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: number = this.getMaxParallelLoads();\n\t\tconst currentLoads: number = this.#files.filter((file: UploaderFile): boolean => file.isLoading()).length;\n\t\tconst pendingFiles: UploaderFile[] = this.#files.filter((file: UploaderFile) => {\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: number = 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: UploaderFile = 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: ?HTMLElement = this.getHiddenFieldsContainer();\n\t\tif (!container || this.#hiddenFields.has(file.getId()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (file.getOrigin() === FileOrigin.SERVER && !this.shouldAssignServerFile())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst assignAsFile: boolean = (\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: HTMLInputElement = 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.getServerFileId() !== null)\n\t\t{\n\t\t\tinput.value = file.getServerFileId();\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#updateHiddenField(file: UploaderFile): void\n\t{\n\t\tconst input: ?HTMLInputElement = this.#hiddenFields.get(file.getId());\n\t\tif (input && input.type === 'hidden')\n\t\t{\n\t\t\tif (file.getServerFileId() === null)\n\t\t\t{\n\t\t\t\tthis.#resetHiddenField(file);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tinput.value = file.getServerFileId();\n\t\t\t}\n\t\t}\n\t}\n\n\t#resetHiddenField(file: UploaderFile): void\n\t{\n\t\tconst input: ?HTMLInputElement = 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\t[...this.#hiddenFields.values()].forEach((input: HTMLInputElement): void => {\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: ?HTMLElement = this.getHiddenFieldsContainer();\n\t\tif (!container)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getFiles().forEach((file: UploaderFile): void => {\n\t\t\tconst input: ?HTMLInputElement = 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","const isImage = (blob: Blob): boolean => {\n\treturn /^image\\/[\\d.a-z-]+$/i.test(blob.type);\n};\n\nexport default isImage;\n","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\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\toffset += 2;\n\t\t\t\t\tif (getUint32(view, offset) !== 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\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\toffset += getUint16(view, offset);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbreak; // Invalid\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;\n","const isJpeg = (blob: Blob): boolean => {\n\treturn /^image\\/jpeg$/i.test(blob.type);\n};\n\nexport default isJpeg;\n"],"names":["FileStatus","INIT","ADDED","LOADING","PENDING","PREPARING","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","VALIDATE_FILE_ASYNC","PREPARE_FILE_ASYNC","getFileExtension","filename","position","Type","isStringFilled","lastIndexOf","slice","Math","max","videoExtensions","isSupportedVideo","file","mimeType","Uploader","getVideoExtensions","fileName","isFile","name","type","extension","toLowerCase","includes","test","UploaderError","BaseError","constructor","code","args","message","isString","description","customData","isPlainObject","length","replacements","Object","keys","forEach","key","Loc","hasMessage","getMessage","origin","Origin","USER","setDescription","createFromAjaxErrors","errors","isArrayFilled","uploaderError","find","error","system","setOrigin","setType","console","SYSTEM","UNKNOWN","createFromError","getDescription","text","getOrigin","values","getType","clone","options","JSON","parse","stringify","toString","getCode","toJSON","getCustomData","AbstractUploadController","EventEmitter","server","setEventNamespace","getServer","getOptions","getOption","option","defaultValue","isUndefined","upload","Error","abort","AbstractLoadController","load","AbstractRemoveController","remove","crypto","window","msCrypto","process","require","webcrypto","createUniqueId","replaceAll","part","getRandomValues","Uint8Array","getExtensionFromType","subtype","split","pop","counter","createFileFromBlob","blob","newFileName","date","Date","getFullYear","getMonth","getDate","File","lastModified","now","lastModifiedDate","size","regexp","isDataUri","str","match","createBlobFromDataUri","dataURI","byteString","atob","mimeString","buffer","ArrayBuffer","view","i","codePointAt","Blob","imageExtensions","Set","isResizableImage","has","formatFileSize","base","units","getUnits","currentSize","isInteger","toFixed","fileSizeUnits","UploaderFile","source","fileOptions","create","CallbackCollection","update","isBlob","isNumber","serverFileId","id","preload","subscribeFromOptions","events","canLoad","emit","shouldForceServerLoad","callbacks","subscribe","isComplete","isUploadable","isUploadFailed","getError","canUpload","event","BaseEvent","data","isDefaultPrevented","prepareEvent","emitAsync","then","catch","prepareError","addError","getStatus","removeFromServer","isLoading","isUploading","getUploadController","setUploadController","controller","isNull","changed","subscribeOnce","getData","progress","setProgress","fileInfo","setLoadController","validationEvent","preparationEvent","preparationError","validationError","setRemoveController","isReadyToUpload","isLoadable","isRemoveable","isPreparing","isFailed","isLoadFailed","getBinary","setFile","getName","setName","setSize","setServerFileId","setWidth","width","setHeight","height","setTreatImageAsFile","treatImageAsFile","setClientPreview","clientPreview","clientPreviewWidth","clientPreviewHeight","setServerPreview","serverPreviewUrl","serverPreviewWidth","serverPreviewHeight","setDownloadUrl","downloadUrl","setCustomData","loadController","uploadController","removeController","property","value","getExtension","getSize","getSizeFormatted","getId","getServerFileId","getServerId","getDownloadUrl","url","getWidth","getHeight","isAnimated","setAnimated","flag","isBoolean","shouldTreatImageAsFile","getPreviewUrl","getClientPreview","getClientPreviewUrl","getServerPreviewUrl","getPreviewWidth","getClientPreviewWidth","getServerPreviewWidth","getPreviewHeight","getClientPreviewHeight","getServerPreviewHeight","revokeClientPreviewUrl","URL","createObjectURL","revokeObjectURL","isImage","isVideo","getProgress","push","getErrors","getState","entries","item","currentKey","currentValue","customProperty","undefined","serverId","status","sizeFormatted","failed","animated","previewUrl","previewWidth","previewHeight","clientPreviewUrl","handlers","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","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","ServerlessLoadController","Server","serverOptions","chunkSize","getDefaultChunkSize","forceChunkSize","chunkRetryDelays","controllerClasses","controllerClass","fn","getClass","TypeError","loadControllerOptions","uploadControllerOptions","removeControllerOptions","createUploadController","createServerLoadController","createDefaultServerLoadController","createClientLoadController","createServerlessLoadController","createRemoveController","settings","Extension","getSettings","getChunkMinSize","getChunkMaxSize","Filter","uploader","filterOptions","getUploader","apply","FileSizeFilter","setMaxFileSize","maxFileSize","setMinFileSize","minFileSize","setMaxTotalFileSize","maxTotalFileSize","setImageMaxFileSize","imageMaxFileSize","setImageMinFileSize","imageMinFileSize","setTreatOversizeImageAsFile","treatOversizeImageAsFile","Promise","resolve","reject","getMaxFileSize","maxFileSizeInBytes","getMinFileSize","minFileSizeInBytes","getImageMaxFileSize","shouldTreatOversizeImageAsFile","imageMaxFileSizeInBytes","getImageMinFileSize","imageMinFileSizeInBytes","getMaxTotalFileSize","getTotalSize","maxTotalFileSizeInBytes","isValidFileType","fileTypes","baseMimeType","replace","fileType","trim","charAt","FileTypeFilter","getAcceptedFileTypes","getArrayBuffer","arrayBuffer","fileReader","FileReader","readAsArrayBuffer","onload","result","onerror","convertStringToBuffer","compareBuffers","dataView","dest","start","j","getUint8","GIF87a","GIF89a","Gif","DataView","frames","len","byteLength","getUint16","PNG_SIGNATURE","IHDR_SIGNATURE","FRIED_CHUNK_NAME","Png","getUint32","BMP_SIGNATURE","Bmp","abs","getInt32","EXIF_SIGNATURE","Jpeg","orientation","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","trunc","jpg","typeHandlers","gif","png","bmp","jpeg","jpe","webp","getImageSize","typeHandler","ImageSizeFilter","setImageMinWidth","imageMinWidth","setImageMinHeight","imageMinHeight","setImageMaxWidth","imageMaxWidth","setImageMaxHeight","imageMaxHeight","setIgnoreUnknownImageTypes","ignoreUnknownImageTypes","getImageMinWidth","getImageMinHeight","minWidth","minHeight","getImageMaxWidth","getImageMaxHeight","maxWidth","maxHeight","getIgnoreUnknownImageTypes","warn","createWorker","workerBlob","workerURL","worker","Worker","post","callback","transfer","onmessage","postMessage","terminate","BitmapWorker","self","createImageBitmap","bitmap","ResizeWorker","getResizedImageSizeSource","createImagePreviewCanvasSource","sharpenSource","shouldSharpenSource","getResizedImageSize","Function","targetWidth","targetHeight","useOriginalSize","close","createImagePreviewCanvas","offscreenCanvas","sharpen","shouldSharpen","previewBitmap","transferToImageBitmap","log","loadImage","image","document","createElement","src","naturalWidth","naturalHeight","imageSource","newWidth","newHeight","round","isPageContext","parent","createCanvas","canvasWidth","canvasHeight","canvas","OffscreenCanvas","context","getContext","imageSmoothingQuality","drawImage","currentImageWidth","currentImageHeight","currentImageSource","resizingCanvas","halfImageWidth","halfImageHeight","resizingCanvasContext","outputCanvas","outputCanvasContext","imageData","mode","upscale","ratioWidth","ratioHeight","ratio","canvasPrototype","HTMLCanvasElement","prototype","hasToBlobSupport","toBlob","canUseOffscreenCanvas","convertCanvasToBlob","quality","convertToBlob","toDataURL","supportedMimeTypes","Browser","isSafari","isSupportedMimeType","mixFactor","weights","katet","sqrt","half","destinationData","createImageData","destinationBuffer","sourceBuffer","getImageData","y","x","sy","sx","dstOff","red","green","blue","cy","cx","scy","scx","srcOff","wt","putImageData","scaleX","scaleY","scale","createImagePreview","getCanvasToBlobType","mimeTypeMode","getFilenameWithoutExtension","extensionMap","renameFileToMatchMimeType","canCreateImageBitmap","ImageBitmap","ua","navigator","userAgent","regex","exec","resizeImage","resizeWorker","preview","transferFromImageBitmap","loadImageDataFallback","finally","bitmapWorker","imageBitmap","handleImageLoad","createVideoPreview","seekTime","video","setAttribute","Event","bind","currentTime","duration","videoWidth","videoHeight","ImagePreviewFilter","setImagePreviewWidth","imagePreviewWidth","setImagePreviewHeight","imagePreviewHeight","setImagePreviewQuality","imagePreviewQuality","setImagePreviewUpscale","imagePreviewUpscale","setImagePreviewResizeMode","imagePreviewResizeMode","setImagePreviewMimeType","imagePreviewMimeType","setImagePreviewMimeTypeMode","imagePreviewMimeTypeMode","setImagePreviewFilter","imagePreviewFilter","invokeFilter","resizeOptions","getImagePreviewWidth","getImagePreviewHeight","getImagePreviewQuality","getImagePreviewUpscale","getImagePreviewResizeMode","getImagePreviewMimeType","getImagePreviewMimeTypeMode","overrides","ImageResizeFilter","setResizeWidth","imageResizeWidth","setResizeHeight","imageResizeHeight","setResizeMode","imageResizeMode","setResizeMimeType","imageResizeMimeType","setResizeMimeTypeMode","imageResizeMimeTypeMode","setResizeQuality","imageResizeQuality","setResizeFilter","imageResizeFilter","getResizeWidth","getResizeHeight","getResizeMode","getResizeQuality","getResizeMimeType","getResizeMimeTypeMode","UploaderStatus","STARTED","STOPPED","UploaderEvent","ERROR","MAX_FILE_COUNT_EXCEEDED","DESTROY","BEFORE_BROWSE","BEFORE_DROP","BEFORE_PASTE","BEFORE_FILES_ADD","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","getFilesInDirectory","entry","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","fileEntry","isDirectory","isDirectoryEntry","webkitGetAsEntry","isFileSystemItem","kind","getFilesFromItem","getAsFile","getFilesFromDataTransfer","dataTransfer","browseFolders","items","map","all","fileGroups","group","hasDataTransferOnlyFiles","every","isFilePasted","types","texts","canAppendFileToForm","DataTransfer","add","input","assignFileToInput","instances","Map","getById","getInstances","uploaderOptions","Text","getRandom","multiple","acceptOnlyImages","acceptOnlyImagesGlobal","getGlobalOption","setAcceptOnlyImages","acceptedFileTypes","setAcceptedFileTypes","acceptedFileTypesGlobal","ignoredFileNames","setIgnoredFileNames","setMaxFileCount","maxFileCount","setAllowReplaceSingle","allowReplaceSingle","assignBrowse","browseElement","assignDropzone","dropElement","assignPaste","pasteElement","setHiddenFieldsContainer","hiddenFieldsContainer","setHiddenFieldName","hiddenFieldName","setAssignAsFile","assignAsFile","setAssignServerFile","assignServerFile","setAutoUpload","autoUpload","setMaxParallelUploads","maxParallelUploads","setMaxParallelLoads","maxParallelLoads","addFilter","addFilters","filters","addFiles","path","globalOptions","fileList","isArrayLike","results","addFile","getIgnoredFileNames","isMultiple","shouldReplaceSingle","fileToReplace","removeFile","preloaded","getPendingFileCount","stop","destroy","unassignBrowseAll","unassignDropzoneAll","unassignPasteAll","removeFilesFromServer","removeFiles","setPrototypeOf","getFiles","fileOrId","index","indexOf","getFileCount","filterEntity","ClassName","Reflection","htmlElement","nodes","isElementNode","node","tagName","acceptAttr","getAttribute","onBrowseClickHandler","join","unassignBrowse","unbind","unassignDropzone","unassignPaste","getHiddenFieldsContainer","element","querySelector","container","getHiddenFieldName","shouldAssignAsFile","shouldAssignServerFile","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","Dom","style","visibility","left","top","append","JPEG","APP1","EXIF","TIFF","Orientation","Unknown","little","getJpegOrientation","reader","e","target","marker","tags","isJpeg"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit