diff --git a/Resources/public/js/MultiFileUpload.module.js b/Resources/public/js/MultiFileUpload.module.js index 09464d95..2e091ba6 100644 --- a/Resources/public/js/MultiFileUpload.module.js +++ b/Resources/public/js/MultiFileUpload.module.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.MultiFileUpload=t(require("react"),require("prop-types")):(e.eZ=e.eZ||{},e.eZ.modules=e.eZ.modules||{},e.eZ.modules.MultiFileUpload=t(e.React,e.PropTypes))}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=110)}({0:function(t,i){t.exports=e},1:function(e,i){e.exports=t},11:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=l(i(0)),o=l(i(1));i(12);var a=l(i(4));function l(e){return e&&e.__esModule?e:{default:e}}const s=e=>{const t={className:"c-tooltip-popup",hidden:!e.visible};return n.default.createElement("div",t,n.default.createElement("div",{className:"c-tooltip-popup__header"},n.default.createElement("div",{className:"c-tooltip-popup__title"},e.title),n.default.createElement("div",{className:"c-tooltip-popup__close",onClick:e.onClose},n.default.createElement(a.default,{name:"discard"}))),n.default.createElement("div",{className:"c-tooltip-popup__content"},e.children))};s.propTypes={title:o.default.string.isRequired,children:o.default.node.isRequired,visible:o.default.bool.isRequired,onClose:o.default.func},s.defaultProps={onClose:()=>{}},t.default=s},110:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t!e)}}componentDidMount(){this.manageDropEvent()}componentDidUpdate(){this.manageDropEvent()}manageDropEvent(){var e=this.state;const t=e.uploadDisabled,i=e.popupVisible,n=e.itemsToUpload;t||i||n.length||(window.addEventListener("drop",this.handleDropOnWindow,!1),window.addEventListener("dragover",this.preventDefaultAction,!1))}hidePopup(){this.setState(e=>Object.assign({},e,{popupVisible:!1})),this.props.onPopupClose(this._itemsUploaded)}showUploadPopup(){this.setState(e=>Object.assign({},e,{popupVisible:!0,itemsToUpload:[]}))}handleAfterUpload(e){this._itemsUploaded=e}handleDropOnWindow(e){this.preventDefaultAction(e);const t=this.processUploadedFiles(e);this.state.allowDropOnWindow&&t.length&&(window.removeEventListener("drop",this.handleDropOnWindow,!1),window.removeEventListener("dragover",this.preventDefaultAction,!1),this.setState(e=>Object.assign({},e,{itemsToUpload:t,popupVisible:!0,allowDropOnWindow:!1})))}extractDroppedFilesList(e){let t;return t=e.nativeEvent?e.nativeEvent.dataTransfer||e.nativeEvent.target:e.dataTransfer}processUploadedFiles(e){const t=this.extractDroppedFilesList(e);return Array.from(t.files).map(e=>({id:Math.floor(Math.random()*Date.now()),file:e}))}preventDefaultAction(e){e.preventDefault(),e.stopPropagation()}renderBtn(){if(!this.props.withUploadButton)return null;const e=this.state.uploadDisabled,t={className:"m-mfu__btn--upload",title:Translator.trans("multi_file_upload_open_btn.label",{},"multi_file_upload"),onClick:this.showUploadPopup,type:"button"};return e&&(delete t.onClick,t.disabled=!0),a.default.createElement("button",t,a.default.createElement("svg",{className:"ez-icon ez-icon--light ez-icon--small-medium"},a.default.createElement("use",{xlinkHref:"/bundles/ezplatformadminui/img/ez-icons.svg#upload"})))}renderPopup(){if(!this.state.popupVisible)return null;const e=n({},this.props,{visible:!0,onClose:this.hidePopup,itemsToUpload:this.state.itemsToUpload,onAfterUpload:this.handleAfterUpload,preventDefaultAction:this.preventDefaultAction,processUploadedFiles:this.processUploadedFiles});return a.default.createElement(s.default,e)}render(){return a.default.createElement("div",{className:"m-mfu"},this.renderBtn(),this.renderPopup())}}t.default=u,u.propTypes={adminUiConfig:l.default.shape({multiFileUpload:l.default.shape({defaultMappings:l.default.arrayOf(l.default.object).isRequired,fallbackContentType:l.default.object.isRequired,locationMappings:l.default.arrayOf(l.default.object).isRequired,maxFileSize:l.default.number.isRequired}).isRequired,token:l.default.string.isRequired,siteaccess:l.default.string.isRequired}).isRequired,parentInfo:l.default.shape({contentTypeIdentifier:l.default.string.isRequired,contentTypeId:l.default.number.isRequired,locationPath:l.default.string.isRequired,language:l.default.string.isRequired}).isRequired,checkCanUpload:l.default.func,createFileStruct:l.default.func,deleteFile:l.default.func,onPopupClose:l.default.func,publishFile:l.default.func,itemsToUpload:l.default.array,withUploadButton:l.default.bool,contentCreatePermissionsConfig:l.default.object},u.defaultProps={checkCanUpload:r.checkCanUpload,createFileStruct:r.createFileStruct,deleteFile:r.deleteFile,onPopupClose:()=>{},publishFile:r.publishFile,itemsToUpload:[],withUploadButton:!0}},111:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t{return{itemsToUpload:[...t.itemsToUpload.filter(t=>!e.itemsToUpload.find(e=>e.id===t.id)),...e.itemsToUpload]}})}uploadFiles(e){this.setState(()=>({itemsToUpload:e}))}render(){const e=this.props,t=n({},e,{itemsToUpload:this.state.itemsToUpload}),i=Translator.trans("upload_popup.title",{},"multi_file_upload");return a.default.createElement("div",{className:"c-upload-popup"},a.default.createElement(s.default,n({title:i},e),a.default.createElement(r.default,{onDrop:this.uploadFiles,maxFileSize:this.props.adminUiConfig.multiFileUpload.maxFileSize,preventDefaultAction:this.props.preventDefaultAction,processUploadedFiles:this.props.processUploadedFiles}),a.default.createElement(d.default,t)))}}t.default=c,c.propTypes={popupTitle:l.default.string.isRequired,visible:l.default.bool,onUpload:l.default.func,onUploadEnd:l.default.func,onUploadFail:l.default.func,onItemEdit:l.default.func,onItemRemove:l.default.func,onClose:l.default.func,itemsToUpload:l.default.array,onAfterUpload:l.default.func.isRequired,createFileStruct:l.default.func.isRequired,publishFile:l.default.func.isRequired,deleteFile:l.default.func.isRequired,checkCanUpload:l.default.func.isRequired,adminUiConfig:l.default.shape({multiFileUpload:l.default.shape({defaultMappings:l.default.arrayOf(l.default.object).isRequired,fallbackContentType:l.default.object.isRequired,locationMappings:l.default.arrayOf(l.default.object).isRequired,maxFileSize:l.default.number.isRequired}).isRequired,token:l.default.string.isRequired,siteaccess:l.default.string.isRequired}).isRequired,parentInfo:l.default.shape({contentTypeIdentifier:l.default.string.isRequired,contentTypeId:l.default.number.isRequired,locationPath:l.default.string.isRequired,language:l.default.string.isRequired}).isRequired,preventDefaultAction:l.default.func.isRequired,processUploadedFiles:l.default.func.isRequired},c.defaultProps={visible:!0,itemsToUpload:[]}},112:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0),o=s(n),a=s(i(1)),l=i(17);function s(e){return e&&e.__esModule?e:{default:e}}class r extends n.Component{constructor(e){super(e),this._refFileInput=null,this.openFileSelector=this.openFileSelector.bind(this),this.handleUpload=this.handleUpload.bind(this)}openFileSelector(e){e.preventDefault(),this._refFileInput.click()}handleUpload(e){this.props.preventDefaultAction(e),this.props.onDrop(this.props.processUploadedFiles(e))}componentDidMount(){window.addEventListener("drop",this.props.preventDefaultAction,!1),window.addEventListener("dragover",this.props.preventDefaultAction,!1)}componentWillUnmount(){window.removeEventListener("drop",this.props.preventDefaultAction,!1),window.removeEventListener("dragover",this.props.preventDefaultAction,!1)}render(){const e=Translator.trans("max_file_size.message",{},"multi_file_upload"),t=Translator.trans("drop_action.message",{},"multi_file_upload"),i=Translator.trans("upload_btn.label",{},"multi_file_upload");return o.default.createElement("form",{className:"c-drop-area",multiple:!0,onDrop:this.handleUpload},o.default.createElement("div",{className:"c-drop-area__message c-drop-area__message--main"},t),o.default.createElement("div",{className:"c-drop-area__btn-select",onClick:this.openFileSelector},o.default.createElement("svg",{className:"c-drop-area__icon ez-icon ez-icon--light ez-icon--small-medium"},o.default.createElement("use",{xlinkHref:"/bundles/ezplatformadminui/img/ez-icons.svg#upload"})),i),o.default.createElement("div",{className:"c-drop-area__message c-drop-area__message--filesize"},"(",e," ",(0,l.fileSizeToString)(this.props.maxFileSize),")"),o.default.createElement("input",{className:"c-drop-area__input--hidden",ref:e=>this._refFileInput=e,id:"mfu-files",type:"file",name:"files[]",hidden:!0,multiple:!0,onChange:this.handleUpload}))}}t.default=r,r.propTypes={onDrop:a.default.func.isRequired,maxFileSize:a.default.number.isRequired,processUploadedFiles:a.default.func.isRequired,preventDefaultAction:a.default.func.isRequired}},113:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),o=s(n),a=s(i(1)),l=s(i(114));function s(e){return e&&e.__esModule?e:{default:e}}class r extends n.Component{constructor(e){super(e),this.state={itemsToUpload:e.itemsToUpload,items:[]}}UNSAFE_componentWillReceiveProps(e){this.setState(t=>{return{itemsToUpload:[...t.itemsToUpload.filter(t=>!e.itemsToUpload.find(e=>e.id===t.id)),...e.itemsToUpload]}})}componentDidUpdate(){this.props.onAfterUpload(this.state.items)}handleAfterUpload(e){this.setState(t=>({itemsToUpload:t.itemsToUpload.filter(t=>t.id!==e.id),items:[...t.items,e]}))}handleAfterAbort(e){this.setState(t=>{const i=t.items.filter(t=>t.id!==e.id),n=t.itemsToUpload.filter(t=>t.id!==e.id);return Object.assign({},t,{uploaded:i.length,total:i.length+n.length,itemsToUpload:n,items:i})})}handleAfterDelete(e){this.setState(t=>{const i=t.items.filter(t=>t.id!==e.id),n=t.itemsToUpload.filter(t=>t.id!==e.id);return Object.assign({},t,{uploaded:i.length,total:i.length+n.length,itemsToUpload:n,items:i})})}renderItemToUpload(e){return this.renderItem(e,{isUploaded:!1,createFileStruct:this.props.createFileStruct,publishFile:this.props.publishFile,onAfterAbort:this.handleAfterAbort.bind(this),onAfterUpload:this.handleAfterUpload.bind(this),checkCanUpload:this.props.checkCanUpload})}renderUploadedItem(e){return this.renderItem(e,{isUploaded:!0,deleteFile:this.props.deleteFile,onAfterDelete:this.handleAfterDelete.bind(this)})}renderItem(e,t){var i=this.props;const n=i.adminUiConfig,a=i.parentInfo,s=i.contentCreatePermissionsConfig,r=Object.assign({key:e.id,data:e,adminUiConfig:n,parentInfo:a,contentCreatePermissionsConfig:s},t);return o.default.createElement(l.default,r)}render(){var e=this.state;const t=e.items,i=e.itemsToUpload,n=t.length,a=n+i.length;return o.default.createElement("div",{className:"c-upload-list"},o.default.createElement("div",{className:"c-upload-list__title"},this.props.uploadedItemsListTitle," (",n,"/",a,")"),o.default.createElement("div",{className:"c-upload-list__items"},i.map(this.renderItemToUpload.bind(this)),t.map(this.renderUploadedItem.bind(this))))}}t.default=r,r.propTypes={itemsToUpload:a.default.arrayOf(a.default.object),onAfterUpload:a.default.func.isRequired,createFileStruct:a.default.func.isRequired,publishFile:a.default.func.isRequired,deleteFile:a.default.func.isRequired,checkCanUpload:a.default.func.isRequired,adminUiConfig:a.default.shape({multiFileUpload:a.default.shape({defaultMappings:a.default.arrayOf(a.default.object).isRequired,fallbackContentType:a.default.object.isRequired,locationMappings:a.default.arrayOf(a.default.object).isRequired,maxFileSize:a.default.number.isRequired}).isRequired,token:a.default.string.isRequired,siteaccess:a.default.string.isRequired}).isRequired,parentInfo:a.default.shape({contentTypeIdentifier:a.default.string.isRequired,contentTypeId:a.default.number.isRequired,locationPath:a.default.string.isRequired,language:a.default.string.isRequired}).isRequired,uploadedItemsListTitle:a.default.string.isRequired},r.defaultProps={itemsToUpload:[]}},114:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t({uploading:!1,disallowed:!0,uploaded:!1,aborted:!1,failed:!0}))}initPublishFile({token:e,siteaccess:t},i){this.props.publishFile({struct:i,token:e,siteaccess:t},{upload:{onabort:this.handleUploadAbort,onerror:this.handleUploadError,onload:this.handleUploadLoad,onprogress:this.handleUploadProgress},onloadstart:this.handleLoadStart,onerror:this.handleUploadError},this.handleUploadEnd)}handleFileTypeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!0,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!0}))}handleFileSizeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!1,disallowedSize:!0,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!0}))}handleContentTypeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!1,disallowedSize:!1,disallowedContentType:!0,uploaded:!1,aborted:!1,failed:!0}))}handleLoadStart(e){this.setState(()=>({uploading:!0,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!1,xhr:e.target}))}handleUploadAbort(){this.setState(()=>({uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!0,failed:!1}))}handleUploadError(){this.setState(e=>({uploading:!1,disallowed:e.disallowed,disallowedSize:e.disallowedSize,disallowedType:e.disallowedType,disallowedContentType:e.disallowedContentType,uploaded:!1,aborted:e.aborted,failed:!0}))}handleUploadLoad(){this.setState(()=>({uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!0,aborted:!1,failed:!1}))}handleUploadProgress(e){const t=e.loaded/e.total,i=parseInt(100*t,10);this.setState(()=>({uploadedSize:(0,r.fileSizeToString)(t*parseInt(this.props.data.file.size,10)),uploading:!0,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!1,progress:i}))}handleUploadEnd(){this.setState(e=>{return{struct:JSON.parse(e.xhr.response),uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!0,aborted:!1,failed:!1}},()=>{const e=this.props.data;this.props.onAfterUpload(n({},e,{struct:this.state.struct}))})}abortUploading(){this.state.xhr.abort(),this.props.onAfterAbort(this.props.data)}deleteFile(){this.setState(()=>({deleted:!0}),()=>this.props.deleteFile(this.props.adminUiConfig,this.state.struct,this.handleFileDeleted))}handleFileDeleted(){this.props.onAfterDelete(this.props.data)}detectFileType(){const e=this.props.data.file.type;return e.includes("/pdf")?"pdf-file":e.includes("video/")?"file-video":e.includes("image/")?"image":"file"}renderProgressBar(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.progress,o=e.totalSize,l=e.uploadedSize,r=e.disallowed;return this.props.isUploaded||t||i||r?null:a.default.createElement(s.default,{progress:n,uploaded:l,total:o})}renderErrorMessage(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.disallowedType,o=e.disallowedSize,l=e.failed,s=e.uploading,r=e.disallowedContentType,d=!t&&!i&&(o||n||r)&&l&&!s,u=Translator.trans("cannot_upload.message",{},"multi_file_upload"),p=Translator.trans("disallowed_type.message",{},"multi_file_upload"),c=Translator.trans("disallowed_size.message",{},"multi_file_upload"),f=Translator.trans("disallowed_content_type.message",{},"multi_file_upload");let h=u;return n&&(h=p),o&&(h=c),r&&(h=f),d?a.default.createElement("div",{className:"c-upload-list-item__message c-upload-list-item__message--error"},h):null}renderSuccessMessage(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.disallowedSize,o=e.disallowedType,l=e.failed,s=e.uploading,r=t&&!i&&!(n||o)&&!l&&!s,d=Translator.trans("upload.success.message",{},"multi_file_upload");return r?a.default.createElement("div",{className:"c-upload-list-item__message c-upload-list-item__message--success"},d):null}renderAbortBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.disallowedSize,o=e.disallowedType,l=e.failed,s=e.uploading;if(!(!t&&!i&&!n&&!o&&!l&&s))return null;const r=Translator.trans("abort.label",{},"multi_file_upload");return a.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--abort",onClick:this.abortUploading,title:r},a.default.createElement("svg",{className:"ez-icon ez-icon--small-medium"},a.default.createElement("use",{xlinkHref:"/bundles/ezplatformadminui/img/ez-icons.svg#circle-close"})))}handleEditBtnClick(e){e.preventDefault();const t=this.state.struct.Content,i=t._id,n=t.CurrentVersion.Version.VersionInfo.VersionTranslationInfo.Language[0].languageCode,o=t.CurrentVersion.Version.VersionInfo.versionNo;this.contentInfoInput.value=i,this.contentVersionInfoInput.value=i,this.contentVersionNoInput.value=o,window.document.querySelector(`#form_subitems_content_edit_language_${n}`).checked=!0,this.contentEditBtn.click()}renderEditBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.disallowedSize,o=e.disallowedType,l=e.failed,s=e.uploading;if(!(this.props.isUploaded||t&&!i&&!(n||o)&&!l&&!s))return null;const r=Translator.trans("edit.label",{},"multi_file_upload");return a.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--edit",title:r,onClick:this.handleEditBtnClick},a.default.createElement("svg",{className:"ez-icon ez-icon--small-medium"},a.default.createElement("use",{xlinkHref:"/bundles/ezplatformadminui/img/ez-icons.svg#edit"})))}renderDeleteBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,n=e.disallowedSize,o=e.disallowedType,l=e.failed,s=e.uploading;if(!(this.props.isUploaded||t&&!i&&!(n||o)&&!l&&!s))return null;const r=Translator.trans("delete.label",{},"multi_file_upload");return a.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--delete",onClick:this.deleteFile,title:r},a.default.createElement("svg",{className:"ez-icon ez-icon--small-medium"},a.default.createElement("use",{xlinkHref:"/bundles/ezplatformadminui/img/ez-icons.svg#trash"})))}render(){return this.state.deleted?null:a.default.createElement("div",{className:"c-upload-list-item"},a.default.createElement("div",{className:"c-upload-list-item__icon-wrapper"},a.default.createElement("svg",{className:"ez-icon ez-icon--small-medium"},a.default.createElement("use",{xlinkHref:`/bundles/ezplatformadminui/img/ez-icons.svg#${this.detectFileType()}`}))),a.default.createElement("div",{className:"c-upload-list-item__meta"},a.default.createElement("div",{className:"c-upload-list-item__name"},this.props.data.file.name),a.default.createElement("div",{className:"c-upload-list-item__size"},this.state.uploaded?this.state.totalSize:"")),a.default.createElement("div",{className:"c-upload-list-item__info"},this.renderErrorMessage(),this.renderSuccessMessage(),this.renderProgressBar()),a.default.createElement("div",{className:"c-upload-list-item__actions"},this.renderAbortBtn(),this.renderEditBtn(),this.renderDeleteBtn()))}}t.default=u,u.propTypes={data:l.default.object.isRequired,onAfterUpload:l.default.func.isRequired,onAfterAbort:l.default.func.isRequired,onAfterDelete:l.default.func.isRequired,isUploaded:l.default.bool.isRequired,createFileStruct:l.default.func.isRequired,publishFile:l.default.func.isRequired,deleteFile:l.default.func.isRequired,checkCanUpload:l.default.func.isRequired,adminUiConfig:l.default.shape({multiFileUpload:l.default.shape({defaultMappings:l.default.arrayOf(l.default.object).isRequired,fallbackContentType:l.default.object.isRequired,locationMappings:l.default.arrayOf(l.default.object).isRequired,maxFileSize:l.default.number.isRequired}).isRequired,token:l.default.string.isRequired,siteaccess:l.default.string.isRequired}).isRequired,parentInfo:l.default.shape({contentTypeIdentifier:l.default.string.isRequired,contentTypeId:l.default.number.isRequired,locationPath:l.default.string.isRequired,language:l.default.string.isRequired}).isRequired,contentCreatePermissionsConfig:l.default.object},u.defaultProps={isUploaded:!1}},115:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(i(0)),o=a(i(1));function a(e){return e&&e.__esModule?e:{default:e}}const l=e=>n.default.createElement("div",{className:"c-progress-bar"},n.default.createElement("div",{className:"c-progress-bar__value",style:{width:`${e.progress}%`}}),n.default.createElement("div",{className:"c-progress-bar__label"},`${e.progress}%`),n.default.createElement("div",{className:"c-progress-bar__uploaded"},e.uploaded," of ",e.total));l.propTypes={progress:o.default.number.isRequired,uploaded:o.default.string.isRequired,total:o.default.string.isRequired},t.default=l},116:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>{if(!e.ok)throw Error(e.text());return e},o=(e,t)=>e.find(e=>e.mimeTypes.find(e=>e===t.type)),a=(e,t)=>!t||((e,t)=>!!o(e,t))(t.mappings,e),l=(e,t,i)=>{const n=i.locationMappings.find(e=>e.contentTypeIdentifier===t.contentTypeIdentifier),a=n?n.mappings:i.defaultMappings;return o(a,e)||i.fallbackContentType},s=({parentInfo:e,config:t},i)=>{let o=`/api/ezp/v2/content/locations${e.locationPath}`;o=o.endsWith("/")?o.slice(0,-1):o;const a=l(i.file,e,t.multiFileUpload);return(({token:e,siteaccess:t},i)=>{const o=new Request(`/api/ezp/v2/content/types?identifier=${i}`,{method:"GET",headers:{Accept:"application/vnd.ez.api.ContentTypeInfoList+json","X-Siteaccess":t,"X-CSRF-Token":e},credentials:"same-origin",mode:"cors"});return fetch(o).then(n)})(t,a.contentTypeIdentifier).then(e=>e.json()).catch(()=>window.eZ.helpers.notification.showErrorNotification("Cannot get content type by identifier")).then(t=>{const n=[{fieldDefinitionIdentifier:a.nameFieldIdentifier,fieldValue:i.file.name},{fieldDefinitionIdentifier:a.contentFieldIdentifier,fieldValue:{fileName:i.file.name,data:i.fileReader.result.replace(/^.*;base64,/,"")}}];return{ContentCreate:{ContentType:{_href:t.ContentTypeInfoList.ContentType[0]._href},mainLanguageCode:e.language,LocationCreate:{ParentLocation:{_href:o},sortField:"PATH",sortOrder:"ASC"},Section:null,alwaysAvailable:!0,remoteId:null,modificationDate:(new Date).toISOString(),fields:{field:n}}}}).catch(()=>window.eZ.helpers.notification.showErrorNotification("Cannot create content structure"))},r=({struct:e,token:t,siteaccess:i},n)=>{const o=new XMLHttpRequest,a=JSON.stringify(e),l={Accept:"application/vnd.ez.api.Content+json","Content-Type":"application/vnd.ez.api.ContentCreate+json","X-CSRF-Token":t,"X-Siteaccess":i};return new Promise((e,t)=>{if(o.open("POST","/api/ezp/v2/content/objects",!0),o.onreadystatechange=((e,t,i)=>{4===e.readyState&&(0===e.status&&""===e.statusText||(e.status>=400||!e.status?i(e):t(JSON.parse(e.response))))}).bind(null,o,e,t),n&&Object.keys(n).length){const e=n.upload;e&&Object.keys(e).length&&(o.upload.onabort=e.onabort,o.upload.onerror=t,o.upload.onload=e.onload,o.upload.onprogress=e.onprogress,o.upload.ontimeout=e.ontimeout),o.onerror=t,o.onloadstart=n.onloadstart}for(let e in l)l.hasOwnProperty(e)&&o.setRequestHeader(e,l[e]);o.send(a)})};t.checkCanUpload=((e,t,i,n)=>{const o=i.locationMappings.find(e=>e.contentTypeIdentifier===t.contentTypeIdentifier);return((e,t,i)=>{if(!i.hasOwnProperty("contentCreatePermissionsConfig")||!i.contentCreatePermissionsConfig)return!0;const n=l(e,t,i);return i.contentCreatePermissionsConfig[n.contentTypeIdentifier]})(e,t,i)?a(e,o)?!(e.size>i.maxFileSize)||(n.fileSizeNotAllowedCallback(),!1):(n.fileTypeNotAllowedCallback(),!1):(n.contentTypeNotAllowedCallback(),!1)}),t.createFileStruct=((e,t)=>new Promise(function(e,t,i){this.addEventListener("load",()=>t({fileReader:this,file:e}),!1),this.addEventListener("error",()=>i(),!1),this.readAsDataURL(e)}.bind(new FileReader,e)).then(s.bind(null,t))),t.publishFile=((e,t,i)=>{r(e,t).then((({token:e,siteaccess:t},i)=>{if(!i||!i.hasOwnProperty("Content"))return Promise.reject("Cannot publish content based on an uploaded file");const o=new Request(i.Content.CurrentVersion.Version._href,{method:"POST",headers:{"X-Siteaccess":t,"X-CSRF-Token":e,"X-HTTP-Method-Override":"PUBLISH"},mode:"cors",credentials:"same-origin"});return fetch(o).then(n)}).bind(null,e)).then(i).catch(()=>window.eZ.helpers.notification.showErrorNotification("An error occurred while publishing a file"))}),t.deleteFile=(({token:e,siteaccess:t},i,o)=>{const a=new Request(i.Content._href,{method:"DELETE",headers:{"X-Siteaccess":t,"X-CSRF-Token":e},mode:"cors",credentials:"same-origin"});fetch(a).then(n).then(o).catch(()=>window.eZ.helpers.notification.showErrorNotification("An error occurred while deleting a file"))})},12:function(e,t,i){var n=i(13);"string"==typeof n&&(n=[[e.i,n,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};i(3)(n,o);n.locals&&(e.exports=n.locals)},13:function(e,t,i){(e.exports=i(2)(!1)).push([e.i,".c-tooltip-popup {\n background: #ededed;\n padding: 16px;\n box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.35);\n position: relative;\n border-radius: 4px;\n}\n\n.c-tooltip-popup__header {\n position: relative;\n}\n\n.c-tooltip-popup__title {\n margin-top: 0;\n}\n\n.c-tooltip-popup__close {\n position: absolute;\n display: flex;\n align-items: center;\n top: 0;\n bottom: 0;\n right: 16px;\n font-weight: 400;\n font-size: 32px;\n cursor: pointer;\n}\n\n.c-tooltip-popup__close .ez-icon {\n width: 24px;\n height: 24px;\n fill: #333;\n opacity: 0.5;\n transition: opacity 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\n.c-tooltip-popup__close .ez-icon:hover {\n opacity: 1;\n}\n",""])},17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.fileSizeToString=(e=>{let t,i=parseInt(e,10)||0,n=0;for(;i>=1024;)i/=1024,n++;return t=n<1?0:1,i.toFixed(i>=10||t)+" "+["bytes","KB","MB","GB"][n]})},2:function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var i=function(e,t){var i=e[1]||"",n=e[3];if(!n)return i;if(t&&"function"==typeof btoa){var o=function(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}(n),a=n.sources.map(function(e){return"/*# sourceURL="+n.sourceRoot+e+" */"});return[i].concat(a).concat([o]).join("\n")}return[i].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+i+"}":i}).join("")},t.i=function(e,i){"string"==typeof e&&(e=[[null,e,""]]);for(var n={},o=0;o=0&&r.splice(t,1)}function h(e){var t=document.createElement("style");return void 0===e.attrs.type&&(e.attrs.type="text/css"),m(t,e.attrs),c(e,t),t}function m(e,t){Object.keys(t).forEach(function(i){e.setAttribute(i,t[i])})}function b(e,t){var i,n,o,a;if(t.transform&&e.css){if(!(a=t.transform(e.css)))return function(){};e.css=a}if(t.singleton){var r=s++;i=l||(l=h(t)),n=v.bind(null,i,r,!1),o=v.bind(null,i,r,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(i=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",m(t,e.attrs),c(e,t),t}(t),n=function(e,t,i){var n=i.css,o=i.sourceMap,a=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||a)&&(n=d(n));o&&(n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var l=new Blob([n],{type:"text/css"}),s=e.href;e.href=URL.createObjectURL(l),s&&URL.revokeObjectURL(s)}.bind(null,i,t),o=function(){f(i),i.href&&URL.revokeObjectURL(i.href)}):(i=h(t),n=function(e,t){var i=t.css,n=t.media;n&&e.setAttribute("media",n);if(e.styleSheet)e.styleSheet.cssText=i;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(i))}}.bind(null,i),o=function(){f(i)});return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var i=p(e,t);return u(i,t),function(e){for(var o=[],a=0;a{const t=e.customPath?e.customPath:`/bundles/ezplatformadminui/img/ez-icons.svg#${e.name}`;let i="ez-icon";return e.extraClasses&&(i=`${i} ${e.extraClasses}`),n.default.createElement("svg",{className:i},n.default.createElement("use",{xlinkHref:t}))};l.propTypes={extraClasses:o.default.string.isRequired,name:o.default.string,customPath:o.default.string},l.defaultProps={customPath:null,name:null},t.default=l},5:function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var i=t.protocol+"//"+t.host,n=i+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(e,t){var o,a=t.trim().replace(/^"(.*)"$/,function(e,t){return t}).replace(/^'(.*)'$/,function(e,t){return t});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(a)?e:(o=0===a.indexOf("//")?a:0===a.indexOf("/")?i+a:n+a.replace(/^\.\//,""),"url("+JSON.stringify(o)+")")})}}}).default}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.MultiFileUpload=t(require("react"),require("prop-types")):(e.eZ=e.eZ||{},e.eZ.modules=e.eZ.modules||{},e.eZ.modules.MultiFileUpload=t(e.React,e.PropTypes))}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function i(a){if(t[a])return t[a].exports;var l=t[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,i),l.l=!0,l.exports}return i.m=e,i.c=t,i.d=function(e,t,a){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:a})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=53)}({0:function(t,i){t.exports=e},1:function(e,i){e.exports=t},12:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.fileSizeToString=(e=>{let t,i=parseInt(e,10)||0,a=0;for(;i>=1024;)i/=1024,a++;return t=a<1?0:1,i.toFixed(i>=10||t)+" "+["bytes","KB","MB","GB"][a]})},2:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=o(i(0)),l=o(i(1));function o(e){return e&&e.__esModule?e:{default:e}}const n=e=>{const t=e.customPath?e.customPath:`/bundles/ezplatformadminui/img/ez-icons.svg#${e.name}`;let i="ez-icon";return e.extraClasses&&(i=`${i} ${e.extraClasses}`),a.default.createElement("svg",{className:i},a.default.createElement("use",{xlinkHref:t}))};n.propTypes={extraClasses:l.default.string.isRequired,name:l.default.string,customPath:l.default.string},n.defaultProps={customPath:null,name:null},t.default=n},53:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t!e)}}componentDidMount(){this.manageDropEvent()}componentDidUpdate(){this.manageDropEvent()}manageDropEvent(){var e=this.state;const t=e.uploadDisabled,i=e.popupVisible,a=e.itemsToUpload;t||i||a.length||(window.addEventListener("drop",this.handleDropOnWindow,!1),window.addEventListener("dragover",this.preventDefaultAction,!1))}hidePopup(){this.setState(e=>Object.assign({},e,{popupVisible:!1})),this.props.onPopupClose(this._itemsUploaded)}showUploadPopup(){this.setState(e=>Object.assign({},e,{popupVisible:!0,itemsToUpload:[]}))}handleAfterUpload(e){this._itemsUploaded=e}handleDropOnWindow(e){this.preventDefaultAction(e);const t=this.processUploadedFiles(e);this.state.allowDropOnWindow&&t.length&&(window.removeEventListener("drop",this.handleDropOnWindow,!1),window.removeEventListener("dragover",this.preventDefaultAction,!1),this.setState(e=>Object.assign({},e,{itemsToUpload:t,popupVisible:!0,allowDropOnWindow:!1})))}extractDroppedFilesList(e){let t;return t=e.nativeEvent?e.nativeEvent.dataTransfer||e.nativeEvent.target:e.dataTransfer}processUploadedFiles(e){const t=this.extractDroppedFilesList(e);return Array.from(t.files).map(e=>({id:Math.floor(Math.random()*Date.now()),file:e}))}preventDefaultAction(e){e.preventDefault(),e.stopPropagation()}renderBtn(){if(!this.props.withUploadButton)return null;const e=this.state.uploadDisabled,t={className:"m-mfu__btn--upload",title:Translator.trans("multi_file_upload_open_btn.label",{},"multi_file_upload"),onClick:this.showUploadPopup,type:"button"};return e&&(delete t.onClick,t.disabled=!0),o.default.createElement("button",t,o.default.createElement(r.default,{name:"upload",extraClasses:"ez-icon--light ez-icon--small-medium"}))}renderPopup(){if(!this.state.popupVisible)return null;const e=a({},this.props,{visible:!0,onClose:this.hidePopup,itemsToUpload:this.state.itemsToUpload,onAfterUpload:this.handleAfterUpload,preventDefaultAction:this.preventDefaultAction,processUploadedFiles:this.processUploadedFiles});return o.default.createElement(s.default,e)}render(){return o.default.createElement("div",{className:"m-mfu"},this.renderBtn(),this.renderPopup())}}t.default=p,p.propTypes={adminUiConfig:n.default.shape({multiFileUpload:n.default.shape({defaultMappings:n.default.arrayOf(n.default.object).isRequired,fallbackContentType:n.default.object.isRequired,locationMappings:n.default.arrayOf(n.default.object).isRequired,maxFileSize:n.default.number.isRequired}).isRequired,token:n.default.string.isRequired,siteaccess:n.default.string.isRequired}).isRequired,parentInfo:n.default.shape({contentTypeIdentifier:n.default.string.isRequired,contentTypeId:n.default.number.isRequired,locationPath:n.default.string.isRequired,language:n.default.string.isRequired}).isRequired,checkCanUpload:n.default.func,createFileStruct:n.default.func,deleteFile:n.default.func,onPopupClose:n.default.func,publishFile:n.default.func,itemsToUpload:n.default.array,withUploadButton:n.default.bool,contentCreatePermissionsConfig:n.default.object},p.defaultProps={checkCanUpload:d.checkCanUpload,createFileStruct:d.createFileStruct,deleteFile:d.deleteFile,onPopupClose:()=>{},publishFile:d.publishFile,itemsToUpload:[],withUploadButton:!0}},54:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t{return{itemsToUpload:[...t.itemsToUpload.filter(t=>!e.itemsToUpload.find(e=>e.id===t.id)),...e.itemsToUpload]}})}uploadFiles(e){this.setState(()=>({itemsToUpload:e}))}render(){const e=this.props,t=a({},e,{itemsToUpload:this.state.itemsToUpload}),i=Translator.trans("upload_popup.title",{},"multi_file_upload");return o.default.createElement("div",{className:"c-upload-popup"},o.default.createElement(s.default,a({title:i},e),o.default.createElement(d.default,{onDrop:this.uploadFiles,maxFileSize:this.props.adminUiConfig.multiFileUpload.maxFileSize,preventDefaultAction:this.props.preventDefaultAction,processUploadedFiles:this.props.processUploadedFiles}),o.default.createElement(r.default,t)))}}t.default=c,c.propTypes={popupTitle:n.default.string.isRequired,visible:n.default.bool,onUpload:n.default.func,onUploadEnd:n.default.func,onUploadFail:n.default.func,onItemEdit:n.default.func,onItemRemove:n.default.func,onClose:n.default.func,itemsToUpload:n.default.array,onAfterUpload:n.default.func.isRequired,createFileStruct:n.default.func.isRequired,publishFile:n.default.func.isRequired,deleteFile:n.default.func.isRequired,checkCanUpload:n.default.func.isRequired,adminUiConfig:n.default.shape({multiFileUpload:n.default.shape({defaultMappings:n.default.arrayOf(n.default.object).isRequired,fallbackContentType:n.default.object.isRequired,locationMappings:n.default.arrayOf(n.default.object).isRequired,maxFileSize:n.default.number.isRequired}).isRequired,token:n.default.string.isRequired,siteaccess:n.default.string.isRequired}).isRequired,parentInfo:n.default.shape({contentTypeIdentifier:n.default.string.isRequired,contentTypeId:n.default.number.isRequired,locationPath:n.default.string.isRequired,language:n.default.string.isRequired}).isRequired,preventDefaultAction:n.default.func.isRequired,processUploadedFiles:n.default.func.isRequired},c.defaultProps={visible:!0,itemsToUpload:[]}},55:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=i(0),l=d(a),o=d(i(1)),n=i(12),s=d(i(2));function d(e){return e&&e.__esModule?e:{default:e}}class r extends a.Component{constructor(e){super(e),this._refFileInput=null,this.openFileSelector=this.openFileSelector.bind(this),this.handleUpload=this.handleUpload.bind(this)}openFileSelector(e){e.preventDefault(),this._refFileInput.click()}handleUpload(e){this.props.preventDefaultAction(e),this.props.onDrop(this.props.processUploadedFiles(e))}componentDidMount(){window.addEventListener("drop",this.props.preventDefaultAction,!1),window.addEventListener("dragover",this.props.preventDefaultAction,!1)}componentWillUnmount(){window.removeEventListener("drop",this.props.preventDefaultAction,!1),window.removeEventListener("dragover",this.props.preventDefaultAction,!1)}render(){const e=Translator.trans("max_file_size.message",{},"multi_file_upload"),t=Translator.trans("drop_action.message",{},"multi_file_upload"),i=Translator.trans("upload_btn.label",{},"multi_file_upload");return l.default.createElement("form",{className:"c-drop-area",multiple:!0,onDrop:this.handleUpload},l.default.createElement("div",{className:"c-drop-area__message c-drop-area__message--main"},t),l.default.createElement("div",{className:"c-drop-area__btn-select",onClick:this.openFileSelector,tabIndex:"-1"},l.default.createElement(s.default,{name:"upload",extraClasses:"c-drop-area__icon ez-icon--light ez-icon--small-medium"}),i),l.default.createElement("div",{className:"c-drop-area__message c-drop-area__message--filesize"},"(",e," ",(0,n.fileSizeToString)(this.props.maxFileSize),")"),l.default.createElement("input",{className:"c-drop-area__input--hidden",ref:e=>this._refFileInput=e,id:"mfu-files",type:"file",name:"files[]",hidden:!0,multiple:!0,onChange:this.handleUpload}))}}t.default=r,r.propTypes={onDrop:o.default.func.isRequired,maxFileSize:o.default.number.isRequired,processUploadedFiles:o.default.func.isRequired,preventDefaultAction:o.default.func.isRequired}},56:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),l=s(a),o=s(i(1)),n=s(i(57));function s(e){return e&&e.__esModule?e:{default:e}}class d extends a.Component{constructor(e){super(e),this.state={itemsToUpload:e.itemsToUpload,items:[]}}UNSAFE_componentWillReceiveProps(e){this.setState(t=>{return{itemsToUpload:[...t.itemsToUpload.filter(t=>!e.itemsToUpload.find(e=>e.id===t.id)),...e.itemsToUpload]}})}componentDidUpdate(){this.props.onAfterUpload(this.state.items)}handleAfterUpload(e){this.setState(t=>({itemsToUpload:t.itemsToUpload.filter(t=>t.id!==e.id),items:[...t.items,e]}))}handleAfterAbort(e){this.setState(t=>{const i=t.items.filter(t=>t.id!==e.id),a=t.itemsToUpload.filter(t=>t.id!==e.id);return Object.assign({},t,{uploaded:i.length,total:i.length+a.length,itemsToUpload:a,items:i})})}handleAfterDelete(e){this.setState(t=>{const i=t.items.filter(t=>t.id!==e.id),a=t.itemsToUpload.filter(t=>t.id!==e.id);return Object.assign({},t,{uploaded:i.length,total:i.length+a.length,itemsToUpload:a,items:i})})}renderItemToUpload(e){return this.renderItem(e,{isUploaded:!1,createFileStruct:this.props.createFileStruct,publishFile:this.props.publishFile,onAfterAbort:this.handleAfterAbort.bind(this),onAfterUpload:this.handleAfterUpload.bind(this),checkCanUpload:this.props.checkCanUpload})}renderUploadedItem(e){return this.renderItem(e,{isUploaded:!0,deleteFile:this.props.deleteFile,onAfterDelete:this.handleAfterDelete.bind(this)})}renderItem(e,t){var i=this.props;const a=i.adminUiConfig,o=i.parentInfo,s=i.contentCreatePermissionsConfig,d=Object.assign({key:e.id,data:e,adminUiConfig:a,parentInfo:o,contentCreatePermissionsConfig:s},t);return l.default.createElement(n.default,d)}render(){var e=this.state;const t=e.items,i=e.itemsToUpload,a=t.length,o=a+i.length;return l.default.createElement("div",{className:"c-upload-list"},l.default.createElement("div",{className:"c-upload-list__title"},this.props.uploadedItemsListTitle," (",a,"/",o,")"),l.default.createElement("div",{className:"c-upload-list__items"},i.map(this.renderItemToUpload.bind(this)),t.map(this.renderUploadedItem.bind(this))))}}t.default=d,d.propTypes={itemsToUpload:o.default.arrayOf(o.default.object),onAfterUpload:o.default.func.isRequired,createFileStruct:o.default.func.isRequired,publishFile:o.default.func.isRequired,deleteFile:o.default.func.isRequired,checkCanUpload:o.default.func.isRequired,adminUiConfig:o.default.shape({multiFileUpload:o.default.shape({defaultMappings:o.default.arrayOf(o.default.object).isRequired,fallbackContentType:o.default.object.isRequired,locationMappings:o.default.arrayOf(o.default.object).isRequired,maxFileSize:o.default.number.isRequired}).isRequired,token:o.default.string.isRequired,siteaccess:o.default.string.isRequired}).isRequired,parentInfo:o.default.shape({contentTypeIdentifier:o.default.string.isRequired,contentTypeId:o.default.number.isRequired,locationPath:o.default.string.isRequired,language:o.default.string.isRequired}).isRequired,uploadedItemsListTitle:o.default.string.isRequired},d.defaultProps={itemsToUpload:[]}},57:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t({uploading:!1,disallowed:!0,uploaded:!1,aborted:!1,failed:!0}))}initPublishFile({token:e,siteaccess:t},i){this.props.publishFile({struct:i,token:e,siteaccess:t},{upload:{onabort:this.handleUploadAbort,onerror:this.handleUploadError,onload:this.handleUploadLoad,onprogress:this.handleUploadProgress},onloadstart:this.handleLoadStart,onerror:this.handleUploadError},this.handleUploadEnd)}handleFileTypeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!0,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!0}))}handleFileSizeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!1,disallowedSize:!0,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!0}))}handleContentTypeNotAllowed(){this.setState(()=>({uploading:!1,disallowed:!0,disallowedType:!1,disallowedSize:!1,disallowedContentType:!0,uploaded:!1,aborted:!1,failed:!0}))}handleLoadStart(e){this.setState(()=>({uploading:!0,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!1,xhr:e.target}))}handleUploadAbort(){this.setState(()=>({uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!0,failed:!1}))}handleUploadError(){this.setState(e=>({uploading:!1,disallowed:e.disallowed,disallowedSize:e.disallowedSize,disallowedType:e.disallowedType,disallowedContentType:e.disallowedContentType,uploaded:!1,aborted:e.aborted,failed:!0}))}handleUploadLoad(){this.setState(()=>({uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!0,aborted:!1,failed:!1}))}handleUploadProgress(e){const t=e.loaded/e.total,i=parseInt(100*t,10);this.setState(()=>({uploadedSize:(0,d.fileSizeToString)(t*parseInt(this.props.data.file.size,10)),uploading:!0,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!1,aborted:!1,failed:!1,progress:i}))}handleUploadEnd(){this.setState(e=>{return{struct:JSON.parse(e.xhr.response),uploading:!1,disallowed:!1,disallowedType:!1,disallowedSize:!1,disallowedContentType:!1,uploaded:!0,aborted:!1,failed:!1}},()=>{const e=this.props.data;this.props.onAfterUpload(a({},e,{struct:this.state.struct}))})}abortUploading(){this.state.xhr.abort(),this.props.onAfterAbort(this.props.data)}deleteFile(){this.setState(()=>({deleted:!0}),()=>this.props.deleteFile(this.props.adminUiConfig,this.state.struct,this.handleFileDeleted))}handleFileDeleted(){this.props.onAfterDelete(this.props.data)}detectFileType(){const e=this.props.data.file.type;return e.includes("/pdf")?"pdf-file":e.includes("video/")?"file-video":e.includes("image/")?"image":"file"}renderProgressBar(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.progress,l=e.totalSize,n=e.uploadedSize,d=e.disallowed;return this.props.isUploaded||t||i||d?null:o.default.createElement(s.default,{progress:a,uploaded:n,total:l})}renderErrorMessage(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.disallowedType,l=e.disallowedSize,n=e.failed,s=e.uploading,d=e.disallowedContentType,r=!t&&!i&&(l||a||d)&&n&&!s,u=Translator.trans("cannot_upload.message",{},"multi_file_upload"),p=Translator.trans("disallowed_type.message",{},"multi_file_upload"),c=Translator.trans("disallowed_size.message",{},"multi_file_upload"),f=Translator.trans("disallowed_content_type.message",{},"multi_file_upload");let h=u;return a&&(h=p),l&&(h=c),d&&(h=f),r?o.default.createElement("div",{className:"c-upload-list-item__message c-upload-list-item__message--error"},h):null}renderSuccessMessage(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.disallowedSize,l=e.disallowedType,n=e.failed,s=e.uploading,d=t&&!i&&!(a||l)&&!n&&!s,r=Translator.trans("upload.success.message",{},"multi_file_upload");return d?o.default.createElement("div",{className:"c-upload-list-item__message c-upload-list-item__message--success"},r):null}renderAbortBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.disallowedSize,l=e.disallowedType,n=e.failed,s=e.uploading;if(!(!t&&!i&&!a&&!l&&!n&&s))return null;const d=Translator.trans("abort.label",{},"multi_file_upload");return o.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--abort",onClick:this.abortUploading,title:d,tabIndex:"-1"},o.default.createElement(r.default,{name:"circle-close",extraClasses:"ez-icon--small-medium"}))}handleEditBtnClick(e){e.preventDefault();const t=this.state.struct.Content,i=t._id,a=t.CurrentVersion.Version.VersionInfo.VersionTranslationInfo.Language[0].languageCode,l=t.CurrentVersion.Version.VersionInfo.versionNo;this.contentInfoInput.value=i,this.contentVersionInfoInput.value=i,this.contentVersionNoInput.value=l,window.document.querySelector(`#form_subitems_content_edit_language_${a}`).checked=!0,this.contentEditBtn.click()}renderEditBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.disallowedSize,l=e.disallowedType,n=e.failed,s=e.uploading;if(!(this.props.isUploaded||t&&!i&&!(a||l)&&!n&&!s))return null;const d=Translator.trans("edit.label",{},"multi_file_upload");return o.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--edit",title:d,onClick:this.handleEditBtnClick,tabIndex:"-1"},o.default.createElement(r.default,{name:"edit",extraClasses:"ez-icon--small-medium"}))}renderDeleteBtn(){var e=this.state;const t=e.uploaded,i=e.aborted,a=e.disallowedSize,l=e.disallowedType,n=e.failed,s=e.uploading;if(!(this.props.isUploaded||t&&!i&&!(a||l)&&!n&&!s))return null;const d=Translator.trans("delete.label",{},"multi_file_upload");return o.default.createElement("div",{className:"c-upload-list-item__action c-upload-list-item__action--delete",onClick:this.deleteFile,title:d,tabIndex:"-1"},o.default.createElement(r.default,{name:"trash",extraClasses:"ez-icon--small-medium"}))}render(){return this.state.deleted?null:o.default.createElement("div",{className:"c-upload-list-item"},o.default.createElement("div",{className:"c-upload-list-item__icon-wrapper"},o.default.createElement(r.default,{name:this.detectFileType(),extraClasses:"ez-icon--small-medium"})),o.default.createElement("div",{className:"c-upload-list-item__meta"},o.default.createElement("div",{className:"c-upload-list-item__name"},this.props.data.file.name),o.default.createElement("div",{className:"c-upload-list-item__size"},this.state.uploaded?this.state.totalSize:"")),o.default.createElement("div",{className:"c-upload-list-item__info"},this.renderErrorMessage(),this.renderSuccessMessage(),this.renderProgressBar()),o.default.createElement("div",{className:"c-upload-list-item__actions"},this.renderAbortBtn(),this.renderEditBtn(),this.renderDeleteBtn()))}}t.default=p,p.propTypes={data:n.default.object.isRequired,onAfterUpload:n.default.func.isRequired,onAfterAbort:n.default.func.isRequired,onAfterDelete:n.default.func.isRequired,isUploaded:n.default.bool.isRequired,createFileStruct:n.default.func.isRequired,publishFile:n.default.func.isRequired,deleteFile:n.default.func.isRequired,checkCanUpload:n.default.func.isRequired,adminUiConfig:n.default.shape({multiFileUpload:n.default.shape({defaultMappings:n.default.arrayOf(n.default.object).isRequired,fallbackContentType:n.default.object.isRequired,locationMappings:n.default.arrayOf(n.default.object).isRequired,maxFileSize:n.default.number.isRequired}).isRequired,token:n.default.string.isRequired,siteaccess:n.default.string.isRequired}).isRequired,parentInfo:n.default.shape({contentTypeIdentifier:n.default.string.isRequired,contentTypeId:n.default.number.isRequired,locationPath:n.default.string.isRequired,language:n.default.string.isRequired}).isRequired,contentCreatePermissionsConfig:n.default.object},p.defaultProps={isUploaded:!1}},58:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=o(i(0)),l=o(i(1));function o(e){return e&&e.__esModule?e:{default:e}}const n=e=>a.default.createElement("div",{className:"c-progress-bar"},a.default.createElement("div",{className:"c-progress-bar__value",style:{width:`${e.progress}%`}}),a.default.createElement("div",{className:"c-progress-bar__label"},`${e.progress}%`),a.default.createElement("div",{className:"c-progress-bar__uploaded"},e.uploaded," of ",e.total));n.propTypes={progress:l.default.number.isRequired,uploaded:l.default.string.isRequired,total:l.default.string.isRequired},t.default=n},59:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=e=>{if(!e.ok)throw Error(e.text());return e},l=(e,t)=>e.find(e=>e.mimeTypes.find(e=>e===t.type)),o=(e,t)=>!t||((e,t)=>!!l(e,t))(t.mappings,e),n=(e,t,i)=>{const a=i.locationMappings.find(e=>e.contentTypeIdentifier===t.contentTypeIdentifier),o=a?a.mappings:i.defaultMappings;return l(o,e)||i.fallbackContentType},s=({parentInfo:e,config:t},i)=>{let l=`/api/ezp/v2/content/locations${e.locationPath}`;l=l.endsWith("/")?l.slice(0,-1):l;const o=n(i.file,e,t.multiFileUpload);return(({token:e,siteaccess:t},i)=>{const l=new Request(`/api/ezp/v2/content/types?identifier=${i}`,{method:"GET",headers:{Accept:"application/vnd.ez.api.ContentTypeInfoList+json","X-Siteaccess":t,"X-CSRF-Token":e},credentials:"same-origin",mode:"cors"});return fetch(l).then(a)})(t,o.contentTypeIdentifier).then(e=>e.json()).catch(()=>window.eZ.helpers.notification.showErrorNotification("Cannot get content type by identifier")).then(t=>{const a=[{fieldDefinitionIdentifier:o.nameFieldIdentifier,fieldValue:i.file.name},{fieldDefinitionIdentifier:o.contentFieldIdentifier,fieldValue:{fileName:i.file.name,data:i.fileReader.result.replace(/^.*;base64,/,"")}}];return{ContentCreate:{ContentType:{_href:t.ContentTypeInfoList.ContentType[0]._href},mainLanguageCode:e.language,LocationCreate:{ParentLocation:{_href:l},sortField:"PATH",sortOrder:"ASC"},Section:null,alwaysAvailable:!0,remoteId:null,modificationDate:(new Date).toISOString(),fields:{field:a}}}}).catch(()=>window.eZ.helpers.notification.showErrorNotification("Cannot create content structure"))},d=({struct:e,token:t,siteaccess:i},a)=>{const l=new XMLHttpRequest,o=JSON.stringify(e),n={Accept:"application/vnd.ez.api.Content+json","Content-Type":"application/vnd.ez.api.ContentCreate+json","X-CSRF-Token":t,"X-Siteaccess":i};return new Promise((e,t)=>{if(l.open("POST","/api/ezp/v2/content/objects",!0),l.onreadystatechange=((e,t,i)=>{4===e.readyState&&(0===e.status&&""===e.statusText||(e.status>=400||!e.status?i(e):t(JSON.parse(e.response))))}).bind(null,l,e,t),a&&Object.keys(a).length){const e=a.upload;e&&Object.keys(e).length&&(l.upload.onabort=e.onabort,l.upload.onerror=t,l.upload.onload=e.onload,l.upload.onprogress=e.onprogress,l.upload.ontimeout=e.ontimeout),l.onerror=t,l.onloadstart=a.onloadstart}for(let e in n)n.hasOwnProperty(e)&&l.setRequestHeader(e,n[e]);l.send(o)})};t.checkCanUpload=((e,t,i,a)=>{const l=i.locationMappings.find(e=>e.contentTypeIdentifier===t.contentTypeIdentifier);return((e,t,i)=>{if(!i.hasOwnProperty("contentCreatePermissionsConfig")||!i.contentCreatePermissionsConfig)return!0;const a=n(e,t,i);return i.contentCreatePermissionsConfig[a.contentTypeIdentifier]})(e,t,i)?o(e,l)?!(e.size>i.maxFileSize)||(a.fileSizeNotAllowedCallback(),!1):(a.fileTypeNotAllowedCallback(),!1):(a.contentTypeNotAllowedCallback(),!1)}),t.createFileStruct=((e,t)=>new Promise(function(e,t,i){this.addEventListener("load",()=>t({fileReader:this,file:e}),!1),this.addEventListener("error",()=>i(),!1),this.readAsDataURL(e)}.bind(new FileReader,e)).then(s.bind(null,t))),t.publishFile=((e,t,i)=>{d(e,t).then((({token:e,siteaccess:t},i)=>{if(!i||!i.hasOwnProperty("Content"))return Promise.reject("Cannot publish content based on an uploaded file");const l=new Request(i.Content.CurrentVersion.Version._href,{method:"POST",headers:{"X-Siteaccess":t,"X-CSRF-Token":e,"X-HTTP-Method-Override":"PUBLISH"},mode:"cors",credentials:"same-origin"});return fetch(l).then(a)}).bind(null,e)).then(i).catch(()=>window.eZ.helpers.notification.showErrorNotification("An error occurred while publishing a file"))}),t.deleteFile=(({token:e,siteaccess:t},i,l)=>{const o=new Request(i.Content._href,{method:"DELETE",headers:{"X-Siteaccess":t,"X-CSRF-Token":e},mode:"cors",credentials:"same-origin"});fetch(o).then(a).then(l).catch(()=>window.eZ.helpers.notification.showErrorNotification("An error occurred while deleting a file"))})},8:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(i(0)),l=n(i(1)),o=n(i(2));function n(e){return e&&e.__esModule?e:{default:e}}const s=e=>{const t={className:"c-tooltip-popup",hidden:!e.visible};return a.default.createElement("div",t,a.default.createElement("div",{className:"c-tooltip-popup__header"},a.default.createElement("div",{className:"c-tooltip-popup__title"},e.title),a.default.createElement("div",{className:"c-tooltip-popup__close",onClick:e.onClose,tabIndex:"-1"},a.default.createElement(o.default,{name:"discard",extraClasses:"ez-icon--medium"}))),a.default.createElement("div",{className:"c-tooltip-popup__content"},e.children))};s.propTypes={title:l.default.string.isRequired,children:l.default.node.isRequired,visible:l.default.bool.isRequired,onClose:l.default.func},s.defaultProps={onClose:()=>{}},t.default=s}}).default}); //# sourceMappingURL=MultiFileUpload.module.js.map \ No newline at end of file diff --git a/Resources/public/js/MultiFileUpload.module.js.map b/Resources/public/js/MultiFileUpload.module.js.map index 2a8b28e9..cce4c3ad 100644 --- a/Resources/public/js/MultiFileUpload.module.js.map +++ b/Resources/public/js/MultiFileUpload.module.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap da51557b1f0757bb5b8f","webpack:///external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack:///external {\"root\":\"PropTypes\",\"commonjs2\":\"prop-types\",\"commonjs\":\"prop-types\",\"amd\":\"prop-types\"}","webpack:///./src/modules/common/tooltip-popup/tooltip.popup.component.js","webpack:///./src/modules/multi-file-upload/multi.file.upload.module.js","webpack:///./src/modules/multi-file-upload/components/upload-popup/upload.popup.component.js","webpack:///./src/modules/multi-file-upload/components/drop-area/drop.area.component.js","webpack:///./src/modules/multi-file-upload/components/upload-list/upload.list.component.js","webpack:///./src/modules/multi-file-upload/components/upload-list/upload.item.component.js","webpack:///./src/modules/multi-file-upload/components/progress-bar/progress.bar.component.js","webpack:///./src/modules/multi-file-upload/services/multi.file.upload.service.js","webpack:///./src/modules/common/tooltip-popup/css/tooltip.popup.component.css?aef1","webpack:///./src/modules/common/tooltip-popup/css/tooltip.popup.component.css","webpack:///./src/modules/multi-file-upload/helpers/text.helper.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./src/modules/common/icon/icon.js","webpack:///./node_modules/style-loader/lib/urls.js"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","TooltipPopupComponent","props","attrs","className","hidden","visible","_react2","default","createElement","title","onClick","onClose","_icon2","children","propTypes","PropTypes","string","isRequired","node","bool","func","defaultProps","_react","_multiFileUpload","MultiFileUploadModule","Component","constructor","super","popupVisible","_itemsUploaded","itemsToUpload","length","handleDropOnWindow","bind","handleAfterUpload","showUploadPopup","hidePopup","processUploadedFiles","state","allowDropOnWindow","uploadDisabled","values","contentCreatePermissionsConfig","every","isEnabled","componentDidMount","manageDropEvent","componentDidUpdate","_state","window","addEventListener","preventDefaultAction","setState","assign","onPopupClose","itemsUploaded","event","removeEventListener","extractDroppedFilesList","list","nativeEvent","dataTransfer","target","Array","from","files","map","file","id","Math","floor","random","Date","now","preventDefault","stopPropagation","renderBtn","withUploadButton","Translator","trans","type","disabled","xlinkHref","renderPopup","onAfterUpload","_uploadPopup2","render","adminUiConfig","shape","multiFileUpload","defaultMappings","arrayOf","fallbackContentType","locationMappings","maxFileSize","number","token","siteaccess","parentInfo","contentTypeIdentifier","contentTypeId","locationPath","language","checkCanUpload","createFileStruct","deleteFile","publishFile","array","CLASS_SCROLL_DISABLED","UploadPopupModule","uploadFiles","document","body","classList","add","componentWillUnmount","remove","UNSAFE_componentWillReceiveProps","filter","stateItem","find","propItem","tooltipAttrs","listAttrs","_tooltipPopup2","_extends","_dropArea2","onDrop","_uploadList2","popupTitle","onUpload","onUploadEnd","onUploadFail","onItemEdit","onItemRemove","_text","DropAreaComponent","_refFileInput","openFileSelector","handleUpload","click","maxFileSizeMessage","dropActionMessage","uploadBtnLabel","multiple","fileSizeToString","ref","onChange","UploadListComponent","items","item","data","handleAfterAbort","uploaded","total","handleAfterDelete","renderItemToUpload","renderItem","isUploaded","onAfterAbort","renderUploadedItem","onAfterDelete","customAttrs","_props","key","_uploadItem2","uploadedItemsListTitle","UploadItemComponent","handleFileSizeNotAllowed","handleFileTypeNotAllowed","handleContentTypeNotAllowed","handleEditBtnClick","handleUploadAbort","handleUploadError","handleUploadLoad","handleUploadProgress","handleUploadEnd","handleLoadStart","handleFileDeleted","abortUploading","contentInfoInput","contentVersionInfoInput","contentVersionNoInput","contentEditBtn","uploading","disallowed","disallowedType","disallowedSize","disallowedContentType","aborted","failed","deleted","progress","xhr","struct","totalSize","size","uploadedSize","querySelector","config","callbacks","fileTypeNotAllowedCallback","fileSizeNotAllowedCallback","contentTypeNotAllowedCallback","then","initPublishFile","upload","onabort","onerror","onload","onprogress","onloadstart","fraction","loaded","parseInt","JSON","parse","response","abort","detectFileType","filetype","includes","renderProgressBar","_progressBar2","renderErrorMessage","_state2","isError","cannotUploadMessage","disallowedTypeMessage","disallowedSizeMessage","disallowedContentTypeMessage","msg","renderSuccessMessage","_state3","isSuccess","message","renderAbortBtn","_state4","label","content","Content","contentId","_id","languageCode","CurrentVersion","Version","VersionInfo","VersionTranslationInfo","Language","versionNo","value","checked","renderEditBtn","_state5","renderDeleteBtn","_state6","ProgressBarComponent","style","width","handleRequestResponse","ok","Error","text","findFileTypeMapping","mappings","mimeTypes","checkFileTypeAllowed","locationMapping","isMimeTypeAllowed","detectContentTypeMapping","prepareStruct","parentLocation","endsWith","slice","mapping","identifier","request","Request","method","headers","Accept","X-Siteaccess","X-CSRF-Token","credentials","mode","fetch","getContentTypeByIdentifier","json","catch","eZ","helpers","notification","showErrorNotification","fields","fieldDefinitionIdentifier","nameFieldIdentifier","fieldValue","contentFieldIdentifier","fileName","fileReader","result","replace","ContentCreate","ContentType","_href","ContentTypeInfoList","mainLanguageCode","LocationCreate","ParentLocation","sortField","sortOrder","Section","alwaysAvailable","remoteId","modificationDate","toISOString","field","createDraft","requestEventHandlers","XMLHttpRequest","stringify","Content-Type","Promise","resolve","reject","open","onreadystatechange","onSuccess","onError","readyState","status","statusText","keys","uploadEvents","ontimeout","headerType","setRequestHeader","send","contentTypeConfig","canCreateContent","params","readAsDataURL","FileReader","callback","X-HTTP-Method-Override","options","hmr","transform","insertInto","undefined","locals","push","filesize","decimalUnits","unitIndex","toFixed","useSourceMap","toString","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","toComment","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","stylesInDom","isOldIE","fn","memo","apply","arguments","memoize","all","atob","getElement","styleTarget","HTMLIFrameElement","contentDocument","head","e","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","addAttrs","el","forEach","setAttribute","obj","update","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","link","rel","createLinkElement","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","href","styleSheet","cssText","createTextNode","newObj","DEBUG","newList","mayRemove","replaceText","textStore","index","replacement","Boolean","cssNode","childNodes","Icon","linkHref","customPath","extraClasses","location","baseUrl","protocol","host","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","trim","$1","test"],"mappings":"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","file":"MultiFileUpload.module.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"prop-types\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"prop-types\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MultiFileUpload\"] = factory(require(\"react\"), require(\"prop-types\"));\n\telse\n\t\troot[\"eZ\"] = root[\"eZ\"] || {}, root[\"eZ\"][\"modules\"] = root[\"eZ\"][\"modules\"] || {}, root[\"eZ\"][\"modules\"][\"MultiFileUpload\"] = factory(root[\"React\"], root[\"PropTypes\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 110);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap da51557b1f0757bb5b8f","module.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}\n// module id = 0\n// module chunks = 0 1 2","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"root\":\"PropTypes\",\"commonjs2\":\"prop-types\",\"commonjs\":\"prop-types\",\"amd\":\"prop-types\"}\n// module id = 1\n// module chunks = 0 1 2","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './css/tooltip.popup.component.css';\nimport Icon from '../icon/icon';\n\nconst TooltipPopupComponent = (props) => {\n const attrs = {\n className: 'c-tooltip-popup',\n hidden: !props.visible,\n };\n\n return (\n
\n
\n
{props.title}
\n
\n \n
\n
\n
{props.children}
\n
\n );\n};\n\nTooltipPopupComponent.propTypes = {\n title: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n visible: PropTypes.bool.isRequired,\n onClose: PropTypes.func,\n};\n\nTooltipPopupComponent.defaultProps = {\n onClose: () => {},\n};\n\nexport default TooltipPopupComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/common/tooltip-popup/tooltip.popup.component.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport UploadPopupComponent from './components/upload-popup/upload.popup.component';\nimport { createFileStruct, publishFile, deleteFile, checkCanUpload } from './services/multi.file.upload.service';\n\nexport default class MultiFileUploadModule extends Component {\n constructor(props) {\n super(props);\n\n let popupVisible = true;\n\n this._itemsUploaded = [];\n\n if (!props.itemsToUpload || !props.itemsToUpload.length) {\n popupVisible = false;\n }\n\n this.handleDropOnWindow = this.handleDropOnWindow.bind(this);\n this.handleAfterUpload = this.handleAfterUpload.bind(this);\n this.showUploadPopup = this.showUploadPopup.bind(this);\n this.hidePopup = this.hidePopup.bind(this);\n this.processUploadedFiles = this.processUploadedFiles.bind(this);\n\n this.state = {\n popupVisible,\n itemsToUpload: props.itemsToUpload,\n allowDropOnWindow: true,\n uploadDisabled: Object.values(props.contentCreatePermissionsConfig).every((isEnabled) => !isEnabled),\n };\n }\n\n componentDidMount() {\n this.manageDropEvent();\n }\n\n componentDidUpdate() {\n this.manageDropEvent();\n }\n\n /**\n * Attaches `drop` and `dragover` events handlers on window\n *\n * @method manageDropEvent\n * @memberof MultiFileUploadModule\n */\n manageDropEvent() {\n const { uploadDisabled, popupVisible, itemsToUpload } = this.state;\n\n if (!uploadDisabled && !popupVisible && !itemsToUpload.length) {\n window.addEventListener('drop', this.handleDropOnWindow, false);\n window.addEventListener('dragover', this.preventDefaultAction, false);\n }\n }\n\n /**\n * Hides multi file upload popup\n *\n * @method hidePopup\n * @memberof MultiFileUploadModule\n */\n hidePopup() {\n this.setState((state) => Object.assign({}, state, { popupVisible: false }));\n\n this.props.onPopupClose(this._itemsUploaded);\n }\n\n /**\n * Displays multi file upload popup\n *\n * @method showUploadPopup\n * @memberof MultiFileUploadModule\n */\n showUploadPopup() {\n this.setState((state) =>\n Object.assign({}, state, {\n popupVisible: true,\n itemsToUpload: [],\n })\n );\n }\n\n /**\n * Keeps information about uploaded files.\n * We want to avoid component rerendering so it's stored in an object instance property.\n *\n * @method handleAfterUpload\n * @param {Array} itemsUploaded\n * @memberof MultiFileUploadModule\n */\n handleAfterUpload(itemsUploaded) {\n this._itemsUploaded = itemsUploaded;\n }\n\n /**\n * Handles dropping on window.\n * When file/files are dropped onto window the `drop` and `dragover` event handlers are removed.\n *\n * @method handleDropOnWindow\n * @param {Event} event\n * @memberof MultiFileUploadModule\n */\n handleDropOnWindow(event) {\n this.preventDefaultAction(event);\n\n const itemsToUpload = this.processUploadedFiles(event);\n\n // Covers the case when dragging and dropping page elements inside the browser,\n // like links, images, etc.\n if (!this.state.allowDropOnWindow || !itemsToUpload.length) {\n return;\n }\n\n window.removeEventListener('drop', this.handleDropOnWindow, false);\n window.removeEventListener('dragover', this.preventDefaultAction, false);\n\n this.setState((state) =>\n Object.assign({}, state, {\n itemsToUpload,\n popupVisible: true,\n allowDropOnWindow: false,\n })\n );\n }\n\n /**\n * Extracts information about dropped files\n *\n * @method extractDroppedFilesList\n * @param {Event} event\n * @returns {undefined|Array}\n * @memberof MultiFileUploadModule\n */\n extractDroppedFilesList(event) {\n let list;\n\n if (event.nativeEvent) {\n list = event.nativeEvent.dataTransfer || event.nativeEvent.target;\n } else {\n list = event.dataTransfer;\n }\n\n return list;\n }\n\n /**\n * Processes uploaded files and generates an unique file id\n *\n * @method processUploadedFiles\n * @param {Event} event\n * @returns {Array}\n * @memberof MultiFileUploadModule\n */\n processUploadedFiles(event) {\n const list = this.extractDroppedFilesList(event);\n\n return Array.from(list.files).map((file) => ({\n id: Math.floor(Math.random() * Date.now()),\n file,\n }));\n }\n\n /**\n * Prevents default event actions\n *\n * @method preventDefaultAction\n * @param {Event} event\n * @memberof MultiFileUploadModule\n */\n preventDefaultAction(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Renders multi file upload button,\n * that allows to open multi file upload popup.\n *\n * @method renderBtn\n * @returns {null|Element}\n * @memberof MultiFileUploadModule\n */\n renderBtn() {\n if (!this.props.withUploadButton) {\n return null;\n }\n\n const uploadDisabled = this.state.uploadDisabled;\n const title = Translator.trans(/*@Desc(\"Upload sub-items\")*/ 'multi_file_upload_open_btn.label', {}, 'multi_file_upload');\n const attrs = { className: 'm-mfu__btn--upload', title, onClick: this.showUploadPopup, type: 'button' };\n\n if (uploadDisabled) {\n delete attrs.onClick;\n\n attrs.disabled = true;\n }\n\n return (\n \n );\n }\n\n /**\n * Renders a popup\n *\n * @method renderPopup\n * @returns {null|Element}\n * @memberof MultiFileUploadModule\n */\n renderPopup() {\n if (!this.state.popupVisible) {\n return null;\n }\n\n const attrs = {\n ...this.props,\n visible: true,\n onClose: this.hidePopup,\n itemsToUpload: this.state.itemsToUpload,\n onAfterUpload: this.handleAfterUpload,\n preventDefaultAction: this.preventDefaultAction,\n processUploadedFiles: this.processUploadedFiles,\n };\n\n return ;\n }\n\n render() {\n return (\n
\n {this.renderBtn()}\n {this.renderPopup()}\n
\n );\n }\n}\n\nMultiFileUploadModule.propTypes = {\n adminUiConfig: PropTypes.shape({\n multiFileUpload: PropTypes.shape({\n defaultMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n fallbackContentType: PropTypes.object.isRequired,\n locationMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n maxFileSize: PropTypes.number.isRequired,\n }).isRequired,\n token: PropTypes.string.isRequired,\n siteaccess: PropTypes.string.isRequired,\n }).isRequired,\n parentInfo: PropTypes.shape({\n contentTypeIdentifier: PropTypes.string.isRequired,\n contentTypeId: PropTypes.number.isRequired,\n locationPath: PropTypes.string.isRequired,\n language: PropTypes.string.isRequired,\n }).isRequired,\n checkCanUpload: PropTypes.func,\n createFileStruct: PropTypes.func,\n deleteFile: PropTypes.func,\n onPopupClose: PropTypes.func,\n publishFile: PropTypes.func,\n itemsToUpload: PropTypes.array,\n withUploadButton: PropTypes.bool,\n contentCreatePermissionsConfig: PropTypes.object,\n};\n\nMultiFileUploadModule.defaultProps = {\n checkCanUpload,\n createFileStruct,\n deleteFile,\n onPopupClose: () => {},\n publishFile,\n itemsToUpload: [],\n withUploadButton: true,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/multi.file.upload.module.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport TooltipPopup from '../../../common/tooltip-popup/tooltip.popup.component';\nimport DropAreaComponent from '../drop-area/drop.area.component';\nimport UploadListComponent from '../upload-list/upload.list.component';\n\nconst CLASS_SCROLL_DISABLED = 'ez-scroll-disabled';\n\nexport default class UploadPopupModule extends Component {\n constructor(props) {\n super(props);\n\n this.uploadFiles = this.uploadFiles.bind(this);\n\n this.state = { itemsToUpload: props.itemsToUpload };\n }\n\n componentDidMount() {\n window.document.body.classList.add(CLASS_SCROLL_DISABLED);\n }\n\n componentWillUnmount() {\n window.document.body.classList.remove(CLASS_SCROLL_DISABLED);\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n this.setState((state) => {\n const stateItems = state.itemsToUpload.filter(\n (stateItem) => !props.itemsToUpload.find((propItem) => propItem.id === stateItem.id)\n );\n\n return { itemsToUpload: [...stateItems, ...props.itemsToUpload] };\n });\n }\n\n /**\n * Uploads files\n *\n * @method uploadFiles\n * @param {Array} itemsToUpload\n * @memberof UploadPopupModule\n */\n uploadFiles(itemsToUpload) {\n this.setState(() => ({ itemsToUpload }));\n }\n\n render() {\n const tooltipAttrs = this.props;\n const listAttrs = {\n ...tooltipAttrs,\n itemsToUpload: this.state.itemsToUpload,\n };\n const title = Translator.trans(/*@Desc(\"Multi-file upload\")*/ 'upload_popup.title', {}, 'multi_file_upload');\n\n return (\n
\n \n \n \n \n
\n );\n }\n}\n\nUploadPopupModule.propTypes = {\n popupTitle: PropTypes.string.isRequired,\n visible: PropTypes.bool,\n onUpload: PropTypes.func,\n onUploadEnd: PropTypes.func,\n onUploadFail: PropTypes.func,\n onItemEdit: PropTypes.func,\n onItemRemove: PropTypes.func,\n onClose: PropTypes.func,\n itemsToUpload: PropTypes.array,\n onAfterUpload: PropTypes.func.isRequired,\n createFileStruct: PropTypes.func.isRequired,\n publishFile: PropTypes.func.isRequired,\n deleteFile: PropTypes.func.isRequired,\n checkCanUpload: PropTypes.func.isRequired,\n adminUiConfig: PropTypes.shape({\n multiFileUpload: PropTypes.shape({\n defaultMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n fallbackContentType: PropTypes.object.isRequired,\n locationMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n maxFileSize: PropTypes.number.isRequired,\n }).isRequired,\n token: PropTypes.string.isRequired,\n siteaccess: PropTypes.string.isRequired,\n }).isRequired,\n parentInfo: PropTypes.shape({\n contentTypeIdentifier: PropTypes.string.isRequired,\n contentTypeId: PropTypes.number.isRequired,\n locationPath: PropTypes.string.isRequired,\n language: PropTypes.string.isRequired,\n }).isRequired,\n preventDefaultAction: PropTypes.func.isRequired,\n processUploadedFiles: PropTypes.func.isRequired,\n};\n\nUploadPopupModule.defaultProps = {\n visible: true,\n itemsToUpload: [],\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/components/upload-popup/upload.popup.component.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { fileSizeToString } from '../../helpers/text.helper';\n\nexport default class DropAreaComponent extends Component {\n constructor(props) {\n super(props);\n\n this._refFileInput = null;\n\n this.openFileSelector = this.openFileSelector.bind(this);\n this.handleUpload = this.handleUpload.bind(this);\n }\n\n /**\n * Opens a browser native file selector\n *\n * @method openFileSelector\n * @param {Event} event\n * @memberof DropAreaComponent\n */\n openFileSelector(event) {\n event.preventDefault();\n\n this._refFileInput.click();\n }\n\n /**\n * Handles file upload\n *\n * @method handleUpload\n * @param {Event} event\n * @memberof DropAreaComponent\n */\n handleUpload(event) {\n this.props.preventDefaultAction(event);\n this.props.onDrop(this.props.processUploadedFiles(event));\n }\n\n componentDidMount() {\n window.addEventListener('drop', this.props.preventDefaultAction, false);\n window.addEventListener('dragover', this.props.preventDefaultAction, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener('drop', this.props.preventDefaultAction, false);\n window.removeEventListener('dragover', this.props.preventDefaultAction, false);\n }\n\n render() {\n const maxFileSizeMessage = Translator.trans(/*@Desc(\"Max file size:\")*/ 'max_file_size.message', {}, 'multi_file_upload');\n const dropActionMessage = Translator.trans(\n /*@Desc(\"Drag and drop your files on browser window or upload them\")*/ 'drop_action.message',\n {},\n 'multi_file_upload'\n );\n const uploadBtnLabel = Translator.trans(/*@Desc(\"Upload sub-items\")*/ 'upload_btn.label', {}, 'multi_file_upload');\n\n return (\n
\n
{dropActionMessage}
\n
\n \n \n \n {uploadBtnLabel}\n
\n
\n ({maxFileSizeMessage} {fileSizeToString(this.props.maxFileSize)})\n
\n (this._refFileInput = ref)}\n id=\"mfu-files\"\n type=\"file\"\n name=\"files[]\"\n hidden\n multiple\n onChange={this.handleUpload}\n />\n \n );\n }\n}\n\nDropAreaComponent.propTypes = {\n onDrop: PropTypes.func.isRequired,\n maxFileSize: PropTypes.number.isRequired,\n processUploadedFiles: PropTypes.func.isRequired,\n preventDefaultAction: PropTypes.func.isRequired,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/components/drop-area/drop.area.component.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport UploadItemComponent from './upload.item.component';\n\nexport default class UploadListComponent extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n itemsToUpload: props.itemsToUpload,\n items: [],\n };\n }\n\n UNSAFE_componentWillReceiveProps(props) {\n this.setState((state) => {\n const stateItems = state.itemsToUpload.filter(\n (stateItem) => !props.itemsToUpload.find((propItem) => propItem.id === stateItem.id)\n );\n\n return { itemsToUpload: [...stateItems, ...props.itemsToUpload] };\n });\n }\n\n componentDidUpdate() {\n this.props.onAfterUpload(this.state.items);\n }\n\n /**\n * Handles after file upload event\n *\n * @method handleAfterUpload\n * @param {Object} item\n * @memberof UploadListComponent\n */\n handleAfterUpload(item) {\n this.setState((state) => ({\n itemsToUpload: state.itemsToUpload.filter((data) => data.id !== item.id),\n items: [...state.items, item],\n }));\n }\n\n /**\n * Handles after file upload abort event\n *\n * @method handleAfterAbort\n * @param {Object} item\n * @memberof UploadListComponent\n */\n handleAfterAbort(item) {\n this.setState((state) => {\n const items = state.items.filter((data) => data.id !== item.id);\n const itemsToUpload = state.itemsToUpload.filter((data) => data.id !== item.id);\n\n return Object.assign({}, state, {\n uploaded: items.length,\n total: items.length + itemsToUpload.length,\n itemsToUpload,\n items,\n });\n });\n }\n\n /**\n * Handles after file delete event\n *\n * @method handleAfterDelete\n * @param {Object} item\n * @memberof UploadListComponent\n */\n handleAfterDelete(item) {\n this.setState((state) => {\n const items = state.items.filter((data) => data.id !== item.id);\n const itemsToUpload = state.itemsToUpload.filter((data) => data.id !== item.id);\n\n return Object.assign({}, state, {\n uploaded: items.length,\n total: items.length + itemsToUpload.length,\n itemsToUpload,\n items,\n });\n });\n }\n\n /**\n * Renders an item to upload\n *\n * @method renderItemToUpload\n * @param {Object} item\n * @memberof UploadListComponent\n * @returns {Element}\n */\n renderItemToUpload(item) {\n return this.renderItem(item, {\n isUploaded: false,\n createFileStruct: this.props.createFileStruct,\n publishFile: this.props.publishFile,\n onAfterAbort: this.handleAfterAbort.bind(this),\n onAfterUpload: this.handleAfterUpload.bind(this),\n checkCanUpload: this.props.checkCanUpload,\n });\n }\n\n /**\n * Renders an uploaded item\n *\n * @method renderUploadedItem\n * @param {Object} item\n * @memberof UploadListComponent\n * @returns {Element}\n */\n renderUploadedItem(item) {\n return this.renderItem(item, {\n isUploaded: true,\n deleteFile: this.props.deleteFile,\n onAfterDelete: this.handleAfterDelete.bind(this),\n });\n }\n\n /**\n * Renders an item\n *\n * @method renderItem\n * @param {Object} item\n * @param {Object} customAttrs component's custom attrs\n * @memberof UploadListComponent\n * @returns {Element}\n */\n renderItem(item, customAttrs) {\n const { adminUiConfig, parentInfo, contentCreatePermissionsConfig } = this.props;\n const attrs = Object.assign(\n {\n key: item.id,\n data: item,\n adminUiConfig,\n parentInfo,\n contentCreatePermissionsConfig,\n },\n customAttrs\n );\n\n return ;\n }\n\n render() {\n const { items, itemsToUpload } = this.state;\n const uploaded = items.length;\n const total = uploaded + itemsToUpload.length;\n\n return (\n
\n
\n {this.props.uploadedItemsListTitle} ({uploaded}/{total})\n
\n
\n {itemsToUpload.map(this.renderItemToUpload.bind(this))}\n {items.map(this.renderUploadedItem.bind(this))}\n
\n
\n );\n }\n}\n\nUploadListComponent.propTypes = {\n itemsToUpload: PropTypes.arrayOf(PropTypes.object),\n onAfterUpload: PropTypes.func.isRequired,\n createFileStruct: PropTypes.func.isRequired,\n publishFile: PropTypes.func.isRequired,\n deleteFile: PropTypes.func.isRequired,\n checkCanUpload: PropTypes.func.isRequired,\n adminUiConfig: PropTypes.shape({\n multiFileUpload: PropTypes.shape({\n defaultMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n fallbackContentType: PropTypes.object.isRequired,\n locationMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n maxFileSize: PropTypes.number.isRequired,\n }).isRequired,\n token: PropTypes.string.isRequired,\n siteaccess: PropTypes.string.isRequired,\n }).isRequired,\n parentInfo: PropTypes.shape({\n contentTypeIdentifier: PropTypes.string.isRequired,\n contentTypeId: PropTypes.number.isRequired,\n locationPath: PropTypes.string.isRequired,\n language: PropTypes.string.isRequired,\n }).isRequired,\n uploadedItemsListTitle: PropTypes.string.isRequired,\n};\n\nUploadListComponent.defaultProps = {\n itemsToUpload: [],\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/components/upload-list/upload.list.component.js","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport ProgressBarComponent from '../progress-bar/progress.bar.component';\nimport { fileSizeToString } from '../../helpers/text.helper';\n\nexport default class UploadItemComponent extends Component {\n constructor(props) {\n super(props);\n\n this.handleFileSizeNotAllowed = this.handleFileSizeNotAllowed.bind(this);\n this.handleFileTypeNotAllowed = this.handleFileTypeNotAllowed.bind(this);\n this.handleContentTypeNotAllowed = this.handleContentTypeNotAllowed.bind(this);\n this.handleEditBtnClick = this.handleEditBtnClick.bind(this);\n this.handleUploadAbort = this.handleUploadAbort.bind(this);\n this.handleUploadError = this.handleUploadError.bind(this);\n this.handleUploadLoad = this.handleUploadLoad.bind(this);\n this.handleUploadProgress = this.handleUploadProgress.bind(this);\n this.handleUploadEnd = this.handleUploadEnd.bind(this);\n this.handleLoadStart = this.handleLoadStart.bind(this);\n this.handleFileDeleted = this.handleFileDeleted.bind(this);\n this.abortUploading = this.abortUploading.bind(this);\n this.deleteFile = this.deleteFile.bind(this);\n this.contentInfoInput = null;\n this.contentVersionInfoInput = null;\n this.contentVersionNoInput = null;\n this.contentEditBtn = null;\n this.state = {\n uploading: false,\n uploaded: props.isUploaded,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n aborted: false,\n failed: false,\n deleted: false,\n progress: 0,\n xhr: null,\n struct: props.data.struct || null,\n totalSize: fileSizeToString(props.data.file.size),\n uploadedSize: '0',\n };\n }\n\n componentDidMount() {\n const {\n data,\n adminUiConfig,\n parentInfo,\n createFileStruct,\n isUploaded,\n checkCanUpload,\n contentCreatePermissionsConfig,\n } = this.props;\n\n this.contentInfoInput = window.document.querySelector('#form_subitems_content_edit_content_info');\n this.contentVersionInfoInput = window.document.querySelector('#form_subitems_content_edit_version_info_content_info');\n this.contentVersionNoInput = window.document.querySelector('#form_subitems_content_edit_version_info_version_no');\n this.contentEditBtn = window.document.querySelector('#form_subitems_content_edit_create');\n\n if (isUploaded) {\n return;\n }\n\n const config = {\n ...adminUiConfig.multiFileUpload,\n contentCreatePermissionsConfig,\n };\n const callbacks = {\n fileTypeNotAllowedCallback: this.handleFileTypeNotAllowed,\n fileSizeNotAllowedCallback: this.handleFileSizeNotAllowed,\n contentTypeNotAllowedCallback: this.handleContentTypeNotAllowed,\n };\n\n if (!checkCanUpload(data.file, parentInfo, config, callbacks)) {\n this.setState(() => ({\n uploading: false,\n disallowed: true,\n uploaded: false,\n aborted: false,\n failed: true,\n }));\n\n return;\n }\n\n createFileStruct(data.file, {\n parentInfo,\n config: adminUiConfig,\n }).then(this.initPublishFile.bind(this, adminUiConfig));\n }\n\n /**\n * Initializes file-based content publishing\n *\n * @method initPublishFile\n * @param {Object} restInfo config object containing token and siteaccess properties\n * @param {Object} struct\n * @memberof UploadItemComponent\n */\n initPublishFile({ token, siteaccess }, struct) {\n this.props.publishFile(\n { struct, token, siteaccess },\n {\n upload: {\n onabort: this.handleUploadAbort,\n onerror: this.handleUploadError,\n onload: this.handleUploadLoad,\n onprogress: this.handleUploadProgress,\n },\n onloadstart: this.handleLoadStart,\n onerror: this.handleUploadError,\n },\n this.handleUploadEnd\n );\n }\n\n /**\n * Handles the case when a file cannot be upload because of file type\n *\n * @method handleFileTypeNotAllowed\n * @memberof UploadItemComponent\n */\n handleFileTypeNotAllowed() {\n this.setState(() => ({\n uploading: false,\n disallowed: true,\n disallowedType: true,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: false,\n aborted: false,\n failed: true,\n }));\n }\n\n /**\n * Handles the case when a file cannot be upload because of file size\n *\n * @method handleFileSizeNotAllowed\n * @memberof UploadItemComponent\n */\n handleFileSizeNotAllowed() {\n this.setState(() => ({\n uploading: false,\n disallowed: true,\n disallowedType: false,\n disallowedSize: true,\n disallowedContentType: false,\n uploaded: false,\n aborted: false,\n failed: true,\n }));\n }\n\n handleContentTypeNotAllowed() {\n this.setState(() => ({\n uploading: false,\n disallowed: true,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: true,\n uploaded: false,\n aborted: false,\n failed: true,\n }));\n }\n\n /**\n * Handles the upload load start event\n *\n * @method handleLoadStart\n * @param {Event} event\n * @memberof UploadItemComponent\n */\n handleLoadStart(event) {\n this.setState(() => ({\n uploading: true,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: false,\n aborted: false,\n failed: false,\n xhr: event.target,\n }));\n }\n\n /**\n * Handles the upload abort event\n *\n * @method handleUploadAbort\n * @memberof UploadItemComponent\n */\n handleUploadAbort() {\n this.setState(() => ({\n uploading: false,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: false,\n aborted: true,\n failed: false,\n }));\n }\n\n /**\n * Handles the upload error event\n *\n * @method handleUploadError\n * @memberof UploadItemComponent\n */\n handleUploadError() {\n this.setState((state) => ({\n uploading: false,\n disallowed: state.disallowed,\n disallowedSize: state.disallowedSize,\n disallowedType: state.disallowedType,\n disallowedContentType: state.disallowedContentType,\n uploaded: false,\n aborted: state.aborted,\n failed: true,\n }));\n }\n\n /**\n * Handles the upload load event\n *\n * @method handleUploadLoad\n * @memberof UploadItemComponent\n */\n handleUploadLoad() {\n this.setState(() => ({\n uploading: false,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: true,\n aborted: false,\n failed: false,\n }));\n }\n\n /**\n * Handles the upload progress event\n *\n * @method handleUploadProgress\n * @param {Event} event\n * @memberof UploadItemComponent\n */\n handleUploadProgress(event) {\n const fraction = event.loaded / event.total;\n const progress = parseInt(fraction * 100, 10);\n\n this.setState(() => ({\n uploadedSize: fileSizeToString(fraction * parseInt(this.props.data.file.size, 10)),\n uploading: true,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: false,\n aborted: false,\n failed: false,\n progress,\n }));\n }\n\n /**\n * Handles the upload end event\n *\n * @method handleUploadEnd\n * @memberof UploadItemComponent\n */\n handleUploadEnd() {\n this.setState(\n (state) => {\n const struct = JSON.parse(state.xhr.response);\n\n return {\n struct,\n uploading: false,\n disallowed: false,\n disallowedType: false,\n disallowedSize: false,\n disallowedContentType: false,\n uploaded: true,\n aborted: false,\n failed: false,\n };\n },\n () => {\n const data = this.props.data;\n\n this.props.onAfterUpload({ ...data, struct: this.state.struct });\n }\n );\n }\n\n /**\n * Aborts file upload\n *\n * @method abortUploading\n * @memberof UploadItemComponent\n */\n abortUploading() {\n this.state.xhr.abort();\n this.props.onAfterAbort(this.props.data);\n }\n\n /**\n * Deletes a file\n *\n * @method deleteFile\n * @memberof UploadItemComponent\n */\n deleteFile() {\n this.setState(\n () => ({ deleted: true }),\n () => this.props.deleteFile(this.props.adminUiConfig, this.state.struct, this.handleFileDeleted)\n );\n }\n\n /**\n * Handles the file deleted event\n *\n * @method handleFileDeleted\n * @memberof UploadItemComponent\n */\n handleFileDeleted() {\n this.props.onAfterDelete(this.props.data);\n }\n\n /**\n * Detects a file type of uploaded file\n *\n * @method detectFileType\n * @memberof UploadItemComponent\n * @returns {String}\n */\n detectFileType() {\n const filetype = this.props.data.file.type;\n\n if (filetype.includes('/pdf')) {\n return 'pdf-file';\n } else if (filetype.includes('video/')) {\n return 'file-video';\n } else if (filetype.includes('image/')) {\n return 'image';\n }\n\n return 'file';\n }\n\n /**\n * Renders a progress bar\n *\n * @method renderProgressBar\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderProgressBar() {\n const { uploaded, aborted, progress, totalSize, uploadedSize, disallowed } = this.state;\n\n if (this.props.isUploaded || uploaded || aborted || disallowed) {\n return null;\n }\n\n return ;\n }\n\n /**\n * Renders an error message\n *\n * @method renderErrorMessage\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderErrorMessage() {\n const { uploaded, aborted, disallowedType, disallowedSize, failed, uploading, disallowedContentType } = this.state;\n const isError = !uploaded && !aborted && (disallowedSize || disallowedType || disallowedContentType) && failed && !uploading;\n const cannotUploadMessage = Translator.trans(/*@Desc(\"Cannot upload file\")*/ 'cannot_upload.message', {}, 'multi_file_upload');\n const disallowedTypeMessage = Translator.trans(\n /*@Desc(\"File type is not allowed\")*/ 'disallowed_type.message',\n {},\n 'multi_file_upload'\n );\n const disallowedSizeMessage = Translator.trans(\n /*@Desc(\"File size is not allowed\")*/ 'disallowed_size.message',\n {},\n 'multi_file_upload'\n );\n const disallowedContentTypeMessage = Translator.trans(\n /*@Desc(\"You do not have permission to create this content item\")*/ 'disallowed_content_type.message',\n {},\n 'multi_file_upload'\n );\n let msg = cannotUploadMessage;\n\n if (disallowedType) {\n msg = disallowedTypeMessage;\n }\n\n if (disallowedSize) {\n msg = disallowedSizeMessage;\n }\n\n if (disallowedContentType) {\n msg = disallowedContentTypeMessage;\n }\n\n return isError ?
{msg}
: null;\n }\n\n /**\n * Renders an error message\n *\n * @method renderErrorMessage\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderSuccessMessage() {\n const { uploaded, aborted, disallowedSize, disallowedType, failed, uploading } = this.state;\n const isSuccess = uploaded && !aborted && !(disallowedSize || disallowedType) && !failed && !uploading;\n const message = Translator.trans(/*@Desc(\"Uploaded\")*/ 'upload.success.message', {}, 'multi_file_upload');\n\n return isSuccess ?
{message}
: null;\n }\n\n /**\n * Renders an abort upload button\n *\n * @method renderAbortBtn\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderAbortBtn() {\n const { uploaded, aborted, disallowedSize, disallowedType, failed, uploading } = this.state;\n const canAbort = !uploaded && !aborted && !disallowedSize && !disallowedType && !failed && uploading;\n\n if (!canAbort) {\n return null;\n }\n\n const label = Translator.trans(/*@Desc(\"Abort\")*/ 'abort.label', {}, 'multi_file_upload');\n\n return (\n
\n \n \n \n
\n );\n }\n\n /**\n * Handles the edit button click event. Fills in the hidden form to redirect a user to a correct content edit location.\n *\n * @method handleEditBtnClick\n * @memberof UploadItemComponent\n * @param {Event} event\n */\n handleEditBtnClick(event) {\n event.preventDefault();\n\n const { struct } = this.state;\n const content = struct.Content;\n const contentId = content._id;\n const languageCode = content.CurrentVersion.Version.VersionInfo.VersionTranslationInfo.Language['0'].languageCode;\n const versionNo = content.CurrentVersion.Version.VersionInfo.versionNo;\n\n this.contentInfoInput.value = contentId;\n this.contentVersionInfoInput.value = contentId;\n this.contentVersionNoInput.value = versionNo;\n window.document.querySelector(`#form_subitems_content_edit_language_${languageCode}`).checked = true;\n this.contentEditBtn.click();\n }\n\n /**\n * Renders an edit content button\n *\n * @method renderEditBtn\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderEditBtn() {\n const { uploaded, aborted, disallowedSize, disallowedType, failed, uploading } = this.state;\n const canEdit = this.props.isUploaded || (uploaded && !aborted && !(disallowedSize || disallowedType) && !failed && !uploading);\n\n if (!canEdit) {\n return null;\n }\n\n const label = Translator.trans(/*@Desc(\"Edit\")*/ 'edit.label', {}, 'multi_file_upload');\n\n return (\n
\n \n \n \n
\n );\n }\n\n /**\n * Renders an delete content button\n *\n * @method renderDeleteBtn\n * @memberof UploadItemComponent\n * @returns {null|Element}\n */\n renderDeleteBtn() {\n const { uploaded, aborted, disallowedSize, disallowedType, failed, uploading } = this.state;\n const canDelete = this.props.isUploaded || (uploaded && !aborted && !(disallowedSize || disallowedType) && !failed && !uploading);\n\n if (!canDelete) {\n return null;\n }\n\n const label = Translator.trans(/*@Desc(\"Delete\")*/ 'delete.label', {}, 'multi_file_upload');\n\n return (\n
\n \n \n \n
\n );\n }\n\n render() {\n if (this.state.deleted) {\n return null;\n }\n\n return (\n
\n
\n \n \n \n
\n
\n
{this.props.data.file.name}
\n
{this.state.uploaded ? this.state.totalSize : ''}
\n
\n
\n {this.renderErrorMessage()}\n {this.renderSuccessMessage()}\n {this.renderProgressBar()}\n
\n
\n {this.renderAbortBtn()}\n {this.renderEditBtn()}\n {this.renderDeleteBtn()}\n
\n
\n );\n }\n}\n\nUploadItemComponent.propTypes = {\n data: PropTypes.object.isRequired,\n onAfterUpload: PropTypes.func.isRequired,\n onAfterAbort: PropTypes.func.isRequired,\n onAfterDelete: PropTypes.func.isRequired,\n isUploaded: PropTypes.bool.isRequired,\n createFileStruct: PropTypes.func.isRequired,\n publishFile: PropTypes.func.isRequired,\n deleteFile: PropTypes.func.isRequired,\n checkCanUpload: PropTypes.func.isRequired,\n adminUiConfig: PropTypes.shape({\n multiFileUpload: PropTypes.shape({\n defaultMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n fallbackContentType: PropTypes.object.isRequired,\n locationMappings: PropTypes.arrayOf(PropTypes.object).isRequired,\n maxFileSize: PropTypes.number.isRequired,\n }).isRequired,\n token: PropTypes.string.isRequired,\n siteaccess: PropTypes.string.isRequired,\n }).isRequired,\n parentInfo: PropTypes.shape({\n contentTypeIdentifier: PropTypes.string.isRequired,\n contentTypeId: PropTypes.number.isRequired,\n locationPath: PropTypes.string.isRequired,\n language: PropTypes.string.isRequired,\n }).isRequired,\n contentCreatePermissionsConfig: PropTypes.object,\n};\n\nUploadItemComponent.defaultProps = {\n isUploaded: false,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/components/upload-list/upload.item.component.js","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ProgressBarComponent = (props) => {\n return (\n
\n
\n
{`${props.progress}%`}
\n
\n {props.uploaded} of {props.total}\n
\n
\n );\n};\n\nProgressBarComponent.propTypes = {\n progress: PropTypes.number.isRequired,\n uploaded: PropTypes.string.isRequired,\n total: PropTypes.string.isRequired,\n};\n\nexport default ProgressBarComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/components/progress-bar/progress.bar.component.js","/**\n * Handles ready state change of request\n *\n * @function handleOnReadyStateChange\n * @param {XMLHttpRequest} xhr\n * @param {Function} onSuccess\n * @param {Function} onError\n */\nconst handleOnReadyStateChange = (xhr, onSuccess, onError) => {\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.status === 0 && xhr.statusText === '') {\n // request aborted\n return;\n }\n\n if (xhr.status >= 400 || !xhr.status) {\n onError(xhr);\n\n return;\n }\n\n onSuccess(JSON.parse(xhr.response));\n};\n\n/**\n * Handles request response\n *\n * @function handleRequestResponse\n * @param {Response} response\n * @returns {String|Response}\n */\nconst handleRequestResponse = (response) => {\n if (!response.ok) {\n throw Error(response.text());\n }\n\n return response;\n};\n\n/**\n * Read file handler\n *\n * @function readFile\n * @param {File} file\n * @param {Function} resolve\n * @param {Function} reject\n */\nconst readFile = function(file, resolve, reject) {\n this.addEventListener('load', () => resolve({ fileReader: this, file }), false);\n this.addEventListener('error', () => reject(), false);\n this.readAsDataURL(file);\n};\n\n/**\n * Finds a content type mapping based on a file type\n *\n * @function findFileTypeMapping\n * @param {Array} mappings\n * @param {File} file\n * @returns {Object|undefined}\n */\nconst findFileTypeMapping = (mappings, file) => mappings.find((item) => item.mimeTypes.find((type) => type === file.type));\n\n/**\n * Checks if file's MIME Type is allowed\n *\n * @function isMimeTypeAllowed\n * @param {Array} mappings\n * @param {File} file\n * @returns {Boolean}\n */\nconst isMimeTypeAllowed = (mappings, file) => !!findFileTypeMapping(mappings, file);\n\n/**\n * Checks if file type is allowed\n *\n * @function checkFileTypeAllowed\n * @param {File} file\n * @param {Object} locationMapping\n * @returns {Boolean}\n */\nconst checkFileTypeAllowed = (file, locationMapping) => (!locationMapping ? true : isMimeTypeAllowed(locationMapping.mappings, file));\n\n/**\n * Detects a content type for a given file\n *\n * @function detectContentTypeMapping\n * @param {File} file\n * @param {Object} parentInfo\n * @param {Object} config\n * @returns {Object} detected content type config\n */\nconst detectContentTypeMapping = (file, parentInfo, config) => {\n const locationMapping = config.locationMappings.find((item) => item.contentTypeIdentifier === parentInfo.contentTypeIdentifier);\n const mappings = locationMapping ? locationMapping.mappings : config.defaultMappings;\n\n return findFileTypeMapping(mappings, file) || config.fallbackContentType;\n};\n\n/**\n * Gets content type identifier\n *\n * @function getContentTypeByIdentifier\n * @param {Object} params params object containing token and siteaccess properties\n * @param {String} identifier content type identifier\n * @returns {Promise}\n */\nconst getContentTypeByIdentifier = ({ token, siteaccess }, identifier) => {\n const request = new Request(`/api/ezp/v2/content/types?identifier=${identifier}`, {\n method: 'GET',\n headers: {\n Accept: 'application/vnd.ez.api.ContentTypeInfoList+json',\n 'X-Siteaccess': siteaccess,\n 'X-CSRF-Token': token,\n },\n credentials: 'same-origin',\n mode: 'cors',\n });\n\n return fetch(request).then(handleRequestResponse);\n};\n\n/**\n * Prepares a ContentCreate struct based on an uploaded file type\n *\n * @function prepareStruct\n * @param {Object} params params object containing parentInfo and config properties\n * @param {Object} data file data containing File object and FileReader object\n * @returns {Promise}\n */\nconst prepareStruct = ({ parentInfo, config }, data) => {\n let parentLocation = `/api/ezp/v2/content/locations${parentInfo.locationPath}`;\n\n parentLocation = parentLocation.endsWith('/') ? parentLocation.slice(0, -1) : parentLocation;\n\n const mapping = detectContentTypeMapping(data.file, parentInfo, config.multiFileUpload);\n\n return getContentTypeByIdentifier(config, mapping.contentTypeIdentifier)\n .then((response) => response.json())\n .catch(() => window.eZ.helpers.notification.showErrorNotification('Cannot get content type by identifier'))\n .then((response) => {\n const fields = [\n { fieldDefinitionIdentifier: mapping.nameFieldIdentifier, fieldValue: data.file.name },\n {\n fieldDefinitionIdentifier: mapping.contentFieldIdentifier,\n fieldValue: { fileName: data.file.name, data: data.fileReader.result.replace(/^.*;base64,/, '') },\n },\n ];\n\n const struct = {\n ContentCreate: {\n ContentType: { _href: response.ContentTypeInfoList.ContentType[0]._href },\n mainLanguageCode: parentInfo.language,\n LocationCreate: { ParentLocation: { _href: parentLocation }, sortField: 'PATH', sortOrder: 'ASC' },\n Section: null,\n alwaysAvailable: true,\n remoteId: null,\n modificationDate: new Date().toISOString(),\n fields: { field: fields },\n },\n };\n\n return struct;\n })\n .catch(() => window.eZ.helpers.notification.showErrorNotification('Cannot create content structure'));\n};\n\n/**\n * Creates a content draft\n *\n * @function createDraft\n * @param {Object} params params object containing struct, token and siteaccess properties\n * @param {Object} requestEventHandlers object containing a list of callbacks\n * @returns {Promise}\n */\nconst createDraft = ({ struct, token, siteaccess }, requestEventHandlers) => {\n const xhr = new XMLHttpRequest();\n const body = JSON.stringify(struct);\n const headers = {\n Accept: 'application/vnd.ez.api.Content+json',\n 'Content-Type': 'application/vnd.ez.api.ContentCreate+json',\n 'X-CSRF-Token': token,\n 'X-Siteaccess': siteaccess,\n };\n\n return new Promise((resolve, reject) => {\n xhr.open('POST', '/api/ezp/v2/content/objects', true);\n\n xhr.onreadystatechange = handleOnReadyStateChange.bind(null, xhr, resolve, reject);\n\n if (requestEventHandlers && Object.keys(requestEventHandlers).length) {\n const uploadEvents = requestEventHandlers.upload;\n\n if (uploadEvents && Object.keys(uploadEvents).length) {\n xhr.upload.onabort = uploadEvents.onabort;\n xhr.upload.onerror = reject;\n xhr.upload.onload = uploadEvents.onload;\n xhr.upload.onprogress = uploadEvents.onprogress;\n xhr.upload.ontimeout = uploadEvents.ontimeout;\n }\n\n xhr.onerror = reject;\n xhr.onloadstart = requestEventHandlers.onloadstart;\n }\n\n for (let headerType in headers) {\n if (headers.hasOwnProperty(headerType)) {\n xhr.setRequestHeader(headerType, headers[headerType]);\n }\n }\n\n xhr.send(body);\n });\n};\n\n/**\n * Publishes a content draft\n *\n * @function publishDraft\n * @param {Object} params params object containing token and siteaccess properties\n * @param {Object} response object containing created draft struct\n * @returns {Promise}\n */\nconst publishDraft = ({ token, siteaccess }, response) => {\n if (!response || !response.hasOwnProperty('Content')) {\n return Promise.reject('Cannot publish content based on an uploaded file');\n }\n\n const request = new Request(response.Content.CurrentVersion.Version._href, {\n method: 'POST',\n headers: {\n 'X-Siteaccess': siteaccess,\n 'X-CSRF-Token': token,\n 'X-HTTP-Method-Override': 'PUBLISH',\n },\n mode: 'cors',\n credentials: 'same-origin',\n });\n\n return fetch(request).then(handleRequestResponse);\n};\n\n/**\n * Checks whether a content based on an uploaded file can be created\n *\n * @function canCreateContent\n * @param {File} file\n * @param {Object} parentInfo parent info hash\n * @param {Object} config multi file upload config\n * @returns {Boolean}\n */\nconst canCreateContent = (file, parentInfo, config) => {\n if (!config.hasOwnProperty('contentCreatePermissionsConfig') || !config.contentCreatePermissionsConfig) {\n return true;\n }\n\n const contentTypeConfig = detectContentTypeMapping(file, parentInfo, config);\n\n return config.contentCreatePermissionsConfig[contentTypeConfig.contentTypeIdentifier];\n};\n\n/**\n * Checks if a file can be uploaded\n *\n * @function checkCanUpload\n * @param {File} file\n * @param {Object} parentInfo parent info hash\n * @param {Object} config multi file upload config\n * @param {Object} callbacks a list of callbacks\n * @returns {Boolean}\n */\nexport const checkCanUpload = (file, parentInfo, config, callbacks) => {\n const locationMapping = config.locationMappings.find((item) => item.contentTypeIdentifier === parentInfo.contentTypeIdentifier);\n\n if (!canCreateContent(file, parentInfo, config)) {\n callbacks.contentTypeNotAllowedCallback();\n\n return false;\n }\n\n if (!checkFileTypeAllowed(file, locationMapping)) {\n callbacks.fileTypeNotAllowedCallback();\n\n return false;\n }\n\n if (file.size > config.maxFileSize) {\n callbacks.fileSizeNotAllowedCallback();\n\n return false;\n }\n\n return true;\n};\n\n/**\n * Creates a ContentCreate struct based on a file\n *\n * @function createFileStruct\n * @param {File} file\n * @param {Object} params struct params\n * @returns {Promise}\n */\nexport const createFileStruct = (file, params) => new Promise(readFile.bind(new FileReader(), file)).then(prepareStruct.bind(null, params));\n\n/**\n * Publishes file\n *\n * @function publishFile\n * @param {Object} data file data\n * @param {Object} requestEventHandlers a list of request event handlers\n * @param {Function} callback a success callback\n */\nexport const publishFile = (data, requestEventHandlers, callback) => {\n createDraft(data, requestEventHandlers)\n .then(publishDraft.bind(null, data))\n .then(callback)\n .catch(() => window.eZ.helpers.notification.showErrorNotification('An error occurred while publishing a file'));\n};\n\n/**\n * Deletes file\n *\n * @function deleteFile\n * @param {Object} systemInfo system info containing: token and siteaccess info.\n * @param {Object} struct Content struct\n * @param {Function} callback file deleted callback\n */\nexport const deleteFile = ({ token, siteaccess }, struct, callback) => {\n const request = new Request(struct.Content._href, {\n method: 'DELETE',\n headers: {\n 'X-Siteaccess': siteaccess,\n 'X-CSRF-Token': token,\n },\n mode: 'cors',\n credentials: 'same-origin',\n });\n\n fetch(request)\n .then(handleRequestResponse)\n .then(callback)\n .catch(() => window.eZ.helpers.notification.showErrorNotification('An error occurred while deleting a file'));\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/services/multi.file.upload.service.js","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js!./tooltip.popup.component.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js!./tooltip.popup.component.css\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js!./tooltip.popup.component.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/modules/common/tooltip-popup/css/tooltip.popup.component.css\n// module id = 12\n// module chunks = 0 2","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".c-tooltip-popup {\\n background: #ededed;\\n padding: 16px;\\n box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.35);\\n position: relative;\\n border-radius: 4px;\\n}\\n\\n.c-tooltip-popup__header {\\n position: relative;\\n}\\n\\n.c-tooltip-popup__title {\\n margin-top: 0;\\n}\\n\\n.c-tooltip-popup__close {\\n position: absolute;\\n display: flex;\\n align-items: center;\\n top: 0;\\n bottom: 0;\\n right: 16px;\\n font-weight: 400;\\n font-size: 32px;\\n cursor: pointer;\\n}\\n\\n.c-tooltip-popup__close .ez-icon {\\n width: 24px;\\n height: 24px;\\n fill: #333;\\n opacity: 0.5;\\n transition: opacity 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\\n}\\n\\n.c-tooltip-popup__close .ez-icon:hover {\\n opacity: 1;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./src/modules/common/tooltip-popup/css/tooltip.popup.component.css\n// module id = 13\n// module chunks = 0 2","/**\n * Returns a filesize as a formatted string\n *\n * @function fileSizeToString\n * @param {Number} filesize\n * @returns {String}\n */\nexport const fileSizeToString = (filesize) => {\n const units = ['bytes', 'KB', 'MB', 'GB'];\n const kilobyte = 1024;\n let size = parseInt(filesize, 10) || 0;\n let unitIndex = 0;\n let decimalUnits;\n\n while (size >= kilobyte) {\n size = size / kilobyte;\n unitIndex++;\n }\n\n decimalUnits = unitIndex < 1 ? 0 : 1;\n\n return size.toFixed(size >= 10 || decimalUnits) + ' ' + units[unitIndex];\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/modules/multi-file-upload/helpers/text.helper.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 2\n// module chunks = 0 1 2","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of