import*as e from"react";import{PrimeReactContext as t,localeOption as n}from"primereact/api";import{ComponentBase as r,useHandleStyle as o}from"primereact/componentbase";import{useMergeProps as a}from"primereact/hooks";import{classNames as l,ObjectUtils as i,IconUtils as c,DomHandler as u}from"primereact/utils";import{Button as s}from"primereact/button";import{PlusIcon as p}from"primereact/icons/plus";import{TimesIcon as d}from"primereact/icons/times";import{UploadIcon as f}from"primereact/icons/upload";import{Messages as m}from"primereact/messages";import{ProgressBar as y}from"primereact/progressbar";import{Ripple as b}from"primereact/ripple";function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function g(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function h(e){var t=g(e,"string");return"symbol"==v(t)?t:t+""}function E(e,t,n){return(t=h(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(){return O=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n div {\n flex: 1 1 auto;\n width: 25%;\n }\n \n .p-fileupload-row > div:last-child {\n text-align: right;\n }\n \n .p-fileupload-content > .p-progressbar {\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n \n .p-button.p-fileupload-choose {\n position: relative;\n overflow: hidden;\n }\n \n .p-fileupload-buttonbar {\n display: flex;\n flex-wrap: wrap;\n }\n \n .p-button.p-fileupload-choose input[type='file'] {\n display: none;\n }\n \n .p-fileupload-choose.p-fileupload-choose-selected input[type='file'] {\n display: none;\n }\n \n .p-fileupload-filename {\n word-break: break-all;\n }\n \n .p-fileupload-file-thumbnail {\n flex-shrink: 0;\n }\n \n .p-fileupload-file-badge {\n margin: 0.5rem;\n }\n \n .p-fluid .p-fileupload .p-button {\n width: auto;\n }\n}\n"}});function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,l=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){i=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(i)throw a}}}}function R(e,t){if(e){if("string"==typeof e)return X(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?X(e,t):void 0}}function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&($.current.style.display="none")}},me=function(e){return j.some((function(t){return t.name+t.type+t.size===e.name+e.type+e.size}))},ye=function(e){if(E.maxFileSize&&e.size>E.maxFileSize){var t={severity:"error",summary:E.invalidFileSizeMessageSummary.replace("{0}",e.name),detail:E.invalidFileSizeMessageDetail.replace("{0}",de(E.maxFileSize)),sticky:!0};return"advanced"===E.mode&&q.current.show(t),E.onValidationFail&&E.onValidationFail(e),!1}return!0},be=function(e){if((e=e||j)&&e.nativeEvent&&(e=j),E.customUpload)E.fileLimit&&x("uploadedFileCount"),E.uploadHandler&&E.uploadHandler({files:e,options:{clear:ve,props:E}});else{H(!0);var t=new XMLHttpRequest,n=new FormData;E.onBeforeUpload&&E.onBeforeUpload({xhr:t,formData:n});var r,o=A(e);try{for(o.s();!(r=o.n()).done;){var a=r.value;n.append(E.name,a,a.name)}}catch(e){o.e(e)}finally{o.f()}t.upload.addEventListener("progress",(function(e){if(e.lengthComputable){var t=Math.round(100*e.loaded/e.total);D(t),E.onProgress&&E.onProgress({originalEvent:e,progress:t})}})),t.onreadystatechange=function(){4===t.readyState&&(D(0),H(!1),t.status>=200&&t.status<300?(E.fileLimit&&x("uploadedFileCount"),E.onUpload&&E.onUpload({xhr:t,files:e})):E.onError&&E.onError({xhr:t,files:e}),ve(),N((function(t){return[].concat(B(t),B(e))})))},t.open("POST",E.url,!0),E.onBeforeSend&&E.onBeforeSend({xhr:t,formData:n}),t.withCredentials=E.withCredentials,t.send(n)}},ve=function(){I([]),N([]),H(!1),E.onClear&&E.onClear(),pe()},ge=function(){$.current.click()},he=function(){U(!0)},Ee=function(){U(!1)},Oe=function(e){"Enter"!==e.code&&"NumpadEnter"!==e.code||ge()},Se=function(e){if(!E.disabled&&(!Y()&&u.removeClass(G.current,"p-fileupload-highlight"),G.current.setAttribute("data-p-highlight",!1),e.stopPropagation(),e.preventDefault(),!E.onBeforeDrop||!1!==E.onBeforeDrop(e))){var t=e.dataTransfer?e.dataTransfer.files:e.target.files;(E.multiple||i.isEmpty(j)&&t&&1===t.length)&&fe(e)}},we=function(){!te&&Z?be():$.current.click()};e.useImperativeHandle(v,(function(){return{props:E,upload:be,clear:ve,formatSize:de,onFileSelect:fe,getInput:function(){return $.current},getContent:function(){return G.current},getFiles:function(){return j},setFiles:function(e){return I(e||[])},getUploadedFiles:function(){return w},setUploadedFiles:function(e){return N(e||[])}}}));var Ne,Pe,je,Be,xe,Ie,Fe,Ce,Te,De,_e=function(e,t,n){"warning"===t.severity?ue(e,n):se(e,n)},ze=function(t,n,r){var o=t.name+t.type+t.size,a=g({role:"presentation",className:W("thumbnail"),src:t.objectURL,width:E.previewWidth},K("thumbnail")),l=ce(t)?e.createElement("img",O({},a,{alt:t.name})):null,c=g(K("details")),u=g(K("fileSize")),p=g({className:W("fileName")},K("fileName")),f=g(K("actions")),m=e.createElement("div",p,t.name),y=e.createElement("div",u,de(t.size)),b=e.createElement("div",c,e.createElement("div",p," ",t.name),e.createElement("span",u,de(t.size)),e.createElement(M,{className:"p-fileupload-file-badge",value:r.value,severity:r.severity,pt:K("badge"),__parentMetadata:{parent:J}})),v=e.createElement("div",f,e.createElement(s,{type:"button",icon:E.removeIcon||e.createElement(d,null),text:!0,rounded:!0,severity:"danger",onClick:function(e){return _e(e,r,n)},disabled:te,pt:K("removeButton"),__parentMetadata:{parent:J},unstyled:Y()})),h=e.createElement(e.Fragment,null,l,b,v);if(E.itemTemplate){var S={onRemove:function(e){return ue(e,n)},previewElement:l,fileNameElement:m,sizeElement:y,removeElement:v,formatSize:de(t.size),element:h,index:n,props:E};h=i.getJSXElement(E.itemTemplate,t,S)}var w=g({key:o,className:W("file")},K("file"));return e.createElement("div",w,h)},Me=function(){var t={severity:"success",value:n("completed")||"Completed"},r=w&&w.map((function(e,n){return ze(e,n,t)}));return e.createElement("div",null,r)};return"advanced"===E.mode?function(){var t,r,o,a,v,h,S,w,N,P,B,x,I,F,T,D,_,M,U,A=(r=(t=E.chooseOptions).className,o=t.style,a=t.icon,v=t.iconOnly,h=g({className:W("chooseButtonLabel")},K("chooseButtonLabel")),S=v?e.createElement("span",O({},h,{dangerouslySetInnerHTML:{__html:" "}})):e.createElement("span",h,ne),w=g({ref:$,type:"file",onChange:function(e){return fe(e)},multiple:E.multiple,accept:E.accept,disabled:ae},K("input")),N=e.createElement("input",w),P=g({className:W("chooseIcon",{iconOnly:v}),"aria-hidden":"true"},K("chooseIcon")),B=c.getJSXIcon(a||e.createElement(p,P),k({},P),{props:E}),x=g({className:l(r,W("chooseButton",{iconOnly:v,disabled:te,className:r,focusedState:z})),style:o,onClick:ge,onKeyDown:function(e){return Oe(e)},onFocus:he,onBlur:Ee,tabIndex:0,"data-p-disabled":te,"data-p-focus":z},K("chooseButton")),e.createElement("span",x,N,B,S,e.createElement(b,null))),R=!E.emptyTemplate||Z||ee?null:i.getJSXElement(E.emptyTemplate,E);if(!E.auto){var X=E.uploadOptions,H=E.cancelOptions,V=X.iconOnly?"":re,Q=H.iconOnly?"":oe,ce=g({className:W("uploadIcon",{iconOnly:X.iconOnly}),"aria-hidden":"true"},K("uploadIcon")),ue=c.getJSXIcon(X.icon||e.createElement(f,ce),k({},ce),{props:E}),se=g({className:W("cancelIcon",{iconOnly:H.iconOnly}),"aria-hidden":"true"},K("cancelIcon")),pe=c.getJSXIcon(H.icon||e.createElement(d,se),k({},se),{props:E});I=e.createElement(s,{type:"button",label:V,"aria-hidden":"true",icon:ue,onClick:be,disabled:le,style:X.style,className:X.className,pt:K("uploadButton"),__parentMetadata:{parent:J},unstyled:Y()}),F=e.createElement(s,{type:"button",label:Q,"aria-hidden":"true",icon:pe,onClick:ve,disabled:ie,style:H.style,className:H.className,pt:K("cancelButton"),__parentMetadata:{parent:J},unstyled:Y()})}Z&&(M={severity:"warning",value:n("pending")||"Pending"},U=j.map((function(e,t){return ze(e,t,M)})),T=e.createElement("div",null,U),_=E.progressBarTemplate?i.getJSXElement(E.progressBarTemplate,{progress:C,props:E}):e.createElement(y,{value:C,showValue:!1,pt:K("progressbar"),__parentMetadata:{parent:J}})),ee&&(D=Me());var de=g({className:l(E.headerClassName,W("buttonbar")),style:E.headerStyle},K("buttonbar")),me=e.createElement("div",de,A,I,F);if(E.headerTemplate){var ye={className:l("p-fileupload-buttonbar",E.headerClassName),chooseButton:A,uploadButton:I,cancelButton:F,element:me,props:E};me=i.getJSXElement(E.headerTemplate,ye)}var we=g({id:E.id,className:l(E.className,W("root")),style:E.style},L.getOtherProps(E),K("root")),Ne=g({ref:G,className:l(E.contentClassName,W("content")),style:E.contentStyle,onDragEnter:function(e){return t=e,void(te||(t.dataTransfer.dropEffect="copy",t.stopPropagation(),t.preventDefault()));var t},onDragOver:function(e){return t=e,void(te||(t.dataTransfer.dropEffect="copy",!Y()&&u.addClass(G.current,"p-fileupload-highlight"),G.current.setAttribute("data-p-highlight",!0),t.stopPropagation(),t.preventDefault()));var t},onDragLeave:function(e){te||(e.dataTransfer.dropEffect="copy",!Y()&&u.removeClass(G.current,"p-fileupload-highlight"),G.current.setAttribute("data-p-highlight",!1))},onDrop:function(e){return Se(e)},"data-p-highlight":!1},K("content"));return e.createElement("div",we,me,e.createElement("div",Ne,_,e.createElement(m,{ref:q,__parentMetadata:{parent:J}}),Z?T:null,ee?D:null,R))}():"basic"===E.mode?(Ne=E.chooseOptions,Pe=g({className:W("label")},K("label")),je=Ne.iconOnly?e.createElement("span",O({},Pe,{dangerouslySetInnerHTML:{__html:" "}})):e.createElement("span",Pe,ne),Be=E.auto?je:e.createElement("span",Pe,Z?E.selectedFileLabel||j[0].name:je),xe=g({className:W("chooseIcon",{iconOnly:Ne.iconOnly})},K("chooseIcon")),Ie=c.getJSXIcon(Ne.icon?Ne.icon:Ne.icon||Z&&!E.auto?!Ne.icon&&Z&&!E.auto&&e.createElement(f,xe):e.createElement(p,xe),k({},xe),{props:E,hasFiles:Z}),Fe=g({ref:$,type:"file",onChange:function(e){return fe(e)},multiple:E.multiple,accept:E.accept,disabled:te},K("input")),Ce=!Z&&e.createElement("input",Fe),Te=g({className:l(E.className,W("root")),style:E.style},L.getOtherProps(E),K("root")),De=g({className:l(Ne.className,W("basicButton",{hasFiles:Z,disabled:te,focusedState:z})),style:Ne.style,tabIndex:0,onClick:we,onKeyDown:function(e){return Oe(e)},onFocus:he,onBlur:Ee},L.getOtherProps(E),K("basicButton")),e.createElement("div",Te,e.createElement(m,{ref:q,pt:K("message"),__parentMetadata:{parent:J}}),e.createElement("span",De,Ie,Be,Ce,e.createElement(b,null)))):void 0})));H.displayName="FileUpload";export{H as FileUpload};