@emailmaker/emailmaker 1.1.24 → 1.1.26

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 (33) hide show
  1. package/{emailmaker-core.89101e30.js → emailmaker-core.775637a9.js} +1 -1
  2. package/emailmaker-esm.js +129 -11
  3. package/emailmaker.js +148 -24
  4. package/iframe/js/amp.BbapYQ7c.js +1 -1
  5. package/iframe/js/iframe-eblock.js +1 -1
  6. package/iframe/js/iframe.js +1 -1
  7. package/iframe/js/rules.CNqvmp_P.js +1 -1
  8. package/package.json +1 -1
  9. package/singlepage_headless_plugin.html +1 -1
  10. package/static/core/2644e7d3.js +1 -0
  11. package/static/core/265a0618.js +51 -0
  12. package/static/core/{8202e0f8.js → 4da0e58b.js} +1 -1
  13. package/static/core/{313b4001.js → 6722afef.js} +2 -2
  14. package/static/core/{7ff62923.js → 6c2b8cb5.js} +1 -1
  15. package/static/core/79109d5b.js +78 -0
  16. package/static/core/{20f9532b.js → 7eebfbce.js} +1 -1
  17. package/static/core/{ce528e2c.js → 8bfabb4b.js} +1 -1
  18. package/static/core/{28fbe0b6.js → a215ed6f.js} +37 -38
  19. package/static/core/{39c9310d.js → a3e9b2eb.js} +1 -1
  20. package/static/core/{18ba331f.js → c00287f4.js} +1 -1
  21. package/static/core/{873a79c1.js → ca5b168d.js} +1 -1
  22. package/static/core/{52228076.js → d5fdc4a4.js} +1 -1
  23. package/static/core/{9bc6d2d5.js → d80716fa.js} +1 -1
  24. package/static/esm/e2baef14.js +1 -0
  25. package/two_step_headless_plugin.html +1 -1
  26. package/webpack/index.cjs +21 -3
  27. package/webpack/index.js +21 -3
  28. package/static/core/7efc3bcb.js +0 -51
  29. package/static/core/8194155c.js +0 -1
  30. package/static/core/f99ffa93.js +0 -78
  31. package/static/esm/6efa3ebe.js +0 -1
  32. /package/iframe/{iframe-eblock.89101e30.html → iframe-eblock.775637a9.html} +0 -0
  33. /package/iframe/{iframe.89101e30.html → iframe.775637a9.html} +0 -0
@@ -1 +1 @@
1
- __emailmaker__.define(`static/core/52228076.js`,[`require`,`exports`,`module`,`static/core/7efc3bcb.js`],function(e,t,n){let r=e("./7efc3bcb.js");var i=r.oi({invalidateBlockId:null,isCodeMode:!1,codeModeDirection:`right`,editorThemeColor:`light`,isSettingsDisabled:!1,settings:{width:``},elementSettings:{},searchFilters:{},block:{id:void 0,isNew:!1,subject:``,description:``,html:``,project:void 0,project_title:``,project_author:void 0,tags:[],type:`Other`,title:null,isAmp:!1},monacoDidMount:!1}),a=`blockSlice`,o=r.Ai({name:a,initialState:i,reducers:{switchCodeMode:e=>{e.isCodeMode=!e.isCodeMode},setEditorThemeColor:(e,t)=>{e.editorThemeColor=t.payload},setBlockSettings:(e,t)=>{Object.assign(e,{...e,settings:t.payload,isSettingsDisabled:!1})},setBlockSettingsDisable:(e,t)=>{e.isSettingsDisabled=t.payload},setElementSettings:(e,t)=>{e.elementSettings=t.payload},setSearchFilters:(e,t)=>{e.searchFilters=t.payload},setBlockHtml:(e,t)=>{e.block.html=t.payload},resetBlockSlice:()=>i,setBlockIsAmp:(e,t)=>{e.block.isAmp=t.payload}},extraReducers:e=>{e.addMatcher(e=>e.type===`blocksApi/queries/queryResultPatched`,(e,t)=>{let n=t.payload.queryCacheKey.match(/\(([0-9]+)\)/),r=t.payload?.patches[0];if(r?.path?.[0]&&(e.block[r?.path[0]]=r.value),n?.[1]&&(e.invalidateBlockId=n[1]),t.payload.queryCacheKey.startsWith(`getBlock`)){let n=t.payload?.patches[0];n?.path?.[0]&&(e.block[n?.path[0]]=n.value)}}),e.addMatcher(e=>e.type===`blocksApi/invalidateTags`,(e,t)=>{if(t.payload[0].id===+e.invalidateBlockId)return{...i,isCodeMode:e?.isCodeMode,codeModeDirection:e.codeModeDirection}}),e.addMatcher(r.Hn.endpoints.editBlock.matchFulfilled,(e,{payload:t})=>{e.invalidateBlockId=null,e.block={...e.block,...t,renderGuid:e.block.renderGuid}}),e.addMatcher(r.Hn.endpoints.autoSaveBlock.matchFulfilled,(e,t)=>{e?.block.id?.toString()===t.payload.id?.toString()&&(e.block.html=t.payload.html)}),e.addMatcher(r.Hn.endpoints.getBlock.matchFulfilled,(e,{payload:t})=>{e.block={...i.block,...t}})}}),{switchCodeMode:s,setEditorThemeColor:c,setBlockSettings:l,setElementSettings:u,setBlockSettingsDisable:d,setSearchFilters:f,setBlockHtml:p,resetBlockSlice:m,setBlockIsAmp:h}=o.actions,g=e=>e[a].block,_=e=>e[a].isCodeMode,v=e=>e[a].settings,y=e=>e[a].searchFilters,b=e=>e[a].elementSettings,x=e=>e[a].editorThemeColor,S=e=>e[a].isSettingsDisabled,C=r.oi({isCollapsed:!0,isMonacoFocusing:!1}),w=`defaultModePanesSlice`,T=r.Ai({name:w,initialState:C,reducers:{setMonacoFocusing:(e,t)=>{e.isMonacoFocusing=t.payload},resetPanes:()=>C}}),{resetPanes:E,setMonacoFocusing:D}=T.actions,O=e=>e[w].isMonacoFocusing;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return u}}),Object.defineProperty(t,"a",{enumerable:!0,get:function(){return o}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return y}}),Object.defineProperty(t,"d",{enumerable:!0,get:function(){return b}}),Object.defineProperty(t,"f",{enumerable:!0,get:function(){return _}}),Object.defineProperty(t,"g",{enumerable:!0,get:function(){return c}}),Object.defineProperty(t,"h",{enumerable:!0,get:function(){return d}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return D}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return v}}),Object.defineProperty(t,"m",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(t,"p",{enumerable:!0,get:function(){return S}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return O}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return g}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"u",{enumerable:!0,get:function(){return x}}),Object.defineProperty(t,"v",{enumerable:!0,get:function(){return f}})});
1
+ __emailmaker__.define(`static/core/d5fdc4a4.js`,[`require`,`exports`,`module`,`static/core/265a0618.js`],function(e,t,n){let r=e("./265a0618.js");var i=r.oi({invalidateBlockId:null,isCodeMode:!1,codeModeDirection:`right`,editorThemeColor:`light`,isSettingsDisabled:!1,settings:{width:``},elementSettings:{},searchFilters:{},block:{id:void 0,isNew:!1,subject:``,description:``,html:``,project:void 0,project_title:``,project_author:void 0,tags:[],type:`Other`,title:null,isAmp:!1},monacoDidMount:!1}),a=`blockSlice`,o=r.Ai({name:a,initialState:i,reducers:{switchCodeMode:e=>{e.isCodeMode=!e.isCodeMode},setEditorThemeColor:(e,t)=>{e.editorThemeColor=t.payload},setBlockSettings:(e,t)=>{Object.assign(e,{...e,settings:t.payload,isSettingsDisabled:!1})},setBlockSettingsDisable:(e,t)=>{e.isSettingsDisabled=t.payload},setElementSettings:(e,t)=>{e.elementSettings=t.payload},setSearchFilters:(e,t)=>{e.searchFilters=t.payload},setBlockHtml:(e,t)=>{e.block.html=t.payload},resetBlockSlice:()=>i,setBlockIsAmp:(e,t)=>{e.block.isAmp=t.payload}},extraReducers:e=>{e.addMatcher(e=>e.type===`blocksApi/queries/queryResultPatched`,(e,t)=>{let n=t.payload.queryCacheKey.match(/\(([0-9]+)\)/),r=t.payload?.patches[0];if(r?.path?.[0]&&(e.block[r?.path[0]]=r.value),n?.[1]&&(e.invalidateBlockId=n[1]),t.payload.queryCacheKey.startsWith(`getBlock`)){let n=t.payload?.patches[0];n?.path?.[0]&&(e.block[n?.path[0]]=n.value)}}),e.addMatcher(e=>e.type===`blocksApi/invalidateTags`,(e,t)=>{if(t.payload[0].id===+e.invalidateBlockId)return{...i,isCodeMode:e?.isCodeMode,codeModeDirection:e.codeModeDirection}}),e.addMatcher(r.Hn.endpoints.editBlock.matchFulfilled,(e,{payload:t})=>{e.invalidateBlockId=null,e.block={...e.block,...t,renderGuid:e.block.renderGuid}}),e.addMatcher(r.Hn.endpoints.autoSaveBlock.matchFulfilled,(e,t)=>{e?.block.id?.toString()===t.payload.id?.toString()&&(e.block.html=t.payload.html)}),e.addMatcher(r.Hn.endpoints.getBlock.matchFulfilled,(e,{payload:t})=>{e.block={...i.block,...t}})}}),{switchCodeMode:s,setEditorThemeColor:c,setBlockSettings:l,setElementSettings:u,setBlockSettingsDisable:d,setSearchFilters:f,setBlockHtml:p,resetBlockSlice:m,setBlockIsAmp:h}=o.actions,g=e=>e[a].block,_=e=>e[a].isCodeMode,v=e=>e[a].settings,y=e=>e[a].searchFilters,b=e=>e[a].elementSettings,x=e=>e[a].editorThemeColor,S=e=>e[a].isSettingsDisabled,C=r.oi({isCollapsed:!0,isMonacoFocusing:!1}),w=`defaultModePanesSlice`,T=r.Ai({name:w,initialState:C,reducers:{setMonacoFocusing:(e,t)=>{e.isMonacoFocusing=t.payload},resetPanes:()=>C}}),{resetPanes:E,setMonacoFocusing:D}=T.actions,O=e=>e[w].isMonacoFocusing;Object.defineProperty(t,"_",{enumerable:!0,get:function(){return u}}),Object.defineProperty(t,"a",{enumerable:!0,get:function(){return o}}),Object.defineProperty(t,"c",{enumerable:!0,get:function(){return y}}),Object.defineProperty(t,"d",{enumerable:!0,get:function(){return b}}),Object.defineProperty(t,"f",{enumerable:!0,get:function(){return _}}),Object.defineProperty(t,"g",{enumerable:!0,get:function(){return c}}),Object.defineProperty(t,"h",{enumerable:!0,get:function(){return d}}),Object.defineProperty(t,"i",{enumerable:!0,get:function(){return D}}),Object.defineProperty(t,"l",{enumerable:!0,get:function(){return v}}),Object.defineProperty(t,"m",{enumerable:!0,get:function(){return l}}),Object.defineProperty(t,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(t,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(t,"p",{enumerable:!0,get:function(){return S}}),Object.defineProperty(t,"r",{enumerable:!0,get:function(){return O}}),Object.defineProperty(t,"s",{enumerable:!0,get:function(){return g}}),Object.defineProperty(t,"t",{enumerable:!0,get:function(){return T}}),Object.defineProperty(t,"u",{enumerable:!0,get:function(){return x}}),Object.defineProperty(t,"v",{enumerable:!0,get:function(){return f}})});
@@ -1 +1 @@
1
- __emailmaker__.define(`static/core/9bc6d2d5.js`,[`require`,`exports`,`module`,`static/core/7efc3bcb.js`,`static/core/313b4001.js`],function(e,t,n){let r=e("./7efc3bcb.js"),i=e("./313b4001.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.Vo();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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(o(`Cannot read file`),`FileReadError`);let s=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(s)return(await r.Ya(s,{config:this._pathOptions.resourceProxyConfig,standalone:this._pathOptions.isStandalone,intent:`downloadBlob`,init:i?.forceReload?{cache:`no-store`}:void 0})).blob();throw new r.Ro(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.Ro(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.Ro(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.Ro(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.Ro(`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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(n(`Rename folder is not supported`),`RenameNotAllowed`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Ro(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.Ro(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.Ro(n(`Rename file is not supported`),`RenameNotAllowed`);let i=this._cache.getEntity(e);if(!i)throw new r.Ro(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.Ro(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.Ro(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.Ro(o(`Cannot move folder into itself`),`MoveIntoSelf`);if(this._isAncestor(e,i))throw new r.Ro(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.Ro(`${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.Ro(t(`Cannot move folder '%s' into itself`).replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,n))throw new r.Ro(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.Ro(`${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.Ro(`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.Ro(e(`Move items failed`),`MoveNotAllowed`)}}}async copyItem({itemId:e,targetFolderId:t}){if(typeof this._dataProvider.copyItem!=`function`){let{__:e}=this.i18n;throw new r.Ro(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.Ro(`${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.Ro(`${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.Ro(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.Ro(`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.Ro(n(`Update file is not supported`),`UnsupportedOperation`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Ro(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.Ro(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/d80716fa.js`,[`require`,`exports`,`module`,`static/core/265a0618.js`,`static/core/6722afef.js`],function(e,t,n){let r=e("./265a0618.js"),i=e("./6722afef.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.Vo();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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(o(`Cannot read file`),`FileReadError`);let s=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(s)return(await r.Ya(s,{config:this._pathOptions.resourceProxyConfig,standalone:this._pathOptions.isStandalone,intent:`downloadBlob`,init:i?.forceReload?{cache:`no-store`}:void 0})).blob();throw new r.Ro(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.Ro(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.Ro(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.Ro(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.Ro(`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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(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.Ro(n(`Rename folder is not supported`),`RenameNotAllowed`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Ro(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.Ro(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.Ro(n(`Rename file is not supported`),`RenameNotAllowed`);let i=this._cache.getEntity(e);if(!i)throw new r.Ro(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.Ro(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.Ro(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.Ro(o(`Cannot move folder into itself`),`MoveIntoSelf`);if(this._isAncestor(e,i))throw new r.Ro(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.Ro(`${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.Ro(t(`Cannot move folder '%s' into itself`).replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,n))throw new r.Ro(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.Ro(`${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.Ro(`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.Ro(e(`Move items failed`),`MoveNotAllowed`)}}}async copyItem({itemId:e,targetFolderId:t}){if(typeof this._dataProvider.copyItem!=`function`){let{__:e}=this.i18n;throw new r.Ro(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.Ro(`${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.Ro(`${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.Ro(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.Ro(`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.Ro(n(`Update file is not supported`),`UnsupportedOperation`);let i=this.normalizeId(e),a=this._cache.getEntity(i);if(!a)throw new r.Ro(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.Ro(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}})});
@@ -0,0 +1 @@
1
+ import{d as e,s as t}from"./b9d66884.js";import"@emailmaker/emailmaker/runtime/react";function n(e){if(e instanceof DOMException&&e.name===`AbortError`)return e;let t=e===void 0?`The operation was aborted.`:typeof e==`string`?e:e instanceof Error?e.message:String(e);return new DOMException(t,`AbortError`)}function r(e){if(e?.aborted)throw n(e.reason)}function i(e,t){return t?(r(t),new Promise((r,i)=>{let a=()=>{o(),i(n(t.reason))},o=()=>{t.removeEventListener(`abort`,a)};t.addEventListener(`abort`,a),e.then(e=>{o(),r(e)},e=>{o(),i(e)})})):e}function a(e){return typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(e):e.replace(/([^a-zA-Z0-9_-])/g,`\\$1`)}function o(e,t=document){try{let n=t.querySelector(e);if(n)return n}catch{return null}let n=t.querySelectorAll(`*`);for(let t=0;t<n.length;t++){let r=n[t]?.shadowRoot;if(!r)continue;let i=o(e,r);if(i)return i}return null}function s(e,t=[]){let n=e.querySelectorAll(`*`);for(let e=0;e<n.length;e++){let r=n[e]?.shadowRoot;r&&(t.push(r),s(r,t))}return t}function c(e,t,r){if(e.isConnected)return e;let i=e.id?.trim();return i?l(`#${a(i)}`,t,r):Promise.reject(n(`Editor mount element was disconnected and has no id — pass a CSS selector or call init() again after the host remounts the container.`))}function l(t,i,a){if(r(a),t!==void 0){if(typeof t==`string`){let r=t,c=o(r);if(c)return c;let l=i.addDisposable(new e);return new Promise((e,t)=>{let i=e=>{l.dispose(),e()},c=()=>{i(()=>t(n(a?.reason)))};if(a?.aborted){c();return}a?.addEventListener(`abort`,c),l.addDispose(()=>a?.removeEventListener(`abort`,c));let u=document.body??document.documentElement;if(!u){i(()=>t(n(`Document is not ready to observe mount element`)));return}let d=new Set,f=new MutationObserver(()=>{let t=o(r);if(t){i(()=>e(t));return}m()}),p=e=>{d.has(e)||(d.add(e),f.observe(e,{attributes:!0,childList:!0,subtree:!0}))},m=()=>{let e=document.documentElement;if(e)for(let t of s(e))p(t)};p(u),m(),l.addDispose(()=>f.disconnect())})}return t instanceof Element?c(t,i,a):t}return t}var u=new Map;t(`ELEMENT_INSERT_HTML_PIPELINE`),t(`BLOCK_INSERT_HTML_PIPELINE`),t(`DomComponentRegistry`),t(`ComponentRegistry`);function d(e){return t(e)}var f;(function(e){e.BEFORE_SAVE_EMAIL=d(),e.ON_SAVEBUTTON_CLICK_ID=d(),e.ON_NEXTBUTTON_CLICK_ID=d(),e.ON_PREVIOUSBUTTON_CLICK_ID=d(),e.ON_MODEL_CHANGE=d(),e.WILL_EMAIL_INIT_ID=d(),e.ON_EMAIL_INIT_ID=d(),e.ON_BLOCK_INIT_ID=d(),e.ON_CONTENT_CHANGED_ID=d(),e.ON_PREHEADER_CHANGED_ID=d(),e.ON_SUBJECT_CHANGED_ID=d(),e.ON_EMAIL_CHANGED_ID=d(),e.ON_BLOCK_CHANGED_ID=d(),e.ON_CHUNKS_LOADED=d(),e.ON_SEND_TESTEMAIL_ID=d(),e.ON_SEND_LIVEPREVIEW_ID=d(),e.ON_SHARE_ID=d(),e.ON_SHOW_PREVIEW_ID=d(),e.ON_EMAIL_CLONE_ID=d(),e.ON_SEND_EMAIL_MODAL_ID=d(),e.ON_NOTIFICATION=d(),e.READ_LOCALE=d(),e.ON_TRANSLATE_ID=d(),e.ON_CODE_VALIDATE_ID=d(),e.UPLOAD_EVENT_ID=d(),e.PROXY_URL_EVENT_ID=d(),e.FILE_PROXY_EVENT_ID=d(),e.ON_LIMIT_ID=d(),e.ON_BROWSER_EXTENSION_DETECTED_ID=d(),e.ON_BROWSER_TRANSLATE_DETECTED_ID=d()})(f||={}),t(),t(),t(`InitPipelineContext`),t(),t(),t(),t(),t(),t(),t(`PluginCollection`),d(`APP_LOAD_EVENT`),d(`CONFIG_CHANGED_EVENT`);export{r as a,i,l as n,n as r,u as t};
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <title>Two-step flow: design → subject/preheader (headless)</title>
6
- <script id="plugin-script" type="text/javascript" src="emailmaker.js?89101e30"></script>
6
+ <script id="plugin-script" type="text/javascript" src="emailmaker.js?775637a9"></script>
7
7
  <style>
8
8
  body {
9
9
  margin: 0;
package/webpack/index.cjs CHANGED
@@ -31,6 +31,25 @@ function toPascalCase(str) {
31
31
  //#endregion
32
32
  //#region src/shared/hostBootstrap.ts
33
33
  /**
34
+ * Joins an integrator-provided `publicPath` prefix with the product `outputFolder`
35
+ * into the contractual runtime `publicPath` (always trailing-slash terminated).
36
+ *
37
+ * Unlike `path.posix.join`, this preserves the `//` in absolute URLs
38
+ * (`http://localhost:3032` must NOT collapse to `http:/localhost:3032`), so an
39
+ * absolute origin passed in Vite `serve`/`build` reaches the runtime intact.
40
+ *
41
+ * - No `publicPath`: keeps the leading-slash semantics of `outputFolder`
42
+ * (`/product` -> `/product/`, resolved against the host `document.baseURI`).
43
+ * - With `publicPath`: `http://host:3032` + `/product` -> `http://host:3032/product/`.
44
+ */
45
+ function joinHostPublicPath(publicPath, outputFolder, defaultOutputFolder) {
46
+ const folder = outputFolder != null && outputFolder !== "" ? String(outputFolder) : defaultOutputFolder;
47
+ const base = String(publicPath || "").replace(/\/+$/, "");
48
+ if (!base) return `${folder.replace(/\/+$/, "")}/`;
49
+ const segment = folder.replace(/^\/+/, "").replace(/\/+$/, "");
50
+ return `${(segment ? `${base}/${segment}` : base).replace(/\/+$/, "")}/`;
51
+ }
52
+ /**
34
53
  * Host plugin bootstrap: sets contractual `window.__ns__.publicPath` (e.g. `/product/`)
35
54
  * before product entry runs. Publish bootstrap uses script/meta detection only when
36
55
  * `publicPath` is still unset — plugin-dev must rely on host prepend, not detection.
@@ -106,7 +125,7 @@ var BUNDLER_DEFAULT_APP_NAME = "emailmaker";
106
125
  var PLUGIN_NAME = `${toPascalCase(BUNDLER_DEFAULT_APP_NAME)}WebpackPlugin`;
107
126
  var PACKAGE_ENTRY_NAME = `${BUNDLER_DEFAULT_APP_NAME}.js`;
108
127
  var ESM_PACKAGE_ENTRY_NAME = `${BUNDLER_DEFAULT_APP_NAME}-esm.js`;
109
- var DEFAULT_OUTPUT_FOLDER = BUNDLER_DEFAULT_APP_NAME;
128
+ var DEFAULT_OUTPUT_FOLDER = `/${BUNDLER_DEFAULT_APP_NAME}`;
110
129
  var DEFAULT_MODULES_PATH = "node_modules";
111
130
  var DEFAULT_STARTUP_PREFETCH_MODE = "eager";
112
131
  var ENVIRONMENT_VARIABLE = `__${BUNDLER_DEFAULT_APP_NAME}__`;
@@ -189,8 +208,7 @@ var WebpackPlugin = class {
189
208
  apply(compiler) {
190
209
  const rawPub = compiler.options.output.publicPath;
191
210
  const optionsPublicPath = typeof rawPub === "string" ? rawPub : "";
192
- const publicPath = this._publicPath === void 0 ? optionsPublicPath : this._publicPath;
193
- const initFragment = createInitFragment(ENVIRONMENT_VARIABLE, publicPath + (publicPath.endsWith("/") ? "" : "/") + this._outputFolder + "/", this._startupPrefetchMode);
211
+ const initFragment = createInitFragment(ENVIRONMENT_VARIABLE, joinHostPublicPath(this._publicPath === void 0 ? optionsPublicPath : this._publicPath, this._outputFolder, DEFAULT_OUTPUT_FOLDER), this._startupPrefetchMode);
194
212
  const webpack = compiler.webpack;
195
213
  const javascript = webpack.javascript;
196
214
  this._sources = webpack.sources;
package/webpack/index.js CHANGED
@@ -7,6 +7,25 @@ function toPascalCase(str) {
7
7
  //#endregion
8
8
  //#region src/shared/hostBootstrap.ts
9
9
  /**
10
+ * Joins an integrator-provided `publicPath` prefix with the product `outputFolder`
11
+ * into the contractual runtime `publicPath` (always trailing-slash terminated).
12
+ *
13
+ * Unlike `path.posix.join`, this preserves the `//` in absolute URLs
14
+ * (`http://localhost:3032` must NOT collapse to `http:/localhost:3032`), so an
15
+ * absolute origin passed in Vite `serve`/`build` reaches the runtime intact.
16
+ *
17
+ * - No `publicPath`: keeps the leading-slash semantics of `outputFolder`
18
+ * (`/product` -> `/product/`, resolved against the host `document.baseURI`).
19
+ * - With `publicPath`: `http://host:3032` + `/product` -> `http://host:3032/product/`.
20
+ */
21
+ function joinHostPublicPath(publicPath, outputFolder, defaultOutputFolder) {
22
+ const folder = outputFolder != null && outputFolder !== "" ? String(outputFolder) : defaultOutputFolder;
23
+ const base = String(publicPath || "").replace(/\/+$/, "");
24
+ if (!base) return `${folder.replace(/\/+$/, "")}/`;
25
+ const segment = folder.replace(/^\/+/, "").replace(/\/+$/, "");
26
+ return `${(segment ? `${base}/${segment}` : base).replace(/\/+$/, "")}/`;
27
+ }
28
+ /**
10
29
  * Host plugin bootstrap: sets contractual `window.__ns__.publicPath` (e.g. `/product/`)
11
30
  * before product entry runs. Publish bootstrap uses script/meta detection only when
12
31
  * `publicPath` is still unset — plugin-dev must rely on host prepend, not detection.
@@ -82,7 +101,7 @@ var BUNDLER_DEFAULT_APP_NAME = "emailmaker";
82
101
  var PLUGIN_NAME = `${toPascalCase(BUNDLER_DEFAULT_APP_NAME)}WebpackPlugin`;
83
102
  var PACKAGE_ENTRY_NAME = `${BUNDLER_DEFAULT_APP_NAME}.js`;
84
103
  var ESM_PACKAGE_ENTRY_NAME = `${BUNDLER_DEFAULT_APP_NAME}-esm.js`;
85
- var DEFAULT_OUTPUT_FOLDER = BUNDLER_DEFAULT_APP_NAME;
104
+ var DEFAULT_OUTPUT_FOLDER = `/${BUNDLER_DEFAULT_APP_NAME}`;
86
105
  var DEFAULT_MODULES_PATH = "node_modules";
87
106
  var DEFAULT_STARTUP_PREFETCH_MODE = "eager";
88
107
  var ENVIRONMENT_VARIABLE = `__${BUNDLER_DEFAULT_APP_NAME}__`;
@@ -165,8 +184,7 @@ var WebpackPlugin = class {
165
184
  apply(compiler) {
166
185
  const rawPub = compiler.options.output.publicPath;
167
186
  const optionsPublicPath = typeof rawPub === "string" ? rawPub : "";
168
- const publicPath = this._publicPath === void 0 ? optionsPublicPath : this._publicPath;
169
- const initFragment = createInitFragment(ENVIRONMENT_VARIABLE, publicPath + (publicPath.endsWith("/") ? "" : "/") + this._outputFolder + "/", this._startupPrefetchMode);
187
+ const initFragment = createInitFragment(ENVIRONMENT_VARIABLE, joinHostPublicPath(this._publicPath === void 0 ? optionsPublicPath : this._publicPath, this._outputFolder, DEFAULT_OUTPUT_FOLDER), this._startupPrefetchMode);
170
188
  const webpack = compiler.webpack;
171
189
  const javascript = webpack.javascript;
172
190
  this._sources = webpack.sources;