2 lines
26 KiB
JavaScript
2 lines
26 KiB
JavaScript
import{_ as x,i as j,c as y,o as v,b,j as h,z as S,F as P,r as O,n as R,a as D,t as T,q as B,a6 as F,a5 as N,p as G,ae as W}from"./main-D6qyxymd.js";const H={props:{plugin:{type:Object,required:!0},settings:{type:Object,required:!0}},emits:["update:settings"],data(){return{environments:["production","staging","editor"],activeEnvironment:"production",selectModes:{production:"select",staging:"select",editor:"select"},showSettings:{production:!1,staging:!1,editor:!1},projects:[],isLoading:!1,isComingUp:!1,showDbPass:!1,organizations:[],newProjects:{production:{name:"",region:"us-east-1",organizationId:"",dbPass:""},staging:{name:"",region:"us-east-1",organizationId:"",dbPass:""},editor:{name:"",region:"us-east-1",organizationId:"",dbPass:""}},branches:{},selectedBranches:{},branchErrors:{},branchChangeAbortController:null}},watch:{selectModes:{async handler(t){var e;for(const i of this.environments)t[i]==="create"&&this.organizations.length===0&&(await this.fetchOrganizations(),this.newProjects[i]={name:`WeWeb - ${wwLib.$store.getters["websiteData/getDesignInfo"].name} (${this.capitalize(i)})`,region:"us-east-1",organizationId:((e=this.organizations[0])==null?void 0:e.id)||"",dbPass:wwLib.wwUtils.getUid()})},deep:!0}},computed:{isValid(){return!this.branchChangeAbortController},projectRef(){var e;const t=this.getCurrentEnvConfig();return(e=t==null?void 0:t.projectUrl)==null?void 0:e.replace("https://","").replace(".supabase.co","")},projectsOptions(){return this.projects.map(t=>({label:`${t.name} (${t.id}) ${t.status==="INACTIVE"?"#PAUSED":""}`,value:`https://${t.id}.supabase.co`})).sort((t,e)=>(t.label.includes("#PAUSED")?1:0)-(e.label.includes("#PAUSED")?1:0))},branchOptions(){return t=>{var i;const e=((i=this.branches)==null?void 0:i[t])||[];return e.length===0?[]:e.map(r=>({label:`${r.name}${r.is_default?" (default)":""}`,value:r.project_ref||r.ref||r.id||r.name}))}}},async mounted(){var e,i,r,a;!((e=this.settings.publicData)!=null&&e.environments)&&!((i=this.settings.publicData)!=null&&i.projectUrl)&&!((r=this.settings.privateData)!=null&&r.accessToken)&&await this.syncFromOtherPlugin("supabase"),(a=this.settings.publicData)!=null&&a.environments||this.migrateToMultiEnv(),this.sanitizeEnvironmentTokens(),this.hasOAuthToken()&&this.refreshProjects(),this.$nextTick(async()=>{var s;try{for(const c of this.environments)((s=this.getCurrentEnvConfig(c))==null?void 0:s.projectUrl)&&await this.loadBranches(c)}catch{}})},methods:{sanitizeEnvironmentTokens(){var a;const t=(a=this.settings.privateData)==null?void 0:a.environments;if(!t)return;let e=!1;const i={};if(this.environments.forEach(s=>{const c=t[s];if(!c)return;const g=Object.hasOwn(c,"accessToken"),u=Object.hasOwn(c,"refreshToken");if(g||u){const{accessToken:f,refreshToken:l,...w}=c;i[s]=w,e=!0}}),!e)return;const r={...this.settings,privateData:{...this.settings.privateData,environments:{...t,...i}}};this.$emit("update:settings",r)},capitalize(t){return t.charAt(0).toUpperCase()+t.slice(1)},isEnvironmentConfigured(t){return W(this.settings,t)},getConnectionMode(t){const e=this.getCurrentEnvPrivateConfig(t);return(e==null?void 0:e.connectionMode)||"oauth"},hasOAuthToken(){var t,e;return(e=(t=this.settings.privateData)==null?void 0:t.accessToken)==null?void 0:e.startsWith("sbp_oauth")},hasProjectConfig(t){const e=this.getCurrentEnvConfig(t);return!!(e!=null&&e.projectUrl)},getProjectSelectValue(t){var r;const e=this.getCurrentEnvConfig(t);if(!e)return"";const i=e.baseProjectRef||((r=e.projectUrl)==null?void 0:r.replace("https://","").replace(".supabase.co",""));return i?`https://${i}.supabase.co`:e.projectUrl},shouldShowBranchSelect(t){var r,a;const e=this.getCurrentEnvConfig(t),i=((a=(r=this.branches)==null?void 0:r[t])==null?void 0:a.length)||0;return this.hasOAuthToken()&&!!(e!=null&&e.projectUrl)&&i>0},getCurrentEnvConfig(t=this.activeEnvironment){var e,i,r;return(i=(e=this.settings.publicData)==null?void 0:e.environments)!=null&&i[t]?this.settings.publicData.environments[t]:t==="production"&&((r=this.settings.publicData)!=null&&r.projectUrl)?{projectUrl:this.settings.publicData.projectUrl,apiKey:this.settings.publicData.apiKey,customDomain:this.settings.publicData.customDomain}:{}},getCurrentEnvPrivateConfig(t=this.activeEnvironment){var e,i;if((i=(e=this.settings.privateData)==null?void 0:e.environments)!=null&&i[t]){const{accessToken:r,refreshToken:a,...s}=this.settings.privateData.environments[t]||{};return s}return t==="production"&&this.settings.privateData?{connectionMode:this.settings.privateData.connectionMode||"oauth",apiKey:this.settings.privateData.apiKey,databasePassword:this.settings.privateData.databasePassword,connectionString:this.settings.privateData.connectionString}:{}},migrateToMultiEnv(){var i,r,a,s,c,g,u;const t=((i=this.settings.privateData)==null?void 0:i.connectionMode)||"oauth",e={...this.settings,publicData:{...this.settings.publicData,environments:{production:{projectUrl:((r=this.settings.publicData)==null?void 0:r.projectUrl)||"",apiKey:((a=this.settings.publicData)==null?void 0:a.apiKey)||"",customDomain:((s=this.settings.publicData)==null?void 0:s.customDomain)||""}}},privateData:{...this.settings.privateData,environments:{production:{connectionMode:t,apiKey:((c=this.settings.privateData)==null?void 0:c.apiKey)||"",databasePassword:((g=this.settings.privateData)==null?void 0:g.databasePassword)||"",connectionString:((u=this.settings.privateData)==null?void 0:u.connectionString)||""}}}};this.$emit("update:settings",e)},changeConnectionMode(t,e){this.updateEnvironmentConfig(t,{privateData:{connectionMode:e}})},async connect(){this.isLoading=!0;const t=window.location.origin+window.location.pathname;window.localStorage.setItem("supabase_oauth",!0);const{data:e}=await wwAxios.post(`${wwLib.wwApiRequests._getPluginsUrl()}/designs/${wwLib.$store.getters["websiteData/getDesignInfo"].id}/supabase/authorize`,{redirectUri:t,oauthRedirectUri:wwLib.wwApiRequests._getPluginsUrl()+"/supabase/redirect"});if(!(e!=null&&e.data))throw new Error("No authorization URL returned");window.location.href=e==null?void 0:e.data},disconnect(){var e;const t={...this.settings,privateData:{...this.settings.privateData,accessToken:"",refreshToken:"",environments:{...(e=this.settings.privateData)==null?void 0:e.environments}}};this.environments.forEach(i=>{var r;(r=t.privateData.environments)!=null&&r[i]&&(delete t.privateData.environments[i].accessToken,delete t.privateData.environments[i].refreshToken)}),this.$emit("update:settings",t)},async changeProjectUrl(t,e){var r,a,s,c,g,u,f,l;if(!t){this.updateEnvironmentConfig(e,{publicData:{projectUrl:"",apiKey:""},privateData:{apiKey:"",connectionString:""}});return}const i=this.getCurrentEnvConfig(e);if(((i==null?void 0:i.projectUrl)||"")!==t){this.isLoading=!0;try{let w=this.getCurrentEnvConfig(e).apiKey,m=this.getCurrentEnvPrivateConfig(e).apiKey,C=this.getCurrentEnvPrivateConfig(e).connectionString,p=t.replace("https://","").replace(".supabase.co","");const n={...this.branches||{}};n[e]=[],this.branches=n;const E={...this.branchErrors||{}};delete E[e],this.branchErrors=E;const o={...this.selectedBranches||{}};if(o[e]="",this.selectedBranches=o,this.hasOAuthToken()&&this.getConnectionMode(e)==="oauth"){const d=await this.fetchProject(t.replace("https://","").replace(".supabase.co",""));d&&(w=((a=(r=d.apiKeys)==null?void 0:r.find(k=>k.name==="anon"))==null?void 0:a.api_key)||w,m=((c=(s=d.apiKeys)==null?void 0:s.find(k=>k.name==="service_role"))==null?void 0:c.api_key)||m,C=((g=d.pgbouncer)==null?void 0:g.connection_string)||C,p=((u=d.project)==null?void 0:u.parent_project_ref)||((f=d.project)==null?void 0:f.ref)||((l=d.project)==null?void 0:l.id)||p)}this.updateEnvironmentConfig(e,{publicData:{projectUrl:t,apiKey:w,baseProjectRef:p,branch:null,branchSlug:null},privateData:{apiKey:m,connectionString:C}}),await this.$nextTick(),await this.loadBranches(e,p)}finally{this.isLoading=!1}}},async loadBranches(t,e=""){var i,r,a,s,c,g;try{const u=this.getCurrentEnvConfig(t),l=e||u.baseProjectRef||((i=u.projectUrl)==null?void 0:i.replace("https://","").replace(".supabase.co","")),w=u.baseProjectRef||e||"";if(!l||!this.hasOAuthToken())return;const{data:m}=await wwLib.wwPlugins.supabase.requestAPI({method:"GET",path:`/projects/${l}/branches`,params:{baseProjectRef:w}}),C=(m==null?void 0:m.data)||[];this.branches={...this.branches||{},[t]:C};const p={...this.branchErrors||{}};delete p[t],this.branchErrors=p;const n=C.find(A=>A.is_default),E=(n==null?void 0:n.project_ref)||(n==null?void 0:n.ref)||(n==null?void 0:n.id)||"",o=(r=this.selectedBranches)==null?void 0:r[t],d=((a=this.getCurrentEnvConfig(t))==null?void 0:a.branch)||"",k=o||d||"",I=k&&C.some(A=>(A.project_ref||A.ref||A.id||A.name)===k);let U="",K=!1;I?U=k:E&&(U=E,K=!d),(U||o||d)&&(this.selectedBranches={...this.selectedBranches||{},[t]:U},K&&U&&await this.changeBranch(U,t))}catch(u){const f=((c=(s=u==null?void 0:u.response)==null?void 0:s.data)==null?void 0:c.error)||(u==null?void 0:u.message)||"Unable to load branches";this.branches={...this.branches||{},[t]:[]},this.branchErrors={...this.branchErrors||{},[t]:f},console.warn("[Supabase auth plugin] loadBranches error",{env:t,status:(g=u==null?void 0:u.response)==null?void 0:g.status,msg:f})}},async changeBranch(t,e){var r,a,s,c,g,u,f,l,w,m,C;this.branchChangeAbortController&&this.branchChangeAbortController.abort(),this.branchChangeAbortController=new AbortController;const i=this.branchChangeAbortController.signal;this.setLoadingFlag(!0),this.isLoading=!0;try{this.selectedBranches={...this.selectedBranches||{},[e]:t||""};const p=this.getCurrentEnvConfig(e).baseProjectRef||((r=this.getCurrentEnvConfig(e).projectUrl)==null?void 0:r.replace("https://","").replace(".supabase.co",""));if(!p)return;let n=p,E="";if(t){const _=(((a=this.branches)==null?void 0:a[e])||[]).find(V=>(V.project_ref||V.ref||V.id||V.name)===t);n=(_==null?void 0:_.project_ref)||(_==null?void 0:_.ref)||t,E=(_==null?void 0:_.name)||""}const o=t&&(E||((s=this.getCurrentEnvConfig(e))==null?void 0:s.branchSlug))||"",d=await this.fetchProject(p,{branchSlug:o,branchRef:t?n:"",signal:i}),k=(g=(c=d==null?void 0:d.apiKeys)==null?void 0:c.find(L=>L.name==="anon"))==null?void 0:g.api_key,I=(f=(u=d==null?void 0:d.apiKeys)==null?void 0:u.find(L=>L.name==="service_role"))==null?void 0:f.api_key,U=(l=d==null?void 0:d.pgbouncer)==null?void 0:l.connection_string,K=t?(d==null?void 0:d.branchRef)||((w=d==null?void 0:d.project)==null?void 0:w.project_ref)||((m=d==null?void 0:d.project)==null?void 0:m.ref)||n:"",z=`https://${K||p}.supabase.co`,q=k||this.getCurrentEnvConfig(e).apiKey,M=I||this.getCurrentEnvPrivateConfig(e).apiKey;this.updateEnvironmentConfig(e,{publicData:{projectUrl:z,apiKey:q,branch:K||null,branchSlug:o||null,baseProjectRef:p},privateData:{apiKey:M,connectionString:U||this.getCurrentEnvPrivateConfig(e).connectionString}}),await this.loadBranches(e,p)}catch(p){if(p.name==="AbortError"||p.code==="ERR_CANCELED")return;throw p}finally{this.setLoadingFlag(!1),this.isLoading=!1,((C=this.branchChangeAbortController)==null?void 0:C.signal)===i&&(this.branchChangeAbortController=null)}},setLoadingFlag(t){const e={...this.settings,privateData:{...this.settings.privateData,_isBranchChanging:t||void 0}};this.$emit("update:settings",e)},changeApiKey(t,e){this.updateEnvironmentConfig(e,{publicData:{apiKey:t}})},changeApiKey(t,e){this.updateEnvironmentConfig(e,{publicData:{apiKey:t}})},changeCustomDomain(t,e){this.updateEnvironmentConfig(e,{publicData:{customDomain:t}})},changePrivateApiKey(t,e){this.updateEnvironmentConfig(e,{privateData:{apiKey:t}})},updateEnvironmentConfig(t,e={}){var C,p,n,E;const i=this.getCurrentEnvPrivateConfig(t)||{},r=this.getCurrentEnvConfig(t),a=(C=this.settings.privateData)==null?void 0:C.accessToken,s=(p=this.settings.privateData)==null?void 0:p.refreshToken,c={...e.privateData||{}},g=Object.hasOwn(c,"accessToken")?c.accessToken:void 0,u=Object.hasOwn(c,"refreshToken")?c.refreshToken:void 0;Object.hasOwn(c,"accessToken")&&delete c.accessToken,Object.hasOwn(c,"refreshToken")&&delete c.refreshToken;const f={...i};delete f.accessToken,delete f.refreshToken;const l={...this.settings,publicData:{...this.settings.publicData,environments:{...(n=this.settings.publicData)==null?void 0:n.environments,[t]:{...r,...e.publicData||{}}}},privateData:{...this.settings.privateData,environments:{...(E=this.settings.privateData)==null?void 0:E.environments,[t]:{...f,...c}}}};if(t==="production"){const o=l.publicData.environments.production||{},d=l.privateData.environments.production||{};l.publicData={...l.publicData,projectUrl:o.projectUrl??l.publicData.projectUrl,apiKey:o.apiKey??l.publicData.apiKey,customDomain:o.customDomain??l.publicData.customDomain},l.privateData={...l.privateData,connectionMode:d.connectionMode??l.privateData.connectionMode,apiKey:d.apiKey??l.privateData.apiKey,databasePassword:d.databasePassword??l.privateData.databasePassword,connectionString:d.connectionString??l.privateData.connectionString,environments:l.privateData.environments}}const w=g!==void 0?g:a,m=u!==void 0?u:s;w!==void 0?l.privateData.accessToken=w:delete l.privateData.accessToken,m!==void 0?l.privateData.refreshToken=m:delete l.privateData.refreshToken,this.$emit("update:settings",l)},clearEnvironment(t){var i,r;if(t==="production"||!confirm(`Are you sure you want to clear the ${t} environment configuration? This will remove all settings for this environment.`))return;const e={...this.settings,publicData:{...this.settings.publicData,environments:{...(i=this.settings.publicData)==null?void 0:i.environments,[t]:{projectUrl:"",apiKey:"",customDomain:""}}},privateData:{...this.settings.privateData,environments:{...(r=this.settings.privateData)==null?void 0:r.environments,[t]:{connectionMode:"custom",apiKey:"",databasePassword:"",connectionString:""}}}};this.selectModes[t]="select",this.showSettings[t]=!1,this.$emit("update:settings",e)},async syncFromOtherPlugin(t){try{await wwLib.wwPlugins.supabase.syncSettings(t)}catch(e){console.warn("Failed to sync from other plugin:",e)}},async refreshProjects(){var e;const t=(e=this.settings.privateData)==null?void 0:e.accessToken;if(t){this.isLoading=!0;try{const{data:i}=await wwLib.wwPlugins.supabase.requestAPI({method:"POST",path:"/projects/list",data:{accessToken:t}});this.projects=(i==null?void 0:i.data)||[],this.isLoading=!1}catch(i){this.isLoading=!1,console.warn("Failed to refresh projects:",i)}}},async fetchProject(t,{branchSlug:e="",branchRef:i="",signal:r=null}={}){if(!t)return null;try{const{data:a}=await wwLib.wwPlugins.supabase.requestAPI({method:"GET",path:"/projects/"+t,params:e||i?{...e?{branch:e}:{},...i?{branchRef:i}:{}}:void 0,signal:r});return a==null?void 0:a.data}catch(a){return a.name!=="AbortError"&&a.code!=="ERR_CANCELED"&&console.warn(`Failed to fetch project ${t}:`,a),null}},async fetchOrganizations(){this.isLoading=!0;try{const{data:t}=await wwLib.wwPlugins.supabase.requestAPI({method:"GET",path:"/organizations"});if(this.organizations=(t==null?void 0:t.data)||[],this.organizations.length>0)for(const e of this.environments)this.newProjects[e].organizationId||(this.newProjects[e].organizationId=this.organizations[0].id);return this.isLoading=!1,this.organizations}catch(t){throw this.isLoading=!1,t}},async createProject(t){this.isLoading=!0;try{const e=this.newProjects[t];this.updateEnvironmentConfig(t,{publicData:{projectUrl:"",apiKey:""},privateData:{apiKey:"",connectionString:"",databasePassword:""}});const{data:i}=await wwLib.wwPlugins.supabase.requestAPI({method:"POST",path:"/projects",data:{name:e.name,organization_id:e.organizationId,region:e.region,db_pass:e.dbPass}});this.isLoading=!1,this.isComingUp=!0;const r=i==null?void 0:i.data.id,a=`https://${i==null?void 0:i.data.id}.supabase.co`;let s=setInterval(async()=>{var c,g,u,f,l,w;if(await this.refreshProjects(),((c=this.projects.find(m=>m.id===(i==null?void 0:i.data.id)))==null?void 0:c.status)==="ACTIVE_HEALTHY"){clearInterval(s);const m=await this.fetchProject(r);if(m){const C=(u=(g=m.apiKeys)==null?void 0:g.find(o=>o.name==="anon"))==null?void 0:u.api_key,p=(l=(f=m.apiKeys)==null?void 0:f.find(o=>o.name==="service_role"))==null?void 0:l.api_key,n=(w=m.pgbouncer)==null?void 0:w.connection_string,E=e.dbPass;this.updateEnvironmentConfig(t,{publicData:{projectUrl:a,apiKey:C},privateData:{apiKey:p,connectionString:n,databasePassword:E}}),this.isComingUp=!1,this.selectModes[t]="select"}}},5e3)}catch(e){throw this.isLoading=!1,this.isComingUp=!1,e}}}},Q={class:"environment-tabs-container"},Y={class:"ww-tabs-header"},J=["onClick"],X={class:"ww-tab-label"},Z={key:0,class:"ww-tab-optional"},$={key:0,class:"body-sm content-brand-secondary bg-brand-secondary border-brand-secondary p-2 mb-2 rounded-02"},ee={class:"flex items-center justify-center mb-3"},te=["disabled"],ne={key:0,class:"body-sm content-secondary bg-secondary border-secondary p-2 rounded-02 mb-2"},se={class:"flex items-center"},ae={key:1,class:"flex items-center mt-2"},ie=["onClick"],oe={key:0,class:"body-xs content-tertiary ml-2 mt-1"},re=["onClick"],ce={class:"flex items-center"},le={key:0,class:"body-md flex items-center p-2"},ue={class:"flex items-center"},de=["onClick"],he={class:"flex items-center"},pe={key:2,class:"flex justify-center mt-4 pt-4 border-t"},ge=["onClick"],me={class:"ml-1"};function be(t,e,i,r,a,s){const c=j("wwEditorFormRow"),g=j("wwEditorInputRadio"),u=j("wwEditorIcon"),f=j("wwEditorInput"),l=j("wwEditorInputRow"),w=j("wwEditorInputText"),m=j("wwEditorQuestionMark"),C=j("wwLoaderSmall"),p=j("wwLoader");return v(),y(P,null,[b("div",Q,[h(c,{label:"Environment Configuration",class:"w-100"},{default:S(()=>[b("div",Y,[(v(!0),y(P,null,O(a.environments,n=>(v(),y("div",{key:n,class:R(["ww-tab-item",{"ww-tab-active":a.activeEnvironment===n}]),onClick:E=>a.activeEnvironment=n},[b("span",X,T(s.capitalize(n)),1),!s.isEnvironmentConfigured(n)&&n!=="production"?(v(),y("span",Z," Optional ")):D("",!0)],10,J))),128))])]),_:1})]),(v(!0),y(P,null,O(a.environments,n=>{var E;return B((v(),y("div",{key:`config-${n}`},[h(c,{label:"Connection Mode",class:"w-100 mb-3"},{default:S(()=>[h(g,{"model-value":s.getConnectionMode(n),choices:[{label:"Guided (recommended)",value:"oauth",default:!0},{label:"Custom",value:"custom"}],"onUpdate:modelValue":o=>s.changeConnectionMode(n,o)},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),s.getConnectionMode(n)==="oauth"?(v(),y(P,{key:0},[s.hasOAuthToken()?D("",!0):(v(),y("div",$,e[4]||(e[4]=[b("span",null,"Connect to enable the Back-end panel and AI assistance.",-1)]))),b("div",ee,[b("button",{class:"ww-editor-button -secondary",onClick:e[0]||(e[0]=(...o)=>s.connect&&s.connect(...o)),type:"button",disabled:!!s.hasOAuthToken()},[h(u,{name:"logos/supabase",class:"ww-editor-button-icon -left"}),N(" "+T(s.hasOAuthToken()?"Account connected":"Connect Supabase"),1)],8,te),s.hasOAuthToken()?(v(),y("button",{key:0,type:"button",class:"ww-editor-button -secondary -small -icon ml-2",onClick:e[1]||(e[1]=(...o)=>s.disconnect&&s.disconnect(...o))},[h(u,{name:"unbind",medium:""})])):D("",!0)]),s.hasOAuthToken()?(v(),y(P,{key:1},[h(c,{class:"w-100"},{default:S(()=>[h(g,{modelValue:a.selectModes[n],"onUpdate:modelValue":o=>a.selectModes[n]=o,disabled:a.isComingUp,choices:[{label:"Select a project",value:"select"},{label:"Create a project",value:"create"}]},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:2},1024),a.selectModes[n]==="select"?(v(),y(P,{key:0},[s.hasOAuthToken()&&!s.hasProjectConfig(n)?(v(),y("div",ne," Select a Supabase project to finish configuring this environment. ")):D("",!0),b("div",se,[h(c,{required:n==="production",label:"Project URL",class:"w-100"},{default:S(()=>[h(f,{type:"select",placeholder:"https://your-project.supabase.co","model-value":s.getProjectSelectValue(n),options:s.projectsOptions,"onUpdate:modelValue":o=>s.changeProjectUrl(o,n),class:"-full"},null,8,["model-value","options","onUpdate:modelValue"])]),_:2},1032,["required"]),b("button",{type:"button",class:"ww-editor-button -primary -small -icon ml-2 mt-1",onClick:e[2]||(e[2]=(...o)=>s.refreshProjects&&s.refreshProjects(...o))},[h(u,{name:"refresh",medium:""})])]),s.shouldShowBranchSelect(n)?(v(),y("div",ae,[h(c,{label:"Branch",class:"w-100"},{default:S(()=>{var o;return[h(f,{type:"select",placeholder:"Default (main)","model-value":((o=a.selectedBranches)==null?void 0:o[n])||"",options:s.branchOptions(n),"onUpdate:modelValue":d=>s.changeBranch(d,n),class:"-full"},null,8,["model-value","options","onUpdate:modelValue"])]}),_:2},1024),b("button",{type:"button",class:"ww-editor-button -primary -small -icon ml-2 mt-1",onClick:o=>s.loadBranches(n)},[h(u,{name:"refresh",medium:""})],8,ie),(E=a.branchErrors)!=null&&E[n]?(v(),y("div",oe,T(a.branchErrors[n]),1)):D("",!0)])):D("",!0),b("button",{onClick:o=>a.showSettings[n]=!a.showSettings[n],class:"ww-editor-button -secondary -small mb-2",type:"button"},T(a.showSettings[n]?"Close":"Open")+" settings ",9,re),a.showSettings[n]?(v(),y(P,{key:2},[h(l,{label:"Project URL",type:"query",placeholder:"https://your-project.supabase.co",required:n==="production","model-value":s.getCurrentEnvConfig(n).projectUrl,"onUpdate:modelValue":o=>s.changeProjectUrl(o,n)},null,8,["required","model-value","onUpdate:modelValue"]),h(l,{label:"Public API key",required:n==="production",type:"query",placeholder:"Enter your public API key","model-value":s.getCurrentEnvConfig(n).apiKey,"onUpdate:modelValue":o=>s.changeApiKey(o,n)},null,8,["required","model-value","onUpdate:modelValue"]),h(c,{label:"Service role key"},{default:S(()=>[b("div",ce,[h(w,{type:"password",placeholder:"Enter your service role key",large:"",class:"w-full",style:{"-webkit-text-security":"disc"},"model-value":s.getCurrentEnvPrivateConfig(n).apiKey,"onUpdate:modelValue":o=>s.changePrivateApiKey(o,n)},null,8,["model-value","onUpdate:modelValue"]),h(m,{"tooltip-position":"top-left","forced-content":"Required if you want to manage your users and roles from the Editor or restrict access to a page for a specific role.",class:R(["ml-2",{"text-yellow-500":!s.getCurrentEnvPrivateConfig(n).apiKey}])},null,8,["class"])])]),_:2},1024)],64)):D("",!0)],64)):a.selectModes[n]==="create"?(v(),y(P,{key:1},[a.isComingUp?(v(),y("div",le,[h(C,{loading:"",class:"mr-2"}),e[5]||(e[5]=b("div",null," We're now preparing your database. Please wait a few moments, it may take up to 1 minute. ",-1))])):(v(),y(P,{key:1},[h(l,{label:"Project name",type:"query",placeholder:"My new project",required:"",modelValue:a.newProjects[n].name,"onUpdate:modelValue":o=>a.newProjects[n].name=o},null,8,["modelValue","onUpdate:modelValue"]),h(l,{label:"Organization",type:"select",placeholder:"Select an organization",required:"",modelValue:a.newProjects[n].organizationId,"onUpdate:modelValue":o=>a.newProjects[n].organizationId=o,options:a.organizations.map(o=>({label:o.name,value:o.id}))},null,8,["modelValue","onUpdate:modelValue","options"]),h(l,{label:"Hosting region",type:"select",placeholder:"us-east-1",required:"",modelValue:a.newProjects[n].region,"onUpdate:modelValue":o=>a.newProjects[n].region=o,options:[{label:"us-east-1",value:"us-east-1"},{label:"us-west-1",value:"us-west-1"},{label:"eu-west-1",value:"eu-west-1"},{label:"eu-central-1",value:"eu-central-1"},{label:"ap-southeast-1",value:"ap-southeast-1"},{label:"ap-northeast-1",value:"ap-northeast-1"}]},null,8,["modelValue","onUpdate:modelValue"]),h(c,{label:"Database password",required:""},{default:S(()=>[b("div",ue,[h(w,{type:a.showDbPass?"text":"password",placeholder:"Enter your database password",style:G({"-webkit-text-security":a.showDbPass?"none":"disc"}),large:"",modelValue:a.newProjects[n].dbPass,"onUpdate:modelValue":o=>a.newProjects[n].dbPass=o,class:"w-full"},null,8,["type","style","modelValue","onUpdate:modelValue"]),b("button",{type:"button",class:"ww-editor-button -secondary -small -icon ml-2",onClick:e[3]||(e[3]=o=>a.showDbPass=!a.showDbPass)},[h(u,{name:a.showDbPass?"16/eye":"16/eye-off",medium:""},null,8,["name"])])])]),_:2},1024),b("button",{class:"ww-editor-button -primary",onClick:o=>s.createProject(n),type:"button"}," Create project for "+T(s.capitalize(n)),9,de)],64))],64)):D("",!0)],64)):D("",!0)],64)):(v(),y(P,{key:1},[e[6]||(e[6]=b("div",{class:"body-sm content-secondary bg-secondary border-secondary p-2 rounded-02 mb-2"},[b("span",null,"Use this mode for self-hosted projects, local development, or if you don't want to connect your account.")],-1)),e[7]||(e[7]=b("div",{class:"body-sm content-warning-secondary bg-warning-secondary p-2 rounded-02 mb-3"},[b("span",null,"Using this mode disables the Back-end panel and AI assistance.")],-1)),h(l,{label:"Project URL",type:"query",placeholder:"https://your-project.supabase.co",required:n==="production","model-value":s.getCurrentEnvConfig(n).projectUrl,"onUpdate:modelValue":o=>s.changeProjectUrl(o,n)},null,8,["required","model-value","onUpdate:modelValue"]),h(l,{label:"Custom Domain (optional)",type:"query",placeholder:"https://your-custom-domain.com","model-value":s.getCurrentEnvConfig(n).customDomain,"onUpdate:modelValue":o=>s.changeCustomDomain(o,n)},null,8,["model-value","onUpdate:modelValue"]),h(l,{label:"Public API key",required:n==="production",type:"query",placeholder:"Enter your public API key","model-value":s.getCurrentEnvConfig(n).apiKey,"onUpdate:modelValue":o=>s.changeApiKey(o,n)},null,8,["required","model-value","onUpdate:modelValue"]),h(c,{label:"Service role key"},{default:S(()=>[b("div",he,[h(w,{type:"password",placeholder:"Enter your service role key",large:"",class:"w-full",style:{"-webkit-text-security":"disc"},"model-value":s.getCurrentEnvPrivateConfig(n).apiKey,"onUpdate:modelValue":o=>s.changePrivateApiKey(o,n)},null,8,["model-value","onUpdate:modelValue"]),h(m,{"tooltip-position":"top-left","forced-content":"Required if you want to manage your users and roles from the Editor or restrict access to a page for a specific role.",class:R(["ml-2",{"text-yellow-500":!s.getCurrentEnvPrivateConfig(n).apiKey}])},null,8,["class"])])]),_:2},1024)],64)),n!=="production"&&s.isEnvironmentConfigured(n)?(v(),y("div",pe,[b("button",{type:"button",class:"ww-editor-button -tertiary -alert",onClick:o=>s.clearEnvironment(n),title:"Clear this environment's configuration"},[h(u,{name:"trash",small:""}),b("span",me,"Clear "+T(s.capitalize(n))+" configuration",1)],8,ge)])):D("",!0)])),[[F,a.activeEnvironment===n]])}),128)),h(p,{loading:a.isLoading&&!a.isComingUp},null,8,["loading"])],64)}const we=x(H,[["render",be],["__scopeId","data-v-2d8a46ce"]]);export{we as default};
|