@emailmaker/emailmaker 1.1.10 → 1.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +0 -1
  2. package/emailmaker-core.f22adcc6.js +1 -0
  3. package/emailmaker-esm.js +3 -3
  4. package/emailmaker.d.ts +1 -9
  5. package/emailmaker.js +2 -2
  6. package/iframe/js/amp.CUKrusRy.js +1 -0
  7. package/iframe/js/iframe-eblock.js +1 -1
  8. package/iframe/js/iframe.js +1 -1
  9. package/iframe/js/rules.CNqvmp_P.js +1 -1
  10. package/iframe/js/sanitize-html.BWcyAj0s.js +1 -0
  11. package/package.json +1 -1
  12. package/static/core/{99b68b38.js → 4f5fa8f8.js} +1 -1
  13. package/static/core/73fecffa.js +1 -0
  14. package/static/core/{52eade68.js → 795854f6.js} +1 -1
  15. package/static/core/{b78dde1d.js → 81f3e3c0.js} +1 -1
  16. package/static/core/{e1b57fc4.js → 8df8364d.js} +2 -2
  17. package/static/core/a8a4b287.js +853 -0
  18. package/static/core/ad026780.js +1 -0
  19. package/static/core/{600d78a8.js → b0b98d59.js} +4 -4
  20. package/static/core/{943d36ad.js → bb64d285.js} +1 -1
  21. package/static/core/{c83f5b04.js → c7edc4c6.js} +2 -2
  22. package/static/core/{33ef3634.js → d97c92e6.js} +2 -2
  23. package/static/core/{e776bec5.js → db57afb1.js} +6 -6
  24. package/static/core/{d40f1338.js → eb32c1fb.js} +2 -2
  25. package/static/core/f95aa023.js +51 -0
  26. package/static/core/{3b3b4821.js → fe996f08.js} +1 -1
  27. package/static/esm/{c1e3467e.js → b86c52d7.js} +1 -1
  28. package/two_step_headless_plugin.html +1 -1
  29. package/emailmaker-core.3487dd03.js +0 -1
  30. package/iframe/js/amp.CdTI2-VC.js +0 -1
  31. package/iframe/js/sanitize-html.tGUeRBWs.js +0 -1
  32. package/static/core/32110662.js +0 -851
  33. package/static/core/a446ebda.js +0 -1
  34. package/static/core/aed94d1a.js +0 -1
  35. package/static/core/b138b9b9.js +0 -51
  36. /package/iframe/{iframe-eblock.3487dd03.html → iframe-eblock.f22adcc6.html} +0 -0
  37. /package/iframe/{iframe.3487dd03.html → iframe.f22adcc6.html} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emailmaker/emailmaker",
3
- "version": "1.1.10",
3
+ "version": "1.1.12",
4
4
  "private": false,
5
5
  "main": "emailmaker.js",
6
6
  "module": "emailmaker-esm.js",
@@ -1 +1 @@
1
- __emailmaker__.define(`static/core/99b68b38.js`,[`require`,`exports`,`module`,`static/core/354bf8a9.js`,`static/core/943d36ad.js`,`static/core/c83f5b04.js`,`react`],function(e,t,n){let r=e("./354bf8a9.js"),i=e("./c83f5b04.js"),a=e("./943d36ad.js"),o=e("react");o=r.l(o);function s(e){let t=e.length;for(;t>0&&e[t-1]===`/`;)t--;return e.slice(0,t)}function c(e){let t=0;for(;t<e.length&&e[t]===`/`;)t++;return e.slice(t)}function l(e,t){return e?t?`${s(e)}/${c(t)}`:e:t}function u(e){let t=i.r();if(e&&/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(e))return e;let n=l(t,e||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)&&(n=`/`+n),n}function d(e,t){if(/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(t))return t;let n=l(u(e),t||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)?`/`+n:n}function f(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)}function p(e,t,n){let r={...e,id:`FM_${e.id}`},i=(e,r)=>{let i=t.normalizeId(e);return n?n.pathForId(i,r,!0):i};if(f(r.data,`itemId`)&&typeof r.data.itemId==`string`&&(r.data.itemId=i(r.data.itemId,!1)),f(r.data,`itemIds`)&&Array.isArray(r.data.itemIds)&&(r.data.itemIds=r.data.itemIds.map(e=>typeof e==`string`?i(e,!1):e)),f(r.data,`folderId`)){let e=r.data.folderId;typeof e==`string`?r.data.folderId=i(e,!0):e??(r.data.folderId=i(``,!0))}return r}function m(e){if(e){if(typeof e==`function`)return e;if(typeof e==`string`){let t=e,n=e=>{let{className:n,style:r,onClick:i,...s}=e,c=a.h(t);return o.default.createElement(`span`,{role:`img`,className:n?`anticon ${n}`:`anticon`,style:r,onClick:i,dangerouslySetInnerHTML:{__html:c},...s})};return n.displayName=`IconFromSource`,n}}}function h(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=m(r);e&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}Object.defineProperty(t,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return d}})});
1
+ __emailmaker__.define(`static/core/4f5fa8f8.js`,[`require`,`exports`,`module`,`static/core/354bf8a9.js`,`static/core/bb64d285.js`,`static/core/c7edc4c6.js`,`react`],function(e,t,n){let r=e("./354bf8a9.js"),i=e("./c7edc4c6.js"),a=e("./bb64d285.js"),o=e("react");o=r.l(o);function s(e){let t=e.length;for(;t>0&&e[t-1]===`/`;)t--;return e.slice(0,t)}function c(e){let t=0;for(;t<e.length&&e[t]===`/`;)t++;return e.slice(t)}function l(e,t){return e?t?`${s(e)}/${c(t)}`:e:t}function u(e){let t=i.r();if(e&&/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(e))return e;let n=l(t,e||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)&&(n=`/`+n),n}function d(e,t){if(/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(t))return t;let n=l(u(e),t||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)?`/`+n:n}function f(e,t){return e!=null&&Object.prototype.hasOwnProperty.call(e,t)}function p(e,t,n){let r={...e,id:`FM_${e.id}`},i=(e,r)=>{let i=t.normalizeId(e);return n?n.pathForId(i,r,!0):i};if(f(r.data,`itemId`)&&typeof r.data.itemId==`string`&&(r.data.itemId=i(r.data.itemId,!1)),f(r.data,`itemIds`)&&Array.isArray(r.data.itemIds)&&(r.data.itemIds=r.data.itemIds.map(e=>typeof e==`string`?i(e,!1):e)),f(r.data,`folderId`)){let e=r.data.folderId;typeof e==`string`?r.data.folderId=i(e,!0):e??(r.data.folderId=i(``,!0))}return r}function m(e){if(e){if(typeof e==`function`)return e;if(typeof e==`string`){let t=e,n=e=>{let{className:n,style:r,onClick:i,...s}=e,c=a.h(t);return o.default.createElement(`span`,{role:`img`,className:n?`anticon ${n}`:`anticon`,style:r,onClick:i,dangerouslySetInnerHTML:{__html:c},...s})};return n.displayName=`IconFromSource`,n}}}function h(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e)){let e=m(r);e&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}Object.defineProperty(t,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return d}})});
@@ -0,0 +1 @@
1
+ __emailmaker__.define(`static/core/73fecffa.js`,[`require`,`exports`,`module`,`static/core/354bf8a9.js`,`static/core/a8a4b287.js`],function(e,t,n){e("./354bf8a9.js"),t.default=e("./a8a4b287.js").t});
@@ -1 +1 @@
1
- __emailmaker__.define(`static/core/52eade68.js`,[`require`,`exports`,`module`,`static/core/92ad1565.js`,`static/core/943d36ad.js`,`static/core/b138b9b9.js`,`react`,`react-router-dom`],function(e,t,n){let r=e("./b138b9b9.js"),i=e("./92ad1565.js"),a=e("./943d36ad.js"),o=e("react"),s=e("react-router-dom");var c=()=>r.Fr.useInstance(r.va);function l(e,t){if(e){if(t===`preview`){let t=e;return t.preview??t.test_sends}return e[t]}}function u(e,t){if(e?.flags){if(t===`preview`){let t=e.flags;return t.preview??t.test_sends}return e.flags[t]}}var d=[10,30,300],f=[10,50,150];function p(e,t){for(let n of t)if(n>e)return n;return`infinity`}function m(e){return e<=10?`email_10_30`:e<=30?`email_30_300`:`email_300_inf`}function h(e){return e<=10?`ai_10_50`:e<=50?`ai_30_150`:`ai_150_inf`}function g(e,t){return t?.limit_exceeded?!0:e.is_unlimited||e.total_limit<=0?!1:e.remaining<=0||e.used>=e.total_limit}var _=[`optimization`,`image_generate`,`preview`,`link_check`,`image_check`,`spam_check`];function v(e){return _.includes(e)}var y={optimization:`optimization_exceeded`,image_generate:`image_generate_exceeded`,preview:`preview_exceeded`,link_check:`link_check_exceeded`,image_check:`image_check_exceeded`,spam_check:`spam_check_exceeded`};function b(e,t,n){if(v(e))return null;let r=l(t,e),i=u(n,e);if(!r||!g(r,i))return null;let a=r.total_limit;return{kind:e,presetId:y[e],previousLimit:a,nextLimit:`infinity`}}function x(e,t){if(!e)return null;let n=l(e,`ai`),r=u(t,`ai`);if(n&&g(n,r)){let e=n.total_limit;return{kind:`ai`,presetId:h(e),previousLimit:e,nextLimit:p(e,f)}}let i=l(e,`email_generate`),a=u(t,`email_generate`);if(i&&g(i,a)){let e=i.total_limit;return{kind:`email_generate`,presetId:m(e),previousLimit:e,nextLimit:p(e,d)}}return b(`image_generate`,e,t)||b(`optimization`,e,t)||b(`preview`,e,t)||b(`link_check`,e,t)||b(`image_check`,e,t)||b(`spam_check`,e,t)}function S(e){return{presetId:h(e),previousLimit:e,nextLimit:p(e,f)}}function C(e){let t=String(e??``).split(`;`)[0].trim();if(!t)return``;let n=t.toLowerCase(),r=n.indexOf(`/`);if(r===-1)return n;let i=n.slice(r+1);return i===`svg+xml`?`svg`:i}async function w(e){if(typeof createImageBitmap==`function`)try{let t=await createImageBitmap(e);try{return{width:t.width,height:t.height}}finally{t.close?.()}}catch{}return new Promise((t,n)=>{let r=URL.createObjectURL(e),i=new Image;i.onload=()=>{URL.revokeObjectURL(r);let e=i.naturalWidth||i.width,a=i.naturalHeight||i.height;e>0&&a>0?t({width:e,height:a}):n(Error(`Could not read image dimensions`))},i.onerror=()=>{URL.revokeObjectURL(r),n(Error(`Could not decode image`))},i.src=r})}function T(e){return e.trim()}function E(){let e=new Map,t=new Map;function n(e,t){return t?new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=()=>{r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}async function r(r,i,a){let o=T(r);if(!o)throw Error(`Empty image URL`);let s=e.get(o);if(s){if(i?.aborted)throw new DOMException(`Aborted`,`AbortError`);return s}let c=t.get(o);if(c)return n(c.promise,i);let l=new AbortController,u=a(o,l.signal).then(n=>(t.delete(o),e.set(o,n),n)).catch(e=>{throw t.delete(o),e});return t.set(o,{promise:u,controller:l}),n(u,i)}function i(n){let r=T(n);if(!r)return;let i=t.get(r);i&&(i.controller.abort(),t.delete(r)),e.delete(r)}function a(){for(let[,e]of t)e.controller.abort();t.clear(),e.clear()}return{resolve:r,abandonKey:i,invalidateAll:a}}async function D(e,t){if(!e||typeof e.findFileByUrl!=`function`)return null;let n=await e.findFileByUrl(t);if(!n)return null;let r=typeof e.getFileById==`function`&&n.id&&await e.getFileById(n.id)||n,i=r.url||t,a=r.thumbnailUrl||r.thumbnail||i||(typeof e.getThumbnailUrl==`function`?await e.getThumbnailUrl(r):``)||``;return a?{file:r,previewUrl:a}:null}function O(e){if(!(e instanceof Blob)||e.size===0)throw new i.T(`Failed to download file from the URL.`,`UploadUrlDownloadFailed`);let t=e.type?.split(`;`)[0]?.trim()||`image/png`;if(!t.startsWith(`image/`))throw new i.T(`Content type at the URL is not allowed.`,`UploadUrlContentTypeNotAllowed`);return{blob:e,mimeType:t}}async function k(e,t){let n=await fetch(e,t);if(!n.ok)throw Error(`Server returned ${n.status}`);return n.blob()}async function A(e,t,n){let o=n?{signal:n}:void 0,{blob:s}=await i.v(e,{handleFileProxy:async e=>a.i(await t.fireFileProxy(e))??null,handleProxyUrl:async e=>a.a(await t.fireProxyUrl(e),e),fetchWithProxy:(e,n,i)=>r.fa(e,{config:t.appConfig,standalone:t.isStandalone,intent:i?.intent||`downloadBlob`,validateBlob:async e=>!e.type||e.type.startsWith(`image/`),init:n})},e=>k(e,o),O,{fetchInit:o});return s}function j(){let e=r.vn(),t=a.t(),n=r.Br(r.ct),{projectId:i}=(0,s.useParams)(),c=n?.id===void 0?i||``:String(n.id),l=r.q(r.Na.FILE_PROXY_EVENT_ID),u=r.q(r.Na.PROXY_URL_EVENT_ID);return(0,o.useCallback)(async(n,r)=>A(n,{appConfig:e,isStandalone:t,fireFileProxy:e=>l.fire({url:e,project:c}),fireProxyUrl:e=>u.fire({url:e,project:c})},r),[e,c,t,l,u])}Object.defineProperty(t,"a",{enumerable:!0,get:function(){return w}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return x}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return E}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return c}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return D}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return C}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return S}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return j}})});
1
+ __emailmaker__.define(`static/core/795854f6.js`,[`require`,`exports`,`module`,`static/core/92ad1565.js`,`static/core/bb64d285.js`,`static/core/f95aa023.js`,`react`,`react-router-dom`],function(e,t,n){let r=e("./f95aa023.js"),i=e("./92ad1565.js"),a=e("./bb64d285.js"),o=e("react"),s=e("react-router-dom");var c=()=>r.xi.useInstance(r.io);function l(e,t){if(e){if(t===`preview`){let t=e;return t.preview??t.test_sends}return e[t]}}function u(e,t){if(e?.flags){if(t===`preview`){let t=e.flags;return t.preview??t.test_sends}return e.flags[t]}}var d=[10,30,300],f=[10,50,150];function p(e,t){for(let n of t)if(n>e)return n;return`infinity`}function m(e){return e<=10?`email_10_30`:e<=30?`email_30_300`:`email_300_inf`}function h(e){return e<=10?`ai_10_50`:e<=50?`ai_30_150`:`ai_150_inf`}function g(e,t){return t?.limit_exceeded?!0:e.is_unlimited||e.total_limit<=0?!1:e.remaining<=0||e.used>=e.total_limit}var _=[`optimization`,`image_generate`,`preview`,`link_check`,`image_check`,`spam_check`];function v(e){return _.includes(e)}var y={optimization:`optimization_exceeded`,image_generate:`image_generate_exceeded`,preview:`preview_exceeded`,link_check:`link_check_exceeded`,image_check:`image_check_exceeded`,spam_check:`spam_check_exceeded`};function b(e,t,n){if(v(e))return null;let r=l(t,e),i=u(n,e);if(!r||!g(r,i))return null;let a=r.total_limit;return{kind:e,presetId:y[e],previousLimit:a,nextLimit:`infinity`}}function x(e,t){if(!e)return null;let n=l(e,`ai`),r=u(t,`ai`);if(n&&g(n,r)){let e=n.total_limit;return{kind:`ai`,presetId:h(e),previousLimit:e,nextLimit:p(e,f)}}let i=l(e,`email_generate`),a=u(t,`email_generate`);if(i&&g(i,a)){let e=i.total_limit;return{kind:`email_generate`,presetId:m(e),previousLimit:e,nextLimit:p(e,d)}}return b(`image_generate`,e,t)||b(`optimization`,e,t)||b(`preview`,e,t)||b(`link_check`,e,t)||b(`image_check`,e,t)||b(`spam_check`,e,t)}function S(e){return{presetId:h(e),previousLimit:e,nextLimit:p(e,f)}}function C(e){let t=String(e??``).split(`;`)[0].trim();if(!t)return``;let n=t.toLowerCase(),r=n.indexOf(`/`);if(r===-1)return n;let i=n.slice(r+1);return i===`svg+xml`?`svg`:i}async function w(e){if(typeof createImageBitmap==`function`)try{let t=await createImageBitmap(e);try{return{width:t.width,height:t.height}}finally{t.close?.()}}catch{}return new Promise((t,n)=>{let r=URL.createObjectURL(e),i=new Image;i.onload=()=>{URL.revokeObjectURL(r);let e=i.naturalWidth||i.width,a=i.naturalHeight||i.height;e>0&&a>0?t({width:e,height:a}):n(Error(`Could not read image dimensions`))},i.onerror=()=>{URL.revokeObjectURL(r),n(Error(`Could not decode image`))},i.src=r})}function T(e){return e.trim()}function E(){let e=new Map,t=new Map;function n(e,t){return t?new Promise((n,r)=>{if(t.aborted){r(new DOMException(`Aborted`,`AbortError`));return}let i=()=>{r(new DOMException(`Aborted`,`AbortError`))};t.addEventListener(`abort`,i,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,i),n(e)},e=>{t.removeEventListener(`abort`,i),r(e)})}):e}async function r(r,i,a){let o=T(r);if(!o)throw Error(`Empty image URL`);let s=e.get(o);if(s){if(i?.aborted)throw new DOMException(`Aborted`,`AbortError`);return s}let c=t.get(o);if(c)return n(c.promise,i);let l=new AbortController,u=a(o,l.signal).then(n=>(t.delete(o),e.set(o,n),n)).catch(e=>{throw t.delete(o),e});return t.set(o,{promise:u,controller:l}),n(u,i)}function i(n){let r=T(n);if(!r)return;let i=t.get(r);i&&(i.controller.abort(),t.delete(r)),e.delete(r)}function a(){for(let[,e]of t)e.controller.abort();t.clear(),e.clear()}return{resolve:r,abandonKey:i,invalidateAll:a}}async function D(e,t){if(!e||typeof e.findFileByUrl!=`function`)return null;let n=await e.findFileByUrl(t);if(!n)return null;let r=typeof e.getFileById==`function`&&n.id&&await e.getFileById(n.id)||n,i=r.url||t,a=r.thumbnailUrl||r.thumbnail||i||(typeof e.getThumbnailUrl==`function`?await e.getThumbnailUrl(r):``)||``;return a?{file:r,previewUrl:a}:null}function O(e){if(!(e instanceof Blob)||e.size===0)throw new i.T(`Failed to download file from the URL.`,`UploadUrlDownloadFailed`);let t=e.type?.split(`;`)[0]?.trim()||`image/png`;if(!t.startsWith(`image/`))throw new i.T(`Content type at the URL is not allowed.`,`UploadUrlContentTypeNotAllowed`);return{blob:e,mimeType:t}}async function k(e,t){let n=await fetch(e,t);if(!n.ok)throw Error(`Server returned ${n.status}`);return n.blob()}async function A(e,t,n){let o=n?{signal:n}:void 0,{blob:s}=await i.v(e,{handleFileProxy:async e=>a.i(await t.fireFileProxy(e))??null,handleProxyUrl:async e=>a.a(await t.fireProxyUrl(e),e),fetchWithProxy:(e,n,i)=>r.Qa(e,{config:t.appConfig,standalone:t.isStandalone,intent:i?.intent||`downloadBlob`,validateBlob:async e=>!e.type||e.type.startsWith(`image/`),init:n})},e=>k(e,o),O,{fetchInit:o});return s}function j(){let e=r.sn(),t=a.t(),n=r.Ei(r.ct),{projectId:i}=(0,s.useParams)(),c=n?.id===void 0?i||``:String(n.id),l=r.q(r.yo.FILE_PROXY_EVENT_ID),u=r.q(r.yo.PROXY_URL_EVENT_ID);return(0,o.useCallback)(async(n,r)=>A(n,{appConfig:e,isStandalone:t,fireFileProxy:e=>l.fire({url:e,project:c}),fireProxyUrl:e=>u.fire({url:e,project:c})},r),[e,c,t,l,u])}Object.defineProperty(t,"a",{enumerable:!0,get:function(){return w}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return x}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return E}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return c}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return D}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return C}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return S}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return j}})});
@@ -1 +1 @@
1
- __emailmaker__.define(`static/core/b78dde1d.js`,[`require`,`exports`,`module`,`static/core/b138b9b9.js`,`static/core/c83f5b04.js`],function(e,t,n){let r=e("./b138b9b9.js"),i=e("./c83f5b04.js");var a;(function(e){function t(e,t,n=(e,t)=>e===t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}e.isEqual=t;function n(e,t=e=>e){let n=new Set;return e.filter(e=>{let r=t(e);return n.has(r)?!1:(n.add(r),!0)})}e.unique=n;function r(e=[],t=[],n=(e,t)=>e===t){let r=[],i=[],a=[];for(let r of e){let e=t.find(e=>n(r,e));e?a.push({prev:r,next:e}):i.push(r)}for(let i of t)e.find(e=>n(i,e))||r.push(i);return{added:r,removed:i,exists:a}}e.diff=r})(a||={});var o=``,s=`Trash`,c=`Trash`,l=class{_inner;rootPath;trashId;trashPath;ensureFolderTrailingSlash;i18n;_pathToId=new Map;_idToPath=new Map;getUrl;getThumbnailUrl;validateDuplicates;constructor(e,t=o,n=c,r=s,a=!0,l=i.m){this._inner=e,this.rootPath=t,this.trashId=n,this.trashPath=r,this.ensureFolderTrailingSlash=a,this.i18n=l,this.validateDuplicates=this._inner.validateDuplicates,typeof e.getUrl==`function`&&(this.getUrl=t=>e.getUrl({...t,id:this.pathForId(t.id,!1),folderId:t.folderId?this.pathForId(t.folderId,!0):this.rootPath})),typeof e.getThumbnailUrl==`function`&&(this.getThumbnailUrl=t=>e.getThumbnailUrl({...t,id:this.pathForId(t.id,!1),folderId:t.folderId?this.pathForId(t.folderId,!0):this.rootPath})),typeof this._inner.deleteItems!=`function`&&(this.deleteItems=void 0),typeof this._inner.deleteItem!=`function`&&(this.deleteItem=void 0),typeof this._inner.moveItems==`function`?this.moveItem=void 0:this.moveItems=void 0,typeof this._inner.copyItems==`function`?this.copyItem=void 0:this.copyItems=void 0,typeof this._inner.uploadFiles==`function`?this.uploadFile=void 0:this.uploadFiles=void 0,typeof this._inner.clearCache!=`function`&&(this.clearCache=void 0),this._getOrGenerateId(this.rootPath)}setController(e){typeof this._inner.setController==`function`&&this._inner.setController({invalidateItemCache:t=>{let n=t.replace(/^\/+|\/+$/g,``),r=this._pathToId.get(n);r&&e.invalidateItemCache(r)},getCachedItem:t=>{let n=t.replace(/^\/+|\/+$/g,``),r=this._pathToId.get(n);if(r){let t=e.getCachedItem(r);if(t)return{...t,id:this.pathForId(t.id,t.isFolder),folderId:this.pathForId(t.folderId,t.isFolder)}}}})}clearCache(e){if(typeof this._inner.clearCache==`function`)return this._inner.clearCache(e)}_getOrGenerateId(e){if(e===this.rootPath)return;let t=e.replaceAll(/^\/+|\/+$/g,``);if(t===this.trashPath.replaceAll(/^\/+|\/+$/g,``))return this.trashId;if(this._pathToId.has(t))return this._pathToId.get(t);let n=r.ro();return this._pathToId.set(t,n),this._idToPath.set(n,t),n}pathForId(e,t,n){let{__:i}=this.i18n;if(e===``||e===void 0)return this.rootPath;if(e===this.trashId)return this.trashPath;let a=this._idToPath.get(e);if(!a){if(n)return`unknown folder ${e}`;throw new r.eo(i?i(`Path for id '${e}' not found in mapping`):`Path for id '${e}' not found in mapping`,`FileNotFound`)}let o=0;for(;o<this.rootPath.length&&this.rootPath[o]===`/`;)o++;if(o){let e=0;for(;e<a.length&&a[e]===`/`;)e++;let t=a.slice(e);a=`/`.repeat(o)+t}return t&&this.ensureFolderTrailingSlash&&!a.endsWith(`/`)&&(a+=`/`),a}_updateIdMapping(e,t){let n=t.replace(/^\/+|\/+$/g,``),r=this._idToPath.get(e);r&&this._pathToId.delete(r),this._idToPath.set(e,n),this._pathToId.set(n,e)}async getItems(e){let t=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,n=await this._inner.getItems({...e,folderId:t}),r=n.items.map(e=>{let t=this._getOrGenerateId(e.id),n=e.folderId?this._getOrGenerateId(e.folderId):this._getOrGenerateId(this.rootPath);return{...e,id:t,folderId:n}});return{...n,items:r}}async createFolder(e,t,n){let r=t?this.pathForId(t,!0):this.rootPath,i=await this._inner.createFolder(e,r,n),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async renameItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.renameItem!=`function`)throw new r.eo(n?n(`Rename item is not supported by inner storage`):`Rename item is not supported by inner storage`,`RenameNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=i,{...o}=await this._inner.renameItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);return this._updateIdMapping(e.id,o.id),e.isFolder&&this.remapCachedFolderContents(e.id,a,o.id),o.folderId&&(o={...o,folderId:this._getOrGenerateId(o.folderId)}),{...o,id:this._getOrGenerateId(o.id)}}async deleteItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.deleteItem!=`function`)throw new r.eo(n?n(`Delete item is not supported by inner storage`):`Delete item is not supported by inner storage`,`DeleteNotAllowed`);let i=this.pathForId(e.id,e.isFolder);await this._inner.deleteItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t),this.recursivelyRemoveMappings(e.id,i)}async uploadFile(e){let{__:t}=this.i18n;if(typeof this._inner.uploadFile!=`function`)throw new r.eo(t?t(`Upload file is not supported by inner storage`):`Upload file is not supported by inner storage`,`UnsupportedOperation`);let n=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,i=await this._inner.uploadFile({...e,folderId:n}),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async uploadFiles(e){let t=e.folderId,n=e.items?.map(e=>e.folderId)??[],r=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,i={...e,folderId:r,items:e.items?.map(e=>({...e,folderId:e.folderId?this.pathForId(e.folderId,!0):r}))??[]},a=await this._inner.uploadFiles(i);return{...a,detailed:a.detailed?.map((e,r)=>{if(!e?.data)return e;let i=e.data.id?this._getOrGenerateId(e.data.id):void 0,a=e.data.folderId?this._getOrGenerateId(e.data.folderId):n[r]??t??this._getOrGenerateId(this.rootPath);return{...e,data:{...e.data,id:i,folderId:a}}})}}async findFileByUrl(e,t){let n=t?this.pathForId(t,!0):this.rootPath;if(typeof this._inner.findFileByUrl==`function`){let t=await this._inner.findFileByUrl(e,n);if(!t)return;let r=this._getOrGenerateId(t.id),i=t.folderId?this._getOrGenerateId(t.folderId):this._getOrGenerateId(this.rootPath);return{...t,id:r,folderId:i}}}async uploadFileByUrl(e,t,n){let r=t?this.pathForId(t,!0):this.rootPath,i=await this._inner.uploadFileByUrl(e,r,n),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async moveItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.moveItem!=`function`)throw new r.eo(n?n(`Move item is not supported by inner storage`):`Move item is not supported by inner storage`,`MoveNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=this.pathForId(t,!0),o=await this._inner.moveItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},a);this._updateIdMapping(e.id,o.id),e.isFolder&&this.remapCachedFolderContents(e.id,i,o.id);let s=this._getOrGenerateId(o.id),c=o.folderId?this._getOrGenerateId(o.folderId):t;return{...o,id:s,folderId:c}}async moveItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.moveItems!=`function`)throw new r.eo(n?n(`Move items is not supported by inner storage`):`Move items is not supported by inner storage`,`MoveNotAllowed`);let i=t?this.pathForId(t,!0):this.rootPath,a=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),o=await this._inner.moveItems(a,i),s=[];if(o.detailed&&o.detailed.length>0){let r=new Map;for(let t=0;t<o.detailed.length;t++){let n=o.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let a=r.get(i.id)||(o.detailed.length===e.length?o.detailed[e.indexOf(i)]:void 0);if(a?.success&&a.data){if(this._updateIdMapping(i.id,a.data.id),i.isFolder){let e=this.pathForId(i.id,i.isFolder);this.remapCachedFolderContents(i.id,e,a.data.id)}s.push({requestId:i.id,success:!0,data:{...a.data,id:this._getOrGenerateId(a.data.id),folderId:a.data.folderId?this._getOrGenerateId(a.data.folderId):t||this._getOrGenerateId(this.rootPath)}})}else{let e=n?n(`Move operation failed - no detailed result`):`Move operation failed - no detailed result`;s.push({requestId:i.id,success:!1,error:a?.error||{message:e,code:`MoveNotAllowed`}})}}}else for(let t of e){let e=n?n(`Move operation failed - no detailed results`):`Move operation failed - no detailed results`;s.push({requestId:t.id,success:!1,error:{message:e,code:`MoveNotAllowed`}})}return{success:o.success,detailed:s,error:o.error}}async copyItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.copyItems!=`function`)throw new r.eo(n?n(`Copy items is not supported by inner storage`):`Copy items is not supported by inner storage`,`CopyNotAllowed`);let i=t?this.pathForId(t,!0):this.rootPath,a=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),o=await this._inner.copyItems(a,i),s=[];if(o.detailed&&o.detailed.length>0){let r=new Map;for(let t=0;t<o.detailed.length;t++){let n=o.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let a=r.get(i.id)||(o.detailed.length===e.length?o.detailed[e.indexOf(i)]:void 0);if(a?.success&&a.data?.id){let e=this._getOrGenerateId(a.data.id);s.push({requestId:i.id,success:!0,data:{...a.data,id:e,folderId:a.data.folderId?this._getOrGenerateId(a.data.folderId):t||this._getOrGenerateId(this.rootPath)}})}else{let e=a?a.success?a.data?a.data.id?{message:n?n(`Unknown copy error`):`Unknown copy error`,code:`CopyNotAllowed`}:{message:n?n(`No ID in copied item data`):`No ID in copied item data`,code:`CopyNotAllowed`}:{message:n?n(`No data returned from copy operation`):`No data returned from copy operation`,code:`CopyNotAllowed`}:a.error||{message:n?n(`Copy operation failed`):`Copy operation failed`,code:`CopyNotAllowed`}:{message:n?n(`No detailed result from copy operation`):`No detailed result from copy operation`,code:`CopyNotAllowed`};s.push({requestId:i.id,success:!1,error:e})}}}else for(let t of e){let e=n?n(`No detailed results from copy operation`):`No detailed results from copy operation`;s.push({requestId:t.id,success:!1,error:{message:e,code:`CopyNotAllowed`}})}let c=s.every(e=>e.success),l=n?n(`Copy operation completed with errors`):`Copy operation completed with errors`;return{success:c,detailed:s,error:c?void 0:o.error||{message:l,code:`CopyNotAllowed`}}}async deleteItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.deleteItems!=`function`)throw new r.eo(n?n(`Delete items is not supported by inner storage`):`Delete items is not supported by inner storage`,`DeleteNotAllowed`);let i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),a=await this._inner.deleteItems(i,t),o=[];if(a.detailed&&a.detailed.length>0){let r=new Map;for(let t=0;t<a.detailed.length;t++){let n=a.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let s=r.get(i.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(i)]:void 0);if(s?.success){let e=this.pathForId(i.id,i.isFolder);if(t.permanent)this.recursivelyRemoveMappings(i.id,e);else if(this._updateIdMapping(i.id,this.trashPath+`/`+e+(i.isFolder?`/`:``)),i.isFolder){let t=this.pathForId(i.id,i.isFolder);this.remapCachedFolderContents(i.id,t,this.trashPath+`/`+e+(i.isFolder?`/`:``))}o.push({requestId:i.id,success:!0})}else{let e=n?n(`Delete operation failed`):`Delete operation failed`;o.push({requestId:i.id,success:!1,error:s?.error||{message:e,code:`DeleteNotAllowed`}})}}}else for(let r of e)if(a.success){let e=this.pathForId(r.id,r.isFolder);if(t.permanent)this.recursivelyRemoveMappings(r.id,e);else if(this._updateIdMapping(r.id,this.trashPath+`/`+e+(r.isFolder?`/`:``)),r.isFolder){let t=this.pathForId(r.id,r.isFolder);this.remapCachedFolderContents(r.id,t,this.trashPath+`/`+e+(r.isFolder?`/`:``))}o.push({requestId:r.id,success:!0})}else{let e=n?n(`Delete operation failed`):`Delete operation failed`;o.push({requestId:r.id,success:!1,error:a.error||{message:e,code:`DeleteNotAllowed`}})}let s=o.every(e=>e.success),c=n?n(`Some items failed to delete`):`Some items failed to delete`;return{success:s,detailed:o,error:s?void 0:a.error||{message:c,code:`DeleteNotAllowed`}}}remapCachedFolderContents(e,t,n){let r=t.replace(/\/+$/,``),i=n.replace(/\/+$/,``),a=[];for(let[e,t]of this._idToPath.entries()){let n=t.replace(/\/+$/,``);n!==r&&n.startsWith(r+`/`)&&a.push({id:e,oldPath:n})}for(let{id:e,oldPath:t}of a){let n=i+t.substring(r.length);this._updateIdMapping(e,n)}}recursivelyRemoveMappings(e,t){let n=t.replace(/\/+$/,``),r=[],i=[];for(let[e,t]of this._idToPath.entries()){let a=t.replace(/\/+$/,``);(a===n||a.startsWith(n+`/`))&&(r.push(e),i.push(a))}for(let e=0;e<r.length;e++)this._idToPath.delete(r[e]),this._pathToId.delete(i[e])}async copyItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.copyItem!=`function`)throw new r.eo(n?n(`Copy item is not supported by inner storage`):`Copy item is not supported by inner storage`,`CopyNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=this.pathForId(t,!0),o=await this._inner.copyItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},a),s=this._getOrGenerateId(o.id),c=o.folderId?this._getOrGenerateId(o.folderId):t;return{...o,id:s,folderId:c}}async updateFile(e,t){let{__:n}=this.i18n;if(typeof this._inner.updateFile!=`function`)throw new r.eo(n?n(`Update file is not supported by inner storage`):`Update file is not supported by inner storage`,`UnsupportedOperation`);let i=this.pathForId(e.id,!1),{...a}=await this._inner.updateFile({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);return this._updateIdMapping(e.id,a.id),a.folderId&&(a={...a,folderId:this._getOrGenerateId(a.folderId)}),{...a,id:this._getOrGenerateId(a.id)}}async getFileData(e,t){let{__:n}=this.i18n,i=this.pathForId(e.id,!1);if(typeof this._inner.getFileData==`function`)return this._inner.getFileData({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);let a=e.url||(typeof this.getUrl==`function`?await this.getUrl(e):void 0);if(!a)throw new r.eo(n?n(`Cannot get file data: no url and no inner.getFileData`):`Cannot get file data: no url and no inner.getFileData`,`FileReadError`);return fetch(a,t?.forceReload?{cache:`no-store`}:void 0).then(e=>e.blob())}async cleanTrash(){let{__:e}=this.i18n;if(typeof this._inner.cleanTrash!=`function`)throw new r.eo(e?e(`Clean trash is not supported by inner storage`):`Clean trash is not supported by inner storage`,`UnsupportedOperation`);return await this._inner.cleanTrash()}},u=``,d=class{map=new Map;static childrenViewKey(e,t){return`v${u}${e}${u}${t}`}static childrenCountKey(e){return`c${u}${e}`}getFreshError(e,t){let n=this.map.get(e);return n?t!==1/0&&Date.now()-n.updatedAt>t?(this.map.delete(e),null):n.error:null}setError(e,t){this.map.set(e,{error:t,updatedAt:Date.now()})}delete(e){this.map.delete(e)}clearChildrenViewErrorsForParent(e){let t=`v${u}${e}${u}`;for(let e of[...this.map.keys()])e.startsWith(t)&&this.map.delete(e)}clearAll(){this.map.clear()}},f=``,p=1800*1e3;function m(e){return e==null||e===``?f:e}function h(e){if(e==null)return 1/0;let t=Number(e);return Number.isFinite(t)&&t>=0?t:1/0}function g(e){return!e||typeof e.search!=`string`?!1:e.search.trim().length>0}function _(e){if(!e)return null;let t=e.folderId;return t==null?null:String(t)}function v(e){return!!e&&e.isFolder}function y(){if(typeof globalThis?.crypto?.randomUUID==`function`)return globalThis.crypto.randomUUID();try{let e=globalThis.crypto||globalThis.msCrypto;if(e&&typeof e.getRandomValues==`function`){let t=new Uint8Array(16);e.getRandomValues(t);let n=``;for(let e=0;e<t.length;e++)n+=t[e].toString(16).padStart(2,`0`);return`id_${n}`}}catch{}return`id_fallback_${Date.now().toString(36)}_${Math.floor(Math.random()*(2**53-1)).toString(36).slice(0,8)}`}function b(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.data?.code===`path_folder_not_found`||t.status===404||t.data?.data?.status===404}function x(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t.toString(36)}function S(e){if(!e||typeof e!=`object`)return String(e??``);let t=e,n=[],r={},i=[`page`,`pageSize`,`sortBy`,`sortOrder`,`search`,`itemType`,`limit`];for(let e of Object.keys(t).sort()){let a=t[e];i.includes(e)?n.push(`${e}=${String(a??``)}`):r[e]=a}let a=Object.keys(r).length?JSON.stringify(r):``,o=n.join(`|`),s=a?x(a):``;return`${o}${s?`|${s}`:``}`}var C=class e{entities=new Map;childrenByParent=new Map;maxCacheSize=1e4;now(){return Date.now()}checkCacheSize(){if(this.entities.size>this.maxCacheSize){let e=Array.from(this.entities.entries()).sort((e,t)=>e[1].updatedAt-t[1].updatedAt),t=Math.floor(this.maxCacheSize*.1);for(let n=0;n<t&&n<e.length;n++){let[t,r]=e[n];this.deleteEntityById(t)}}}getEntity(e){return this.entities.get(e)?.value}getRecord(e){return this.entities.get(e)}getFileSystemItem(e){let t=this.getEntity(e);return t&&!v(t)?t:void 0}getFolder(e){let t=this.getEntity(e);return t&&v(t)?t:void 0}getChildrenIds(e,t={}){let n=m(e),r=this.childrenByParent.get(n);return r?t.onlyFileSystemItems?Array.from(r.files):t.onlyFolders?Array.from(r.folders):[...Array.from(r.folders),...Array.from(r.files)]:[]}searchByUrl(e){for(let t of this.entities.values())if(t.value.url===e)return t.value;return null}upsertEntity(e){let t=this.entities.get(e.id)??null,n=t?t.value:null,r=n?_(n):null,i=_(e),a=n?v(n):!1,o=v(e),s;if(n&&v(n)&&o){let t=n.childrenCount,r=e.childrenCount;t!==void 0&&r===void 0&&(s=t)}if(n&&(r!==i||a!==o)){let t=m(r),n=this.childrenByParent.get(t);n&&(a?n.folders.delete(e.id):n.files.delete(e.id),n.files.size===0&&n.folders.size===0&&this.childrenByParent.delete(t))}let c=e;s!==void 0&&(c={...e,childrenCount:s}),this.entities.set(e.id,{value:{...c},updatedAt:this.now()}),this.checkCacheSize();let l=m(i),u=this.childrenByParent.get(l);u||(u={files:new Set,folders:new Set},this.childrenByParent.set(l,u)),o?u.folders.add(e.id):u.files.add(e.id)}updateServerChildrenCount(e,t){if(e==null||t==null||Number.isNaN(t))return;let n=this.entities.get(e);if(!n||!v(n.value))return;let r={...n.value,childrenCount:t};this.entities.set(e,{value:r,updatedAt:this.now()})}deleteEntityById(e){let t=this.entities.get(e)??null;if(!t)return{entity:null,parentId:null};let n=t.value,r=_(n),i=m(r),a=this.childrenByParent.get(i);return a&&(v(n)?a.folders.delete(e):a.files.delete(e),a.files.size===0&&a.folders.size===0&&this.childrenByParent.delete(i)),this.entities.delete(e),{entity:{...n},parentId:r}}deleteFolderRecursive(e){let t=this.entities.get(e);if(!t||!v(t.value))return{deletedFolderRecords:[],deletedFileSystemItemRecords:[]};let n=[{id:e,parentId:_(t.value)}],r=[],i=[];for(;n.length;){let e=n.shift();r.push(e);let t=this.childrenByParent.get(m(e.id));if(t){for(let e of Array.from(t.folders)){let t=this.entities.get(e);t&&n.push({id:e,parentId:_(t.value)})}for(let e of Array.from(t.files))i.push(e)}}let a=[];for(let e of i){let t=this.entities.get(e);if(!t)continue;let n=t.value,r=m(_(n)),i=this.childrenByParent.get(r);i&&(i.files.delete(e),i.files.size===0&&i.folders.size===0&&this.childrenByParent.delete(r)),this.entities.delete(e),a.push({...n})}let o=[];for(let e=r.length-1;e>=0;e--){let{id:t,parentId:n}=r[e],i=this.entities.get(t);if(!i)continue;let a=i.value,s=m(a.id);this.childrenByParent.delete(s);let c=m(n),l=this.childrenByParent.get(c);l&&(l.folders.delete(t),l.files.size===0&&l.folders.size===0&&this.childrenByParent.delete(c)),this.entities.delete(t),o.push({...a})}return{deletedFolderRecords:o,deletedFileSystemItemRecords:a}}moveEntityById(e,t){let n=this.entities.get(e)??null;if(!n)return null;let r=n.value,i=m(_(r)),a=this.childrenByParent.get(i);a&&(v(r)?a.folders.delete(e):a.files.delete(e),a.files.size===0&&a.folders.size===0&&this.childrenByParent.delete(i));let o={...r,folderId:t};if(v(r)&&v(o)){let e=r.childrenCount;e!==void 0&&(o.childrenCount=e)}this.entities.set(e,{value:o,updatedAt:this.now()});let s=m(t),c=this.childrenByParent.get(s);return c||(c={files:new Set,folders:new Set},this.childrenByParent.set(s,c)),v(o)?c.folders.add(e):c.files.add(e),{...o}}copyFileSystemItem(e,t,n){let r=this.entities.get(e)??null;if(!r||v(r.value))return null;let i={...r.value,id:t,folderId:n};return this.upsertEntity(i),{...i}}copyFolderShallow(e,t,n){let r=this.entities.get(e)??null;if(!r||!v(r.value))return null;let i={...r.value,id:t,folderId:n};return this.upsertEntity(i),{...i}}isEntityStale(e,t){let n=this.entities.get(e)??null;return n?t===1/0?!1:this.now()-n.updatedAt>t:!0}touch(e,t){let n=this.entities.get(e);n&&(n.updatedAt=t??this.now())}getEntitiesByIds(e){return e.map(e=>this.entities.get(e)?.value??null)}searchByName(e,t){if(!e||e.trim()===``)return[];let n=t?.parentId,r=t?.recursive??!1,i=t?.itemType??`all`,a=t?.caseSensitive??!1,o=t?.limit??1/0,s=a?e.trim():e.trim().toLowerCase(),c=[],l=null;if(n!==void 0){l=new Set;let e=m(n);if(l.add(e),r){let t=[e],n=new Set;for(;t.length>0;){let e=t.shift();if(n.has(e))continue;n.add(e);let r=this.childrenByParent.get(e);if(r)for(let e of r.folders)l.add(e),t.push(e)}}}for(let[,e]of this.entities){if(c.length>=o)break;let t=e.value;if(l!==null){let e=m(_(t));if(!l.has(e))continue}if(i===`file`&&v(t)||i===`folder`&&!v(t))continue;let n=t.name??``;(a?n:n.toLowerCase()).includes(s)&&c.push({...t})}return c}toJSON(){return{entities:Array.from(this.entities.entries()),childrenByParent:Array.from(this.childrenByParent.entries()).map(([e,t])=>[e,{files:Array.from(t.files),folders:Array.from(t.folders)}])}}static fromJSON(t){let n=new e;for(let[e,r]of t.entities??[])n.entities.set(e,{value:r.value,updatedAt:r.updatedAt});for(let[e,r]of t.childrenByParent??[])n.childrenByParent.set(e,{files:new Set(r.files),folders:new Set(r.folders)});return n}},w=class e{views=new Map;strategy;ttl;errorTtl;entityTtl;failedRequests;serverChildrenCountHandler;childrenCountInvalidator;maxViewsPerParent=50;constructor(e={},t=p,n,r,i=new d){this.strategy={allowSortedInsert:e.allowSortedInsert??!0,allowSearchInsert:e.allowSearchInsert??!0,invalidateOnPaginationFull:e.invalidateOnPaginationFull??!0,preloadPagesBefore:e.preloadPagesBefore??0,preloadPagesAfter:e.preloadPagesAfter??1,comparator:e.comparator,filterMatch:e.filterMatch},this.ttl=t,this.errorTtl=n??t,this.entityTtl=r??t,this.failedRequests=i}setServerChildrenCountHandler(e){this.serverChildrenCountHandler=e}setChildrenCountInvalidator(e){this.childrenCountInvalidator=e}now(){return Date.now()}parentKey(e){return m(e??null)}isExpired(e){return e==null?!0:this.ttl===1/0?!1:this.now()-e>this.ttl}areEntitiesStale(e,t){return e?e.some(e=>!t.getEntity(e)||t.isEntityStale(e,this.entityTtl)):!0}isEntityTypeCompatible(e,t){return!!(!t||t===`all`||t===`file`&&!v(e)||t===`folder`&&v(e))}cleanupOldViews(e){if(e.size<=this.maxViewsPerParent)return;let t=Array.from(e.entries()).sort((e,t)=>(t[1].view.updatedAt||0)-(e[1].view.updatedAt||0));for(;e.size>this.maxViewsPerParent&&t.length>0;){let[n]=t.pop();e.delete(n)}}async getOrCreateChildren(e,t,n,r){let i=this.parentKey(e),a=S(t??{}),o=this.views.get(i);o||(o=new Map,this.views.set(i,o));let s=d.childrenViewKey(i,a),c=o.get(a);c||(c={params:t,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},o.set(a,c),this.cleanupOldViews(o));let l=this.failedRequests.getFreshError(s,this.errorTtl);if(l!=null)throw l;if(c.view.value&&!this.isExpired(c.view.updatedAt)&&!this.areEntitiesStale(c.view.value,r)&&!c.view.meta?.stale){let e=c.view.value.map(e=>r.getEntity(e)).filter(Boolean),t=c.params?.itemType||`all`;return{items:e.filter(e=>this.isEntityTypeCompatible(e,t)),...c.view.meta??{}}}if(c.view.promise)return c.view.promise;let u=y();c.view.loadId=u;let f=(async()=>{try{let a=await n(e,t),o=g(t),l=o?{...a,total:void 0}:a,d=this.views.get(i)?.get(S(t));if(!d||d.view.loadId!==u){let e=Error(`StaleLoad`);throw e.name=`StaleLoad`,e}for(let e of l.items)r.upsertEntity(e);c.view.value=l.items.map(e=>e.id);let{items:f,...p}=l,m={...p};c.view.meta=m,c.view.meta.stale=!1,this.failedRequests.delete(s),c.view.updatedAt=this.now(),!o&&typeof m.total==`number`&&(this.serverChildrenCountHandler?this.serverChildrenCountHandler(e??null,m.total,r):r.updateServerChildrenCount(e,m.total));let _=this.strategy.preloadPagesAfter??0,v=this.strategy.preloadPagesBefore??0,y=h(t?.pageSize);if((_>0||v>0)&&Number.isFinite(y)){let i=e,a={...t},o=typeof m.totalPages==`number`?m.totalPages:1,s=t?.page??1,c=y,l=n,d=u;setTimeout(()=>{this.preloadPagesAsync(i,a,s,o,c,_,v,r,m,l,d)},0)}return l}catch(e){if(e?.name===`StaleLoad`)throw this.failedRequests.delete(s),c.view.value=void 0,c.view.updatedAt=this.now(),e;let t=e,n=t?.status??t?.data?.status,r=t?.code??t?.data?.code;if(n===404||r===`FileNotFound`||r===`FolderNotFound`||r===`path_folder_not_found`)return this.failedRequests.delete(s),c.view.value=[],c.view.meta={total:0,totalPages:0},c.view.updatedAt=this.now(),{items:[],total:0,totalPages:0};throw this.failedRequests.setError(s,e),c.view.value=void 0,c.view.updatedAt=this.now(),e}finally{c.view.promise=null}})();return c.view.promise=f,f}async preloadPagesAsync(e,t,n,r,i,a,o,s,c,l,u){try{let i=this.parentKey(e),c=this.views.get(i);if(!c)return;let d=c.get(S(t));if(!d||u!=null&&d.view.loadId!==u)return;let f=c.get(S(t));if(!f?.view.meta)return;let p=typeof f.view.meta.totalPages==`number`?f.view.meta.totalPages:1;if(p!==r)return;let m=async n=>{let r={...t,page:n};try{let a=await l(e,r),o=this.views.get(i);if(!o)return;let c=o.get(S(t));if(!c||u!=null&&c.view.loadId!==u||c.view.loadId!==u)return;for(let e of a.items)s.upsertEntity(e);let d=S(r),f=o.get(d);if(f||(f={params:r,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:c.view.loadId}},o.set(d,f),this.cleanupOldViews(o)),!f.view.value||this.isExpired(f.view.updatedAt)){f.view.value=a.items.map(e=>e.id);let{items:e,...t}=a;f.view.meta={...t,page:n,totalPages:p},f.view.updatedAt=this.now()}}catch{}};if(a>0&&n<p)for(let e=1;e<=Math.min(a,p-n);e++){let r=n+e,i=S({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}if(o>0&&n>1)for(let e=1;e<=Math.min(o,n-1);e++){let r=n-e,i=S({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}}catch{}}removeEmptyPageIfNeeded(e,t,n,r,i){if(t.view.value&&t.view.value.length===0&&n<r){let t=S({...i,page:n});e.delete(t)}}updateTotalPagesForAllViews(e,t){for(let[,n]of e)n.view.meta&&(n.view.meta.totalPages=t)}isParamsSame(e,t){let n=Object.keys(e??{}).filter(e=>e!==`page`).sort(),r=Object.keys(t??{}).filter(e=>e!==`page`).sort();if(n.length!==r.length)return!1;for(let i=0;i<n.length;i++){let a=n[i];if(a!==r[i]||e[a]!==t[a])return!1}return!0}syncTotalsInSameViews(e,t){let n=t.view.meta;if(!n||typeof n.total!=`number`)return;let r=Number(n.total),i=h(t.params?.pageSize),a=Number.isFinite(i)&&i>0?Math.max(1,Math.ceil(r/i)):void 0;for(let[,n]of e)this.isParamsSame(n.params??{},t.params??{})&&(n.view.meta||(n.view.meta={}),n.view.meta.total=r,a!==void 0&&(n.view.meta.totalPages=a))}canSafelyModifySortedView(e){return!!(!e.sortBy&&!e.sortOrder||this.strategy.comparator)}cascadeShiftPages(e,t,n,r,i,a,o){let s=t,c=n,l=!1,u=0;for(;s.view.value&&s.view.value.length<r&&c<i&&u<100;){u++;let t=S({...o,page:c+1}),n=e.get(t);if(!n?.view.value||this.isExpired(n.view.updatedAt)){s.view.meta={...s.view.meta??{},stale:!0};break}let i=r-s.view.value.length,d=n.view.value.slice(0,i).filter(e=>a.getEntity(e));if(d.length===0){s.view.meta={...s.view.meta??{},stale:!0};break}if(s.view.value=[...s.view.value,...d],s.view.updatedAt=Date.now(),n.view.value=n.view.value.slice(d.length),n.view.updatedAt=Date.now(),n.view.value.length===0){let t=c+1,r=n.view.meta;if(t<(r&&typeof r.totalPages==`number`?r.totalPages:1)){let n=S({...o,page:t});e.delete(n),l=!0}break}s=n,c++}return(!s.view.value||s.view.value.length<r)&&c>=i&&(s.view.meta={...s.view.meta??{},stale:!0}),l}cascadeShiftToNextPage(e,t,n,r,i,a,o){if(!t.view.value||t.view.value.length<=r)return!1;if(n-(o.page||1)>=10)return t.view.meta={...t.view.meta??{},stale:!0},!1;let s={...o,page:n+1},c=S(s),l=e.get(c),u=!1;if(!l?.view.value||this.isExpired(l.view.updatedAt))if(n>=i){l={params:s,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},e.set(c,l),this.cleanupOldViews(e);let r=t.view.meta;r&&(l.view.meta={...r,page:n+1}),u=!0}else return t.view.meta={...t.view.meta??{},stale:!0},!1;let d=t.view.value.slice(r).filter(e=>a.getEntity(e));if(d.length===0)return u&&e.delete(c),!1;t.view.value=t.view.value.slice(0,r),t.view.updatedAt=Date.now(),l.view.value=[...d,...l.view.value??[]],l.view.updatedAt=Date.now();let f=l.view.meta&&typeof l.view.meta.totalPages==`number`?l.view.meta.totalPages:i;if(!u&&this.cascadeShiftToNextPage(e,l,n+1,r,f,a,o))return!0;if(!l.view.value||l.view.value.length===0){let t=n+1,r=l.view.meta,i=r&&typeof r.totalPages==`number`?r.totalPages:1;this.removeEmptyPageIfNeeded(e,l,t,i,o)}return u}tryInsertSorted(e,t,n){let r=this.strategy.comparator;if(!r||!e.view.value)return!1;let i=e.params?.itemType||`all`;if(!this.isEntityTypeCompatible(t,i))return!1;let a=e.view.value.map(e=>n.getEntity(e));if(a.some(e=>!e))return!1;let o=0,s=a.length;for(;o<s;){let n=Math.floor((o+s)/2),i=r(t,a[n],e.params);if(typeof i!=`number`||Number.isNaN(i))return!1;i>=0?o=n+1:s=n}return e.view.value.includes(t.id)?(e.view.updatedAt=this.now(),!0):(e.view.value=[...e.view.value.slice(0,o),t.id,...e.view.value.slice(o)],e.view.updatedAt=this.now(),e.view.meta&&typeof e.view.meta.total==`number`&&(e.view.meta.total=Number(e.view.meta.total)+1),!0)}updateChildrenCountForOperation(e,t,n,r){let i=_(t);switch(e){case`delete`:this.adjustChildrenCount(r,i,-1),this.childrenCountInvalidator?.(i);break;case`insert`:case`copy`:this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(i);break;case`move`:this.adjustChildrenCount(r,n,-1),this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(n),this.childrenCountInvalidator?.(i);break}}adjustChildrenCount(e,t,n){if(!t)return;let r=e.getFolder(t);if(r&&typeof r.childrenCount==`number`){let i=Math.max(0,r.childrenCount+n);e.updateServerChildrenCount(t,i)}}smartInvalidateChildrenViews(e,t,n,r,i,a){if(!t)return;this.updateChildrenCountForOperation(n,t,i,r);let o=this.parentKey(e),s=this.views.get(o);if(s)for(let[,e]of s){let a=e.params??{},o=a?.page??1,c=h(a?.pageSize),l=Number.isFinite(c),u=!!(a?.sortBy||a?.sortOrder),d=!!a?.search,f=a?.itemType||`all`;if(this.isEntityTypeCompatible(t,f)){if(d&&this.strategy.filterMatch&&!this.strategy.filterMatch(t,e.params)){e.view.value?.includes(t.id)&&(e.view.value=e.view.value.filter(e=>e!==t.id),e.view.meta&&typeof e.view.meta.total==`number`&&(e.view.meta.total=Math.max(0,e.view.meta.total-1)),e.view.updatedAt=Date.now());continue}if(!e.view.value){e.view.meta&&(e.view.meta.stale=!0),e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0);continue}if(e.view.value.includes(t.id),this.shouldInvalidateCompletely(e,n,t,u,l,o)){e.view.meta={...e.view.meta??{},stale:!0},e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0);continue}switch(n){case`delete`:this.handleDelete(s,e,o,c,l,t,r);break;case`insert`:case`copy`:this.handleInsert(s,e,o,c,l,u,t,r);break;case`update`:this.handleUpdate(s,e,o,c,l,u,d,t,r);break;case`move`:this.handleMove(s,e,o,c,l,u,t,i,r);break}}}}shouldInvalidateCompletely(e,t,n,r,i,a){return!!(i&&a>1&&(t===`insert`||t===`delete`||t===`move`)||r&&!this.strategy.comparator&&(t===`insert`||t===`move`)||this.isExpired(e.view.updatedAt))}tryReinsertEntity(e,t,n,r,i){let a=e.params?.itemType||`all`;if(!this.isEntityTypeCompatible(t,a))return!1;if(this.strategy.comparator&&this.strategy.filterMatch){if(!this.strategy.filterMatch(t,e.params))return!1;if(this.tryInsertSorted(e,t,n))return!0}let o=e.params??{};return(o.sortBy||o.sortOrder)&&!this.canSafelyModifySortedView(o)?!1:!r||e.view.value.length<i?(e.view.value.push(t.id),!0):!1}handleDelete(e,t,n,r,i,a,o){let s=t.view.value.includes(a.id);if(s&&(t.view.value=t.view.value.filter(e=>e!==a.id)),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(t.view.updatedAt=Date.now(),s&&i&&t.view.value.length<r&&o){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,o,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}handleInsert(e,t,n,r,i,a,o,s){if(!t.view.value.includes(o.id)){if(a&&this.strategy.allowSortedInsert&&this.strategy.comparator&&s){if(this.tryInsertSorted(t,o,s)&&t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(i&&t.view.value.length>r&&s){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftToNextPage(e,t,n,r,a,s,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=t.view.meta.totalPages+1;t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}}else if(!i||t.view.value.length<r){if(t.view.value.push(o.id),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now()}else t.view.meta={...t.view.meta??{},stale:!0};t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}}handleUpdate(e,t,n,r,i,a,o,s,c){let l=t.view.value.includes(s.id),u=this.isEntityTypeCompatible(s,t.params?.itemType||`all`);if(l&&!u){if(t.view.value=t.view.value.filter(e=>e!==s.id),t.view.meta&&typeof t.view.meta.total==`number`&&(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}if(t.view.updatedAt=Date.now(),i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l&&(a||o)){if(t.view.value=t.view.value.filter(e=>e!==s.id),!this.tryReinsertEntity(t,s,c,i,r)){if(t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}}else if(t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now(),t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l){t.view.updatedAt=Date.now(),t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(u&&!o){if(a&&this.strategy.allowSortedInsert&&this.strategy.comparator&&c){if(this.tryInsertSorted(t,s,c)&&t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}}else if(!i||t.view.value.length<r){if(t.view.value.push(s.id),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now()}else t.view.meta={...t.view.meta??{},stale:!0};t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}}handleMove(e,t,n,r,i,a,o,s,c){if(t.view.value.includes(o.id)){if(t.view.value=t.view.value.filter(e=>e!==o.id),t.view.meta&&typeof t.view.meta.total==`number`&&(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}if(t.view.updatedAt=Date.now(),i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}this.syncTotalsInSameViews(e,t)}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}forceInvalidateChildrenViews(e){let t=this.parentKey(e??null);this.failedRequests.clearChildrenViewErrorsForParent(t);let n=this.views.get(t);if(n)for(let[,e]of n)e.view.value=void 0,e.view.meta=void 0,e.view.promise=null,e.view.updatedAt=0,e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0)}getKnownTotal(e){let t=this.parentKey(e??null),n=this.views.get(t);if(!n)return;let r=null;for(let[,e]of n){let t=e.view.meta;t&&typeof t.total==`number`&&(!r||(e.view.updatedAt??0)>r.updatedAt)&&(r={total:Number(t.total),updatedAt:e.view.updatedAt??0})}return r?r.total:void 0}toJSON(){return{views:Array.from(this.views.entries()).map(([e,t])=>[e,Array.from(t.entries())]),ttl:this.ttl,errorTtl:this.errorTtl,entityTtl:this.entityTtl,strategy:{allowSortedInsert:this.strategy.allowSortedInsert,allowSearchInsert:this.strategy.allowSearchInsert,invalidateOnPaginationFull:this.strategy.invalidateOnPaginationFull,preloadPagesBefore:this.strategy.preloadPagesBefore,preloadPagesAfter:this.strategy.preloadPagesAfter}}}static fromJSON(t,n){let r=n?.ttl??t?.ttl??18e5,i=new e({},r,n?.errorTtl??t?.errorTtl??r,void 0,n?.failedRequests??new d);for(let[e,n]of t.views??[]){let t=new Map;for(let[e,r]of n){let n=r;n?.view&&`error`in n.view&&delete n.view.error,t.set(e,n)}i.views.set(e,t)}return i}},T=class e{entities;views;ttl;errorTtl;failedRequests;childrenCountPromises=new Map;invalidateChildrenCountCache(e){let t=m(e??``);this.childrenCountPromises.delete(t),this.failedRequests.delete(d.childrenCountKey(t))}constructor(e={},t=p,n){this.failedRequests=new d,this.ttl=t,this.errorTtl=n??t,this.entities=new C,this.views=new w(e,t,this.errorTtl,void 0,this.failedRequests),this.views.setServerChildrenCountHandler((e,t,n)=>{this.handleServerReportedChildrenCount(e,t,n??this.entities)}),this.views.setChildrenCountInvalidator(e=>{this.invalidateChildrenCountCache(e)})}getEntity(e){return this.entities.getEntity(e)??null}getFileSystemItem(e){return this.entities.getFileSystemItem(e)??null}getFolder(e){return this.entities.getFolder(e)??null}async getOrCreateChildren(e,t,n){return this.views.getOrCreateChildren(e,t,n,this.entities)}upsertEntity(e){let t=this.entities.getEntity(e.id),n=t?_(t):null,r=_(e),i=t?v(t):!1,a=v(e);if(this.entities.upsertEntity(e),t){if(n!==r||i!==a){this.views.smartInvalidateChildrenViews(n,t,`delete`,this.entities),this.views.smartInvalidateChildrenViews(r,e,`insert`,this.entities);return}this.views.smartInvalidateChildrenViews(r,e,`update`,this.entities,void 0,t)}else this.views.smartInvalidateChildrenViews(r,e,`insert`,this.entities)}isAncestor(e,t){let n=t,r=new Set;for(;n&&!r.has(n);){if(r.add(n),m(n)===m(e))return!0;let t=this.entities.getEntity(n);if(!t)break;n=_(t),n===null&&(n=f)}return!1}moveEntity(e,t){let n=this.entities.getEntity(e);if(!n||v(n)&&t!==null&&this.isAncestor(e,t))return null;let r=_(n),i=this.entities.moveEntityById(e,t);return i?(this.views.smartInvalidateChildrenViews(r,n,`delete`,this.entities),this.views.smartInvalidateChildrenViews(t,i,`insert`,this.entities),i):null}copyEntity(e,t,n,r){let i=this.entities.getEntity(e);if(!i)return null;let a=null;if(v(i)){let n=[e],i=[];for(;n.length;){let e=n.shift();i.push(e);let t=this.entities.getChildrenIds(e,{onlyFolders:!0});for(let e of t)n.push(e)}let o=new Map;for(let e of i)o.set(e,y());for(let n of i){let i=this.entities.getFolder(n),a=o.get(n),s=_(i),c=s===null?t:o.get(s)??null,l={...i,...n===e?r:void 0,id:a,folderId:(n===e?r?.folderId:void 0)??c};this.entities.upsertEntity(l)}for(let e of i){let t=o.get(e),n=this.entities.getChildrenIds(e,{onlyFileSystemItems:!0});for(let e of n){let n=this.entities.getFileSystemItem(e);if(!n)continue;let r=y(),i={...n,id:r,folderId:t};this.entities.upsertEntity(i)}}a=this.entities.getEntity(o.get(e))??null}else{let i=n??y();if(a=this.entities.copyFileSystemItem(e,i,t??null),a&&r){let e={...a,...r,id:i,folderId:r.folderId??t??null};this.entities.upsertEntity(e),a=e}}return a&&this.views.smartInvalidateChildrenViews(t,a,`copy`,this.entities),a}searchByUrl(e){return this.entities.searchByUrl(e)??null}deleteEntity(e){let t=this.entities.getEntity(e);if(!t)return null;if(v(t)){let{deletedFolderRecords:n,deletedFileSystemItemRecords:r}=this.entities.deleteFolderRecursive(e);for(let e of r)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of n)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of n)this.views.forceInvalidateChildrenViews(e.id);return t}else{let{entity:t,parentId:n}=this.entities.deleteEntityById(e);return t&&this.views.smartInvalidateChildrenViews(n,t,`delete`,this.entities),t}}deleteFolderRecursive(e){let{deletedFolderRecords:t,deletedFileSystemItemRecords:n}=this.entities.deleteFolderRecursive(e);for(let e of n)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of t)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of t)this.views.forceInvalidateChildrenViews(e.id);return{deletedFileSystemItemIds:n.map(e=>e.id),deletedFolderIds:t.map(e=>e.id)}}forceInvalidate(e){let t=this.entities.getEntity(e);if(!t)return;let n=new Set;if(v(t)){let t=[e];for(;t.length;){let e=t.pop();if(n.has(e))continue;n.add(e),this.views.forceInvalidateChildrenViews(e),this.invalidateChildrenCountCache(e);let r=this.entities.getChildrenIds(e,{onlyFolders:!0});for(let e of r)t.push(e)}}else{let e=t.folderId??null;this.views.forceInvalidateChildrenViews(e),this.invalidateChildrenCountCache(e)}}getChildrenIds(e){return this.entities.getChildrenIds(e)}searchByName(e,t){return this.entities.searchByName(e,t)}async getChildrenCount(e=``,t){let n=m(e),r=d.childrenCountKey(n),i=this.failedRequests.getFreshError(r,this.errorTtl);if(i!=null)return Promise.reject(i);let a=this.childrenCountPromises.get(n);if(a)return a;let o=(async()=>{try{let n=this.entities.getFolder(e);if(n&&typeof n.childrenCount==`number`)return this.failedRequests.delete(r),n.childrenCount;let i=this.views.getKnownTotal(e);if(typeof i==`number`)return n&&this.handleServerReportedChildrenCount(e,i,this.entities),this.failedRequests.delete(r),i;if(t){let n=await t(e);return this.entities.getFolder(e)&&this.handleServerReportedChildrenCount(e,n,this.entities),this.failedRequests.delete(r),n}return this.failedRequests.delete(r),this.entities.getChildrenIds(e).length}catch(e){if(this.childrenCountPromises.delete(n),b(e))return this.failedRequests.delete(r),0;throw this.failedRequests.setError(r,e),e}finally{this.childrenCountPromises.delete(n)}})();return this.childrenCountPromises.set(n,o),o}toJSON(){return{entities:this.entities.toJSON(),views:this.views.toJSON(),ttl:this.ttl,errorTtl:this.errorTtl}}static fromJSON(t,n){let r=t?.ttl??18e5,i=t?.errorTtl??r,a=new e(n??{},r,i),o=C.fromJSON(t?.entities??{}),s=w.fromJSON(t?.views??{},{failedRequests:a.failedRequests,ttl:r,errorTtl:i});return n&&(s.strategy={allowSortedInsert:n.allowSortedInsert??!0,allowSearchInsert:n.allowSearchInsert??!0,invalidateOnPaginationFull:n.invalidateOnPaginationFull??!0,preloadPagesBefore:n.preloadPagesBefore??0,preloadPagesAfter:n.preloadPagesAfter??1,comparator:n.comparator,filterMatch:n.filterMatch}),a.entities=o,a.views=s,s.setServerChildrenCountHandler((e,t,n)=>{a.handleServerReportedChildrenCount(e,t,n??o)}),s.setChildrenCountInvalidator(e=>{a.invalidateChildrenCountCache(e)}),a}handleServerReportedChildrenCount(e,t,n){this.checkAndResolveChildrenCountConflict(e,t,n),this.invalidateChildrenCountCache(e)}checkAndResolveChildrenCountConflict(e,t,n){if(!n||t===void 0)return;let r=e??null;if(!r){n.updateServerChildrenCount(r,t);return}let i=n.getFolder(r)?.childrenCount;i!==void 0&&i!==t&&this.views.forceInvalidateChildrenViews(r),n.updateServerChildrenCount(r,t)}},E=class{deletingIds=new Set;beginDeleting(e){for(let t of e)t&&this.deletingIds.add(t)}endDeleting(e){for(let t of e)t&&this.deletingIds.delete(t)}isDeleting(e){return!!e&&this.deletingIds.has(e)}},D=``,O=`Trash`,k=`Edited`,A=1e4,j=1e4,M=25,N=10;function P(e,t){let n=e??{},r=Array.isArray(n.detailed)?n.detailed.map(e=>({requestId:e.requestId??e.id,success:!!e.success,data:t(e.data),error:e.error})):void 0;return{success:!!n.success,error:n.error,detailed:r}}function F(e){return e==null?``:String(e)}function I(e){return{...e,name:F(e.name)}}function L(e){return(e??[]).map(I)}function R(e){return!e||typeof e!=`object`||!(`name`in e)?e:{...e,name:F(e.name)}}function z(e){return e?e.replaceAll(`\\`,`/`).split(`/`).filter(Boolean):[]}function B(e){let t=Object.getPrototypeOf(e);for(let n of Object.getOwnPropertyNames(t))n!==`constructor`&&typeof Object.getOwnPropertyDescriptor(t,n)?.value==`function`&&(e[n]=e[n].bind(e))}var V=class{_dataProvider;_options;_pathOptions;i18n;_cache;_rootId;_useSoftDelete;_enableTrash;_validateDuplicates;_blobFetchForceReloadOnceIds=new Set;_mutationRegistry=new E;async _findOrCreateFolderByPath(e){let{__:t}=this.i18n,n=z(e);if(n.length>N)throw new r.eo(t(`Path depth exceeds maximum limit of %s`).replace(`%s`,String(N)),`ValidationError`);let i;for(let a of n){let{files:n}=await this.getFiles({folderId:i?.id||``,itemType:`folder`}),o=n.find(e=>e.name===a);if(o){if(!o.isFolder)throw new r.eo(t(`Path component '%s' in '%s' is not a folder`).replace(`%s`,a).replace(`%s`,e),`ValidationError`);i={id:o.id,name:o.name,parentId:o.folderId}}else{if(typeof this._dataProvider.createFolder!=`function`)throw new r.eo(t(`Create folder operation is not supported by data provider`),`UnsupportedOperation`);i=await this.createFolder({name:a,parentId:i?.id})}}return i}getTrashFolder(){return this._findOrCreateFolderByPath(this._pathOptions.trashPath||O)}getTempFolder(){return this._findOrCreateFolderByPath(this._pathOptions.tempPath||k)}constructor(e,t={},n,r=i.m){this._dataProvider=e,this._options=t,this._pathOptions=n,this.i18n=r,B(this),this._useSoftDelete=this._pathOptions.useSoftDelete,this._rootId=this._pathOptions.rootId||D,this._enableTrash=this._options.enableTrash===void 0?!0:this._options.enableTrash,this._validateDuplicates=this._dataProvider.validateDuplicates,this._cache=new T(t.cacheStrategy||{},t.cacheStrategy?.ttl,t.cacheStrategy?.errorTtl),this.setController({invalidateItemCache:e=>{this._cache.forceInvalidate(e)},getCachedItem:e=>this._cache.getEntity(e)}),typeof this._dataProvider.clearCache!=`function`&&(this.clearCache=void 0)}setController(e){typeof this._dataProvider.setController==`function`&&this._dataProvider.setController(e)}async clearCache(e){if(typeof this._dataProvider.clearCache!=`function`){let{__:e}=this.i18n;throw new r.eo(e(`Clear cache is not supported by data provider`),`UnsupportedOperation`)}this._cache.forceInvalidate(this._rootId),await this._dataProvider.clearCache(e)}markNextFileBlobFetchBypassHttpCache(e){this._blobFetchForceReloadOnceIds.add(this.normalizeId(e))}normalizeId(e){return!e||e===`root`||e===`folders`?this._rootId:e}_isDeletingId(e){return this._mutationRegistry.isDeleting(this.normalizeId(e))}_collectDeletingIds(e){let t=this.normalizeId(e),n=new Set([t]);if(!this._cache.getEntity(t)?.isFolder)return Array.from(n);let r=[t];for(;r.length>0;){let e=r.pop(),t=this._cache.getChildrenIds(e);for(let e of t)n.has(e)||(n.add(e),this._cache.getEntity(e)?.isFolder&&r.push(e))}return Array.from(n)}_emptyFilesResult(e,t){return{files:[],pagination:{...typeof e==`number`?{page:e}:{},...typeof t==`number`?{limit:t}:{},total:0,totalPages:1,hasNext:!1,hasPrev:!1}}}_validateName(e,t=!1){if(!e||e.trim().length===0){let e=t?`FolderInvalidName`:`FileInvalidName`,{__:n}=this.i18n;throw new r.eo(n(t?`Folder name cannot be empty`:`File name cannot be empty`),e)}if(/[\/\\:*?"<>|]/.test(e)){let{__:n}=this.i18n,i=t?`FolderInvalidName`:`FileInvalidName`;throw new r.eo(t?n(`Folder name contains invalid characters: %s`).replace(`%s`,e):n(`File name contains invalid characters: %s`).replace(`%s`,e),i)}}_validateTargetFolderType(e){let t=this.normalizeId(e);if(t===this._rootId)return;let n=this._cache.getEntity(t);if(n&&!n.isFolder){let{__:t}=this.i18n;throw new r.eo(t(`Target item with id '%s' is not a folder`).replace(`%s`,e),`ValidationError`)}}_checkNameExistsInCache(e,t,n,r){let i=this.normalizeId(e),a=this._cache.getChildrenIds(i);for(let e of a){let i=this._cache.getEntity(e);if(i&&i.name===t&&!!i.isFolder===n&&(!r||i.id!==r))return!0}return!1}async _getUrl(e){if(e.url)return e.url;try{return typeof this._dataProvider?.getUrl==`function`&&this._dataProvider.getUrl(e)||``}catch{}return``}async _getThumbnailUrl(e){if(e.thumbnailUrl)return e.thumbnailUrl;try{return typeof this._dataProvider?.getThumbnailUrl==`function`&&this._dataProvider.getThumbnailUrl(e)||``}catch{}return``}_mapItem=async({childrenCount:e,...t})=>{let n=I(t);if(n.isFolder)return{...n,childCount:e,url:``,thumbnailUrl:``};let[r,i]=await Promise.all([this._getUrl(n),this._getThumbnailUrl(n)]);return{...n,childCount:0,url:r,thumbnailUrl:i}};_isAncestor(e,t){if(!t)return!1;let n=this.normalizeId(t),r=this.normalizeId(e);if(n===r)return!0;let i=this._cache.getEntity(n),a=new Set;for(;i&&i.folderId&&!a.has(i.id);){a.add(i.id);let e=this.normalizeId(i.folderId);if(e===r)return!0;if(i=this._cache.getEntity(e),!i||!i.isFolder)break}return!1}async getFile(e,t){return this._isDeletingId(e)?null:this._cache.searchByName(t,{parentId:this.normalizeId(e),caseSensitive:!0,recursive:!1,itemType:`file`})[0]||(await this.getFiles({folderId:e,itemType:`file`,search:t})).files[0]}async getFileById(e){let t=this.normalizeId(e);if(this._isDeletingId(t))return null;let n=this._cache.getFileSystemItem(t);if(n&&!n.isFolder)return await this._mapItem(n);if(!this._dataProvider.pathMode)return null;let r=await this._getFileByPathStyleId(t);if(r&&!r.isFolder){let e=I(r);return this._cache.upsertEntity(e),await this._mapItem(e)}return null}async _getFileByPathStyleId(e){let t=e.replace(/\\/g,`/`).replace(/^\/+/,``),n=t.lastIndexOf(`/`),r=n<0?``:t.slice(0,n),i=n<0?t:t.slice(n+1);return i?this.getFile(r,i):null}async getFileUrl(e,t){let n=await this.getFile(e,t);return await this._getUrl(n)||await this._getThumbnailUrl(n)||n.thumbnail}async getFiles({folderId:e,search:t,sortBy:n,sortOrder:r,page:i,limit:a,itemType:o=`all`,noFolder:s=!1}){s&&(e=(await this.getTempFolder())?.id);let c=this.normalizeId(e??this._rootId),l=this._options.enablePagination===!1,u=l?1:i,d=l?A:a,f=this._options.clientSideFilter,p=this._options.clientSideSorting,m=this._options.clientSidePaging,h=m?Math.max(1,i??1):void 0,g=m?typeof a==`number`&&Number.isFinite(a)&&a>0?a:M:void 0,_=this._emptyFilesResult(m?h:u,m?g:d);if(this._isDeletingId(c))return _;let v=this._options.unifiedCatalogFetch!==!1&&l&&(o===`folder`||o===`file`),y=v?`all`:o,b={folderId:c,itemType:y};f||(b.search=t),p||(b.sortBy=n??(y===`folder`?void 0:`date`),b.sortOrder=r??(y===`folder`?void 0:`desc`)),m||(b.page=u,b.limit=v?j:d);let x=v?j:m?void 0:d,S={folderId:c,itemType:y,search:f?void 0:t,sortBy:p?void 0:b.sortBy,sortOrder:p?void 0:b.sortOrder,page:m?void 0:u,pageSize:x},C;try{C=await this._cache.getOrCreateChildren(c,S,async(e,t)=>{let n=t.pageSize,r=n!=null&&Number.isFinite(Number(n))?Number(n):A,i=await this._dataProvider.getItems({...t,folderId:e,limit:r}),a=L(i.items);return m?{items:a,total:typeof i.pagination?.total==`number`?i.pagination.total:a.length}:{items:a,...i.pagination}})}catch(e){if(this._isDeletingId(c))return _;throw e}let w=C.items;if(v&&(o===`folder`?w=w.filter(e=>e.isFolder):o===`file`&&(w=w.filter(e=>!e.isFolder))),f){if(typeof this._options.clientSideFilter==`function`)w=this._options.clientSideFilter(w,t);else if(t){let e=t.toLowerCase();w=w.filter(t=>t.name?.toLowerCase().includes(e))}}p&&(w=typeof this._options.clientSideSorting==`function`?this._options.clientSideSorting(w,n,r):this._defaultClientSideSort(w,n,r));let T;T=m||f||v?w.length:C.total??w.length;let E=w;if(m)if(typeof this._options.clientSidePaging==`function`)E=this._options.clientSidePaging(w,h,g);else{let e=(h-1)*g,t=e+g;E=w.slice(e,t)}if(typeof this._dataProvider.getUrl==`function`||typeof this._dataProvider.getThumbnailUrl==`function`){let e=E.map(async e=>{if(e.isFolder)return e;let[t,n]=await Promise.all([e.url?Promise.resolve(e.url):typeof this._dataProvider.getUrl==`function`?this._dataProvider.getUrl(e):Promise.resolve(void 0),e.thumbnailUrl?Promise.resolve(e.thumbnailUrl):typeof this._dataProvider.getThumbnailUrl==`function`?this._dataProvider.getThumbnailUrl(e):Promise.resolve(void 0)]);return{...e,url:t,thumbnailUrl:n}});E=await Promise.all(e)}let D=m?{page:h,limit:g,total:T,totalPages:Math.max(1,Math.ceil(T/g)),hasNext:h*g<T,hasPrev:h>1}:{page:u,limit:d,total:T,...!m&&C.totalPages&&{totalPages:C.totalPages},...!m&&C.hasNextPage&&{hasNextPage:C.hasNextPage}};return{files:await Promise.all(E.map(this._mapItem)),pagination:D}}_defaultClientSideSort(e,t,n){return e.sort((e,r)=>{let i=0;switch(t){case`name`:i=(e.name||``).localeCompare(r.name||``);break;case`date`:i=new Date(e.date||0).getTime()-new Date(r.date||0).getTime();break;case`size`:i=(Number(e.size)||0)-(Number(r.size)||0);break;default:i=(e.name||``).localeCompare(r.name||``)}return n===`desc`?-i:i})}async getFileData(e,t){let n=this.normalizeId(typeof e==`string`?e:e.id),i=t;this._blobFetchForceReloadOnceIds.delete(n)&&(i={...t,forceReload:!0});let a=this._cache.getEntity(n)||(typeof e==`string`?{id:n,name:``,folderId:this._rootId,isFolder:!1}:{...e,childrenCount:e.childCount});if(typeof this._dataProvider.getFileData==`function`)return await this._dataProvider.getFileData(a,i);let{__:o}=this.i18n;if(!a.url&&typeof this._dataProvider.getUrl!=`function`)throw new r.eo(o(`Cannot read file`),`FileReadError`);let s=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(s)return(await r.fa(s,{config:this._pathOptions.resourceProxyConfig,standalone:this._pathOptions.isStandalone,intent:`downloadBlob`,init:i?.forceReload?{cache:`no-store`}:void 0})).blob();throw new r.eo(o(`Unable to get file data`),`FileReadError`)}async findFileByUrl(e){let t=this._cache.searchByUrl(e);if(t)return t;if(typeof this._dataProvider.findFileByUrl==`function`)try{let t=await this._dataProvider.findFileByUrl(e);if(t){let e=I(t);return this._cache.upsertEntity(e),e}}catch{}return null}async getChildrenCount(e){if(!e)return 0;let t=this.normalizeId(e??this._rootId);return this._isDeletingId(t)?0:this._cache.getChildrenCount(t,async()=>{try{if(this._options.clientSidePaging){let e=await this.getFiles({folderId:t,itemType:`all`,page:1,limit:M});return e.pagination.total??e.files.length}let e=await this._dataProvider.getItems({folderId:t,limit:0,itemType:`all`});return e.pagination===void 0?this._options.enablePagination===!1?e.items.length:0:e.pagination.total||0}catch(e){if(this._isDeletingId(t)||this._isPathFolderNotFoundError(e))return 0;throw e}})}_isPathFolderNotFoundError(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.data?.code===`path_folder_not_found`||t.status===404||t.data?.data?.status===404}async _uploadFile(e){let t=this.normalizeId(e.folderId??this._rootId),{__:n}=this.i18n;if(typeof this._dataProvider.uploadFile!=`function`)throw new r.eo(n(`Upload file operation is not supported by data provider`),`UnsupportedOperation`);if(this._validateName(e.name,!1),this._validateDuplicates&&this._checkNameExistsInCache(t,e.name,!1))throw new r.eo(n(`File '%s' already exists in target folder`).replace(`%s`,e.name),`FileAlreadyExists`);let i=await this._dataProvider.uploadFile({...e,folderId:t}),a=I({name:e.name,size:e.size,...i,folderId:t});return this._cache.upsertEntity(a),a}async uploadFiles(e){let t=e.items.some(e=>e.noFolder)?await this.getTempFolder():null;e={...e,items:e.items?.map(e=>({...e,folderId:e.noFolder?t?.id:e.folderId}))};for(let t of e.items)t.folderId&&(e.folderId=t.folderId);let n=e.items||[],i=e.folderId??this._rootId,a=this.normalizeId(i);if(this._validateDuplicates){for(let e of n)if(e.name){this._validateName(e.name,!1);let t=this.normalizeId(e.folderId??a);if(this._checkNameExistsInCache(t,e.name,!1)){let{__:t}=this.i18n;throw new r.eo(t(`File '%s' already exists in target folder`).replace(`%s`,e.name),`FileAlreadyExists`)}}}let o=this._cache.getEntity(a),s={detailed:Array(n.length),success:!0};if(typeof this._dataProvider.uploadFiles==`function`){let e=n.map(e=>({...e,folderId:this.normalizeId(e.folderId??a)}));if(s=P(await this._dataProvider.uploadFiles({folderId:a,items:e}),e=>{if(e)return{id:e.id,name:F(e.name),folderId:e.folderId}}),s.detailed&&s.detailed.length){for(let e=0;e<s.detailed.length;e++){let t=s.detailed[e];if(t&&t.success){let e=t.data,n=e?.id??t.requestId,r=I({...o,...e,folderId:e?.folderId??a});this._cache.upsertEntity(r),t.requestId=n}}s.success===void 0&&(s.success=!s.detailed.some(e=>!e.success))}else s.success=s.error?!1:!!s.success}else if(typeof this._dataProvider.uploadFile==`function`)s.detailed=await Promise.all(n.map(async e=>{let t=this.normalizeId(e.folderId??a);try{let n=await this._uploadFile({...e,folderId:t});return{requestId:n.id,data:n,success:!0}}catch(t){return{requestId:e?.id,success:!1,error:t}}})),s.success=!s.detailed.some(e=>!e.success);else throw new r.eo(`Upload files is not supported by data provider`,`UnsupportedOperation`);if(s.success&&this._enableTrash)try{this._cache.forceInvalidate(a)}catch{}return s}async deleteFile(e){let t=this.normalizeId(e),n=[t];this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash){let e=await this.getTrashFolder();return await this.moveItem({itemId:t,targetFolderId:e.id,isFolder:!1})}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async deleteItems(e,t){let n=Array.from(new Set(e.flatMap(e=>this._collectDeletingIds(this.normalizeId(e)))));this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash&&t.permanent!==!0){let t=await this.getTrashFolder();return await this.moveItems(t.id,e)}return await this.hardDeleteItems(e,t)}finally{this._mutationRegistry.endDeleting(n)}}async hardDeleteItems(e,t){let n={success:!0,detailed:[]},i=t.permanent?null:await this.getTrashFolder();if(typeof this._dataProvider.deleteItems==`function`){if(n=P(await this._dataProvider.deleteItems(e.map(e=>this._cache.getEntity(e)),t),e=>e),n.success){let t=n.detailed||e.map(e=>({requestId:e,success:!0,error:void 0}));for(let e of t)e.success&&(i?this._cache.moveEntity(e.requestId,i.id):this._cache.deleteEntity(e.requestId))}}else typeof this._dataProvider.deleteItem==`function`&&(n.detailed=await Promise.all(e.map(async e=>{let n=this._cache.getEntity(e);if(!n){let{__:t}=this.i18n;return{requestId:e,success:!1,error:new r.eo(t(`Item with id '%s' not found`).replace(`%s`,e),`FileNotFound`)}}try{return await this._dataProvider.deleteItem(n,t),i?this._cache.moveEntity(e,i.id):this._cache.deleteEntity(e),{requestId:e,success:!0}}catch(t){return{requestId:e,error:t,success:!1}}})),n.success=!n.detailed.some(e=>!e.success));if(n.success&&i)try{this._cache.forceInvalidate(i.id)}catch{}return n}async hardDeleteItem(e){let t=this._cache.getEntity(e);if(!t){let{__:t}=this.i18n;throw new r.eo(t(`Item with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`)}if(typeof this._dataProvider.deleteItem!=`function`){let{__:e}=this.i18n;throw new r.eo(e(`Delete item operation is not supported by data provider`),`DeleteNotAllowed`)}if(await this._dataProvider.deleteItem(t,{permanent:!0}),this._cache.deleteEntity(e),this._enableTrash)try{let e=await this.getTrashFolder();e&&this._cache.forceInvalidate(e.id)}catch{}return!0}async cleanTrash(){let{__:e}=this.i18n;if(!this._enableTrash)throw new r.eo(e(`Trash is not enabled`),`UnsupportedOperation`);if(typeof this._dataProvider.cleanTrash==`function`){let e=await this._dataProvider.cleanTrash();try{let e=await this.getTrashFolder();e&&this._cache.forceInvalidate(e.id)}catch{}return e}throw new r.eo(e(`Clean trash is not supported by data provider`),`UnsupportedOperation`)}async createFolder({name:e,parentId:t,is_force_create:n}){let i=this.normalizeId(t??this._rootId);if(this._validateName(e,!0),this._validateDuplicates&&this._checkNameExistsInCache(i,e,!0)){let{__:t}=this.i18n;throw new r.eo(t(`Folder '%s' already exists in parent folder`).replace(`%s`,e),`FolderAlreadyExists`)}let a=await this._dataProvider.createFolder(e,i,n),o=I({id:a.id,folderId:i,name:a.name,isFolder:!0,childrenCount:a.childrenCount});return this._cache.upsertEntity(o),{...a,name:o.name}}async deleteFolder(e){let t=this.normalizeId(e),n=this._collectDeletingIds(t);this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash)try{let e=await this.getTrashFolder();return await this.moveItem({itemId:t,targetFolderId:e.id,isFolder:!0})?(this._cache.deleteFolderRecursive(t),!0):!1}catch{return await this.hardDeleteItem(t)}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async renameFolder(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.renameItem!=`function`)throw new r.eo(n(`Rename folder is not supported`),`RenameNotAllowed`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.eo(n(`Folder with id '%s' not found in cache`).replace(`%s`,e),`FolderNotFound`);if(this._validateName(t,!0),this._validateDuplicates){let e=this.normalizeId(a.folderId);if(this._checkNameExistsInCache(e,t,!0,i))throw new r.eo(n(`Folder '%s' already exists in parent folder`).replace(`%s`,t),`FolderAlreadyExists`)}let o=R(await this._dataProvider.renameItem(a,t));return this._cache.upsertEntity(I({...this._cache.getEntity(o.id),...o})),this._cache.getEntity(o.id)}async renameFile(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.renameItem!=`function`)throw new r.eo(n(`Rename file is not supported`),`RenameNotAllowed`);let i=this._cache.getEntity(e);if(!i)throw new r.eo(n(`File with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`);let a=this.normalizeId(e);if(this._validateName(t,!1),this._validateDuplicates){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,t,!1,a))throw new r.eo(n(`File '%s' already exists in parent folder`).replace(`%s`,t),`FileAlreadyExists`)}let o=R(await this._dataProvider.renameItem(i,t));return o&&this._cache.upsertEntity(I({...this._cache.getEntity(a),...o})),this._cache.getEntity(a)}async moveItem({itemId:e,targetFolderId:t,isFolder:n}){if(typeof this._dataProvider.moveItem!=`function`){let{__:e}=this.i18n;throw new r.eo(e(`Move item operation is not supported by data provider`),`MoveNotAllowed`)}let i=this.normalizeId(t);this._validateTargetFolderType(t);let a=this._cache.getEntity(e);if(!a){let t=R(await this._dataProvider.moveItem({id:e,folderId:i,isFolder:n},i));if(t.id===e)this._cache.upsertEntity(I({...t,folderId:i}));else{try{this._cache.deleteEntity(e)}catch{}this._cache.upsertEntity(I({...t,folderId:i}))}return!0}let{__:o}=this.i18n;if(a.isFolder){if(e===i)throw new r.eo(o(`Cannot move folder into itself`),`MoveIntoSelf`);if(this._isAncestor(e,i))throw new r.eo(o(`Cannot move folder into its descendant`),`MoveIntoDescendant`)}if(this._validateDuplicates&&i!==this.normalizeId(a.folderId)&&a.name&&this._checkNameExistsInCache(i,a.name,!!a.isFolder,e)){let e=a.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.eo(`${a.isFolder?`Folder`:`File`} '${a.name}' already exists in target folder`,e)}let s=R(await this._dataProvider.moveItem(a,i));if(s.id===e){let t=this._cache.moveEntity(e,i);return this._cache.upsertEntity(I({...t,...s})),!0}else{let t=this._cache.deleteEntity(e);return this._cache.upsertEntity(I({...t,...s,folderId:i})),!0}}async moveItems(e,t){let n=this.normalizeId(e);this._validateTargetFolderType(e);let i=t.map(e=>this._cache.getEntity(e));for(let e of i)if(e){if(e.isFolder){let{__:t}=this.i18n;if(e.id===n)throw new r.eo(t(`Cannot move folder '%s' into itself`).replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,n))throw new r.eo(t(`Cannot move folder '%s' into its descendant`).replace(`%s`,e.name),`MoveIntoDescendant`)}if(this._validateDuplicates&&n!==this.normalizeId(e.folderId)&&e.name&&this._checkNameExistsInCache(n,e.name,!!e.isFolder,e.id)){let t=e.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.eo(`${e.isFolder?`Folder`:`File`} '${e.name}' already exists in target folder`,t)}}let a={detailed:Array(i.length),success:!0};if(typeof this._dataProvider.moveItems==`function`)a=P(await this._dataProvider.moveItems(i,n),e=>e);else if(typeof this._dataProvider.moveItem==`function`)a.detailed=await Promise.all(t.map(async(e,t)=>{let r=i[t]||{id:e,folderId:null,isFolder:!1,name:e};try{return{requestId:e,data:R(await this._dataProvider.moveItem(r,n)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new r.eo(`Move items is not supported`,`MoveNotAllowed`);if(a.success){let e=a.detailed||t.map(e=>({requestId:e,success:!0,data:void 0}));for(let t of e)if(t.success)if(!t.data||t.data.id===t.requestId)this._cache.moveEntity(t.requestId,n),t.data&&this._cache.upsertEntity(I({...this._cache.getEntity(t.requestId),...t.data,folderId:n}));else{let e=this._cache.deleteEntity(t.requestId);this._cache.upsertEntity(I({...e,...t.data,folderId:n}))}return a}else{let{__:e}=this.i18n;return{success:!1,error:a.error||new r.eo(e(`Move items failed`),`MoveNotAllowed`)}}}async copyItem({itemId:e,targetFolderId:t}){if(typeof this._dataProvider.copyItem!=`function`){let{__:e}=this.i18n;throw new r.eo(e(`Copy item is not supported`),`CopyNotAllowed`)}let n=this.normalizeId(t);this._validateTargetFolderType(t);let i=this._cache.getEntity(e);if(!i){let t=R(await this._dataProvider.copyItem({id:e,folderId:n},n));return this._cache.copyEntity(e,n,t.id),this._cache.upsertEntity(I({...t,folderId:n})),!0}if(this._validateDuplicates&&i.name){let t=n===this.normalizeId(i.folderId)?e:void 0;if(this._checkNameExistsInCache(n,i.name,!!i.isFolder,t)){let e=i.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.eo(`${i.isFolder?`Folder`:`File`} '${i.name}' already exists in target folder`,e)}}let a=R(await this._dataProvider.copyItem(i,n));return this._cache.copyEntity(e,n,a.id,{...a,folderId:n})||this._cache.upsertEntity(I({...a,folderId:n})),!0}async copyItems(e,t){let n=this.normalizeId(e);this._validateTargetFolderType(e);let i=t.map(e=>typeof e==`string`?{id:e}:e),a=i.map(e=>e.id),o=a.map((e,t)=>{let n=this._cache.getEntity(e),r=i[t]?.newName;return n?r?{...n,name:r}:n:void 0});if(this._validateDuplicates)for(let e=0;e<o.length;e++){let t=o[e];if(t&&t.name){let i=n===this.normalizeId(t.folderId)?a[e]:void 0;if(this._checkNameExistsInCache(n,t.name,!!t.isFolder,i)){let e=t.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.eo(`${t.isFolder?`Folder`:`File`} '${t.name}' already exists in target folder`,e)}}}let s={detailed:Array(o.length),success:!0};if(typeof this._dataProvider.copyItems==`function`)s=P(await this._dataProvider.copyItems(o,n),e=>e);else if(typeof this._dataProvider.copyItem==`function`)s.detailed=await Promise.all(a.map(async(e,t)=>{let r=o[t]||{id:e,folderId:null,isFolder:!1};try{return{requestId:e,data:R(await this._dataProvider.copyItem(r,n)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else{let{__:e}=this.i18n;throw new r.eo(e(`Copy items is not supported`),`CopyNotAllowed`)}if(s.success&&s.detailed)for(let e=0,t=s.detailed.length;e<t;e++){let t=s.detailed[e];if(t.success&&t.data?.id){let e=t.data.folderId||n;!this._cache.copyEntity(t.requestId,e,t.data.id,{...t.data,folderId:e})&&t.data&&this._cache.upsertEntity(I({...t.data,folderId:e}))}}else if(!s.detailed)throw new r.eo(`batchResult in copy method must have detailed results`,`ValidationError`);return s}async uploadFileByUrl(e){if(e.noFolder){let t=await this.getTempFolder();e={...e,folderId:t.id}}let t=this.normalizeId(e.folderId??this._rootId);try{let n=I({...await this._dataProvider.uploadFileByUrl(e.url,t,{eventSource:e.eventSource}),folderId:t});return this._cache.upsertEntity(n),n}catch(e){throw e}}async updateFile(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.updateFile!=`function`)throw new r.eo(n(`Update file is not supported`),`UnsupportedOperation`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.eo(n(`File with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`);if(t.name&&t.name!==a.name&&this._validateName(t.name,!1),this._validateDuplicates&&t.name&&t.name!==a.name){let e=this.normalizeId(a.folderId);if(this._checkNameExistsInCache(e,t.name,!1,i))throw new r.eo(n(`File '%s' already exists in parent folder`).replace(`%s`,t.name),`FileAlreadyExists`)}let o=R(await this._dataProvider.updateFile(a,{...t}));return this._cache.upsertEntity(I({...this._cache.getEntity(i),...o,...t})),this._cache.getEntity(i)}};Object.defineProperty(t,"i",{enumerable:!0,get:function(){return a}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return V}})});
1
+ __emailmaker__.define(`static/core/81f3e3c0.js`,[`require`,`exports`,`module`,`static/core/f95aa023.js`,`static/core/c7edc4c6.js`],function(e,t,n){let r=e("./f95aa023.js"),i=e("./c7edc4c6.js");var a;(function(e){function t(e,t,n=(e,t)=>e===t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}e.isEqual=t;function n(e,t=e=>e){let n=new Set;return e.filter(e=>{let r=t(e);return n.has(r)?!1:(n.add(r),!0)})}e.unique=n;function r(e=[],t=[],n=(e,t)=>e===t){let r=[],i=[],a=[];for(let r of e){let e=t.find(e=>n(r,e));e?a.push({prev:r,next:e}):i.push(r)}for(let i of t)e.find(e=>n(i,e))||r.push(i);return{added:r,removed:i,exists:a}}e.diff=r})(a||={});var o=``,s=`Trash`,c=`Trash`,l=class{_inner;rootPath;trashId;trashPath;ensureFolderTrailingSlash;i18n;_pathToId=new Map;_idToPath=new Map;getUrl;getThumbnailUrl;validateDuplicates;constructor(e,t=o,n=c,r=s,a=!0,l=i.m){this._inner=e,this.rootPath=t,this.trashId=n,this.trashPath=r,this.ensureFolderTrailingSlash=a,this.i18n=l,this.validateDuplicates=this._inner.validateDuplicates,typeof e.getUrl==`function`&&(this.getUrl=t=>e.getUrl({...t,id:this.pathForId(t.id,!1),folderId:t.folderId?this.pathForId(t.folderId,!0):this.rootPath})),typeof e.getThumbnailUrl==`function`&&(this.getThumbnailUrl=t=>e.getThumbnailUrl({...t,id:this.pathForId(t.id,!1),folderId:t.folderId?this.pathForId(t.folderId,!0):this.rootPath})),typeof this._inner.deleteItems!=`function`&&(this.deleteItems=void 0),typeof this._inner.deleteItem!=`function`&&(this.deleteItem=void 0),typeof this._inner.moveItems==`function`?this.moveItem=void 0:this.moveItems=void 0,typeof this._inner.copyItems==`function`?this.copyItem=void 0:this.copyItems=void 0,typeof this._inner.uploadFiles==`function`?this.uploadFile=void 0:this.uploadFiles=void 0,typeof this._inner.clearCache!=`function`&&(this.clearCache=void 0),this._getOrGenerateId(this.rootPath)}setController(e){typeof this._inner.setController==`function`&&this._inner.setController({invalidateItemCache:t=>{let n=t.replace(/^\/+|\/+$/g,``),r=this._pathToId.get(n);r&&e.invalidateItemCache(r)},getCachedItem:t=>{let n=t.replace(/^\/+|\/+$/g,``),r=this._pathToId.get(n);if(r){let t=e.getCachedItem(r);if(t)return{...t,id:this.pathForId(t.id,t.isFolder),folderId:this.pathForId(t.folderId,t.isFolder)}}}})}clearCache(e){if(typeof this._inner.clearCache==`function`)return this._inner.clearCache(e)}_getOrGenerateId(e){if(e===this.rootPath)return;let t=e.replaceAll(/^\/+|\/+$/g,``);if(t===this.trashPath.replaceAll(/^\/+|\/+$/g,``))return this.trashId;if(this._pathToId.has(t))return this._pathToId.get(t);let n=r.Uo();return this._pathToId.set(t,n),this._idToPath.set(n,t),n}pathForId(e,t,n){let{__:i}=this.i18n;if(e===``||e===void 0)return this.rootPath;if(e===this.trashId)return this.trashPath;let a=this._idToPath.get(e);if(!a){if(n)return`unknown folder ${e}`;throw new r.Bo(i?i(`Path for id '${e}' not found in mapping`):`Path for id '${e}' not found in mapping`,`FileNotFound`)}let o=0;for(;o<this.rootPath.length&&this.rootPath[o]===`/`;)o++;if(o){let e=0;for(;e<a.length&&a[e]===`/`;)e++;let t=a.slice(e);a=`/`.repeat(o)+t}return t&&this.ensureFolderTrailingSlash&&!a.endsWith(`/`)&&(a+=`/`),a}_updateIdMapping(e,t){let n=t.replace(/^\/+|\/+$/g,``),r=this._idToPath.get(e);r&&this._pathToId.delete(r),this._idToPath.set(e,n),this._pathToId.set(n,e)}async getItems(e){let t=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,n=await this._inner.getItems({...e,folderId:t}),r=n.items.map(e=>{let t=this._getOrGenerateId(e.id),n=e.folderId?this._getOrGenerateId(e.folderId):this._getOrGenerateId(this.rootPath);return{...e,id:t,folderId:n}});return{...n,items:r}}async createFolder(e,t,n){let r=t?this.pathForId(t,!0):this.rootPath,i=await this._inner.createFolder(e,r,n),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async renameItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.renameItem!=`function`)throw new r.Bo(n?n(`Rename item is not supported by inner storage`):`Rename item is not supported by inner storage`,`RenameNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=i,{...o}=await this._inner.renameItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);return this._updateIdMapping(e.id,o.id),e.isFolder&&this.remapCachedFolderContents(e.id,a,o.id),o.folderId&&(o={...o,folderId:this._getOrGenerateId(o.folderId)}),{...o,id:this._getOrGenerateId(o.id)}}async deleteItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.deleteItem!=`function`)throw new r.Bo(n?n(`Delete item is not supported by inner storage`):`Delete item is not supported by inner storage`,`DeleteNotAllowed`);let i=this.pathForId(e.id,e.isFolder);await this._inner.deleteItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t),this.recursivelyRemoveMappings(e.id,i)}async uploadFile(e){let{__:t}=this.i18n;if(typeof this._inner.uploadFile!=`function`)throw new r.Bo(t?t(`Upload file is not supported by inner storage`):`Upload file is not supported by inner storage`,`UnsupportedOperation`);let n=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,i=await this._inner.uploadFile({...e,folderId:n}),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async uploadFiles(e){let t=e.folderId,n=e.items?.map(e=>e.folderId)??[],r=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,i={...e,folderId:r,items:e.items?.map(e=>({...e,folderId:e.folderId?this.pathForId(e.folderId,!0):r}))??[]},a=await this._inner.uploadFiles(i);return{...a,detailed:a.detailed?.map((e,r)=>{if(!e?.data)return e;let i=e.data.id?this._getOrGenerateId(e.data.id):void 0,a=e.data.folderId?this._getOrGenerateId(e.data.folderId):n[r]??t??this._getOrGenerateId(this.rootPath);return{...e,data:{...e.data,id:i,folderId:a}}})}}async findFileByUrl(e,t){let n=t?this.pathForId(t,!0):this.rootPath;if(typeof this._inner.findFileByUrl==`function`){let t=await this._inner.findFileByUrl(e,n);if(!t)return;let r=this._getOrGenerateId(t.id),i=t.folderId?this._getOrGenerateId(t.folderId):this._getOrGenerateId(this.rootPath);return{...t,id:r,folderId:i}}}async uploadFileByUrl(e,t,n){let r=t?this.pathForId(t,!0):this.rootPath,i=await this._inner.uploadFileByUrl(e,r,n),a=this._getOrGenerateId(i.id),o=i.folderId?this._getOrGenerateId(i.folderId):this._getOrGenerateId(this.rootPath);return{...i,id:a,folderId:o}}async moveItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.moveItem!=`function`)throw new r.Bo(n?n(`Move item is not supported by inner storage`):`Move item is not supported by inner storage`,`MoveNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=this.pathForId(t,!0),o=await this._inner.moveItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},a);this._updateIdMapping(e.id,o.id),e.isFolder&&this.remapCachedFolderContents(e.id,i,o.id);let s=this._getOrGenerateId(o.id),c=o.folderId?this._getOrGenerateId(o.folderId):t;return{...o,id:s,folderId:c}}async moveItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.moveItems!=`function`)throw new r.Bo(n?n(`Move items is not supported by inner storage`):`Move items is not supported by inner storage`,`MoveNotAllowed`);let i=t?this.pathForId(t,!0):this.rootPath,a=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),o=await this._inner.moveItems(a,i),s=[];if(o.detailed&&o.detailed.length>0){let r=new Map;for(let t=0;t<o.detailed.length;t++){let n=o.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let a=r.get(i.id)||(o.detailed.length===e.length?o.detailed[e.indexOf(i)]:void 0);if(a?.success&&a.data){if(this._updateIdMapping(i.id,a.data.id),i.isFolder){let e=this.pathForId(i.id,i.isFolder);this.remapCachedFolderContents(i.id,e,a.data.id)}s.push({requestId:i.id,success:!0,data:{...a.data,id:this._getOrGenerateId(a.data.id),folderId:a.data.folderId?this._getOrGenerateId(a.data.folderId):t||this._getOrGenerateId(this.rootPath)}})}else{let e=n?n(`Move operation failed - no detailed result`):`Move operation failed - no detailed result`;s.push({requestId:i.id,success:!1,error:a?.error||{message:e,code:`MoveNotAllowed`}})}}}else for(let t of e){let e=n?n(`Move operation failed - no detailed results`):`Move operation failed - no detailed results`;s.push({requestId:t.id,success:!1,error:{message:e,code:`MoveNotAllowed`}})}return{success:o.success,detailed:s,error:o.error}}async copyItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.copyItems!=`function`)throw new r.Bo(n?n(`Copy items is not supported by inner storage`):`Copy items is not supported by inner storage`,`CopyNotAllowed`);let i=t?this.pathForId(t,!0):this.rootPath,a=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),o=await this._inner.copyItems(a,i),s=[];if(o.detailed&&o.detailed.length>0){let r=new Map;for(let t=0;t<o.detailed.length;t++){let n=o.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let a=r.get(i.id)||(o.detailed.length===e.length?o.detailed[e.indexOf(i)]:void 0);if(a?.success&&a.data?.id){let e=this._getOrGenerateId(a.data.id);s.push({requestId:i.id,success:!0,data:{...a.data,id:e,folderId:a.data.folderId?this._getOrGenerateId(a.data.folderId):t||this._getOrGenerateId(this.rootPath)}})}else{let e=a?a.success?a.data?a.data.id?{message:n?n(`Unknown copy error`):`Unknown copy error`,code:`CopyNotAllowed`}:{message:n?n(`No ID in copied item data`):`No ID in copied item data`,code:`CopyNotAllowed`}:{message:n?n(`No data returned from copy operation`):`No data returned from copy operation`,code:`CopyNotAllowed`}:a.error||{message:n?n(`Copy operation failed`):`Copy operation failed`,code:`CopyNotAllowed`}:{message:n?n(`No detailed result from copy operation`):`No detailed result from copy operation`,code:`CopyNotAllowed`};s.push({requestId:i.id,success:!1,error:e})}}}else for(let t of e){let e=n?n(`No detailed results from copy operation`):`No detailed results from copy operation`;s.push({requestId:t.id,success:!1,error:{message:e,code:`CopyNotAllowed`}})}let c=s.every(e=>e.success),l=n?n(`Copy operation completed with errors`):`Copy operation completed with errors`;return{success:c,detailed:s,error:c?void 0:o.error||{message:l,code:`CopyNotAllowed`}}}async deleteItems(e,t){let{__:n}=this.i18n;if(typeof this._inner.deleteItems!=`function`)throw new r.Bo(n?n(`Delete items is not supported by inner storage`):`Delete items is not supported by inner storage`,`DeleteNotAllowed`);let i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder),folderId:e.folderId?this.pathForId(e.folderId,!0):this.rootPath})),a=await this._inner.deleteItems(i,t),o=[];if(a.detailed&&a.detailed.length>0){let r=new Map;for(let t=0;t<a.detailed.length;t++){let n=a.detailed[t],i=n.requestId||(t<e.length?e[t].id:void 0);i&&r.set(i,n)}for(let i of e){let s=r.get(i.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(i)]:void 0);if(s?.success){let e=this.pathForId(i.id,i.isFolder);if(t.permanent)this.recursivelyRemoveMappings(i.id,e);else if(this._updateIdMapping(i.id,this.trashPath+`/`+e+(i.isFolder?`/`:``)),i.isFolder){let t=this.pathForId(i.id,i.isFolder);this.remapCachedFolderContents(i.id,t,this.trashPath+`/`+e+(i.isFolder?`/`:``))}o.push({requestId:i.id,success:!0})}else{let e=n?n(`Delete operation failed`):`Delete operation failed`;o.push({requestId:i.id,success:!1,error:s?.error||{message:e,code:`DeleteNotAllowed`}})}}}else for(let r of e)if(a.success){let e=this.pathForId(r.id,r.isFolder);if(t.permanent)this.recursivelyRemoveMappings(r.id,e);else if(this._updateIdMapping(r.id,this.trashPath+`/`+e+(r.isFolder?`/`:``)),r.isFolder){let t=this.pathForId(r.id,r.isFolder);this.remapCachedFolderContents(r.id,t,this.trashPath+`/`+e+(r.isFolder?`/`:``))}o.push({requestId:r.id,success:!0})}else{let e=n?n(`Delete operation failed`):`Delete operation failed`;o.push({requestId:r.id,success:!1,error:a.error||{message:e,code:`DeleteNotAllowed`}})}let s=o.every(e=>e.success),c=n?n(`Some items failed to delete`):`Some items failed to delete`;return{success:s,detailed:o,error:s?void 0:a.error||{message:c,code:`DeleteNotAllowed`}}}remapCachedFolderContents(e,t,n){let r=t.replace(/\/+$/,``),i=n.replace(/\/+$/,``),a=[];for(let[e,t]of this._idToPath.entries()){let n=t.replace(/\/+$/,``);n!==r&&n.startsWith(r+`/`)&&a.push({id:e,oldPath:n})}for(let{id:e,oldPath:t}of a){let n=i+t.substring(r.length);this._updateIdMapping(e,n)}}recursivelyRemoveMappings(e,t){let n=t.replace(/\/+$/,``),r=[],i=[];for(let[e,t]of this._idToPath.entries()){let a=t.replace(/\/+$/,``);(a===n||a.startsWith(n+`/`))&&(r.push(e),i.push(a))}for(let e=0;e<r.length;e++)this._idToPath.delete(r[e]),this._pathToId.delete(i[e])}async copyItem(e,t){let{__:n}=this.i18n;if(typeof this._inner.copyItem!=`function`)throw new r.Bo(n?n(`Copy item is not supported by inner storage`):`Copy item is not supported by inner storage`,`CopyNotAllowed`);let i=this.pathForId(e.id,e.isFolder),a=this.pathForId(t,!0),o=await this._inner.copyItem({...e,id:i,folderId:this.pathForId(e.folderId,!0)},a),s=this._getOrGenerateId(o.id),c=o.folderId?this._getOrGenerateId(o.folderId):t;return{...o,id:s,folderId:c}}async updateFile(e,t){let{__:n}=this.i18n;if(typeof this._inner.updateFile!=`function`)throw new r.Bo(n?n(`Update file is not supported by inner storage`):`Update file is not supported by inner storage`,`UnsupportedOperation`);let i=this.pathForId(e.id,!1),{...a}=await this._inner.updateFile({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);return this._updateIdMapping(e.id,a.id),a.folderId&&(a={...a,folderId:this._getOrGenerateId(a.folderId)}),{...a,id:this._getOrGenerateId(a.id)}}async getFileData(e,t){let{__:n}=this.i18n,i=this.pathForId(e.id,!1);if(typeof this._inner.getFileData==`function`)return this._inner.getFileData({...e,id:i,folderId:this.pathForId(e.folderId,!0)},t);let a=e.url||(typeof this.getUrl==`function`?await this.getUrl(e):void 0);if(!a)throw new r.Bo(n?n(`Cannot get file data: no url and no inner.getFileData`):`Cannot get file data: no url and no inner.getFileData`,`FileReadError`);return fetch(a,t?.forceReload?{cache:`no-store`}:void 0).then(e=>e.blob())}async cleanTrash(){let{__:e}=this.i18n;if(typeof this._inner.cleanTrash!=`function`)throw new r.Bo(e?e(`Clean trash is not supported by inner storage`):`Clean trash is not supported by inner storage`,`UnsupportedOperation`);return await this._inner.cleanTrash()}},u=``,d=class{map=new Map;static childrenViewKey(e,t){return`v${u}${e}${u}${t}`}static childrenCountKey(e){return`c${u}${e}`}getFreshError(e,t){let n=this.map.get(e);return n?t!==1/0&&Date.now()-n.updatedAt>t?(this.map.delete(e),null):n.error:null}setError(e,t){this.map.set(e,{error:t,updatedAt:Date.now()})}delete(e){this.map.delete(e)}clearChildrenViewErrorsForParent(e){let t=`v${u}${e}${u}`;for(let e of[...this.map.keys()])e.startsWith(t)&&this.map.delete(e)}clearAll(){this.map.clear()}},f=``,p=1800*1e3;function m(e){return e==null||e===``?f:e}function h(e){if(e==null)return 1/0;let t=Number(e);return Number.isFinite(t)&&t>=0?t:1/0}function g(e){return!e||typeof e.search!=`string`?!1:e.search.trim().length>0}function _(e){if(!e)return null;let t=e.folderId;return t==null?null:String(t)}function v(e){return!!e&&e.isFolder}function y(){if(typeof globalThis?.crypto?.randomUUID==`function`)return globalThis.crypto.randomUUID();try{let e=globalThis.crypto||globalThis.msCrypto;if(e&&typeof e.getRandomValues==`function`){let t=new Uint8Array(16);e.getRandomValues(t);let n=``;for(let e=0;e<t.length;e++)n+=t[e].toString(16).padStart(2,`0`);return`id_${n}`}}catch{}return`id_fallback_${Date.now().toString(36)}_${Math.floor(Math.random()*(2**53-1)).toString(36).slice(0,8)}`}function b(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.data?.code===`path_folder_not_found`||t.status===404||t.data?.data?.status===404}function x(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t.toString(36)}function S(e){if(!e||typeof e!=`object`)return String(e??``);let t=e,n=[],r={},i=[`page`,`pageSize`,`sortBy`,`sortOrder`,`search`,`itemType`,`limit`];for(let e of Object.keys(t).sort()){let a=t[e];i.includes(e)?n.push(`${e}=${String(a??``)}`):r[e]=a}let a=Object.keys(r).length?JSON.stringify(r):``,o=n.join(`|`),s=a?x(a):``;return`${o}${s?`|${s}`:``}`}var C=class e{entities=new Map;childrenByParent=new Map;maxCacheSize=1e4;now(){return Date.now()}checkCacheSize(){if(this.entities.size>this.maxCacheSize){let e=Array.from(this.entities.entries()).sort((e,t)=>e[1].updatedAt-t[1].updatedAt),t=Math.floor(this.maxCacheSize*.1);for(let n=0;n<t&&n<e.length;n++){let[t,r]=e[n];this.deleteEntityById(t)}}}getEntity(e){return this.entities.get(e)?.value}getRecord(e){return this.entities.get(e)}getFileSystemItem(e){let t=this.getEntity(e);return t&&!v(t)?t:void 0}getFolder(e){let t=this.getEntity(e);return t&&v(t)?t:void 0}getChildrenIds(e,t={}){let n=m(e),r=this.childrenByParent.get(n);return r?t.onlyFileSystemItems?Array.from(r.files):t.onlyFolders?Array.from(r.folders):[...Array.from(r.folders),...Array.from(r.files)]:[]}searchByUrl(e){for(let t of this.entities.values())if(t.value.url===e)return t.value;return null}upsertEntity(e){let t=this.entities.get(e.id)??null,n=t?t.value:null,r=n?_(n):null,i=_(e),a=n?v(n):!1,o=v(e),s;if(n&&v(n)&&o){let t=n.childrenCount,r=e.childrenCount;t!==void 0&&r===void 0&&(s=t)}if(n&&(r!==i||a!==o)){let t=m(r),n=this.childrenByParent.get(t);n&&(a?n.folders.delete(e.id):n.files.delete(e.id),n.files.size===0&&n.folders.size===0&&this.childrenByParent.delete(t))}let c=e;s!==void 0&&(c={...e,childrenCount:s}),this.entities.set(e.id,{value:{...c},updatedAt:this.now()}),this.checkCacheSize();let l=m(i),u=this.childrenByParent.get(l);u||(u={files:new Set,folders:new Set},this.childrenByParent.set(l,u)),o?u.folders.add(e.id):u.files.add(e.id)}updateServerChildrenCount(e,t){if(e==null||t==null||Number.isNaN(t))return;let n=this.entities.get(e);if(!n||!v(n.value))return;let r={...n.value,childrenCount:t};this.entities.set(e,{value:r,updatedAt:this.now()})}deleteEntityById(e){let t=this.entities.get(e)??null;if(!t)return{entity:null,parentId:null};let n=t.value,r=_(n),i=m(r),a=this.childrenByParent.get(i);return a&&(v(n)?a.folders.delete(e):a.files.delete(e),a.files.size===0&&a.folders.size===0&&this.childrenByParent.delete(i)),this.entities.delete(e),{entity:{...n},parentId:r}}deleteFolderRecursive(e){let t=this.entities.get(e);if(!t||!v(t.value))return{deletedFolderRecords:[],deletedFileSystemItemRecords:[]};let n=[{id:e,parentId:_(t.value)}],r=[],i=[];for(;n.length;){let e=n.shift();r.push(e);let t=this.childrenByParent.get(m(e.id));if(t){for(let e of Array.from(t.folders)){let t=this.entities.get(e);t&&n.push({id:e,parentId:_(t.value)})}for(let e of Array.from(t.files))i.push(e)}}let a=[];for(let e of i){let t=this.entities.get(e);if(!t)continue;let n=t.value,r=m(_(n)),i=this.childrenByParent.get(r);i&&(i.files.delete(e),i.files.size===0&&i.folders.size===0&&this.childrenByParent.delete(r)),this.entities.delete(e),a.push({...n})}let o=[];for(let e=r.length-1;e>=0;e--){let{id:t,parentId:n}=r[e],i=this.entities.get(t);if(!i)continue;let a=i.value,s=m(a.id);this.childrenByParent.delete(s);let c=m(n),l=this.childrenByParent.get(c);l&&(l.folders.delete(t),l.files.size===0&&l.folders.size===0&&this.childrenByParent.delete(c)),this.entities.delete(t),o.push({...a})}return{deletedFolderRecords:o,deletedFileSystemItemRecords:a}}moveEntityById(e,t){let n=this.entities.get(e)??null;if(!n)return null;let r=n.value,i=m(_(r)),a=this.childrenByParent.get(i);a&&(v(r)?a.folders.delete(e):a.files.delete(e),a.files.size===0&&a.folders.size===0&&this.childrenByParent.delete(i));let o={...r,folderId:t};if(v(r)&&v(o)){let e=r.childrenCount;e!==void 0&&(o.childrenCount=e)}this.entities.set(e,{value:o,updatedAt:this.now()});let s=m(t),c=this.childrenByParent.get(s);return c||(c={files:new Set,folders:new Set},this.childrenByParent.set(s,c)),v(o)?c.folders.add(e):c.files.add(e),{...o}}copyFileSystemItem(e,t,n){let r=this.entities.get(e)??null;if(!r||v(r.value))return null;let i={...r.value,id:t,folderId:n};return this.upsertEntity(i),{...i}}copyFolderShallow(e,t,n){let r=this.entities.get(e)??null;if(!r||!v(r.value))return null;let i={...r.value,id:t,folderId:n};return this.upsertEntity(i),{...i}}isEntityStale(e,t){let n=this.entities.get(e)??null;return n?t===1/0?!1:this.now()-n.updatedAt>t:!0}touch(e,t){let n=this.entities.get(e);n&&(n.updatedAt=t??this.now())}getEntitiesByIds(e){return e.map(e=>this.entities.get(e)?.value??null)}searchByName(e,t){if(!e||e.trim()===``)return[];let n=t?.parentId,r=t?.recursive??!1,i=t?.itemType??`all`,a=t?.caseSensitive??!1,o=t?.limit??1/0,s=a?e.trim():e.trim().toLowerCase(),c=[],l=null;if(n!==void 0){l=new Set;let e=m(n);if(l.add(e),r){let t=[e],n=new Set;for(;t.length>0;){let e=t.shift();if(n.has(e))continue;n.add(e);let r=this.childrenByParent.get(e);if(r)for(let e of r.folders)l.add(e),t.push(e)}}}for(let[,e]of this.entities){if(c.length>=o)break;let t=e.value;if(l!==null){let e=m(_(t));if(!l.has(e))continue}if(i===`file`&&v(t)||i===`folder`&&!v(t))continue;let n=t.name??``;(a?n:n.toLowerCase()).includes(s)&&c.push({...t})}return c}toJSON(){return{entities:Array.from(this.entities.entries()),childrenByParent:Array.from(this.childrenByParent.entries()).map(([e,t])=>[e,{files:Array.from(t.files),folders:Array.from(t.folders)}])}}static fromJSON(t){let n=new e;for(let[e,r]of t.entities??[])n.entities.set(e,{value:r.value,updatedAt:r.updatedAt});for(let[e,r]of t.childrenByParent??[])n.childrenByParent.set(e,{files:new Set(r.files),folders:new Set(r.folders)});return n}},w=class e{views=new Map;strategy;ttl;errorTtl;entityTtl;failedRequests;serverChildrenCountHandler;childrenCountInvalidator;maxViewsPerParent=50;constructor(e={},t=p,n,r,i=new d){this.strategy={allowSortedInsert:e.allowSortedInsert??!0,allowSearchInsert:e.allowSearchInsert??!0,invalidateOnPaginationFull:e.invalidateOnPaginationFull??!0,preloadPagesBefore:e.preloadPagesBefore??0,preloadPagesAfter:e.preloadPagesAfter??1,comparator:e.comparator,filterMatch:e.filterMatch},this.ttl=t,this.errorTtl=n??t,this.entityTtl=r??t,this.failedRequests=i}setServerChildrenCountHandler(e){this.serverChildrenCountHandler=e}setChildrenCountInvalidator(e){this.childrenCountInvalidator=e}now(){return Date.now()}parentKey(e){return m(e??null)}isExpired(e){return e==null?!0:this.ttl===1/0?!1:this.now()-e>this.ttl}areEntitiesStale(e,t){return e?e.some(e=>!t.getEntity(e)||t.isEntityStale(e,this.entityTtl)):!0}isEntityTypeCompatible(e,t){return!!(!t||t===`all`||t===`file`&&!v(e)||t===`folder`&&v(e))}cleanupOldViews(e){if(e.size<=this.maxViewsPerParent)return;let t=Array.from(e.entries()).sort((e,t)=>(t[1].view.updatedAt||0)-(e[1].view.updatedAt||0));for(;e.size>this.maxViewsPerParent&&t.length>0;){let[n]=t.pop();e.delete(n)}}async getOrCreateChildren(e,t,n,r){let i=this.parentKey(e),a=S(t??{}),o=this.views.get(i);o||(o=new Map,this.views.set(i,o));let s=d.childrenViewKey(i,a),c=o.get(a);c||(c={params:t,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},o.set(a,c),this.cleanupOldViews(o));let l=this.failedRequests.getFreshError(s,this.errorTtl);if(l!=null)throw l;if(c.view.value&&!this.isExpired(c.view.updatedAt)&&!this.areEntitiesStale(c.view.value,r)&&!c.view.meta?.stale){let e=c.view.value.map(e=>r.getEntity(e)).filter(Boolean),t=c.params?.itemType||`all`;return{items:e.filter(e=>this.isEntityTypeCompatible(e,t)),...c.view.meta??{}}}if(c.view.promise)return c.view.promise;let u=y();c.view.loadId=u;let f=(async()=>{try{let a=await n(e,t),o=g(t),l=o?{...a,total:void 0}:a,d=this.views.get(i)?.get(S(t));if(!d||d.view.loadId!==u){let e=Error(`StaleLoad`);throw e.name=`StaleLoad`,e}for(let e of l.items)r.upsertEntity(e);c.view.value=l.items.map(e=>e.id);let{items:f,...p}=l,m={...p};c.view.meta=m,c.view.meta.stale=!1,this.failedRequests.delete(s),c.view.updatedAt=this.now(),!o&&typeof m.total==`number`&&(this.serverChildrenCountHandler?this.serverChildrenCountHandler(e??null,m.total,r):r.updateServerChildrenCount(e,m.total));let _=this.strategy.preloadPagesAfter??0,v=this.strategy.preloadPagesBefore??0,y=h(t?.pageSize);if((_>0||v>0)&&Number.isFinite(y)){let i=e,a={...t},o=typeof m.totalPages==`number`?m.totalPages:1,s=t?.page??1,c=y,l=n,d=u;setTimeout(()=>{this.preloadPagesAsync(i,a,s,o,c,_,v,r,m,l,d)},0)}return l}catch(e){if(e?.name===`StaleLoad`)throw this.failedRequests.delete(s),c.view.value=void 0,c.view.updatedAt=this.now(),e;let t=e,n=t?.status??t?.data?.status,r=t?.code??t?.data?.code;if(n===404||r===`FileNotFound`||r===`FolderNotFound`||r===`path_folder_not_found`)return this.failedRequests.delete(s),c.view.value=[],c.view.meta={total:0,totalPages:0},c.view.updatedAt=this.now(),{items:[],total:0,totalPages:0};throw this.failedRequests.setError(s,e),c.view.value=void 0,c.view.updatedAt=this.now(),e}finally{c.view.promise=null}})();return c.view.promise=f,f}async preloadPagesAsync(e,t,n,r,i,a,o,s,c,l,u){try{let i=this.parentKey(e),c=this.views.get(i);if(!c)return;let d=c.get(S(t));if(!d||u!=null&&d.view.loadId!==u)return;let f=c.get(S(t));if(!f?.view.meta)return;let p=typeof f.view.meta.totalPages==`number`?f.view.meta.totalPages:1;if(p!==r)return;let m=async n=>{let r={...t,page:n};try{let a=await l(e,r),o=this.views.get(i);if(!o)return;let c=o.get(S(t));if(!c||u!=null&&c.view.loadId!==u||c.view.loadId!==u)return;for(let e of a.items)s.upsertEntity(e);let d=S(r),f=o.get(d);if(f||(f={params:r,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:c.view.loadId}},o.set(d,f),this.cleanupOldViews(o)),!f.view.value||this.isExpired(f.view.updatedAt)){f.view.value=a.items.map(e=>e.id);let{items:e,...t}=a;f.view.meta={...t,page:n,totalPages:p},f.view.updatedAt=this.now()}}catch{}};if(a>0&&n<p)for(let e=1;e<=Math.min(a,p-n);e++){let r=n+e,i=S({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}if(o>0&&n>1)for(let e=1;e<=Math.min(o,n-1);e++){let r=n-e,i=S({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}}catch{}}removeEmptyPageIfNeeded(e,t,n,r,i){if(t.view.value&&t.view.value.length===0&&n<r){let t=S({...i,page:n});e.delete(t)}}updateTotalPagesForAllViews(e,t){for(let[,n]of e)n.view.meta&&(n.view.meta.totalPages=t)}isParamsSame(e,t){let n=Object.keys(e??{}).filter(e=>e!==`page`).sort(),r=Object.keys(t??{}).filter(e=>e!==`page`).sort();if(n.length!==r.length)return!1;for(let i=0;i<n.length;i++){let a=n[i];if(a!==r[i]||e[a]!==t[a])return!1}return!0}syncTotalsInSameViews(e,t){let n=t.view.meta;if(!n||typeof n.total!=`number`)return;let r=Number(n.total),i=h(t.params?.pageSize),a=Number.isFinite(i)&&i>0?Math.max(1,Math.ceil(r/i)):void 0;for(let[,n]of e)this.isParamsSame(n.params??{},t.params??{})&&(n.view.meta||(n.view.meta={}),n.view.meta.total=r,a!==void 0&&(n.view.meta.totalPages=a))}canSafelyModifySortedView(e){return!!(!e.sortBy&&!e.sortOrder||this.strategy.comparator)}cascadeShiftPages(e,t,n,r,i,a,o){let s=t,c=n,l=!1,u=0;for(;s.view.value&&s.view.value.length<r&&c<i&&u<100;){u++;let t=S({...o,page:c+1}),n=e.get(t);if(!n?.view.value||this.isExpired(n.view.updatedAt)){s.view.meta={...s.view.meta??{},stale:!0};break}let i=r-s.view.value.length,d=n.view.value.slice(0,i).filter(e=>a.getEntity(e));if(d.length===0){s.view.meta={...s.view.meta??{},stale:!0};break}if(s.view.value=[...s.view.value,...d],s.view.updatedAt=Date.now(),n.view.value=n.view.value.slice(d.length),n.view.updatedAt=Date.now(),n.view.value.length===0){let t=c+1,r=n.view.meta;if(t<(r&&typeof r.totalPages==`number`?r.totalPages:1)){let n=S({...o,page:t});e.delete(n),l=!0}break}s=n,c++}return(!s.view.value||s.view.value.length<r)&&c>=i&&(s.view.meta={...s.view.meta??{},stale:!0}),l}cascadeShiftToNextPage(e,t,n,r,i,a,o){if(!t.view.value||t.view.value.length<=r)return!1;if(n-(o.page||1)>=10)return t.view.meta={...t.view.meta??{},stale:!0},!1;let s={...o,page:n+1},c=S(s),l=e.get(c),u=!1;if(!l?.view.value||this.isExpired(l.view.updatedAt))if(n>=i){l={params:s,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},e.set(c,l),this.cleanupOldViews(e);let r=t.view.meta;r&&(l.view.meta={...r,page:n+1}),u=!0}else return t.view.meta={...t.view.meta??{},stale:!0},!1;let d=t.view.value.slice(r).filter(e=>a.getEntity(e));if(d.length===0)return u&&e.delete(c),!1;t.view.value=t.view.value.slice(0,r),t.view.updatedAt=Date.now(),l.view.value=[...d,...l.view.value??[]],l.view.updatedAt=Date.now();let f=l.view.meta&&typeof l.view.meta.totalPages==`number`?l.view.meta.totalPages:i;if(!u&&this.cascadeShiftToNextPage(e,l,n+1,r,f,a,o))return!0;if(!l.view.value||l.view.value.length===0){let t=n+1,r=l.view.meta,i=r&&typeof r.totalPages==`number`?r.totalPages:1;this.removeEmptyPageIfNeeded(e,l,t,i,o)}return u}tryInsertSorted(e,t,n){let r=this.strategy.comparator;if(!r||!e.view.value)return!1;let i=e.params?.itemType||`all`;if(!this.isEntityTypeCompatible(t,i))return!1;let a=e.view.value.map(e=>n.getEntity(e));if(a.some(e=>!e))return!1;let o=0,s=a.length;for(;o<s;){let n=Math.floor((o+s)/2),i=r(t,a[n],e.params);if(typeof i!=`number`||Number.isNaN(i))return!1;i>=0?o=n+1:s=n}return e.view.value.includes(t.id)?(e.view.updatedAt=this.now(),!0):(e.view.value=[...e.view.value.slice(0,o),t.id,...e.view.value.slice(o)],e.view.updatedAt=this.now(),e.view.meta&&typeof e.view.meta.total==`number`&&(e.view.meta.total=Number(e.view.meta.total)+1),!0)}updateChildrenCountForOperation(e,t,n,r){let i=_(t);switch(e){case`delete`:this.adjustChildrenCount(r,i,-1),this.childrenCountInvalidator?.(i);break;case`insert`:case`copy`:this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(i);break;case`move`:this.adjustChildrenCount(r,n,-1),this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(n),this.childrenCountInvalidator?.(i);break}}adjustChildrenCount(e,t,n){if(!t)return;let r=e.getFolder(t);if(r&&typeof r.childrenCount==`number`){let i=Math.max(0,r.childrenCount+n);e.updateServerChildrenCount(t,i)}}smartInvalidateChildrenViews(e,t,n,r,i,a){if(!t)return;this.updateChildrenCountForOperation(n,t,i,r);let o=this.parentKey(e),s=this.views.get(o);if(s)for(let[,e]of s){let a=e.params??{},o=a?.page??1,c=h(a?.pageSize),l=Number.isFinite(c),u=!!(a?.sortBy||a?.sortOrder),d=!!a?.search,f=a?.itemType||`all`;if(this.isEntityTypeCompatible(t,f)){if(d&&this.strategy.filterMatch&&!this.strategy.filterMatch(t,e.params)){e.view.value?.includes(t.id)&&(e.view.value=e.view.value.filter(e=>e!==t.id),e.view.meta&&typeof e.view.meta.total==`number`&&(e.view.meta.total=Math.max(0,e.view.meta.total-1)),e.view.updatedAt=Date.now());continue}if(!e.view.value){e.view.meta&&(e.view.meta.stale=!0),e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0);continue}if(e.view.value.includes(t.id),this.shouldInvalidateCompletely(e,n,t,u,l,o)){e.view.meta={...e.view.meta??{},stale:!0},e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0);continue}switch(n){case`delete`:this.handleDelete(s,e,o,c,l,t,r);break;case`insert`:case`copy`:this.handleInsert(s,e,o,c,l,u,t,r);break;case`update`:this.handleUpdate(s,e,o,c,l,u,d,t,r);break;case`move`:this.handleMove(s,e,o,c,l,u,t,i,r);break}}}}shouldInvalidateCompletely(e,t,n,r,i,a){return!!(i&&a>1&&(t===`insert`||t===`delete`||t===`move`)||r&&!this.strategy.comparator&&(t===`insert`||t===`move`)||this.isExpired(e.view.updatedAt))}tryReinsertEntity(e,t,n,r,i){let a=e.params?.itemType||`all`;if(!this.isEntityTypeCompatible(t,a))return!1;if(this.strategy.comparator&&this.strategy.filterMatch){if(!this.strategy.filterMatch(t,e.params))return!1;if(this.tryInsertSorted(e,t,n))return!0}let o=e.params??{};return(o.sortBy||o.sortOrder)&&!this.canSafelyModifySortedView(o)?!1:!r||e.view.value.length<i?(e.view.value.push(t.id),!0):!1}handleDelete(e,t,n,r,i,a,o){let s=t.view.value.includes(a.id);if(s&&(t.view.value=t.view.value.filter(e=>e!==a.id)),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(t.view.updatedAt=Date.now(),s&&i&&t.view.value.length<r&&o){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,o,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}handleInsert(e,t,n,r,i,a,o,s){if(!t.view.value.includes(o.id)){if(a&&this.strategy.allowSortedInsert&&this.strategy.comparator&&s){if(this.tryInsertSorted(t,o,s)&&t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(i&&t.view.value.length>r&&s){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftToNextPage(e,t,n,r,a,s,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=t.view.meta.totalPages+1;t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}}else if(!i||t.view.value.length<r){if(t.view.value.push(o.id),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now()}else t.view.meta={...t.view.meta??{},stale:!0};t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}}handleUpdate(e,t,n,r,i,a,o,s,c){let l=t.view.value.includes(s.id),u=this.isEntityTypeCompatible(s,t.params?.itemType||`all`);if(l&&!u){if(t.view.value=t.view.value.filter(e=>e!==s.id),t.view.meta&&typeof t.view.meta.total==`number`&&(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}if(t.view.updatedAt=Date.now(),i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l&&(a||o)){if(t.view.value=t.view.value.filter(e=>e!==s.id),!this.tryReinsertEntity(t,s,c,i,r)){if(t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}if(i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}}else if(t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now(),t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l){t.view.updatedAt=Date.now(),t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(u&&!o){if(a&&this.strategy.allowSortedInsert&&this.strategy.comparator&&c){if(this.tryInsertSorted(t,s,c)&&t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}}else if(!i||t.view.value.length<r){if(t.view.value.push(s.id),t.view.meta&&typeof t.view.meta.total==`number`){if(t.view.meta.total+=1,i&&Number.isFinite(r)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}this.syncTotalsInSameViews(e,t)}t.view.updatedAt=Date.now()}else t.view.meta={...t.view.meta??{},stale:!0};t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}}handleMove(e,t,n,r,i,a,o,s,c){if(t.view.value.includes(o.id)){if(t.view.value=t.view.value.filter(e=>e!==o.id),t.view.meta&&typeof t.view.meta.total==`number`&&(t.view.meta.total=Math.max(0,t.view.meta.total-1),i&&Number.isFinite(r)&&typeof t.view.meta.total==`number`)){let e=r;e>0&&(t.view.meta.totalPages=Math.max(1,Math.ceil(t.view.meta.total/e)))}if(t.view.updatedAt=Date.now(),i&&t.view.value.length<r&&c){let i=t.view.meta,a=i&&typeof i.totalPages==`number`?i.totalPages:1;if(this.cascadeShiftPages(e,t,n,r,a,c,t.params??{})&&t.view.meta&&typeof t.view.meta.totalPages==`number`){let n=Math.max(1,t.view.meta.totalPages-1);t.view.meta.totalPages=n,this.updateTotalPagesForAllViews(e,n)}}this.syncTotalsInSameViews(e,t)}t.view.loadId=y(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)}forceInvalidateChildrenViews(e){let t=this.parentKey(e??null);this.failedRequests.clearChildrenViewErrorsForParent(t);let n=this.views.get(t);if(n)for(let[,e]of n)e.view.value=void 0,e.view.meta=void 0,e.view.promise=null,e.view.updatedAt=0,e.view.loadId=y(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0)}getKnownTotal(e){let t=this.parentKey(e??null),n=this.views.get(t);if(!n)return;let r=null;for(let[,e]of n){let t=e.view.meta;t&&typeof t.total==`number`&&(!r||(e.view.updatedAt??0)>r.updatedAt)&&(r={total:Number(t.total),updatedAt:e.view.updatedAt??0})}return r?r.total:void 0}toJSON(){return{views:Array.from(this.views.entries()).map(([e,t])=>[e,Array.from(t.entries())]),ttl:this.ttl,errorTtl:this.errorTtl,entityTtl:this.entityTtl,strategy:{allowSortedInsert:this.strategy.allowSortedInsert,allowSearchInsert:this.strategy.allowSearchInsert,invalidateOnPaginationFull:this.strategy.invalidateOnPaginationFull,preloadPagesBefore:this.strategy.preloadPagesBefore,preloadPagesAfter:this.strategy.preloadPagesAfter}}}static fromJSON(t,n){let r=n?.ttl??t?.ttl??18e5,i=new e({},r,n?.errorTtl??t?.errorTtl??r,void 0,n?.failedRequests??new d);for(let[e,n]of t.views??[]){let t=new Map;for(let[e,r]of n){let n=r;n?.view&&`error`in n.view&&delete n.view.error,t.set(e,n)}i.views.set(e,t)}return i}},T=class e{entities;views;ttl;errorTtl;failedRequests;childrenCountPromises=new Map;invalidateChildrenCountCache(e){let t=m(e??``);this.childrenCountPromises.delete(t),this.failedRequests.delete(d.childrenCountKey(t))}constructor(e={},t=p,n){this.failedRequests=new d,this.ttl=t,this.errorTtl=n??t,this.entities=new C,this.views=new w(e,t,this.errorTtl,void 0,this.failedRequests),this.views.setServerChildrenCountHandler((e,t,n)=>{this.handleServerReportedChildrenCount(e,t,n??this.entities)}),this.views.setChildrenCountInvalidator(e=>{this.invalidateChildrenCountCache(e)})}getEntity(e){return this.entities.getEntity(e)??null}getFileSystemItem(e){return this.entities.getFileSystemItem(e)??null}getFolder(e){return this.entities.getFolder(e)??null}async getOrCreateChildren(e,t,n){return this.views.getOrCreateChildren(e,t,n,this.entities)}upsertEntity(e){let t=this.entities.getEntity(e.id),n=t?_(t):null,r=_(e),i=t?v(t):!1,a=v(e);if(this.entities.upsertEntity(e),t){if(n!==r||i!==a){this.views.smartInvalidateChildrenViews(n,t,`delete`,this.entities),this.views.smartInvalidateChildrenViews(r,e,`insert`,this.entities);return}this.views.smartInvalidateChildrenViews(r,e,`update`,this.entities,void 0,t)}else this.views.smartInvalidateChildrenViews(r,e,`insert`,this.entities)}isAncestor(e,t){let n=t,r=new Set;for(;n&&!r.has(n);){if(r.add(n),m(n)===m(e))return!0;let t=this.entities.getEntity(n);if(!t)break;n=_(t),n===null&&(n=f)}return!1}moveEntity(e,t){let n=this.entities.getEntity(e);if(!n||v(n)&&t!==null&&this.isAncestor(e,t))return null;let r=_(n),i=this.entities.moveEntityById(e,t);return i?(this.views.smartInvalidateChildrenViews(r,n,`delete`,this.entities),this.views.smartInvalidateChildrenViews(t,i,`insert`,this.entities),i):null}copyEntity(e,t,n,r){let i=this.entities.getEntity(e);if(!i)return null;let a=null;if(v(i)){let n=[e],i=[];for(;n.length;){let e=n.shift();i.push(e);let t=this.entities.getChildrenIds(e,{onlyFolders:!0});for(let e of t)n.push(e)}let o=new Map;for(let e of i)o.set(e,y());for(let n of i){let i=this.entities.getFolder(n),a=o.get(n),s=_(i),c=s===null?t:o.get(s)??null,l={...i,...n===e?r:void 0,id:a,folderId:(n===e?r?.folderId:void 0)??c};this.entities.upsertEntity(l)}for(let e of i){let t=o.get(e),n=this.entities.getChildrenIds(e,{onlyFileSystemItems:!0});for(let e of n){let n=this.entities.getFileSystemItem(e);if(!n)continue;let r=y(),i={...n,id:r,folderId:t};this.entities.upsertEntity(i)}}a=this.entities.getEntity(o.get(e))??null}else{let i=n??y();if(a=this.entities.copyFileSystemItem(e,i,t??null),a&&r){let e={...a,...r,id:i,folderId:r.folderId??t??null};this.entities.upsertEntity(e),a=e}}return a&&this.views.smartInvalidateChildrenViews(t,a,`copy`,this.entities),a}searchByUrl(e){return this.entities.searchByUrl(e)??null}deleteEntity(e){let t=this.entities.getEntity(e);if(!t)return null;if(v(t)){let{deletedFolderRecords:n,deletedFileSystemItemRecords:r}=this.entities.deleteFolderRecursive(e);for(let e of r)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of n)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of n)this.views.forceInvalidateChildrenViews(e.id);return t}else{let{entity:t,parentId:n}=this.entities.deleteEntityById(e);return t&&this.views.smartInvalidateChildrenViews(n,t,`delete`,this.entities),t}}deleteFolderRecursive(e){let{deletedFolderRecords:t,deletedFileSystemItemRecords:n}=this.entities.deleteFolderRecursive(e);for(let e of n)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of t)this.views.smartInvalidateChildrenViews(e.folderId,e,`delete`,this.entities);for(let e of t)this.views.forceInvalidateChildrenViews(e.id);return{deletedFileSystemItemIds:n.map(e=>e.id),deletedFolderIds:t.map(e=>e.id)}}forceInvalidate(e){let t=this.entities.getEntity(e);if(!t)return;let n=new Set;if(v(t)){let t=[e];for(;t.length;){let e=t.pop();if(n.has(e))continue;n.add(e),this.views.forceInvalidateChildrenViews(e),this.invalidateChildrenCountCache(e);let r=this.entities.getChildrenIds(e,{onlyFolders:!0});for(let e of r)t.push(e)}}else{let e=t.folderId??null;this.views.forceInvalidateChildrenViews(e),this.invalidateChildrenCountCache(e)}}getChildrenIds(e){return this.entities.getChildrenIds(e)}searchByName(e,t){return this.entities.searchByName(e,t)}async getChildrenCount(e=``,t){let n=m(e),r=d.childrenCountKey(n),i=this.failedRequests.getFreshError(r,this.errorTtl);if(i!=null)return Promise.reject(i);let a=this.childrenCountPromises.get(n);if(a)return a;let o=(async()=>{try{let n=this.entities.getFolder(e);if(n&&typeof n.childrenCount==`number`)return this.failedRequests.delete(r),n.childrenCount;let i=this.views.getKnownTotal(e);if(typeof i==`number`)return n&&this.handleServerReportedChildrenCount(e,i,this.entities),this.failedRequests.delete(r),i;if(t){let n=await t(e);return this.entities.getFolder(e)&&this.handleServerReportedChildrenCount(e,n,this.entities),this.failedRequests.delete(r),n}return this.failedRequests.delete(r),this.entities.getChildrenIds(e).length}catch(e){if(this.childrenCountPromises.delete(n),b(e))return this.failedRequests.delete(r),0;throw this.failedRequests.setError(r,e),e}finally{this.childrenCountPromises.delete(n)}})();return this.childrenCountPromises.set(n,o),o}toJSON(){return{entities:this.entities.toJSON(),views:this.views.toJSON(),ttl:this.ttl,errorTtl:this.errorTtl}}static fromJSON(t,n){let r=t?.ttl??18e5,i=t?.errorTtl??r,a=new e(n??{},r,i),o=C.fromJSON(t?.entities??{}),s=w.fromJSON(t?.views??{},{failedRequests:a.failedRequests,ttl:r,errorTtl:i});return n&&(s.strategy={allowSortedInsert:n.allowSortedInsert??!0,allowSearchInsert:n.allowSearchInsert??!0,invalidateOnPaginationFull:n.invalidateOnPaginationFull??!0,preloadPagesBefore:n.preloadPagesBefore??0,preloadPagesAfter:n.preloadPagesAfter??1,comparator:n.comparator,filterMatch:n.filterMatch}),a.entities=o,a.views=s,s.setServerChildrenCountHandler((e,t,n)=>{a.handleServerReportedChildrenCount(e,t,n??o)}),s.setChildrenCountInvalidator(e=>{a.invalidateChildrenCountCache(e)}),a}handleServerReportedChildrenCount(e,t,n){this.checkAndResolveChildrenCountConflict(e,t,n),this.invalidateChildrenCountCache(e)}checkAndResolveChildrenCountConflict(e,t,n){if(!n||t===void 0)return;let r=e??null;if(!r){n.updateServerChildrenCount(r,t);return}let i=n.getFolder(r)?.childrenCount;i!==void 0&&i!==t&&this.views.forceInvalidateChildrenViews(r),n.updateServerChildrenCount(r,t)}},E=class{deletingIds=new Set;beginDeleting(e){for(let t of e)t&&this.deletingIds.add(t)}endDeleting(e){for(let t of e)t&&this.deletingIds.delete(t)}isDeleting(e){return!!e&&this.deletingIds.has(e)}},D=``,O=`Trash`,k=`Edited`,A=1e4,j=1e4,M=25,N=10;function P(e,t){let n=e??{},r=Array.isArray(n.detailed)?n.detailed.map(e=>({requestId:e.requestId??e.id,success:!!e.success,data:t(e.data),error:e.error})):void 0;return{success:!!n.success,error:n.error,detailed:r}}function F(e){return e==null?``:String(e)}function I(e){return{...e,name:F(e.name)}}function L(e){return(e??[]).map(I)}function R(e){return!e||typeof e!=`object`||!(`name`in e)?e:{...e,name:F(e.name)}}function z(e){return e?e.replaceAll(`\\`,`/`).split(`/`).filter(Boolean):[]}function B(e){let t=Object.getPrototypeOf(e);for(let n of Object.getOwnPropertyNames(t))n!==`constructor`&&typeof Object.getOwnPropertyDescriptor(t,n)?.value==`function`&&(e[n]=e[n].bind(e))}var V=class{_dataProvider;_options;_pathOptions;i18n;_cache;_rootId;_useSoftDelete;_enableTrash;_validateDuplicates;_blobFetchForceReloadOnceIds=new Set;_mutationRegistry=new E;async _findOrCreateFolderByPath(e){let{__:t}=this.i18n,n=z(e);if(n.length>N)throw new r.Bo(t(`Path depth exceeds maximum limit of %s`).replace(`%s`,String(N)),`ValidationError`);let i;for(let a of n){let{files:n}=await this.getFiles({folderId:i?.id||``,itemType:`folder`}),o=n.find(e=>e.name===a);if(o){if(!o.isFolder)throw new r.Bo(t(`Path component '%s' in '%s' is not a folder`).replace(`%s`,a).replace(`%s`,e),`ValidationError`);i={id:o.id,name:o.name,parentId:o.folderId}}else{if(typeof this._dataProvider.createFolder!=`function`)throw new r.Bo(t(`Create folder operation is not supported by data provider`),`UnsupportedOperation`);i=await this.createFolder({name:a,parentId:i?.id})}}return i}getTrashFolder(){return this._findOrCreateFolderByPath(this._pathOptions.trashPath||O)}getTempFolder(){return this._findOrCreateFolderByPath(this._pathOptions.tempPath||k)}constructor(e,t={},n,r=i.m){this._dataProvider=e,this._options=t,this._pathOptions=n,this.i18n=r,B(this),this._useSoftDelete=this._pathOptions.useSoftDelete,this._rootId=this._pathOptions.rootId||D,this._enableTrash=this._options.enableTrash===void 0?!0:this._options.enableTrash,this._validateDuplicates=this._dataProvider.validateDuplicates,this._cache=new T(t.cacheStrategy||{},t.cacheStrategy?.ttl,t.cacheStrategy?.errorTtl),this.setController({invalidateItemCache:e=>{this._cache.forceInvalidate(e)},getCachedItem:e=>this._cache.getEntity(e)}),typeof this._dataProvider.clearCache!=`function`&&(this.clearCache=void 0)}setController(e){typeof this._dataProvider.setController==`function`&&this._dataProvider.setController(e)}async clearCache(e){if(typeof this._dataProvider.clearCache!=`function`){let{__:e}=this.i18n;throw new r.Bo(e(`Clear cache is not supported by data provider`),`UnsupportedOperation`)}this._cache.forceInvalidate(this._rootId),await this._dataProvider.clearCache(e)}markNextFileBlobFetchBypassHttpCache(e){this._blobFetchForceReloadOnceIds.add(this.normalizeId(e))}normalizeId(e){return!e||e===`root`||e===`folders`?this._rootId:e}_isDeletingId(e){return this._mutationRegistry.isDeleting(this.normalizeId(e))}_collectDeletingIds(e){let t=this.normalizeId(e),n=new Set([t]);if(!this._cache.getEntity(t)?.isFolder)return Array.from(n);let r=[t];for(;r.length>0;){let e=r.pop(),t=this._cache.getChildrenIds(e);for(let e of t)n.has(e)||(n.add(e),this._cache.getEntity(e)?.isFolder&&r.push(e))}return Array.from(n)}_emptyFilesResult(e,t){return{files:[],pagination:{...typeof e==`number`?{page:e}:{},...typeof t==`number`?{limit:t}:{},total:0,totalPages:1,hasNext:!1,hasPrev:!1}}}_validateName(e,t=!1){if(!e||e.trim().length===0){let e=t?`FolderInvalidName`:`FileInvalidName`,{__:n}=this.i18n;throw new r.Bo(n(t?`Folder name cannot be empty`:`File name cannot be empty`),e)}if(/[\/\\:*?"<>|]/.test(e)){let{__:n}=this.i18n,i=t?`FolderInvalidName`:`FileInvalidName`;throw new r.Bo(t?n(`Folder name contains invalid characters: %s`).replace(`%s`,e):n(`File name contains invalid characters: %s`).replace(`%s`,e),i)}}_validateTargetFolderType(e){let t=this.normalizeId(e);if(t===this._rootId)return;let n=this._cache.getEntity(t);if(n&&!n.isFolder){let{__:t}=this.i18n;throw new r.Bo(t(`Target item with id '%s' is not a folder`).replace(`%s`,e),`ValidationError`)}}_checkNameExistsInCache(e,t,n,r){let i=this.normalizeId(e),a=this._cache.getChildrenIds(i);for(let e of a){let i=this._cache.getEntity(e);if(i&&i.name===t&&!!i.isFolder===n&&(!r||i.id!==r))return!0}return!1}async _getUrl(e){if(e.url)return e.url;try{return typeof this._dataProvider?.getUrl==`function`&&this._dataProvider.getUrl(e)||``}catch{}return``}async _getThumbnailUrl(e){if(e.thumbnailUrl)return e.thumbnailUrl;try{return typeof this._dataProvider?.getThumbnailUrl==`function`&&this._dataProvider.getThumbnailUrl(e)||``}catch{}return``}_mapItem=async({childrenCount:e,...t})=>{let n=I(t);if(n.isFolder)return{...n,childCount:e,url:``,thumbnailUrl:``};let[r,i]=await Promise.all([this._getUrl(n),this._getThumbnailUrl(n)]);return{...n,childCount:0,url:r,thumbnailUrl:i}};_isAncestor(e,t){if(!t)return!1;let n=this.normalizeId(t),r=this.normalizeId(e);if(n===r)return!0;let i=this._cache.getEntity(n),a=new Set;for(;i&&i.folderId&&!a.has(i.id);){a.add(i.id);let e=this.normalizeId(i.folderId);if(e===r)return!0;if(i=this._cache.getEntity(e),!i||!i.isFolder)break}return!1}async getFile(e,t){return this._isDeletingId(e)?null:this._cache.searchByName(t,{parentId:this.normalizeId(e),caseSensitive:!0,recursive:!1,itemType:`file`})[0]||(await this.getFiles({folderId:e,itemType:`file`,search:t})).files[0]}async getFileById(e){let t=this.normalizeId(e);if(this._isDeletingId(t))return null;let n=this._cache.getFileSystemItem(t);if(n&&!n.isFolder)return await this._mapItem(n);if(!this._dataProvider.pathMode)return null;let r=await this._getFileByPathStyleId(t);if(r&&!r.isFolder){let e=I(r);return this._cache.upsertEntity(e),await this._mapItem(e)}return null}async _getFileByPathStyleId(e){let t=e.replace(/\\/g,`/`).replace(/^\/+/,``),n=t.lastIndexOf(`/`),r=n<0?``:t.slice(0,n),i=n<0?t:t.slice(n+1);return i?this.getFile(r,i):null}async getFileUrl(e,t){let n=await this.getFile(e,t);return await this._getUrl(n)||await this._getThumbnailUrl(n)||n.thumbnail}async getFiles({folderId:e,search:t,sortBy:n,sortOrder:r,page:i,limit:a,itemType:o=`all`,noFolder:s=!1}){s&&(e=(await this.getTempFolder())?.id);let c=this.normalizeId(e??this._rootId),l=this._options.enablePagination===!1,u=l?1:i,d=l?A:a,f=this._options.clientSideFilter,p=this._options.clientSideSorting,m=this._options.clientSidePaging,h=m?Math.max(1,i??1):void 0,g=m?typeof a==`number`&&Number.isFinite(a)&&a>0?a:M:void 0,_=this._emptyFilesResult(m?h:u,m?g:d);if(this._isDeletingId(c))return _;let v=this._options.unifiedCatalogFetch!==!1&&l&&(o===`folder`||o===`file`),y=v?`all`:o,b={folderId:c,itemType:y};f||(b.search=t),p||(b.sortBy=n??(y===`folder`?void 0:`date`),b.sortOrder=r??(y===`folder`?void 0:`desc`)),m||(b.page=u,b.limit=v?j:d);let x=v?j:m?void 0:d,S={folderId:c,itemType:y,search:f?void 0:t,sortBy:p?void 0:b.sortBy,sortOrder:p?void 0:b.sortOrder,page:m?void 0:u,pageSize:x},C;try{C=await this._cache.getOrCreateChildren(c,S,async(e,t)=>{let n=t.pageSize,r=n!=null&&Number.isFinite(Number(n))?Number(n):A,i=await this._dataProvider.getItems({...t,folderId:e,limit:r}),a=L(i.items);return m?{items:a,total:typeof i.pagination?.total==`number`?i.pagination.total:a.length}:{items:a,...i.pagination}})}catch(e){if(this._isDeletingId(c))return _;throw e}let w=C.items;if(v&&(o===`folder`?w=w.filter(e=>e.isFolder):o===`file`&&(w=w.filter(e=>!e.isFolder))),f){if(typeof this._options.clientSideFilter==`function`)w=this._options.clientSideFilter(w,t);else if(t){let e=t.toLowerCase();w=w.filter(t=>t.name?.toLowerCase().includes(e))}}p&&(w=typeof this._options.clientSideSorting==`function`?this._options.clientSideSorting(w,n,r):this._defaultClientSideSort(w,n,r));let T;T=m||f||v?w.length:C.total??w.length;let E=w;if(m)if(typeof this._options.clientSidePaging==`function`)E=this._options.clientSidePaging(w,h,g);else{let e=(h-1)*g,t=e+g;E=w.slice(e,t)}if(typeof this._dataProvider.getUrl==`function`||typeof this._dataProvider.getThumbnailUrl==`function`){let e=E.map(async e=>{if(e.isFolder)return e;let[t,n]=await Promise.all([e.url?Promise.resolve(e.url):typeof this._dataProvider.getUrl==`function`?this._dataProvider.getUrl(e):Promise.resolve(void 0),e.thumbnailUrl?Promise.resolve(e.thumbnailUrl):typeof this._dataProvider.getThumbnailUrl==`function`?this._dataProvider.getThumbnailUrl(e):Promise.resolve(void 0)]);return{...e,url:t,thumbnailUrl:n}});E=await Promise.all(e)}let D=m?{page:h,limit:g,total:T,totalPages:Math.max(1,Math.ceil(T/g)),hasNext:h*g<T,hasPrev:h>1}:{page:u,limit:d,total:T,...!m&&C.totalPages&&{totalPages:C.totalPages},...!m&&C.hasNextPage&&{hasNextPage:C.hasNextPage}};return{files:await Promise.all(E.map(this._mapItem)),pagination:D}}_defaultClientSideSort(e,t,n){return e.sort((e,r)=>{let i=0;switch(t){case`name`:i=(e.name||``).localeCompare(r.name||``);break;case`date`:i=new Date(e.date||0).getTime()-new Date(r.date||0).getTime();break;case`size`:i=(Number(e.size)||0)-(Number(r.size)||0);break;default:i=(e.name||``).localeCompare(r.name||``)}return n===`desc`?-i:i})}async getFileData(e,t){let n=this.normalizeId(typeof e==`string`?e:e.id),i=t;this._blobFetchForceReloadOnceIds.delete(n)&&(i={...t,forceReload:!0});let a=this._cache.getEntity(n)||(typeof e==`string`?{id:n,name:``,folderId:this._rootId,isFolder:!1}:{...e,childrenCount:e.childCount});if(typeof this._dataProvider.getFileData==`function`)return await this._dataProvider.getFileData(a,i);let{__:o}=this.i18n;if(!a.url&&typeof this._dataProvider.getUrl!=`function`)throw new r.Bo(o(`Cannot read file`),`FileReadError`);let s=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(s)return(await r.Qa(s,{config:this._pathOptions.resourceProxyConfig,standalone:this._pathOptions.isStandalone,intent:`downloadBlob`,init:i?.forceReload?{cache:`no-store`}:void 0})).blob();throw new r.Bo(o(`Unable to get file data`),`FileReadError`)}async findFileByUrl(e){let t=this._cache.searchByUrl(e);if(t)return t;if(typeof this._dataProvider.findFileByUrl==`function`)try{let t=await this._dataProvider.findFileByUrl(e);if(t){let e=I(t);return this._cache.upsertEntity(e),e}}catch{}return null}async getChildrenCount(e){if(!e)return 0;let t=this.normalizeId(e??this._rootId);return this._isDeletingId(t)?0:this._cache.getChildrenCount(t,async()=>{try{if(this._options.clientSidePaging){let e=await this.getFiles({folderId:t,itemType:`all`,page:1,limit:M});return e.pagination.total??e.files.length}let e=await this._dataProvider.getItems({folderId:t,limit:0,itemType:`all`});return e.pagination===void 0?this._options.enablePagination===!1?e.items.length:0:e.pagination.total||0}catch(e){if(this._isDeletingId(t)||this._isPathFolderNotFoundError(e))return 0;throw e}})}_isPathFolderNotFoundError(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.data?.code===`path_folder_not_found`||t.status===404||t.data?.data?.status===404}async _uploadFile(e){let t=this.normalizeId(e.folderId??this._rootId),{__:n}=this.i18n;if(typeof this._dataProvider.uploadFile!=`function`)throw new r.Bo(n(`Upload file operation is not supported by data provider`),`UnsupportedOperation`);if(this._validateName(e.name,!1),this._validateDuplicates&&this._checkNameExistsInCache(t,e.name,!1))throw new r.Bo(n(`File '%s' already exists in target folder`).replace(`%s`,e.name),`FileAlreadyExists`);let i=await this._dataProvider.uploadFile({...e,folderId:t}),a=I({name:e.name,size:e.size,...i,folderId:t});return this._cache.upsertEntity(a),a}async uploadFiles(e){let t=e.items.some(e=>e.noFolder)?await this.getTempFolder():null;e={...e,items:e.items?.map(e=>({...e,folderId:e.noFolder?t?.id:e.folderId}))};for(let t of e.items)t.folderId&&(e.folderId=t.folderId);let n=e.items||[],i=e.folderId??this._rootId,a=this.normalizeId(i);if(this._validateDuplicates){for(let e of n)if(e.name){this._validateName(e.name,!1);let t=this.normalizeId(e.folderId??a);if(this._checkNameExistsInCache(t,e.name,!1)){let{__:t}=this.i18n;throw new r.Bo(t(`File '%s' already exists in target folder`).replace(`%s`,e.name),`FileAlreadyExists`)}}}let o=this._cache.getEntity(a),s={detailed:Array(n.length),success:!0};if(typeof this._dataProvider.uploadFiles==`function`){let e=n.map(e=>({...e,folderId:this.normalizeId(e.folderId??a)}));if(s=P(await this._dataProvider.uploadFiles({folderId:a,items:e}),e=>{if(e)return{id:e.id,name:F(e.name),folderId:e.folderId}}),s.detailed&&s.detailed.length){for(let e=0;e<s.detailed.length;e++){let t=s.detailed[e];if(t&&t.success){let e=t.data,n=e?.id??t.requestId,r=I({...o,...e,folderId:e?.folderId??a});this._cache.upsertEntity(r),t.requestId=n}}s.success===void 0&&(s.success=!s.detailed.some(e=>!e.success))}else s.success=s.error?!1:!!s.success}else if(typeof this._dataProvider.uploadFile==`function`)s.detailed=await Promise.all(n.map(async e=>{let t=this.normalizeId(e.folderId??a);try{let n=await this._uploadFile({...e,folderId:t});return{requestId:n.id,data:n,success:!0}}catch(t){return{requestId:e?.id,success:!1,error:t}}})),s.success=!s.detailed.some(e=>!e.success);else throw new r.Bo(`Upload files is not supported by data provider`,`UnsupportedOperation`);if(s.success&&this._enableTrash)try{this._cache.forceInvalidate(a)}catch{}return s}async deleteFile(e){let t=this.normalizeId(e),n=[t];this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash){let e=await this.getTrashFolder();return await this.moveItem({itemId:t,targetFolderId:e.id,isFolder:!1})}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async deleteItems(e,t){let n=Array.from(new Set(e.flatMap(e=>this._collectDeletingIds(this.normalizeId(e)))));this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash&&t.permanent!==!0){let t=await this.getTrashFolder();return await this.moveItems(t.id,e)}return await this.hardDeleteItems(e,t)}finally{this._mutationRegistry.endDeleting(n)}}async hardDeleteItems(e,t){let n={success:!0,detailed:[]},i=t.permanent?null:await this.getTrashFolder();if(typeof this._dataProvider.deleteItems==`function`){if(n=P(await this._dataProvider.deleteItems(e.map(e=>this._cache.getEntity(e)),t),e=>e),n.success){let t=n.detailed||e.map(e=>({requestId:e,success:!0,error:void 0}));for(let e of t)e.success&&(i?this._cache.moveEntity(e.requestId,i.id):this._cache.deleteEntity(e.requestId))}}else typeof this._dataProvider.deleteItem==`function`&&(n.detailed=await Promise.all(e.map(async e=>{let n=this._cache.getEntity(e);if(!n){let{__:t}=this.i18n;return{requestId:e,success:!1,error:new r.Bo(t(`Item with id '%s' not found`).replace(`%s`,e),`FileNotFound`)}}try{return await this._dataProvider.deleteItem(n,t),i?this._cache.moveEntity(e,i.id):this._cache.deleteEntity(e),{requestId:e,success:!0}}catch(t){return{requestId:e,error:t,success:!1}}})),n.success=!n.detailed.some(e=>!e.success));if(n.success&&i)try{this._cache.forceInvalidate(i.id)}catch{}return n}async hardDeleteItem(e){let t=this._cache.getEntity(e);if(!t){let{__:t}=this.i18n;throw new r.Bo(t(`Item with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`)}if(typeof this._dataProvider.deleteItem!=`function`){let{__:e}=this.i18n;throw new r.Bo(e(`Delete item operation is not supported by data provider`),`DeleteNotAllowed`)}if(await this._dataProvider.deleteItem(t,{permanent:!0}),this._cache.deleteEntity(e),this._enableTrash)try{let e=await this.getTrashFolder();e&&this._cache.forceInvalidate(e.id)}catch{}return!0}async cleanTrash(){let{__:e}=this.i18n;if(!this._enableTrash)throw new r.Bo(e(`Trash is not enabled`),`UnsupportedOperation`);if(typeof this._dataProvider.cleanTrash==`function`){let e=await this._dataProvider.cleanTrash();try{let e=await this.getTrashFolder();e&&this._cache.forceInvalidate(e.id)}catch{}return e}throw new r.Bo(e(`Clean trash is not supported by data provider`),`UnsupportedOperation`)}async createFolder({name:e,parentId:t,is_force_create:n}){let i=this.normalizeId(t??this._rootId);if(this._validateName(e,!0),this._validateDuplicates&&this._checkNameExistsInCache(i,e,!0)){let{__:t}=this.i18n;throw new r.Bo(t(`Folder '%s' already exists in parent folder`).replace(`%s`,e),`FolderAlreadyExists`)}let a=await this._dataProvider.createFolder(e,i,n),o=I({id:a.id,folderId:i,name:a.name,isFolder:!0,childrenCount:a.childrenCount});return this._cache.upsertEntity(o),{...a,name:o.name}}async deleteFolder(e){let t=this.normalizeId(e),n=this._collectDeletingIds(t);this._mutationRegistry.beginDeleting(n);try{if(this._useSoftDelete&&this._enableTrash)try{let e=await this.getTrashFolder();return await this.moveItem({itemId:t,targetFolderId:e.id,isFolder:!0})?(this._cache.deleteFolderRecursive(t),!0):!1}catch{return await this.hardDeleteItem(t)}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async renameFolder(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.renameItem!=`function`)throw new r.Bo(n(`Rename folder is not supported`),`RenameNotAllowed`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Bo(n(`Folder with id '%s' not found in cache`).replace(`%s`,e),`FolderNotFound`);if(this._validateName(t,!0),this._validateDuplicates){let e=this.normalizeId(a.folderId);if(this._checkNameExistsInCache(e,t,!0,i))throw new r.Bo(n(`Folder '%s' already exists in parent folder`).replace(`%s`,t),`FolderAlreadyExists`)}let o=R(await this._dataProvider.renameItem(a,t));return this._cache.upsertEntity(I({...this._cache.getEntity(o.id),...o})),this._cache.getEntity(o.id)}async renameFile(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.renameItem!=`function`)throw new r.Bo(n(`Rename file is not supported`),`RenameNotAllowed`);let i=this._cache.getEntity(e);if(!i)throw new r.Bo(n(`File with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`);let a=this.normalizeId(e);if(this._validateName(t,!1),this._validateDuplicates){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,t,!1,a))throw new r.Bo(n(`File '%s' already exists in parent folder`).replace(`%s`,t),`FileAlreadyExists`)}let o=R(await this._dataProvider.renameItem(i,t));return o&&this._cache.upsertEntity(I({...this._cache.getEntity(a),...o})),this._cache.getEntity(a)}async moveItem({itemId:e,targetFolderId:t,isFolder:n}){if(typeof this._dataProvider.moveItem!=`function`){let{__:e}=this.i18n;throw new r.Bo(e(`Move item operation is not supported by data provider`),`MoveNotAllowed`)}let i=this.normalizeId(t);this._validateTargetFolderType(t);let a=this._cache.getEntity(e);if(!a){let t=R(await this._dataProvider.moveItem({id:e,folderId:i,isFolder:n},i));if(t.id===e)this._cache.upsertEntity(I({...t,folderId:i}));else{try{this._cache.deleteEntity(e)}catch{}this._cache.upsertEntity(I({...t,folderId:i}))}return!0}let{__:o}=this.i18n;if(a.isFolder){if(e===i)throw new r.Bo(o(`Cannot move folder into itself`),`MoveIntoSelf`);if(this._isAncestor(e,i))throw new r.Bo(o(`Cannot move folder into its descendant`),`MoveIntoDescendant`)}if(this._validateDuplicates&&i!==this.normalizeId(a.folderId)&&a.name&&this._checkNameExistsInCache(i,a.name,!!a.isFolder,e)){let e=a.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.Bo(`${a.isFolder?`Folder`:`File`} '${a.name}' already exists in target folder`,e)}let s=R(await this._dataProvider.moveItem(a,i));if(s.id===e){let t=this._cache.moveEntity(e,i);return this._cache.upsertEntity(I({...t,...s})),!0}else{let t=this._cache.deleteEntity(e);return this._cache.upsertEntity(I({...t,...s,folderId:i})),!0}}async moveItems(e,t){let n=this.normalizeId(e);this._validateTargetFolderType(e);let i=t.map(e=>this._cache.getEntity(e));for(let e of i)if(e){if(e.isFolder){let{__:t}=this.i18n;if(e.id===n)throw new r.Bo(t(`Cannot move folder '%s' into itself`).replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,n))throw new r.Bo(t(`Cannot move folder '%s' into its descendant`).replace(`%s`,e.name),`MoveIntoDescendant`)}if(this._validateDuplicates&&n!==this.normalizeId(e.folderId)&&e.name&&this._checkNameExistsInCache(n,e.name,!!e.isFolder,e.id)){let t=e.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.Bo(`${e.isFolder?`Folder`:`File`} '${e.name}' already exists in target folder`,t)}}let a={detailed:Array(i.length),success:!0};if(typeof this._dataProvider.moveItems==`function`)a=P(await this._dataProvider.moveItems(i,n),e=>e);else if(typeof this._dataProvider.moveItem==`function`)a.detailed=await Promise.all(t.map(async(e,t)=>{let r=i[t]||{id:e,folderId:null,isFolder:!1,name:e};try{return{requestId:e,data:R(await this._dataProvider.moveItem(r,n)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new r.Bo(`Move items is not supported`,`MoveNotAllowed`);if(a.success){let e=a.detailed||t.map(e=>({requestId:e,success:!0,data:void 0}));for(let t of e)if(t.success)if(!t.data||t.data.id===t.requestId)this._cache.moveEntity(t.requestId,n),t.data&&this._cache.upsertEntity(I({...this._cache.getEntity(t.requestId),...t.data,folderId:n}));else{let e=this._cache.deleteEntity(t.requestId);this._cache.upsertEntity(I({...e,...t.data,folderId:n}))}return a}else{let{__:e}=this.i18n;return{success:!1,error:a.error||new r.Bo(e(`Move items failed`),`MoveNotAllowed`)}}}async copyItem({itemId:e,targetFolderId:t}){if(typeof this._dataProvider.copyItem!=`function`){let{__:e}=this.i18n;throw new r.Bo(e(`Copy item is not supported`),`CopyNotAllowed`)}let n=this.normalizeId(t);this._validateTargetFolderType(t);let i=this._cache.getEntity(e);if(!i){let t=R(await this._dataProvider.copyItem({id:e,folderId:n},n));return this._cache.copyEntity(e,n,t.id),this._cache.upsertEntity(I({...t,folderId:n})),!0}if(this._validateDuplicates&&i.name){let t=n===this.normalizeId(i.folderId)?e:void 0;if(this._checkNameExistsInCache(n,i.name,!!i.isFolder,t)){let e=i.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.Bo(`${i.isFolder?`Folder`:`File`} '${i.name}' already exists in target folder`,e)}}let a=R(await this._dataProvider.copyItem(i,n));return this._cache.copyEntity(e,n,a.id,{...a,folderId:n})||this._cache.upsertEntity(I({...a,folderId:n})),!0}async copyItems(e,t){let n=this.normalizeId(e);this._validateTargetFolderType(e);let i=t.map(e=>typeof e==`string`?{id:e}:e),a=i.map(e=>e.id),o=a.map((e,t)=>{let n=this._cache.getEntity(e),r=i[t]?.newName;return n?r?{...n,name:r}:n:void 0});if(this._validateDuplicates)for(let e=0;e<o.length;e++){let t=o[e];if(t&&t.name){let i=n===this.normalizeId(t.folderId)?a[e]:void 0;if(this._checkNameExistsInCache(n,t.name,!!t.isFolder,i)){let e=t.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new r.Bo(`${t.isFolder?`Folder`:`File`} '${t.name}' already exists in target folder`,e)}}}let s={detailed:Array(o.length),success:!0};if(typeof this._dataProvider.copyItems==`function`)s=P(await this._dataProvider.copyItems(o,n),e=>e);else if(typeof this._dataProvider.copyItem==`function`)s.detailed=await Promise.all(a.map(async(e,t)=>{let r=o[t]||{id:e,folderId:null,isFolder:!1};try{return{requestId:e,data:R(await this._dataProvider.copyItem(r,n)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else{let{__:e}=this.i18n;throw new r.Bo(e(`Copy items is not supported`),`CopyNotAllowed`)}if(s.success&&s.detailed)for(let e=0,t=s.detailed.length;e<t;e++){let t=s.detailed[e];if(t.success&&t.data?.id){let e=t.data.folderId||n;!this._cache.copyEntity(t.requestId,e,t.data.id,{...t.data,folderId:e})&&t.data&&this._cache.upsertEntity(I({...t.data,folderId:e}))}}else if(!s.detailed)throw new r.Bo(`batchResult in copy method must have detailed results`,`ValidationError`);return s}async uploadFileByUrl(e){if(e.noFolder){let t=await this.getTempFolder();e={...e,folderId:t.id}}let t=this.normalizeId(e.folderId??this._rootId);try{let n=I({...await this._dataProvider.uploadFileByUrl(e.url,t,{eventSource:e.eventSource}),folderId:t});return this._cache.upsertEntity(n),n}catch(e){throw e}}async updateFile(e,t){let{__:n}=this.i18n;if(typeof this._dataProvider.updateFile!=`function`)throw new r.Bo(n(`Update file is not supported`),`UnsupportedOperation`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Bo(n(`File with id '%s' not found in cache`).replace(`%s`,e),`FileNotFound`);if(t.name&&t.name!==a.name&&this._validateName(t.name,!1),this._validateDuplicates&&t.name&&t.name!==a.name){let e=this.normalizeId(a.folderId);if(this._checkNameExistsInCache(e,t.name,!1,i))throw new r.Bo(n(`File '%s' already exists in parent folder`).replace(`%s`,t.name),`FileAlreadyExists`)}let o=R(await this._dataProvider.updateFile(a,{...t}));return this._cache.upsertEntity(I({...this._cache.getEntity(i),...o,...t})),this._cache.getEntity(i)}};Object.defineProperty(t,"i",{enumerable:!0,get:function(){return a}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return V}})});