1import W from"./DQRvJCN2.js";import{_ as X}from"./DR0wQulF.js";import{_ as Z}from"./CkbhE2XX.js";import{_ as ee}from"./kDNVJ4rh.js";import{u as te}from"./BXAbNqy3.js";import{B as ae,K as ne,w as oe,p as $,r as i,a as se,o as le,c as r,g as R,u as t,b as a,h as z,f as d,t as f,q as ie,v as T,x as F,i as D,z as re,F as ue,n as E,k as de,d as s}from"./Buvsw_Mj.js";import{l as ce}from"./Bu5fRbGB.js";import"./CKvozHz3.js";import{u as me}from"./Bk-_DaVp.js";import{u as pe}from"./CNexnSnA.js";import{u as ve}from"./DOUFb1KQ.js";const ye={key:0,class:"page"},fe={class:"panels panels--half"},be={class:"panel"},_e={class:"panel panel--content"},ge={class:"panels__content"},he=["src"],ke={class:"support-title"},Ne={class:"donate-strip"},we={class:"donate-strip__inner"},xe={key:0},Se={key:1},Ce={class:"grid--1"},Pe=["disabled"],$e={class:"btn-group btn-group--3"},Te={key:0,class:"response error margin-top--sm"},Fe={key:1},De={class:"margin-top--md"},Me={key:0,class:"response error margin-top--sm"},Ue={key:2},Be={class:"margin-top--md"},Ae=["disabled"],Re={key:0,class:"response error margin-top--sm"},ze={key:2,class:"loading margin-top--md"},Ee={key:1},We={__name:"donation",async setup(Ve){let h,M;me({htmlAttrs:{class:"footer-mini"},bodyAttrs:{class:"footer-mini"}}),pe();const p=ae(),k=ne(),b=de(),{data:V}=([h,M]=oe(()=>ve("donate",()=>$fetch(`${b.public.apiUrl}/api/donate?populate=*`))),h=await h,M(),h),m=$(()=>V.value?.data||null),_=i(!1),o=i({firstName:"",lastName:"",email:""}),l=i(null),c=i(null),U=i(null),y=i(null),B=i(!1),g=i(null),N=i(null),w=i(null);i(null);const x=i(null);i(!1);const A=$(()=>!!p.value);se(()=>{A.value&&p.value&&(o.value.firstName=p.value.FirstName||"",o.value.lastName=p.value.LastName||"",o.value.email=p.value.email||"")});const I=$(()=>o.value.firstName&&o.value.lastName&&o.value.email&&c.value&&c.value>0),S=n=>{c.value=n},C=n=>n===c.value,q=n=>{const e=Number(n);Number.isFinite(e)&&e>0&&(c.value=e)},O=async n=>{if(l.value=null,!I.value){l.value="Please complete all fields and amount";return}y.value=n,await E(),await j(),await L()},j=async()=>{if(g.value)return;const n=b.public.stripePublishableKey;if(!n){l.value="Stripe is not properly configured";return}g.value=await ce(n);const e={theme:"stripe",variables:{colorPrimary:"#000000",colorBackground:"#ffffff",colorText:"#000000",colorDanger:"#df1b41",fontFamily:"system-ui, sans-serif",borderRadius:"0px"}};N.value=g.value.elements({appearance:e});const v=N.value.create("card",{style:{base:{color:"#000",fontFamily:'"Supply Mono", monospace',fontSize:"16px","::placeholder":{color:"#aaa"}}}});await E(),document.querySelector("#stripe-element-donate")&&v.mount("#stripe-element-donate")},L=async()=>{try{const n=await $fetch("/api/stripe/payment-intent",{method:"POST",headers:{"Content-Type":"application/json"},body:{amount:Math.round(c.value*100)}});w.value=n.client_secret}catch{l.value="Failed to initialize payment.",y.value=null}},K=async()=>{if(!g.value||!N.value||!w.value){l.value="Payment system not properly initialized";return}_.value=!0,l.value=null;try{if(!await H()){_.value=!1;return}const{error:e,paymentIntent:v}=await g.value.confirmCardPayment(w.value,{payment_method:{card:N.value.getElement("card"),billing_details:{name:`${o.value.firstName} ${o.value.lastName}`,email:o.value.email}}});if(e)throw new Error(e.message);v.status==="succeeded"&&await G("stripe",v.id)&&(await Y(),B.value=!0)}catch(n){l.value=n?.message||"Payment failed. Please try again."}finally{_.value=!1}},H=async()=>{try{const{data:n}=await $fetch(`${b.public.apiUrl}/api/donations`,{method:"POST",headers:{"Content-Type":"application/json",...k.value&&{Authorization:`Bearer ${k.value}`}},body:{data:{User:p.value?[p.value.id]:[],FirstName:o.value.firstName,LastName:o.value.lastName,Email:o.value.email,PaymentStatus:"Pending",Amount:Number(c.value).toFixed(2),PaymentMethod:y.value}}});return U.value=n.id,!0}catch{return l.value="Failed to create donation record",!1}},Y=async()=>{try{await $fetch(`${b.public.apiUrl}/api/newsletter/subscribe`,{method:"POST",headers:{"Content-Type":"application/json"},body:{email:o.value.email,firstName:o.value.firstName,lastName:o.value.lastName,source:"donation"}})}catch{}},G=async(n,e)=>{try{return await $fetch(`${b.public.apiUrl}/api/donations/${U.value}`,{method:"PUT",headers:{"Content-Type":"application/json",...k.value&&{Authorization:`Bearer ${k.value}`}},body:{data:{PaymentStatus:"Paid",[n==="paypal"?"PaypalTransactionID":"StripeTransactionID"]:e,PaymentMethod:n}}}),!0}catch{return!1}};return le(()=>{x.value&&typeof x.value.close=="function"&&x.value.close()}),(n,e)=>{const v=W,P=X,J=Z,Q=ee;return s(),r(ue,null,[t(m)?(s(),r("section",ye,[a("div",fe,[a("div",be,[t(m).images?(s(),z(v,{key:0,classes:"img-full",index:0,src:t(m).images[0],class:"img-full",alt:"Radio Relativa - experimental community Radio Madrid",xs:12,sm:12,md:6,lg:6,xl:6},null,8,["src"])):d("",!0)]),a("div",_e,[a("div",ge,[t(m)?.doodle?(s(),r("img",{key:0,class:"small",src:("useCdn"in n?n.useCdn:t(te))(t(m)?.doodle.url)},null,8,he)):d("",!0),a("h1",ke,f(t(m).title),1),t(m).content?(s(),z(P,{key:1,value:t(m).content,tag:"div"},null,8,["value"])):d("",!0)]),a("div",Ne,[a("div",we,[t(B)?(s(),r("div",xe,[...e[9]||(e[9]=[a("h2",null,"Thank you!",-1),a("p",null,"Your donation means a lot!",-1)])])):(s(),r("div",Se,[t(y)===null?(s(),r("form",{key:0,onSubmit:e[8]||(e[8]=ie(()=>{},["prevent"])),class:"donate-form"},[a("div",Ce,[T(a("input",{"onUpdate:modelValue":e[0]||(e[0]=u=>t(o).firstName=u),class:"text-input",placeholder:"First name",type:"text",required:""}
1,null,512),[[F,t(o).firstName]]),T(a("input",{"onUpdate:modelValue":e[1]||(e[1]=u=>t(o).lastName=u),class:"text-input",placeholder:"Last name",type:"text",required:""},null,512),[[F,t(o).lastName]]),T(a("input",{"onUpdate:modelValue":e[2]||(e[2]=u=>t(o).email=u),class:"text-input",placeholder:"Email",disabled:t(A),type:"email",required:""},null,8,Pe),[[F,t(o).email]])]),a("div",$e,[a("button",{type:"button",onClick:e[3]||(e[3]=u=>S(5)),class:D(["btn",{"btn--black":C(5)}])},"5â¬",2),a("button",{type:"button",onClick:e[4]||(e[4]=u=>S(10)),class:D(["btn",{"btn--black":C(10)}])},"10â¬",2),a("button",{type:"button",onClick:e[5]||(e[5]=u=>S(20)),class:D(["btn",{"btn--black":C(20)}])},"20â¬",2)]),a("input",{class:"text-input",onInput:e[6]||(e[6]=u=>q(u.target.value)),placeholder:"Other amount",type:"number",min:"1"},null,32),a("button",{type:"button",class:"btn btn--black margin-bottom--15",onClick:e[7]||(e[7]=u=>O("stripe"))}," Pay with credit card "),t(l)?(s(),r("div",Te,f(t(l)),1)):d("",!0)],32)):d("",!0),t(y)==="paypal"?(s(),r("div",Fe,[a("p",De,"Donate "+f((t(c)||0).toFixed(2))+"⬠to Radio Relativa",1),R(J,null,{default:re(()=>[...e[10]||(e[10]=[a("div",{id:"paypal-button-donate",class:"margin-top--md margin-bottom--md"},null,-1)])]),_:1}),t(l)?(s(),r("div",Me,f(t(l)),1)):d("",!0)])):d("",!0),t(y)==="stripe"?(s(),r("div",Ue,[a("p",Be,"Donate "+f((t(c)||0).toFixed(2))+"⬠to Radio Relativa",1),e[11]||(e[11]=a("div",{id:"stripe-element-donate",class:"text-input margin-top--md"},null,-1)),a("button",{disabled:t(_),class:"btn btn--black margin-top--sm",onClick:K}," Submit ",8,Ae),t(l)?(s(),r("div",Re,f(t(l)),1)):d("",!0)])):d("",!0)])),t(_)?(s(),r("div",ze,[...e[12]||(e[12]=[a("div",{class:"loading__ring"},[a("div"),a("div"),a("div"),a("div")],-1)])])):d("",!0)])])])])])):(s(),r("section",Ee,[...e[13]||(e[13]=[a("p",null,"Couldnât load Support content.",-1)])])),R(Q)],64)}}};export{We as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.