@ws-ui/store 0.2.11 → 0.2.13

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
@@ -96,7 +96,7 @@ The error may be correlated with this previous error:
96
96
  `+l.current.stack+`
97
97
 
98
98
  `),w}return du(function(){d.current=e,p.current=m,h.current=_,l.current=void 0}),du(function(){function w(){try{var T=t.getState();if(T===p.current)return;var D=d.current(T);if(r(D,h.current))return;h.current=D,p.current=T}catch(P){l.current=P}i()}return u.onStateChange=w,u.trySubscribe(),w(),function(){return u.tryUnsubscribe()}},[t,u]),_}function RR(e){e===void 0&&(e=Lr);var r=e===Lr?cg:function(){return pt.useContext(e)};return function(a,s){if(s===void 0&&(s=xR),process.env.NODE_ENV!=="production"){if(!a)throw new Error("You must pass a selector to useSelector");if(typeof a!="function")throw new Error("You must pass a function as a selector to useSelector");if(typeof s!="function")throw new Error("You must pass a function as an equality function to useSelector")}var i=r(),u=i.store,l=i.subscription,d=OR(a,s,u,l);return pt.useDebugValue(d),d}}var AR=RR();pR(tT.unstable_batchedUpdates);const PR=()=>CR(),Sr=AR,ks=W(e=>e,e=>e.catalog.state==="loaded"?e.catalog.model:null),DR=W(e=>e,({catalog:e})=>e.state),lg=W(ks,e=>e?e.dataClasses:[]),FR=W(ks,e=>e?e.singletons:[]),IR=W(lg,e=>Object.values(e).filter(({virtual:r})=>r)),$R=W(ks,e=>e?e.methods:[]),fg=e=>W(r=>r,r=>{switch(r.catalog.state){case"loaded":const t=e?r.catalog.model.dataClasses[e]:r.catalog.model;return(t==null?void 0:t.methods)||[];default:return[]}}),MR=e=>Sr(fg(e),ig),LR=(e,r)=>W(fg(e),t=>t.find(a=>`${a.applyTo}.${a.name}`===r)),NR=(e,r,t)=>Sr(LR(e,`${t}.${r}`),ig),dg=W(e=>e,e=>e),kR=e=>W(Nr,r=>{var s;const t=r.tabs.find(({path:i})=>i===e),a=t==null?void 0:t.content.components;return!t||!a?[]:(s=Object.keys(a))==null?void 0:s.map(i=>({id:i,...a[i]}))}),pg=e=>W(Nr,r=>{var a,s;const t=r.tabs.find(({path:i})=>i===e);return((s=(a=t==null?void 0:t.content)==null?void 0:a.metadata)==null?void 0:s.datasources)||[]}),jR=(e,r,t)=>W(dg,a=>{var s,i;if(r){const u=a.sharedDatasources.sources[r];return u?u.find(l=>l.id===e):void 0}else{const u=a.root.tabs.find(d=>d.path===t);return u?(i=(s=u.content.metadata)==null?void 0:s.datasources)==null?void 0:i.find(d=>d.id===e):void 0}}),hg=W(e=>e,e=>{var r;return((r=e.sharedDatasources)==null?void 0:r.sources)||[]}),BR=(e,r,t,a)=>W(pg(e),hg,(s,i)=>{const u=Re.flatten(Re.values(i)),l=[...r!=="private"?s:[],...r!=="shared"?u:[]];return t?l.filter(d=>(!a||a.every(({id:p,namespace:h=""})=>d.id!==p||(d.namespace||"")!==h))&&(t.includes(d.type)||d.dataType&&(t.includes(d.dataType)||t.includes("objectFromArray")&&d.dataType==="object"&&d.from))):l}),WR=W(e=>e.debugger,e=>e.meta),xn=W(e=>e.debugger,e=>e.list),Ft=W(e=>e.debugger,e=>e.sessions),UR=W(Ft,e=>e.length),wn=(e,r,t,a)=>e.find(s=>s.filePath===r&&s.methodName===t&&(!a||s.className===a)),ot=(e,r)=>e.find(t=>t.threadId===r),gg=(e,r)=>e.find(t=>t.tabPath===r),HR=(e,r)=>W(xn,t=>{var a;return((a=wn(t,e,r))==null?void 0:a.breakpoints.saved.locations)||[]}),GR=(e,r)=>W(xn,t=>{var a;return((a=wn(t,e,r))==null?void 0:a.breakpoints.draft.locations)||[]}),qR=e=>W(xn,r=>r.filter(t=>t.filePath===e).reduce((t,a)=>[...t,...a.breakpoints.saved.locations.map(s=>({...s,line:s.line+(a.breakpoints.saved.offset||0)}))],[]).sort((t,a)=>t.line-a.line)),YR=e=>W(xn,r=>r.filter(t=>t.filePath===e).reduce((t,a)=>[...t,...a.breakpoints.draft.locations.map(s=>({...s,line:s.line+(a.breakpoints.draft.offset||0)}))],[]).sort((t,a)=>t.line-a.line)),zR=e=>W(Ft,r=>{const t=ot(r,e);return t!=null&&t.stopped?t.highlightedLines:null}),VR=e=>W(Ft,r=>{const t=ot(r,e);return t!=null&&t.stopped?t.activeLine:null}),KR=e=>W(Ft,r=>{var t;return((t=ot(r,e))==null?void 0:t.expressions)||[]}),JR=e=>W(Ft,r=>{var t;return((t=ot(r,e))==null?void 0:t.stopped)||!1}),XR=(e,r)=>W(xn,t=>{var a;return(a=wn(t,e,r))==null?void 0:a.source}),ZR=e=>W(Ft,r=>{var t;return((t=gg(r,e))==null?void 0:t.threadId)||-1}),QR=e=>W(Ft,r=>{var t,a;return(a=(t=ot(r,e))==null?void 0:t.currentStackFrame)==null?void 0:a.source}),eA=e=>W(Ft,r=>{var t;return(t=ot(r,e))==null?void 0:t.currentStackFrame}),tA=W(Ft,e=>e.map(({channelId:r,threadId:t})=>({id:r,threadId:t}))),rA=e=>W(Ft,r=>{var t;return((t=ot(r,e))==null?void 0:t.stackFrames)||[]}),nA=e=>W(Ft,r=>{var t,a;return((a=(t=ot(r,e))==null?void 0:t.variables)==null?void 0:a.callchain)||[]}),aA=e=>W(Ft,r=>{var t,a;return((a=(t=ot(r,e))==null?void 0:t.variables)==null?void 0:a.expressions)||[]}),oA=(e,r="saved")=>W(xn,t=>{const a=t.find(s=>s.filePath===e);return(a==null?void 0:a.breakpoints[r].offset)||0}),sA=(e,r,t,a)=>W(Ft,s=>{var p;const i=((p=ot(s,e))==null?void 0:p.exceptions)||[],u=r===v.FileFolderType.CLASS,l=u&&a?`${a}.${t}`:t;return(l?i.filter(h=>h.location===l):i).map(h=>({...h,locationLine:u?h.locationLine:h.locationLine+1}))}),Nr=W(e=>e.root,e=>e),na=W(Nr,e=>e.tabs),iA=W(Nr,e=>e.activeTab),cA=W(Nr,e=>e.recent.filter(({type:r})=>r!==v.FileFolderType.DEBUGGER)),vg=W(Nr,({tabs:e,activeTab:r})=>e.find(({path:t})=>t===r)),uA=W(Nr,({tabs:e})=>e.reduce((t,a)=>(a==null?void 0:a.weight)>((t==null?void 0:t.weight)||0)?a:t,null)),lA=W(na,e=>e.filter(({type:r,flags:t})=>r===v.FileFolderType.WEBFORM&&t.enabled===!1).map(({path:r})=>r)),fA=W(na,e=>e.length>0),nn=e=>W(Nr,r=>r.tabs.find(({path:t})=>t===e)),mg=(e,r="")=>W(nn(e),t=>!t||!t.content||typeof t.content=="string"?t==null?void 0:t.content:Re.get(t.content,r)),dA=e=>W(nn(e),r=>r==null?void 0:r.extra),pA=(e,r=t=>t)=>W(mg(e,"components"),t=>r(t||{})),Uu=W(na,e=>e.filter(r=>r.flags.touched)),hA=W(Uu,e=>e.length),gA=W(Ft,e=>e.map(({threadId:r,currentStackFrame:{source:t},tabPath:a})=>({name:Dh(r,t),path:a,type:v.FileFolderType.DEBUGGER,content:t==null?void 0:t.content,flags:{},extra:{source:t}}))),vA=W(e=>e,e=>e.explorer||[]),yg=W(e=>e,e=>e.explorer.find(r=>r.path===v.FolderRootPath.WEBFORMS)),bg=W(e=>e,e=>e.explorer.find(r=>r.path===v.FolderRootPath.METHODS)),_g=W(e=>e,e=>e.explorer.find(r=>r.path===v.FolderRootPath.CLASSES)),mA=W(bg,e=>(e==null?void 0:e.children)||[]),yA=W(yg,e=>(e==null?void 0:e.children)||[]),bA=W(_g,e=>(e==null?void 0:e.children)||[]),_A=W(e=>e.modals,e=>e.list),SA=W(e=>e.roles,e=>qs(e)),EA=W(e=>e.roles,({roles:e})=>e),TA=W(e=>e.roles,({privileges:e})=>e),wA=W(e=>e.roles,({privileges:e})=>Object.values(e).find(({privilege:r})=>r==="guest")),CA=W(e=>e.roles,({flags:e})=>e),xA=W(e=>e.roles,({selectedTab:e})=>e),OA=W(e=>e.roles,({forceLogin:e})=>e),RA=W(e=>e.roles,({date:e})=>e),aa=W(e=>e.settings,e=>e.session),AA=(...e)=>W(aa,r=>e.length>0?Re.pick(r,e):r),PA=e=>W(aa,r=>r[e]),DA=e=>W(aa,r=>["states"].includes(e)?!0:!!r[`features.experimental.${e}`]),Sg=W(e=>e.settings,e=>e.project),FA=W(e=>e.settings,e=>e),Hu=W(e=>e.settings,e=>e.server),IA=W(Hu,e=>e.remoteDebuggerMode),$A=W(Hu,e=>e.qodly),MA=W(aa,e=>e["monaco.zoom"]),LA=W(Sg,e=>e["webforms.i18n"]),NA=W(aa,e=>e["webforms.i18n.current"]),Eg=["rounded-full","rounded-lg","border-gray-400","border-2","bg-red-500","bg-blue-500","bg-indigo-500","bg-transparent","bg-primary-dark","bg-green-500","bg-yellow-400","text-gray-500","text-4xl","text-white","px-4","py-2","primary","info","secondary","success","warning","danger","w-10","w-20","w-40","w-60","w-80","mb-2","mb-3","shadow","shadow-lg","shadow-xl","shadow-2xl"],Tg=Eg.map(e=>({id:Au(),content:"",name:e,parentId:null,scope:v.EWebFormStyleClassScope.THEME})),Gu=e=>W(nn(e),r=>{var t,a;return((a=(t=r==null?void 0:r.content)==null?void 0:t.metadata)==null?void 0:a.styles)||[]}),kA=(e,r)=>W(Gu(e),t=>r.map(a=>{switch(!0){case a===v.EWebFormStyleClassScope.LOCAL:return t.map(s=>({...s,scope:v.EWebFormStyleClassScope.LOCAL}));case a===v.EWebFormStyleClassScope.THEME:return Tg;default:return[]}}).flat()),jA=e=>W(Gu(e),r=>[...r.map(t=>({...t,scope:v.EWebFormStyleClassScope.LOCAL})),...Tg]),BA=W(e=>e,e=>{var r;return[...(((r=e.sharedCSS)==null?void 0:r.styles)||[]).map(t=>({...t,scope:v.EWebFormStyleClassScope.SHARED}))]}),WA=e=>W(nn(e),r=>r==null?void 0:r.flags),UA=e=>W(nn(e),r=>r==null?void 0:r.history),HA=W(vg,e=>{const r=e!=null&&e.history?e.history.active>0:!1,t=e!=null&&e.history?e.history.active<e.history.stack.length-1:!1;return{canUndo:r,canRedo:t}}),qa=W(e=>e.webforms,e=>e),wg=W(qa,e=>(e==null?void 0:e.components)||[]),js=W(qa,e=>e.inspector),GA=W(js,e=>e.css),qA=W(js,e=>e.datasource),Cg=W(qa,e=>e.templates||{data:[]}),YA=W(Cg,e=>e.data||[]),zA=e=>W(wg,r=>r.find(t=>t.id===e)),VA=e=>W(js,r=>r[e]),KA=W(qa,e=>e.datasources.theme),JA=W(e=>e.root,e=>e.clipboard),XA=W(e=>e.catalog,e=>e.sharedDatasources,e=>e.sharedCSS,(e,r,t)=>[e.state,r.state,t.state].every(a=>["loaded","error"].includes(a))),ja={label:"Base",id:"root"},xg=e=>!e.find(r=>Re.isEqual(r,ja)),Og=(e,r=[])=>W(nn(e),t=>{var i,u;let s=((u=(i=t==null?void 0:t.content)==null?void 0:i.metadata)==null?void 0:u.states)||[ja];return xg(s)&&(s=[ja,...s]),s.filter(({id:l})=>!r.includes(l))}),ZA=(e,r=[])=>W(Og(e,r),t=>t.map(({label:a})=>a)),QA=e=>W(nn(e),r=>{var t,a;return((a=(t=r==null?void 0:r.content)==null?void 0:t.metadata)==null?void 0:a.defaultStates)||[]}),eP=W(e=>e,e=>{var r;return((r=e.savedConditions)==null?void 0:r.conditions)||[]});var qu=(e=>(e.SHOW_AFTER_TIMEOUT="show_after_timeout",e.HIDE_AFTER_TIMEOUT="hide_after_timeout",e))(qu||{}),Yu=(e=>(e.NONE="none",e.SAVE_ALL_AND_PROCEED="saved_all_and_proceed",e.PROCEED="proceed",e))(Yu||{}),zu=(e=>(e.AIRY="airy",e.COMPACT="neutral",e))(zu||{}),Vo,tP=new Uint8Array(16);function Rg(){if(!Vo&&(Vo=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!Vo))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Vo(tP)}const rP=/^(?:[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;function Bs(e){return typeof e=="string"&&rP.test(e)}var mt=[];for(var kc=0;kc<256;++kc)mt.push((kc+256).toString(16).substr(1));function Ws(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=(mt[e[r+0]]+mt[e[r+1]]+mt[e[r+2]]+mt[e[r+3]]+"-"+mt[e[r+4]]+mt[e[r+5]]+"-"+mt[e[r+6]]+mt[e[r+7]]+"-"+mt[e[r+8]]+mt[e[r+9]]+"-"+mt[e[r+10]]+mt[e[r+11]]+mt[e[r+12]]+mt[e[r+13]]+mt[e[r+14]]+mt[e[r+15]]).toLowerCase();if(!Bs(t))throw TypeError("Stringified UUID is invalid");return t}var Wp,jc,Bc=0,Wc=0;function nP(e,r,t){var a=r&&t||0,s=r||new Array(16);e=e||{};var i=e.node||Wp,u=e.clockseq!==void 0?e.clockseq:jc;if(i==null||u==null){var l=e.random||(e.rng||Rg)();i==null&&(i=Wp=[l[0]|1,l[1],l[2],l[3],l[4],l[5]]),u==null&&(u=jc=(l[6]<<8|l[7])&16383)}var d=e.msecs!==void 0?e.msecs:Date.now(),p=e.nsecs!==void 0?e.nsecs:Wc+1,h=d-Bc+(p-Wc)/1e4;if(h<0&&e.clockseq===void 0&&(u=u+1&16383),(h<0||d>Bc)&&e.nsecs===void 0&&(p=0),p>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");Bc=d,Wc=p,jc=u,d+=122192928e5;var m=((d&268435455)*1e4+p)%4294967296;s[a++]=m>>>24&255,s[a++]=m>>>16&255,s[a++]=m>>>8&255,s[a++]=m&255;var _=d/4294967296*1e4&268435455;s[a++]=_>>>8&255,s[a++]=_&255,s[a++]=_>>>24&15|16,s[a++]=_>>>16&255,s[a++]=u>>>8|128,s[a++]=u&255;for(var S=0;S<6;++S)s[a+S]=i[S];return r||Ws(s)}function Ag(e){if(!Bs(e))throw TypeError("Invalid UUID");var r,t=new Uint8Array(16);return t[0]=(r=parseInt(e.slice(0,8),16))>>>24,t[1]=r>>>16&255,t[2]=r>>>8&255,t[3]=r&255,t[4]=(r=parseInt(e.slice(9,13),16))>>>8,t[5]=r&255,t[6]=(r=parseInt(e.slice(14,18),16))>>>8,t[7]=r&255,t[8]=(r=parseInt(e.slice(19,23),16))>>>8,t[9]=r&255,t[10]=(r=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=r/4294967296&255,t[12]=r>>>24&255,t[13]=r>>>16&255,t[14]=r>>>8&255,t[15]=r&255,t}function aP(e){e=unescape(encodeURIComponent(e));for(var r=[],t=0;t<e.length;++t)r.push(e.charCodeAt(t));return r}var oP="6ba7b810-9dad-11d1-80b4-00c04fd430c8",sP="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function Pg(e,r,t){function a(s,i,u,l){if(typeof s=="string"&&(s=aP(s)),typeof i=="string"&&(i=Ag(i)),i.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var d=new Uint8Array(16+s.length);if(d.set(i),d.set(s,i.length),d=t(d),d[6]=d[6]&15|r,d[8]=d[8]&63|128,u){l=l||0;for(var p=0;p<16;++p)u[l+p]=d[p];return u}return Ws(d)}try{a.name=e}catch{}return a.DNS=oP,a.URL=sP,a}function iP(e){if(typeof e=="string"){var r=unescape(encodeURIComponent(e));e=new Uint8Array(r.length);for(var t=0;t<r.length;++t)e[t]=r.charCodeAt(t)}return cP(uP(lP(e),e.length*8))}function cP(e){for(var r=[],t=e.length*32,a="0123456789abcdef",s=0;s<t;s+=8){var i=e[s>>5]>>>s%32&255,u=parseInt(a.charAt(i>>>4&15)+a.charAt(i&15),16);r.push(u)}return r}function Dg(e){return(e+64>>>9<<4)+14+1}function uP(e,r){e[r>>5]|=128<<r%32,e[Dg(r)-1]=r;for(var t=1732584193,a=-271733879,s=-1732584194,i=271733878,u=0;u<e.length;u+=16){var l=t,d=a,p=s,h=i;t=St(t,a,s,i,e[u],7,-680876936),i=St(i,t,a,s,e[u+1],12,-389564586),s=St(s,i,t,a,e[u+2],17,606105819),a=St(a,s,i,t,e[u+3],22,-1044525330),t=St(t,a,s,i,e[u+4],7,-176418897),i=St(i,t,a,s,e[u+5],12,1200080426),s=St(s,i,t,a,e[u+6],17,-1473231341),a=St(a,s,i,t,e[u+7],22,-45705983),t=St(t,a,s,i,e[u+8],7,1770035416),i=St(i,t,a,s,e[u+9],12,-1958414417),s=St(s,i,t,a,e[u+10],17,-42063),a=St(a,s,i,t,e[u+11],22,-1990404162),t=St(t,a,s,i,e[u+12],7,1804603682),i=St(i,t,a,s,e[u+13],12,-40341101),s=St(s,i,t,a,e[u+14],17,-1502002290),a=St(a,s,i,t,e[u+15],22,1236535329),t=Et(t,a,s,i,e[u+1],5,-165796510),i=Et(i,t,a,s,e[u+6],9,-1069501632),s=Et(s,i,t,a,e[u+11],14,643717713),a=Et(a,s,i,t,e[u],20,-373897302),t=Et(t,a,s,i,e[u+5],5,-701558691),i=Et(i,t,a,s,e[u+10],9,38016083),s=Et(s,i,t,a,e[u+15],14,-660478335),a=Et(a,s,i,t,e[u+4],20,-405537848),t=Et(t,a,s,i,e[u+9],5,568446438),i=Et(i,t,a,s,e[u+14],9,-1019803690),s=Et(s,i,t,a,e[u+3],14,-187363961),a=Et(a,s,i,t,e[u+8],20,1163531501),t=Et(t,a,s,i,e[u+13],5,-1444681467),i=Et(i,t,a,s,e[u+2],9,-51403784),s=Et(s,i,t,a,e[u+7],14,1735328473),a=Et(a,s,i,t,e[u+12],20,-1926607734),t=Tt(t,a,s,i,e[u+5],4,-378558),i=Tt(i,t,a,s,e[u+8],11,-2022574463),s=Tt(s,i,t,a,e[u+11],16,1839030562),a=Tt(a,s,i,t,e[u+14],23,-35309556),t=Tt(t,a,s,i,e[u+1],4,-1530992060),i=Tt(i,t,a,s,e[u+4],11,1272893353),s=Tt(s,i,t,a,e[u+7],16,-155497632),a=Tt(a,s,i,t,e[u+10],23,-1094730640),t=Tt(t,a,s,i,e[u+13],4,681279174),i=Tt(i,t,a,s,e[u],11,-358537222),s=Tt(s,i,t,a,e[u+3],16,-722521979),a=Tt(a,s,i,t,e[u+6],23,76029189),t=Tt(t,a,s,i,e[u+9],4,-640364487),i=Tt(i,t,a,s,e[u+12],11,-421815835),s=Tt(s,i,t,a,e[u+15],16,530742520),a=Tt(a,s,i,t,e[u+2],23,-995338651),t=wt(t,a,s,i,e[u],6,-198630844),i=wt(i,t,a,s,e[u+7],10,1126891415),s=wt(s,i,t,a,e[u+14],15,-1416354905),a=wt(a,s,i,t,e[u+5],21,-57434055),t=wt(t,a,s,i,e[u+12],6,1700485571),i=wt(i,t,a,s,e[u+3],10,-1894986606),s=wt(s,i,t,a,e[u+10],15,-1051523),a=wt(a,s,i,t,e[u+1],21,-2054922799),t=wt(t,a,s,i,e[u+8],6,1873313359),i=wt(i,t,a,s,e[u+15],10,-30611744),s=wt(s,i,t,a,e[u+6],15,-1560198380),a=wt(a,s,i,t,e[u+13],21,1309151649),t=wt(t,a,s,i,e[u+4],6,-145523070),i=wt(i,t,a,s,e[u+11],10,-1120210379),s=wt(s,i,t,a,e[u+2],15,718787259),a=wt(a,s,i,t,e[u+9],21,-343485551),t=Zr(t,l),a=Zr(a,d),s=Zr(s,p),i=Zr(i,h)}return[t,a,s,i]}function lP(e){if(e.length===0)return[];for(var r=e.length*8,t=new Uint32Array(Dg(r)),a=0;a<r;a+=8)t[a>>5]|=(e[a/8]&255)<<a%32;return t}function Zr(e,r){var t=(e&65535)+(r&65535),a=(e>>16)+(r>>16)+(t>>16);return a<<16|t&65535}function fP(e,r){return e<<r|e>>>32-r}function Us(e,r,t,a,s,i){return Zr(fP(Zr(Zr(r,e),Zr(a,i)),s),t)}function St(e,r,t,a,s,i,u){return Us(r&t|~r&a,e,r,s,i,u)}function Et(e,r,t,a,s,i,u){return Us(r&a|t&~a,e,r,s,i,u)}function Tt(e,r,t,a,s,i,u){return Us(r^t^a,e,r,s,i,u)}function wt(e,r,t,a,s,i,u){return Us(t^(r|~a),e,r,s,i,u)}var dP=Pg("v3",48,iP);const pP=dP;function hP(e,r,t){e=e||{};var a=e.random||(e.rng||Rg)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,r){t=t||0;for(var s=0;s<16;++s)r[t+s]=a[s];return r}return Ws(a)}function gP(e,r,t,a){switch(e){case 0:return r&t^~r&a;case 1:return r^t^a;case 2:return r&t^r&a^t&a;case 3:return r^t^a}}function Uc(e,r){return e<<r|e>>>32-r}function vP(e){var r=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){var a=unescape(encodeURIComponent(e));e=[];for(var s=0;s<a.length;++s)e.push(a.charCodeAt(s))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,u=Math.ceil(i/16),l=new Array(u),d=0;d<u;++d){for(var p=new Uint32Array(16),h=0;h<16;++h)p[h]=e[d*64+h*4]<<24|e[d*64+h*4+1]<<16|e[d*64+h*4+2]<<8|e[d*64+h*4+3];l[d]=p}l[u-1][14]=(e.length-1)*8/Math.pow(2,32),l[u-1][14]=Math.floor(l[u-1][14]),l[u-1][15]=(e.length-1)*8&4294967295;for(var m=0;m<u;++m){for(var _=new Uint32Array(80),S=0;S<16;++S)_[S]=l[m][S];for(var w=16;w<80;++w)_[w]=Uc(_[w-3]^_[w-8]^_[w-14]^_[w-16],1);for(var T=t[0],D=t[1],P=t[2],L=t[3],I=t[4],N=0;N<80;++N){var R=Math.floor(N/20),z=Uc(T,5)+gP(R,D,P,L)+I+r[R]+_[N]>>>0;I=L,L=P,P=Uc(D,30)>>>0,D=T,T=z}t[0]=t[0]+T>>>0,t[1]=t[1]+D>>>0,t[2]=t[2]+P>>>0,t[3]=t[3]+L>>>0,t[4]=t[4]+I>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var mP=Pg("v5",80,vP);const yP=mP,bP="00000000-0000-0000-0000-000000000000";function _P(e){if(!Bs(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}const SP=Object.freeze(Object.defineProperty({__proto__:null,NIL:bP,parse:Ag,stringify:Ws,v1:nP,v3:pP,v4:hP,v5:yP,validate:Bs,version:_P},Symbol.toStringTag,{value:"Module"})),EP=sw(SP);function Vu(e,r){if(!e||!r||!e.length||!r.length)throw new Error("Bad alphabet");this.srcAlphabet=e,this.dstAlphabet=r}Vu.prototype.convert=function(e){var r,t,a,s={},i=this.srcAlphabet.length,u=this.dstAlphabet.length,l=e.length,d=typeof e=="string"?"":[];if(!this.isValid(e))throw new Error('Number "'+e+'" contains of non-alphabetic digits ('+this.srcAlphabet+")");if(this.srcAlphabet===this.dstAlphabet)return e;for(r=0;r<l;r++)s[r]=this.srcAlphabet.indexOf(e[r]);do{for(t=0,a=0,r=0;r<l;r++)t=t*i+s[r],t>=u?(s[a++]=parseInt(t/u,10),t=t%u):a>0&&(s[a++]=0);l=a,d=this.dstAlphabet.slice(t,t+1).concat(d)}while(a!==0);return d};Vu.prototype.isValid=function(e){for(var r=0;r<e.length;++r)if(this.srcAlphabet.indexOf(e[r])===-1)return!1;return!0};var TP=Vu,wP=TP;function Ya(e,r){var t=new wP(e,r);return function(a){return t.convert(a)}}Ya.BIN="01";Ya.OCT="01234567";Ya.DEC="0123456789";Ya.HEX="0123456789abcdef";var CP=Ya;const{v4:Hc}=EP,Ko=CP,Gc="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ",xP="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()*+-./:<=>?@[]^_`{|}~",OP={consistentLength:!0};let qc;const Up=(e,r,t)=>{const a=r(e.toLowerCase().replace(/-/g,""));return!t||!t.consistentLength?a:a.padStart(t.shortIdLength,t.paddingChar)},RP=(e,r)=>{const a=r(e).padStart(32,"0").match(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/);return[a[1],a[2],a[3],a[4],a[5]].join("-")},AP=e=>Math.ceil(Math.log(2**128)/Math.log(e));var Ba=(()=>{const e=(r,t)=>{const a=r||Gc,s={...OP,...t};if([...new Set(Array.from(a))].length!==a.length)throw new Error("The provided Alphabet has duplicate characters resulting in unreliable results");const i=AP(a.length),u={shortIdLength:i,consistentLength:s.consistentLength,paddingChar:a[0]},l=Ko(Ko.HEX,a),d=Ko(a,Ko.HEX),p=()=>Up(Hc(),l,u),h={new:p,generate:p,uuid:Hc,fromUUID:m=>Up(m,l,u),toUUID:m=>RP(m,d),alphabet:a,maxLength:i};return Object.freeze(h),h};return e.constants={flickrBase58:Gc,cookieBase90:xP},e.uuid=Hc,e.generate=()=>(qc||(qc=e(Gc).generate),qc()),e})(),Se=(e=>(e.DATACLASS="dataclass",e.METHOD="method",e.ATTRIBUTE="attribute",e.DATASTORE="datastore",e.SINGLTON="singleton",e.SINGLTON_METHOD="singletonMethod",e))(Se||{});const PP=[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE,Se.METHOD,Se.SINGLTON_METHOD,Se.SINGLTON],_s="guest",Ku=[{key:"read",label:"Read",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE]},{key:"create",label:"Create",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE]},{key:"update",label:"Update",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE]},{key:"drop",label:"Delete",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE]},{key:"describe",label:"Describe",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.ATTRIBUTE,Se.METHOD,Se.SINGLTON,Se.SINGLTON_METHOD]},{key:"execute",label:"Execute",canApplyTo:[Se.DATASTORE,Se.DATACLASS,Se.METHOD,Se.SINGLTON,Se.SINGLTON_METHOD]},{key:"promote",label:"Promote",canApplyTo:[Se.METHOD,Se.SINGLTON_METHOD]}];function ar(e,...r){return Array.from(new Set([...e,...r]))}function Fg(e){const r={},t=new Map;e.forEach(d=>{const p=d.id||Ba.generate();r[p]={...d,id:p,parents:[],includes:ar(d.includes||[]),resources:[]},t.set(d.privilege,p)}),Object.entries(r).forEach(([d,p])=>{const h=p.includes.map(m=>{const _=t.get(m);return _?(r[_].parents=ar(r[_].parents,_),_):""}).filter(Boolean);r[d]={...p,includes:h}});const a=Ig(r),s=new Set;function i(d){s.add(d.id),d.includes=d.includes.filter(p=>!s.has(p))}if(a.forEach(i),a.forEach(d=>d.parents=[]),a.forEach(d=>{d.includes.forEach(p=>r[p].parents.push(d.id))}),Object.values(r).find(({privilege:d})=>d===_s))return r;const l=Ba.generate();return{[l]:{id:l,privilege:_s,includes:[],parents:[],resources:[]},...r}}function Ig(e){return Object.values(e).sort((r,t)=>r.parents.length-t.parents.length)}function Hs(e,r){const t=r[e];let a=[];return t&&t.parents.forEach(s=>{a=ar(a,...Hs(s,r),s)}),a}function Ss(e,r){const t=r[e];let a=[];return t&&t.includes.forEach(s=>{a=ar(a,...Ss(s,r),s)}),a}function DP(e,r){const t=r[e];if(!t)return[];const a=[e,...Hs(e,r),...t.includes];return Object.keys(r).filter(s=>!a.includes(s))}function FP(e,r){return r[e]?Object.keys(r).reduce((a,s)=>s===e?a:{...a,[s]:{...r[s],parents:r[s].parents.filter(i=>i!==e),includes:r[s].includes.filter(i=>i!==e)}},{}):r}function IP(e,r,t){const a=t[e],s=t[r];return!a||!s?t:{...t,[e]:{...t[e],includes:ar(a.includes,r)},[r]:{...t[r],parents:ar(s.parents,e)}}}function $P(e,r,t){const a=t[e],s=t[r];return!a||!s?t:{...t,[e]:{...t[e],includes:t[e].includes.filter(i=>i!==r)},[r]:{...t[r],parents:t[r].parents.filter(i=>i!==e)}}}function $g(e,r){v.validateName(e),Object.entries(r).forEach(([,{privilege:a}])=>{if(e.toLowerCase()===a.toLowerCase())throw new Error(`There's already a Privilege with the name ${e}`)});const t=Ba.generate();return{[t]:{id:t,privilege:e,includes:[],parents:[],resources:[]},...r}}function MP(e,r,t,a,s){let i=$g(e,s);const u=Object.entries(i).find(([,l])=>l.privilege===e);return u?(i=kg(u[1].id,r,t,a,i),i):s}function LP(e,r,t){if(!e)throw new Error("Please enter a name");if(!t[r])throw new Error("Invalid privilege");return Object.entries(t).forEach(([,{privilege:a,id:s}])=>{if(e.toLowerCase()===a.toLowerCase()&&r!==s)throw new Error(`There's already a Privilege with the name ${e}`)}),{...t,[r]:{...t[r],privilege:e}}}function NP(e,r){return e.map(t=>kr(t,r))}function kr(e,r){return r[e]?r[e]:null}function Mg({applyTo:e,type:r,...t}){return Object.entries(t).reduce((a,[s,i])=>{const u=Re.find(Ku,["key",s]);return!u||!u.canApplyTo.includes(r)||(typeof i=="string"?i.split(","):i).forEach(d=>{a[d]=ar(a[d]||[],s)}),a},{})}const hu=(e,r=!1)=>["read","create","update","delete"].includes(e.toLowerCase())?`All ${r?"dataclasses and ":""}attributes have the '${e.toLowerCase()}' permission`:e.toLowerCase()==="execute"?`All functions defined ${r?"through the model (DataStore, Dataclasses, Entity selections, Entities) have the execute permission":"on this Dataclass, Entity selection class, Entity class have the execute permission"}`:`All ${r?"dataclasses, ":""}attributes and functions have the '${e.toLowerCase()}' permission`;function Ju(e){return{permissions:Ku.filter(({canApplyTo:r})=>r.includes(e.type)).map(({key:r,label:t})=>{const a={name:r,from:[]};switch(e.type){case Se.DATASTORE:return{...a,info:hu(t,!0)};case Se.DATACLASS:return{...a,info:hu(t)};default:return a}}),resource:e.applyTo,type:e.type}}function Lg(e,r){const t=Ng(r),a={};return e.filter(({type:s})=>PP.includes(s)).forEach(s=>{const i=Mg(s);Object.entries(i).forEach(([u,l])=>{var h;const d=(h=t[u])==null?void 0:h.id;if(!d)return;a[d]=a[d]||{...r[d]};let p=Re.find(a[d].resources,{resource:s.applyTo,type:s.type});p||(p=Ju(s),a[d].resources.push(p)),p.permissions=p.permissions.map(m=>({...m,checked:m.checked||l.includes(m.name)}))})}),{...r,...a}}function Ng(e){return Object.values(e).reduce((r,t)=>({...r,[t.privilege]:t}),{})}function Gs(e){var t;const r=Fg(e.privileges||[]);return{forceLogin:e==null?void 0:e.forceLogin,privileges:Lg(((t=e.permissions)==null?void 0:t.allowed)||[],r),roles:(e.roles||[]).map(({id:a=Ba.generate(),role:s,privileges:i=[]})=>({id:a,role:s,privileges:ar(i).map(u=>{var l;return(l=Object.values(r).find(({privilege:d})=>d===u))==null?void 0:l.id}).filter(Boolean)})).reduce((a,s)=>({...a,[s.id]:{...s}}),{})}}function qs(e){const r=Object.values(e.privileges).filter(({includes:a})=>a.length===0).map(({id:a})=>a),t=[...r,...r.map(a=>Hs(a,e.privileges).reverse())].flat().filter((a,s,i)=>i.indexOf(a)===s).map(a=>e.privileges[a]);return{forceLogin:e.forceLogin,permissions:{allowed:Object.values(e.privileges).reduce((a,s)=>(s.resources.forEach(({permissions:i,resource:u,type:l})=>{let d=Re.find(a,{applyTo:u,type:l});d||(d={applyTo:u,type:l},a.push(d)),i.forEach(({name:p,checked:h})=>{h&&d&&(d[p]=d[p]||[],d[p].push(s.privilege))})}),a),[])},privileges:t.filter(({privilege:a})=>a!==_s).map(({id:a,includes:s,privilege:i})=>({id:a,privilege:i,includes:s.map(u=>e.privileges[u].privilege)})),roles:Object.values(e.roles).map(a=>({...a,privileges:a.privileges.map(s=>{var i;return(i=e.privileges[s])==null?void 0:i.privilege}).filter(Boolean)}))}}function kP(e,r){const t=r[e],a={children:[],links:[],parents:[],selected:e};if(!t)return a;function s(l,d,p=[]){const h=l.reduce((m,_)=>[...m,...r[_][d]],[]);return h.length===0?p:(p.push(h),s(h,d,p))}function i(l){const d=[],p=[];for(let h=l.length-1;h>=0;h-=1){const m=l[h].filter(_=>d.includes(_)?!1:(d.push(_),!0));m.length>0&&p.unshift(ar(m))}return p}function u(l,d){const p=[];return l.reduce((h,m)=>(m.forEach(_=>{r[_][d==="parents"?"includes":"parents"].forEach(w=>{p.includes(w)&&h.push(d==="parents"?{source:_,target:w}:{source:w,target:_})}),p.push(_)}),h),[])}return a.children=s([e],"includes"),a.children=i(a.children),a.parents=s([e],"parents"),a.parents=i(a.parents),a.links=[...u([[e],...a.parents],"parents"),...u([[e],...a.children],"includes")],a}function jP(e,r,t){const a=kr(e,t);if(!a||Re.find(a.resources,{resource:r.applyTo,type:r.type}))return t;const s={...a,resources:[...a.resources,Ju(r)]};return{...t,[e]:s}}function BP(e,r,t){const a=kr(e,t);if(!a)return t;const s={...a,resources:a.resources.filter(({resource:i,type:u})=>i!==r.applyTo||u!==r.type)};return{...t,[e]:s}}function WP(e,r){const t=kr(e,r);if(!t)return r;const a={...t,resources:t.resources.filter(s=>s.permissions.some(i=>i.from.length)).map(s=>({...s,permissions:s.permissions.map(i=>({...i,checked:!1}))}))};return{...r,[e]:a}}function kg(e,r,t,a,s){const i=kr(e,s);if(!i)return s;const l=Re.find(i.resources,{type:t,resource:r})?{...i,resources:i.resources.map(d=>d.type===t&&d.resource===r?{...d,permissions:d.permissions.map(p=>p.name===a?{...p,checked:!p.checked,from:[]}:p)}:d)}:{...i,resources:[...i.resources,{type:t,resource:r,permissions:Ku.filter(d=>d.canApplyTo.includes(t)).map(d=>({from:[],name:d.key,checked:d.key===a,info:hu(d.key,t===Se.DATASTORE)}))}]};return{...s,[e]:l}}function UP(e,r,t,a){const s=kr(e,a);if(!s)return a;const u=Re.find(s.resources,{type:r.type,resource:r.resource})?{...s,resources:s.resources.map(l=>l.type===r.type&&l.resource===r.resource?{...l,permissions:r.permissions.map(d=>d.name===t.name?{...d,checked:!d.checked,from:[]}:d)}:l)}:{...s,resources:[...s.resources,{...r,permissions:r.permissions.map(l=>({...l,checked:t.name===l.name,from:[]}))}]};return{...a,[e]:u}}function HP(e,r){var d;const t=jg(e,r)||[],a=((d=kr(e,r))==null?void 0:d.resources)||[],u=([...t,...a].filter(({type:p})=>p===Se.METHOD)||[]).map(({resource:p})=>p);return Object.entries(r).reduce((p,[h,{resources:m}])=>(m.filter(({resource:_,type:S})=>S===Se.METHOD&&u.includes(_)).forEach(({permissions:_,resource:S})=>{var T;((T=_.find(({name:D})=>D==="promote"))==null?void 0:T.checked)&&(p[S]=ar(p[S]||[],h))}),p),{})}function jg(e,r){var u;const t=kr(e,r);if(!t)return[];const a=(u=Object.values(r).find(l=>l.privilege===_s))==null?void 0:u.id;return(a&&a!==e?ar(Ss(e,r),a):Ss(e,r)).reduce((l,d)=>(r[d].resources.forEach(h=>{if(h.permissions.filter(({checked:S})=>S).length===0)return;const _=Re.find(l,{type:h.type,resource:h.resource});if(!_){l.push({...h,permissions:h.permissions.map(S=>({...S,from:S.checked?[d]:[],checked:!1}))});return}_.permissions=_.permissions.map((S,w)=>{let{from:T=[]}=S;return h.permissions[w].checked&&!T.includes(d)&&(T=[...T,d]),{...S,from:T,checked:S.checked}})}),l),Re.clone(t.resources.map(l=>({...l,permissions:l.permissions.map(({checked:d,...p})=>({...p,checked:!!d}))}))))}const GP=e=>e.reduce((r,t)=>({...r,[t.id]:{...t}}),{}),qP=(e,r)=>r[e]?Object.values(r).reduce((t,a)=>e===a.id||a.role===""?t:{...t,[a.id]:a},{}):r,YP=(e,r,t)=>t[e]?Object.values(t).reduce((a,s)=>e===s.id?{...a,[s.id]:{...s,name:r}}:{...a,[s.id]:s},{}):t,zP=(e,r)=>{const t={id:e,role:"",privileges:[]};return{...r,[t.id]:t}},VP=(e,r)=>{if(v.validateName(e.role),Object.values(r).find(a=>a.role===e.role))throw new Error(`a role with the name ${e.role} already exists`);return Object.values(r).reduce((a,s)=>e.id===s.id?{...a,[e.id]:e}:{...a,[s.id]:s},{})},KP={list:[]},Hp=(e,r)=>e.list.filter(t=>t.id!==r),Bg=Yt({name:"modals",initialState:KP,reducers:{createModal:(e,r)=>{e.list.push(r.payload)},editModal:(e,r)=>{const{id:t,...a}=r.payload,s=e.list.find(v.byId(t));s&&Object.assign(s,{...a})},removeModal:(e,r)=>{const t=r.payload;e.list=Hp(e,t)},closeModal:(e,r)=>{const{id:t,reason:a}=r.payload;if(a){const s=e.list.find(i=>i.id===t);s&&(s.closeReason=a,s.isOpen=!1)}else e.list=Hp(e,t)}}}),{createModal:Wg,removeModal:Ug,closeModal:JP,editModal:XP}=Bg.actions,or=Q("modals/open",async(e,{dispatch:r})=>{const t=Hv(),{type:a=v.ModalType.ALERT}=e,s=Au();switch(r(Wg({id:s,type:a,isOpen:!0,...e})),a){case v.ModalType.CONFIRM:return new Promise(i=>{const u=t.subscribe(()=>{var p;const{modals:l}=t.getState(),d=l.list.find(h=>h.id===s);if(d&&!d.isOpen){const h=d.closeReason===v.ModalCloseReason.CONFIRMED,m=Re.entries((p=d.views)==null?void 0:p.toggles).reduce((_,S)=>({..._,[S[0]]:S[1].value}),{});r(Ug(s)),u(),i({confirmed:h,options:m})}})});default:return{}}}),Hg=()=>v.getFileContent({name:v.ROLES_TAB_PATH}),Gg="Roles & Privileges",Es=Q("roles/fetchRoles",async(e,{dispatch:r,rejectWithValue:t})=>{var i;let a;try{a=await Hg()}catch(u){if(!Array.isArray((i=u==null?void 0:u.data)==null?void 0:i.__ERROR))return t("Error while loading the roles");a={name:v.ROLES_TAB_PATH,date:new Date().toISOString(),content:{permissions:{allowed:[]},privileges:[],roles:[]}}}const s={name:Gg,type:v.FileFolderType.ROLES,date:a.date,view:{panel:{isOpen:!1,type:"",current:""}},path:v.ROLES_TAB_PATH,flags:{},extra:{editor:{key:"editors:roles"}},content:{}};return r(Dt(s)),{...a,content:Gs(a.content)}}),qg=Q("roles/fetchRolesChanges",async(e,{getState:r})=>{const{tabs:t}=r().root;if(t.find(s=>s.path===v.ROLES_TAB_PATH)){const{date:s}=r().roles;if(s&&await Xu(s))return{old:!0}}return{}}),Xu=async e=>{if(!e)return!1;try{const r=await Hg();if(r.date){const t=new Date(e),a=new Date(r.date);if(t>a)return!0}}catch(r){if(!Array.isArray(r==null?void 0:r.data.__ERROR))throw r}return!1},gu=Q("roles/saveRoles",async(e,{getState:r,rejectWithValue:t,dispatch:a})=>{try{const{flags:s,date:i}=r().roles;if(s.old||await Xu(i)){const{confirmed:d}=await a(or({title:Gg,message:"New content has been found on the server. Are you sure you want to continue?",type:v.ModalType.CONFIRM,icon:"FdSave"})).unwrap();if(!d)return t({old:!0})}return await v.setFileContent({name:v.ROLES_TAB_PATH,content:qs(e)})}catch{return t("Error while loading the roles")}}),Yg=Yt({name:"roles",initialState:()=>{const{roles:e}=Xn(),{roles:r={},privileges:t={},flags:a={touched:!1},date:s,selectedTab:i="roles"}=e||{};return{flags:a,roles:r,privileges:t,date:s,selectedTab:i}},reducers:{updatePrivileges:(e,r)=>{e.privileges=r.payload,e.flags.touched=!0},updateRoles:(e,r)=>{e.roles=r.payload,e.flags.touched=!0},updateRolesAndPrivileges:(e,r)=>{e.roles=r.payload.roles,e.privileges=r.payload.privileges},toggleTab:(e,r)=>{e.selectedTab=r.payload},toggleForceLogin:(e,r)=>{e.forceLogin!==r.payload&&(e.forceLogin=r.payload,e.flags.touched=!0)},setRolesContent(e,r){const{content:t,flags:a={},...s}=r.payload,i=Gs(t),u={...e.flags,...a};return{...e,...i,...s,flags:u}}},extraReducers(e){e.addCase(Es.fulfilled,(r,t)=>{const{content:a,date:s}=t.payload;r={...r,...a,date:s}}).addCase(Es.rejected,r=>({...r,roles:{},privileges:{},flags:{touched:!1},date:void 0})).addCase(gu.fulfilled,(r,t)=>({...r,flags:{...r.flags,confirmed:!0,touched:!1,old:!1},date:t.payload.date})).addCase(gu.rejected,(r,t)=>u1.isString(t.payload)?r:{...r,flags:{...r.flags,...t.payload}}).addCase(qg.fulfilled,(r,t)=>({...r,flags:{...r.flags,...t.payload}})).addCase(Vn.fulfilled,(r,t)=>{!t.payload||t.payload.path!==v.ROLES_TAB_PATH||(r.flags.touched=!1,r.flags.old=!1)}).addCase(al.fulfilled,(r,t)=>{t.meta.arg!==v.ROLES_TAB_PATH||!t.payload||(r.flags.touched=!1,r.flags.old=!1)})}}),{updatePrivileges:zg,updateRoles:Vg,setRolesContent:Zu,toggleTab:ZP,toggleForceLogin:QP,updateRolesAndPrivileges:Qu}=Yg.actions,eD=Yg.reducer,el=Q("settings/fetch",async()=>await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:v.SETTINGS_TAB_PATH,content:!0,as:"json"})),Kg=Q("settings/app",v.getAppSettings),tD=Mu(),Gp={session:{"studio.tips":!0,"studio.notifications":!0,"studio.enablePreview":!1,"studio.tipsBaseUrl":"https://raw.githubusercontent.com/4d/Web-studio-TIPS/gh-build","webforms.tooltip.behavior":qu.SHOW_AFTER_TIMEOUT,"webforms.tooltip.timeout":3e3,"webforms.renderer.showPopOver":!0,"webforms.renderer.showUnsavedPopOver":!0,"webforms.renderer.unsavedPopOverChoice":Yu.NONE,"welcometour.active":!0,"webforms.properties.advanced-mode":!1,"monaco.zoom":0,"webforms.i18n.current":""},project:{"webforms.renderer.indexPage":"","webforms.display-mode":"neutral","webforms.i18n":{supported:[],primary:""}},server:{projectOpened:!1,remoteDebuggerMode:v.RemoteDebuggerMode.DISABLED,baseUrl:"",qodly:!0,urls:{renderer:"/$lib/renderer/",debugger:"",lsp:""},isRestActive:!0}},rD={...Gp,session:{...Gp.session,...tD},welcometour:{}},Jg=Yt({name:"settings",initialState:rD,reducers:{setSetting(e,r){const{path:t,settingsKey:a,value:s}=r.payload;e[t][a]=s},setSettings(e,r){const{path:t,value:a}=r.payload;e[t]={...e[t],...a}},setSettingsAsText(e,r){const{path:t,settings:a}=r.payload;e[t]=a}},extraReducers(e){e.addCase(el.fulfilled,(r,t)=>{r.project={...r.project,...t.payload.content}}),e.addCase(Kg.fulfilled,(r,t)=>{r.server=t.payload,r.server.qodly&&(r.project["webforms.display-mode"]="airy")})}}),{setSetting:vu,setSettings:Ys,setSettingsAsText:nD}=Jg.actions,aD=Jg.reducer,mu=e=>{const r=["folder","file"];return e.sort((t,a)=>t.type===a.type?t.name.localeCompare(a.name):r.indexOf(t.type)-r.indexOf(a.type))},Ae=(e,r)=>e.reduce((t,a)=>a.path===r.path&&a.type===r.type?[...t,r]:a.children?[...t,{...a,children:mu(Ae(a.children,r))}]:[...t,a],[]),lt=(e,r)=>e.reduce((t,a)=>t||(a.path===r?a:a.children?lt(a.children,r):null),null),Xg=[{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.FILE,ext:"json",path:"roles",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:"model",error:null,flags:{},config:{editor:{key:"editors:model"},supportedEditors:[{key:"editors:code",config:{language:"json",theme:"vs-dark"}}]}},{name:"Settings",type:v.FileFolderType.FILE,ext:"json",path:"qodlyApp",error:null,flags:{},config:{editor:{key:"editors:settings"}},isRoot:!0}],oD=Mu(),sD=!!Re.get(oD,"features.experimental.reports");sD&&Xg.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 Zg=Yt({name:"explorer",initialState:Xg,reducers:{renameClassesFolder:(e,r)=>{const{payload:t}=r,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 t.forEach(({newName:u,prevName:l})=>{var d;a.children=(d=a.children)==null?void 0:d.map(p=>{var h;return p.path.endsWith("[<QODLY_ID>]")&&p.name===l?{...p,name:u,path:`Classes/${u}___[<QODLY_ID>]`,children:(h=p.children)==null?void 0:h.map(m=>{var _;return{...m,path:m.path.replace(l,u),info:{...m.info,filename:i((_=m.info)==null?void 0:_.kind,u),dataclass:u}}})}:p})}),e[s]=a,e},removeClassesFolder:(e,r)=>{const{payload:t}=r;if(!t||t.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 t.forEach(u=>{var d,p;const l=(d=a.children)==null?void 0:d.find(h=>h.name===u);if(l){let h=(p=l.children)==null?void 0:p.filter(m=>{var _;return(_=m.info)==null?void 0:_.exist});h&&(h==null?void 0:h.length)>0&&(h=h.map(m=>{var _;return{...m,name:(_=m.info)==null?void 0:_.filename,info:{...m.info,kind:"userClass"}}}),i=i.concat(h))}}),a.children=a.children.filter(u=>!t.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,r)=>{const{payload:t}=r;if(t.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)}),t.forEach(u=>{var l;a.children=(l=a.children)==null?void 0:l.filter(d=>{var h,m;const p=(h=u.children)==null?void 0:h.find(_=>{var S;return((S=_.info)==null?void 0:S.filename)===d.name});return p&&(u.children=(m=u.children)==null?void 0:m.map(_=>{var S;return((S=_.info)==null?void 0:S.filename)===d.name?{..._,info:{..._.info,exist:!0}}:_})),!p})}),t.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,r)=>(e=Ae(e,{...r.payload,flags:{...r.payload.flags,expanded:!r.payload.flags.expanded}}),e),expandFolder:(e,r)=>(e=Ae(e,{...r.payload,flags:{...r.payload.flags,expanded:!0}}),e),openAddFileInput:(e,r)=>Ae(e,{...r.payload,flags:{...r.payload.flags,adding:!0}}),addNewFile:(e,r)=>{const{parent:t,child:a}=r.payload;return Ae(e,{...t,children:[a,...t.children||[]]})},removeFile:(e,r)=>{const{parent:t,child:a}=r.payload;return Ae(e,{...t,children:t.children.filter(s=>s.path!==a.path)})},refreshFile:(e,r)=>{const{parent:t,child:a}=r.payload,s=(t.children||[]).filter(i=>i.path!==a.path&&!a.error);return Ae(e,{...t,children:[a,...s]})},setFolderChildren:(e,r)=>{const t=lt(e,r.payload.parentPath);return t?Ae(e,{...t,children:r.payload.children}):e}},extraReducers:e=>{e.addCase(zn.pending,(r,t)=>{const{file:a,newname:s}=t.meta.arg,i=lt(r,a.path);if(!i)return r;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(r,{...i,flags:{...i.flags,loading:!0}})}),e.addCase(zn.fulfilled,(r,t)=>{const{meta:{arg:{file:a}},payload:s}=t,i=lt(r,a.path);if(!i)return r;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}return Ae(r,{...i,flags:{...i.flags,loading:!1}})}),e.addCase(zn.rejected,(r,t)=>{const{file:a}=t.meta.arg,s=lt(r,a.path);return s?Ae(r,{...s,flags:{...s.flags,loading:!1}}):r}),e.addCase(tn.pending,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,flags:{...s.flags,loading:!0}}):r}),e.addCase(tn.fulfilled,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,children:mu(t.payload),flags:{...s.flags,loading:!1,cached:!0,expanded:!0},error:null}):r}),e.addCase(tn.rejected,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,error:{message:t.payload},flags:{...s.flags,loading:!1,cached:!0,expanded:!0}}):r}),e.addCase(Da.pending,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,flags:{...s.flags,loading:!0}}):r}),e.addCase(Da.fulfilled,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,children:mu(t.payload),flags:{...s.flags,loading:!1,cached:!0,expanded:!1},error:null}):r}),e.addCase(Da.rejected,(r,t)=>{const a=t.meta.arg,s=lt(r,a);return s?Ae(r,{...s,error:{message:t.payload},flags:{...s.flags,loading:!1,cached:!0,expanded:!1}}):r}),e.addCase(ts.pending,(r,t)=>{const{fileName:a,parentNode:s,path:i,type:u}=t.meta.arg;return Ae(r,{...s,children:[{name:a,path:`${i}/${a}`,type:u,error:null,flags:{loading:!0},config:{}},...s.children]})}),e.addCase(ts.fulfilled,(r,t)=>{const{path:a,fileName:s,type:i}=t.meta.arg,u=v.getFileExtentionFromType(i),{editor:l,supportedEditors:d}=xt(`${a}${u?`.${u.toLowerCase()}`:""}`);return Ae(r,{name:s,path:`${a}/${s}`,type:i,error:null,flags:{loading:!1},config:{editor:l,supportedEditors:d}})}),e.addCase(ts.rejected,(r,t)=>{const{path:a,fileName:s,type:i}=t.meta.arg;return Ae(r,{name:s,path:`${a}/${s}`,type:i,error:{message:t.payload},flags:{loading:!1},config:{}})}),e.addCase(rs.pending,(r,t)=>{const{node:a,parentNode:s}=t.meta.arg;return Ae(r,{...s,children:[{name:`${a.name}_copy`,path:`${a.path}/${a.name}_copy`,type:a.type,error:null,flags:{loading:!0},permissions:{canRename:!0,canDelete:!0}},...s.children]})}),e.addCase(rs.fulfilled,(r,t)=>{const{node:a}=t.payload,{node:{path:s,ext:i}}=t.meta.arg,{editor:u,supportedEditors:l}=xt(`${s}${i?`.${i.toLowerCase()}`:""}`);return Ae(r,{name:`${a.name}`,path:`${s}/${a.name}`,type:a.type,error:null,flags:{loading:!1},config:{editor:u,supportedEditors:l}})}),e.addCase(rs.rejected,(r,t)=>{const a=t.payload,{node:s}=t.meta.arg;return Ae(r,{name:`${s.name}_copy`,path:`${s.path}/${s.name}_copy`,type:s.type,error:{message:a},flags:{loading:!1},config:{}})}),e.addCase(Ia.pending,()=>{}),e.addCase(Ia.fulfilled,(r,t)=>{var m;const{draggedNode:a,newLocation:s}=t.meta.arg,i=Yh(a.path),u=lt(r,i),l=lt(r,s.path),d=(m=u==null?void 0:u.children)==null?void 0:m.filter(_=>_.path!==a.path),p=s.path.split("/").length,h=a.path.split("/").length;return p>=h?(r=Ae(r,{...u,children:d}),r=Ae(r,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}})):(r=Ae(r,{...l,children:[{...a,path:`${l.path}/${a.name}`},...l!=null&&l.children?l.children:[]],flags:{...l.flags,expanded:!0}}),r=Ae(r,{...u,children:d})),r}),e.addCase(Ia.rejected,()=>{v.toastSubject.next({message:"Error moving file",kind:"danger"})}),e.addCase(Yn.pending,(r,t)=>{var T;const{fileName:a,parentNode:s,path:i,type:u,qodly:l}=t.meta.arg,d=v.getFileExtentionFromType(u,l),p=`${i}/${a}${d?`.${d.toLowerCase()}`:""}`,{editor:h,supportedEditors:m}=xt(p);switch(u){case v.FileFolderType.CLASS:case v.FileFolderType.METHOD:v.lspSubject.next({action:v.LspActions.WILL_CREATE,payload:{filePath:p}});break}const S=[...(T=s.children)==null?void 0:T.filter(D=>D.path!==`${i}/${a}`),{name:a,path:`${i}/${a}`,type:u===v.FileFolderType.CLASS?u:v.FileFolderType.FILE,error:null,flags:{loading:!0},config:{editor:h,supportedEditors:m},ext:d,date:new Date().toISOString(),info:{exist:!0,kind:u===v.FileFolderType.CLASS?"userClass":""}}],w=Ae(r,{...s,children:S});return Re.merge(r,w)}),e.addCase(Yn.fulfilled,(r,t)=>{const{fileName:a,path:s,type:i,qodly:u}=t.meta.arg,l=v.getFileExtentionFromType(i,u),d=`${s}/${a}${l?`.${l.toLowerCase()}`:""}`,{editor:p,supportedEditors:h}=xt(d),m=Ae(r,{name:a,path:`${s}/${a}`,type:v.FileFolderType.FILE,error:null,flags:{},config:{editor:p,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 r=m,r}),e.addCase(Yn.rejected,(r,t)=>{const{fileName:a,path:s,type:i}=t.meta.arg,u=v.getFileExtentionFromType(i),{editor:l,supportedEditors:d}=xt(`${s}${u?`.${u.toLowerCase()}`:""}`);return r=Ae(r,{name:a,path:`${s}/${a}`,type:v.FileFolderType.FILE,error:{message:"Failed creating file"},flags:{},config:{editor:l,supportedEditors:d},ext:u,date:new Date().toISOString()}),r}),e.addMatcher(dh(Fa),(r,t)=>{const a=lt(r,t.meta.arg.file.path.split(".")[0]);return a&&(r=Ae(r,{...a,flags:{...a.flags,loading:!0}})),r}),e.addMatcher(hh(Fa),(r,t)=>{const a=lt(r,t.meta.arg.file.path.split(".")[0]),s=a!=null&&a.info?{...a.info,exist:!0}:void 0;return a&&(r=Ae(r,{...a,flags:{...a.flags,loading:!1},info:s})),r}),e.addMatcher(ph(Fa),(r,t)=>{const a=lt(r,t.meta.arg.file.path.split(".")[0]);return a&&(r=Ae(r,{...a,flags:{...a.flags,loading:!1}})),v.toastSubject.next({message:"Failed to open file, try again",kind:"danger"}),r})}}),{toggleExpandFolder:iD,expandFolder:cD,openAddFileInput:uD,addNewFile:Qg,refreshFile:lD,removeFile:yu,setFolderChildren:fD,addClassesFolder:dD,removeClassesFolder:pD,renameClassesFolder:hD}=Zg.actions;function ev(e,r){switch(e){case v.FileFolderType.WEBFORMS:{const t={metadata:{v:"1.0",datasources:[],styles:[]},components:{ROOT:{parent:"",type:{resolvedName:"Container"},isCanvas:!0,props:{airyMode:!1,className:"bg-white h-full w-full px-6",classNames:[],events:[]},displayName:"App",custom:{},hidden:!1,nodes:[],linkedNodes:{}}}};return r["webforms.display-mode"]===zu.AIRY&&(t.components.ROOT.props.airyMode=!0),t}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 h-full w-full px-6"},displayName:"Document",custom:{},parent:"",hidden:!1,nodes:[],linkedNodes:{}}}}]};case v.FileFolderType.METHODS:return`//%attributes = {}
99
- `;default:return""}}function tv(e,r,t){switch(console.log(e,r,t,"getting the file name and stuff, you kn ow"),r){case v.FileFolderType.MOBILEFORM:return`${e}.MForm`;case v.FileFolderType.WEBFORM:return`${e}.WebForm`;case v.FileFolderType.REPORT:return`${e}.QoDoc`;case v.FileFolderType.METHOD:case v.FileFolderType.CLASS:return`${e}.${t?"4qs":"4dm"}`;default:return e}}function gD(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 rv(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 vD=Q("files/tryEditMethod",async({method:e},{dispatch:r})=>{const t=e.filePath.split("/"),[a]=t[1].split("."),{editor:s}=xt(e.filePath);return await r(tl({file:{name:a,path:e.filePath,date:new Date().toISOString(),type:v.FileFolderType.CLASS,editor:s},line:e.startingLine+1})).unwrap()}),bu=Q("explorer/createModelFiles",async(e,{dispatch:r,getState:t})=>{var h;const a=t(),s=v.FolderRootPath.CLASSES,i=a.settings.server.qodly,u=lt(a.explorer,s);if(!u)return;await r(tn(s));const d=((h=t().explorer.find(m=>m.name===s))==null?void 0:h.children)||[];let p=[{content:"",name:""}];if(e.type==="dataclass"&&!e.toCreate){const{className:m,collectionName:_}=e;p=[{...En().dataclass({name:m,qodly:i})},{...En().collection({name:_,qodly:i})},{...En().entity({name:m,qodly:i})}]}else if(e.type==="dataclass"&&e.toCreate){const{className:m,collectionName:_}=e;p=[{...En()[e.toCreate]({name:m||_,qodly:i})}]}else p=[{...En().model({name:"DataStore",qodly:i})}];p=p.filter(m=>!d.find(({name:_,ext:S,info:{exist:w=!0}={}})=>_===m.name&&S===(i?"4qs":"4dm")&&w)),await Promise.all(p.map(async({name:m,content:_})=>{await r(Yn({type:v.FileFolderType.CLASS,path:s,fileName:m,parentNode:u,content:_,qodly:a.settings.server.qodly}))})),await r(tn(s))}),tn=Q("explorer/fetchFolderContent",async(e,{rejectWithValue:r,getState:t})=>{const a=t();try{const s=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e});return a.catalog.state!=="loaded"?[]:e==="Classes"?ou(a,s):s.map(i=>{const u=`${e}/${i.name}`,{editor:l,supportedEditors:d}=xt(`${u}${i.ext?`.${i.ext.toLowerCase()}`:""}`);return{name:i.name,size:i.size,type:i.type,date:`${i.date}`,flags:{},error:null,path:u,ext:i.ext,config:i.type==="folder"?{}:{editor:l,supportedEditors:d}}})}catch{return r("Failed loading file content please Reload"),e==="Classes"?ou(a,[]):[]}},{getPendingMeta:()=>{}}),Da=Q("explorer/fetchFolderContentWithoutExpanding",async(e,{rejectWithValue:r})=>{try{return(await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e})).map(a=>{const s=`${e}/${a.name}`,{editor:i,supportedEditors:u}=xt(`${s}${a.ext?`.${a.ext.toLowerCase()}`:""}`);return{name:a.name,size:a.size,type:a.type,date:`${a.date}`,flags:{},error:null,path:s,ext:a.ext,config:a.type==="folder"?{}:{editor:i,supportedEditors:u}}})}catch{return r("Failed loading file content please Reload")}},{getPendingMeta:()=>{}});function mD(e){const r=e.split(".");return r.pop(),{name:r.join("."),ext:e.split(".")[e.split(".").length-1]}}const yD=Q("explorer/uploadFileAndGetResponse",async e=>{const r=e.type.includes("image/")?"$rawPict=true":"$binary=true";try{const t=await fetch(`/rest/$upload?${r}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return{status:t.status,data:await t.json()}}catch{return{status:500,data:null}}}),bD=Q("explorer/uploadFile",async({file:e,path:r,parentNode:t},{dispatch:a})=>{const{editor:s,supportedEditors:i}=xt(r),{name:u,ext:l}=mD(e.name);a(Qg({parent:t,child:{name:u,path:`${r}/${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=${r}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return d.status>=300?(a(yu({parent:t,child:{name:u,path:`${r}/${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(tn(t.path)),{status:d.status,fileName:e.name}}catch{return a(yu({parent:t,child:{name:u,path:`${r}/${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}}}),Yn=Q("explorer/createNewFile",async({fileName:e,type:r,path:t,parentNode:a,content:s},{dispatch:i,rejectWithValue:u,getState:l})=>{const{server:{qodly:d},project:p}=l().settings;try{const h=await v.setFileContent({name:tv(e,r,d),content:s||ev(r,p),path:t,asText:[v.FileFolderType.CLASS,v.FileFolderType.METHOD].includes(r)});return a.error&&(a.flags.expanded?await i(tn(a.path)):await i(Da(a.path))),{qodly:d,file:h,parentNode:a}}catch{return u("failed to create folder")}});function nv(e,r){const{qodly:t=!0,withExtension:a=!0}=r||{},s=v.getFileExtentionFromType(e.type,t);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 _D=Q("explorer/createNewFileAndOpen",async(e,{dispatch:r,getState:t})=>{const a=await r(Yn(e)).unwrap(),{qodly:s}=t().settings.server;if(a){const{file:i}=a,u=nv(i,{withExtension:!1,qodly:s}),{editor:l}=xt(u);await r(Fa({file:{name:e.fileName,type:i.type,path:u,editor:l,date:new Date().toISOString()}}))}}),ts=Q("explorer/createNewNode",async({fileName:e,path:r,parentNode:t},{rejectWithValue:a})=>{try{return{file:await v.createFolder({verb:v.DesignerRequestVerb.CREATE_FOLDER,path:`${r}/${e}`,recursive:!0}),parentNode:t}}catch{return v.toastSubject.next({message:"failed to create folder",kind:"danger"}),a("failed to create folder")}}),zs=async(e,r={})=>{var t;try{const a=e.path.split(".").at(-1),s=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:((t=e.editor)==null?void 0:t.key)!=="editors:img",as:Ch(a)?"json":"text"}),i={editor:e.editor},u=v.getTypeFromExtension(e.path);u===v.FileFolderType.METHOD&&(i.attributes=v.parseAttributes(s.content),s.content=v.addAttributesToContent(s.content,{}));const{content:l,date:d,ext:p}=s;return r.confirmed===void 0&&(r.confirmed=!0),{date:d,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm"].includes(p),confirmed:r.confirmed},extra:i,name:e.name,path:e.path,type:u,initialContent:l,content:l,history:{stack:[],active:-1,locked:!1}}}catch(a){const{data:s}=a;if(s.__ERROR.find(i=>i.errCode===v.ERROR_CODES.FILE_NOT_FOUND))switch(e.path){case v.ROLES_TAB_PATH:{const i={permissions:{allowed:[]},privileges:[],roles:[]};return{date:new Date().toISOString(),flags:r,extra:{editor:{key:"editors:roles"}},name:"Roles & Privileges",path:e.path,type:v.FileFolderType.ROLES,initialContent:i,content:i}}case v.SETTINGS_TAB_PATH:{const i={};return{date:new Date().toISOString(),flags:r,extra:{editor:{key:"editors:settings"}},name:"Settings",path:e.path,type:v.FileFolderType.SETTINGS,initialContent:i,content:i}}}throw a}},Fa=Q("explorer/openFile",async({file:e,inactive:r,isNew:t,flags:a={},info:s},{getState:i,dispatch:u})=>{const{root:{tabs:l},roles:d,debugger:{sessions:p},settings:{server:{qodly:h}}}=i(),m=l.find(({path:w})=>e.path===w);if(m){const w={...m,extra:{...m==null?void 0:m.extra,editor:e.editor},flags:{...m==null?void 0:m.flags,...a}};return u(Dt(w)),w}if(e.path.startsWith("Debugger")){const w=p.find(T=>`Debugger/${T.threadId}`===e.path);if(w){const{source:{content:T},source:D}=w.currentStackFrame,P={name:e.name,type:v.FileFolderType.DEBUGGER,date:new Date().toISOString(),path:e.path,content:T,view:{panel:{isOpen:!1,type:"",current:""}},initialContent:T,flags:{confirmed:!0},extra:{source:D,editor:e.editor}};return u(Dt(P)),P}}let _=null;try{_=await zs(e,a)}catch(w){const{data:T}=w;if(T.__ERROR.find(D=>[v.ERROR_CODES.JSON_MALFORMED,v.ERROR_CODES.JSON_MALFORMED_AT_LINE].includes(D.errCode))){const{confirmed:D}=await u(or({title:"Corrupt file",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,message:"Open in code editor ?"})).unwrap();if(D){const P=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:"text"}),{content:L,date:I,ext:N}=P;_={date:I,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm","QoDoc"].includes(N),confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:L,content:L,history:{stack:[],active:-1,locked:!1}}}}if(e.type===v.FileFolderType.CLASS&&s){const D=s.kind,P=`${e.name}.${h?"4qs":"4dm"}`,L=En()[D]({name:P,qodly:h}).content;_={date:(await v.setFileContent({name:P,content:L,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:L,content:L,history:{stack:[],active:-1,locked:!1}}}}return _&&(e.path===v.ROLES_TAB_PATH&&!d.flags.touched?u(Zu({content:_.content,date:_.date,flags:a})):e.path===v.SETTINGS_TAB_PATH&&u(Ys({path:"project",value:_.content})),u((r?Iv:Dt)({..._,isNew:t})),_)}),tl=Q("explorer/openFileAtLine",async({file:e},{getState:r,dispatch:t})=>{const{tabs:a}=r().root,s=a.find(({path:u})=>e.path===u);if(s){const u={...s,extra:{...s==null?void 0:s.extra,editor:e.editor}};return t(Dt(u)),u}const i=await zs(e);return t(Dt(i)),i}),av=Q("explorer/injectContentAtLine",async(e,{getState:r,dispatch:t,rejectWithValue:a})=>{const s=r();e.path.split("/").pop();const u=lt(s.explorer,e.path);if(!u)return a(`Error while trying to inject content in file ${e.path}`);const l=await zs({name:u.name,date:u.date||new Date().toISOString(),path:`${u.path}.${u.ext}`,type:v.FileFolderType.CLASS,editor:u.config.editor});return await t(Dt(l)),{...e,path:`${u.path}.${u.ext}`}}),ov=Q("explorer/openFileAtSelection",async({file:e},{getState:r,dispatch:t})=>{const{tabs:a}=r().root,s=a.find(({path:u})=>e.path===u);if(s){const u={...s,extra:{...s==null?void 0:s.extra,editor:e.editor}};return t(Dt(u)),u}const i=await zs(e);return t(Dt(i)),i}),_u=Q("explorer/deleteFile",async e=>{const{name:r,type:t,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:rv(t),verb:v.DesignerRequestVerb.DROP,name:r,path:i.join("/")}),node:e}}),SD=Q("explorer/deleteFolder",async(e,{getState:r,dispatch:t})=>{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}=r().root;e.children.forEach(l=>{const d=u.findIndex(p=>p.path===l.path);t(Xs(d))})}return{deleted:i,node:e}}),Su=Q("explorer/removeFileNode",async(e,{getState:r,dispatch:t})=>{const a=`${e.path}.${e.ext}`;if(await v.removeItem({verb:v.DesignerRequestVerb.REMOVE_ITEM,path:a,force:!0}).catch(console.error),e.path==="Classes/DataStore"&&setTimeout(()=>{t(Cn())},As),e.ext){const{tabs:s}=r().root,i=s.findIndex(u=>u.path===a);i>=0&&t(Xs(i))}return{deleted:!0,node:e}}),zn=Q("explorer/renameFile",async({file:e,newname:r})=>{if(e.type!=="folder"){const a=e.path.split("/");a.pop();const s=`${a.join("/")}/${e.name}.${e.ext}`,i=`${a.join("/")}/${r}.${e.ext}`;return await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:s,newpath:i}),{old:{...e,path:s},new:{...e,name:r,path:i}}}const t=e.path.split("/");return t.pop(),await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${t.join("/")}/${e.name}`,newpath:`${t.join("/")}/${r}`}),{old:e,new:{...e,name:r,path:`${t.join("/")}/${r}`}}}),Ia=Q("explorer/relocateNode",async({draggedNode:e,newLocation:r},{rejectWithValue:t})=>{try{await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${e.path}.${e.ext}`,newpath:`${r.path}/${e.name}.${e.ext}`})}catch{return t("can't move item")}}),rs=Q("explorer/duplicateNode",async({node:e,duplicateName:r},{rejectWithValue:t,fulfillWithValue:a,getState:s})=>{const i=e.path.split("/");i.pop();try{const{tabs:u}=s().root,l=u.find(({path:m})=>m===`${e.path}${e.ext?`.${e.ext}`:""}`),d=["4dm","4qm","4qs"].includes(e.ext),{content:p}=l||await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:`${e.path}.${e.ext}`,content:!0,as:d?"text":"json"}),h=await v.setFileContent({name:`${r}.${e.ext}`,content:p,path:i.join("/"),asText:d});return a({node:{...h,path:i.join("/")}})}catch{return t("failed to duplicate file")}}),ED=Q("explorer/executeMethod",async({methodName:e,params:r=[],resultingDataSource:t={},namespace:a=""},{rejectWithValue:s})=>{var i,u;try{const d=await window.Method4D.buildMethod({methodName:e,parameters:r,resultingDataSource:t},{namespace:a},null).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){return v.toastSubject.next({message:l.message||`Error executing the method "**${e}**"`,kind:"danger",markdown:!0}),s("can't execute method")}}),TD=e=>{const{dataClasses:r,...t}=e;return{...t,dataClasses:r==null?void 0:r.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})}},wD=Q("files/fetchFiles",async()=>v.getFolders(v.FolderRootType.WEBFORMS,v.FolderRootType.METHODS,v.FolderRootType.CLASSES)),rl=Q("tabs/renameDatasource",async(e,{dispatch:r,getState:t})=>{var S,w;const a=!!e.datasourceNamespace,{confirmed:s}=await r(or({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:p}=e,h=t();let m=[];if(a){const T=h.sharedDatasources.sources[l]||[];m.push(...T)}else if(p){const T=h.root.tabs.find(v.by("path",p));if(m=(w=(S=T==null?void 0:T.content)==null?void 0:S.metadata)==null?void 0:w.datasources,!m)return null}const _=new RegExp(`^${u}\\b`,"");if(m=m.map(T=>{const D=(v.isObjectDatasource(T)||!v.isSimpleDatasource(T))&&T.from&&_.test(T.from),P=T.events?T.events.map(L=>{var I,N,R,z;switch(L==null?void 0:L.type){case"method":{const G=L;return G.params?{...G,params:G.params.map(Y=>{var te;return{...Y,datasource:(te=Y.datasource)==null?void 0:te.replace(new RegExp(`^${u}`,""),d)}}),returns:(I=G.returns)!=null&&I.datasource?{...G.returns,datasource:(N=G.returns.datasource)==null?void 0:N.replace(new RegExp(`^${u}`,""),d)}:G.returns}:G}case"simple-action":{const G=L;return G.datasource?{...G,datasource:{...G.datasource,name:(R=G.datasource.name)==null?void 0:R.replace(new RegExp(`^${u}`,""),d),from:(z=G.datasource.from)==null?void 0:z.replace(new RegExp(`^${u}`,""),d)}}:G}default:return L}}):T.events;return T.id===u?{...T,id:d,events:P}:D&&T.from?{...T,from:T.from.replace(new RegExp(`^${u}`,""),d),events:P}:{...T,events:P}}),i){const T=a?`${l}:${u}`:`${u}`,D=a?`${l}:${d}`:`${d}`;v.datasourcesSubject.next({path:p??"",action:v.DatasourcesActions.RENAME,old_reference:T,new_reference:D,is_shared:a})}return{path:p,namespace:l,datasources:m}}),nl=Q("tabs/edit-datasource",(e,{getState:r})=>{var i,u;const t=r();let a=[];if(e.namespace)a=t.sharedDatasources.sources[e.namespace];else{const l=t.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)}),sv=Q("tabs/fetchChanges",async(e,{getState:r})=>{const a=na(r()).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:"."}}))}),CD=Q("files/saveAll",async(e,{getState:r,dispatch:t})=>{const a=Uu(r());for(const s of a)t(Vn({tab:s}))}),al=Q("files/tryCloseTab",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({title:Ps(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 t(Xs(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"});t(Zu({content:l.content,date:l.date}))})(),!0}),xD=Q("files/tryCloseOtherTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().root;if(a.some(i=>i.path!==e&&i.flags.touched===!0)){const{confirmed:i}=await t(or({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}t(Pv(e))}),OD=Q("files/tryCloseAllTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().root;if(a.some(i=>i.flags.touched===!0)){const{confirmed:i}=await t(or({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}t(Rv())}),RD=Q("files/tryCloseRightTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({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}t(Av(e))}),AD=Q("files/tryCloseLeftTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({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}t(Dv(e))}),ns=Q("files/reloadTab",async(e,{dispatch:r})=>{if(e.flags.touched){const{confirmed:s}=await r(or({title:Ps(e),message:"Changes made to the file will be lost. Continue?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!s)throw new Error("Cancel modal!")}const t=ju(e.path),a=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:t});if(e.path===v.ROLES_TAB_PATH){const{roles:s,privileges:i}=Gs(a.content);r(Qu({roles:s,privileges:i}))}else if(e.path===v.SETTINGS_TAB_PATH){const{content:s}=a;r(Ys({path:"project",value:s}))}else{const{content:s}=a;e.type===v.FileFolderType.WEBFORM?v.webformSubject.next({path:e.path,action:v.WebformActions.RELOAD,payload:s.components}):e.type===v.FileFolderType.MODEL&&Qh.next({action:"reload",payload:s})}return a}),Vn=Q("files/saveTab",async({tab:e},{dispatch:r,getState:t})=>{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 m=new Date(e.date),_=new Date(u.files[0].date);if(m.getTime()<_.getTime()){const{confirmed:S}=await r(or({title:Ps(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 r(Ov({path:a,flags:{old:!0}})),null}}const l=PD(e,t()),d=await v.saveContent({verb:v.DesignerRequestVerb.SAVE_CONTENT,content:l,path:a});(e.type===v.FileFolderType.CLASS||e.type===v.FileFolderType.MODEL)&&setTimeout(()=>{r(Cn())},As);const p=(d.modelErrors||[]).map(m=>m.message),h=(d.permissionsErrors||[]).map(m=>m.message);return v.FileFolderType.MODEL===e.type&&(s=l),{...e,content:s,date:d.date,initialContent:s,errors:p.length>0||h.length>0?[{title:"Model errors",messages:p},{title:"Permissions errors",messages:h}]:[]}}),PD=(e,r)=>{switch(!0){case e.path==="settings.json":case e.path===v.SETTINGS_TAB_PATH:return r.settings.project;case e.type===v.FileFolderType.ROLES:return{...e.content,...qs(r.roles)};case e.type===v.FileFolderType.MODEL:{const t=e.content||{toJSON:!0,dataClasses:[],extraProperties:{}};return TD(t)}default:return e.content}},qp=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 r=ju(e.path),t=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:r}),a={};t.type===v.FileFolderType.METHOD&&(a.attributes=v.parseAttributes(t.content));const{date:s,name:i,type:u,content:l}=t;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?wh(l):l,history:{stack:[],active:-1,locked:!1}}},DD=Re.debounce((e,r)=>{r($v(e))},300),FD=Q("tabs/setTabContent",(e,{getState:r,dispatch:t})=>{var u;const{root:{tabs:a}}=r(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);t(cl(e)),i?t(Mv(e.path)):DD(e.path,t)}),iv=Q("files/tryInjectMethod",async({type:e,dataclass:r},{getState:t,dispatch:a})=>{const{root:{tabs:s},settings:{server:{qodly:i}}}=t(),u=v.getFileExtentionFromType("class",i);let l="",d="",p=null;if(!r)l="DataStore",d=`Classes/DataStore.${u}`;else switch(e){case"dataclass":l=r,d=`Classes/${r}.${u}`;break;case"collection":l=`${r}Selection`,d=`Classes/${r}Selection.${u}`;break;case"entity":l=`${r}Entity`,d=`Classes/${r}Entity.${u}`;break;default:return p}const h=s.find(v.by("path",d));if(h)return a(Dt(h)),h;try{p=await qp({name:l,date:new Date().toISOString(),path:d,type:v.FileFolderType.CLASS})}catch{r?await a(bu({type:"dataclass",className:r,collectionName:`${r}Selection`,toCreate:e})):await a(bu({type:"model"}))}return p=await qp({name:l,date:new Date().toISOString(),path:d,type:v.FileFolderType.CLASS}),p.path=d,a(Dt(p)),p}),ID=Q("roles/open",async(e,{dispatch:r,getState:t})=>{const{tabs:a}=t().root,s=a.find(i=>i.path===v.ROLES_TAB_PATH);if(s)return r(Dt(s)),s;r(Es())});function Yp(e,r){const{line:t,offset:a,type:s="saved"}=r;e.breakpoints[s].locations.push({line:t}),Re.isNumber(a)&&(e.breakpoints[s].offset=a)}function zp(e,r,t,a){e.breakpoints[t].locations=r,Re.isNumber(a)&&(e.breakpoints[t].offset=a)}function Vp({filePath:e,fileType:r,methodName:t,className:a,ext:s,source:i}){return{filePath:e,fileType:r,methodName:t,className:a,ext:s,source:i,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}}function Kp(e,r,t){let a=!1;const s=e.map(i=>i[t]!==r[t]?i:(a=!0,{...i,...r}));return a?s:[...s,r]}function Jo(e){return e.map(({label:r})=>({label:r}))}const cv=Yt({name:"debugger",initialState:()=>{var r,t;const{debugger:e={meta:{state:Xr.DETACHED},list:[],sessions:[],expressions:[]}}=Xn();return{meta:{...e.meta,state:((r=e.meta)==null?void 0:r.state)===Xr.ATTACHED?(t=e.meta)==null?void 0:t.state:Xr.DETACHED},list:e.list||[],sessions:e.sessions||[],expressions:e.expressions||[]}},reducers:{addBreakpointDecoration(e,r){const{filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoint:d}=r.payload,p=wn(e.list,t,s,i);if(p)Yp(p,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=Vp({filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l});Yp(h,d),e.list.push(h)}},removeBreakpointDecoration(e,r){const{filePath:t,methodName:a,line:s,offset:i=0,type:u="saved"}=r.payload;if(t.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===t);if(l.length>0){const d=s+i;l.forEach(p=>{const h=p.breakpoints[u].offset||0;p.breakpoints[u].locations=p.breakpoints[u].locations.filter(m=>m.line+h!==d),u==="saved"&&(p.breakpoints.draft.locations=p.breakpoints.draft.locations.filter(m=>m.line+h!==d))})}}else{const l=wn(e.list,t,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,r){const{filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoints:d,offset:p,type:h="saved",clearDraft:m}=r.payload,_=wn(e.list,t,s);if(_)zp(_,d,h,p),m&&h!=="draft"&&(_.breakpoints.draft.locations=[]);else{const S=Vp({filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l});zp(S,d,h,p),e.list.push(S)}},clearBreakpoints(e,r){const{filePath:t,type:a="saved"}=r.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath===t?{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,r){const{exceptedFilePath:t,type:a="saved"}=r.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath!==t?{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(r=>({...r,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}))},setActiveLine(e,r){const{threadId:t,line:a,highlight:s}=r.payload,i=ot(e.sessions,t);i&&(i.activeLine=a,s&&(i.highlightedLines={start:a,end:a}))},addExpression(e,r){const{threadId:t,label:a,save:s}=r.payload,i=ot(e.sessions,t);i&&i.stopped&&(i.expressions=[...i.expressions||[],{label:a}],s&&(e.expressions=Jo(i.expressions)))},removeExpression(e,r){const{threadId:t,index:a,save:s}=r.payload,i=ot(e.sessions,t);i&&(i.expressions=i.expressions.filter((u,l)=>l!==a),s&&(e.expressions=Jo(i.expressions)))},removeAllExpressions(e,r){const{threadId:t,save:a}=r.payload,s=ot(e.sessions,t);s&&(s.expressions=[],a&&(e.expressions=[]))},renameExpression(e,r){const{threadId:t,index:a,replacement:s,save:i}=r.payload,u=ot(e.sessions,t);u&&u.expressions[a]&&(u.expressions[a].label=s,i&&(e.expressions=Jo(u.expressions)))},setExpression(e,r){const{threadId:t,expression:a}=r.payload,s=ot(e.sessions,t);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,r){const{threadId:t,index:a,value:s}=r.payload,i=ot(e.sessions,t);if(i){const u=i.expressions[a];u&&(u.result=`"${s}"`,u.nakedResult=s)}},saveExpressions(e,r){const{expressions:t}=r.payload;e.expressions=Jo(t)},addSession(e,r){const{threadId:t,channelId:a,stackFrames:s,exceptions:i=[]}=r.payload,u=ot(e.sessions,t),l=s[0],{expressions:d=[]}=e;if(u)u.expressions=d;else{const p=Nu(t);e.sessions.push({tabPath:p,threadId:t,channelId:a,stackFrames:s,currentStackFrame:l,exceptions:i,expressions:d,variables:{callchain:[],expressions:[]},highlightedLines:null,activeLine:null,stopped:!0})}},updateSession(e,r){const{threadId:t,changes:a}=r.payload;e.sessions=e.sessions.map(s=>s.threadId===t?{...s,...a}:s)},removeSession(e,r){const{threadId:t}=r.payload;e.sessions=e.sessions.filter(a=>a.threadId!==t)},removeSessionByIndex(e,r){const t=r.payload;e.sessions.splice(t,1)},setSessions(e,r){const t=r.payload;e.sessions=t},setCallChainVariables(e,r){const{threadId:t,frameId:a,variables:s}=r.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===t?{...i,variables:{...i.variables,callchain:Kp((u=i.variables)==null?void 0:u.callchain,{frameId:a,items:s},"frameId")}}:i})},setExpressionVariables(e,r){const{threadId:t,variablesReference:a,variables:s}=r.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===t?{...i,variables:{...i.variables,expressions:Kp((u=i.variables)==null?void 0:u.expressions,{variablesReference:a,items:s},"variablesReference")}}:i})},setSourceContent(e,r){const{threadId:t,content:a}=r.payload,s=ot(e.sessions,t);s&&(s.currentStackFrame.source={...s.currentStackFrame.source,content:a})},setDebuggerMeta(e,r){if(r.payload.state===Xr.ERROR){const{error:t={code:null,reason:"",type:ps.SOCKET_ERROR}}=r.payload;if(e.meta.error={...e.meta.error,...t,time:Date.now()},(t==null?void 0:t.type)===ps.SOCKET_CLOSURE&&!(t!=null&&t.reason)&&e.meta.state===Xr.DETACHED)return}e.meta.state=r.payload.state}},extraReducers:e=>{e.addCase(lv.fulfilled,r=>{r.sessions=[]})}}),{addBreakpointDecoration:$D,removeBreakpointDecoration:MD,setBreakpointsDecoration:LD,clearBreakpoints:ND,clearBreakpointsExcept:kD,clearAllBreakpoints:jD,setActiveLine:BD,addExpression:WD,renameExpression:UD,removeExpression:HD,removeAllExpressions:GD,setExpression:qD,updateExpressionAt:YD,saveExpressions:zD,addSession:VD,updateSession:KD,removeSession:JD,removeSessionByIndex:XD,setSessions:uv,setCallChainVariables:ZD,setExpressionVariables:QD,setSourceContent:eF,setDebuggerMeta:tF}=cv.actions,lv=Q("files/wipeDebuggerSessions",async(e,{getState:r,dispatch:t})=>{const{sessions:a}=r().debugger;for(const{threadId:s}of a){const i=Nu(s);t(al(i))}}),fv=Q("files/removeDebuggerSessionsNotIn",async(e,{getState:r,dispatch:t})=>{const{threadIds:a}=e,{sessions:s}=r().debugger,i=[],u=s.filter(l=>{const d=a.includes(l.threadId);return d||i.push(l.threadId),d});return t(uv(u)),{staleThreadIds:i}}),Ts=Q("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),ws=Q("models/save",async(e,{getState:r,dispatch:t,rejectWithValue:a})=>{const{tabs:s}=r().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(()=>{t(Cn())},As),{...u,path:i.path,content:e.content||{toJSON:!0,dataClasses:[],extraProperties:{}}}}catch{return a("Error while saving the model")}}),rF=Q("models/open",async(e,{dispatch:r,getState:t})=>{const{tabs:a}=t().root,s=a.find(i=>i.path==="models/main");if(s)return r(Dt(s)),s;r(Ts())}),nF=Q("model/rename-dataclass",async(e,{getState:r,dispatch:t})=>{var m,_;const{dataclassId:a,selectionId:s,name:i}=e;let u=r();if(!u.explorer.find(S=>S.path===v.FolderRootPath.CLASSES))throw new Error("Classes folder was not found!");u=r();const d={class:{found:!1,newNameTaken:!1,file:null,filename_update:i},entity:{found:!1,newNameTaken:!1,file:null,filename_update:`${i}Entity`},selection:{found:!1,newNameTaken:!1,file:null,filename_update:`${i}Selection`}};(_=(m=u.explorer.find(S=>S.path===v.FolderRootPath.CLASSES))==null?void 0:m.children)==null||_.forEach(S=>{var w;S.path===`Classes/${a}___[<QODLY_ID>]`?(w=S.children)==null||w.forEach(T=>{var P,L,I,N;const D={...T,name:(P=T.info)==null?void 0:P.filename};((L=T.info)==null?void 0:L.filename)===a?(d.class.found=!0,d.class.file=D):((I=T.info)==null?void 0:I.filename)===`${a}Entity`?(d.entity.found=!0,d.entity.file=D):((N=T.info)==null?void 0:N.filename)===s&&(d.selection.found=!0,d.selection.file=D)}):(S.name===d.class.filename_update&&(d.class.newNameTaken=!0),S.name===d.entity.filename_update&&(d.entity.newNameTaken=!0),S.name===d.selection.filename_update&&(d.selection.newNameTaken=!0))});const p=Object.entries(d).reduce((S,w)=>{const[T,D]=w;return D.found?D.newNameTaken?[...S,{type:"error",message:`Cannot rename ${T} file to ${D.filename_update} because it already exists. The existing file will be used instead!`}]:S:[...S,{type:"warning",message:`${a} ${T} file was not found`}]},[]);p.length>0&&t(or({message:"The following errors were encountered during dataclass rename:",views:{tips:p}}));const h=Object.values(d).filter(S=>S.found&&S.file&&!S.newNameTaken);await Promise.all(h.map(async S=>await t(zn({file:S.file,newname:S.filename_update}))))}),Wa={DATACLASS_DELETE:"dataclass.delete",DATACLASS_DRAGGABLE:"dataclass.draggable"},aF={model:{dataClasses:{},collections:{},extraProperties:{}},draft:{dataClasses:{},collections:{},extraProperties:{}},flags:{[Wa.DATACLASS_DELETE]:!0,[Wa.DATACLASS_DRAGGABLE]:!0}},dv=Yt({name:"Models",initialState:aF,reducers:{setModelFlag(e,r){e.flags={...e.flags,...r.payload}}},extraReducers(e){e.addCase(Ts.fulfilled,(r,t)=>{var u;const a={},s={},i=t.payload.extraProperties||{};(u=t.payload.dataClasses)==null||u.forEach(l=>{a[l.name]=l,s[l.collectionName]=l}),r.draft.dataClasses=a,r.draft.collections=s,r.draft.extraProperties=i,r.model.dataClasses=a,r.model.collections=s,r.model.extraProperties=i}),e.addCase(Ts.rejected,r=>{r.errored=!0}),e.addCase(ws.pending,()=>{}).addCase(ws.fulfilled,(r,t)=>{const a={},s={},i=t.payload.content.extraProperties||{};t.payload.content.dataClasses.forEach(u=>{a[u.name]=u,s[u.collectionName]=u}),r.draft.dataClasses=a,r.draft.collections=s,r.draft.extraProperties=i,r.model.dataClasses=a,r.model.collections=s,r.model.extraProperties=i})}}),{setModelFlag:oF}=dv.actions;var pv=(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))(pv||{}),Vs=(e=>(e.STORAGE="storage",e.RELATEDENTITY="relatedEntity",e.RELATEDENTITIES="relatedEntities",e.CALCULATED="calculated",e.COMPOSITION="composition",e.ALIAS="alias",e))(Vs||{});const sF=e=>["string","uuid","number","long"].includes(e.type),iF=[{label:"Storage",value:"storage"},{label:"Calculated",value:"calculated"}],cF=[{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"}],uF=[{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"}],lF=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],fF=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],dF=[{label:"None",value:"none"},{label:"B-tree",value:"btree"},{label:"Cluster",value:"cluster"},{label:"Automatic",value:"auto"}],pF=(e,r)=>({toJSON:!0,extraProperties:r,dataClasses:e.map(t=>{var a;return{...t.data,extraProperties:{position:{x:t.position.x,y:t.position.y},panelColor:(a=t.data.extraProperties)==null?void 0:a.panelColor}}})});function hF(e,r,t){const a=e;let s=0;for(;t[`${a}${s||""}`];)s++;return`${a}${s||""}`}const hv=e=>e.kind===Vs.RELATEDENTITY,gv=e=>e.kind===Vs.RELATEDENTITIES,gF=e=>gv(e)||hv(e),vF=()=>Sr(e=>e.model),mF=()=>Sr(e=>e.model.draft.dataClasses),yF=()=>Sr(e=>e.model.draft.collections),bF=e=>Sr(r=>r.model.draft.dataClasses[e]),_F=(e,r)=>Sr(t=>t.model.draft.dataClasses[e].attributes.find(v.by("name",r))),SF=()=>Sr(e=>e.model.draft.extraProperties),EF=()=>{const e=Sr(s=>s.model.flags),r=s=>s in e?e[s]:void 0,t=r(Wa.DATACLASS_DELETE),a=r(Wa.DATACLASS_DRAGGABLE);return{deleteDataclass:t,draggableDataclass:a,flags:e}},TF=dv.reducer;function Yc(e,r){const t=e.tabs.find(({path:a})=>a===v.SETTINGS_TAB_PATH);t&&(t.flags.touched=r)}const vv={SIDEBAR_SECTION_RESIZABLE:"sidebar.section.resizable"},mv={[vv.SIDEBAR_SECTION_RESIZABLE]:!0},yv=Yt({name:"webforms",initialState:()=>{const{webforms:e}=Xn();return{...e,templates:{data:[],selectedGroup:""},datasources:{...$u.webforms.datasources,...e==null?void 0:e.datasources},flags:mv}},reducers:{toggleInspector:(e,r)=>{const{type:t}=r.payload;e.inspector[t].active=!e.inspector[t].active,e.inspector[t].active||(e.inspector[t].data=void 0)},inspect:(e,r)=>{const{type:t,data:a}=r.payload;e.inspector[t].active&&(e.inspector[t].data=a)},addComponent:(e,r)=>{e.components.push(r.payload)},editComponent:(e,r)=>{const{id:t,changes:a}=r.payload;e.components=e.components.map(s=>s.id===t?{...s,...a}:s)},removeComponent:(e,r)=>{const{payload:t}=r,a=e.components.findIndex(s=>s.id===t);a!==-1&&e.components.splice(a,1)},setSelectedGroup:(e,r)=>{e.templates.selectedGroup=r.payload.selectedGroup},setTemplatesData:(e,r)=>{e.templates.data=r.payload},setTemplateData:(e,r)=>{const{group:t,components:a}=r.payload,s=e.templates.data.find(i=>i.group===t);s&&(s.components=a)},setDatasourcesTheme:(e,r)=>{e.datasources.theme=r.payload},setWebformsFlag(e,r){e.flags={...e.flags,...r.payload}}},extraReducers(e){e.addCase(wv.fulfilled,(r,t)=>{r.components=t.payload})}}),{toggleInspector:wF,inspect:CF,addComponent:bv,editComponent:_v,removeComponent:Sv,setSelectedGroup:xF,setTemplatesData:Ev,setTemplateData:Tv,setDatasourcesTheme:OF,setWebformsFlag:RF}=yv.actions,AF=yv.reducer,ol=Re.curry((e,r)=>{var s,i;const t={...r.sharedDatasources.sources},a=(i=((s=r.root.tabs.find(v.by("path",e)))==null?void 0:s.content).metadata)==null?void 0:i.datasources;return a&&(t[e]=a),Re.cloneDeep(t)}),PF=Q("webforms/fetchTemplates",async(e,{dispatch:r,getState:t})=>{const{data:a}=t().webforms.templates,s=t().settings.session["studio.tipsBaseUrl"]||"";if(!Re.isEmpty(a))return a;try{const u=await(await fetch(`${s}/build/index.json?t=${Date.now()}`)).json();return r(Ev(u)),u}catch{return[]}}),DF=Q("webforms/fetchTemplate",async({name:e},{dispatch:r,getState:t})=>{const{data:a}=t().webforms.templates,s=a.find(i=>i.group===e);if(s&&!Re.isEmpty(s.components))return s.components;try{const u=await(await fetch(`${s==null?void 0:s.link}?t=${Date.now()}`)).json();return r(Tv({group:e,components:u})),u}catch{return[]}}),wv=Q("webforms/fetchCraftedComponents",async(e,{rejectWithValue:r})=>{try{return(await v.getNodeInfo({path:"WebForms/crafted_components.json",verb:v.DesignerRequestVerb.GET_INFO,content:!0,as:"json"})).content}catch{return r("Error while loading the crafted components")}}),FF=Q("webforms/addCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(bv(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while adding the crafted component")}}),IF=Q("webforms/editCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(_v(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while editing the crafted component")}}),$F=Q("webforms/removeCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(Sv(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while removing the crafted component")}}),sl=Q("datasources/add-datasource",async(e,{getState:r,rejectWithValue:t})=>{var a,s;try{const i=r(),u=e.datasource,l=!!u.namespace,d=[];if(l){const p={...i.sharedDatasources.sources,[u.namespace]:[...i.sharedDatasources.sources[u.namespace],u]};d.push(...p[u.namespace]),await v.setSharedSources(p)}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),t("Error while adding the datasource")}}),il=Q("datasources/edit-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const{namespace:a,path:s}=e,i=r(),u=!!e.namespace,l=ol(s,i);let d=Re.defaultTo(l[a||s],[]);const p=e.changes??{[e.property]:e.value};return d=d.map(h=>h.id===e.id?{...h,...p}:h),u&&await v.setSharedSources({...i.sharedDatasources.sources,[e.namespace]:d}),{list:d,path:e.path,namespace:e.namespace}}catch{t(`Error while editing datasource ${e.id}`)}}),MF=e=>e.type===Kn.fulfilled.type,Kn=Q("datasources/rename-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const a=r(),s=!!e.namespace,i=e.namespace||e.path,u=ol(e.path,a),l=Re.defaultTo(u[i],[]),d=new RegExp(`^${e.id}\\b`,"");if(l.forEach(p=>{var m;const h=(v.isObjectDatasource(p)||!v.isSimpleDatasource(p))&&p.from&&d.test(p.from);e.updateRefs&&((m=p.events)==null||m.forEach(_=>{var S,w,T,D,P;switch(_.type){case"method":{const L=_;L.params.forEach(I=>{I.datasource&&Object.assign(I,{datasource:I.datasource.replace(new RegExp(`^${e.id}`,""),e.new_name)})}),L.returns&&Object.assign(L.returns,{datasource:(w=(S=L.returns)==null?void 0:S.datasource)==null?void 0:w.replace(new RegExp(`^${e.id}`,""),e.new_name)});return}case"simple-action":{const L=_;L.datasource&&Object.assign(L.datasource,{name:(T=L.datasource.name)==null?void 0:T.replace(new RegExp(`^${e.id}`,""),e.new_name),from:(D=L.datasource.from)==null?void 0:D.replace(new RegExp(`^${e.id}`,""),e.new_name),target:(P=L.datasource.target)==null?void 0:P.replace(new RegExp(`^${e.id}`,""),e.new_name)});return}default:return}})),p.id===e.id?p.id=e.new_name:h&&p.from&&(p.from=p.from.replace(new RegExp(`^${e.id}`,""),e.new_name))}),e.updateRefs){const p=v.getDatasourceId({id:e.id,namespace:e.namespace}),h=v.getDatasourceId({id:e.new_name,namespace:e.namespace});v.datasourcesSubject.next({path:e.path??"",action:v.DatasourcesActions.RENAME,old_reference:p,new_reference:h,is_shared:s})}return s&&await v.setSharedSources({...a.sharedDatasources.sources,[e.namespace]:l}),{list:l,path:e.path,namespace:e.namespace}}catch{return t(`Error while renaming datasource ${e.namespace}:${e.id}`)}}),$a=Q("datasources/delete-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const a=r(),s=!!e.namespace,i=e.namespace||e.path,l=ol(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 t(`Error while removing datasource ${e.id}`)}}),as=Q("saved_conditions/fetchSavedConditions",async(e,{rejectWithValue:r})=>{try{const{conditions:t}=await v.getSavedConditions();return t}catch{return r("Error while loading the shared conditions")}}),LF=v.queue();async function Xo(e){const r={verb:v.DesignerRequestVerb.SET_FILE_CONTENT,asText:!1,name:"saved_conditions.json",path:"",root:"shared",content:{conditions:e}};await LF(()=>v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify(r),headers:new Headers({"Content-Type":"application/json"})}))}const Ks=(e,r)=>{if(e.id===r)return null;if(e.type==="reference"&&e.ref===r)return null;if(e.type==="combination"&&e.conditions){const t=e.conditions.map(a=>Ks(a,r)).filter(Boolean);return t.length===1?{...t[0],id:e.id}:{...e,conditions:t}}return e},Js=e=>{if(e.id){if(e.type==="combination"&&e.conditions)return{...e,conditions:e.conditions.map(Js)}}else return{...e,id:Ba.generate()};return e},Cv=Yt({name:"shared-conditions",initialState:{state:"unknown",conditions:[]},reducers:{updateSavedConditions:(e,r)=>(e.conditions=r.payload.conditions,Xo(r.payload.conditions),e),setSavedCondition:(e,r)=>{const{payload:t}=r;return e.conditions=e.conditions.map(a=>a.id===t.id?{...Js(t.condition),id:a.id}:a),Xo(e.conditions),e},addSavedCondition:(e,r)=>(e.conditions=[...e.conditions,r.payload],Xo(e.conditions),e),removeSavedCondition:(e,r)=>{const{id:t}=r.payload;return e.conditions=e.conditions.map(a=>Ks(a,t)).filter(Boolean),Xo(e.conditions),e},initSavedConditions:(e,r)=>(e.conditions=r.payload.conditions,e)},extraReducers(e){e.addCase(as.pending,r=>({...r,state:"loading"})).addCase(as.fulfilled,(r,{payload:t})=>({state:"loaded",conditions:t})).addCase(as.rejected,(r,t)=>({...r,state:"error",error:t.payload||"Error while loading the shared conditions"}))}}),{updateSavedConditions:NF,setSavedCondition:kF,addSavedCondition:jF,removeSavedCondition:xv,initSavedConditions:BF}=Cv.actions,WF=Cv.reducer,Ua=Yt({name:"root",initialState:()=>{const e=Xn();return{filesLoading:!1,tabs:e.tabs||[],activeTab:e.activeTab,recent:e.recent||[],clipboard:null}},reducers:{copyToClipBoard(e,r){e.clipboard=r.payload},setPanelState(e,r){const{path:t,...a}=r.payload;e.tabs.forEach(s=>{s.path===t&&(s.view||(s.view={panel:{isOpen:!1,type:"",current:""}}),Object.assign(s.view.panel,a))})},openSettingsTab(e){const r={date:new Date().toISOString(),flags:{confirmed:!0},view:{panel:{isOpen:!1,type:"",current:""}},extra:{editor:{key:"editors:settings"}},name:"Settings",path:v.SETTINGS_TAB_PATH,type:v.FileFolderType.SETTINGS,initialContent:{},content:{}};let t=e.tabs.find(a=>a.path===r.path);if(t||(e.tabs.push(r),t=e.tabs[e.tabs.length-1]),e.activeTab!==r.path){const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);e.activeTab=r.path,t.weight=((a==null?void 0:a.weight)||0)+1}},addDataSource(e,r){var i;const{payload:{path:t,datasourceDef:a}}=r,s=e.tabs.find(u=>u.path===t);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,r){var i;const{payload:{path:t,stateDef:a}}=r,s=e.tabs.find(u=>u.path===t);s&&(s.content.metadata.states=s.content.metadata.states||[ja],(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,r){const{path:t,id:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:xh(s.content,a)}:s)},editWebformState(e,r){const{path:t,state:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,states:s.content.metadata.states.map(i=>i.id===a.id?a.conditions?{...a,conditions:Js(a.conditions)}:a:i)}}}:s)},resetComponentState(e,r){const{path:t,id:a,state:s}=r.payload;e.tabs=e.tabs.map(i=>i.path===t?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,components:{...i.content.components,[a]:{...i.content.components[a],custom:{...Re.omit(i.content.components[a].custom,`states:${s.id}`)}}}}}:i)},setDefaultWebformStates(e,r){const{path:t,states:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,defaultStates:a.map(({id:i})=>i)}}}:s)},addDefaultWebformState(e,r){const{payload:t}=r;e.tabs=e.tabs.map(a=>{var s;return a.path===t.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)||[],t.state.id]))}}}:a})},removeDefaultWebformState(e,r){const{payload:t}=r;e.tabs=e.tabs.map(a=>{var s;return a.path===t.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!==t.state.id)}}}:a})},removeDataSource(e,r){const{path:t,datasourceID:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...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,r){const{payload:{path:t,datasourceArr:a}}=r;e.tabs=e.tabs.map(s=>{var i;return s.path===t?{...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,r){e.tabs=r.payload},closeTab(e,r){const t=r.payload;e.tabs.splice(t,1);const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);e.activeTab=(a==null?void 0:a.path)||""},closeOthers(e,r){e.tabs=e.tabs.filter(t=>t.path===r.payload),e.activeTab=r.payload},closeAllTabs(e){e.tabs=[],e.activeTab=""},closeRightTabs(e,r){e.tabs.splice(r.payload+1),e.activeTab=e.tabs[r.payload].path},closeLeftTabs(e,r){e.tabs.splice(0,r.payload)},closeSavedTabs(e){e.tabs=e.tabs.filter(({flags:{touched:t}})=>t);const r=e.tabs.reduce((t,a)=>(a==null?void 0:a.weight)>((t==null?void 0:t.weight)||0)?a:t,null);e.activeTab=(r==null?void 0:r.path)||""},confirmTab(e,r){const t=e.tabs.find(({path:a})=>a===r.payload);t&&(t.flags.confirmed||Ua.caseReducers.setTabFlags(e,{type:r.type,payload:{path:r.payload,flags:{confirmed:!0}}}))},selectTab(e,r){const t=e.tabs.find(({path:s})=>s===r.payload);if(!t||e.activeTab===r.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);t.weight=a?(a.weight||0)+1:1,e.activeTab=r.payload},openTabUnselected(e,r){const t=r.payload;let a=e.tabs.find(({path:i})=>t.path===i);a||(e.tabs.push(t),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,...t.extra}},selectTabByReference(e,r){const t=[v.FileFolderType.DEBUGGER],{isNew:a,...s}=r.payload;let i=s,u=e.tabs.find(({path:l})=>i.path===l);if(i.history||(i.history={stack:[],active:-1,locked:!1}),(t.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&&!t.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,p)=>(p==null?void 0:p.weight)>((d==null?void 0:d.weight)||0)?p:d,null);e.activeTab=i.path,u.weight=((l==null?void 0:l.weight)||0)+1}u.extra={...u.extra,...i.extra},u.flags={...u.flags||{},...i.flags||{}}},setContent(e,r){const{path:t,content:a,contentPath:s}=r.payload;e.tabs=e.tabs.map(i=>{if(i.path!==t)return i;let u=!1,l=i.flags.confirmed;if(typeof a=="string")u=i.initialContent!==a,l=!l&&u?!0:l;else{const d=JSON.stringify(Re.get(i.initialContent,s||"",i.initialContent)),p=JSON.stringify(Re.get(a,s||"",a));u=d!==p,l=!l&&u?!0:l}return a&&typeof a=="object"&&(s?Re.set(i.content,s,a):i.content=a),typeof a=="string"&&(i.content=a),{...i,flags:{...i.flags,touched:u,confirmed:l}}})},setTabFlags(e,r){const{path:t,flags:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,...a}}:s)},setTabsFlags(e,r){const{tabs:t,flags:a}=r.payload;e.tabs=e.tabs.map(s=>t.includes(s.path)?{...s,flags:{...s.flags,...a}}:s)},setTabExtra(e,r){const{path:t,extra:a,flags:s}=r.payload;e.tabs=e.tabs.map(i=>i.path===t?{...i,extra:{...i.extra,...a},flags:s?{...i.flags,...s}:i.flags}:i)},addWebFormStyles(e,r){const{path:t,styles:a=[]}=r.payload,s=e.tabs.find(i=>i.path===t);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,r){return e.tabs=e.tabs.map(t=>t.path===r.payload.path?r.payload:t),e},setHistoryContent(e,r){const t=r.payload;e.tabs=e.tabs.map(a=>{var s;return a.path!==t?a:(a.history&&(a.history.stack=[...(s=a.history)==null?void 0:s.stack.slice(0,a.history.active+1),a.content],a.history.active=a.history.stack.length-1),{...a})})},unlockHistory(e,r){const t=r.payload;e.tabs=e.tabs.map(a=>a.path!==t?a:(a.history&&(a.history.locked=!1),{...a}))},undo(e){e.tabs=e.tabs.map(r=>r.path!==e.activeTab?r:(r.history&&r.history.active>0&&(r.history.locked=!0,r.history.active--,r.content=r.history.stack[r.history.active]),{...r}))},redo(e){e.tabs=e.tabs.map(r=>r.path!==e.activeTab?r:(r.history&&r.history.active<r.history.stack.length-1&&(r.history.locked=!0,r.history.active++,r.content=r.history.stack[r.history.active]),{...r}))}},extraReducers:e=>{e.addCase(vu,(r,t)=>{if(t.payload.settingsKey==="studio.enablePreview"&&t.payload.value===!1){const a=r.tabs.find(({flags:{confirmed:s}})=>s===!1);a&&Ua.caseReducers.setTabFlags(r,{type:"",payload:{path:a.path,flags:{confirmed:!0}}})}}),e.addCase(av.fulfilled,(r,t)=>{if(!t.payload)return;const{content:a,line:s,path:i}=t.payload,u=r.tabs.find(l=>l.path===i);if(u&&typeof u.content=="string"){const l=u.content.trim().split(`
99
+ `;default:return""}}function tv(e,r,t){switch(console.log(e,r,t,"getting the file name and stuff, you kn ow"),r){case v.FileFolderType.MOBILEFORM:return`${e}.MForm`;case v.FileFolderType.WEBFORM:return`${e}.WebForm`;case v.FileFolderType.REPORT:return`${e}.QoDoc`;case v.FileFolderType.METHOD:case v.FileFolderType.CLASS:return`${e}.${t?"4qs":"4dm"}`;default:return e}}function gD(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 rv(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 vD=Q("files/tryEditMethod",async({method:e},{dispatch:r})=>{const t=e.filePath.split("/"),[a]=t[1].split("."),{editor:s}=xt(e.filePath);return await r(tl({file:{name:a,path:e.filePath,date:new Date().toISOString(),type:v.FileFolderType.CLASS,editor:s},line:e.startingLine+1})).unwrap()}),bu=Q("explorer/createModelFiles",async(e,{dispatch:r,getState:t})=>{var h;const a=t(),s=v.FolderRootPath.CLASSES,i=a.settings.server.qodly,u=lt(a.explorer,s);if(!u)return;await r(tn(s));const d=((h=t().explorer.find(m=>m.name===s))==null?void 0:h.children)||[];let p=[{content:"",name:""}];if(e.type==="dataclass"&&!e.toCreate){const{className:m,collectionName:_}=e;p=[{...En().dataclass({name:m,qodly:i})},{...En().collection({name:_,qodly:i})},{...En().entity({name:m,qodly:i})}]}else if(e.type==="dataclass"&&e.toCreate){const{className:m,collectionName:_}=e;p=[{...En()[e.toCreate]({name:m||_,qodly:i})}]}else p=[{...En().model({name:"DataStore",qodly:i})}];p=p.filter(m=>!d.find(({name:_,ext:S,info:{exist:w=!0}={}})=>_===m.name&&S===(i?"4qs":"4dm")&&w)),await Promise.all(p.map(async({name:m,content:_})=>{await r(Yn({type:v.FileFolderType.CLASS,path:s,fileName:m,parentNode:u,content:_,qodly:a.settings.server.qodly}))})),await r(tn(s))}),tn=Q("explorer/fetchFolderContent",async(e,{rejectWithValue:r,getState:t})=>{const a=t();try{const s=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e});return a.catalog.state!=="loaded"?[]:e==="Classes"?ou(a,s):s.map(i=>{const u=`${e}/${i.name}`,{editor:l,supportedEditors:d}=xt(`${u}${i.ext?`.${i.ext.toLowerCase()}`:""}`);return{name:i.name,size:i.size,type:i.type,date:`${i.date}`,flags:{},error:null,path:u,ext:i.ext,config:i.type==="folder"?{}:{editor:l,supportedEditors:d}}})}catch{return r("Failed loading file content please Reload"),e==="Classes"?ou(a,[]):[]}},{getPendingMeta:()=>{}}),Da=Q("explorer/fetchFolderContentWithoutExpanding",async(e,{rejectWithValue:r})=>{try{return(await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e})).map(a=>{const s=`${e}/${a.name}`,{editor:i,supportedEditors:u}=xt(`${s}${a.ext?`.${a.ext.toLowerCase()}`:""}`);return{name:a.name,size:a.size,type:a.type,date:`${a.date}`,flags:{},error:null,path:s,ext:a.ext,config:a.type==="folder"?{}:{editor:i,supportedEditors:u}}})}catch{return r("Failed loading file content please Reload")}},{getPendingMeta:()=>{}});function mD(e){const r=e.split(".");return r.pop(),{name:r.join("."),ext:e.split(".")[e.split(".").length-1]}}const yD=Q("explorer/uploadFileAndGetResponse",async e=>{const r=e.type.includes("image/")?"$rawPict=true":"$binary=true";try{const t=await fetch(`/rest/$upload?${r}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return{status:t.status,data:await t.json()}}catch{return{status:500,data:null}}}),bD=Q("explorer/uploadFile",async({file:e,path:r,parentNode:t},{dispatch:a})=>{const{editor:s,supportedEditors:i}=xt(r),{name:u,ext:l}=mD(e.name);a(Qg({parent:t,child:{name:u,path:`${r}/${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=${r}`,{method:"POST",headers:{"Content-Type":e.type},body:e});return d.status>=300?(a(yu({parent:t,child:{name:u,path:`${r}/${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(tn(t.path)),{status:d.status,fileName:e.name}}catch{return a(yu({parent:t,child:{name:u,path:`${r}/${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}}}),Yn=Q("explorer/createNewFile",async({fileName:e,type:r,path:t,parentNode:a,content:s},{dispatch:i,rejectWithValue:u,getState:l})=>{const{server:{qodly:d},project:p}=l().settings;try{const h=await v.setFileContent({name:tv(e,r,d),content:s||ev(r,p),path:t,asText:[v.FileFolderType.CLASS,v.FileFolderType.METHOD].includes(r)});return a.error&&(a.flags.expanded?await i(tn(a.path)):await i(Da(a.path))),{qodly:d,file:h,parentNode:a}}catch{return u("failed to create folder")}});function nv(e,r){const{qodly:t=!0,withExtension:a=!0}=r||{},s=v.getFileExtentionFromType(e.type,t);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 _D=Q("explorer/createNewFileAndOpen",async(e,{dispatch:r,getState:t})=>{const a=await r(Yn(e)).unwrap(),{qodly:s}=t().settings.server;if(a){const{file:i}=a,u=nv(i,{withExtension:!1,qodly:s}),{editor:l}=xt(u);await r(Fa({file:{name:e.fileName,type:i.type,path:u,editor:l,date:new Date().toISOString()}}))}}),ts=Q("explorer/createNewNode",async({fileName:e,path:r,parentNode:t},{rejectWithValue:a})=>{try{return{file:await v.createFolder({verb:v.DesignerRequestVerb.CREATE_FOLDER,path:`${r}/${e}`,recursive:!0}),parentNode:t}}catch{return v.toastSubject.next({message:"failed to create folder",kind:"danger"}),a("failed to create folder")}}),zs=async(e,r={})=>{var t;try{const a=e.path.split(".").at(-1),s=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:((t=e.editor)==null?void 0:t.key)!=="editors:img",as:Ch(a)?"json":"text"}),i={editor:e.editor},u=v.getTypeFromExtension(e.path);u===v.FileFolderType.METHOD&&(i.attributes=v.parseAttributes(s.content),s.content=v.addAttributesToContent(s.content,{}));const{content:l,date:d,ext:p}=s;return r.confirmed===void 0&&(r.confirmed=!0),{date:d,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm"].includes(p),confirmed:r.confirmed},extra:i,name:e.name,path:e.path,type:u,initialContent:l,content:l,history:{stack:[],active:-1,locked:!1}}}catch(a){const{data:s}=a;if(s.__ERROR.find(i=>i.errCode===v.ERROR_CODES.FILE_NOT_FOUND))switch(e.path){case v.ROLES_TAB_PATH:{const i={permissions:{allowed:[]},privileges:[],roles:[]};return{date:new Date().toISOString(),flags:r,extra:{editor:{key:"editors:roles"}},name:"Roles & Privileges",path:e.path,type:v.FileFolderType.ROLES,initialContent:i,content:i}}case v.SETTINGS_TAB_PATH:{const i={};return{date:new Date().toISOString(),flags:r,extra:{editor:{key:"editors:settings"}},name:"Settings",path:e.path,type:v.FileFolderType.SETTINGS,initialContent:i,content:i}}}throw a}},Fa=Q("explorer/openFile",async({file:e,inactive:r,isNew:t,flags:a={},info:s},{getState:i,dispatch:u})=>{const{root:{tabs:l},roles:d,debugger:{sessions:p},settings:{server:{qodly:h}}}=i(),m=l.find(({path:w})=>e.path===w);if(m){const w={...m,extra:{...m==null?void 0:m.extra,editor:e.editor},flags:{...m==null?void 0:m.flags,...a}};return u(Dt(w)),w}if(e.path.startsWith("Debugger")){const w=p.find(T=>`Debugger/${T.threadId}`===e.path);if(w){const{source:{content:T},source:D}=w.currentStackFrame,P={name:e.name,type:v.FileFolderType.DEBUGGER,date:new Date().toISOString(),path:e.path,content:T,view:{panel:{isOpen:!1,type:"",current:""}},initialContent:T,flags:{confirmed:!0},extra:{source:D,editor:e.editor}};return u(Dt(P)),P}}let _=null;try{_=await zs(e,a)}catch(w){const{data:T}=w;if(T.__ERROR.find(D=>[v.ERROR_CODES.JSON_MALFORMED,v.ERROR_CODES.JSON_MALFORMED_AT_LINE].includes(D.errCode))){const{confirmed:D}=await u(or({title:"Corrupt file",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,message:"Open in code editor ?"})).unwrap();if(D){const P=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:"text"}),{content:L,date:I,ext:N}=P;_={date:I,view:{panel:{isOpen:!1,type:"",current:""}},flags:{enabled:["WebForm","MForm","QoDoc"].includes(N),confirmed:!0},extra:{editor:v.EDITOR.Code},name:e.name,path:e.path,type:v.getTypeFromExtension(e.path),initialContent:L,content:L,history:{stack:[],active:-1,locked:!1}}}}if(e.type===v.FileFolderType.CLASS&&s){const D=s.kind,P=`${e.name}.${h?"4qs":"4dm"}`,L=En()[D]({name:P,qodly:h}).content;_={date:(await v.setFileContent({name:P,content:L,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:L,content:L,history:{stack:[],active:-1,locked:!1}}}}return _&&(e.path===v.ROLES_TAB_PATH&&!d.flags.touched?u(Zu({content:_.content,date:_.date,flags:a})):e.path===v.SETTINGS_TAB_PATH&&u(Ys({path:"project",value:_.content})),u((r?Iv:Dt)({..._,isNew:t})),_)}),tl=Q("explorer/openFileAtLine",async({file:e},{getState:r,dispatch:t})=>{const{tabs:a}=r().root,s=a.find(({path:u})=>e.path===u);if(s){const u={...s,extra:{...s==null?void 0:s.extra,editor:e.editor}};return t(Dt(u)),u}const i=await zs(e);return t(Dt(i)),i}),av=Q("explorer/injectContentAtLine",async(e,{getState:r,dispatch:t,rejectWithValue:a})=>{const s=r();e.path.split("/").pop();const u=lt(s.explorer,e.path);if(!u)return a(`Error while trying to inject content in file ${e.path}`);const l=await zs({name:u.name,date:u.date||new Date().toISOString(),path:`${u.path}.${u.ext}`,type:v.FileFolderType.CLASS,editor:u.config.editor});return await t(Dt(l)),{...e,path:`${u.path}.${u.ext}`}}),ov=Q("explorer/openFileAtSelection",async({file:e},{getState:r,dispatch:t})=>{const{tabs:a}=r().root,s=a.find(({path:u})=>e.path===u);if(s){const u={...s,extra:{...s==null?void 0:s.extra,editor:e.editor}};return t(Dt(u)),u}const i=await zs(e);return t(Dt(i)),i}),_u=Q("explorer/deleteFile",async e=>{const{name:r,type:t,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:rv(t),verb:v.DesignerRequestVerb.DROP,name:r,path:i.join("/")}),node:e}}),SD=Q("explorer/deleteFolder",async(e,{getState:r,dispatch:t})=>{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}=r().root;e.children.forEach(l=>{const d=u.findIndex(p=>p.path===l.path);t(Xs(d))})}return{deleted:i,node:e}}),Su=Q("explorer/removeFileNode",async(e,{getState:r,dispatch:t})=>{const a=`${e.path}.${e.ext}`;if(await v.removeItem({verb:v.DesignerRequestVerb.REMOVE_ITEM,path:a,force:!0}).catch(console.error),e.path==="Classes/DataStore"&&setTimeout(()=>{t(Cn())},As),e.ext){const{tabs:s}=r().root,i=s.findIndex(u=>u.path===a);i>=0&&t(Xs(i))}return{deleted:!0,node:e}}),zn=Q("explorer/renameFile",async({file:e,newname:r})=>{if(e.type!=="folder"){const a=e.path.split("/");a.pop();const s=`${a.join("/")}/${e.name}.${e.ext}`,i=`${a.join("/")}/${r}.${e.ext}`;return await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:s,newpath:i}),{old:{...e,path:s},new:{...e,name:r,path:i}}}const t=e.path.split("/");return t.pop(),await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${t.join("/")}/${e.name}`,newpath:`${t.join("/")}/${r}`}),{old:e,new:{...e,name:r,path:`${t.join("/")}/${r}`}}}),Ia=Q("explorer/relocateNode",async({draggedNode:e,newLocation:r},{rejectWithValue:t})=>{try{await v.moveItem({verb:v.DesignerRequestVerb.MOVE_ITEM,path:`${e.path}.${e.ext}`,newpath:`${r.path}/${e.name}.${e.ext}`})}catch{return t("can't move item")}}),rs=Q("explorer/duplicateNode",async({node:e,duplicateName:r},{rejectWithValue:t,fulfillWithValue:a,getState:s})=>{const i=e.path.split("/");i.pop();try{const{tabs:u}=s().root,l=u.find(({path:m})=>m===`${e.path}${e.ext?`.${e.ext}`:""}`),d=["4dm","4qm","4qs"].includes(e.ext),{content:p}=l||await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:`${e.path}.${e.ext}`,content:!0,as:d?"text":"json"}),h=await v.setFileContent({name:`${r}.${e.ext}`,content:p,path:i.join("/"),asText:d});return a({node:{...h,path:i.join("/")}})}catch{return t("failed to duplicate file")}}),ED=Q("explorer/executeMethod",async({methodName:e,params:r=[],resultingDataSource:t={},namespace:a=""},{rejectWithValue:s})=>{var i,u;try{const d=await window.Method4D.buildMethod({methodName:e,parameters:r,resultingDataSource:t},{namespace:a},null).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){return v.toastSubject.next({message:l.message||`Error executing the method "**${e}**"`,kind:"danger",markdown:!0}),s("can't execute method")}}),TD=e=>{const{dataClasses:r,...t}=e;return{...t,dataClasses:r==null?void 0:r.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})}},wD=Q("files/fetchFiles",async()=>v.getFolders(v.FolderRootType.WEBFORMS,v.FolderRootType.METHODS,v.FolderRootType.CLASSES)),rl=Q("tabs/renameDatasource",async(e,{dispatch:r,getState:t})=>{var S,w;const a=!!e.datasourceNamespace,{confirmed:s}=await r(or({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:p}=e,h=t();let m=[];if(a){const T=h.sharedDatasources.sources[l]||[];m.push(...T)}else if(p){const T=h.root.tabs.find(v.by("path",p));if(m=(w=(S=T==null?void 0:T.content)==null?void 0:S.metadata)==null?void 0:w.datasources,!m)return null}const _=new RegExp(`^${u}\\b`,"");if(m=m.map(T=>{const D=(v.isObjectDatasource(T)||!v.isSimpleDatasource(T))&&T.from&&_.test(T.from),P=T.events?T.events.map(L=>{var I,N,R,z;switch(L==null?void 0:L.type){case"method":{const G=L;return G.params?{...G,params:G.params.map(Y=>{var te;return{...Y,datasource:(te=Y.datasource)==null?void 0:te.replace(new RegExp(`^${u}`,""),d)}}),returns:(I=G.returns)!=null&&I.datasource?{...G.returns,datasource:(N=G.returns.datasource)==null?void 0:N.replace(new RegExp(`^${u}`,""),d)}:G.returns}:G}case"simple-action":{const G=L;return G.datasource?{...G,datasource:{...G.datasource,name:(R=G.datasource.name)==null?void 0:R.replace(new RegExp(`^${u}`,""),d),from:(z=G.datasource.from)==null?void 0:z.replace(new RegExp(`^${u}`,""),d)}}:G}default:return L}}):T.events;return T.id===u?{...T,id:d,events:P}:D&&T.from?{...T,from:T.from.replace(new RegExp(`^${u}`,""),d),events:P}:{...T,events:P}}),i){const T=a?`${l}:${u}`:`${u}`,D=a?`${l}:${d}`:`${d}`;v.datasourcesSubject.next({path:p??"",action:v.DatasourcesActions.RENAME,old_reference:T,new_reference:D,is_shared:a})}return{path:p,namespace:l,datasources:m}}),nl=Q("tabs/edit-datasource",(e,{getState:r})=>{var i,u;const t=r();let a=[];if(e.namespace)a=t.sharedDatasources.sources[e.namespace];else{const l=t.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)}),sv=Q("tabs/fetchChanges",async(e,{getState:r})=>{const a=na(r()).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:"."}}))}),CD=Q("files/saveAll",async(e,{getState:r,dispatch:t})=>{const a=Uu(r());for(const s of a)t(Vn({tab:s}))}),al=Q("files/tryCloseTab",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({title:Ps(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 t(Xs(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"});t(Zu({content:l.content,date:l.date}))})(),!0}),xD=Q("files/tryCloseOtherTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().root;if(a.some(i=>i.path!==e&&i.flags.touched===!0)){const{confirmed:i}=await t(or({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}t(Pv(e))}),OD=Q("files/tryCloseAllTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().root;if(a.some(i=>i.flags.touched===!0)){const{confirmed:i}=await t(or({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}t(Rv())}),RD=Q("files/tryCloseRightTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({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}t(Av(e))}),AD=Q("files/tryCloseLeftTabs",async(e,{getState:r,dispatch:t})=>{const{tabs:a}=r().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 t(or({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}t(Dv(e))}),ns=Q("files/reloadTab",async(e,{dispatch:r})=>{if(e.flags.touched){const{confirmed:s}=await r(or({title:Ps(e),message:"Changes made to the file will be lost. Continue?",type:v.ModalType.CONFIRM,color:v.ModalColor.WARNING,icon:"FdWarningDanger"})).unwrap();if(!s)throw new Error("Cancel modal!")}const t=ju(e.path),a=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:t});if(e.path===v.ROLES_TAB_PATH){const{roles:s,privileges:i}=Gs(a.content);r(Qu({roles:s,privileges:i}))}else if(e.path===v.SETTINGS_TAB_PATH){const{content:s}=a;r(Ys({path:"project",value:s}))}else{const{content:s}=a;e.type===v.FileFolderType.WEBFORM?v.webformSubject.next({path:e.path,action:v.WebformActions.RELOAD,payload:s.components}):e.type===v.FileFolderType.MODEL&&Qh.next({action:"reload",payload:s})}return a}),Vn=Q("files/saveTab",async({tab:e},{dispatch:r,getState:t})=>{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 m=new Date(e.date),_=new Date(u.files[0].date);if(m.getTime()<_.getTime()){const{confirmed:S}=await r(or({title:Ps(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 r(Ov({path:a,flags:{old:!0}})),null}}const l=PD(e,t()),d=await v.saveContent({verb:v.DesignerRequestVerb.SAVE_CONTENT,content:l,path:a});(e.type===v.FileFolderType.CLASS||e.type===v.FileFolderType.MODEL)&&setTimeout(()=>{r(Cn())},As);const p=(d.modelErrors||[]).map(m=>m.message),h=(d.permissionsErrors||[]).map(m=>m.message);return v.FileFolderType.MODEL===e.type&&(s=l),{...e,content:s,date:d.date,initialContent:s,errors:p.length>0||h.length>0?[{title:"Model errors",messages:p},{title:"Permissions errors",messages:h}]:[]}}),PD=(e,r)=>{switch(!0){case e.path==="settings.json":case e.path===v.SETTINGS_TAB_PATH:return r.settings.project;case e.type===v.FileFolderType.ROLES:return{...e.content,...qs(r.roles)};case e.type===v.FileFolderType.MODEL:{const t=e.content||{toJSON:!0,dataClasses:[],extraProperties:{}};return TD(t)}default:return e.content}},qp=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 r=ju(e.path),t=await v.getNodeInfo({verb:v.DesignerRequestVerb.GET_INFO,path:e.path,content:!0,as:r}),a={};t.type===v.FileFolderType.METHOD&&(a.attributes=v.parseAttributes(t.content));const{date:s,name:i,type:u,content:l}=t;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?wh(l):l,history:{stack:[],active:-1,locked:!1}}},DD=Re.debounce((e,r)=>{r($v(e))},300),FD=Q("tabs/setTabContent",(e,{getState:r,dispatch:t})=>{var u;const{root:{tabs:a}}=r(),s=a.find(l=>l.path===e.path),i=!!((u=s==null?void 0:s.history)!=null&&u.locked);t(cl(e)),i?t(Mv(e.path)):DD(e.path,t)}),iv=Q("files/tryInjectMethod",async({type:e,dataclass:r},{getState:t,dispatch:a})=>{const{root:{tabs:s},settings:{server:{qodly:i}}}=t(),u=v.getFileExtentionFromType("class",i);let l="",d="",p=null;if(!r)l="DataStore",d=`Classes/DataStore.${u}`;else switch(e){case"dataclass":l=r,d=`Classes/${r}.${u}`;break;case"collection":l=`${r}Selection`,d=`Classes/${r}Selection.${u}`;break;case"entity":l=`${r}Entity`,d=`Classes/${r}Entity.${u}`;break;default:return p}const h=s.find(v.by("path",d));if(h)return a(Dt(h)),h;try{p=await qp({name:l,date:new Date().toISOString(),path:d,type:v.FileFolderType.CLASS})}catch{r?await a(bu({type:"dataclass",className:r,collectionName:`${r}Selection`,toCreate:e})):await a(bu({type:"model"}))}return p=await qp({name:l,date:new Date().toISOString(),path:d,type:v.FileFolderType.CLASS}),p.path=d,a(Dt(p)),p}),ID=Q("roles/open",async(e,{dispatch:r,getState:t})=>{const{tabs:a}=t().root,s=a.find(i=>i.path===v.ROLES_TAB_PATH);if(s)return r(Dt(s)),s;r(Es())});function Yp(e,r){const{line:t,offset:a,type:s="saved"}=r;e.breakpoints[s].locations.push({line:t}),Re.isNumber(a)&&(e.breakpoints[s].offset=a)}function zp(e,r,t,a){e.breakpoints[t].locations=r,Re.isNumber(a)&&(e.breakpoints[t].offset=a)}function Vp({filePath:e,fileType:r,methodName:t,className:a,ext:s,source:i}){return{filePath:e,fileType:r,methodName:t,className:a,ext:s,source:i,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}}function Kp(e,r,t){let a=!1;const s=e.map(i=>i[t]!==r[t]?i:(a=!0,{...i,...r}));return a?s:[...s,r]}function Jo(e){return e.map(({label:r})=>({label:r}))}const cv=Yt({name:"debugger",initialState:()=>{var r,t;const{debugger:e={meta:{state:Xr.DETACHED},list:[],sessions:[],expressions:[]}}=Xn();return{meta:{...e.meta,state:((r=e.meta)==null?void 0:r.state)===Xr.ATTACHED?(t=e.meta)==null?void 0:t.state:Xr.DETACHED},list:e.list||[],sessions:e.sessions||[],expressions:e.expressions||[]}},reducers:{addBreakpointDecoration(e,r){const{filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoint:d}=r.payload,p=wn(e.list,t,s,i);if(p)Yp(p,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=Vp({filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l});Yp(h,d),e.list.push(h)}},removeBreakpointDecoration(e,r){const{filePath:t,methodName:a,line:s,offset:i=0,type:u="saved"}=r.payload;if(t.startsWith("Classes/")){const l=e.list.filter(d=>d.filePath===t);if(l.length>0){const d=s+i;l.forEach(p=>{const h=p.breakpoints[u].offset||0;p.breakpoints[u].locations=p.breakpoints[u].locations.filter(m=>m.line+h!==d),u==="saved"&&(p.breakpoints.draft.locations=p.breakpoints.draft.locations.filter(m=>m.line+h!==d))})}}else{const l=wn(e.list,t,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,r){const{filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l,breakpoints:d,offset:p,type:h="saved",clearDraft:m}=r.payload,_=wn(e.list,t,s);if(_)zp(_,d,h,p),m&&h!=="draft"&&(_.breakpoints.draft.locations=[]);else{const S=Vp({filePath:t,fileType:a,methodName:s,className:i,ext:u,source:l});zp(S,d,h,p),e.list.push(S)}},clearBreakpoints(e,r){const{filePath:t,type:a="saved"}=r.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath===t?{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,r){const{exceptedFilePath:t,type:a="saved"}=r.payload;e.list=e.list.map(s=>({...s,breakpoints:s.filePath!==t?{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(r=>({...r,breakpoints:{draft:{locations:[],offset:0},saved:{locations:[],offset:0}}}))},setActiveLine(e,r){const{threadId:t,line:a,highlight:s}=r.payload,i=ot(e.sessions,t);i&&(i.activeLine=a,s&&(i.highlightedLines={start:a,end:a}))},addExpression(e,r){const{threadId:t,label:a,save:s}=r.payload,i=ot(e.sessions,t);i&&i.stopped&&(i.expressions=[...i.expressions||[],{label:a}],s&&(e.expressions=Jo(i.expressions)))},removeExpression(e,r){const{threadId:t,index:a,save:s}=r.payload,i=ot(e.sessions,t);i&&(i.expressions=i.expressions.filter((u,l)=>l!==a),s&&(e.expressions=Jo(i.expressions)))},removeAllExpressions(e,r){const{threadId:t,save:a}=r.payload,s=ot(e.sessions,t);s&&(s.expressions=[],a&&(e.expressions=[]))},renameExpression(e,r){const{threadId:t,index:a,replacement:s,save:i}=r.payload,u=ot(e.sessions,t);u&&u.expressions[a]&&(u.expressions[a].label=s,i&&(e.expressions=Jo(u.expressions)))},setExpression(e,r){const{threadId:t,expression:a}=r.payload,s=ot(e.sessions,t);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,r){const{threadId:t,index:a,value:s}=r.payload,i=ot(e.sessions,t);if(i){const u=i.expressions[a];u&&(u.result=`"${s}"`,u.nakedResult=s)}},saveExpressions(e,r){const{expressions:t}=r.payload;e.expressions=Jo(t)},addSession(e,r){const{threadId:t,channelId:a,stackFrames:s,exceptions:i=[]}=r.payload,u=ot(e.sessions,t),l=s[0],{expressions:d=[]}=e;if(u)u.expressions=d;else{const p=Nu(t);e.sessions.push({tabPath:p,threadId:t,channelId:a,stackFrames:s,currentStackFrame:l,exceptions:i,expressions:d,variables:{callchain:[],expressions:[]},highlightedLines:null,activeLine:null,stopped:!0})}},updateSession(e,r){const{threadId:t,changes:a}=r.payload;e.sessions=e.sessions.map(s=>s.threadId===t?{...s,...a}:s)},removeSession(e,r){const{threadId:t}=r.payload;e.sessions=e.sessions.filter(a=>a.threadId!==t)},removeSessionByIndex(e,r){const t=r.payload;e.sessions.splice(t,1)},setSessions(e,r){const t=r.payload;e.sessions=t},setCallChainVariables(e,r){const{threadId:t,frameId:a,variables:s}=r.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===t?{...i,variables:{...i.variables,callchain:Kp((u=i.variables)==null?void 0:u.callchain,{frameId:a,items:s},"frameId")}}:i})},setExpressionVariables(e,r){const{threadId:t,variablesReference:a,variables:s}=r.payload;e.sessions=e.sessions.map(i=>{var u;return i.threadId===t?{...i,variables:{...i.variables,expressions:Kp((u=i.variables)==null?void 0:u.expressions,{variablesReference:a,items:s},"variablesReference")}}:i})},setSourceContent(e,r){const{threadId:t,content:a}=r.payload,s=ot(e.sessions,t);s&&(s.currentStackFrame.source={...s.currentStackFrame.source,content:a})},setDebuggerMeta(e,r){if(r.payload.state===Xr.ERROR){const{error:t={code:null,reason:"",type:ps.SOCKET_ERROR}}=r.payload;if(e.meta.error={...e.meta.error,...t,time:Date.now()},(t==null?void 0:t.type)===ps.SOCKET_CLOSURE&&(t==null?void 0:t.code)===1e3&&!(t!=null&&t.reason)&&e.meta.state===Xr.DETACHED)return}e.meta.state=r.payload.state}},extraReducers:e=>{e.addCase(lv.fulfilled,r=>{r.sessions=[]})}}),{addBreakpointDecoration:$D,removeBreakpointDecoration:MD,setBreakpointsDecoration:LD,clearBreakpoints:ND,clearBreakpointsExcept:kD,clearAllBreakpoints:jD,setActiveLine:BD,addExpression:WD,renameExpression:UD,removeExpression:HD,removeAllExpressions:GD,setExpression:qD,updateExpressionAt:YD,saveExpressions:zD,addSession:VD,updateSession:KD,removeSession:JD,removeSessionByIndex:XD,setSessions:uv,setCallChainVariables:ZD,setExpressionVariables:QD,setSourceContent:eF,setDebuggerMeta:tF}=cv.actions,lv=Q("files/wipeDebuggerSessions",async(e,{getState:r,dispatch:t})=>{const{sessions:a}=r().debugger;for(const{threadId:s}of a){const i=Nu(s);t(al(i))}}),fv=Q("files/removeDebuggerSessionsNotIn",async(e,{getState:r,dispatch:t})=>{const{threadIds:a}=e,{sessions:s}=r().debugger,i=[],u=s.filter(l=>{const d=a.includes(l.threadId);return d||i.push(l.threadId),d});return t(uv(u)),{staleThreadIds:i}}),Ts=Q("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),ws=Q("models/save",async(e,{getState:r,dispatch:t,rejectWithValue:a})=>{const{tabs:s}=r().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(()=>{t(Cn())},As),{...u,path:i.path,content:e.content||{toJSON:!0,dataClasses:[],extraProperties:{}}}}catch{return a("Error while saving the model")}}),rF=Q("models/open",async(e,{dispatch:r,getState:t})=>{const{tabs:a}=t().root,s=a.find(i=>i.path==="models/main");if(s)return r(Dt(s)),s;r(Ts())}),nF=Q("model/rename-dataclass",async(e,{getState:r,dispatch:t})=>{var m,_;const{dataclassId:a,selectionId:s,name:i}=e;let u=r();if(!u.explorer.find(S=>S.path===v.FolderRootPath.CLASSES))throw new Error("Classes folder was not found!");u=r();const d={class:{found:!1,newNameTaken:!1,file:null,filename_update:i},entity:{found:!1,newNameTaken:!1,file:null,filename_update:`${i}Entity`},selection:{found:!1,newNameTaken:!1,file:null,filename_update:`${i}Selection`}};(_=(m=u.explorer.find(S=>S.path===v.FolderRootPath.CLASSES))==null?void 0:m.children)==null||_.forEach(S=>{var w;S.path===`Classes/${a}___[<QODLY_ID>]`?(w=S.children)==null||w.forEach(T=>{var P,L,I,N;const D={...T,name:(P=T.info)==null?void 0:P.filename};((L=T.info)==null?void 0:L.filename)===a?(d.class.found=!0,d.class.file=D):((I=T.info)==null?void 0:I.filename)===`${a}Entity`?(d.entity.found=!0,d.entity.file=D):((N=T.info)==null?void 0:N.filename)===s&&(d.selection.found=!0,d.selection.file=D)}):(S.name===d.class.filename_update&&(d.class.newNameTaken=!0),S.name===d.entity.filename_update&&(d.entity.newNameTaken=!0),S.name===d.selection.filename_update&&(d.selection.newNameTaken=!0))});const p=Object.entries(d).reduce((S,w)=>{const[T,D]=w;return D.found?D.newNameTaken?[...S,{type:"error",message:`Cannot rename ${T} file to ${D.filename_update} because it already exists. The existing file will be used instead!`}]:S:[...S,{type:"warning",message:`${a} ${T} file was not found`}]},[]);p.length>0&&t(or({message:"The following errors were encountered during dataclass rename:",views:{tips:p}}));const h=Object.values(d).filter(S=>S.found&&S.file&&!S.newNameTaken);await Promise.all(h.map(async S=>await t(zn({file:S.file,newname:S.filename_update}))))}),Wa={DATACLASS_DELETE:"dataclass.delete",DATACLASS_DRAGGABLE:"dataclass.draggable"},aF={model:{dataClasses:{},collections:{},extraProperties:{}},draft:{dataClasses:{},collections:{},extraProperties:{}},flags:{[Wa.DATACLASS_DELETE]:!0,[Wa.DATACLASS_DRAGGABLE]:!0}},dv=Yt({name:"Models",initialState:aF,reducers:{setModelFlag(e,r){e.flags={...e.flags,...r.payload}}},extraReducers(e){e.addCase(Ts.fulfilled,(r,t)=>{var u;const a={},s={},i=t.payload.extraProperties||{};(u=t.payload.dataClasses)==null||u.forEach(l=>{a[l.name]=l,s[l.collectionName]=l}),r.draft.dataClasses=a,r.draft.collections=s,r.draft.extraProperties=i,r.model.dataClasses=a,r.model.collections=s,r.model.extraProperties=i}),e.addCase(Ts.rejected,r=>{r.errored=!0}),e.addCase(ws.pending,()=>{}).addCase(ws.fulfilled,(r,t)=>{const a={},s={},i=t.payload.content.extraProperties||{};t.payload.content.dataClasses.forEach(u=>{a[u.name]=u,s[u.collectionName]=u}),r.draft.dataClasses=a,r.draft.collections=s,r.draft.extraProperties=i,r.model.dataClasses=a,r.model.collections=s,r.model.extraProperties=i})}}),{setModelFlag:oF}=dv.actions;var pv=(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))(pv||{}),Vs=(e=>(e.STORAGE="storage",e.RELATEDENTITY="relatedEntity",e.RELATEDENTITIES="relatedEntities",e.CALCULATED="calculated",e.COMPOSITION="composition",e.ALIAS="alias",e))(Vs||{});const sF=e=>["string","uuid","number","long"].includes(e.type),iF=[{label:"Storage",value:"storage"},{label:"Calculated",value:"calculated"}],cF=[{title:"UUID",kind:"storage",value:"uuid",calculatedType:"uuid",calculatedKind:"storage"},{title:"Long",kind:"storage",value:"long",calculatedType:"long",calculatedKind:"storage"}],uF=[{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"}],lF=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],fF=[{label:"Expose as REST",value:"public"},{label:"Do not expose as REST",value:"publicOnServer"}],dF=[{label:"None",value:"none"},{label:"B-tree",value:"btree"},{label:"Cluster",value:"cluster"},{label:"Automatic",value:"auto"}],pF=(e,r)=>({toJSON:!0,extraProperties:r,dataClasses:e.map(t=>{var a;return{...t.data,extraProperties:{position:{x:t.position.x,y:t.position.y},panelColor:(a=t.data.extraProperties)==null?void 0:a.panelColor}}})});function hF(e,r,t){const a=e;let s=0;for(;t[`${a}${s||""}`];)s++;return`${a}${s||""}`}const hv=e=>e.kind===Vs.RELATEDENTITY,gv=e=>e.kind===Vs.RELATEDENTITIES,gF=e=>gv(e)||hv(e),vF=()=>Sr(e=>e.model),mF=()=>Sr(e=>e.model.draft.dataClasses),yF=()=>Sr(e=>e.model.draft.collections),bF=e=>Sr(r=>r.model.draft.dataClasses[e]),_F=(e,r)=>Sr(t=>t.model.draft.dataClasses[e].attributes.find(v.by("name",r))),SF=()=>Sr(e=>e.model.draft.extraProperties),EF=()=>{const e=Sr(s=>s.model.flags),r=s=>s in e?e[s]:void 0,t=r(Wa.DATACLASS_DELETE),a=r(Wa.DATACLASS_DRAGGABLE);return{deleteDataclass:t,draggableDataclass:a,flags:e}},TF=dv.reducer;function Yc(e,r){const t=e.tabs.find(({path:a})=>a===v.SETTINGS_TAB_PATH);t&&(t.flags.touched=r)}const vv={SIDEBAR_SECTION_RESIZABLE:"sidebar.section.resizable"},mv={[vv.SIDEBAR_SECTION_RESIZABLE]:!0},yv=Yt({name:"webforms",initialState:()=>{const{webforms:e}=Xn();return{...e,templates:{data:[],selectedGroup:""},datasources:{...$u.webforms.datasources,...e==null?void 0:e.datasources},flags:mv}},reducers:{toggleInspector:(e,r)=>{const{type:t}=r.payload;e.inspector[t].active=!e.inspector[t].active,e.inspector[t].active||(e.inspector[t].data=void 0)},inspect:(e,r)=>{const{type:t,data:a}=r.payload;e.inspector[t].active&&(e.inspector[t].data=a)},addComponent:(e,r)=>{e.components.push(r.payload)},editComponent:(e,r)=>{const{id:t,changes:a}=r.payload;e.components=e.components.map(s=>s.id===t?{...s,...a}:s)},removeComponent:(e,r)=>{const{payload:t}=r,a=e.components.findIndex(s=>s.id===t);a!==-1&&e.components.splice(a,1)},setSelectedGroup:(e,r)=>{e.templates.selectedGroup=r.payload.selectedGroup},setTemplatesData:(e,r)=>{e.templates.data=r.payload},setTemplateData:(e,r)=>{const{group:t,components:a}=r.payload,s=e.templates.data.find(i=>i.group===t);s&&(s.components=a)},setDatasourcesTheme:(e,r)=>{e.datasources.theme=r.payload},setWebformsFlag(e,r){e.flags={...e.flags,...r.payload}}},extraReducers(e){e.addCase(wv.fulfilled,(r,t)=>{r.components=t.payload})}}),{toggleInspector:wF,inspect:CF,addComponent:bv,editComponent:_v,removeComponent:Sv,setSelectedGroup:xF,setTemplatesData:Ev,setTemplateData:Tv,setDatasourcesTheme:OF,setWebformsFlag:RF}=yv.actions,AF=yv.reducer,ol=Re.curry((e,r)=>{var s,i;const t={...r.sharedDatasources.sources},a=(i=((s=r.root.tabs.find(v.by("path",e)))==null?void 0:s.content).metadata)==null?void 0:i.datasources;return a&&(t[e]=a),Re.cloneDeep(t)}),PF=Q("webforms/fetchTemplates",async(e,{dispatch:r,getState:t})=>{const{data:a}=t().webforms.templates,s=t().settings.session["studio.tipsBaseUrl"]||"";if(!Re.isEmpty(a))return a;try{const u=await(await fetch(`${s}/build/index.json?t=${Date.now()}`)).json();return r(Ev(u)),u}catch{return[]}}),DF=Q("webforms/fetchTemplate",async({name:e},{dispatch:r,getState:t})=>{const{data:a}=t().webforms.templates,s=a.find(i=>i.group===e);if(s&&!Re.isEmpty(s.components))return s.components;try{const u=await(await fetch(`${s==null?void 0:s.link}?t=${Date.now()}`)).json();return r(Tv({group:e,components:u})),u}catch{return[]}}),wv=Q("webforms/fetchCraftedComponents",async(e,{rejectWithValue:r})=>{try{return(await v.getNodeInfo({path:"WebForms/crafted_components.json",verb:v.DesignerRequestVerb.GET_INFO,content:!0,as:"json"})).content}catch{return r("Error while loading the crafted components")}}),FF=Q("webforms/addCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(bv(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while adding the crafted component")}}),IF=Q("webforms/editCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(_v(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while editing the crafted component")}}),$F=Q("webforms/removeCraftedComponent",async(e,{dispatch:r,rejectWithValue:t,getState:a})=>{try{r(Sv(e));const{webforms:{components:s}}=a();v.setCraftedComponents(s)}catch{return t("Error while removing the crafted component")}}),sl=Q("datasources/add-datasource",async(e,{getState:r,rejectWithValue:t})=>{var a,s;try{const i=r(),u=e.datasource,l=!!u.namespace,d=[];if(l){const p={...i.sharedDatasources.sources,[u.namespace]:[...i.sharedDatasources.sources[u.namespace],u]};d.push(...p[u.namespace]),await v.setSharedSources(p)}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),t("Error while adding the datasource")}}),il=Q("datasources/edit-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const{namespace:a,path:s}=e,i=r(),u=!!e.namespace,l=ol(s,i);let d=Re.defaultTo(l[a||s],[]);const p=e.changes??{[e.property]:e.value};return d=d.map(h=>h.id===e.id?{...h,...p}:h),u&&await v.setSharedSources({...i.sharedDatasources.sources,[e.namespace]:d}),{list:d,path:e.path,namespace:e.namespace}}catch{t(`Error while editing datasource ${e.id}`)}}),MF=e=>e.type===Kn.fulfilled.type,Kn=Q("datasources/rename-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const a=r(),s=!!e.namespace,i=e.namespace||e.path,u=ol(e.path,a),l=Re.defaultTo(u[i],[]),d=new RegExp(`^${e.id}\\b`,"");if(l.forEach(p=>{var m;const h=(v.isObjectDatasource(p)||!v.isSimpleDatasource(p))&&p.from&&d.test(p.from);e.updateRefs&&((m=p.events)==null||m.forEach(_=>{var S,w,T,D,P;switch(_.type){case"method":{const L=_;L.params.forEach(I=>{I.datasource&&Object.assign(I,{datasource:I.datasource.replace(new RegExp(`^${e.id}`,""),e.new_name)})}),L.returns&&Object.assign(L.returns,{datasource:(w=(S=L.returns)==null?void 0:S.datasource)==null?void 0:w.replace(new RegExp(`^${e.id}`,""),e.new_name)});return}case"simple-action":{const L=_;L.datasource&&Object.assign(L.datasource,{name:(T=L.datasource.name)==null?void 0:T.replace(new RegExp(`^${e.id}`,""),e.new_name),from:(D=L.datasource.from)==null?void 0:D.replace(new RegExp(`^${e.id}`,""),e.new_name),target:(P=L.datasource.target)==null?void 0:P.replace(new RegExp(`^${e.id}`,""),e.new_name)});return}default:return}})),p.id===e.id?p.id=e.new_name:h&&p.from&&(p.from=p.from.replace(new RegExp(`^${e.id}`,""),e.new_name))}),e.updateRefs){const p=v.getDatasourceId({id:e.id,namespace:e.namespace}),h=v.getDatasourceId({id:e.new_name,namespace:e.namespace});v.datasourcesSubject.next({path:e.path??"",action:v.DatasourcesActions.RENAME,old_reference:p,new_reference:h,is_shared:s})}return s&&await v.setSharedSources({...a.sharedDatasources.sources,[e.namespace]:l}),{list:l,path:e.path,namespace:e.namespace}}catch{return t(`Error while renaming datasource ${e.namespace}:${e.id}`)}}),$a=Q("datasources/delete-datasource",async(e,{getState:r,rejectWithValue:t})=>{try{const a=r(),s=!!e.namespace,i=e.namespace||e.path,l=ol(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 t(`Error while removing datasource ${e.id}`)}}),as=Q("saved_conditions/fetchSavedConditions",async(e,{rejectWithValue:r})=>{try{const{conditions:t}=await v.getSavedConditions();return t}catch{return r("Error while loading the shared conditions")}}),LF=v.queue();async function Xo(e){const r={verb:v.DesignerRequestVerb.SET_FILE_CONTENT,asText:!1,name:"saved_conditions.json",path:"",root:"shared",content:{conditions:e}};await LF(()=>v.http(v.API_PREFIX,{method:"POST",body:JSON.stringify(r),headers:new Headers({"Content-Type":"application/json"})}))}const Ks=(e,r)=>{if(e.id===r)return null;if(e.type==="reference"&&e.ref===r)return null;if(e.type==="combination"&&e.conditions){const t=e.conditions.map(a=>Ks(a,r)).filter(Boolean);return t.length===1?{...t[0],id:e.id}:{...e,conditions:t}}return e},Js=e=>{if(e.id){if(e.type==="combination"&&e.conditions)return{...e,conditions:e.conditions.map(Js)}}else return{...e,id:Ba.generate()};return e},Cv=Yt({name:"shared-conditions",initialState:{state:"unknown",conditions:[]},reducers:{updateSavedConditions:(e,r)=>(e.conditions=r.payload.conditions,Xo(r.payload.conditions),e),setSavedCondition:(e,r)=>{const{payload:t}=r;return e.conditions=e.conditions.map(a=>a.id===t.id?{...Js(t.condition),id:a.id}:a),Xo(e.conditions),e},addSavedCondition:(e,r)=>(e.conditions=[...e.conditions,r.payload],Xo(e.conditions),e),removeSavedCondition:(e,r)=>{const{id:t}=r.payload;return e.conditions=e.conditions.map(a=>Ks(a,t)).filter(Boolean),Xo(e.conditions),e},initSavedConditions:(e,r)=>(e.conditions=r.payload.conditions,e)},extraReducers(e){e.addCase(as.pending,r=>({...r,state:"loading"})).addCase(as.fulfilled,(r,{payload:t})=>({state:"loaded",conditions:t})).addCase(as.rejected,(r,t)=>({...r,state:"error",error:t.payload||"Error while loading the shared conditions"}))}}),{updateSavedConditions:NF,setSavedCondition:kF,addSavedCondition:jF,removeSavedCondition:xv,initSavedConditions:BF}=Cv.actions,WF=Cv.reducer,Ua=Yt({name:"root",initialState:()=>{const e=Xn();return{filesLoading:!1,tabs:e.tabs||[],activeTab:e.activeTab,recent:e.recent||[],clipboard:null}},reducers:{copyToClipBoard(e,r){e.clipboard=r.payload},setPanelState(e,r){const{path:t,...a}=r.payload;e.tabs.forEach(s=>{s.path===t&&(s.view||(s.view={panel:{isOpen:!1,type:"",current:""}}),Object.assign(s.view.panel,a))})},openSettingsTab(e){const r={date:new Date().toISOString(),flags:{confirmed:!0},view:{panel:{isOpen:!1,type:"",current:""}},extra:{editor:{key:"editors:settings"}},name:"Settings",path:v.SETTINGS_TAB_PATH,type:v.FileFolderType.SETTINGS,initialContent:{},content:{}};let t=e.tabs.find(a=>a.path===r.path);if(t||(e.tabs.push(r),t=e.tabs[e.tabs.length-1]),e.activeTab!==r.path){const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);e.activeTab=r.path,t.weight=((a==null?void 0:a.weight)||0)+1}},addDataSource(e,r){var i;const{payload:{path:t,datasourceDef:a}}=r,s=e.tabs.find(u=>u.path===t);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,r){var i;const{payload:{path:t,stateDef:a}}=r,s=e.tabs.find(u=>u.path===t);s&&(s.content.metadata.states=s.content.metadata.states||[ja],(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,r){const{path:t,id:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:xh(s.content,a)}:s)},editWebformState(e,r){const{path:t,state:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,states:s.content.metadata.states.map(i=>i.id===a.id?a.conditions?{...a,conditions:Js(a.conditions)}:a:i)}}}:s)},resetComponentState(e,r){const{path:t,id:a,state:s}=r.payload;e.tabs=e.tabs.map(i=>i.path===t?{...i,flags:{...i.flags,touched:!0,confirmed:!0},content:{...i.content,components:{...i.content.components,[a]:{...i.content.components[a],custom:{...Re.omit(i.content.components[a].custom,`states:${s.id}`)}}}}}:i)},setDefaultWebformStates(e,r){const{path:t,states:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,touched:!0,confirmed:!0},content:{...s.content,metadata:{...s.content.metadata,defaultStates:a.map(({id:i})=>i)}}}:s)},addDefaultWebformState(e,r){const{payload:t}=r;e.tabs=e.tabs.map(a=>{var s;return a.path===t.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)||[],t.state.id]))}}}:a})},removeDefaultWebformState(e,r){const{payload:t}=r;e.tabs=e.tabs.map(a=>{var s;return a.path===t.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!==t.state.id)}}}:a})},removeDataSource(e,r){const{path:t,datasourceID:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...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,r){const{payload:{path:t,datasourceArr:a}}=r;e.tabs=e.tabs.map(s=>{var i;return s.path===t?{...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,r){e.tabs=r.payload},closeTab(e,r){const t=r.payload;e.tabs.splice(t,1);const a=e.tabs.reduce((s,i)=>(i==null?void 0:i.weight)>((s==null?void 0:s.weight)||0)?i:s,null);e.activeTab=(a==null?void 0:a.path)||""},closeOthers(e,r){e.tabs=e.tabs.filter(t=>t.path===r.payload),e.activeTab=r.payload},closeAllTabs(e){e.tabs=[],e.activeTab=""},closeRightTabs(e,r){e.tabs.splice(r.payload+1),e.activeTab=e.tabs[r.payload].path},closeLeftTabs(e,r){e.tabs.splice(0,r.payload)},closeSavedTabs(e){e.tabs=e.tabs.filter(({flags:{touched:t}})=>t);const r=e.tabs.reduce((t,a)=>(a==null?void 0:a.weight)>((t==null?void 0:t.weight)||0)?a:t,null);e.activeTab=(r==null?void 0:r.path)||""},confirmTab(e,r){const t=e.tabs.find(({path:a})=>a===r.payload);t&&(t.flags.confirmed||Ua.caseReducers.setTabFlags(e,{type:r.type,payload:{path:r.payload,flags:{confirmed:!0}}}))},selectTab(e,r){const t=e.tabs.find(({path:s})=>s===r.payload);if(!t||e.activeTab===r.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);t.weight=a?(a.weight||0)+1:1,e.activeTab=r.payload},openTabUnselected(e,r){const t=r.payload;let a=e.tabs.find(({path:i})=>t.path===i);a||(e.tabs.push(t),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,...t.extra}},selectTabByReference(e,r){const t=[v.FileFolderType.DEBUGGER],{isNew:a,...s}=r.payload;let i=s,u=e.tabs.find(({path:l})=>i.path===l);if(i.history||(i.history={stack:[],active:-1,locked:!1}),(t.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&&!t.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,p)=>(p==null?void 0:p.weight)>((d==null?void 0:d.weight)||0)?p:d,null);e.activeTab=i.path,u.weight=((l==null?void 0:l.weight)||0)+1}u.extra={...u.extra,...i.extra},u.flags={...u.flags||{},...i.flags||{}}},setContent(e,r){const{path:t,content:a,contentPath:s}=r.payload;e.tabs=e.tabs.map(i=>{if(i.path!==t)return i;let u=!1,l=i.flags.confirmed;if(typeof a=="string")u=i.initialContent!==a,l=!l&&u?!0:l;else{const d=JSON.stringify(Re.get(i.initialContent,s||"",i.initialContent)),p=JSON.stringify(Re.get(a,s||"",a));u=d!==p,l=!l&&u?!0:l}return a&&typeof a=="object"&&(s?Re.set(i.content,s,a):i.content=a),typeof a=="string"&&(i.content=a),{...i,flags:{...i.flags,touched:u,confirmed:l}}})},setTabFlags(e,r){const{path:t,flags:a}=r.payload;e.tabs=e.tabs.map(s=>s.path===t?{...s,flags:{...s.flags,...a}}:s)},setTabsFlags(e,r){const{tabs:t,flags:a}=r.payload;e.tabs=e.tabs.map(s=>t.includes(s.path)?{...s,flags:{...s.flags,...a}}:s)},setTabExtra(e,r){const{path:t,extra:a,flags:s}=r.payload;e.tabs=e.tabs.map(i=>i.path===t?{...i,extra:{...i.extra,...a},flags:s?{...i.flags,...s}:i.flags}:i)},addWebFormStyles(e,r){const{path:t,styles:a=[]}=r.payload,s=e.tabs.find(i=>i.path===t);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,r){return e.tabs=e.tabs.map(t=>t.path===r.payload.path?r.payload:t),e},setHistoryContent(e,r){const t=r.payload;e.tabs=e.tabs.map(a=>{var s;return a.path!==t?a:(a.history&&(a.history.stack=[...(s=a.history)==null?void 0:s.stack.slice(0,a.history.active+1),a.content],a.history.active=a.history.stack.length-1),{...a})})},unlockHistory(e,r){const t=r.payload;e.tabs=e.tabs.map(a=>a.path!==t?a:(a.history&&(a.history.locked=!1),{...a}))},undo(e){e.tabs=e.tabs.map(r=>r.path!==e.activeTab?r:(r.history&&r.history.active>0&&(r.history.locked=!0,r.history.active--,r.content=r.history.stack[r.history.active]),{...r}))},redo(e){e.tabs=e.tabs.map(r=>r.path!==e.activeTab?r:(r.history&&r.history.active<r.history.stack.length-1&&(r.history.locked=!0,r.history.active++,r.content=r.history.stack[r.history.active]),{...r}))}},extraReducers:e=>{e.addCase(vu,(r,t)=>{if(t.payload.settingsKey==="studio.enablePreview"&&t.payload.value===!1){const a=r.tabs.find(({flags:{confirmed:s}})=>s===!1);a&&Ua.caseReducers.setTabFlags(r,{type:"",payload:{path:a.path,flags:{confirmed:!0}}})}}),e.addCase(av.fulfilled,(r,t)=>{if(!t.payload)return;const{content:a,line:s,path:i}=t.payload,u=r.tabs.find(l=>l.path===i);if(u&&typeof u.content=="string"){const l=u.content.trim().split(`
100
100
  `);l.splice(s,0,a),u.content=l.join(`
101
101
  `)}}),e.addCase(Vn.pending,(r,t)=>{const{tab:a}=t.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(Vn.fulfilled,(r,t)=>{if(!t.payload)return;const a=r.tabs.find(({path:s})=>{var i;return s===((i=t.payload)==null?void 0:i.path)});if(a){switch(a.content=t.payload.content,a.date=t.payload.date,a.initialContent=t.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}t.payload.errors.length>0&&v.toastSubject.next({kind:"error",message:t.payload.errors})}}),e.addCase(Vn.rejected,()=>{v.toastSubject.next({kind:"danger",message:"Cannot save file"})}),e.addCase(sv.fulfilled,(r,t)=>{const a=[...t.payload.files];r.tabs=r.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(ns.pending,(r,t)=>{r.tabs=r.tabs.map(a=>a.path===t.meta.arg.path?{...a,flags:{...a.flags,loading:!0}}:a)}),e.addCase(ns.fulfilled,(r,t)=>{const a=t.payload;if(a){const s=t.meta.arg;r.tabs=r.tabs.map(i=>{if(i.name===s.name&&i.type===s.type){const u=i.extra||{};return i.type===v.FileFolderType.METHOD?(u.attributes=v.parseAttributes(a.content),a.content=v.addAttributesToContent(a.content,{})):i.type===v.FileFolderType.SETTINGS&&(a.content={}),{...i,initialContent:a.content,content:a.content,date:a.date,flags:{enabled:i.flags.enabled,confirmed:i.flags.confirmed},extra:u}}return i})}}),e.addCase(ns.rejected,(r,t)=>{const a=t.meta.arg.path;r.tabs=r.tabs.map(s=>s.path===a?{...s,flags:{...s.flags,loading:!1}}:s)}),e.addCase(tl.fulfilled,(r,t)=>{if(!t.payload)return;const{line:a,offset:s}=t.meta.arg,i=r.tabs.find(({path:u})=>{var l;return u===((l=t.payload)==null?void 0:l.path)});i&&(i.extra={...i.extra,initialLineInfo:{line:a,offset:s,lastModification:Date.now()}})}),e.addCase(ov.fulfilled,(r,t)=>{if(!t.payload)return;const{selection:a}=t.meta.arg,s=r.tabs.find(({path:i})=>{var u;return i===((u=t.payload)==null?void 0:u.path)});s&&(s.extra={...s.extra,initialSelectionInfo:{selection:a,lastModification:Date.now()}})}),e.addCase(zn.fulfilled,(r,t)=>{t.payload.new!==t.payload.old&&(r.tabs=[...r.tabs].map(a=>a.path===t.payload.old.path?{...a,path:t.payload.new.path,name:t.payload.new.name}:a),r.activeTab===t.payload.old.path&&(r.activeTab=t.payload.new.path))}),e.addCase(_u.pending,(r,t)=>{const a=t.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(_u.fulfilled,(r,t)=>{const{deleted:a,node:s}=t.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(r.tabs=r.tabs.filter(u=>u.path!==i),r.recent=r.recent.filter(({path:u})=>i!==u),r.tabs.length){r.activeTab=r.tabs[r.tabs.length-1].path;return}r.activeTab=""}),e.addCase(Su.pending,(r,t)=>{const a=t.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(Su.fulfilled,(r,t)=>{const{node:a}=t.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(Ia.fulfilled,(r,t)=>{const{draggedNode:a,newLocation:s}=t.meta.arg;if(r.tabs.find(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`))return r.tabs=r.tabs.map(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`?{...i,path:`${s.path}/${a.name}.${a.ext}`}:i),r.recent=r.recent.map(i=>i.path===`${a.path}${a.ext?`.${a.ext}`:""}`?{...i,path:`${s.path}/${a.name}.${a.ext}`}:i),r.activeTab=`${s.path}/${a.name}.${a.ext}`,r}),e.addCase(ws.fulfilled,(r,t)=>{const a=r.tabs.find(s=>s.path===t.payload.path);a&&(a.flags.touched=!1,a.flags.confirmed=!0,a.date=t.payload.date,a.content=t.payload.content,a.initialContent=t.payload.content)}),e.addCase(iv.fulfilled,(r,t)=>{var i;if(!((i=t.payload)!=null&&i.path))return;const a=r.tabs.find(v.by("path",t.payload.path));if(!a)return;a.content=a.content+`
102
102
  exposed Function ${t.meta.arg.name}()