Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/main/core/core_uploader/ |
Upload File : |
{"version":3,"file":"uploader.js","sources":["src/options.js","src/dropzone.js","src/stream.js","src/package-file.js","src/utils.js","src/package.js","src/streams.js","queue.js","common.js","src/bootstrap.js","src/uploader.js","src/manager.js"],"sourcesContent":["import {Loc} from 'main.core';\n\n\nexport default class Options {\n\tstatic defaultSettings = null;\n\tstatic #quota;\n\n\tstatic uploadStatus = {\n\t\tready: 'upload is ready',\n\t\tpreparing: 'upload is not started, but preparing',\n\t\tinProgress: 'upload is in active streaming',\n\t\tdone: 'upload is in successfully done',\n\t\terror: 'upload is in finished with errors',\n\t\tstopped: 'PAUSE',\n\t};\n\n\tstatic fileStatus = {\n\t\tready: 'fileIsReady',\n\t\tremoved: 'fileIsRemoved',\n\t\trestored: 'fileIsRestored',\n\t\terrored: 'fileIsBad'\n\t}\n\n\tstatic getEventName(eventName)\n\t{\n\t\treturn [this.getEventNamespace(), ...eventName].join(':');\n\t}\n\n\tstatic getEventNamespace(): string\n\t{\n\t\treturn 'BX:Main:Uploader:'\n\t}\n\n\tstatic calibratePostSize(deltaTime, size: ?number)\n\t{\n\t\tif (deltaTime <= 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (deltaTime < this.defaultSettings['estimatedTimeForUploadFile'])\n\t\t{\n\t\t\tconst sizes = [\n\t\t\t\tthis.defaultSettings['currentPostSize'] * 2,\n\t\t\t\tthis.defaultSettings[\"phpPostMaxSize\"]];\n\t\t\tif (size > 0)\n\t\t\t{\n\t\t\t\tsizes.push(Math.ceil(size * this.defaultSettings['estimatedTimeForUploadFile'] * 1000 / deltaTime));\n\t\t\t}\n\t\t\tthis.defaultSettings['currentPostSize'] = Math.min(...sizes);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.defaultSettings['currentPostSize'] = Math.max(\n\t\t\t\tMath.ceil(this.defaultSettings['currentPostSize'] / 2),\n\t\t\t\tthis.defaultSettings['phpPostMinSize']);\n\t\t}\n\t\tthis.defaultSettings['currentPostSize'] = Math.max(\n\t\t\tthis.defaultSettings['currentPostSize'],\n\t\t\tthis.defaultSettings['phpPostMinSize']\n\t\t);\n\t}\n\n\tstatic getUploadLimits(key: ?string)\n\t{\n\t\tif (!this.defaultSettings)\n\t\t{\n\t\t\tthis.defaultSettings = {\n\t\t\t\tcurrentPostSize: 5.5 * 1024 * 1024,\n\t\t\t\tphpPostMinSize: 5.5 * 1024 * 1024, // Bytes\n\t\t\t\tphpUploadMaxFilesize: Math.min(/^d+$/.test(Loc.getMessage('phpUploadMaxFilesize')) ? Loc.getMessage('phpUploadMaxFilesize') : 5 * 1024 * 1024, 5 * 1024 * 1024), // Bytes 5MB because of Cloud\n\t\t\t\tphpMaxFileUploads: Math.max((/^d+$/.test(Loc.getMessage('phpMaxFileUploads')) ? Loc.getMessage('phpMaxFileUploads') : 20), 20),\n\t\t\t\tphpPostMaxSize: (/^d+$/.test(Loc.getMessage('phpPostMaxSize')) ? Loc.getMessage('phpPostMaxSize') : 11 * 1024 * 1024), // Bytes\n\t\t\t\testimatedTimeForUploadFile: 10 * 60, // in sec\n\t\t\t\tmaxSize: this.getMaxSize(),\n\t\t\t};\n\t\t}\n\t\tif (key)\n\t\t{\n\t\t\treturn this.defaultSettings[key];\n\t\t}\n\t\treturn this.defaultSettings;\n\n\t}\n\n\tstatic getFileTypes(): Array\n\t{\n\t\treturn [\n\t\t\t'A', //'A'll files\n\t\t\t'I', //'I'mages\n\t\t\t'F' //'F'iles with selected extensions\n\t\t];\n\t}\n\n\tstatic getImageExtensions()\n\t{\n\t\treturn [\"jpg\", \"bmp\", \"jpeg\", \"jpe\", \"gif\", \"png\", \"webp\"];\n\t}\n\n\tstatic getMaxSize()\n\t{\n\t\tif (this.#quota !== null && !this.#quota)\n\t\t{\n\t\t\tif (/^\\d+$/.test(Loc.getMessage(\"bxQuota\")))\n\t\t\t{\n\t\t\t\tthis.#quota = parseInt(Loc.getMessage(\"bxQuota\"));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.#quota = null\n\t\t\t}\n\t\t}\n\t\treturn this.#quota;\n\t}\n\n\tstatic decrementMaxSize(size: number)\n\t{\n\t\tif (this.getMaxSize() !== null)\n\t\t{\n\t\t\tthis.#quota -= size;\n\t\t}\n\t\treturn this.#quota;\n\t}\n\n\tstatic getMaxTimeToUploading()\n\t{\n\t\treturn 900;\n\t}\n\n\tstatic getVersion()\n\t{\n\t\treturn '1';\n\t}\n}\n","import {Type, Runtime, Loc, Dom} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport Options from './options';\nimport type {UploaderType, UploadQueueType} from \"./types\";\n\nexport default class DropZone {\n\tdndObject;\n\n\tconstructor(dropZoneNode: ?Element)\n\t{\n\t\tif (Type.isStringFilled(dropZoneNode))\n\t\t{\n\t\t\tdropZoneNode = document.getElementById(dropZoneNode);\n\t\t}\n\n\t\tif (Type.isDomNode(dropZoneNode) && BX.DD && BX.ajax.FormData.isSupported())\n\t\t{\n\t\t\tthis.initialize(dropZoneNode);\n\t\t}\n\t}\n\n\tinitialize(dropZoneNode: ?Element)\n\t{\n\t\tthis.dndObject = new BX.DD.dropFiles(dropZoneNode);\n\t\tif (!this.dndObject || !this.dndObject.supported())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tconst handlers = {\n\t\t\tdropFiles: ({compatData: [files, e]}) => {\n\t\t\t\tif (e\n\t\t\t\t\t&& e[\"dataTransfer\"]\n\t\t\t\t\t&& e[\"dataTransfer\"][\"items\"]\n\t\t\t\t\t&& e[\"dataTransfer\"][\"items\"].length > 0)\n\t\t\t\t{\n\t\t\t\t\tlet replaceFileArray = false;\n\t\t\t\t\tconst fileCopies = [];\n\t\t\t\t\tlet item;\n\t\t\t\t\tfor (let i = 0; i < e[\"dataTransfer\"][\"items\"].length; i++) {\n\t\t\t\t\t\titem = e[\"dataTransfer\"][\"items\"][i];\n\t\t\t\t\t\tif (item[\"webkitGetAsEntry\"] && item[\"getAsFile\"])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treplaceFileArray = true;\n\t\t\t\t\t\t\tconst entry = item[\"webkitGetAsEntry\"]();\n\t\t\t\t\t\t\tif (entry && entry.isFile)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfileCopies.push(item[\"getAsFile\"]());\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\tif (replaceFileArray)\n\t\t\t\t\t\tfiles = fileCopies;\n\t\t\t\t}\n\t\t\t\tEventEmitter.emit(this, Options.getEventName('caught'), {files: files});\n\t\t\t},\n\t\t\tdragEnter : ({compatData: [e]}) => {\n\t\t\t\tlet isFileTransfer = false;\n\t\t\t\tif (e && e[\"dataTransfer\"] && e[\"dataTransfer\"][\"types\"])\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < e[\"dataTransfer\"][\"types\"].length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (e[\"dataTransfer\"][\"types\"][i] === \"Files\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisFileTransfer = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isFileTransfer)\n\t\t\t\t{\n\t\t\t\t\tthis.dndObject.DIV.classList.add('bxu-file-input-over');\n\t\t\t\t\tBX.onCustomEvent(this, 'dragEnter', [e]); // compatibility event\n\t\t\t\t}\n\t\t\t},\n\t\t\tdragLeave : ({compatData: [e]}) => {\n\t\t\t\tthis.dndObject.DIV.classList.remove('bxu-file-input-over');\n\t\t\t\tBX.onCustomEvent(this, 'dragLeave', [e]); // compatibility event\n\t\t\t}\n\t\t}\n\t\tEventEmitter.subscribe(this.dndObject, 'dropFiles', handlers.dropFiles);\n\t\tEventEmitter.subscribe(this.dndObject, 'dragEnter', handlers.dragEnter);\n\t\tEventEmitter.subscribe(this.dndObject, 'dragLeave' , handlers.dragLeave);\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribeAll(this.dndObject);\n\t\tdelete this.dndObject.DIV;\n\t\tdelete this.dndObject;\n\t}\n}\n","import {Type} from 'main.core';\nimport {EventEmitter, Event} from 'main.core.events';\nimport Options from \"./options\";\n\nconst buildAjaxPromiseToRestoreCsrf = function(config, withoutRestoringCsrf)\n{\n\twithoutRestoringCsrf = withoutRestoringCsrf || false;\n\tconst originalConfig = Object.assign({}, config);\n\tlet request = null;\n\tconfig.onrequeststart = (xhr) => {\n\t\trequest = xhr;\n\t}\n\tconst promise = BX.ajax.promise(config);\n\n\treturn promise\n\t\t.then(\n\t\t\tfunction(response) {\n\t\t\t\tif (!withoutRestoringCsrf\n\t\t\t\t\t&& Type.isPlainObject(response)\n\t\t\t\t\t&& response['errors']\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tvar csrfProblem = false;\n\t\t\t\t\tresponse.errors.forEach(function(error) {\n\t\t\t\t\t\tif (error.code === 'invalid_csrf' && error.customData.csrf)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.message({'bitrix_sessid': error.customData.csrf});\n\t\t\t\t\t\t\toriginalConfig.headers = originalConfig.headers || [];\n\t\t\t\t\t\t\toriginalConfig.headers = originalConfig.headers.filter(function(header) {\n\t\t\t\t\t\t\t\treturn header && header.name !== 'X-Bitrix-Csrf-Token';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\toriginalConfig.headers.push({name: 'X-Bitrix-Csrf-Token', value: BX.bitrix_sessid()});\n\t\t\t\t\t\t\tcsrfProblem = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (csrfProblem)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn buildAjaxPromiseToRestoreCsrf(originalConfig, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn response;\n\t\t\t}\n\t\t)\n\t\t.then(\n\t\t\tfunction(response){\n\t\t\t\tvar assetsLoaded = new BX.Promise();\n\t\t\t\tassetsLoaded.fulfill(response);\n\t\t\t\treturn assetsLoaded;\n\t\t\t}\n\t\t)\n\t\t.catch(\n\t\t\tfunction({reason, data})\n\t\t\t{\n\t\t\t\tif (reason === 'status'\n\t\t\t\t\t&& data\n\t\t\t\t\t&& (String(data).indexOf('503') >= 0\n\t\t\t\t\t\t|| String(data).indexOf('504') >= 0)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\toriginalConfig['50xCounter'] = (originalConfig['50xCounter'] || 0) + 1;\n\t\t\t\t\tif (originalConfig['50xCounter'] <= 2)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar headers = request.getAllResponseHeaders().trim().split(/[\\r\\n]+/);\n\t\t\t\t\t\tvar headerMap = {};\n\t\t\t\t\t\theaders.forEach(function (line) {\n\t\t\t\t\t\t\tvar parts = line.split(': ');\n\t\t\t\t\t\t\tvar header = parts.shift().toLowerCase();\n\t\t\t\t\t\t\theaderMap[header] = parts.join(': ');\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlet timeoutSec = null;\n\t\t\t\t\t\tif (headerMap['retry-after'] && /\\d+/.test(headerMap['retry-after']))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttimeoutSec = parseInt(headerMap['retry-after']);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst p = new BX.Promise();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tp.fulfill();\n\t\t\t\t\t\t}, (timeoutSec || 20) * 1000);\n\t\t\t\t\t\treturn p.then(() => {\n\t\t\t\t\t\t\treturn buildAjaxPromiseToRestoreCsrf(originalConfig);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar ajaxReject = new BX.Promise();\n\n\t\t\t\tif (Type.isPlainObject(data)\n\t\t\t\t\t&& data.status\n\t\t\t\t\t&& data.hasOwnProperty('data'))\n\t\t\t\t{\n\t\t\t\t\tajaxReject.reject(data);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tajaxReject.reject({\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tajaxRejectData: data\n\t\t\t\t\t\t},\n\t\t\t\t\t\terrors: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcode: 'NETWORK_ERROR',\n\t\t\t\t\t\t\t\tmessage: 'Network error'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn ajaxReject;\n\t\t\t}\n\t\t);\n};\n\nexport default class Stream extends EventEmitter\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(Options.getEventNamespace());\n\t\tthis.onprogress = this.onprogress.bind(this);\n\t\tthis.onprogressupload = this.onprogressupload.bind(this);\n\t}\n\n\tsend(url, formData: FormData)\n\t{\n\t\tthis.deltaTime = (-1) * (new Date()).getTime();\n\t\tthis.totalSize = null;\n\t\tbuildAjaxPromiseToRestoreCsrf({\n\t\t\tmethod: 'POST',\n\t\t\tdataType: 'json',\n\t\t\turl: url,\n\t\t\tdata: formData,\n\t\t\ttimeout: Options.getMaxTimeToUploading(),\n\t\t\tpreparePost: false,\n\t\t\theaders: [\n\t\t\t\t{name: 'X-Bitrix-Csrf-Token', value: BX.bitrix_sessid()},\n\t\t\t\t{name: 'X-Bitrix-Site-Id', value: (BX.message.SITE_ID || '')}\n\t\t\t],\n\t\t\tonprogress: this.onprogress,\n\t\t\tonprogressupload: this.onprogressupload\n\t\t})\n\t\t.then((response) => {\n\t\t\tthis.done({status: 'success', data: response});\n\t\t})\n\t\t.catch(({errors, data}) => {\n\t\t\tthis.done({status: 'failed', errors: errors.map(({code, message}) => {return message;}), data: data});\n\t\t})\n\t\t.catch((response) => {\n\t\t\tthis.done({status: 'failed', errors: ['Unexpected server response.'], data: response});\n\t\t});\n\t}\n\n\tonprogress(e)\n\t{\n\t}\n\n\tonprogressupload(e)\n\t{\n\t\tvar procent = 5;\n\t\tif(typeof e == \"object\" && e.lengthComputable) {\n\t\t\tprocent = e.loaded * 100 / (e[\"total\"] || e[\"totalSize\"]);\n\t\t\tthis.totalSize = (e[\"total\"] || e[\"totalSize\"]);\n\t\t}\n\t\telse if (e > procent)\n\t\t\tprocent = e;\n\t\tprocent = (procent > 5 ? procent : 5);\n\t\tthis.emit('progress', procent);\n\t}\n\n\tdone(response)\n\t{\n\t\tthis.deltaTime += (new Date()).getTime();\n\t\tOptions.calibratePostSize(this.deltaTime, this.totalSize);\n\n\t\tthis.emit('done', response);\n\t}\n\n\tdestroy()\n\t{\n\t\tconsole.log('Clear all from stream');\n\t}\n}","import {EventEmitter, BaseEvent} from 'main.core.events';\nimport Options from \"./options\";\nimport Package from \"./package\";\n\nexport default class PackageFile extends EventEmitter {\n\tstatic preparationStatusIsDone = 4;\n\titem: ?BX.UploaderFile;\n\tid: string;\n\tname: string;\n\n\tisReadyToPack: boolean = true; //null|ready\n\tpackStatus = null; //null|inprogress|done|errored\n\tpackPercent:number = 0;\n\n\tuploadStatus = null; //null|inprogress|done|errored\n\tfileStatus;\n\n\t#currentFileToUpload = null;\n\n\tconstructor(item: BX.UploaderFile, pack: Package)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(Options.getEventNamespace());\n\n\t\tthis.item = item; // item with a node\n\t\tthis.id = item.getId();\n\t\tthis.name = item.name;\n\t\tthis.fileStatus = Options.fileStatus.ready; // ready|remove|restore\n\t\tthis.isReadyToPack = item.preparationStatus === this.constructor.preparationStatusIsDone;\n\n\t\tthis.copiesCount = item.getThumbs(\"getCount\") + 1;\n\n\t\tEventEmitter.subscribeOnce(item, 'onFileIsDeleted', () => {\n\t\t\tthis.fileStatus = Options.fileStatus.removed;\n\t\t});\n\n\t\tif (!this.isReadyToPack)\n\t\t{\n\t\t\tEventEmitter.subscribeOnce(item,\n\t\t\t\t'onFileIsPrepared',\n\t\t\t\t() => {\n\t\t\t\t\tthis.isReadyToPack = true;\n\t\t\t\t\tthis.emit('onReady');\n\t\t\t\t}\n\t\t\t);\n\t\t\tEventEmitter.emit(item,\n\t\t\t\t'onFileHasToBePrepared',\n\t\t\t\tnew BaseEvent({compatData: [item.getId(), item]})\n\t\t\t);\n\t\t}\n\t}\n\n\tisReady(): boolean\n\t{\n\t\treturn this.isReadyToPack;\n\t}\n\n\tisRemoved()\n\t{\n\t\treturn this.fileStatus === Options.fileStatus.removed;\n\t}\n\n\tisPacked()\n\t{\n\t\treturn this.packStatus === Options.uploadStatus.done;\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.id;\n\t}\n\n\tget size(): number\n\t{\n\t\treturn this.item ? (this.item.size || 0) : 0;\n\t}\n\n\tmarkAsPacked(percentToIncrement:boolean|number)\n\t{\n\t\tif (percentToIncrement === true)\n\t\t{\n\t\t\tthis.packStatus = Options.uploadStatus.done;\n\t\t\tthis.packPercent = 100;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.packPercent += percentToIncrement / this.copiesCount;\n\t\t\tthis.packPercent = (this.packPercent > 100 ? 100 : this.packPercent);\n\t\t}\n\t}\n\n\tpackFile(): {\n\t\terror: boolean,\n\t\tdone: boolean,\n\t\tfile: ?Blob,\n\t\tproperties: ?Object\n\t}\n\t{\n\t\tconst result = {\n\t\t\terror: false,\n\t\t\tdone: true,\n\t\t\tdata: null,\n\t\t};\n\n\t\tif (this.isRemoved())\n\t\t{\n\t\t\tresult.data = {\n\t\t\t\tremoved: 'Y',\n\t\t\t\tname: this.name\n\t\t\t};\n\t\t\tthis.markAsPacked(true);\n\t\t}\n\n\t\tif (this.isPacked())\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tlet currentBlob;\n\t\tlet copyName = 'default';\n\n\t\tif (this.packStatus === null)\n\t\t{\n\t\t\tresult.data = this.item.getProps() || {name: this.name};\n\n\t\t\tif (this.item['restored'])\n\t\t\t{\n\t\t\t\tresult.data['restored'] = this.item['restored'];\n\t\t\t\tdelete this.item['restored'];\n\t\t\t}\n\t\t\tthis.packStatus = Options.uploadStatus.inProgress;\n\t\t\tcurrentBlob = this.item[\"file\"];\n\t\t}\n\t\telse if (this.#currentFileToUpload instanceof Blob)\n\t\t{\n\t\t\tcurrentBlob = this.#currentFileToUpload;\n\t\t\tthis.#currentFileToUpload = null;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcurrentBlob = this.item.getThumbs(null);\n\t\t\tif (currentBlob === null)\n\t\t\t{\n\t\t\t\tthis.markAsPacked(true);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tcopyName = currentBlob['thumb'];\n\t\t}\n\n\t\tlet packingPercent = 100;\n\t\tif (currentBlob instanceof Blob) // Regular behaviour\n\t\t{\n\t\t\tconst blob = BX.UploaderUtils.getFilePart(\n\t\t\t\tcurrentBlob,\n\t\t\t\tOptions.getUploadLimits('phpUploadMaxFilesize')\n\t\t\t);\n\n\t\t\tif (blob && blob !== currentBlob)\n\t\t\t{\n\t\t\t\tif ((blob.packages - blob.package) > 1)\n\t\t\t\t{\n\t\t\t\t\tthis.#currentFileToUpload = currentBlob;\n\t\t\t\t}\n\t\t\t\tpackingPercent = blob.size / currentBlob.size * 100;\n\t\t\t\tcopyName = [\n\t\t\t\t\tcopyName,\n\t\t\t\t\t'.ch', blob.package,\n\t\t\t\t\t'.', (blob.start > 0 ? blob.start : \"0\") +\n\t\t\t\t\t'.chs' + blob.packages].join('');\n\t\t\t\tblob.name = copyName;\n\t\t\t}\n\t\t\tcurrentBlob = blob;\n\t\t}\n\t\tif (currentBlob)\n\t\t{\n\t\t\tresult.data = (result.data || {name: this.name});\n\t\t\tif (currentBlob instanceof Blob)\n\t\t\t{\n\t\t\t\tresult.data[copyName] = currentBlob;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult.data['files'] = result.data['files'] || {};\n\t\t\t\tresult.data['files'][copyName] = currentBlob;\n\t\t\t}\n\t\t}\n\t\tif (result.data)\n\t\t{\n\t\t\tresult.done = false;\n\t\t\tthis.markAsPacked(packingPercent);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.markAsPacked(true);\n\t\t}\n\t\treturn result;\n\t}\n\n\tparseResponse({file, hash, status})\n\t{\n\t\t// console.log('parseResponse: ', this.getId(), file);\n\t}\n}","import {Type} from 'main.core';\n\nconst getFormDataSize = (formData: FormData): Array =>\n{\n\tconst entries = formData.entries();\n\tlet entry, filesCount = 0, formSize = 0;\n\twhile((entry = entries.next()) && entry.done === false)\n\t{\n\t\tconst [name, value] = entry.value;\n\n\t\tif (value instanceof Blob)\n\t\t{\n\t\t\tfilesCount++;\n\t\t\tformSize += value.size;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tformSize += value.toString().length;\n\t\t}\n\t\tformSize += name.toString().length;\n\t}\n\treturn [formSize, filesCount];\n}\n\nconst convertFormDataToObject = (formData: FormData): Object => {\n\tconst entries = formData.entries();\n\tlet entry;\n\tconst data = {};\n\twhile((entry = entries.next()) && entry.done === false)\n\t{\n\t\tconst [name, value] = entry.value;\n\t\tif (name.indexOf('[') <= 0)\n\t\t{\n\t\t\tdata[name] = value;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst names = [name.substring(0, name.indexOf('['))];\n\t\t\tname.replace(/\\[(.*?)\\]/gi, (n, nn) => {\n\t\t\t\tnames.push(nn.length > 0 ? nn : '');\n\t\t\t});\n\t\t\tlet n;\n\t\t\tlet pointer = data;\n\t\t\twhile (n = names.shift())\n\t\t\t{\n\t\t\t\tif (n === '')\n\t\t\t\t{\n\t\t\t\t\tpointer.push(value);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (names.length <= 0)\n\t\t\t\t{\n\t\t\t\t\tpointer[n] = value;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (names[0] === '')\n\t\t\t\t{\n\t\t\t\t\tpointer[n] = (pointer[n] || []);\n\t\t\t\t\tpointer = pointer[n];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpointer[n] = (pointer[n] || {});\n\t\t\t\t\tpointer = pointer[n];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn data;\n};\n\nconst copyFormToForm = (fromData1, formData2): void => {\n\tconst entries = fromData1.entries();\n\tlet entry;\n\twhile((entry = entries.next()) && entry.done === false)\n\t{\n\t\tconst [name, value] = entry.value;\n\n\t\tif (value instanceof Blob)\n\t\t{\n\t\t\tformData2.append(name, value, value.name);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tformData2.append(name, value);\n\t\t}\n\t}\n}\nconst appendToForm = (formData, ob, prefix): void => {\n\tfor (let ii in ob)\n\t{\n\t\tif (ob.hasOwnProperty(ii))\n\t\t{\n\t\t\tconst name = (prefix ? (prefix + '[#name#]') : '#name#').replace('#name#', ii);\n\t\t\tif (Type.isPlainObject(ob[ii]))\n\t\t\t{\n\t\t\t\tappendToForm(formData, ob[ii], name);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (ob[ii] instanceof Blob)\n\t\t\t\t{\n\t\t\t\t\tformData.append(name, ob[ii], (ob[ii]['name'] || ii));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tformData.append(name, ob[ii]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nexport {appendToForm, getFormDataSize, copyFormToForm, convertFormDataToObject}","import {Type} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport Options from './options';\nimport PackageFile from './package-file';\nimport {appendToForm, getFormDataSize, copyFormToForm, convertFormDataToObject} from './utils';\n\nexport default class Package extends EventEmitter {\n\tlength: number = 0;\n\tfilesVirgin: Set = new Set();\n\tfilesInprogress: Set = new Set();\n\tfiles: Map = new Map();\n\tformData: FormData;\n\t#formDataFilesCount: number = 0;\n\t#formDataSize: number = 0;\n\tuploadInputName: string;\n\tmakeAPackTimeout: number = 0;\n\n\tuploadStatus = Options.uploadStatus.ready;\n\terrors = [];\n\tresponse = {status: 'start'};\n\n\tconstructor({id, formData, files, uploadFileUrl, uploadInputName})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace(Options.getEventNamespace());\n\n\t\tthis.id = id;\n\t\tthis.formData = formData;\n\t\tthis.uploadFileUrl = uploadFileUrl;\n\t\tthis.uploadInputName = uploadInputName;\n\n\t\tthis.initFiles(files);\n\n\t\tconsole.log('2. Package is created with ', this.filesVirgin.size, ' files.');\n\n\t\tthis.doneStreaming = this.doneStreaming.bind(this)\n\t\tthis.progressStreaming = this.progressStreaming.bind(this)\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.id;\n\t}\n\n\tinitFiles(files)\n\t{\n\t\tfiles.forEach((fileItem: BX.UploaderFile) => {\n\t\t\tconst uploadFile = new PackageFile(fileItem);\n\t\t\tthis.filesVirgin.add(uploadFile.getId());\n\t\t\tthis.files.set(uploadFile.getId(), uploadFile);\n\t\t});\n\t}\n\n\tprepare()\n\t{\n\t\tlet [formSize, filesCount] = getFormDataSize(this.formData);\n\t\tconsole.log('2.1 Prepare form with files: ', filesCount, ' and formSize: ', parseInt(formSize), 'B');\n\n\t\tif (Options.getUploadLimits('phpMaxFileUploads') <= filesCount)\n\t\t{\n\t\t\tthis.error('Too many files in your form. ');\n\t\t\treturn false;\n\t\t}\n\n\t\tif ((Options.getUploadLimits('phpPostMaxSize') - formSize) < Options.getUploadLimits('phpPostMinSize'))\n\t\t{\n\t\t\tthis.error('Too much data in your form. ');\n\t\t\treturn false;\n\t\t}\n\n\t\tlet packSize = 0;\n\t\tthis.files.forEach((file) => {\n\t\t\tpackSize += file.size;\n\t\t});\n\n\t\tif (Options.getMaxSize() !== null && Options.getMaxSize() < packSize)\n\t\t{\n\t\t\tthis.error('There is not enough space on your server.');\n\t\t\treturn false;\n\t\t}\n\t\tOptions.decrementMaxSize(packSize);\n\t\tthis.#formDataSize = formSize;\n\t\tthis.#formDataFilesCount = filesCount;\n\t\treturn true;\n\t}\n\n\trun(stream)\n\t{\n\t\tif (this.uploadStatus !== Options.uploadStatus.ready)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconsole.log('4. Package is running with a stream: ', stream);\n\t\tthis.uploadStatus = Options.uploadStatus.preparing;\n\n\t\treturn this.startStreaming(stream);\n\t}\n\n\tbindStream(stream)\n\t{\n\t\tif (stream === this.stream)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.stream = stream;\n\t\tstream.subscribe('done', this.doneStreaming);\n\t\tstream.subscribe('progress', this.progressStreaming);\n\t}\n\n\tunbindStream(stream)\n\t{\n\t\tif (stream || this.stream)\n\t\t{\n\t\t\t(stream || this.stream).unsubscribe('done', this.doneStreaming);\n\t\t\t(stream || this.stream).unsubscribe('progress', this.progressStreaming);\n\t\t\tif (stream === this.stream)\n\t\t\t{\n\t\t\t\tdelete this.stream;\n\t\t\t}\n\t\t}\n\t}\n\n\tmakeAPack(formSize, filesCount, formData: FormData)\n\t{\n\t\twhile (\n\t\t\t(formSize - Options.getUploadLimits('phpUploadMaxFilesize')) > 0\n\t\t\t&& filesCount > 0)\n\t\t{\n\t\t\tif (this.filesVirgin.size <= 0)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst entry = this.filesVirgin.entries().next();\n\n\t\t\tif (entry.done === true)\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t/*@var uploadItem: PackageFile */\n\t\t\tconst [uploadItemId] = entry.value;\n\t\t\tconst uploadItem = this.files.get(uploadItemId);\n\t\t\tif (!uploadItem.isReady())\n\t\t\t{\n\t\t\t\treturn uploadItem.subscribeOnce('onReady', () => {\n\t\t\t\t\tthis.makeAPack(formSize, filesCount, formData);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst result = uploadItem.packFile();\n\t\t\tif (result.data)\n\t\t\t{\n\t\t\t\tconst name = `${this.uploadInputName}[${uploadItem.getId()}]`;\n\t\t\t\tconst tmpFormData = new FormData();\n\t\t\t\tappendToForm(tmpFormData, result.data, name);\n\t\t\t\tconst [tmpFormSize, tmpFilesCount] = getFormDataSize(tmpFormData);\n\t\t\t\tcopyFormToForm(tmpFormData, formData);\n\t\t\t\tformSize -= tmpFormSize;\n\t\t\t\tfilesCount -= tmpFilesCount;\n\t\t\t\tthis.filesInprogress.add(uploadItemId);\n\t\t\t}\n\t\t\tif (result.done === true)\n\t\t\t{\n\t\t\t\tthis.filesVirgin.delete(uploadItemId);\n\t\t\t}\n\t\t}\n\t\treturn this.emit('onPackIsReady', formData);\n\t}\n\n\tstartStreaming(stream)\n\t{\n\t\tthis.bindStream(stream);\n\t\tthis.doStreaming(stream);\n\t}\n\n\tdoStreaming(stream)\n\t{\n\t\tthis.subscribeOnce('onPackIsReady', ({data}) => {\n\t\t\tconsole.log('onPackIsReady: ', data);\n\t\t\tconsole.groupEnd('Make a pack.');\n\t\t\tclearTimeout(this.makeAPackTimeout);\n\t\t\tthis.makeAPackTimeout = 0;\n\n\t\t\tif (data instanceof FormData)\n\t\t\t{\n\t\t\t\tconst firstValue = data.entries().next();\n\t\t\t\tif (firstValue.done === true && !firstValue.value)\n\t\t\t\t{\n\t\t\t\t\treturn this.checkAndDone(stream);\n\t\t\t\t}\n\t\t\t\tcopyFormToForm(this.formData, data);\n\t\t\t\tconsole.log('4.1. Start streaming');\n\t\t\t\treturn stream.send(this.uploadFileUrl, data);\n\t\t\t}\n\t\t\tthis.error('Package: error in packing');\n\t\t});\n\n\t\tconst formSize = Math.min(\n\t\t\tOptions.getUploadLimits('currentPostSize'),\n\t\t\tOptions.getUploadLimits('phpPostMaxSize') - this.#formDataSize,\n\t\t);\n\n\t\tconst filesCount = Options.getUploadLimits('phpMaxFileUploads') - this.#formDataFilesCount;\n\t\tconst fromData = new FormData();\n\t\tconsole.group('Make a pack.');\n\t\tthis.makeAPack(formSize, filesCount, fromData);\n\t\tthis.makeAPackTimeout = setTimeout(() => {\n\t\t\tthis.emit('onPackIsReady', null);\n\t\t}, Options.getUploadLimits('estimatedTimeForUploadFile') * 1000);\n\t}\n\n\tdoneStreaming({target: stream, data: {status, data, errors}})\n\t{\n\t\tconsole.log('4.2. Done streaming');\n\n\t\tif (status === 'success')\n\t\t{\n\t\t\tthis.parseResponse(data);\n\t\t\tif (this.errors.length <= 0)\n\t\t\t{\n\t\t\t\tthis.doStreaming(stream);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.error(errors.join('. '));\n\t\t}\n\t}\n\n\tprogressStreaming({data: percent})\n\t{\n\t\tthis.filesInprogress.forEach((itemId) => {\n\t\t\tconst item = this.files.get(itemId);\n\t\t\tconst currentPercent = percent * (item.packPercent || 0);\n\t\t\tif (!item['previousPackPercent'])\n\t\t\t{\n\t\t\t\titem['previousPackPercent'] = currentPercent;\n\t\t\t}\n\t\t\tthis.emit('fileIsInProgress',\n\t\t\t\t{\n\t\t\t\t\titemId: itemId,\n\t\t\t\t\titem: item.item,\n\t\t\t\t\tpercent: Math.ceil(Math.max(item['previousPackPercent'], currentPercent) / 100)\n\t\t\t\t});\n\t\t\titem['previousPackPercent'] = currentPercent;\n\t\t});\n\t}\n\n\tparseResponse(data)\n\t{\n\t\tconst merge = function(ar1, ar2)\n\t\t{\n\t\t\tfor (let jj in ar2)\n\t\t\t{\n\t\t\t\tif (ar2.hasOwnProperty(jj))\n\t\t\t\t{\n\t\t\t\t\tar1[jj] = Type.isPlainObject(ar2[jj]) && Type.isPlainObject(ar1[jj])\n\t\t\t\t\t\t? merge(ar1[jj], ar2[jj]) : ar2[jj];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn ar1;\n\t\t};\n\t\tthis.response = merge(this.response, data);\n\n\t\tif (data.status === 'error')\n\t\t{\n\t\t\tthis.error('Error in a uploading');\n\t\t}\n\t\telse if (!data['files'])\n\t\t{\n\t\t\tthis.error('Unexpected server response.');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.filesInprogress.forEach((itemId) => {\n\t\t\t\tconst fileResponse = data['files'][itemId] || {status: 'error', errors: ['File data is not found']};\n\t\t\t\tif (fileResponse.status === 'error' || fileResponse.status === 'uploaded')\n\t\t\t\t{\n\t\t\t\t\tthis.filesVirgin.delete(itemId);\n\t\t\t\t\tthis.emit((fileResponse.status === 'error' ? 'fileIsErrored' : 'fileIsUploaded'),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titemId: itemId,\n\t\t\t\t\t\t\titem: this.files.get(itemId).item,\n\t\t\t\t\t\t\tresponse: fileResponse\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.files.get(itemId).parseResponse(fileResponse);\n\t\t\t});\n\t\t\tthis.filesInprogress.clear();\n\t\t}\n\t}\n\n\tcheckAndDone(stream)\n\t{\n\t\tconsole.log('5. Form has been sent.');\n\t\tif (this.response['status'] === 'done')\n\t\t{\n\t\t\tthis.done(stream);\n\t\t}\n\t\telse if (this.response['status'] === 'start')\n\t\t{\n\t\t\tthis.error('Error with starting package.');\n\t\t}\n\t\telse if (this.response['status'] !== 'continue')\n\t\t{\n\t\t\tthis.error('Unknown response');\n\t\t}\n\t}\n\n\tdone(stream)\n\t{\n\t\tconsole.log('5.1 Release the stream');\n\t\tthis.unbindStream(stream);\n\t\tthis.emit('done', {\n\t\t\tstatus: this.errors.length <= 0 ? 'success' : 'failed'}\n\t\t);\n\t}\n\n\terror(errorText)\n\t{\n\t\tconst handler = (itemId) => {\n\t\t\tthis.emit('fileIsErrored',\n\t\t\t\t{\n\t\t\t\t\titemId: itemId,\n\t\t\t\t\titem: this.files.get(itemId).item,\n\t\t\t\t\tresponse: {error: errorText, status: 'failed'},\n\t\t\t\t\tserverResponse: Object.assign({}, this.response)\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\t\tthis.filesVirgin.forEach(handler);\n\t\tthis.filesVirgin.clear();\n\t\tthis.filesInprogress.forEach(handler);\n\t\tthis.filesInprogress.clear();\n\n\t\tthis.errors.push(errorText);\n\t\tconsole.log('5. Form has been sent with errors: ', this.errors);\n\t\tthis.done(this.stream);\n\t}\n\n\tget filesCount()\n\t{\n\t\treturn (this.filesVirgin.size + this.filesInprogress.size);\n\t}\n\n\tget data()\n\t{\n\t\treturn convertFormDataToObject(this.formData);\n\t}\n\n\tgetServerResponse()\n\t{\n\t\treturn this.response;\n\t}\n}","import {Loc,Event} from 'main.core';\nimport Stream from './stream';\nimport Package from './package';\nimport {EventEmitter} from 'main.core.events';\n\nexport default class Streams extends EventEmitter\n{\n\tstatic maxInstances = 3;\n\tstatic #instance = new Map();\n\tstatic #packages = new Map();\n\tstatic #hiddenTag = Symbol('streams descriptor');\n\n\tstatic addPackage(pack: Package)\n\t{\n\t\tconsole.log('3. Add to a stream queue.');\n\t\tif (this.maxInstances > 0 && this.#instance.size > this.maxInstances)\n\t\t{\n\t\t\tthis.#packages.set(pack);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#packages.delete(pack);\n\t\t\tthis.#runPackage(pack);\n\t\t}\n\t\tif (!window[this.#hiddenTag])\n\t\t{\n\t\t\twindow[this.#hiddenTag] = this.#catchWindow.bind(this);\n\t\t\tEvent.bind(window, 'beforeunload', window[this.#hiddenTag]);\n\t\t}\n\t}\n\n\tstatic #catchWindow(event)\n\t{\n\t\tif (this.#packages.size > 0 || this.#instance.size > 0)\n\t\t{\n\t\t\tconst confirmationMessage = Loc.getMessage('UPLOADER_UPLOADING_ONBEFOREUNLOAD');\n\t\t\t(event || window.event).returnValue = confirmationMessage;\n\t\t\treturn confirmationMessage;\n\t\t}\n\t}\n\n\tstatic #runPackage(pack: Package)\n\t{\n\t\tconst stream = new Stream();\n\t\tthis.#instance.set(stream);\n\t\tconsole.log('3.1. Run package in a stream.');\n\t\tpack.subscribeOnce('done', () => {\n\t\t\tconsole.log('6. Package is done so release the stream.');\n\t\t\tthis.#instance.delete(stream);\n\t\t\tstream.destroy();\n\t\t\tif (this.#packages.size > 0)\n\t\t\t{\n\t\t\t\tconst [newPack] = this.#packages.entries().next().value;\n\t\t\t\tthis.addPackage(newPack);\n\t\t\t}\n\t\t\telse if (this.#instance.size <= 0)\n\t\t\t{\n\t\t\t\tEvent.unbind(window, 'beforeunload', window[this.#hiddenTag]);\n\t\t\t\tdelete window[this.#hiddenTag];\n\t\t\t}\n\t\t});\n\n\t\tpack.run(stream);\n\t}\n}",";(function(window){\n\twindow.BX = window['BX'] || {};\n\tif (window.BX[\"UploaderQueue\"])\n\t\treturn false;\n\tvar\n\t\tBX = window.BX,\n\t\tstatuses = { \"new\" : 0, ready : 1, preparing : 2, inprogress : 3, done : 4, failed : 5, stopped : 6, changed : 7, uploaded : 8};\n\t/**\n\t * @return {BX.UploaderQueue}\n\t * @params array\n\t * @params[placeHolder] - DOM node to append files /OL or UL/\n\t */\n\tBX.UploaderQueue = function (params, limits, caller)\n\t{\n\t\tthis.dialogName = \"BX.UploaderQueue\";\n\t\tlimits = (!!limits ? limits : {});\n\n\t\tthis.limits = {\n\t\t\tphpPostMaxSize : limits[\"phpPostMaxSize\"],\n\t\t\tphpUploadMaxFilesize : limits[\"phpUploadMaxFilesize\"],\n\t\t\tuploadMaxFilesize : (limits[\"uploadMaxFilesize\"] > 0 ? limits[\"uploadMaxFilesize\"] : 0),\n\t\t\tuploadFileWidth : (limits[\"uploadFileWidth\"] > 0 ? limits[\"uploadFileWidth\"] : 0),\n\t\t\tuploadFileHeight : (limits[\"uploadFileHeight\"] > 0 ? limits[\"uploadFileHeight\"] : 0)};\n\n\t\tthis.placeHolder = BX(params[\"placeHolder\"]);\n\t\tthis.showImage = (params[\"showImage\"] !== false && params[\"showImage\"] !== 'N');\n\t\tthis.sortItems = (params[\"sortItems\"] !== false && params[\"sortItems\"] !== 'N');\n\t\tthis.fileCopies = params[\"copies\"];\n\t\tthis.fileFields = params[\"fields\"];\n\n\t\tthis.uploader = caller;\n\t\tthis.itForUpload = new BX.UploaderUtils.Hash();\n\t\tthis.items = new BX.UploaderUtils.Hash();\n\t\tthis.itUploaded = new BX.UploaderUtils.Hash();\n\t\tthis.itFailed = new BX.UploaderUtils.Hash();\n\t\tthis.thumb = { tagName : \"LI\", className : \"bx-bxu-thumb-thumb\"};\n\t\tif (!!params[\"thumb\"])\n\t\t{\n\t\t\tfor (var ii in params[\"thumb\"])\n\t\t\t{\n\t\t\t\tif (params[\"thumb\"].hasOwnProperty(ii) && this.thumb.hasOwnProperty(ii))\n\t\t\t\t{\n\t\t\t\t\tthis.thumb[ii] = params[\"thumb\"][ii];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tBX.addCustomEvent(caller, \"onItemIsAdded\", BX.delegate(this.addItem, this));\n\t\tBX.addCustomEvent(caller, \"onFileIsDeleted\", BX.delegate(this.deleteItem, this));\n\t\tBX.addCustomEvent(caller, \"onFileIsReinited\", BX.delegate(this.reinitItem, this));\n\n\t\tthis.log('Initialized');\n\t\treturn this;\n\t};\n\tBX.UploaderQueue.prototype = {\n\t\tshowError : function(text) { this.log('Error! ' + text); },\n\t\tlog : function(text)\n\t\t{\n\t\t\tBX.UploaderUtils.log('queue', text);\n\t\t},\n\t\taddItem : function (file, being)\n\t\t{\n\t\t\tvar isImage;\n\t\t\tif (!this.showImage)\n\t\t\t\tisImage = false;\n\t\t\telse if (BX.type.isDomNode(file))\n\t\t\t\tisImage = BX.UploaderUtils.isImage(file.value, null, null);\n\t\t\telse\n\t\t\t\tisImage = BX.UploaderUtils.isImage(file[\"name\"], file[\"type\"], file[\"size\"]);\n\n\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsBeforeCreated\", [file, being, isImage, this.uploader]);\n\n\t\t\tvar params = {copies : this.fileCopies, fields : this.fileFields},\n\t\t\t\tres = (isImage ?\n\t\t\t\t\tnew BX.UploaderImage(file, params, this.limits, this.uploader) :\n\t\t\t\t\tnew BX.UploaderFile(file, params, this.limits, this.uploader)),\n\t\t\t\t\tchildren, node,\n\t\t\t\t\titemStatus = {status : statuses.ready};\n\n\t\t\tBX.onCustomEvent(res, \"onFileIsAfterCreated\", [res, being, itemStatus, this.uploader]);\n\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsAfterCreated\", [res, being, itemStatus, this.uploader]);\n\n\t\t\tthis.items.setItem(res.id, res);\n\t\t\tif (being || itemStatus[\"status\"] !== statuses.ready)\n\t\t\t{\n\t\t\t\tthis.itUploaded.setItem(res.id, res);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.itForUpload.setItem(res.id, res);\n\t\t\t}\n\t\t\tif (!!this.placeHolder)\n\t\t\t{\n\t\t\t\tif (BX(being))\n\t\t\t\t{\n\t\t\t\t\tres.thumbNode = node = BX(being);\n\t\t\t\t\tnode.setAttribute(\"bx-bxu-item-id\", res.id);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tchildren = res.makeThumb();\n\t\t\t\t\tnode = BX.create(this.thumb.tagName, {\n\t\t\t\t\t\tattrs : {\n\t\t\t\t\t\t\tid : res.id + 'Item',\n\t\t\t\t\t\t\t'bx-bxu-item-id' : res.id,\n\t\t\t\t\t\t\tclassName : this.thumb.className}\n\t\t\t\t\t});\n\t\t\t\t\tif (BX.type.isNotEmptyString(children))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.thumb.tagName == 'TR')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tchildren = children.replace(/[\\n\\t]/gi, \"\").replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\");\n\t\t\t\t\t\t\tif (!!children[\"trim\"])\n\t\t\t\t\t\t\t\tchildren = children.trim();\n\t\t\t\t\t\t\tvar replaceFunction = function(str, tdParams, tdInnerHTML)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar td = node.insertCell(-1),\n\t\t\t\t\t\t\t\t\tattrs = {\n\t\t\t\t\t\t\t\t\t\tcolspan : true,\n\t\t\t\t\t\t\t\t\t\theaders : true,\n\t\t\t\t\t\t\t\t\t\taccesskey : true,\n\t\t\t\t\t\t\t\t\t\t\"class\" : true,\n\t\t\t\t\t\t\t\t\t\tcontenteditable : true,\n\t\t\t\t\t\t\t\t\t\tcontextmenu : true,\n\t\t\t\t\t\t\t\t\t\tdir : true,\n\t\t\t\t\t\t\t\t\t\thidden : true,\n\t\t\t\t\t\t\t\t\t\tid : true,\n\t\t\t\t\t\t\t\t\t\tlang : true,\n\t\t\t\t\t\t\t\t\t\tspellcheck : true,\n\t\t\t\t\t\t\t\t\t\tstyle : true,\n\t\t\t\t\t\t\t\t\t\ttabindex : true,\n\t\t\t\t\t\t\t\t\t\ttitle : true,\n\t\t\t\t\t\t\t\t\t\ttranslate : true\n\t\t\t\t\t\t\t\t\t}, param;\n\t\t\t\t\t\t\t\ttd.innerHTML = tdInnerHTML;\n\t\t\t\t\t\t\t\ttdParams = tdParams.split(\" \");\n\t\t\t\t\t\t\t\twhile ((param = tdParams.pop()) && param)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tparam = param.split(\"=\");\n\t\t\t\t\t\t\t\t\tif (param.length == 2)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tparam[0] = param[0].replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\").replace(/^[\"'](.*?)[\"']$/gi, \"$1\");\n\t\t\t\t\t\t\t\t\t\tparam[1] = param[1].replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\").replace(/^[\"'](.*?)[\"']$/gi, \"$1\");\n\t\t\t\t\t\t\t\t\t\tif (attrs[param[0]] === true)\n\t\t\t\t\t\t\t\t\t\t\ttd.setAttribute(param[0], param[1]);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\ttd[param[0]] = param[1];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t\t}, regex = /^<td(.*?)>(.*?)<\\/td>/i;\n\t\t\t\t\t\t\twindow.data1 = children;\n\t\t\t\t\t\t\twhile (regex.test(children))\n\t\t\t\t\t\t\t\tchildren = children.replace(regex, replaceFunction);\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\tnode.innerHTML = children;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (BX.type.isDomNode(children))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.adjust(node, { children : [children] } );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!!window[\"jsDD\"] && this.sortItems)\n\t\t\t\t{\n\t\t\t\t\tif (!this._onbxdragstart)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._onbxdragstart = BX.delegate(this.onbxdragstart, this);\n\t\t\t\t\t\tthis._onbxdragstop = BX.delegate(this.onbxdragstop, this);\n\t\t\t\t\t\tthis._onbxdrag = BX.delegate(this.onbxdrag, this);\n\t\t\t\t\t\tthis._onbxdraghout = BX.delegate(this.onbxdraghout, this);\n\t\t\t\t\t\tthis._onbxdestdraghover = BX.delegate(this.onbxdestdraghover, this);\n\t\t\t\t\t\tthis._onbxdestdraghout = BX.delegate(this.onbxdestdraghout, this);\n\t\t\t\t\t\tthis._onbxdestdragfinish = BX.delegate(this.onbxdestdragfinish, this);\n\t\t\t\t\t}\n\t\t\t\t\tBX.addClass(node, \"bx-drag-draggable\");\n\t\t\t\t\tnode.onbxdragstart = this._onbxdragstart;\n\t\t\t\t\tnode.onbxdragstop = this._onbxdragstop;\n\t\t\t\t\tnode.onbxdrag = this._onbxdrag;\n\t\t\t\t\tnode.onbxdraghout = this._onbxdraghout;\n\t\t\t\t\twindow.jsDD.registerObject(node);\n\n\t\t\t\t\tnode.onbxdestdraghover = this._onbxdestdraghover;\n\t\t\t\t\tnode.onbxdestdraghout = this._onbxdestdraghout;\n\t\t\t\t\tnode.onbxdestdragfinish = this._onbxdestdragfinish;\n\t\t\t\t\twindow.jsDD.registerDest(node);\n\t\t\t\t\tvar inputs = BX.findChild(node, {tagName : \"INPUT\", props : {\"type\" : \"text\"}}, true, true);\n\t\t\t\t\tfor (var ii = 0; ii <= inputs.length; ii++)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.bind(inputs[ii], \"mousedown\", BX.eventCancelBubble);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnode.setAttribute(\"bx-item-id\", res.id);\n\t\t\t\tif (BX(being))\n\t\t\t\t{\n\t\t\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsBound\", [res.id, res, this.caller, being]);\n\t\t\t\t\tBX.onCustomEvent(res, \"onFileIsBound\", [res.id, res, this.caller, being]);\n\t\t\t\t}\n\t\t\t\telse if (!!being)\n\t\t\t\t{\n\t\t\t\t\tthis.placeHolder.appendChild(node);\n\t\t\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsAttached\", [res.id, res, this.caller, being]);\n\t\t\t\t\tBX.onCustomEvent(res, \"onFileIsAttached\", [res.id, res, this.caller, being]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.placeHolder.appendChild(node);\n\t\t\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsAppended\", [res.id, res, this.caller]);\n\t\t\t\t\tBX.onCustomEvent(res, \"onFileIsAppended\", [res.id, res, this.caller]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tBX.onCustomEvent(this.uploader, \"onQueueIsChanged\", [this, \"add\", res.id, res]);\n\t\t},\n\t\tgetItem : function(id)\n\t\t{\n\t\t\tvar item = this.items.getItem(id);\n\t\t\tif (item)\n\t\t\t\treturn {item : item, node : (item.thumbNode || BX(id + 'Item'))};\n\t\t\treturn null;\n\t\t},\n\t\tonbxdragstart : function() {\n\t\t\tvar item = BX.proxy_context,\n\t\t\t\tid = (item && item.getAttribute(\"bx-item-id\"));\n\t\t\tif (id)\n\t\t\t{\n\t\t\t\tvar template = item.innerHTML.replace(new RegExp(id, \"gi\"), \"DragCopy\");\n\t\t\t\titem.__dragCopyDiv = BX.create('DIV', {\n\t\t\t\t\tattrs : {\n\t\t\t\t\t\tclassName : \"bx-drag-object \" + item.className\n\t\t\t\t\t},\n\t\t\t\t\tstyle : {\n\t\t\t\t\t\tposition : \"absolute\",\n\t\t\t\t\t\tzIndex : 10,\n\t\t\t\t\t\twidth : item.clientWidth + 'px'\n\t\t\t\t\t},\n\t\t\t\t\thtml : template\n\t\t\t\t});\n\t\t\t\titem.__dragCopyPos = BX.pos(item);\n\t\t\t\tBX.onCustomEvent(this.uploader, \"onBxDragStart\", [item, item.__dragCopyDiv]);\n\t\t\t\tdocument.body.appendChild(item.__dragCopyDiv);\n\n\t\t\t\tBX.addClass(item, \"bx-drag-source\");\n\t\t\t\tvar c = BX('DragCopyProperCanvas'),\n\t\t\t\t\tc1,\n\t\t\t\t\tit = this.items.getItem(id);\n\t\t\t\tif (c && (it && BX(it.canvas)))\n\t\t\t\t{\n\t\t\t\t\tc1 = it.canvas.cloneNode(true);\n\t\t\t\t\tc.parentNode.replaceChild(c1, c);\n\t\t\t\t\tc1.getContext(\"2d\").drawImage(it.canvas, 0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tonbxdragstop : function() {\n\t\t\tvar item = BX.proxy_context;\n\t\t\tif (item.__dragCopyDiv)\n\t\t\t{\n\t\t\t\tBX.removeClass(item, \"bx-drag-source\");\n\t\t\t\titem.__dragCopyDiv.parentNode.removeChild(item.__dragCopyDiv);\n\t\t\t\titem.__dragCopyDiv = null;\n\t\t\t\tdelete item['__dragCopyDiv'];\n\t\t\t\tdelete item['__dragCopyPos'];\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tonbxdrag : function(x, y) {\n\t\t\tvar item = BX.proxy_context,\n\t\t\t\tdiv = item.__dragCopyDiv;\n\t\t\tif (div)\n\t\t\t{\n\t\t\t\tif (item.__dragCopyPos)\n\t\t\t\t{\n\t\t\t\t\tif (!item.__dragCopyPos.deltaX)\n\t\t\t\t\t\titem.__dragCopyPos.deltaX = item.__dragCopyPos.left - x;\n\t\t\t\t\tif (!item.__dragCopyPos.deltaY)\n\t\t\t\t\t\titem.__dragCopyPos.deltaY = item.__dragCopyPos.top - y;\n\t\t\t\t\tx += item.__dragCopyPos.deltaX;\n\t\t\t\t\ty += item.__dragCopyPos.deltaY;\n\t\t\t\t}\n\n\t\t\t\tdiv.style.left = x + 'px';\n\t\t\t\tdiv.style.top = y + 'px';\n\t\t\t}\n\t\t},\n\t\tonbxdraghout : function(currentNode, x, y) {\n\t\t},\n\t\tonbxdestdraghover : function(currentNode) {\n\t\t\tif (!currentNode || !currentNode.hasAttribute(\"bx-bxu-item-id\") || !this.items.hasItem(currentNode.getAttribute(\"bx-bxu-item-id\")))\n\t\t\t\treturn;\n\t\t\tvar item = BX.proxy_context;\n\t\t\tBX.addClass(item, \"bx-drag-over\");\n\t\t\treturn true;\n\t\t},\n\t\tonbxdestdraghout : function() {\n\t\t\tvar item = BX.proxy_context;\n\t\t\tBX.removeClass(item, \"bx-drag-over\");\n\t\t\treturn true;\n\t\t},\n\t\tonbxdestdragfinish : function(currentNode) {\n\t\t\tvar item = BX.proxy_context;\n\t\t\tBX.removeClass(item, \"bx-drag-over\");\n\t\t\tif(item == currentNode || !BX.hasClass(currentNode, \"bx-drag-draggable\"))\n\t\t\t\treturn true;\n\t\t\tvar id = currentNode.getAttribute(\"bx-bxu-item-id\");\n\t\t\tif (!this.items.hasItem(id))\n\t\t\t\treturn;\n\n\t\t\tvar obj = item.parentNode,\n\t\t\t\tn = obj.childNodes.length,\n\t\t\t\tact, it, buff, j;\n\n\t\t\tfor (j=0; j<n; j++)\n\t\t\t{\n\t\t\t\tif (obj.childNodes[j] == item)\n\t\t\t\t\titem.number = j;\n\t\t\t\telse if (obj.childNodes[j] == currentNode)\n\t\t\t\t\tcurrentNode.number = j;\n\n\t\t\t\tif (currentNode.number > 0 && item.number > 0)\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (this.itForUpload.hasItem(id))\n\t\t\t{\n\t\t\t\tact = (item.number <= currentNode.number ? \"beforeItem\" : (\n\t\t\t\t\titem.nextSibling ? \"afterItem\" : \"inTheEnd\"));\n\t\t\t\tit = null;\n\t\t\t\tif (act != \"inTheEnd\")\n\t\t\t\t{\n\t\t\t\t\tfor (j = item.number + (act == \"beforeItem\" ? 0 : 1); j < n; j++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.itForUpload.hasItem(obj.childNodes[j].getAttribute(\"bx-bxu-item-id\")))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tit = obj.childNodes[j].getAttribute(\"bx-bxu-item-id\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (it === null)\n\t\t\t\t\t\tact = \"inTheEnd\";\n\t\t\t\t}\n\t\t\t\tbuff = this.itForUpload.removeItem(currentNode.getAttribute(\"bx-bxu-item-id\"));\n\t\t\t\tif (act != \"inTheEnd\")\n\t\t\t\t\tthis.itForUpload.insertBeforeItem(buff.id, buff, it);\n\t\t\t\telse\n\t\t\t\t\tthis.itForUpload.setItem(buff.id, buff);\n\t\t\t}\n\n\t\t\tact = (item.number <= currentNode.number ? \"beforeItem\" : (\n\t\t\t\titem.nextSibling ? \"afterItem\" : \"inTheEnd\"));\n\t\t\tit = null;\n\t\t\tif (act != \"inTheEnd\")\n\t\t\t{\n\t\t\t\tfor (j = item.number + (act == \"beforeItem\" ? 0 : 1); j < n; j++)\n\t\t\t\t{\n\t\t\t\t\tif (this.items.hasItem(obj.childNodes[j].getAttribute(\"bx-bxu-item-id\")))\n\t\t\t\t\t{\n\t\t\t\t\t\tit = obj.childNodes[j].getAttribute(\"bx-bxu-item-id\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (it === null)\n\t\t\t\t\tact = \"inTheEnd\";\n\t\t\t}\n\t\t\tbuff = this.items.removeItem(currentNode.getAttribute(\"bx-bxu-item-id\"));\n\t\t\tif (act != \"inTheEnd\")\n\t\t\t\tthis.items.insertBeforeItem(buff.id, buff, it);\n\t\t\telse\n\t\t\t\tthis.items.setItem(buff.id, buff);\n\n\t\t\tcurrentNode.parentNode.removeChild(currentNode);\n\t\t\tif (item.number <= currentNode.number)\n\t\t\t{\n\t\t\t\titem.parentNode.insertBefore(currentNode, item);\n\t\t\t}\n\t\t\telse if (item.nextSibling)\n\t\t\t{\n\t\t\t\titem.parentNode.insertBefore(currentNode, item.nextSibling);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (j=0; j<n; j++)\n\t\t\t\t{\n\t\t\t\t\tif (obj.childNodes[j] == item)\n\t\t\t\t\t\titem.number = j;\n\t\t\t\t\telse if (obj.childNodes[j] == currentNode)\n\t\t\t\t\t\tcurrentNode.number = j;\n\t\t\t\t}\n\t\t\t\tif (item.number <= currentNode.number)\n\t\t\t\t{\n\t\t\t\t\titem.parentNode.insertBefore(currentNode, item);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\titem.parentNode.appendChild(currentNode);\n\t\t\t\t}\n\t\t\t}\n\t\t\tBX.onCustomEvent(item, \"onFileOrderIsChanged\", [item.id, item, this.caller]);\n\t\t\tBX.onCustomEvent(this.uploader, \"onQueueIsChanged\", [this, \"sort\", item.id, item]);\n\t\t\treturn true;\n\t\t},\n\t\tdeleteItem : function (id, item) {\n\t\t\tvar pointer = this.getItem(id), node;\n\t\t\tif (pointer && (!this.placeHolder || ((node = pointer.node) && node)))\n\t\t\t{\n\t\t\t\tif (!!node)\n\t\t\t\t{\n\t\t\t\t\tif (!!window[\"jsDD\"])\n\t\t\t\t\t{\n\t\t\t\t\t\tnode.onmousedown = null;\n\t\t\t\t\t\tnode.onbxdragstart = null;\n\t\t\t\t\t\tnode.onbxdragstop = null;\n\t\t\t\t\t\tnode.onbxdrag = null;\n\t\t\t\t\t\tnode.onbxdraghout = null;\n\t\t\t\t\t\tnode.onbxdestdraghover = null;\n\t\t\t\t\t\tnode.onbxdestdraghout = null;\n\t\t\t\t\t\tnode.onbxdestdragfinish = null;\n\t\t\t\t\t\tnode.__bxpos = null;\n\n\t\t\t\t\t\twindow.jsDD.arObjects[node.__bxddid] = null;\n\t\t\t\t\t\tdelete window.jsDD.arObjects[node.__bxddid];\n\n\t\t\t\t\t\twindow.jsDD.arDestinations[node.__bxddeid] = null;\n\t\t\t\t\t\tdelete window.jsDD.arDestinations[node.__bxddeid];\n\t\t\t\t\t}\n\t\t\t\t\tBX.unbindAll(node);\n\t\t\t\t\tif (item[\"replaced\"] !== true)\n\t\t\t\t\t\tnode.parentNode.removeChild(node);\n\t\t\t\t}\n\n\t\t\t\tthis.items.removeItem(id);\n\t\t\t\tthis.itUploaded.removeItem(id);\n\t\t\t\tthis.itFailed.removeItem(id);\n\t\t\t\tthis.itForUpload.removeItem(id);\n\t\t\t\tBX.onCustomEvent(this.uploader, \"onQueueIsChanged\", [this, \"delete\", id, item]);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\treinitItem : function (id, item) {\n\t\t\tvar node, children;\n\t\t\tif (!!this.placeHolder && this.items.hasItem(id) && (node = BX(id + 'Item')) && node)\n\t\t\t{\n\t\t\t\tchildren = item.makeThumb();\n\t\t\t\tif (BX.type.isNotEmptyString(children))\n\t\t\t\t{\n\t\t\t\t\tif (this.thumb.tagName == 'TR')\n\t\t\t\t\t{\n\t\t\t\t\t\tchildren = children.replace(/[\\n\\t]/gi, \"\").replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\");\n\t\t\t\t\t\tif (!!children[\"trim\"])\n\t\t\t\t\t\t\tchildren = children.trim();\n\t\t\t\t\t\tvar replaceFunction = function(str, tdParams, tdInnerHTML)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar td = node.insertCell(-1),\n\t\t\t\t\t\t\t\tattrs = {\n\t\t\t\t\t\t\t\t\tcolspan : true,\n\t\t\t\t\t\t\t\t\theaders : true,\n\t\t\t\t\t\t\t\t\taccesskey : true,\n\t\t\t\t\t\t\t\t\t\"class\" : true,\n\t\t\t\t\t\t\t\t\tcontenteditable : true,\n\t\t\t\t\t\t\t\t\tcontextmenu : true,\n\t\t\t\t\t\t\t\t\tdir : true,\n\t\t\t\t\t\t\t\t\thidden : true,\n\t\t\t\t\t\t\t\t\tid : true,\n\t\t\t\t\t\t\t\t\tlang : true,\n\t\t\t\t\t\t\t\t\tspellcheck : true,\n\t\t\t\t\t\t\t\t\tstyle : true,\n\t\t\t\t\t\t\t\t\ttabindex : true,\n\t\t\t\t\t\t\t\t\ttitle : true,\n\t\t\t\t\t\t\t\t\ttranslate : true\n\t\t\t\t\t\t\t\t}, param;\n\t\t\t\t\t\t\ttd.innerHTML = tdInnerHTML;\n\t\t\t\t\t\t\ttdParams = tdParams.split(\" \");\n\t\t\t\t\t\t\twhile ((param = tdParams.pop()) && param)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tparam = param.split(\"=\");\n\t\t\t\t\t\t\t\tif (param.length == 2)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tparam[0] = param[0].replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\").replace(/^[\"'](.*?)[\"']$/gi, \"$1\");\n\t\t\t\t\t\t\t\t\tparam[1] = param[1].replace(/^(\\s+)(.*?)/gi, \"$2\").replace(/(.*?)(\\s+)$/gi, \"$1\").replace(/^[\"'](.*?)[\"']$/gi, \"$1\");\n\t\t\t\t\t\t\t\t\tif (attrs[param[0]] === true)\n\t\t\t\t\t\t\t\t\t\ttd.setAttribute(param[0], param[1]);\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttd[param[0]] = param[1];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t}, regex = /^<td(.*?)>(.*?)<\\/td>/i;\n\t\t\t\t\t\twindow.data1 = children;\n\t\t\t\t\t\twhile (regex.test(children))\n\t\t\t\t\t\t\tchildren = children.replace(regex, replaceFunction);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnode.innerHTML = children;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (BX.type.isDomNode(children))\n\t\t\t\t{\n\t\t\t\t\twhile (BX(node.firstChild))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.remove(node.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tBX.adjust(node, { children : [children] } );\n\t\t\t\t}\n\t\t\t\tBX.onCustomEvent(this.uploader, \"onFileIsAppended\", [item.id, item, this.caller]);\n\t\t\t\tBX.onCustomEvent(item, \"onFileIsAppended\", [item.id, item, this.caller]);\n\t\t\t}\n\t\t},\n\t\tclear : function()\n\t\t{\n\t\t\tvar item;\n\t\t\twhile ((item = this.items.getFirst()) && !!item)\n\t\t\t\tthis.deleteItem(item.id, item);\n\t\t},\n\t\trestoreFiles : function(data, restoreErrored, startAgain)\n\t\t{\n\t\t\tdata.reset();\n\t\t\tvar item, copy, erroredFile;\n\t\t\twhile((item = data.getNext()) && item)\n\t\t\t{\n\t\t\t\terroredFile = this.itFailed.hasItem(item.id);\n\t\t\t\tif (restoreErrored === true)\n\t\t\t\t{\n\t\t\t\t\tthis.itFailed.removeItem(item.id);\n\t\t\t\t}\n\n\t\t\t\tif (!this.items.hasItem(item.id) || this.itFailed.hasItem(item.id))\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (startAgain === true || startAgain !== false && erroredFile) // for compatibility\n\t\t\t\t{\n\t\t\t\t\tdelete item[\"uploadStatus\"];\n\n\t\t\t\t\tdelete item.file[\"uploadStatus\"];\n\t\t\t\t\tdelete item.file[\"firstChunk\"];\n\t\t\t\t\tdelete item.file[\"package\"];\n\t\t\t\t\tdelete item.file[\"packages\"];\n\n\t\t\t\t\tif (item.file[\"copies\"])\n\t\t\t\t\t{\n\t\t\t\t\t\titem.file[\"copies\"].reset();\n\t\t\t\t\t\twhile((copy = item.file[\"copies\"].getNext()) && copy)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdelete copy[\"uploadStatus\"];\n\t\t\t\t\t\t\tdelete copy[\"firstChunk\"];\n\t\t\t\t\t\t\tdelete copy[\"package\"];\n\t\t\t\t\t\t\tdelete copy[\"packages\"];\n\t\t\t\t\t\t}\n\t\t\t\t\t\titem.file[\"copies\"].reset();\n\t\t\t\t\t}\n\t\t\t\t\titem[\"restored\"] = (startAgain === true ? \"Y\" : \"C\"); // Start again or continue\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (erroredFile) // If a error was occurred on the last step we should send this piece again\n\t\t\t\t\t{\n\t\t\t\t\t\tif (item.file[\"package\"])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.file[\"package\"]--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (item.file[\"copies\"])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem.file[\"copies\"].reset();\n\n\t\t\t\t\t\t\twhile((copy = item.file[\"copies\"].getNext()) && copy)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdelete copy[\"uploadStatus\"];\n\t\t\t\t\t\t\t\tdelete copy[\"firstChunk\"];\n\t\t\t\t\t\t\t\tdelete copy[\"package\"];\n\t\t\t\t\t\t\t\tdelete copy[\"packages\"];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\titem.file[\"copies\"].reset();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\titem[\"restored\"] = \"C\"; // Continue\n\t\t\t\t}\n\t\t\t\tthis.itUploaded.removeItem(item.id);\n\t\t\t\tthis.itForUpload.setItem(item.id, item);\n\t\t\t\tBX.onCustomEvent(item, \"onUploadRestore\", [item]);\n\t\t\t}\n\t\t}\n\t};\n\treturn statuses;\n}(window));\n",";(function(window){\n\twindow.BX = window['BX'] || {};\n\tif (window.BX[\"UploaderUtils\"])\n\t\treturn false;\n\tvar BX = window.BX;\n\tBX.UploaderLog = [];\n\tBX.UploaderDebug = false;\n\tvar statuses = { \"new\" : 0, ready : 1, preparing : 2, inprogress : 3, done : 4, failed : 5, stopped : 6, changed : 7, uploaded : 8};\n\tBX.UploaderUtils = {\n\t\tstatuses : statuses,\n\t\tgetId : function() { return (new Date().valueOf() + Math.round(Math.random() * 1000000)); },\n\t\tlog : function(){\n\t\t\tif (BX.UploaderDebug === true)\n\t\t\t{\n\t\t\t\tconsole.log(arguments);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.UploaderLog.push(arguments);\n\t\t\t}\n\t\t},\n\t\tHash : (function(){\n\t\t\tvar d = function() {\n\t\t\t\tthis.length = 0;\n\t\t\t\tthis.items = {};\n\t\t\t\tthis.order = [];\n\t\t\t\tvar i;\n\t\t\t\tif (arguments.length == 1 && BX.type.isArray(arguments[0]) && arguments[0].length > 0)\n\t\t\t\t{\n\t\t\t\t\tvar data = arguments[0];\n\t\t\t\t\tfor (i = 0; i < data.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (data[i] && typeof data[i] == \"object\" && data[i][\"id\"])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.setItem(data[i][\"id\"], data[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfor (i = 0; i < arguments.length; i += 2)\n\t\t\t\t\t\tthis.setItem(arguments[i], arguments[i + 1]);\n\t\t\t\t}\n\t\t\t};\n\t\t\td.prototype = {\n\t\t\t\tgetIds : function()\n\t\t\t\t{\n\t\t\t\t\treturn this.order;\n\t\t\t\t},\n\t\t\t\tgetQueue : function(id)\n\t\t\t\t{\n\t\t\t\t\tid += '';\n\t\t\t\t\treturn BX.util.array_search(id, this.order);\n\t\t\t\t},\n\t\t\t\tgetByOrder : function(order)\n\t\t\t\t{\n\t\t\t\t\treturn this.getItem(this.order[order]);\n\t\t\t\t},\n\t\t\t\tremoveItem : function(in_key)\n\t\t\t\t{\n\t\t\t\t\tin_key += '';\n\t\t\t\t\tvar tmp_value, number;\n\t\t\t\t\tif (typeof(this.items[in_key]) != 'undefined') {\n\t\t\t\t\t\ttmp_value = this.items[in_key];\n\t\t\t\t\t\tnumber = this.getQueue(in_key);\n\t\t\t\t\t\tthis.pointer -= (this.pointer >= number ? 1 : 0);\n\t\t\t\t\t\tdelete this.items[in_key];\n\t\t\t\t\t\tthis.order = BX.util.deleteFromArray(this.order, number);\n\t\t\t\t\t\tthis.length = this.order.length;\n\n\t\t\t\t\t}\n\t\t\t\t\treturn tmp_value;\n\t\t\t\t},\n\n\t\t\t\tgetItem : function(in_key) {\n\t\t\t\t\tin_key += '';\n\t\t\t\t\treturn this.items[in_key];\n\t\t\t\t},\n\n\t\t\t\tunshiftItem : function(in_key, in_value)\n\t\t\t\t{\n\t\t\t\t\tin_key += '';\n\t\t\t\t\tif (typeof(in_value) != 'undefined')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (typeof(this.items[in_key]) == 'undefined')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.order.unshift(in_key);\n\t\t\t\t\t\t\tthis.length = this.order.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.items[in_key] = in_value;\n\t\t\t\t\t}\n\t\t\t\t\treturn in_value;\n\t\t\t\t},\n\t\t\t\tsetItem : function(in_key, in_value)\n\t\t\t\t{\n\t\t\t\t\tin_key += '';\n\t\t\t\t\tif (typeof(in_value) != 'undefined')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (typeof(this.items[in_key]) == 'undefined')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.order.push(in_key);\n\t\t\t\t\t\t\tthis.length = this.order.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.items[in_key] = in_value;\n\t\t\t\t\t}\n\t\t\t\t\treturn in_value;\n\t\t\t\t},\n\n\t\t\t\thasItem : function(in_key)\n\t\t\t\t{\n\t\t\t\t\tin_key += '';\n\t\t\t\t\treturn typeof(this.items[in_key]) != 'undefined';\n\t\t\t\t},\n\t\t\t\tinsertBeforeItem : function(in_key, in_value, after_key)\n\t\t\t\t{\n\t\t\t\t\tin_key += '';\n\t\t\t\t\tif (typeof(in_value) != 'undefined')\n\t\t\t\t\t{\n\t\t\t\t\t\tif (typeof(this.items[in_key]) == 'undefined')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.order.splice(this.getQueue(after_key), 0, in_key);\n\t\t\t\t\t\t\tthis.length = this.order.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.items[in_key] = in_value;\n\t\t\t\t\t}\n\t\t\t\t\treturn in_value;\n\t\t\t\t},\n\t\t\t\tgetFirst : function()\n\t\t\t\t{\n\t\t\t\t\tvar in_key, item = null;\n\t\t\t\t\tfor (var ii = 0; ii < this.order.length; ii++)\n\t\t\t\t\t{\n\t\t\t\t\t\tin_key = this.order[ii];\n\t\t\t\t\t\tif (!!in_key && this.hasItem(in_key))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem = this.getItem(in_key);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn item;\n\t\t\t\t},\n\t\t\t\tgetNext : function()\n\t\t\t\t{\n\t\t\t\t\tthis.pointer = (0 <= this.pointer && this.pointer < this.order.length ? this.pointer : -1);\n\t\t\t\t\tvar res = this.getItem(this.order[this.pointer + 1]);\n\t\t\t\t\tif (!!res)\n\t\t\t\t\t\tthis.pointer++;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.pointer = -1;\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\t\t\t\tgetPrev : function()\n\t\t\t\t{\n\t\t\t\t\tthis.pointer = (0 <= this.pointer && this.pointer < this.order.length ? this.pointer : 0);\n\t\t\t\t\tvar res = this.getItem(this.order[this.pointer - 1]);\n\t\t\t\t\tif (!!res)\n\t\t\t\t\t\tthis.pointer--;\n\t\t\t\t\treturn res;\n\t\t\t\t},\n\t\t\t\treset : function()\n\t\t\t\t{\n\t\t\t\t\tthis.pointer = -1;\n\t\t\t\t},\n\t\t\t\tsetPointer : function(in_key)\n\t\t\t\t{\n\t\t\t\t\tthis.pointer = this.getQueue(in_key);\n\t\t\t\t\treturn this.pointer;\n\t\t\t\t},\n\t\t\t\tgetLast : function()\n\t\t\t\t{\n\t\t\t\t\tvar in_key, item = null;\n\t\t\t\t\tfor (var ii = this.order.length; ii >=0; ii--)\n\t\t\t\t\t{\n\t\t\t\t\t\tin_key = this.order[ii];\n\t\t\t\t\t\tif (!!in_key && this.hasItem(in_key))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\titem = this.getItem(in_key);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn d;\n\t\t})(),\n\t\tgetFileNameOnly : function (name)\n\t\t{\n\t\t\tvar delimiter = \"\\\\\", start = name.lastIndexOf(delimiter), finish = name.length;\n\t\t\tif (start == -1)\n\t\t\t{\n\t\t\t\tdelimiter = \"/\";\n\t\t\t\tstart = name.lastIndexOf(delimiter);\n\t\t\t}\n\t\t\tif ((start + 1) == name.length)\n\t\t\t{\n\t\t\t\tfinish = start;\n\t\t\t\tstart = name.substring(0, finish).lastIndexOf(delimiter);\n\t\t\t}\n\t\t\tname = name.substring(start + 1, finish);\n\t\t\tif (delimiter == \"/\" && name.indexOf(\"?\") > 0)\n\t\t\t{\n\t\t\t\tname = name.substring(0, name.indexOf(\"?\"));\n\t\t\t}\n\n\t\t\tif (name == '')\n\t\t\t\tname = 'noname';\n\t\t\treturn name;\n\t\t},\n\t\tisImageExt : function(ext)\n\t\t{\n\t\t\treturn (BX.message('bxImageExtensions') && BX.type.isNotEmptyString(ext) ?\n\t\t\t\t(new RegExp('(?:^|\\\\W)(' + ext + ')(?:\\\\W|$)', 'gi')).test(BX.message('bxImageExtensions')) :\n\t\t\t\tfalse\n\t\t\t);\n\t\t},\n\t\tisImage : function(name, type, size)\n\t\t{\n\t\t\tsize = BX.type.isNumber(size) ? size : (BX.type.isNotEmptyString(size) && !(/[\\D]+/gi.test(size)) ? parseInt(size) : null);\n\t\t\treturn (\n\t\t\t\t(type === null || (type || '').indexOf(\"image/\") === 0) &&\n\t\t\t\t(size === null || (size < 20 * 1024 * 1024)) &&\n\t\t\t\tBX.UploaderUtils.isImageExt((name || '').lastIndexOf('.') > 0 ? name.substr(name.lastIndexOf('.')+1).toLowerCase() : ''));\n\t\t},\n\t\tscaleImage : function(arSourceSize, arSize, resizeType)\n\t\t{\n\t\t\tvar sourceImageWidth = parseInt(arSourceSize[\"width\"]), sourceImageHeight = parseInt(arSourceSize[\"height\"]);\n\t\t\tresizeType = (!resizeType && !!arSize[\"type\"] ? arSize[\"type\"] : resizeType);\n\t\t\tarSize = (!!arSize ? arSize : {});\n\t\t\tarSize.width = parseInt(!!arSize.width ? arSize.width : 0);\n\t\t\tarSize.height = parseInt(!!arSize.height ? arSize.height : 0);\n\n\t\t\tvar res = {\n\t\t\t\t\tbNeedCreatePicture : false,\n\t\t\t\t\tsource : {x : 0, y : 0, width : 0, height : 0},\n\t\t\t\t\tdestin : {x : 0, y : 0, width : 0, height : 0}\n\t\t\t}, width, height;\n\n\t\t\tif (!(sourceImageWidth > 0 || sourceImageHeight > 0))\n\t\t\t{\n\t\t\t\tBX.DoNothing();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!BX.type.isNotEmptyString(resizeType))\n\t\t\t\t{\n\t\t\t\t\tresizeType = \"inscribed\";\n\t\t\t\t}\n\n\n\t\t\t\tvar ResizeCoeff, iResizeCoeff;\n\n\t\t\t\tif (resizeType.indexOf(\"proportional\") >= 0)\n\t\t\t\t{\n\t\t\t\t\twidth = Math.max(sourceImageWidth, sourceImageHeight);\n\t\t\t\t\theight = Math.min(sourceImageWidth, sourceImageHeight);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\twidth = sourceImageWidth;\n\t\t\t\t\theight = sourceImageHeight;\n\t\t\t\t}\n\t\t\t\tif (resizeType == \"exact\")\n\t\t\t\t{\n\t\t\t\t\tvar\n\t\t\t\t\t\tratio = (sourceImageWidth / sourceImageHeight < arSize[\"width\"] / arSize[\"height\"] ? arSize[\"width\"] / sourceImageWidth : arSize[\"height\"] / sourceImageHeight),\n\t\t\t\t\t\tx = Math.max(0, Math.round(sourceImageWidth / 2 - (arSize[\"width\"] / 2) / ratio)),\n\t\t\t\t\t\ty = Math.max(0, Math.round(sourceImageHeight / 2 - (arSize[\"height\"] / 2) / ratio));\n\n\t\t\t\t\tres.bNeedCreatePicture = true;\n\t\t\t\t\tres.coeff = ratio;\n\n\t\t\t\t\tres.destin[\"width\"] = arSize[\"width\"];\n\t\t\t\t\tres.destin[\"height\"] = arSize[\"height\"];\n\n\t\t\t\t\tres.source[\"x\"] = x;\n\t\t\t\t\tres.source[\"y\"] = y;\n\t\t\t\t\tres.source[\"width\"] = Math.round(arSize[\"width\"] / ratio, 0);\n\t\t\t\t\tres.source[\"height\"] = Math.round(arSize[\"height\"] / ratio, 0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (resizeType == \"circumscribed\")\n\t\t\t\t\t{\n\t\t\t\t\t\tResizeCoeff = {\n\t\t\t\t\t\t\twidth : (width > 0 ? arSize[\"width\"] / width : 1),\n\t\t\t\t\t\t\theight: (height > 0 ? arSize[\"height\"] / height : 1)};\n\n\t\t\t\t\t\tiResizeCoeff = Math.max(ResizeCoeff[\"width\"], ResizeCoeff[\"height\"], 1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tResizeCoeff = {\n\t\t\t\t\t\t\twidth : (width > 0 ? arSize[\"width\"] / width : 1),\n\t\t\t\t\t\t\theight: (height > 0 ? arSize[\"height\"] / height : 1)};\n\n\t\t\t\t\t\tiResizeCoeff = Math.min(ResizeCoeff[\"width\"], ResizeCoeff[\"height\"], 1);\n\t\t\t\t\t\tiResizeCoeff = (0 < iResizeCoeff ? iResizeCoeff : 1);\n\t\t\t\t\t}\n\t\t\t\t\tres.bNeedCreatePicture = (iResizeCoeff != 1);\n\t\t\t\t\tres.coeff = iResizeCoeff;\n\t\t\t\t\tres.destin[\"width\"] = Math.max(1, parseInt(iResizeCoeff * sourceImageWidth));\n\t\t\t\t\tres.destin[\"height\"] = Math.max(1, parseInt(iResizeCoeff * sourceImageHeight));\n\n\t\t\t\t\tres.source[\"x\"] = 0;\n\t\t\t\t\tres.source[\"y\"] = 0;\n\t\t\t\t\tres.source[\"width\"] = sourceImageWidth;\n\t\t\t\t\tres.source[\"height\"] = sourceImageHeight;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\tdataURLToBlob : function(dataURL)\n\t\t{\n\t\t\tvar marker = ';base64,', parts, contentType, raw, rawLength;\n\t\t\tif(dataURL.indexOf(marker) == -1) {\n\t\t\t\tparts = dataURL.split(',');\n\t\t\t\tcontentType = parts[0].split(':')[1];\n\t\t\t\traw = parts[1];\n\t\t\t\treturn new Blob([raw], {type: contentType});\n\t\t\t}\n\n\t\t\tparts = dataURL.split(marker);\n\t\t\tcontentType = parts[0].split(':')[1];\n\t\t\traw = window.atob(parts[1]);\n\t\t\trawLength = raw.length;\n\n\t\t\tvar uInt8Array = new Uint8Array(rawLength);\n\n\t\t\tfor(var i = 0; i < rawLength; ++i) {\n\t\t\t\tuInt8Array[i] = raw.charCodeAt(i);\n\t\t\t}\n\n\t\t\treturn new Blob([uInt8Array], {type: contentType});\n\t\t},\n\t\tsizeof : function(obj) {\n\t\t\tvar size = 0, key;\n\t\t\tfor (key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tsize += key.length;\n\t\t\t\t\tif (typeof obj[key] == \"object\")\n\t\t\t\t\t{\n\t\t\t\t\t\tif (obj[key] === null)\n\t\t\t\t\t\t\tBX.DoNothing();\n\t\t\t\t\t\telse if (obj[key][\"size\"] > 0)\n\t\t\t\t\t\t\tsize += obj[key].size;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsize += BX.UploaderUtils.sizeof(obj[key]);\n\t\t\t\t\t}\n\t\t\t\t\telse if (typeof obj[key] == \"number\")\n\t\t\t\t\t{\n\t\t\t\t\t\tsize += obj[key].toString().length;\n\t\t\t\t\t}\n\t\t\t\t\telse if (!!obj[key] && obj[key].length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tsize += obj[key].length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn size;\n\t\t},\n\t\tFormToArray : function(form, data)\n\t\t{\n\t\t\treturn BX.ajax.prepareForm(form, data);\n\t\t},\n\t\tgetFormattedSize : function (size, precision)\n\t\t{\n\t\t\tvar a = [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\"], pos = 0;\n\t\t\twhile(size >= 1024 && pos < 4)\n\t\t\t{\n\t\t\t\tsize /= 1024;\n\t\t\t\tpos++;\n\t\t\t}\n\t\t\treturn (Math.round(size * (precision > 0 ? precision * 10 : 1) ) / (precision > 0 ? precision * 10 : 1)) +\n\t\t\t\t\" \" + BX.message(\"FILE_SIZE_\" + a[pos]);\n\t\t},\n\t\tbindEvents : function(obj, event, func)\n\t\t{\n\t\t\tvar funcs = [], ii;\n\t\t\tif (typeof func == \"string\")\n\t\t\t{\n\t\t\t\teval('funcs.push(' + func + ');');\n\t\t\t}\n\t\t\telse if (!!func[\"length\"] && func[\"length\"] > 0)\n\t\t\t{\n\t\t\t\tfor(ii = 0; ii < func.length; ii++)\n\t\t\t\t{\n\t\t\t\t\tif (typeof func[ii] == \"string\")\n\t\t\t\t\t\teval('funcs.push(' + func[ii] + ');');\n\t\t\t\t\telse\n\t\t\t\t\t\tfuncs.push(func[ii]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t\tfuncs.push(func);\n\t\t\tif (funcs.length > 0)\n\t\t\t{\n\t\t\t\tfor (ii = 0; ii < funcs.length; ii++)\n\t\t\t\t{\n\t\t\t\t\tBX.addCustomEvent(obj, event, funcs[ii]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\t\tapplyFilePart : function(file, blob)\n\t\t{\n\t\t\tif (BX.type.isDomNode(file))\n\t\t\t{\n\t\t\t\tfile.uploadStatus = statuses.done;\n\t\t\t}\n\t\t\telse if (file == blob)\n\t\t\t{\n\t\t\t\tfile.uploadStatus = statuses.done;\n\t\t\t}\n\t\t\telse if (file.blobed === true)\n\t\t\t{\n\t\t\t\tfile.uploadStatus = ((file.package + 1) >= file.packages ? statuses.done : statuses.inprogress);\n\t\t\t\tif (file.uploadStatus == statuses.inprogress)\n\t\t\t\t\tfile.package++;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tgetFilePart : function(file, MaxFilesize)\n\t\t{\n\t\t\tvar blob, chunkSize = MaxFilesize, start, end;\n\t\t\tif (BX.type.isDomNode(file))\n\t\t\t{\n\t\t\t\tblob = file;\n\t\t\t}\n\t\t\telse if (MaxFilesize <= 0 || file.size <= MaxFilesize)\n\t\t\t{\n\t\t\t\tblob = file;\n\t\t\t}\n\t\t\telse if (file['packages'] && file['packages'] <= file['package'])\n\t\t\t{\n\t\t\t\tblob = null;\n\t\t\t}\n\t\t\telse if (window.Blob || window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder)\n\t\t\t{\n\t\t\t\tif (file['packages'])\n\t\t\t\t{\n\t\t\t\t\tfile.package++;\n\t\t\t\t\tstart = file.package * chunkSize;\n\t\t\t\t\tend = start + chunkSize;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfile.packages = Math.ceil(file.size / chunkSize);\n\t\t\t\t\tfile.package = 0;\n\t\t\t\t\tstart = 0;\n\t\t\t\t\tend = chunkSize;\n\t\t\t\t}\n\n\t\t\t\tif('mozSlice' in file)\n\t\t\t\t\tblob = file.mozSlice(start, end, file.type);\n\t\t\t\telse if ('webkitSlice' in file)\n\t\t\t\t\tblob = file.webkitSlice(start, end, file.type);\n\t\t\t\telse if ('slice' in file)\n\t\t\t\t\tblob = file.slice(start, end, file.type);\n\t\t\t\telse\n\t\t\t\t\tblob = file.Slice(start, end, file.type);\n\n\t\t\t\tfor (var ii in file)\n\t\t\t\t{\n\t\t\t\t\tif (file.hasOwnProperty(ii))\n\t\t\t\t\t{\n\t\t\t\t\t\tblob[ii] = file[ii];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tblob[\"name\"] = file[\"name\"];\n\t\t\t\tblob[\"start\"] = start;\n\t\t\t\tblob[\"package\"] = file.package;\n\t\t\t\tblob[\"packages\"] = file.packages;\n\t\t\t}\n\t\t\treturn blob;\n\t\t},\n\t\tmakeAnArray : function(file, data)\n\t\t{\n\t\t\tfile = (!!file ? file : {files : [], props : {}});\n\t\t\tvar ii;\n\t\t\tfor (var jj in data)\n\t\t\t{\n\t\t\t\tif (data.hasOwnProperty(jj))\n\t\t\t\t{\n\t\t\t\t\tif (typeof data[jj] == \"object\" && data[jj].length > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tfile[jj] = (!!file[jj] ? file[jj] : []);\n\t\t\t\t\t\tfor (ii=0; ii<data[jj].length; ii++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfile[jj].push(data[jj][ii]);\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\n\t\t\t\t\t\tfor (ii in data[jj])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (data[jj].hasOwnProperty(ii))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfile[jj] = (!!file[jj] ? file[jj] : {});\n\t\t\t\t\t\t\t\tfile[jj][ii] = data[jj][ii];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn file;\n\t\t},\n\t\tappendToForm : function(fd, key, val)\n\t\t{\n\t\t\tif (!!val && typeof val == \"object\")\n\t\t\t{\n\t\t\t\tfor (var ii in val)\n\t\t\t\t{\n\t\t\t\t\tif (val.hasOwnProperty(ii))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.UploaderUtils.appendToForm(fd, key + '[' + ii + ']', val[ii]);\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\tfd.append(key, (!!val ? val : ''));\n\t\t\t}\n\t\t},\n\t\tFormData : function()\n\t\t{\n\t\t\treturn new (BX.Uploader.getInstanceName() == \"BX.UploaderSimple\" ? FormDataLocal : window.FormData);\n\t\t},\n\t\tprepareData : function(arData)\n\t\t{\n\t\t\tvar data = {};\n\t\t\tif (null != arData)\n\t\t\t{\n\t\t\t\tif(typeof arData == 'object')\n\t\t\t\t{\n\t\t\t\t\tfor(var i in arData)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (arData.hasOwnProperty(i))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar name = BX.util.urlencode(i);\n\t\t\t\t\t\t\tif(typeof arData[i] == 'object')\n\t\t\t\t\t\t\t\tdata[name] = BX.UploaderUtils.prepareData(arData[i]);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tdata[name] = BX.util.urlencode(arData[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tdata = BX.util.urlencode(arData);\n\t\t\t}\n\t\t\treturn data;\n\t\t}\n\t};\n\tvar FormDataLocal = function()\n\t{\n\t\tvar uniqueID;\n\t\tdo {\n\t\t\tuniqueID = Math.floor(Math.random() * 99999);\n\t\t} while(BX(\"form-\" + uniqueID));\n\t\tthis.local = true;\n\t\tthis.form = BX.create(\"FORM\", {\n\t\t\tprops: {\n\t\t\t\tid: \"form-\" + uniqueID,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tenctype: \"multipart/form-data\",\n\t\t\t\tencoding: \"multipart/form-data\"\n\t\t\t},\n\t\t\tstyle: {display: \"none\"}\n\t\t});\n\t\tdocument.body.appendChild(this.form);\n\t};\n\tFormDataLocal.prototype = {\n\t\tappend : function(name, val)\n\t\t{\n\t\t\tif (BX.type.isDomNode(val))\n\t\t\t{\n\t\t\t\tthis.form.appendChild(val);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.form.appendChild(\n\t\t\t\t\tBX.create(\"INPUT\", {\n\t\t\t\t\t\t\tprops : {\n\t\t\t\t\t\t\t\ttype : \"hidden\",\n\t\t\t\t\t\t\t\tname : name,\n\t\t\t\t\t\t\t\tvalue : val\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\tBX.UploaderUtils.slice = function(file, start, end)\n\t{\n\t\tvar blob = null;\n\t\tif('mozSlice' in file)\n\t\t\tblob = file.mozSlice(start, end);\n\t\telse if ('webkitSlice' in file)\n\t\t\tblob = file.webkitSlice(start, end);\n\t\telse if ('slice' in file)\n\t\t\tblob = file.slice(start, end);\n\t\telse\n\t\t\tblob = file.Slice(start, end, file.type);\n\t\treturn blob;\n\t};\n\tBX.UploaderUtils.readFile = function (file, callback, method)\n\t{\n\t\tif (window[\"FileReader\"])\n\t\t{\n\t\t\tvar fileReader = new FileReader();\n\t\t\tfileReader.onload = fileReader.onerror = callback;\n\t\t\tmethod = (method || 'readAsDataURL');\n\t\t\tif (fileReader[method])\n\t\t\t{\n\t\t\t\tfileReader[method](file);\n\t\t\t\treturn fileReader;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n}(window));\n","import '../queue';\nimport '../common';\n\nconst UploaderQueue = window.BX[\"UploaderQueue\"];\nconst UploaderUtils = window.BX[\"UploaderUtils\"];\n\nexport {UploaderQueue, UploaderUtils};","import {Type, Runtime, Loc, Dom, Event} from 'main.core';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport type {UploaderType, UploadQueueType} from \"./types\";\nimport DropZone from './dropzone';\nimport Streams from './streams';\nimport Options from './options';\nimport Package from './package';\nimport {appendToForm, convertFormDataToObject} from './utils';\nimport {UploaderQueue, UploaderUtils} from './bootstrap';\nimport PackageFile from \"./package-file\";\n\nexport default class Uploader {\n\tstatic repo = new Map();\n\tstatic justCounter = 0;\n\n\tfileInput: ?Element = null;\n\tform: ?Element = null;\n\n\tid: string;\n\tcontrolId: string;\n\tCID: string;\n\n\tuploadFileUrl: string;\n\tlimits = {};\n\n\tpackages: Map = new Map();\n\n\tconstructor(params: UploaderType)\n\t{\n\t\tlet {input, uploadFileUrl, id, CID, controlId, dropZone, placeHolder, events} = params;\n\n\t\tif (Type.isStringFilled(uploadFileUrl))\n\t\t{\n\t\t\tthis.uploadFileUrl = uploadFileUrl;\n\t\t}\n\t\tinput = Type.isStringFilled(input) ? document.getElementById(input): input;\n\t\tif (Type.isDomNode(input))\n\t\t{\n\t\t\tthis.fileInput = input;\n\t\t\tthis.form = input.form;\n\t\t\tthis.uploadFileUrl = (this.uploadFileUrl || this.form.getAttribute('action'));\n\t\t}\n\t\telse if (input !== null)\n\t\t{\n\t\t\tRuntime.debug(Loc.getMessage('UPLOADER_INPUT_IS_NOT_DEFINED'));\n\t\t\treturn;\n\t\t}\n\t\tif (!this.uploadFileUrl)\n\t\t{\n\t\t\tRuntime.debug(Loc.getMessage('UPLOADER_ACTION_URL_NOT_DEFINED'))\n\t\t\treturn;\n\t\t}\n\n\t\tthis.constructor.justCounter++;\n\t\tconst uniqueId = UploaderUtils.getId();\n\t\tthis.id = Type.isStringFilled(id) ? id: ['bitrixUploaderID', uniqueId].join('');\n\t\tthis.CID = Type.isStringFilled(CID) ? CID: ('CID' + uniqueId); // this is a security id\n\t\tthis.controlId = (controlId || 'bitrixUploader'); // this is a control id can be lice control name\n\n\t\tthis.onChange = this.onChange.bind(this);\n\n\t\tthis.setLimits(params);\n\t\tthis.initParams(params);\n\t\tthis.init(this.fileInput);\n\t\tthis.dropZone = this.initDropZone(dropZone);\n\t\tthis.bindUserEvents(events);\n\t\tthis.initFilesQueue(params);\n\t\tBX.onCustomEvent(window, 'onUploaderIsInited', [this.id, this]);\n\n\t\tUploader.repo.set(this.id, this);\n\t}\n\n\tsetLimits({uploadMaxFilesize, uploadFileWidth, uploadFileHeight, allowUpload, allowUploadExt})\n\t{\n\t\tthis.limits = {\n\t\t\tuploadMaxFilesize: uploadMaxFilesize || 0,\n\t\t\tuploadFileWidth: uploadFileWidth || 0,\n\t\t\tuploadFileHeight: uploadFileHeight || 0,\n\t\t\tuploadFileExt: '',\n\t\t\tuploadFile: this.fileInput ? this.fileInput.getAttribute('accept') : '',\n\t\t\tallowUpload: allowUpload, //compatibility\n\t\t\tallowUploadExt: allowUploadExt //compatibility\n\t\t};\n\t\tconst acceptAttribute = [];\n\t\tif (Type.isStringFilled(this.limits['uploadFile']))\n\t\t{\n\t\t\tacceptAttribute.push(this.limits['uploadFile']);\n\t\t}\n\t\tif (allowUpload === 'I')\n\t\t{\n\t\t\tacceptAttribute.push('image/*')\n\t\t}\n\n\t\tif (Type.isStringFilled(allowUploadExt))\n\t\t{\n\t\t\tconst separator = allowUploadExt.indexOf(',') >= 0 ? ',' : ' ';\n\t\t\tconst extensions = [];\n\t\t\tallowUploadExt.split(separator).forEach((extension) => {\n\t\t\t\textensions.push(extension.trim().replace('.', ''));\n\t\t\t\tacceptAttribute.push('.' + extension.trim().replace('.', ''));\n\t\t\t});\n\t\t\tif (extensions)\n\t\t\t{\n\t\t\t\tthis.limits[\"uploadFileExt\"] = extensions;\n\t\t\t}\n\t\t}\n\t\tthis.limits['uploadFile'] = acceptAttribute.join(', ');\n\t}\n\n\tinitParams({uploadMethod, uploadFormData, filesInputMultiple,\n\t\t uploadInputName, uploadInputInfoName,\n\t\t deleteFileOnServer, pasteFileHashInForm})\n\t{\n\t\t// Limits\n\t\tthis.params = {\n\t\t\tfilesInputMultiple: (this.fileInput && this.fileInput[\"multiple\"] || filesInputMultiple ? \"multiple\" : false),\n\t\t\tuploadFormData: (uploadFormData === \"N\" ? \"N\" : \"Y\"),\n\t\t\tuploadMethod: (uploadMethod === \"immediate\" ? \"immediate\" : \"deferred\"),\n\t\t\tuploadInputName: Type.isStringFilled(uploadInputName) ? uploadInputName : 'bxu_files',\n\t\t\tuploadInputInfoName: Type.isStringFilled(uploadInputInfoName) ? uploadInputInfoName : 'bxu_info',\n\t\t\tdeleteFileOnServer: !(deleteFileOnServer === false || deleteFileOnServer === \"N\"),\n\t\t\t//to insert hash into the form\n\t\t\tfilesInputName: (this.fileInput && this.fileInput[\"name\"] ? this.fileInput[\"name\"] : \"FILES\"),\n\t\t\tpasteFileHashInForm: !(pasteFileHashInForm === false || pasteFileHashInForm === \"N\")\n\t\t};\n\t}\n\n\tinit(fileInput)\n\t{\n\t\tif (fileInput === null)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\tif (Type.isDomNode(fileInput))\n\t\t{\n\t\t\tconst newFileInput = this.makeFileInput(fileInput);\n\t\t\tif (fileInput === this.fileInput)\n\t\t\t{\n\t\t\t\tthis.fileInput = newFileInput;\n\t\t\t}\n\n\t\t\tif (newFileInput)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tinitDropZone(dropZoneNode: ?Element): Object\n\t{\n\t\tconst dropZone = new DropZone(dropZoneNode);\n\t\tEventEmitter.subscribe(dropZone, Options.getEventName('caught'), ({data}) => {\n\t\t\tthis.onChange(data);\n\t\t});\n\t\tEventEmitter.subscribe(this, Options.getEventName('destroy'), () => {\n\t\t\tEventEmitter.unsubscribeAll(dropZone, Options.getEventName('caught'));\n\t\t\tdropZone.destroy();\n\t\t});\n\t\treturn dropZone;\n\t}\n\n\tinitFilesQueue({fields, copies, placeHolder, showImage, sortItems, thumb, queueFields})\n\t{\n\t\tconst params = {\n\t\t\tfields: queueFields && queueFields['fields'] ? queueFields['fields'] : fields,\n\t\t\tcopies: queueFields && queueFields['copies'] ? queueFields['copies'] : copies,\n\t\t\tplaceHolder: queueFields && queueFields['placeHolder'] ? queueFields['placeHolder'] : placeHolder,\n\t\t\tshowImage: queueFields && queueFields['showImage'] ? queueFields['showImage'] : showImage,\n\t\t\tsortItems: queueFields && queueFields['sortItems'] ? queueFields['sortItems'] : sortItems,\n\t\t\tthumb: queueFields && queueFields['thumb'] ? queueFields['thumb'] : thumb,\n\t\t}\n\n\t\tthis.queue = new UploaderQueue(params, this.limits, this);\n\t}\n\n\tbindUserEvents(events:?Object)\n\t{\n\t\tif (!Type.isPlainObject(events))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let eventName in events)\n\t\t{\n\t\t\tif (events.hasOwnProperty(eventName))\n\t\t\t{\n\t\t\t\tEventEmitter.subscribe(this, eventName, events[eventName]);\n\t\t\t}\n\t\t}\n\t}\n\n\tmakeFileInput(oldFileInput)\n\t{\n\t\tif (!Type.isDomNode(oldFileInput))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\tEvent.unbindAll(oldFileInput, 'change');\n\n\t\tconst newFileInput = oldFileInput.cloneNode(true);\n\t\tnewFileInput.value = '';\n\t\tnewFileInput.setAttribute('name', (this.params[\"uploadInputName\"] + '[]'));\n\t\tnewFileInput.setAttribute('multiple', this.params[\"filesInputMultiple\"]);\n\t\tnewFileInput.setAttribute('accept', this.limits[\"uploadFile\"]);\n\t\toldFileInput.parentNode.replaceChild(newFileInput, oldFileInput);\n\n\t\tBX.onCustomEvent(this, \"onFileinputIsReinited\", [newFileInput, this]);\n\n\t\tEvent.bind(newFileInput, \"change\", this.onChange);\n\n\t\treturn newFileInput;\n\t}\n\n\tonChange(event)\n\t{\n\t\tif (!event)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (event['preventDefault'])\n\t\t{\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tif (event['stopPropagation'])\n\t\t{\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tlet files = []\n\t\tif (Type.isArray(event))\n\t\t{\n\t\t\tfiles = event;\n\t\t}\n\t\telse if (Type.isObject(event))\n\t\t{\n\t\t\tif (event['target'])\n\t\t\t{\n\t\t\t\tlet fileInput = event['target'];\n\t\t\t\tfiles = fileInput.files;\n\t\t\t\tif (!fileInput || fileInput.disabled)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tBX.onCustomEvent(this, \"onFileinputIsChanged\", [fileInput, this]);\n\t\t\t\tthis.init(fileInput);\n\t\t\t}\n\t\t\telse if (event['files'])\n\t\t\t{\n\t\t\t\tfiles = event['files'];\n\t\t\t}\n\t\t}\n\n\t\tthis.onAttach(files);\n\t\treturn false;\n\t}\n\n\tonAttach(files, nodes, check: boolean)\n\t{\n\t\tif (!files || !files['length'])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tcheck = (check !== false);\n\t\tfiles = [...files];\n\t\tnodes = nodes && Type.isArray(nodes) ? [...nodes] : [];\n\n\t\tBX.onCustomEvent(this, \"onAttachFiles\", [files, nodes, this]);\n\n\t\tlet added = false;\n\n\t\t[...files].forEach((file, index) => {\n\n\t\t\tlet ext = '';\n\t\t\tlet type = (file['type'] || '').toLowerCase();\n\n\t\t\tif (Type.isDomNode(file) && file.value)\n\t\t\t{\n\t\t\t\text = (file.value.name || '').split('.').pop();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\text = (file['name'] || file['tmp_url'] || '').split('.').pop();\n\t\t\t\tif (ext.indexOf('?') > 0)\n\t\t\t\t{\n\t\t\t\t\text = ext.substr(0, ext.indexOf('?'));\n\t\t\t\t}\n\t\t\t}\n\t\t\text = ext.toLowerCase();\n\n\t\t\tif (check)\n\t\t\t{\n\t\t\t\tconst errors = [];\n\t\t\t\tif (\n\t\t\t\t\tthis.limits['uploadFile'].indexOf('image/') >= 0\n\t\t\t\t\t&&\n\t\t\t\t\t(\n\t\t\t\t\t\ttype.indexOf('image/') < 0\n\t\t\t\t\t\t&&\n\t\t\t\t\t\tOptions.getImageExtensions().indexOf(ext) < 0\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\terrors.push('File type is not an image like.');\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.limits['uploadFileExt'].length > 0\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tif (this.limits['uploadFileExt'].indexOf(ext) < 0)\n\t\t\t\t\t{\n\t\t\t\t\t\terrors.push(`File extension ${ext} is in ${this.limits['uploadFileExt']}`);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\terrors.pop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tthis.limits['uploadMaxFilesize'] > 0\n\t\t\t\t\t&&\n\t\t\t\t\tfile.size > this.limits['uploadMaxFilesize']\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\terrors.push(`File size ${file.size} is bigger than ${this.limits['uploadMaxFilesize']}`);\n\t\t\t\t}\n\t\t\t\tif (errors.length > 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (String['normalize'])\n\t\t\t{\n\t\t\t\tfile.name = String(file.name).normalize();\n\t\t\t}\n\n\t\t\tBX.onCustomEvent(this, \"onItemIsAdded\", [file, (nodes[index] || null), this]);\n\t\t\tadded = true;\n\t\t});\n\t\tif (added && this.params[\"uploadMethod\"] === \"immediate\")\n\t\t{\n\t\t\tthis.submit();\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetFormData(): FormData\n\t{\n\t\tlet formData = new FormData(this.params[\"uploadFormData\"] === \"Y\" && this.form ? this.form : undefined);\n\t\tlet entries = formData.entries();\n\t\tlet entry;\n\t\twhile((entry = entries.next()) && entry.done === false)\n\t\t{\n\t\t\tconst [name] = entry.value;\n\n\t\t\tif (name.indexOf(this.params[\"filesInputName\"]) === 0\n\t\t\t\t|| name.indexOf(this.params[\"uploadInputInfoName\"]) === 0\n\t\t\t\t|| name.indexOf(this.params[\"uploadInputName\"]) === 0\n\t\t\t)\n\t\t\t{\n\t\t\t\tformData.delete(name);\n\t\t\t}\n\t\t}\n\n\t\tformData.append('AJAX_POST', 'Y');\n\t\tformData.append('USER_ID', Loc.getMessage('USER_ID'));\n\t\tformData.append('sessid', BX.bitrix_sessid());\n\t\tif (BX.message.SITE_ID)\n\t\t{\n\t\t\tformData.append('SITE_ID', BX.message.SITE_ID);\n\t\t}\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[controlId]', this.controlId);\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[CID]', this.CID);\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[uploadInputName]', this.params[\"uploadInputName\"]);\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[version]', Options.getVersion());\n\t\treturn formData;\n\t}\n\n\tsubmit()\n\t{\n\t\t//region Compatibility\n\t\tif (this.queue.itForUpload.length <= 0)\n\t\t{\n\t\t\tBX.onCustomEvent(this, 'onStart', [null, {filesCount : 0}, this]);\n\t\t\tBX.onCustomEvent(this, 'onDone', [null, null, {filesCount : 0}]);\n\t\t\tBX.onCustomEvent(this, 'onFinish', [null, null, {filesCount : 0}]);\n\t\t\treturn;\n\t\t}\n\t\t//endregion\n\n\t\tconst files = Object.values(this.queue.itForUpload.items);\n\t\tconst formData = this.getFormData();\n\n\t\t//region Here we can change formData\n\t\tconst changedData = {};\n\t\tconst buffer1 = {\n\t\t\tpost: {data: changedData, size: 0, filesCount: files.length}, //compatibility field\n\t\t\tfilesCount: files.length,\n\t\t};\n\t\tconst eventOnPackageIsInitialized = new BaseEvent();\n\t\teventOnPackageIsInitialized.setCompatData([buffer1, this.queue.itForUpload]);\n\t\teventOnPackageIsInitialized.setData({\n\t\t\tformData: formData,\n\t\t\tdata: changedData,\n\t\t\tfiles: files\n\t\t});\n\n\t\tEventEmitter.emit(this, 'onPackageIsInitialized', eventOnPackageIsInitialized);\n\t\tappendToForm(formData, buffer1.post.data);\n\t\tif (buffer1.post.data !== changedData)\n\t\t{\n\t\t\tappendToForm(formData, changedData);\n\t\t}\n\t\t//endregion\n\n\t\tconst packageId = 'pIndex' + (new Date().valueOf() + Math.round(Math.random() * 1000000));\n\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[packageIndex]', packageId);\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[mode]', 'upload');\n\t\tformData.append(this.params[\"uploadInputInfoName\"] + '[filesCount]', files.length);\n\t\tif (this.packages.size <= 0)\n\t\t{\n\t\t\tconsole.group('Upload');\n\t\t}\n\t\tconsole.log('1. Create a new Package');\n\n\t\tconst packItem = new Package({\n\t\t\tid: packageId,\n\t\t\tformData: formData,\n\t\t\tfiles: files,\n\t\t\tuploadFileUrl : this.uploadFileUrl,\n\t\t\tuploadInputName: this.params[\"uploadInputName\"],\n\t\t});\n\n\t\tthis.queue.itForUpload = new UploaderUtils.Hash();\n\n\t\tconst eventOnStart = new BaseEvent();\n\t\teventOnStart.setCompatData([packageId, Object.assign(\n\t\t\t{post: {data: packItem.data, filesCount: files.length}},\n\t\t\tpackItem), this]);\n\t\teventOnStart.setData({package: packItem});\n\t\tEventEmitter.emit(this, 'onStart', eventOnStart);\n\n\t\tthis.packages.set(packItem.getId(), packItem);\n\t\tEventEmitter.emit(this, 'onBusy');\n\t\tpackItem.subscribeOnce('done', ({target: p, data: {status}}) => {\n\t\t\tconst evDone = new BaseEvent();\n\t\t\tevDone.setCompatData([{}, packageId, packItem, packItem.getServerResponse()]);\n\t\t\tevDone.setData({package: packItem, response: packItem.getServerResponse()});\n\t\t\tEventEmitter.emit(this, 'onDone', evDone);\n\t\t\t// region Compatibility\n\t\t\tif (status === 'failed')\n\t\t\t{\n\t\t\t\tEventEmitter.emit(this, 'onError', new BaseEvent({compatData: [{}, packageId, packItem.getServerResponse()]}));\n\t\t\t}\n\t\t\t// endregion Compatibility\n\t\t\tthis.packages.delete(p.getId());\n\t\t\tif (this.packages.size <= 0)\n\t\t\t{\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tconst ev = new BaseEvent();\n\t\t\t\t\tev.setCompatData([{}, packageId, packItem, packItem.getServerResponse()]);\n\t\t\t\t\tev.setData({package: packItem, response: packItem.getServerResponse()});\n\t\t\t\t\tEventEmitter.emit(this, 'onFinish', ev);\n\t\t\t\t\tconsole.groupEnd('Upload');\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tpackItem.subscribe('fileIsUploaded', ({data: {itemId, item, response}}) => {\n\t\t\tthis.queue.itUploaded.setItem(itemId, item);\n\t\t\tBX.onCustomEvent(this, 'onFileIsUploaded', [itemId, item, response]);\n\t\t\tBX.onCustomEvent(item, 'onUploadDone', [item, response, this, packItem.getId()]);\n\t\t});\n\t\tpackItem.subscribe('fileIsErrored', ({data: {itemId, item, response}}) => {\n\t\t\tthis.queue.itFailed.setItem(itemId, item);\n\t\t\tBX.onCustomEvent(this, 'onFileIsUploadedWithError', [itemId, item, response, this, packItem.getId()]);\n\t\t\tBX.onCustomEvent(item, 'onUploadError', [item, response, this, packItem.getId()]);\n\t\t});\n\t\tpackItem.subscribe('fileIsInProgress', ({data: {item, percent}}) => {\n\t\t\tBX.onCustomEvent(item, 'onUploadProgress', [item, percent, this, packItem.getId()]);\n\t\t});\n\n\t\tif (packItem.prepare())\n\t\t{\n\t\t\tfiles.forEach((item: BX.UploaderFile) => {\n\t\t\t\tBX.onCustomEvent(item, 'onUploadStart', [item, 0, this, packItem.getId()]);\n\t\t\t});\n\n\t\t\tStreams.addPackage(packItem);\n\t\t}\n\t}\n\n\tlog(text)\n\t{\n\n\t}\n\n\tdestruct()\n\t{\n\t\tEventEmitter.emit(this, Options.getEventName('destroy'));\n\t\tdelete this.dropZone;\n\t}\n/*region Compatbility */\n\tget controlID()\n\t{\n\t\treturn this.controlId;\n\t}\n\n\tget dialogName()\n\t{\n\t\treturn \"BX.Uploader\";\n\t}\n\n\tget length(): number\n\t{\n\t\treturn this.queue.itForUpload.length;\n\t}\n\n\tget streams()\n\t{\n\t\tif (!this['#_streams'])\n\t\t{\n\t\t\tthis['#_streams'] = {\n\t\t\t\tpackages: {\n\t\t\t\t\tgetItem: (id) => {\n\t\t\t\t\t\treturn this.packages.get(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn this['#_streams'];\n\t}\n/*endregion*/\n\n\tgetItem(id)\n\t{\n\t\treturn this.queue.getItem(id);\n\t}\n\n\tgetItems()\n\t{\n\t\treturn this.queue.items;\n\t}\n\n\trestoreItems()\n\t{\n\t\t//Todo check it\n\t\tthis.queue.restoreFiles.apply(this.queue, arguments);\n\t}\n\n\tclear()\n\t{\n\t\tvar item;\n\t\twhile((item = this.queue.items.getFirst()) && item)\n\t\t{\n\t\t\titem.deleteFile();\n\t\t}\n\t}\n\n\tstatic getById(id) {\n\t\treturn this.repo.get(id);\n\t}\n\n\tstatic getInstanceById(id) {\n\t\treturn this.repo.get(id);\n\t}\n\n\tstatic getInstance = function(params)\n\t{\n\t\tBX.onCustomEvent(window, \"onUploaderIsAlmostInited\", ['BX.Uploader', params]);\n\t\treturn new this(params);\n\t}\n\n\tstatic getInstanceName()\n\t{\n\t\treturn 'BX.Uploader';\n\t}\n}\n","import Uploader from \"./uploader\";\n\nexport default class Manager {\n\tstatic getById(id) {\n\t\treturn Uploader.getById(id);\n\t}\n}\n"],"names":["Options","eventName","getEventNamespace","join","deltaTime","size","defaultSettings","sizes","push","Math","ceil","min","max","key","currentPostSize","phpPostMinSize","phpUploadMaxFilesize","test","Loc","getMessage","phpMaxFileUploads","phpPostMaxSize","estimatedTimeForUploadFile","maxSize","getMaxSize","parseInt","ready","preparing","inProgress","done","error","stopped","removed","restored","errored","DropZone","dropZoneNode","Type","isStringFilled","document","getElementById","isDomNode","BX","DD","ajax","FormData","isSupported","initialize","dndObject","dropFiles","supported","handlers","compatData","files","e","length","replaceFileArray","fileCopies","item","i","entry","isFile","EventEmitter","emit","getEventName","dragEnter","isFileTransfer","DIV","classList","add","onCustomEvent","dragLeave","remove","subscribe","unsubscribeAll","buildAjaxPromiseToRestoreCsrf","config","withoutRestoringCsrf","originalConfig","Object","assign","request","onrequeststart","xhr","promise","then","response","isPlainObject","csrfProblem","errors","forEach","code","customData","csrf","message","headers","filter","header","name","value","bitrix_sessid","assetsLoaded","Promise","fulfill","catch","reason","data","String","indexOf","getAllResponseHeaders","trim","split","headerMap","line","parts","shift","toLowerCase","timeoutSec","p","setTimeout","ajaxReject","status","hasOwnProperty","reject","ajaxRejectData","Stream","setEventNamespace","onprogress","bind","onprogressupload","url","formData","Date","getTime","totalSize","method","dataType","timeout","getMaxTimeToUploading","preparePost","SITE_ID","map","procent","lengthComputable","loaded","calibratePostSize","console","log","PackageFile","pack","id","getId","fileStatus","isReadyToPack","preparationStatus","constructor","preparationStatusIsDone","copiesCount","getThumbs","subscribeOnce","BaseEvent","packStatus","uploadStatus","percentToIncrement","packPercent","result","isRemoved","markAsPacked","isPacked","currentBlob","copyName","getProps","Blob","packingPercent","blob","UploaderUtils","getFilePart","getUploadLimits","packages","package","start","file","hash","getFormDataSize","entries","filesCount","formSize","next","toString","convertFormDataToObject","names","substring","replace","n","nn","pointer","copyFormToForm","fromData1","formData2","append","appendToForm","ob","prefix","ii","Package","uploadFileUrl","uploadInputName","Set","Map","initFiles","filesVirgin","doneStreaming","progressStreaming","fileItem","uploadFile","set","packSize","decrementMaxSize","stream","startStreaming","unsubscribe","uploadItemId","uploadItem","get","isReady","makeAPack","packFile","tmpFormData","tmpFormSize","tmpFilesCount","filesInprogress","delete","bindStream","doStreaming","groupEnd","clearTimeout","makeAPackTimeout","firstValue","checkAndDone","send","fromData","group","target","parseResponse","percent","itemId","currentPercent","merge","ar1","ar2","jj","fileResponse","clear","unbindStream","errorText","handler","serverResponse","Streams","maxInstances","_classStaticPrivateFieldSpecGet","window","Event","event","confirmationMessage","returnValue","destroy","newPack","addPackage","unbind","run","Symbol","statuses","inprogress","failed","changed","uploaded","UploaderQueue","params","limits","caller","dialogName","uploadMaxFilesize","uploadFileWidth","uploadFileHeight","placeHolder","showImage","sortItems","fileFields","uploader","itForUpload","Hash","items","itUploaded","itFailed","thumb","tagName","className","addCustomEvent","delegate","addItem","deleteItem","reinitItem","prototype","showError","text","being","isImage","type","copies","fields","res","UploaderImage","UploaderFile","children","node","itemStatus","setItem","thumbNode","setAttribute","makeThumb","create","attrs","isNotEmptyString","replaceFunction","str","tdParams","tdInnerHTML","td","insertCell","colspan","accesskey","contenteditable","contextmenu","dir","hidden","lang","spellcheck","style","tabindex","title","translate","param","innerHTML","pop","regex","data1","adjust","_onbxdragstart","onbxdragstart","_onbxdragstop","onbxdragstop","_onbxdrag","onbxdrag","_onbxdraghout","onbxdraghout","_onbxdestdraghover","onbxdestdraghover","_onbxdestdraghout","onbxdestdraghout","_onbxdestdragfinish","onbxdestdragfinish","addClass","jsDD","registerObject","registerDest","inputs","findChild","props","eventCancelBubble","appendChild","getItem","proxy_context","getAttribute","template","RegExp","__dragCopyDiv","position","zIndex","width","clientWidth","html","__dragCopyPos","pos","body","c","c1","it","canvas","cloneNode","parentNode","replaceChild","getContext","drawImage","removeClass","removeChild","x","y","div","deltaX","left","deltaY","top","currentNode","hasAttribute","hasItem","hasClass","obj","childNodes","act","buff","j","number","nextSibling","removeItem","insertBeforeItem","insertBefore","onmousedown","__bxpos","arObjects","__bxddid","arDestinations","__bxddeid","unbindAll","firstChild","getFirst","restoreFiles","restoreErrored","startAgain","reset","copy","erroredFile","getNext","UploaderLog","UploaderDebug","valueOf","round","random","arguments","d","order","isArray","getIds","getQueue","util","array_search","getByOrder","in_key","tmp_value","deleteFromArray","unshiftItem","in_value","unshift","after_key","splice","getPrev","setPointer","getLast","getFileNameOnly","delimiter","lastIndexOf","finish","isImageExt","ext","isNumber","substr","scaleImage","arSourceSize","arSize","resizeType","sourceImageWidth","sourceImageHeight","height","bNeedCreatePicture","source","destin","DoNothing","ResizeCoeff","iResizeCoeff","ratio","coeff","dataURLToBlob","dataURL","marker","contentType","raw","rawLength","atob","uInt8Array","Uint8Array","charCodeAt","sizeof","FormToArray","form","prepareForm","getFormattedSize","precision","a","bindEvents","func","funcs","eval","applyFilePart","blobed","MaxFilesize","chunkSize","end","MozBlobBuilder","WebKitBlobBuilder","BlobBuilder","mozSlice","webkitSlice","slice","Slice","makeAnArray","fd","val","Uploader","getInstanceName","FormDataLocal","prepareData","arData","urlencode","uniqueID","floor","local","enctype","encoding","display","readFile","callback","fileReader","FileReader","onload","onerror","input","CID","controlId","dropZone","events","fileInput","Runtime","debug","justCounter","uniqueId","onChange","setLimits","initParams","init","initDropZone","bindUserEvents","initFilesQueue","repo","allowUpload","allowUploadExt","uploadFileExt","acceptAttribute","separator","extensions","extension","uploadMethod","uploadFormData","filesInputMultiple","uploadInputInfoName","deleteFileOnServer","pasteFileHashInForm","filesInputName","newFileInput","makeFileInput","queueFields","queue","oldFileInput","preventDefault","stopPropagation","isObject","disabled","onAttach","nodes","check","added","index","getImageExtensions","normalize","submit","undefined","getVersion","values","getFormData","changedData","buffer1","post","eventOnPackageIsInitialized","setCompatData","setData","packageId","packItem","eventOnStart","evDone","getServerResponse","ev","prepare","apply","deleteFile","Manager","getById"],"mappings":"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"}