1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5511],{9853:(e,t,r)=>{r.d(t,{k:()=>a});let a=function(){if("undefined"!=typeof WebSocket)return WebSocket;if(void 0!==global.WebSocket)return global.WebSocket;if(void 0!==window.WebSocket)return window.WebSocket;if(void 0!==self.WebSocket)return self.WebSocket;throw Error("`WebSocket` is not supported in this environment")}()},23753:(e,t,r)=>{r.d(t,{BC:()=>o,Jo:()=>c,Rf:()=>u,V7:()=>a,o_:()=>d,u4:()=>l,uM:()=>g,wp:()=>n});let a=!0,o="/?heroResume=1",i="svgai_hero_submission_v1";function n(e,t){return e?.active&&(e.jobId||e.batchId||e.admissionPending||e.prompt===t.prompt&&(e.uploadedImage||null)===(t.uploadedImage||null)&&e.model===t.model&&e.outputAspectRatio===t.outputAspectRatio&&e.transparentBackground===t.transparentBackground&&(e.transparentBackgroundMode??(e.transparentBackground?"on":"off"))===(t.transparentBackgroundMode??(t.transparentBackground?"on":"off")))?e:null}function s(){return new Promise((e,t)=>{let r=indexedDB.open("svgai-hero-drafts",1);r.onupgradeneeded=()=>r.result.createObjectStore("submissions",{keyPath:"requestId"}),r.onsuccess=()=>e(r.result),r.onerror=()=>t(Error("Your browser could not save the reference. Enable site storage and try again.")),r.onblocked=()=>t(Error("Close older SVG AI tabs and try again."))})}async function l(e){let t=await s();try{await new Promise((r,a)=>{let o=t.transaction("submissions","readwrite"),i=o.objectStore("submissions");i.clear(),i.put(e),o.oncomplete=()=>r(),o.onerror=o.onabort=()=>a(Error("Could not preserve your submission. Please enable site storage and try again."))}),localStorage.setItem(i,JSON.stringify({requestId:e.requestId,createdAt:e.createdAt,active:e.active}))}finally{t.close()}}async function c(){let e=localStorage.getItem(i);if(!e)return null;let t=JSON.parse(e);if(!t.requestId||!Number.isFinite(t.createdAt)||Date.now()-t.createdAt>864e5)return localStorage.removeItem(i),null;let r=await s();try{let e=await new Promise((e,a)=>{let o=r.transaction("submissions").objectStore("submissions").get(t.requestId);o.onsuccess=()=>e(o.result),o.onerror=()=>a(o.error)});if(!e||1!==e.version)throw Error("Your saved reference is unavailable. Return to the browser where you started, or reattach the image before generating.");return{...e,active:!0===t.active}}finally{r.close()}}function u(){let e=localStorage.getItem(i);e&&localStorage.setItem(i,JSON.stringify({...JSON.parse(e),active:!1}))}function d(e){if(!e||!e.startsWith("/")||e.startsWith("//"))return!1;let t=new URL(e,"https://svgai.local");return"https://svgai.local"===t.origin&&"/"===t.pathname&&"1"===t.searchParams.get("heroResume")}function g(e,t,r){"Enter"===e.key&&!e.shiftKey&&!e.nativeEvent.isComposing&&229!==e.nativeEvent.keyCode&&(e.preventDefault(),t||e.repeat||r())}},33168:(e,t,r)=>{r.d(t,{i7:()=>o});var a=r(99535);function o(){let e="https://tgqyfdczovfscxzayalv.supabase.co",t="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InRncXlmZGN6b3Zmc2N4emF5YWx2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDQ1OTY2NzEsImV4cCI6MjA2MDE3MjY3MX0.-WlwWeNp8iGlzQaR2Tm4o5cB09nJBPjSGnqumg696oA";if(!e||!t)throw Error("Missing Supabase client environment variables");return(0,a.createBrowserClient)(e,t,{auth:{flowType:"pkce",detectSessionInUrl:!0,persistSession:!0,autoRefreshToken:!0,debug:!1,storage:{getItem:e=>window.localStorage.getItem(e),setItem:(e,t)=>{window.localStorage.setItem(e,t)},removeItem:e=>{window.localStorage.removeItem(e)}}}})}r(87358)},41049:(e,t)=>{t.qg=function(e,t){let r=new s,a=e.length;if(a<2)return r;let o=t?.decode||u,i=0;do{let t=e.indexOf("=",i);if(-1===t)break;let n=e.indexOf(";",i),s=-1===n?a:n;if(t>s){i=e.lastIndexOf(";",t-1)+1;continue}let u=l(e,i,t),d=c(e,t,u),g=e.slice(u,d);if(void 0===r[g]){let a=l(e,t+1,s),i=c(e,s,a),n=o(e.slice(a,i));r[g]=n}i=s+1}while(i<a);return r},t.lK=function(e,t,s){let l=s?.encode||encodeURIComponent;if(!r.test(e))throw TypeError(`argument name is invalid: ${e}`);let c=l(t);if(!a.test(c))throw TypeError(`argument val is invalid: ${t}`);let u=e+"="+c;if(!s)return u;if(void 0!==s.maxAge){if(!Number.isInteger(s.maxAge))throw TypeError(`option maxAge is invali
1d: ${s.maxAge}`);u+="; Max-Age="+s.maxAge}if(s.domain){if(!o.test(s.domain))throw TypeError(`option domain is invalid: ${s.domain}`);u+="; Domain="+s.domain}if(s.path){if(!i.test(s.path))throw TypeError(`option path is invalid: ${s.path}`);u+="; Path="+s.path}if(s.expires){var d;if(d=s.expires,"[object Date]"!==n.call(d)||!Number.isFinite(s.expires.valueOf()))throw TypeError(`option expires is invalid: ${s.expires}`);u+="; Expires="+s.expires.toUTCString()}if(s.httpOnly&&(u+="; HttpOnly"),s.secure&&(u+="; Secure"),s.partitioned&&(u+="; Partitioned"),s.priority)switch("string"==typeof s.priority?s.priority.toLowerCase():void 0){case"low":u+="; Priority=Low";break;case"medium":u+="; Priority=Medium";break;case"high":u+="; Priority=High";break;default:throw TypeError(`option priority is invalid: ${s.priority}`)}if(s.sameSite)switch("string"==typeof s.sameSite?s.sameSite.toLowerCase():s.sameSite){case!0:case"strict":u+="; SameSite=Strict";break;case"lax":u+="; SameSite=Lax";break;case"none":u+="; SameSite=None";break;default:throw TypeError(`option sameSite is invalid: ${s.sameSite}`)}return u};let r=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,a=/^[\u0021-\u003A\u003C-\u007E]*$/,o=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,i=/^[\u0020-\u003A\u003D-\u007E]*$/,n=Object.prototype.toString,s=(()=>{let e=function(){};return e.prototype=Object.create(null),e})();function l(e,t,r){do{let r=e.charCodeAt(t);if(32!==r&&9!==r)return t}while(++t<r);return r}function c(e,t,r){for(;t>r;){let r=e.charCodeAt(--t);if(32!==r&&9!==r)return t+1}return r}function u(e){if(-1===e.indexOf("%"))return e;try{return decodeURIComponent(e)}catch(t){return e}}},48151:(e,t,r)=>{r.d(t,{O:()=>v,A:()=>S});var a=r(95155),o=r(12115),i=r(33168),n=r(23753);class s{static getErrorMessage(e,t){if(!e)return"An unknown error occurred";let r=e?.message||e?.error_description||e?.toString()||"An unknown error occurred";return"login"===t?"Failed to fetch"===r||r.includes("NetworkError")?"Unable to connect to authentication service. Please check your internet connection and try again.":r.includes("rate limit")||r.includes("too many requests")?"Too many attempts. Please wait a moment and try again.":"Invalid email or password":"Failed to fetch"===r||r.includes("NetworkError")?"Unable to connect to authentication service. Please check your internet connection and try again.":r.includes("rate limit")||r.includes("too many requests")?"Too many attempts. Please wait a moment and try again.":r.includes("already registered")||r.includes("User already registered")?"This email is already registered. Please sign in instead.":r.includes("Invalid email")||r.includes("valid email")?"Invalid email or password":r.includes("password")&&(r.includes("short")||r.includes("characters"))?"Password must be at least 6 characters long.":r.includes("Invalid login credentials")?"Invalid email or password. Please try again.":r.includes("Email not confirmed")?"Please check your email to confirm your account before signing in.":r.includes("OAuth")||r.includes("provider")?"Error c
1onnecting with Google. Please try again or use email/password.":r.includes("500")||r.includes("server error")?"Server error. Please try again later.":r}static isNetworkError(e){let t=e?.message||e?.toString()||"";return"Failed to fetch"===t||t.includes("NetworkError")||t.includes("ERR_NETWORK")||t.includes("ERR_INTERNET_DISCONNECTED")}}var l=r(90802),c=r(86424),u=r(87399);let d=(0,o.createContext)(void 0),g=e=>!e||!e.startsWith("/")||e.startsWith("//")?null:e,p="authRedirectPath",m="svgai_i2s_wallet_pending_claim";async function h(){if("/convert/image-to-svg"!==window.location.pathname&&"true"===window.localStorage.getItem(m))try{let e=await fetch("/api/convert/image-to-svg/paywall/claim-account",{method:"POST",credentials:"include"});(e.ok||400===e.status||401===e.status||403===e.status)&&window.localStorage.removeItem(m),e.ok&&window.dispatchEvent(new Event("creditPurchased"))}catch{}}function w(e){return e?"string"==typeof e?{redirectPath:e}:e:{}}function f(e,t){let r=e;return t.signupContext&&(r=y(r,u.I7,t.signupContext)),t.suppressSignupBonus&&(r=y(r,u.Sl,"true")),r}function y(e,t,r){if(!r)return e;try{let a=new URL(e);return a.searchParams.set(t,r),a.toString()}catch{return e}}function v({children:e}){let[t,r]=(0,o.useState)(null),[u,m]=(0,o.useState)(null),[v,S]=(0,o.useState)(!0),[b]=(0,o.useState)(()=>(0,i.i7)());(0,o.useEffect)(()=>{(async()=>{try{let{data:{session:e},error:t}=await b.auth.getSession();t&&t.message.includes("Failed to fetch"),m(e),r(e?.user??null),e?.user&&h()}catch(e){m(null),r(null)}finally{S(!1)}})();let{data:e}=b.auth.onAuthStateChange(async(e,t)=>{if(m(t),r(t?.user??null),t?.user&&h(),"PASSWORD_RECOVERY"===e&&t&&localStorage.setItem("passwordRecoveryMode","true"),"SIGNED_IN"===e&&t?.user){let e=localStorage.getItem("pendingMarketingConsent");if(e)try{let r=JSON.parse(e);if(r.userId===t.user.id){let{error:e}=await b.auth.updateUser({data:{marketing_consent:r.marketingConsent,marketing_consent_date:r.marketingConsentDate}});localStorage.removeItem("pendingMarketingConsent")}}catch(e){localStorage.removeItem("pendingMarketingConsent")}}});return()=>{e?.subscription.unsubscribe()}},[b.auth]);let E=async(e,t,r,a)=>{try{try{let t=await fetch("/api/validate-email",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})});if(!t.ok){let e=await t.json().catch(()=>({})),r=e?.message||"Email validation failed.";throw Error(r)}}catch(t){let e=t?.message||"Please use a valid, non-disposable email address.";throw Error(e)}let o=new URLSearchParams(window.location.search),i=w(a),c=g(i.redirectPath),u=g(o.get("returnUrl")),d=(0,l.Ay)(),p=c??u,m=p&&d?(0,l.bG)(p,d):p,h=`${(0,n.o_)(m)?window.location.origin:"https://www.svgai.org"}/auth/callback?signup=true`;h=y(h,"acquisition_flow_id",d),h=f(h,i),m&&(h+=`&returnUrl=${encodeURIComponent(m)}`);let{data:v,error:S}=await b.auth.signUp({email:e,password:t,options:{emailRedirectTo:h,data:{marketing_consent:r||!1,marketing_consent_date:r?new Date().toISOString():null,signup_context:i.signupContext??null,suppress_signup_bonus:!0===i.suppressSignupBonus}}});if(S){let e=s.getErrorMessage(S);throw Error(e)}void 0!==r&&v.user?.id&&localStorage.setItem("pendingMarketingConsent",JSON.stringify({userId:v.user.id,marketingConsent:r,marketingConsentDate:r?new Date().toISOString():null}))}catch(e){throw Error(s.getErrorMessage(e))}},I=async(e,t)=>{try{let{error:r}=await b.auth.signInWithPassword({email:e,password:t});if(r){let e=s.getErrorMessage(r,"login");throw Error(e)}}catch(e){throw Error(s.getErrorMessage(e,"login"))}},k=async(e,t)=>{try{let r=w(e),a=g(r.redirectPath),o=(0,l.Ay)(),i=o&&a?(0,l.bG)(a,o):a;if(i&&"/dashboard"!==i&&!t&&function(e){try{return"/dashboard"===new URL(e,window.location.origin).pathname}catch{return!1}}(i))localStorage.setItem(p,JSON.stringify({path:i,createdAt:Date.now(),source:"oauth"}));else localStorage.removeItem(p);!t||(0,n.o_)(a)||r.suppressSignupBonus||sessionStorage.setItem("svgai_google_oauth_pending","true");let c=(0,n.o_)(a)?window.location.origin:"https://www.svgai.org",u=t?`${c}/auth/callback?signup=true`:`${c}/auth/callback`;u=y(u,"acquisition_flow_id",o),t&&(u=f(u,r)),i&&"/dashboard"!==i&&(u+=`&returnUrl=${encodeURIComponent(i)}`);let{error:d}=await b.auth.signInWithOAuth({provider:"google",options:{redirectTo:u,queryParams:{access_type:"offline",prompt:t?"consent":"select_account"},skipBrowserRedirect:!1}});if(d){let e=s.getErrorMessage(d);throw Error(e)}}catch(e){throw Error(s.getErrorMessage(e))}},_=async()=>{try{(0,c.resetPostHogUser)();let{error:e}=await b.auth.signOut();if(e)throw e}catch(e){throw e}},C=async e=>{try{let{error:t}=await b.auth.resetPasswordForEmail(e,{redirectTo:"https://www.svgai.org/auth/callback?type=recovery"});if(t){let e=s.getErrorMessage(t);throw Error(e)}}catch(e){throw Error(s.getErrorMessage(e))}},P=async e=>{try{let{error:t}=await b.auth.updateUser({password:e});if(t){let e=s.getErrorMessage(t);throw Error(e)}}catch(e){throw Error(s.getErrorMessage(e))}};return(0,a.jsx)(d.Provider,{value:{user:t,session:u,isLoading:v,signUp:E,signIn:I,signInWithGoogle:k,signOut:_,resetPasswordForEmail:C,updatePassword:P},children:e})}function S(){let e=(0,o.useContext)(d);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}},87399:(e,t,r)=>{r.d(t,{HC:()=>l,I7:()=>o,J9:()=>n,Sl:()=>i,Tf:()=>a,zn:()=>s});let a="image_to_svg_save_credits",o="signup_context",i="suppress_signup_bonus",n="svgai_i2s_save_credits_signup_pending",s="i2s_claim",l="/convert/image-to-svg?i2s_claim=1"}}]);
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.