@rpldy/uploady
Version:
wrapper&context component to expose and provide react-uploady functionality
2 lines • 74.2 kB
JavaScript
/*! For license information please see rpldy-all.umd.min.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],t):"object"==typeof exports?exports.rpldy=t(require("react"),require("react-dom")):e.rpldy=t(e.react,e["react-dom"])}(globalThis,((e,t)=>(()=>{var r,n={"+TXh":t=>{"use strict";t.exports=e},KR9f:e=>{e.exports=function(e){return"function"==typeof e}},XYNb:e=>{"use strict";e.exports=t},avC8:(e,t,r)=>{"use strict";r.r(t),r.d(t,{abort:()=>a,chunkedSender:()=>l,chunkedUploady:()=>S,lifeEvents:()=>d,mockSender:()=>u,rawUploader:()=>Tt,retry:()=>p,retryHooks:()=>b,safeStorage:()=>h,sender:()=>o,shared:()=>s,sharedUi:()=>m,simpleState:()=>i,tusSender:()=>f,tusUploady:()=>E,uploadButton:()=>y,uploadDropZone:()=>v,uploadPaste:()=>R,uploadPreview:()=>I,uploadUrlInput:()=>O,uploader:()=>c,uploady:()=>g});var n={};r.r(n),r.d(n,{debugLog:()=>k,isDebugOn:()=>_,setDebug:()=>D});var s={};r.r(s),r.d(s,{BATCH_STATES:()=>Z,FILE_STATES:()=>J,XhrPromise:()=>se,clone:()=>G,createBatchItem:()=>ne,devFreeze:()=>$,getIsBatchItem:()=>re,getMerge:()=>j,hasWindow:()=>w,invariant:()=>A(),isEmpty:()=>X,isFunction:()=>B(),isPlainObject:()=>M,isProduction:()=>F(),isPromise:()=>Q,isSamePropInArrays:()=>H,logger:()=>n,merge:()=>z,parseResponseHeaders:()=>ae,pick:()=>W,request:()=>oe,scheduleIdleWork:()=>V,throttle:()=>C.A,triggerCancellable:()=>L,triggerUpdater:()=>Y});var a={};r.r(a),r.d(a,{default:()=>fe});var o={};r.r(o),r.d(o,{MissingUrlError:()=>ge,XHR_SENDER_TYPE:()=>me,default:()=>Oe,getXhrSend:()=>Re,send:()=>Ie});var i={};r.r(i),r.d(i,{createState:()=>Fe,default:()=>Fe,isProxiable:()=>ke,isProxy:()=>De,unwrap:()=>xe});var l={};r.r(l),r.d(l,{CHUNKED_DEFAULT_OPTIONS:()=>Te,CHUNKED_SENDER_TYPE:()=>Me,CHUNKING_SUPPORT:()=>Ce,CHUNK_EVENTS:()=>$e,DEFAULT_CHUNK_SIZE:()=>et,createChunkedSender:()=>Ye,default:()=>Je,getChunkDataFromFile:()=>Pe,getChunkedEnhancer:()=>Ze});var d={};r.r(d),r.d(d,{addLife:()=>gt,createLifePack:()=>St,default:()=>gt,isLE:()=>ot});var u={};r.r(u),r.d(u,{MOCK_SENDER_TYPE:()=>bt,createMockSender:()=>Rt,default:()=>Ot,getMockSenderEnhancer:()=>It});var c={};r.r(c),r.d(c,{BATCH_STATES:()=>Z,DEFAULT_OPTIONS:()=>sr,FILE_STATES:()=>J,MissingUrlError:()=>ge,UPLOADER_EVENTS:()=>At,XHR_SENDER_TYPE:()=>me,composeEnhancers:()=>ur,createUploader:()=>hr,default:()=>fr,getXhrSend:()=>Re,send:()=>Ie});var p={};r.r(p),r.d(p,{RETRY_EVENT:()=>gr,RETRY_EXT:()=>mr,default:()=>Er,retryEnhancer:()=>Er});var h={};r.r(h),r.d(h,{safeLocalStorage:()=>vr,safeSessionStorage:()=>Rr});var f={};r.r(f),r.d(f,{CHUNKING_SUPPORT:()=>Ce,TUS_EVENTS:()=>Ur,TUS_EXT:()=>Or,TUS_SENDER_TYPE:()=>Tr,clearResumables:()=>$r,default:()=>cn,getTusEnhancer:()=>un});var m={};r.r(m),r.d(m,{NoDomUploady:()=>Kn,UploadyContext:()=>vn,assertContext:()=>Rn,createContextApi:()=>yn,generateUploaderEventHook:()=>An,generateUploaderEventHookWithState:()=>Tn,getIsUploadOptionsComponent:()=>Qn,getUploadyVersion:()=>gn,logWarning:()=>Gn,markAsUploadOptionsComponent:()=>Wn,useAbortAll:()=>Zn,useAbortBatch:()=>Yn,useAbortItem:()=>Xn,useAllAbortListener:()=>jn,useBatchAbortListener:()=>kn,useBatchAddListener:()=>Cn,useBatchCancelledListener:()=>Un,useBatchErrorListener:()=>_n,useBatchFinalizeListener:()=>Dn,useBatchFinishListener:()=>wn,useBatchProgressListener:()=>Ln,useBatchStartListener:()=>Pn,useItemAbortListener:()=>Fn,useItemCancelListener:()=>Hn,useItemErrorListener:()=>xn,useItemFinalizeListener:()=>$n,useItemFinishListener:()=>Bn,useItemProgressListener:()=>Mn,useItemStartListener:()=>Nn,useRequestPreSend:()=>qn,useUploadOptions:()=>Vn,useUploady:()=>In,useUploadyContext:()=>In,withBatchStartUpdate:()=>rs,withRequestPreSendUpdate:()=>es});var g={};r.r(g),r.d(g,{BATCH_STATES:()=>Z,DEFAULT_OPTIONS:()=>sr,FILE_STATES:()=>J,MissingUrlError:()=>ge,NoDomUploady:()=>Kn,UPLOADER_EVENTS:()=>At,Uploady:()=>os,UploadyContext:()=>vn,XHR_SENDER_TYPE:()=>me,assertContext:()=>Rn,composeEnhancers:()=>ur,createContextApi:()=>yn,createUploader:()=>hr,default:()=>ds,generateUploaderEventHook:()=>An,generateUploaderEventHookWithState:()=>Tn,getIsUploadOptionsComponent:()=>Qn,getUploadyVersion:()=>gn,getXhrSend:()=>Re,logWarning:()=>Gn,markAsUploadOptionsComponent:()=>Wn,send:()=>Ie,useAbortAll:()=>Zn,useAbortBatch:()=>Yn,useAbortItem:()=>Xn,useAllAbortListener:()=>jn,useBatchAbortListener:()=>kn,useBatchAddListener:()=>Cn,useBatchCancelledListener:()=>Un,useBatchErrorListener:()=>_n,useBatchFinalizeListener:()=>Dn,useBatchFinishListener:()=>wn,useBatchProgressListener:()=>Ln,useBatchStartListener:()=>Pn,useFileInput:()=>ls,useItemAbortListener:()=>Fn,useItemCancelListener:()=>Hn,useItemErrorListener:()=>xn,useItemFinalizeListener:()=>$n,useItemFinishListener:()=>Bn,useItemProgressListener:()=>Mn,useItemStartListener:()=>Nn,useRequestPreSend:()=>qn,useUploadOptions:()=>Vn,useUploady:()=>In,useUploadyContext:()=>In,withBatchStartUpdate:()=>rs,withRequestPreSendUpdate:()=>es});var S={};r.r(S),r.d(S,{BATCH_STATES:()=>Z,CHUNK_EVENTS:()=>$e,ChunkedUploady:()=>us,DEFAULT_OPTIONS:()=>sr,FILE_STATES:()=>J,MissingUrlError:()=>ge,NoDomUploady:()=>Kn,UPLOADER_EVENTS:()=>At,Uploady:()=>os,UploadyContext:()=>vn,XHR_SENDER_TYPE:()=>me,assertContext:()=>Rn,composeEnhancers:()=>ur,createContextApi:()=>yn,createUploader:()=>hr,default:()=>hs,generateUploaderEventHook:()=>An,generateUploaderEventHookWithState:()=>Tn,getIsUploadOptionsComponent:()=>Qn,getUploadyVersion:()=>gn,getXhrSend:()=>Re,logWarning:()=>Gn,markAsUploadOptionsComponent:()=>Wn,send:()=>Ie,useAbortAll:()=>Zn,useAbortBatch:()=>Yn,useAbortItem:()=>Xn,useAllAbortListener:()=>jn,useBatchAbortListener:()=>kn,useBatchAddListener:()=>Cn,useBatchCancelledListener:()=>Un,useBatchErrorListener:()=>_n,useBatchFinalizeListener:()=>Dn,useBatchFinishListener:()=>wn,useBatchProgressListener:()=>Ln,useBatchStartListener:()=>Pn,useChunkFinishListener:()=>ps,useChunkStartListener:()=>cs,useFileInput:()=>ls,useItemAbortListener:()=>Fn,useItemCancelListener:()=>Hn,useItemErrorListener:()=>xn,useItemFinalizeListener:()=>$n,useItemFinishListener:()=>Bn,useItemProgressListener:()=>Mn,useItemStartListener:()=>Nn,useRequestPreSend:()=>qn,useUploadOptions:()=>Vn,useUploady:()=>In,useUploadyContext:()=>In,withBatchStartUpdate:()=>rs,withRequestPreSendUpdate:()=>es});var b={};r.r(b),r.d(b,{RETRY_EVENT:()=>gr,default:()=>bs,retryEnhancer:()=>Er,useBatchRetry:()=>gs,useRetry:()=>ms,useRetryListener:()=>Ss});var E={};r.r(E),r.d(E,{BATCH_STATES:()=>Z,DEFAULT_OPTIONS:()=>sr,FILE_STATES:()=>J,MissingUrlError:()=>ge,NoDomUploady:()=>Kn,TusUploady:()=>Es,UPLOADER_EVENTS:()=>At,Uploady:()=>os,UploadyContext:()=>vn,XHR_SENDER_TYPE:()=>me,assertContext:()=>Rn,composeEnhancers:()=>ur,createContextApi:()=>yn,createUploader:()=>hr,default:()=>Is,generateUploaderEventHook:()=>An,generateUploaderEventHookWithState:()=>Tn,getIsUploadOptionsComponent:()=>Qn,getUploadyVersion:()=>gn,getXhrSend:()=>Re,logWarning:()=>Gn,markAsUploadOptionsComponent:()=>Wn,send:()=>Ie,useAbortAll:()=>Zn,useAbortBatch:()=>Yn,useAbortItem:()=>Xn,useAllAbortListener:()=>jn,useBatchAbortListener:()=>kn,useBatchAddListener:()=>Cn,useBatchCancelledListener:()=>Un,useBatchErrorListener:()=>_n,useBatchFinalizeListener:()=>Dn,useBatchFinishListener:()=>wn,useBatchProgressListener:()=>Ln,useBatchStartListener:()=>Pn,useClearResumableStore:()=>ys,useFileInput:()=>ls,useItemAbortListener:()=>Fn,useItemCancelListener:()=>Hn,useItemErrorListener:()=>xn,useItemFinalizeListener:()=>$n,useItemFinishListener:()=>Bn,useItemProgressListener:()=>Mn,useItemStartListener:()=>Nn,useRequestPreSend:()=>qn,useTusPartStartListener:()=>Rs,useTusResumeStartListener:()=>vs,useUploadOptions:()=>Vn,useUploady:()=>In,useUploadyContext:()=>In,withBatchStartUpdate:()=>rs,withRequestPreSendUpdate:()=>es});var y={};r.r(y),r.d(y,{UploadButton:()=>Ts,asUploadButton:()=>Os,default:()=>As});var v={};r.r(v),r.d(v,{UploadDropZone:()=>Us,default:()=>_s});var R={};r.r(R),r.d(R,{default:()=>Hs,usePasteUpload:()=>Bs,withPasteUpload:()=>ks});var I={};r.r(I),r.d(I,{PREVIEW_TYPES:()=>xs,UploadPreview:()=>Ws,default:()=>Qs,getPreviewsLoaderHook:()=>zs,getUploadPreviewForBatchItemsMethod:()=>Gs});var O={};r.r(O),r.d(O,{UploadUrlInput:()=>Vs,default:()=>Xs});var T=r("3lvE"),A=r.n(T),C=r("6dsl");const P="__rpldy-logger-debug__",w=()=>"object"==typeof window&&!!window.document;let U=null;const _=()=>("boolean"!=typeof U&&(U=w()&&("location"in window&&!!~window.location.search.indexOf("rpldy_debug=true")||!0===window[P])),!!U),D=e=>{w()&&(window[P]=e),U=!!e||null},k=(...e)=>{_()&&console.log(...e)},L=(e,t,...r)=>{const n=(t,...r)=>new Promise(((n,s)=>{const a=e(t,...r);a&&a.length?Promise.all(a).catch(s).then((e=>e&&n(!!~e.findIndex((e=>!1===e))))):n(!1)}));return t?n(t,...r):n};var N=r("KR9f"),B=r.n(N);const H=(e,t,r)=>{let n=!0;const s=(e=>{const t=[].concat(e);return e=>e.map((e=>t.map((t=>e[t])).join()))})(r);if(e&&t&&e.length===t.length){const r=s(e),a=s(t);n=!!r.find(((e,t)=>e!==a[t]))}return!n};var x=r("fOK/"),F=r.n(x);const $=e=>F()()?e:Object.freeze(e),M=e=>{const t=Object.getPrototypeOf(Object(e));return!(!e||"object"!=typeof e||"Object"!==t?.constructor.name&&t||Object.prototype.hasOwnProperty.call(e,"__proto__"))},q=e=>M(e)||Array.isArray(e),j=(e={})=>{const t=(r,...n)=>(r&&n.length&&n.forEach((n=>{n&&((e,t)=>{const r=Object.keys(e).filter((t=>e.hasOwnProperty(t)&&"__proto__"!==t));return t.withSymbols?r.concat(Object.getOwnPropertySymbols(e)):r})(n,e).forEach((s=>{const a=n[s];e.predicate&&!e.predicate(s,a)||(void 0!==a||e.undefinedOverwrites)&&(q(a)?(void 0!==r[s]&&M(r[s])||(r[s]=Array.isArray(a)?[]:{}),t(r[s],a)):r[s]=a)}))})),r);return t},z=j(),G=(e,t=z)=>q(e)?t(Array.isArray(e)?[]:{},e):e,W=(e,t)=>e&&Object.keys(e).reduce(((r,n)=>(~t.indexOf(n)&&(r[n]=e[n]),r)),{}),Q=function(e){return!!e&&"object"==typeof e&&"function"==typeof e.then},K=!(!w()||!window.requestIdleCallback),V=(e,t=0)=>{const r=K?window.requestIdleCallback(e,{timeout:t}):setTimeout(e,t);return()=>{K?window.cancelIdleCallback(r):clearTimeout(r)}},X=function(e){return null==e},Y=(e,t,...r)=>{const n=(t,...r)=>new Promise(((n,s)=>{const a=e(t,...r);a&&a.length?Promise.all(a).catch(s).then((e=>{let t;if(e)for(;X(t)&&e.length;)t=e.pop();n(X(t)?void 0:t)})):n()}));return t?n(t,...r):n},Z=Object.freeze({PENDING:"pending",ADDED:"added",PROCESSING:"processing",UPLOADING:"uploading",CANCELLED:"cancelled",FINISHED:"finished",ABORTED:"aborted",ERROR:"error"}),J=Object.freeze({PENDING:"pending",ADDED:"added",UPLOADING:"uploading",CANCELLED:"cancelled",FINISHED:"finished",ERROR:"error",ABORTED:"aborted"}),ee=Symbol.for("__rpldy-bi__");let te=0;const re=e=>!("object"!=typeof e||!e.id||!e.batchId||!0!==e[ee]),ne=(e,t,r=!1)=>{const n=re(e);te+=n?0:1;let s={id:n&&e.id&&"string"==typeof e.id?e.id:`${t}.item-${te}`,batchId:t,state:r?J.PENDING:J.ADDED,uploadStatus:0,total:0,completed:0,loaded:0,recycled:n,previousBatch:n?e.batchId:null};Object.defineProperty(s,ee,{value:!0,writable:!0});const a=n?e.file||e.url:e;if("string"==typeof a)s=((e,t)=>(e.url=t,e))(s,a);else{if(!(e=>e&&(e instanceof File||e instanceof Blob||!("object"!=typeof e||!e.name||!e.type)))(a))throw new Error("Unknown type of file added: "+typeof a);s=((e,t)=>(e.file=t,e))(s,a)}return s},se=class extends Promise{constructor(e,t){super(e),this.xhr=t}},ae=e=>{let t;try{t=e.getAllResponseHeaders().trim().split(/[\r\n]+/).reduce(((e,t)=>{const[r,n]=t.split(": ");return e[r]=n,e}),{})}catch(t){k("uploady.request: failed to read response headers",e)}return t},oe=(e,t,r={})=>{const n=new XMLHttpRequest;return new se(((s,a)=>{n.onerror=()=>a(n),n.ontimeout=()=>a(n),n.onabort=()=>a(n),n.onload=()=>s(n),n.open(r?.method||"GET",e),((e,t)=>{t&&Object.keys(t).forEach((r=>{void 0!==t[r]&&e.setRequestHeader(r,t[r])}))})(n,r?.headers),n.withCredentials=!!r?.withCredentials,r?.preSend?.(n),n.send(t)}),n)},ie=(e,t,r)=>(k(`abort: aborting ${e.state.valueOf()} item - `,e),r(e.id,{status:0,state:J.ABORTED,response:"aborted"}),!0),le={[J.UPLOADING]:(e,t)=>(k("abort: aborting uploading item - ",e),t[e.id]()),[J.ADDED]:ie,[J.PENDING]:ie},de=(e,t,r)=>{const n=e?.state,s=!!n&&le[n.valueOf()];return!!s&&s(e,t,r)},ue=(e,t,r,n)=>de(t[e],r,n),ce=(e,t)=>{let r=!1;return 0!==t&&t&&(r=e>=t),r},pe=(e,t,r,n,s)=>{const a=Object.values(r).flat(),o=ce(a.length,s.fastAbortThreshold);return k(`abort: doing abort-all (${o?"fast":"normal"} abort)`),o?(e=>{Object.values(e).forEach((e=>e()))})(t):a.forEach((r=>ue(r,e,t,n))),{isFast:o}},he=(e,t,r,n,s,a)=>{const o=0===t.fastAbortThreshold?0:t.fastAbortThreshold||a.fastAbortThreshold,i=ce(n[e.id].length,o);return k(`abort: doing abort-batch on: ${e.id} (${i?"fast":"normal"} abort)`),i?((e,t)=>{e.items.forEach((({id:e})=>t[e]?.()))})(e,r):e.items.forEach((e=>de(e,r,s))),{isFast:i}},fe=()=>e=>(e.update({abortAll:pe,abortBatch:he,abortItem:ue}),e),me="rpldy-sender";class ge extends Error{constructor(e){super(`${e} didn't receive upload URL`),this.name="MissingUrlError"}}const Se=(e,t,...r)=>{"set"in e?e.set(t,...r):("delete"in e&&e.delete(t),e.append(t,...r))},be=[200,201,202,203,204],Ee=(e,t,r,n,s)=>{let a;const o=s?.getRequestData?s.getRequestData(e,r):((e,t)=>{let r;if(t.sendWithFormData)k(`uploady.sender: sending ${e.length} item(s) as form data`),r=((e,t)=>{const r=new FormData;return t.params&&Object.entries(t.params).forEach((([e,n])=>{(t.formDataAllowUndefined||void 0!==n)&&Se(r,e,n)})),((e,t,r)=>{const n=1===t.length;t.forEach(((t,s)=>{const a=n?r.paramName:B()(r.formatGroupParamName)?r.formatGroupParamName(s,r.paramName):`${r.paramName}[${s}]`;t.file?Se(e,a,t.file,t.file.name):t.url&&Se(e,a,t.url)}))})(r,e,t),r})(e,t);else{if(e.length>1)throw new Error(`XHR Sender - Request without form data can only contain 1 item. received ${e.length}`);const t=e[0];k(`uploady.sender: sending item ${t.id} as request body`),r=t.file||t.url}return r})(e,r),i=(s=t,i=o,l)=>{const d=z({...W(r,["method","headers","withCredentials"]),preSend:t=>{t.upload.onprogress=t=>{t.lengthComputable&&n&&n(t,e.slice())}}},l),u=oe(s,i,d);return a=u.xhr,u},l=s?.preRequestHandler?s.preRequestHandler(i,e,t,r,n,s):i();return{url:t,count:e.length,pXhr:l,getXhr:()=>a,aborted:!1}},ye=(e,t,r)=>{let n=e;const s=t?.["content-type"];if(r.forceJsonResponse||s?.includes("json"))try{n=JSON.parse(e)}catch{}return n},ve=(e,t)=>e.pXhr.then((e=>(k("uploady.sender: received upload response ",e),((e,t)=>{const r=t.isSuccessfulCall?t.isSuccessfulCall(e):be.includes(e.status);return Q(r)?r:Promise.resolve(r)})(e,t).then((r=>{const n=r?J.FINISHED:J.ERROR,s=e.status,a=ae(e);return{status:s,state:n,response:{data:t.formatServerResponse?.(e.response,s,a)??ye(e.response,a,t),headers:a}}}))))).catch((t=>{let r,n;return e.aborted?(r=J.ABORTED,n="aborted"):(k("uploady.sender: upload failed: ",t),r=J.ERROR,n=t),{error:!0,state:r,response:n,status:0}})),Re=e=>(t,r,n,s)=>{if(!r)throw new ge(me);k("uploady.sender: sending file: ",{items:t,url:r,options:n});const a=Ee(t,r,n,s,e);return{request:ve(a,n),abort:()=>(e=>{let t=!1;const{aborted:r,getXhr:n}=e,s=n();return!r&&s&&s.readyState&&4!==s.readyState&&(k(`uploady.sender: cancelling request with ${e.count} items to: ${e.url}`),s.abort(),e.aborted=!0,t=!0),t})(a),senderType:me}},Ie=Re(),Oe=Ie,Te=$({chunked:!0,chunkSize:5242880,retries:0,parallel:1,sendWithRangeHeader:!0});let Ae=null;const Ce=(Ae=null,w()&&"Blob"in window&&(Ae=Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),!!Ae),Pe=(e,t,r)=>{const n=Ae?.call(e,t,r,e.type);return n&&(n.name=e.name,n.lastModified=e.lastModified),n};class we extends Error{constructor(e){super(e),this.name="ChunkedSendError"}}const Ue=Symbol.for("__rpldy-sstt-proxy__"),_e=Symbol.for("__rpldy-sstt-state__"),De=e=>!F()()&&!!e&&!!~Object.getOwnPropertySymbols(e).indexOf(Ue),ke=e=>Array.isArray(e)||M(e)&&!(e=>w()&&e instanceof File||e.name&&e.size&&e.uri)(e),Le=j({withSymbols:!0,predicate:e=>e!==Ue&&e!==_e}),Ne=e=>!!F()()||e[_e].isUpdateable,Be=(e,t)=>{F()()||(e[_e].isUpdateable=t)},He=(e,t)=>{let r;return ke(e)&&(De(e)||(e[Ue]=!0,r=new Proxy(e,t)),Object.keys(e).forEach((r=>{e[r]=He(e[r],t)}))),r||e},xe=e=>De(e)?G(e,Le):e,Fe=e=>{const t={set:(e,n,s)=>(Ne(r)&&(e[n]=He(s,t)),!0),get:(e,t)=>t===Ue?xe(e):e[t],defineProperty:()=>{throw new Error("Simple State doesnt support defining property")},setPrototypeOf:()=>{throw new Error("Simple State doesnt support setting prototype")},deleteProperty:(e,t)=>(Ne(r)&&delete e[t],!0)};F()()||De(e)||Object.defineProperty(e,_e,{value:{isUpdateable:!1},configurable:!0});const r=F()()?e:He(e,t);return{state:r,update:e=>{if(!F()()&&Ne(r))throw new Error("Can't call update on State already being updated!");try{Be(r,!0),e(r)}finally{Be(r,!1)}return r},unwrap:e=>e?xe(e):De(r)?xe(r):r}},$e=$({CHUNK_START:"CHUNK_START",CHUNK_FINISH:"CHUNK_FINISH"}),Me="rpldy-chunked-sender",qe=j({undefinedOverwrites:!0}),je=(e,t,r,n,s)=>{if(e.data||t.updateState((()=>{e.data=Pe(r.file,e.start,e.end)})),!e.data)throw new we("chunk failure - failed to slice");const a=t.getState().url;k(`chunkedSender.sendChunk: about to send chunk ${e.id} [${e.start}-${e.end}] to: ${a||""}`);const o=((e,t,r,n,s)=>{const a=t.getState(),o=xe(a.sendOptions),i={...o.headers};!1!==a.sendWithRangeHeader?i["Content-Range"]=((e,t,r)=>t&&`bytes ${e.start}-${e.start+t.size-1}/${r.file.size}`)(e,e.data,r):k(`chunkedSender.sendChunk: excluding content-range header as sendWithRangeHeader is false for chunk ${e.id}`);const l={...o,headers:i},d=ne(e.data,e.id),u=t=>{n(t,[e])},c=a.chunks.indexOf(e);return Y(s,$e.CHUNK_START,{item:xe(r),chunk:W(e,["id","start","end","index","attempt"]),chunkItem:{...d},sendOptions:l,url:a.url,chunkIndex:c,remainingCount:a.chunks.length,totalCount:a.chunkCount,onProgress:n}).then((e=>{let t;const n="boolean"==typeof e?!1===e?{stop:!0}:{}:e||{};return n.stop?(k(`chunkedSender.sendChunk: received false from CHUNK_START handler - skipping chunk ${c}, item ${r.id}`),t={request:Promise.resolve({state:J.FINISHED,response:"skipping chunk as instructed by CHUNK_START handler",status:200}),abort:()=>!0,senderType:"chunk-skipped-sender"}):t=Oe([d],n?.url||a.url,qe({},l,n?.sendOptions),u),t}))})(e,t,r,n,s);return{request:o.then((({request:e})=>e)),abort:()=>(o.then((({abort:e})=>e())),!0),senderType:"chunk-passthrough-sender"}},ze=(e,t,r)=>{if(r instanceof we){const r=e.getState().lastChunkErrorData;t({state:J.ERROR,response:{reason:"At least one chunk failed",chunkUploadResponse:r}})}else t({state:J.ERROR,response:r.message})},Ge=(e,t,r,n)=>{e.updateState((e=>{e.finished=!0})),r({state:n,response:{results:e.getState().responses}})},We=(e,t,r,n,s,a)=>new Promise(((o,i)=>{try{const i=je(s,e,t,r,a);((e,t,r,n,s,a)=>(e.updateState((e=>{e.requests[r]={id:r,abort:n.abort}})),n.request.then((n=>{k(`chunkedSender: request finished for chunk: ${r} - `,n),e.updateState((e=>{delete e.requests[r]}));const o=e.getState().chunks,i=o.findIndex((e=>e.id===r));if(~i){if(n.state===J.FINISHED){const r=o[i];e.updateState((e=>{e.chunks=e.chunks.slice(0,i).concat(e.chunks.slice(i+1))}));const l=r.end-r.start;a({loaded:l,total:t.file.size},[r]),s($e.CHUNK_FINISH,{chunk:W(r,["id","start","end","index","attempt"]),item:xe(t),uploadData:n})}else n.state!==J.ABORTED&&e.updateState((e=>{e.chunks[i].attempt+=1,e.lastChunkErrorData={status:n.status,response:n.response}}));e.updateState((e=>{e.responses.push(n.response)}))}}))))(e,t,s.id,i,a,r).then((()=>{o(),((e,t,r)=>{const n=e.getState(),s=!n.chunks.length;return n.aborted?(k(`chunkedSender: chunked upload aborted for item: ${t.id}`),Ge(e,0,r,J.ABORTED)):s&&!n.error&&(k(`chunkedSender: chunked upload finished for item: ${t.id}`,n.responses),Ge(e,0,r,J.FINISHED)),s||n.error})(e,t,n)||Qe(e,t,r,n,a)}))}catch(e){i(e)}})),Qe=(e,t,r,n,s)=>{const a=e.getState();if(!a.finished&&!a.aborted){const o=Object.keys(a.requests).length;if(!o||a.parallel&&a.parallel>o){let o;try{o=(e=>{const t=e.getState(),r=[],n=Object.keys(t.requests),s=t.parallel||1;for(let e=0;e<t.chunks.length&&n.length+r.length<s;e++){const s=t.chunks[e];if(!n.includes(s.id)){if(s.attempt&&!(s.attempt<t.retries))throw new we("chunk failure");r.push(s)}}return r})(e)}catch(t){ze(e,n,t)}o&&(k(`chunkedSender: about to send ${o.length} chunks for item: ${t.id} with parallel: ${a.parallel}`),o.forEach((a=>{We(e,t,r,n,a,s).catch((t=>{e.updateState((e=>{e.error=!0})),ze(e,n,t)}))})))}}},Ke=Qe,Ve=(e,t,r,n)=>{const s=(n,s)=>{const a=((e,t,r,n)=>{e.updateState((e=>{e.uploaded[r]=Math.max(n,e.uploaded[r]||0)}));const s=e.getState(),a=Object.keys(s.uploaded).reduce(((e,t)=>e+s.uploaded[t]),s.startByte),o=t.file.size;return{loaded:Math.min(a,o),total:o}})(e,t,s[0].id,n.loaded);r(a,[t])};return{sendPromise:new Promise((r=>{Ke(e,t,s,r,n)})),abort:()=>((e,t)=>{k(`chunkedSender: aborting chunked upload for item: ${t.id}`);const r=e.getState();return r.finished||r.aborted||(Object.keys(r.requests).forEach((e=>{k(`chunkedSender: aborting chunk: ${e}`),r.requests[e].abort()})),e.updateState((e=>{e.aborted=!0}))),r.aborted})(e,t)}},Xe=(e,t,r,n,s,a)=>{const o=((e,t,r=0)=>{const{chunkSize:n}=t,s=r?e.file.size-r:e.file.size;if(s<=0)throw new we(`start byte ${r} is invalid. File size: ${e.file.size}`);const a=s<=n?1:Math.ceil(s/n);return new Array(a).fill(null).map(((t,s)=>{const a=n*s+(r||0);return{id:`${e.id}_chunk-${s}`,start:a,end:Math.min(a+n,e.file.size),data:null,attempt:0,uploaded:0,index:s}}))})(e,t,n.startByte),i=((e,t,r,n)=>{const{state:s,update:a}=Fe({finished:!1,aborted:!1,error:!1,uploaded:{},requests:{},responses:[],chunkCount:e.length,startByte:r.startByte||0,lastChunkErrorData:null,chunks:e,url:t,sendOptions:r,...n});return{getState:()=>s,updateState:e=>{a(e)}}})(o,r,n,t);k(`chunkedSender: created ${o.length} chunks for: ${e.file.name}.`);const{sendPromise:l,abort:d}=Ve(i,e,s,a);return{request:l,abort:d,senderType:Me}},Ye=(e,t)=>{const r=(e=>z({},Te,e))(e);return{send:(e,n,s,a)=>{let o;return!r.chunked||e.length>1||e[0].url||!e[0].file.size?(o=Oe(e,n,s,a),k("chunkedSender: sending items as normal, un-chunked requests")):(k("chunkedSender: sending file as a chunked request"),o=Xe(e[0],r,n,s,a,t)),o}}},Ze=e=>(t,r)=>{const n=Ye(e,r);return k("chunkedSenderEnhancer: Created chunked-sender instance with options: ",e),t.update({send:n.send}),t},Je=Ze,et=Te.chunkSize,tt=$({allowRegisterNonExistent:!0,canAddEvents:!0,canRemoveEvents:!0,collectStats:!1}),rt=Symbol.for("__le__"),nt=Symbol.for("__le__pack__"),st=e=>e?e[rt]:null,at=e=>{const t=st(e);if(!t)throw new Error("Didnt find LE internal object. Something very bad happened!");return t},ot=e=>!!st(e),it=(e,t,r,n=!1)=>{(e=>{if(!B()(e))throw new Error("'cb' is not a valid function")})(r);const s=at(e);if(!s.options.allowRegisterNonExistent&&!~s.events.indexOf(t))throw new Error(`Cannot register for event ${t.toString()} that wasn't already defined (allowRegisterNonExistent = false)`);const a=s.registry[t]||[];return a.find((e=>e.cb===r))||(a.push({name:t,cb:r,once:n}),s.registry[t]=a),()=>ft.call(e,t,r)},lt=(e,t)=>{const r=at(e).registry;return t?r[t]?r[t].slice():[]:Object.values(r).flat()},dt={on:function(e,t){return it(this,e,t)},once:function(e,t){return it(this,e,t,!0)},off:ft,getEvents:function(){return at(this).events.slice()}},ut={trigger:function(e,...t){const r=lt(this,e);let n;if(r.length){let s;1===t.length&&!0===t[0]?.[nt]&&(s=t[0].resolve()),n=r.map((r=>{let n;return r.once&&ht(this,e,r.cb),n=s?r.cb(...s):t.length?1===t.length?r.cb(t[0]):2===t.length?r.cb(t[0],t[1]):3===t.length?r.cb(t[0],t[1],t[2]):r.cb(...t):r.cb(),n})).filter((e=>!(void 0===e))).map((e=>Q(e)?e:Promise.resolve(e)))}return n&&(n.length?n:void 0)},addEvent:function(e){const t=at(this);if(!t.options.canAddEvents)throw new Error("Cannot add new events (canAddEvents = false)");if(~t.events.indexOf(e))throw new Error(`Event '${e}' already defined`);t.events.push(e)},removeEvent:function(e){const t=at(this);if(!t.options.canRemoveEvents)throw new Error("Cannot remove events (canRemoveEvents = false)");{const r=t.events.indexOf(e);t.events.splice(r,1)}},hasEvent:function(e){return!!~at(this).events.indexOf(e)},hasEventRegistrations:function(e){return!!lt(this,e).length},assign:function(e){const t=at(this);return mt(e,t.options,t.events,t.registry,t.stats),ct(e)}},ct=e=>Object.entries(ut).reduce(((t,[r,n])=>(t[r]=n.bind(e),t)),{...ut,target:e}),pt=(e,t,r=!1)=>{const n=at(e).registry;!n[t]||!r&&n[t].length||delete n[t]},ht=(e,t,r)=>{const n=at(e).registry;n[t]&&(r?(n[t]=n[t].filter((e=>e.cb!==r)),pt(e,t)):pt(e,t,!0))};function ft(e,t){ht(this,e,t)}const mt=(e,t,r=[],n={},s={})=>{Object.defineProperties(e,{[rt]:{value:Object.seal({registry:n,events:r,options:t,stats:s})},...Object.entries(dt).reduce(((e,[t,r])=>(e[t]={value:r},e)),{})})},gt=(e,t=[],r)=>{const n=e||{},s={...tt,...r};return ot(n)||mt(n,s,t),ct(n)},St=e=>{const t={resolve:()=>[].concat(e())};return Object.defineProperty(t,nt,{value:!0,configurable:!1}),t},bt="rpldy-mock-sender",Et=$({delay:500,progressIntervals:[10,25,50,75,99]}),yt=(e,t,r,n,s)=>{const a=e.isSuccessfulCall||t.isSuccessfulCall;return!a||a({readyState:4,status:r,response:n,getAllResponseHeaders:()=>s})},vt=(e,t,r,n)=>e.then((({items:e,...s})=>{k("uploady.mockSender: mock request finished successfully",e);const a={"x-request-type":"react-uploady.mockSender"},o=t.responseStatus||200,i={sendOptions:r,mock:!0,success:yt(t,r,o,s,a)};return{status:o,state:i.success?J.FINISHED:J.ERROR,response:{...s,headers:a,data:t.response||r.formatServerResponse?.(JSON.stringify(i),o,a)||i,url:n}}})).catch((e=>(k("uploady.mockSender: mock request was aborted",e),{status:0,state:J.ABORTED,response:"abort"}))),Rt=e=>{let t={...Et,...e};return{send:(e,r,n,s)=>{k("uploady.mockSender: about to make a mock request for items: ",e);const a=((e,t)=>{const r=performance.now(),n=[],s=t.reduce(((e,t)=>e+(t.file?.size??0)),0);let a=!1,o=!1,i=null,l=null,d=null;const u=()=>{l&&(l.forEach((e=>{clearTimeout(e)})),l=null)},c=new Promise(((s,a)=>{d=a,setTimeout((()=>{o=!0,s({options:e,time:performance.now()-r,progressEvents:n,items:t}),u()}),e.delay||0)}));return e.progressIntervals&&(l=e.progressIntervals.map((r=>{const l=r/100,d=(e.delay||0)*l;return setTimeout((()=>{if(!a&&!o&&i){const r=void 0!==e.fileSize?e.fileSize:s||0,a={total:r,loaded:r*l};n.push(a),i(a,t)}}),d)}))),{then:c.then.bind(c),abort:()=>(a=!0,o=!0,d&&d(),u(),!0),onProgress:e=>{i=e}}})(t,e);return a.onProgress(s),{request:vt(a,t,n,r),abort:a.abort,senderType:bt}},update:e=>{t={...t,...e}}}},It=e=>t=>{const r=Rt(e);return t.update({send:r.send}),t},Ot=Rt;var Tt=r("wDf8");const At=$({BATCH_ADD:"BATCH-ADD",BATCH_START:"BATCH-START",BATCH_PROGRESS:"BATCH_PROGRESS",BATCH_FINISH:"BATCH-FINISH",BATCH_ABORT:"BATCH-ABORT",BATCH_CANCEL:"BATCH-CANCEL",BATCH_ERROR:"BATCH-ERROR",BATCH_FINALIZE:"BATCH-FINALIZE",ITEM_START:"FILE-START",ITEM_CANCEL:"FILE-CANCEL",ITEM_PROGRESS:"FILE-PROGRESS",ITEM_FINISH:"FILE-FINISH",ITEM_ABORT:"FILE-ABORT",ITEM_ERROR:"FILE-ERROR",ITEM_FINALIZE:"FILE-FINALIZE",REQUEST_PRE_SEND:"REQUEST_PRE_SEND",ALL_ABORT:"ALL_ABORT"}),Ct=$({ITEM_PROGRESS:"ITEM_PROGRESS",BATCH_PROGRESS:"BATCH_PROGRESS"}),Pt=[J.FINISHED,J.ERROR,J.CANCELLED,J.ABORTED],wt=(e,t,r=!1)=>{e.updateState((e=>{const{batchId:n}=e.items[t]||{batchId:null};r&&delete e.items[t];const s=n?e.itemQueue[n].indexOf(t):-1;~s&&n&&e.itemQueue[n].splice(s,1);const a=e.activeIds.indexOf(t);~a&&e.activeIds.splice(a,1),n&&e.batches[n].itemBatchOptions[t]&&delete e.batches[n].itemBatchOptions[t]}))},Ut=(e,t)=>!!e.getState().items[t],_t=e=>Pt.includes(e.state),Dt=j({undefinedOverwrites:!0}),kt=(e,t,r,n,s,a)=>{const o=r(t),i=e.getState().batches[o[0].batchId].batchOptions,l=n?.(t,i)||t;return((e,t,r,n,s,a)=>Y(e.trigger,s,t,n).then((e=>(a?.(e),((e,t,r,n)=>{let s=r,a=t;if(n&&"boolean"!=typeof n){if(k(`uploader.queue: REQUEST_PRE_SEND(${e}) event returned updated items/options`,n),n.items){if(n.items.length!==t.length||!H(n.items,t,["id","batchId","recycled"]))throw new Error(`REQUEST_PRE_SEND(${e}) event handlers must return same items with same ids`);a=n.items}n.options&&(s=Dt({},r,n.options))}return{items:a,options:s,cancelled:!1===n}})(s,r,n,e)))))(e,l,o,i,a,s).then((t=>(t.cancelled||((e,t)=>{const r=t.items[0].batchId;if(t.items[0]&&e.getState().batches[r]){e.updateState((e=>{t.items.forEach((t=>{_t(e.items[t.id])||(e.items[t.id]=t)}));const n=e.batches[r];t.items.forEach((({id:e})=>{n.itemBatchOptions[e]=t.options}))}));const n=e.getState();t.items=t.items.map((e=>n.items[e.id]));const s=n.batches[r];t.options=s.itemBatchOptions[t.items[0].id]||s.batchOptions}})(e,t),t)))},Lt=(e,t,r=null,n=null)=>(s,a)=>kt(s,a,t,r,n,e),Nt=Lt(At.BATCH_START,(e=>e.items),null,(({batch:e}={batch:!1})=>{if(e)throw new Error("BATCH_START event handlers cannot update batch data. Only items & options")})),Bt=[Z.ADDED,Z.PROCESSING,Z.UPLOADING],Ht=[Z.ABORTED,Z.CANCELLED,Z.FINISHED,Z.ERROR],xt=(e,t)=>e.batches[t].batch,Ft=(e,t)=>{const r=e.getState(),n=r.items[t];return r.batches[n.batchId]},$t=(e,t)=>Ft(e,t).batch,Mt=(e,t)=>{const r=((e,t)=>xt(e.getState(),t))(e,t);r.items.forEach((({id:t})=>wt(e,t,!0)))},qt=(e,t)=>{e.updateState((e=>{delete e.batches[t],delete e.itemQueue[t];const r=e.batchQueue.indexOf(t);~r&&e.batchQueue.splice(r,1);const n=e.batchesStartPending.indexOf(t);~n&&e.batchesStartPending.splice(n,1)}))},jt=(e,t,r,n=Z.FINISHED,s)=>{e.updateState((e=>{const r=xt(e,t);r.state=n,s&&(r.additionalInfo=s)})),Gt(e,t,r),Gt(e,t,At.BATCH_FINALIZE)},zt=(e,t)=>{k("uploady.uploader.batchHelpers: cancelling batch: ",t),jt(e,t,At.BATCH_CANCEL,Z.CANCELLED),Mt(e,t),qt(e,t)},Gt=(e,t,r)=>{const n=e.getState(),{batch:s,batchOptions:a}=n.batches[t],o=n.items,i={...xe(s),items:s.items.map((({id:e})=>xe(o[e])))};e.trigger(r,i,xe(a))},Wt=(e,t)=>{const r=xt(e.getState(),t);return Bt.includes(r.state)},Qt=e=>Ht.includes(e.state),Kt={[J.PENDING.valueOf()]:null,[J.ADDED.valueOf()]:At.ITEM_START,[J.FINISHED.valueOf()]:At.ITEM_FINISH,[J.ERROR.valueOf()]:At.ITEM_ERROR,[J.CANCELLED.valueOf()]:At.ITEM_CANCEL,[J.ABORTED.valueOf()]:At.ITEM_ABORT,[J.UPLOADING.valueOf()]:At.ITEM_PROGRESS},Vt=e=>!!~Pt.indexOf(e.state),Xt=(e,t,r)=>{t.forEach((t=>{const r=e.getState(),{id:n,info:s}=t;if(k("uploader.processor.queue: request finished for item - ",{id:n,info:s}),r.items[n]){e.updateState((e=>{const t=e.items[n];t.state=s.state,t.uploadResponse=s.response,t.uploadStatus=s.status,Vt(t)&&delete e.aborts[n]}));const t=e.getState().items[n];if(s.state===J.FINISHED&&t.completed<100){const r=t.file?.size||0;e.handleItemProgress(t,100,r,r)}const{itemBatchOptions:r}=Ft(e,n),a=r[n],o=t.state.valueOf();Kt[o]&&e.trigger(Kt[o],t,a),Vt(t)&&(((e,t)=>{e.updateState((e=>{e.batches[t].finishedCounter+=1}))})(e,t.batchId),e.trigger(At.ITEM_FINALIZE,t,a))}wt(e,n)})),(e=>{V((()=>{const t=e.getState();Object.keys(t.batches).forEach((r=>{const{batch:n,finishedCounter:s}=t.batches[r],{orgItemCount:a}=n,o=Qt(n);a===s&&(o||100===n.completed||(e.updateState((e=>{const t=xt(e,r);t.completed=100,t.loaded=t.items.reduce(((e,{loaded:t})=>e+t),0)})),Gt(e,r,At.BATCH_PROGRESS)),e.updateState((e=>{e.currentBatch===r&&(e.currentBatch=null)})),k(`uploady.uploader.batchHelpers: cleaning up batch: ${n.id}`),o||jt(e,r,At.BATCH_FINISH),Mt(e,r),qt(e,r))}))}))})(e),r(e)},Yt=Lt(At.REQUEST_PRE_SEND,(e=>e),((e,t)=>({items:e,options:t}))),Zt=({allowedItems:e,cancelledResults:t,queue:r,items:n,ids:s,next:a})=>{const o=e.length?Yt(r,e):Promise.resolve();let i=t;return o.catch((e=>{k("uploader.queue: encountered error while preparing items for request",e),((e,t,r,n)=>{const s=r.map((({id:t})=>({id:t,info:{status:0,state:J.ERROR,response:e}})));Xt(t,s,n)})(e,r,n,a)})).then((e=>{let t;return e&&(e.cancelled?i=s.map((()=>!0)):e.items.some((e=>_t(e)))?k("uploader.queue: send data contains aborted items - not sending"):((e,t,r)=>{const{items:n,options:s}=t,a=e.getState().batches[n[0].batchId]?.batch;if(a){let t;try{t=e.sender.send(n,a,s)}catch(e){k("uploader.queue: sender failed with unexpected error",e),t={request:Promise.resolve({status:0,state:J.ERROR,response:e.message}),abort:()=>!1,senderType:"exception-handler"}}const{request:o}=t;((e,t,r)=>{e.updateState((e=>{t.forEach((t=>{e.items[t.id].state=J.UPLOADING,e.aborts[t.id]=r.abort}))}))})(e,n,t),o.then((t=>{const s=n.map((e=>({id:e.id,info:t})));Xt(e,s,r)}))}})(r,{items:e.items,options:e.options},a)),((e,t,r,n)=>{const s=r.map(((e,r)=>e?t[r].id:null)).filter(Boolean);if(s.length){const t=s.map((e=>({id:e,info:{status:0,state:J.CANCELLED,response:"cancel"}})));Xt(e,t,n)}return!!s.length})(r,n,i,a)||(t=a(r)),t}))},Jt=(e,t)=>e.getState().activeIds.flat().includes(t),er=e=>{let t;const r=(e=>{const t=e.getState(),r=t.itemQueue,[n,s]=(e=>{const t=e.getState(),r=t.itemQueue,n=t.items;let s=null,a=0,o=0,i=t.batchQueue[a];for(;i&&!s;){if(Wt(e,i))for(s=r[i][o];s&&(Jt(e,s)||n[s].state.valueOf()!==J.ADDED.valueOf());)o+=1,s=r[i][o];s||(a+=1,i=t.batchQueue[a],o=0)}return s?[i,o]:null})(e)||[];let a,o=n&&~s?r[n][s]:null;if(o){const{batchOptions:e}=t.batches[n],r=e.maxGroupSize||0;a=e.grouped&&r>1?t.itemQueue[n].slice(s,s+r):[o]}return a})(e);if(r){const n=e.getCurrentActiveCount(),{concurrent:s=!1,maxConcurrent:a=0}=e.getOptions();(!n||s&&n<a)&&(k("uploader.processor: Processing next upload - ",{ids:r,currentCount:n}),t=((e,t)=>{let r;return((e,t)=>{const r=$t(e,t);return e.getState().batchesStartPending.includes(r.id)})(e,t[0])?r=Promise.resolve(!0):(((e,t)=>{e.updateState((e=>{e.activeIds=e.activeIds.concat(t)}))})(e,t),r=((e,t)=>{const r=$t(e,t);return e.getState().currentBatch!==r.id})(e,t[0])?((e,t)=>{const r=$t(e,t);return e.updateState((e=>{e.batchesStartPending.push(r.id)})),Nt(e,r).then((({cancelled:n})=>{let s=!1;return e.updateState((e=>{const t=e.batchesStartPending.indexOf(r.id);e.batchesStartPending.splice(t,1)})),n||(s=!Ut(e,t),s||e.updateState((e=>{e.currentBatch=r.id}))),!n&&!s}))})(e,t[0]).then((r=>{let n=!r;return n&&(((e,t)=>{if(Ut(e,t)){const r=Ft(e,t),n=r?.batch.id;n?zt(e,n):k(`uploady.uploader.batchHelpers: cancel batch called for batch already removed (item id = ${t})`)}})(e,t[0]),er(e)),n})).catch((r=>(k("uploader.processor: encountered error while preparing batch for request",r),((e,t,r)=>{const n=$t(e,t),s=n.id;k("uploady.uploader.batchHelpers: failing batch: ",{batch:n}),jt(e,s,At.BATCH_ERROR,Z.ERROR,r.message),Mt(e,s),qt(e,s)})(e,t[0],r),er(e),!0))):Promise.resolve(!1)),r})(e,r).then((t=>{t||(((e,t,r)=>{const n=e.getState();let s=Object.values(n.items);s=s.filter((e=>t.includes(e.id)&&!_t(e))),Promise.all(s.map((t=>{const{batchOptions:r}=Ft(e,t.id);return e.runCancellable(At.ITEM_START,t,r)}))).then((n=>{let a=n.map(((t,r)=>t?null:((e,t)=>{const r=t.getState().items[e];return r&&!_t(r)?r:void 0})(s[r].id,e))).filter(Boolean);return{allowedItems:a,cancelledResults:n,queue:e,items:s,ids:t,next:r}})).then(Zt)})(e,r,er),s&&er(e))})))}return t},tr=er,rr=e=>(t,r)=>Xt(e,[{id:t,info:r}],tr),nr=()=>!0,sr=$({autoUpload:!0,clearPendingOnAdd:!1,inputFieldName:"file",concurrent:!1,maxConcurrent:2,grouped:!1,maxGroupSize:5,method:"POST",params:{},fileFilter:nr,forceJsonResponse:!1,withCredentials:!1,destination:{},send:null,sendWithFormData:!0,formDataAllowUndefined:!1,fastAbortThreshold:100}),ar=()=>{const{trigger:e,target:t}=gt({send:(t,r,n)=>{const s=n.destination,a=s?.url,o=(0,C.A)((n=>((e,t,r,n)=>{((e,t,r,n,s)=>{e.forEach((e=>{k(`uploady.uploader.processor: file: ${e.id} progress event: loaded(${r}) - completed(${t})`),s(Ct.ITEM_PROGRESS,e,t,r,n)}))})(e,Math.min(r.loaded/r.total*100,100)/e.length,r.loaded/e.length,r.total,n),n(Ct.BATCH_PROGRESS,t)})(t,r,n,e)),50,!0);return(B()(n.send)?n.send:Oe)(t,a,{method:s?.method||n.method||sr.method,paramName:s?.filesParamName||n.inputFieldName||"file",params:{...n.params,...s?.params},forceJsonResponse:n.forceJsonResponse,withCredentials:n.withCredentials,formatGroupParamName:n.formatGroupParamName,headers:s?.headers,sendWithFormData:n.sendWithFormData,formatServerResponse:n.formatServerResponse,formDataAllowUndefined:n.formDataAllowUndefined,isSuccessfulCall:n.isSuccessfulCall},o)}},Object.values(Ct));return t},or=w()&&"FileList"in window,ir=(e,t=0)=>{let r=e;return F()()||(t<3&&De(e)?r=xe(e):t<3&&ke(e)&&(r=Array.isArray(e)?e.map((e=>ir(e,t+1))):Object.keys(e).reduce(((r,n)=>(r[n]=ir(e[n],t+1),r)),{}))),r};let lr=0;const dr=(e,t,r,n)=>{const s=((e,t,r,n,s)=>{const{state:a,update:o}=Fe({itemQueue:{},batchQueue:[],currentBatch:null,batchesStartPending:[],batches:{},items:{},activeIds:[],aborts:{}}),i=()=>a,l=e=>{o(e)},d=e=>{if(a.items[e.id]&&!e.recycled)throw new Error(`Uploader queue conflict - item ${e.id} already exists`);e.recycled&&((e,t)=>{const{previousBatch:r}=t;if(t.recycled&&r&&e.getState().batches[r]){const{id:n}=$t(e,t.id);n===r&&e.updateState((e=>{const r=xt(e,n),s=r.items.findIndex((({id:e})=>e===t.id));~s&&r.items.splice(s,1),e.batches[n].itemBatchOptions[t.id]&&delete e.batches[n].itemBatchOptions[t.id]}))}})(c,e),l((t=>{t.items[e.id]=e}))},u=(e,r,n,s)=>{a.items[e.id]&&(l((t=>{const a=t.items[e.id];a.loaded=n,a.completed=r,a.total=s})),t(At.ITEM_PROGRESS,i().items[e.id]))};n.on(Ct.ITEM_PROGRESS,u),n.on(Ct.BATCH_PROGRESS,(e=>{const t=a.batches[e.id]?.batch.items;if(t){const[r,n]=t.reduce(((e,{id:t})=>{const{loaded:r,file:n}=a.items[t],s=n?.size||r||1;return e[0]+=r,e[1]+=s,e}),[0,0]);l((t=>{const s=t.batches[e.id].batch;s.total=n,s.loaded=r,s.completed=r/n})),Gt(c,e.id,At.BATCH_PROGRESS)}}));const c={uploaderId:s,getOptions:()=>e,getCurrentActiveCount:()=>a.activeIds.length,getState:i,updateState:l,trigger:t,runCancellable:(e,...t)=>{if(!B()(r))throw new Error("Uploader queue - cancellable is of wrong type");return r(e,...t)},sender:n,handleItemProgress:u,clearAllUploads:()=>{c.updateState((e=>{e.itemQueue={},e.batchQueue=[],e.currentBatch=null,e.batches={},e.items={},e.activeIds=[]}))},clearBatchUploads:e=>{V((()=>{k(`uploader.queue: started scheduled work to clear batch uploads (${e})`),i().batches[e]&&((e,t)=>{e.updateState((e=>{const{items:r}=xt(e,t);delete e.batches[t],delete e.itemQueue[t];const n=e.batchQueue.indexOf(t);~n&&e.batchQueue.splice(n,1),e.currentBatch===t&&(e.currentBatch=null),r.forEach((({id:t})=>{delete e.items[t];const r=e.activeIds.indexOf(t);~r&&e.activeIds.splice(r,1)}))}))})(c,e)}))}};return w()&&_()&&(window[`__rpldy_${s}_queue_state`]=c),{updateState:l,getState:c.getState,runCancellable:c.runCancellable,uploadBatch:(e,t)=>{t&&l((r=>{r.batches[e.id].batchOptions=t})),tr(c)},addBatch:(e,t)=>(l((r=>{r.batches[e.id]={batch:e,batchOptions:t,itemBatchOptions:{},finishedCounter:0},r.batchQueue.push(e.id),r.itemQueue[e.id]=e.items.map((({id:e})=>e))})),e.items.forEach(d),xt(a,e.id)),abortItem:(...e)=>((e,t)=>{const r=e.getOptions().abortItem;A()(!!r,"Abort Item method not provided yet abortItem was called");const n=e.getState();return r(t,n.items,n.aborts,rr(e))})(c,...e),abortBatch:(...e)=>((e,t)=>{const r=e.getOptions().abortBatch;A()(!!r,"Abort Batch method not provided yet abortItem was called");const n=e.getState(),s=n.batches[t],a=s?.batch;if(a&&!Qt(a)){jt(e,t,At.BATCH_ABORT,Z.ABORTED);const{isFast:o}=r(a,s.batchOptions,n.aborts,n.itemQueue,rr(e),e.getOptions());o&&e.clearBatchUploads(a.id)}})(c,...e),abortAll:(...e)=>(e=>{const t=e.getOptions().abortAll;A()(!!t,"Abort All method not provided yet abortAll was called"),e.trigger(At.ALL_ABORT);const r=e.getState(),{isFast:n}=t(r.items,r.aborts,r.itemQueue,rr(e),e.getOptions());n&&e.clearAllUploads()})(c,...e),clearPendingBatches:()=>{(e=>{const t=e.getState().batches;Object.keys(t).filter((e=>t[e].batch.state===Z.PENDING)).forEach((t=>{Mt(e,t),qt(e,t)}))})(c)},uploadPendingBatches:e=>{((e,t)=>{e.updateState((e=>{Object.keys(e.batches).forEach((r=>{const n=e.batches[r],{batch:s,batchOptions:a}=n;s.state===Z.PENDING&&(s.items.forEach((e=>{e.state=J.ADDED})),s.state=Z.ADDED,n.batchOptions=z({},a,t))}))}))})(c,e),tr(c)},cancelBatch:e=>zt(c,e.id)}})(r,e,t,ar(),n);return{abortBatch:e=>{s.abortBatch(e)},abort:e=>{e?s.abortItem(e):s.abortAll()},addNewBatch:(e,t)=>((e,t,r)=>{lr+=1;const n=`batch-${lr}`,s=(e=>or&&e instanceof FileList||"[object FileList]"===e.toString())(e),a=Array.isArray(e)||s?e:[e],o=!r.autoUpload;return((e,t,r,n)=>{const s=n?Array.prototype.map.call(t,(e=>re(e)?e.file||e.url:e)):[];return Promise.all(Array.prototype.map.call(t,((e,t)=>{const r=(n||nr)(s[t],t,s);return Q(r)?r.then((t=>!!t&&e)):!!r&&e}))).then((t=>t.filter(Boolean).map((t=>ne(t,e,r)))))})(n,a,o,r.fileFilter).then((e=>({id:n,uploaderId:t,items:e,state:o?Z.PENDING:Z.ADDED,completed:0,loaded:0,total:0,orgItemCount:e.length,additionalInfo:null})))})(e,n,t).then((e=>{let r;if(e.items.length){const a=s.addBatch(e,t);r=s.runCancellable(At.BATCH_ADD,a,t).then((e=>(e?s.cancelBatch(a):(k(`uploady.uploader [${n}]: new items added - auto upload =\n ${String(t.autoUpload)}`,a.items),t.autoUpload&&s.uploadBatch(a)),a)))}else k(`uploady.uploader: no items to add. batch ${e.id} is empty. check fileFilter if this isn't intended`);return r||Promise.resolve(null)})),clearPendingBatches:()=>{s.clearPendingBatches()},processPendingBatches:e=>{s.uploadPendingBatches(e)}}},ur=(...e)=>(t,...r)=>e.reduce(((e,t)=>t(e,...r)||e),t),cr=Object.values(At);let pr=0;const hr=e=>{pr+=1;const t=`uploader-${pr}`;let r=!1;const n={};k(`uploady.uploader: creating new instance (${t})`,{options:e,counter:pr});let s=(e=>{return{...sr,...e,destination:e&&e.destination?(t=e.destination,{params:{},...t}):null};var t})(e);const a=()=>{c.clearPendingBatches()};let{trigger:o,target:i}=gt({id:t,update:e=>(s=z({},s,e),i),add:(e,t)=>{const r=z({},s,t);return r.clearPendingOnAdd&&a(),c.addNewBatch(e,r).then((()=>{k("uploady.uploader: finished adding file data to be processed")}))},upload:e=>{c.processPendingBatches(e)},abort:e=>{c.abort(e)},abortBatch:e=>{c.abortBatch(e)},getOptions:()=>G(s),clearPending:a,registerExtension:(e,t)=>{A()(r,"Uploady - uploader extensions can only be registered by enhancers"),A()(!n[e],"Uploady - uploader extension by this name [%s] already exists",e),k(`uploady.uploader: registering extension: ${e.toString()}`,t),n[e]=t},getExtension:e=>n[e]},cr,{canAddEvents:!1,canRemoveEvents:!1});const l=(e,...t)=>{const r=St((()=>t.map(ir)));return o(e,r)},d=L(l),u=((e,t,r,n)=>{const s=t.enhancer?(a=t.enhancer,ur(fe(),a)):fe();var a;n(!0);const o=s(e,r);return n(!1),o||e})(i,s,l,(e=>{r=e})),c=dr(l,d,s,u.id);return $(u)},fr=hr,mr=Symbol.for("__upldy-retry__"),gr="RETRY_EVENT",Sr=[J.ABORTED,J.ERROR],br=(e,t,r,n,s)=>{const a=t.getState().failed,o=n||Object.keys(a),i=o.map((e=>a[e])).filter(Boolean);if(i.length){const n={...s||null,autoUpload:void 0===s?.autoUpload||s.autoUpload};r(gr,{items:i,options:n}),o?.forEach((e=>((e,t)=>{e.updateState((e=>{const r=e.failed[t].batchId;delete e.failed[t];const n=e.batchIdsMap[r].indexOf(t);e.batchIdsMap[r].splice(n,1),e.batchIdsMap[r].length||delete e.batchIdsMap[r]}))})(t,e))),e.add(i,n)}return!!i.length},Er=(e,t)=>{const r=(()=>{const{state:e,update:t}=Fe({batchIdsMap:{},failed:{}});return{updateState:e=>{t(e)},getState:()=>e}})();return((e,t)=>{e.on(At.ITEM_FINALIZE,(e=>{Sr.includes(e.state)&&t.updateState((t=>{t.failed[e.id]=e,(t.batchIdsMap[e.batchId]=t.batchIdsMap[e.batchId]||[]).push(e.id)}))}))})(e,r),e.registerExtension(mr,{retry:(n,s)=>((e,t,r,n,s)=>{let a;return n?a=((e,t,r,n,s)=>(k(`uploady.retry: about to retry item: ${n}`),br(e,t,r,[n],s)))(e,t,r,n,s):(k("uploady.retry: about to retry all failed item"),a=br(e,t,r,null,s)),a})(e,r,t,n,s),retryBatch:(n,s)=>((e,t,r,n,s)=>{k(`uploady.retry: about to retry batch: ${n}`);const a=t.getState().batchIdsMap[n]?.slice();return!!a&&br(e,t,r,a,s)})(e,r,t,n,s)}),e},yr=e=>{let t=!1;(()=>{try{if(w()&&e in window){const r="__lsTest";window[e].setItem(r,`__test-${Date.now()}`),window[e].removeItem(r),t=!0}}catch(e){}})();const r=["key","getItem","setItem","removeItem","clear"].reduce(((r,n)=>(r[n]=(...r)=>t?window[e][n](...r):void 0,r)),{isSupported:t,length:0});return Object.defineProperty(r,"length",{get:()=>t?window[e].length:0}),r},vr=yr("localStorage"),Rr=yr("sessionStorage"),Ir=$({...Te,featureDetection:!1,featureDetectionUrl:null,version:"1.0.0",resume:!0,overrideMethod:!1,deferLength:!1,sendDataOnCreate:!1,storagePrefix:"__rpldy-tus__",lockedRetryDelay:2e3,forgetOnSuccess:!1,ignoreModifiedDateInStorage:!1}),Or=Symbol.for("__upldy-tus__"),Tr="rpldy-tus-sender",Ar=[200,201,204],Cr="creation-with-upload",Pr="concatenation",wr="creation-defer-length",Ur=$({RESUME_START:"RESUME_START",PART_START:"PART_START"}),_r=e=>`rpldy_tus_fd_${e}`,Dr={[Pr]:(e,t)=>{+t.getState().options.parallel>1&&!~e.indexOf(Pr)&&(k(`tusSender.featureDetection: disabling parallel uploads, ${Pr} extension not available`),t.updateState((e=>{e.options.parallel=1})))},[Cr]:(e,t)=>{t.getState().options.sendDataOnCreate&&!~e.indexOf(Cr)&&(k(`tusSender.featureDetection: disabling create with data, ${Cr} extension not available`),t.updateState((e=>{e.options.sendDataOnCreate=!1})))},[wr]:(e,t)=>{t.getState().options.deferLength&&!~e.indexOf(wr)&&(k(`tusSender.featureDetection: disabling defer length, ${wr} extension not available`),t.updateState((e=>{e.options.deferLength=!1})))}},kr=(e,t,r)=>{const{options:n}=e.getState();if(t){k("tusSender.featureDetection: retrieved extensions from server",t);const r=t.split(",");if(r.length&&n.onFeaturesDetected){const t=n.onFeaturesDetected(r);t&&e.updateState((e=>{e.options=z({},e.options,t)}))}else Object.entries(Dr).forEach((([t,n])=>{n(r,e)}))}r&&r!==e.getState().options.version&&(k(`tusSender.featureDetection: setting version to server version: ${r}`),e.updateState((e=>{e.options.version=r}))),e.updateState((e=>{e.featureDetection={processed:!0,version:r,extensions:t}}))},Lr=(e,t,r)=>e.catch((e=>{k("tusSender.featureDetection: failed to retrieve data from server",e)})).then((e=>{if(e&&~Ar.indexOf(e.status)){const n=e.getResponseHeader("Tus-Extension"),s=e.getResponseHeader("Tus-Resumable");n&&Rr.setItem(_r(t),JSON.stringify({extensions:n,versions:s})),kr(r,n,s)}})),Nr=(e,t)=>{const{options:r}=t.getState(),n=oe(e,null,{method:"OPTIONS",headers:{"tus-resumable":r.version}});return{request:Lr(n,e,t),abort:()=>(n.xhr.abort(),!0)}},Br=(e,t,r)=>{const n=[e.file.name,e.file.type,e.file.size,t.ignoreModifiedDateInStorage?null:e.file.lastModified,r].filter(Boolean).join("/");return`${t.storagePrefix||Ir.storagePrefix}${n}`},Hr=(e,t,r,n)=>{r.resume&&vr.setItem(Br(e,r,n),JSON.stringify({time:Date.now(),uploadUrl:t}))},xr=(e,t,r)=>{let n;const s=Br(e,t,r);if(t.resume)try{const e=vr.getItem(s);e&&(n=JSON.parse(e).uploadUrl)}catch(e){k(`tusSender.resumableStore: failed to retrieve persisted data for key: ${s}`,e)}return n},Fr=(e,t,r)=>{const n=Br(e,t,r);vr.removeItem(n)},$r=e=>{const t=e.storagePrefix||Ir.storagePrefix;for(let e=0;e<vr.length;e++){const r=vr.key(e);r&&r.startsWith(t)&&vr.removeItem(r)}},Mr=e=>{const t=e.params&&Object.keys(e.params);return t?.length?t.map((t=>`${t} ${btoa(e.params[t])}`)).join(","):void 0},qr=(e,t)=>e.then((e=>(e.state===J.FINISHED&&(e.response.location=t),e))),jr=e=>qr(Promise.resolve({status:200,state:J.FINISHED,response:{message:"TUS server has file"}}),e),zr=e=>({...e,"Content-Range":void 0}),Gr=(e,t,r,n,s)=>{const{options:a}=r.getState(),o={"tus-resumable":a.version,"Upload-Defer-Length":a.deferLength?1:void 0,"Upload-Length":a.deferLength?void 0:e.file.size,"Upload-Metadata":s?void 0:Mr(n),"Content-Type":a.sendDataOnCreate?"application/offset+octet-stream":void 0,"Upload-Concat":s?"partial":void 0,...n.headers};let i=null;if(k(`tusSender.create - creating upload for ${e.id} at: ${t}`),a.sendDataOnCreate){const t=+a.chunkSize;k("tusSender.create - adding first chunk to create request",{chunkSize:t,actualSize:e.file.size}),i=t<e.file.size?Pe(e.file,0,t):e.file}const l=oe(t,i,{method:"POST",headers:o});let d=!1;return{request:l.then((n=>{let s=null;return n&&~Ar.indexOf(n.status)?s=((e,t,r,n)=>{const{options:s}=r.getState(),a=((e,t)=>{let r;return r=/^(http:|https:)?\/\//.test(t)?t:t.startsWith("/")?(e.startsWith("/")?"":new URL(e).origin.replace(/\/$/,""))+t:[e.replace(/\/$/,""),t.replace(/^\//,"")].join("/"),r})(t,n.getResponseHeader("Location"));let o=0,i=!1;if(k(`tusSender.create: successfully created upload for item: ${e.id} - upload url = ${a}`),s.sendDataOnCreate){const t=parseInt(n.getResponseHeader("Upload-Offset"));o=isNaN(t)?o:t,i=e.file.size<=o}return r.updateState((t=>{t.items[e.id].uploadUrl=a,t.items[e.id].offset=o})),{offset:o,uploadUrl:a,isNew:!0,isDone:i}})(e,t,r,n):k(`tusSender.create: create upload failed for item: ${e.id}`,n),s})).catch((e=>(k("tusSender.create: create upload failed",e),null))).finally((()=>{d=!0})),abort:()=>(d||(k(`tusSender.create: aborting create request for item: ${e.id}`),l.xhr.abort()),!d)}},Wr=j({undefinedOverwrites:!0}),Qr=(e,t,r)=>(Fr(e,t,r),{uploadUrl:"",isNew:!1,canResume:!1}),Kr=(e,t,r,n,s,a)=>{const{options:o}=r.getState();let i=!1,l=!1;k(`tusSender.resume - resuming upload for ${e.id}${s?`-${s}`:""} at: ${t}`);const d=((e,t,r,n)=>{const{options:s}=r.getState();return Y(n,Ur.RESUME_START,{url:t,item:xe(e),resumeHeaders:xe(s.resumeHeaders)}).then((r=>{let n;const a="boolean"==typeof r?!1===r?{stop:!0}:{}:r||{};return a.stop?k(`tusSender.resume: received false from TUS RESUME_START event - cancelling resume attempt for item: ${e.id}`):n=oe(a?.url||t,null,{method:"HEAD",headers:Wr({"tus-resumable":s.version},s.resumeHeaders,a?.resumeHeaders)}),()=>n}))})(e,t,r,n);return{request:d.then((d=>{const u=d();i=null===u;const c=()=>Qr(e,o,s);return i||l||!u?Promise.resolve(c()):u.then((o=>i||l?c():((e,t,r,n,s,a,o)=>{let i;const{options:l}=n.getState();return e&&~Ar.indexOf(e.status)?i=((e,t,r,n)=>{k(`tusSender.resume - successfully initiated resume for item: ${e.id} - upload url = ${t}`);let s=!1,a=!1;const o=parseInt(n.getResponseHeader("Upload-Offset"));if(!isNaN(o)){const i=parseInt(n.getResponseHeader("Upload-Length"));isNaN(i)&&!r.getState().options.deferLength||(a=o===i,s=!a,r.updateState((r=>{r.items[e.id].uploadUrl=t,r.items[e.id].offset=o})))}re