UNPKG

@rpldy/uploady

Version:

wrapper&context component to expose and provide react-uploady functionality

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