@emailmaker/filemanager 1.1.84 → 1.1.85-dev.2

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.
package/core.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.fileManagerCore={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=class e extends Error{constructor(t,n,r,i){super(t),this.code=n,this.status=r,this.details=i,this.name=`FileManagerApiError`,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function n(e,t=`BackendError`){switch(e){case 400:return`ValidationError`;case 401:return`AuthenticationFailed`;case 403:return`AuthorizationFailed`;case 404:return`FileNotFound`;case 413:return`PayloadTooLarge`;case 415:return`UnsupportedMediaType`;case 429:return`RateLimitExceeded`;case 500:return`BackendError`;case 503:return`ServiceUnavailable`;case 504:return`Timeout`;default:return t}}function r(e,t){return e?t?`${e.replace(/\/+$/,``)}/${t.replace(/^\/+/,``)}`:e:t}function i(e){let t=typeof __webpack_public_path__<`u`?__webpack_public_path__:``;if(e&&/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(e))return e;let n=r(t,e||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)&&(n=`/`+n),n}function a(e,t){if(/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(t))return t;let n=r(i(e),t||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)?`/`+n:n}var o=``,s=class{constructor(){this.map=new Map}static childrenViewKey(e,t){return`v${o}${e}${o}${t}`}static childrenCountKey(e){return`c${o}${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${o}${e}${o}`;for(let e of[...this.map.keys()])e.startsWith(t)&&this.map.delete(e)}clearAll(){this.map.clear()}},c=class{constructor(){this.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)}};function l(e){return{sortBy:e?.sortBy??`name`,sortOrder:e?.sortOrder==null?e?.sortBy!=null&&e.sortBy!==``?`desc`:`asc`:e.sortOrder===`desc`?`desc`:`asc`}}function u(e,t,n){let{sortBy:r,sortOrder:i}=l(n),a=0;switch(r){case`name`:a=(e.name||``).localeCompare(t.name||``);break;case`date`:a=new Date(e.date||0).getTime()-new Date(t.date||0).getTime();break;case`size`:a=(Number(e.size)||0)-(Number(t.size)||0);break;case`type`:a=(e.extension||e.type||``).toLowerCase().localeCompare((t.extension||t.type||``).toLowerCase());break;default:a=(e.name||``).localeCompare(t.name||``)}return i===`desc`?-a:a}function d(e){return e!=null&&String(e).trim()!==``}function f(e,t){let{sortBy:n}=l(t);switch(n){case`date`:return d(e.date)?!Number.isNaN(new Date(e.date).getTime()):!1;case`size`:return e.size!=null&&Number.isFinite(Number(e.size));case`type`:return d(e.extension)||d(e.type);default:return d(e.name)}}function p(e,t){let n=typeof t?.search==`string`?t.search.trim():``;if(!n)return!0;let r=n.toLowerCase();return(e.name?.toLowerCase().includes(r)??!1)||(e.type?.toLowerCase().includes(r)??!1)||(e.extension?.toLowerCase().includes(r)??!1)}var m=u,h=p,g=f;function _(e={}){return{...e,comparator:e.comparator??m,filterMatch:e.filterMatch??h,hasSortValue:e.hasSortValue??g}}var v=`Trash`;function y(e){return e.replace(/\\/g,`/`).replace(/^\/+|\/+$/g,``)}function b(e,t,n=v){let r=y(e);if(!r)return[];let i=[e,r];if(r===y(t)){i.push(t);let e=y(t);e===`Trash`||e.toLowerCase()===`trash`?i.push(n,v,v.toLowerCase()):n!==`Trash`&&y(n)!==e&&i.push(n)}return Array.from(new Set(i.map(y).filter(Boolean)))}function x(e){let t=new Map;for(let[n,r]of Object.entries(e))r.id&&t.set(y(n),r);return e=>{let n=t.get(y(e));if(n)return{id:n.id,name:n.name??n.id,folderId:n.folderId??null,isFolder:!0}}}var S=/^(utm_[a-z0-9_]+|fbclid|gclid|igshid|mc_cid|mc_eid)$/i;function C(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return e}}function w(e){let t=new URL(e.trim());t.hash=``,t.hostname=t.hostname.toLowerCase(),(t.protocol===`https:`&&t.port===`443`||t.protocol===`http:`&&t.port===`80`)&&(t.port=``);let n=(t.search.startsWith(`?`)?t.search.slice(1):t.search).split(`&`).filter(Boolean).map(e=>{let t=e.indexOf(`=`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1);return{pair:e,key:C(n),value:C(r)}}).filter(({key:e})=>!S.test(e)).sort((e,t)=>{let n=e.key.localeCompare(t.key);return n===0?e.value.localeCompare(t.value):n});return t.search=n.length?`?${n.map(({pair:e})=>e).join(`&`)}`:``,t.toString()}function T(e){try{return w(e)}catch{return e.trim()}}var E=``,D=1800*1e3;function O(e){return e==null||e===``?E:e}function k(e){if(e==null)return 1/0;let t=Number(e);return Number.isFinite(t)&&t>=0?t:1/0}function A(e){return!e||typeof e.search!=`string`?!1:e.search.trim().length>0}function j(e){if(!e)return null;let t=e.folderId;return t==null?null:String(t)}function M(e){return!!e&&!!e.isFolder}function N(){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 P(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.code===`folder_not_found`||t.code===`FolderNotFound`||t.data?.code===`path_folder_not_found`||t.data?.code===`folder_not_found`||t.status===404||t.data?.data?.status===404}function F(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 I(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?F(a):``;return`${o}${s?`|${s}`:``}`}var L=class e{constructor(){this.entities=new Map,this.childrenByParent=new Map,this.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&&!M(t)?t:void 0}getFolder(e){let t=this.getEntity(e);return t&&M(t)?t:void 0}getChildrenIds(e,t={}){let n=O(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){let t=T(e);for(let n of this.entities.values()){let r=n.value.url;if(r&&(r===e||T(r)===t))return n.value}return null}upsertEntity(e){let t=this.entities.get(e.id)??null,n=t?t.value:null,r=n?j(n):null,i=j(e),a=n?M(n):!1,o=M(e),s;if(n&&M(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=O(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=O(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||!M(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=j(n),i=O(r),a=this.childrenByParent.get(i);return a&&(M(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||!M(t.value))return{deletedFolderRecords:[],deletedFileSystemItemRecords:[]};let n=[{id:e,parentId:j(t.value)}],r=[],i=[];for(;n.length;){let e=n.shift();r.push(e);let t=this.childrenByParent.get(O(e.id));if(t){for(let e of Array.from(t.folders)){let t=this.entities.get(e);t&&n.push({id:e,parentId:j(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=O(j(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=O(a.id);this.childrenByParent.delete(s);let c=O(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=O(j(r)),a=this.childrenByParent.get(i);a&&(M(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(M(r)&&M(o)){let e=r.childrenCount;e!==void 0&&(o.childrenCount=e)}this.entities.set(e,{value:o,updatedAt:this.now()});let s=O(t),c=this.childrenByParent.get(s);return c||(c={files:new Set,folders:new Set},this.childrenByParent.set(s,c)),M(o)?c.folders.add(e):c.files.add(e),{...o}}copyFileSystemItem(e,t,n){let r=this.entities.get(e)??null;if(!r||M(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||!M(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&&this.now()-n.updatedAt>t}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=O(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=O(j(t));if(!l.has(e))continue}if(i===`file`&&M(t)||i===`folder`&&!M(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}},R=class e{constructor(e={},t=D,n,r,i=new s,a=P){this.views=new Map,this.maxViewsPerParent=50;let o=_(e);this.strategy={allowSortedInsert:o.allowSortedInsert??!0,allowSearchInsert:o.allowSearchInsert??!0,invalidateOnPaginationFull:o.invalidateOnPaginationFull??!0,preloadPagesBefore:o.preloadPagesBefore??0,preloadPagesAfter:o.preloadPagesAfter??1,comparator:o.comparator,filterMatch:o.filterMatch,hasSortValue:o.hasSortValue},this.ttl=t,this.errorTtl=n??t,this.entityTtl=r??t,this.failedRequests=i,this.isFolderNotFoundError=a}setServerChildrenCountHandler(e){this.serverChildrenCountHandler=e}setChildrenCountInvalidator(e){this.childrenCountInvalidator=e}now(){return Date.now()}parentKey(e){return O(e??null)}isExpired(e){return e==null||this.ttl!==1/0&&this.now()-e>this.ttl}areEntitiesStale(e,t){return!e||e.some(e=>!t.getEntity(e)||t.isEntityStale(e,this.entityTtl))}isEntityTypeCompatible(e,t){return!!(!t||t===`all`||t===`file`&&!M(e)||t===`folder`&&M(e))}markViewStaleForReload(e){e.view.meta={...e.view.meta??{},stale:!0},e.view.updatedAt=this.now(),e.view.loadId=N(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0)}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=I(t??{}),o=this.views.get(i);o||(o=new Map,this.views.set(i,o));let c=s.childrenViewKey(i,a),l=o.get(a);l||(l={params:t,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},o.set(a,l),this.cleanupOldViews(o));let u=this.failedRequests.getFreshError(c,this.errorTtl);if(u!=null)throw u;if(l.view.value&&!this.isExpired(l.view.updatedAt)&&!this.areEntitiesStale(l.view.value,r)&&!l.view.meta?.stale){let e=l.view.value.map(e=>r.getEntity(e)).filter(Boolean),t=l.params?.itemType||`all`;return{items:e.filter(e=>this.isEntityTypeCompatible(e,t)),...l.view.meta??{}}}if(l.view.promise)return l.view.promise;let d=N();l.view.loadId=d;let f=(async()=>{try{let a=await n(e,t),o=A(t),s=o?{...a,total:void 0}:a,u=this.views.get(i)?.get(I(t));if(!u||u.view.loadId!==d){let e=Error(`StaleLoad`);throw e.name=`StaleLoad`,e}for(let e of s.items)r.upsertEntity(e);l.view.value=s.items.map(e=>e.id);let{items:f,...p}=s,m={...p};l.view.meta=m,l.view.meta&&(l.view.meta.stale=!1),this.failedRequests.delete(c),l.view.updatedAt=this.now(),!o&&typeof m.total==`number`&&(this.serverChildrenCountHandler?this.serverChildrenCountHandler(e??null,m.total,r):r.updateServerChildrenCount(e,m.total));let h=this.strategy.preloadPagesAfter??0,g=this.strategy.preloadPagesBefore??0,_=k(t?.pageSize);if((h>0||g>0)&&Number.isFinite(_)){let i=e,a={...t},o=typeof m.totalPages==`number`?m.totalPages:1,s=t?.page??1,c=_,l=n,u=d;setTimeout(()=>{this.preloadPagesAsync(i,a,s,o,c,h,g,r,m,l,u)},0)}return s}catch(e){if(e?.name===`StaleLoad`)throw this.failedRequests.delete(c),l.view.value=void 0,l.view.updatedAt=this.now(),e;if(this.isFolderNotFoundError(e))return this.failedRequests.delete(c),l.view.value=[],l.view.meta={total:0,totalPages:0},l.view.updatedAt=this.now(),{items:[],total:0,totalPages:0};throw this.failedRequests.setError(c,e),l.view.value=void 0,l.view.updatedAt=this.now(),e}finally{l.view.promise=null}})();return l.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(I(t));if(!d||u!=null&&d.view.loadId!==u)return;let f=c.get(I(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(I(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=I(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(e){console.debug(`Preload failed silently:`,e)}};if(a>0&&n<p)for(let e=1;e<=Math.min(a,p-n);e++){let r=n+e,i=I({...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=I({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}}catch(e){console.debug(`Preload process failed:`,e)}}removeEmptyPageIfNeeded(e,t,n,r,i){if(t.view.value&&t.view.value.length===0&&n<r){let t=I({...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=k(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))}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=I({...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=I({...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=I(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}canCompareInSortedView(e,t){let n=e.params??{};return!n.sortBy&&!n.sortOrder||!this.strategy.hasSortValue||this.strategy.hasSortValue(t,e.params)}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)||!this.canCompareInSortedView(e,t))return!1;let a=e.view.value.map(e=>n.getEntity(e));if(a.some(e=>!e))return!1;if(a.length===0){let n=e.params??{};if(n.sortBy||n.sortOrder){let n=r(t,t,e.params);if(typeof n!=`number`||Number.isNaN(n))return!1}return e.view.value.includes(t.id)?(e.view.updatedAt=this.now(),!0):(e.view.value=[t.id],e.view.updatedAt=this.now(),!0)}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(),!0)}updateChildrenCountForOperation(e,t,n,r){let i=j(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??null,-1),this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(n??null),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=k(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)),this.markViewStaleForReload(e));continue}if(!e.view.value){e.view.meta&&(e.view.meta.stale=!0),e.view.loadId=N(),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)){this.markViewStaleForReload(e);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`)||this.isExpired(e.view.updatedAt))}tryReinsertEntity(e,t,n,r,i){let a=e.params?.itemType||`all`;if(!this.isEntityTypeCompatible(t,a))return!1;let o=e.params??{};return this.strategy.filterMatch(t,o)?this.tryInsertSorted(e,t,n)?!0:o.sortBy||o.sortOrder?!1:!r||e.view.value.length<i?(e.view.value.push(t.id),!0):!1:!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=N(),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)){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)}if(t.view.updatedAt=Date.now(),i&&(t.view.value?.length??0)>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 this.markViewStaleForReload(t);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 this.markViewStaleForReload(t);t.view.loadId=N(),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=N(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l&&(a||o)){t.view.value=t.view.value.filter(e=>e!==s.id),this.tryReinsertEntity(t,s,c,i,r)?(t.view.updatedAt=Date.now(),t.view.loadId=N(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)):this.markViewStaleForReload(t);return}if(l){t.view.updatedAt=Date.now(),t.view.loadId=N(),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)){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()}else this.markViewStaleForReload(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 this.markViewStaleForReload(t);t.view.loadId=N(),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=N(),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=N(),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=n?.errorTtl??t?.errorTtl??r,a=n?.failedRequests??new s,o=new e({},r,i,void 0,a,n?.isFolderNotFoundError);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)}o.views.set(e,t)}return o}},z=class e{invalidateChildrenCountCache(e){let t=O(e??``);this.childrenCountPromises.delete(t),this.failedRequests.delete(s.childrenCountKey(t))}constructor(e={},t=D,n,r){this.childrenCountPromises=new Map,this.isFolderNotFoundError=r?.isFolderNotFoundError??P,this.failedRequests=new s,this.ttl=r?.ttl??t,this.errorTtl=r?.errorTtl??n??this.ttl,this.entities=new L,this.views=new R(e,this.ttl,this.errorTtl,void 0,this.failedRequests,this.isFolderNotFoundError),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?j(t):null,r=j(e),i=t?M(t):!1,a=M(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),O(n)===O(e))return!0;let t=this.entities.getEntity(n);if(!t)break;n=j(t),n===null&&(n=E)}return!1}moveEntity(e,t){let n=this.entities.getEntity(e);if(!n||M(n)&&t!==null&&this.isAncestor(e,t))return null;let r=j(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(M(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,N());for(let n of i){let i=this.entities.getFolder(n),a=o.get(n),s=j(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=N(),i={...n,id:r,folderId:t};this.entities.upsertEntity(i)}}a=this.entities.getEntity(o.get(e))??null}else{let i=n??N();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(M(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){this.views.forceInvalidateChildrenViews(e??null),this.invalidateChildrenCountCache(e);return}let n=new Set;if(M(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)}}invalidateListingViews(e){this.views.forceInvalidateChildrenViews(e??null)}getChildrenIds(e){return this.entities.getChildrenIds(e)}searchByName(e,t){return this.entities.searchByName(e,t)}async getChildrenCount(e=``,t){let n=O(e),r=s.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),this.isFolderNotFoundError(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,r){let i=r?.ttl??t?.ttl??18e5,a=r?.errorTtl??t?.errorTtl??i,o=new e(n??{},i,a,r),s=L.fromJSON(t?.entities??{}),c=R.fromJSON(t?.views??{},{failedRequests:o.failedRequests,ttl:i,errorTtl:a,isFolderNotFoundError:r?.isFolderNotFoundError});if(n){let e=_(n);c.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}}return o.entities=s,o.views=c,c.setServerChildrenCountHandler((e,t,n)=>{o.handleServerReportedChildrenCount(e,t,n??s)}),c.setChildrenCountInvalidator(e=>{o.invalidateChildrenCountCache(e)}),o}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&&(console.warn(`Conflict: folder "${r}" has childrenCount=${i} but server says total=${t}`),this.views.forceInvalidateChildrenViews(r)),n.updateServerChildrenCount(r,t)}},ee=``,te=`Trash`,ne=`Edited`,B=1e4,V=1e4,H=25,U=10;function W(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 G(e){return e==null?``:String(e)}function K(e){return{...e,name:G(e.name)}}function q(e){return(e??[]).map(K)}function J(e){return!e||typeof e!=`object`||!(`name`in e)?e:{...e,name:G(e.name)}}function re(e){return e?e.replaceAll(`\\`,`/`).split(`/`).filter(Boolean):[]}for(var ie=class{_getTrashPath(){return this._pathOptions.trashPath||te}_getPathLookupCandidates(e){return b(e,this._getTrashPath(),v)}_folderFromResolvedPath(e,n){if(e.isFolder!==!0)throw new t(e.isFolder===!1?`Path '%s' resolves to a file, not a folder`.replace(`%s`,n):`Path '%s' resolved to an item that is not marked as a folder`.replace(`%s`,n),`ValidationError`);if(!e.id)throw new t(`Path '%s' resolved to a folder without id`.replace(`%s`,n),`ValidationError`);let r={id:e.id,name:e.name||e.id,parentId:e.folderId};return this._cache.upsertEntity(K({id:r.id,name:r.name,folderId:r.parentId??null,isFolder:!0})),r}async _resolveFolderByPath(e){if(typeof this._dataProvider.findItemByPath==`function`)for(let t of this._getPathLookupCandidates(e)){let e=await this._dataProvider.findItemByPath(t);if(e)return this._folderFromResolvedPath(e,t)}}async _findOrCreateFolderByPath(e){let n=re(e);if(n.length>U)throw new t(`Path depth exceeds maximum limit of %s`.replace(`%s`,String(U)),`ValidationError`);let r=await this._resolveFolderByPath(e);if(r)return r;let i;for(let r of n){let{files:n}=await this.getFiles({folderId:i?.id||``,itemType:`folder`}),a=n.find(e=>e.name===r);if(a){if(!a.isFolder)throw new t(`Path component '%s' in '%s' is not a folder`.replace(`%s`,r).replace(`%s`,e),`ValidationError`);i={id:a.id,name:a.name,parentId:a.folderId}}else{if(typeof this._dataProvider.createFolder!=`function`)throw new t(`Create folder operation is not supported by data provider`,`UnsupportedOperation`);i=await this.createFolder({name:r,parentId:i?.id})}}return i}async getTrashFolder(){let e=await this._findOrCreateFolderByPath(this._getTrashPath());if(!e)throw new t(`Trash folder path '%s' could not be resolved`.replace(`%s`,this._getTrashPath()),`FolderNotFound`);return e}async getTempFolder(){let e=this._pathOptions.tempPath??ne;if(e)try{return await this._findOrCreateFolderByPath(e)}catch(e){if(e instanceof t&&e.code===`ValidationError`)throw e;console.warn(`getTempFolder: temp folder unavailable, falling back to root`,e);return}}constructor(e,t={},n,r={}){this._dataProvider=e,this._options=t,this._pathOptions=n,this._blobFetchForceReloadOnceIds=new Set,this._mutationRegistry=new c,this._mapItem=async({childrenCount:e,...t})=>{let n=K(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}},this._config=r,this._useSoftDelete=this._pathOptions.useSoftDelete,this._rootId=this._pathOptions.rootId||ee,this._enableTrash=this._options.enableTrash===void 0||this._options.enableTrash,this._validateDuplicates=this._dataProvider.validateDuplicates,this._cache=new z(t.cacheStrategy||{},t.cacheStrategy?.ttl,t.cacheStrategy?.errorTtl),this.setController({invalidateItemCache:e=>{this._cache.forceInvalidate(e)},getCachedItem:e=>this._cache.getEntity(e)});let i=Object.getPrototypeOf(this);for(let e of Object.getOwnPropertyNames(i)){let t=Object.getOwnPropertyDescriptor(i,e);e!==`constructor`&&typeof t?.value==`function`&&(this[e]=t.value.bind(this))}}setController(e){typeof this._dataProvider.setController==`function`&&this._dataProvider.setController(e)}async clearCache(e){let t=e??this._rootId;this._cache.forceInvalidate(t),this._cache.invalidateListingViews(t),typeof this._dataProvider.clearCache==`function`&&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,n=!1){if(!e||e.trim().length===0)throw new t(n?`Folder name cannot be empty`:`File name cannot be empty`,n?`FolderInvalidName`:`FileInvalidName`);if(/[/\\:*?"<>|]/.test(e)){let r=n?`FolderInvalidName`:`FileInvalidName`;throw new t(n?`Folder name contains invalid characters: %s`.replace(`%s`,e):`File name contains invalid characters: %s`.replace(`%s`,e),r)}}_validateTargetFolderType(e){let n=this.normalizeId(e);if(n===this._rootId)return;let r=this._cache.getEntity(n);if(r&&!r.isFolder)throw new 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){if(e.url)return e.url;try{return typeof this._dataProvider?.getUrl==`function`&&this._dataProvider.getUrl(e)||void 0}catch(e){console.log(e)}}}async _getThumbnailUrl(e){if(e){if(e.thumbnailUrl)return e.thumbnailUrl;try{return typeof this._dataProvider?.getThumbnailUrl==`function`&&this._dataProvider.getThumbnailUrl(e)||void 0}catch(e){console.log(e)}}}_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=K(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);if(n)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?B: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:H: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?V:d);let x=v?V: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):B,i=await this._dataProvider.getItems({...t,folderId:e,limit:r}),a=q(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)=>u(e,r,{sortBy:t,sortOrder:n}))}async getFileData(e,n){let r=this.normalizeId(typeof e==`string`?e:e.id),i=n;this._blobFetchForceReloadOnceIds.delete(r)&&(i={...n,forceReload:!0});let a=this._cache.getEntity(r)||(typeof e==`string`?{id:r,name:``,folderId:this._rootId,isFolder:!1}:{...e,childrenCount:e.childCount});if(typeof this._dataProvider.getFileData==`function`)return await this._dataProvider.getFileData(a,i);if(!a.url&&typeof this._dataProvider.getUrl!=`function`)throw new t(`Cannot read file`,`FileReadError`);let o=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(o)return(await(this._config.fetchWithProxy??fetch)(o,i?.forceReload?{cache:`no-store`}:void 0)).blob();throw new t(`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=K(t);return this._cache.upsertEntity(e),e}}catch(e){console.log(e)}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:H});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 n=this.normalizeId(e.folderId??this._rootId);if(typeof this._dataProvider.uploadFile!=`function`)throw new t(`Upload file operation is not supported by data provider`,`UnsupportedOperation`);if(this._validateName(e.name,!1),this._validateDuplicates&&this._checkNameExistsInCache(n,e.name,!1))throw new t(`File '%s' already exists in target folder`.replace(`%s`,e.name),`FileAlreadyExists`);let r=await this._dataProvider.uploadFile({...e,folderId:n}),i=K({name:e.name,size:e.size,...r,folderId:r.folderId??n});return this._cache.upsertEntity(i),i}async uploadFiles(e){let n=e.items.some(e=>e.noFolder)?await this.getTempFolder():null;e={...e,items:e.items?.map(e=>({...e,folderId:e.noFolder?n?.id:e.folderId}))};for(let t of e.items)t.folderId&&(e.folderId=t.folderId);let r=e.items||[],i=e.folderId??this._rootId,a=this.normalizeId(i);if(this._validateDuplicates){for(let e of r)if(e.name){this._validateName(e.name,!1);let n=this.normalizeId(e.folderId??a);if(this._checkNameExistsInCache(n,e.name,!1))throw new t(`File '%s' already exists in target folder`.replace(`%s`,e.name),`FileAlreadyExists`)}}let o={detailed:Array(r.length),success:!0};if(typeof this._dataProvider.uploadFiles==`function`){let e=r.map(e=>({...e,folderId:this.normalizeId(e.folderId??a)})),t=await this._dataProvider.uploadFiles({folderId:a,items:e});o=W(t,e=>{if(e)return{id:e.id,name:G(e.name),folderId:e.folderId,url:e.url,thumbnailUrl:e.thumbnailUrl,thumbnail:e.thumbnail}});let n=t?.detailed;if(o.detailed&&o.detailed.length){for(let e=0;e<o.detailed.length;e++){let t=o.detailed[e];if(t&&t.success){let r=t.data,i=r?.id??t.requestId,o=n?.[e]?.data,s=K({...o,...r,id:i,folderId:r?.folderId??o?.folderId??a,isFolder:!1});this._cache.upsertEntity(s),t.requestId=i}}o.success===void 0&&(o.success=!o.detailed.some(e=>!e.success))}else o.success=!o.error&&!!o.success}else if(typeof this._dataProvider.uploadFile==`function`)o.detailed=await Promise.all(r.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}}})),o.success=!o.detailed.some(e=>!e.success);else throw new t(`Upload files is not supported by data provider`,`UnsupportedOperation`);if(o.success&&this._enableTrash)try{this._cache.forceInvalidate(a)}catch{}return o}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,n){let r={success:!0,detailed:[]},i=n.permanent?null:await this.getTrashFolder();if(typeof this._dataProvider.deleteItems==`function`){if(r=W(await this._dataProvider.deleteItems(e.map(e=>this._cache.getEntity(e)),n),e=>e),r.success){let t=r.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`&&(r.detailed=await Promise.all(e.map(async e=>{let r=this._cache.getEntity(e);if(!r)return{requestId:e,success:!1,error:new t(`Item with id '%s' not found`.replace(`%s`,e),`FileNotFound`)};try{return await this._dataProvider.deleteItem(r,n),i?this._cache.moveEntity(e,i.id):this._cache.deleteEntity(e),{requestId:e,success:!0}}catch(t){return{requestId:e,error:t,success:!1}}})),r.success=!r.detailed.some(e=>!e.success));if(r.success&&i)try{this._cache.forceInvalidate(i.id)}catch{}return r}async hardDeleteItem(e){let n=this._cache.getEntity(e);if(!n)throw new t(`Item with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);if(typeof this._dataProvider.deleteItem!=`function`)throw new t(`Delete item operation is not supported by data provider`,`DeleteNotAllowed`);if(await this._dataProvider.deleteItem(n,{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(){if(!this._enableTrash)throw new t(`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 t(`Clean trash is not supported by data provider`,`UnsupportedOperation`)}async createFolder({name:e,parentId:n,is_force_create:r}){let i=this.normalizeId(n??this._rootId);if(this._validateName(e,!0),this._validateDuplicates&&this._checkNameExistsInCache(i,e,!0))throw new t(`Folder '%s' already exists in parent folder`.replace(`%s`,e),`FolderAlreadyExists`);let a=await this._dataProvider.createFolder(e,i,r),o=K({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(e){return console.error(`Error moving folder to trash:`,e),await this.hardDeleteItem(t)}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async renameFolder(e,n){if(typeof this._dataProvider.renameItem!=`function`)throw new t(`Rename folder is not supported`,`RenameNotAllowed`);let r=this.normalizeId(e),i=this._cache.getEntity(r);if(!i)throw new t(`Folder with id '%s' not found in cache`.replace(`%s`,e),`FolderNotFound`);if(this._validateName(n,!0),this._validateDuplicates){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,n,!0,r))throw new t(`Folder '%s' already exists in parent folder`.replace(`%s`,n),`FolderAlreadyExists`)}let a=J(await this._dataProvider.renameItem(i,n));return this._cache.upsertEntity(K({...this._cache.getEntity(a.id),...a})),this._cache.getEntity(a.id)}async renameFile(e,n){if(typeof this._dataProvider.renameItem!=`function`)throw new t(`Rename file is not supported`,`RenameNotAllowed`);let r=this._cache.getEntity(e);if(!r)throw new t(`File with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);let i=this.normalizeId(e);if(this._validateName(n,!1),this._validateDuplicates){let e=this.normalizeId(r.folderId);if(this._checkNameExistsInCache(e,n,!1,i))throw new t(`File '%s' already exists in parent folder`.replace(`%s`,n),`FileAlreadyExists`)}let a=J(await this._dataProvider.renameItem(r,n));return a&&this._cache.upsertEntity(K({...this._cache.getEntity(i),...a})),this._cache.getEntity(i)}async moveItem({itemId:e,targetFolderId:n,isFolder:r}){if(typeof this._dataProvider.moveItem!=`function`)throw new t(`Move item operation is not supported by data provider`,`MoveNotAllowed`);let i=this.normalizeId(n);this._validateTargetFolderType(n);let a=this._cache.getEntity(e);if(!a){let t=J(await this._dataProvider.moveItem({id:e,folderId:i,isFolder:r},i));if(t.id===e)this._cache.upsertEntity(K({...t,folderId:i}));else{try{this._cache.deleteEntity(e)}catch{}this._cache.upsertEntity(K({...t,folderId:i}))}return!0}if(a.isFolder){if(e===i)throw new t(`Cannot move folder into itself`,`MoveIntoSelf`);if(this._isAncestor(e,i))throw new t(`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 t(`${a.isFolder?`Folder`:`File`} '${a.name}' already exists in target folder`,e)}let o=J(await this._dataProvider.moveItem(a,i));if(o.id===e){let t=this._cache.moveEntity(e,i);return this._cache.upsertEntity(K({...t,...o})),!0}else{let t=this._cache.deleteEntity(e);return this._cache.upsertEntity(K({...t,...o,folderId:i})),!0}}async moveItems(e,n){let r=this.normalizeId(e);this._validateTargetFolderType(e);let i=n.map(e=>this._cache.getEntity(e));for(let e of i)if(e){if(e.isFolder){if(e.id===r)throw new t(`Cannot move folder '%s' into itself`.replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,r))throw new t(`Cannot move folder '%s' into its descendant`.replace(`%s`,e.name),`MoveIntoDescendant`)}if(this._validateDuplicates&&r!==this.normalizeId(e.folderId)&&e.name&&this._checkNameExistsInCache(r,e.name,!!e.isFolder,e.id)){let n=e.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${e.isFolder?`Folder`:`File`} '${e.name}' already exists in target folder`,n)}}let a={detailed:Array(i.length),success:!0};if(typeof this._dataProvider.moveItems==`function`)a=W(await this._dataProvider.moveItems(i,r),e=>e);else if(typeof this._dataProvider.moveItem==`function`)a.detailed=await Promise.all(n.map(async(e,t)=>{let n=i[t]||{id:e,folderId:null,isFolder:!1,name:e};try{return{requestId:e,data:J(await this._dataProvider.moveItem(n,r)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new t(`Move items is not supported`,`MoveNotAllowed`);if(a.success){let e=a.detailed||n.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,r),t.data&&this._cache.upsertEntity(K({...this._cache.getEntity(t.requestId),...t.data,folderId:r}));else{let e=this._cache.deleteEntity(t.requestId);this._cache.upsertEntity(K({...e,...t.data,folderId:r}))}return a}else return{success:!1,error:a.error||new t(`Move items failed`,`MoveNotAllowed`)}}async copyItem({itemId:e,targetFolderId:n}){if(typeof this._dataProvider.copyItem!=`function`)throw new t(`Copy item is not supported`,`CopyNotAllowed`);let r=this.normalizeId(n);this._validateTargetFolderType(n);let i=this._cache.getEntity(e);if(!i){let t=J(await this._dataProvider.copyItem({id:e,folderId:r},r));return this._cache.copyEntity(e,r,t.id),this._cache.upsertEntity(K({...t,folderId:r})),!0}if(this._validateDuplicates&&i.name){let n=r===this.normalizeId(i.folderId)?e:void 0;if(this._checkNameExistsInCache(r,i.name,!!i.isFolder,n)){let e=i.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${i.isFolder?`Folder`:`File`} '${i.name}' already exists in target folder`,e)}}let a=J(await this._dataProvider.copyItem(i,r));return this._cache.copyEntity(e,r,a.id,{...a,folderId:r})||this._cache.upsertEntity(K({...a,folderId:r})),!0}async copyItems(e,n){let r=this.normalizeId(e);this._validateTargetFolderType(e);let i=n.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 n=o[e];if(n&&n.name){let i=r===this.normalizeId(n.folderId)?a[e]:void 0;if(this._checkNameExistsInCache(r,n.name,!!n.isFolder,i)){let e=n.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${n.isFolder?`Folder`:`File`} '${n.name}' already exists in target folder`,e)}}}let s={detailed:Array(o.length),success:!0};if(typeof this._dataProvider.copyItems==`function`)s=W(await this._dataProvider.copyItems(o,r),e=>e);else if(typeof this._dataProvider.copyItem==`function`)s.detailed=await Promise.all(a.map(async(e,t)=>{let n=o[t]||{id:e,folderId:null,isFolder:!1};try{return{requestId:e,data:J(await this._dataProvider.copyItem(n,r)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new t(`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)if(t.data?.id){let e=t.data.folderId||r;!this._cache.copyEntity(t.requestId,e,t.data.id,{...t.data,folderId:e})&&t.data&&this._cache.upsertEntity(K({...t.data,folderId:e}))}else console.error(`batchResult in copy method must have ids`)}else if(!s.detailed)throw new t(`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=K({...await this._dataProvider.uploadFileByUrl(e.url,t,{eventSource:e.eventSource}),folderId:t});return this._cache.upsertEntity(n),n}catch(e){throw console.error(`uploadFileByUrl error:`,e),e}}async updateFile(e,n){if(typeof this._dataProvider.updateFile!=`function`)throw new t(`Update file is not supported`,`UnsupportedOperation`);let r=this.normalizeId(e),i=this._cache.getEntity(r);if(!i)throw new t(`File with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);if(n.name&&n.name!==i.name&&this._validateName(n.name,!1),this._validateDuplicates&&n.name&&n.name!==i.name){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,n.name,!1,r))throw new t(`File '%s' already exists in parent folder`.replace(`%s`,n.name),`FileAlreadyExists`)}let a=J(await this._dataProvider.updateFile(i,{...n}));return this._cache.upsertEntity(K({...this._cache.getEntity(r),...a,...n})),this._cache.getEntity(r)}},Y=[],X=0;X<256;++X)Y.push((X+256).toString(16).slice(1));function ae(e,t=0){return(Y[e[t+0]]+Y[e[t+1]]+Y[e[t+2]]+Y[e[t+3]]+`-`+Y[e[t+4]]+Y[e[t+5]]+`-`+Y[e[t+6]]+Y[e[t+7]]+`-`+Y[e[t+8]]+Y[e[t+9]]+`-`+Y[e[t+10]]+Y[e[t+11]]+Y[e[t+12]]+Y[e[t+13]]+Y[e[t+14]]+Y[e[t+15]]).toLowerCase()}var Z,oe=new Uint8Array(16);function se(){if(!Z&&(Z=typeof crypto<`u`&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Z))throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);return Z(oe)}var Q={randomUUID:typeof crypto<`u`&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function ce(e,t,n){if(Q.randomUUID&&!t&&!e)return Q.randomUUID();e||={};var r=e.random||(e.rng||se)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n||=0;for(var i=0;i<16;++i)t[n+i]=r[i];return t}return ae(r)}var le=``,ue=`Trash`,de=class{constructor(e,t=le,n=v,r=ue,i=!0){this._inner=e,this.rootPath=t,this.trashId=n,this.trashPath=r,this.ensureFolderTrailingSlash=i,this._pathToId=new Map,this._idToPath=new Map,this.validateDuplicates=this._inner.validateDuplicates??!1,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}));let a=this;typeof this._inner.deleteItems!=`function`&&(a.deleteItems=void 0),typeof this._inner.deleteItem!=`function`&&(a.deleteItem=void 0),typeof this._inner.moveItems==`function`?a.moveItem=void 0:a.moveItems=void 0,typeof this._inner.copyItems==`function`?a.copyItem=void 0:a.copyItems=void 0,typeof this._inner.uploadFiles==`function`?a.uploadFile=void 0:a.uploadFiles=void 0,typeof this._inner.clearCache!=`function`&&(a.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??!1),folderId:this.pathForId(t.folderId??``,t.isFolder??!1)}}}})}clearCache(e){if(typeof this._inner.clearCache==`function`)return this._inner.clearCache(e)}findItemByPath(e){if(typeof this._inner.findItemByPath!=`function`)return;let t=(e,t,n)=>{if(!e)return;if(e.isFolder!==!0)return e;let r=y(y(n)===y(this.trashPath)?this.trashPath:t),i=e.folderId!=null&&e.folderId!==``?y(e.folderId):this.rootPath;return{...e,id:this._getOrGenerateId(r),name:e.name,folderId:i===y(this.rootPath)?this.rootPath||``:this._getOrGenerateId(i),isFolder:!0}},n=b(e,this.trashPath,this.trashId);return(async()=>{for(let r of n){let n=await Promise.resolve(this._inner.findItemByPath(r)),i=t(n,r,e);if(i)return i}})()}_getOrGenerateId(e){if(e===this.rootPath)return``;let t=y(e);if(t===y(this.trashPath))return this.trashId;if(this._pathToId.has(t))return this._pathToId.get(t);let n=ce();return this._pathToId.set(t,n),this._idToPath.set(n,t),n}pathForId(e,n,r){if(e===``||e===void 0)return this.rootPath;if(e===this.trashId)return this.trashPath;let i=this._idToPath.get(e);if(!i){if(r)return`unknown folder ${e}`;throw new t(`Path for id '${e}' not found in mapping`,`FileNotFound`)}let a=0;for(;a<this.rootPath.length&&this.rootPath[a]===`/`;)a++;if(a){let e=0;for(;e<i.length&&i[e]===`/`;)e++;let t=i.slice(e);i=`/`.repeat(a)+t}return n&&this.ensureFolderTrailingSlash&&!i.endsWith(`/`)&&(i+=`/`),i}_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,n){if(typeof this._inner.renameItem!=`function`)throw new t(`Rename item is not supported by inner storage`,`RenameNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=r,{...a}=await this._inner.renameItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);return this._updateIdMapping(e.id,a.id),e.isFolder&&this.remapCachedFolderContents(e.id,i,a.id),a.folderId&&(a={...a,folderId:this._getOrGenerateId(a.folderId)}),{...a,id:this._getOrGenerateId(a.id)}}async deleteItem(e,n){if(typeof this._inner.deleteItem!=`function`)throw new t(`Delete item is not supported by inner storage`,`DeleteNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1);await this._inner.deleteItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n),this.recursivelyRemoveMappings(e.id,r)}async uploadFile(e){if(typeof this._inner.uploadFile!=`function`)throw new t(`Upload file is not supported by inner storage`,`UnsupportedOperation`);let n=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,r=await this._inner.uploadFile({...e,folderId:n}),i=this._getOrGenerateId(r.id),a=r.folderId?this._getOrGenerateId(r.folderId):this._getOrGenerateId(this.rootPath);return{...r,id:i,folderId:a}}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):``,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,n){if(typeof this._inner.moveItem!=`function`)throw new t(`Move item is not supported by inner storage`,`MoveNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=n?this.pathForId(n,!0):this.rootPath,a=await this._inner.moveItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},i);this._updateIdMapping(e.id,a.id),e.isFolder&&this.remapCachedFolderContents(e.id,r,a.id);let o=this._getOrGenerateId(a.id),s=a.folderId?this._getOrGenerateId(a.folderId):n;return{...a,id:o,folderId:s}}async moveItems(e,n){if(typeof this._inner.moveItems!=`function`)throw new t(`Move items is not supported by inner storage`,`MoveNotAllowed`);let r=n?this.pathForId(n,!0):this.rootPath,i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),a=await this._inner.moveItems(i,r),o=[];if(a.detailed&&a.detailed.length>0){let t=new Map;for(let n=0;n<a.detailed.length;n++){let r=a.detailed[n],i=r.requestId||(n<e.length?e[n].id:void 0);i&&t.set(i,r)}for(let r of e){let i=t.get(r.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(r)]:void 0);if(i?.success&&i.data){if(this._updateIdMapping(r.id,i.data.id),r.isFolder){let e=this.pathForId(r.id,r.isFolder??!1);this.remapCachedFolderContents(r.id,e,i.data.id)}o.push({requestId:r.id,success:!0,data:{...i.data,id:this._getOrGenerateId(i.data.id),folderId:i.data.folderId?this._getOrGenerateId(i.data.folderId):n||this._getOrGenerateId(this.rootPath)}})}else o.push({requestId:r.id,success:!1,error:i?.error||{message:`Move operation failed - no detailed result`,code:`MoveNotAllowed`}})}}else for(let t of e)o.push({requestId:t.id,success:!1,error:{message:`Move operation failed - no detailed results`,code:`MoveNotAllowed`}});return{success:a.success,detailed:o,error:a.error}}async copyItems(e,n){if(typeof this._inner.copyItems!=`function`)throw new t(`Copy items is not supported by inner storage`,`CopyNotAllowed`);let r=n?this.pathForId(n,!0):this.rootPath,i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),a=await this._inner.copyItems(i,r),o=[];if(a.detailed&&a.detailed.length>0){let t=new Map;for(let n=0;n<a.detailed.length;n++){let r=a.detailed[n],i=r.requestId||(n<e.length?e[n].id:void 0);i&&t.set(i,r)}for(let r of e){let i=t.get(r.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(r)]:void 0);if(i?.success&&i.data?.id){let e=this._getOrGenerateId(i.data.id);o.push({requestId:r.id,success:!0,data:{...i.data,id:e,folderId:i.data.folderId?this._getOrGenerateId(i.data.folderId):n||this._getOrGenerateId(this.rootPath)}})}else{let e=i?i.success?i.data?i.data.id?{message:`Unknown copy error`,code:`CopyNotAllowed`}:{message:`No ID in copied item data`,code:`CopyNotAllowed`}:{message:`No data returned from copy operation`,code:`CopyNotAllowed`}:i.error||{message:`Copy operation failed`,code:`CopyNotAllowed`}:{message:`No detailed result from copy operation`,code:`CopyNotAllowed`};o.push({requestId:r.id,success:!1,error:e})}}}else for(let t of e)o.push({requestId:t.id,success:!1,error:{message:`No detailed results from copy operation`,code:`CopyNotAllowed`}});let s=o.every(e=>e.success);return{success:s,detailed:o,error:s?void 0:a.error||{message:`Copy operation completed with errors`,code:`CopyNotAllowed`}}}async deleteItems(e,n){if(typeof this._inner.deleteItems!=`function`)throw new t(`Delete items is not supported by inner storage`,`DeleteNotAllowed`);let r=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),i=await this._inner.deleteItems(r,n),a=[];if(i.detailed&&i.detailed.length>0){let t=new Map;for(let n=0;n<i.detailed.length;n++){let r=i.detailed[n],a=r.requestId||(n<e.length?e[n].id:void 0);a&&t.set(a,r)}for(let r of e){let o=t.get(r.id)||(i.detailed.length===e.length?i.detailed[e.indexOf(r)]:void 0);if(o?.success){let e=this.pathForId(r.id,r.isFolder??!1);if(n.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??!1);this.remapCachedFolderContents(r.id,t,this.trashPath+`/`+e+(r.isFolder?`/`:``))}a.push({requestId:r.id,success:!0})}else a.push({requestId:r.id,success:!1,error:o?.error||{message:`Delete operation failed`,code:`DeleteNotAllowed`}})}}else for(let t of e)if(i.success){let e=this.pathForId(t.id,t.isFolder??!1);if(n.permanent)this.recursivelyRemoveMappings(t.id,e);else if(this._updateIdMapping(t.id,this.trashPath+`/`+e+(t.isFolder?`/`:``)),t.isFolder){let n=this.pathForId(t.id,t.isFolder??!1);this.remapCachedFolderContents(t.id,n,this.trashPath+`/`+e+(t.isFolder?`/`:``))}a.push({requestId:t.id,success:!0})}else a.push({requestId:t.id,success:!1,error:i.error||{message:`Delete operation failed`,code:`DeleteNotAllowed`}});let o=a.every(e=>e.success);return{success:o,detailed:a,error:o?void 0:i.error||{message:`Some items failed to delete`,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,n){if(typeof this._inner.copyItem!=`function`)throw new t(`Copy item is not supported by inner storage`,`CopyNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=n?this.pathForId(n,!0):this.rootPath,a=await this._inner.copyItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},i),o=this._getOrGenerateId(a.id),s=a.folderId?this._getOrGenerateId(a.folderId):n??``;return{...a,id:o,folderId:s}}async updateFile(e,n){if(typeof this._inner.updateFile!=`function`)throw new t(`Update file is not supported by inner storage`,`UnsupportedOperation`);let r=this.pathForId(e.id,!1),{...i}=await this._inner.updateFile({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);return this._updateIdMapping(e.id,i.id),i.folderId&&(i={...i,folderId:this._getOrGenerateId(i.folderId)}),{...i,id:this._getOrGenerateId(i.id)}}async getFileData(e,n){let r=this.pathForId(e.id,!1);if(typeof this._inner.getFileData==`function`)return this._inner.getFileData({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);let i=e.url||(typeof this.getUrl==`function`?await this.getUrl(e):void 0);if(!i)throw new t(`Cannot get file data: no url and no inner.getFileData`,`FileReadError`);return fetch(i,n?.forceReload?{cache:`no-store`}:void 0).then(e=>e.blob())}async cleanTrash(){if(typeof this._inner.cleanTrash!=`function`)throw new t(`Clean trash is not supported by inner storage`,`UnsupportedOperation`);return await this._inner.cleanTrash()}};function fe(e){return typeof e!=`object`||!e?!1:`name`in e&&e.name===`DirectResourceFetchError`?!(`final`in e)||e.final!==!1:`final`in e&&e.final===!0}function $(e){if(fe(e)||e instanceof t)throw e}async function pe(e,t,n,r,i){let{fetchWithProxy:a,handleFileProxy:o,handleProxyUrl:s}=t,c={mode:`cors`,...i?.fetchInit},l;if(o)try{let t=await Promise.resolve(o(e));if(t)return r(t)}catch(e){$(e),l=e,console.warn(`handleFileProxy failed, falling back to next strategy`,e)}if(s)try{let t=await Promise.resolve(s(e));if(t&&t!==e)return r(await n(t))}catch(e){$(e),l=e,console.warn(`handleProxyUrl fetch failed, falling back to next strategy`,e)}if(a)try{let t=await Promise.resolve(a(e,c,{intent:`downloadBlob`}));if(!t.ok)throw Error(`HTTP ${t.status}`);return r(await t.blob())}catch(e){$(e),l=e,console.warn(`fetchWithProxy failed`,e)}if(!a)try{return r(await n(e))}catch(e){$(e),l=e}throw l instanceof Error?l:Error(`Failed to download file from the URL`)}e.DEFAULT_FILE_MANAGER_CACHE_TTL_MS=D,e.DataSourceProxyBase=ie,e.FailedRequestCache=s,e.FileManagerApiError=t,e.MutationRegistry=c,e.PathAwareStorageAdapter=de,e.TRASH_FOLDER_ID=v,e.TreeCache=z,e.ViewCacheManager=R,e.buildAssetsPath=a,e.compareFileSystemItems=u,e.createSystemFolderByPathResolver=x,e.defaultChildrenViewFilterMatch=h,e.defaultFileSystemItemComparator=m,e.defaultHasSortValue=g,e.defaultIsFolderNotFoundError=P,e.fetchRemoteImageBlobByUrl=pe,e.getAssetsBase=i,e.getTrashFolderLookupCandidates=b,e.hasComparableSortValue=f,e.joinUrls=r,e.mapHttpStatusToErrorCode=n,e.matchesChildrenViewFilter=p,e.normalizeSystemFolderPath=y,e.resolveSortParams=l,e.resolveViewStrategyOptions=_});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.fileManagerCore={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=class e extends Error{constructor(t,n,r,i){super(t),this.code=n,this.status=r,this.details=i,this.name=`FileManagerApiError`,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function n(e,t=`BackendError`){switch(e){case 400:return`ValidationError`;case 401:return`AuthenticationFailed`;case 403:return`AuthorizationFailed`;case 404:return`FileNotFound`;case 413:return`PayloadTooLarge`;case 415:return`UnsupportedMediaType`;case 429:return`RateLimitExceeded`;case 500:return`BackendError`;case 503:return`ServiceUnavailable`;case 504:return`Timeout`;default:return t}}function r(e,t){return e?t?`${e.replace(/\/+$/,``)}/${t.replace(/^\/+/,``)}`:e:t}function i(e){let t=typeof __webpack_public_path__<`u`?__webpack_public_path__:``;if(e&&/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(e))return e;let n=r(t,e||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)&&(n=`/`+n),n}function a(e,t){if(/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(t))return t;let n=r(i(e),t||``);return n&&!n.startsWith(`/`)&&!/^[a-zA-Z][a-zA-Z\d+\-.]*?:/.test(n)?`/`+n:n}var o=``,s=class{constructor(){this.map=new Map}static childrenViewKey(e,t){return`v${o}${e}${o}${t}`}static childrenCountKey(e){return`c${o}${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${o}${e}${o}`;for(let e of[...this.map.keys()])e.startsWith(t)&&this.map.delete(e)}clearAll(){this.map.clear()}},c=class{constructor(){this.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)}};function l(e){return{sortBy:e?.sortBy??`name`,sortOrder:e?.sortOrder==null?e?.sortBy!=null&&e.sortBy!==``?`desc`:`asc`:e.sortOrder===`desc`?`desc`:`asc`}}function u(e,t,n){let{sortBy:r,sortOrder:i}=l(n),a=0;switch(r){case`name`:a=(e.name||``).localeCompare(t.name||``);break;case`date`:a=new Date(e.date||0).getTime()-new Date(t.date||0).getTime();break;case`size`:a=(Number(e.size)||0)-(Number(t.size)||0);break;case`type`:a=(e.extension||e.type||``).toLowerCase().localeCompare((t.extension||t.type||``).toLowerCase());break;default:a=(e.name||``).localeCompare(t.name||``)}return i===`desc`?-a:a}function d(e){return e!=null&&String(e).trim()!==``}function f(e,t){let{sortBy:n}=l(t);switch(n){case`date`:return d(e.date)?!Number.isNaN(new Date(e.date).getTime()):!1;case`size`:return e.size!=null&&Number.isFinite(Number(e.size));case`type`:return d(e.extension)||d(e.type);default:return d(e.name)}}function p(e,t){let n=typeof t?.search==`string`?t.search.trim():``;if(!n)return!0;let r=n.toLowerCase();return(e.name?.toLowerCase().includes(r)??!1)||(e.type?.toLowerCase().includes(r)??!1)||(e.extension?.toLowerCase().includes(r)??!1)}var m=u,h=p,g=f;function _(e={}){return{...e,comparator:e.comparator??m,filterMatch:e.filterMatch??h,hasSortValue:e.hasSortValue??g}}var v=`Trash`;function y(e){return e.replace(/\\/g,`/`).replace(/^\/+|\/+$/g,``)}function b(e,t,n=v){let r=y(e);if(!r)return[];let i=[e,r];if(r===y(t)){i.push(t);let e=y(t);e===`Trash`||e.toLowerCase()===`trash`?i.push(n,v,v.toLowerCase()):n!==`Trash`&&y(n)!==e&&i.push(n)}return Array.from(new Set(i.map(y).filter(Boolean)))}function x(e){let t=new Map;for(let[n,r]of Object.entries(e))r.id&&t.set(y(n),r);return e=>{let n=t.get(y(e));if(n)return{id:n.id,name:n.name??n.id,folderId:n.folderId??null,isFolder:!0}}}function S(){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)}`}var C=/^(utm_[a-z0-9_]+|fbclid|gclid|igshid|mc_cid|mc_eid)$/i;function w(e){try{return decodeURIComponent(e.replace(/\+/g,` `))}catch{return e}}function T(e){let t=new URL(e.trim());t.hash=``,t.hostname=t.hostname.toLowerCase(),(t.protocol===`https:`&&t.port===`443`||t.protocol===`http:`&&t.port===`80`)&&(t.port=``);let n=(t.search.startsWith(`?`)?t.search.slice(1):t.search).split(`&`).filter(Boolean).map(e=>{let t=e.indexOf(`=`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1);return{pair:e,key:w(n),value:w(r)}}).filter(({key:e})=>!C.test(e)).sort((e,t)=>{let n=e.key.localeCompare(t.key);return n===0?e.value.localeCompare(t.value):n});return t.search=n.length?`?${n.map(({pair:e})=>e).join(`&`)}`:``,t.toString()}function E(e){try{return T(e)}catch{return e.trim()}}var D=``,O=18e5;function k(e){return e==null||e===``?D:e}function A(e){if(e==null)return 1/0;let t=Number(e);return Number.isFinite(t)&&t>=0?t:1/0}function j(e){return!e||typeof e.search!=`string`?!1:e.search.trim().length>0}function M(e){if(!e)return null;let t=e.folderId;return t==null?null:String(t)}function N(e){return!!e&&!!e.isFolder}function P(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.code===`path_folder_not_found`||t.code===`folder_not_found`||t.code===`FolderNotFound`||t.data?.code===`path_folder_not_found`||t.data?.code===`folder_not_found`||t.status===404||t.data?.data?.status===404}function F(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 I(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?F(a):``;return`${o}${s?`|${s}`:``}`}var L=class e{constructor(){this.entities=new Map,this.childrenByParent=new Map,this.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&&!N(t)?t:void 0}getFolder(e){let t=this.getEntity(e);return t&&N(t)?t:void 0}getChildrenIds(e,t={}){let n=k(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){let t=E(e);for(let n of this.entities.values()){let r=n.value.url;if(r&&(r===e||E(r)===t))return n.value}return null}upsertEntity(e){let t=this.entities.get(e.id)??null,n=t?t.value:null,r=n?M(n):null,i=M(e),a=n?N(n):!1,o=N(e),s;if(n&&N(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=k(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=k(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||!N(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=M(n),i=k(r),a=this.childrenByParent.get(i);return a&&(N(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||!N(t.value))return{deletedFolderRecords:[],deletedFileSystemItemRecords:[]};let n=[{id:e,parentId:M(t.value)}],r=[],i=[];for(;n.length;){let e=n.shift();r.push(e);let t=this.childrenByParent.get(k(e.id));if(t){for(let e of Array.from(t.folders)){let t=this.entities.get(e);t&&n.push({id:e,parentId:M(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=k(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=k(a.id);this.childrenByParent.delete(s);let c=k(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=k(M(r)),a=this.childrenByParent.get(i);a&&(N(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(N(r)&&N(o)){let e=r.childrenCount;e!==void 0&&(o.childrenCount=e)}this.entities.set(e,{value:o,updatedAt:this.now()});let s=k(t),c=this.childrenByParent.get(s);return c||(c={files:new Set,folders:new Set},this.childrenByParent.set(s,c)),N(o)?c.folders.add(e):c.files.add(e),{...o}}copyFileSystemItem(e,t,n){let r=this.entities.get(e)??null;if(!r||N(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||!N(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&&this.now()-n.updatedAt>t}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=k(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=k(M(t));if(!l.has(e))continue}if(i===`file`&&N(t)||i===`folder`&&!N(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}},R=class e{constructor(e={},t=O,n,r,i=new s,a=P){this.views=new Map,this.maxViewsPerParent=50;let o=_(e);this.strategy={allowSortedInsert:o.allowSortedInsert??!0,allowSearchInsert:o.allowSearchInsert??!0,invalidateOnPaginationFull:o.invalidateOnPaginationFull??!0,preloadPagesBefore:o.preloadPagesBefore??0,preloadPagesAfter:o.preloadPagesAfter??1,comparator:o.comparator,filterMatch:o.filterMatch,hasSortValue:o.hasSortValue},this.ttl=t,this.errorTtl=n??t,this.entityTtl=r??t,this.failedRequests=i,this.isFolderNotFoundError=a}setServerChildrenCountHandler(e){this.serverChildrenCountHandler=e}setChildrenCountInvalidator(e){this.childrenCountInvalidator=e}now(){return Date.now()}parentKey(e){return k(e??null)}isExpired(e){return e==null||this.ttl!==1/0&&this.now()-e>this.ttl}areEntitiesStale(e,t){return!e||e.some(e=>!t.getEntity(e)||t.isEntityStale(e,this.entityTtl))}isEntityTypeCompatible(e,t){return!!(!t||t===`all`||t===`file`&&!N(e)||t===`folder`&&N(e))}markViewStaleForReload(e){e.view.meta={...e.view.meta??{},stale:!0},e.view.updatedAt=this.now(),e.view.loadId=S(),e.view.abortController&&(e.view.abortController.abort(),e.view.abortController=void 0)}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=I(t??{}),o=this.views.get(i);o||(o=new Map,this.views.set(i,o));let c=s.childrenViewKey(i,a),l=o.get(a);l||(l={params:t,view:{promise:null,value:void 0,meta:void 0,updatedAt:0,loadId:null}},o.set(a,l),this.cleanupOldViews(o));let u=this.failedRequests.getFreshError(c,this.errorTtl);if(u!=null)throw u;if(l.view.value&&!this.isExpired(l.view.updatedAt)&&!this.areEntitiesStale(l.view.value,r)&&!l.view.meta?.stale){let e=l.view.value.map(e=>r.getEntity(e)).filter(Boolean),t=l.params?.itemType||`all`;return{items:e.filter(e=>this.isEntityTypeCompatible(e,t)),...l.view.meta??{}}}if(l.view.promise)return l.view.promise;let d=S();l.view.loadId=d;let f=(async()=>{try{let a=await n(e,t),o=j(t),s=o?{...a,total:void 0}:a,u=this.views.get(i)?.get(I(t));if(!u||u.view.loadId!==d){let e=Error(`StaleLoad`);throw e.name=`StaleLoad`,e}for(let e of s.items)r.upsertEntity(e);l.view.value=s.items.map(e=>e.id);let{items:f,...p}=s,m={...p};l.view.meta=m,l.view.meta&&(l.view.meta.stale=!1),this.failedRequests.delete(c),l.view.updatedAt=this.now(),!o&&typeof m.total==`number`&&(this.serverChildrenCountHandler?this.serverChildrenCountHandler(e??null,m.total,r):r.updateServerChildrenCount(e,m.total));let h=this.strategy.preloadPagesAfter??0,g=this.strategy.preloadPagesBefore??0,_=A(t?.pageSize);if((h>0||g>0)&&Number.isFinite(_)){let i=e,a={...t},o=typeof m.totalPages==`number`?m.totalPages:1,s=t?.page??1,c=_,l=n,u=d;setTimeout(()=>{this.preloadPagesAsync(i,a,s,o,c,h,g,r,m,l,u)},0)}return s}catch(e){if(e?.name===`StaleLoad`)throw this.failedRequests.delete(c),l.view.value=void 0,l.view.updatedAt=this.now(),e;if(this.isFolderNotFoundError(e))return this.failedRequests.delete(c),l.view.value=[],l.view.meta={total:0,totalPages:0},l.view.updatedAt=this.now(),{items:[],total:0,totalPages:0};throw this.failedRequests.setError(c,e),l.view.value=void 0,l.view.updatedAt=this.now(),e}finally{l.view.promise=null}})();return l.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(I(t));if(!d||u!=null&&d.view.loadId!==u)return;let f=c.get(I(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(I(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=I(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(e){console.debug(`Preload failed silently:`,e)}};if(a>0&&n<p)for(let e=1;e<=Math.min(a,p-n);e++){let r=n+e,i=I({...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=I({...t,page:r}),a=c.get(i);(!a?.view.value||this.isExpired(a.view.updatedAt))&&m(r)}}catch(e){console.debug(`Preload process failed:`,e)}}removeEmptyPageIfNeeded(e,t,n,r,i){if(t.view.value&&t.view.value.length===0&&n<r){let t=I({...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=A(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))}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=I({...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=I({...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=I(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}canCompareInSortedView(e,t){let n=e.params??{};return!n.sortBy&&!n.sortOrder||!this.strategy.hasSortValue||this.strategy.hasSortValue(t,e.params)}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)||!this.canCompareInSortedView(e,t))return!1;let a=e.view.value.map(e=>n.getEntity(e));if(a.some(e=>!e))return!1;if(a.length===0){let n=e.params??{};if(n.sortBy||n.sortOrder){let n=r(t,t,e.params);if(typeof n!=`number`||Number.isNaN(n))return!1}return e.view.value.includes(t.id)?(e.view.updatedAt=this.now(),!0):(e.view.value=[t.id],e.view.updatedAt=this.now(),!0)}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(),!0)}updateChildrenCountForOperation(e,t,n,r){let i=M(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??null,-1),this.adjustChildrenCount(r,i,1),this.childrenCountInvalidator?.(n??null),this.childrenCountInvalidator?.(i)}}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=A(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)),this.markViewStaleForReload(e));continue}if(!e.view.value){e.view.meta&&(e.view.meta.stale=!0),e.view.loadId=S(),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)){this.markViewStaleForReload(e);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)}}}}shouldInvalidateCompletely(e,t,n,r,i,a){return!!(i&&a>1&&(t===`insert`||t===`delete`||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;let o=e.params??{};return this.strategy.filterMatch(t,o)?this.tryInsertSorted(e,t,n)?!0:o.sortBy||o.sortOrder?!1:!r||e.view.value.length<i?(e.view.value.push(t.id),!0):!1:!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=S(),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)){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)}if(t.view.updatedAt=Date.now(),i&&(t.view.value?.length??0)>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 this.markViewStaleForReload(t)}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 this.markViewStaleForReload(t);t.view.loadId=S(),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=S(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0);return}if(l&&(a||o)){t.view.value=t.view.value.filter(e=>e!==s.id),this.tryReinsertEntity(t,s,c,i,r)?(t.view.updatedAt=Date.now(),t.view.loadId=S(),t.view.abortController&&(t.view.abortController.abort(),t.view.abortController=void 0)):this.markViewStaleForReload(t);return}if(l){t.view.updatedAt=Date.now(),t.view.loadId=S(),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)){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()}else this.markViewStaleForReload(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 this.markViewStaleForReload(t);t.view.loadId=S(),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=S(),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=S(),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=n?.errorTtl??t?.errorTtl??r,a=n?.failedRequests??new s,o=new e({},r,i,void 0,a,n?.isFolderNotFoundError);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)}o.views.set(e,t)}return o}},z=class e{invalidateChildrenCountCache(e){let t=k(e??``);this.childrenCountPromises.delete(t),this.failedRequests.delete(s.childrenCountKey(t))}constructor(e={},t=O,n,r){this.childrenCountPromises=new Map,this.isFolderNotFoundError=r?.isFolderNotFoundError??P,this.failedRequests=new s,this.ttl=r?.ttl??t,this.errorTtl=r?.errorTtl??n??this.ttl,this.entities=new L,this.views=new R(e,this.ttl,this.errorTtl,void 0,this.failedRequests,this.isFolderNotFoundError),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?M(t):null,r=M(e),i=t?N(t):!1,a=N(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),k(n)===k(e))return!0;let t=this.entities.getEntity(n);if(!t)break;n=M(t),n===null&&(n=D)}return!1}moveEntity(e,t){let n=this.entities.getEntity(e);if(!n||N(n)&&t!==null&&this.isAncestor(e,t))return null;let r=M(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(N(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,S());for(let n of i){let i=this.entities.getFolder(n),a=o.get(n),s=M(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=S(),i={...n,id:r,folderId:t};this.entities.upsertEntity(i)}}a=this.entities.getEntity(o.get(e))??null}else{let i=n??S();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(N(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}{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){this.views.forceInvalidateChildrenViews(e??null),this.invalidateChildrenCountCache(e);return}let n=new Set;if(N(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)}}invalidateListingViews(e){this.views.forceInvalidateChildrenViews(e??null)}getChildrenIds(e){return this.entities.getChildrenIds(e)}searchByName(e,t){return this.entities.searchByName(e,t)}async getChildrenCount(e=``,t){let n=k(e),r=s.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),this.isFolderNotFoundError(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,r){let i=r?.ttl??t?.ttl??18e5,a=r?.errorTtl??t?.errorTtl??i,o=new e(n??{},i,a,r),s=L.fromJSON(t?.entities??{}),c=R.fromJSON(t?.views??{},{failedRequests:o.failedRequests,ttl:i,errorTtl:a,isFolderNotFoundError:r?.isFolderNotFoundError});if(n){let e=_(n);c.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}}return o.entities=s,o.views=c,c.setServerChildrenCountHandler((e,t,n)=>{o.handleServerReportedChildrenCount(e,t,n??s)}),c.setChildrenCountInvalidator(e=>{o.invalidateChildrenCountCache(e)}),o}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&&(console.warn(`Conflict: folder "${r}" has childrenCount=${i} but server says total=${t}`),this.views.forceInvalidateChildrenViews(r)),n.updateServerChildrenCount(r,t)}},B=``,V=`Trash`,ee=`Edited`,H=1e4,U=1e4,W=25,G=10;function K(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 q(e){return e==null?``:String(e)}function J(e){return{...e,name:q(e.name)}}function Y(e){return(e??[]).map(J)}function X(e){return!e||typeof e!=`object`||!(`name`in e)?e:{...e,name:q(e.name)}}function Z(e){return e?e.replaceAll(`\\`,`/`).split(`/`).filter(Boolean):[]}var Q=class{_getTrashPath(){return this._pathOptions.trashPath||V}_getPathLookupCandidates(e){return b(e,this._getTrashPath(),v)}_folderFromResolvedPath(e,n){if(e.isFolder!==!0)throw new t(e.isFolder===!1?`Path '%s' resolves to a file, not a folder`.replace(`%s`,n):`Path '%s' resolved to an item that is not marked as a folder`.replace(`%s`,n),`ValidationError`);if(!e.id)throw new t(`Path '%s' resolved to a folder without id`.replace(`%s`,n),`ValidationError`);let r={id:e.id,name:e.name||e.id,parentId:e.folderId};return this._cache.upsertEntity(J({id:r.id,name:r.name,folderId:r.parentId??null,isFolder:!0})),r}async _resolveFolderByPath(e){if(typeof this._dataProvider.findItemByPath==`function`)for(let t of this._getPathLookupCandidates(e)){let e=await this._dataProvider.findItemByPath(t);if(e)return this._folderFromResolvedPath(e,t)}}async _findOrCreateFolderByPath(e){let n=Z(e);if(n.length>G)throw new t(`Path depth exceeds maximum limit of %s`.replace(`%s`,String(G)),`ValidationError`);let r=await this._resolveFolderByPath(e);if(r)return r;let i;for(let r of n){let{files:n}=await this.getFiles({folderId:i?.id||``,itemType:`folder`}),a=n.find(e=>e.name===r);if(a){if(!a.isFolder)throw new t(`Path component '%s' in '%s' is not a folder`.replace(`%s`,r).replace(`%s`,e),`ValidationError`);i={id:a.id,name:a.name,parentId:a.folderId}}else{if(typeof this._dataProvider.createFolder!=`function`)throw new t(`Create folder operation is not supported by data provider`,`UnsupportedOperation`);i=await this.createFolder({name:r,parentId:i?.id})}}return i}async getTrashFolder(){let e=await this._findOrCreateFolderByPath(this._getTrashPath());if(!e)throw new t(`Trash folder path '%s' could not be resolved`.replace(`%s`,this._getTrashPath()),`FolderNotFound`);return e}async getTempFolder(){let e=this._pathOptions.tempPath??ee;if(e)try{return await this._findOrCreateFolderByPath(e)}catch(e){if(e instanceof t&&e.code===`ValidationError`)throw e;console.warn(`getTempFolder: temp folder unavailable, falling back to root`,e);return}}constructor(e,t={},n,r={}){this._dataProvider=e,this._options=t,this._pathOptions=n,this._blobFetchForceReloadOnceIds=new Set,this._mutationRegistry=new c,this._mapItem=async({childrenCount:e,...t})=>{let n=J(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}},this._config=r,this._useSoftDelete=this._pathOptions.useSoftDelete,this._rootId=this._pathOptions.rootId||B,this._enableTrash=this._options.enableTrash===void 0||this._options.enableTrash,this._validateDuplicates=this._dataProvider.validateDuplicates,this._cache=new z(t.cacheStrategy||{},t.cacheStrategy?.ttl,t.cacheStrategy?.errorTtl),this.setController({invalidateItemCache:e=>{this._cache.forceInvalidate(e)},getCachedItem:e=>this._cache.getEntity(e)});let i=Object.getPrototypeOf(this);for(let e of Object.getOwnPropertyNames(i)){let t=Object.getOwnPropertyDescriptor(i,e);e!==`constructor`&&typeof t?.value==`function`&&(this[e]=t.value.bind(this))}}setController(e){typeof this._dataProvider.setController==`function`&&this._dataProvider.setController(e)}async clearCache(e){let t=e??this._rootId;this._cache.forceInvalidate(t),this._cache.invalidateListingViews(t),typeof this._dataProvider.clearCache==`function`&&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,n=!1){if(!e||e.trim().length===0)throw new t(n?`Folder name cannot be empty`:`File name cannot be empty`,n?`FolderInvalidName`:`FileInvalidName`);if(/[/\\:*?"<>|]/.test(e)){let r=n?`FolderInvalidName`:`FileInvalidName`;throw new t(n?`Folder name contains invalid characters: %s`.replace(`%s`,e):`File name contains invalid characters: %s`.replace(`%s`,e),r)}}_validateTargetFolderType(e){let n=this.normalizeId(e);if(n===this._rootId)return;let r=this._cache.getEntity(n);if(r&&!r.isFolder)throw new 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){if(e.url)return e.url;try{return typeof this._dataProvider?.getUrl==`function`&&this._dataProvider.getUrl(e)||void 0}catch(e){console.log(e)}}}async _getThumbnailUrl(e){if(e){if(e.thumbnailUrl)return e.thumbnailUrl;try{return typeof this._dataProvider?.getThumbnailUrl==`function`&&this._dataProvider.getThumbnailUrl(e)||void 0}catch(e){console.log(e)}}}_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=J(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);if(n)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?H: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:W: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?U:d);let x=v?U: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):H,i=await this._dataProvider.getItems({...t,folderId:e,limit:r}),a=Y(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)=>u(e,r,{sortBy:t,sortOrder:n}))}async getFileData(e,n){let r=this.normalizeId(typeof e==`string`?e:e.id),i=n;this._blobFetchForceReloadOnceIds.delete(r)&&(i={...n,forceReload:!0});let a=this._cache.getEntity(r)||(typeof e==`string`?{id:r,name:``,folderId:this._rootId,isFolder:!1}:{...e,childrenCount:e.childCount});if(typeof this._dataProvider.getFileData==`function`)return await this._dataProvider.getFileData(a,i);if(!a.url&&typeof this._dataProvider.getUrl!=`function`)throw new t(`Cannot read file`,`FileReadError`);let o=a.url||(typeof this._dataProvider.getUrl==`function`?await this._dataProvider.getUrl(a):``);if(o)return(await(this._config.fetchWithProxy??fetch)(o,i?.forceReload?{cache:`no-store`}:void 0)).blob();throw new t(`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=J(t);return this._cache.upsertEntity(e),e}}catch(e){console.log(e)}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:W});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 n=this.normalizeId(e.folderId??this._rootId);if(typeof this._dataProvider.uploadFile!=`function`)throw new t(`Upload file operation is not supported by data provider`,`UnsupportedOperation`);if(this._validateName(e.name,!1),this._validateDuplicates&&this._checkNameExistsInCache(n,e.name,!1))throw new t(`File '%s' already exists in target folder`.replace(`%s`,e.name),`FileAlreadyExists`);let r=await this._dataProvider.uploadFile({...e,folderId:n}),i=J({name:e.name,size:e.size,...r,folderId:r.folderId??n});return this._cache.upsertEntity(i),i}async uploadFiles(e){let n=e.items.some(e=>e.noFolder)?await this.getTempFolder():null;e={...e,items:e.items?.map(e=>({...e,folderId:e.noFolder?n?.id:e.folderId}))};for(let t of e.items)t.folderId&&(e.folderId=t.folderId);let r=e.items||[],i=e.folderId??this._rootId,a=this.normalizeId(i);if(this._validateDuplicates){for(let e of r)if(e.name){this._validateName(e.name,!1);let n=this.normalizeId(e.folderId??a);if(this._checkNameExistsInCache(n,e.name,!1))throw new t(`File '%s' already exists in target folder`.replace(`%s`,e.name),`FileAlreadyExists`)}}let o={detailed:Array(r.length),success:!0};if(typeof this._dataProvider.uploadFiles==`function`){let e=r.map(e=>({...e,folderId:this.normalizeId(e.folderId??a)})),t=await this._dataProvider.uploadFiles({folderId:a,items:e});o=K(t,e=>{if(e)return{id:e.id,name:q(e.name),folderId:e.folderId,url:e.url,thumbnailUrl:e.thumbnailUrl,thumbnail:e.thumbnail}});let n=t?.detailed;if(o.detailed&&o.detailed.length){for(let e=0;e<o.detailed.length;e++){let t=o.detailed[e];if(t&&t.success){let r=t.data,i=r?.id??t.requestId,o=n?.[e]?.data,s=J({...o,...r,id:i,folderId:r?.folderId??o?.folderId??a,isFolder:!1});this._cache.upsertEntity(s),t.requestId=i}}o.success===void 0&&(o.success=!o.detailed.some(e=>!e.success))}else o.success=!o.error&&!!o.success}else if(typeof this._dataProvider.uploadFile==`function`)o.detailed=await Promise.all(r.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}}})),o.success=!o.detailed.some(e=>!e.success);else throw new t(`Upload files is not supported by data provider`,`UnsupportedOperation`);if(o.success&&this._enableTrash)try{this._cache.forceInvalidate(a)}catch{}return o}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,n){let r={success:!0,detailed:[]},i=n.permanent?null:await this.getTrashFolder();if(typeof this._dataProvider.deleteItems==`function`){if(r=K(await this._dataProvider.deleteItems(e.map(e=>this._cache.getEntity(e)),n),e=>e),r.success){let t=r.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`&&(r.detailed=await Promise.all(e.map(async e=>{let r=this._cache.getEntity(e);if(!r)return{requestId:e,success:!1,error:new t(`Item with id '%s' not found`.replace(`%s`,e),`FileNotFound`)};try{return await this._dataProvider.deleteItem(r,n),i?this._cache.moveEntity(e,i.id):this._cache.deleteEntity(e),{requestId:e,success:!0}}catch(t){return{requestId:e,error:t,success:!1}}})),r.success=!r.detailed.some(e=>!e.success));if(r.success&&i)try{this._cache.forceInvalidate(i.id)}catch{}return r}async hardDeleteItem(e){let n=this._cache.getEntity(e);if(!n)throw new t(`Item with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);if(typeof this._dataProvider.deleteItem!=`function`)throw new t(`Delete item operation is not supported by data provider`,`DeleteNotAllowed`);if(await this._dataProvider.deleteItem(n,{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(){if(!this._enableTrash)throw new t(`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 t(`Clean trash is not supported by data provider`,`UnsupportedOperation`)}async createFolder({name:e,parentId:n,is_force_create:r}){let i=this.normalizeId(n??this._rootId);if(this._validateName(e,!0),this._validateDuplicates&&this._checkNameExistsInCache(i,e,!0))throw new t(`Folder '%s' already exists in parent folder`.replace(`%s`,e),`FolderAlreadyExists`);let a=await this._dataProvider.createFolder(e,i,r),o=J({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(e){return console.error(`Error moving folder to trash:`,e),await this.hardDeleteItem(t)}return await this.hardDeleteItem(t)}finally{this._mutationRegistry.endDeleting(n)}}async renameFolder(e,n){if(typeof this._dataProvider.renameItem!=`function`)throw new t(`Rename folder is not supported`,`RenameNotAllowed`);let r=this.normalizeId(e),i=this._cache.getEntity(r);if(!i)throw new t(`Folder with id '%s' not found in cache`.replace(`%s`,e),`FolderNotFound`);if(this._validateName(n,!0),this._validateDuplicates){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,n,!0,r))throw new t(`Folder '%s' already exists in parent folder`.replace(`%s`,n),`FolderAlreadyExists`)}let a=X(await this._dataProvider.renameItem(i,n));return this._cache.upsertEntity(J({...this._cache.getEntity(a.id),...a})),this._cache.getEntity(a.id)}async renameFile(e,n){if(typeof this._dataProvider.renameItem!=`function`)throw new t(`Rename file is not supported`,`RenameNotAllowed`);let r=this._cache.getEntity(e);if(!r)throw new t(`File with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);let i=this.normalizeId(e);if(this._validateName(n,!1),this._validateDuplicates){let e=this.normalizeId(r.folderId);if(this._checkNameExistsInCache(e,n,!1,i))throw new t(`File '%s' already exists in parent folder`.replace(`%s`,n),`FileAlreadyExists`)}let a=X(await this._dataProvider.renameItem(r,n));return a&&this._cache.upsertEntity(J({...this._cache.getEntity(i),...a})),this._cache.getEntity(i)}async moveItem({itemId:e,targetFolderId:n,isFolder:r}){if(typeof this._dataProvider.moveItem!=`function`)throw new t(`Move item operation is not supported by data provider`,`MoveNotAllowed`);let i=this.normalizeId(n);this._validateTargetFolderType(n);let a=this._cache.getEntity(e);if(!a){let t=X(await this._dataProvider.moveItem({id:e,folderId:i,isFolder:r},i));if(t.id===e)this._cache.upsertEntity(J({...t,folderId:i}));else{try{this._cache.deleteEntity(e)}catch{}this._cache.upsertEntity(J({...t,folderId:i}))}return!0}if(a.isFolder){if(e===i)throw new t(`Cannot move folder into itself`,`MoveIntoSelf`);if(this._isAncestor(e,i))throw new t(`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 t(`${a.isFolder?`Folder`:`File`} '${a.name}' already exists in target folder`,e)}let o=X(await this._dataProvider.moveItem(a,i));if(o.id===e){let t=this._cache.moveEntity(e,i);return this._cache.upsertEntity(J({...t,...o})),!0}{let t=this._cache.deleteEntity(e);return this._cache.upsertEntity(J({...t,...o,folderId:i})),!0}}async moveItems(e,n){let r=this.normalizeId(e);this._validateTargetFolderType(e);let i=n.map(e=>this._cache.getEntity(e));for(let e of i)if(e){if(e.isFolder){if(e.id===r)throw new t(`Cannot move folder '%s' into itself`.replace(`%s`,e.name),`MoveIntoSelf`);if(this._isAncestor(e.id,r))throw new t(`Cannot move folder '%s' into its descendant`.replace(`%s`,e.name),`MoveIntoDescendant`)}if(this._validateDuplicates&&r!==this.normalizeId(e.folderId)&&e.name&&this._checkNameExistsInCache(r,e.name,!!e.isFolder,e.id)){let n=e.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${e.isFolder?`Folder`:`File`} '${e.name}' already exists in target folder`,n)}}let a={detailed:Array(i.length),success:!0};if(typeof this._dataProvider.moveItems==`function`)a=K(await this._dataProvider.moveItems(i,r),e=>e);else if(typeof this._dataProvider.moveItem==`function`)a.detailed=await Promise.all(n.map(async(e,t)=>{let n=i[t]||{id:e,folderId:null,isFolder:!1,name:e};try{return{requestId:e,data:X(await this._dataProvider.moveItem(n,r)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new t(`Move items is not supported`,`MoveNotAllowed`);if(a.success){let e=a.detailed||n.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,r),t.data&&this._cache.upsertEntity(J({...this._cache.getEntity(t.requestId),...t.data,folderId:r}));else{let e=this._cache.deleteEntity(t.requestId);this._cache.upsertEntity(J({...e,...t.data,folderId:r}))}}return a}return{success:!1,error:a.error||new t(`Move items failed`,`MoveNotAllowed`)}}async copyItem({itemId:e,targetFolderId:n}){if(typeof this._dataProvider.copyItem!=`function`)throw new t(`Copy item is not supported`,`CopyNotAllowed`);let r=this.normalizeId(n);this._validateTargetFolderType(n);let i=this._cache.getEntity(e);if(!i){let t=X(await this._dataProvider.copyItem({id:e,folderId:r},r));return this._cache.copyEntity(e,r,t.id),this._cache.upsertEntity(J({...t,folderId:r})),!0}if(this._validateDuplicates&&i.name){let n=r===this.normalizeId(i.folderId)?e:void 0;if(this._checkNameExistsInCache(r,i.name,!!i.isFolder,n)){let e=i.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${i.isFolder?`Folder`:`File`} '${i.name}' already exists in target folder`,e)}}let a=X(await this._dataProvider.copyItem(i,r));return this._cache.copyEntity(e,r,a.id,{...a,folderId:r})||this._cache.upsertEntity(J({...a,folderId:r})),!0}async copyItems(e,n){let r=this.normalizeId(e);this._validateTargetFolderType(e);let i=n.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 n=o[e];if(n&&n.name){let i=r===this.normalizeId(n.folderId)?a[e]:void 0;if(this._checkNameExistsInCache(r,n.name,!!n.isFolder,i)){let e=n.isFolder?`FolderAlreadyExists`:`FileAlreadyExists`;throw new t(`${n.isFolder?`Folder`:`File`} '${n.name}' already exists in target folder`,e)}}}let s={detailed:Array(o.length),success:!0};if(typeof this._dataProvider.copyItems==`function`)s=K(await this._dataProvider.copyItems(o,r),e=>e);else if(typeof this._dataProvider.copyItem==`function`)s.detailed=await Promise.all(a.map(async(e,t)=>{let n=o[t]||{id:e,folderId:null,isFolder:!1};try{return{requestId:e,data:X(await this._dataProvider.copyItem(n,r)),success:!0}}catch(t){return{requestId:e,success:!1,error:t}}}));else throw new t(`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){if(t.data?.id){let e=t.data.folderId||r;!this._cache.copyEntity(t.requestId,e,t.data.id,{...t.data,folderId:e})&&t.data&&this._cache.upsertEntity(J({...t.data,folderId:e}))}else console.error(`batchResult in copy method must have ids`)}}else if(!s.detailed)throw new t(`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=J({...await this._dataProvider.uploadFileByUrl(e.url,t,{eventSource:e.eventSource}),folderId:t});return this._cache.upsertEntity(n),n}catch(e){throw console.error(`uploadFileByUrl error:`,e),e}}async updateFile(e,n){if(typeof this._dataProvider.updateFile!=`function`)throw new t(`Update file is not supported`,`UnsupportedOperation`);let r=this.normalizeId(e),i=this._cache.getEntity(r);if(!i)throw new t(`File with id '%s' not found in cache`.replace(`%s`,e),`FileNotFound`);if(n.name&&n.name!==i.name&&this._validateName(n.name,!1),this._validateDuplicates&&n.name&&n.name!==i.name){let e=this.normalizeId(i.folderId);if(this._checkNameExistsInCache(e,n.name,!1,r))throw new t(`File '%s' already exists in parent folder`.replace(`%s`,n.name),`FileAlreadyExists`)}let a=X(await this._dataProvider.updateFile(i,{...n}));return this._cache.upsertEntity(J({...this._cache.getEntity(r),...a,...n})),this._cache.getEntity(r)}},te=``,ne=`Trash`,re=class{constructor(e,t=te,n=v,r=ne,i=!0){this._inner=e,this.rootPath=t,this.trashId=n,this.trashPath=r,this.ensureFolderTrailingSlash=i,this._pathToId=new Map,this._idToPath=new Map,this.validateDuplicates=this._inner.validateDuplicates??!1,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}));let a=this;typeof this._inner.deleteItems!=`function`&&(a.deleteItems=void 0),typeof this._inner.deleteItem!=`function`&&(a.deleteItem=void 0),typeof this._inner.moveItems==`function`?a.moveItem=void 0:a.moveItems=void 0,typeof this._inner.copyItems==`function`?a.copyItem=void 0:a.copyItems=void 0,typeof this._inner.uploadFiles==`function`?a.uploadFile=void 0:a.uploadFiles=void 0,typeof this._inner.clearCache!=`function`&&(a.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??!1),folderId:this.pathForId(t.folderId??``,t.isFolder??!1)}}}})}clearCache(e){if(typeof this._inner.clearCache==`function`)return this._inner.clearCache(e)}findItemByPath(e){if(typeof this._inner.findItemByPath!=`function`)return;let t=(e,t,n)=>{if(!e)return;if(e.isFolder!==!0)return e;let r=y(y(n)===y(this.trashPath)?this.trashPath:t),i=e.folderId!=null&&e.folderId!==``?y(e.folderId):this.rootPath;return{...e,id:this._getOrGenerateId(r),name:e.name,folderId:i===y(this.rootPath)?this.rootPath||``:this._getOrGenerateId(i),isFolder:!0}},n=b(e,this.trashPath,this.trashId);return(async()=>{for(let r of n){let n=await Promise.resolve(this._inner.findItemByPath(r)),i=t(n,r,e);if(i)return i}})()}_getOrGenerateId(e){if(e===this.rootPath)return``;let t=y(e);if(t===y(this.trashPath))return this.trashId;if(this._pathToId.has(t))return this._pathToId.get(t);let n=S();return this._pathToId.set(t,n),this._idToPath.set(n,t),n}pathForId(e,n,r){if(e===``||e===void 0)return this.rootPath;if(e===this.trashId)return this.trashPath;let i=this._idToPath.get(e);if(!i){if(r)return`unknown folder ${e}`;throw new t(`Path for id '${e}' not found in mapping`,`FileNotFound`)}let a=0;for(;a<this.rootPath.length&&this.rootPath[a]===`/`;)a++;if(a){let e=0;for(;e<i.length&&i[e]===`/`;)e++;let t=i.slice(e);i=`/`.repeat(a)+t}return n&&this.ensureFolderTrailingSlash&&!i.endsWith(`/`)&&(i+=`/`),i}_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,n){if(typeof this._inner.renameItem!=`function`)throw new t(`Rename item is not supported by inner storage`,`RenameNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=r,{...a}=await this._inner.renameItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);return this._updateIdMapping(e.id,a.id),e.isFolder&&this.remapCachedFolderContents(e.id,i,a.id),a.folderId&&(a={...a,folderId:this._getOrGenerateId(a.folderId)}),{...a,id:this._getOrGenerateId(a.id)}}async deleteItem(e,n){if(typeof this._inner.deleteItem!=`function`)throw new t(`Delete item is not supported by inner storage`,`DeleteNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1);await this._inner.deleteItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n),this.recursivelyRemoveMappings(e.id,r)}async uploadFile(e){if(typeof this._inner.uploadFile!=`function`)throw new t(`Upload file is not supported by inner storage`,`UnsupportedOperation`);let n=e.folderId?this.pathForId(e.folderId,!0):this.rootPath,r=await this._inner.uploadFile({...e,folderId:n}),i=this._getOrGenerateId(r.id),a=r.folderId?this._getOrGenerateId(r.folderId):this._getOrGenerateId(this.rootPath);return{...r,id:i,folderId:a}}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):``,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,n){if(typeof this._inner.moveItem!=`function`)throw new t(`Move item is not supported by inner storage`,`MoveNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=n?this.pathForId(n,!0):this.rootPath,a=await this._inner.moveItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},i);this._updateIdMapping(e.id,a.id),e.isFolder&&this.remapCachedFolderContents(e.id,r,a.id);let o=this._getOrGenerateId(a.id),s=a.folderId?this._getOrGenerateId(a.folderId):n;return{...a,id:o,folderId:s}}async moveItems(e,n){if(typeof this._inner.moveItems!=`function`)throw new t(`Move items is not supported by inner storage`,`MoveNotAllowed`);let r=n?this.pathForId(n,!0):this.rootPath,i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),a=await this._inner.moveItems(i,r),o=[];if(a.detailed&&a.detailed.length>0){let t=new Map;for(let n=0;n<a.detailed.length;n++){let r=a.detailed[n],i=r.requestId||(n<e.length?e[n].id:void 0);i&&t.set(i,r)}for(let r of e){let i=t.get(r.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(r)]:void 0);if(i?.success&&i.data){if(this._updateIdMapping(r.id,i.data.id),r.isFolder){let e=this.pathForId(r.id,r.isFolder??!1);this.remapCachedFolderContents(r.id,e,i.data.id)}o.push({requestId:r.id,success:!0,data:{...i.data,id:this._getOrGenerateId(i.data.id),folderId:i.data.folderId?this._getOrGenerateId(i.data.folderId):n||this._getOrGenerateId(this.rootPath)}})}else o.push({requestId:r.id,success:!1,error:i?.error||{message:`Move operation failed - no detailed result`,code:`MoveNotAllowed`}})}}else for(let t of e)o.push({requestId:t.id,success:!1,error:{message:`Move operation failed - no detailed results`,code:`MoveNotAllowed`}});return{success:a.success,detailed:o,error:a.error}}async copyItems(e,n){if(typeof this._inner.copyItems!=`function`)throw new t(`Copy items is not supported by inner storage`,`CopyNotAllowed`);let r=n?this.pathForId(n,!0):this.rootPath,i=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),a=await this._inner.copyItems(i,r),o=[];if(a.detailed&&a.detailed.length>0){let t=new Map;for(let n=0;n<a.detailed.length;n++){let r=a.detailed[n],i=r.requestId||(n<e.length?e[n].id:void 0);i&&t.set(i,r)}for(let r of e){let i=t.get(r.id)||(a.detailed.length===e.length?a.detailed[e.indexOf(r)]:void 0);if(i?.success&&i.data?.id){let e=this._getOrGenerateId(i.data.id);o.push({requestId:r.id,success:!0,data:{...i.data,id:e,folderId:i.data.folderId?this._getOrGenerateId(i.data.folderId):n||this._getOrGenerateId(this.rootPath)}})}else{let e=i?i.success?i.data?i.data.id?{message:`Unknown copy error`,code:`CopyNotAllowed`}:{message:`No ID in copied item data`,code:`CopyNotAllowed`}:{message:`No data returned from copy operation`,code:`CopyNotAllowed`}:i.error||{message:`Copy operation failed`,code:`CopyNotAllowed`}:{message:`No detailed result from copy operation`,code:`CopyNotAllowed`};o.push({requestId:r.id,success:!1,error:e})}}}else for(let t of e)o.push({requestId:t.id,success:!1,error:{message:`No detailed results from copy operation`,code:`CopyNotAllowed`}});let s=o.every(e=>e.success);return{success:s,detailed:o,error:s?void 0:a.error||{message:`Copy operation completed with errors`,code:`CopyNotAllowed`}}}async deleteItems(e,n){if(typeof this._inner.deleteItems!=`function`)throw new t(`Delete items is not supported by inner storage`,`DeleteNotAllowed`);let r=e.map(e=>({...e,id:this.pathForId(e.id,e.isFolder??!1),folderId:e.folderId?this.pathForId(e.folderId??``,!0):this.rootPath})),i=await this._inner.deleteItems(r,n),a=[];if(i.detailed&&i.detailed.length>0){let t=new Map;for(let n=0;n<i.detailed.length;n++){let r=i.detailed[n],a=r.requestId||(n<e.length?e[n].id:void 0);a&&t.set(a,r)}for(let r of e){let o=t.get(r.id)||(i.detailed.length===e.length?i.detailed[e.indexOf(r)]:void 0);if(o?.success){let e=this.pathForId(r.id,r.isFolder??!1);if(n.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??!1);this.remapCachedFolderContents(r.id,t,this.trashPath+`/`+e+(r.isFolder?`/`:``))}a.push({requestId:r.id,success:!0})}else a.push({requestId:r.id,success:!1,error:o?.error||{message:`Delete operation failed`,code:`DeleteNotAllowed`}})}}else for(let t of e)if(i.success){let e=this.pathForId(t.id,t.isFolder??!1);if(n.permanent)this.recursivelyRemoveMappings(t.id,e);else if(this._updateIdMapping(t.id,this.trashPath+`/`+e+(t.isFolder?`/`:``)),t.isFolder){let n=this.pathForId(t.id,t.isFolder??!1);this.remapCachedFolderContents(t.id,n,this.trashPath+`/`+e+(t.isFolder?`/`:``))}a.push({requestId:t.id,success:!0})}else a.push({requestId:t.id,success:!1,error:i.error||{message:`Delete operation failed`,code:`DeleteNotAllowed`}});let o=a.every(e=>e.success);return{success:o,detailed:a,error:o?void 0:i.error||{message:`Some items failed to delete`,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,n){if(typeof this._inner.copyItem!=`function`)throw new t(`Copy item is not supported by inner storage`,`CopyNotAllowed`);let r=this.pathForId(e.id,e.isFolder??!1),i=n?this.pathForId(n,!0):this.rootPath,a=await this._inner.copyItem({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},i),o=this._getOrGenerateId(a.id),s=a.folderId?this._getOrGenerateId(a.folderId):n??``;return{...a,id:o,folderId:s}}async updateFile(e,n){if(typeof this._inner.updateFile!=`function`)throw new t(`Update file is not supported by inner storage`,`UnsupportedOperation`);let r=this.pathForId(e.id,!1),{...i}=await this._inner.updateFile({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);return this._updateIdMapping(e.id,i.id),i.folderId&&(i={...i,folderId:this._getOrGenerateId(i.folderId)}),{...i,id:this._getOrGenerateId(i.id)}}async getFileData(e,n){let r=this.pathForId(e.id,!1);if(typeof this._inner.getFileData==`function`)return this._inner.getFileData({...e,id:r,folderId:this.pathForId(e.folderId??``,!0)},n);let i=e.url||(typeof this.getUrl==`function`?await this.getUrl(e):void 0);if(!i)throw new t(`Cannot get file data: no url and no inner.getFileData`,`FileReadError`);return fetch(i,n?.forceReload?{cache:`no-store`}:void 0).then(e=>e.blob())}async cleanTrash(){if(typeof this._inner.cleanTrash!=`function`)throw new t(`Clean trash is not supported by inner storage`,`UnsupportedOperation`);return await this._inner.cleanTrash()}};function ie(e){return typeof e!=`object`||!e?!1:`name`in e&&e.name===`DirectResourceFetchError`?!(`final`in e)||e.final!==!1:`final`in e&&e.final===!0}function $(e){if(ie(e)||e instanceof t)throw e}async function ae(e,t,n,r,i){let{fetchWithProxy:a,handleFileProxy:o,handleProxyUrl:s}=t,c={mode:`cors`,...i?.fetchInit},l;if(o)try{let t=await Promise.resolve(o(e));if(t)return r(t)}catch(e){$(e),l=e,console.warn(`handleFileProxy failed, falling back to next strategy`,e)}if(s)try{let t=await Promise.resolve(s(e));if(t&&t!==e)return r(await n(t))}catch(e){$(e),l=e,console.warn(`handleProxyUrl fetch failed, falling back to next strategy`,e)}if(a)try{let t=await Promise.resolve(a(e,c,{intent:`downloadBlob`}));if(!t.ok)throw Error(`HTTP ${t.status}`);return r(await t.blob())}catch(e){$(e),l=e,console.warn(`fetchWithProxy failed`,e)}if(!a)try{return r(await n(e))}catch(e){$(e),l=e}throw l instanceof Error?l:Error(`Failed to download file from the URL`)}e.DEFAULT_FILE_MANAGER_CACHE_TTL_MS=O,e.DataSourceProxyBase=Q,e.FailedRequestCache=s,e.FileManagerApiError=t,e.MutationRegistry=c,e.PathAwareStorageAdapter=re,e.TRASH_FOLDER_ID=v,e.TreeCache=z,e.ViewCacheManager=R,e.buildAssetsPath=a,e.compareFileSystemItems=u,e.createSystemFolderByPathResolver=x,e.defaultChildrenViewFilterMatch=h,e.defaultFileSystemItemComparator=m,e.defaultHasSortValue=g,e.defaultIsFolderNotFoundError=P,e.fetchRemoteImageBlobByUrl=ae,e.getAssetsBase=i,e.getTrashFolderLookupCandidates=b,e.hasComparableSortValue=f,e.joinUrls=r,e.mapHttpStatusToErrorCode=n,e.matchesChildrenViewFilter=p,e.normalizeSystemFolderPath=y,e.resolveSortParams=l,e.resolveViewStrategyOptions=_});
2
2
  //# sourceMappingURL=core.js.map