{"version":3,"file":"CustomField.min.js","sources":["CustomField.js"],"sourcesContent":["(function (w, $, _) {\r\n 'use strict';\r\n\r\n var labels = w.customFieldsMetadata;\r\n var _plupload = null;\r\n\r\n function removeFiles(fileIds) {\r\n return $.ajax({\r\n url: w.R + 'Handlers/ArchiveData.ashx',\r\n type: 'POST',\r\n data: { action: 'delete', itemIds: JSON.stringify(fileIds) }\r\n });\r\n };\r\n\r\n function init() {\r\n $('.customfield-fileupload').each(function () {\r\n const $uploadedFileIdsHiddenInput = $(this);\r\n const $fileUploaderContainer = $uploadedFileIdsHiddenInput.parent();\r\n const customFieldData = $uploadedFileIdsHiddenInput.data('customfield') || { label: $fileUploaderContainer.find('.customFieldLabel').text()};\r\n const customFieldName = customFieldData.label;\r\n const uploaderParams = $uploadedFileIdsHiddenInput.data('uploaderparams') || {};\r\n const initialValues = $uploadedFileIdsHiddenInput.val();\r\n let uploadedFiles = initialValues ? _.map(initialValues.split(','), function (initVal) { return parseInt(initVal); }) : [];\r\n\r\n function $buildFileItem(fileInfo) {\r\n const $fileInfoLinkContainer = $('
  • ', {\r\n 'id': 'uploadedfile_' + fileInfo.itemID,\r\n 'class': 'fileupload-file-uploaded'\r\n });\r\n\r\n let $fileInfo;\r\n if (fileInfo.fileSize > 0) {\r\n $fileInfo = $('', {\r\n 'href': w.R + 'ViewFile.aspx?ItemID=' + fileInfo.itemID,\r\n 'target': '_blank',\r\n 'class': 'file-name',\r\n 'text': fileInfo.fileName + ' (' + _plupload.formatSize(fileInfo.fileSize) + ')'\r\n });\r\n } else {\r\n $fileInfo = $('', {\r\n 'text': fileInfo.fileName + ': ID=' + fileInfo.itemID\r\n });\r\n\r\n $fileInfoLinkContainer.addClass('filenotfound');\r\n }\r\n\r\n const $deleteButton = $('', {\r\n 'class': 'glyphicon glyphicon-trash ml10 delete-file',\r\n 'href': '#',\r\n 'text': 'X',\r\n 'data': {\r\n fileId: fileInfo.itemID\r\n },\r\n 'click': function(evt) {\r\n evt.preventDefault();\r\n\r\n const $this = $(this);\r\n const $fileItem = $this.closest('.fileupload-file-uploaded');\r\n const fileId = $this.data('fileId');\r\n const fileRemovedCallback = function() {\r\n $fileItem.remove();\r\n setUploadedFiles(_.without(uploadedFiles, fileId));\r\n };\r\n\r\n if ($fileItem.hasClass('filenotfound')) {\r\n fileRemovedCallback();\r\n } else {\r\n if (fileId) {\r\n $.when(removeFiles([fileId]))\r\n .done(fileRemovedCallback)\r\n .fail(function() {\r\n w.PubSub.publish('notification.error', labels.failedToRemoveFiles + ' ' + fileId);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n $fileInfoLinkContainer.append($fileInfo, $deleteButton);\r\n\r\n return $fileInfoLinkContainer;\r\n }\r\n\r\n function setUploadedFiles(newUploadedFiles) {\r\n uploadedFiles = newUploadedFiles;\r\n $uploadedFileIdsHiddenInput.val(uploadedFiles.join(','));\r\n }\r\n\r\n const $fileListContainer = $('