File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/ui/uploader/core/dist/ui.file-uploader.bundle.js.map
Back
{"version":3,"file":"ui.file-uploader.bundle.js","sources":["../src/uploader/enums/file-status.js","../src/uploader/enums/file-origin.js","../src/uploader/backend/abstract-upload-controller.js","../src/uploader/backend/abstract-load-controller.js","../src/uploader/helpers/create-unique-id.js","../src/uploader/helpers/get-extension-from-type.js","../src/uploader/helpers/create-file-from-blob.js","../src/uploader/helpers/is-data-uri.js","../src/uploader/helpers/create-blob-from-data-uri.js","../src/uploader/helpers/get-file-extension.js","../src/uploader/helpers/is-resizable-image.js","../src/uploader/helpers/format-file-size.js","../src/uploader/uploader-file.js","../src/uploader/uploader-error.js","../src/uploader/backend/chunk.js","../src/uploader/backend/upload-controller.js","../src/uploader/backend/server-load-multiple.js","../src/uploader/backend/server-load-controller.js","../src/uploader/backend/client-load-controller.js","../src/uploader/backend/server.js","../src/uploader/filters/filter.js","../src/uploader/filters/file-size-filter.js","../src/uploader/helpers/is-valid-file-type.js","../src/uploader/filters/file-type-filter.js","../src/uploader/helpers/get-array-buffer.js","../src/uploader/helpers/image-size/convert-string-to-buffer.js","../src/uploader/helpers/image-size/compare-buffers.js","../src/uploader/helpers/image-size/types/gif.js","../src/uploader/helpers/image-size/types/png.js","../src/uploader/helpers/image-size/types/bmp.js","../src/uploader/helpers/image-size/types/jpeg.js","../src/uploader/helpers/image-size/types/webp.js","../src/uploader/helpers/image-size/get-image-size.js","../src/uploader/filters/image-size-filter.js","../src/uploader/helpers/create-worker.js","../src/uploader/helpers/bitmap-worker.js","../src/uploader/helpers/load-image.js","../src/uploader/helpers/create-image-preview.js","../src/uploader/helpers/get-filename-without-extension.js","../src/uploader/helpers/rename-file-to-match-mime-type.js","../src/uploader/helpers/convert-canvas-to-blob.js","../src/uploader/helpers/resize-image.js","../src/uploader/filters/image-preview-filter.js","../src/uploader/filters/transform-image-filter.js","../src/uploader/enums/uploader-status.js","../src/uploader/enums/filter-type.js","../src/uploader/helpers/get-files-from-data-transfer.js","../src/uploader/helpers/can-append-file-to-form.js","../src/uploader/helpers/assign-file-to-input.js","../src/uploader/uploader.js","../src/uploader/helpers/is-image.js"],"sourcesContent":["export const FileStatus = {\n\tINIT: 'init',\n\tADDED: 'added',\n\tLOADING: 'loading',\n\tPENDING: 'pending',\n\tUPLOADING: 'uploading',\n\tABORTED: 'aborted',\n\tCOMPLETE: 'complete',\n\tLOAD_FAILED: 'load-failed',\n\tUPLOAD_FAILED: 'upload-failed',\n};","export const FileOrigin = {\n\tCLIENT: 'client',\n\tSERVER: 'server',\n};","import { EventEmitter } from 'main.core.events';\nimport type Server from './server';\n\nexport default class AbstractUploadController extends EventEmitter\n{\n\tconstructor(server: Server)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.FileUploader.UploadController');\n\n\t\tthis.server = server;\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.server;\n\t}\n\n\tupload(file: File): 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}","import { EventEmitter } from 'main.core.events';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\n\nexport default class AbstractLoadController extends EventEmitter\n{\n\tconstructor(server: Server)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.FileUploader.LoadController');\n\n\t\tthis.server = server;\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.server;\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}","const crypto = window.crypto || window.msCrypto;\n\nconst createUniqueId = (): string => {\n\treturn (`${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`).replace(/[018]/g, c =>\n\t\t(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n\t);\n};\n\nexport default createUniqueId;","import { Type } from 'main.core';\n\nconst getExtensionFromType = (type) => {\n\tif (!Type.isStringFilled(type))\n\t{\n\t\treturn '';\n\t}\n\n\tconst subtype = type.split('/').pop();\n\n\tif (/javascript/.test(subtype))\n\t{\n\t\treturn 'js';\n\t}\n\n\tif (/plain/.test(subtype))\n\t{\n\t\treturn 'txt';\n\t}\n\n\tif (/svg/.test(subtype))\n\t{\n\t\treturn 'svg';\n\t}\n\n\tif (/[a-z]+/.test(subtype))\n\t{\n\t\treturn subtype;\n\t}\n\n\treturn '';\n};\n\nexport default getExtensionFromType;","import { Type } from 'main.core';\nimport getExtensionFromType from './get-extension-from-type';\n\nlet counter = 0;\nconst createFileFromBlob = (blob: Blob, fileName: string): File => {\n\n\tif (!Type.isStringFilled(fileName))\n\t{\n\t\tconst date = new Date();\n\t\tfileName = `File ${date.getFullYear()}-${date.getMonth()}-${date.getDate()}-${++counter}`;\n\n\t\tconst extension = getExtensionFromType(blob.type);\n\t\tif (extension)\n\t\t{\n\t\t\tfileName += `.${extension}`;\n\t\t}\n\t}\n\n\ttry\n\t{\n\t\treturn new File(\n\t\t\t[blob],\n\t\t\tfileName,\n\t\t\t{\n\t\t\t\tlastModified: Date.now(),\n\t\t\t\tlastModifiedDate: new Date(),\n\t\t\t\ttype: blob.type\n\t\t\t}\n\t\t);\n\t}\n\tcatch (exception)\n\t{\n\t\tconst file = blob.slice(0, blob.size, blob.type);\n\t\tfile.name = fileName;\n\t\tfile.lastModified = Date.now();\n\t\tfile.lastModifiedDate = new Date();\n\n\t\treturn file;\n\t}\n};\n\nexport default createFileFromBlob;","const regexp = /^data:((?:\\w+\\/(?:(?!;).)+)?)((?:;[\\w\\W]*?[^;])*),(.+)$/;\n\nconst isDataUri = (str: string): boolean => {\n\treturn typeof(str) === 'string' ? str.match(regexp) : false;\n};\n\nexport default isDataUri;","const createBlobFromDataUri = (dataURI: string): Blob => {\n\tconst byteString = atob(dataURI.split(',')[1]);\n\tconst mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n\tconst buffer = new ArrayBuffer(byteString.length);\n\tconst view = new Uint8Array(buffer);\n\n\tfor (let i = 0; i < byteString.length; i++)\n\t{\n\t\tview[i] = byteString.charCodeAt(i);\n\t}\n\n\treturn new Blob([buffer], { type: mimeString });\n};\n\nexport default createBlobFromDataUri;","import { Type } from 'main.core';\n\nconst getFileExtension = (filename: string) => {\n\tconst position = Type.isStringFilled(filename) ? filename.lastIndexOf('.') : -1;\n\n\treturn position > 0 ? filename.substring(position + 1) : '';\n};\n\nexport default getFileExtension;\n\n\n","import { Type } from 'main.core';\nimport getFileExtension from './get-file-extension';\n\nconst imageExtensions = ['jpg', 'bmp', 'jpeg', 'jpe', 'gif', 'png', 'webp'];\n\nconst isResizableImage = (file: File | string, mimeType: string = null) => {\n\tconst filename = Type.isFile(file) ? file.name : file;\n\tconst type = Type.isFile(file) ? file.type : mimeType;\n\tconst extension = getFileExtension(filename).toLowerCase();\n\n\tif (imageExtensions.includes(extension))\n\t{\n\n\t\tif (type === null || /^image/.test(type))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport default isResizableImage;\n","import { Loc, Type } from 'main.core';\n\nconst formatFileSize = (size: number, base: number = 1024): string => {\n\tlet i = 0;\n\tconst units = getUnits();\n\twhile (size >= base && units[i + 1])\n\t{\n\t\tsize /= base;\n\t\ti++;\n\t}\n\n\treturn (Type.isInteger(size) ? size : size.toFixed(1)) + units[i];\n};\n\nlet fileSizeUnits = null;\nconst getUnits = () => {\n\tif (fileSizeUnits !== null)\n\t{\n\t\treturn fileSizeUnits;\n\t}\n\n\tconst units = Loc.getMessage('UPLOADER_FILE_SIZE_POSTFIXES').split(/[|]/);\n\tfileSizeUnits = Type.isArrayFilled(units) ? units : ['B', 'kB', 'MB', 'GB', 'TB'];\n\n\treturn fileSizeUnits;\n};\n\nexport default formatFileSize;","import { Type, Runtime } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\n\nimport { FileStatus } from './enums/file-status';\nimport { FileOrigin } from './enums/file-origin';\n\nimport type { FileInfo } from './types/file-info';\nimport type { UploaderFileOptions } from './types/uploader-file-options';\n\nimport AbstractUploadController from './backend/abstract-upload-controller';\nimport AbstractLoadController from './backend/abstract-load-controller';\n\nimport createUniqueId from './helpers/create-unique-id';\nimport createFileFromBlob from './helpers/create-file-from-blob';\nimport isDataUri from './helpers/is-data-uri';\nimport createBlobFromDataUri from './helpers/create-blob-from-data-uri';\nimport isResizableImage from './helpers/is-resizable-image';\nimport formatFileSize from './helpers/format-file-size';\n\nexport default class UploaderFile extends EventEmitter\n{\n\tid: string = null;\n\tsource: File | Blob | string | number;\n\tfile: File = null;\n\tserverId: number | string = null;\n\n\tname: string = '';\n\toriginalName: string = null;\n\tsize: number = 0;\n\ttype: string = '';\n\twidth: ?number = null;\n\theight: ?number = null;\n\n\tclientPreview: ?File = null;\n\tclientPreviewUrl: ?string = null;\n\tclientPreviewWidth: ?number = null;\n\tclientPreviewHeight: ?number = null;\n\n\tserverPreviewUrl: ?string = null;\n\tserverPreviewWidth: ?number = null;\n\tserverPreviewHeight: ?number = null;\n\n\tdownloadUrl: ?string = null;\n\tremoveUrl: ?string = null;\n\n\tstatus: FileStatus = FileStatus.INIT;\n\torigin: FileOrigin = FileOrigin.CLIENT;\n\n\tuploadController: AbstractUploadController = null;\n\tloadController: AbstractLoadController = null;\n\n\tconstructor(source: File | Blob | string | number, fileOptions: UploaderFileOptions = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.FileUploader.File');\n\n\t\tconst options = Type.isPlainObject(fileOptions) ? fileOptions : {};\n\n\t\tif (Type.isFile(source))\n\t\t{\n\t\t\tthis.file = source;\n\t\t}\n\t\telse if (Type.isBlob(source))\n\t\t{\n\t\t\tthis.file = createFileFromBlob(source, options.name || source.name);\n\t\t}\n\t\telse if (isDataUri(source))\n\t\t{\n\t\t\tconst blob = createBlobFromDataUri(source);\n\t\t\tthis.file = createFileFromBlob(blob, options.name);\n\t\t}\n\t\telse if (Type.isNumber(source) || Type.isStringFilled(source))\n\t\t{\n\t\t\tthis.origin = FileOrigin.SERVER;\n\t\t\tthis.serverId = source;\n\t\t\tif (Type.isPlainObject(options))\n\t\t\t{\n\t\t\t\tthis.setFile(options);\n\t\t\t}\n\t\t}\n\n\t\tthis.id = Type.isStringFilled(options.id) ? options.id : createUniqueId();\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tthis.fireStateChangeEvent = Runtime.debounce(this.fireStateChangeEvent, 0, this);\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('onLoadStart');\n\n\t\tthis.loadController.load(this);\n\t}\n\n\tupload(): void\n\t{\n\t\tif (!this.canUpload())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet event = new BaseEvent({ data: { file: this } });\n\t\tthis.emit('onBeforeUpload', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setStatus(FileStatus.UPLOADING);\n\n\t\tevent = new BaseEvent({ data: { file: this.getFile() } });\n\t\tthis.emitAsync('onPrepareFileAsync', event)\n\t\t\t.then((result) => {\n\t\t\t\tconst file = Type.isArrayFilled(result) && Type.isFile(result[0]) ? result[0] : this.getFile();\n\t\t\t\tthis.emit('onUploadStart');\n\n\t\t\t\tif (this.uploadController)\n\t\t\t\t{\n\t\t\t\t\tthis.uploadController.upload(file);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error(error);\n\t\t\t})\n\t\t;\n\t}\n\n\tabort(): void\n\t{\n\t\tif (this.uploadController)\n\t\t{\n\t\t\tthis.uploadController.abort();\n\t\t}\n\n\t\tthis.setStatus(FileStatus.ABORTED);\n\t\tthis.emit('onAbort');\n\t}\n\n\tabortLoad(): void\n\t{\n\t\tif (this.loadController)\n\t\t{\n\t\t\tthis.loadController.abort();\n\t\t}\n\n\t\tthis.setStatus(FileStatus.ABORTED);\n\t\tthis.emit('onAbort');\n\t}\n\n\tretry(): void\n\t{\n\t\t// TODO\n\t}\n\n\tcancel(): void\n\t{\n\t\tthis.abort();\n\t\tthis.emit('onCancel');\n\t}\n\n\tsetUploadController(controller: AbstractUploadController): void\n\t{\n\t\tthis.uploadController = controller;\n\t}\n\n\tsetLoadController(controller: AbstractLoadController): void\n\t{\n\t\tthis.loadController = controller;\n\t}\n\n\tisReadyToUpload(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.PENDING;\n\t}\n\n\tisUploadable(): boolean\n\t{\n\t\treturn this.uploadController !== null;\n\t}\n\n\tisLoadable(): boolean\n\t{\n\t\treturn this.loadController !== null;\n\t}\n\n\tcanUpload(): boolean\n\t{\n\t\treturn this.isReadyToUpload() && this.isUploadable();\n\t}\n\n\tcanLoad(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.ADDED && this.isLoadable();\n\t}\n\n\tisUploading(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.UPLOADING;\n\t}\n\n\tisLoading(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.LOADING;\n\t}\n\n\tisComplete(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.COMPLETE;\n\t}\n\n\tisFailed(): boolean\n\t{\n\t\treturn this.getStatus() === FileStatus.LOAD_FAILED || this.getStatus() === FileStatus.UPLOAD_FAILED;\n\t}\n\n\tgetFile(): ?File\n\t{\n\t\treturn this.file;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetFile(file: File | FileInfo): void\n\t{\n\t\tif (Type.isFile(file))\n\t\t{\n\t\t\tthis.file = file;\n\t\t}\n\t\telse if (Type.isPlainObject(file))\n\t\t{\n\t\t\tthis.setName(file.name);\n\t\t\tthis.setOriginalName(file.originalName);\n\t\t\tthis.setType(file.type);\n\t\t\tthis.setSize(file.size);\n\n\t\t\tthis.setServerId(file.serverId);\n\t\t\tthis.setWidth(file.width);\n\t\t\tthis.setHeight(file.height);\n\n\t\t\tthis.setClientPreview(file.clientPreview, file.clientPreviewWidth, file.clientPreviewHeight);\n\t\t\tthis.setServerPreview(file.serverPreviewUrl, file.serverPreviewWidth, file.serverPreviewHeight);\n\n\t\t\tthis.setDownloadUrl(file.downloadUrl);\n\t\t\tthis.setRemoveUrl(file.removeUrl);\n\t\t}\n\t}\n\n\tgetName(): string\n\t{\n\t\treturn this.getFile() ? this.getFile().name : this.name;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetName(name: string): void\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.#setProperty('name', name);\n\t\t}\n\t}\n\n\tgetOriginalName(): string\n\t{\n\t\treturn this.originalName ? this.originalName : this.getName();\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetOriginalName(name: string): void\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.#setProperty('originalName', name);\n\t\t}\n\t}\n\n\tgetExtension(): string\n\t{\n\t\tconst position = this.getName().lastIndexOf('.');\n\n\t\treturn position > 0 ? this.getName().substring(position + 1).toLowerCase() : '';\n\t}\n\n\tgetType(): string\n\t{\n\t\treturn this.getFile() ? this.getFile().type : this.type;\n\t}\n\n\t/**\n\t * internal\n\t */\n\tsetType(type: string): string\n\t{\n\t\tif (Type.isStringFilled(type))\n\t\t{\n\t\t\tthis.#setProperty('type', type);\n\t\t}\n\t}\n\n\tgetSize(): number\n\t{\n\t\treturn this.getFile() ? this.getFile().size : this.size;\n\t}\n\n\tgetSizeFormatted(): string\n\t{\n\t\treturn formatFileSize(this.getSize());\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tsetSize(size: number): void\n\t{\n\t\tif (Type.isNumber(size) && size >= 0)\n\t\t{\n\t\t\tthis.#setProperty('size', size);\n\t\t}\n\t}\n\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetServerId(): number | string | null\n\t{\n\t\treturn this.serverId;\n\t}\n\n\tsetServerId(id: number | string): void\n\t{\n\t\tif (Type.isNumber(id) || Type.isStringFilled(id))\n\t\t{\n\t\t\tthis.#setProperty('serverId', id);\n\t\t}\n\t}\n\n\tgetStatus(): FileStatus\n\t{\n\t\treturn this.status;\n\t}\n\n\tsetStatus(status: FileStatus): void\n\t{\n\t\tthis.#setProperty('status', status);\n\t\tthis.emit('onStatusChange');\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.#setProperty('downloadUrl', url);\n\t\t}\n\t}\n\n\tgetRemoveUrl(): ?string\n\t{\n\t\treturn this.removeUrl;\n\t}\n\n\tsetRemoveUrl(url: string)\n\t{\n\t\tif (Type.isStringFilled(url))\n\t\t{\n\t\t\tthis.#setProperty('removeUrl', 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.#setProperty('width', 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.#setProperty('height', height);\n\t\t}\n\t}\n\n\tgetPreviewUrl(): ?string\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewUrl() : this.getServerPreviewUrl();\n\t}\n\n\tgetPreviewWidth(): ?number\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewWidth() : this.getServerPreviewWidth();\n\t}\n\n\tgetPreviewHeight(): ?number\n\t{\n\t\treturn this.getClientPreview() ? this.getClientPreviewHeight() : this.getServerPreviewHeight();\n\t}\n\n\tgetClientPreview(): ?File\n\t{\n\t\treturn this.clientPreview;\n\t}\n\n\tsetClientPreview(file: ?File, width: number = null, height: number = null): void\n\t{\n\t\tif (Type.isFile(file) || Type.isNull(file))\n\t\t{\n\t\t\tthis.revokeClientPreviewUrl();\n\n\t\t\tthis.#setProperty('clientPreview', file);\n\t\t\tthis.#setProperty('clientPreviewWidth', width);\n\t\t\tthis.#setProperty('clientPreviewHeight', height);\n\t\t}\n\t}\n\n\tgetClientPreviewUrl(): ?string\n\t{\n\t\tif (this.clientPreviewUrl === null && this.getClientPreview() !== null)\n\t\t{\n\t\t\tthis.clientPreviewUrl = URL.createObjectURL(this.getClientPreview());\n\t\t}\n\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\t\t}\n\n\t\tthis.clientPreviewUrl = null;\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.#setProperty('serverPreviewUrl', url);\n\t\t\tthis.#setProperty('serverPreviewWidth', width);\n\t\t\tthis.#setProperty('serverPreviewHeight', height);\n\t\t}\n\t}\n\n\tgetServerPreviewWidth(): ?number\n\t{\n\t\treturn this.serverPreviewWidth;\n\t}\n\n\tgetServerPreviewHeight(): ?number\n\t{\n\t\treturn this.serverPreviewHeight;\n\t}\n\n\tisImage(): boolean\n\t{\n\t\treturn isResizableImage(this.getOriginalName(), this.getType());\n\t}\n\n\tgetState(): { [key: string]: any }\n\t{\n\t\treturn JSON.parse(JSON.stringify(this));\n\t}\n\n\t#setProperty(name, value)\n\t{\n\t\tthis[name] = value;\n\t\tthis.fireStateChangeEvent();\n\t}\n\n\tfireStateChangeEvent()\n\t{\n\t\tthis.emit('onStateChange');\n\t}\n\n\ttoJSON(): { [key: string]: any }\n\t{\n\t\treturn {\n\t\t\tid: this.getId(),\n\t\t\tserverId: this.getServerId(),\n\t\t\tstatus: this.getStatus(),\n\t\t\tname: this.getName(),\n\t\t\toriginalName: this.getOriginalName(),\n\t\t\tsize: this.getSize(),\n\t\t\tsizeFormatted: this.getSizeFormatted(),\n\t\t\ttype: this.getType(),\n\t\t\textension: this.getExtension(),\n\t\t\torigin: this.getOrigin(),\n\t\t\tisImage: this.isImage(),\n\t\t\twidth: this.getWidth(),\n\t\t\theight: this.getHeight(),\n\n\t\t\tpreviewUrl: this.getPreviewUrl(),\n\t\t\tpreviewWidth: this.getPreviewWidth(),\n\t\t\tpreviewHeight: this.getPreviewHeight(),\n\n\t\t\tclientPreviewUrl: this.getClientPreviewUrl(),\n\t\t\tclientPreviewWidth: this.getClientPreviewWidth(),\n\t\t\tclientPreviewHeight: this.getClientPreviewHeight(),\n\n\t\t\tserverPreviewUrl: this.getServerPreviewUrl(),\n\t\t\tserverPreviewWidth: this.getServerPreviewWidth(),\n\t\t\tserverPreviewHeight: this.getServerPreviewHeight(),\n\n\t\t\tdownloadUrl: this.getDownloadUrl(),\n\t\t\tremoveUrl: this.getRemoveUrl(),\n\t\t};\n\t}\n}\n","import { BaseError, Type, Loc } from 'main.core';\n\nexport default class UploaderError extends BaseError\n{\n\tdescription: string = '';\n\torigin: string = 'client';\n\n\tconstructor(code: string, ...args)\n\t{\n\t\tlet message = Type.isString(args[0]) ? args[0] : null;\n\t\tlet description = Type.isString(args[1]) ? args[1] : null;\n\t\tconst customData = Type.isPlainObject(args[args.length - 1]) ? args[args.length - 1] : {};\n\n\t\tconst replacements = {};\n\t\tObject.keys(customData).forEach((key: string) => {\n\t\t\treplacements[`#${key}#`] = customData[key];\n\t\t});\n\n\t\tif (!Type.isString(message) && Loc.hasMessage(`UPLOADER_${code}`))\n\t\t{\n\t\t\tmessage = Loc.getMessage(`UPLOADER_${code}`, replacements);\n\t\t}\n\n\t\tif (Type.isStringFilled(message) && !Type.isString(description) && Loc.hasMessage(`UPLOADER_${code}_DESC`))\n\t\t{\n\t\t\tdescription = Loc.getMessage(`UPLOADER_${code}_DESC`, replacements);\n\t\t}\n\n\t\tsuper(message, code, customData);\n\t\tthis.setDescription(description);\n\t}\n\n\tstatic createFromAjaxErrors(errors: Array): UploaderError\n\t{\n\t\tif (!Type.isArrayFilled(errors) || !Type.isPlainObject(errors[0]))\n\t\t{\n\t\t\treturn new this('SERVER_ERROR');\n\t\t}\n\n\t\tconst uploaderError = errors.find(error => {\n\t\t\treturn error.type === 'file-uploader';\n\t\t});\n\n\t\tif (uploaderError && !uploaderError.system)\n\t\t{\n\t\t\tconst { code, message, description, customData } = uploaderError;\n\t\t\tconst error = new this(code, message, description, customData);\n\t\t\terror.setOrigin('server');\n\n\t\t\treturn error;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlet { code, message } = errors[0];\n\t\t\tif (code === 'NETWORK_ERROR')\n\t\t\t{\n\t\t\t\tmessage = Loc.getMessage('UPLOADER_SERVER_ERROR');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcode = 'SERVER_ERROR';\n\t\t\t\tmessage = null;\n\t\t\t}\n\n\t\t\tconsole.error('FileUploader', errors);\n\n\t\t\tconst error = new this(code, message);\n\t\t\terror.setOrigin('server');\n\n\t\t\treturn error;\n\t\t}\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(): string\n\t{\n\t\treturn this.origin;\n\t}\n\n\tsetOrigin(origin: string): this\n\t{\n\t\tif (Type.isStringFilled(origin))\n\t\t{\n\t\t\tthis.origin = origin;\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\n\t\treturn error;\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\tcustomData: this.getCustomData(),\n\t\t};\n\t}\n}\n","import { Type } from 'main.core';\n\nexport default class Chunk\n{\n\tdata: Blob = null;\n\toffset: number = 0;\n\tretries: number[] = [];\n\n\tconstructor(data, offset)\n\t{\n\t\tthis.data = data;\n\t\tthis.offset = offset;\n\t}\n\n\tgetNextRetryDelay(): ?number\n\t{\n\t\tif (this.retries.length === 0)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.retries.shift();\n\t}\n\n\tsetRetries(retries: number[]): void\n\t{\n\t\tif (Type.isArray(retries))\n\t\t{\n\t\t\tthis.retries = retries;\n\t\t}\n\t}\n\n\tgetData(): Blob\n\t{\n\t\treturn this.data;\n\t}\n\n\tgetOffset(): number\n\t{\n\t\treturn this.offset;\n\t}\n\n\tgetSize(): number\n\t{\n\t\treturn this.getData().size;\n\t}\n}","import Server from './server';\nimport Chunk from './chunk';\nimport { ajax as Ajax, Type } from 'main.core';\nimport AbstractUploadController from './abstract-upload-controller';\nimport UploaderError from '../uploader-error';\n\nexport default class UploadController extends AbstractUploadController\n{\n\tfile: File = null;\n\tchunkOffset: ?number = null;\n\tchunkTimeout: ?number = null;\n\ttoken: string = null;\n\txhr: XMLHttpRequest = null;\n\n\tconstructor(server: Server)\n\t{\n\t\tsuper(server);\n\t}\n\n\tupload(file: File): void\n\t{\n\t\tif (this.chunkOffset !== null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.file = file;\n\n\t\tconst nextChunk = this.#getNextChunk();\n\t\tif (nextChunk)\n\t\t{\n\t\t\tthis.#uploadChunk(nextChunk);\n\t\t}\n\t}\n\n\tabort(): void\n\t{\n\t\tif (this.xhr)\n\t\t{\n\t\t\tthis.xhr.abort();\n\t\t\tthis.xhr = null;\n\t\t}\n\n\t\tclearTimeout(this.chunkTimeout);\n\t}\n\n\t#uploadChunk(chunk: Chunk)\n\t{\n\t\tconst totalSize = this.getFile().size;\n\t\tconst isOnlyOneChunk = chunk.getOffset() === 0 && totalSize === chunk.getSize();\n\n\t\tlet fileName = this.getFile().name;\n\t\tif (fileName.normalize)\n\t\t{\n\t\t\tfileName = fileName.normalize();\n\t\t}\n\n\t\tconst headers = [\n\t\t\t{ name: 'Content-Type', value: this.getFile().type },\n\t\t\t{ name: 'X-Upload-Content-Name', value: encodeURIComponent(fileName) },\n\t\t];\n\n\t\tif (!isOnlyOneChunk)\n\t\t{\n\t\t\tconst rangeStart = chunk.getOffset();\n\t\t\tconst rangeEnd = chunk.getOffset() + chunk.getSize() - 1;\n\t\t\tconst rangeHeader = `bytes ${rangeStart}-${rangeEnd}/${totalSize}`;\n\n\t\t\theaders.push({ name: 'Content-Range', value: rangeHeader });\n\t\t}\n\n\t\tconst controllerOptions = this.getServer().getControllerOptions();\n\t\tAjax.runAction('ui.fileuploader.upload', {\n\t\t\t\theaders,\n\t\t\t\tdata: chunk.getData(),\n\t\t\t\tpreparePost: false,\n\t\t\t\tgetParameters: {\n\t\t\t\t\tcontroller: this.getServer().getController(),\n\t\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t\t\ttoken: this.getToken() || '',\n\t\t\t\t},\n\t\t\t\tonrequeststart: (xhr) => {\n\t\t\t\t\tthis.xhr = xhr;\n\t\t\t\t},\n\t\t\t\tonprogressupload: (event: ProgressEvent) => {\n\t\t\t\t\tif (event.lengthComputable)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst size = this.getFile().size;\n\t\t\t\t\t\tconst uploadedBytes = Math.min(size, chunk.getOffset() + event.loaded);\n\t\t\t\t\t\tconst progress = size > 0 ? Math.floor(uploadedBytes / size * 100) : 100;\n\t\t\t\t\t\tthis.emit('onProgress', { progress });\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(response => {\n\t\t\t\tconsole.log('response', response);\n\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\tconst size = this.getFile().size;\n\t\t\t\t\tconst progress = size > 0 ? Math.floor((chunk.getOffset() + chunk.getSize()) / size * 100) : 100;\n\t\t\t\t\tthis.emit('onProgress', { progress });\n\n\t\t\t\t\tconst nextChunk = this.#getNextChunk();\n\t\t\t\t\tif (nextChunk)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#uploadChunk(nextChunk);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.emit('onProgress', { progress: 100 });\n\t\t\t\t\t\tthis.emit('onUpload', { fileInfo: response.data.file });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.emit('onError', { error: new UploaderError('SERVER_ERROR') });\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(response => {\n\t\t\t\tconsole.log('error', response);\n\t\t\t\tconst error = UploaderError.createFromAjaxErrors(response.errors);\n\t\t\t\tconst shouldRetry = error.getCode() === 'NETWORK_ERROR';\n\n\t\t\t\tif (!shouldRetry || !this.#retryUploadChunk(chunk))\n\t\t\t\t{\n\t\t\t\t\tthis.emit('onError', { error });\n\t\t\t\t}\n\t\t\t})\n\t\t;\n\t}\n\n\t#retryUploadChunk(chunk: Chunk): boolean\n\t{\n\t\tconst nextDelay = chunk.getNextRetryDelay();\n\t\tif (nextDelay === null)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout(this.chunkTimeout);\n\n\t\tthis.chunkTimeout = setTimeout(() => {\n\t\t\tthis.#uploadChunk(chunk);\n\t\t}, nextDelay);\n\n\t\treturn true;\n\t}\n\n\t#getNextChunk(): ?Chunk\n\t{\n\t\tif (this.getChunkOffset() !== null && this.getChunkOffset() >= this.getFile().size)\n\t\t{\n\t\t\t// End of File\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.getChunkOffset() === null)\n\t\t{\n\t\t\t// First call\n\t\t\tthis.chunkOffset = 0;\n\t\t}\n\n\t\tlet chunk: Chunk;\n\t\tif (this.getChunkOffset() === 0 && this.getFile().size <= this.getChunkSize())\n\t\t{\n\t\t\tchunk = new Chunk(this.getFile(), this.getChunkOffset());\n\t\t\tthis.chunkOffset = this.getFile().size;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst currentChunkSize = Math.min(this.getChunkSize(), this.getFile().size - this.getChunkOffset());\n\t\t\tconst nextOffset = this.getChunkOffset() + currentChunkSize;\n\t\t\tconst fileRange = this.getFile().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(): File\n\t{\n\t\treturn this.file;\n\t}\n\n\tgetChunkSize(): number\n\t{\n\t\treturn this.getServer().getChunkSize();\n\t}\n\n\tgetChunkOffset(): number\n\t{\n\t\treturn this.chunkOffset;\n\t}\n\n\tgetToken(): ?string\n\t{\n\t\treturn this.token;\n\t}\n\n\tsetToken(token: string): void\n\t{\n\t\tif (Type.isStringFilled(token))\n\t\t{\n\t\t\tthis.token = token;\n\t\t}\n\t}\n}","import { ajax as Ajax, Runtime } from 'main.core';\n\nimport UploaderError from '../uploader-error';\n\nimport type UploaderFile from '../uploader-file';\nimport type Server from './server';\nimport type ServerLoadController from './server-load-controller';\n\nconst queues = new WeakMap();\n\nexport function loadMultiple(controller: ServerLoadController, 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\tload: Runtime.debounce(loadInternal, 100, 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.load();\n}\n\nexport function abort(controller: ServerLoadController)\n{\n\tconst server = controller.getServer();\n\tconst queue = queues.get(server);\n\tif (queue)\n\t{\n\t\tqueue.xhr.abort();\n\t\tqueue.xhr = null;\n\t\tqueues.delete(server);\n\t}\n}\n\nfunction loadInternal()\n{\n\tconst server: Server = this;\n\tconst queue = queues.get(server);\n\tif (!queue)\n\t{\n\t\treturn;\n\t}\n\n\tconst { tasks } = queue;\n\tqueues.delete(server);\n\n\tconst fileIds = [];\n\ttasks.forEach(task => {\n\t\tconst { controller, file } = task;\n\t\tfileIds.push(file.getServerId());\n\t});\n\n\tconst controllerOptions = server.getControllerOptions();\n\tAjax.runAction('ui.fileuploader.load', {\n\t\t\tdata: {\n\t\t\t\tfileIds: fileIds,\n\t\t\t},\n\t\t\tgetParameters: {\n\t\t\t\tcontroller: server.getController(),\n\t\t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t\t},\n\t\t\tonrequeststart: (xhr) => {\n\t\t\t\tqueue.xhr = xhr;\n\t\t\t},\n\t\t\tonprogress: (event: ProgressEvent) => {\n\t\t\t\tif (event.lengthComputable)\n\t\t\t\t{\n\t\t\t\t\tconst progress = event.total > 0 ? Math.floor(event.loaded / event.total * 100) : 100;\n\n\t\t\t\t\ttasks.forEach(task => {\n\t\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\t\tcontroller.emit('onProgress', { file, progress });\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t\t.then(response => {\n\t\t\tif (response.data?.files)\n\t\t\t{\n\t\t\t\tconst fileResults = {};\n\t\t\t\tresponse.data.files.forEach((fileResult) => {\n\t\t\t\t\tfileResults[fileResult.id] = fileResult;\n\t\t\t\t});\n\n\t\t\t\ttasks.forEach(task => {\n\t\t\t\t\tconst { controller, file } = task;\n\t\t\t\t\tconst fileResult = fileResults[file.getServerId()] || null;\n\n\t\t\t\t\tif (fileResult && fileResult.success)\n\t\t\t\t\t{\n\t\t\t\t\t\tcontroller.emit('onProgress', { file, progress: 100 });\n\t\t\t\t\t\tcontroller.emit('onLoad', { fileInfo: fileResult.data.file });\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tconst error = UploaderError.createFromAjaxErrors(fileResult?.errors);\n\t\t\t\t\t\tcontroller.emit('onError', { error });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst error = new UploaderError('SERVER_ERROR');\n\t\t\t\ttasks.forEach(task => {\n\t\t\t\t\tconst { controller } = task;\n\t\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.catch(response => {\n\t\t\tconst error = UploaderError.createFromAjaxErrors(response.errors);\n\t\t\ttasks.forEach(task => {\n\t\t\t\tconst { controller } = task;\n\t\t\t\tcontroller.emit('onError', { error: error.clone() });\n\t\t\t});\n\t\t})\n\t;\n}","import AbstractLoadController from './abstract-load-controller';\nimport type Server from './server';\nimport type UploaderFile from '../uploader-file';\nimport { loadMultiple, abort } from './server-load-multiple';\nimport { Type } from 'main.core';\nimport UploaderError from '../uploader-error';\n\nexport default class ServerLoadController extends AbstractLoadController\n{\n\tconstructor(server: Server)\n\t{\n\t\tsuper(server);\n\t}\n\n\tload(file: UploaderFile): void\n\t{\n\t\tif (this.getServer().getController())\n\t\t{\n\t\t\tloadMultiple(this, file);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onProgress', { file, progress: 100 });\n\t\t\tthis.emit('onLoad', { fileInfo: file });\n\t\t}\n\t\t// const controllerOptions = this.getServer().getControllerOptions();\n\t\t// Ajax.runAction('ui.fileuploader.load', {\n\t\t// \t\tdata: {\n\t\t// \t\t\tfileIds: [file.getServerId()],\n\t\t// \t\t},\n\t\t// \t\tgetParameters: {\n\t\t// \t\t\tcontroller: this.getServer().getController(),\n\t\t// \t\t\tcontrollerOptions: controllerOptions ? JSON.stringify(controllerOptions) : null,\n\t\t// \t\t},\n\t\t// \t\tonrequeststart: (xhr) => {\n\t\t// \t\t\tthis.xhr = xhr;\n\t\t// \t\t},\n\t\t// \t\tonprogress: (event: ProgressEvent) => {\n\t\t// \t\t\tif (event.lengthComputable)\n\t\t// \t\t\t{\n\t\t// \t\t\t\tconst progress = event.total > 0 ? Math.floor(event.loaded / event.total * 100): 100;\n\t\t// \t\t\t\tthis.emit('onProgress', { progress });\n\t\t// \t\t\t}\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.then(response => {\n\t\t// \t\tif (response.data?.files)\n\t\t// \t\t{\n\t\t// \t\t\tthis.emit('onProgress', { file, progress: 100 });\n\t\t// \t\t\tthis.emit('onLoad', { file: response.data.file })\n\t\t// \t\t}\n\t\t// \t\telse\n\t\t// \t\t{\n\t\t// \t\t\tthis.emit('onError', { error: new UploaderError('SERVER_ERROR') });\n\t\t// \t\t}\n\t\t// \t})\n\t\t// \t.catch(response => {\n\t\t// \t\tthis.emit('onError', { error: UploaderError.createFromAjaxErrors(response.errors) });\n\t\t// \t})\n\t\t// ;\n\t}\n\n\tabort(): void\n\t{\n\t\tif (this.getServer().getController())\n\t\t{\n\t\t\tabort(this);\n\t\t}\n\t}\n}","import AbstractLoadController from './abstract-load-controller';\nimport Server from './server';\nimport UploaderFile from '../uploader-file';\nimport { Type } from 'main.core';\nimport UploaderError from '../uploader-error';\n\nexport default class ClientLoadController extends AbstractLoadController\n{\n\tconstructor(server: Server)\n\t{\n\t\tsuper(server);\n\t}\n\n\tload(file: UploaderFile): void\n\t{\n\t\tif (Type.isFile(file.getFile()))\n\t\t{\n\t\t\tthis.emit('onProgress', { file, progress: 100 });\n\t\t\tthis.emit('onLoad', { fileInfo: file });\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emit('onError', { error: new UploaderError('WRONG_FILE_SOURCE') });\n\t\t}\n\t}\n\n\tabort(): void\n\t{\n\n\t}\n\n}","import { Extension, Runtime, Type } from 'main.core';\nimport type { ServerOptions } from '../types/server-options';\nimport UploadController from './upload-controller';\nimport AbstractUploadController from './abstract-upload-controller';\nimport ServerLoadController from './server-load-controller';\nimport AbstractLoadController from './abstract-load-controller';\nimport ClientLoadController from './client-load-controller';\n\nexport default class Server\n{\n\tcontroller: ?string = null;\n\tcontrollerOptions: ?{ [key: string]: any } = null;\n\tuploadControllerClass: Class<AbstractUploadController> = null;\n\tloadControllerClass: Class<AbstractLoadController> = null;\n\tchunkSize: number = null;\n\tdefaultChunkSize: number = null;\n\tchunkMinSize: number = null;\n\tchunkMaxSize: number = null;\n\tchunkRetryDelays: number[] = [500, 1000, 3000];\n\n\tconstructor(serverOptions: ServerOptions)\n\t{\n\t\tconst options = Type.isPlainObject(serverOptions) ? serverOptions : {};\n\n\t\tthis.controller = Type.isStringFilled(options.controller) ? options.controller : null;\n\t\tthis.controllerOptions = Type.isPlainObject(options.controllerOptions) ? options.controllerOptions : null;\n\n\t\tconst chunkSize =\n\t\t\tType.isNumber(options.chunkSize) && options.chunkSize > 0\n\t\t\t\t? options.chunkSize\n\t\t\t\t: this.getDefaultChunkSize()\n\t\t;\n\n\t\tthis.chunkSize = options.forceChunkSize === true ? chunkSize : this.#calcChunkSize(chunkSize);\n\n\t\tif (options.chunkRetryDelays === false || options.chunkRetryDelays === null)\n\t\t{\n\t\t\tthis.chunkRetryDelays = [];\n\t\t}\n\t\telse if (Type.isArray(options.chunkRetryDelays))\n\t\t{\n\t\t\tthis.chunkRetryDelays = options.chunkRetryDelays;\n\t\t}\n\n\t\t['uploadControllerClass', 'loadControllerClass'].forEach((controllerClass: string) => {\n\t\t\tif (Type.isStringFilled(options[controllerClass]))\n\t\t\t{\n\t\t\t\tthis[controllerClass] = Runtime.getClass(options[controllerClass]);\n\t\t\t\tif (!Type.isFunction(options[controllerClass]))\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`FileUploader.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\tthis[controllerClass] = options[controllerClass];\n\t\t\t}\n\t\t});\n\t}\n\n\tcreateUploadController(): ?UploadController\n\t{\n\t\tif (this.uploadControllerClass)\n\t\t{\n\t\t\tconst controller = new this.uploadControllerClass(this);\n\t\t\tif (!(controller instanceof AbstractUploadController))\n\t\t\t{\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'FileUploader.Server: \"uploadControllerClass\" must be an instance of AbstractUploadController.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn controller;\n\t\t}\n\t\telse if (Type.isStringFilled(this.controller))\n\t\t{\n\t\t\treturn new UploadController(this);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tcreateLoadController(): ServerLoadController\n\t{\n\t\tif (this.loadControllerClass)\n\t\t{\n\t\t\tconst controller = new this.loadControllerClass(this);\n\t\t\tif (!(controller instanceof AbstractLoadController))\n\t\t\t{\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'FileUploader.Server: \"loadControllerClass\" must be an instance of AbstractLoadController.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn controller;\n\t\t}\n\n\t\treturn new ServerLoadController(this);\n\t}\n\n\tcreateClientLoadController(): ClientLoadController\n\t{\n\t\treturn new ClientLoadController(this);\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.file-uploader');\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.file-uploader');\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.file-uploader');\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}","import Uploader from '../uploader';\nimport UploaderFile from '../uploader-file';\n\nexport default class Filter\n{\n\tuploader: 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}","import { Type } from 'main.core';\nimport Filter from './filter';\nimport Uploader from '../uploader';\nimport UploaderError from '../uploader-error';\nimport formatFileSize from '../helpers/format-file-size';\n\nimport type UploaderFile from '../uploader-file';\n\nexport default class FileSizeFilter extends Filter\n{\n\tmaxFileSize: number = null;\n\tminFileSize: number = null;\n\tmaxTotalFileSize: number = null;\n\timageMaxFileSize: number = null;\n\timageMinFileSize: number = null;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\tconst integerOptions = [\n\t\t\t'maxFileSize',\n\t\t\t'minFileSize',\n\t\t\t'maxTotalFileSize',\n\t\t\t'imageMaxFileSize',\n\t\t\t'imageMinFileSize',\n\t\t];\n\n\t\tintegerOptions.forEach(option => {\n\t\t\tthis[option] = Type.isNumber(options[option]) && options[option] >= 0 ? options[option] : this[option];\n\t\t});\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (this.maxFileSize !== null && file.getSize() > this.maxFileSize)\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.maxFileSize),\n\t\t\t\t\t\t\tmaxFileSizeInBytes: this.maxFileSize,\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 (this.minFileSize !== null && file.getSize() < this.minFileSize)\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.minFileSize),\n\t\t\t\t\t\t\tminFileSizeInBytes: this.minFileSize,\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (file.isImage())\n\t\t\t{\n\t\t\t\tif (this.imageMaxFileSize !== null && file.getSize() > this.imageMaxFileSize)\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'IMAGE_MAX_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\timageMaxFileSize: formatFileSize(this.imageMaxFileSize),\n\t\t\t\t\t\t\t\timageMaxFileSizeInBytes: this.imageMaxFileSize,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.imageMinFileSize !== null && file.getSize() < this.imageMinFileSize)\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'IMAGE_MIN_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\timageMinFileSize: formatFileSize(this.imageMinFileSize),\n\t\t\t\t\t\t\t\timageMinFileSizeInBytes: this.imageMinFileSize,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.maxTotalFileSize !== null)\n\t\t\t{\n\t\t\t\tif (this.getUploader().getTotalSize() > this.maxTotalFileSize)\n\t\t\t\t{\n\t\t\t\t\treject(\n\t\t\t\t\t\tnew UploaderError(\n\t\t\t\t\t\t\t'MAX_TOTAL_FILE_SIZE_EXCEEDED',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmaxTotalFileSize: formatFileSize(this.maxTotalFileSize),\n\t\t\t\t\t\t\t\tmaxTotalFileSizeInBytes: this.maxTotalFileSize,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\n\t}\n}","import { Type } from 'main.core';\n\nconst isValidFileType = (file: File, fileTypes: string[]): boolean => {\n\tif (!Type.isArrayFilled(fileTypes))\n\t{\n\t\treturn true;\n\t}\n\n\tconst mimeType = file.type;\n\tconst baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n\tfor (let i = 0; i < fileTypes.length; i++)\n\t{\n\t\tif (!Type.isStringFilled(fileTypes[i]))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst type = fileTypes[i].trim().toLowerCase();\n\n\t\tif (type.charAt(0) === '.') // extension case\n\t\t{\n\t\t\tif (file.name.toLowerCase().indexOf(type, file.name.length - type.length) !== -1)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse if (/\\/\\*$/.test(type)) // image/* mime type case\n\t\t{\n\t\t\tif (baseMimeType === type.replace(/\\/.*$/, ''))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse if (mimeType === type)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nexport default isValidFileType;","import Filter from './filter';\nimport isValidFileType from '../helpers/is-valid-file-type';\nimport type UploaderFile from '../uploader-file';\nimport Uploader from '../uploader';\nimport UploaderError from '../uploader-error';\n\nexport default class FileTypeFilter extends Filter\n{\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (isValidFileType(file.getFile(), 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}","const getArrayBuffer = (file: File | Blob): Promise<ArrayBuffer> => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst fileReader = new FileReader();\n\t\tfileReader.readAsArrayBuffer(file);\n\n\t\tfileReader.onload = () => {\n\t\t\tconst buffer: ArrayBuffer = fileReader.result;\n\n\t\t\tresolve(buffer);\n\t\t};\n\n\t\tfileReader.onerror = () => {\n\t\t\treject(fileReader.error);\n\t\t};\n\t});\n};\n\nexport default getArrayBuffer;","const convertStringToBuffer = (str: string): ArrayLike => {\n\tconst result = [];\n\tfor (let i = 0; i < str.length; i++)\n\t{\n\t\tresult.push(str.charCodeAt(i) & 0xFF);\n\t}\n\n\treturn result;\n};\nexport default convertStringToBuffer;","const compareBuffers = (dataView: DataView, dest: ArrayLike, start: number): boolean => {\n\tfor (let i = start, j = 0; j < dest.length;)\n\t{\n\t\tif (dataView.getUint8(i++) !== dest[j++])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\nexport default compareBuffers;","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\n\nimport type { ImageSize } from '../image-size-type';\n\nconst GIF87a = convertStringToBuffer('GIF87a');\nconst GIF89a = convertStringToBuffer('GIF89a');\n\nexport default class Gif\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 10)\n\t\t\t{\n\t\t\t\treturn resolve(null);\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 10);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\n\t\t\t\t\tif (!compareBuffers(view, GIF87a, 0) && !compareBuffers(view, GIF89a, 0))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\twidth: view.getUint16(6, true),\n\t\t\t\t\t\theight: view.getUint16(8, true),\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\nimport type { ImageSize } from '../image-size-type';\n\nconst PNG_SIGNATURE = convertStringToBuffer('\\x89PNG\\r\\n\\x1a\\n');\nconst IHDR_SIGNATURE = convertStringToBuffer('IHDR');\nconst FRIED_CHUNK_NAME = convertStringToBuffer('CgBI');\n\nexport default class Png\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 40)\n\t\t\t{\n\t\t\t\treturn resolve(null);\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 40);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\n\t\t\t\t\tif (!compareBuffers(view, PNG_SIGNATURE, 0))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn resolve(null);\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\tresolve(null);\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\tresolve(null);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n};\n","import getArrayBuffer from '../../get-array-buffer';\nimport type { ImageSize } from '../image-size-type';\n\nconst BMP_SIGNATURE = 0x424d; // BM\n\nexport default class Bmp\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 26)\n\t\t\t{\n\t\t\t\treturn resolve(null);\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 26);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\t\t\t\t\tif (!view.getUint16(0) === BMP_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn resolve(null);\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(() => {\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n","import getArrayBuffer from '../../get-array-buffer';\nimport convertStringToBuffer from '../convert-string-to-buffer';\nimport compareBuffers from '../compare-buffers';\n\nimport type { ImageSize } from '../image-size-type';\n\nconst EXIF_SIGNATURE = convertStringToBuffer('Exif\\0\\0');\n\nexport default class Jpeg\n{\n\tgetSize(file: File): ?ImageSize\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 2)\n\t\t\t{\n\t\t\t\treturn resolve(null);\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\tresolve(null);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet offset = 2;\n\t\t\t\t\tlet orientation = -1;\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (view.byteLength - offset < 2)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (view.getUint8(offset++) !== 0xFF)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet code = view.getUint8(offset++);\n\t\t\t\t\t\tlet length;\n\n\t\t\t\t\t\t// skip padding bytes\n\t\t\t\t\t\twhile (code === 0xFF)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode = view.getUint8(offset++);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((0xD0 <= code && code <= 0xD9) || code === 0x01)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlength = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (0xC0 <= code && code <= 0xFE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// the rest of the unreserved markers\n\t\t\t\t\t\t\tif (view.byteLength - offset < 2)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn resolve(null);\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\t// unknown markers\n\t\t\t\t\t\t\treturn resolve(null);\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\t// end of the datastream\n\t\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// try to get orientation from Exif segment\n\t\t\t\t\t\tif (code === 0xE1 && length >= 10 && compareBuffers(view, EXIF_SIGNATURE, offset))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst exifBlock = new DataView(view.buffer, offset + 6, offset + length);\n\t\t\t\t\t\t\torientation = getOrientation(exifBlock);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tlength >= 5\n\t\t\t\t\t\t\t&& (0xC0 <= code && code <= 0xCF)\n\t\t\t\t\t\t\t&& code !== 0xC4 && code !== 0xC8 && code !== 0xCC\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (view.byteLength - offset < length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet width = view.getUint16(offset + 3);\n\t\t\t\t\t\t\tlet height = view.getUint16(offset + 1);\n\t\t\t\t\t\t\tif (orientation >= 5 && orientation <= 8)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[width, height] = [height, width];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn resolve({\n\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\torientation,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\toffset += length;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n\nconst Marker = {\n\tBIG_ENDIAN: 0x4d4d,\n\tLITTLE_ENDIAN: 0x4949,\n};\n\nconst getOrientation = (exifBlock: DataView) => {\n\tconst byteAlign = exifBlock.getUint16(0);\n\tconst isBigEndian = byteAlign === Marker.BIG_ENDIAN;\n\tconst isLittleEndian = byteAlign === Marker.LITTLE_ENDIAN;\n\n\tif (isBigEndian || isLittleEndian)\n\t{\n\t\treturn extractOrientation(exifBlock, isLittleEndian);\n\t}\n\n\treturn -1;\n};\n\nconst extractOrientation = (exifBlock: DataView, littleEndian: boolean = false) => {\n\n\tconst offset = 8; // idf offset\n\tconst idfDirectoryEntries = exifBlock.getUint16(offset, littleEndian);\n\n\tconst IDF_ENTRY_BYTES = 12;\n\tconst NUM_DIRECTORY_ENTRIES_BYTES = 2;\n\n\tfor (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++)\n\t{\n\t\tconst start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES);\n\t\tconst end = start + IDF_ENTRY_BYTES;\n\n\t\t// Skip on corrupt EXIF blocks\n\t\tif (start > exifBlock.byteLength)\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst block = new DataView(exifBlock.buffer, exifBlock.byteOffset + start, end - start);\n\t\tconst tagNumber = block.getUint16(0, littleEndian);\n\n\t\t// 274 is the `orientation` tag ID\n\t\tif (tagNumber === 274)\n\t\t{\n\t\t\tconst dataFormat = block.getUint16(2, littleEndian)\n\t\t\tif (dataFormat !== 3)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tconst numberOfComponents = block.getUint32(4, littleEndian);\n\t\t\tif (numberOfComponents !== 1)\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\treturn block.getUint16(8, littleEndian)\n\t\t}\n\t}\n};\n","import getArrayBuffer from '../../get-array-buffer';\nimport type { ImageSize } from '../image-size-type';\n\nconst RIFF_HEADER = 0x52494646; // RIFF\nconst WEBP_SIGNATURE = 0x57454250; // WEBP\nconst VP8_SIGNATURE = 0x56503820; // VP8\nconst VP8L_SIGNATURE = 0x5650384c; // VP8L\nconst VP8X_SIGNATURE = 0x56503858; // VP8X\n\nexport default class Webp\n{\n\tgetSize(file: File): Promise<?ImageSize>\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (file.size < 16)\n\t\t\t{\n\t\t\t\treturn resolve(null);\n\t\t\t}\n\n\t\t\tconst blob = file.slice(0, 30);\n\t\t\tgetArrayBuffer(blob)\n\t\t\t\t.then((buffer: ArrayBuffer) => {\n\t\t\t\t\tconst view = new DataView(buffer);\n\t\t\t\t\tif (view.getUint32(0) !== RIFF_HEADER && view.getUint32(8) !== WEBP_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn resolve(null);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst headerType = view.getUint32(12);\n\t\t\t\t\tconst headerView = new DataView(buffer, 20, 10);\n\t\t\t\t\tif (headerType === VP8_SIGNATURE && headerView.getUint8(0) !== 0x2f)\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\twidth: headerView.getUint16(6, true) & 0x3fff,\n\t\t\t\t\t\t\theight: headerView.getUint16(8, true) & 0x3fff,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if (headerType === VP8L_SIGNATURE && headerView.getUint8(0) === 0x2f)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst bits = headerView.getUint32(1, true);\n\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\twidth: (bits & 0x3FFF) + 1,\n\t\t\t\t\t\t\theight: ((bits >> 14) & 0x3FFF) + 1,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if (headerType === VP8X_SIGNATURE)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst extendedHeader = headerView.getUint8(0);\n\t\t\t\t\t\tconst validStart = (extendedHeader & 0xc0) === 0;\n\t\t\t\t\t\tconst validEnd = (extendedHeader & 0x01) === 0;\n\t\t\t\t\t\tif (validStart && validEnd)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst width = 1 + (\n\t\t\t\t\t\t\t\t(headerView.getUint8(6) << 16)\n\t\t\t\t\t\t\t\t| (headerView.getUint8(5) << 8)\n\t\t\t\t\t\t\t\t| headerView.getUint8(4)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst height = 1 + (\n\t\t\t\t\t\t\t\t(headerView.getUint8(9) << 0)\n\t\t\t\t\t\t\t\t| (headerView.getUint8(8) << 8)\n\t\t\t\t\t\t\t\t| headerView.getUint8(7)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tresolve({ width, height });\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve(null);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n","import Gif from './types/gif';\nimport Png from './types/png';\nimport Bmp from './types/bmp';\nimport Jpeg from './types/jpeg';\nimport Webp from './types/webp';\n\nimport getFileExtension from '../get-file-extension';\nimport type { ImageSize } from './image-size-type';\n\nconst jpg = new Jpeg();\nconst typeHandlers = {\n\tgif: new Gif(),\n\tpng: new Png(),\n\tbmp: new Bmp(),\n\tjpg: jpg,\n\tjpeg: jpg,\n\tjpe: jpg,\n\twebp: new Webp()\n};\n\nconst getImageSize = (file: File): Promise<?ImageSize> => {\n\tif (file.size === 0)\n\t{\n\t\treturn Promise.resolve(null);\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.resolve(null);\n\t}\n\n\treturn typeHandler.getSize(file);\n};\n\nexport default getImageSize;\n\n","import { Type } from 'main.core';\n\nimport Filter from './filter';\nimport Uploader from '../uploader';\nimport UploaderError from '../uploader-error';\n\nimport getImageSize from '../helpers/image-size/get-image-size';\nimport type UploaderFile from '../uploader-file';\n\nexport default class ImageSizeFilter extends Filter\n{\n\timageMinWidth: number = 1;\n\timageMinHeight: number = 1;\n\timageMaxWidth: number = 10000;\n\timageMaxHeight: number = 10000;\n\tignoreUnknownImageTypes: boolean = false;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\n\t\t['imageMinWidth', 'imageMinHeight', 'imageMaxWidth', 'imageMaxHeight'].forEach(option => {\n\t\t\tthis[option] = Type.isNumber(options[option]) && options[option] > 0 ? options[option] : this[option];\n\t\t});\n\n\t\tif (Type.isBoolean(options['ignoreUnknownImageTypes']))\n\t\t{\n\t\t\tthis.ignoreUnknownImageTypes = options['ignoreUnknownImageTypes'];\n\t\t}\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\n\t\t\tif (!file.isImage())\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgetImageSize(file.getFile())\n\t\t\t\t.then(({ width, height }) => {\n\t\t\t\t\tfile.setWidth(width);\n\t\t\t\t\tfile.setHeight(height);\n\n\t\t\t\t\tif (width < this.imageMinWidth || height < this.imageMinHeight)\n\t\t\t\t\t{\n\t\t\t\t\t\treject(new UploaderError(\n\t\t\t\t\t\t\t'IMAGE_IS_TOO_SMALL',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tminWidth: this.imageMinWidth,\n\t\t\t\t\t\t\t\tminHeight: this.imageMinHeight,\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.imageMaxWidth || height > this.imageMaxHeight)\n\t\t\t\t\t{\n\t\t\t\t\t\treject(new UploaderError(\n\t\t\t\t\t\t\t'IMAGE_IS_TOO_BIG',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmaxWidth: this.imageMaxWidth,\n\t\t\t\t\t\t\t\tmaxHeight: this.imageMaxHeight,\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(() => {\n\t\t\t\t\tif (this.ignoreUnknownImageTypes)\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\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}","import createUniqueId from './create-unique-id';\n\nconst createWorker = (fn: Function) => {\n\tconst workerBlob = new Blob(['(', fn.toString(), ')()'], { type: 'application/javascript' });\n\tconst workerURL = URL.createObjectURL(workerBlob);\n\tconst worker = new Worker(workerURL);\n\n\treturn {\n\t\tpost: (message, callback, transfer): void => {\n\t\t\tconst id = createUniqueId();\n\t\t\tworker.onmessage = event => {\n\t\t\t\tif (event.data.id === id)\n\t\t\t\t{\n\t\t\t\t\tcallback(event.data.message);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tworker.postMessage({ id, message }, transfer);\n\t\t},\n\t\tterminate: (): void => {\n\t\t\tworker.terminate();\n\t\t\tURL.revokeObjectURL(workerURL);\n\t\t}\n\t};\n};\n\nexport default createWorker;","const BitmapWorker = function() {\n\tself.onmessage = event => {\n\t\tcreateImageBitmap(event.data.message.file)\n\t\t\t.then(bitmap => {\n\t\t\t\tself.postMessage({ id: event.data.id, message: bitmap }, [bitmap]);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tself.postMessage({ id: event.data.id, message: null }, []);\n\t\t\t})\n\t\t;\n\t};\n};\n\nexport default BitmapWorker;","const loadImage = (file: File | Blob) => new Promise((resolve, reject) => {\n\n\tconst image = document.createElement('img');\n\tconst url = URL.createObjectURL(file);\n\timage.src = url;\n\n\timage.onerror = error => {\n\t\tURL.revokeObjectURL(image.src);\n\t\treject(error);\n\t};\n\n\timage.onload = () => {\n\t\tURL.revokeObjectURL(url);\n\t\tresolve({\n\t\t\twidth: image.naturalWidth,\n\t\t\theight: image.naturalHeight,\n\t\t\timage\n\t\t});\n\t};\n});\n\nexport default loadImage;","const createImagePreview = (data, width: number, height: number) => {\n\twidth = Math.round(width);\n\theight = Math.round(height);\n\n\tconst canvas = document.createElement('canvas');\n\tcanvas.width = width;\n\tcanvas.height = height;\n\n\tconst context = canvas.getContext('2d');\n\t// context.imageSmoothingQuality = 'high';\n\tcontext.drawImage(data, 0, 0, width, height);\n\n\treturn canvas;\n};\n\nexport default createImagePreview;","const getFilenameWithoutExtension = (name) => {\n\treturn name.substr(0, name.lastIndexOf('.')) || name;\n};\n\nexport default getFilenameWithoutExtension;","import getFilenameWithoutExtension from './get-filename-without-extension';\n\nconst extensionMap = {\n\t'jpeg': 'jpg',\n};\n\nconst renameFileToMatchMimeType = (filename, mimeType) => {\n\tconst name = getFilenameWithoutExtension(filename);\n\tconst type = mimeType.split('/')[1];\n\tconst extension = extensionMap[type] || type;\n\n\treturn `${name}.${extension}`;\n};\n\nexport default renameFileToMatchMimeType;","import createBlobFromDataUri from './create-blob-from-data-uri';\n\nconst canvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\nconst hasToBlobSupport = window.HTMLCanvasElement && canvasPrototype.toBlob;\n\nconst convertCanvasToBlob = (canvas: HTMLCanvasElement, type: string, quality: number) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (hasToBlobSupport)\n\t\t{\n\t\t\tcanvas.toBlob((blob: Blob) => {\n\t\t\t\tresolve(blob);\n\t\t\t}, type, quality);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst blob = createBlobFromDataUri(canvas.toDataURL(type, quality));\n\n\t\t\tresolve(blob);\n\t\t}\n\t});\n};\n\nexport default convertCanvasToBlob;","import createWorker from './create-worker';\nimport BitmapWorker from './bitmap-worker';\nimport loadImage from './load-image';\nimport createImagePreview from './create-image-preview';\nimport renameFileToMatchMimeType from './rename-file-to-match-mime-type';\nimport createFileFromBlob from './create-file-from-blob';\nimport convertCanvasToBlob from './convert-canvas-to-blob';\n\ntype ResizeImageOptions = {\n\tmode?: 'contain' | 'crop' | 'force',\n\tupscale?: boolean,\n\twidth?: number,\n\theight?: number,\n\tquality?: number,\n};\n\nconst canCreateImageBitmap = (\n\t'createImageBitmap' in window\n\t&& typeof ImageBitmap !== 'undefined'\n\t&& ImageBitmap.prototype\n\t&& ImageBitmap.prototype.close\n);\n\nconst resizeImage = (file: File, options: ResizeImageOptions) => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst loadImageDataFallback = () => {\n\t\t\tloadImage(file)\n\t\t\t\t.then(({ image }) => {\n\t\t\t\t\thandleImageLoad(image);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t;\n\t\t};\n\n\t\tconst handleImageLoad = (imageData: ImageBitmap | HTMLImageElement) => {\n\t\t\tconst { targetWidth, targetHeight } = calcTargetSize(imageData, options);\n\t\t\tif (!targetWidth || !targetHeight)\n\t\t\t{\n\t\t\t\tif ('close' in imageData)\n\t\t\t\t{\n\t\t\t\t\timageData.close();\n\t\t\t\t}\n\n\t\t\t\tresolve({\n\t\t\t\t\tpreview: file,\n\t\t\t\t\twidth: imageData.width,\n\t\t\t\t\theight: imageData.height,\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst canvas = createImagePreview(imageData, targetWidth, targetHeight);\n\n\t\t\t// if it was ImageBitmap\n\t\t\tif ('close' in imageData)\n\t\t\t{\n\t\t\t\timageData.close();\n\t\t\t}\n\n\t\t\tconst { quality = 0.92, mimeType = 'image/jpeg' } = options;\n\t\t\tconst type = /jpeg|png|webp/.test(file.type) ? file.type : mimeType;\n\n\t\t\tconvertCanvasToBlob(canvas, type, quality)\n\t\t\t\t.then((blob: Blob) => {\n\t\t\t\t\tconst newFileName = renameFileToMatchMimeType(file.name, type);\n\t\t\t\t\tconst preview = createFileFromBlob(blob, newFileName);\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tpreview,\n\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\theight: targetHeight,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\treject();\n\t\t\t\t})\n\t\t\t;\n\t\t};\n\n\t\tif (canCreateImageBitmap)\n\t\t{\n\t\t\tconst bitmapWorker = createWorker(BitmapWorker);\n\t\t\tbitmapWorker.post({ file },\n\t\t\t\t(imageBitmap: ImageBitmap) => {\n\t\t\t\t\tbitmapWorker.terminate();\n\t\t\t\t\tif (imageBitmap)\n\t\t\t\t\t{\n\t\t\t\t\t\thandleImageLoad(imageBitmap);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tloadImageDataFallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tloadImageDataFallback();\n\t\t}\n\t});\n};\n\nexport default resizeImage;\n\nconst calcTargetSize = (imageData: ImageBitmap | HTMLImageElement, options = {}) => {\n\tlet { mode = 'contain', upscale = false, width, height } = options;\n\n\tconst result = {\n\t\ttargetWidth: 0,\n\t\ttargetHeight: 0,\n\t};\n\n\tif (!width && !height)\n\t{\n\t\treturn result;\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 result;\n\t\t}\n\n\t\twidth = imageData.width * ratio;\n\t\theight = imageData.height * ratio;\n\t}\n\n\t/*if (mode === 'crop')\n\t{\n\t\tconst sourceImageRatio = sourceImageWidth / sourceImageHeight;\n\t\tconst targetRatio = targetWidth / targetHeight;\n\n\t\tif (sourceImageRatio > targetRatio)\n\t\t{\n\t\t\tconst newWidth = sourceImageHeight * targetRatio;\n\t\t\tsrcX = (sourceImageWidth - newWidth) / 2;\n\t\t\tsourceImageWidth = newWidth;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst newHeight = sourceImageWidth / targetRatio;\n\t\t\tsrcY = (sourceImageHeight - newHeight) / 2;\n\t\t\tsourceImageHeight = newHeight;\n\t\t}\n\n\t\tcontext.drawImage(image, srcX, srcY, sourceImageWidth, sourceImageHeight, 0, 0, targetWidth, targetHeight);\n\t}*/\n\n\tresult.targetWidth = Math.round(width);\n\tresult.targetHeight = Math.round(height);\n\n\treturn result;\n};","import { Type } from 'main.core';\n\nimport Filter from './filter';\nimport Uploader from '../uploader';\n\nimport resizeImage from '../helpers/resize-image';\nimport isResizableImage from '../helpers/is-resizable-image';\nimport type UploaderFile from '../uploader-file';\n\nexport default class ImagePreviewFilter extends Filter\n{\n\timagePreviewWidth: number = 300;\n\timagePreviewHeight: number = 300;\n\timagePreviewQuality: number = 0.92;\n\timagePreviewMimeType: string = 'image/jpeg';\n\timagePreviewUpscale: boolean = false;\n\timagePreviewResizeMethod: string = 'contain';\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\t\tconst integerOptions = [\n\t\t\t'imagePreviewWidth',\n\t\t\t'imagePreviewHeight',\n\t\t\t'imagePreviewQuality',\n\t\t];\n\n\t\tintegerOptions.forEach(option => {\n\t\t\tthis[option] = Type.isNumber(options[option]) && options[option] > 0 ? options[option] : this[option];\n\t\t});\n\n\t\tif (Type.isBoolean(options['imagePreviewUpscale']))\n\t\t{\n\t\t\tthis.imagePreviewUpscale = options['imagePreviewUpscale'];\n\t\t}\n\n\t\tif (['contain', 'force', 'cover'].includes(options['imagePreviewResizeMethod']))\n\t\t{\n\t\t\tthis.imagePreviewResizeMethod = options['imagePreviewResizeMethod'];\n\t\t}\n\n\t\tif (['image/jpeg', 'image/png'].includes(options['imagePreviewMimeType']))\n\t\t{\n\t\t\tthis.imagePreviewMimeType = options['imagePreviewMimeType'];\n\t\t}\n\t}\n\n\tapply(file: UploaderFile): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!isResizableImage(file.getFile()))\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst options = {\n\t\t\t\twidth: this.imagePreviewWidth,\n\t\t\t\theight: this.imagePreviewHeight,\n\t\t\t\tmode: this.imagePreviewResizeMethod,\n\t\t\t\tupscale: this.imagePreviewUpscale,\n\t\t\t\tquality: this.imagePreviewQuality,\n\t\t\t\tmimeType: this.imagePreviewMimeType,\n\t\t\t};\n\n\t\t\tresizeImage(file.getFile(), options)\n\t\t\t\t.then(({ preview, width, height }) => {\n\n\t\t\t\t\t//setTimeout(() => {\n\t\t\t\t\t\tfile.setClientPreview(preview, width, height);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t//}, 60000);\n\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}\n","import { Type } from 'main.core';\nimport Filter from './filter';\nimport Uploader from '../uploader';\n\nimport isResizableImage from '../helpers/is-resizable-image';\nimport resizeImage from '../helpers/resize-image';\n\nexport default class TransformImageFilter extends Filter\n{\n\tresizeWidth: number = null;\n\tresizeHeight: number = null;\n\tresizeMethod: string = 'contain';\n\tresizeMimeType: string = 'image/jpeg';\n\tresizeQuality: number = 0.92;\n\n\tconstructor(uploader: Uploader, filterOptions: { [key: string]: any } = {})\n\t{\n\t\tsuper(uploader);\n\n\t\tconst options = Type.isPlainObject(filterOptions) ? filterOptions : {};\n\t\tif (Type.isNumber(options['imageResizeWidth']) && options['imageResizeWidth'] > 0)\n\t\t{\n\t\t\tthis.resizeWidth = options['imageResizeWidth'];\n\t\t}\n\n\t\tif (Type.isNumber(options['imageResizeHeight']) && options['imageResizeHeight'] > 0)\n\t\t{\n\t\t\tthis.resizeHeight = options['imageResizeHeight'];\n\t\t}\n\n\t\tif (['contain', 'force', 'cover'].includes(options['imageResizeMethod']))\n\t\t{\n\t\t\tthis.resizeMethod = options['imageResizeMethod'];\n\t\t}\n\n\t\tif (Type.isNumber(options['imageResizeQuality']))\n\t\t{\n\t\t\tthis.resizeQuality = Math.min(Math.max(0.1, options['imageResizeQuality']), 1);\n\t\t}\n\n\t\tif (['image/jpeg', 'image/png'].includes(options['imageResizeMimeType']))\n\t\t{\n\t\t\tthis.resizeMimeType = options['imageResizeMimeType'];\n\t\t}\n\t}\n\n\tapply(file: File): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!isResizableImage(file))\n\t\t\t{\n\t\t\t\treturn resolve(file);\n\t\t\t}\n\n\t\t\tif (this.resizeWidth === null && this.resizeHeight === null)\n\t\t\t{\n\t\t\t\treturn resolve(file);\n\t\t\t}\n\n\t\t\tconst options = {\n\t\t\t\twidth: this.resizeWidth,\n\t\t\t\theight: this.resizeHeight,\n\t\t\t\tmode: this.resizeMethod,\n\t\t\t\tquality: this.resizeQuality,\n\t\t\t\tmimeType: this.resizeMimeType,\n\t\t\t};\n\n\t\t\tresizeImage(file, options)\n\t\t\t\t.then(({ preview }) => {\n\t\t\t\t\tresolve(preview);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tresolve(file);\n\t\t\t\t})\n\t\t\t;\n\t\t});\n\t}\n}","export const UploaderStatus = {\n\tSTARTED: 0,\n\tSTOPPED: 1,\n};","export const FilterType = {\n\tVALIDATION: 'validation',\n\tPREPARATION: 'preparation',\n};","const getFilesFromDataTransfer = (dataTransfer: DataTransfer) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!dataTransfer.items)\n\t\t{\n\t\t\tresolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = Array.from(dataTransfer.items)\n\t\t\t.filter(item => isFileSystemItem(item))\n\t\t\t.map(item => getFilesFromItem(item))\n\t\t;\n\n\t\tPromise.all(items)\n\t\t\t.then((fileGroups: Array<File[]>) => {\n\t\t\t\tconst files = [];\n\t\t\t\tfileGroups.forEach((group: File[]) => {\n\t\t\t\t\tfiles.push.apply(files, group);\n\t\t\t\t});\n\n\t\t\t\tresolve(files);\n\t\t\t})\n\t\t\t.catch(reject)\n\t\t;\n\t});\n};\n\nexport default getFilesFromDataTransfer;\n\nconst isFileSystemItem = (item: DataTransferItem) => {\n\tif ('webkitGetAsEntry' in item)\n\t{\n\t\tconst entry = item.webkitGetAsEntry();\n\t\tif (entry)\n\t\t{\n\t\t\treturn entry.isFile || entry.isDirectory;\n\t\t}\n\t}\n\n\treturn item.kind === 'file';\n};\n\nconst getFilesFromItem = (item: DataTransferItem) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (isDirectoryEntry(item))\n\t\t{\n\t\t\tgetFilesInDirectory(getAsEntry(item))\n\t\t\t\t.then(resolve)\n\t\t\t\t.catch(reject)\n\t\t\t;\n\n\t\t\treturn;\n\t\t}\n\n\t\tresolve([item.getAsFile()]);\n\t});\n};\n\nconst getFilesInDirectory = entry => {\n\treturn new Promise((resolve, reject) => {\n\t\tconst files = [];\n\t\tlet dirCounter = 0;\n\t\tlet fileCounter = 0;\n\n\t\tconst resolveIfDone = () => {\n\t\t\tif (fileCounter === 0 && dirCounter === 0)\n\t\t\t{\n\t\t\t\tresolve(files);\n\t\t\t}\n\t\t};\n\n\t\tconst readEntries = dirEntry => {\n\t\t\tdirCounter++;\n\t\t\tconst directoryReader = dirEntry.createReader();\n\t\t\tconst readBatch = () => {\n\t\t\t\tdirectoryReader.readEntries(entries => {\n\t\t\t\t\tif (entries.length === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tdirCounter--;\n\t\t\t\t\t\tresolveIfDone();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tentries.forEach(entry => {\n\t\t\t\t\t\tif (entry.isDirectory)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treadEntries(entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfileCounter++;\n\t\t\t\t\t\t\tentry.file(file => {\n\t\t\t\t\t\t\t\tfiles.push(file);\n\t\t\t\t\t\t\t\tfileCounter--;\n\t\t\t\t\t\t\t\tresolveIfDone();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treadBatch();\n\t\t\t\t}, reject);\n\t\t\t};\n\n\t\t\treadBatch();\n\t\t};\n\n\t\treadEntries(entry);\n\t});\n};\n\nconst isDirectoryEntry = item => isEntry(item) && (getAsEntry(item) || {}).isDirectory;\nconst isEntry = item => 'webkitGetAsEntry' in item;\nconst getAsEntry = item => item.webkitGetAsEntry();","let result = null;\n\nconst canAppendFileToForm = () => {\n\tif (result === null)\n\t{\n\t\ttry\n\t\t{\n\t\t\tconst dataTransfer = new DataTransfer();\n\t\t\tconst file = new File(['hello'], 'my.txt');\n\t\t\tdataTransfer.items.add(file);\n\n\t\t\tconst input = document.createElement('input');\n\t\t\tinput.setAttribute('type', 'file');\n\t\t\tinput.files = dataTransfer.files;\n\n\t\t\tresult = input.files.length === 1;\n\t\t}\n\t\tcatch (err)\n\t\t{\n\t\t\tresult = false;\n\t\t}\n\t}\n\n\treturn result;\n};\n\nexport default canAppendFileToForm;","import { Type } from 'main.core';\n\nconst assignFileToInput = (input: HTMLInputElement, file: File | File[]) => {\n\ttry\n\t{\n\t\tconst dataTransfer = new DataTransfer();\n\t\tconst files = Type.isArray(file) ? file : [file];\n\n\t\tfiles.forEach(file => {\n\t\t\tdataTransfer.items.add(file);\n\t\t});\n\n\t\tinput.files = dataTransfer.files;\n\t}\n\tcatch (error)\n\t{\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\nexport default assignFileToInput;","import { Type, Event, Reflection, Dom } from 'main.core';\nimport { EventEmitter, BaseEvent } from 'main.core.events';\n\nimport UploaderFile from './uploader-file';\nimport UploaderError from './uploader-error';\nimport Server from './backend/server';\n\nimport Filter from './filters/filter';\nimport FileSizeFilter from './filters/file-size-filter';\nimport FileTypeFilter from './filters/file-type-filter';\nimport ImageSizeFilter from './filters/image-size-filter';\nimport ImagePreviewFilter from './filters/image-preview-filter';\nimport TransformImageFilter from './filters/transform-image-filter';\n\nimport { FileStatus } from './enums/file-status';\nimport { UploaderStatus } from './enums/uploader-status';\nimport { FileOrigin } from './enums/file-origin';\nimport { FilterType } from './enums/filter-type';\n\nimport getFilesFromDataTransfer from './helpers/get-files-from-data-transfer';\nimport canAppendFileToForm from './helpers/can-append-file-to-form';\nimport assignFileToInput from './helpers/assign-file-to-input';\n\nimport type { UploaderOptions } from './types/uploader-options';\nimport type { UploaderFileOptions } from './types/uploader-file-options';\n\nexport default class Uploader extends EventEmitter\n{\n\tfiles: UploaderFile[] = [];\n\tmultiple: boolean = false;\n\tautoUpload: boolean = true;\n\tallowReplaceSingle: boolean = true;\n\tmaxParallelUploads: number = 2;\n\tmaxParallelLoads: number = 10;\n\tacceptedFileTypes: string[] = [];\n\tignoredFileNames: string[] = ['.ds_store', 'thumbs.db', 'desktop.ini'];\n\tmaxFileCount: ?number = null;\n\tserver: Server = null;\n\n\thiddenFields: Map<string, HTMLInputElement> = new Map();\n\thiddenFieldsContainer: HTMLElement = null;\n\thiddenFieldName: string = 'file';\n\tassignAsFile: boolean = false;\n\n\tfilters: Map<FilterType, Filter[]> = new Map();\n\tstatus: UploaderStatus = UploaderStatus.STOPPED;\n\n\tconstructor(uploaderOptions: UploaderOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.FileUploader');\n\n\t\tconst options = Type.isPlainObject(uploaderOptions) ? Object.assign({}, uploaderOptions) : {};\n\n\t\tthis.multiple = Type.isBoolean(options.multiple) ? options.multiple : false;\n\n\t\tthis.setAutoUpload(options.autoUpload);\n\t\tthis.setMaxParallelUploads(options.maxParallelUploads);\n\t\tthis.setMaxParallelLoads(options.maxParallelLoads);\n\t\tthis.setAcceptedFileTypes(options.acceptedFileTypes);\n\t\tthis.setIgnoredFileNames(options.ignoredFileNames);\n\t\tthis.setMaxFileCount(options.maxFileCount);\n\t\tthis.setAllowReplaceSingle(options.allowReplaceSingle);\n\n\t\tthis.assignBrowse(options.browseElement);\n\t\tthis.assignDropzone(options.dropElement);\n\t\tthis.assignPaste(options.pasteElement);\n\n\t\tthis.setHiddenFieldsContainer(options.hiddenFieldsContainer);\n\t\tthis.setHiddenFieldName(options.hiddenFieldName);\n\t\tthis.setAssignAsFile(options.assignAsFile);\n\n\t\tlet serverOptions = Type.isPlainObject(options.serverOptions) ? options.serverOptions : {};\n\t\tserverOptions = Object.assign(\n\t\t\t{},\n\t\t\t{ controller: options.controller, controllerOptions: options.controllerOptions },\n\t\t\tserverOptions\n\t\t);\n\n\t\tthis.server = new Server(serverOptions);\n\n\t\tthis.subscribeFromOptions(options.events);\n\n\t\tthis.addFilter(FilterType.VALIDATION, new FileSizeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new FileTypeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new ImageSizeFilter(this, options));\n\t\tthis.addFilter(FilterType.VALIDATION, new ImagePreviewFilter(this, options));\n\t\tthis.addFilter(FilterType.PREPARATION, new TransformImageFilter(this, options));\n\t\tthis.addFilters(options.filters);\n\n\t\tthis.handleBeforeUpload = this.handleBeforeUpload.bind(this);\n\t\tthis.handlePrepareFileAsync = this.handlePrepareFileAsync.bind(this);\n\t\tthis.handleUploadStart = this.handleBeforeUpload.bind(this);\n\t\tthis.handleFileCancel = this.handleFileCancel.bind(this);\n\t\tthis.handleFileStatusChange = this.handleFileStatusChange.bind(this);\n\t\tthis.handleFileStateChange = this.handleFileStateChange.bind(this);\n\n\t\tthis.addFiles(options.files);\n\t}\n\n\taddFiles(fileList: ArrayLike): void\n\t{\n\t\tif (!Type.isArrayLike(fileList))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst files = Array.from(fileList);\n\t\tif (this.#exceedsMaxFileCount(files))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfiles.forEach(file => {\n\t\t\tif (Type.isArrayFilled(file))\n\t\t\t{\n\t\t\t\tthis.addFile(file[0], file[1]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.addFile(file);\n\t\t\t}\n\t\t});\n\t}\n\n\taddFile(source: File | Blob | string | number, options: UploaderFileOptions)\n\t{\n\t\tconst file = new UploaderFile(source, options);\n\n\t\tif (this.getIgnoredFileNames().includes(file.getName().toLowerCase()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#exceedsMaxFileCount([file]))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.isMultiple() && this.shouldReplaceSingle() && this.getFiles().length > 0)\n\t\t{\n\t\t\tconst fileToReplace: UploaderFile = this.getFiles()[0];\n\t\t\tthis.removeFile(fileToReplace);\n\t\t}\n\n\t\tconst event = new BaseEvent({ data: { file: file } });\n\t\tthis.emit('File:onBeforeAdd', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#setLoadController(file);\n\t\tthis.#setUploadController(file);\n\n\t\tthis.files.push(file);\n\t\tfile.setStatus(FileStatus.ADDED);\n\n\t\tthis.emit('File:onAddStart', { file });\n\n\t\tfile.subscribe('onBeforeUpload', this.handleBeforeUpload);\n\t\tfile.subscribe('onPrepareFileAsync', this.handlePrepareFileAsync);\n\t\tfile.subscribe('onUploadStart', this.handleUploadStart);\n\t\tfile.subscribe('onCancel', this.handleFileCancel);\n\t\tfile.subscribe('onStatusChange', this.handleFileStatusChange);\n\t\tfile.subscribe('onStateChange', this.handleFileStateChange);\n\n\t\tif (file.getOrigin() === FileOrigin.SERVER)\n\t\t{\n\t\t\tfile.load();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#loadNext();\n\t\t}\n\t}\n\n\t#setLoadController(file: UploaderFile): void\n\t{\n\t\tconst loadController =\n\t\t\tfile.getOrigin() === FileOrigin.SERVER\n\t\t\t\t? this.getServer().createLoadController()\n\t\t\t\t: this.getServer().createClientLoadController()\n\t\t;\n\n\t\tloadController.subscribeFromOptions({\n\t\t\t'onError': (event: BaseEvent) => {\n\t\t\t\tfile.setStatus(FileStatus.LOAD_FAILED);\n\t\t\t\tthis.emit('File:onError', { file, error: event.getData().error });\n\t\t\t\tthis.#loadNext();\n\t\t\t},\n\t\t\t'onProgress': (event: BaseEvent) => {\n\t\t\t\tthis.emit('File:onLoadProgress', { file, progress: event.getData().progress });\n\t\t\t},\n\t\t\t'onLoad': (event: BaseEvent) => {\n\n\t\t\t\tif (file.getOrigin() === FileOrigin.SERVER)\n\t\t\t\t{\n\t\t\t\t\tfile.setFile(event.getData().fileInfo);\n\t\t\t\t\tfile.setStatus(FileStatus.COMPLETE);\n\t\t\t\t\tthis.emit('File:onAdd', { file });\n\t\t\t\t\tthis.emit('File:onLoadComplete', { file });\n\t\t\t\t\tthis.emit('File:onComplete', { file });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Validation\n\t\t\t\tthis.#applyFilters(FilterType.VALIDATION, file)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tif (file.isUploadable())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile.setStatus(FileStatus.PENDING);\n\t\t\t\t\t\t\tthis.emit('File:onAdd', { file });\n\t\t\t\t\t\t\tthis.emit('File:onLoadComplete', { file });\n\n\t\t\t\t\t\t\tif (this.shouldAutoUpload())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfile.upload();\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\tfile.setStatus(FileStatus.COMPLETE);\n\t\t\t\t\t\t\tthis.emit('File:onAdd', { file });\n\t\t\t\t\t\t\tthis.emit('File:onLoadComplete', { file });\n\t\t\t\t\t\t\tthis.emit('File:onComplete', { file });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.#loadNext();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tfile.setStatus(FileStatus.LOAD_FAILED);\n\t\t\t\t\t\tthis.emit('File:onError', { file, error });\n\t\t\t\t\t\tthis.emit('File:onAdd', { file, error });\n\t\t\t\t\t\tthis.#loadNext();\n\t\t\t\t\t})\n\t\t\t\t;\n\t\t\t},\n\t\t});\n\n\t\tfile.setLoadController(loadController);\n\t}\n\n\t#setUploadController(file: UploaderFile): void\n\t{\n\t\tconst uploadController = this.getServer().createUploadController();\n\t\tif (!uploadController)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tuploadController.subscribeFromOptions({\n\t\t\t'onError': (event: BaseEvent) => {\n\t\t\t\tfile.setStatus(FileStatus.UPLOAD_FAILED);\n\t\t\t\tthis.emit('File:onError', { file, error: event.getData().error });\n\t\t\t\tthis.#uploadNext();\n\t\t\t},\n\t\t\t'onProgress': (event: BaseEvent) => {\n\t\t\t\tthis.emit('File:onUploadProgress', { file, progress: event.getData().progress });\n\t\t\t},\n\t\t\t'onUpload': (event: BaseEvent) => {\n\t\t\t\tfile.setStatus(FileStatus.COMPLETE);\n\t\t\t\tfile.setFile(event.getData().fileInfo);\n\t\t\t\tthis.emit('File:onUploadComplete', { file });\n\t\t\t\tthis.emit('File:onComplete', { file });\n\t\t\t\tthis.#uploadNext();\n\t\t\t},\n\t\t});\n\n\t\tfile.setUploadController(uploadController);\n\t}\n\n\t#exceedsMaxFileCount(fileList: Array): boolean\n\t{\n\t\tconst totalNewFiles = fileList.length;\n\t\tconst totalFiles = this.getFiles().length;\n\n\t\tif (!this.isMultiple() && totalNewFiles > 1)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tlet maxFileCount;\n\t\tif (this.isMultiple())\n\t\t{\n\t\t\tmaxFileCount = this.getMaxFileCount();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tmaxFileCount = this.shouldReplaceSingle() ? null : 1;\n\t\t}\n\n\t\tif (maxFileCount !== null && totalFiles + totalNewFiles > maxFileCount)\n\t\t{\n\t\t\tconst error = new UploaderError('MAX_FILE_COUNT_EXCEEDED', { maxFileCount });\n\t\t\tthis.emit('onMaxFileCountExceeded', { error });\n\t\t\tthis.emit('onError', { error });\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#applyFilters(type: FilterType, ...args): Promise\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst filters = [...(this.filters.get(type) || [])];\n\t\t\tif (filters.length === 0)\n\t\t\t{\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstFilter: Filter = filters.shift();\n\n\t\t\t// chain filters\n\t\t\tfilters\n\t\t\t\t.reduce(\n\t\t\t\t\t(current: Promise, next: Filter) => {\n\t\t\t\t\t\treturn current.then(() => next.apply(...args));\n\t\t\t\t\t},\n\t\t\t\t\tfirstFilter.apply(...args)\n\t\t\t\t)\n\t\t\t\t.then((result) => resolve(result))\n\t\t\t\t.catch(error => reject(error))\n\t\t\t;\n\t\t});\n\t}\n\n\tstart(): void\n\t{\n\t\tif (this.getStatus() !== UploaderStatus.STARTED)\n\t\t{\n\t\t\tthis.status = UploaderStatus.STARTED;\n\t\t\tthis.emit('onStart');\n\n\t\t\tthis.#uploadNext();\n\t\t}\n\t}\n\n\tstop(): void\n\t{\n\t\tthis.status = UploaderStatus.STOPPED;\n\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tif (file.isUploading())\n\t\t\t{\n\t\t\t\tfile.abort();\n\t\t\t\tfile.setStatus(FileStatus.PENDING);\n\t\t\t}\n\t\t});\n\n\t\tthis.emit('onStop');\n\t}\n\n\tcancel(): void\n\t{\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tfile.cancel();\n\t\t});\n\t}\n\n\tdestroy(): void\n\t{\n\t\tthis.emit('onDestroy');\n\n\t\t// TODO\n\t\t// unassignBrowse\n\t\t// unassignDrop\n\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tfile.cancel();\n\t\t});\n\n\t\tfor (const property in this)\n\t\t{\n\t\t\tif (this.hasOwnProperty(property))\n\t\t\t{\n\t\t\t\tdelete this[property];\n\t\t\t}\n\t\t}\n\n\t\tObject.setPrototypeOf(this, null);\n\t}\n\n\tremoveFile(file: UploaderFile | string): void\n\t{\n\t\tif (Type.isString(file))\n\t\t{\n\t\t\tfile = this.getFile(file);\n\t\t}\n\n\t\tconst index = this.files.findIndex(element => element === file);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tthis.files.splice(index, 1);\n\n\t\t\tfile.abort();\n\t\t\tfile.setStatus(FileStatus.INIT);\n\t\t\tthis.emit('File:onRemove', { file });\n\n\t\t\tthis.#resetHiddenField(file);\n\t\t}\n\t}\n\n\tgetFile(id: string): ?UploaderFile\n\t{\n\t\treturn this.getFiles().find((file: UploaderFile) => file.getId() === id) || null;\n\t}\n\n\tgetFiles(): UploaderFile[]\n\t{\n\t\treturn this.files;\n\t}\n\n\tisMultiple(): boolean\n\t{\n\t\treturn this.multiple;\n\t}\n\n\tgetStatus(): UploaderStatus\n\t{\n\t\treturn this.status;\n\t}\n\n\taddFilter(type: FilterType, filter: Filter | Function | string, filterOptions: { [key: string]: any } = {}): void\n\t{\n\t\tif (Type.isFunction(filter) || Type.isString(filter))\n\t\t{\n\t\t\tconst className = Type.isString(filter) ? Reflection.getClass(filter) : filter;\n\t\t\tif (Type.isFunction(className))\n\t\t\t{\n\t\t\t\tfilter = new className(this, filterOptions);\n\t\t\t}\n\t\t}\n\n\t\tif (filter instanceof Filter)\n\t\t{\n\t\t\tlet filters = this.filters.get(type);\n\t\t\tif (!Type.isArray(filters))\n\t\t\t{\n\t\t\t\tfilters = [];\n\t\t\t\tthis.filters.set(type, filters);\n\t\t\t}\n\n\t\t\tfilters.push(filter);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error('FileUploader: a filter must be an instance of FileUploader.Filter.');\n\t\t}\n\t}\n\n\taddFilters(filters: Array): void\n\t{\n\t\tif (Type.isArray(filters))\n\t\t{\n\t\t\tfilters.forEach(filter => {\n\t\t\t\tif (Type.isPlainObject(filter))\n\t\t\t\t{\n\t\t\t\t\tthis.addFilter(filter.type, filter.filter, filter.options);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetServer(): Server\n\t{\n\t\treturn this.server;\n\t}\n\n\tassignBrowse(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement | HTMLInputElement) => {\n\t\t\tif (!Type.isElementNode(node))\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)\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\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\tEvent.bind(node, 'click', () => {\n\t\t\t\t\tinput.click();\n\t\t\t\t});\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', () => {\n\t\t\t\tthis.addFiles(Array.from(input.files));\n\n\t\t\t\t// reset file input\n\t\t\t\tinput.value = '';\n\t\t\t});\n\t\t});\n\t}\n\n\tassignDropzone(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (!Type.isElementNode(node))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEvent.bind(node, 'dragover', (event: DragEvent) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\n\t\t\tEvent.bind(node, 'dragenter', (event: DragEvent) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\n\t\t\tEvent.bind(node, 'drop', (event: DragEvent) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\tgetFilesFromDataTransfer(event.dataTransfer).then((files: File[]) => {\n\t\t\t\t\tthis.addFiles(files);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tassignPaste(nodes: HTMLElement | HTMLElement[]): void\n\t{\n\t\tnodes = Type.isElementNode(nodes) ? [nodes] : nodes;\n\t\tif (!Type.isArray(nodes))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tnodes.forEach((node: HTMLElement) => {\n\t\t\tif (!Type.isElementNode(node))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEvent.bind(node, 'paste', (event: ClipboardEvent) => {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst clipboardData: DataTransfer = event.clipboardData;\n\t\t\t\tif (!clipboardData)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tgetFilesFromDataTransfer(clipboardData).then((files: File[]) => {\n\t\t\t\t\tthis.addFiles(files);\n\t\t\t\t});\n\t\t\t});\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}\n\t\telse if (Type.isElementNode(this.hiddenFieldsContainer))\n\t\t{\n\t\t\telement = this.hiddenFieldsContainer;\n\t\t}\n\n\t\treturn element;\n\t}\n\n\tsetHiddenFieldsContainer(container: string | HTMLElement): void\n\t{\n\t\tif (Type.isStringFilled(container) || Type.isElementNode(container) || Type.isNull(container))\n\t\t{\n\t\t\tthis.hiddenFieldsContainer = container;\n\t\t}\n\t}\n\n\tgetHiddenFieldName(): string\n\t{\n\t\treturn this.hiddenFieldName;\n\t}\n\n\tsetHiddenFieldName(name: string)\n\t{\n\t\tif (Type.isStringFilled(name))\n\t\t{\n\t\t\tthis.hiddenFieldName = name;\n\t\t}\n\t}\n\n\tshouldAssignAsFile(): boolean\n\t{\n\t\treturn this.assignAsFile;\n\t}\n\n\tsetAssignAsFile(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.assignAsFile = flag;\n\t\t}\n\t}\n\n\tgetTotalSize(): number\n\t{\n\t\treturn this.getFiles().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.getFiles().filter(file => file.isUploading()).length;\n\t}\n\n\tgetAcceptedFileTypes(): string[]\n\t{\n\t\treturn this.acceptedFileTypes;\n\t}\n\n\tsetAcceptedFileTypes(fileTypes: string | string[]): void\n\t{\n\t\tif (Type.isString(fileTypes))\n\t\t{\n\t\t\tfileTypes = fileTypes.split(',');\n\t\t}\n\n\t\tif (Type.isArray(fileTypes))\n\t\t{\n\t\t\tthis.acceptedFileTypes = [];\n\n\t\t\tfileTypes.forEach(type => {\n\t\t\t\tif (Type.isStringFilled(type))\n\t\t\t\t{\n\t\t\t\t\tthis.acceptedFileTypes.push(type);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tgetIgnoredFileNames(): string[]\n\t{\n\t\treturn this.ignoredFileNames;\n\t}\n\n\tsetIgnoredFileNames(fileNames: string[]): void\n\t{\n\t\tif (Type.isArray(fileNames))\n\t\t{\n\t\t\tthis.ignoredFileNames = [];\n\n\t\t\tfileNames.forEach(fileName => {\n\t\t\t\tif (Type.isStringFilled(fileName))\n\t\t\t\t{\n\t\t\t\t\tthis.ignoredFileNames.push(fileName.toLowerCase());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tsetMaxFileCount(maxFileCount: ?number): void\n\t{\n\t\tif ((Type.isNumber(maxFileCount) && maxFileCount > 0) || maxFileCount === null)\n\t\t{\n\t\t\tthis.maxFileCount = maxFileCount;\n\t\t}\n\t}\n\n\tgetMaxFileCount(): ?number\n\t{\n\t\treturn this.maxFileCount;\n\t}\n\n\tsetAllowReplaceSingle(flag: boolean): void\n\t{\n\t\tif (Type.isBoolean(flag))\n\t\t{\n\t\t\tthis.allowReplaceSingle = flag;\n\t\t}\n\t}\n\n\tshouldReplaceSingle(): boolean\n\t{\n\t\treturn this.allowReplaceSingle;\n\t}\n\n\t#uploadNext(): void\n\t{\n\t\tif (this.getStatus() !== UploaderStatus.STARTED)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst maxParallelUploads = this.getMaxParallelUploads();\n\t\tconst currentUploads = this.getUploadingFileCount();\n\t\tconst pendingFiles = this.getFiles().filter(file => file.isReadyToUpload());\n\t\tconst pendingUploads = pendingFiles.length;\n\n\t\tif (currentUploads < maxParallelUploads)\n\t\t{\n\t\t\tconst limit = Math.min(maxParallelUploads - currentUploads, pendingFiles.length);\n\t\t\tfor (let i = 0; i < limit; i++)\n\t\t\t{\n\t\t\t\tconst pendingFile = pendingFiles[i];\n\t\t\t\tpendingFile.upload();\n\t\t\t}\n\t\t}\n\n\t\t// All files are COMPLETE or FAILED\n\t\tif (currentUploads === 0 && pendingUploads === 0)\n\t\t{\n\t\t\tthis.status = UploaderStatus.STOPPED;\n\t\t\tthis.emit('onUploadComplete');\n\t\t}\n\t}\n\n\t#loadNext(): void\n\t{\n\t\tconst maxParallelLoads = this.getMaxParallelLoads();\n\t\tconst currentLoads = this.getFiles().filter(file => file.isLoading()).length;\n\t\tconst pendingFiles = this.getFiles().filter(file => {\n\t\t\treturn file.getStatus() === FileStatus.ADDED && file.getOrigin() === FileOrigin.CLIENT;\n\t\t});\n\n\t\tif (currentLoads < maxParallelLoads)\n\t\t{\n\t\t\tconst limit = Math.min(maxParallelLoads - currentLoads, pendingFiles.length);\n\t\t\tfor (let i = 0; i < limit; i++)\n\t\t\t{\n\t\t\t\tconst pendingFile = pendingFiles[i];\n\t\t\t\tpendingFile.load();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleBeforeUpload(event: BaseEvent): void\n\t{\n\t\tif (this.getStatus() === UploaderStatus.STOPPED)\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t\tthis.start();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.getUploadingFileCount() >= this.getMaxParallelUploads())\n\t\t\t{\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\n\thandlePrepareFileAsync(event: BaseEvent): void\n\t{\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst { file } = event.getData();\n\t\t\tthis.#applyFilters(FilterType.PREPARATION, file)\n\t\t\t\t.then((transformedFile: File) => {\n\t\t\t\t\tif (Type.isFile(transformedFile))\n\t\t\t\t\t{\n\t\t\t\t\t\tresolve(transformedFile);\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(file);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(error => reject(error))\n\t\t\t;\n\t\t});\n\t}\n\n\thandleUploadStart(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tthis.emit('File:onUploadStart', { file });\n\t}\n\n\thandleFileCancel(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tthis.emit('File:onCancel', { file });\n\n\t\tthis.removeFile(file);\n\t}\n\n\thandleFileStatusChange(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tthis.emit('File:onStatusChange', { file });\n\t}\n\n\thandleFileStateChange(event: BaseEvent): void\n\t{\n\t\tconst file: UploaderFile = event.getTarget();\n\t\tthis.emit('File:onStateChange', { file });\n\n\t\tif (file.isComplete())\n\t\t{\n\t\t\tthis.#setHiddenField(file);\n\t\t}\n\t}\n\n\t#setHiddenField(file: UploaderFile): void\n\t{\n\t\tconst container = this.getHiddenFieldsContainer();\n\t\tif (!container || this.hiddenFields.has(file.getId()))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst isExistingServerFile = Type.isNumber(file.getServerId());\n\t\tif (isExistingServerFile)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst assignAsFile =\n\t\t\tfile.getOrigin() === FileOrigin.CLIENT\n\t\t\t&& !file.isUploadable()\n\t\t\t&& this.shouldAssignAsFile()\n\t\t\t&& canAppendFileToForm()\n\t\t;\n\n\t\tconst input = document.createElement('input');\n\t\tinput.type = assignAsFile ? 'file' : 'hidden';\n\t\tinput.name = this.getHiddenFieldName() + (this.isMultiple() ? '[]' : '');\n\n\t\tif (assignAsFile)\n\t\t{\n\t\t\tDom.style(input, {\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tposition: 'absolute',\n\t\t\t\t'pointer-events': 'none',\n\t\t\t});\n\n\t\t\tassignFileToInput(input, file.getFile());\n\t\t}\n\t\telse if (file.getServerId() !== null)\n\t\t{\n\t\t\tinput.value = file.getServerId();\n\t\t}\n\n\t\tcontainer.appendChild(input);\n\t\tthis.hiddenFields.set(file.getId(), input);\n\n\t\tthis.#syncInputPositions();\n\t}\n\n\t#resetHiddenField(file: UploaderFile): void\n\t{\n\t\tconst input = this.hiddenFields.get(file.getId());\n\t\tif (input)\n\t\t{\n\t\t\tDom.remove(input);\n\t\t\tthis.hiddenFields.delete(file.getId());\n\t\t}\n\t}\n\n\t#syncInputPositions(): void\n\t{\n\t\tconst container = this.getHiddenFieldsContainer();\n\t\tif (!container)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.getFiles().forEach((file: UploaderFile) => {\n\t\t\tconst input = this.hiddenFields.get(file.getId());\n\t\t\tif (input)\n\t\t\t{\n\t\t\t\tcontainer.appendChild(input);\n\t\t\t}\n\t\t});\n\t}\n}\n","const isImage = (file: File) => {\n\treturn /^image/.test(file.type);\n};\n\nexport default isImage;"],"names":["FileStatus","INIT","ADDED","LOADING","PENDING","UPLOADING","ABORTED","COMPLETE","LOAD_FAILED","UPLOAD_FAILED","FileOrigin","CLIENT","SERVER","AbstractUploadController","server","setEventNamespace","file","Error","EventEmitter","AbstractLoadController","crypto","window","msCrypto","createUniqueId","replace","c","getRandomValues","Uint8Array","toString","getExtensionFromType","type","Type","isStringFilled","subtype","split","pop","test","counter","createFileFromBlob","blob","fileName","date","Date","getFullYear","getMonth","getDate","extension","File","lastModified","now","lastModifiedDate","exception","slice","size","name","regexp","isDataUri","str","match","createBlobFromDataUri","dataURI","byteString","atob","mimeString","buffer","ArrayBuffer","length","view","i","charCodeAt","Blob","getFileExtension","filename","position","lastIndexOf","substring","imageExtensions","isResizableImage","mimeType","isFile","toLowerCase","includes","formatFileSize","base","units","getUnits","isInteger","toFixed","fileSizeUnits","Loc","getMessage","isArrayFilled","UploaderFile","source","fileOptions","options","isPlainObject","isBlob","isNumber","origin","serverId","setFile","id","subscribeFromOptions","events","fireStateChangeEvent","Runtime","debounce","canLoad","setStatus","emit","loadController","load","canUpload","event","BaseEvent","data","isDefaultPrevented","getFile","emitAsync","then","result","uploadController","upload","catch","error","console","abort","controller","getStatus","isReadyToUpload","isUploadable","isLoadable","setName","setOriginalName","originalName","setType","setSize","setServerId","setWidth","width","setHeight","height","setClientPreview","clientPreview","clientPreviewWidth","clientPreviewHeight","setServerPreview","serverPreviewUrl","serverPreviewWidth","serverPreviewHeight","setDownloadUrl","downloadUrl","setRemoveUrl","removeUrl","getName","getSize","status","url","getClientPreview","getClientPreviewUrl","getServerPreviewUrl","getClientPreviewWidth","getServerPreviewWidth","getClientPreviewHeight","getServerPreviewHeight","isNull","revokeClientPreviewUrl","clientPreviewUrl","URL","createObjectURL","revokeObjectURL","getOriginalName","getType","JSON","parse","stringify","getId","getServerId","sizeFormatted","getSizeFormatted","getExtension","getOrigin","isImage","getWidth","getHeight","previewUrl","getPreviewUrl","previewWidth","getPreviewWidth","previewHeight","getPreviewHeight","getDownloadUrl","getRemoveUrl","value","UploaderError","code","message","isString","description","customData","replacements","Object","keys","forEach","key","hasMessage","setDescription","text","setOrigin","getCode","getDescription","getCustomData","errors","uploaderError","find","system","BaseError","Chunk","offset","retries","shift","isArray","getData","UploadController","chunkOffset","nextChunk","xhr","clearTimeout","chunkTimeout","getServer","getChunkSize","token","chunk","totalSize","isOnlyOneChunk","getOffset","normalize","headers","encodeURIComponent","rangeStart","rangeEnd","rangeHeader","push","controllerOptions","getControllerOptions","Ajax","runAction","preparePost","getParameters","getController","getToken","onrequeststart","onprogressupload","lengthComputable","uploadedBytes","Math","min","loaded","progress","floor","response","log","setToken","fileInfo","createFromAjaxErrors","shouldRetry","nextDelay","getNextRetryDelay","setTimeout","getChunkOffset","currentChunkSize","nextOffset","fileRange","setRetries","getChunkRetryDelays","queues","WeakMap","loadMultiple","queue","get","tasks","loadInternal","set","delete","fileIds","task","onprogress","total","files","fileResults","fileResult","success","clone","ServerLoadController","ClientLoadController","Server","serverOptions","chunkSize","getDefaultChunkSize","forceChunkSize","chunkRetryDelays","controllerClass","getClass","isFunction","uploadControllerClass","loadControllerClass","defaultChunkSize","settings","Extension","getSettings","chunkMinSize","chunkMaxSize","max","getChunkMinSize","getChunkMaxSize","Filter","uploader","FileSizeFilter","filterOptions","integerOptions","option","Promise","resolve","reject","maxFileSize","maxFileSizeInBytes","minFileSize","minFileSizeInBytes","imageMaxFileSize","imageMaxFileSizeInBytes","imageMinFileSize","imageMinFileSizeInBytes","maxTotalFileSize","getUploader","getTotalSize","maxTotalFileSizeInBytes","isValidFileType","fileTypes","baseMimeType","trim","charAt","indexOf","FileTypeFilter","getAcceptedFileTypes","getArrayBuffer","fileReader","FileReader","readAsArrayBuffer","onload","onerror","convertStringToBuffer","compareBuffers","dataView","dest","start","j","getUint8","GIF87a","GIF89a","Gif","DataView","getUint16","PNG_SIGNATURE","IHDR_SIGNATURE","FRIED_CHUNK_NAME","Png","getUint32","BMP_SIGNATURE","Bmp","abs","getInt32","EXIF_SIGNATURE","Jpeg","orientation","byteLength","exifBlock","getOrientation","Marker","BIG_ENDIAN","LITTLE_ENDIAN","byteAlign","isBigEndian","isLittleEndian","extractOrientation","littleEndian","idfDirectoryEntries","IDF_ENTRY_BYTES","NUM_DIRECTORY_ENTRIES_BYTES","directoryEntryNumber","end","block","byteOffset","tagNumber","dataFormat","numberOfComponents","RIFF_HEADER","WEBP_SIGNATURE","VP8_SIGNATURE","VP8L_SIGNATURE","VP8X_SIGNATURE","Webp","headerType","headerView","bits","extendedHeader","validStart","validEnd","jpg","typeHandlers","gif","png","bmp","jpeg","jpe","webp","getImageSize","typeHandler","ImageSizeFilter","isBoolean","ignoreUnknownImageTypes","imageMinWidth","imageMinHeight","minWidth","minHeight","imageMaxWidth","imageMaxHeight","maxWidth","maxHeight","createWorker","fn","workerBlob","workerURL","worker","Worker","post","callback","transfer","onmessage","postMessage","terminate","BitmapWorker","self","createImageBitmap","bitmap","loadImage","image","document","createElement","src","naturalWidth","naturalHeight","createImagePreview","round","canvas","context","getContext","drawImage","getFilenameWithoutExtension","substr","extensionMap","renameFileToMatchMimeType","canvasPrototype","HTMLCanvasElement","prototype","hasToBlobSupport","toBlob","convertCanvasToBlob","quality","toDataURL","canCreateImageBitmap","ImageBitmap","close","resizeImage","loadImageDataFallback","handleImageLoad","imageData","calcTargetSize","targetWidth","targetHeight","preview","newFileName","bitmapWorker","imageBitmap","mode","upscale","ratioWidth","ratioHeight","ratio","ImagePreviewFilter","imagePreviewUpscale","imagePreviewResizeMethod","imagePreviewMimeType","imagePreviewWidth","imagePreviewHeight","imagePreviewQuality","TransformImageFilter","resizeWidth","resizeHeight","resizeMethod","resizeQuality","resizeMimeType","UploaderStatus","STARTED","STOPPED","FilterType","VALIDATION","PREPARATION","getFilesFromDataTransfer","dataTransfer","items","Array","from","filter","item","isFileSystemItem","map","getFilesFromItem","all","fileGroups","group","apply","entry","webkitGetAsEntry","isDirectory","kind","isDirectoryEntry","getFilesInDirectory","getAsEntry","getAsFile","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","entries","isEntry","canAppendFileToForm","DataTransfer","add","input","setAttribute","err","assignFileToInput","Uploader","uploaderOptions","Map","assign","multiple","setAutoUpload","autoUpload","setMaxParallelUploads","maxParallelUploads","setMaxParallelLoads","maxParallelLoads","setAcceptedFileTypes","acceptedFileTypes","setIgnoredFileNames","ignoredFileNames","setMaxFileCount","maxFileCount","setAllowReplaceSingle","allowReplaceSingle","assignBrowse","browseElement","assignDropzone","dropElement","assignPaste","pasteElement","setHiddenFieldsContainer","hiddenFieldsContainer","setHiddenFieldName","hiddenFieldName","setAssignAsFile","assignAsFile","addFilter","addFilters","filters","handleBeforeUpload","bind","handlePrepareFileAsync","handleUploadStart","handleFileCancel","handleFileStatusChange","handleFileStateChange","addFiles","fileList","isArrayLike","addFile","getIgnoredFileNames","isMultiple","shouldReplaceSingle","getFiles","fileToReplace","removeFile","subscribe","isUploading","cancel","property","hasOwnProperty","setPrototypeOf","index","findIndex","element","splice","className","Reflection","nodes","isElementNode","node","tagName","acceptAttr","getAttribute","Event","click","join","preventDefault","stopPropagation","clipboardData","querySelector","container","flag","reduce","number","fileNames","getUploadingFileCount","getMaxParallelUploads","transformedFile","getTarget","isComplete","createLoadController","createClientLoadController","shouldAutoUpload","setLoadController","createUploadController","setUploadController","totalNewFiles","totalFiles","getMaxFileCount","args","firstFilter","current","next","currentUploads","pendingFiles","pendingUploads","limit","pendingFile","getMaxParallelLoads","currentLoads","isLoading","getHiddenFieldsContainer","hiddenFields","has","isExistingServerFile","shouldAssignAsFile","getHiddenFieldName","Dom","style","visibility","left","top","appendChild","remove"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings