From 2a11b5ca8328e2099a5b349ee7b74d74a1116b6d Mon Sep 17 00:00:00 2001 From: Piotr Nalepa Date: Fri, 11 Jan 2019 15:22:30 +0100 Subject: [PATCH 1/2] EZP-29995: Move CSS files for Sub Items List Module to Admin UI --- Resources/public/js/MultiFileUpload.module.js | 2 +- .../public/js/MultiFileUpload.module.js.map | 2 +- Resources/public/js/SubItems.module.js | 2 +- Resources/public/js/SubItems.module.js.map | 2 +- .../public/js/UniversalDiscovery.module.js | 2 +- .../js/UniversalDiscovery.module.js.map | 2 +- Resources/public/scss/ezplatform-modules.scss | 1 + .../public/scss/modules/_sub.items.list.scss | 9 ++ .../modules/sub-items-list/_action.btn.scss | 40 +++++ .../sub-items-list/_grid.view.item.scss | 61 +++++++ .../modules/sub-items-list/_grid.view.scss | 12 ++ .../scss/modules/sub-items-list/_main.scss | 81 ++++++++++ .../modules/sub-items-list/_no.items.scss | 5 + .../sub-items-list/_table.view.item.scss | 151 ++++++++++++++++++ .../modules/sub-items-list/_table.view.scss | 73 +++++++++ .../sub-items-list/_view.switcher.button.scss | 37 +++++ .../sub-items-list/_view.switcher.scss | 20 +++ .../components/action-btn/action.btn.js | 17 +- .../components/action-btn/css/action.btn.css | 35 ---- .../grid-view/css/grid.view.component.css | 17 -- .../css/grid.view.item.component.css | 73 --------- .../grid-view/grid.view.component.js | 2 - .../grid-view/grid.view.item.component.js | 11 +- .../no-items/css/no.items.component.css | 5 - .../components/no-items/no.items.component.js | 2 - .../pagination/pagination.button.component.js | 2 +- .../css/sub.items.list.component.css | 0 .../sub.items.list.component.js | 2 - .../table-view/css/table.view.component.css | 65 -------- .../css/table.view.item.component.css | 149 ----------------- .../table-view/table.view.component.js | 8 +- .../table-view/table.view.item.component.js | 63 ++++---- .../css/view.switcher.component.css | 62 ------- .../view.switcher.button.component.js | 13 +- .../view-switcher/view.switcher.component.js | 4 +- .../sub-items/css/sub.items.module.css | 83 ---------- src/modules/sub-items/sub.items.module.js | 4 +- 37 files changed, 556 insertions(+), 563 deletions(-) create mode 100644 Resources/public/scss/modules/_sub.items.list.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_action.btn.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_grid.view.item.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_grid.view.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_main.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_no.items.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_table.view.item.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_table.view.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_view.switcher.button.scss create mode 100644 Resources/public/scss/modules/sub-items-list/_view.switcher.scss delete mode 100644 src/modules/sub-items/components/action-btn/css/action.btn.css delete mode 100644 src/modules/sub-items/components/grid-view/css/grid.view.component.css delete mode 100644 src/modules/sub-items/components/grid-view/css/grid.view.item.component.css delete mode 100644 src/modules/sub-items/components/no-items/css/no.items.component.css delete mode 100644 src/modules/sub-items/components/sub-items-list/css/sub.items.list.component.css delete mode 100644 src/modules/sub-items/components/table-view/css/table.view.component.css delete mode 100644 src/modules/sub-items/components/table-view/css/table.view.item.component.css delete mode 100644 src/modules/sub-items/components/view-switcher/css/view.switcher.component.css delete mode 100644 src/modules/sub-items/css/sub.items.module.css diff --git a/Resources/public/js/MultiFileUpload.module.js b/Resources/public/js/MultiFileUpload.module.js index cc0a13cf..09464d95 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=128)}({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},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)},128: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}},129: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:[]}},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",""])},130: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}},131: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(132));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:[]}},132: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}},133: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},134: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"))})},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(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}); //# 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 2973f2d2..2a8b28e9 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 b6017728489b60a1f0d8","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/common/tooltip-popup/css/tooltip.popup.component.css?aef1","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/common/tooltip-popup/css/tooltip.popup.component.css","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/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","content","options","hmr","transform","insertInto","undefined","locals","_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","push","_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","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","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 = 128);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b6017728489b60a1f0d8","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","\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","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","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","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","/**\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