@ws-ui/store 1.13.9 → 1.13.10

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/dist/index.cjs.js CHANGED
@@ -163,8 +163,8 @@ catch
163
163
  end
164
164
 
165
165
  end
166
- `}],zl=e=>{const t=["folder","file"];return e.sort((r,a)=>r.type===a.type?r.name.localeCompare(a.name):t.indexOf(r.type)-t.indexOf(a.type))},Ae=(e,t)=>e.reduce((r,a)=>a.path===t.path&&a.type===t.type&&a.id===t.id?[...r,t]:a.children?[...r,{...a,children:zl(Ae(a.children,t))}]:[...r,a],[]),et=(e,t)=>e.reduce((r,a)=>r||(a.path===t?a:a.children?et(a.children,t):null),null),P_=[{name:v.FolderRootPath.WEBFORMS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.WEBFORMS,error:null,flags:{expanded:!1,loading:!1,cached:!1},tipKey:"editors:webform:explorer:webforms",config:{},isRoot:!0},{name:v.FolderRootPath.METHODS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.METHODS,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:v.FolderRootPath.CLASSES,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.CLASSES,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:v.FolderRootPath.SHARED,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.SHARED,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:"Debugger",type:v.FileFolderType.FOLDER,children:[],path:"Debugger",error:null,flags:{expanded:!1,cached:!0},config:{},isRoot:!0},{name:"Roles And Privileges",type:v.FileFolderType.ROLES,ext:"json",path:v.ROLES_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:roles"},supportedEditors:[{key:"editors:code",config:{language:"json",theme:"vs-dark"}}]},isRoot:!0},{name:"Model",type:v.FileFolderType.MODEL,ext:"4DModel",path:v.MODEL_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:model"},supportedEditors:[{key:"editors:code",config:{language:"json",theme:"vs-dark"}}]}},{name:"HTTP Handlers",type:v.FileFolderType.HTTP_HANDLERS,ext:"json",path:v.HTTP_HANDLERS_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:http-handlers"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]}},{name:"Localization",type:v.FileFolderType.LOCALIZATION,ext:"json",path:v.LOCALIZATION_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:localization"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]},isRoot:!0},{name:"Settings",type:v.FileFolderType.SETTINGS,ext:"json",path:v.SETTINGS_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:settings"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]},isRoot:!0}],jF=lf(),BF=!!fe.get(jF,"features.experimental.reports");BF&&P_.unshift({name:v.FolderRootPath.REPORTS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.REPORTS,error:null,flags:{expanded:!1,loading:!1,cached:!1},tipKey:"editors:report:explorer:reports",config:{},isRoot:!0});const D_=Mt({name:"explorer",initialState:P_,reducers:{renameClassesFolder:(e,t)=>{const{payload:r}=t,a=e.find(u=>u.name==="Classes");if(!a||!a.children||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes"),i=(u,l)=>{switch(u){case"dataclass":return l;case"entity":return`${l}Entity`;default:return`${l}Selection`}};return r.forEach(({newName:u,prevName:l})=>{var d;a.children=(d=a.children)==null?void 0:d.map(f=>{var h;return f.path.endsWith("[<QODLY_ID>]")&&f.name===l?{...f,name:u,path:`Classes/${u}___[<QODLY_ID>]`,children:(h=f.children)==null?void 0:h.map(g=>{var b;return{...g,path:g.path.replace(l,u),info:{...g.info,filename:i((b=g.info)==null?void 0:b.kind,u),dataclass:u}}})}:f})}),e[s]=a,e},removeClassesFolder:(e,t)=>{const{payload:r}=t;if(!r||r.length===0)return e;const a=e.find(u=>u.name==="Classes");if(!(a!=null&&a.children)||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes");let i=[];return r.forEach(u=>{var d,f;const l=(d=a.children)==null?void 0:d.find(h=>h.name===u);if(l){let h=(f=l.children)==null?void 0:f.filter(g=>{var b;return(b=g.info)==null?void 0:b.exist});h&&(h==null?void 0:h.length)>0&&(h=h.map(g=>{var b;return{...g,name:(b=g.info)==null?void 0:b.filename,info:{...g.info,kind:"userClass"}}}),i=i.concat(h))}}),a.children=a.children.filter(u=>!r.includes(u.name)),a.children=a.children.concat(i),a.children.sort((u,l)=>u.name==="DataStore"?-1:l.name==="DataStore"?1:u.type===v.FileFolderType.CLASS_FOLDER&&l.type===v.FileFolderType.CLASS_FOLDER||u.type===v.FileFolderType.CLASS&&l.type===v.FileFolderType.CLASS?u.name.localeCompare(l.name):u.type===v.FileFolderType.CLASS_FOLDER&&l.type!==v.FileFolderType.CLASS_FOLDER?-1:1),e[s]=a,e},addClassesFolder:(e,t)=>{const{payload:r}=t;if(r.length===0)return e;const a=e.find(u=>u.name==="Classes");if(!(a!=null&&a.children)||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes");let i=0;return a.children.forEach((u,l)=>{u.type===v.FileFolderType.CLASS_FOLDER&&(i=l)}),r.forEach(u=>{var l;a.children=(l=a.children)==null?void 0:l.filter(d=>{var h,g;const f=(h=u.children)==null?void 0:h.find(b=>{var y;return((y=b.info)==null?void 0:y.filename)===d.name});return f&&(u.children=(g=u.children)==null?void 0:g.map(b=>{var y;return((y=b.info)==null?void 0:y.filename)===d.name?{...b,info:{...b.info,exist:!0}}:b})),!f})}),r.forEach(u=>{var l;(l=a==null?void 0:a.children)==null||l.splice(i+1,0,u)}),a.children.sort((u,l)=>u.name==="DataStore"?-1:l.name==="DataStore"?1:u.type===v.FileFolderType.CLASS_FOLDER&&l.type===v.FileFolderType.CLASS_FOLDER?u.name.localeCompare(l.name):u.type===v.FileFolderType.CLASS_FOLDER&&l.type!==v.FileFolderType.CLASS_FOLDER?-1:1),e[s]=a,e},toggleExpandFolder:(e,t)=>(e=Ae(e,{...t.payload,flags:{...t.payload.flags,expanded:!t.payload.flags.expanded}}),e),expandFolder:(e,t)=>(e=Ae(e,{...t.payload,flags:{...t.payload.flags,expanded:!0}}),e),openAddFileInput:(e,t)=>Ae(e,{...t.payload,flags:{...t.payload.flags,adding:!0}}),addNewFile:(e,t)=>{const{parent:r,child:a}=t.payload;return Ae(e,{...r,children:[a,...r.children||[]]})},removeFile:(e,t)=>{const{parent:r,child:a}=t.payload;return Ae(e,{...r,children:r.children.filter(s=>s.path!==a.path)})},refreshFile:(e,t)=>{const{parent:r,child:a}=t.payload,s=(r.children||[]).filter(i=>i.path!==a.path&&!a.error);return Ae(e,{...r,children:[a,...s]})},setFolderChildren:(e,t)=>{const r=et(e,t.payload.parentPath);return r?Ae(e,{...r,children:t.payload.children}):e}},extraReducers:e=>{e.addCase(jn.pending,(t,r)=>{const{file:a,newname:s}=r.meta.arg,i=et(t,a.path);if(!i)return t;const u=a.path.split("/");u.pop();const l=`${u.join("/")}/${a.name}.${a.ext}`,d=`${u.join("/")}/${s}.${a.ext}`;switch(a.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.WILL_RENAME,payload:{oldPath:l,newPath:d}});break}return Ae(t,{...i,flags:{...i.flags,loading:!0}})}),e.addCase(jn.fulfilled,(t,r)=>{const{meta:{arg:{file:a}},payload:s}=r,i=et(t,a.path);if(!i)return t;switch(s.old.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.DID_RENAME,payload:{oldPath:s.old.path,newPath:s.new.path}});break}const u={...s.new};return Ar(u),Ae(t,{...i,flags:{...i.flags,loading:!1}})}),e.addCase(jn.rejected,(t,r)=>{const{file:a}=r.meta.arg,s=et(t,a.path);return s?Ae(t,{...s,flags:{...s.flags,loading:!1}}):t}),e.addCase(Xr.pending,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,flags:{...s.flags,loading:!0}}):t}),e.addCase(Xr.fulfilled,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,children:zl(r.payload),flags:{...s.flags,loading:!1,cached:!0,expanded:!0},error:null}):t}),e.addCase(Xr.rejected,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,error:{message:r.payload},flags:{...s.flags,loading:!1,cached:!0,expanded:!0}}):t}),e.addCase(La.pending,(t,r)=>{const{nodePath:a}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,s=et(t,a);return s?Ae(t,{...s,flags:{...s.flags,loading:!0}}):t}),e.addCase(La.fulfilled,(t,r)=>{const{nodePath:a,collapseIfExpanded:s=!0}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,i=et(t,a);return i?Ae(t,{...i,children:zl(r.payload),flags:{...i.flags,loading:!1,cached:!0,...s?{expanded:!1}:{}},error:null}):t}),e.addCase(La.rejected,(t,r)=>{const{nodePath:a,collapseIfExpanded:s=!0}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,i=et(t,a);return i?Ae(t,{...i,error:{message:r.payload},flags:{...i.flags,loading:!1,cached:!0,...s?{expanded:!1}:{}}}):t}),e.addCase(no.pending,(t,r)=>{const{fileName:a,parentNode:s,path:i,type:u}=r.meta.arg,l=v.getFileExtentionFromType(u),d=`${i}/${a}${l?`.${l}`:""}`;return Ae(t,{...s,children:[{name:a,path:d,type:u,error:null,flags:{loading:!0},config:{}},...s.children]})}),e.addCase(no.fulfilled,(t,r)=>{const{path:a,fileName:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${a}${u?`.${u}`:""}`,{editor:d,supportedEditors:f}=dt(l);return Ae(t,{id:`${l}-${Date.now()}`,name:s,path:l,type:i,error:null,flags:{loading:!1},config:{editor:d,supportedEditors:f}})}),e.addCase(no.rejected,(t,r)=>{const{path:a,fileName:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${a}${u?`.${u}`:""}`;return Ae(t,{name:s,path:l,type:i,error:{message:r.payload},flags:{loading:!1},config:{}})}),e.addCase(ao.pending,(t,r)=>{const{node:a,parentNode:s}=r.meta.arg,i=`${a.name}_copy`,u=`${a.path}/${i}${a.ext?`.${a.ext}`:""}`;return Ae(t,{...s,children:[{name:i,path:u,type:a.type,error:null,flags:{loading:!0},permissions:{canRename:!0,canDelete:!0}},...s.children]})}),e.addCase(ao.fulfilled,(t,r)=>{const{node:a}=r.payload,s=Hm(a.name),i=`${a.path}/${a.name}`,{editor:u,supportedEditors:l}=dt(i);return Ae(t,{name:s,path:i,type:a.type,error:null,flags:{loading:!1},config:{editor:u,supportedEditors:l}})}),e.addCase(ao.rejected,(t,r)=>{const a=r.payload,{node:s}=r.meta.arg,i=`${s.name}_copy`,u=`${s.path}/${i}${s.ext?`.${s.ext}`:""}`;return Ae(t,{name:i,path:u,type:s.type,error:{message:a},flags:{loading:!1},config:{}})}),e.addCase($a.pending,()=>{}),e.addCase($a.fulfilled,(t,r)=>{var g;const{draggedNode:a,newLocation:s}=r.meta.arg,i=Um(a.path),u=et(t,i),l=et(t,s.path),d=(g=u==null?void 0:u.children)==null?void 0:g.filter(b=>b.path!==a.path),f=s.path.split("/").length,h=a.path.split("/").length;return f>=h?(t=Ae(t,{...u,children:d}),t=Ae(t,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}})):(t=Ae(t,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}}),t=Ae(t,{...u,children:d})),t}),e.addCase($a.rejected,()=>{v.toastSubject.next({message:"Error moving file",kind:"danger"})}),e.addCase(qn.pending,(t,r)=>{var _;const{fileName:a,parentNode:s,path:i,type:u,qodly:l}=r.meta.arg,d=v.getFileExtentionFromType(u,l),f=`${i}/${a}${d?`.${d}`:""}`,{editor:h,supportedEditors:g}=dt(f);switch(u){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.WILL_CREATE,payload:{filePath:f}});break}const y=[...(_=s.children)==null?void 0:_.filter(T=>T.path!==f),{name:a,path:f,type:u===v.FileFolderType.CLASS?u:v.FileFolderType.FILE,error:null,flags:{loading:!0},config:{editor:h,supportedEditors:g},ext:d,date:new Date().toISOString(),info:{exist:!0,kind:u===v.FileFolderType.CLASS?"userClass":""}}],w=Ae(t,{...s,children:y});return fe.merge(t,w)}),e.addCase(qn.fulfilled,(t,r)=>{const{fileName:a,path:s,type:i,qodly:u}=r.meta.arg,l=v.getFileExtentionFromType(i,u),d=`${s}/${a}${l?`.${l}`:""}`,{editor:f,supportedEditors:h}=dt(d),g=Ae(t,{name:a,path:d,type:v.FileFolderType.FILE,error:null,flags:{},config:{editor:f,supportedEditors:h},ext:l,date:new Date().toISOString(),info:{exist:!0,kind:i===v.FileFolderType.CLASS?"userClass":""}});switch(i){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.DID_CREATE,payload:{filePath:d}});break}return t=g,t}),e.addCase(qn.rejected,(t,r)=>{const{fileName:a,path:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${s}${u?`.${u}`:""}`,{editor:d,supportedEditors:f}=dt(l);return t=Ae(t,{name:a,path:l,type:v.FileFolderType.FILE,error:{message:"Failed creating file"},flags:{},config:{editor:d,supportedEditors:f},ext:u,date:new Date().toISOString()}),t}),e.addCase(L_.rejected,t=>{const r=et(t,v.HTTP_HANDLERS_TAB_PATH);return r&&(t=Ae(t,{...r,flags:{...r.flags,disabled:!0}})),t}),e.addMatcher(Qy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path);return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!0}})),t}),e.addMatcher(Zy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path),s=a!=null&&a.info?{...a.info,exist:!0}:void 0;return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!1,disabled:!1},info:s})),t}),e.addMatcher(Xy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path);return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!1}})),v.toastSubject.next({message:"Failed to open file, try again",kind:"danger"}),t})}}),{toggleExpandFolder:WF,expandFolder:UF,openAddFileInput:HF,addNewFile:F_,refreshFile:GF,removeFile:Vl,setFolderChildren:zF,addClassesFolder:VF,removeClassesFolder:YF,renameClassesFolder:KF}=D_.actions;function If(e,t){switch(e){case v.FileFolderType.WEBFORMS:{const r={metadata:{v:"1.0",datasources:[],styles:[]},components:{ROOT:{parent:"",type:{resolvedName:"Container"},isCanvas:!0,props:{airyMode:!1,className:"bg-white w-full px-6",classNames:[],events:[]},displayName:"Page",custom:{},hidden:!1,nodes:[],linkedNodes:{}}}};return t["webforms.display-mode"]===Cf.AIRY&&(r.components.ROOT.props.airyMode=!0),r}case v.FileFolderType.REPORT:return{metadata:{v:"1.0",datasources:[],styles:[]},pages:[{name:"doc",id:"index",components:{ROOT:{type:{resolvedName:"Document"},isCanvas:!0,props:{classNames:[],events:[],airyMode:!1,className:"bg-white w-full px-6"},displayName:"Document",custom:{},parent:"",hidden:!1,nodes:[],linkedNodes:{}}}}]};case v.FileFolderType.METHODS:return`//%attributes = {}
167
- `;case v.FileFolderType.HTTP_HANDLERS:return[];case v.FileFolderType.LOCALIZATION:return{keys:{},userLang:{primary:"",supported:[]}};case v.FileFolderType.SETTINGS:return{};case v.FileFolderType.ROLES:return{permissions:{allowed:[]},privileges:[],roles:[],forceLogin:!1,restrictedByDefault:!1};default:return""}}function JF(e){switch(e){case v.FolderRootPath.WEBFORMS:return v.FileFolderType.WEBFORMS;case v.FolderRootPath.METHODS:return v.FileFolderType.METHODS;case v.FolderRootPath.CLASSES:return v.FileFolderType.CLASSES;case v.FolderRootPath.REPORTS:case"Reports":return v.FileFolderType.REPORT;case"Mobile":return v.FileFolderType.MOBILE;default:return e}}function I_(e){switch(e){case v.FileFolderType.WEBFORMS:return v.FileFolderType.WEBFORM;case v.FileFolderType.REPORT:return v.FileFolderType.REPORT;case v.FileFolderType.CLASSES:return v.FileFolderType.CLASS;case v.FileFolderType.METHODS:return v.FileFolderType.METHOD;case v.FileFolderType.FOLDER:return v.FileFolderType.FOLDER;case v.FileFolderType.MOBILE:return v.FileFolderType.MOBILEFORM;default:return e}}const QF=Y("files/tryEditMethod",async({method:e},{dispatch:t})=>{const r=e.filePath.split("/"),[a]=r[1].split("."),{editor:s}=dt(e.filePath);return await t(Mf({file:{name:a,path:e.filePath,date:new Date().toISOString(),type:v.FileFolderType.CLASS,editor:s},line:e.startingLine+1})).unwrap()}),Yl=Y("explorer/createModelFiles",async(e,{dispatch:t,getState:r})=>{var g;const a=r(),s=v.FolderRootPath.CLASSES,i=a.settings.server.qodly,u=et(a.explorer,s);if(!u)return;await t(Xr(s));const d=((g=r().explorer.find(b=>b.name===s))==null?void 0:g.children)||[];let f=[{content:"",name:""}];if(e.type==="dataclass"&&!e.toCreate){const{className:b,collectionName:y}=e;f=[{...hn().dataclass({name:b,qodly:i})},{...hn().collection({name:y,qodly:i})},{...hn().entity({name:b,qodly:i})}]}else if(e.type==="dataclass"&&e.toCreate){const{className:b,collectionName:y}=e;f=[{...hn()[e.toCreate]({name:b||y,qodly:i})}]}else f=[{...hn().model({name:"DataStore",qodly:i})}];f=f.filter(b=>!d.find(({name:y,ext:w,info:{exist:_=!0}={}})=>y===b.name&&w===(i?"4qs":"4dm")&&_)),await Promise.all(f.map(async({name:b,content:y})=>{await t(qn({type:v.FileFolderType.CLASS,path:s,fileName:b,parentNode:u,content:y,qodly:a.settings.server.qodly}))}));const h=e.type==="dataclass"&&e.expand?e.className:"";await t(Xr({nodePath:s,expandDataclass:h}))}),Xr=Y("explorer/fetchFolderContent",async(e,{rejectWithValue:t,getState:r})=>{const{nodePath:a,expandDataclass:s=""}=typeof e=="string"?{nodePath:e}:e,i=r();try{const u=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return i.catalog.state!=="loaded"?[]:a==="Classes"?zn(i,u,s):u.map(l=>{const d=`${a}/${l.name}${l.ext?`.${l.ext}`:""}`,{editor:f,supportedEditors:h}=dt(d);return{name:l.name,size:l.size,type:l.type,date:`${l.date}`,flags:{},error:null,path:d,ext:l.ext,config:l.type==="folder"?{}:{editor:f,supportedEditors:h}}})}catch{return t("Failed loading file content please Reload"),a==="Classes"?zn(i,[],s):[]}},{getPendingMeta:()=>{}}),M_=Y("model/fetchClassesFolderContent",async(e,{getState:t})=>{const r=t(),a=v.FolderRootPath.CLASSES;if(et(r.explorer,a))try{const i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return zn(r,i)}catch{return zn(r,[])}}),La=Y("explorer/fetchFolderContentWithoutExpanding",async(e,{rejectWithValue:t,getState:r})=>{const{nodePath:a}=typeof e=="string"?{nodePath:e}:e,s=r();try{const i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return a==="Classes"?zn(s,i):i.map(u=>{const l=`${a}/${u.name}${u.ext?`.${u.ext}`:""}`,{editor:d,supportedEditors:f}=dt(l);return{name:u.name,size:u.size,type:u.type,date:`${u.date}`,flags:{},error:null,path:l,ext:u.ext,config:u.type==="folder"?{}:{editor:d,supportedEditors:f}}})}catch{return t("Failed loading file content please Reload")}},{getPendingMeta:()=>{}});function XF(e){const t=e.split(".");return t.pop(),{name:t.join("."),ext:e.split(".")[e.split(".").length-1]}}const ZF=Y("explorer/uploadFileAndGetResponse",async e=>{const t=e.type.includes("image/")?"$rawPict=true":"$binary=true";try{const r=await fetch(`/rest/$upload?${t}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return{status:r.status,data:await r.json()}}catch{return{status:500,data:null}}}),eI=Y("explorer/uploadFile",async({file:e,path:t,parentNode:r},{dispatch:a})=>{const{editor:s,supportedEditors:i}=dt(t),{name:u,ext:l}=XF(e.name);a(F_({parent:r,child:{name:u,path:`${t}/${e.name}?t=${Date.now()}`,type:e.type,error:null,flags:{loading:!0},config:{editor:s,supportedEditors:i},ext:l}}));try{const d=await fetch(`/rest/$upload?$sharedFolder=true&$filename=${e.name}&$path=${t}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return d.status>=300?(a(Vl({parent:r,child:{name:u,path:`${t}/${e.name}`,type:e.type,error:{message:"error uploading file"},flags:{},config:{editor:s,supportedEditors:i},ext:l}})),d.status!==413&&v.toastSubject.next({message:"error uploading file",kind:"danger"})):await a(Xr(r.path)),{status:d.status,fileName:e.name}}catch{return a(Vl({parent:r,child:{name:u,path:`${t}/${e.name}`,type:e.type,error:{message:"error uploading file"},flags:{},config:{editor:s,supportedEditors:i},ext:l}})),v.toastSubject.next({message:"error uploading file",kind:"danger"}),{status:500,fileName:e.name}}}),qn=Y("explorer/createNewFile",async({fileName:e,type:t,path:r,parentNode:a,content:s},{dispatch:i,rejectWithValue:u,getState:l})=>{const{server:{qodly:d},project:f}=l().settings;try{const h=await v.setFileContent({name:v.getFilenameFromType(e,t,d),content:s||If(t,f),path:r,asText:[v.FileFolderType.CLASS,v.FileFolderType.METHOD].includes(t)});return a.error&&(a.flags.expanded?await i(Xr(a.path)):await i(La(a.path))),{qodly:d,file:h,parentNode:a}}catch{return u("failed to create folder")}});function N_(e,t){const{qodly:r=!0,withExtension:a=!0}=t||{},s=v.getFileExtentionFromType(e.type,r);let i="";switch(e.type){case v.FileFolderType.WEBFORM:i=`${v.FolderRootPath.WEBFORMS}/${e.name}`;break;case v.FileFolderType.METHOD:i=`${v.FolderRootPath.METHODS}/${e.name}`;break;case v.FileFolderType.CLASS:i=`${v.FolderRootPath.CLASSES}/${e.name}`;break;default:return""}return`${i}${a?`.${s}`:""}`}const tI=Y("explorer/createNewFileAndOpen",async(e,{dispatch:t,getState:r})=>{const a=await t(qn(e)).unwrap(),{qodly:s}=r().settings.server;if(a){const{file:i}=a,u=N_(i,{withExtension:!1,qodly:s}),{editor:l}=dt(u);await t(Zr({file:{name:e.fileName,type:i.type,path:u,editor:l,date:new Date().toISOString()}}))}}),no=Y("explorer/createNewNode",async({fileName:e,path:t,parentNode:r},{rejectWithValue:a})=>{try{return{file:await v.createFolder({verb:v.DesignerRequestVerb.CREATE_FOLDER,path:`${t}/${e}`,recursive:!0}),parentNode:r}}catch{return v.toastSubject.next({message:"failed to create folder",kind:"danger"}),a("failed to create folder")}}),Ha=async({file:e,flags:t={},node:r={}})=>{var a;try{const s=e.path.split(".").at(-1),i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:((a=e.editor)==null?void 0:a.key)!=="editors:img",as:fm(s)?"json":"text"}),u={editor:e.editor};r!=null&&r.info&&(u.kind=r.info.kind);const l=v.getTypeFromExtension(e.path);l===v.FileFolderType.METHOD&&(u.attributes=v.parseAttributes(i.content),i.content=v.addAttributesToContent(i.content,{}));const{content:d,date:f,ext:h}=i;return t.confirmed===void 0&&(t.confirmed=!0),{date:f,view:{panel:{isOpen:!1,type:l===v.FileFolderType.WEBFORM?"component":"",current:l===v.FileFolderType.WEBFORM?"ROOT":""}},flags:{enabled:["WebForm","MForm"].includes(h),confirmed:t.confirmed},extra:u,name:e.name,path:e.path,type:l,initialContent:d,content:d,history:{stack:[],active:-1,locked:!1}}}catch(s){const{data:i}=s;if(i.__ERROR.find(u=>u.errCode===v.ERROR_CODES.FILE_NOT_FOUND))switch(e.path){case v.ROLES_TAB_PATH:{const u={permissions:{allowed:[]},privileges:[],roles:[]};return{date:new Date().toISOString(),flags:t,extra:{editor:{key:"editors:roles"},kind:"roles"},name:"Roles & Privileges",path:e.path,type:v.FileFolderType.ROLES,initialContent:u,content:u}}case v.SETTINGS_TAB_PATH:{const u={};return{date:new Date().toISOString(),flags:t,extra:{editor:{key:"editors:settings"},kind:"qodlyApp"},name:"Settings",path:e.path,type:v.FileFolderType.SETTINGS,initialContent:u,content:u}}}throw s}},L_=Y("HTTPHandlers/fetch",async(e,{rejectWithValue:t})=>{const r=(await v.getFilesInfo({path:v.HTTP_HANDLERS_TAB_PATH})).files.find(a=>a.path===v.HTTP_HANDLERS_TAB_PATH);if(r!=null&&r.deleted)return t("not found")}),No=(e,t)=>{const r=(a,s)=>{for(const i of a){if(i.path===s)return i;if(i.children){const u=r(i.children,s);if(u)return u}}};return r(e,t)},rI=Y("explorer/openFileFromLocation",async(e,{dispatch:t})=>{const r=pm();if(r.page){const a=`WebForms/${r.page}.WebForm`,s=Il(a,r.editor,{key:"editors:webforms"});t(Zr({file:{path:a,editor:s,name:r.page,type:v.FileFolderType.WEBFORM},flags:{confirmed:!0}}))}else if(r.path){const{filename:a,type:s}=v.getFilenameAndTypeFromPath(r.path),i=Il(r.path,r.editor);t(Zr({file:{type:s,editor:i,name:a,path:r.path},flags:{confirmed:!0}}))}}),nI=Y("explorer/switchEditor",async({tab:e,editor:t},{dispatch:r})=>{if(e.path===v.LOCALIZATION_TAB_PATH&&t.key==="editors:localization")try{const a=typeof e.content=="string"?JSON.parse(e.content):e.content;v.i18nSubject.next({action:"set_locale_state",payload:a})}catch{}if(e.path===v.SETTINGS_TAB_PATH&&t.key==="editors:settings")try{const a=typeof e.content=="string"?JSON.parse(e.content):e.content;r(Ff({path:"project",settings:a}))}catch{}r(Zr({file:{path:e.path,type:e.type,name:e.name,editor:t}}))}),Zr=Y("explorer/openFile",async({file:e,inactive:t,isNew:r,flags:a={},info:s},{getState:i,dispatch:u})=>{const{root:{tabs:l},roles:d,explorer:f,debugger:{sessions:h},settings:{server:{qodly:g}}}=i(),b=l.find(({path:T})=>e.path===T);if(b){const T={...b,extra:{...b==null?void 0:b.extra,editor:e.editor??b.editor},flags:{...b==null?void 0:b.flags,...a}};return u(At(T)),T}if(e.path.startsWith("Debugger")){const T=h.find(S=>`Debugger/${S.threadId}`===e.path);if(T){const{source:{content:S},source:A}=T.currentStackFrame,x={name:e.name,type:v.FileFolderType.DEBUGGER,date:new Date().toISOString(),path:e.path,content:S,view:{panel:{isOpen:!1,type:"",current:""}},initialContent:S,flags:{confirmed:!0},extra:{source:A,editor:e.editor}};return u(At(x)),x}}const y=No(f,e.path);let w=null;try{w=await Ha({file:e,flags:a,node:y})}catch(T){const{data:S}=T;if(S.__ERROR.find(A=>[v.ERROR_CODES.JSON_MALFORMED,v.ERROR_CODES.JSON_MALFORMED_AT_LINE].includes(A.errCode))){const{confirmed:A}=await u(er({title:"Corrupt file",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,message:"Open in text editor ?"})).unwrap();if(A){const x=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:"text"}),{content:D,date:R,ext:$}=x;w={date:R,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm","QoDoc"].includes($),confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:D,content:D,history:{stack:[],active:-1,locked:!1}}}}if(e.type===v.FileFolderType.CLASS&&s){const A=s.kind,x=`${e.name}.${g?"4qs":"4dm"}`,D=hn()[A]({name:x,qodly:g}).content;if(w={date:(await v.setFileContent({name:x,content:D,path:"Classes",asText:!0})).date,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:!1,confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:D,content:D,history:{stack:[],active:-1,locked:!1}},A==="app"){const $=await v.getFilesInfo(...fy.map(B=>({path:`DatabaseMethods/${B.name}`})));fy.forEach(B=>{const z=$.files.find(ee=>ee.path===`DatabaseMethods/${B.name}`);z!=null&&z.deleted&&v.setFileContent({name:B.name,content:B.content,path:"DatabaseMethods",asText:!0})})}}if(e.path===v.HTTP_HANDLERS_TAB_PATH){const A=(await v.getFilesInfo({path:v.HTTP_HANDLERS_TAB_PATH})).files.find(x=>x.path===v.HTTP_HANDLERS_TAB_PATH);A!=null&&A.deleted&&await v.setFileContent({name:v.HTTP_HANDLERS_TAB_PATH,content:"[]",path:"./",asText:!0}).then(async()=>{w=await Ha({file:e,flags:a,node:y})})}}return w&&(e.path===v.ROLES_TAB_PATH&&!d.flags.touched?u(Of({content:w.content,date:w.date,flags:a})):e.path===v.SETTINGS_TAB_PATH&&u(Za({path:"project",value:w.content})),u((t?yb:At)({...w,isNew:r})),w)}),Mf=Y("explorer/openFileAtLine",async({file:e},{getState:t,dispatch:r})=>{const{root:{tabs:a},explorer:s}=t(),i=a.find(({path:d})=>e.path===d);if(i){const d={...i,extra:{...i==null?void 0:i.extra,editor:e.editor}};return r(At(d)),d}const u=No(s,e.path),l=await Ha({file:e,node:u});return r(At(l)),l}),$_=Y("explorer/injectContentAtLine",async(e,{getState:t,dispatch:r,rejectWithValue:a})=>{const{explorer:s}=t();e.path.split("/").pop();const u=et(s,e.path);if(!u)return a(`Error while trying to inject content in file ${e.path}`);const l=`${u.path}.${u.ext}`,d=No(s,l),f=await Ha({file:{name:u.name,date:u.date||new Date().toISOString(),path:l,type:v.FileFolderType.CLASS,editor:u.config.editor},node:d});return await r(At(f)),{...e,path:`${u.path}.${u.ext}`}}),k_=Y("explorer/openFileAtSelection",async({file:e},{getState:t,dispatch:r})=>{const{root:{tabs:a},explorer:s}=t(),i=a.find(({path:d})=>e.path===d);if(i){const d={...i,extra:{...i==null?void 0:i.extra,editor:e.editor}};return r(At(d)),d}const u=No(s,e.path),l=await Ha({file:e,node:u});return r(At(l)),l}),Kl=Y("explorer/deleteFile",async e=>{const{name:t,type:r,path:a,flags:s}=e;if(s.error)return{deleted:!0,node:e};const i=a.split("/");return i.pop(),{deleted:await v.dropFile({root:v.FolderRootType.ROOT,type:I_(r),verb:v.DesignerRequestVerb.DROP,name:t,path:i.join("/")}),node:e}}),aI=Y("explorer/deleteFolder",async(e,{getState:t,dispatch:r})=>{const{path:a,flags:s}=e;if(s.error)return{deleted:!0,node:e};const{deleted:i}=await v.removeItem({force:!0,path:a,verb:v.DesignerRequestVerb.REMOVE_ITEM}).catch(console.error)||{deleted:!1};if(e.children){const{tabs:u}=t().root;e.children.forEach(l=>{const d=u.findIndex(f=>f.path===l.path);r(Wo(d))})}return{deleted:i,node:e}}),Jl=Y("explorer/removeFileNode",async(e,{getState:t,dispatch:r})=>{await v.removeItem({verb:v.DesignerRequestVerb.REMOVE_ITEM,path:e.path,force:!0}).catch(console.error);const{root:{tabs:a},catalog:s}=t();if((e.path==="Classes/DataStore"||q_(s,e))&&setTimeout(()=>{r(en())},Ja),e.ext){const i=a.findIndex(u=>u.path===e.path);i>=0&&r(Wo(i))}return{deleted:!0,node:e}}),q_=(e,t)=>{const{model:{singletons:r}}=e;return fe.values(r).some(a=>a.name===t.name)},jn=Y("explorer/renameFile",async({file:e,newname:t},{dispatch:r,getState:a})=>{if(e.type!=="folder"){const i=e.path.split("/");i.pop();const u=`${i.join("/")}/${e.name}.${e.ext}`,l=`${i.join("/")}/${t}.${e.ext}`;await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:u,newpath:l});const{catalog:d}=a();return q_(d,e)&&setTimeout(()=>{r(en())},Ja),{old:{...e,path:u},new:{...e,name:t,path:l}}}const s=e.path.split("/");return s.pop(),await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${s.join("/")}/${e.name}`,newpath:`${s.join("/")}/${t}`}),{old:e,new:{...e,name:t,path:`${s.join("/")}/${t}`}}}),$a=Y("explorer/relocateNode",async({draggedNode:e,newLocation:t},{rejectWithValue:r})=>{try{await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${e.path}.${e.ext}`,newpath:`${t.path}/${e.name}.${e.ext}`})}catch{return r("can't move item")}}),ao=Y("explorer/duplicateNode",async({node:e,duplicateName:t},{rejectWithValue:r,fulfillWithValue:a,getState:s})=>{const i=e.path.split("/");i.pop();try{const{tabs:u}=s().root,l=u.find(({path:g})=>g===e.path),d=["4dm","4qm","4qs"].includes(e.ext),{content:f}=l||await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:d?"text":"json"}),h=await v.setFileContent({name:`${t}.${e.ext}`,content:f,path:i.join("/"),asText:d});return a({node:{...h,path:i.join("/")}})}catch{return r("failed to duplicate file")}}),sI=Y("explorer/executeMethod",async({methodName:e,params:t=[],resultingDataSource:r={},namespace:a=""},{rejectWithValue:s})=>{var i,u;try{const l=window.Method4D.buildMethod({methodName:e,parameters:t,resultingDataSource:r},{namespace:a},null),d=v.callServerSideParser(await l.callServerSide({id:"",serverSideRef:""},"onclick",{}));return d!=null&&d.__NOTIFICATION?v.toastSubject.next({message:`${((i=d.__NOTIFICATION)==null?void 0:i.message)||""}`,kind:`${((u=d.__NOTIFICATION)==null?void 0:u.type)||"info"}`}):v.toastSubject.next({message:"Method executed Successfully",kind:"message"}),d}catch(l){const d=v.getDisplayableFeedbackErrors(l,!1),f=v.formatErrorsAsBulletToast(d),h=f.length>0&&f[0].messages.length>0;return v.toastSubject.next({message:h?f:l.message||`Error executing the method "**${e}**"`,kind:"danger",markdown:!0}),s("can't execute method")}}),oI=e=>{const{dataClasses:t,...r}=e;return{...r,dataClasses:t==null?void 0:t.map(a=>{let s={...a};if(s.uuid||(s={...s,uuid:v.generateUUID()}),s.attributes){const i=["storage","relatedEntity"],u=s.attributes.map(l=>i.includes(l.kind)&&!l.uuid?{...l,uuid:v.generateUUID()}:l);s={...s,attributes:[...u]}}return s})}},iI=Y("files/fetchFiles",async()=>v.getFolders(v.FolderRootType.WEBFORMS,v.FolderRootType.METHODS,v.FolderRootType.CLASSES)),Nf=Y("tabs/renameDatasource",async(e,{dispatch:t,getState:r})=>{var y,w;const a=!!e.datasourceNamespace,{confirmed:s}=await t(er({message:"Are you sure you want to rename the datasource?",title:"Rename Datasource",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,views:{toggles:{},tips:a?[{type:"warning",message:"The datasource property of components bound with this datasource will also be updated on opened web forms only"},{type:"warning",message:"The origin of some other datasources might be also renamed (if this datasource is the origin of other datasources)"}]:[{type:"warning",message:"The datasource property of components bound with this datasource will also be updated"},{type:"warning",message:"The origin of some other datasources might be also renamed (if this datasource is the origin of other datasources)"}]}})).unwrap();if(!s)return null;const{autoUpdateReferences:i,datasourceId:u,datasourceNamespace:l,value:d,path:f}=e,h=r();let g=[];if(a){const _=h.sharedDatasources.sources[l]||[];g.push(..._)}else if(f){const _=h.root.tabs.find(v.by("path",f));if(g=(w=(y=_==null?void 0:_.content)==null?void 0:y.metadata)==null?void 0:w.datasources,!g)return null}const b=new RegExp(`^${u}\\b`,"");if(g=g.map(_=>{const T=(v.isObjectDatasource(_)||!v.isSimpleDatasource(_))&&_.from&&b.test(_.from),S=_.events?_.events.map(A=>{var x,D,R,$;switch(A==null?void 0:A.type){case"method":{const B=A;return B.params?{...B,params:B.params.map(z=>{var ee;return{...z,datasource:(ee=z.datasource)==null?void 0:ee.replace(new RegExp(`^${u}`,""),d)}}),returns:(x=B.returns)!=null&&x.datasource?{...B.returns,datasource:(D=B.returns.datasource)==null?void 0:D.replace(new RegExp(`^${u}`,""),d)}:B.returns}:B}case"simple-action":{const B=A;return B.datasource?{...B,datasource:{...B.datasource,name:(R=B.datasource.name)==null?void 0:R.replace(new RegExp(`^${u}`,""),d),from:($=B.datasource.from)==null?void 0:$.replace(new RegExp(`^${u}`,""),d)}}:B}default:return A}}):_.events;return _.id===u?{..._,id:d,events:S}:T&&_.from?{..._,from:_.from.replace(new RegExp(`^${u}`,""),d),events:S}:{..._,events:S}}),i){const _=a?`${l}:${u}`:`${u}`,T=a?`${l}:${d}`:`${d}`;v.datasourcesSubject.next({path:f??"",action:v.DatasourcesActions.RENAME,old_reference:_,new_reference:T,is_shared:a})}return{path:f,namespace:l,datasources:g}}),Lf=Y("tabs/edit-datasource",(e,{getState:t})=>{var i,u;const r=t();let a=[];if(e.namespace)a=r.sharedDatasources.sources[e.namespace];else{const l=r.root.tabs.find(v.by("path",e.path));l&&(a=((u=(i=l.content)==null?void 0:i.metadata)==null?void 0:u.datasources)||[])}return a.map(l=>l.id===e.datasourceId?Object.assign({},l,{[e.propertyKey]:e.value}):l)}),j_=Y("tabs/fetchChanges",async(e,{getState:t})=>{const a=mn(t()).filter(s=>[v.FileFolderType.METHOD,v.FileFolderType.CLASS].includes(s.type));return v.getFilesInfo(...a.map(s=>{const[i]=s.path.split("/").filter(Boolean);return{name:s.name,type:s.type,root:i,path:"."}}))}),uI=Y("files/saveAll",async(e,{getState:t,dispatch:r})=>{const a=bf(t());for(const s of a)r(Bn({tab:s}))}),$f=Y("files/tryCloseTab",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root,s=a.findIndex(u=>u.path===e);if(s===-1)return!1;const i=a[s];if(i!=null&&i.flags.touched){const{confirmed:u}=await r(er({title:wo(i),message:"Your unsaved changes will be lost. Proceed anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!u)return!1}return r(Wo(s)),i.path===v.ROLES_TAB_PATH&&i.flags.touched&&(async()=>{const l=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:v.ROLES_TAB_PATH,content:!0,as:"json"});r(Of({content:l.content,date:l.date}))})(),!0}),cI=Y("files/tryCloseOtherTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;if(a.some(i=>i.path!==e&&i.flags.touched===!0)){const{confirmed:i}=await r(er({title:"Closing other tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(hb(e))}),lI=Y("files/tryCloseAllTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;if(a.some(i=>i.flags.touched===!0)){const{confirmed:i}=await r(er({title:"Closing all tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(db())}),fI=Y("files/tryCloseRightTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;let s=!1;for(let i=a.length-1;i>e;i-=1)if(a[i].flags.touched){s=!0;break}if(s){const{confirmed:i}=await r(er({title:"Closing right tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(pb(e))}),dI=Y("files/tryCloseLeftTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;let s=!1;for(let i=0;i<e;i+=1)if(a[i].flags.touched){s=!0;break}if(s){const{confirmed:i}=await r(er({title:"Closing left tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(gb(e))}),so=Y("files/reloadTab",async(e,{dispatch:t})=>{var s,i;if(e.flags.touched){const{confirmed:u}=await t(er({title:wo(e),message:"Changes made to the file will be lost. Continue?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!u)throw new Error("Cancel modal!")}const r=vf(e.path),a=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:r});if(e.path===v.ROLES_TAB_PATH){const{roles:u,privileges:l}=v.sanitizeRoles(a.content);t(_o({roles:u,privileges:l}))}else if(e.path===v.SETTINGS_TAB_PATH){const{content:u}=a;t(Za({path:"project",value:u}))}else{const{content:u}=a;e.type===v.FileFolderType.WEBFORM?v.webformSubject.next({path:e.path,action:v.WebformActions.RELOAD,payload:u.components}):e.type===v.FileFolderType.MODEL?Jm.next({action:"reload",payload:u}):e.path===v.LOCALIZATION_TAB_PATH&&((i=(s=e.extra)==null?void 0:s.editor)==null?void 0:i.key)==="editors:localization"&&v.i18nSubject.next({action:"set_locale_state",payload:u})}return a}),Bn=Y("files/saveTab",async({tab:e},{dispatch:t,getState:r})=>{var g,b,y,w;let{path:a,content:s}=e;if(e.type===v.FileFolderType.DEBUGGER)return{...e,errors:[]};a.split("/").pop();const u=await v.getFilesInfo({path:a});if(u.files[0]){const _=new Date(e.date),T=new Date(u.files[0].date);if(_.getTime()<T.getTime()){const{confirmed:S}=await t(er({title:wo(e),message:"New content has been found on the server. Are you sure you want to continue?",type:v.ModalType.CONFIRM,icon:"FdSave"})).unwrap();if(!S)return t(fb({path:a,flags:{old:!0}})),null}}const l=pI(e,r()),d=await v.saveContent({verb:v.DesignerRequestVerb.SAVE_CONTENT,content:l,path:a});(e.type===v.FileFolderType.CLASS||e.type===v.FileFolderType.MODEL)&&setTimeout(()=>{t(en())},Ja),(e.path===v.SETTINGS_TAB_PATH||e.path==="settings.json")&&((b=(g=e.extra)==null?void 0:g.editor)==null?void 0:b.key)==="editors:code"&&t(Za({path:"project",value:l}));const f=(d.modelErrors||[]).map(_=>_.message),h=(d.permissionsErrors||[]).map(_=>_.message);return[v.FileFolderType.MODEL,v.FileFolderType.SETTINGS].includes(e.type)&&(s=l),e.path===v.LOCALIZATION_TAB_PATH&&((w=(y=e.extra)==null?void 0:y.editor)==null?void 0:w.key)==="editors:code"&&v.i18nSubject.next({action:"set_locale_state",payload:typeof e.content=="string"?JSON.parse(e.content):e.content}),{...e,content:s,date:d.date,initialContent:s,errors:f.length>0||h.length>0?[{title:"Model errors",messages:f},{title:"Permissions errors",messages:h}]:[]}}),pI=(e,t)=>{var r,a;switch(!0){case e.path==="settings.json":case e.path===v.SETTINGS_TAB_PATH:return typeof e.content=="string"?e.content:t.settings.project;case e.type===v.FileFolderType.ROLES:return((a=(r=e.extra)==null?void 0:r.editor)==null?void 0:a.key)==="editors:roles"&&typeof e.content!="string"?v.rolesToAPI(t.roles):e.content;case e.type===v.FileFolderType.MODEL:{const s=e.content||{toJSON:!0,dataClasses:[],extraProperties:{}};return oI(s)}case e.type===v.FileFolderType.WEBFORM:{const s=e.content;return s?{...s,metadata:{...s.metadata,currentState:v.ROOT_WEBFORM_STATE.id}}:e.content}default:return e.content}},dy=async e=>{if(e.type===v.FileFolderType.DATA_EXPLORER)return{name:"Data Explorer",path:e.path,flags:{},view:{panel:{isOpen:!1,type:"",current:""}},type:e.type,date:new Date().toISOString()};const t=vf(e.path),r=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:t}),a={};r.type===v.FileFolderType.METHOD&&(a.attributes=v.parseAttributes(r.content));const{date:s,name:i,type:u,content:l}=r;return{date:s,flags:{enabled:e.type===v.FileFolderType.WEBFORM},extra:a,view:{panel:{isOpen:!1,type:"",current:""}},name:i,path:e.path,type:u,initialContent:l,content:u===v.FileFolderType.MODEL?lm(l):l,history:{stack:[],active:-1,locked:!1}}},B_=fe.debounce(({path:e,contentPath:t},r)=>{r(Sb({path:e,contentPath:t}))},300),hI=Y("tabs/setTabContent",(e,{getState:t,dispatch:r})=>{var u;const{root:{tabs:a}}=t(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);r(Uo(e)),i?r(Bf(e.path)):B_({path:e.path,contentPath:e.contentPath},r)}),gI=Y("tabs/setCurrentWebformState",(e,{getState:t,dispatch:r})=>{var u;const{root:{tabs:a}}=t(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);r(mb(e)),i?r(Bf(e.path)):B_({path:e.path,contentPath:e.contentPath},r)}),W_=Y("files/tryInjectMethod",async({type:e,dataclass:t,expand:r},{getState:a,dispatch:s})=>{const{root:{tabs:i},settings:{server:{qodly:u}}}=a(),l=v.getFileExtentionFromType("class",u);let d="",f="",h=null;if(!t)d="DataStore",f=`Classes/DataStore.${l}`;else switch(e){case"dataclass":d=t,f=`Classes/${t}.${l}`;break;case"collection":d=`${t}Selection`,f=`Classes/${t}Selection.${l}`;break;case"entity":d=`${t}Entity`,f=`Classes/${t}Entity.${l}`;break;default:return h}const g=i.find(v.by("path",f));if(g)return s(At(g)),g;try{h=await dy({name:d,date:new Date().toISOString(),path:f,type:v.FileFolderType.CLASS})}catch{t?await s(Yl({type:"dataclass",className:t,collectionName:`${t}Selection`,toCreate:e,expand:r})):await s(Yl({type:"model"}))}return h=await dy({date:new Date().toISOString(),path:f,type:v.FileFolderType.CLASS}),h.path=f,s(At(h)),h}),vI=Y("roles/open",async(e,{dispatch:t,getState:r})=>{const{tabs:a}=r().root,s=a.find(i=>i.path===v.ROLES_TAB_PATH);if(s)return t(At(s)),s;t(mo())});function py(e,t){const{line:r,lineInEditor:a,offset:s,type:i="saved"}=t;e.breakpoints[i].locations.push({line:r,lineInEditor:a}),fe.isNumber(s)&&(e.breakpoints[i].offset=s)}function vl(e,t,r,a,s=!1){if(s){const i=new Map;let u=0;e.breakpoints[r].locations.forEach((l,d)=>{l.disabled?i.set(d,-1):i.set(d,u++)}),e.breakpoints[r].locations=e.breakpoints[r].locations.map((l,d)=>{const f=i.get(d);return!l.disabled&&fe.isNumber(f)&&t[f]?{...l,...t[f]}:l})}else e.breakpoints[r].locations=t;fe.isNumber(a)&&(e.breakpoints[r].offset=a)}function hy({filePath:e,fileType:t,methodName:r,className:a,ext:s,source:i}){return{filePath:e,fileType:t,methodName:r,className:a,ext:s,source:i,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}}function yl(e,t,r){let a=!1;const s=e.map(i=>i[r]!==t[r]?i:(a=!0,{...i,...t}));return a?s:[...s,t]}function Js(e){return e.map(({label:t})=>({label:t}))}const U_=Mt({name:"debugger",initialState:()=>{var t,r,a;const{debugger:e={meta:{state:Hr.DETACHED},list:[],sessions:[],expressions:[]}}=yn();return{meta:{...e.meta,state:((t=e.meta)==null?void 0:t.state)===Hr.ATTACHED?(r=e.meta)==null?void 0:r.state:Hr.DETACHED,shouldAutoReattach:((a=e.meta)==null?void 0:a.shouldAutoReattach)??!1},list:e.list||[],sessions:e.sessions||[],expressions:e.expressions||[]}},reducers:{addBreakpointDecoration(e,t){const{filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoint:d}=t.payload,f=dr(e.list,r,s,i);if(f)py(f,d);else{if(a===v.FileFolderType.CLASS&&d.offset===void 0)throw new Error(`Cannot add a breakpoint on a function without offset. Try editing the ${i} class.`);const h=hy({filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l});py(h,d),e.list.push(h)}},removeBreakpointDecoration(e,t){const{filePath:r,methodName:a,line:s,offset:i=0,type:u="saved"}=t.payload;if(r.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===r);if(l.length>0){const d=s+i;l.forEach(f=>{const h=f.breakpoints[u].offset||0;f.breakpoints[u].locations=f.breakpoints[u].locations.filter(g=>g.line+h!==d),u==="saved"&&(f.breakpoints.draft.locations=f.breakpoints.draft.locations.filter(g=>g.line+h!==d))})}}else{const l=dr(e.list,r,a);l&&(l.breakpoints[u].locations=l.breakpoints[u].locations.filter(d=>d.line!==s),u==="saved"&&(l.breakpoints.draft.locations=l.breakpoints.draft.locations.filter(d=>d.line!==s)))}},setBreakpointsDecoration(e,t){const{filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoints:d,offset:f,type:h="saved",merge:g=!1,clearDraft:b}=t.payload,y=dr(e.list,r,s,i);if(y)vl(y,d,h,f,g),b&&h!=="draft"&&(y.breakpoints.draft.locations=[]);else{const w=hy({filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l});vl(w,d,h,f),e.list.push(w)}},updateBreakpointsDecoration(e,t){const{filePath:r,methodName:a,className:s,breakpoints:i,type:u="saved",merge:l=!1}=t.payload,d=dr(e.list,r,a,s);d&&vl(d,i,u,void 0,l)},clearBreakpoints(e,t){const{filePath:r,type:a="saved"}=t.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath===r?{draft:!a||a==="draft"||a==="any"?{locations:[],offset:0}:s.breakpoints.draft,saved:!a||a==="saved"||a==="any"?{locations:[],offset:0}:s.breakpoints.saved}:s.breakpoints}))},clearBreakpointsExcept(e,t){const{exceptedFilePath:r,type:a="saved"}=t.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath!==r?{draft:!a||a==="draft"||a==="any"?{locations:[],offset:0}:s.breakpoints.draft,saved:!a||a==="saved"||a==="any"?{locations:[],offset:0}:s.breakpoints.saved}:s.breakpoints}))},clearAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}))},toggleBreakpoint(e,t){const{filePath:r,methodName:a,line:s,offset:i=0,disabled:u}=t.payload;if(r.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===r);if(l.length>0){const d=s+i;l.forEach(f=>{const h=f.breakpoints.saved.offset||0;f.breakpoints.saved.locations=f.breakpoints.saved.locations.map(g=>g.line+h===d?{...g,disabled:u}:g)})}}else{const l=dr(e.list,r,a);l&&(l.breakpoints.saved.locations=l.breakpoints.saved.locations.map(d=>d.line===s?{...d,disabled:u}:d))}},toggleBreakpointsInFile(e,t){const{filePath:r,methodName:a,disabled:s}=t.payload;if(r.startsWith("Classes/")){const i=e.list.filter(u=>u.filePath===r);i.length>0&&i.forEach(u=>{u.breakpoints.saved.locations=u.breakpoints.saved.locations.map(l=>({...l,disabled:s}))})}else{const i=dr(e.list,r,a);i&&(i.breakpoints.saved.locations=i.breakpoints.saved.locations.map(u=>({...u,disabled:s})))}},disableAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{...t.breakpoints,saved:{...t.breakpoints.saved,locations:t.breakpoints.saved.locations.map(r=>({...r,disabled:!0}))}}}))},enableAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{...t.breakpoints,saved:{...t.breakpoints.saved,locations:t.breakpoints.saved.locations.map(r=>({...r,disabled:!1}))}}}))},setActiveLine(e,t){const{threadId:r,line:a,highlight:s}=t.payload,i=tt(e.sessions,r);i&&(i.activeLine=a,s&&(i.highlightedLines={start:a,end:a}))},addExpression(e,t){const{threadId:r,label:a,save:s}=t.payload,i=tt(e.sessions,r);i&&i.stopped&&(i.expressions=[...i.expressions||[],{label:a}],s&&(e.expressions=Js(i.expressions)))},removeExpression(e,t){const{threadId:r,index:a,save:s}=t.payload,i=tt(e.sessions,r);i&&(i.expressions=i.expressions.filter((u,l)=>l!==a),s&&(e.expressions=Js(i.expressions)))},removeAllExpressions(e,t){const{threadId:r,save:a}=t.payload,s=tt(e.sessions,r);s&&(s.expressions=[],a&&(e.expressions=[]))},renameExpression(e,t){const{threadId:r,index:a,replacement:s,save:i}=t.payload,u=tt(e.sessions,r);u&&u.expressions[a]&&(u.expressions[a].label=s,i&&(e.expressions=Js(u.expressions)))},setExpression(e,t){const{threadId:r,expression:a}=t.payload,s=tt(e.sessions,r);if(s){const i=a.index>=0?a.index:s.expressions.length>0?s.expressions.length-1:0,u=s.expressions[i];u?(u.result=a.result,u.nakedResult=a.nakedResult,u.variablesReference=a.variablesReference||0,u.presentationHint=a.presentationHint):s.expressions.push(a)}},updateExpressionAt(e,t){const{threadId:r,index:a,value:s}=t.payload,i=tt(e.sessions,r);if(i){const u=i.expressions[a];u&&(u.result=`"${s}"`,u.nakedResult=s)}},saveExpressions(e,t){const{expressions:r}=t.payload;e.expressions=Js(r)},addSession(e,t){const{threadId:r,channelId:a,stackFrames:s,exceptions:i=[]}=t.payload,u=tt(e.sessions,r),l=s[0],{expressions:d=[]}=e;if(u)u.expressions=d;else{const f=pf(r);e.sessions.push({tabPath:f,threadId:r,channelId:a,stackFrames:s,currentStackFrame:l,exceptions:i,expressions:d,variables:{callchain:[],expressions:[],argument:[],local:[],currentLine:[]},expandedVariables:[],highlightedLines:null,activeLine:null,stopped:!0})}},updateSession(e,t){const{threadId:r,changes:a}=t.payload;e.sessions=e.sessions.map(s=>s.threadId===r?{...s,...a}:s)},removeSession(e,t){const{threadId:r}=t.payload;e.sessions=e.sessions.filter(a=>a.threadId!==r)},removeSessionByIndex(e,t){const r=t.payload;e.sessions.splice(r,1)},setSessions(e,t){const r=t.payload;e.sessions=r},setCommonVariables(e,t){const{key:r,threadId:a,frameId:s,variablesReference:i,variables:u}=t.payload;e.sessions=e.sessions.map(l=>{var d;return l.threadId===a?{...l,variables:{...l.variables,[r]:yl((d=l.variables)==null?void 0:d[r],{frameId:s,variablesReference:i,items:u},"frameId")},expandedVariables:[...l.expandedVariables,r]}:l})},setCallChainVariables(e,t){const{threadId:r,frameId:a,variablesReference:s,variables:i}=t.payload;e.sessions=e.sessions.map(u=>{var l;return u.threadId===r?{...u,variables:{...u.variables,callchain:yl((l=u.variables)==null?void 0:l.callchain,{frameId:a,variablesReference:s,items:i},"frameId")},expandedVariables:[...u.expandedVariables,"callchain"]}:u})},setExpressionVariables(e,t){const{threadId:r,variablesReference:a,variables:s}=t.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===r?{...i,variables:{...i.variables,expressions:yl((u=i.variables)==null?void 0:u.expressions,{variablesReference:a,items:s},"variablesReference")}}:i})},setSourceContent(e,t){const{threadId:r,content:a}=t.payload,s=tt(e.sessions,r);s&&(s.currentStackFrame.source={...s.currentStackFrame.source,content:a})},setDebuggerMeta(e,t){if(t.payload.state===Hr.ERROR){const{error:r={code:null,reason:"",type:vo.SOCKET_ERROR}}=t.payload;if(e.meta.error={...e.meta.error,...r,time:Date.now()},(r==null?void 0:r.type)===vo.SOCKET_CLOSURE&&(r==null?void 0:r.code)===1e3&&!(r!=null&&r.reason)&&e.meta.state===Hr.DETACHED)return}e.meta.state=t.payload.state,t.payload.shouldAutoReattach!==void 0&&(e.meta.shouldAutoReattach=t.payload.shouldAutoReattach)}},extraReducers:e=>{e.addMatcher(Wt(G_.fulfilled,lb),t=>{t.sessions=[]})}}),{addBreakpointDecoration:yI,removeBreakpointDecoration:mI,setBreakpointsDecoration:_I,updateBreakpointsDecoration:bI,clearBreakpoints:SI,clearBreakpointsExcept:TI,clearAllBreakpoints:EI,toggleBreakpoint:wI,toggleBreakpointsInFile:CI,disableAllBreakpoints:AI,enableAllBreakpoints:RI,setActiveLine:xI,addExpression:OI,renameExpression:PI,removeExpression:DI,removeAllExpressions:FI,setExpression:II,updateExpressionAt:MI,saveExpressions:NI,addSession:LI,updateSession:$I,removeSession:kI,removeSessionByIndex:qI,setSessions:H_,setCallChainVariables:jI,setExpressionVariables:BI,setCommonVariables:WI,setSourceContent:UI,setDebuggerMeta:HI}=U_.actions,G_=Y("files/wipeDebuggerSessions",async(e,{getState:t,dispatch:r})=>{const{sessions:a}=t().debugger;for(const{threadId:s}of a){const i=pf(s);r($f(i))}}),z_=Y("files/removeDebuggerSessionsNotIn",async(e,{getState:t,dispatch:r})=>{const{threadIds:a}=e,{sessions:s}=t().debugger,i=[],u=s.filter(l=>{const d=a.includes(l.threadId);return d||i.push(l.threadId),d});return r(H_(u)),{staleThreadIds:i}}),bo=Y("models/fetch",async()=>(await v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify({verb:v.DesignerRequestVerb.GET_INFO,path:v.MODEL_TAB_PATH,as:"json",content:!0}),headers:new Headers({"Content-Type":"application/json"})})).content),So=Y("models/save",async(e,{getState:t,dispatch:r,rejectWithValue:a})=>{const{tabs:s}=t().root,i=s.find(u=>u.path===v.MODEL_TAB_PATH);if(!i)return a("Error while saving the model");try{const u=await v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify({verb:"save",path:i.path,content:i.content}),headers:new Headers({"Content-Type":"application/json"})});return setTimeout(()=>{r(en())},Ja),{...u,path:i.path,content:e.content||{toJSON:!0,dataClasses:[],extraProperties:{}}}}catch{return a("Error while saving the model")}}),GI=Y("models/open",async(e,{dispatch:t,getState:r})=>{const{tabs:a}=r().root,s=a.find(i=>i.path==="models/main");if(s)return t(At(s)),s;t(bo())}),zI=Y("model/rename-dataclass",async({dataclassId:e,selectionId:t,name:r},{getState:a,dispatch:s})=>{const i=await s(M_()).then(g=>g.payload);if(!a().explorer.find(g=>g.path===v.FolderRootPath.CLASSES))throw new Error("Classes folder was not found!");const d={class:{found:!1,newNameTaken:!1,file:null,filename_update:r},entity:{found:!1,newNameTaken:!1,file:null,filename_update:`${r}Entity`},selection:{found:!1,newNameTaken:!1,file:null,filename_update:`${r}Selection`}};i==null||i.forEach(g=>{var b;g.path===`Classes/${e}___[<QODLY_ID>]`?(b=g.children)==null||b.forEach(y=>{var _,T,S,A;const w={...y,name:(_=y.info)==null?void 0:_.filename};((T=y.info)==null?void 0:T.filename)===e?(d.class.found=!0,d.class.file=w):((S=y.info)==null?void 0:S.filename)===`${e}Entity`?(d.entity.found=!0,d.entity.file=w):((A=y.info)==null?void 0:A.filename)===t&&(d.selection.found=!0,d.selection.file=w)}):(g.name===d.class.filename_update&&(d.class.newNameTaken=!0),g.name===d.entity.filename_update&&(d.entity.newNameTaken=!0),g.name===d.selection.filename_update&&(d.selection.newNameTaken=!0))});const f=Object.entries(d).reduce((g,b)=>{const[y,w]=b;return w.found?w.newNameTaken?[...g,{type:"error",message:`Cannot rename ${y} file to ${w.filename_update} because it already exists. The existing file will be used instead!`}]:g:[...g,{type:"warning",message:`${e} ${y} file was not found`}]},[]);f.length>0&&s(er({message:"The following errors were encountered during dataclass rename:",views:{tips:f}}));const h=Object.values(d).filter(g=>g.found&&g.file&&!g.newNameTaken);await Promise.all(h.map(async g=>await s(jn({file:g.file,newname:g.filename_update}))))}),Ga={DATACLASS_DELETE:"dataclass.delete",DATACLASS_DRAGGABLE:"dataclass.draggable"},VI={model:{dataClasses:{},collections:{},extraProperties:{}},draft:{dataClasses:{},collections:{},extraProperties:{}},flags:{[Ga.DATACLASS_DELETE]:!0,[Ga.DATACLASS_DRAGGABLE]:!0}},V_=Mt({name:"Models",initialState:VI,reducers:{setModelFlag(e,t){e.flags={...e.flags,...t.payload}}},extraReducers(e){e.addCase(bo.fulfilled,(t,r)=>{var u;const a={},s={},i=r.payload.extraProperties||{};(u=r.payload.dataClasses)==null||u.forEach(l=>{a[l.name]=l,s[l.collectionName]=l}),t.draft.dataClasses=a,t.draft.collections=s,t.draft.extraProperties=i,t.model.dataClasses=a,t.model.collections=s,t.model.extraProperties=i}),e.addCase(bo.rejected,t=>{t.errored=!0}),e.addCase(So.pending,()=>{}).addCase(So.fulfilled,(t,r)=>{const a={},s={},i=r.payload.content.extraProperties||{};r.payload.content.dataClasses.forEach(u=>{a[u.name]=u,s[u.collectionName]=u}),t.draft.dataClasses=a,t.draft.collections=s,t.draft.extraProperties=i,t.model.dataClasses=a,t.model.collections=s,t.model.extraProperties=i})}}),{setModelFlag:YI}=V_.actions;var Y_=(e=>(e.UUID="uuid",e.STRING="string",e.TEXT="text",e.DATE="date",e.TIME="duration",e.BOOLEAN="bool",e.BYTE="byte",e.INTEGER="word",e.LONG="long",e.LONG64="long64",e.FLOAT="number",e.BLOB="blob",e.IMAGE="image",e.OBJECT="object",e))(Y_||{}),Lo=(e=>(e.STORAGE="storage",e.RELATEDENTITY="relatedEntity",e.RELATEDENTITIES="relatedEntities",e.CALCULATED="calculated",e.COMPOSITION="composition",e.ALIAS="alias",e))(Lo||{});const KI=e=>["string","uuid","number","long"].includes(e.type),JI=[{label:"Storage",value:"storage"},{label:"Calculated",value:"calculated"}],QI=[{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"}],XI=[{title:"String",kind:"storage",value:"string",calculatedType:"string",calculatedKind:"storage"},{title:"Text",kind:"storage",value:"text",calculatedType:"text",calculatedKind:"storage"},{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Date",kind:"storage",value:"date",calculatedType:"date",calculatedKind:"storage"},{title:"Duration",kind:"storage",value:"duration",calculatedType:"duration",calculatedKind:"storage"},{title:"Bool",kind:"storage",value:"bool",calculatedType:"bool",calculatedKind:"storage"},{title:"Byte",kind:"storage",value:"byte",calculatedType:"byte",calculatedKind:"storage"},{title:"Word",kind:"storage",value:"word",calculatedType:"word",calculatedKind:"storage"},{title:"Number",kind:"storage",value:"number",calculatedType:"number",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"},{title:"Object",kind:"storage",value:"object",calculatedType:"object",calculatedKind:"storage"},{title:"Image",kind:"storage",value:"image",calculatedType:"image",calculatedKind:"storage"},{title:"Blob",kind:"storage",value:"blob",calculatedType:"blob",calculatedKind:"storage"}],ZI=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],eM=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],tM=[{label:"None",value:"none"},{label:"B-tree",value:"btree"},{label:"Cluster",value:"cluster"},{label:"Automatic",value:"auto"}],rM=(e,t)=>({toJSON:!0,extraProperties:t,dataClasses:e.map(r=>{var a;return{...r.data,extraProperties:{position:{x:r.position.x,y:r.position.y},panelColor:(a=r.data.extraProperties)==null?void 0:a.panelColor}}})});function nM(e,t,r){const a=e;let s=0;for(;r[`${a}${s||""}`];)s++;return`${a}${s||""}`}const K_=e=>e.kind===Lo.RELATEDENTITY,J_=e=>e.kind===Lo.RELATEDENTITIES,aM=e=>J_(e)||K_(e),sM=()=>gr(e=>e.model),oM=()=>gr(e=>e.model.draft.dataClasses),iM=()=>gr(e=>e.model.draft.collections),uM=e=>gr(t=>t.model.draft.dataClasses[e]),cM=(e,t)=>gr(r=>r.model.draft.dataClasses[e].attributes.find(v.by("name",t))),lM=()=>gr(e=>e.settings.session["model.viewport"]),fM=()=>{const e=gr(s=>s.model.flags),t=s=>s in e?e[s]:void 0,r=t(Ga.DATACLASS_DELETE),a=t(Ga.DATACLASS_DRAGGABLE);return{deleteDataclass:r,draggableDataclass:a,flags:e}},dM=V_.reducer;function ml(e,t){const r=e.tabs.find(({path:a})=>a===v.SETTINGS_TAB_PATH);r&&(r.flags.touched=t)}const oo=Y("saved_conditions/fetchSavedConditions",async(e,{rejectWithValue:t})=>{try{const{conditions:r=[]}=await v.getSavedConditions();return r}catch{return t("Error while loading the shared conditions")}});var _l={},ga={},Qs={},gy;function Q_(){if(gy)return Qs;gy=1,Object.defineProperty(Qs,"__esModule",{value:!0}),Qs.default=r;let e;const t=new Uint8Array(16);function r(){if(!e&&(e=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!e))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(t)}return Qs}var Nn={},va={},ya={},vy;function pM(){if(vy)return ya;vy=1,Object.defineProperty(ya,"__esModule",{value:!0}),ya.default=void 0;var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return ya.default=e,ya}var yy;function $o(){if(yy)return va;yy=1,Object.defineProperty(va,"__esModule",{value:!0}),va.default=void 0;var e=t(pM());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){return typeof s=="string"&&e.default.test(s)}var a=r;return va.default=a,va}var my;function ko(){if(my)return Nn;my=1,Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.default=void 0,Nn.unsafeStringify=a;var e=t($o());function t(u){return u&&u.__esModule?u:{default:u}}const r=[];for(let u=0;u<256;++u)r.push((u+256).toString(16).slice(1));function a(u,l=0){return r[u[l+0]]+r[u[l+1]]+r[u[l+2]]+r[u[l+3]]+"-"+r[u[l+4]]+r[u[l+5]]+"-"+r[u[l+6]]+r[u[l+7]]+"-"+r[u[l+8]]+r[u[l+9]]+"-"+r[u[l+10]]+r[u[l+11]]+r[u[l+12]]+r[u[l+13]]+r[u[l+14]]+r[u[l+15]]}function s(u,l=0){const d=a(u,l);if(!(0,e.default)(d))throw TypeError("Stringified UUID is invalid");return d}var i=s;return Nn.default=i,Nn}var _y;function hM(){if(_y)return ga;_y=1,Object.defineProperty(ga,"__esModule",{value:!0}),ga.default=void 0;var e=r(Q_()),t=ko();function r(f){return f&&f.__esModule?f:{default:f}}let a,s,i=0,u=0;function l(f,h,g){let b=h&&g||0;const y=h||new Array(16);f=f||{};let w=f.node||a,_=f.clockseq!==void 0?f.clockseq:s;if(w==null||_==null){const R=f.random||(f.rng||e.default)();w==null&&(w=a=[R[0]|1,R[1],R[2],R[3],R[4],R[5]]),_==null&&(_=s=(R[6]<<8|R[7])&16383)}let T=f.msecs!==void 0?f.msecs:Date.now(),S=f.nsecs!==void 0?f.nsecs:u+1;const A=T-i+(S-u)/1e4;if(A<0&&f.clockseq===void 0&&(_=_+1&16383),(A<0||T>i)&&f.nsecs===void 0&&(S=0),S>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");i=T,u=S,s=_,T+=122192928e5;const x=((T&268435455)*1e4+S)%4294967296;y[b++]=x>>>24&255,y[b++]=x>>>16&255,y[b++]=x>>>8&255,y[b++]=x&255;const D=T/4294967296*1e4&268435455;y[b++]=D>>>8&255,y[b++]=D&255,y[b++]=D>>>24&15|16,y[b++]=D>>>16&255,y[b++]=_>>>8|128,y[b++]=_&255;for(let R=0;R<6;++R)y[b+R]=w[R];return h||(0,t.unsafeStringify)(y)}var d=l;return ga.default=d,ga}var ma={},Ur={},_a={},by;function X_(){if(by)return _a;by=1,Object.defineProperty(_a,"__esModule",{value:!0}),_a.default=void 0;var e=t($o());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){if(!(0,e.default)(s))throw TypeError("Invalid UUID");let i;const u=new Uint8Array(16);return u[0]=(i=parseInt(s.slice(0,8),16))>>>24,u[1]=i>>>16&255,u[2]=i>>>8&255,u[3]=i&255,u[4]=(i=parseInt(s.slice(9,13),16))>>>8,u[5]=i&255,u[6]=(i=parseInt(s.slice(14,18),16))>>>8,u[7]=i&255,u[8]=(i=parseInt(s.slice(19,23),16))>>>8,u[9]=i&255,u[10]=(i=parseInt(s.slice(24,36),16))/1099511627776&255,u[11]=i/4294967296&255,u[12]=i>>>24&255,u[13]=i>>>16&255,u[14]=i>>>8&255,u[15]=i&255,u}var a=r;return _a.default=a,_a}var Sy;function Z_(){if(Sy)return Ur;Sy=1,Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.URL=Ur.DNS=void 0,Ur.default=u;var e=ko(),t=r(X_());function r(l){return l&&l.__esModule?l:{default:l}}function a(l){l=unescape(encodeURIComponent(l));const d=[];for(let f=0;f<l.length;++f)d.push(l.charCodeAt(f));return d}const s="6ba7b810-9dad-11d1-80b4-00c04fd430c8";Ur.DNS=s;const i="6ba7b811-9dad-11d1-80b4-00c04fd430c8";Ur.URL=i;function u(l,d,f){function h(g,b,y,w){var _;if(typeof g=="string"&&(g=a(g)),typeof b=="string"&&(b=(0,t.default)(b)),((_=b)===null||_===void 0?void 0:_.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let T=new Uint8Array(16+g.length);if(T.set(b),T.set(g,b.length),T=f(T),T[6]=T[6]&15|d,T[8]=T[8]&63|128,y){w=w||0;for(let S=0;S<16;++S)y[w+S]=T[S];return y}return(0,e.unsafeStringify)(T)}try{h.name=l}catch{}return h.DNS=s,h.URL=i,h}return Ur}var ba={},Ty;function gM(){if(Ty)return ba;Ty=1,Object.defineProperty(ba,"__esModule",{value:!0}),ba.default=void 0;function e(y){if(typeof y=="string"){const w=unescape(encodeURIComponent(y));y=new Uint8Array(w.length);for(let _=0;_<w.length;++_)y[_]=w.charCodeAt(_)}return t(a(s(y),y.length*8))}function t(y){const w=[],_=y.length*32,T="0123456789abcdef";for(let S=0;S<_;S+=8){const A=y[S>>5]>>>S%32&255,x=parseInt(T.charAt(A>>>4&15)+T.charAt(A&15),16);w.push(x)}return w}function r(y){return(y+64>>>9<<4)+14+1}function a(y,w){y[w>>5]|=128<<w%32,y[r(w)-1]=w;let _=1732584193,T=-271733879,S=-1732584194,A=271733878;for(let x=0;x<y.length;x+=16){const D=_,R=T,$=S,B=A;_=d(_,T,S,A,y[x],7,-680876936),A=d(A,_,T,S,y[x+1],12,-389564586),S=d(S,A,_,T,y[x+2],17,606105819),T=d(T,S,A,_,y[x+3],22,-1044525330),_=d(_,T,S,A,y[x+4],7,-176418897),A=d(A,_,T,S,y[x+5],12,1200080426),S=d(S,A,_,T,y[x+6],17,-1473231341),T=d(T,S,A,_,y[x+7],22,-45705983),_=d(_,T,S,A,y[x+8],7,1770035416),A=d(A,_,T,S,y[x+9],12,-1958414417),S=d(S,A,_,T,y[x+10],17,-42063),T=d(T,S,A,_,y[x+11],22,-1990404162),_=d(_,T,S,A,y[x+12],7,1804603682),A=d(A,_,T,S,y[x+13],12,-40341101),S=d(S,A,_,T,y[x+14],17,-1502002290),T=d(T,S,A,_,y[x+15],22,1236535329),_=f(_,T,S,A,y[x+1],5,-165796510),A=f(A,_,T,S,y[x+6],9,-1069501632),S=f(S,A,_,T,y[x+11],14,643717713),T=f(T,S,A,_,y[x],20,-373897302),_=f(_,T,S,A,y[x+5],5,-701558691),A=f(A,_,T,S,y[x+10],9,38016083),S=f(S,A,_,T,y[x+15],14,-660478335),T=f(T,S,A,_,y[x+4],20,-405537848),_=f(_,T,S,A,y[x+9],5,568446438),A=f(A,_,T,S,y[x+14],9,-1019803690),S=f(S,A,_,T,y[x+3],14,-187363961),T=f(T,S,A,_,y[x+8],20,1163531501),_=f(_,T,S,A,y[x+13],5,-1444681467),A=f(A,_,T,S,y[x+2],9,-51403784),S=f(S,A,_,T,y[x+7],14,1735328473),T=f(T,S,A,_,y[x+12],20,-1926607734),_=h(_,T,S,A,y[x+5],4,-378558),A=h(A,_,T,S,y[x+8],11,-2022574463),S=h(S,A,_,T,y[x+11],16,1839030562),T=h(T,S,A,_,y[x+14],23,-35309556),_=h(_,T,S,A,y[x+1],4,-1530992060),A=h(A,_,T,S,y[x+4],11,1272893353),S=h(S,A,_,T,y[x+7],16,-155497632),T=h(T,S,A,_,y[x+10],23,-1094730640),_=h(_,T,S,A,y[x+13],4,681279174),A=h(A,_,T,S,y[x],11,-358537222),S=h(S,A,_,T,y[x+3],16,-722521979),T=h(T,S,A,_,y[x+6],23,76029189),_=h(_,T,S,A,y[x+9],4,-640364487),A=h(A,_,T,S,y[x+12],11,-421815835),S=h(S,A,_,T,y[x+15],16,530742520),T=h(T,S,A,_,y[x+2],23,-995338651),_=g(_,T,S,A,y[x],6,-198630844),A=g(A,_,T,S,y[x+7],10,1126891415),S=g(S,A,_,T,y[x+14],15,-1416354905),T=g(T,S,A,_,y[x+5],21,-57434055),_=g(_,T,S,A,y[x+12],6,1700485571),A=g(A,_,T,S,y[x+3],10,-1894986606),S=g(S,A,_,T,y[x+10],15,-1051523),T=g(T,S,A,_,y[x+1],21,-2054922799),_=g(_,T,S,A,y[x+8],6,1873313359),A=g(A,_,T,S,y[x+15],10,-30611744),S=g(S,A,_,T,y[x+6],15,-1560198380),T=g(T,S,A,_,y[x+13],21,1309151649),_=g(_,T,S,A,y[x+4],6,-145523070),A=g(A,_,T,S,y[x+11],10,-1120210379),S=g(S,A,_,T,y[x+2],15,718787259),T=g(T,S,A,_,y[x+9],21,-343485551),_=i(_,D),T=i(T,R),S=i(S,$),A=i(A,B)}return[_,T,S,A]}function s(y){if(y.length===0)return[];const w=y.length*8,_=new Uint32Array(r(w));for(let T=0;T<w;T+=8)_[T>>5]|=(y[T/8]&255)<<T%32;return _}function i(y,w){const _=(y&65535)+(w&65535);return(y>>16)+(w>>16)+(_>>16)<<16|_&65535}function u(y,w){return y<<w|y>>>32-w}function l(y,w,_,T,S,A){return i(u(i(i(w,y),i(T,A)),S),_)}function d(y,w,_,T,S,A,x){return l(w&_|~w&T,y,w,S,A,x)}function f(y,w,_,T,S,A,x){return l(w&T|_&~T,y,w,S,A,x)}function h(y,w,_,T,S,A,x){return l(w^_^T,y,w,S,A,x)}function g(y,w,_,T,S,A,x){return l(_^(w|~T),y,w,S,A,x)}var b=e;return ba.default=b,ba}var Ey;function vM(){if(Ey)return ma;Ey=1,Object.defineProperty(ma,"__esModule",{value:!0}),ma.default=void 0;var e=r(Z_()),t=r(gM());function r(i){return i&&i.__esModule?i:{default:i}}var s=(0,e.default)("v3",48,t.default);return ma.default=s,ma}var Sa={},Ta={},wy;function yM(){if(wy)return Ta;wy=1,Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.default=void 0;var t={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};return Ta.default=t,Ta}var Cy;function mM(){if(Cy)return Sa;Cy=1,Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.default=void 0;var e=a(yM()),t=a(Q_()),r=ko();function a(u){return u&&u.__esModule?u:{default:u}}function s(u,l,d){if(e.default.randomUUID&&!l&&!u)return e.default.randomUUID();u=u||{};const f=u.random||(u.rng||t.default)();if(f[6]=f[6]&15|64,f[8]=f[8]&63|128,l){d=d||0;for(let h=0;h<16;++h)l[d+h]=f[h];return l}return(0,r.unsafeStringify)(f)}var i=s;return Sa.default=i,Sa}var Ea={},wa={},Ay;function _M(){if(Ay)return wa;Ay=1,Object.defineProperty(wa,"__esModule",{value:!0}),wa.default=void 0;function e(s,i,u,l){switch(s){case 0:return i&u^~i&l;case 1:return i^u^l;case 2:return i&u^i&l^u&l;case 3:return i^u^l}}function t(s,i){return s<<i|s>>>32-i}function r(s){const i=[1518500249,1859775393,2400959708,3395469782],u=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof s=="string"){const h=unescape(encodeURIComponent(s));s=[];for(let g=0;g<h.length;++g)s.push(h.charCodeAt(g))}else Array.isArray(s)||(s=Array.prototype.slice.call(s));s.push(128);const l=s.length/4+2,d=Math.ceil(l/16),f=new Array(d);for(let h=0;h<d;++h){const g=new Uint32Array(16);for(let b=0;b<16;++b)g[b]=s[h*64+b*4]<<24|s[h*64+b*4+1]<<16|s[h*64+b*4+2]<<8|s[h*64+b*4+3];f[h]=g}f[d-1][14]=(s.length-1)*8/Math.pow(2,32),f[d-1][14]=Math.floor(f[d-1][14]),f[d-1][15]=(s.length-1)*8&4294967295;for(let h=0;h<d;++h){const g=new Uint32Array(80);for(let S=0;S<16;++S)g[S]=f[h][S];for(let S=16;S<80;++S)g[S]=t(g[S-3]^g[S-8]^g[S-14]^g[S-16],1);let b=u[0],y=u[1],w=u[2],_=u[3],T=u[4];for(let S=0;S<80;++S){const A=Math.floor(S/20),x=t(b,5)+e(A,y,w,_)+T+i[A]+g[S]>>>0;T=_,_=w,w=t(y,30)>>>0,y=b,b=x}u[0]=u[0]+b>>>0,u[1]=u[1]+y>>>0,u[2]=u[2]+w>>>0,u[3]=u[3]+_>>>0,u[4]=u[4]+T>>>0}return[u[0]>>24&255,u[0]>>16&255,u[0]>>8&255,u[0]&255,u[1]>>24&255,u[1]>>16&255,u[1]>>8&255,u[1]&255,u[2]>>24&255,u[2]>>16&255,u[2]>>8&255,u[2]&255,u[3]>>24&255,u[3]>>16&255,u[3]>>8&255,u[3]&255,u[4]>>24&255,u[4]>>16&255,u[4]>>8&255,u[4]&255]}var a=r;return wa.default=a,wa}var Ry;function bM(){if(Ry)return Ea;Ry=1,Object.defineProperty(Ea,"__esModule",{value:!0}),Ea.default=void 0;var e=r(Z_()),t=r(_M());function r(i){return i&&i.__esModule?i:{default:i}}var s=(0,e.default)("v5",80,t.default);return Ea.default=s,Ea}var Ca={},xy;function SM(){if(xy)return Ca;xy=1,Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.default=void 0;var e="00000000-0000-0000-0000-000000000000";return Ca.default=e,Ca}var Aa={},Oy;function TM(){if(Oy)return Aa;Oy=1,Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.default=void 0;var e=t($o());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){if(!(0,e.default)(s))throw TypeError("Invalid UUID");return parseInt(s.slice(14,15),16)}var a=r;return Aa.default=a,Aa}var Py;function EM(){return Py||(Py=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"NIL",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,"v1",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"v3",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"v5",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"validate",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return u.default}});var t=h(hM()),r=h(vM()),a=h(mM()),s=h(bM()),i=h(SM()),u=h(TM()),l=h($o()),d=h(ko()),f=h(X_());function h(g){return g&&g.__esModule?g:{default:g}}})(_l)),_l}var bl,Dy;function wM(){if(Dy)return bl;Dy=1;function e(t,r){if(!t||!r||!t.length||!r.length)throw new Error("Bad alphabet");this.srcAlphabet=t,this.dstAlphabet=r}return e.prototype.convert=function(t){var r,a,s,i={},u=this.srcAlphabet.length,l=this.dstAlphabet.length,d=t.length,f=typeof t=="string"?"":[];if(!this.isValid(t))throw new Error('Number "'+t+'" contains of non-alphabetic digits ('+this.srcAlphabet+")");if(this.srcAlphabet===this.dstAlphabet)return t;for(r=0;r<d;r++)i[r]=this.srcAlphabet.indexOf(t[r]);do{for(a=0,s=0,r=0;r<d;r++)a=a*u+i[r],a>=l?(i[s++]=parseInt(a/l,10),a=a%l):s>0&&(i[s++]=0);d=s,f=this.dstAlphabet.slice(a,a+1).concat(f)}while(s!==0);return f},e.prototype.isValid=function(t){for(var r=0;r<t.length;++r)if(this.srcAlphabet.indexOf(t[r])===-1)return!1;return!0},bl=e,bl}var Sl,Fy;function CM(){if(Fy)return Sl;Fy=1;var e=wM();function t(r,a){var s=new e(r,a);return function(i){return s.convert(i)}}return t.BIN="01",t.OCT="01234567",t.DEC="0123456789",t.HEX="0123456789abcdef",Sl=t,Sl}var Tl,Iy;function AM(){if(Iy)return Tl;Iy=1;const{v4:e,validate:t}=EM(),r=CM(),a={cookieBase90:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~",flickrBase58:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ",uuid25Base36:"0123456789abcdefghijklmnopqrstuvwxyz"},s={consistentLength:!0};let i;const u=(f,h,g)=>{const b=h(f.toLowerCase().replace(/-/g,""));return!g||!g.consistentLength?b:b.padStart(g.shortIdLength,g.paddingChar)},l=(f,h)=>{const b=h(f).padStart(32,"0").match(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/);return[b[1],b[2],b[3],b[4],b[5]].join("-")},d=f=>Math.ceil(Math.log(2**128)/Math.log(f));return Tl=(()=>{const f=(h,g)=>{const b=h||a.flickrBase58,y={...s,...g};if([...new Set(Array.from(b))].length!==b.length)throw new Error("The provided Alphabet has duplicate characters resulting in unreliable results");const w=d(b.length),_={shortIdLength:w,consistentLength:y.consistentLength,paddingChar:b[0]},T=r(r.HEX,b),S=r(b,r.HEX),A=()=>u(e(),T,_),D={alphabet:b,fromUUID:R=>u(R,T,_),maxLength:w,generate:A,new:A,toUUID:R=>l(R,S),uuid:e,validate:(R,$=!1)=>{if(!R||typeof R!="string")return!1;const B=y.consistentLength?R.length===w:R.length<=w,z=R.split("").every(ee=>b.includes(ee));return $===!1?B&&z:B&&z&&t(l(R,S))}};return Object.freeze(D),D};return f.constants=a,f.uuid=e,f.generate=()=>(i||(i=f(a.flickrBase58).generate),i()),f})(),Tl}var RM=AM();const qo=(e,t,r)=>{switch(e.type){case"datasource":return{...e,path:e.path===t?r:e.path,value:e.valueType==="datasource"&&e.value===t?r:e.value,compareValue:e.compareValueType==="datasource"&&e.compareValue===t?r:e.compareValue};case"privilege":case"currentState":case"parentState":if(e.valueType==="datasource")return{...e,value:e.value===t?r:e.value};break;case"combination":return{...e,conditions:(e.conditions||[]).map(a=>qo(a,t,r))}}return e},xM=v.queue();async function Ra(e){const t={verb:v.DesignerRequestVerb.SET_FILE_CONTENT,asText:!1,name:"saved_conditions.json",path:"",root:"shared",content:{conditions:e}};await xM(()=>v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify(t),headers:new Headers({"Content-Type":"application/json"})}))}const jo=(e,t)=>{if(e.id===t)return null;if(e.type==="reference"&&e.ref===t)return null;if(e.type==="combination"&&e.conditions){const r=e.conditions.map(a=>jo(a,t)).filter(Boolean);return r.length===1?{...r[0],id:e.id}:{...e,conditions:r}}return e},Bo=e=>{if(e.id){if(e.type==="combination"&&e.conditions)return{...e,conditions:e.conditions.map(Bo)}}else return{...e,id:RM.generate()};return e},eb=Mt({name:"shared-conditions",initialState:{state:"unknown",conditions:[]},reducers:{updateSavedConditions:(e,t)=>(e.conditions=t.payload.conditions,Ra(t.payload.conditions),e),setSavedCondition:(e,t)=>{const{payload:r}=t;return e.conditions=e.conditions.map(a=>a.id===r.id?{...Bo(r.condition),id:a.id}:a),Ra(e.conditions),e},updateSavedConditionDs:(e,t)=>{const{old_reference:r,new_reference:a}=t.payload;e.conditions=e.conditions.map(s=>qo(s,r,a)),Ra(e.conditions)},addSavedCondition:(e,t)=>(e.conditions=[...e.conditions,t.payload],Ra(e.conditions),e),removeSavedCondition:(e,t)=>{const{id:r}=t.payload;return e.conditions=e.conditions.map(a=>jo(a,r)).filter(Boolean),Ra(e.conditions),e},initSavedConditions:(e,t)=>(e.conditions=t.payload.conditions,e)},extraReducers(e){e.addCase(oo.pending,t=>({...t,state:"loading"})).addCase(oo.fulfilled,(t,{payload:r})=>({state:"loaded",conditions:r})).addCase(oo.rejected,(t,r)=>({...t,state:"error",error:r.payload||"Error while loading the shared conditions"})),e.addMatcher(Wt(_b),(t,r)=>{const{state:a,oldLabel:s}=r.payload;t.conditions=t.conditions.map(i=>Gn(i,s,a.label))}),e.addMatcher(Wt(bb),(t,r)=>{const{payload:a}=r;t.conditions=t.conditions.map(s=>{var i;return Gn(s,(i=a.state)==null?void 0:i.label)})})}}),{updateSavedConditions:OM,setSavedCondition:PM,updateSavedConditionDs:DM,addSavedCondition:FM,removeSavedCondition:tb,initSavedConditions:IM}=eb.actions,MM=eb.reducer,rb={[v.WT_FLAGS_KEYS.SIDEBAR_SECTION_RESIZABLE]:!0},nb=Mt({name:"webforms",initialState:()=>{const{webforms:e}=yn();return{i18n:{current:""},...e,templates:{data:[],selectedGroup:""},datasources:{...cf.webforms.datasources,...e==null?void 0:e.datasources},flags:rb}},reducers:{toggleInspector:(e,t)=>{const{type:r}=t.payload;e.inspector[r].active=!e.inspector[r].active,e.inspector[r].active||(e.inspector[r].data=void 0)},inspect:(e,t)=>{const{type:r,data:a}=t.payload;e.inspector[r].active&&(e.inspector[r].data=a)},addComponent:(e,t)=>{e.components.push(t.payload)},editComponent:(e,t)=>{const{id:r,changes:a}=t.payload;e.components=e.components.map(s=>s.id===r?{...s,...a}:s)},removeComponent:(e,t)=>{const{payload:r}=t,a=e.components.findIndex(s=>s.id===r);a!==-1&&e.components.splice(a,1)},setSelectedGroup:(e,t)=>{e.templates.selectedGroup=t.payload.selectedGroup},setTemplatesData:(e,t)=>{e.templates.data=t.payload},setTemplateData:(e,t)=>{const{group:r,components:a}=t.payload,s=e.templates.data.find(i=>i.group===r);s&&(s.components=a)},setDatasourcesTheme:(e,t)=>{e.datasources.theme=t.payload},setWebformsFlag(e,t){e.flags={...e.flags,...t.payload}},setI18nCurrent(e,t){e.i18n={...e.i18n,current:t.payload.current}}},extraReducers(e){e.addCase(cb.fulfilled,(t,r)=>{t.components=r.payload})}}),{toggleInspector:NM,inspect:LM,addComponent:ab,editComponent:sb,removeComponent:ob,setSelectedGroup:$M,setTemplatesData:ib,setTemplateData:ub,setDatasourcesTheme:kM,setWebformsFlag:qM,setI18nCurrent:jM}=nb.actions,BM=nb.reducer,kf=fe.curry((e,t)=>{var s,i,u;const r={...t.sharedDatasources.sources},a=(u=(i=(s=t.root.tabs.find(v.by("path",e)))==null?void 0:s.content)==null?void 0:i.metadata)==null?void 0:u.datasources;return a&&(r[e]=a),fe.cloneDeep(r)}),WM=Y("webforms/fetchTemplates",async(e,{dispatch:t,getState:r})=>{const{data:a}=r().webforms.templates,s=r().settings.session["studio.tipsBaseUrl"]||"";if(!fe.isEmpty(a))return a;try{const u=await(await fetch(`${s}/build/index.json?t=${Date.now()}`)).json();return t(ib(u)),u}catch{return[]}}),UM=Y("webforms/fetchTemplate",async({name:e},{dispatch:t,getState:r})=>{const{data:a}=r().webforms.templates,s=a.find(i=>i.group===e);if(s&&!fe.isEmpty(s.components))return s.components;try{const u=await(await fetch(`${s==null?void 0:s.link}?t=${Date.now()}`)).json();return t(ub({group:e,components:u})),u}catch{return[]}}),cb=Y("webforms/fetchCraftedComponents",async(e,{rejectWithValue:t})=>{try{return(await v.getNodeInfo({path:"WebForms/crafted_components.json",verb:v.DesignerRequestVerb.GET_INFO,content:!0,as:"json"})).content}catch{return t("Error while loading the crafted components")}}),HM=Y("webforms/addCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(ab(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while adding the crafted component")}}),GM=Y("webforms/editCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(sb(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while editing the crafted component")}}),zM=Y("webforms/removeCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(ob(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while removing the crafted component")}}),qf=Y("datasources/add-datasource",async(e,{getState:t,rejectWithValue:r})=>{var a,s;try{const i=t(),u=e.datasource,l=!!u.namespace,d=[];if(l){const f={...i.sharedDatasources.sources,[u.namespace]:[...i.sharedDatasources.sources[u.namespace],u]};d.push(...f[u.namespace]),await v.setSharedSources(f)}else(((s=(a=i.root.tabs.find(v.by("path",e.path)).content)==null?void 0:a.metadata)==null?void 0:s.datasources)||[]).push(u);return{list:d,path:e.path,namespace:e.datasource.namespace}}catch{console.error("Error while adding the datasource",e.datasource.id),r("Error while adding the datasource")}}),jf=Y("datasources/edit-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const{namespace:a,path:s}=e,i=t(),u=!!e.namespace,l=kf(s,i);let d=fe.defaultTo(l[a||s],[]);const f=d.find(y=>y.id===e.id&&(y.namespace||"")===(e.namespace||"")),h=e.changes,g=h??{[e.property]:e.value};return d=d.map(y=>y.id===e.id?{...y,...g}:y),u&&await v.setSharedSources({...i.sharedDatasources.sources,[e.namespace]:d}),(fe.isObject(h)?Object.keys(h):[]).includes("dataType")&&e.updateRefs&&v.datasourcesSubject.next({datasource:{id:e.id,namespace:e.namespace},path:s??"",action:v.DatasourcesActions.TYPE_CHANGE,old_type:(f==null?void 0:f.dataType)||"",new_type:g.dataType,is_shared:u}),{list:d,path:e.path,namespace:e.namespace}}catch{r(`Error while editing datasource ${e.id}`)}}),VM=e=>e.type===Yr.fulfilled.type,Yr=Y("datasources/rename-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const a=t(),s=!!e.namespace,i=e.namespace||e.path,u=new RegExp(`^${e.id}\\b`,""),l=y=>{if(y==null)return y;const w=y.split(".");return w[0]===e.id?(w[0]=e.new_name,w.join(".")):y},d=kf(e.path,a),[f,h]=[fe.omit(d,e.path),d[e.path]],g=y=>{var w;(w=y.events)==null||w.forEach(_=>{var T;switch(_.type){case"method":{const S=_;if(S.params.forEach(A=>{const x=v.splitDatasourceID(A.datasource),{root:D}=v.splitDatasourceID(A.datasource);A.datasource&&D===e.id&&v.isSameNamespace(x.namespace,s?i:"")&&Object.assign(A,{datasource:l(A.datasource)})}),S.returns){const A=v.splitDatasourceID(S.returns.datasource),{root:x}=v.splitDatasourceID(A.id);x===e.id&&v.isSameNamespace(A.namespace,s?i:"")&&Object.assign(S.returns,{datasource:l((T=S.returns)==null?void 0:T.datasource)})}return}case"simple-action":{const S=_;S.datasource&&S.datasource.name&&v.isSameNamespace(S.datasource.namespace,s?i:"")&&Object.assign(S.datasource,{name:l(S.datasource.name),from:l(S.datasource.from),target:l(S.datasource.target)});return}default:return}})},b=(y,w)=>{y===i?w.forEach(_=>{const T=(v.isObjectDatasource(_)||!v.isSimpleDatasource(_))&&_.from&&u.test(_.from);_.id===e.id?_.id=e.new_name:T&&_.from&&(_.from=_.from.replace(new RegExp(`^${e.id}`,""),e.new_name)),e.updateRefs&&g(_)}):e.updateRefs&&w.forEach(_=>{g(_)})};if(b(e.path,h),Object.entries(f).forEach(([y,w])=>{b(y,w)}),e.updateRefs){const y=v.getDatasourceId({id:e.id,namespace:e.namespace}),w=v.getDatasourceId({id:e.new_name,namespace:e.namespace});v.datasourcesSubject.next({path:e.path??"",action:v.DatasourcesActions.RENAME,old_reference:y,new_reference:w,is_shared:s})}return fe.isEqual(a.sharedDatasources.sources,f)||await v.setSharedSources({...a.sharedDatasources.sources,...f}),{allDatasource:{local:h,shared:f},path:e.path,namespace:e.namespace}}catch{return r(`Error while renaming datasource ${e.namespace}:${e.id}`)}}),ka=Y("datasources/delete-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const a=t(),s=!!e.namespace,i=e.namespace||e.path,l=kf(e.path,a)[i].filter(v.outById(e.id));return s&&await v.setSharedSources({...a.sharedDatasources.sources,[e.namespace]:l}),{list:l,path:e.path,namespace:e.namespace}}catch{return r(`Error while removing datasource ${e.id}`)}}),za=Mt({name:"root",initialState:()=>{const e=yn();return{filesLoading:!1,tabs:e.tabs||[],activeTab:e.activeTab,recent:e.recent||[],clipboard:null}},reducers:{setWebformState(e,t){const{path:r,currentState:a}=t.payload;e.tabs.forEach(s=>{s.path===r&&(s.content.metadata.currentState=a.id)})},copyToClipBoard(e,t){e.clipboard=t.payload},setPanelState(e,t){const{path:r,...a}=t.payload;e.tabs.forEach(s=>{s.path===r&&(s.view||(s.view={panel:{isOpen:!1,type:"",current:""}}),Object.assign(s.view.panel,a))})},addDataSource(e,t){var i;const{payload:{path:r,datasourceDef:a}}=t,s=e.tabs.find(u=>u.path===r);s&&(s.content.metadata.datasources=s.content.metadata.datasources||[],(i=s.content.metadata.datasources)!=null&&i.find(l=>l.id===a.id)||(s.content.metadata.datasources=[...s.content.metadata.datasources,{...a,events:[]}],s.flags={...s.flags,touched:!0,confirmed:!0}))},addWebformState(e,t){var i;const{payload:{path:r,stateDef:a}}=t,s=e.tabs.find(u=>u.path===r);s&&(s.content.metadata.states=s.content.metadata.states||[v.ROOT_WEBFORM_STATE],(i=s.content.metadata.states)!=null&&i.find(l=>l.id===a.id)||(s.content.metadata.states=[...s.content.metadata.states,a],s.flags={...s.flags,touched:!0,confirmed:!0}))},removeWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:dm(a.content,r.state)}:a)},editWebformState(e,t){const{path:r,state:a,oldLabel:s}=t.payload;e.tabs=e.tabs.map(i=>i.path===r?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,metadata:{...i.content.metadata,states:i.content.metadata.states.map(u=>v.isBaseState(u)?u:u.id===a.id?a.conditions?{...a,conditions:Bo(a.conditions)}:a:{...u,conditions:u.conditions?Gn(u.conditions,s,a.label):u.conditions})}}}:i)},updateStateConditionDs(e,t){const{path:r,old_reference:a,new_reference:s}=t.payload;e.tabs=e.tabs.map(i=>{var u,l;return i.path===r?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,metadata:{...i.content.metadata,states:(((l=(u=i.content)==null?void 0:u.metadata)==null?void 0:l.states)||[]).map(d=>d.conditions?{...d,conditions:qo(d.conditions,a,s)}:d)}}}:i})},resetComponentState(e,t){const{path:r,id:a,state:s,lang:i,resetAll:u}=t.payload;e.tabs=e.tabs.map(l=>l.path===r?{...l,flags:{...l.flags,touched:!0,confirmed:!0},content:{...l.content,components:{...l.content.components,[a]:{...l.content.components[a],custom:{...fe.omit(l.content.components[a].custom,u&&s&&i?[`states:${s.id}`,`i18n:${i}`,`states:${s.id}:i18n:${i}`]:s?i?`states:${s.id}:i18n:${i}`:`states:${s.id}`:i?`i18n:${i}`:"")}}}}}:l)},unsetCustomComponentProp(e,t){const{path:r,id:a,prop:s,state:i,lang:u}=t.payload;e.tabs=e.tabs.map(l=>l.path===r?{...l,flags:{...l.flags,touched:!0,confirmed:!0},content:{...l.content,components:{...l.content.components,[a]:{...l.content.components[a],custom:{...fe.omit(l.content.components[a].custom,i?u?`states:${i.id}:i18n:${u}.${s}`:`states:${i.id}.${s}`:u?`i18n:${u}.${s}`:s)}}}}}:l)},setDefaultWebformStates(e,t){const{path:r,states:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,defaultStates:a.map(({id:i})=>i)}}}:s)},addDefaultWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>{var s;return a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:{...a.content,metadata:{...a.content.metadata,defaultStates:Array.from(new Set([...((s=a.content.metadata)==null?void 0:s.defaultStates)||[],r.state.id]))}}}:a})},removeDefaultWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>{var s;return a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:{...a.content,metadata:{...a.content.metadata,defaultStates:(((s=a.content.metadata)==null?void 0:s.defaultStates)||[]).filter(i=>i!==r.state.id)}}}:a})},removeDataSource(e,t){const{path:r,datasourceID:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,datasources:s.content.metadata.datasources.filter(i=>i.id!==a)}}}:s)},setDataSources(e,t){const{payload:{path:r,datasourceArr:a}}=t;e.tabs=e.tabs.map(s=>{var i;return s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...(i=s.content)==null?void 0:i.metadata,datasources:a}}}:s})},setTabs(e,t){e.tabs=t.payload},closeDebuggerTabs(e){e.tabs=e.tabs.filter(r=>r.type!==v.FileFolderType.DEBUGGER);const t=e.tabs.length?e.tabs[e.tabs.length-1]:null;e.activeTab=t?t.path:"",t?Ar(t):Pa()},closeTab(e,t){const r=t.payload;e.tabs.splice(r,1);const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);a?(e.activeTab=a.path,Ar(a)):(e.activeTab="",Pa())},closeOthers(e,t){e.tabs=e.tabs.filter(r=>r.path===t.payload),e.activeTab=t.payload,Ar(e.tabs[0])},closeAllTabs(e){e.tabs=[],e.activeTab="",Pa()},closeRightTabs(e,t){e.tabs.splice(t.payload+1),e.activeTab=e.tabs[t.payload].path,Ar(e.tabs[t.payload])},closeLeftTabs(e,t){e.tabs.splice(0,t.payload);const r=e.tabs[0];e.activeTab=r.path,Ar(r)},closeSavedTabs(e){e.tabs=e.tabs.filter(({flags:{touched:r}})=>r);const t=e.tabs.reduce((r,a)=>(a==null?void 0:a.weight)>((r==null?void 0:r.weight)||0)?a:r,null);t?(e.activeTab=t.path,Ar(t)):(e.activeTab="",Pa())},confirmTab(e,t){const r=e.tabs.find(({path:a})=>a===t.payload);r&&(r.flags.confirmed||za.caseReducers.setTabFlags(e,{type:t.type,payload:{path:t.payload,flags:{confirmed:!0}}}))},selectTab(e,t){const r=e.tabs.find(({path:s})=>s===t.payload);if(!r||e.activeTab===t.payload)return;const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);r.weight=a?(a.weight||0)+1:1,e.activeTab=t.payload},openTabUnselected(e,t){const r=t.payload;let a=e.tabs.find(({path:i})=>r.path===i);a||(e.tabs.push(r),a=e.tabs[e.tabs.length-1]);const s=e.tabs.reduce((i,u)=>(u==null?void 0:u.weight)>((i==null?void 0:i.weight)||0)?u:i,null);a.weight=s?(s.weight||0)+1:1,a.extra={...a.extra,...r.extra}},selectTabByReference(e,t){const r=[v.FileFolderType.DEBUGGER],{isNew:a,...s}=t.payload;let i=s,u=e.tabs.find(({path:l})=>i.path===l);if(i.history||(i.history={stack:[],active:-1,locked:!1}),(r.includes(i.type)||u!=null&&u.flags.confirmed)&&(i={...i,flags:{...i.flags,confirmed:!0}}),!u){const l=e.tabs.findIndex(({flags:{confirmed:d}})=>d===!1);l!==-1&&!r.includes(i.type)&&!a?e.activeTab===e.tabs[l].path?(e.tabs[l]=i,u=e.tabs[l]):(e.tabs.push(i),u=e.tabs[e.tabs.length-1],e.tabs.splice(l,1)):(e.tabs.push(i),u=e.tabs[e.tabs.length-1])}if(e.activeTab!==i.path){const l=e.tabs.reduce((d,f)=>(f==null?void 0:f.weight)>((d==null?void 0:d.weight)||0)?f:d,null);e.activeTab=i.path,u.weight=((l==null?void 0:l.weight)||0)+1}u.extra={...u.extra,...i.extra},u.view={...u.view,...i.view},u.flags={...u.flags||{},...i.flags||{}}},setContent(e,t){const{path:r,content:a,contentPath:s,date:i}=t.payload;e.tabs=e.tabs.map(u=>{var f,h;if(u.path!==r)return u;a&&typeof a=="object"&&(s?fe.set(u.content,s,a):u.content=a),typeof a=="string"&&(u.content=a),i&&(u.date=i);let l=!1,d=u.flags.confirmed;return((h=(f=u.extra)==null?void 0:f.editor)==null?void 0:h.key)!=="editors:localization"&&(typeof u.content=="string"?l=u.initialContent!==u.content:l=!fe.isEqual(u.initialContent,u.content),d=!d&&l?!0:d),{...u,flags:{...u.flags,touched:l,confirmed:d}}})},setTabFlags(e,t){const{path:r,flags:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,...a}}:s)},setTabsFlags(e,t){const{tabs:r,flags:a}=t.payload;e.tabs=e.tabs.map(s=>r.includes(s.path)?{...s,flags:{...s.flags,...a}}:s)},setTabExtra(e,t){const{path:r,extra:a,flags:s}=t.payload;e.tabs=e.tabs.map(i=>i.path===r?{...i,extra:{...i.extra,...a},flags:s?{...i.flags,...s}:i.flags}:i)},addWebFormStyles(e,t){const{path:r,styles:a=[]}=t.payload,s=e.tabs.find(i=>i.path===r);if(s){const i=s.content.metadata.styles.map(({name:l})=>l),u=a.filter(({name:l})=>!i.includes(l));s.content.metadata.styles=[...s.content.metadata.styles,...u].map(({scope:l,...d})=>d)}},changeTabEditor(e,t){return e.tabs=e.tabs.map(r=>r.path===t.payload.path?t.payload:r),e},setHistoryContent(e,t){const{path:r,contentPath:a}=t.payload;e.tabs=e.tabs.map(s=>{var d,f;if(s.path!==r)return s;const i=!fe.isEqual(s.content,(d=s.history)==null?void 0:d.stack[s.history.active]),l=a==="components"&&(()=>{var S,A;if(!s.history||!s.content||!s.history.stack[s.history.active])return!1;const h=s.history.stack[s.history.active],g=s.content;if(!(h!=null&&h.components)||!(g!=null&&g.components))return!1;const b=h.components,y=g.components,w=new Set([...Object.keys(b),...Object.keys(y)]);let _=!1,T=!1;for(const x of w){const D=b[x],R=y[x];if(!D||!R){T=!0;break}const $={...D},B={...R};if($.props){const{gridProps:z,...ee}=$.props;$.props=ee}if(B.props){const{gridProps:z,...ee}=B.props;B.props=ee}if(!fe.isEqual($,B)){T=!0;break}fe.isEqual((S=D.props)==null?void 0:S.gridProps,(A=R.props)==null?void 0:A.gridProps)||(_=!0)}return _&&!T})();return s.history&&i&&!l&&(s.history.stack=[...(f=s.history)==null?void 0:f.stack.slice(0,s.history.active+1),s.content],s.history.active=s.history.stack.length-1),{...s}})},unlockHistory(e,t){const r=t.payload;e.tabs=e.tabs.map(a=>a.path!==r?a:(a.history&&(a.history.locked=!1),{...a}))},undo(e){e.tabs=e.tabs.map(t=>t.path!==e.activeTab?t:(t.history&&t.history.active>0&&(t.history.locked=!0,t.history.active--,t.content=t.history.stack[t.history.active]),{...t}))},redo(e){e.tabs=e.tabs.map(t=>t.path!==e.activeTab?t:(t.history&&t.history.active<t.history.stack.length-1&&(t.history.locked=!0,t.history.active++,t.content=t.history.stack[t.history.active]),{...t}))}},extraReducers:e=>{e.addCase(Df,(t,r)=>{if(r.payload.settingsKey==="studio.enablePreview"&&r.payload.value===!1){const a=t.tabs.find(({flags:{confirmed:s}})=>s===!1);a&&za.caseReducers.setTabFlags(t,{type:"",payload:{path:a.path,flags:{confirmed:!0}}})}}),e.addCase($_.fulfilled,(t,r)=>{if(!r.payload)return;const{content:a,line:s,path:i}=r.payload,u=t.tabs.find(l=>l.path===i);if(u&&typeof u.content=="string"){const l=u.content.trim().split(`
166
+ `}],zl=e=>{const t=["folder","file"];return e.sort((r,a)=>r.type===a.type?r.name.localeCompare(a.name):t.indexOf(r.type)-t.indexOf(a.type))},Ae=(e,t)=>e.reduce((r,a)=>a.path===t.path&&a.type===t.type&&a.id===t.id?[...r,t]:a.children?[...r,{...a,children:zl(Ae(a.children,t))}]:[...r,a],[]),et=(e,t)=>e.reduce((r,a)=>r||(a.path===t?a:a.children?et(a.children,t):null),null),P_=[{name:v.FolderRootPath.WEBFORMS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.WEBFORMS,error:null,flags:{expanded:!1,loading:!1,cached:!1},tipKey:"editors:webform:explorer:webforms",config:{},isRoot:!0},{name:v.FolderRootPath.METHODS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.METHODS,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:v.FolderRootPath.CLASSES,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.CLASSES,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:v.FolderRootPath.SHARED,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.SHARED,error:null,flags:{expanded:!1,loading:!1,cached:!1},config:{},isRoot:!0},{name:"Debugger",type:v.FileFolderType.FOLDER,children:[],path:"Debugger",error:null,flags:{expanded:!1,cached:!0},config:{},isRoot:!0},{name:"Roles And Privileges",type:v.FileFolderType.ROLES,ext:"json",path:v.ROLES_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:roles"},supportedEditors:[{key:"editors:code",config:{language:"json",theme:"vs-dark"}}]},isRoot:!0},{name:"Model",type:v.FileFolderType.MODEL,ext:"4DModel",path:v.MODEL_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:model"},supportedEditors:[{key:"editors:code",config:{language:"json",theme:"vs-dark"}}]}},{name:"HTTP Handlers",type:v.FileFolderType.HTTP_HANDLERS,ext:"json",path:v.HTTP_HANDLERS_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:http-handlers"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]}},{name:"Localization",type:v.FileFolderType.LOCALIZATION,ext:"json",path:v.LOCALIZATION_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:localization"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]},isRoot:!0},{name:"Settings",type:v.FileFolderType.SETTINGS,ext:"json",path:v.SETTINGS_TAB_PATH,error:null,flags:{},config:{editor:{key:"editors:settings"},supportedEditors:[{key:"editors:code",config:{language:"json"}}]},isRoot:!0}],jF=lf(),BF=!!fe.get(jF,"features.experimental.reports");BF&&P_.unshift({name:v.FolderRootPath.REPORTS,type:v.FileFolderType.FOLDER,children:[],path:v.FolderRootPath.REPORTS,error:null,flags:{expanded:!1,loading:!1,cached:!1},tipKey:"editors:report:explorer:reports",config:{},isRoot:!0});const D_=Mt({name:"explorer",initialState:P_,reducers:{renameClassesFolder:(e,t)=>{const{payload:r}=t,a=e.find(u=>u.name==="Classes");if(!a||!a.children||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes"),i=(u,l)=>{switch(u){case"dataclass":return l;case"entity":return`${l}Entity`;default:return`${l}Selection`}};return r.forEach(({newName:u,prevName:l})=>{var d;a.children=(d=a.children)==null?void 0:d.map(f=>{var h;return f.path.endsWith("[<QODLY_ID>]")&&f.name===l?{...f,name:u,path:`Classes/${u}___[<QODLY_ID>]`,children:(h=f.children)==null?void 0:h.map(g=>{var b;return{...g,path:g.path.replace(l,u),info:{...g.info,filename:i((b=g.info)==null?void 0:b.kind,u),dataclass:u}}})}:f})}),e[s]=a,e},removeClassesFolder:(e,t)=>{const{payload:r}=t;if(!r||r.length===0)return e;const a=e.find(u=>u.name==="Classes");if(!(a!=null&&a.children)||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes");let i=[];return r.forEach(u=>{var d,f;const l=(d=a.children)==null?void 0:d.find(h=>h.name===u);if(l){let h=(f=l.children)==null?void 0:f.filter(g=>{var b;return(b=g.info)==null?void 0:b.exist});h&&(h==null?void 0:h.length)>0&&(h=h.map(g=>{var b;return{...g,name:(b=g.info)==null?void 0:b.filename,info:{...g.info,kind:"userClass"}}}),i=i.concat(h))}}),a.children=a.children.filter(u=>!r.includes(u.name)),a.children=a.children.concat(i),a.children.sort((u,l)=>u.name==="DataStore"?-1:l.name==="DataStore"?1:u.type===v.FileFolderType.CLASS_FOLDER&&l.type===v.FileFolderType.CLASS_FOLDER||u.type===v.FileFolderType.CLASS&&l.type===v.FileFolderType.CLASS?u.name.localeCompare(l.name):u.type===v.FileFolderType.CLASS_FOLDER&&l.type!==v.FileFolderType.CLASS_FOLDER?-1:1),e[s]=a,e},addClassesFolder:(e,t)=>{const{payload:r}=t;if(r.length===0)return e;const a=e.find(u=>u.name==="Classes");if(!(a!=null&&a.children)||a.children.length===0)return e;const s=e.findIndex(u=>u.name==="Classes");let i=0;return a.children.forEach((u,l)=>{u.type===v.FileFolderType.CLASS_FOLDER&&(i=l)}),r.forEach(u=>{var l;a.children=(l=a.children)==null?void 0:l.filter(d=>{var h,g;const f=(h=u.children)==null?void 0:h.find(b=>{var y;return((y=b.info)==null?void 0:y.filename)===d.name});return f&&(u.children=(g=u.children)==null?void 0:g.map(b=>{var y;return((y=b.info)==null?void 0:y.filename)===d.name?{...b,info:{...b.info,exist:!0}}:b})),!f})}),r.forEach(u=>{var l;(l=a==null?void 0:a.children)==null||l.splice(i+1,0,u)}),a.children.sort((u,l)=>u.name==="DataStore"?-1:l.name==="DataStore"?1:u.type===v.FileFolderType.CLASS_FOLDER&&l.type===v.FileFolderType.CLASS_FOLDER?u.name.localeCompare(l.name):u.type===v.FileFolderType.CLASS_FOLDER&&l.type!==v.FileFolderType.CLASS_FOLDER?-1:1),e[s]=a,e},toggleExpandFolder:(e,t)=>(e=Ae(e,{...t.payload,flags:{...t.payload.flags,expanded:!t.payload.flags.expanded}}),e),expandFolder:(e,t)=>(e=Ae(e,{...t.payload,flags:{...t.payload.flags,expanded:!0}}),e),openAddFileInput:(e,t)=>Ae(e,{...t.payload,flags:{...t.payload.flags,adding:!0}}),addNewFile:(e,t)=>{const{parent:r,child:a}=t.payload;return Ae(e,{...r,children:[a,...r.children||[]]})},removeFile:(e,t)=>{const{parent:r,child:a}=t.payload;return Ae(e,{...r,children:r.children.filter(s=>s.path!==a.path)})},refreshFile:(e,t)=>{const{parent:r,child:a}=t.payload,s=(r.children||[]).filter(i=>i.path!==a.path&&!a.error);return Ae(e,{...r,children:[a,...s]})},setFolderChildren:(e,t)=>{const r=et(e,t.payload.parentPath);return r?Ae(e,{...r,children:t.payload.children}):e}},extraReducers:e=>{e.addCase(jn.pending,(t,r)=>{const{file:a,newname:s}=r.meta.arg,i=et(t,a.path);if(!i)return t;const u=a.path.split("/");u.pop();const l=`${u.join("/")}/${a.name}.${a.ext}`,d=`${u.join("/")}/${s}.${a.ext}`;switch(a.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.WILL_RENAME,payload:{oldPath:l,newPath:d}});break}return Ae(t,{...i,flags:{...i.flags,loading:!0}})}),e.addCase(jn.fulfilled,(t,r)=>{const{meta:{arg:{file:a}},payload:s}=r,i=et(t,a.path);if(!i)return t;switch(s.old.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.DID_RENAME,payload:{oldPath:s.old.path,newPath:s.new.path}});break}const u={...s.new};return Ar(u),Ae(t,{...i,flags:{...i.flags,loading:!1}})}),e.addCase(jn.rejected,(t,r)=>{const{file:a}=r.meta.arg,s=et(t,a.path);return s?Ae(t,{...s,flags:{...s.flags,loading:!1}}):t}),e.addCase(Xr.pending,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,flags:{...s.flags,loading:!0}}):t}),e.addCase(Xr.fulfilled,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,children:zl(r.payload),flags:{...s.flags,loading:!1,cached:!0,expanded:!0},error:null}):t}),e.addCase(Xr.rejected,(t,r)=>{const a=typeof r.meta.arg=="string"?r.meta.arg:r.meta.arg.nodePath,s=et(t,a);return s?Ae(t,{...s,error:{message:r.payload},flags:{...s.flags,loading:!1,cached:!0,expanded:!0}}):t}),e.addCase(La.pending,(t,r)=>{const{nodePath:a}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,s=et(t,a);return s?Ae(t,{...s,flags:{...s.flags,loading:!0}}):t}),e.addCase(La.fulfilled,(t,r)=>{const{nodePath:a,collapseIfExpanded:s=!0}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,i=et(t,a);return i?Ae(t,{...i,children:zl(r.payload),flags:{...i.flags,loading:!1,cached:!0,...s?{expanded:!1}:{}},error:null}):t}),e.addCase(La.rejected,(t,r)=>{const{nodePath:a,collapseIfExpanded:s=!0}=typeof r.meta.arg=="string"?{nodePath:r.meta.arg}:r.meta.arg,i=et(t,a);return i?Ae(t,{...i,error:{message:r.payload},flags:{...i.flags,loading:!1,cached:!0,...s?{expanded:!1}:{}}}):t}),e.addCase(no.pending,(t,r)=>{const{fileName:a,parentNode:s,path:i,type:u}=r.meta.arg,l=v.getFileExtentionFromType(u),d=`${i}/${a}${l?`.${l}`:""}`;return Ae(t,{...s,children:[{name:a,path:d,type:u,error:null,flags:{loading:!0},config:{}},...s.children]})}),e.addCase(no.fulfilled,(t,r)=>{const{path:a,fileName:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${a}${u?`.${u}`:""}`,{editor:d,supportedEditors:f}=dt(l);return Ae(t,{id:`${l}-${Date.now()}`,name:s,path:l,type:i,error:null,flags:{loading:!1},config:{editor:d,supportedEditors:f}})}),e.addCase(no.rejected,(t,r)=>{const{path:a,fileName:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${a}${u?`.${u}`:""}`;return Ae(t,{name:s,path:l,type:i,error:{message:r.payload},flags:{loading:!1},config:{}})}),e.addCase(ao.pending,(t,r)=>{const{node:a,parentNode:s}=r.meta.arg,i=`${a.name}_copy`,u=`${a.path}/${i}${a.ext?`.${a.ext}`:""}`;return Ae(t,{...s,children:[{name:i,path:u,type:a.type,error:null,flags:{loading:!0},permissions:{canRename:!0,canDelete:!0}},...s.children]})}),e.addCase(ao.fulfilled,(t,r)=>{const{node:a}=r.payload,s=Hm(a.name),i=`${a.path}/${a.name}`,{editor:u,supportedEditors:l}=dt(i);return Ae(t,{name:s,path:i,type:a.type,error:null,flags:{loading:!1},config:{editor:u,supportedEditors:l}})}),e.addCase(ao.rejected,(t,r)=>{const a=r.payload,{node:s}=r.meta.arg,i=`${s.name}_copy`,u=`${s.path}/${i}${s.ext?`.${s.ext}`:""}`;return Ae(t,{name:i,path:u,type:s.type,error:{message:a},flags:{loading:!1},config:{}})}),e.addCase($a.pending,()=>{}),e.addCase($a.fulfilled,(t,r)=>{var g;const{draggedNode:a,newLocation:s}=r.meta.arg,i=Um(a.path),u=et(t,i),l=et(t,s.path),d=(g=u==null?void 0:u.children)==null?void 0:g.filter(b=>b.path!==a.path),f=s.path.split("/").length,h=a.path.split("/").length;return f>=h?(t=Ae(t,{...u,children:d}),t=Ae(t,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}})):(t=Ae(t,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}}),t=Ae(t,{...u,children:d})),t}),e.addCase($a.rejected,()=>{v.toastSubject.next({message:"Error moving file",kind:"danger"})}),e.addCase(qn.pending,(t,r)=>{var _;const{fileName:a,parentNode:s,path:i,type:u,qodly:l}=r.meta.arg,d=v.getFileExtentionFromType(u,l),f=`${i}/${a}${d?`.${d}`:""}`,{editor:h,supportedEditors:g}=dt(f);switch(u){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.WILL_CREATE,payload:{filePath:f}});break}const y=[...(_=s.children)==null?void 0:_.filter(T=>T.path!==f),{name:a,path:f,type:u===v.FileFolderType.CLASS?u:v.FileFolderType.FILE,error:null,flags:{loading:!0},config:{editor:h,supportedEditors:g},ext:d,date:new Date().toISOString(),info:{exist:!0,kind:u===v.FileFolderType.CLASS?"userClass":""}}],w=Ae(t,{...s,children:y});return fe.merge(t,w)}),e.addCase(qn.fulfilled,(t,r)=>{const{fileName:a,path:s,type:i,qodly:u}=r.meta.arg,l=v.getFileExtentionFromType(i,u),d=`${s}/${a}${l?`.${l}`:""}`,{editor:f,supportedEditors:h}=dt(d),g=Ae(t,{name:a,path:d,type:v.FileFolderType.FILE,error:null,flags:{},config:{editor:f,supportedEditors:h},ext:l,date:new Date().toISOString(),info:{exist:!0,kind:i===v.FileFolderType.CLASS?"userClass":""}});switch(i){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.DID_CREATE,payload:{filePath:d}});break}return t=g,t}),e.addCase(qn.rejected,(t,r)=>{const{fileName:a,path:s,type:i}=r.meta.arg,u=v.getFileExtentionFromType(i),l=`${s}${u?`.${u}`:""}`,{editor:d,supportedEditors:f}=dt(l);return t=Ae(t,{name:a,path:l,type:v.FileFolderType.FILE,error:{message:"Failed creating file"},flags:{},config:{editor:d,supportedEditors:f},ext:u,date:new Date().toISOString()}),t}),e.addCase(L_.rejected,t=>{const r=et(t,v.HTTP_HANDLERS_TAB_PATH);return r&&(t=Ae(t,{...r,flags:{...r.flags,disabled:!0}})),t}),e.addMatcher(Qy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path);return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!0}})),t}),e.addMatcher(Zy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path),s=a!=null&&a.info?{...a.info,exist:!0}:void 0;return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!1,disabled:!1},info:s})),t}),e.addMatcher(Xy(Zr),(t,r)=>{const a=et(t,r.meta.arg.file.path);return a&&(t=Ae(t,{...a,flags:{...a.flags,loading:!1}})),v.toastSubject.next({message:"Failed to open file, try again",kind:"danger"}),t})}}),{toggleExpandFolder:WF,expandFolder:UF,openAddFileInput:HF,addNewFile:F_,refreshFile:GF,removeFile:Vl,setFolderChildren:zF,addClassesFolder:VF,removeClassesFolder:YF,renameClassesFolder:KF}=D_.actions;function If(e,t){switch(e){case v.FileFolderType.WEBFORMS:{const r={metadata:{v:"1.0",datasources:[],styles:[]},components:{ROOT:{parent:"",type:{resolvedName:"Container"},isCanvas:!0,props:{airyMode:!1,className:"w-full px-6",classNames:[],events:[]},displayName:"Page",custom:{},hidden:!1,nodes:[],linkedNodes:{}}}};return t["webforms.display-mode"]===Cf.AIRY&&(r.components.ROOT.props.airyMode=!0),r}case v.FileFolderType.REPORT:return{metadata:{v:"1.0",datasources:[],styles:[]},pages:[{name:"doc",id:"index",components:{ROOT:{type:{resolvedName:"Document"},isCanvas:!0,props:{classNames:[],events:[],airyMode:!1,className:"bg-white w-full px-6"},displayName:"Document",custom:{},parent:"",hidden:!1,nodes:[],linkedNodes:{}}}}]};case v.FileFolderType.METHODS:return`//%attributes = {}
167
+ `;case v.FileFolderType.HTTP_HANDLERS:return[];case v.FileFolderType.LOCALIZATION:return{keys:{},userLang:{primary:"",supported:[]}};case v.FileFolderType.SETTINGS:return{};case v.FileFolderType.ROLES:return{permissions:{allowed:[]},privileges:[],roles:[],forceLogin:!1,restrictedByDefault:!1};default:return""}}function JF(e){switch(e){case v.FolderRootPath.WEBFORMS:return v.FileFolderType.WEBFORMS;case v.FolderRootPath.METHODS:return v.FileFolderType.METHODS;case v.FolderRootPath.CLASSES:return v.FileFolderType.CLASSES;case v.FolderRootPath.REPORTS:case"Reports":return v.FileFolderType.REPORT;case"Mobile":return v.FileFolderType.MOBILE;default:return e}}function I_(e){switch(e){case v.FileFolderType.WEBFORMS:return v.FileFolderType.WEBFORM;case v.FileFolderType.REPORT:return v.FileFolderType.REPORT;case v.FileFolderType.CLASSES:return v.FileFolderType.CLASS;case v.FileFolderType.METHODS:return v.FileFolderType.METHOD;case v.FileFolderType.FOLDER:return v.FileFolderType.FOLDER;case v.FileFolderType.MOBILE:return v.FileFolderType.MOBILEFORM;default:return e}}const QF=Y("files/tryEditMethod",async({method:e},{dispatch:t})=>{const r=e.filePath.split("/"),[a]=r[1].split("."),{editor:s}=dt(e.filePath);return await t(Mf({file:{name:a,path:e.filePath,date:new Date().toISOString(),type:v.FileFolderType.CLASS,editor:s},line:e.startingLine+1})).unwrap()}),Yl=Y("explorer/createModelFiles",async(e,{dispatch:t,getState:r})=>{var g;const a=r(),s=v.FolderRootPath.CLASSES,i=a.settings.server.qodly,u=et(a.explorer,s);if(!u)return;await t(Xr(s));const d=((g=r().explorer.find(b=>b.name===s))==null?void 0:g.children)||[];let f=[{content:"",name:""}];if(e.type==="dataclass"&&!e.toCreate){const{className:b,collectionName:y}=e;f=[{...hn().dataclass({name:b,qodly:i})},{...hn().collection({name:y,qodly:i})},{...hn().entity({name:b,qodly:i})}]}else if(e.type==="dataclass"&&e.toCreate){const{className:b,collectionName:y}=e;f=[{...hn()[e.toCreate]({name:b||y,qodly:i})}]}else f=[{...hn().model({name:"DataStore",qodly:i})}];f=f.filter(b=>!d.find(({name:y,ext:w,info:{exist:_=!0}={}})=>y===b.name&&w===(i?"4qs":"4dm")&&_)),await Promise.all(f.map(async({name:b,content:y})=>{await t(qn({type:v.FileFolderType.CLASS,path:s,fileName:b,parentNode:u,content:y,qodly:a.settings.server.qodly}))}));const h=e.type==="dataclass"&&e.expand?e.className:"";await t(Xr({nodePath:s,expandDataclass:h}))}),Xr=Y("explorer/fetchFolderContent",async(e,{rejectWithValue:t,getState:r})=>{const{nodePath:a,expandDataclass:s=""}=typeof e=="string"?{nodePath:e}:e,i=r();try{const u=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return i.catalog.state!=="loaded"?[]:a==="Classes"?zn(i,u,s):u.map(l=>{const d=`${a}/${l.name}${l.ext?`.${l.ext}`:""}`,{editor:f,supportedEditors:h}=dt(d);return{name:l.name,size:l.size,type:l.type,date:`${l.date}`,flags:{},error:null,path:d,ext:l.ext,config:l.type==="folder"?{}:{editor:f,supportedEditors:h}}})}catch{return t("Failed loading file content please Reload"),a==="Classes"?zn(i,[],s):[]}},{getPendingMeta:()=>{}}),M_=Y("model/fetchClassesFolderContent",async(e,{getState:t})=>{const r=t(),a=v.FolderRootPath.CLASSES;if(et(r.explorer,a))try{const i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return zn(r,i)}catch{return zn(r,[])}}),La=Y("explorer/fetchFolderContentWithoutExpanding",async(e,{rejectWithValue:t,getState:r})=>{const{nodePath:a}=typeof e=="string"?{nodePath:e}:e,s=r();try{const i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:a});return a==="Classes"?zn(s,i):i.map(u=>{const l=`${a}/${u.name}${u.ext?`.${u.ext}`:""}`,{editor:d,supportedEditors:f}=dt(l);return{name:u.name,size:u.size,type:u.type,date:`${u.date}`,flags:{},error:null,path:l,ext:u.ext,config:u.type==="folder"?{}:{editor:d,supportedEditors:f}}})}catch{return t("Failed loading file content please Reload")}},{getPendingMeta:()=>{}});function XF(e){const t=e.split(".");return t.pop(),{name:t.join("."),ext:e.split(".")[e.split(".").length-1]}}const ZF=Y("explorer/uploadFileAndGetResponse",async e=>{const t=e.type.includes("image/")?"$rawPict=true":"$binary=true";try{const r=await fetch(`/rest/$upload?${t}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return{status:r.status,data:await r.json()}}catch{return{status:500,data:null}}}),eI=Y("explorer/uploadFile",async({file:e,path:t,parentNode:r},{dispatch:a})=>{const{editor:s,supportedEditors:i}=dt(t),{name:u,ext:l}=XF(e.name);a(F_({parent:r,child:{name:u,path:`${t}/${e.name}?t=${Date.now()}`,type:e.type,error:null,flags:{loading:!0},config:{editor:s,supportedEditors:i},ext:l}}));try{const d=await fetch(`/rest/$upload?$sharedFolder=true&$filename=${e.name}&$path=${t}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return d.status>=300?(a(Vl({parent:r,child:{name:u,path:`${t}/${e.name}`,type:e.type,error:{message:"error uploading file"},flags:{},config:{editor:s,supportedEditors:i},ext:l}})),d.status!==413&&v.toastSubject.next({message:"error uploading file",kind:"danger"})):await a(Xr(r.path)),{status:d.status,fileName:e.name}}catch{return a(Vl({parent:r,child:{name:u,path:`${t}/${e.name}`,type:e.type,error:{message:"error uploading file"},flags:{},config:{editor:s,supportedEditors:i},ext:l}})),v.toastSubject.next({message:"error uploading file",kind:"danger"}),{status:500,fileName:e.name}}}),qn=Y("explorer/createNewFile",async({fileName:e,type:t,path:r,parentNode:a,content:s},{dispatch:i,rejectWithValue:u,getState:l})=>{const{server:{qodly:d},project:f}=l().settings;try{const h=await v.setFileContent({name:v.getFilenameFromType(e,t,d),content:s||If(t,f),path:r,asText:[v.FileFolderType.CLASS,v.FileFolderType.METHOD].includes(t)});return a.error&&(a.flags.expanded?await i(Xr(a.path)):await i(La(a.path))),{qodly:d,file:h,parentNode:a}}catch{return u("failed to create folder")}});function N_(e,t){const{qodly:r=!0,withExtension:a=!0}=t||{},s=v.getFileExtentionFromType(e.type,r);let i="";switch(e.type){case v.FileFolderType.WEBFORM:i=`${v.FolderRootPath.WEBFORMS}/${e.name}`;break;case v.FileFolderType.METHOD:i=`${v.FolderRootPath.METHODS}/${e.name}`;break;case v.FileFolderType.CLASS:i=`${v.FolderRootPath.CLASSES}/${e.name}`;break;default:return""}return`${i}${a?`.${s}`:""}`}const tI=Y("explorer/createNewFileAndOpen",async(e,{dispatch:t,getState:r})=>{const a=await t(qn(e)).unwrap(),{qodly:s}=r().settings.server;if(a){const{file:i}=a,u=N_(i,{withExtension:!1,qodly:s}),{editor:l}=dt(u);await t(Zr({file:{name:e.fileName,type:i.type,path:u,editor:l,date:new Date().toISOString()}}))}}),no=Y("explorer/createNewNode",async({fileName:e,path:t,parentNode:r},{rejectWithValue:a})=>{try{return{file:await v.createFolder({verb:v.DesignerRequestVerb.CREATE_FOLDER,path:`${t}/${e}`,recursive:!0}),parentNode:r}}catch{return v.toastSubject.next({message:"failed to create folder",kind:"danger"}),a("failed to create folder")}}),Ha=async({file:e,flags:t={},node:r={}})=>{var a;try{const s=e.path.split(".").at(-1),i=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:((a=e.editor)==null?void 0:a.key)!=="editors:img",as:fm(s)?"json":"text"}),u={editor:e.editor};r!=null&&r.info&&(u.kind=r.info.kind);const l=v.getTypeFromExtension(e.path);l===v.FileFolderType.METHOD&&(u.attributes=v.parseAttributes(i.content),i.content=v.addAttributesToContent(i.content,{}));const{content:d,date:f,ext:h}=i;return t.confirmed===void 0&&(t.confirmed=!0),{date:f,view:{panel:{isOpen:!1,type:l===v.FileFolderType.WEBFORM?"component":"",current:l===v.FileFolderType.WEBFORM?"ROOT":""}},flags:{enabled:["WebForm","MForm"].includes(h),confirmed:t.confirmed},extra:u,name:e.name,path:e.path,type:l,initialContent:d,content:d,history:{stack:[],active:-1,locked:!1}}}catch(s){const{data:i}=s;if(i.__ERROR.find(u=>u.errCode===v.ERROR_CODES.FILE_NOT_FOUND))switch(e.path){case v.ROLES_TAB_PATH:{const u={permissions:{allowed:[]},privileges:[],roles:[]};return{date:new Date().toISOString(),flags:t,extra:{editor:{key:"editors:roles"},kind:"roles"},name:"Roles & Privileges",path:e.path,type:v.FileFolderType.ROLES,initialContent:u,content:u}}case v.SETTINGS_TAB_PATH:{const u={};return{date:new Date().toISOString(),flags:t,extra:{editor:{key:"editors:settings"},kind:"qodlyApp"},name:"Settings",path:e.path,type:v.FileFolderType.SETTINGS,initialContent:u,content:u}}}throw s}},L_=Y("HTTPHandlers/fetch",async(e,{rejectWithValue:t})=>{const r=(await v.getFilesInfo({path:v.HTTP_HANDLERS_TAB_PATH})).files.find(a=>a.path===v.HTTP_HANDLERS_TAB_PATH);if(r!=null&&r.deleted)return t("not found")}),No=(e,t)=>{const r=(a,s)=>{for(const i of a){if(i.path===s)return i;if(i.children){const u=r(i.children,s);if(u)return u}}};return r(e,t)},rI=Y("explorer/openFileFromLocation",async(e,{dispatch:t})=>{const r=pm();if(r.page){const a=`WebForms/${r.page}.WebForm`,s=Il(a,r.editor,{key:"editors:webforms"});t(Zr({file:{path:a,editor:s,name:r.page,type:v.FileFolderType.WEBFORM},flags:{confirmed:!0}}))}else if(r.path){const{filename:a,type:s}=v.getFilenameAndTypeFromPath(r.path),i=Il(r.path,r.editor);t(Zr({file:{type:s,editor:i,name:a,path:r.path},flags:{confirmed:!0}}))}}),nI=Y("explorer/switchEditor",async({tab:e,editor:t},{dispatch:r})=>{if(e.path===v.LOCALIZATION_TAB_PATH&&t.key==="editors:localization")try{const a=typeof e.content=="string"?JSON.parse(e.content):e.content;v.i18nSubject.next({action:"set_locale_state",payload:a})}catch{}if(e.path===v.SETTINGS_TAB_PATH&&t.key==="editors:settings")try{const a=typeof e.content=="string"?JSON.parse(e.content):e.content;r(Ff({path:"project",settings:a}))}catch{}r(Zr({file:{path:e.path,type:e.type,name:e.name,editor:t}}))}),Zr=Y("explorer/openFile",async({file:e,inactive:t,isNew:r,flags:a={},info:s},{getState:i,dispatch:u})=>{const{root:{tabs:l},roles:d,explorer:f,debugger:{sessions:h},settings:{server:{qodly:g}}}=i(),b=l.find(({path:T})=>e.path===T);if(b){const T={...b,extra:{...b==null?void 0:b.extra,editor:e.editor??b.editor},flags:{...b==null?void 0:b.flags,...a}};return u(At(T)),T}if(e.path.startsWith("Debugger")){const T=h.find(S=>`Debugger/${S.threadId}`===e.path);if(T){const{source:{content:S},source:A}=T.currentStackFrame,x={name:e.name,type:v.FileFolderType.DEBUGGER,date:new Date().toISOString(),path:e.path,content:S,view:{panel:{isOpen:!1,type:"",current:""}},initialContent:S,flags:{confirmed:!0},extra:{source:A,editor:e.editor}};return u(At(x)),x}}const y=No(f,e.path);let w=null;try{w=await Ha({file:e,flags:a,node:y})}catch(T){const{data:S}=T;if(S.__ERROR.find(A=>[v.ERROR_CODES.JSON_MALFORMED,v.ERROR_CODES.JSON_MALFORMED_AT_LINE].includes(A.errCode))){const{confirmed:A}=await u(er({title:"Corrupt file",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,message:"Open in text editor ?"})).unwrap();if(A){const x=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:"text"}),{content:D,date:R,ext:$}=x;w={date:R,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm","QoDoc"].includes($),confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:D,content:D,history:{stack:[],active:-1,locked:!1}}}}if(e.type===v.FileFolderType.CLASS&&s){const A=s.kind,x=`${e.name}.${g?"4qs":"4dm"}`,D=hn()[A]({name:x,qodly:g}).content;if(w={date:(await v.setFileContent({name:x,content:D,path:"Classes",asText:!0})).date,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:!1,confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:D,content:D,history:{stack:[],active:-1,locked:!1}},A==="app"){const $=await v.getFilesInfo(...fy.map(B=>({path:`DatabaseMethods/${B.name}`})));fy.forEach(B=>{const z=$.files.find(ee=>ee.path===`DatabaseMethods/${B.name}`);z!=null&&z.deleted&&v.setFileContent({name:B.name,content:B.content,path:"DatabaseMethods",asText:!0})})}}if(e.path===v.HTTP_HANDLERS_TAB_PATH){const A=(await v.getFilesInfo({path:v.HTTP_HANDLERS_TAB_PATH})).files.find(x=>x.path===v.HTTP_HANDLERS_TAB_PATH);A!=null&&A.deleted&&await v.setFileContent({name:v.HTTP_HANDLERS_TAB_PATH,content:"[]",path:"./",asText:!0}).then(async()=>{w=await Ha({file:e,flags:a,node:y})})}}return w&&(e.path===v.ROLES_TAB_PATH&&!d.flags.touched?u(Of({content:w.content,date:w.date,flags:a})):e.path===v.SETTINGS_TAB_PATH&&u(Za({path:"project",value:w.content})),u((t?yb:At)({...w,isNew:r})),w)}),Mf=Y("explorer/openFileAtLine",async({file:e},{getState:t,dispatch:r})=>{const{root:{tabs:a},explorer:s}=t(),i=a.find(({path:d})=>e.path===d);if(i){const d={...i,extra:{...i==null?void 0:i.extra,editor:e.editor}};return r(At(d)),d}const u=No(s,e.path),l=await Ha({file:e,node:u});return r(At(l)),l}),$_=Y("explorer/injectContentAtLine",async(e,{getState:t,dispatch:r,rejectWithValue:a})=>{const{explorer:s}=t();e.path.split("/").pop();const u=et(s,e.path);if(!u)return a(`Error while trying to inject content in file ${e.path}`);const l=`${u.path}.${u.ext}`,d=No(s,l),f=await Ha({file:{name:u.name,date:u.date||new Date().toISOString(),path:l,type:v.FileFolderType.CLASS,editor:u.config.editor},node:d});return await r(At(f)),{...e,path:`${u.path}.${u.ext}`}}),k_=Y("explorer/openFileAtSelection",async({file:e},{getState:t,dispatch:r})=>{const{root:{tabs:a},explorer:s}=t(),i=a.find(({path:d})=>e.path===d);if(i){const d={...i,extra:{...i==null?void 0:i.extra,editor:e.editor}};return r(At(d)),d}const u=No(s,e.path),l=await Ha({file:e,node:u});return r(At(l)),l}),Kl=Y("explorer/deleteFile",async e=>{const{name:t,type:r,path:a,flags:s}=e;if(s.error)return{deleted:!0,node:e};const i=a.split("/");return i.pop(),{deleted:await v.dropFile({root:v.FolderRootType.ROOT,type:I_(r),verb:v.DesignerRequestVerb.DROP,name:t,path:i.join("/")}),node:e}}),aI=Y("explorer/deleteFolder",async(e,{getState:t,dispatch:r})=>{const{path:a,flags:s}=e;if(s.error)return{deleted:!0,node:e};const{deleted:i}=await v.removeItem({force:!0,path:a,verb:v.DesignerRequestVerb.REMOVE_ITEM}).catch(console.error)||{deleted:!1};if(e.children){const{tabs:u}=t().root;e.children.forEach(l=>{const d=u.findIndex(f=>f.path===l.path);r(Wo(d))})}return{deleted:i,node:e}}),Jl=Y("explorer/removeFileNode",async(e,{getState:t,dispatch:r})=>{await v.removeItem({verb:v.DesignerRequestVerb.REMOVE_ITEM,path:e.path,force:!0}).catch(console.error);const{root:{tabs:a},catalog:s}=t();if((e.path==="Classes/DataStore"||q_(s,e))&&setTimeout(()=>{r(en())},Ja),e.ext){const i=a.findIndex(u=>u.path===e.path);i>=0&&r(Wo(i))}return{deleted:!0,node:e}}),q_=(e,t)=>{const{model:{singletons:r}}=e;return fe.values(r).some(a=>a.name===t.name)},jn=Y("explorer/renameFile",async({file:e,newname:t},{dispatch:r,getState:a})=>{if(e.type!=="folder"){const i=e.path.split("/");i.pop();const u=`${i.join("/")}/${e.name}.${e.ext}`,l=`${i.join("/")}/${t}.${e.ext}`;await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:u,newpath:l});const{catalog:d}=a();return q_(d,e)&&setTimeout(()=>{r(en())},Ja),{old:{...e,path:u},new:{...e,name:t,path:l}}}const s=e.path.split("/");return s.pop(),await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${s.join("/")}/${e.name}`,newpath:`${s.join("/")}/${t}`}),{old:e,new:{...e,name:t,path:`${s.join("/")}/${t}`}}}),$a=Y("explorer/relocateNode",async({draggedNode:e,newLocation:t},{rejectWithValue:r})=>{try{await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${e.path}.${e.ext}`,newpath:`${t.path}/${e.name}.${e.ext}`})}catch{return r("can't move item")}}),ao=Y("explorer/duplicateNode",async({node:e,duplicateName:t},{rejectWithValue:r,fulfillWithValue:a,getState:s})=>{const i=e.path.split("/");i.pop();try{const{tabs:u}=s().root,l=u.find(({path:g})=>g===e.path),d=["4dm","4qm","4qs"].includes(e.ext),{content:f}=l||await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:d?"text":"json"}),h=await v.setFileContent({name:`${t}.${e.ext}`,content:f,path:i.join("/"),asText:d});return a({node:{...h,path:i.join("/")}})}catch{return r("failed to duplicate file")}}),sI=Y("explorer/executeMethod",async({methodName:e,params:t=[],resultingDataSource:r={},namespace:a=""},{rejectWithValue:s})=>{var i,u;try{const l=window.Method4D.buildMethod({methodName:e,parameters:t,resultingDataSource:r},{namespace:a},null),d=v.callServerSideParser(await l.callServerSide({id:"",serverSideRef:""},"onclick",{}));return d!=null&&d.__NOTIFICATION?v.toastSubject.next({message:`${((i=d.__NOTIFICATION)==null?void 0:i.message)||""}`,kind:`${((u=d.__NOTIFICATION)==null?void 0:u.type)||"info"}`}):v.toastSubject.next({message:"Method executed Successfully",kind:"message"}),d}catch(l){const d=v.getDisplayableFeedbackErrors(l,!1),f=v.formatErrorsAsBulletToast(d),h=f.length>0&&f[0].messages.length>0;return v.toastSubject.next({message:h?f:l.message||`Error executing the method "**${e}**"`,kind:"danger",markdown:!0}),s("can't execute method")}}),oI=e=>{const{dataClasses:t,...r}=e;return{...r,dataClasses:t==null?void 0:t.map(a=>{let s={...a};if(s.uuid||(s={...s,uuid:v.generateUUID()}),s.attributes){const i=["storage","relatedEntity"],u=s.attributes.map(l=>i.includes(l.kind)&&!l.uuid?{...l,uuid:v.generateUUID()}:l);s={...s,attributes:[...u]}}return s})}},iI=Y("files/fetchFiles",async()=>v.getFolders(v.FolderRootType.WEBFORMS,v.FolderRootType.METHODS,v.FolderRootType.CLASSES)),Nf=Y("tabs/renameDatasource",async(e,{dispatch:t,getState:r})=>{var y,w;const a=!!e.datasourceNamespace,{confirmed:s}=await t(er({message:"Are you sure you want to rename the datasource?",title:"Rename Datasource",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,views:{toggles:{},tips:a?[{type:"warning",message:"The datasource property of components bound with this datasource will also be updated on opened web forms only"},{type:"warning",message:"The origin of some other datasources might be also renamed (if this datasource is the origin of other datasources)"}]:[{type:"warning",message:"The datasource property of components bound with this datasource will also be updated"},{type:"warning",message:"The origin of some other datasources might be also renamed (if this datasource is the origin of other datasources)"}]}})).unwrap();if(!s)return null;const{autoUpdateReferences:i,datasourceId:u,datasourceNamespace:l,value:d,path:f}=e,h=r();let g=[];if(a){const _=h.sharedDatasources.sources[l]||[];g.push(..._)}else if(f){const _=h.root.tabs.find(v.by("path",f));if(g=(w=(y=_==null?void 0:_.content)==null?void 0:y.metadata)==null?void 0:w.datasources,!g)return null}const b=new RegExp(`^${u}\\b`,"");if(g=g.map(_=>{const T=(v.isObjectDatasource(_)||!v.isSimpleDatasource(_))&&_.from&&b.test(_.from),S=_.events?_.events.map(A=>{var x,D,R,$;switch(A==null?void 0:A.type){case"method":{const B=A;return B.params?{...B,params:B.params.map(z=>{var ee;return{...z,datasource:(ee=z.datasource)==null?void 0:ee.replace(new RegExp(`^${u}`,""),d)}}),returns:(x=B.returns)!=null&&x.datasource?{...B.returns,datasource:(D=B.returns.datasource)==null?void 0:D.replace(new RegExp(`^${u}`,""),d)}:B.returns}:B}case"simple-action":{const B=A;return B.datasource?{...B,datasource:{...B.datasource,name:(R=B.datasource.name)==null?void 0:R.replace(new RegExp(`^${u}`,""),d),from:($=B.datasource.from)==null?void 0:$.replace(new RegExp(`^${u}`,""),d)}}:B}default:return A}}):_.events;return _.id===u?{..._,id:d,events:S}:T&&_.from?{..._,from:_.from.replace(new RegExp(`^${u}`,""),d),events:S}:{..._,events:S}}),i){const _=a?`${l}:${u}`:`${u}`,T=a?`${l}:${d}`:`${d}`;v.datasourcesSubject.next({path:f??"",action:v.DatasourcesActions.RENAME,old_reference:_,new_reference:T,is_shared:a})}return{path:f,namespace:l,datasources:g}}),Lf=Y("tabs/edit-datasource",(e,{getState:t})=>{var i,u;const r=t();let a=[];if(e.namespace)a=r.sharedDatasources.sources[e.namespace];else{const l=r.root.tabs.find(v.by("path",e.path));l&&(a=((u=(i=l.content)==null?void 0:i.metadata)==null?void 0:u.datasources)||[])}return a.map(l=>l.id===e.datasourceId?Object.assign({},l,{[e.propertyKey]:e.value}):l)}),j_=Y("tabs/fetchChanges",async(e,{getState:t})=>{const a=mn(t()).filter(s=>[v.FileFolderType.METHOD,v.FileFolderType.CLASS].includes(s.type));return v.getFilesInfo(...a.map(s=>{const[i]=s.path.split("/").filter(Boolean);return{name:s.name,type:s.type,root:i,path:"."}}))}),uI=Y("files/saveAll",async(e,{getState:t,dispatch:r})=>{const a=bf(t());for(const s of a)r(Bn({tab:s}))}),$f=Y("files/tryCloseTab",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root,s=a.findIndex(u=>u.path===e);if(s===-1)return!1;const i=a[s];if(i!=null&&i.flags.touched){const{confirmed:u}=await r(er({title:wo(i),message:"Your unsaved changes will be lost. Proceed anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!u)return!1}return r(Wo(s)),i.path===v.ROLES_TAB_PATH&&i.flags.touched&&(async()=>{const l=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:v.ROLES_TAB_PATH,content:!0,as:"json"});r(Of({content:l.content,date:l.date}))})(),!0}),cI=Y("files/tryCloseOtherTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;if(a.some(i=>i.path!==e&&i.flags.touched===!0)){const{confirmed:i}=await r(er({title:"Closing other tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(hb(e))}),lI=Y("files/tryCloseAllTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;if(a.some(i=>i.flags.touched===!0)){const{confirmed:i}=await r(er({title:"Closing all tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(db())}),fI=Y("files/tryCloseRightTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;let s=!1;for(let i=a.length-1;i>e;i-=1)if(a[i].flags.touched){s=!0;break}if(s){const{confirmed:i}=await r(er({title:"Closing right tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(pb(e))}),dI=Y("files/tryCloseLeftTabs",async(e,{getState:t,dispatch:r})=>{const{tabs:a}=t().root;let s=!1;for(let i=0;i<e;i+=1)if(a[i].flags.touched){s=!0;break}if(s){const{confirmed:i}=await r(er({title:"Closing left tabs",message:"Your changes will be lost if you do not save them. Close anyway?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!i)return}r(gb(e))}),so=Y("files/reloadTab",async(e,{dispatch:t})=>{var s,i;if(e.flags.touched){const{confirmed:u}=await t(er({title:wo(e),message:"Changes made to the file will be lost. Continue?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!u)throw new Error("Cancel modal!")}const r=vf(e.path),a=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:r});if(e.path===v.ROLES_TAB_PATH){const{roles:u,privileges:l}=v.sanitizeRoles(a.content);t(_o({roles:u,privileges:l}))}else if(e.path===v.SETTINGS_TAB_PATH){const{content:u}=a;t(Za({path:"project",value:u}))}else{const{content:u}=a;e.type===v.FileFolderType.WEBFORM?v.webformSubject.next({path:e.path,action:v.WebformActions.RELOAD,payload:u.components}):e.type===v.FileFolderType.MODEL?Jm.next({action:"reload",payload:u}):e.path===v.LOCALIZATION_TAB_PATH&&((i=(s=e.extra)==null?void 0:s.editor)==null?void 0:i.key)==="editors:localization"&&v.i18nSubject.next({action:"set_locale_state",payload:u})}return a}),Bn=Y("files/saveTab",async({tab:e},{dispatch:t,getState:r})=>{var g,b,y,w;let{path:a,content:s}=e;if(e.type===v.FileFolderType.DEBUGGER)return{...e,errors:[]};a.split("/").pop();const u=await v.getFilesInfo({path:a});if(u.files[0]){const _=new Date(e.date),T=new Date(u.files[0].date);if(_.getTime()<T.getTime()){const{confirmed:S}=await t(er({title:wo(e),message:"New content has been found on the server. Are you sure you want to continue?",type:v.ModalType.CONFIRM,icon:"FdSave"})).unwrap();if(!S)return t(fb({path:a,flags:{old:!0}})),null}}const l=pI(e,r()),d=await v.saveContent({verb:v.DesignerRequestVerb.SAVE_CONTENT,content:l,path:a});(e.type===v.FileFolderType.CLASS||e.type===v.FileFolderType.MODEL)&&setTimeout(()=>{t(en())},Ja),(e.path===v.SETTINGS_TAB_PATH||e.path==="settings.json")&&((b=(g=e.extra)==null?void 0:g.editor)==null?void 0:b.key)==="editors:code"&&t(Za({path:"project",value:l}));const f=(d.modelErrors||[]).map(_=>_.message),h=(d.permissionsErrors||[]).map(_=>_.message);return[v.FileFolderType.MODEL,v.FileFolderType.SETTINGS].includes(e.type)&&(s=l),e.path===v.LOCALIZATION_TAB_PATH&&((w=(y=e.extra)==null?void 0:y.editor)==null?void 0:w.key)==="editors:code"&&v.i18nSubject.next({action:"set_locale_state",payload:typeof e.content=="string"?JSON.parse(e.content):e.content}),{...e,content:s,date:d.date,initialContent:s,errors:f.length>0||h.length>0?[{title:"Model errors",messages:f},{title:"Permissions errors",messages:h}]:[]}}),pI=(e,t)=>{var r,a;switch(!0){case e.path==="settings.json":case e.path===v.SETTINGS_TAB_PATH:return typeof e.content=="string"?e.content:t.settings.project;case e.type===v.FileFolderType.ROLES:return((a=(r=e.extra)==null?void 0:r.editor)==null?void 0:a.key)==="editors:roles"&&typeof e.content!="string"?v.rolesToAPI(t.roles):e.content;case e.type===v.FileFolderType.MODEL:{const s=e.content||{toJSON:!0,dataClasses:[],extraProperties:{}};return oI(s)}case e.type===v.FileFolderType.WEBFORM:{const s=e.content;return s?{...s,metadata:{...s.metadata,currentState:v.ROOT_WEBFORM_STATE.id}}:e.content}default:return e.content}},dy=async e=>{if(e.type===v.FileFolderType.DATA_EXPLORER)return{name:"Data Explorer",path:e.path,flags:{},view:{panel:{isOpen:!1,type:"",current:""}},type:e.type,date:new Date().toISOString()};const t=vf(e.path),r=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:t}),a={};r.type===v.FileFolderType.METHOD&&(a.attributes=v.parseAttributes(r.content));const{date:s,name:i,type:u,content:l}=r;return{date:s,flags:{enabled:e.type===v.FileFolderType.WEBFORM},extra:a,view:{panel:{isOpen:!1,type:"",current:""}},name:i,path:e.path,type:u,initialContent:l,content:u===v.FileFolderType.MODEL?lm(l):l,history:{stack:[],active:-1,locked:!1}}},B_=fe.debounce(({path:e,contentPath:t},r)=>{r(Sb({path:e,contentPath:t}))},300),hI=Y("tabs/setTabContent",(e,{getState:t,dispatch:r})=>{var u;const{root:{tabs:a}}=t(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);r(Uo(e)),i?r(Bf(e.path)):B_({path:e.path,contentPath:e.contentPath},r)}),gI=Y("tabs/setCurrentWebformState",(e,{getState:t,dispatch:r})=>{var u;const{root:{tabs:a}}=t(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);r(mb(e)),i?r(Bf(e.path)):B_({path:e.path,contentPath:e.contentPath},r)}),W_=Y("files/tryInjectMethod",async({type:e,dataclass:t,expand:r},{getState:a,dispatch:s})=>{const{root:{tabs:i},settings:{server:{qodly:u}}}=a(),l=v.getFileExtentionFromType("class",u);let d="",f="",h=null;if(!t)d="DataStore",f=`Classes/DataStore.${l}`;else switch(e){case"dataclass":d=t,f=`Classes/${t}.${l}`;break;case"collection":d=`${t}Selection`,f=`Classes/${t}Selection.${l}`;break;case"entity":d=`${t}Entity`,f=`Classes/${t}Entity.${l}`;break;default:return h}const g=i.find(v.by("path",f));if(g)return s(At(g)),g;try{h=await dy({name:d,date:new Date().toISOString(),path:f,type:v.FileFolderType.CLASS})}catch{t?await s(Yl({type:"dataclass",className:t,collectionName:`${t}Selection`,toCreate:e,expand:r})):await s(Yl({type:"model"}))}return h=await dy({date:new Date().toISOString(),path:f,type:v.FileFolderType.CLASS}),h.path=f,s(At(h)),h}),vI=Y("roles/open",async(e,{dispatch:t,getState:r})=>{const{tabs:a}=r().root,s=a.find(i=>i.path===v.ROLES_TAB_PATH);if(s)return t(At(s)),s;t(mo())});function py(e,t){const{line:r,lineInEditor:a,offset:s,type:i="saved"}=t;e.breakpoints[i].locations.push({line:r,lineInEditor:a}),fe.isNumber(s)&&(e.breakpoints[i].offset=s)}function vl(e,t,r,a,s=!1){if(s){const i=new Map;let u=0;e.breakpoints[r].locations.forEach((l,d)=>{l.disabled?i.set(d,-1):i.set(d,u++)}),e.breakpoints[r].locations=e.breakpoints[r].locations.map((l,d)=>{const f=i.get(d);return!l.disabled&&fe.isNumber(f)&&t[f]?{...l,...t[f]}:l})}else e.breakpoints[r].locations=t;fe.isNumber(a)&&(e.breakpoints[r].offset=a)}function hy({filePath:e,fileType:t,methodName:r,className:a,ext:s,source:i}){return{filePath:e,fileType:t,methodName:r,className:a,ext:s,source:i,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}}function yl(e,t,r){let a=!1;const s=e.map(i=>i[r]!==t[r]?i:(a=!0,{...i,...t}));return a?s:[...s,t]}function Js(e){return e.map(({label:t})=>({label:t}))}const U_=Mt({name:"debugger",initialState:()=>{var t,r,a;const{debugger:e={meta:{state:Hr.DETACHED},list:[],sessions:[],expressions:[]}}=yn();return{meta:{...e.meta,state:((t=e.meta)==null?void 0:t.state)===Hr.ATTACHED?(r=e.meta)==null?void 0:r.state:Hr.DETACHED,shouldAutoReattach:((a=e.meta)==null?void 0:a.shouldAutoReattach)??!1},list:e.list||[],sessions:e.sessions||[],expressions:e.expressions||[]}},reducers:{addBreakpointDecoration(e,t){const{filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoint:d}=t.payload,f=dr(e.list,r,s,i);if(f)py(f,d);else{if(a===v.FileFolderType.CLASS&&d.offset===void 0)throw new Error(`Cannot add a breakpoint on a function without offset. Try editing the ${i} class.`);const h=hy({filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l});py(h,d),e.list.push(h)}},removeBreakpointDecoration(e,t){const{filePath:r,methodName:a,line:s,offset:i=0,type:u="saved"}=t.payload;if(r.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===r);if(l.length>0){const d=s+i;l.forEach(f=>{const h=f.breakpoints[u].offset||0;f.breakpoints[u].locations=f.breakpoints[u].locations.filter(g=>g.line+h!==d),u==="saved"&&(f.breakpoints.draft.locations=f.breakpoints.draft.locations.filter(g=>g.line+h!==d))})}}else{const l=dr(e.list,r,a);l&&(l.breakpoints[u].locations=l.breakpoints[u].locations.filter(d=>d.line!==s),u==="saved"&&(l.breakpoints.draft.locations=l.breakpoints.draft.locations.filter(d=>d.line!==s)))}},setBreakpointsDecoration(e,t){const{filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoints:d,offset:f,type:h="saved",merge:g=!1,clearDraft:b}=t.payload,y=dr(e.list,r,s,i);if(y)vl(y,d,h,f,g),b&&h!=="draft"&&(y.breakpoints.draft.locations=[]);else{const w=hy({filePath:r,fileType:a,methodName:s,className:i,ext:u,source:l});vl(w,d,h,f),e.list.push(w)}},updateBreakpointsDecoration(e,t){const{filePath:r,methodName:a,className:s,breakpoints:i,type:u="saved",merge:l=!1}=t.payload,d=dr(e.list,r,a,s);d&&vl(d,i,u,void 0,l)},clearBreakpoints(e,t){const{filePath:r,type:a="saved"}=t.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath===r?{draft:!a||a==="draft"||a==="any"?{locations:[],offset:0}:s.breakpoints.draft,saved:!a||a==="saved"||a==="any"?{locations:[],offset:0}:s.breakpoints.saved}:s.breakpoints}))},clearBreakpointsExcept(e,t){const{exceptedFilePath:r,type:a="saved"}=t.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath!==r?{draft:!a||a==="draft"||a==="any"?{locations:[],offset:0}:s.breakpoints.draft,saved:!a||a==="saved"||a==="any"?{locations:[],offset:0}:s.breakpoints.saved}:s.breakpoints}))},clearAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}))},toggleBreakpoint(e,t){const{filePath:r,methodName:a,line:s,offset:i=0,disabled:u}=t.payload;if(r.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===r);if(l.length>0){const d=s+i;l.forEach(f=>{const h=f.breakpoints.saved.offset||0;f.breakpoints.saved.locations=f.breakpoints.saved.locations.map(g=>g.line+h===d?{...g,disabled:u}:g)})}}else{const l=dr(e.list,r,a);l&&(l.breakpoints.saved.locations=l.breakpoints.saved.locations.map(d=>d.line===s?{...d,disabled:u}:d))}},toggleBreakpointsInFile(e,t){const{filePath:r,methodName:a,disabled:s}=t.payload;if(r.startsWith("Classes/")){const i=e.list.filter(u=>u.filePath===r);i.length>0&&i.forEach(u=>{u.breakpoints.saved.locations=u.breakpoints.saved.locations.map(l=>({...l,disabled:s}))})}else{const i=dr(e.list,r,a);i&&(i.breakpoints.saved.locations=i.breakpoints.saved.locations.map(u=>({...u,disabled:s})))}},disableAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{...t.breakpoints,saved:{...t.breakpoints.saved,locations:t.breakpoints.saved.locations.map(r=>({...r,disabled:!0}))}}}))},enableAllBreakpoints(e){e.list=e.list.map(t=>({...t,breakpoints:{...t.breakpoints,saved:{...t.breakpoints.saved,locations:t.breakpoints.saved.locations.map(r=>({...r,disabled:!1}))}}}))},setActiveLine(e,t){const{threadId:r,line:a,highlight:s}=t.payload,i=tt(e.sessions,r);i&&(i.activeLine=a,s&&(i.highlightedLines={start:a,end:a}))},addExpression(e,t){const{threadId:r,label:a,save:s}=t.payload,i=tt(e.sessions,r);i&&i.stopped&&(i.expressions=[...i.expressions||[],{label:a}],s&&(e.expressions=Js(i.expressions)))},removeExpression(e,t){const{threadId:r,index:a,save:s}=t.payload,i=tt(e.sessions,r);i&&(i.expressions=i.expressions.filter((u,l)=>l!==a),s&&(e.expressions=Js(i.expressions)))},removeAllExpressions(e,t){const{threadId:r,save:a}=t.payload,s=tt(e.sessions,r);s&&(s.expressions=[],a&&(e.expressions=[]))},renameExpression(e,t){const{threadId:r,index:a,replacement:s,save:i}=t.payload,u=tt(e.sessions,r);u&&u.expressions[a]&&(u.expressions[a].label=s,i&&(e.expressions=Js(u.expressions)))},setExpression(e,t){const{threadId:r,expression:a}=t.payload,s=tt(e.sessions,r);if(s){const i=a.index>=0?a.index:s.expressions.length>0?s.expressions.length-1:0,u=s.expressions[i];u?(u.result=a.result,u.nakedResult=a.nakedResult,u.variablesReference=a.variablesReference||0,u.presentationHint=a.presentationHint):s.expressions.push(a)}},updateExpressionAt(e,t){const{threadId:r,index:a,value:s}=t.payload,i=tt(e.sessions,r);if(i){const u=i.expressions[a];u&&(u.result=`"${s}"`,u.nakedResult=s)}},saveExpressions(e,t){const{expressions:r}=t.payload;e.expressions=Js(r)},addSession(e,t){const{threadId:r,channelId:a,stackFrames:s,exceptions:i=[]}=t.payload,u=tt(e.sessions,r),l=s[0],{expressions:d=[]}=e;if(u)u.expressions=d;else{const f=pf(r);e.sessions.push({tabPath:f,threadId:r,channelId:a,stackFrames:s,currentStackFrame:l,exceptions:i,expressions:d,variables:{callchain:[],expressions:[],argument:[],local:[],currentLine:[]},expandedVariables:[],highlightedLines:null,activeLine:null,stopped:!0})}},updateSession(e,t){const{threadId:r,changes:a}=t.payload;e.sessions=e.sessions.map(s=>s.threadId===r?{...s,...a}:s)},removeSession(e,t){const{threadId:r}=t.payload;e.sessions=e.sessions.filter(a=>a.threadId!==r)},removeSessionByIndex(e,t){const r=t.payload;e.sessions.splice(r,1)},setSessions(e,t){const r=t.payload;e.sessions=r},setCommonVariables(e,t){const{key:r,threadId:a,frameId:s,variablesReference:i,variables:u}=t.payload;e.sessions=e.sessions.map(l=>{var d;return l.threadId===a?{...l,variables:{...l.variables,[r]:yl((d=l.variables)==null?void 0:d[r],{frameId:s,variablesReference:i,items:u},"frameId")},expandedVariables:[...l.expandedVariables,r]}:l})},setCallChainVariables(e,t){const{threadId:r,frameId:a,variablesReference:s,variables:i}=t.payload;e.sessions=e.sessions.map(u=>{var l;return u.threadId===r?{...u,variables:{...u.variables,callchain:yl((l=u.variables)==null?void 0:l.callchain,{frameId:a,variablesReference:s,items:i},"frameId")},expandedVariables:[...u.expandedVariables,"callchain"]}:u})},setExpressionVariables(e,t){const{threadId:r,variablesReference:a,variables:s}=t.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===r?{...i,variables:{...i.variables,expressions:yl((u=i.variables)==null?void 0:u.expressions,{variablesReference:a,items:s},"variablesReference")}}:i})},setSourceContent(e,t){const{threadId:r,content:a}=t.payload,s=tt(e.sessions,r);s&&(s.currentStackFrame.source={...s.currentStackFrame.source,content:a})},setDebuggerMeta(e,t){if(t.payload.state===Hr.ERROR){const{error:r={code:null,reason:"",type:vo.SOCKET_ERROR}}=t.payload;if(e.meta.error={...e.meta.error,...r,time:Date.now()},(r==null?void 0:r.type)===vo.SOCKET_CLOSURE&&(r==null?void 0:r.code)===1e3&&!(r!=null&&r.reason)&&e.meta.state===Hr.DETACHED)return}e.meta.state=t.payload.state,t.payload.shouldAutoReattach!==void 0&&(e.meta.shouldAutoReattach=t.payload.shouldAutoReattach)}},extraReducers:e=>{e.addMatcher(Wt(G_.fulfilled,lb),t=>{t.sessions=[]})}}),{addBreakpointDecoration:yI,removeBreakpointDecoration:mI,setBreakpointsDecoration:_I,updateBreakpointsDecoration:bI,clearBreakpoints:SI,clearBreakpointsExcept:TI,clearAllBreakpoints:EI,toggleBreakpoint:wI,toggleBreakpointsInFile:CI,disableAllBreakpoints:AI,enableAllBreakpoints:RI,setActiveLine:xI,addExpression:OI,renameExpression:PI,removeExpression:DI,removeAllExpressions:FI,setExpression:II,updateExpressionAt:MI,saveExpressions:NI,addSession:LI,updateSession:$I,removeSession:kI,removeSessionByIndex:qI,setSessions:H_,setCallChainVariables:jI,setExpressionVariables:BI,setCommonVariables:WI,setSourceContent:UI,setDebuggerMeta:HI}=U_.actions,G_=Y("files/wipeDebuggerSessions",async(e,{getState:t,dispatch:r})=>{const{sessions:a}=t().debugger;for(const{threadId:s}of a){const i=pf(s);r($f(i))}}),z_=Y("files/removeDebuggerSessionsNotIn",async(e,{getState:t,dispatch:r})=>{const{threadIds:a}=e,{sessions:s}=t().debugger,i=[],u=s.filter(l=>{const d=a.includes(l.threadId);return d||i.push(l.threadId),d});return r(H_(u)),{staleThreadIds:i}}),bo=Y("models/fetch",async()=>(await v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify({verb:v.DesignerRequestVerb.GET_INFO,path:v.MODEL_TAB_PATH,as:"json",content:!0}),headers:new Headers({"Content-Type":"application/json"})})).content),So=Y("models/save",async(e,{getState:t,dispatch:r,rejectWithValue:a})=>{const{tabs:s}=t().root,i=s.find(u=>u.path===v.MODEL_TAB_PATH);if(!i)return a("Error while saving the model");try{const u=await v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify({verb:"save",path:i.path,content:i.content}),headers:new Headers({"Content-Type":"application/json"})});return setTimeout(()=>{r(en())},Ja),{...u,path:i.path,content:e.content||{toJSON:!0,dataClasses:[],extraProperties:{}}}}catch{return a("Error while saving the model")}}),GI=Y("models/open",async(e,{dispatch:t,getState:r})=>{const{tabs:a}=r().root,s=a.find(i=>i.path==="models/main");if(s)return t(At(s)),s;t(bo())}),zI=Y("model/rename-dataclass",async({dataclassId:e,selectionId:t,name:r},{getState:a,dispatch:s})=>{const i=await s(M_()).then(g=>g.payload);if(!a().explorer.find(g=>g.path===v.FolderRootPath.CLASSES))throw new Error("Classes folder was not found!");const d={class:{found:!1,newNameTaken:!1,file:null,filename_update:r},entity:{found:!1,newNameTaken:!1,file:null,filename_update:`${r}Entity`},selection:{found:!1,newNameTaken:!1,file:null,filename_update:`${r}Selection`}};i==null||i.forEach(g=>{var b;g.path===`Classes/${e}___[<QODLY_ID>]`?(b=g.children)==null||b.forEach(y=>{var _,T,S,A;const w={...y,name:(_=y.info)==null?void 0:_.filename};((T=y.info)==null?void 0:T.filename)===e?(d.class.found=!0,d.class.file=w):((S=y.info)==null?void 0:S.filename)===`${e}Entity`?(d.entity.found=!0,d.entity.file=w):((A=y.info)==null?void 0:A.filename)===t&&(d.selection.found=!0,d.selection.file=w)}):(g.name===d.class.filename_update&&(d.class.newNameTaken=!0),g.name===d.entity.filename_update&&(d.entity.newNameTaken=!0),g.name===d.selection.filename_update&&(d.selection.newNameTaken=!0))});const f=Object.entries(d).reduce((g,b)=>{const[y,w]=b;return w.found?w.newNameTaken?[...g,{type:"error",message:`Cannot rename ${y} file to ${w.filename_update} because it already exists. The existing file will be used instead!`}]:g:[...g,{type:"warning",message:`${e} ${y} file was not found`}]},[]);f.length>0&&s(er({message:"The following errors were encountered during dataclass rename:",views:{tips:f}}));const h=Object.values(d).filter(g=>g.found&&g.file&&!g.newNameTaken);await Promise.all(h.map(async g=>await s(jn({file:g.file,newname:g.filename_update}))))}),Ga={DATACLASS_DELETE:"dataclass.delete",DATACLASS_DRAGGABLE:"dataclass.draggable"},VI={model:{dataClasses:{},collections:{},extraProperties:{}},draft:{dataClasses:{},collections:{},extraProperties:{}},flags:{[Ga.DATACLASS_DELETE]:!0,[Ga.DATACLASS_DRAGGABLE]:!0}},V_=Mt({name:"Models",initialState:VI,reducers:{setModelFlag(e,t){e.flags={...e.flags,...t.payload}}},extraReducers(e){e.addCase(bo.fulfilled,(t,r)=>{var u;const a={},s={},i=r.payload.extraProperties||{};(u=r.payload.dataClasses)==null||u.forEach(l=>{a[l.name]=l,s[l.collectionName]=l}),t.draft.dataClasses=a,t.draft.collections=s,t.draft.extraProperties=i,t.model.dataClasses=a,t.model.collections=s,t.model.extraProperties=i}),e.addCase(bo.rejected,t=>{t.errored=!0}),e.addCase(So.pending,()=>{}).addCase(So.fulfilled,(t,r)=>{const a={},s={},i=r.payload.content.extraProperties||{};r.payload.content.dataClasses.forEach(u=>{a[u.name]=u,s[u.collectionName]=u}),t.draft.dataClasses=a,t.draft.collections=s,t.draft.extraProperties=i,t.model.dataClasses=a,t.model.collections=s,t.model.extraProperties=i})}}),{setModelFlag:YI}=V_.actions;var Y_=(e=>(e.UUID="uuid",e.STRING="string",e.TEXT="text",e.DATE="date",e.TIME="duration",e.BOOLEAN="bool",e.BYTE="byte",e.INTEGER="word",e.LONG="long",e.LONG64="long64",e.FLOAT="number",e.BLOB="blob",e.IMAGE="image",e.OBJECT="object",e))(Y_||{}),Lo=(e=>(e.STORAGE="storage",e.RELATEDENTITY="relatedEntity",e.RELATEDENTITIES="relatedEntities",e.CALCULATED="calculated",e.COMPOSITION="composition",e.ALIAS="alias",e))(Lo||{});const KI=e=>["string","uuid","number","long"].includes(e.type),JI=[{label:"Storage",value:"storage"},{label:"Calculated",value:"calculated"}],QI=[{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"}],XI=[{title:"String",kind:"storage",value:"string",calculatedType:"string",calculatedKind:"storage"},{title:"Text",kind:"storage",value:"text",calculatedType:"text",calculatedKind:"storage"},{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Date",kind:"storage",value:"date",calculatedType:"date",calculatedKind:"storage"},{title:"Duration",kind:"storage",value:"duration",calculatedType:"duration",calculatedKind:"storage"},{title:"Bool",kind:"storage",value:"bool",calculatedType:"bool",calculatedKind:"storage"},{title:"Byte",kind:"storage",value:"byte",calculatedType:"byte",calculatedKind:"storage"},{title:"Word",kind:"storage",value:"word",calculatedType:"word",calculatedKind:"storage"},{title:"Number",kind:"storage",value:"number",calculatedType:"number",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"},{title:"Object",kind:"storage",value:"object",calculatedType:"object",calculatedKind:"storage"},{title:"Image",kind:"storage",value:"image",calculatedType:"image",calculatedKind:"storage"},{title:"Blob",kind:"storage",value:"blob",calculatedType:"blob",calculatedKind:"storage"}],ZI=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],eM=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],tM=[{label:"None",value:"none"},{label:"B-tree",value:"btree"},{label:"Cluster",value:"cluster"},{label:"Automatic",value:"auto"}],rM=(e,t)=>({toJSON:!0,extraProperties:t,dataClasses:e.map(r=>{var a;return{...r.data,extraProperties:{position:{x:r.position.x,y:r.position.y},panelColor:(a=r.data.extraProperties)==null?void 0:a.panelColor}}})});function nM(e,t,r){const a=e;let s=0;for(;r[`${a}${s||""}`];)s++;return`${a}${s||""}`}const K_=e=>e.kind===Lo.RELATEDENTITY,J_=e=>e.kind===Lo.RELATEDENTITIES,aM=e=>J_(e)||K_(e),sM=()=>gr(e=>e.model),oM=()=>gr(e=>e.model.draft.dataClasses),iM=()=>gr(e=>e.model.draft.collections),uM=e=>gr(t=>t.model.draft.dataClasses[e]),cM=(e,t)=>gr(r=>r.model.draft.dataClasses[e].attributes.find(v.by("name",t))),lM=()=>gr(e=>e.settings.session["model.viewport"]),fM=()=>{const e=gr(s=>s.model.flags),t=s=>s in e?e[s]:void 0,r=t(Ga.DATACLASS_DELETE),a=t(Ga.DATACLASS_DRAGGABLE);return{deleteDataclass:r,draggableDataclass:a,flags:e}},dM=V_.reducer;function ml(e,t){const r=e.tabs.find(({path:a})=>a===v.SETTINGS_TAB_PATH);r&&(r.flags.touched=t)}const oo=Y("saved_conditions/fetchSavedConditions",async(e,{rejectWithValue:t})=>{try{const{conditions:r=[]}=await v.getSavedConditions();return r}catch{return t("Error while loading the shared conditions")}});var _l={},ga={},Qs={},gy;function Q_(){if(gy)return Qs;gy=1,Object.defineProperty(Qs,"__esModule",{value:!0}),Qs.default=r;let e;const t=new Uint8Array(16);function r(){if(!e&&(e=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!e))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(t)}return Qs}var Nn={},va={},ya={},vy;function pM(){if(vy)return ya;vy=1,Object.defineProperty(ya,"__esModule",{value:!0}),ya.default=void 0;var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return ya.default=e,ya}var yy;function $o(){if(yy)return va;yy=1,Object.defineProperty(va,"__esModule",{value:!0}),va.default=void 0;var e=t(pM());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){return typeof s=="string"&&e.default.test(s)}var a=r;return va.default=a,va}var my;function ko(){if(my)return Nn;my=1,Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.default=void 0,Nn.unsafeStringify=a;var e=t($o());function t(u){return u&&u.__esModule?u:{default:u}}const r=[];for(let u=0;u<256;++u)r.push((u+256).toString(16).slice(1));function a(u,l=0){return r[u[l+0]]+r[u[l+1]]+r[u[l+2]]+r[u[l+3]]+"-"+r[u[l+4]]+r[u[l+5]]+"-"+r[u[l+6]]+r[u[l+7]]+"-"+r[u[l+8]]+r[u[l+9]]+"-"+r[u[l+10]]+r[u[l+11]]+r[u[l+12]]+r[u[l+13]]+r[u[l+14]]+r[u[l+15]]}function s(u,l=0){const d=a(u,l);if(!(0,e.default)(d))throw TypeError("Stringified UUID is invalid");return d}var i=s;return Nn.default=i,Nn}var _y;function hM(){if(_y)return ga;_y=1,Object.defineProperty(ga,"__esModule",{value:!0}),ga.default=void 0;var e=r(Q_()),t=ko();function r(f){return f&&f.__esModule?f:{default:f}}let a,s,i=0,u=0;function l(f,h,g){let b=h&&g||0;const y=h||new Array(16);f=f||{};let w=f.node||a,_=f.clockseq!==void 0?f.clockseq:s;if(w==null||_==null){const R=f.random||(f.rng||e.default)();w==null&&(w=a=[R[0]|1,R[1],R[2],R[3],R[4],R[5]]),_==null&&(_=s=(R[6]<<8|R[7])&16383)}let T=f.msecs!==void 0?f.msecs:Date.now(),S=f.nsecs!==void 0?f.nsecs:u+1;const A=T-i+(S-u)/1e4;if(A<0&&f.clockseq===void 0&&(_=_+1&16383),(A<0||T>i)&&f.nsecs===void 0&&(S=0),S>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");i=T,u=S,s=_,T+=122192928e5;const x=((T&268435455)*1e4+S)%4294967296;y[b++]=x>>>24&255,y[b++]=x>>>16&255,y[b++]=x>>>8&255,y[b++]=x&255;const D=T/4294967296*1e4&268435455;y[b++]=D>>>8&255,y[b++]=D&255,y[b++]=D>>>24&15|16,y[b++]=D>>>16&255,y[b++]=_>>>8|128,y[b++]=_&255;for(let R=0;R<6;++R)y[b+R]=w[R];return h||(0,t.unsafeStringify)(y)}var d=l;return ga.default=d,ga}var ma={},Ur={},_a={},by;function X_(){if(by)return _a;by=1,Object.defineProperty(_a,"__esModule",{value:!0}),_a.default=void 0;var e=t($o());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){if(!(0,e.default)(s))throw TypeError("Invalid UUID");let i;const u=new Uint8Array(16);return u[0]=(i=parseInt(s.slice(0,8),16))>>>24,u[1]=i>>>16&255,u[2]=i>>>8&255,u[3]=i&255,u[4]=(i=parseInt(s.slice(9,13),16))>>>8,u[5]=i&255,u[6]=(i=parseInt(s.slice(14,18),16))>>>8,u[7]=i&255,u[8]=(i=parseInt(s.slice(19,23),16))>>>8,u[9]=i&255,u[10]=(i=parseInt(s.slice(24,36),16))/1099511627776&255,u[11]=i/4294967296&255,u[12]=i>>>24&255,u[13]=i>>>16&255,u[14]=i>>>8&255,u[15]=i&255,u}var a=r;return _a.default=a,_a}var Sy;function Z_(){if(Sy)return Ur;Sy=1,Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.URL=Ur.DNS=void 0,Ur.default=u;var e=ko(),t=r(X_());function r(l){return l&&l.__esModule?l:{default:l}}function a(l){l=unescape(encodeURIComponent(l));const d=[];for(let f=0;f<l.length;++f)d.push(l.charCodeAt(f));return d}const s="6ba7b810-9dad-11d1-80b4-00c04fd430c8";Ur.DNS=s;const i="6ba7b811-9dad-11d1-80b4-00c04fd430c8";Ur.URL=i;function u(l,d,f){function h(g,b,y,w){var _;if(typeof g=="string"&&(g=a(g)),typeof b=="string"&&(b=(0,t.default)(b)),((_=b)===null||_===void 0?void 0:_.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let T=new Uint8Array(16+g.length);if(T.set(b),T.set(g,b.length),T=f(T),T[6]=T[6]&15|d,T[8]=T[8]&63|128,y){w=w||0;for(let S=0;S<16;++S)y[w+S]=T[S];return y}return(0,e.unsafeStringify)(T)}try{h.name=l}catch{}return h.DNS=s,h.URL=i,h}return Ur}var ba={},Ty;function gM(){if(Ty)return ba;Ty=1,Object.defineProperty(ba,"__esModule",{value:!0}),ba.default=void 0;function e(y){if(typeof y=="string"){const w=unescape(encodeURIComponent(y));y=new Uint8Array(w.length);for(let _=0;_<w.length;++_)y[_]=w.charCodeAt(_)}return t(a(s(y),y.length*8))}function t(y){const w=[],_=y.length*32,T="0123456789abcdef";for(let S=0;S<_;S+=8){const A=y[S>>5]>>>S%32&255,x=parseInt(T.charAt(A>>>4&15)+T.charAt(A&15),16);w.push(x)}return w}function r(y){return(y+64>>>9<<4)+14+1}function a(y,w){y[w>>5]|=128<<w%32,y[r(w)-1]=w;let _=1732584193,T=-271733879,S=-1732584194,A=271733878;for(let x=0;x<y.length;x+=16){const D=_,R=T,$=S,B=A;_=d(_,T,S,A,y[x],7,-680876936),A=d(A,_,T,S,y[x+1],12,-389564586),S=d(S,A,_,T,y[x+2],17,606105819),T=d(T,S,A,_,y[x+3],22,-1044525330),_=d(_,T,S,A,y[x+4],7,-176418897),A=d(A,_,T,S,y[x+5],12,1200080426),S=d(S,A,_,T,y[x+6],17,-1473231341),T=d(T,S,A,_,y[x+7],22,-45705983),_=d(_,T,S,A,y[x+8],7,1770035416),A=d(A,_,T,S,y[x+9],12,-1958414417),S=d(S,A,_,T,y[x+10],17,-42063),T=d(T,S,A,_,y[x+11],22,-1990404162),_=d(_,T,S,A,y[x+12],7,1804603682),A=d(A,_,T,S,y[x+13],12,-40341101),S=d(S,A,_,T,y[x+14],17,-1502002290),T=d(T,S,A,_,y[x+15],22,1236535329),_=f(_,T,S,A,y[x+1],5,-165796510),A=f(A,_,T,S,y[x+6],9,-1069501632),S=f(S,A,_,T,y[x+11],14,643717713),T=f(T,S,A,_,y[x],20,-373897302),_=f(_,T,S,A,y[x+5],5,-701558691),A=f(A,_,T,S,y[x+10],9,38016083),S=f(S,A,_,T,y[x+15],14,-660478335),T=f(T,S,A,_,y[x+4],20,-405537848),_=f(_,T,S,A,y[x+9],5,568446438),A=f(A,_,T,S,y[x+14],9,-1019803690),S=f(S,A,_,T,y[x+3],14,-187363961),T=f(T,S,A,_,y[x+8],20,1163531501),_=f(_,T,S,A,y[x+13],5,-1444681467),A=f(A,_,T,S,y[x+2],9,-51403784),S=f(S,A,_,T,y[x+7],14,1735328473),T=f(T,S,A,_,y[x+12],20,-1926607734),_=h(_,T,S,A,y[x+5],4,-378558),A=h(A,_,T,S,y[x+8],11,-2022574463),S=h(S,A,_,T,y[x+11],16,1839030562),T=h(T,S,A,_,y[x+14],23,-35309556),_=h(_,T,S,A,y[x+1],4,-1530992060),A=h(A,_,T,S,y[x+4],11,1272893353),S=h(S,A,_,T,y[x+7],16,-155497632),T=h(T,S,A,_,y[x+10],23,-1094730640),_=h(_,T,S,A,y[x+13],4,681279174),A=h(A,_,T,S,y[x],11,-358537222),S=h(S,A,_,T,y[x+3],16,-722521979),T=h(T,S,A,_,y[x+6],23,76029189),_=h(_,T,S,A,y[x+9],4,-640364487),A=h(A,_,T,S,y[x+12],11,-421815835),S=h(S,A,_,T,y[x+15],16,530742520),T=h(T,S,A,_,y[x+2],23,-995338651),_=g(_,T,S,A,y[x],6,-198630844),A=g(A,_,T,S,y[x+7],10,1126891415),S=g(S,A,_,T,y[x+14],15,-1416354905),T=g(T,S,A,_,y[x+5],21,-57434055),_=g(_,T,S,A,y[x+12],6,1700485571),A=g(A,_,T,S,y[x+3],10,-1894986606),S=g(S,A,_,T,y[x+10],15,-1051523),T=g(T,S,A,_,y[x+1],21,-2054922799),_=g(_,T,S,A,y[x+8],6,1873313359),A=g(A,_,T,S,y[x+15],10,-30611744),S=g(S,A,_,T,y[x+6],15,-1560198380),T=g(T,S,A,_,y[x+13],21,1309151649),_=g(_,T,S,A,y[x+4],6,-145523070),A=g(A,_,T,S,y[x+11],10,-1120210379),S=g(S,A,_,T,y[x+2],15,718787259),T=g(T,S,A,_,y[x+9],21,-343485551),_=i(_,D),T=i(T,R),S=i(S,$),A=i(A,B)}return[_,T,S,A]}function s(y){if(y.length===0)return[];const w=y.length*8,_=new Uint32Array(r(w));for(let T=0;T<w;T+=8)_[T>>5]|=(y[T/8]&255)<<T%32;return _}function i(y,w){const _=(y&65535)+(w&65535);return(y>>16)+(w>>16)+(_>>16)<<16|_&65535}function u(y,w){return y<<w|y>>>32-w}function l(y,w,_,T,S,A){return i(u(i(i(w,y),i(T,A)),S),_)}function d(y,w,_,T,S,A,x){return l(w&_|~w&T,y,w,S,A,x)}function f(y,w,_,T,S,A,x){return l(w&T|_&~T,y,w,S,A,x)}function h(y,w,_,T,S,A,x){return l(w^_^T,y,w,S,A,x)}function g(y,w,_,T,S,A,x){return l(_^(w|~T),y,w,S,A,x)}var b=e;return ba.default=b,ba}var Ey;function vM(){if(Ey)return ma;Ey=1,Object.defineProperty(ma,"__esModule",{value:!0}),ma.default=void 0;var e=r(Z_()),t=r(gM());function r(i){return i&&i.__esModule?i:{default:i}}var s=(0,e.default)("v3",48,t.default);return ma.default=s,ma}var Sa={},Ta={},wy;function yM(){if(wy)return Ta;wy=1,Object.defineProperty(Ta,"__esModule",{value:!0}),Ta.default=void 0;var t={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};return Ta.default=t,Ta}var Cy;function mM(){if(Cy)return Sa;Cy=1,Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.default=void 0;var e=a(yM()),t=a(Q_()),r=ko();function a(u){return u&&u.__esModule?u:{default:u}}function s(u,l,d){if(e.default.randomUUID&&!l&&!u)return e.default.randomUUID();u=u||{};const f=u.random||(u.rng||t.default)();if(f[6]=f[6]&15|64,f[8]=f[8]&63|128,l){d=d||0;for(let h=0;h<16;++h)l[d+h]=f[h];return l}return(0,r.unsafeStringify)(f)}var i=s;return Sa.default=i,Sa}var Ea={},wa={},Ay;function _M(){if(Ay)return wa;Ay=1,Object.defineProperty(wa,"__esModule",{value:!0}),wa.default=void 0;function e(s,i,u,l){switch(s){case 0:return i&u^~i&l;case 1:return i^u^l;case 2:return i&u^i&l^u&l;case 3:return i^u^l}}function t(s,i){return s<<i|s>>>32-i}function r(s){const i=[1518500249,1859775393,2400959708,3395469782],u=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof s=="string"){const h=unescape(encodeURIComponent(s));s=[];for(let g=0;g<h.length;++g)s.push(h.charCodeAt(g))}else Array.isArray(s)||(s=Array.prototype.slice.call(s));s.push(128);const l=s.length/4+2,d=Math.ceil(l/16),f=new Array(d);for(let h=0;h<d;++h){const g=new Uint32Array(16);for(let b=0;b<16;++b)g[b]=s[h*64+b*4]<<24|s[h*64+b*4+1]<<16|s[h*64+b*4+2]<<8|s[h*64+b*4+3];f[h]=g}f[d-1][14]=(s.length-1)*8/Math.pow(2,32),f[d-1][14]=Math.floor(f[d-1][14]),f[d-1][15]=(s.length-1)*8&4294967295;for(let h=0;h<d;++h){const g=new Uint32Array(80);for(let S=0;S<16;++S)g[S]=f[h][S];for(let S=16;S<80;++S)g[S]=t(g[S-3]^g[S-8]^g[S-14]^g[S-16],1);let b=u[0],y=u[1],w=u[2],_=u[3],T=u[4];for(let S=0;S<80;++S){const A=Math.floor(S/20),x=t(b,5)+e(A,y,w,_)+T+i[A]+g[S]>>>0;T=_,_=w,w=t(y,30)>>>0,y=b,b=x}u[0]=u[0]+b>>>0,u[1]=u[1]+y>>>0,u[2]=u[2]+w>>>0,u[3]=u[3]+_>>>0,u[4]=u[4]+T>>>0}return[u[0]>>24&255,u[0]>>16&255,u[0]>>8&255,u[0]&255,u[1]>>24&255,u[1]>>16&255,u[1]>>8&255,u[1]&255,u[2]>>24&255,u[2]>>16&255,u[2]>>8&255,u[2]&255,u[3]>>24&255,u[3]>>16&255,u[3]>>8&255,u[3]&255,u[4]>>24&255,u[4]>>16&255,u[4]>>8&255,u[4]&255]}var a=r;return wa.default=a,wa}var Ry;function bM(){if(Ry)return Ea;Ry=1,Object.defineProperty(Ea,"__esModule",{value:!0}),Ea.default=void 0;var e=r(Z_()),t=r(_M());function r(i){return i&&i.__esModule?i:{default:i}}var s=(0,e.default)("v5",80,t.default);return Ea.default=s,Ea}var Ca={},xy;function SM(){if(xy)return Ca;xy=1,Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.default=void 0;var e="00000000-0000-0000-0000-000000000000";return Ca.default=e,Ca}var Aa={},Oy;function TM(){if(Oy)return Aa;Oy=1,Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.default=void 0;var e=t($o());function t(s){return s&&s.__esModule?s:{default:s}}function r(s){if(!(0,e.default)(s))throw TypeError("Invalid UUID");return parseInt(s.slice(14,15),16)}var a=r;return Aa.default=a,Aa}var Py;function EM(){return Py||(Py=1,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"NIL",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,"v1",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"v3",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,"v4",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,"v5",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,"validate",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"version",{enumerable:!0,get:function(){return u.default}});var t=h(hM()),r=h(vM()),a=h(mM()),s=h(bM()),i=h(SM()),u=h(TM()),l=h($o()),d=h(ko()),f=h(X_());function h(g){return g&&g.__esModule?g:{default:g}}})(_l)),_l}var bl,Dy;function wM(){if(Dy)return bl;Dy=1;function e(t,r){if(!t||!r||!t.length||!r.length)throw new Error("Bad alphabet");this.srcAlphabet=t,this.dstAlphabet=r}return e.prototype.convert=function(t){var r,a,s,i={},u=this.srcAlphabet.length,l=this.dstAlphabet.length,d=t.length,f=typeof t=="string"?"":[];if(!this.isValid(t))throw new Error('Number "'+t+'" contains of non-alphabetic digits ('+this.srcAlphabet+")");if(this.srcAlphabet===this.dstAlphabet)return t;for(r=0;r<d;r++)i[r]=this.srcAlphabet.indexOf(t[r]);do{for(a=0,s=0,r=0;r<d;r++)a=a*u+i[r],a>=l?(i[s++]=parseInt(a/l,10),a=a%l):s>0&&(i[s++]=0);d=s,f=this.dstAlphabet.slice(a,a+1).concat(f)}while(s!==0);return f},e.prototype.isValid=function(t){for(var r=0;r<t.length;++r)if(this.srcAlphabet.indexOf(t[r])===-1)return!1;return!0},bl=e,bl}var Sl,Fy;function CM(){if(Fy)return Sl;Fy=1;var e=wM();function t(r,a){var s=new e(r,a);return function(i){return s.convert(i)}}return t.BIN="01",t.OCT="01234567",t.DEC="0123456789",t.HEX="0123456789abcdef",Sl=t,Sl}var Tl,Iy;function AM(){if(Iy)return Tl;Iy=1;const{v4:e,validate:t}=EM(),r=CM(),a={cookieBase90:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~",flickrBase58:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ",uuid25Base36:"0123456789abcdefghijklmnopqrstuvwxyz"},s={consistentLength:!0};let i;const u=(f,h,g)=>{const b=h(f.toLowerCase().replace(/-/g,""));return!g||!g.consistentLength?b:b.padStart(g.shortIdLength,g.paddingChar)},l=(f,h)=>{const b=h(f).padStart(32,"0").match(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/);return[b[1],b[2],b[3],b[4],b[5]].join("-")},d=f=>Math.ceil(Math.log(2**128)/Math.log(f));return Tl=(()=>{const f=(h,g)=>{const b=h||a.flickrBase58,y={...s,...g};if([...new Set(Array.from(b))].length!==b.length)throw new Error("The provided Alphabet has duplicate characters resulting in unreliable results");const w=d(b.length),_={shortIdLength:w,consistentLength:y.consistentLength,paddingChar:b[0]},T=r(r.HEX,b),S=r(b,r.HEX),A=()=>u(e(),T,_),D={alphabet:b,fromUUID:R=>u(R,T,_),maxLength:w,generate:A,new:A,toUUID:R=>l(R,S),uuid:e,validate:(R,$=!1)=>{if(!R||typeof R!="string")return!1;const B=y.consistentLength?R.length===w:R.length<=w,z=R.split("").every(ee=>b.includes(ee));return $===!1?B&&z:B&&z&&t(l(R,S))}};return Object.freeze(D),D};return f.constants=a,f.uuid=e,f.generate=()=>(i||(i=f(a.flickrBase58).generate),i()),f})(),Tl}var RM=AM();const qo=(e,t,r)=>{switch(e.type){case"datasource":return{...e,path:e.path===t?r:e.path,value:e.valueType==="datasource"&&e.value===t?r:e.value,compareValue:e.compareValueType==="datasource"&&e.compareValue===t?r:e.compareValue};case"privilege":case"currentState":case"parentState":if(e.valueType==="datasource")return{...e,value:e.value===t?r:e.value};break;case"combination":return{...e,conditions:(e.conditions||[]).map(a=>qo(a,t,r))}}return e},xM=v.queue();async function Ra(e){const t={verb:v.DesignerRequestVerb.SET_FILE_CONTENT,asText:!1,name:"saved_conditions.json",path:"",root:"shared",content:{conditions:e}};await xM(()=>v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify(t),headers:new Headers({"Content-Type":"application/json"})}))}const jo=(e,t)=>{if(e.id===t)return null;if(e.type==="reference"&&e.ref===t)return null;if(e.type==="combination"&&e.conditions){const r=e.conditions.map(a=>jo(a,t)).filter(Boolean);return r.length===1?{...r[0],id:e.id}:{...e,conditions:r}}return e},Bo=e=>{if(e.id){if(e.type==="combination"&&e.conditions)return{...e,conditions:e.conditions.map(Bo)}}else return{...e,id:RM.generate()};return e},eb=Mt({name:"shared-conditions",initialState:{state:"unknown",conditions:[]},reducers:{updateSavedConditions:(e,t)=>(e.conditions=t.payload.conditions,Ra(t.payload.conditions),e),setSavedCondition:(e,t)=>{const{payload:r}=t;return e.conditions=e.conditions.map(a=>a.id===r.id?{...Bo(r.condition),id:a.id}:a),Ra(e.conditions),e},updateSavedConditionDs:(e,t)=>{const{old_reference:r,new_reference:a}=t.payload;e.conditions=e.conditions.map(s=>qo(s,r,a)),Ra(e.conditions)},addSavedCondition:(e,t)=>(e.conditions=[...e.conditions,t.payload],Ra(e.conditions),e),removeSavedCondition:(e,t)=>{const{id:r}=t.payload;return e.conditions=e.conditions.map(a=>jo(a,r)).filter(Boolean),Ra(e.conditions),e},initSavedConditions:(e,t)=>(e.conditions=t.payload.conditions,e)},extraReducers(e){e.addCase(oo.pending,t=>({...t,state:"loading"})).addCase(oo.fulfilled,(t,{payload:r})=>({state:"loaded",conditions:r})).addCase(oo.rejected,(t,r)=>({...t,state:"error",error:r.payload||"Error while loading the shared conditions"})),e.addMatcher(Wt(_b),(t,r)=>{const{state:a,oldLabel:s}=r.payload;t.conditions=t.conditions.map(i=>Gn(i,s,a.label))}),e.addMatcher(Wt(bb),(t,r)=>{const{payload:a}=r;t.conditions=t.conditions.map(s=>{var i;return Gn(s,(i=a.state)==null?void 0:i.label)})})}}),{updateSavedConditions:OM,setSavedCondition:PM,updateSavedConditionDs:DM,addSavedCondition:FM,removeSavedCondition:tb,initSavedConditions:IM}=eb.actions,MM=eb.reducer,rb={[v.WT_FLAGS_KEYS.SIDEBAR_SECTION_RESIZABLE]:!0},nb=Mt({name:"webforms",initialState:()=>{const{webforms:e}=yn();return{i18n:{current:""},...e,templates:{data:[],selectedGroup:""},datasources:{...cf.webforms.datasources,...e==null?void 0:e.datasources},flags:rb}},reducers:{toggleInspector:(e,t)=>{const{type:r}=t.payload;e.inspector[r].active=!e.inspector[r].active,e.inspector[r].active||(e.inspector[r].data=void 0)},inspect:(e,t)=>{const{type:r,data:a}=t.payload;e.inspector[r].active&&(e.inspector[r].data=a)},addComponent:(e,t)=>{e.components.push(t.payload)},editComponent:(e,t)=>{const{id:r,changes:a}=t.payload;e.components=e.components.map(s=>s.id===r?{...s,...a}:s)},removeComponent:(e,t)=>{const{payload:r}=t,a=e.components.findIndex(s=>s.id===r);a!==-1&&e.components.splice(a,1)},setSelectedGroup:(e,t)=>{e.templates.selectedGroup=t.payload.selectedGroup},setTemplatesData:(e,t)=>{e.templates.data=t.payload},setTemplateData:(e,t)=>{const{group:r,components:a}=t.payload,s=e.templates.data.find(i=>i.group===r);s&&(s.components=a)},setDatasourcesTheme:(e,t)=>{e.datasources.theme=t.payload},setWebformsFlag(e,t){e.flags={...e.flags,...t.payload}},setI18nCurrent(e,t){e.i18n={...e.i18n,current:t.payload.current}}},extraReducers(e){e.addCase(cb.fulfilled,(t,r)=>{t.components=r.payload})}}),{toggleInspector:NM,inspect:LM,addComponent:ab,editComponent:sb,removeComponent:ob,setSelectedGroup:$M,setTemplatesData:ib,setTemplateData:ub,setDatasourcesTheme:kM,setWebformsFlag:qM,setI18nCurrent:jM}=nb.actions,BM=nb.reducer,kf=fe.curry((e,t)=>{var s,i,u;const r={...t.sharedDatasources.sources},a=(u=(i=(s=t.root.tabs.find(v.by("path",e)))==null?void 0:s.content)==null?void 0:i.metadata)==null?void 0:u.datasources;return a&&(r[e]=a),fe.cloneDeep(r)}),WM=Y("webforms/fetchTemplates",async(e,{dispatch:t,getState:r})=>{const{data:a}=r().webforms.templates,s=r().settings.session["studio.tipsBaseUrl"]||"";if(!fe.isEmpty(a))return a;try{const u=await(await fetch(`${s}/build/index.json?t=${Date.now()}`)).json();return t(ib(u)),u}catch{return[]}}),UM=Y("webforms/fetchTemplate",async({name:e},{dispatch:t,getState:r})=>{const{data:a}=r().webforms.templates,s=a.find(i=>i.group===e);if(s&&!fe.isEmpty(s.components))return s.components;try{const u=await(await fetch(`${s==null?void 0:s.link}?t=${Date.now()}`)).json();return t(ub({group:e,components:u})),u}catch{return[]}}),cb=Y("webforms/fetchCraftedComponents",async(e,{rejectWithValue:t})=>{try{return(await v.getNodeInfo({path:"WebForms/crafted_components.json",verb:v.DesignerRequestVerb.GET_INFO,content:!0,as:"json"})).content}catch{return t("Error while loading the crafted components")}}),HM=Y("webforms/addCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(ab(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while adding the crafted component")}}),GM=Y("webforms/editCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(sb(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while editing the crafted component")}}),zM=Y("webforms/removeCraftedComponent",async(e,{dispatch:t,rejectWithValue:r,getState:a})=>{try{t(ob(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return r("Error while removing the crafted component")}}),qf=Y("datasources/add-datasource",async(e,{getState:t,rejectWithValue:r})=>{var a,s;try{const i=t(),u=e.datasource,l=!!u.namespace,d=[];if(l){const f={...i.sharedDatasources.sources,[u.namespace]:[...i.sharedDatasources.sources[u.namespace],u]};d.push(...f[u.namespace]),await v.setSharedSources(f)}else(((s=(a=i.root.tabs.find(v.by("path",e.path)).content)==null?void 0:a.metadata)==null?void 0:s.datasources)||[]).push(u);return{list:d,path:e.path,namespace:e.datasource.namespace}}catch{console.error("Error while adding the datasource",e.datasource.id),r("Error while adding the datasource")}}),jf=Y("datasources/edit-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const{namespace:a,path:s}=e,i=t(),u=!!e.namespace,l=kf(s,i);let d=fe.defaultTo(l[a||s],[]);const f=d.find(y=>y.id===e.id&&(y.namespace||"")===(e.namespace||"")),h=e.changes,g=h??{[e.property]:e.value};return d=d.map(y=>y.id===e.id?{...y,...g}:y),u&&await v.setSharedSources({...i.sharedDatasources.sources,[e.namespace]:d}),(fe.isObject(h)?Object.keys(h):[]).includes("dataType")&&e.updateRefs&&v.datasourcesSubject.next({datasource:{id:e.id,namespace:e.namespace},path:s??"",action:v.DatasourcesActions.TYPE_CHANGE,old_type:(f==null?void 0:f.dataType)||"",new_type:g.dataType,is_shared:u}),{list:d,path:e.path,namespace:e.namespace}}catch{r(`Error while editing datasource ${e.id}`)}}),VM=e=>e.type===Yr.fulfilled.type,Yr=Y("datasources/rename-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const a=t(),s=!!e.namespace,i=e.namespace||e.path,u=new RegExp(`^${e.id}\\b`,""),l=y=>{if(y==null)return y;const w=y.split(".");return w[0]===e.id?(w[0]=e.new_name,w.join(".")):y},d=kf(e.path,a),[f,h]=[fe.omit(d,e.path),d[e.path]],g=y=>{var w;(w=y.events)==null||w.forEach(_=>{var T;switch(_.type){case"method":{const S=_;if(S.params.forEach(A=>{const x=v.splitDatasourceID(A.datasource),{root:D}=v.splitDatasourceID(A.datasource);A.datasource&&D===e.id&&v.isSameNamespace(x.namespace,s?i:"")&&Object.assign(A,{datasource:l(A.datasource)})}),S.returns){const A=v.splitDatasourceID(S.returns.datasource),{root:x}=v.splitDatasourceID(A.id);x===e.id&&v.isSameNamespace(A.namespace,s?i:"")&&Object.assign(S.returns,{datasource:l((T=S.returns)==null?void 0:T.datasource)})}return}case"simple-action":{const S=_;S.datasource&&S.datasource.name&&v.isSameNamespace(S.datasource.namespace,s?i:"")&&Object.assign(S.datasource,{name:l(S.datasource.name),from:l(S.datasource.from),target:l(S.datasource.target)});return}default:return}})},b=(y,w)=>{y===i?w.forEach(_=>{const T=(v.isObjectDatasource(_)||!v.isSimpleDatasource(_))&&_.from&&u.test(_.from);_.id===e.id?_.id=e.new_name:T&&_.from&&(_.from=_.from.replace(new RegExp(`^${e.id}`,""),e.new_name)),e.updateRefs&&g(_)}):e.updateRefs&&w.forEach(_=>{g(_)})};if(b(e.path,h),Object.entries(f).forEach(([y,w])=>{b(y,w)}),e.updateRefs){const y=v.getDatasourceId({id:e.id,namespace:e.namespace}),w=v.getDatasourceId({id:e.new_name,namespace:e.namespace});v.datasourcesSubject.next({path:e.path??"",action:v.DatasourcesActions.RENAME,old_reference:y,new_reference:w,is_shared:s})}return fe.isEqual(a.sharedDatasources.sources,f)||await v.setSharedSources({...a.sharedDatasources.sources,...f}),{allDatasource:{local:h,shared:f},path:e.path,namespace:e.namespace}}catch{return r(`Error while renaming datasource ${e.namespace}:${e.id}`)}}),ka=Y("datasources/delete-datasource",async(e,{getState:t,rejectWithValue:r})=>{try{const a=t(),s=!!e.namespace,i=e.namespace||e.path,l=kf(e.path,a)[i].filter(v.outById(e.id));return s&&await v.setSharedSources({...a.sharedDatasources.sources,[e.namespace]:l}),{list:l,path:e.path,namespace:e.namespace}}catch{return r(`Error while removing datasource ${e.id}`)}}),za=Mt({name:"root",initialState:()=>{const e=yn();return{filesLoading:!1,tabs:e.tabs||[],activeTab:e.activeTab,recent:e.recent||[],clipboard:null}},reducers:{setWebformState(e,t){const{path:r,currentState:a}=t.payload;e.tabs.forEach(s=>{s.path===r&&(s.content.metadata.currentState=a.id)})},copyToClipBoard(e,t){e.clipboard=t.payload},setPanelState(e,t){const{path:r,...a}=t.payload;e.tabs.forEach(s=>{s.path===r&&(s.view||(s.view={panel:{isOpen:!1,type:"",current:""}}),Object.assign(s.view.panel,a))})},addDataSource(e,t){var i;const{payload:{path:r,datasourceDef:a}}=t,s=e.tabs.find(u=>u.path===r);s&&(s.content.metadata.datasources=s.content.metadata.datasources||[],(i=s.content.metadata.datasources)!=null&&i.find(l=>l.id===a.id)||(s.content.metadata.datasources=[...s.content.metadata.datasources,{...a,events:[]}],s.flags={...s.flags,touched:!0,confirmed:!0}))},addWebformState(e,t){var i;const{payload:{path:r,stateDef:a}}=t,s=e.tabs.find(u=>u.path===r);s&&(s.content.metadata.states=s.content.metadata.states||[v.ROOT_WEBFORM_STATE],(i=s.content.metadata.states)!=null&&i.find(l=>l.id===a.id)||(s.content.metadata.states=[...s.content.metadata.states,a],s.flags={...s.flags,touched:!0,confirmed:!0}))},removeWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:dm(a.content,r.state)}:a)},editWebformState(e,t){const{path:r,state:a,oldLabel:s}=t.payload;e.tabs=e.tabs.map(i=>i.path===r?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,metadata:{...i.content.metadata,states:i.content.metadata.states.map(u=>v.isBaseState(u)?u:u.id===a.id?a.conditions?{...a,conditions:Bo(a.conditions)}:a:{...u,conditions:u.conditions?Gn(u.conditions,s,a.label):u.conditions})}}}:i)},updateStateConditionDs(e,t){const{path:r,old_reference:a,new_reference:s}=t.payload;e.tabs=e.tabs.map(i=>{var u,l;return i.path===r?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,metadata:{...i.content.metadata,states:(((l=(u=i.content)==null?void 0:u.metadata)==null?void 0:l.states)||[]).map(d=>d.conditions?{...d,conditions:qo(d.conditions,a,s)}:d)}}}:i})},resetComponentState(e,t){const{path:r,id:a,state:s,lang:i,resetAll:u}=t.payload;e.tabs=e.tabs.map(l=>l.path===r?{...l,flags:{...l.flags,touched:!0,confirmed:!0},content:{...l.content,components:{...l.content.components,[a]:{...l.content.components[a],custom:{...fe.omit(l.content.components[a].custom,u&&s&&i?[`states:${s.id}`,`i18n:${i}`,`states:${s.id}:i18n:${i}`]:s?i?`states:${s.id}:i18n:${i}`:`states:${s.id}`:i?`i18n:${i}`:"")}}}}}:l)},unsetCustomComponentProp(e,t){const{path:r,id:a,prop:s,state:i,lang:u}=t.payload;e.tabs=e.tabs.map(l=>l.path===r?{...l,flags:{...l.flags,touched:!0,confirmed:!0},content:{...l.content,components:{...l.content.components,[a]:{...l.content.components[a],custom:{...fe.omit(l.content.components[a].custom,i?u?`states:${i.id}:i18n:${u}.${s}`:`states:${i.id}.${s}`:u?`i18n:${u}.${s}`:s)}}}}}:l)},setDefaultWebformStates(e,t){const{path:r,states:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,defaultStates:a.map(({id:i})=>i)}}}:s)},addDefaultWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>{var s;return a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:{...a.content,metadata:{...a.content.metadata,defaultStates:Array.from(new Set([...((s=a.content.metadata)==null?void 0:s.defaultStates)||[],r.state.id]))}}}:a})},removeDefaultWebformState(e,t){const{payload:r}=t;e.tabs=e.tabs.map(a=>{var s;return a.path===r.path?{...a,flags:{...a.flags,touched:!0,confirmed:!0},content:{...a.content,metadata:{...a.content.metadata,defaultStates:(((s=a.content.metadata)==null?void 0:s.defaultStates)||[]).filter(i=>i!==r.state.id)}}}:a})},removeDataSource(e,t){const{path:r,datasourceID:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,datasources:s.content.metadata.datasources.filter(i=>i.id!==a)}}}:s)},setDataSources(e,t){const{payload:{path:r,datasourceArr:a}}=t;e.tabs=e.tabs.map(s=>{var i;return s.path===r?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...(i=s.content)==null?void 0:i.metadata,datasources:a}}}:s})},setTabs(e,t){e.tabs=t.payload},closeDebuggerTabs(e){const t=e.tabs.some(r=>r.path===e.activeTab&&r.type===v.FileFolderType.DEBUGGER);if(e.tabs=e.tabs.filter(r=>r.type!==v.FileFolderType.DEBUGGER),t){const r=e.tabs.at(-1)??null;e.activeTab=(r==null?void 0:r.path)??"",r?Ar(r):Pa()}},closeTab(e,t){const r=t.payload;e.tabs.splice(r,1);const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);a?(e.activeTab=a.path,Ar(a)):(e.activeTab="",Pa())},closeOthers(e,t){e.tabs=e.tabs.filter(r=>r.path===t.payload),e.activeTab=t.payload,Ar(e.tabs[0])},closeAllTabs(e){e.tabs=[],e.activeTab="",Pa()},closeRightTabs(e,t){e.tabs.splice(t.payload+1),e.activeTab=e.tabs[t.payload].path,Ar(e.tabs[t.payload])},closeLeftTabs(e,t){e.tabs.splice(0,t.payload);const r=e.tabs[0];e.activeTab=r.path,Ar(r)},closeSavedTabs(e){e.tabs=e.tabs.filter(({flags:{touched:r}})=>r);const t=e.tabs.reduce((r,a)=>(a==null?void 0:a.weight)>((r==null?void 0:r.weight)||0)?a:r,null);t?(e.activeTab=t.path,Ar(t)):(e.activeTab="",Pa())},confirmTab(e,t){const r=e.tabs.find(({path:a})=>a===t.payload);r&&(r.flags.confirmed||za.caseReducers.setTabFlags(e,{type:t.type,payload:{path:t.payload,flags:{confirmed:!0}}}))},selectTab(e,t){const r=e.tabs.find(({path:s})=>s===t.payload);if(!r||e.activeTab===t.payload)return;const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);r.weight=a?(a.weight||0)+1:1,e.activeTab=t.payload},openTabUnselected(e,t){const r=t.payload;let a=e.tabs.find(({path:i})=>r.path===i);a||(e.tabs.push(r),a=e.tabs[e.tabs.length-1]);const s=e.tabs.reduce((i,u)=>(u==null?void 0:u.weight)>((i==null?void 0:i.weight)||0)?u:i,null);a.weight=s?(s.weight||0)+1:1,a.extra={...a.extra,...r.extra}},selectTabByReference(e,t){const r=[v.FileFolderType.DEBUGGER],{isNew:a,...s}=t.payload;let i=s,u=e.tabs.find(({path:l})=>i.path===l);if(i.history||(i.history={stack:[],active:-1,locked:!1}),(r.includes(i.type)||u!=null&&u.flags.confirmed)&&(i={...i,flags:{...i.flags,confirmed:!0}}),!u){const l=e.tabs.findIndex(({flags:{confirmed:d}})=>d===!1);l!==-1&&!r.includes(i.type)&&!a?e.activeTab===e.tabs[l].path?(e.tabs[l]=i,u=e.tabs[l]):(e.tabs.push(i),u=e.tabs[e.tabs.length-1],e.tabs.splice(l,1)):(e.tabs.push(i),u=e.tabs[e.tabs.length-1])}if(e.activeTab!==i.path){const l=e.tabs.reduce((d,f)=>(f==null?void 0:f.weight)>((d==null?void 0:d.weight)||0)?f:d,null);e.activeTab=i.path,u.weight=((l==null?void 0:l.weight)||0)+1}u.extra={...u.extra,...i.extra},u.view={...u.view,...i.view},u.flags={...u.flags||{},...i.flags||{}}},setContent(e,t){const{path:r,content:a,contentPath:s,date:i}=t.payload;e.tabs=e.tabs.map(u=>{var f,h;if(u.path!==r)return u;a&&typeof a=="object"&&(s?fe.set(u.content,s,a):u.content=a),typeof a=="string"&&(u.content=a),i&&(u.date=i);let l=!1,d=u.flags.confirmed;return((h=(f=u.extra)==null?void 0:f.editor)==null?void 0:h.key)!=="editors:localization"&&(typeof u.content=="string"?l=u.initialContent!==u.content:l=!fe.isEqual(u.initialContent,u.content),d=!d&&l?!0:d),{...u,flags:{...u.flags,touched:l,confirmed:d}}})},setTabFlags(e,t){const{path:r,flags:a}=t.payload;e.tabs=e.tabs.map(s=>s.path===r?{...s,flags:{...s.flags,...a}}:s)},setTabsFlags(e,t){const{tabs:r,flags:a}=t.payload;e.tabs=e.tabs.map(s=>r.includes(s.path)?{...s,flags:{...s.flags,...a}}:s)},setTabExtra(e,t){const{path:r,extra:a,flags:s}=t.payload;e.tabs=e.tabs.map(i=>i.path===r?{...i,extra:{...i.extra,...a},flags:s?{...i.flags,...s}:i.flags}:i)},addWebFormStyles(e,t){const{path:r,styles:a=[]}=t.payload,s=e.tabs.find(i=>i.path===r);if(s){const i=s.content.metadata.styles.map(({name:l})=>l),u=a.filter(({name:l})=>!i.includes(l));s.content.metadata.styles=[...s.content.metadata.styles,...u].map(({scope:l,...d})=>d)}},changeTabEditor(e,t){return e.tabs=e.tabs.map(r=>r.path===t.payload.path?t.payload:r),e},setHistoryContent(e,t){const{path:r,contentPath:a}=t.payload;e.tabs=e.tabs.map(s=>{var d,f;if(s.path!==r)return s;const i=!fe.isEqual(s.content,(d=s.history)==null?void 0:d.stack[s.history.active]),l=a==="components"&&(()=>{var S,A;if(!s.history||!s.content||!s.history.stack[s.history.active])return!1;const h=s.history.stack[s.history.active],g=s.content;if(!(h!=null&&h.components)||!(g!=null&&g.components))return!1;const b=h.components,y=g.components,w=new Set([...Object.keys(b),...Object.keys(y)]);let _=!1,T=!1;for(const x of w){const D=b[x],R=y[x];if(!D||!R){T=!0;break}const $={...D},B={...R};if($.props){const{gridProps:z,...ee}=$.props;$.props=ee}if(B.props){const{gridProps:z,...ee}=B.props;B.props=ee}if(!fe.isEqual($,B)){T=!0;break}fe.isEqual((S=D.props)==null?void 0:S.gridProps,(A=R.props)==null?void 0:A.gridProps)||(_=!0)}return _&&!T})();return s.history&&i&&!l&&(s.history.stack=[...(f=s.history)==null?void 0:f.stack.slice(0,s.history.active+1),s.content],s.history.active=s.history.stack.length-1),{...s}})},unlockHistory(e,t){const r=t.payload;e.tabs=e.tabs.map(a=>a.path!==r?a:(a.history&&(a.history.locked=!1),{...a}))},undo(e){e.tabs=e.tabs.map(t=>t.path!==e.activeTab?t:(t.history&&t.history.active>0&&(t.history.locked=!0,t.history.active--,t.content=t.history.stack[t.history.active]),{...t}))},redo(e){e.tabs=e.tabs.map(t=>t.path!==e.activeTab?t:(t.history&&t.history.active<t.history.stack.length-1&&(t.history.locked=!0,t.history.active++,t.content=t.history.stack[t.history.active]),{...t}))}},extraReducers:e=>{e.addCase(Df,(t,r)=>{if(r.payload.settingsKey==="studio.enablePreview"&&r.payload.value===!1){const a=t.tabs.find(({flags:{confirmed:s}})=>s===!1);a&&za.caseReducers.setTabFlags(t,{type:"",payload:{path:a.path,flags:{confirmed:!0}}})}}),e.addCase($_.fulfilled,(t,r)=>{if(!r.payload)return;const{content:a,line:s,path:i}=r.payload,u=t.tabs.find(l=>l.path===i);if(u&&typeof u.content=="string"){const l=u.content.trim().split(`
168
168
  `);l.splice(s,0,a),u.content=l.join(`
169
169
  `)}}),e.addCase(Bn.pending,(t,r)=>{const{tab:a}=r.meta.arg;switch(a.type){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.WILL_SAVE,payload:{filePath:a.path}});break}}),e.addCase(Bn.fulfilled,(t,r)=>{if(!r.payload)return;const a=t.tabs.find(({path:s})=>{var i;return s===((i=r.payload)==null?void 0:i.path)});if(a){switch(a.content=r.payload.content,a.date=r.payload.date,a.initialContent=r.payload.initialContent,a.flags.touched=!1,a.flags.confirmed=!0,a.flags.old=!1,a.type){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.DID_SAVE,payload:{filePath:a.path,content:a.content}});break;case v.FileFolderType.HTTP_HANDLERS:v.toastSubject.next({kind:"info",message:"Restart WEB server to have modifications taken into account"});break}r.payload.errors.length>0&&v.toastSubject.next({kind:"error",message:r.payload.errors})}}),e.addCase(Bn.rejected,()=>{v.toastSubject.next({kind:"danger",message:"Cannot save file"})}),e.addCase(j_.fulfilled,(t,r)=>{const a=[...r.payload.files];t.tabs=t.tabs.map(s=>{if([v.FileFolderType.CLASS,v.FileFolderType.METHOD].includes(s.type)){const i=a.find(u=>u.name===s.name&&u.type===s.type);if(i){const u=new Date(s.date),l=new Date(i.date);if(u.getTime()!==l.getTime())return{...s,flags:{...s.flags,old:!0}}}}return s})}),e.addCase(so.pending,(t,r)=>{t.tabs=t.tabs.map(a=>a.path===r.meta.arg.path?{...a,flags:{...a.flags,loading:!0}}:a)}),e.addCase(so.fulfilled,(t,r)=>{const a=r.payload;if(a){const s=r.meta.arg;t.tabs=t.tabs.map(i=>{if(i.name===s.name&&i.type===s.type){const u=i.extra||{};let l=a.content;return i.type===v.FileFolderType.METHOD?(u.attributes=v.parseAttributes(a.content),a.content=v.addAttributesToContent(a.content,{}),l=a.content):i.type===v.FileFolderType.SETTINGS&&(a.content={}),{...i,initialContent:l,content:a.content,date:a.date,flags:{enabled:i.flags.enabled,confirmed:i.flags.confirmed},extra:u}}return i})}}),e.addCase(so.rejected,(t,r)=>{const a=r.meta.arg.path;t.tabs=t.tabs.map(s=>s.path===a?{...s,flags:{...s.flags,loading:!1}}:s)}),e.addCase(Mf.fulfilled,(t,r)=>{if(!r.payload)return;const{line:a,offset:s}=r.meta.arg,i=t.tabs.find(({path:u})=>{var l;return u===((l=r.payload)==null?void 0:l.path)});i&&(i.extra={...i.extra,initialLineInfo:{line:a,offset:s,lastModification:Date.now()}})}),e.addCase(k_.fulfilled,(t,r)=>{if(!r.payload)return;const{selection:a}=r.meta.arg,s=t.tabs.find(({path:i})=>{var u;return i===((u=r.payload)==null?void 0:u.path)});s&&(s.extra={...s.extra,initialSelectionInfo:{selection:a,lastModification:Date.now()}})}),e.addCase(jn.fulfilled,(t,r)=>{r.payload.new!==r.payload.old&&(t.tabs=[...t.tabs].map(a=>a.path===r.payload.old.path?{...a,path:r.payload.new.path,name:r.payload.new.name}:a),t.activeTab===r.payload.old.path&&(t.activeTab=r.payload.new.path))}),e.addCase(Kl.pending,(t,r)=>{const a=r.meta.arg,s=`${a.path}${a.ext?`.${a.ext}`:""}`;switch(a.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.WILL_DELETE,payload:{filePath:s}});break}}),e.addCase(Kl.fulfilled,(t,r)=>{const{deleted:a,node:s}=r.payload;if(!a)return;const i=`${s.path}${s.ext?`.${s.ext}`:""}`;switch(s.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.DID_DELETE,payload:{filePath:i}});break}if(t.tabs=t.tabs.filter(u=>u.path!==i),t.recent=t.recent.filter(({path:u})=>i!==u),t.tabs.length){t.activeTab=t.tabs[t.tabs.length-1].path;return}t.activeTab=""}),e.addCase(Jl.pending,(t,r)=>{const a=r.meta.arg,s=`${a.path}${a.ext?`.${a.ext}`:""}`;switch(a.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.WILL_DELETE,payload:{filePath:s}});break}}),e.addCase(Jl.fulfilled,(t,r)=>{const{node:a}=r.payload,s=`${a.path}${a.ext?`.${a.ext}`:""}`;switch(a.ext){case"4dm":case"4qs":v.lspSubject.next({action:v.LspActions.DID_DELETE,payload:{filePath:s}});break}}),e.addCase($a.fulfilled,(t,r)=>{const{draggedNode:a,newLocation:s}=r.meta.arg;if(t.tabs.find(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`))return t.tabs=t.tabs.map(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`?{...i,path:`${s.path}/${a.name}.${a.ext}`}:i),t.recent=t.recent.map(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`?{...i,path:`${s.path}/${a.name}.${a.ext}`}:i),t.activeTab=`${s.path}/${a.name}.${a.ext}`,t}),e.addCase(So.fulfilled,(t,r)=>{const a=t.tabs.find(s=>s.path===r.payload.path);a&&(a.flags.touched=!1,a.flags.confirmed=!0,a.date=r.payload.date,a.content=r.payload.content,a.initialContent=r.payload.content)}),e.addCase(W_.fulfilled,(t,r)=>{var i;if(!((i=r.payload)!=null&&i.path))return;const a=t.tabs.find(v.by("path",r.payload.path));if(!a)return;a.content=a.content+`
170
170
  exposed Function ${r.meta.arg.name}()