@powerhousedao/connect 1.0.0-sky.189 → 1.0.4
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/.env +0 -3
- package/dist/assets/ArrowFilledRight-blx8xu7X-D3d8PUWh.js.map +1 -1
- package/dist/assets/ArrowLeft-7pYNK4eX-8ZR_YHAJ.js.map +1 -1
- package/dist/assets/ArrowUp-Bbr_dwo_-C5ppCQo4.js.map +1 -1
- package/dist/assets/BarChart-B0G05Nfd-CHDJ7OaJ.js.map +1 -1
- package/dist/assets/BaseArrowLeft-DBzhFHMt-Dkbf2sWs.js.map +1 -1
- package/dist/assets/BaseArrowRight-DYQTBWAs-CkkPllYm.js.map +1 -1
- package/dist/assets/Braces-N-sH2Zyc-3LcexUsR.js.map +1 -1
- package/dist/assets/Branch-CWdBw1_P-CmGdOXsI.js.map +1 -1
- package/dist/assets/BrickGlobe-67zaG6_H-DP0By6z_.js.map +1 -1
- package/dist/assets/Briefcase-CedW3KRR-DO5_k15F.js.map +1 -1
- package/dist/assets/Calendar-C-6HV96D-YetudWvP.js.map +1 -1
- package/dist/assets/Caret-Ep0j0fz2-By3ojfim.js.map +1 -1
- package/dist/assets/CaretDown-3X7LFYBf-C43xdKg8.js.map +1 -1
- package/dist/assets/CaretSort-BkGdLETT-DVOzEEqR.js.map +1 -1
- package/dist/assets/Check-DV-U4AEq-B582NMZp.js.map +1 -1
- package/dist/assets/CheckCircle-DI5fEgGd-CVF4LDhR.js.map +1 -1
- package/dist/assets/CheckCircleFill-C-F0v5mB-BSW1YMqM.js.map +1 -1
- package/dist/assets/Checkmark-BXnfChpo-CyQitGI2.js.map +1 -1
- package/dist/assets/ChevronDown-ouBxrU-k-eUsCPXcB.js.map +1 -1
- package/dist/assets/Circle-n3-Wh4HS-8dOehHQf.js.map +1 -1
- package/dist/assets/CircleInfo-BhZY3C2Q-CZgYK1h2.js.map +1 -1
- package/dist/assets/ClockFill-Bd0t48q7-CcfHiJtH.js.map +1 -1
- package/dist/assets/CloudSlash-B-zJBjaD-CxVyp-Ac.js.map +1 -1
- package/dist/assets/Collapse-DRDB8Czs-CGcuZQgy.js.map +1 -1
- package/dist/assets/Connect-Dme-qfKq-CgniLji8.js.map +1 -1
- package/dist/assets/Discord-CAS0Cj7s-CcsBWpnf.js.map +1 -1
- package/dist/assets/Drive-GMcgBcIY-CzahDx9j.js.map +1 -1
- package/dist/assets/Ellipsis-XK8AwMEC-BuVBeYhB.js.map +1 -1
- package/dist/assets/Error-BmIZ2ZUy-CphzuMLn.js.map +1 -1
- package/dist/assets/Exclamation-CVsNS_QS-DLccamql.js.map +1 -1
- package/dist/assets/FilesEarmark-CyrCQy8E-Bhut4E02.js.map +1 -1
- package/dist/assets/FolderClose-DG_qHisc-CH6NoBuu.js.map +1 -1
- package/dist/assets/FolderOpen-kDoWFkJO-Cciutkdg.js.map +1 -1
- package/dist/assets/FolderPlus-CSBSl9lZ-CifD0ek9.js.map +1 -1
- package/dist/assets/Forum-DZ-CkLFh-BwabccAX.js.map +1 -1
- package/dist/assets/Gear-cUlHJ4q6-B9R2l_9_.js.map +1 -1
- package/dist/assets/Github-0PLiINY0-CjkZIHCO.js.map +1 -1
- package/dist/assets/Globe-CIYqVkpa-CL530H46.js.map +1 -1
- package/dist/assets/GlobeWww-DN4yKujh-Ci7aa5CE.js.map +1 -1
- package/dist/assets/Hdd-Dn_LdJIh-CJ6x9Bve.js.map +1 -1
- package/dist/assets/History-BP4SmaS_-P4WBKyqX.js.map +1 -1
- package/dist/assets/InfoSquare-C98JaLiz-yPcGR71f.js.map +1 -1
- package/dist/assets/Link-BF7aZjVu-CXIVQOz6.js.map +1 -1
- package/dist/assets/Linkedin-DJwIkS6q-Dkb5Tp_Z.js.map +1 -1
- package/dist/assets/Lock-PyaFHdNS-D_qxRTye.js.map +1 -1
- package/dist/assets/M-DozhhPMY-DBQw97P_.js.map +1 -1
- package/dist/assets/Pencil-D7lvxXIP-D830iveq.js.map +1 -1
- package/dist/assets/People-CUB8LYKf-CyJmMqcw.js.map +1 -1
- package/dist/assets/Person-DuL4PQzm-ttQR0nPy.js.map +1 -1
- package/dist/assets/Plus-DPFWGJM4-BztpK8li.js.map +1 -1
- package/dist/assets/PlusCircle-BEnWRjHa-w5zztKGx.js.map +1 -1
- package/dist/assets/PowerhouseLogoSmall-CmO95IAS-CDGLkst3.js.map +1 -1
- package/dist/assets/Project-BlXuclr0-EsBam9d0.js.map +1 -1
- package/dist/assets/RedoArrow-BJeEsiph-BbidqIFP.js.map +1 -1
- package/dist/assets/Renown-6m7hx37h-CItksi2j.js.map +1 -1
- package/dist/assets/RenownHover-CQ0TZHZv-cYQgnwQW.js.map +1 -1
- package/dist/assets/Ring-DKv0gnwT-CDHLz87h.js.map +1 -1
- package/dist/assets/Save-BBxj68pn-BkUvn89C.js.map +1 -1
- package/dist/assets/Search-YUJuRBLe-CecGUkZA.js.map +1 -1
- package/dist/assets/Server-Bfkkjui1-lBan_3Dm.js.map +1 -1
- package/dist/assets/Settings-mbbylBS5-Cca-sV-_.js.map +1 -1
- package/dist/assets/Synced-DKJXzPiw-Cui8pDsS.js.map +1 -1
- package/dist/assets/Syncing-aT9WSMFf-2VhhyCcX.js.map +1 -1
- package/dist/assets/Trash-CgSbHk-P-DIYkVMER.js.map +1 -1
- package/dist/assets/TrashFill-DN50ercb-Oqx67xXN.js.map +1 -1
- package/dist/assets/VariantArrowLeft-CnuX59_e-6Zt_Q3tm.js.map +1 -1
- package/dist/assets/VerticalDots-C8QYf7et-CCxZfvjq.js.map +1 -1
- package/dist/assets/WarningFill-WowAvi5P-D5XCckM6.js.map +1 -1
- package/dist/assets/XTwitter-k3Pt8itk-mvLk8TKx.js.map +1 -1
- package/dist/assets/Xmark-8qnJCs2Y-CZ3t0Fap.js.map +1 -1
- package/dist/assets/XmarkLight-GHzDR5_F-CloMvuzt.js.map +1 -1
- package/dist/assets/Youtube-i8V0IXUU-Bkiwoayp.js.map +1 -1
- package/dist/assets/app-BdM_bCqD.js +842 -0
- package/dist/assets/app-BdM_bCqD.js.map +1 -0
- package/dist/assets/{app-loader-B-uyrf_f.js → app-loader-B7xllAoS.js} +3 -3
- package/dist/assets/app-loader-B7xllAoS.js.map +1 -0
- package/dist/assets/app-loader-D5wPX62N.css +1 -0
- package/dist/assets/browser-CwKAjz_f.js +43 -0
- package/dist/assets/browser-CwKAjz_f.js.map +1 -0
- package/dist/assets/{ccip-C5sF4CPo.js → ccip-BoVyVgwR.js} +2 -2
- package/dist/assets/ccip-BoVyVgwR.js.map +1 -0
- package/dist/assets/content-BmCNR4Pw.js +6 -0
- package/dist/assets/content-BmCNR4Pw.js.map +1 -0
- package/dist/assets/{editor-OCrWWNue.js → editor-Cma-7Z7k.js} +2 -2
- package/dist/assets/editor-Cma-7Z7k.js.map +1 -0
- package/dist/assets/{editor-CKVy7XQ_.js → editor-IMwm8pim.js} +2 -2
- package/dist/assets/editor-IMwm8pim.js.map +1 -0
- package/dist/assets/{editor-BehREuht.js → editor-vgD9wEAH.js} +2 -2
- package/dist/assets/editor-vgD9wEAH.js.map +1 -0
- package/dist/assets/editors-DQC0rqOg.js +347 -0
- package/dist/assets/editors-DQC0rqOg.js.map +1 -0
- package/dist/assets/{index-BQercxn9.js → index-BP2fj1j6.js} +2 -2
- package/dist/assets/index-BP2fj1j6.js.map +1 -0
- package/dist/assets/index-SwNHx8hV.js +3 -0
- package/dist/assets/{index-DLIqrgw1.js.map → index-SwNHx8hV.js.map} +1 -1
- package/dist/assets/{index-T6Et30Eh-DxlgfU62.js → index-T6Et30Eh-CdVwpIBO.js} +2 -2
- package/dist/assets/index-T6Et30Eh-CdVwpIBO.js.map +1 -0
- package/dist/assets/{main.DyaR6eIt.js → main.DQ-aV7Qq.js} +2 -2
- package/dist/assets/{main.DyaR6eIt.js.map → main.DQ-aV7Qq.js.map} +1 -1
- package/dist/assets/{root-gagZfA5U.js → root-BKJF0Yl6.js} +2 -2
- package/dist/assets/root-BKJF0Yl6.js.map +1 -0
- package/dist/assets/{router-Bg0sntVG.js → router-Hd499Vrp.js} +5 -5
- package/dist/assets/router-Hd499Vrp.js.map +1 -0
- package/dist/assets/useUiNodes-Ch-W4vsB.js +107 -0
- package/dist/assets/useUiNodes-Ch-W4vsB.js.map +1 -0
- package/dist/index.html +4 -5
- package/dist/service-worker.js +1 -1
- package/dist/service-worker.js.map +1 -1
- package/dist/studio/cli.js +1 -0
- package/dist/studio/index.d.ts +5 -0
- package/dist/studio/index.js +32 -11
- package/dist/studio/server.d.ts +2 -0
- package/dist/swEnv.js +3 -4
- package/dist/vite-envs.sh +6 -15
- package/package.json +133 -150
- package/dist/assets/app-CYieqxAC.js +0 -1207
- package/dist/assets/app-CYieqxAC.js.map +0 -1
- package/dist/assets/app-loader-B-uyrf_f.js.map +0 -1
- package/dist/assets/app-loader-DoI5W0wZ.css +0 -1
- package/dist/assets/browser-j9PCU6X2.js +0 -43
- package/dist/assets/browser-j9PCU6X2.js.map +0 -1
- package/dist/assets/ccip-C5sF4CPo.js.map +0 -1
- package/dist/assets/content-oOo0Zcrz.js +0 -92
- package/dist/assets/content-oOo0Zcrz.js.map +0 -1
- package/dist/assets/editor-BehREuht.js.map +0 -1
- package/dist/assets/editor-BiJUUdCl.js +0 -2
- package/dist/assets/editor-BiJUUdCl.js.map +0 -1
- package/dist/assets/editor-CKVy7XQ_.js.map +0 -1
- package/dist/assets/editor-OCrWWNue.js.map +0 -1
- package/dist/assets/editors-CXzpYxzV.js +0 -380
- package/dist/assets/editors-CXzpYxzV.js.map +0 -1
- package/dist/assets/index-BQercxn9.js.map +0 -1
- package/dist/assets/index-DLIqrgw1.js +0 -3
- package/dist/assets/index-T6Et30Eh-DxlgfU62.js.map +0 -1
- package/dist/assets/root-gagZfA5U.js.map +0 -1
- package/dist/assets/router-Bg0sntVG.js.map +0 -1
- package/dist/assets/useUiNodes-C_gncg9W.js +0 -107
- package/dist/assets/useUiNodes-C_gncg9W.js.map +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import{FILE as U,PUBLIC as P,CLOUD as G,LOCAL as M,DRIVE as k,FOLDER as F,defaultDriveOptions as Qt,debugNodeOptions as N,defaultFileOptions as Wt,defaultFolderOptions as Kt,DELETE as Xt,useUiNodesContext as Nt,SUCCESS as Vt,toast as z}from"@powerhousedao/design-system";import{useCallback as A,useEffect as Lt,useMemo as Z}from"react";import{x as J,V as Mt,s as _t,j as Ft,n as jt,h as te,t as ee,k as ne,p as oe,J as re,W as ie,H as se,X as Pt}from"./app-BdM_bCqD.js";import{c as $t}from"./app-loader-B7xllAoS.js";function ce(a,l=50){let t;const i=[];return v=>{t&&clearTimeout(t);const w=i.findIndex(D=>D.scope===v.scope&&D.index===v.index);if(w>-1){const D=i[w];D.type===v.type&&JSON.stringify(v.input)===JSON.stringify(D.input)||console.warn("Two conflicting operations were dispatched:",D,v),i[w]=v}else i.push(v);return new Promise((D,c)=>{t=setTimeout(()=>{a(i).then(D).catch(c)},l)})}}const ae=J(new Map),Q=J(void 0),_=J(a=>a(Q),(a,l,t)=>{const i=a(Q),v=a(ae);return!(t!=null&&t.document)&&(t==null?void 0:t.status)==="LOADING"&&(t.document=v.get(`${t.driveId}:${t.documentId}`)),(i==null?void 0:i.driveId)!==(t==null?void 0:t.driveId)||(i==null?void 0:i.documentId)!==(t==null?void 0:t.documentId)||(i==null?void 0:i.documentType)!==(t==null?void 0:t.documentType)||(i==null?void 0:i.status)!==(t==null?void 0:t.status)||!!(i!=null&&i.document)!=!!(t!=null&&t.document)||i!=null&&i.document&&(t!=null&&t.document)&&Mt(i.document)!==Mt(t.document)?((t==null?void 0:t.status)==="LOADED"&&v.set(`${t.driveId}:${t.documentId}`,t.document),l(Q,t),!0):!1}),de=J(a=>{var l;return(l=a(_))==null?void 0:l.document},(a,l,t)=>{const i=a(_);if(i)t?l(_,{...i,document:t}):l(_,void 0);else throw new Error("fileNodeDocument is undefined")});function le(a){const{selectedNode:l,selectedDriveNode:t,openFile:i,addOperations:v,onStrandUpdate:w,fetchDocument:D}=a,[c,r]=_t(_),s=(t==null?void 0:t.sharingType)!=="LOCAL"&&(t==null?void 0:t.syncStatus)===void 0,u=l==null?void 0:l.driveId,n=l==null?void 0:l.id,d=l==null?void 0:l.kind,S=d==="FILE"?l==null?void 0:l.documentType:void 0,[x,O]=_t(de),R=A(async(y,h,g)=>{const e=await(s?D(y,h,g):i(y,h));if(e instanceof Error)throw e;return e},[D,s,i]);Lt(()=>{if(!u||!n||!S){c&&r(void 0);return}(u!==(c==null?void 0:c.driveId)||n!==c.documentId||S!==c.documentType)&&r({driveId:u,documentId:n,documentType:S,document:void 0,status:"LOADING"})&&R(u,n,S).then(h=>r(h?{driveId:u,documentId:n,documentType:S,document:h,status:"LOADED"}:{driveId:u,documentId:n,documentType:S,document:h,status:"ERROR"})).catch(h=>{Ft.error(h),r({driveId:u,documentId:n,documentType:S,document:void 0,status:"ERROR"})})},[l,n,S,u,R,c,r]),Lt(()=>!(c!=null&&c.driveId)||!c.documentId||!c.documentType?void 0:w(h=>{h.driveId===c.driveId&&h.documentId===c.documentId&&R(c.driveId,c.documentId,c.documentType).then(O).catch(Ft.error)}),[c==null?void 0:c.driveId,c==null?void 0:c.documentId,c==null?void 0:c.documentType,w,R,O]);const I=Z(()=>{if(u&&n&&d===U)return ce(y=>v(u,n,y))},[v,u,n,d]),T=d===U&&(c==null?void 0:c.driveId)===u&&(c==null?void 0:c.documentId)===n;return Z(()=>({fileNodeDocument:c,selectedDocument:T?x:void 0,setSelectedDocument:O,addOperationToSelectedDocument:I}),[c,T,x,O,I])}const V=localStorage.getItem("CONNECT_DEBUG")==="true",ue=[{sharingType:P,label:"Public Drives"},{sharingType:G,label:"Secure Cloud Drives"},{sharingType:M,label:"My Local Drives"}],Bt=a=>$t.drives.sections[a];function W(a){const l=[...Qt];return $t.drives.sections[a].allowDelete&&l.push(Xt),V&&l.push(...N),l}function K(){const a=[...Wt];return V&&a.push(...N),a}function X(){const a=[...Kt];return V&&a.push(...N),a}function fe(){return{[M]:{[k]:W(M),[F]:X(),[U]:K()},[G]:{[k]:W(G),[F]:X(),[U]:K()},[P]:{[k]:W(P),[F]:X(),[U]:K()}}}const xe=ue.filter(a=>Bt(a.sharingType).enabled).map(a=>{const l=Bt(a.sharingType);return{...a,disableAddDrives:!l.allowAdd}});function zt(a){var D;const{documentDrives:l}=jt();if(!a)return{drive:null,remoteUrl:null,isRemoteDrive:!1};const t=l.find(c=>c.state.global.id===a),i=t==null?void 0:t.state.local.triggers.find(c=>c.type==="PullResponder"),{remoteUrl:v}=(t==null?void 0:t.state.global)||{},w=!!v||!!i;return{drive:t,remoteUrl:v||((D=i==null?void 0:i.data)==null?void 0:D.url),isRemoteDrive:w}}var tt={exports:{}};tt.exports;(function(a){var l=function(){var t=String.fromCharCode,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",w={};function D(r,s){if(!w[r]){w[r]={};for(var u=0;u<r.length;u++)w[r][r.charAt(u)]=u}return w[r][s]}var c={compressToBase64:function(r){if(r==null)return"";var s=c._compress(r,6,function(u){return i.charAt(u)});switch(s.length%4){default:case 0:return s;case 1:return s+"===";case 2:return s+"==";case 3:return s+"="}},decompressFromBase64:function(r){return r==null?"":r==""?null:c._decompress(r.length,32,function(s){return D(i,r.charAt(s))})},compressToUTF16:function(r){return r==null?"":c._compress(r,15,function(s){return t(s+32)})+" "},decompressFromUTF16:function(r){return r==null?"":r==""?null:c._decompress(r.length,16384,function(s){return r.charCodeAt(s)-32})},compressToUint8Array:function(r){for(var s=c.compress(r),u=new Uint8Array(s.length*2),n=0,d=s.length;n<d;n++){var S=s.charCodeAt(n);u[n*2]=S>>>8,u[n*2+1]=S%256}return u},decompressFromUint8Array:function(r){if(r==null)return c.decompress(r);for(var s=new Array(r.length/2),u=0,n=s.length;u<n;u++)s[u]=r[u*2]*256+r[u*2+1];var d=[];return s.forEach(function(S){d.push(t(S))}),c.decompress(d.join(""))},compressToEncodedURIComponent:function(r){return r==null?"":c._compress(r,6,function(s){return v.charAt(s)})},decompressFromEncodedURIComponent:function(r){return r==null?"":r==""?null:(r=r.replace(/ /g,"+"),c._decompress(r.length,32,function(s){return D(v,r.charAt(s))}))},compress:function(r){return c._compress(r,16,function(s){return t(s)})},_compress:function(r,s,u){if(r==null)return"";var n,d,S={},x={},O="",R="",I="",T=2,y=3,h=2,g=[],e=0,m=0,f;for(f=0;f<r.length;f+=1)if(O=r.charAt(f),Object.prototype.hasOwnProperty.call(S,O)||(S[O]=y++,x[O]=!0),R=I+O,Object.prototype.hasOwnProperty.call(S,R))I=R;else{if(Object.prototype.hasOwnProperty.call(x,I)){if(I.charCodeAt(0)<256){for(n=0;n<h;n++)e=e<<1,m==s-1?(m=0,g.push(u(e)),e=0):m++;for(d=I.charCodeAt(0),n=0;n<8;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1}else{for(d=1,n=0;n<h;n++)e=e<<1|d,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=0;for(d=I.charCodeAt(0),n=0;n<16;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1}T--,T==0&&(T=Math.pow(2,h),h++),delete x[I]}else for(d=S[I],n=0;n<h;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1;T--,T==0&&(T=Math.pow(2,h),h++),S[R]=y++,I=String(O)}if(I!==""){if(Object.prototype.hasOwnProperty.call(x,I)){if(I.charCodeAt(0)<256){for(n=0;n<h;n++)e=e<<1,m==s-1?(m=0,g.push(u(e)),e=0):m++;for(d=I.charCodeAt(0),n=0;n<8;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1}else{for(d=1,n=0;n<h;n++)e=e<<1|d,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=0;for(d=I.charCodeAt(0),n=0;n<16;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1}T--,T==0&&(T=Math.pow(2,h),h++),delete x[I]}else for(d=S[I],n=0;n<h;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1;T--,T==0&&(T=Math.pow(2,h),h++)}for(d=2,n=0;n<h;n++)e=e<<1|d&1,m==s-1?(m=0,g.push(u(e)),e=0):m++,d=d>>1;for(;;)if(e=e<<1,m==s-1){g.push(u(e));break}else m++;return g.join("")},decompress:function(r){return r==null?"":r==""?null:c._decompress(r.length,32768,function(s){return r.charCodeAt(s)})},_decompress:function(r,s,u){var n=[],d=4,S=4,x=3,O="",R=[],I,T,y,h,g,e,m,f={val:u(0),position:s,index:1};for(I=0;I<3;I+=1)n[I]=I;for(y=0,g=Math.pow(2,2),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;switch(y){case 0:for(y=0,g=Math.pow(2,8),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;m=t(y);break;case 1:for(y=0,g=Math.pow(2,16),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;m=t(y);break;case 2:return""}for(n[3]=m,T=m,R.push(m);;){if(f.index>r)return"";for(y=0,g=Math.pow(2,x),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;switch(m=y){case 0:for(y=0,g=Math.pow(2,8),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;n[S++]=t(y),m=S-1,d--;break;case 1:for(y=0,g=Math.pow(2,16),e=1;e!=g;)h=f.val&f.position,f.position>>=1,f.position==0&&(f.position=s,f.val=u(f.index++)),y|=(h>0?1:0)*e,e<<=1;n[S++]=t(y),m=S-1,d--;break;case 2:return R.join("")}if(d==0&&(d=Math.pow(2,x),x++),n[m])O=n[m];else if(m===S)O=T+T.charAt(0);else return null;R.push(O),n[S++]=T+O.charAt(0),d--,T=O,d==0&&(d=Math.pow(2,x),x++)}}};return c}();a!=null?a.exports=l:typeof angular<"u"&&angular!=null&&angular.module("LZString",[]).factory("LZString",function(){return l})})(tt);var pe=tt.exports;const me=te(pe),he=`... on RealWorldAssets {
|
|
2
|
+
state {
|
|
3
|
+
portfolio {
|
|
4
|
+
__typename
|
|
5
|
+
... on FixedIncome {
|
|
6
|
+
name
|
|
7
|
+
CUSIP
|
|
8
|
+
purchaseDate
|
|
9
|
+
purchasePrice
|
|
10
|
+
purchaseProceeds
|
|
11
|
+
salesProceeds
|
|
12
|
+
totalDiscount
|
|
13
|
+
spvId
|
|
14
|
+
}
|
|
15
|
+
... on Cash {
|
|
16
|
+
id
|
|
17
|
+
balance
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
transactions {
|
|
21
|
+
id
|
|
22
|
+
type
|
|
23
|
+
entryTime
|
|
24
|
+
cashBalanceChange
|
|
25
|
+
fees {
|
|
26
|
+
id
|
|
27
|
+
serviceProviderFeeTypeId
|
|
28
|
+
amount
|
|
29
|
+
}
|
|
30
|
+
txRef
|
|
31
|
+
cashTransaction {
|
|
32
|
+
id
|
|
33
|
+
assetId
|
|
34
|
+
amount
|
|
35
|
+
entryTime
|
|
36
|
+
tradeTime
|
|
37
|
+
settlementTime
|
|
38
|
+
accountId
|
|
39
|
+
counterPartyAccountId
|
|
40
|
+
}
|
|
41
|
+
fixedIncomeTransaction {
|
|
42
|
+
id
|
|
43
|
+
assetId
|
|
44
|
+
amount
|
|
45
|
+
entryTime
|
|
46
|
+
tradeTime
|
|
47
|
+
settlementTime
|
|
48
|
+
accountId
|
|
49
|
+
counterPartyAccountId
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}`,ve=`... on AccountSnapshot {
|
|
54
|
+
state {
|
|
55
|
+
id
|
|
56
|
+
ownerId
|
|
57
|
+
ownerType
|
|
58
|
+
period
|
|
59
|
+
start
|
|
60
|
+
end
|
|
61
|
+
actualsComparison {
|
|
62
|
+
month
|
|
63
|
+
reportedActuals
|
|
64
|
+
currency
|
|
65
|
+
netExpenses {
|
|
66
|
+
offChainIncluded {amount difference}
|
|
67
|
+
onChainOnly {amount difference}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
snapshotAccount {
|
|
71
|
+
id
|
|
72
|
+
accountLabel
|
|
73
|
+
accountAddress
|
|
74
|
+
accountType
|
|
75
|
+
groupAccountId
|
|
76
|
+
offChain
|
|
77
|
+
upstreamAccountId
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}`,ye=`... on BudgetStatement {
|
|
81
|
+
state {
|
|
82
|
+
month
|
|
83
|
+
quoteCurrency
|
|
84
|
+
accounts {
|
|
85
|
+
name
|
|
86
|
+
address
|
|
87
|
+
lineItems {
|
|
88
|
+
actual
|
|
89
|
+
payment
|
|
90
|
+
budgetCap
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
ftes {
|
|
94
|
+
value
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}`,Gt=(a,l,t=!0)=>{let i="";l==="powerhouse/account-snapshot"&&(i=ve),l==="powerhouse/budget-statement"&&(i=ye),l==="makerdao/rwa-portfolio"&&(i=he);const v=`query {
|
|
98
|
+
document(id:"${a}") {
|
|
99
|
+
name
|
|
100
|
+
documentType
|
|
101
|
+
revision
|
|
102
|
+
created
|
|
103
|
+
lastModified
|
|
104
|
+
${i}
|
|
105
|
+
}
|
|
106
|
+
}`;return t?encodeURIComponent(v):v},ge=(a,l,t)=>{const i=Gt(t,l,!1),v=me.compressToEncodedURIComponent(JSON.stringify({document:i.trim()}));return(a+`?explorerURLState=${v}`).toString()},Se=(a,l,t)=>{if(a.includes("localhost"))return ge(a,l,t);const i=a.replace(/\/d\//,"/graphql/"),v=Gt(t,l);return(i+`?query=${v}`).toString()},we=a=>window.open(a,"_blank");var qt;const De=((qt=window.electronAPI)==null?void 0:qt.openURL)??we,Ie=a=>{const{isRemoteDrive:l,remoteUrl:t}=zt(a);return async i=>{if((i==null?void 0:i.kind)!==U||!t||!l)return;new URL(t).origin;const w=Se(t,i.documentType,i.id);await De(w)}};function Re(){const{showModal:a}=ee(),{t:l}=ne(),t=Nt(),{selectedDriveNode:i,driveNodes:v,selectedParentNode:w,setSelectedNode:D,getParentNode:c}=t,r=oe(),s=jt(),{addFolder:u,addFile:n,renameNode:d,deleteNode:S,addDrive:x,addRemoteDrive:O,deleteDrive:R,renameDrive:I,setDriveAvailableOffline:T,setDriveSharingType:y,copyNode:h,moveNode:g,getSyncStatus:e,removeTrigger:m,addTrigger:f,registerNewPullResponderTrigger:et}=s,nt=zt(i==null?void 0:i.id),ot=Ie(i==null?void 0:i.id),rt=re(),it=fe(),st=ie(),ct=se(),at=le({...t,...s,...r}),L=A(async o=>{const p="readContext"in o,{id:C,name:Y,icon:Zt,slug:Jt}=o.state.global,{sharingType:H,availableOffline:Yt}=p?{sharingType:P,availableOffline:!1}:o.state.local,Rt=H==null?void 0:H.toUpperCase(),j=Rt==="PRIVATE"?M:Rt,Ct=p?void 0:await e(C,j),Ut=Ct==="INITIAL_SYNC"?"SYNCING":Ct,$={id:C,name:Y,slug:Jt||null,kind:k,children:[],nodeMap:{},sharingType:j,syncStatus:Ut,availableOffline:Yt,icon:Zt,parentFolder:null,driveId:C},kt=o.state.global.nodes.map(b=>{const E={...b,slug:Pt(b.name),driveId:C,parentFolder:b.parentFolder||C,kind:b.kind.toUpperCase(),syncStatus:Ut,sharingType:j};if(E.kind===k)throw new Error("Drive nodes should not be nested");return E.kind===U?E:{...E,children:[]}});for(const b of kt)$.nodeMap[b.id]=b;for await(const b of kt){if(b.kind===U){const Et=p?void 0:await e(b.synchronizationUnits[0].syncId,j),Ht=Et==="INITIAL_SYNC"?"SYNCING":Et;b.syncStatus=Ht}if(b.parentFolder===C){$.children.push(b);continue}const E=$.nodeMap[b.parentFolder];if(E.kind===U)throw new Error(`Parent node ${b.parentFolder} is a file, not a folder`);E.children.push(b),b.syncStatus!==Vt&&(E.syncStatus=b.syncStatus)}return $},[e]),dt=A(async o=>Promise.all(o.map(L)),[L]),B=A(async(o,p)=>{if(!p)throw new Error("Parent node is required");if(p.kind===U)throw new Error("Cannot add folder to a file");return await u(p.driveId,o,p.id)},[u]),lt=A(async(o,p)=>{if(p.kind===k)throw new Error("Drive can only be renamed from the drive settings modal");return await d(p.driveId,p.id,o)},[d]),ut=A(async(o,p)=>{if(o.kind===k)throw new Error("Drive cannot be duplicated");await h(o,p)},[h]),ft=A(async(o,p)=>{if(o.kind===k)throw new Error("Drive cannot be moved");await g(o,p)},[g]),pt=A(async(o,p)=>{if(!p)throw new Error("Parent node is required");if(p.kind===U)throw new Error("Cannot add file to a file");const C=o.name.replace(/\.zip$/gim,"");return await n(o,p.driveId,C,p.id)},[n]),mt=A(async o=>{if(w){if(o.kind===k)throw new Error("Drive cannot be duplicated");await h(o,w)}},[h,w]),ht=A(o=>{a("deleteItem",{uiNode:o,onDelete:async p=>{p();const C=o.kind===F?"notifications.deleteFolderSuccess":"notifications.fileDeleteSuccess",Y=c(o);await S(o.driveId,o.id),D(Y),z(l(C),{type:"connect-deleted"})}})},[S,c,D,a,l]),q=A(o=>{a("deleteDriveModal",{uiDriveNode:o,onDelete:async p=>{p(),await R(o.id),D(v[0]),z(l("notifications.deleteDriveSuccess"),{type:"connect-deleted"})}})},[R,v,D,a,l]),vt=A(async o=>{try{const p=await x({global:{name:o.name,id:void 0,icon:null,slug:null},local:{availableOffline:o.availableOffline,sharingType:o.sharingType.toLowerCase(),listeners:[],triggers:[]}});z(l("notifications.addDriveSuccess"),{type:"connect-success"});const C=await L(p);D(C)}catch(p){console.error(p)}},[x,L,D,l]),yt=A(async o=>{try{const p=await O(o.url,{sharingType:o.sharingType,availableOffline:o.availableOffline,listeners:[{block:!0,callInfo:{data:o.url,name:"switchboard-push",transmitterType:"SwitchboardPush"},filter:{branch:["main"],documentId:["*"],documentType:["*"],scope:["global"]},label:"Switchboard Sync",listenerId:"1",system:!0}],triggers:[],pullInterval:3e3});z(l("notifications.addDriveSuccess"),{type:"connect-success"});const C=await L(p);D(C)}catch(p){console.error(p)}},[O,L,D,l]),gt=A(o=>{o===M?a("addLocalDrive",{onAddLocalDrive:vt}):a("addRemoteDrive",{onAddRemoteDrive:yt,groupSharingType:o})},[vt,yt,a]),St=A(async(o,p)=>{await I(o.id,p)},[I]),wt=A(async(o,p)=>{await y(o.id,p)},[y]),Dt=A(async(o,p)=>{await T(o.id,p)},[T]),It=A(o=>{a("driveSettings",{uiDriveNode:o,onRenameDrive:St,onDeleteDrive:q,onChangeSharingType:wt,onChangeAvailableOffline:Dt})},[Dt,wt,q,St,a]),Tt=A(async o=>{if(!o||!w)return;const p=await B(o,w);D({...p,kind:F,slug:Pt(p.name),parentFolder:w.id,syncStatus:w.syncStatus,driveId:w.driveId,sharingType:w.sharingType,children:[]})},[B,w,D]),At=A(async o=>{const p=window.prompt("url")||"",C=await et(o,p,{pullInterval:6e3});await f(o,C)},[f,et]),Ot=A(async o=>{const p=window.prompt("triggerId:");p&&await m(o,p)},[m]),bt=A(async o=>{const p=window.prompt("url")||"";await f(o,{id:"some-invalid-id",type:"PullResponder",data:{interval:"3000",listenerId:"invalid-listener-id",url:p}})},[f]),xt=Z(()=>v.reduce((o,p)=>(o[p.sharingType].push(p),o),{[P]:[],[G]:[],[M]:[]}),[v]);return Z(()=>({...s,...t,...rt,...nt,...at,nodeOptions:it,driveNodesBySharingType:xt,documentModels:st,onAddFolder:B,onAddFile:pt,onCopyNode:ut,onMoveNode:ft,onRenameNode:lt,onDuplicateNode:mt,onDeleteNode:ht,onDeleteDrive:q,makeUiDriveNodes:dt,onAddAndSelectNewFolder:Tt,showAddDriveModal:gt,showDriveSettingsModal:It,openSwitchboardLink:ot,onAddTrigger:At,onRemoveTrigger:Ot,onAddInvalidTrigger:bt,getDocumentModel:ct}),[s,t,rt,nt,at,it,xt,st,B,pt,ut,ft,lt,mt,ht,q,dt,Tt,gt,It,ot,At,Ot,bt,ct])}export{xe as d,De as o,Re as u};
|
|
107
|
+
//# sourceMappingURL=useUiNodes-Ch-W4vsB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUiNodes-Ch-W4vsB.js","sources":["../../src/store/document-drive.ts","../../src/utils/drive-sections.ts","../../src/hooks/useDocumentDriveById.ts","../../../../node_modules/.pnpm/lz-string@1.5.0/node_modules/lz-string/libs/lz-string.js","../../src/utils/getSwitchboardUrl.ts","../../src/utils/openUrl.ts","../../src/hooks/useOpenSwitchboardLink.ts","../../src/hooks/useUiNodes.ts"],"sourcesContent":["import { FILE, TUiNodesContext } from '@powerhousedao/design-system';\nimport { Document, Operation } from 'document-model/document';\nimport { atom, useAtom } from 'jotai';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { IReadModeContext } from 'src/context/read-mode';\nimport { documentToHash } from 'src/hooks/useDocumentDrives';\nimport { TDocumentDriveServer } from 'src/hooks/useDocumentDriveServer';\nimport { logger } from 'src/services/logger';\n\nfunction debounceOperations(\n callback: (operations: Operation[]) => Promise<Document | undefined>,\n timeout = 50,\n) {\n let timer: number;\n const operations: Operation[] = [];\n return (operation: Operation) => {\n if (timer) {\n clearTimeout(timer);\n }\n const index = operations.findIndex(\n op => op.scope === operation.scope && op.index === operation.index,\n );\n if (index > -1) {\n const oldOperation = operations[index];\n if (\n !(\n oldOperation.type === operation.type &&\n JSON.stringify(operation.input) ===\n JSON.stringify(oldOperation.input)\n )\n ) {\n console.warn(\n 'Two conflicting operations were dispatched:',\n oldOperation,\n operation,\n );\n }\n operations[index] = operation;\n } else {\n operations.push(operation);\n }\n return new Promise<Document | undefined>((resolve, reject) => {\n timer = setTimeout(() => {\n callback(operations).then(resolve).catch(reject);\n }, timeout) as unknown as number;\n });\n };\n}\n\ntype FileNodeDocument =\n | {\n driveId: string;\n documentId: string;\n documentType: string;\n document: Document | undefined;\n status: 'LOADING' | 'ERROR';\n }\n | {\n driveId: string;\n documentId: string;\n documentType: string;\n document: Document;\n status: 'LOADED';\n }\n | undefined;\n\nconst documentCacheAtom = atom(new Map<string, Document>());\n\nconst singletonFileNodeDocumentAtom = atom<FileNodeDocument>(undefined);\nconst fileNodeDocumentAtom = atom(\n get => get(singletonFileNodeDocumentAtom),\n (get, set, newValue: FileNodeDocument) => {\n const currentValue = get(singletonFileNodeDocumentAtom);\n\n // if document will be loaded then sets\n // the cached version while it loads\n const documentCache = get(documentCacheAtom);\n if (!newValue?.document && newValue?.status === 'LOADING') {\n newValue.document = documentCache.get(\n `${newValue.driveId}:${newValue.documentId}`,\n );\n }\n\n // only change if the provided file node is different\n if (\n currentValue?.driveId !== newValue?.driveId ||\n currentValue?.documentId !== newValue?.documentId ||\n currentValue?.documentType !== newValue?.documentType ||\n currentValue?.status !== newValue?.status ||\n !!currentValue?.document !== !!newValue?.document ||\n (currentValue?.document &&\n newValue?.document &&\n documentToHash(currentValue.document) !==\n documentToHash(newValue.document))\n ) {\n // if document has been fetched then updates the cache\n if (newValue?.status === 'LOADED') {\n documentCache.set(\n `${newValue.driveId}:${newValue.documentId}`,\n newValue.document,\n );\n }\n\n set(singletonFileNodeDocumentAtom, newValue);\n return true;\n }\n\n return false;\n },\n);\n\nconst selectedDocumentAtom = atom(\n get => get(fileNodeDocumentAtom)?.document,\n (get, set, document: Document | undefined) => {\n const fileNodeDocument = get(fileNodeDocumentAtom);\n if (!fileNodeDocument) {\n throw new Error('fileNodeDocument is undefined');\n } else if (!document) {\n set(fileNodeDocumentAtom, undefined);\n } else {\n set(fileNodeDocumentAtom, { ...fileNodeDocument, document });\n }\n },\n);\n\nexport function useFileNodeDocument(\n props: TUiNodesContext & TDocumentDriveServer & IReadModeContext,\n) {\n const {\n selectedNode,\n selectedDriveNode,\n openFile,\n addOperations,\n onStrandUpdate,\n fetchDocument: fetchReadDocument,\n } = props;\n const [fileNodeDocument, setFileNodeDocument] =\n useAtom(fileNodeDocumentAtom);\n const isReadMode =\n selectedDriveNode?.sharingType !== 'LOCAL' &&\n selectedDriveNode?.syncStatus === undefined;\n const driveId = selectedNode?.driveId;\n const documentId = selectedNode?.id;\n const kind = selectedNode?.kind;\n const documentType =\n kind === 'FILE' ? selectedNode?.documentType : undefined;\n\n const [selectedDocument, setSelectedDocument] =\n useAtom(selectedDocumentAtom);\n\n const fetchDocument = useCallback(\n async (driveId: string, id: string, documentType: string) => {\n const document = await (isReadMode\n ? fetchReadDocument(driveId, id, documentType)\n : openFile(driveId, id));\n if (document instanceof Error) {\n throw document;\n }\n return document;\n },\n [fetchReadDocument, isReadMode, openFile],\n );\n\n useEffect(() => {\n // if selected node is undefine then clears fileNodeDocument\n if (!driveId || !documentId || !documentType) {\n if (fileNodeDocument) {\n setFileNodeDocument(undefined);\n }\n return;\n }\n\n // if selectedNode changes then fetches fileNodeDocument\n if (\n driveId !== fileNodeDocument?.driveId ||\n documentId !== fileNodeDocument.documentId ||\n documentType !== fileNodeDocument.documentType\n ) {\n const changed = setFileNodeDocument({\n driveId,\n documentId,\n documentType,\n document: undefined,\n status: 'LOADING',\n });\n\n // if the selected file node changed then fetches the new document\n if (changed) {\n fetchDocument(driveId, documentId, documentType)\n .then(document =>\n setFileNodeDocument(\n document\n ? {\n driveId,\n documentId,\n documentType,\n document,\n status: 'LOADED',\n }\n : {\n driveId,\n documentId,\n documentType,\n document,\n status: 'ERROR',\n },\n ),\n )\n .catch(error => {\n logger.error(error);\n setFileNodeDocument({\n driveId,\n documentId,\n documentType,\n document: undefined,\n status: 'ERROR',\n });\n });\n }\n }\n }, [\n selectedNode,\n documentId,\n documentType,\n driveId,\n fetchDocument,\n fileNodeDocument,\n setFileNodeDocument,\n ]);\n\n useEffect(() => {\n if (\n !fileNodeDocument?.driveId ||\n !fileNodeDocument.documentId ||\n !fileNodeDocument.documentType\n ) {\n return;\n }\n\n // watches for strand updates to update the document\n const removeListener = onStrandUpdate(strand => {\n if (\n strand.driveId === fileNodeDocument.driveId &&\n strand.documentId === fileNodeDocument.documentId\n ) {\n fetchDocument(\n fileNodeDocument.driveId,\n fileNodeDocument.documentId,\n fileNodeDocument.documentType,\n )\n .then(setSelectedDocument)\n .catch(logger.error);\n }\n });\n\n return removeListener;\n }, [\n fileNodeDocument?.driveId,\n fileNodeDocument?.documentId,\n fileNodeDocument?.documentType,\n onStrandUpdate,\n fetchDocument,\n setSelectedDocument,\n ]);\n\n const addOperationToSelectedDocument = useMemo(() => {\n if (driveId && documentId && kind === FILE) {\n return debounceOperations(operations =>\n addOperations(driveId, documentId, operations),\n );\n }\n }, [addOperations, driveId, documentId, kind]);\n\n const isSelectedDocument =\n kind === FILE &&\n fileNodeDocument?.driveId === driveId &&\n fileNodeDocument?.documentId === documentId;\n\n return useMemo(\n () => ({\n fileNodeDocument,\n selectedDocument: isSelectedDocument ? selectedDocument : undefined,\n setSelectedDocument,\n addOperationToSelectedDocument,\n }),\n [\n fileNodeDocument,\n isSelectedDocument,\n selectedDocument,\n setSelectedDocument,\n addOperationToSelectedDocument,\n ],\n );\n}\n","import {\n CLOUD,\n debugNodeOptions,\n defaultDriveOptions,\n defaultFileOptions,\n defaultFolderOptions,\n DELETE,\n DRIVE,\n FILE,\n FOLDER,\n LOCAL,\n PUBLIC,\n SharingType,\n} from '@powerhousedao/design-system';\nimport connectConfig from 'connect-config';\nimport { ReactNode } from 'react';\n\n// Enables debug options for the drive\nconst connectDebug = localStorage.getItem('CONNECT_DEBUG') === 'true';\n\nconst DriveSections: {\n sharingType: SharingType;\n label: ReactNode;\n}[] = [\n { sharingType: PUBLIC, label: 'Public Drives' },\n { sharingType: CLOUD, label: 'Secure Cloud Drives' },\n { sharingType: LOCAL, label: 'My Local Drives' },\n] as const;\n\nconst getSectionConfig = (sharingType: SharingType) => {\n return connectConfig.drives.sections[sharingType];\n};\n\nexport function getDriveNodeOptions(sharingType: SharingType) {\n const options = [...defaultDriveOptions];\n\n if (connectConfig.drives.sections[sharingType].allowDelete) {\n options.push(DELETE);\n }\n\n if (connectDebug) {\n options.push(...debugNodeOptions);\n }\n\n return options;\n}\n\nexport function getFileNodeOptions() {\n const options = [...defaultFileOptions];\n\n if (connectDebug) {\n options.push(...debugNodeOptions);\n }\n\n return options;\n}\n\nexport function getFolderNodeOptions() {\n const options = [...defaultFolderOptions];\n\n if (connectDebug) {\n options.push(...debugNodeOptions);\n }\n\n return options;\n}\n\nexport function getNodeOptions() {\n return {\n [LOCAL]: {\n [DRIVE]: getDriveNodeOptions(LOCAL),\n [FOLDER]: getFolderNodeOptions(),\n [FILE]: getFileNodeOptions(),\n },\n [CLOUD]: {\n [DRIVE]: getDriveNodeOptions(CLOUD),\n [FOLDER]: getFolderNodeOptions(),\n [FILE]: getFileNodeOptions(),\n },\n [PUBLIC]: {\n [DRIVE]: getDriveNodeOptions(PUBLIC),\n [FOLDER]: getFolderNodeOptions(),\n [FILE]: getFileNodeOptions(),\n },\n } as const;\n}\n\nexport const driveSections = DriveSections.filter(\n section => getSectionConfig(section.sharingType).enabled,\n).map(section => {\n const sectionConfig = getSectionConfig(section.sharingType);\n\n return {\n ...section,\n disableAddDrives: !sectionConfig.allowAdd,\n };\n});\n","import { DocumentDriveState } from 'document-model-libs/document-drive';\nimport { useDocumentDriveServer } from './useDocumentDriveServer';\n\ntype ExtendedDocumentDriveState = DocumentDriveState & { remoteUrl?: string };\n\nexport function useDocumentDriveById(driveId: string | undefined) {\n const { documentDrives } = useDocumentDriveServer();\n\n if (!driveId)\n return {\n drive: null,\n remoteUrl: null,\n isRemoteDrive: false,\n };\n\n const drive = documentDrives.find(\n drive => drive.state.global.id === driveId,\n );\n\n const pullResponder = drive?.state.local.triggers.find(\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n trigger => trigger.type === 'PullResponder',\n );\n\n const { remoteUrl } = (drive?.state.global ||\n {}) as ExtendedDocumentDriveState;\n\n const isRemoteDrive = !!remoteUrl || !!pullResponder;\n\n return {\n drive,\n remoteUrl: remoteUrl || pullResponder?.data?.url,\n isRemoteDrive,\n };\n}\n","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","import LZString from 'lz-string';\n\nconst rwaQuery = `... on RealWorldAssets {\n state {\n portfolio {\n __typename\n ... on FixedIncome {\n name\n CUSIP\n purchaseDate\n purchasePrice\n purchaseProceeds\n salesProceeds\n totalDiscount\n spvId\n }\n ... on Cash {\n id\n balance\n }\n }\n transactions {\n id\n type\n entryTime\n cashBalanceChange\n fees {\n id\n serviceProviderFeeTypeId\n amount\n }\n txRef\n cashTransaction {\n id\n assetId\n amount\n entryTime\n tradeTime\n settlementTime\n accountId\n counterPartyAccountId\n }\n fixedIncomeTransaction {\n id\n assetId\n amount\n entryTime\n tradeTime\n settlementTime\n accountId\n counterPartyAccountId\n }\n }\n }\n }`;\n\nconst accountSnapshot = `... on AccountSnapshot {\n state {\n id\n ownerId\n ownerType\n period\n start\n end\n actualsComparison {\n month\n reportedActuals\n currency\n netExpenses {\n offChainIncluded {amount difference}\n onChainOnly {amount difference}\n }\n }\n snapshotAccount {\n id\n accountLabel\n accountAddress\n accountType\n groupAccountId\n offChain\n upstreamAccountId\n }\n }\n }`;\n\nconst budgetStatement = `... on BudgetStatement {\n state {\n month\n quoteCurrency\n accounts {\n name\n address\n lineItems {\n actual\n payment\n budgetCap\n }\n }\n ftes {\n value\n }\n }\n }`;\n\nconst getQuery = (\n documentId: string,\n documentType: string,\n encodeQuery = true,\n) => {\n let query = ``;\n\n if (documentType === 'powerhouse/account-snapshot') {\n query = accountSnapshot;\n }\n\n if (documentType === 'powerhouse/budget-statement') {\n query = budgetStatement;\n }\n\n if (documentType === 'makerdao/rwa-portfolio') {\n query = rwaQuery;\n }\n\n const queryString = `query {\n document(id:\"${documentId}\") {\n name\n documentType\n revision\n created\n lastModified\n ${query}\n }\n}`;\n\n if (!encodeQuery) {\n return queryString;\n }\n\n return encodeURIComponent(queryString);\n};\n\nconst getLocalReactorUrl = (\n remoteUrl: string,\n documentType: string,\n documentId: string,\n) => {\n const query = getQuery(documentId, documentType, false);\n\n const explorerURLState = LZString.compressToEncodedURIComponent(\n JSON.stringify({\n document: query.trim(),\n }),\n );\n\n const url = remoteUrl + `?explorerURLState=${explorerURLState}`;\n return url.toString();\n};\n\nexport const getSwitchboardUrl = (\n remoteUrl: string,\n documentType: string,\n documentId: string,\n) => {\n if (remoteUrl.includes('localhost')) {\n return getLocalReactorUrl(remoteUrl, documentType, documentId);\n }\n\n const explorerUrl = remoteUrl.replace(/\\/d\\//, '/graphql/');\n const query = getQuery(documentId, documentType);\n const url = explorerUrl + `?query=${query}`;\n\n return url.toString();\n};\n","const openBrowserUrl = (url: string) => window.open(url, '_blank');\n\nexport const openUrl = window.electronAPI?.openURL ?? openBrowserUrl;\n","import { FILE, UiNode } from '@powerhousedao/design-system';\nimport { getSwitchboardUrl } from 'src/utils/getSwitchboardUrl';\nimport { openUrl } from 'src/utils/openUrl';\nimport { useDocumentDriveById } from './useDocumentDriveById';\n\nexport const useOpenSwitchboardLink = (driveId: string | undefined) => {\n const { isRemoteDrive, remoteUrl } = useDocumentDriveById(driveId);\n\n return async (uiNode?: UiNode | null) => {\n if (uiNode?.kind !== FILE || !remoteUrl || !isRemoteDrive) return;\n\n const url = new URL(remoteUrl);\n const baseUrl = url.origin;\n\n const switchboardUrl = getSwitchboardUrl(\n remoteUrl,\n uiNode.documentType,\n uiNode.id,\n );\n\n await openUrl(switchboardUrl);\n };\n};\n","import {\n AddLocalDriveInput,\n AddRemoteDriveInput,\n CLOUD,\n DRIVE,\n FILE,\n FOLDER,\n LOCAL,\n PUBLIC,\n SharingType,\n SUCCESS,\n toast,\n UiDriveNode,\n UiFileNode,\n UiFolderNode,\n UiNode,\n useUiNodesContext,\n} from '@powerhousedao/design-system';\nimport { ReadDrive } from 'document-drive';\nimport { DocumentDriveDocument } from 'document-model-libs/document-drive';\nimport { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useModal } from 'src/components/modal';\nimport { useReadModeContext } from 'src/context/read-mode';\nimport { useFileNodeDocument } from 'src/store/document-drive';\nimport {\n useFilteredDocumentModels,\n useGetDocumentModel,\n} from 'src/store/document-model';\nimport { getNodeOptions } from 'src/utils/drive-sections';\nimport { makeNodeSlugFromNodeName } from 'src/utils/slug';\nimport { useDocumentDriveById } from './useDocumentDriveById';\nimport { useDocumentDriveServer } from './useDocumentDriveServer';\nimport { useOpenSwitchboardLink } from './useOpenSwitchboardLink';\nimport { useUserPermissions } from './useUserPermissions';\n\nexport function useUiNodes() {\n const { showModal } = useModal();\n const { t } = useTranslation();\n const uiNodesContext = useUiNodesContext();\n const {\n selectedDriveNode,\n driveNodes,\n selectedParentNode,\n setSelectedNode,\n getParentNode,\n } = uiNodesContext;\n const readModeContext = useReadModeContext();\n const documentDriveServer = useDocumentDriveServer();\n const {\n addFolder,\n addFile,\n renameNode,\n deleteNode,\n addDrive,\n addRemoteDrive,\n deleteDrive,\n renameDrive,\n setDriveAvailableOffline,\n setDriveSharingType,\n copyNode,\n moveNode,\n getSyncStatus,\n removeTrigger,\n addTrigger,\n registerNewPullResponderTrigger,\n } = documentDriveServer;\n const selectedDocumentDrive = useDocumentDriveById(selectedDriveNode?.id);\n const openSwitchboardLink = useOpenSwitchboardLink(selectedDriveNode?.id);\n const userPermissions = useUserPermissions();\n const nodeOptions = getNodeOptions();\n const documentModels = useFilteredDocumentModels();\n const getDocumentModel = useGetDocumentModel();\n const fileNodeDocument = useFileNodeDocument({\n ...uiNodesContext,\n ...documentDriveServer,\n ...readModeContext,\n });\n\n const makeUiDriveNode = useCallback(\n async (drive: DocumentDriveDocument | ReadDrive) => {\n const isReadDrive = 'readContext' in drive;\n const { id, name, icon, slug } = drive.state.global;\n const { sharingType: _sharingType, availableOffline } = !isReadDrive\n ? drive.state.local\n : { sharingType: PUBLIC, availableOffline: false };\n const __sharingType = _sharingType?.toUpperCase();\n const sharingType = (\n __sharingType === 'PRIVATE' ? LOCAL : __sharingType\n ) as SharingType;\n const driveSyncStatus = !isReadDrive\n ? await getSyncStatus(id, sharingType)\n : undefined;\n\n // TODO: rempve this after integration in design-system\n const normalizedDriveSyncStatus =\n driveSyncStatus === 'INITIAL_SYNC'\n ? 'SYNCING'\n : driveSyncStatus;\n\n const driveNode: UiDriveNode = {\n id,\n name,\n slug: slug || null,\n kind: DRIVE,\n children: [],\n nodeMap: {},\n sharingType,\n syncStatus: normalizedDriveSyncStatus,\n availableOffline,\n icon,\n parentFolder: null,\n driveId: id,\n };\n\n const nodes = drive.state.global.nodes.map(n => {\n const node = {\n ...n,\n slug: makeNodeSlugFromNodeName(n.name),\n driveId: id,\n parentFolder: n.parentFolder || id,\n kind: n.kind.toUpperCase(),\n syncStatus: normalizedDriveSyncStatus,\n sharingType,\n };\n\n if (node.kind === DRIVE) {\n throw new Error('Drive nodes should not be nested');\n }\n\n if (node.kind === FILE) {\n return node as UiFileNode;\n }\n\n return {\n ...node,\n children: [],\n } as UiFolderNode;\n });\n\n for (const node of nodes) {\n driveNode.nodeMap[node.id] = node;\n }\n\n // eslint-disable-next-line @typescript-eslint/await-thenable\n for await (const node of nodes) {\n if (node.kind === FILE) {\n const fileSyncStatus = !isReadDrive\n ? await getSyncStatus(\n node.synchronizationUnits[0].syncId,\n sharingType,\n )\n : undefined;\n\n // TODO: rempve this after integration in design-system\n const normalizedFileSyncStatus =\n fileSyncStatus === 'INITIAL_SYNC'\n ? 'SYNCING'\n : fileSyncStatus;\n\n node.syncStatus = normalizedFileSyncStatus;\n }\n\n if (node.parentFolder === id) {\n driveNode.children.push(node);\n continue;\n }\n const parent = driveNode.nodeMap[node.parentFolder];\n\n if (parent.kind === FILE) {\n throw new Error(\n `Parent node ${node.parentFolder} is a file, not a folder`,\n );\n }\n\n parent.children.push(node);\n\n if (node.syncStatus !== SUCCESS) {\n parent.syncStatus = node.syncStatus;\n }\n }\n\n return driveNode;\n },\n [getSyncStatus],\n );\n\n const makeUiDriveNodes = useCallback(\n async (documentDrives: DocumentDriveDocument[]) => {\n return Promise.all(documentDrives.map(makeUiDriveNode));\n },\n [makeUiDriveNode],\n );\n\n const onAddFolder = useCallback(\n async (name: string, parentNode: UiNode | null) => {\n if (!parentNode) {\n throw new Error('Parent node is required');\n }\n if (parentNode.kind === FILE) {\n throw new Error('Cannot add folder to a file');\n }\n return await addFolder(parentNode.driveId, name, parentNode.id);\n },\n [addFolder],\n );\n\n const onRenameNode = useCallback(\n async (name: string, uiNode: UiNode) => {\n if (uiNode.kind === DRIVE) {\n throw new Error(\n 'Drive can only be renamed from the drive settings modal',\n );\n }\n return await renameNode(uiNode.driveId, uiNode.id, name);\n },\n [renameNode],\n );\n\n const onCopyNode = useCallback(\n async (uiNode: UiNode, targetNode: UiNode) => {\n if (uiNode.kind === DRIVE) {\n throw new Error('Drive cannot be duplicated');\n }\n\n await copyNode(uiNode, targetNode);\n },\n [copyNode],\n );\n\n const onMoveNode = useCallback(\n async (uiNode: UiNode, targetNode: UiNode) => {\n if (uiNode.kind === DRIVE) {\n throw new Error('Drive cannot be moved');\n }\n\n await moveNode(uiNode, targetNode);\n },\n [moveNode],\n );\n\n const onAddFile = useCallback(\n async (file: File, parentNode: UiNode | null) => {\n if (!parentNode) {\n throw new Error('Parent node is required');\n }\n if (parentNode.kind === FILE) {\n throw new Error('Cannot add file to a file');\n }\n\n const fileName = file.name.replace(/\\.zip$/gim, '');\n\n return await addFile(\n file,\n parentNode.driveId,\n fileName,\n parentNode.id,\n );\n },\n [addFile],\n );\n\n const onDuplicateNode = useCallback(\n async (uiNode: UiNode) => {\n if (!selectedParentNode) return;\n\n if (uiNode.kind === DRIVE) {\n throw new Error('Drive cannot be duplicated');\n }\n\n await copyNode(uiNode, selectedParentNode);\n },\n [copyNode, selectedParentNode],\n );\n\n const onDeleteNode = useCallback(\n (uiNode: UiFileNode | UiFolderNode) => {\n showModal('deleteItem', {\n uiNode,\n onDelete: async closeModal => {\n closeModal();\n\n const i18nKey =\n uiNode.kind === FOLDER\n ? 'notifications.deleteFolderSuccess'\n : 'notifications.fileDeleteSuccess';\n\n const parentNode = getParentNode(uiNode);\n\n await deleteNode(uiNode.driveId, uiNode.id);\n\n setSelectedNode(parentNode);\n\n toast(t(i18nKey), { type: 'connect-deleted' });\n },\n });\n },\n [deleteNode, getParentNode, setSelectedNode, showModal, t],\n );\n\n const onDeleteDrive = useCallback(\n (uiDriveNode: UiDriveNode) => {\n showModal('deleteDriveModal', {\n uiDriveNode,\n onDelete: async closeModal => {\n closeModal();\n await deleteDrive(uiDriveNode.id);\n\n setSelectedNode(driveNodes[0]);\n\n toast(t('notifications.deleteDriveSuccess'), {\n type: 'connect-deleted',\n });\n },\n });\n },\n [deleteDrive, driveNodes, setSelectedNode, showModal, t],\n );\n\n const onAddLocalDrive = useCallback(\n async (data: AddLocalDriveInput) => {\n try {\n const newDrive = await addDrive({\n global: {\n name: data.name,\n id: undefined,\n icon: null,\n slug: null,\n },\n local: {\n availableOffline: data.availableOffline,\n sharingType: data.sharingType.toLowerCase(),\n listeners: [],\n triggers: [],\n },\n });\n\n toast(t('notifications.addDriveSuccess'), {\n type: 'connect-success',\n });\n\n const newDriveNode = await makeUiDriveNode(newDrive);\n\n setSelectedNode(newDriveNode);\n } catch (e) {\n console.error(e);\n }\n },\n [addDrive, makeUiDriveNode, setSelectedNode, t],\n );\n\n const onAddRemoteDrive = useCallback(\n async (data: AddRemoteDriveInput) => {\n try {\n const newDrive = await addRemoteDrive(data.url, {\n sharingType: data.sharingType,\n availableOffline: data.availableOffline,\n listeners: [\n {\n block: true,\n callInfo: {\n data: data.url,\n name: 'switchboard-push',\n transmitterType: 'SwitchboardPush',\n },\n filter: {\n branch: ['main'],\n documentId: ['*'],\n documentType: ['*'],\n scope: ['global'],\n },\n label: 'Switchboard Sync',\n listenerId: '1',\n system: true,\n },\n ],\n triggers: [],\n pullInterval: 3000,\n });\n\n toast(t('notifications.addDriveSuccess'), {\n type: 'connect-success',\n });\n\n const newDriveNode = await makeUiDriveNode(newDrive);\n\n setSelectedNode(newDriveNode);\n } catch (e) {\n console.error(e);\n }\n },\n [addRemoteDrive, makeUiDriveNode, setSelectedNode, t],\n );\n\n const showAddDriveModal = useCallback(\n (groupSharingType: SharingType) => {\n if (groupSharingType === LOCAL) {\n showModal('addLocalDrive', {\n onAddLocalDrive,\n });\n } else {\n showModal('addRemoteDrive', {\n onAddRemoteDrive,\n groupSharingType,\n });\n }\n },\n [onAddLocalDrive, onAddRemoteDrive, showModal],\n );\n\n const onRenameDrive = useCallback(\n async (uiDriveNode: UiDriveNode, newName: string) => {\n await renameDrive(uiDriveNode.id, newName);\n },\n [renameDrive],\n );\n\n const onChangeSharingType = useCallback(\n async (uiDriveNode: UiDriveNode, newSharingType: SharingType) => {\n await setDriveSharingType(uiDriveNode.id, newSharingType);\n },\n [setDriveSharingType],\n );\n\n const onChangeAvailableOffline = useCallback(\n async (uiDriveNode: UiDriveNode, newAvailableOffline: boolean) => {\n await setDriveAvailableOffline(uiDriveNode.id, newAvailableOffline);\n },\n [setDriveAvailableOffline],\n );\n\n const showDriveSettingsModal = useCallback(\n (uiDriveNode: UiDriveNode) => {\n showModal('driveSettings', {\n uiDriveNode,\n onRenameDrive,\n onDeleteDrive,\n onChangeSharingType,\n onChangeAvailableOffline,\n });\n },\n [\n onChangeAvailableOffline,\n onChangeSharingType,\n onDeleteDrive,\n onRenameDrive,\n showModal,\n ],\n );\n\n const onAddAndSelectNewFolder = useCallback(\n async (name: string) => {\n if (!name || !selectedParentNode) return;\n\n const newFolder = await onAddFolder(name, selectedParentNode);\n\n setSelectedNode({\n ...newFolder,\n kind: FOLDER,\n slug: makeNodeSlugFromNodeName(newFolder.name),\n parentFolder: selectedParentNode.id,\n syncStatus: selectedParentNode.syncStatus,\n driveId: selectedParentNode.driveId,\n sharingType: selectedParentNode.sharingType,\n children: [],\n });\n },\n [onAddFolder, selectedParentNode, setSelectedNode],\n );\n\n const onAddTrigger = useCallback(\n async (uiNodeDriveId: string) => {\n const url = window.prompt('url') || '';\n\n const pullResponderTrigger = await registerNewPullResponderTrigger(\n uiNodeDriveId,\n url,\n { pullInterval: 6000 },\n );\n await addTrigger(uiNodeDriveId, pullResponderTrigger);\n },\n [addTrigger, registerNewPullResponderTrigger],\n );\n\n const onRemoveTrigger = useCallback(\n async (uiNodeDriveId: string) => {\n const triggerId = window.prompt('triggerId:');\n\n if (triggerId) {\n await removeTrigger(uiNodeDriveId, triggerId);\n }\n },\n [removeTrigger],\n );\n\n const onAddInvalidTrigger = useCallback(\n async (uiNodeDriveId: string) => {\n const url = window.prompt('url') || '';\n\n await addTrigger(uiNodeDriveId, {\n id: 'some-invalid-id',\n type: 'PullResponder',\n data: {\n interval: '3000',\n listenerId: 'invalid-listener-id',\n url,\n },\n });\n },\n [addTrigger],\n );\n\n const driveNodesBySharingType = useMemo(\n () =>\n driveNodes.reduce<Record<SharingType, UiDriveNode[]>>(\n (acc, driveNode) => {\n acc[driveNode.sharingType].push(driveNode);\n return acc;\n },\n {\n [PUBLIC]: [],\n [CLOUD]: [],\n [LOCAL]: [],\n },\n ),\n [driveNodes],\n );\n\n return useMemo(\n () => ({\n ...documentDriveServer,\n ...uiNodesContext,\n ...userPermissions,\n ...selectedDocumentDrive,\n ...fileNodeDocument,\n nodeOptions,\n driveNodesBySharingType,\n documentModels,\n onAddFolder,\n onAddFile,\n onCopyNode,\n onMoveNode,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n onDeleteDrive,\n makeUiDriveNodes,\n onAddAndSelectNewFolder,\n showAddDriveModal,\n showDriveSettingsModal,\n openSwitchboardLink,\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n getDocumentModel,\n }),\n [\n documentDriveServer,\n uiNodesContext,\n userPermissions,\n selectedDocumentDrive,\n fileNodeDocument,\n nodeOptions,\n driveNodesBySharingType,\n documentModels,\n onAddFolder,\n onAddFile,\n onCopyNode,\n onMoveNode,\n onRenameNode,\n onDuplicateNode,\n onDeleteNode,\n onDeleteDrive,\n makeUiDriveNodes,\n onAddAndSelectNewFolder,\n showAddDriveModal,\n showDriveSettingsModal,\n openSwitchboardLink,\n onAddTrigger,\n onRemoveTrigger,\n onAddInvalidTrigger,\n getDocumentModel,\n ],\n );\n}\n\nexport type TUiNodes = ReturnType<typeof useUiNodes>;\n"],"names":["debounceOperations","callback","timeout","timer","operations","operation","index","op","oldOperation","resolve","reject","documentCacheAtom","atom","singletonFileNodeDocumentAtom","fileNodeDocumentAtom","get","set","newValue","currentValue","documentCache","documentToHash","selectedDocumentAtom","_a","document","fileNodeDocument","useFileNodeDocument","props","selectedNode","selectedDriveNode","openFile","addOperations","onStrandUpdate","fetchReadDocument","setFileNodeDocument","useAtom","isReadMode","driveId","documentId","kind","documentType","selectedDocument","setSelectedDocument","fetchDocument","useCallback","id","useEffect","error","logger","strand","addOperationToSelectedDocument","useMemo","FILE","isSelectedDocument","connectDebug","DriveSections","PUBLIC","CLOUD","LOCAL","getSectionConfig","sharingType","connectConfig","getDriveNodeOptions","options","defaultDriveOptions","DELETE","debugNodeOptions","getFileNodeOptions","defaultFileOptions","getFolderNodeOptions","defaultFolderOptions","getNodeOptions","DRIVE","FOLDER","driveSections","section","sectionConfig","useDocumentDriveById","documentDrives","useDocumentDriveServer","drive","pullResponder","trigger","remoteUrl","isRemoteDrive","LZString","f","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","i","input","res","a","compressed","uncompressed","buf","TotalLen","current_value","result","c","bitsPerChar","getCharFromInt","value","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","ii","length","resetValue","getNextValue","dictionary","enlargeIn","dictSize","numBits","entry","w","bits","resb","maxpower","power","data","module","rwaQuery","accountSnapshot","budgetStatement","getQuery","encodeQuery","query","queryString","getLocalReactorUrl","explorerURLState","getSwitchboardUrl","explorerUrl","openBrowserUrl","url","openUrl","useOpenSwitchboardLink","uiNode","switchboardUrl","useUiNodes","showModal","useModal","t","useTranslation","uiNodesContext","useUiNodesContext","driveNodes","selectedParentNode","setSelectedNode","getParentNode","readModeContext","useReadModeContext","documentDriveServer","addFolder","addFile","renameNode","deleteNode","addDrive","addRemoteDrive","deleteDrive","renameDrive","setDriveAvailableOffline","setDriveSharingType","copyNode","moveNode","getSyncStatus","removeTrigger","addTrigger","registerNewPullResponderTrigger","selectedDocumentDrive","openSwitchboardLink","userPermissions","useUserPermissions","nodeOptions","documentModels","useFilteredDocumentModels","getDocumentModel","useGetDocumentModel","makeUiDriveNode","isReadDrive","name","icon","slug","_sharingType","availableOffline","__sharingType","driveSyncStatus","normalizedDriveSyncStatus","driveNode","nodes","n","node","makeNodeSlugFromNodeName","fileSyncStatus","normalizedFileSyncStatus","parent","SUCCESS","makeUiDriveNodes","onAddFolder","parentNode","onRenameNode","onCopyNode","targetNode","onMoveNode","onAddFile","file","fileName","onDuplicateNode","onDeleteNode","closeModal","i18nKey","toast","onDeleteDrive","uiDriveNode","onAddLocalDrive","newDrive","newDriveNode","e","onAddRemoteDrive","showAddDriveModal","groupSharingType","onRenameDrive","newName","onChangeSharingType","newSharingType","onChangeAvailableOffline","newAvailableOffline","showDriveSettingsModal","onAddAndSelectNewFolder","newFolder","onAddTrigger","uiNodeDriveId","pullResponderTrigger","onRemoveTrigger","triggerId","onAddInvalidTrigger","driveNodesBySharingType","acc"],"mappings":"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","x_google_ignoreList":[3]}
|
package/dist/index.html
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"MODE": "InByb2R1Y3Rpb24i",
|
|
6
6
|
"DEV": "ZmFsc2U=",
|
|
7
7
|
"PROD": "dHJ1ZQ==",
|
|
8
|
-
"APP_VERSION": "
|
|
8
|
+
"APP_VERSION": "IjEuMC40Ig==",
|
|
9
9
|
"REQUIRES_HARD_REFRESH": "dHJ1ZQ==",
|
|
10
|
-
"SENTRY_RELEASE": "
|
|
10
|
+
"SENTRY_RELEASE": "IjEuMC40Ig==",
|
|
11
11
|
"BASE_PATH": "Ii8i",
|
|
12
12
|
"BASE_HREF": "Ii4vIg==",
|
|
13
13
|
"PH_CONNECT_APP_REQUIRES_HARD_REFRESH": "InRydWUi",
|
|
@@ -42,8 +42,7 @@
|
|
|
42
42
|
"PH_CONNECT_GA_TRACKING_ID": "IiI=",
|
|
43
43
|
"LOCAL_DOCUMENT_MODELS": "IiI=",
|
|
44
44
|
"LOCAL_DOCUMENT_EDITORS": "IiI=",
|
|
45
|
-
"LOAD_EXTERNAL_PROJECTS": "ImZhbHNlIg=="
|
|
46
|
-
"PH_CONNECT_ATLAS_BASE_URL": "Imh0dHBzOi8vbWlwcy1wb3J0YWwtc3RhZ2luZy1iZXRhLnZlcmNlbC5hcHAi"
|
|
45
|
+
"LOAD_EXTERNAL_PROJECTS": "ImZhbHNlIg=="
|
|
47
46
|
};
|
|
48
47
|
var env = {};
|
|
49
48
|
Object.keys(envWithValuesInBase64).forEach(function (name) {
|
|
@@ -57,4 +56,4 @@
|
|
|
57
56
|
);
|
|
58
57
|
});
|
|
59
58
|
window.__VITE_ENVS = env;
|
|
60
|
-
</script><script type="module" crossorigin="" src="/assets/main.
|
|
59
|
+
</script><script type="module" crossorigin="" src="/assets/main.DQ-aV7Qq.js"></script></head><body><div id="app"></div></body></html>
|
package/dist/service-worker.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const c=self,i="1.0.
|
|
1
|
+
const c=self,i="1.0.4",r=!0,l="version-cache",o="app-version";c.addEventListener("install",()=>{c.skipWaiting().catch(console.error)});c.addEventListener("activate",e=>{e.waitUntil(c.clients.claim()),p(i,r).catch(console.error)});function E(e,n){return e.postMessage(n)}async function p(e,n){try{const t=await caches.open(l),s=await t.match(o);let a="";s&&(a=await s.text()),a===""?await t.put(o,new Response(e)):a!==e&&(console.log("Current version:",a),console.log("New version:",e),await t.put(o,new Response(e)),await h(e,n))}catch(t){console.error("Error checking version:",t)}}async function h(e,n){await c.clients.claim(),(await c.clients.matchAll()).forEach(s=>{E(s,{type:"NEW_VERSION_AVAILABLE",version:e,requiresHardRefresh:n})})}
|
|
2
2
|
//# sourceMappingURL=service-worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-worker.js","sources":["../src/service-worker.ts"],"sourcesContent":["/// <reference lib=\"WebWorker\" />\n\nimport { ServiceWorkerEvent } from './utils/registerServiceWorker';\n\nconst _self = self as unknown as ServiceWorkerGlobalScope;\n\nconst APP_VERSION = __APP_VERSION__;\nconst REQUIRES_HARD_REFRESH = __REQUIRES_HARD_REFRESH__;\n\nconst VERSION_CACHE = 'version-cache';\nconst VERSION_KEY = 'app-version';\n\n_self.addEventListener('install', () => {\n _self.skipWaiting().catch(console.error);\n});\n\n_self.addEventListener('activate', (event: ExtendableEvent) => {\n event.waitUntil(_self.clients.claim());\n\n checkAppVersion(APP_VERSION, REQUIRES_HARD_REFRESH).catch(console.error);\n});\n\nexport type NEW_VERSION_AVAILABLE_MESSAGE = {\n type: 'NEW_VERSION_AVAILABLE';\n version: string;\n requiresHardRefresh: boolean;\n};\n\nexport type ServiceWorkerMessageData = NEW_VERSION_AVAILABLE_MESSAGE;\n\nexport type ServiceWorkerMessage = ServiceWorkerEvent<ServiceWorkerMessageData>;\n\nfunction postMessage(client: Client, message: ServiceWorkerMessageData) {\n return client.postMessage(message);\n}\n\nasync function checkAppVersion(version: string, requiresHardRefresh: boolean) {\n try {\n const cache = await caches.open(VERSION_CACHE);\n const cachedResponse = await cache.match(VERSION_KEY);\n\n let currentVersion = '';\n\n if (cachedResponse) {\n currentVersion = await cachedResponse.text();\n }\n\n if (currentVersion === '') {\n // Initial cache\n await cache.put(VERSION_KEY, new Response(version));\n } else if (currentVersion !== version) {\n // New version detected\n console.log('Current version:', currentVersion);\n console.log('New version:', version);\n\n // Update the stored version\n await cache.put(VERSION_KEY, new Response(version));\n\n // Update clients\n await updateClients(version, requiresHardRefresh);\n }\n } catch (error) {\n console.error('Error checking version:', error);\n }\n}\n\nasync function updateClients(version: string, requiresHardRefresh: boolean) {\n await _self.clients.claim();\n const clients = await _self.clients.matchAll();\n clients.forEach(client => {\n postMessage(client, {\n type: 'NEW_VERSION_AVAILABLE',\n version,\n requiresHardRefresh,\n });\n });\n}\n"],"names":["_self","APP_VERSION","REQUIRES_HARD_REFRESH","VERSION_CACHE","VERSION_KEY","event","checkAppVersion","postMessage","client","message","version","requiresHardRefresh","cache","cachedResponse","currentVersion","updateClients","error"],"mappings":"AAIA,MAAMA,EAAQ,KAERC,EAAc,
|
|
1
|
+
{"version":3,"file":"service-worker.js","sources":["../src/service-worker.ts"],"sourcesContent":["/// <reference lib=\"WebWorker\" />\n\nimport { ServiceWorkerEvent } from './utils/registerServiceWorker';\n\nconst _self = self as unknown as ServiceWorkerGlobalScope;\n\nconst APP_VERSION = __APP_VERSION__;\nconst REQUIRES_HARD_REFRESH = __REQUIRES_HARD_REFRESH__;\n\nconst VERSION_CACHE = 'version-cache';\nconst VERSION_KEY = 'app-version';\n\n_self.addEventListener('install', () => {\n _self.skipWaiting().catch(console.error);\n});\n\n_self.addEventListener('activate', (event: ExtendableEvent) => {\n event.waitUntil(_self.clients.claim());\n\n checkAppVersion(APP_VERSION, REQUIRES_HARD_REFRESH).catch(console.error);\n});\n\nexport type NEW_VERSION_AVAILABLE_MESSAGE = {\n type: 'NEW_VERSION_AVAILABLE';\n version: string;\n requiresHardRefresh: boolean;\n};\n\nexport type ServiceWorkerMessageData = NEW_VERSION_AVAILABLE_MESSAGE;\n\nexport type ServiceWorkerMessage = ServiceWorkerEvent<ServiceWorkerMessageData>;\n\nfunction postMessage(client: Client, message: ServiceWorkerMessageData) {\n return client.postMessage(message);\n}\n\nasync function checkAppVersion(version: string, requiresHardRefresh: boolean) {\n try {\n const cache = await caches.open(VERSION_CACHE);\n const cachedResponse = await cache.match(VERSION_KEY);\n\n let currentVersion = '';\n\n if (cachedResponse) {\n currentVersion = await cachedResponse.text();\n }\n\n if (currentVersion === '') {\n // Initial cache\n await cache.put(VERSION_KEY, new Response(version));\n } else if (currentVersion !== version) {\n // New version detected\n console.log('Current version:', currentVersion);\n console.log('New version:', version);\n\n // Update the stored version\n await cache.put(VERSION_KEY, new Response(version));\n\n // Update clients\n await updateClients(version, requiresHardRefresh);\n }\n } catch (error) {\n console.error('Error checking version:', error);\n }\n}\n\nasync function updateClients(version: string, requiresHardRefresh: boolean) {\n await _self.clients.claim();\n const clients = await _self.clients.matchAll();\n clients.forEach(client => {\n postMessage(client, {\n type: 'NEW_VERSION_AVAILABLE',\n version,\n requiresHardRefresh,\n });\n });\n}\n"],"names":["_self","APP_VERSION","REQUIRES_HARD_REFRESH","VERSION_CACHE","VERSION_KEY","event","checkAppVersion","postMessage","client","message","version","requiresHardRefresh","cache","cachedResponse","currentVersion","updateClients","error"],"mappings":"AAIA,MAAMA,EAAQ,KAERC,EAAc,QACdC,EAAwB,GAExBC,EAAgB,gBAChBC,EAAc,cAEpBJ,EAAM,iBAAiB,UAAW,IAAM,CACpCA,EAAM,YAAY,EAAE,MAAM,QAAQ,KAAK,CAC3C,CAAC,EAEDA,EAAM,iBAAiB,WAAaK,GAA2B,CAC3DA,EAAM,UAAUL,EAAM,QAAQ,MAAA,CAAO,EAErCM,EAAgBL,EAAaC,CAAqB,EAAE,MAAM,QAAQ,KAAK,CAC3E,CAAC,EAYD,SAASK,EAAYC,EAAgBC,EAAmC,CAC7D,OAAAD,EAAO,YAAYC,CAAO,CACrC,CAEA,eAAeH,EAAgBI,EAAiBC,EAA8B,CACtE,GAAA,CACA,MAAMC,EAAQ,MAAM,OAAO,KAAKT,CAAa,EACvCU,EAAiB,MAAMD,EAAM,MAAMR,CAAW,EAEpD,IAAIU,EAAiB,GAEjBD,IACiBC,EAAA,MAAMD,EAAe,KAAK,GAG3CC,IAAmB,GAEnB,MAAMF,EAAM,IAAIR,EAAa,IAAI,SAASM,CAAO,CAAC,EAC3CI,IAAmBJ,IAElB,QAAA,IAAI,mBAAoBI,CAAc,EACtC,QAAA,IAAI,eAAgBJ,CAAO,EAGnC,MAAME,EAAM,IAAIR,EAAa,IAAI,SAASM,CAAO,CAAC,EAG5C,MAAAK,EAAcL,EAASC,CAAmB,SAE/CK,EAAO,CACJ,QAAA,MAAM,0BAA2BA,CAAK,CAAA,CAEtD,CAEA,eAAeD,EAAcL,EAAiBC,EAA8B,CAClE,MAAAX,EAAM,QAAQ,MAAM,GACV,MAAMA,EAAM,QAAQ,SAAS,GACrC,QAAkBQ,GAAA,CACtBD,EAAYC,EAAQ,CAChB,KAAM,wBACN,QAAAE,EACA,oBAAAC,CAAA,CACH,CAAA,CACJ,CACL"}
|
package/dist/studio/cli.js
CHANGED
package/dist/studio/index.d.ts
CHANGED
|
@@ -6,9 +6,14 @@ export type Project = {
|
|
|
6
6
|
export type ConnectStudioOptions = {
|
|
7
7
|
port?: string;
|
|
8
8
|
host?: boolean;
|
|
9
|
+
https?: boolean;
|
|
9
10
|
configFile?: string;
|
|
10
11
|
localEditors?: string;
|
|
11
12
|
localDocuments?: string;
|
|
13
|
+
open?: boolean;
|
|
14
|
+
packages?: {
|
|
15
|
+
packageName: string;
|
|
16
|
+
}[];
|
|
12
17
|
};
|
|
13
18
|
export declare function generateImportSctipt(outputPath: string, projects: Project[]): void;
|
|
14
19
|
export declare function startConnectStudio(options: ConnectStudioOptions): Promise<void> | undefined;
|
package/dist/studio/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import fs4 from "node:fs";
|
|
|
4
4
|
import { dirname, isAbsolute, join as join3, resolve } from "node:path";
|
|
5
5
|
|
|
6
6
|
// studio/server.ts
|
|
7
|
+
import basicSsl from "@vitejs/plugin-basic-ssl";
|
|
7
8
|
import { exec } from "node:child_process";
|
|
8
9
|
import fs3 from "node:fs";
|
|
9
10
|
import { join as join2 } from "node:path";
|
|
@@ -353,7 +354,7 @@ async function startServer(options = {}) {
|
|
|
353
354
|
backupIndexHtml(true);
|
|
354
355
|
const PORT = process.env.PORT ? parseInt(process.env.PORT) : 3e3;
|
|
355
356
|
const HOST = process.env.HOST ? process.env.HOST : "0.0.0.0";
|
|
356
|
-
const OPEN_BROWSER = typeof process.env.OPEN_BROWSER === "string" ? process.env.OPEN_BROWSER === "true" :
|
|
357
|
+
const OPEN_BROWSER = typeof process.env.OPEN_BROWSER === "string" ? process.env.OPEN_BROWSER === "true" : false;
|
|
357
358
|
const studioConfig = getStudioConfig();
|
|
358
359
|
if (!fs3.existsSync(join2(appPath2, "src"))) {
|
|
359
360
|
fs3.mkdirSync(join2(appPath2, "src"));
|
|
@@ -365,7 +366,7 @@ async function startServer(options = {}) {
|
|
|
365
366
|
root: appPath2,
|
|
366
367
|
server: {
|
|
367
368
|
port: PORT,
|
|
368
|
-
open: OPEN_BROWSER,
|
|
369
|
+
open: options.open ?? OPEN_BROWSER,
|
|
369
370
|
host: HOST
|
|
370
371
|
},
|
|
371
372
|
resolve: {
|
|
@@ -411,7 +412,10 @@ async function startServer(options = {}) {
|
|
|
411
412
|
declarationFile: join2(studioDirname2, "../.env"),
|
|
412
413
|
computedEnv: studioConfig
|
|
413
414
|
}),
|
|
414
|
-
runShellScriptPlugin(viteEnvsScript)
|
|
415
|
+
runShellScriptPlugin(viteEnvsScript),
|
|
416
|
+
options.https && basicSsl({
|
|
417
|
+
name: "Powerhouse Connect Studio"
|
|
418
|
+
})
|
|
415
419
|
],
|
|
416
420
|
build: {
|
|
417
421
|
rollupOptions: {
|
|
@@ -484,13 +488,16 @@ ${exportStatement}`;
|
|
|
484
488
|
fs4.writeFileSync(importScriptFilePath, fileContent);
|
|
485
489
|
}
|
|
486
490
|
function startConnectStudio(options) {
|
|
487
|
-
|
|
491
|
+
const serverOptions = {};
|
|
488
492
|
if (options.port) {
|
|
489
493
|
process.env.PORT = options.port;
|
|
490
494
|
}
|
|
491
495
|
if (options.host) {
|
|
492
496
|
process.env.HOST = options.host.toString();
|
|
493
497
|
}
|
|
498
|
+
if (typeof options.open === "boolean") {
|
|
499
|
+
serverOptions.open = options.open;
|
|
500
|
+
}
|
|
494
501
|
if (options.configFile) {
|
|
495
502
|
const config = readJsonFile(options.configFile);
|
|
496
503
|
if (!config) return;
|
|
@@ -499,13 +506,14 @@ function startConnectStudio(options) {
|
|
|
499
506
|
const packages = mapProjects(config.packages);
|
|
500
507
|
generateImportSctipt(configFileDir, packages);
|
|
501
508
|
process.env.LOAD_EXTERNAL_PROJECTS = "true";
|
|
502
|
-
serverOptions =
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
509
|
+
serverOptions.enableExternalProjects = true;
|
|
510
|
+
serverOptions.projectsImportPath = resolve(
|
|
511
|
+
configFileDir,
|
|
512
|
+
IMPORT_SCRIPT_FILE
|
|
513
|
+
);
|
|
506
514
|
} else {
|
|
507
515
|
process.env.LOAD_EXTERNAL_PROJECTS = "false";
|
|
508
|
-
serverOptions =
|
|
516
|
+
serverOptions.enableExternalProjects = false;
|
|
509
517
|
}
|
|
510
518
|
if (config.documentModelsDir) {
|
|
511
519
|
process.env.LOCAL_DOCUMENT_MODELS = isAbsolute(
|
|
@@ -526,7 +534,17 @@ function startConnectStudio(options) {
|
|
|
526
534
|
}
|
|
527
535
|
} else {
|
|
528
536
|
process.env.LOAD_EXTERNAL_PROJECTS = "false";
|
|
529
|
-
serverOptions =
|
|
537
|
+
serverOptions.enableExternalProjects = false;
|
|
538
|
+
}
|
|
539
|
+
if (options.packages && options.packages.length > 0) {
|
|
540
|
+
const packages = mapProjects(options.packages);
|
|
541
|
+
generateImportSctipt(projectRoot2, packages);
|
|
542
|
+
process.env.LOAD_EXTERNAL_PROJECTS = "true";
|
|
543
|
+
serverOptions.enableExternalProjects = true;
|
|
544
|
+
serverOptions.projectsImportPath = resolve(
|
|
545
|
+
projectRoot2,
|
|
546
|
+
IMPORT_SCRIPT_FILE
|
|
547
|
+
);
|
|
530
548
|
}
|
|
531
549
|
if (options.localEditors) {
|
|
532
550
|
process.env.LOCAL_DOCUMENT_EDITORS = options.localEditors;
|
|
@@ -534,12 +552,15 @@ function startConnectStudio(options) {
|
|
|
534
552
|
if (options.localDocuments) {
|
|
535
553
|
process.env.LOCAL_DOCUMENT_MODELS = options.localDocuments;
|
|
536
554
|
}
|
|
555
|
+
if (options.https) {
|
|
556
|
+
serverOptions.https = options.https;
|
|
557
|
+
}
|
|
537
558
|
return startServer(serverOptions).catch((error) => {
|
|
538
559
|
throw error;
|
|
539
560
|
});
|
|
540
561
|
}
|
|
541
562
|
var program = new Command();
|
|
542
|
-
program.name("Connect Studio").description("Connect Studio CLI").option("-p, --port <port>", "Port to run the server on", "3000").option("-h, --host", "Expose the server to the network").option(
|
|
563
|
+
program.name("Connect Studio").description("Connect Studio CLI").option("-p, --port <port>", "Port to run the server on", "3000").option("-h, --host", "Expose the server to the network").option("--https", "Enable HTTPS").option("--open", "Open the browser on start").option(
|
|
543
564
|
"--config-file <configFile>",
|
|
544
565
|
"Path to the powerhouse.config.js file"
|
|
545
566
|
).option(
|
package/dist/studio/server.d.ts
CHANGED
package/dist/swEnv.js
CHANGED
|
@@ -10,9 +10,9 @@ const envWithValuesInBase64 = {
|
|
|
10
10
|
"MODE": "InByb2R1Y3Rpb24i",
|
|
11
11
|
"DEV": "ZmFsc2U=",
|
|
12
12
|
"PROD": "dHJ1ZQ==",
|
|
13
|
-
"APP_VERSION": "
|
|
13
|
+
"APP_VERSION": "IjEuMC40Ig==",
|
|
14
14
|
"REQUIRES_HARD_REFRESH": "dHJ1ZQ==",
|
|
15
|
-
"SENTRY_RELEASE": "
|
|
15
|
+
"SENTRY_RELEASE": "IjEuMC40Ig==",
|
|
16
16
|
"BASE_PATH": "Ii8i",
|
|
17
17
|
"BASE_HREF": "Ii4vIg==",
|
|
18
18
|
"PH_CONNECT_APP_REQUIRES_HARD_REFRESH": "InRydWUi",
|
|
@@ -47,8 +47,7 @@ const envWithValuesInBase64 = {
|
|
|
47
47
|
"PH_CONNECT_GA_TRACKING_ID": "IiI=",
|
|
48
48
|
"LOCAL_DOCUMENT_MODELS": "IiI=",
|
|
49
49
|
"LOCAL_DOCUMENT_EDITORS": "IiI=",
|
|
50
|
-
"LOAD_EXTERNAL_PROJECTS": "ImZhbHNlIg=="
|
|
51
|
-
"PH_CONNECT_ATLAS_BASE_URL": "Imh0dHBzOi8vbWlwcy1wb3J0YWwtc3RhZ2luZy1iZXRhLnZlcmNlbC5hcHAi"
|
|
50
|
+
"LOAD_EXTERNAL_PROJECTS": "ImZhbHNlIg=="
|
|
52
51
|
};
|
|
53
52
|
const env = {};
|
|
54
53
|
Object.keys(envWithValuesInBase64).forEach(function (name) {
|
package/dist/vite-envs.sh
CHANGED
|
@@ -11,7 +11,7 @@ replaceAll() {
|
|
|
11
11
|
}'
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
html=$(echo "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0bGU+
|
|
14
|
+
html=$(echo "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0bGU+UG93ZXJob3VzZSBDb25uZWN0PC90aXRsZT48YmFzZSBocmVmPSIvIj48IS0tIHZpdGUtZW52cyBzY3JpcHQgcGxhY2Vob2xkZXIgeEtzUG1MczMwc3dLc2RJc1Z4IC0tPjwvaGVhZD48Ym9keT4lVklURV9JTVBPUlRfUkVBQ1RfU0NSSVBUJTxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbj0iIiBzcmM9Ii9hc3NldHMvbWFpbi5EUS1hVjdRcS5qcyI+PC9zY3JpcHQ+PGRpdiBpZD0iYXBwIj48L2Rpdj48L2JvZHk+PC9odG1sPg==" | base64 -d)
|
|
15
15
|
|
|
16
16
|
VITE_IMPORT_REACT_SCRIPT_base64="eEFwV2RSclg5OWtQclZnZ0UiIgo="
|
|
17
17
|
VITE_IMPORT_REACT_SCRIPT=$(echo "Cg==" | base64 -d)
|
|
@@ -23,12 +23,12 @@ DEV_base64="eEFwV2RSclg5OWtQclZnZ0VmYWxzZQo="
|
|
|
23
23
|
DEV=$(echo "ZmFsc2UK" | base64 -d)
|
|
24
24
|
PROD_base64="eEFwV2RSclg5OWtQclZnZ0V0cnVlCg=="
|
|
25
25
|
PROD=$(echo "dHJ1ZQo=" | base64 -d)
|
|
26
|
-
APP_VERSION_base64="
|
|
27
|
-
APP_VERSION=$(echo "
|
|
26
|
+
APP_VERSION_base64="eEFwV2RSclg5OWtQclZnZ0UiMS4wLjQiCg=="
|
|
27
|
+
APP_VERSION=$(echo "MS4wLjQK" | base64 -d)
|
|
28
28
|
REQUIRES_HARD_REFRESH_base64="eEFwV2RSclg5OWtQclZnZ0V0cnVlCg=="
|
|
29
29
|
REQUIRES_HARD_REFRESH=$(echo "dHJ1ZQo=" | base64 -d)
|
|
30
|
-
SENTRY_RELEASE_base64="
|
|
31
|
-
SENTRY_RELEASE=$(echo "
|
|
30
|
+
SENTRY_RELEASE_base64="eEFwV2RSclg5OWtQclZnZ0UiMS4wLjQiCg=="
|
|
31
|
+
SENTRY_RELEASE=$(echo "MS4wLjQK" | base64 -d)
|
|
32
32
|
if printenv BASE_PATH &> /dev/null; then
|
|
33
33
|
BASE_PATH_base64=$(printenv BASE_PATH | base64)
|
|
34
34
|
else
|
|
@@ -239,12 +239,6 @@ else
|
|
|
239
239
|
LOAD_EXTERNAL_PROJECTS_base64="eEFwV2RSclg5OWtQclZnZ0UiZmFsc2UiCg=="
|
|
240
240
|
fi
|
|
241
241
|
LOAD_EXTERNAL_PROJECTS=${LOAD_EXTERNAL_PROJECTS:-$(echo "ZmFsc2UK" | base64 -d)}
|
|
242
|
-
if printenv PH_CONNECT_ATLAS_BASE_URL &> /dev/null; then
|
|
243
|
-
PH_CONNECT_ATLAS_BASE_URL_base64=$(printenv PH_CONNECT_ATLAS_BASE_URL | base64)
|
|
244
|
-
else
|
|
245
|
-
PH_CONNECT_ATLAS_BASE_URL_base64="eEFwV2RSclg5OWtQclZnZ0UiaHR0cHM6Ly9taXBzLXBvcnRhbC1zdGFnaW5nLWJldGEudmVyY2VsLmFwcCIK"
|
|
246
|
-
fi
|
|
247
|
-
PH_CONNECT_ATLAS_BASE_URL=${PH_CONNECT_ATLAS_BASE_URL:-$(echo "aHR0cHM6Ly9taXBzLXBvcnRhbC1zdGFnaW5nLWJldGEudmVyY2VsLmFwcAo=" | base64 -d)}
|
|
248
242
|
|
|
249
243
|
processedHtml="$html"
|
|
250
244
|
|
|
@@ -291,7 +285,6 @@ processedHtml=$(replaceAll "$processedHtml" "%PH_CONNECT_GA_TRACKING_ID%" "PH_CO
|
|
|
291
285
|
processedHtml=$(replaceAll "$processedHtml" "%LOCAL_DOCUMENT_MODELS%" "LOCAL_DOCUMENT_MODELSxPsZs9swrPvxYpC")
|
|
292
286
|
processedHtml=$(replaceAll "$processedHtml" "%LOCAL_DOCUMENT_EDITORS%" "LOCAL_DOCUMENT_EDITORSxPsZs9swrPvxYpC")
|
|
293
287
|
processedHtml=$(replaceAll "$processedHtml" "%LOAD_EXTERNAL_PROJECTS%" "LOAD_EXTERNAL_PROJECTSxPsZs9swrPvxYpC")
|
|
294
|
-
processedHtml=$(replaceAll "$processedHtml" "%PH_CONNECT_ATLAS_BASE_URL%" "PH_CONNECT_ATLAS_BASE_URLxPsZs9swrPvxYpC")
|
|
295
288
|
|
|
296
289
|
processedHtml=$(replaceAll "$processedHtml" "VITE_IMPORT_REACT_SCRIPTxPsZs9swrPvxYpC" "$VITE_IMPORT_REACT_SCRIPT")
|
|
297
290
|
processedHtml=$(replaceAll "$processedHtml" "BASE_URLxPsZs9swrPvxYpC" "$BASE_URL")
|
|
@@ -336,7 +329,6 @@ processedHtml=$(replaceAll "$processedHtml" "PH_CONNECT_GA_TRACKING_IDxPsZs9swrP
|
|
|
336
329
|
processedHtml=$(replaceAll "$processedHtml" "LOCAL_DOCUMENT_MODELSxPsZs9swrPvxYpC" "$LOCAL_DOCUMENT_MODELS")
|
|
337
330
|
processedHtml=$(replaceAll "$processedHtml" "LOCAL_DOCUMENT_EDITORSxPsZs9swrPvxYpC" "$LOCAL_DOCUMENT_EDITORS")
|
|
338
331
|
processedHtml=$(replaceAll "$processedHtml" "LOAD_EXTERNAL_PROJECTSxPsZs9swrPvxYpC" "$LOAD_EXTERNAL_PROJECTS")
|
|
339
|
-
processedHtml=$(replaceAll "$processedHtml" "PH_CONNECT_ATLAS_BASE_URLxPsZs9swrPvxYpC" "$PH_CONNECT_ATLAS_BASE_URL")
|
|
340
332
|
|
|
341
333
|
json=""
|
|
342
334
|
json="$json{"
|
|
@@ -382,8 +374,7 @@ json="$json\"PH_CONNECT_SENTRY_TRACING_ENABLED\":\`$PH_CONNECT_SENTRY_TRACING_EN
|
|
|
382
374
|
json="$json\"PH_CONNECT_GA_TRACKING_ID\":\`$PH_CONNECT_GA_TRACKING_ID_base64\`,"
|
|
383
375
|
json="$json\"LOCAL_DOCUMENT_MODELS\":\`$LOCAL_DOCUMENT_MODELS_base64\`,"
|
|
384
376
|
json="$json\"LOCAL_DOCUMENT_EDITORS\":\`$LOCAL_DOCUMENT_EDITORS_base64\`,"
|
|
385
|
-
json="$json\"LOAD_EXTERNAL_PROJECTS\":\`$LOAD_EXTERNAL_PROJECTS_base64
|
|
386
|
-
json="$json\"PH_CONNECT_ATLAS_BASE_URL\":\`$PH_CONNECT_ATLAS_BASE_URL_base64\`"
|
|
377
|
+
json="$json\"LOAD_EXTERNAL_PROJECTS\":\`$LOAD_EXTERNAL_PROJECTS_base64\`"
|
|
387
378
|
json="$json}"
|
|
388
379
|
|
|
389
380
|
script="
|