Files
andronevskaya/site/assets/SettingsEditMultiEnv-CP5uamY6.js
2026-02-18 15:43:09 +03:00

2 lines
26 KiB
JavaScript

import{_ as x,i as j,c as y,o as v,b as f,j as p,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,ac 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 a of this.environments)t[a]==="create"&&this.organizations.length===0&&(await this.fetchOrganizations(),this.newProjects[a]={name:`WeWeb - ${wwLib.$store.getters["websiteData/getDesignInfo"].name} (${this.capitalize(a)})`,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 a;const e=((a=this.branches)==null?void 0:a[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,a,r,i;!((e=this.settings.publicData)!=null&&e.environments)&&!((a=this.settings.publicData)!=null&&a.projectUrl)&&!((r=this.settings.privateData)!=null&&r.accessToken)&&await this.syncFromOtherPlugin("supabaseAuth"),(i=this.settings.publicData)!=null&&i.environments||this.migrateToMultiEnv(),this.sanitizeEnvironmentTokens(),this.hasOAuthToken()&&this.refreshProjects(),this.$nextTick(async()=>{var n;try{for(const c of this.environments)((n=this.getCurrentEnvConfig(c))==null?void 0:n.projectUrl)&&await this.loadBranches(c)}catch{}})},methods:{sanitizeEnvironmentTokens(){var i;const t=(i=this.settings.privateData)==null?void 0:i.environments;if(!t)return;let e=!1;const a={};if(this.environments.forEach(n=>{const c=t[n];if(!c)return;const u=Object.hasOwn(c,"accessToken"),d=Object.hasOwn(c,"refreshToken");if(u||d){const{accessToken:b,refreshToken:l,...w}=c;a[n]=w,e=!0}}),!e)return;const r={...this.settings,privateData:{...this.settings.privateData,environments:{...t,...a}}};this.$emit("update:settings",r)},maskValue(t){if(!t)return null;const e=String(t);return e.length<=8?e:`${e.slice(0,4)}...${e.slice(-4)}`},maskConnectionString(t=""){return t?t.replace(/:(.*?)@/,":****@"):null},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 a=e.baseProjectRef||((r=e.projectUrl)==null?void 0:r.replace("https://","").replace(".supabase.co",""));return a?`https://${a}.supabase.co`:e.projectUrl},shouldShowBranchSelect(t){var r,i;const e=this.getCurrentEnvConfig(t),a=((i=(r=this.branches)==null?void 0:r[t])==null?void 0:i.length)||0;return this.hasOAuthToken()&&!!(e!=null&&e.projectUrl)&&a>0},getCurrentEnvConfig(t=this.activeEnvironment){var e,a,r;return(a=(e=this.settings.publicData)==null?void 0:e.environments)!=null&&a[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,a;if((a=(e=this.settings.privateData)==null?void 0:e.environments)!=null&&a[t]){const{accessToken:r,refreshToken:i,...n}=this.settings.privateData.environments[t]||{};return n}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 a,r,i,n,c,u,d;const t=((a=this.settings.privateData)==null?void 0:a.connectionMode)||"oauth",e={...this.settings,publicData:{...this.settings.publicData,environments:{production:{projectUrl:((r=this.settings.publicData)==null?void 0:r.projectUrl)||"",apiKey:((i=this.settings.publicData)==null?void 0:i.apiKey)||"",customDomain:((n=this.settings.publicData)==null?void 0:n.customDomain)||""}}},privateData:{...this.settings.privateData,environments:{production:{connectionMode:t,apiKey:((c=this.settings.privateData)==null?void 0:c.apiKey)||"",databasePassword:((u=this.settings.privateData)==null?void 0:u.databasePassword)||"",connectionString:((d=this.settings.privateData)==null?void 0:d.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(a=>{var r;(r=t.privateData.environments)!=null&&r[a]&&(delete t.privateData.environments[a].accessToken,delete t.privateData.environments[a].refreshToken)}),this.$emit("update:settings",t)},async changeProjectUrl(t,e){var r,i,n,c,u,d,b,l;if(!t){this.updateEnvironmentConfig(e,{publicData:{projectUrl:"",apiKey:""},privateData:{apiKey:"",connectionString:""}});return}const a=this.getCurrentEnvConfig(e);if(((a==null?void 0:a.projectUrl)||"")!==t){this.isLoading=!0;try{let w=this.getCurrentEnvConfig(e).apiKey,m=this.getCurrentEnvPrivateConfig(e).apiKey,C=this.getCurrentEnvPrivateConfig(e).connectionString,g=t.replace("https://","").replace(".supabase.co","");const s={...this.branches||{}};s[e]=[],this.branches=s;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 h=await this.fetchProject(t.replace("https://","").replace(".supabase.co",""));h&&(w=((i=(r=h.apiKeys)==null?void 0:r.find(k=>k.name==="anon"))==null?void 0:i.api_key)||w,m=((c=(n=h.apiKeys)==null?void 0:n.find(k=>k.name==="service_role"))==null?void 0:c.api_key)||m,C=((u=h.pgbouncer)==null?void 0:u.connection_string)||C,g=((d=h.project)==null?void 0:d.parent_project_ref)||((b=h.project)==null?void 0:b.ref)||((l=h.project)==null?void 0:l.id)||g)}this.updateEnvironmentConfig(e,{publicData:{projectUrl:t,apiKey:w,baseProjectRef:g,branch:null,branchSlug:null},privateData:{apiKey:m,connectionString:C}}),await this.$nextTick(),await this.loadBranches(e,g)}finally{this.isLoading=!1}}},async loadBranches(t,e=""){var a,r,i,n,c,u;try{const d=this.getCurrentEnvConfig(t),l=e||d.baseProjectRef||((a=d.projectUrl)==null?void 0:a.replace("https://","").replace(".supabase.co","")),w=d.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 g={...this.branchErrors||{}};delete g[t],this.branchErrors=g;const s=C.find(A=>A.is_default),E=(s==null?void 0:s.project_ref)||(s==null?void 0:s.ref)||(s==null?void 0:s.id)||"",o=(r=this.selectedBranches)==null?void 0:r[t],h=((i=this.getCurrentEnvConfig(t))==null?void 0:i.branch)||"",k=o||h||"",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=!h),(U||o||h)&&(this.selectedBranches={...this.selectedBranches||{},[t]:U},K&&U&&await this.changeBranch(U,t))}catch(d){const b=((c=(n=d==null?void 0:d.response)==null?void 0:n.data)==null?void 0:c.error)||(d==null?void 0:d.message)||"Unable to load branches";this.branches={...this.branches||{},[t]:[]},this.branchErrors={...this.branchErrors||{},[t]:b},console.warn("[Supabase plugin] loadBranches error",{env:t,status:(u=d==null?void 0:d.response)==null?void 0:u.status,msg:b})}},async changeBranch(t,e){var r,i,n,c,u,d,b,l,w,m,C;this.branchChangeAbortController&&this.branchChangeAbortController.abort(),this.branchChangeAbortController=new AbortController;const a=this.branchChangeAbortController.signal;this.setLoadingFlag(!0),this.isLoading=!0;try{this.$set?this.$set(this.selectedBranches,e,t||""):this.selectedBranches={...this.selectedBranches||{},[e]:t||""};const g=this.getCurrentEnvConfig(e).baseProjectRef||((r=this.getCurrentEnvConfig(e).projectUrl)==null?void 0:r.replace("https://","").replace(".supabase.co",""));if(!g)return;let s=g,E="";if(t){const _=(((i=this.branches)==null?void 0:i[e])||[]).find(V=>(V.project_ref||V.ref||V.id||V.name)===t);s=(_==null?void 0:_.project_ref)||(_==null?void 0:_.ref)||t,E=(_==null?void 0:_.name)||""}const o=t&&(E||((n=this.getCurrentEnvConfig(e))==null?void 0:n.branchSlug))||"",h=await this.fetchProject(g,{branchSlug:o,branchRef:t?s:"",signal:a}),k=(u=(c=h==null?void 0:h.apiKeys)==null?void 0:c.find(L=>L.name==="anon"))==null?void 0:u.api_key,I=(b=(d=h==null?void 0:h.apiKeys)==null?void 0:d.find(L=>L.name==="service_role"))==null?void 0:b.api_key,U=(l=h==null?void 0:h.pgbouncer)==null?void 0:l.connection_string,K=t?(h==null?void 0:h.branchRef)||((w=h==null?void 0:h.project)==null?void 0:w.project_ref)||((m=h==null?void 0:h.project)==null?void 0:m.ref)||s:"",z=`https://${K||g}.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:g},privateData:{apiKey:M,connectionString:U||this.getCurrentEnvPrivateConfig(e).connectionString}}),await this.loadBranches(e,g)}catch(g){if(g.name==="AbortError"||g.code==="ERR_CANCELED")return;throw g}finally{this.setLoadingFlag(!1),this.isLoading=!1,((C=this.branchChangeAbortController)==null?void 0:C.signal)===a&&(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}})},changeCustomDomain(t,e){this.updateEnvironmentConfig(e,{publicData:{customDomain:t}})},changePrivateApiKey(t,e){this.updateEnvironmentConfig(e,{privateData:{apiKey:t}})},updateEnvironmentConfig(t,e={}){var C,g,s,E;const a=this.getCurrentEnvPrivateConfig(t)||{},r=this.getCurrentEnvConfig(t),i=(C=this.settings.privateData)==null?void 0:C.accessToken,n=(g=this.settings.privateData)==null?void 0:g.refreshToken,c={...e.privateData||{}},u=Object.hasOwn(c,"accessToken")?c.accessToken:void 0,d=Object.hasOwn(c,"refreshToken")?c.refreshToken:void 0;Object.hasOwn(c,"accessToken")&&delete c.accessToken,Object.hasOwn(c,"refreshToken")&&delete c.refreshToken;const b={...a};delete b.accessToken,delete b.refreshToken;const l={...this.settings,publicData:{...this.settings.publicData,environments:{...(s=this.settings.publicData)==null?void 0:s.environments,[t]:{...r,...e.publicData||{}}}},privateData:{...this.settings.privateData,environments:{...(E=this.settings.privateData)==null?void 0:E.environments,[t]:{...b,...c}}}};if(t==="production"){const o=l.publicData.environments.production||{},h=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:h.connectionMode??l.privateData.connectionMode,apiKey:h.apiKey??l.privateData.apiKey,databasePassword:h.databasePassword??l.privateData.databasePassword,connectionString:h.connectionString??l.privateData.connectionString,environments:l.privateData.environments}}const w=u!==void 0?u:i,m=d!==void 0?d:n;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 a,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:{...(a=this.settings.publicData)==null?void 0:a.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:a}=await wwLib.wwPlugins.supabase.requestAPI({method:"POST",path:"/projects/list",data:{accessToken:t}});this.projects=(a==null?void 0:a.data)||[],this.isLoading=!1}catch(a){this.isLoading=!1,console.warn("Failed to refresh projects:",a)}}},async fetchProject(t,{branchSlug:e="",branchRef:a="",signal:r=null}={}){var i,n,c;if(!t)return null;try{const{data:u}=await wwLib.wwPlugins.supabase.requestAPI({method:"GET",path:"/projects/"+t,params:e||a?{...e?{branch:e}:{},...a?{branchRef:a}:{}}:void 0,signal:r}),d=((i=u==null?void 0:u.data)==null?void 0:i.project)||{},b=((n=u==null?void 0:u.data)==null?void 0:n.apiKeys)||[],l=(c=u==null?void 0:u.data)==null?void 0:c.pgbouncer;return u==null?void 0:u.data}catch(u){return u.name!=="AbortError"&&u.code!=="ERR_CANCELED"&&console.warn(`Failed to fetch project ${t}:`,u),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:a}=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=a==null?void 0:a.data.id,i=`https://${a==null?void 0:a.data.id}.supabase.co`;let n=setInterval(async()=>{var c,u,d,b,l,w;if(await this.refreshProjects(),((c=this.projects.find(m=>m.id===(a==null?void 0:a.data.id)))==null?void 0:c.status)==="ACTIVE_HEALTHY"){clearInterval(n);const m=await this.fetchProject(r);if(m){const C=(d=(u=m.apiKeys)==null?void 0:u.find(o=>o.name==="anon"))==null?void 0:d.api_key,g=(l=(b=m.apiKeys)==null?void 0:b.find(o=>o.name==="service_role"))==null?void 0:l.api_key,s=(w=m.pgbouncer)==null?void 0:w.connection_string,E=e.dbPass;this.updateEnvironmentConfig(t,{publicData:{projectUrl:i,apiKey:C},privateData:{apiKey:g,connectionString:s,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"],se={key:0,class:"body-sm content-secondary bg-secondary border-secondary p-2 rounded-02 mb-2"},ne={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 fe(t,e,a,r,i,n){const c=j("wwEditorFormRow"),u=j("wwEditorInputRadio"),d=j("wwEditorIcon"),b=j("wwEditorInput"),l=j("wwEditorInputRow"),w=j("wwEditorInputText"),m=j("wwEditorQuestionMark"),C=j("wwLoaderSmall"),g=j("wwLoader");return v(),y(P,null,[f("div",Q,[p(c,{label:"Environment Configuration",class:"w-100"},{default:S(()=>[f("div",Y,[(v(!0),y(P,null,O(i.environments,s=>(v(),y("div",{key:s,class:R(["ww-tab-item",{"ww-tab-active":i.activeEnvironment===s}]),onClick:E=>i.activeEnvironment=s},[f("span",X,T(n.capitalize(s)),1),!n.isEnvironmentConfigured(s)&&s!=="production"?(v(),y("span",Z," Optional ")):D("",!0)],10,J))),128))])]),_:1})]),(v(!0),y(P,null,O(i.environments,s=>{var E;return B((v(),y("div",{key:`config-${s}`},[p(c,{label:"Connection Mode",class:"w-100 mb-3"},{default:S(()=>[p(u,{"model-value":n.getConnectionMode(s),choices:[{label:"Guided (recommended)",value:"oauth",default:!0},{label:"Custom",value:"custom"}],"onUpdate:modelValue":o=>n.changeConnectionMode(s,o)},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),n.getConnectionMode(s)==="oauth"?(v(),y(P,{key:0},[n.hasOAuthToken()?D("",!0):(v(),y("div",$,e[4]||(e[4]=[f("span",null,"Connect to enable the Back-end panel and AI assistance.",-1)]))),f("div",ee,[f("button",{class:"ww-editor-button -secondary",onClick:e[0]||(e[0]=(...o)=>n.connect&&n.connect(...o)),type:"button",disabled:!!n.hasOAuthToken()},[p(d,{name:"logos/supabase",class:"ww-editor-button-icon -left"}),N(" "+T(n.hasOAuthToken()?"Account connected":"Connect Supabase"),1)],8,te),n.hasOAuthToken()?(v(),y("button",{key:0,type:"button",class:"ww-editor-button -secondary -small -icon ml-2",onClick:e[1]||(e[1]=(...o)=>n.disconnect&&n.disconnect(...o))},[p(d,{name:"unbind",medium:""})])):D("",!0)]),n.hasOAuthToken()?(v(),y(P,{key:1},[p(c,{class:"w-100"},{default:S(()=>[p(u,{modelValue:i.selectModes[s],"onUpdate:modelValue":o=>i.selectModes[s]=o,disabled:i.isComingUp,choices:[{label:"Select a project",value:"select"},{label:"Create a project",value:"create"}]},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:2},1024),i.selectModes[s]==="select"?(v(),y(P,{key:0},[n.hasOAuthToken()&&!n.hasProjectConfig(s)?(v(),y("div",se," Select a Supabase project to finish configuring this environment. ")):D("",!0),f("div",ne,[p(c,{required:s==="production",label:"Project URL",class:"w-100"},{default:S(()=>[p(b,{type:"select",placeholder:"https://your-project.supabase.co","model-value":n.getProjectSelectValue(s),options:n.projectsOptions,"onUpdate:modelValue":o=>n.changeProjectUrl(o,s),class:"-full"},null,8,["model-value","options","onUpdate:modelValue"])]),_:2},1032,["required"]),f("button",{type:"button",class:"ww-editor-button -primary -small -icon ml-2 mt-1",onClick:e[2]||(e[2]=(...o)=>n.refreshProjects&&n.refreshProjects(...o))},[p(d,{name:"refresh",medium:""})])]),n.shouldShowBranchSelect(s)?(v(),y("div",ae,[p(c,{label:"Branch",class:"w-100"},{default:S(()=>{var o;return[p(b,{type:"select",placeholder:"Default (main)","model-value":((o=i.selectedBranches)==null?void 0:o[s])||"",options:n.branchOptions(s),"onUpdate:modelValue":h=>n.changeBranch(h,s),class:"-full"},null,8,["model-value","options","onUpdate:modelValue"])]}),_:2},1024),f("button",{type:"button",class:"ww-editor-button -primary -small -icon ml-2 mt-1",onClick:o=>n.loadBranches(s)},[p(d,{name:"refresh",medium:""})],8,ie),(E=i.branchErrors)!=null&&E[s]?(v(),y("div",oe,T(i.branchErrors[s]),1)):D("",!0)])):D("",!0),f("button",{onClick:o=>i.showSettings[s]=!i.showSettings[s],class:"ww-editor-button -secondary -small mb-2",type:"button"},T(i.showSettings[s]?"Close":"Open")+" settings ",9,re),i.showSettings[s]?(v(),y(P,{key:2},[p(l,{label:"Project URL",type:"query",placeholder:"https://your-project.supabase.co",required:s==="production","model-value":n.getCurrentEnvConfig(s).projectUrl,"onUpdate:modelValue":o=>n.changeProjectUrl(o,s)},null,8,["required","model-value","onUpdate:modelValue"]),p(l,{label:"Public API key",required:s==="production",type:"query",placeholder:"Enter your public API key","model-value":n.getCurrentEnvConfig(s).apiKey,"onUpdate:modelValue":o=>n.changeApiKey(o,s)},null,8,["required","model-value","onUpdate:modelValue"]),p(c,{label:"Service role key"},{default:S(()=>[f("div",ce,[p(w,{type:"password",placeholder:"Enter your service role key",large:"",class:"w-full",style:{"-webkit-text-security":"disc"},"model-value":n.getCurrentEnvPrivateConfig(s).apiKey,"onUpdate:modelValue":o=>n.changePrivateApiKey(o,s)},null,8,["model-value","onUpdate:modelValue"]),p(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":!n.getCurrentEnvPrivateConfig(s).apiKey}])},null,8,["class"])])]),_:2},1024)],64)):D("",!0)],64)):i.selectModes[s]==="create"?(v(),y(P,{key:1},[i.isComingUp?(v(),y("div",le,[p(C,{loading:"",class:"mr-2"}),e[5]||(e[5]=f("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},[p(l,{label:"Project name",type:"query",placeholder:"My new project",required:"",modelValue:i.newProjects[s].name,"onUpdate:modelValue":o=>i.newProjects[s].name=o},null,8,["modelValue","onUpdate:modelValue"]),p(l,{label:"Organization",type:"select",placeholder:"Select an organization",required:"",modelValue:i.newProjects[s].organizationId,"onUpdate:modelValue":o=>i.newProjects[s].organizationId=o,options:i.organizations.map(o=>({label:o.name,value:o.id}))},null,8,["modelValue","onUpdate:modelValue","options"]),p(l,{label:"Hosting region",type:"select",placeholder:"us-east-1",required:"",modelValue:i.newProjects[s].region,"onUpdate:modelValue":o=>i.newProjects[s].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"]),p(c,{label:"Database password",required:""},{default:S(()=>[f("div",ue,[p(w,{type:i.showDbPass?"text":"password",placeholder:"Enter your database password",style:G({"-webkit-text-security":i.showDbPass?"none":"disc"}),large:"",modelValue:i.newProjects[s].dbPass,"onUpdate:modelValue":o=>i.newProjects[s].dbPass=o,class:"w-full"},null,8,["type","style","modelValue","onUpdate:modelValue"]),f("button",{type:"button",class:"ww-editor-button -secondary -small -icon ml-2",onClick:e[3]||(e[3]=o=>i.showDbPass=!i.showDbPass)},[p(d,{name:i.showDbPass?"16/eye":"16/eye-off",medium:""},null,8,["name"])])])]),_:2},1024),f("button",{class:"ww-editor-button -primary",onClick:o=>n.createProject(s),type:"button"}," Create project for "+T(n.capitalize(s)),9,de)],64))],64)):D("",!0)],64)):D("",!0)],64)):(v(),y(P,{key:1},[e[6]||(e[6]=f("div",{class:"body-sm content-secondary bg-secondary border-secondary p-2 rounded-02 mb-2"},[f("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]=f("div",{class:"body-sm content-warning-secondary bg-warning-secondary p-2 rounded-02 mb-3"},[f("span",null,"Using this mode disables the Back-end panel and AI assistance.")],-1)),p(l,{label:"Project URL",type:"query",placeholder:"https://your-project.supabase.co",required:s==="production","model-value":n.getCurrentEnvConfig(s).projectUrl,"onUpdate:modelValue":o=>n.changeProjectUrl(o,s)},null,8,["required","model-value","onUpdate:modelValue"]),p(l,{label:"Custom Domain (optional)",type:"query",placeholder:"https://your-custom-domain.com","model-value":n.getCurrentEnvConfig(s).customDomain,"onUpdate:modelValue":o=>n.changeCustomDomain(o,s)},null,8,["model-value","onUpdate:modelValue"]),p(l,{label:"Public API key",required:s==="production",type:"query",placeholder:"Enter your public API key","model-value":n.getCurrentEnvConfig(s).apiKey,"onUpdate:modelValue":o=>n.changeApiKey(o,s)},null,8,["required","model-value","onUpdate:modelValue"]),p(c,{label:"Service role key"},{default:S(()=>[f("div",he,[p(w,{type:"password",placeholder:"Enter your service role key",large:"",class:"w-full",style:{"-webkit-text-security":"disc"},"model-value":n.getCurrentEnvPrivateConfig(s).apiKey,"onUpdate:modelValue":o=>n.changePrivateApiKey(o,s)},null,8,["model-value","onUpdate:modelValue"]),p(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":!n.getCurrentEnvPrivateConfig(s).apiKey}])},null,8,["class"])])]),_:2},1024)],64)),s!=="production"&&n.isEnvironmentConfigured(s)?(v(),y("div",pe,[f("button",{type:"button",class:"ww-editor-button -tertiary -alert",onClick:o=>n.clearEnvironment(s),title:"Clear this environment's configuration"},[p(d,{name:"trash",small:""}),f("span",me,"Clear "+T(n.capitalize(s))+" configuration",1)],8,ge)])):D("",!0)])),[[F,i.activeEnvironment===s]])}),128)),p(g,{loading:i.isLoading&&!i.isComingUp},null,8,["loading"])],64)}const we=x(H,[["render",fe],["__scopeId","data-v-d58feacd"]]);export{we as default};