PageSourceSearch

https://app.adcero.io/_next/static/chunks/82734-f35f13f160e88b68.js?dpl=dpl_A3WZAd9iA7JUzYF5tt6ZKzZ5AhxD

js adcero.io collected 2026-09-24 15:03:58 UTC 91,824 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[82734],{976:(e,t,n)=>{n.d(t,{O:()=>a});let a={all:["organizations"],lists:()=>[...a.all,"list"],list:e=>[...a.lists(),e],details:()=>[...a.all,"detail"],detail:e=>[...a.details(),e],accounts:e=>[...a.all,"accounts",e],members:e=>[...a.all,"members",e],invitations:e=>[...a.all,"invitations",e]}},4213:(e,t,n)=>{n.d(t,{Cz:()=>u,do:()=>s,fh:()=>d,hP:()=>l,ni:()=>c});var a=n(53455),o=n(8525),r=n(976),i=n(99914);let s=3e5;function c(e){return(0,a.I)({queryKey:r.O.accounts(e||""),queryFn:async()=>{if(!e)return[];let{data:t,error:n}=await o.supabase.from("organization_accounts").select("*").eq("organization_id",e).eq("is_active",!0).in("platform",["meta","google","tiktok","twitter","linkedin"]).order("created_at",{ascending:!1});if(n)throw n;return t},enabled:!!e,staleTime:s})}async function l(e,t){var n;if(!e)return[];let a=await (0,i.getAuthHeaders)(),o=await fetch("/api/organization/".concat(e,"/members"),{headers:a,credentials:"include",signal:t});if(!o.ok)throw Error("Failed to fetch members");return(null==(n=(await o.json()).data)?void 0:n.members)||[]}function u(e){return(0,a.I)({queryKey:r.O.members(e||""),queryFn:t=>{let{signal:n}=t;return l(e||"",n)},enabled:!!e,staleTime:s})}function d(e){return(0,a.I)({queryKey:r.O.invitations(e||""),queryFn:async()=>{var t;if(!e)return[];let n=await (0,i.getAuthHeaders)(),a=await fetch("/api/organization/".concat(e,"/members/invitations"),{headers:n});if(!a.ok)throw Error("Failed to fetch invitations");return(null==(t=(await a.json()).data)?void 0:t.invitations)||[]},enabled:!!e,staleTime:s})}},7438:(e,t,n)=>{n.d(t,{NM:()=>i,PK:()=>s,mG:()=>o,tV:()=>c});var a=n(20096);let o="v24.0";function r(e){return e.replace(/([?&]access_token=)[^&#]+/g,"$1<redacted>")}let i="https://graph.facebook.com";async function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET",n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:5,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:6e4;await a.x.waitForCapacity(!1);let c={"Content-Type":"application/json"},l={method:t,headers:c},u=e;if("POST"===t||"PUT"===t){let e=new FormData;e.append("access_token",n),o&&Object.keys(o).forEach(t=>{let n=o[t];if(null!=n)if(Array.isArray(n))e.append(t,JSON.stringify(n));else if("object"==typeof n){let a=Object.entries(n);if(a.every(e=>{let[,t]=e;return null===t||"object"!=typeof t&&!Array.isArray(t)})){let n=a.map(e=>{let[t,n]=e;return"string"==typeof n&&/^\d+$/.test(n)?'"'.concat(t,'":').concat(n):'"'.concat(t,'":').concat(JSON.stringify(n))});e.append(t,"{".concat(n.join(","),"}"))}else e.append(t,JSON.stringify(n))}else e.append(t,n.toString())}),l.body=e,delete c["Content-Type"]}else{let e=new URLSearchParams;e.append("access_token",n),o&&Object.keys(o).forEach(t=>{let n=o[t];null!=n&&(Array.isArray(n)||"object"==typeof n?e.append(t,JSON.stringify(n)):e.append(t,n.toString()))});let t=u.includes("?")?"&":"?";u="".concat(u).concat(t).concat(e.toString())}let d=null;for(let e=0;e<i;e++)try{let n;e>0&&await a.x.waitForCapacity(!0),a.x.recordRequest();let c=new AbortController,A=setTimeout(()=>c.abort(),s);try{n=await fetch(u,{...l,signal:c.signal})}finally{clearTimeout(A)}let v=n.headers.get("x-app-usage");if(n.headers.get("x-business-use-case-usage"),v){let e=JSON.parse(v),t=e.call_count||0,n=e.total_time||0,a=e.total_cputime||0;(t>80||n>80||a>80)&&console.warn("⚠️ Approaching Meta API rate limits: calls=".concat(t,"%, time=").concat(n,"%, cpu=").concat(a,"%"))}if(!n.ok){var m,g,p,f,h;let s=await n.json().catch(()=>({})),c=(null==(m=s.error)?void 0:m.message)||n.statusText,l=null==(g=s.error)?void 0:g.code,A=null==(p=s.error)?void 0:p.error_subcode,v=null==(f=s.error)?void 0:f.error_user_title,y=null==(h=s.error)?void 0:h.error_user_msg;if((4===l||17===l||32===l||613===l||429===n.status||(null==c?void 0:c.toLowerCase().includes("rate limit"))||(null==c?void 0:c.toLowerCase().includes("too many")))&&e<i-1){let t=await a.x.getSuggestedDelay(),n=Math.max(t,1e3)*Math.pow(2,e),o=1e3*Math.random(),r
1=Math.min(n+o,32e3);console.log("\uD83D\uDD04 Rate limited. Retrying in ".concat(Math.round(r/1e3),"s (attempt ").concat(e+1,"/").concat(i,")...")),0===e&&await a.x.logStatus(),await new Promise(e=>setTimeout(e,r));continue}let w="Meta API Error: ".concat(n.status);throw l&&(w+=" (Code: ".concat(l,")")),A&&(w+=" (Subcode: ".concat(A,")")),w+=" - ".concat(c),v&&(w+=" | ".concat(v)),y&&(w+=" | ".concat(y)),console.error("Meta API Error Details:",{status:n.status,statusText:n.statusText,errorData:s,url:r(u),method:t,requestData:o,attempt:e+1}),d=Error(w)}return await n.json()}catch(n){if(d=n instanceof Error?n:Error("Unknown error"),n instanceof Error&&"AbortError"===n.name){let n=Error("Meta API request timed out after ".concat(s,"ms: ").concat(r(u)));throw console.error("[makeMetaApiRequest] Request timed out:",{url:r(u),method:t,timeoutMs:s,attempt:e+1}),n}if(e===i-1)throw console.error("Meta API Request failed after retries:",n),n;if(n instanceof TypeError&&n.message.includes("fetch")){let t=1e3*Math.pow(2,e);console.log("\uD83D\uDD04 Network error. Retrying in ".concat(t/1e3,"s...")),await new Promise(e=>setTimeout(e,t));continue}throw n}throw d||Error("Request failed after maximum retries")}function c(e){return({OUTCOME_AWARENESS:"AWARENESS",OUTCOME_ENGAGEMENT:"ENGAGEMENT",OUTCOME_TRAFFIC:"TRAFFIC",OUTCOME_LEADS:"LEADS",OUTCOME_APP_PROMOTION:"APP_PROMOTION",OUTCOME_SALES:"SALES",OUTCOME_MESSAGES:"MESSAGES"})[e]||e}},8525:(e,t,n)=>{n.d(t,{supabase:()=>i});var a=n(11993),o=n(30613);let r=null,i=new Proxy({},{get(e,t){let n=function(){if(!r){let e="https://odjzupnfscavznbqbvac.supabase.co\n".trim(),t=(0,o.Q)(),n=t.key;if(!e||!n)throw console.error("Supabase env vars missing when trying to create singleton client.",{urlDefined:!!e,keyDefined:!!n,keySource:t.source}),Error("NEXT_PUBLIC_SUPABASE_URL or NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY/NEXT_PUBLIC_SUPABASE_ANON_KEY environment variable is not defined when creating client.");try{r=(0,a.UU)(e,n,{auth:{persistSession:!0,autoRefreshToken:!0,detectSessionInUrl:!0,storageKey:"adcero-auth",storage:window.localStorage},global:{headers:{"x-application-name":"adcero-app"}},db:{schema:"public"}}),console.log("✅ Supabase client successfully initialized")}catch(e){throw console.error("❌ Failed to initialize Supabase client:",e),e}}return r}(),i=n[t];return"function"==typeof i?i.bind(n):i}})},18558:(e,t,n)=>{n.d(t,{h9:()=>u,ok:()=>l});var a=n(22656),o=n(95704);let r="[PerfFlow]";function i(){return"undefined"!=typeof performance&&"function"==typeof performance.now?performance.now():Date.now()}function s(e){if(!e)return{};let t={};for(let[n,a]of Object.entries(e))t[n]=function(e){let t;if(null==e)return null;if("string"==typeof e)return e.length>160?"".concat(e.slice(0,160),"..."):e;if("number"==typeof e)return Number.isFinite(e)?e:String(e);if("boolean"==typeof e)return e;try{t=JSON.stringify(e)}catch(n){t=String(e)}return t.length>160?"".concat(t.slice(0,160),"..."):t}(a);return t}function c(e){var t;(0,a.cN)({category:"performance.user_flow",level:"error"===e.status?"error":"info",message:"".concat(e.flow,".").concat(e.phase),data:{phase:e.phase,status:e.status,source:e.source,duration_ms:e.durationMs,...e.attributes,...e.errorMessage?{error:e.errorMessage}:{}}}),"finish"===e.phase&&"number"==typeof e.durationMs&&(0,a.jE)("app.user_flow.duration",e.durationMs,{unit:"millisecond",attributes:{flow:e.flow,source:e.source,status:e.status,load_state:String(null!=(t=e.attributes.load_state)?t:"unspecified")}}),function(e){if("1"!==o.env.ADCERO_USER_FLOW_TIMING_LOGS&&("client"!==e.source||"1"!==o.env.NEXT_PUBLIC_USER_FLOW_TIMING_LOGS)&&"server"!==e.source&&1)return;let t={flow:e.flow,phase:e.phase,status:e.status,source:e.source,durationMs:e.durationMs,...e.attributes,...e.errorMessage?{error:e.errorMessage}:{}};"error"===e.status?"client"===e.source?console.info(r,t):console.error(r,t):"aborted"===e.status?console.warn(r,t):console.info(r,t)}(e)}function l(e){let t={flow:e.flow,source:e.source,startedAt:new Date().toISOString(),startMs:i(),attributes:s(e.attributes),finished:!1};return c({flow:t.flow,phase:"start",status:"started",source:t.source,startedAt:t.startedAt,attributes:t.attributes}),t}function u(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.finished)return 0;e.finished=!0;let a=Math.max(0,Math.round(i()-e.startMs)),o={...e.attributes,...s(n.attributes)},r=n.error?function(e){if(e)return e instanceof Error?e.message:String(e)}(n.error):void 0;return c({flow:e.flow,phase:"finish",status:null!=(t=n.status)?t:r?"error":"ok",source:e.source,startedAt:e.startedAt,finishedAt:new Date().toISOString(),durationMs:a,attributes:o,errorMessage:r}),a}},20096:(e,t,n)=>{n.d(t,{x:()=>s});var a=n(11993),o=n(30613),r=n(95704);
1class i{static getInstance(){return i.instance||(i.instance=new i),i.instance}async initialize(){if(!this.isInitialized)return void console.warn("MetaRateLimiter: Supabase not configured, using default user count");await this.updateOAuthUserCount(),console.log("MetaRateLimiter initialized with ".concat(this.oauthUserCount," OAuth users"))}async updateOAuthUserCount(){if(this.isInitialized&&this.supabase)try{let{data:e,error:t}=await this.supabase.from("organization_accounts").select("connected_by").eq("platform","meta").eq("is_active",!0).not("access_token","is",null);if(t)return void console.error("Failed to fetch OAuth user count:",t);let n=new Set((null==e?void 0:e.map(e=>e.connected_by).filter(Boolean))||[]),a=Math.max(1,n.size);a!==this.oauthUserCount&&(console.log("OAuth user count updated: ".concat(this.oauthUserCount," → ").concat(a)),this.oauthUserCount=a),this.lastUserCountCheck=Date.now()}catch(e){console.error("Error updating OAuth user count:",e)}}async getOAuthUserCount(){return Date.now()-this.lastUserCountCheck>this.userCountCacheDuration&&await this.updateOAuthUserCount(),this.oauthUserCount}cleanWindow(){let e=Date.now(),t=e-this.config.windowSizeMs;this.window.requests=this.window.requests.filter(e=>e>t),e-this.window.windowStart>this.config.windowSizeMs&&(this.window.windowStart=e)}async getCapacity(){this.cleanWindow();let e=await this.getOAuthUserCount(),t=this.config.requestsPerUserPerHour*e,n=Math.floor(t*this.config.reservePercentage),a=this.window.requests.length,o=Math.max(0,t-n-a),r=Math.max(0,t-a),i=Math.round(a/t*100),s=this.config.windowSizeMs;if(this.window.requests.length>0){let e=Math.min(...this.window.requests),t=Date.now();s=Math.max(0,e+this.config.windowSizeMs-t)}return{total:t,used:a,remaining:o,reserveRemaining:r,percentUsed:i,resetInMs:s,oauthUsers:e}}async canMakeRequest(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=await this.getCapacity();return e?t.reserveRemaining>0:t.remaining>0}recordRequest(){this.cleanWindow(),this.window.requests.push(Date.now())}async waitForCapacity(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];for(;!await this.canMakeRequest(e);){let e=await this.getCapacity(),t=Math.min(e.resetInMs,5e3);e.percentUsed>95&&(t=Math.min(e.resetInMs,3e4)),console.log("Rate limit reached (".concat(e.percentUsed,"% used). ")+"Waiting ".concat(Math.round(t/1e3),"s for capacity...")),await new Promise(e=>setTimeout(e,t))}}async getRecommendedConcurrency(){let e=await this.getCapacity(),t=Math.min(5*e.oauthUsers,20);return e.percentUsed>80?t=Math.max(1,Math.floor(.5*t)):e.percentUsed>60&&(t=Math.max(2,Math.floor(.7*t))),t}async getSuggestedDelay(){let e=await this.getCapacity(),t=100;return e.percentUsed>90?t=5e3:e.percentUsed>80?t=2e3:e.percentUsed>70?t=1e3:e.percentUsed>50&&(t=500),e.remaining<=0&&e.reserveRemaining>0?t=Math.min(3e4,e.resetInMs/10):e.remaining<=0&&e.reserveRemaining<=0&&(t=Math.min(6e4,e.resetInMs)),t}async logStatus(){let e=await this.getCapacity(),t=await this.getRecommendedConcurrency();console.log("\uD83D\uDCCA Meta API Rate Limit Status:"),console.log("   OAuth Users: ".concat(e.oauthUsers)),console.log("   Total Limit: ".concat(e.total," requests/hour")),console.log("   Used: ".concat(e.used,"/").concat(e.total," (").concat(e.percentUsed,"%)")),console.log("   Remaining: ".concat(e.remaining," regular, ").concat(e.reserveRemaining," with reserve")),console.log("   Reset in: ".concat(Math.round(e.resetInMs/1e3),"s")),console.log("   Recommended Concurrency: ".concat(t))}reset(){this.window={requests:[],windowStart:Date.now()},this.bulkOperationMode=!1,this.bulkOperationReservedSlots=0,this.bulkOperationStartTime=0,console.log("Rate limiter reset")}async enterBulkOperationMode(e){let t=await this.getCapacity();return t.reserveRemaining<e?(console.warn("[RateLimiter] Insufficient capacity for bulk operation. "+"Needed: ".concat(e,", Available: ").concat(t.reserveRemaining)),!1):(this.bulkOperationMode=!0,this.bulkOperationReservedSlots=e,this.bulkOperationStartTime=Date.now(),console.log("[RateLimiter] Entered bulk operation mode. "+"Reserved ".concat(e," slots. ")+"Capacity: ".concat(t.remaining,"/").concat(t.total," (").concat(t.percentUsed,"% used)")),!0)}exitBulkOperationMode(){if(this.bulkOperationMode){let e=Date.now()-this.bulkOperationStartTime;console.log("[RateLimiter] Exited bulk operation mode after ".concat(Math.round(e/1e3),"s"))}this.bulkOperationMode=!1,this.bulkOperationReservedSlots=0,this.bulkOperationStartTime=0}isInBulkOperationMode(){return this.bulkOperationMode}async getBulkOperationConcurrency(){let e=await this.getCapacity();if(!this.bulkOperationMode)return this.getRecommendedConcurrency();let t=Math.min(8*e.oauthUsers,25);return e.percentUsed>90?t=Math.max(2,Math.floor(.3*t)):e.percentUsed>80?t=Math.max(3,Math.floor(.5*t)):e.percentUsed>60&&(t=Math.max(4,Math.floor(.7*t))),t}async getBulkOperationDelay(){let e=await this.getCapacity();return this.bulkOperationMode?e.percentUsed>95?2e3:e.percentUsed>85?500:e.percentUsed>70?200:50:this.getSuggestedDelay()}async canProceedWithBulkRequest(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.bulkOperationMode?(await this.getCapacity()).reserveRemaining>
1=e:this.canMakeRequest(!1)}async waitForBulkCapacity(){if(!this.bulkOperationMode)return this.waitForCapacity(!1);for(;!await this.canProceedWithBulkRequest(1);){let e=await this.getCapacity(),t=Math.min(e.resetInMs,2e3);console.log("[BulkOperation] Rate limit reached (".concat(e.percentUsed,"% used). ")+"Waiting ".concat(Math.round(t/1e3),"s...")),await new Promise(e=>setTimeout(e,t))}}constructor(){var e;this.config={requestsPerUserPerHour:parseInt(r.env.META_RATE_LIMIT_PER_HOUR||"1000",10),windowSizeMs:36e5,maxBurstSize:parseInt(r.env.META_RATE_LIMIT_BURST||"200",10),reservePercentage:parseFloat(r.env.META_RATE_LIMIT_RESERVE||"0.2")},this.window={requests:[],windowStart:Date.now()},this.oauthUserCount=1,this.lastUserCountCheck=0,this.userCountCacheDuration=3e5,this.isInitialized=!1,this.bulkOperationMode=!1,this.bulkOperationReservedSlots=0,this.bulkOperationStartTime=0;let t="https://odjzupnfscavznbqbvac.supabase.co\n",n=r.env.SUPABASE_SERVICE_ROLE_KEY||(null==(e=(0,o.l)())?void 0:e.key);t&&n&&(this.supabase=(0,a.UU)(t,n),this.isInitialized=!0)}}i.instance=null;let s=i.getInstance()},22656:(e,t,n)=>{n.d(t,{cN:()=>r,ek:()=>l,fV:()=>c,jE:()=>s,z6:()=>i});let a=null;function o(e){(!a&&(a=Promise.all([n.e(14850),n.e(70443),n.e(27122),n.e(67373),n.e(81508)]).then(n.bind(n,43993)).then(e=>e).catch(()=>null)),a).then(t=>{if(t)try{e(t)}catch(e){}})}function r(e){o(t=>{var n;null==(n=t.addBreadcrumb)||n.call(t,e)})}function i(e,t){o(n=>{var a;null==(a=n.captureMessage)||a.call(n,e,t)})}function s(e,t,n){o(a=>{var o,r;null==(r=a.metrics)||null==(o=r.distribution)||o.call(r,e,t,n)})}function c(e){o(t=>{var n;null==(n=t.setUser)||n.call(t,e)})}function l(){o(e=>{var t;null==(t=e.setUser)||t.call(e,null)})}},24460:(e,t,n)=>{n.d(t,{W:()=>r});var a=n(67501),o=n(81104);function r(e){var t;let{savedPlatform:n,availablePlatforms:r,organizationAccountsCount:i,googleTestModeEnabled:s,organizationId:c=null,organizationName:l=null}=e;if(n&&r.includes(n))return n;let u={organizationId:c,organizationName:l};return"twitter"===n&&(0,a.yE)(u)?"twitter":"linkedin"===n&&(0,o.LW)(u)?"linkedin":!n&&s?"google":0===i?"meta"===n||"google"===n||"tiktok"===n?n:"meta":r.includes("meta")?"meta":null!=(t=r[0])?t:null}},29293:(e,t,n)=>{n.d(t,{A:()=>u,O:()=>l});var a=n(95155),o=n(12115),r=n(18558),i=n(37517),s=n(8525);let c=(0,o.createContext)(void 0),l=e=>{let{children:t}=e,[n,l]=(0,o.useState)(null),[u,d]=(0,o.useState)(!0);(0,o.useEffect)(()=>{d(!0);let e=(0,i.oz)()?(0,r.ok)({flow:"app.auth.session.bootstrap",source:"client"}):null;s.supabase.auth.getSession().then(t=>{let{data:{session:n},error:a}=t;a&&(console.error("Auth session error:",a),e&&(0,r.h9)(e,{status:"error",error:a,attributes:{result:"error"}})),l(n),d(!1),e&&!a&&(0,r.h9)(e,{attributes:{result:n?"session_loaded":"signed_out"}})}).catch(t=>{console.error("Failed to get auth session:",t),l(null),d(!1),e&&(0,r.h9)(e,{status:"error",error:t,attributes:{result:"error"}})});let{data:{subscription:t}}=s.supabase.auth.onAuthStateChange((e,t)=>{l(t)});return()=>{null==t||t.unsubscribe()}},[]);let m={session:n,isLoading:u,supabaseClient:s.supabase};return(0,a.jsx)(c.Provider,{value:m,children:t})},u=()=>{let e=(0,o.useContext)(c);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}},30613:(e,t,n)=>{n.d(t,{Q:()=>i,l:()=>r});var a=n(95704);function o(e){return(null==e?void 0:e.trim())||void 0}function r(e){let t=o(e?e.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY:a.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY);if(t)return{key:t,source:"publishable"};let n=o(e?e.NEXT_PUBLIC_SUPABASE_ANON_KEY:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9kanp1cG5mc2NhdnpuYnFidmFjIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDU2ODU1OTksImV4cCI6MjA2MTI2MTU5OX0.WuFDSyjixUmELn378O8yz4CAcvkd3DZpa4vKIbGrhgk\n");return n?{key:n,source:"anon"}:null}function i(e){let t=r(e);if(!t)throw Error("NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY or NEXT_PUBLIC_SUPABASE_ANON_KEY environment variable is not defined.");return t}},37138:(e,t,n)=>{n.d(t,{Bf:()=>s,ED:()=>r,VK:()=>m,Z4:()=>i,ic:()=>d});var a=n(42291),o=n(95704);let r="3dd26c29-3bae-470a-97f3-79bcf7c2e5f7",i="206fe1d0-bd57-43c4-9d64-46846bfa6c20",s="e20c1496-a150-4f17-9184-422df848b4f9",c="nimbus";function l(){var e;return"production"!==((e="production",void 0!==e)?e:o.env.VERCEL_ENV)}function u(e){return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):[]}function d(e){let{organizationId:t,organizationName:n}=e;return!!(t&&new Set([a.Oh,r,"db1e6abb-4ce3-49e8-9f27-18b0a143621b",...u(o.env.CREATIVE_STUDIO_ORG_IDS),...u(o.env.NEXT_PUBLIC_CREATIVE_STUDIO_ORG_IDS)]).has(t)||l(
1)&&n&&n.trim().toLowerCase()===c)}function m(e){if("true"===o.env.CREATIVE_EXPERIMENT_MODE_DISABLED||"true"===o.env.NEXT_PUBLIC_CREATIVE_EXPERIMENT_MODE_DISABLED||!d(e))return!1;let{organizationId:t,organizationName:n}=e;return!!(t&&new Set([a.Oh,r,...u(o.env.CREATIVE_EXPERIMENT_MODE_ORG_IDS),...u(o.env.NEXT_PUBLIC_CREATIVE_EXPERIMENT_MODE_ORG_IDS)]).has(t)||l()&&n&&n.trim().toLowerCase()===c)}},37517:(e,t,n)=>{n.d(t,{N$:()=>c,aU:()=>d,bm:()=>l,cJ:()=>u,e0:()=>s,oz:()=>i});var a=n(95704);function o(e){return"development"===e}function r(e){return"1"===e||"true"===e}function i(){var e,t,n;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=null!=(e=i.nodeEnv)?e:"production",c=null!=(n=null!=(t=i.optIn)?t:a.env.NEXT_PUBLIC_ENABLE_LOCAL_BOOTSTRAP_TIMING)?n:a.env.ADCERO_ENABLE_LOCAL_BOOTSTRAP_TIMING;return o(s)||r(c)}function s(){var e,t,n;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=null!=(e=i.nodeEnv)?e:"production",c=null!=(n=null!=(t=i.optIn)?t:a.env.NEXT_PUBLIC_ENABLE_DEV_LOGGER)?n:a.env.ADCERO_ENABLE_DEV_LOGGER;return o(s)&&r(c)}function c(){var e,t,n;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=null!=(e=i.nodeEnv)?e:"production",c=null!=(n=null!=(t=i.optIn)?t:a.env.NEXT_PUBLIC_ENABLE_CHUNK_LOAD_METRICS)?n:a.env.ADCERO_ENABLE_CHUNK_LOAD_METRICS;return!o(s)||r(c)}function l(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r(null!=(e=t.optIn)?e:a.env.NEXT_PUBLIC_ENABLE_ADS_MANAGER_PREFETCH)}function u(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r(null!=(e=t.optIn)?e:a.env.NEXT_PUBLIC_ENABLE_ADS_MANAGER_CROSS_ACCOUNT_PREFETCH)}function d(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r(null!=(e=t.optIn)?e:a.env.NEXT_PUBLIC_ENABLE_ADS_MANAGER_MODAL_PRELOAD)}},38535:(e,t,n)=>{n.d(t,{$:()=>r});var a=n(25959),o=n(89863);let r=(0,a.v)()((0,o.Zr)((e,t)=>({selectedAccount:null,previousOrgId:null,platformAccountPreferences:{},explicitAccountSelections:{},isLoadingAccount:!1,isLoadingAccounts:!0,organizationAccounts:[],setSelectedAccount:t=>e({selectedAccount:t,previousOrgId:(null==t?void 0:t.organization_id)||null}),setLoadingAccount:t=>e({isLoadingAccount:t}),setLoadingAccounts:t=>e({isLoadingAccounts:t}),setOrganizationAccounts:t=>e({organizationAccounts:t}),clearSelectedAccountForOrgSwitch:n=>{var a;(null==(a=t().selectedAccount)?void 0:a.organization_id)!==n&&e({selectedAccount:null,isLoadingAccount:!0})},restoreAccountForOrg:(e,n)=>{var a,o,r,i;let s=t();if((null==(a=s.selectedAccount)?void 0:a.organization_id)===e&&n.some(e=>{var t,n,a;return e.ad_account_id===(null==(t=s.selectedAccount)?void 0:t.ad_account_id)&&e.organization_id===(null==(n=s.selectedAccount)?void 0:n.organization_id)&&e.platform===(null==(a=s.selectedAccount)?void 0:a.platform)}))return s.selectedAccount;let c=localStorage.getItem("ad-account-storage");if(c)try{let t=JSON.parse(c),a=null==t||null==(o=t.state)?void 0:o.selectedAccount;if((null==a?void 0:a.organization_id)===e&&n.some(e=>e.ad_account_id===a.ad_account_id&&e.organization_id===a.organization_id&&e.platform===a.platform))return a}catch(e){}return null!=(i=null!=(r=n.find(e=>!0===e.is_primary))?r:n[0])?i:null},savePlatformAccountPreference:(n,a,o)=>{let r=t(),i="".concat(n,"_").concat(a);e({platformAccountPreferences:{...r.platformAccountPreferences,[i]:o}})},setExplicitAccountSelection:(n,a,o)=>{let r=t(),i="".concat(n,"_").concat(a),s={...r.explicitAccountSelections};o?s[i]=o:delete s[i],e({explicitAccountSelections:s})},removeAccountFromOrganization:(n,a,o)=>{var r,i,s;let c=t(),l=(null==(r=c.selectedAccount)?void 0:r.organization_id)===n&&(null==(i=c.selectedAccount)?void 0:i.ad_account_id)===a&&(null==(s=c.selectedAccount)?void 0:s.platform)===o,u=c.organizationAccounts.filter(e=>e.organization_id!==n||e.ad_account_id!==a||e.platform!==o),d={};Object.entries(c.platformAccountPreferences).forEach(e=>{let[t,r]=e;t.startsWith("".concat(n,"_"))&&r===a&&t==="".concat(n,"_").concat(o)||(d[t]=r)});let m={};
1Object.entries(c.explicitAccountSelections).forEach(e=>{let[t,r]=e;(t!=="".concat(n,"_").concat(o)||r!==a)&&(m[t]=r)}),e({organizationAccounts:u,platformAccountPreferences:d,explicitAccountSelections:m,selectedAccount:l?null:c.selectedAccount,previousOrgId:l?null:c.previousOrgId})},restoreAccountForPlatform:(e,n,a)=>{var o,r;let i=t(),s="".concat(e,"_").concat(n),c=i.platformAccountPreferences[s];if(c){let e=a.find(e=>e.ad_account_id===c);if(e)return e}return null!=(r=null!=(o=a.find(e=>!0===e.is_primary))?o:a[0])?r:null},clearAllDataForOrganization:n=>{var a,o;let r=t();(null==(a=r.selectedAccount)?void 0:a.organization_id)===n&&e({selectedAccount:null});let i=r.organizationAccounts.filter(e=>e.organization_id!==n),s={};Object.entries(r.platformAccountPreferences).forEach(e=>{let[t,a]=e;t.startsWith("".concat(n,"_"))||(s[t]=a)});let c={};Object.entries(r.explicitAccountSelections).forEach(e=>{let[t,a]=e;t.startsWith("".concat(n,"_"))||(c[t]=a)}),e({organizationAccounts:i,platformAccountPreferences:s,explicitAccountSelections:c});try{let e=localStorage.getItem("ad-account-storage");if(e){let t=JSON.parse(e),a=null==t||null==(o=t.state)?void 0:o.selectedAccount;if((null==a?void 0:a.organization_id)===n){let e={...t,state:{...t.state,selectedAccount:null,previousOrgId:null}};localStorage.setItem("ad-account-storage",JSON.stringify(e))}}}catch(e){console.warn("[adAccountStore] Error cleaning localStorage for org:",e)}},clearAllData:()=>{e({selectedAccount:null,previousOrgId:null,platformAccountPreferences:{},explicitAccountSelections:{},organizationAccounts:[],isLoadingAccount:!1,isLoadingAccounts:!1});try{localStorage.removeItem("ad-account-storage")}catch(e){console.warn("[adAccountStore] Error clearing localStorage:",e)}}}),{name:"ad-account-storage",storage:(0,o.KU)(()=>localStorage),partialize:e=>({selectedAccount:e.selectedAccount,previousOrgId:e.previousOrgId,platformAccountPreferences:e.platformAccountPreferences,explicitAccountSelections:e.explicitAccountSelections})}))},40399:(e,t,n)=>{n.d(t,{IA:()=>g.IA,Jv:()=>p});var a=n(25959),o=n(8752),r=n(89863),i=n(49341),s=n(99914);let c={accessToken:null,adAccountId:null,apiVersion:n(7438).mG,businessId:null,currency:"USD",organizationId:null},l={connectedPages:null,adAccounts:null,campaigns:null,adSets:{},pixels:null,instagramAccounts:null},u=(e,t)=>!!e&&Date.now()-e.timestamp<t,d={connectedPages:!1,adAccounts:!1,campaigns:!1,adSets:{},pixels:!1,instagramAccounts:!1},m={connectedPages:null,adAccounts:null,campaigns:null,adSets:{},pixels:null,instagramAccounts:null};var g=n(85089);let p=(0,a.v)()((0,r.Zr)((0,o.D)((e,t,n)=>({...((e,t)=>({config:c,setAccessToken:t=>e(e=>{e.config.accessToken=t}),setAdAccountId:t=>e(e=>{e.config.adAccountId=t}),setApiVersion:t=>e(e=>{e.config.apiVersion=t}),setBusinessId:t=>e(e=>{e.config.businessId=t}),setCurrency:t=>e(e=>{e.config.currency=t}),updateConfig:t=>e(e=>{Object.assign(e.config,t)}),resetConfig:()=>e(e=>{e.config=c}),hasValidConfig:()=>{let{config:e}=t();return!!(e.accessToken&&e.adAccountId)}}))(e,t),...((e,t)=>({cache:l,cacheTTL:3e5,currentOrganizationId:null,setCacheTTL:t=>e(e=>{e.cacheTTL=t}),setCurrentOrganizationId:t=>e(e=>{e.currentOrganizationId!==t&&(e.cache=l),e.currentOrganizationId=t}),isCacheValid:(e,n)=>{let{cache:a,cacheTTL:o}=t();return"adSets"===e?!!n&&u(a.adSets[n],o):u(a[e],o)},clearCache:t=>e(e=>{t&&("adSets"===t?e.cache.adSets={}:e.cache[t]=null)}),clearAllCache:()=>e(e=>{e.cache=l}),clearCacheForOrganization:t=>e(e=>{e.currentOrganizationId===t&&(e.cache=l)}),updateCache:(t,n)=>e(e=>{"adSets"===t&&"object"==typeof n&&"campaignId"in n?e.cache.adSets[n.campaignId]={data:n.data,timestamp:Date.now()}:e.cache[t]={data:n,timestamp:Date.now()}}),getFromCache:e=>{let{cache:n}=t();if("adSets"===e)return null;let a=n[e];return a&&"data"in a?a.data:null},getCampaignAdSets:e=>{let{cache:n}=t(),a=n.adSets[e];return(null==a?void 0:a.data)||null}}))(e,t),...((e,t)=>({loading:d,errors:m,setLoading:(t,n,a)=>e(e=>{"adSets"===t&&a?e.loading.adSets[a]=n:e.loading[t]=n}),isLoading:(e,n)=>{let{loading:a}=t();return"adSets"===e&&n?a.adSets[n]||!1:a[e]},resetLoading:()=>e(e=>{e.loading=d}),setError:(t,n,a)=>e(e=>{"adSets"===t&&a?e.errors.adSets[a]=n:e.errors[t]=n}),getError:(e,n)=>{let{errors:a}=t();return"adSets"===e&&n?a.adSets[n]||null:a[e]},clearError:(t,n)=>e(e=>{"adSets"===t&&n?e.errors.adSets[n]=null:e.errors[t]=null}),clearAllErrors:()=>e(e=>{e.errors=m}),hasError:(e,n)=>{let{errors:a}=t();return"adSets"===e&&n?!!a.adSets[n]:!!a[e]}}))(e,t),setAccessToken:t=>e(e=>{e.config.accessToken=t,e.cache=l}),setAdAccountId:t=>e(e=>{e.config.adAccountId=t,e.cache.campaigns=null,e.cache.adSets={},e.cache.pixels=null}),updateConfig:t=>e(e=>{Object.assign(e.config,t),(t.accessToken||t.adAccountId)&&(e.cac
1he=l)}),setOrganizationContext:e=>{let{setCurrentOrganizationId:n}=t();n(e)},clearDataForOrganization:n=>{let{clearCacheForOrganization:a}=t();console.log("[useApiConfigStore] Clearing data for organization:",n),a(n);let{currentOrganizationId:o}=t();o===n&&e(e=>{e.config=c,e.cache=l})},fetchConnectedPages:async()=>{let{config:e,cache:n,cacheTTL:a,isCacheValid:o,setLoading:r,setError:s,updateCache:c}=t();if(o("connectedPages")&&n.connectedPages)return n.connectedPages.data;r("connectedPages",!0),s("connectedPages",null);try{let t=await fetch("/api/meta/pages",{headers:{Authorization:"Bearer ".concat(e.accessToken)}});if(!t.ok)throw Error("Failed to fetch pages: ".concat(t.statusText));let n=await t.json();(0,i.v)(n);let a=n.data||[];return c("connectedPages",a),r("connectedPages",!1),a}catch(t){let e=t instanceof Error?t.message:"Unknown error";throw r("connectedPages",!1),s("connectedPages",e),t}},fetchAdAccounts:async()=>{let{config:e,cache:n,cacheTTL:a,isCacheValid:o,setLoading:r,setError:s,updateCache:c,currentOrganizationId:l}=t();if(o("adAccounts")&&n.adAccounts)return n.adAccounts.data;r("adAccounts",!0),s("adAccounts",null);try{let t=new URLSearchParams({fields:"id,name,account_status,currency,timezone_name,business"});l&&t.set("organization_id",l),e.adAccountId&&t.set("ad_account_id",e.adAccountId);let n=await fetch("/api/meta/ad-accounts?".concat(t));if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||"Failed to fetch ad accounts: ".concat(n.statusText))}let a=await n.json();(0,i.v)(a);let o=a.data||[];return c("adAccounts",o),r("adAccounts",!1),o}catch(t){let e=t instanceof Error?t.message:"Unknown error";throw r("adAccounts",!1),s("adAccounts",e),t}},fetchCampaigns:async()=>{let{config:e,cache:n,isCacheValid:a,setLoading:o,setError:r,updateCache:c,currentOrganizationId:l}=t();if(a("campaigns")&&n.campaigns)return n.campaigns.data;if(!e.adAccountId)throw Error("Ad account ID is required to fetch campaigns");if(!l)throw Error("Organization ID is required to fetch campaigns");o("campaigns",!0),r("campaigns",null);try{let t=new URLSearchParams({ad_account_id:e.adAccountId,organization_id:l}),n=await fetch("/api/meta/campaigns?".concat(t.toString()),{headers:await (0,s.getAuthHeaders)()});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error||"Failed to fetch campaigns (".concat(n.status,")"))}let a=await n.json();(0,i.v)(a);let r=a.data||[];return c("campaigns",r),o("campaigns",!1),r}catch(t){let e=t instanceof Error?t.message:"Unknown error";throw o("campaigns",!1),r("campaigns",e),t}},fetchAdSets:async e=>{let{config:n,cache:a,cacheTTL:o,setLoading:r,setError:c,updateCache:l,isCacheValid:u}=t();if(u("adSets",e)){let t=a.adSets[e];if(t)return t.data}r("adSets",!0,e),c("adSets",null,e);try{if(!n.organizationId||!n.adAccountId)throw Error("Organization ID and Ad Account ID are required to fetch ad sets");let t=await fetch("/api/meta/adsets?campaign_id=".concat(e,"&fields=id,name&organization_id=").concat(n.organizationId,"&ad_account_id=").concat(n.adAccountId),{headers:await (0,s.getAuthHeaders)()});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||"Failed to fetch ad sets")}let a=await t.json();(0,i.v)(a);let o=a.data||[];return l("adSets",{campaignId:e,data:o}),r("adSets",!1,e),o}catch(n){let t=n instanceof Error?n.message:"Unknown error";throw r("adSets",!1,e),c("adSets",t,e),n}},fetchPixels:async()=>{let{config:e,cache:n,cacheTTL:a,isCacheValid:o,setLoading:r,setError:s,updateCache:c}=t();if(o("pixels")&&n.pixels)return n.pixels.data;if(!e.adAccountId)throw Error("Ad account ID is required to fetch pixels");r("pixels",!0),s("pixels",null);try{let t=new URLSearchParams({adAccountId:e.adAccountId}),n=await fetch("/api/meta/datasets?".concat(t));if(!n.ok)throw Error("Failed to fetch pixels: ".concat(n.statusText));let a=await n.json();(0,i.v)(a);let o=a.datasets||[];return c("pixels",o),r("pixels",!1),o}catch(t){let e=t instanceof Error?t.message:"Unknown error";throw r("pixels",!1),s("pixels",e),t}},fetchInstagramAccounts:async e=>{let{config:n,cache:a,cacheTTL:o,isCacheValid:r,setLoading:s,setError:c,updateCache:l,currentOrganizationId:u}=t();if(r("instagramAccounts")&&a.instagramAccounts)return a.instagramAccounts.data;s("instagramAccounts",!0),c("instagramAccounts",null);try{let t=new URLSearchParams({page_id:e,fields:"id,username,profile_picture_url,followers_count,is_verified"});u&&t.set("organization_id",u),n.adAccountId&&t.set("ad_account_id",n.adAccountId);let a=await fetch("/api/meta/instagram-accounts?".concat(t));if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error||"Failed to fetch Instagram accounts: ".concat(a.statusText))}let o=await a.json();(0,i.v)(o);let r=o.data||[];return l("instagramAccounts",r),s("instagramAccounts",!1),r}catch(t){let e=t instanceof Error?t.message:"Unknown error";throw s("instagramAccounts",!1),c("instagramAccounts",e),t}}})),{name:"api-config-store",partialize:e=>({config:e.config,cacheTTL:e.cacheTTL})}))}
1,42214:(e,t,n)=>{n.d(t,{Qc:()=>c,Fx:()=>s,cn:()=>i});var a=n(25959),o=n(88490);let r={USD:1,EUR:1.1549,GBP:1.338,CAD:.7172,AUD:.7032,JPY:.00624,CNY:.1474,INR:.01048,BRL:.1933,MXN:.0574,KRW:656e-6,SGD:.7772,HKD:.1276,NZD:.5816,SEK:.1058,NOK:.1054,DKK:.1548,CHF:1.253,PLN:.2724,PHP:.01625,THB:.03041,MYR:.2462,IDR:556e-7,ZAR:.06059,AED:.2723,SAR:.2667,ILS:.3385,TRY:.02168,RUB:.01388,COP:278e-6,ARS:691e-6,CLP:.001084,PEN:.2914},i=(0,a.v)((e,t)=>({displayCurrencyCode:o.Oc,displayCurrency:(0,o.Rr)(),sourceCurrencyCode:o.Oc,needsConversion:!1,setDisplayCurrency:n=>{let a=(0,o.cf)(n)||(0,o.Rr)(),{sourceCurrencyCode:r}=t();e({displayCurrencyCode:n,displayCurrency:a,needsConversion:n!==r})},setSourceCurrency:n=>{let{displayCurrencyCode:a}=t();e({sourceCurrencyCode:n,needsConversion:n!==a})},convert:e=>{let{sourceCurrencyCode:n,displayCurrencyCode:a,needsConversion:o}=t();return o?function(e,t,n){if(t===n)return e;let a=r[t],o=r[n];return a&&o?e*a/o:(console.warn("Exchange rate not found for ".concat(t," or ").concat(n)),e)}(e,n,a):e}}));function s(){return i.getState().displayCurrency}function c(e){return i.getState().convert(e)}},42291:(e,t,n)=>{n.d(t,{Be:()=>c,Oh:()=>o});var a=n(95704);let o="703b99bf-5d03-4eba-a2e4-f1a81dac9696",r=["db1e6abb-4ce3-49e8-9f27-18b0a143621b"];function i(){return"production"===a.env.VERCEL_ENV}function s(e){return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):[]}function c(e){let{organizationId:t,organizationName:n}=e;return!(!(t&&(function(){let e=[...s(a.env.AGENT_MODE_ORG_IDS),...s("3dd26c29-3bae-470a-97f3-79bcf7c2e5f7")];return e.push(...r),i()||e.push(o),new Set(e)})().has(t))&&(i()||!n||"nimbus"!==n.trim().toLowerCase()))}},49341:(e,t,n)=>{n.d(t,{i:()=>a,v:()=>o});let a=(0,n(25959).v)(e=>({platform:null,setPlatformExpired:t=>e({platform:t}),clear:()=>e({platform:null})}));function o(e){if(e&&"object"==typeof e){if("requiresReauth"in e&&!0===e.requiresReauth){let t="string"==typeof e.platform?e.platform:"meta";a.getState().setPlatformExpired(t);return}if("TOKEN_EXPIRED"===e.code||"TOKEN_NOT_FOUND"===e.code){let t="string"==typeof e.platform?e.platform:"meta";a.getState().setPlatformExpired(t)}}}},50088:(e,t,n)=>{function a(e){if(!e)return null;let t=String(e).toLowerCase();return"facebook"===t||"instagram"===t||"meta"===t?"meta":"tiktok"===t?"tiktok":"google"===t||"google_ads"===t||"google-ads"===t?"google":"twitter"===t?"twitter":"linkedin"===t?"linkedin":null}function o(e){let t=a(e);return"meta"===t?["meta","facebook","instagram"]:"google"===t?["google"]:"tiktok"===t?["tiktok"]:"twitter"===t?["twitter"]:"linkedin"===t?["linkedin"]:[]}n.d(t,{FL:()=>a,zK:()=>o})},60673:(e,t,n)=>{function a(){return[{campaignId:"mock-campaign-1",name:"Mock Search Campaign",status:"ENABLED",advertisingChannelType:"SEARCH",budgetAmountMicros:"10000000"},{campaignId:"mock-campaign-2",name:"Mock Display Campaign",status:"PAUSED",advertisingChannelType:"DISPLAY",budgetAmountMicros:"5000000"}]}function o(e){return[{adGroupId:"mock-adgroup-1",name:"Mock Ad Group 1",status:"ENABLED",type:"SEARCH_STANDARD",campaignId:e},{adGroupId:"mock-adgroup-2",name:"Mock Ad Group 2",status:"ENABLED",type:"SEARCH_STANDARD",campaignId:e}]}function r(){return{success:!0,data:{customerId:"1234567890",accountName:"Mock Google Ads Account",refreshToken:"mock-encrypted-refresh-token",managerCustomerId:null,currency:"USD",timezone:"America/Los_Angeles",accountCountry:{name:"United States",code:"US"}}}}function i(){return[{resourceName:"customers/1234567890/conversionActions/111",id:"111",name:"Purchase",category:"PURCHASE",status:"ENABLED",type:"WEBPAGE",primary:!0},{resourceName:"customers/1234567890/conversionActions/222",id:"222",name:"Lead Form Submit",category:"SUBMIT_LEAD_FORM",status:"ENABLED",type:"WEBPAGE",primary:!1}]}function s(){return[{resourceName:"customers/1234567890/customerConversionGoals/PURCHASE~WEBSITE",category:"PURCHASE",origin:"WEBSITE",biddable:!1},{resourceName:"customers/1234567890/customerConversionGoals/SUBMIT_LEAD_FORM~WEBSITE",category:"SUBMIT_LEAD_FORM",origin:"WEBSITE",biddable:!0}]}function c(){return[{resourceName:"customers/1234567890/userLists/111111",id:"111111",name:"All Website Visitors",sizeForDisplay:"5000"},{resourceName:"customers/1234567890/userLists/222222",id:"222222",name:"Past Purchasers",sizeForDisplay:"1200"}]}function l(e){let t=[{id:"affinity/10001",name:"Sports Fans",type:"AFFINITY",resourceName:"audienceCategoryConstants/10001"},{id:"affinity/10002",name:"Cooking Enthusiasts",type:"AFFINITY",resourceName:"audienceCategoryConstants/10002"},{id:"inmarket/10003",name:"Auto Insurance",type:"IN_MARKET",resourceName:"audienceCategoryConstants/10003"},{id:"inmarket/10004",name:"Business Software",type:"IN_MARKET",resourceName:"audienceCategoryConstants/10004"},{id:"inmarket/10005",name:"Real Estate",type:"IN_MARKET",resourceName:"audienceCategoryConstants/10005"}];if(!e)return t;let n=e.toLowerCase();return t.filter(e=>e.name.toLowerCase().includes(n))}
1function u(){let e="mock-asset-"+Date.now();return{success:!0,resourceName:"customers/1234567890/assets/".concat(e),assetId:e}}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return{success:!0,results:Array.from({length:e},(e,t)=>({resourceName:"customers/1234567890/assets/mock-batch-asset-".concat(t+1),index:t}))}}function m(){return[{text:"running shoes",avgMonthlySearches:1e3,competition:"MEDIUM",competitionIndex:50,lowTopOfPageBidMicros:5e5,highTopOfPageBidMicros:2e6},{text:"trail running shoes",avgMonthlySearches:500,competition:"LOW",competitionIndex:20,lowTopOfPageBidMicros:3e5,highTopOfPageBidMicros:1e6},{text:"buy running shoes online",avgMonthlySearches:200,competition:"HIGH",competitionIndex:80,lowTopOfPageBidMicros:1e6,highTopOfPageBidMicros:5e6}]}function g(e){return[{videoId:"mock-video-id-1",title:"Mock YouTube Video: ".concat(e),description:"This is a mock YouTube video result for test mode.",thumbnailUrl:"https://via.placeholder.com/320x180?text=Mock+Video",channelTitle:"Mock Channel"},{videoId:"mock-video-id-2",title:"Another Mock Video: ".concat(e),description:"Second mock YouTube video result.",thumbnailUrl:"https://via.placeholder.com/320x180?text=Mock+Video+2",channelTitle:"Another Mock Channel"}]}function p(e){return[{channelId:"mock-channel-id-1",title:"Mock YouTube Channel: ".concat(e),description:"This is a mock YouTube channel result for test mode.",thumbnailUrl:"https://via.placeholder.com/88x88?text=Channel"},{channelId:"mock-channel-id-2",title:"Another Mock Channel: ".concat(e),description:"Second mock YouTube channel result.",thumbnailUrl:"https://via.placeholder.com/88x88?text=Channel+2"}]}function f(e,t){return[{appId:"ANDROID"===t?"com.mock.app":"mock.bundle.id",name:"Mock App: ".concat(e),developer:"Mock Developer Inc.",iconUrl:"https://via.placeholder.com/60x60?text=App",platform:t,installs:"ANDROID"===t?"100,000+":"",score:4.2},{appId:"ANDROID"===t?"com.mock.app2":"mock.bundle.id2",name:"Mock App 2: ".concat(e),developer:"Mock Dev Studios",iconUrl:"https://via.placeholder.com/60x60?text=App2",platform:t,installs:"ANDROID"===t?"50,000+":"",score:3.8}]}function h(e){let t=[{resourceName:"mobileAppCategoryConstants/60000",id:"60000",name:"/All Apps/Google Play"},{resourceName:"mobileAppCategoryConstants/60008",id:"60008",name:"/All Apps/Google Play/Games"},{resourceName:"mobileAppCategoryConstants/60500",id:"60500",name:"/All Apps/Apple App Store"},{resourceName:"mobileAppCategoryConstants/60506",id:"60506",name:"/All Apps/Apple App Store/Games"},{resourceName:"mobileAppCategoryConstants/61001",id:"61001",name:"/All Apps/Windows Phone Apps"}];if(!(null==e?void 0:e.trim()))return t;let n=e.trim().toLowerCase();return t.filter(e=>e.name.toLowerCase().includes(n))}function A(){return[{merchantCenterId:"999888777",merchantCenterName:"Mock Merchant Center Account",status:"ENABLED"}]}function v(e){let t=[{name:"Adidas",urls:["adidas.com"]},{name:"Airbnb",urls:["airbnb.com"]},{name:"Amazon",urls:["amazon.com"]},{name:"American Express",urls:["americanexpress.com"]},{name:"Apple",urls:["apple.com"]},{name:"AT&T",urls:["att.com"]},{name:"Audi",urls:["audi.com"]},{name:"Bank of America",urls:["bankofamerica.com"]},{name:"Best Buy",urls:["bestbuy.com"]},{name:"BMW",urls:["bmw.com"]},{name:"Burger King",urls:["bk.com"]},{name:"Cartier",urls:["cartier.com"]},{name:"Chanel",urls:["chanel.com"]},{name:"Chase",urls:["chase.com"]},{name:"Chevrolet",urls:["chevrolet.com"]},{name:"Chipotle",urls:["chipotle.com"]},{name:"Coca-Cola",urls:["coca-cola.com"]},{name:"Costco",urls:["costco.com"]},{name:"Dell",urls:["dell.com"]},{name:"Dior",urls:["dior.com"]},{name:"Disney",urls:["disney.com"]},{name:"Dyson",urls:["dyson.com"]},{name:"eBay",urls:["ebay.com"]},{name:"Etsy",urls:["etsy.com"]},{name:"Facebook",urls:["facebook.com"]},{name:"FedEx",urls:["fedex.com"]},{name:"Ford",urls:["ford.com"]},{name:"Google",urls:["google.com"]},{name:"Gucci",urls:["gucci.com"]},{name:"H&M",urls:["hm.com"]},{name:"HBO",urls:["hbo.com"]},{name:"Home Depot",urls:["homedepot.com"]},{name:"Honda",urls:["honda.com"]},{name:"HP",urls:["hp.com"]},{name:"Hyundai",urls:["hyundai.com"]},{name:"IBM",urls:["ibm.com"]},{name:"IKEA",urls:["ikea.com"]},{name:"Instagram",urls:["instagram.com"]},{name:"Intel",urls:["intel.com"]},{name:"Jeep",urls:["jeep.com"]},{name:"Kia",urls:["kia.com"]},{name:"KFC",urls:["kfc.com"]},{name:"Kohl's",urls:["kohls.com"]},{name:"Levi's",urls:["levi.com"]},{name:"LinkedIn",urls:["linkedin.com"]},{name:"L'Or\xe9al",urls:["loreal.com"]},{name:"Louis Vuitton",urls:["louisvuitton.com"]},{name:"Lowe's",urls:["lowes.com"]},{name:"Macy's",urls:["macys.com"]},{name:"Mastercard",urls:["mastercard.com"]},{name:"McDonalds",urls:["mcdonalds.com"]},{name:"Mercedes-Benz",urls:["mercedes-benz.com"]},{name:"Meta",urls:["meta.com"]},{name:"Microsoft",urls:["microsoft.com"]},{name:"Netflix",urls:["netflix.com"]},{name:"Nike",urls:["nike.com"]},{name:"Nintendo",urls:["nintendo.com"]},{name:"Nissan",urls:["nissan.com"]},{name:"Nvidia",urls:["nvidia.com"]},{name:"Oracle",urls:["oracle.com"]}
1,{name:"PayPal",urls:["paypal.com"]},{name:"Pepsi",urls:["pepsi.com"]},{name:"Porsche",urls:["porsche.com"]},{name:"Prada",urls:["prada.com"]},{name:"Puma",urls:["puma.com"]},{name:"Reebok",urls:["reebok.com"]},{name:"Rolex",urls:["rolex.com"]},{name:"Samsung",urls:["samsung.com"]},{name:"Sephora",urls:["sephora.com"]},{name:"Sony",urls:["sony.com"]},{name:"Spotify",urls:["spotify.com"]},{name:"Starbucks",urls:["starbucks.com"]},{name:"Subway",urls:["subway.com"]},{name:"Target",urls:["target.com"]},{name:"Tesla",urls:["tesla.com"]},{name:"T-Mobile",urls:["t-mobile.com"]},{name:"Toyota",urls:["toyota.com"]},{name:"Twitch",urls:["twitch.tv"]},{name:"Uber",urls:["uber.com"]},{name:"Uniqlo",urls:["uniqlo.com"]},{name:"UPS",urls:["ups.com"]},{name:"Verizon",urls:["verizon.com"]},{name:"Visa",urls:["visa.com"]},{name:"Volkswagen",urls:["vw.com"]},{name:"Walmart",urls:["walmart.com"]},{name:"Wendys",urls:["wendys.com"]},{name:"Whole Foods",urls:["wholefoodsmarket.com"]},{name:"X",urls:["x.com"]},{name:"Xbox",urls:["xbox.com"]},{name:"YouTube",urls:["youtube.com"]},{name:"Zara",urls:["zara.com"]}];if(!e)return t;let n=e.toLowerCase();return t.filter(e=>e.name.toLowerCase().includes(n))}n.r(t),n.d(t,{MOCK_GOOGLE_ACCOUNT:()=>R,MOCK_GOOGLE_VIEW:()=>U,getMockAppPublishResult:()=>L,getMockAppSearchResults:()=>f,getMockAssetUploadBatchResult:()=>d,getMockAssetUploadResult:()=>u,getMockAudienceSegments:()=>l,getMockConversionActions:()=>i,getMockCustomerConversionGoals:()=>s,getMockDemandGenPublishResult:()=>P,getMockDeviceTargetingOptions:()=>S,getMockDisplayPublishResult:()=>D,getMockFieldOptions:()=>I,getMockGoogleAdGroups:()=>o,getMockGoogleCampaigns:()=>a,getMockGoogleConfig:()=>r,getMockKeywordIdeas:()=>m,getMockLanguageConstants:()=>C,getMockLocationSuggestions:()=>O,getMockMerchantCenterAccounts:()=>A,getMockMobileAppCategories:()=>h,getMockPMaxPublishResult:()=>z,getMockPublishResult:()=>M,getMockShoppingPublishResult:()=>N,getMockTopicConstants:()=>k,getMockUserLists:()=>c,getMockYouTubeChannels:()=>p,getMockYouTubeVideos:()=>g,isGoogleAdsTestMode:()=>w,mockSuggestBrands:()=>v});var y=n(95704);function w(){return"true"===y.env.GOOGLE_ADS_TEST_MODE||"true"===y.env.NEXT_PUBLIC_GOOGLE_ADS_TEST_MODE}let _=["Android","Android 12","Android 13 or newer","BlackBerry","iOS","iOS 16","iOS 17 or newer","Linux","MacOS","webOS","Windows10","Windows11","Windows Phone"],b=[{id:"Android",label:"Android",options:[{resourceName:"mobileDeviceConstants/30001",id:"30001",label:"Google Pixel 9",name:"Pixel 9",manufacturerName:"Google",operatingSystemName:"Android",type:"MOBILE"},{resourceName:"mobileDeviceConstants/30002",id:"30002",label:"Samsung Galaxy S24",name:"Galaxy S24",manufacturerName:"Samsung",operatingSystemName:"Android",type:"MOBILE"},{resourceName:"mobileDeviceConstants/30003",id:"30003",label:"Motorola Razr 50",name:"Razr 50",manufacturerName:"Motorola",operatingSystemName:"Android",type:"MOBILE"},{resourceName:"mobileDeviceConstants/30004",id:"30004",label:"Samsung Galaxy Tab S10",name:"Galaxy Tab S10",manufacturerName:"Samsung",operatingSystemName:"Android",type:"TABLET"}]},{id:"iOS",label:"iOS",options:[{resourceName:"mobileDeviceConstants/31001",id:"31001",label:"Apple iPhone 16",name:"iPhone 16",manufacturerName:"Apple",operatingSystemName:"iOS",type:"MOBILE"},{resourceName:"mobileDeviceConstants/31002",id:"31002",label:"Apple iPhone 15 Pro",name:"iPhone 15 Pro",manufacturerName:"Apple",operatingSystemName:"iOS",type:"MOBILE"},{resourceName:"mobileDeviceConstants/31003",id:"31003",label:"Apple iPad Pro",name:"iPad Pro",manufacturerName:"Apple",operatingSystemName:"iOS",type:"TABLET"},{resourceName:"mobileDeviceConstants/31004",id:"31004",label:"Apple iPad Air",name:"iPad Air",manufacturerName:"Apple",operatingSystemName:"iOS",type:"TABLET"}]}],E=[{id:"US",label:"United States",countryCode:"US",options:[{resourceName:"carrierConstants/100",id:"100",label:"AT&T",name:"AT&T",countryCode:"US"},{resourceName:"carrierConstants/101",id:"101",label:"T-Mobile",name:"T-Mobile",countryCode:"US"},{resourceName:"carrierConstants/102",id:"102",label:"Verizon",name:"Verizon",countryCode:"US"}]},{id:"CA",label:"Canada",countryCode:"CA",options:[{resourceName:"carrierConstants/200",id:"200",label:"Bell",name:"Bell",countryCode:"CA"},{resourceName:"carrierConstants/201",id:"201",label:"Rogers",name:"Rogers",countryCode:"CA"},{resourceName:"carrierConstants/202",id:"202",label:"Telus",name:"Telus",countryCode:"CA"}]},{id:"GB",label:"United Kingdom",countryCode:"GB",options:[{resourceName:"carrierConstants/300",id:"300",label:"EE",name:"EE",countryCode:"GB"},{resourceName:"carrierConstants/301",id:"301",label:"O2",name:"O2",countryCode:"GB"},{resourceName:"carrierConstants/302",id:"302",label:"Vodafone",name:"Vodafone",countryCode:"GB"}]},{id:"AU",label:"Australia",countryCode:"AU",options:[{resourceName:"carrierConstants/400",id:"400",label:"Optus",name:"Optus",countryCode:"AU"},{resourceName:"carrierConstants/401",id:"401",label:"Telstra",name:"Telstra",countryCode:"AU"},{resourceName:"carrierConstants/402",id:"402",label:"Vodafone Australia",name:"Vodafone Australia",countryCode:"AU"}]}];function S(){return{operatingSystems:_.map((e,t)=>({resourceName:"operatingSystemVersionConstants/mock-".concat(t+1),id:"mock-".concat(t+1),label:e,name:e})),deviceModelGroups:b,networkGroups:E}}function C(){return[{id:"1000",name:"English",code:"en",resourceName:"languageConstants/1000"},{id:"1003",name:"Spanish",code:"es",resourceName:"languageConstants/1003"},{id:"1019",name:"French",code:"fr",resourceName:"languageConstants/1019"},{id:"1001",name:"German",code:"de",resourceName:"languageConstants/1001"},{id:"1005",name:"Japanese",code:"ja",resourceName:"languageConstants/1005"}]}function O(e){let t=e.toLowerCase();return[{id:"2840",name:"United States",canonicalName:"United States",targetType:"Country",countryCode:"US",resourceName:"geoTargetConstants/2840",status:"ENABLED"},{id:"1014044",name:"New York",canonicalName:"New York, New York, United States",targetType:"City",countryCode:"US",resourceName:"geoTargetConstants/1014044",status:"ENABLED"},{id:"1013962",name:"Los Angeles",canonicalName:"Los Angeles, California, United States",targetType:"City",countryCode:"US",resourceName:"geoTargetConstants/1013962",status:"ENABLED"},{id:"1016367",name:"Chicago",canonicalName:"Chicago, Illinois, United States",targetType:"City",countryCode:"US",resourceName:"geoTargetConstants/1016367",status:"ENABLED"},{id:"20636",name:"Canada",canonicalName:"Canada",targetType:"Country",countryCode:"CA",resourceName:"geoTargetConstants/20636",status:"ENABLED"}].filter(e=>e.name.toLowerCase().includes(t)||e.canonicalName.toLowerCase().includes(t))}function k(e){let t=(e,t)=>({id:e,name:t[t.length-1],path:t,resourceName:"topicConstants/".concat(e)}),n=[t("10001",["Arts & Entertainment"]),t("10002",["Arts & Entertainment","Comics & Animation"]),t("
110003",["Arts & Entertainment","Events & Listings"]),t("10004",["Arts & Entertainment","Movies"]),t("10005",["Arts & Entertainment","Music & Audio"]),t("10006",["Arts & Entertainment","TV & Video"]),t("10007",["Autos & Vehicles"]),t("10008",["Autos & Vehicles","Auto Parts"]),t("10009",["Autos & Vehicles","Auto Repair & Maintenance"]),t("10010",["Autos & Vehicles","Vehicle Shopping"]),t("10011",["Beauty & Fitness"]),t("10012",["Beauty & Fitness","Face & Body Care"]),t("10013",["Beauty & Fitness","Fitness"]),t("10014",["Beauty & Fitness","Hair Care"]),t("10015",["Books & Literature"]),t("10016",["Books & Literature","Book Retailers"]),t("10017",["Books & Literature","Children's Literature"]),t("10018",["Books & Literature","E-Books"]),t("10019",["Business & Industrial"]),t("10020",["Business & Industrial","Advertising & Marketing"]),t("10021",["Business & Industrial","Business Services"]),t("10022",["Business & Industrial","Industrial Materials & Equipment"]),t("10023",["Computers & Electronics"]),t("10024",["Computers & Electronics","Computer Hardware"]),t("10025",["Computers & Electronics","Consumer Electronics"]),t("10026",["Computers & Electronics","Software"]),t("10027",["Finance"]),t("10028",["Finance","Banking"]),t("10029",["Finance","Credit & Lending"]),t("10030",["Finance","Investing"]),t("10031",["Food & Drink"]),t("10032",["Food & Drink","Cooking & Recipes"]),t("10033",["Food & Drink","Restaurants"]),t("10034",["Food & Drink","World Cuisines"]),t("10035",["Health"]),t("10036",["Health","Medical Facilities & Services"]),t("10037",["Health","Mental Health"]),t("10038",["Health","Nutrition"])];if(!e)return n;let a=e.toLowerCase();return n.filter(e=>e.path.some(e=>e.toLowerCase().includes(a)))}function I(e,t,n){switch(e){case"languages":return{field:e,source:"mock",options:C()};case"locations":return{field:e,source:"mock",options:O(n||"")};case"audience_segments":return{field:e,source:"mock",options:l(n)};case"user_lists":return{field:e,source:"mock",options:c()};case"conversion_goals":return{field:e,source:"mock",options:i()};case"merchant_center_accounts":return{field:e,source:"mock",options:A()};case"topics":return{field:e,source:"mock",options:k(n)};case"app_lookup":return{field:e,source:"mock",options:[],constraints:{requiresQuery:!0},nextActions:["GET /api/google-ads/apps/search?query=<app_name>&platform=ANDROID|IOS"]};case"sitelinks":case"app_audiences":default:return{field:e,source:"mock",options:[]};case"firebase_status":return{field:e,source:"mock",options:[],constraints:{isLinked:!1,note:"Test mode — no Firebase link"},nextActions:["guide_firebase_setup"]};case"dynamic_ads_business_types":return{field:e,source:"mock",options:[{value:"DYNAMIC_EDUCATION",label:"Education"},{value:"DYNAMIC_FLIGHTS",label:"Flights"},{value:"DYNAMIC_HOTELS_AND_RENTALS",label:"Hotels and rentals"},{value:"DYNAMIC_JOBS",label:"Jobs"},{value:"DYNAMIC_LOCAL",label:"Local deals"},{value:"DYNAMIC_REAL_ESTATE",label:"Real estate"},{value:"MERCHANT_CENTER_FEED",label:"Retail"},{value:"DYNAMIC_TRAVEL",label:"Travel"},{value:"DYNAMIC_CUSTOM",label:"Custom"}]}}}function T(){return{success:!0,campaignId:"mock-campaign-"+Date.now(),campaignResourceName:"customers/1234567890/campaigns/mock-campaign-test",budgetResourceName:"customers/1234567890/campaignBudgets/mock-budget-test",adGroups:[{adGroupId:"mock-adgroup-test",keywordCount:0,adCount:0}]}}function M(){return T()}function z(){return T()}function N(){return T()}function P(){return T()}function D(){return T()}function L(){return T()}let R={id:"mock-google-account-id",account_name:"Mock Google Ads Account (Test Mode)"},U={id:"mock-google-view",name:"Google Test Mode View",metrics:new Map([["impressions",!0],["clicks",!0],["spend",!0],["ctr",!0],["cpc",!0],["conversions",!0]]),isDefault:!0}},67092:(e,t,n)=>{function a(e){switch(e.status){case"active":case"archived":case"disconnected":return e.status;default:return!1===e.is_active?"disconnected":"active"}}function o(e){return"disconnected"!==a(e)}n.d(t,{F:()=>o,n:()=>a})},67501:(e,t,n)=>{n.d(t,{aO:()=>i,yE:()=>c});var a=n(42291),o=n(37138),r=n(95704);let i="360626eb-4b53-424e-a856-f7a4b251ece6";function s(e){return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):[]}function c(e){let{organizationId:t}=e;return!!(t&&new Set([i,a.Oh,o.ED,o.Bf,...s(r.env.TWITTER_INTEGRATION_ORG_IDS),...s(r.env.NEXT_PUBLIC_TWITTER_INTEGRATION_ORG_IDS)]).has(t))}},80073:(e,t,n)=>{n.d(t,{NJ:()=>u,P1:()=>l,T3:()=>s,k0:()=>c});var a=n(8525);async function o(e){if(e)return{Authorization:"Bearer ".concat(e)};let{data:{session:t}}=await a.supabase.auth.getSession(),n=null==t?void 0:t.access_token;return n?{Authorization:"Bearer ".concat(n)}:{}}
1function r(e){return"object"==typeof e&&null!==e}async function i(e){var t,n;let a=(await e.text().catch(()=>"")).trim(),o=a?(()=>{try{return JSON.parse(a)}catch(e){return null}})():null;if(!e.ok){let t=function e(t){if(!r(t))return null;for(let n of["reason","error","message"]){let a=t[n];if("string"==typeof a&&a.trim())return a;if(r(a)){let t=e(a);if(t)return t}}return null}(o);return{data:null,error:null!=t?t:function(e,t){let n=(null==t?void 0:t.replace(/\s+/g," ").trim())||e.statusText,a=n?n.length>300?"".concat(n.slice(0,300),"..."):n:"Request failed";return"HTTP ".concat(e.status,": ").concat(a)}(e,a)}}return r(o)?{data:null!=(n=null!=(t=o.data)?t:o.entity)?n:null,error:null}:{data:null,error:null}}async function s(e){let t=new URLSearchParams({settingType:e.settingType});e.settingKey&&t.set("settingKey",e.settingKey),e.organizationId&&t.set("organizationId",e.organizationId),e.orderDirection&&t.set("orderDirection",e.orderDirection);let n=await o(e.accessToken);return i(await fetch("/api/user-settings?".concat(t.toString()),{headers:n}))}async function c(e){let t=await o();return i(await fetch("/api/user-settings",{method:"POST",headers:{"Content-Type":"application/json",...t},body:JSON.stringify({settingType:e.settingType,settingKey:e.settingKey,settingValue:e.settingValue,...e.organizationId?{organizationId:e.organizationId}:{},...void 0!==e.isDefault?{isDefault:e.isDefault}:{}})}))}async function l(e){let t=await o();return i(await fetch("/api/user-settings",{method:"POST",headers:{"Content-Type":"application/json",...t},body:JSON.stringify({...e.settingId?{settingId:e.settingId}:{},settingType:e.settingType,settingKey:e.settingKey,settingValue:e.settingValue,...e.organizationId?{organizationId:e.organizationId}:{},...void 0!==e.isDefault?{isDefault:e.isDefault}:{}})}))}async function u(e){let t=await o();return i(await fetch("/api/user-settings",{method:"DELETE",headers:{"Content-Type":"application/json",...t},body:JSON.stringify({...e.settingId?{settingId:e.settingId}:{},...e.settingType?{settingType:e.settingType}:{},...e.settingKey?{settingKey:e.settingKey}:{}})}))}},81104:(e,t,n)=>{n.d(t,{LW:()=>s});var a=n(42291),o=n(37138),r=n(95704);function i(e){return e?e.split(",").map(e=>e.trim()).filter(e=>e.length>0):[]}function s(e){let{organizationId:t}=e;return!!(t&&new Set(["360626eb-4b53-424e-a856-f7a4b251ece6",a.Oh,o.ED,o.Bf,...i(r.env.LINKEDIN_INTEGRATION_ORG_IDS),...i(r.env.NEXT_PUBLIC_LINKEDIN_INTEGRATION_ORG_IDS)]).has(t))}},82734:(e,t,n)=>{n.d(t,{tI:()=>D,TS:()=>L,Z5:()=>R,Sg:()=>U});var a=n(95155),o=n(12115),r=n(29293),i=n(38535),s=n(83875),c=n(40399),l=n(50088),u=n(95458),d=n(99776),m=n(18558);let g={owner:{campaigns:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0,publish:!0},adSets:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0},ads:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0},assets:{view:!0,upload:!0,delete:!0,organize:!0},accounts:{view:!0,connect:!0,disconnect:!0,manage_tokens:!0},members:{view:!0,invite:!0,remove:!0,update_roles:!0},settings:{view:!0,edit:!0,billing:!0},analytics:{view:!0,export:!0}},admin:{campaigns:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0,publish:!0},adSets:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0},ads:{view:!0,create:!0,edit:!0,delete:!0,duplicate:!0},assets:{view:!0,upload:!0,delete:!0,organize:!0},accounts:{view:!0,connect:!0,disconnect:!0,manage_tokens:!0},members:{view:!0,invite:!0,remove:!0,update_roles:!0},settings:{view:!0,edit:!0,billing:!1},analytics:{view:!0,export:!0}},member:{campaigns:{view:!0,create:!0,edit:!0,delete:!1,duplicate:!0,publish:!0},adSets:{view:!0,create:!0,edit:!0,delete:!1,duplicate:!0},ads:{view:!0,create:!0,edit:!0,delete:!1,duplicate:!0},assets:{view:!0,upload:!0,delete:!1,organize:!0},accounts:{view:!0,connect:!1,disconnect:!1,manage_tokens:!1},members:{view:!0,invite:!1,remove:!1,update_roles:!1},settings:{view:!0,edit:!1,billing:!1},analytics:{view:!0,export:!0}},viewer:{campaigns:{view:!0,create:!1,edit:!1,delete:!1,duplicate:!1,publish:!1},adSets:{view:!0,create:!1,edit:!1,delete:!1,duplicate:!1},ads:{view:!0,create:!1,edit:!1,delete:!1,duplicate:!1},assets:{view:!0,upload:!1,delete:!1,organize:!1},accounts:{view:!0,connect:!1,disconnect:!1,manage_tokens:!1},members:{view:!0,invite:!1,remove:!1,update_roles:!1},settings:{view:!0,edit:!1,billing:!1},analytics:{view:!0,export:!1}}};var p=n(37517),f=n(8525),h=n(99914),A=n(4213),v=n(976),y=n(91094),w=n(67092);let _=new Set(s.oF.flatMap(e=>(0,s.sf)({platform:e}).platformStorageVariants));function b(e){let t=(0,l.FL)(e);return(0,s.eS)(t)?s.oF.indexOf(t):s.oF.length}async function E(e){let t=await (0,h.getAuthHeaders)();return!t.Authorization&&e.access_token?{...t,Authorization:"Bearer ".concat(e.access_token)}:t}async function S(e){let t=async e=>fetch("/api/user/organizations",{headers:e,credentials:"include"}),n=await t(await E(e));if(401!==n.status||!e.refresh_token)return n;let a=await f.supabase.auth.refreshSession(e).then(e=>{let{data:t}=e;return t.session}
1).catch(()=>null);return(null==a?void 0:a.access_token)?t(await E(a)):n}var C=n(49341),O=n(80073),k=n(42214),I=n(88490);let T="preference",M="preferred_platform";function z(e){return"".concat("adcero_preferred_platform","_").concat(e)}var N=n(60673),P=n(24460);let D=(0,o.createContext)(void 0),L=e=>{var t,n,L;let{children:R}=e,{session:U,isLoading:B}=(0,r.A)(),[F,x]=(0,o.useState)(!1),{setIsLoading:G,setUserOrganizations:j,setCurrentOrganization:K,setCurrentRole:H,setCurrentPermissions:V,setIsLoadingAccounts:q,setOrganizationAccounts:J,setSelectedAccount:W,setIsLoadingMembers:Y,setOrganizationMembers:X,clearAllState:$,hasInitiallyLoaded:Z,currentOrganization:Q,organizationAccounts:ee,selectedAccount:et,currentRole:en,currentPermissions:ea,userOrganizations:eo,isLoading:er,isLoadingAccounts:ei,isLoadingMembers:es,organizationMembers:ec,selectedPlatform:el,setSelectedPlatform:eu,accountsByPlatform:ed,availablePlatforms:em,isLoadingPlatformPreference:eg,setIsLoadingPlatformPreference:ep}=function(){let[e,t]=(0,o.useState)(null),[n,a]=(0,o.useState)([]),[r,d]=(0,o.useState)(null),[m,g]=(0,o.useState)(null),[p,f]=(0,o.useState)([]),[h,A]=(0,o.useState)(null),[v,y]=(0,o.useState)(!0),w=(0,o.useRef)(!1),[_,b]=(0,o.useState)(!0),[E,S]=(0,o.useState)(!1),C=(0,i.$)(e=>e.selectedAccount),O=(0,i.$)(e=>e.organizationAccounts),k=(0,i.$)(e=>e.isLoadingAccounts),I=(0,i.$)(e=>e.setSelectedAccount),T=(0,i.$)(e=>e.setOrganizationAccounts),M=(0,i.$)(e=>e.setLoadingAccounts),z=(0,i.$)(e=>e.setLoadingAccount),N=(0,i.$)(e=>e.restoreAccountForOrg),P=(0,i.$)(e=>e.restoreAccountForPlatform),D=(0,i.$)(e=>e.savePlatformAccountPreference),L=(0,c.Jv)(e=>e.setAdAccountId),R=(0,c.Jv)(e=>e.setCurrency),U=(0,o.useMemo)(()=>O.map(e=>({...e,id:e.ad_account_id})),[O]),B=(0,o.useMemo)(()=>C?{...C,id:C.ad_account_id}:null,[C]),F=(0,o.useMemo)(()=>{let e={meta:[],tiktok:[],google:[],twitter:[],linkedin:[]};return U.forEach(t=>{let n=(0,l.FL)(t.platform);n&&e[n].push(t)}),e},[U,null==e?void 0:e.id]),x=(0,o.useMemo)(()=>(0,s.US)(U),[U]),G=(0,o.useCallback)(e=>({ad_account_id:e.ad_account_id,account_name:e.account_name,organization_id:e.organization_id,platform:e.platform,is_active:e.is_active,is_primary:e.is_primary,status:e.status,metadata:e.metadata}),[]),j=(0,o.useCallback)(e=>e?{...e,id:e.ad_account_id}:null,[]),K=(0,o.useCallback)(e=>{if(!e)return void I(null);let t=(0,l.FL)(e.platform);if(I(G(e)),t&&e.organization_id&&D(e.organization_id,t,e.ad_account_id),"meta"===t){var n;L((0,s.Jz)(e.ad_account_id)),R((null==(n=e.metadata)?void 0:n.currency)||"USD")}},[D,L,R,G,I]),H=(0,o.useCallback)(t=>{A(t);let n=null==e?void 0:e.id,a=n?U.filter(e=>e.organization_id===n):[],o=(0,u.Pp)(t,a);o.length>0&&n?K(j(P(n,t,o.map(e=>({ad_account_id:e.ad_account_id,account_name:e.account_name,organization_id:e.organization_id,platform:e.platform,is_active:e.is_active,metadata:e.metadata}))))):K(null)},[null==e?void 0:e.id,U,P,K,j]),V=(0,o.useCallback)(e=>{T(e.map(e=>G(e)))},[G,T]),q=(0,o.useCallback)(e=>{M(e)},[M]);(0,o.useEffect)(()=>{if(!(null==e?void 0:e.id)||k||!h)return;let t=i.$.getState().selectedAccount;if(t){let n=t.organization_id===e.id,a=!h||(0,u.Pp)(h,[t]).length>0;if(n&&a)return void z(!1)}let n=O.filter(t=>t.organization_id===e.id),a=h?(0,u.Pp)(h,n):n;if(a.length>0){K(j(N(e.id,a))),z(!1);return}0===a.length&&(K(null),z(!1))},[null==e?void 0:e.id,O,k,N,z,h,K,j]);let J=(0,o.useRef)(null);(0,o.useEffect)(()=>{var t;let n=null!=(t=null==e?void 0:e.id)?t:null;J.current&&J.current!==n&&A(null),J.current=n},[null==e?void 0:e.id]),(0,o.useEffect)(()=>{let t=c.Jv.getState();(null==e?void 0:e.id)?(t.setOrganizationContext(e.id),t.updateConfig({accessToken:null,adAccountId:null,businessId:null}),t.clearAllCache()):t.setOrganizationContext(null)},[null==e?void 0:e.id]);let W=(0,o.useCallback)(()=>{t(null),a([]),d(null),g(null),T([]),I(null),f([]),b(!1),w.current=!1,i.$.getState().clearAllData();let e=c.Jv.getState();e.updateConfig({accessToken:null,adAccountId:null,businessId:null}),e.clearAllCache(),e.setOrganizationContext(null)},[T,I]);return(0,o.useMemo)(()=>({currentOrganization:e,setCurrentOrganization:t,userOrganizations:n,setUserOrganizations:a,currentRole:r,setCurrentRole:d,currentPermissions:m,setCurrentPermissions:g,organizationAccounts:U,setOrganizationAccounts:V,selectedAccount:B,setSelectedAccount:K,organizationMembers:p,setOrganizationMembers:f,selectedPlatform:h,setSelectedPlatform:H,accountsByPlatform:F,availablePlatforms:x,isLoadingPlatformPreference:v,setIsLoadingPlatformPreference:y,isLoading:_,setIsLoading:b,isLoadingAccounts:k,setIsLoadingAccounts:q,isLoadingMembers:E,setIsLoadingMembers:S,hasInitiallyLoaded:w,clearAllState:W}),[e,t,n,a,r,d,m,g,U,V,B,K,p,f,h,H,F,x,v,_,b,k,q,E,S,W])}(),ef=function(){let e=(0,d.jE)(),t=(0,o.useCallback)(async(e,t)=>{var n,a,o,r,i,s,c,l;if(!(null==e||null==(n=e.user)?void 0:n.id))return;t.setIsLoading(!0),t.setIsServerOrganizationReady(!1);let u=(0,p.oz)()?(0,m.ok)({flow:"app.organization.bootstrap",source:"client",attributes:{user_id:e.user.id}}):null;try{let n=E(e),[d,p]=await Promise.all([S(e),n.then(e=>fetch("/api/user-settings?settingType=preference&settingKey=preferred_organization",{headers:e,credentials:"include"})).catch(()=>null)]);if(!d.ok){let e=await d.json().catch(()=>({}));throw Error(e.reason||"Failed to load organizations")}let f=await d.json(),h=null!=(r=null!=(o=null==(a=f.data)?void 0:a.entity)?o:f.data)?r:[],A=e=>{if(!e)return null;if(Array.isArray(e)){var t;return null!=(t=e[0])?t:null}return e},v=(null==h?void 0:h.map(e=>A(e.organization)).filter(e=>!!e))||[];t.setUserOrganizations(v);let y=null;if(v.length>0){let n,a=null;
1if(p)try{if(p.ok){let e=await p.json(),t=null!=(s=null==(i=e.data)?void 0:i.entity)?s:e.data;(null==t?void 0:t.setting_value)&&(a=(null==(c=t.setting_value)?void 0:c.organization_id)||null)}}catch(e){}let o=(a?v.find(e=>e.id===a):void 0)||v[0];y=null!=(l=null==o?void 0:o.id)?l:null;let r=(n=null==o?void 0:o.id,null==h?void 0:h.find(e=>{let t=A(e.organization);return(null==t?void 0:t.id)===n})),u=!1;if(o){let t=null==e?void 0:e.access_token;try{let e=await fetch("/api/organization/switch",{method:"POST",headers:{"Content-Type":"application/json",...t?{Authorization:"Bearer ".concat(t)}:{}},body:JSON.stringify({organizationId:o.id}),credentials:"include"});if(e.ok)u=!0;else{let t=await e.json().catch(()=>({}));console.warn("[useOrganizationData] Failed to set organization cookie:",t)}}catch(e){console.warn("[useOrganizationData] Error setting organization cookie:",e)}}t.setIsServerOrganizationReady(u),t.setCurrentOrganization(o||null),t.setCurrentRole((null==r?void 0:r.role)||null),t.setCurrentPermissions(g[null==r?void 0:r.role]||null)}else t.setIsServerOrganizationReady(!1);u&&(0,m.h9)(u,{attributes:{result:"loaded",organization_count:v.length,selected_organization_id:null!=y?y:"none"}})}catch(e){console.error("[useOrganizationData] Error loading organizations:",e),u&&(0,m.h9)(u,{status:"error",error:e,attributes:{result:"error"}})}finally{t.setIsLoading(!1)}},[]),n=(0,o.useCallback)(async(e,t,n)=>{t.setIsLoadingAccounts(!0);try{let a=await (0,h.getAuthHeaders)(),o=await fetch("/api/organization/".concat(e,"/accounts"),{headers:a,credentials:"include",signal:n});if(null==n?void 0:n.aborted)return;if(!o.ok){let e=await o.json().catch(()=>({}));throw Error(e.reason||"Failed to fetch organization accounts")}let r=((await o.json()).data||[]).filter(e=>(0,w.F)(e)&&_.has(e.platform)).sort((e,t)=>b(e.platform)-b(t.platform));t.setOrganizationAccounts(r)}catch(e){if((0,y.z)(e))return;console.error("Error loading organization accounts:",e)}finally{(null==n?void 0:n.aborted)||t.setIsLoadingAccounts(!1)}},[]),a=(0,o.useCallback)(async(t,n,a)=>{n.setIsLoadingMembers(!0);try{let o=await e.fetchQuery({queryKey:v.O.members(t),queryFn:()=>(0,A.hP)(t,a),staleTime:A.do});n.setOrganizationMembers(o)}catch(e){if((0,y.z)(e))return;console.error("Error loading organization members:",e)}finally{(null==a?void 0:a.aborted)||n.setIsLoadingMembers(!1)}},[e]),r=(0,o.useCallback)(async(e,t,o,r,i)=>{var s;let c=[n(e,t,r)];null==(s=null==i?void 0:i.includeMembers)||s?c.push(a(e,o,r)):(o.setIsLoadingMembers(!1),o.setOrganizationMembers([])),await Promise.all(c)},[n,a]);return(0,o.useMemo)(()=>({loadUserOrganizations:t,loadOrganizationAccounts:n,loadOrganizationMembers:a,loadOrganizationData:r}),[t,n,a,r])}(),eh=function(e){let{currentRole:t,currentPermissions:n}=e,a=(0,o.useCallback)((e,t)=>{if(!n)return!1;let a=n[e];return!!a&&!0===a[t]},[n]),r=(0,o.useCallback)(()=>"owner"===t||"admin"===t,[t]),i=(0,o.useCallback)(()=>a("members","invite")||a("members","remove"),[a]),s=(0,o.useCallback)(()=>a("accounts","connect")||a("accounts","disconnect"),[a]);return{hasPermission:a,canManageOrganization:r,canManageMembers:i,canManageAccounts:s}}({currentRole:en,currentPermissions:ea}),{loadPreferredPlatform:eA,savePreferredPlatform:ev}={loadPreferredPlatform:(0,o.useCallback)(async(e,t)=>{var n,a,o,r;let i=function(e){try{let t=window.localStorage.getItem(z(e));if(!t)return null;let n=JSON.parse(t);if(!(null==n?void 0:n.platform)||!(null==n?void 0:n.updatedAt))return null;return n}catch(e){return console.error("[usePlatformPreference] Error reading local preference:",e),null}}(t);try{let e="".concat(M,"_").concat(t),{data:r,error:s}=await (0,O.T3)({settingType:T,settingKey:e});if(s)return console.error("[usePlatformPreference] Error loading preference:",s),null!=(n=null==i?void 0:i.platform)?n:null;if(!r)return null!=(a=null==i?void 0:i.platform)?a:null;let c=Array.isArray(r)?r[0]:r,l=null==c?void 0:c.setting_value,u=null!=(o=null==l?void 0:l.platform)?o:null,d=(null==c?void 0:c.updated_at)?Date.parse(c.updated_at):NaN,m=(null==i?void 0:i.updatedAt)?Date.parse(i.updatedAt):NaN;if((null==i?void 0:i.platform)&&(!u||Number.isFinite(m)&&(!Number.isFinite(d)||m>=d)))return i.platform;return u}catch(e){return console.error("[usePlatformPreference] Error loading preference:",e),null!=(r=null==i?void 0:i.platform)?r:null}},[]),savePreferredPlatform:(0,o.useCallback)(async(e,t,n)=>{let a=new Date().toISOString();try{window.localStorage.setItem(z(t),JSON.stringify({platform:n,updatedAt:a}))}catch(e){console.error("[usePlatformPreference] Error saving local preference:",e)}try{let e="".concat(M,"_").concat(t),a=await (0,h.getAuthHeaders)(),o=await fetch("/api/user-settings",{method:"POST",headers:a,keepalive:!0,body:JSON.stringify({settingType:T,settingKey:e,settingValue:{platform:n},organizationId:t})});if(!o.ok){let e=await o.json();throw Error(e.reason||e.error||"Failed to save preference")}}catch(e){throw console.error("[usePlatformPreference] Failed to save preference:",e),e}},[])},ey=(0,o.useRef)(null),ew=(0,o.useRef)(0),e_=(0,o.useRef)(0),eb=(0,o.useCallback)(async()=>{await ef.loadUserOrganizations(U,{setIsLoading:G,setUserOrganizations:j,setCurrentOrganization:K,setCurrentRole:H,setCurrentPermissions:V,setIsServerOrganizationReady:x})},[U,ef,G,j,K,H,V,x]),eE=(0,o.useCallback)(async e=>{await ef.loadOrganizationAccounts(e,{setIsLoadingAccounts:q,setOrganizationAccounts:J})},[ef,q,J]),eS=(0,o.useCallback)(async e=>{await ef.loadOrganizationMembers(e,{setIsLoadingMembers:Y,setOrganizationMembers:X})},[ef,Y,X]);(0,o.useEffect)(()=>{var e,t,n;if((null==U||null==(e=U.user)?void 0:e.id)&&!Z.current){Z.current=!0;let e=setTimeout(()=>{console.warn("[OrganizationContext] Safety timeout reached, forcing isLoading to false"),G(!1)},3e4);eb().catch(()=>{Z.current=!1}).finally(()=>{clearTimeout(e)})}else(function(e){let{sessionUserId:t,isAuthLoading:n}=e;return!t&&!n})({sessionUserId:null!=(n=null==U||null==(t=U.user)?void 0:t.id)?n:null,isAuthLoading:B})&&(x(!1),$())},[null==U||null==(t=U.user)?void 0:t.id,B,eb,$,G,x]),(0,o.useEffect)(()=>
1{if(null==Q?void 0:Q.id){let e=++ew.current,t=new AbortController;return ef.loadOrganizationData(Q.id,{setIsLoadingAccounts:t=>{ew.current===e&&q(t)},setOrganizationAccounts:t=>{ew.current===e&&J(t)}},{setIsLoadingMembers:t=>{ew.current===e&&Y(t)},setOrganizationMembers:t=>{ew.current===e&&X(t)}},t.signal,{includeMembers:!1}),()=>{t.abort()}}},[null==Q?void 0:Q.id,ef,q,J,Y,X]),(0,o.useEffect)(()=>{let e=e=>{let t=e instanceof CustomEvent?e.detail:void 0;if((null==t?void 0:t.scope)==="accounts"&&(null==Q?void 0:Q.id)&&(!t.organizationId||t.organizationId===Q.id))return void eE(Q.id);eb(),(null==Q?void 0:Q.id)&&eE(Q.id)};return window.addEventListener("organizations:reload",e),()=>{window.removeEventListener("organizations:reload",e)}},[eb,null==Q?void 0:Q.id,eE]),(0,o.useEffect)(()=>{(null==Q?void 0:Q.id)&&null!==ey.current&&ey.current!==Q.id&&(ep(!0),ey.current=null)},[null==Q?void 0:Q.id,ep]),(0,o.useEffect)(()=>{(async()=>{var e;if(!(null==U||null==(e=U.user)?void 0:e.id)||!(null==Q?void 0:Q.id)||ei)return;let t=++e_.current,n=Q.id,a=Q.name,o=(0,N.isGoogleAdsTestMode)();if(ey.current===n)return ep(!1);ey.current=n;try{let e=await eA(U.user.id,n);if(e_.current!==t||(null==Q?void 0:Q.id)!==n)return;let r=(0,P.W)({savedPlatform:e,availablePlatforms:em,organizationAccountsCount:ee.length,googleTestModeEnabled:o,organizationId:n,organizationName:a});r&&eu(r)}finally{e_.current===t&&(null==Q?void 0:Q.id)===n&&ep(!1)}})()},[null==U||null==(n=U.user)?void 0:n.id,null==Q?void 0:Q.id,null==Q?void 0:Q.name,ei,ee.length,eA,eu,em,ep]);let eC=(0,o.useCallback)(e=>{var t;++e_.current,(null==Q?void 0:Q.id)&&(ey.current=Q.id),ep(!1),eu(e),(null==U||null==(t=U.user)?void 0:t.id)&&(null==Q?void 0:Q.id)&&ev(U.user.id,Q.id,e).catch(e=>{console.error("[OrganizationContext] Failed to save platform preference:",e)})},[eu,ep,null==U||null==(L=U.user)?void 0:L.id,null==Q?void 0:Q.id,ev]),eO=(0,k.cn)(e=>e.setDisplayCurrency),ek=(0,k.cn)(e=>e.setSourceCurrency);(0,o.useEffect)(()=>{var e;eO((null==Q||null==(e=Q.settings)?void 0:e.currency)||I.Oc)},[null==Q?void 0:Q.settings,eO]),(0,o.useEffect)(()=>{let e=null==et?void 0:et.metadata;ek((null==e?void 0:e.currency)||I.Oc)},[null==et?void 0:et.metadata,ek]);let eI=function(e){var t,n,a,r;let{session:s,userOrganizations:l,currentOrganization:u,setCurrentOrganization:d,setCurrentRole:m,setCurrentPermissions:p,setSelectedAccount:h,loadUserOrganizations:A}=e,v=(0,i.$)(e=>e.clearSelectedAccountForOrgSwitch),y=(0,i.$)(e=>e.setLoadingAccounts),w=(0,i.$)(e=>e.setOrganizationAccounts),_=(0,o.useRef)(0),[b,E]=(0,o.useState)(!1),S=(0,o.useCallback)(async e=>{var t,n;if(!(null==s||null==(t=s.user)?void 0:t.id))return!1;let a=l.find(t=>t.id===e);if(!a)return!1;if((null==u?void 0:u.id)===e)return!0;let o=++_.current;E(!0);try{let{data:{session:t}}=await f.supabase.auth.getSession(),r=(null==t?void 0:t.access_token)||void 0,i=await fetch("/api/organization/switch",{method:"POST",headers:{"Content-Type":"application/json",...r?{Authorization:"Bearer ".concat(r)}:{}},body:JSON.stringify({organizationId:e}),credentials:"include"});if(!i.ok){let e=await i.json().catch(()=>({}));return(0,C.v)(e),console.error("[useOrganizationOperations] Failed to set active org cookie",e),!1}if(_.current!==o)return!1;v(e),w([]),y(!0),d(a);let{error:c}=await (0,O.P1)({settingType:"preference",settingKey:"preferred_organization",settingValue:{organization_id:e},organizationId:e});if(c&&console.error("[useOrganizationOperations] Error saving org preference:",c),_.current!==o)return!1;let l=await fetch("/api/organization/".concat(e,"/members"),{credentials:"include"});if(_.current!==o)return!1;if(l.ok){let e=((null==(n=(await l.json()).data)?void 0:n.members)||[]).find(e=>e.user_id===s.user.id);if(e){m(e.role);let t=g[e.role];p(t)}}return!0}catch(e){return console.error("[useOrganizationOperations] Error switching organization:",e),!1}finally{_.current===o&&E(!1)}},[null==s||null==(t=s.user)?void 0:t.id,l,null==u?void 0:u.id,d,m,p,v,y,w]),k=(0,o.useCallback)(async e=>{var t;if(!(null==s||null==(t=s.user)?void 0:t.id))throw Error("No user session");let{data:{session:n},error:a}=await f.supabase.auth.getSession();if(a||!n)throw Error("Unable to get current session");let o=await fetch("/api/organization/create",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(n.access_token)},body:JSON.stringify({name:e.name,website_url:e.website_url,type:e.type,parent_organization_id:e.parent_organization_id})});if(!o.ok){let e=await o.json();throw console.error("[useOrganizationOperations] Failed to create organization:",e),Error(e.reason||e.error||"Failed to create organization")}let{data:r}=await o.json();if(!r)throw Error("No organization data returned from API");await A(),d(r),m("owner"),p(g.owner);try{await (0,O.P1)({settingType:"preference",settingKey:"preferred_organization",settingValue:{organization_id:r.id},organizationId:r.id})}catch(e){console.error("[useOrganizationOperations] Error saving org preference:",e)}try{let{data:{session:e}}=await f.supabase.auth.getSession(),t=null==e?void 0:e.access_token;await fetch("/api/organization/switch",{method:"POST",headers:{"Content-Type":"application/json",...t?{Authorization:"Bearer ".concat(t)}:{}},body:JSON.stringify({organizationId:r.id}),credentials:"include"})}catch(e){console.error("[useOrganizationOperations] Error setting org cookie after create",e)}return r},[null==s||null==(n=s.user)?void 0:n.id,A,d,m,p]),I=(0,o.useCallback)(async(e,t)=>{let{data:{session:n}}=await f.supabase.auth.getSession(),a=null==n?void 0:n.access_token,o=await fetch("/api/organization/".concat(e,"/update"),{method:"PATCH",headers:{"Content-Type":"application/json",...a?{Authorization:"Bearer ".concat(a)}:{}},body:JSON.stringify({name:t.name,website_url:t.website_url,settings:t.settings})});if(!o.ok){let e=await o.json();throw Error(e.reason||e.error||"Failed to update organization")}(null==u?void 0:u.id)===e&&d({...u,...t})},[u,d]),T=(0,o.useCallback)(async e=>{try{let{data:{session:t}}=await f.supabase.auth.getSession(),n=null==t?void 0:t.access_token,{data:a}=await f.supabase.from("job_queue").select("id").eq("organization_id",e).in("status",["pen
1ding","processing"]);if(a&&a.length>0)for(let e of a)try{await fetch("/api/jobs/cancel",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:"Bearer ".concat(n)}:{}},credentials:"include",body:JSON.stringify({jobId:e.id})})}catch(t){console.warn("[deleteOrganization] Failed to cancel job ".concat(e.id,":"),t)}}catch(e){console.warn("[deleteOrganization] Error cancelling jobs, proceeding with deletion:",e)}let{data:{session:t}}=await f.supabase.auth.getSession(),n=null==t?void 0:t.access_token,a=await fetch("/api/organization/".concat(e,"/delete"),{method:"DELETE",headers:{"Content-Type":"application/json",...n?{Authorization:"Bearer ".concat(n)}:{}}});if(!a.ok){let e=await a.json();throw Error(e.reason||e.error||"Failed to delete organization")}if(await A(),(null==u?void 0:u.id)===e){let t=l.find(t=>t.id!==e);if(t){d(t);try{let e=await fetch("/api/organization/".concat(t.id,"/members"),{credentials:"include"});if(e.ok){var o;let t=((null==(o=(await e.json()).data)?void 0:o.members)||[]).find(e=>{var t;return e.user_id===(null==s||null==(t=s.user)?void 0:t.id)});t&&(m(t.role),p(g[t.role]))}}catch(e){console.error("[useOrganizationOperations] Error loading role after delete:",e)}}}},[u,l,null==s||null==(a=s.user)?void 0:a.id,A,d,m,p]),M=(0,o.useCallback)(async e=>{var t,n;if(null==s||null==(t=s.user)?void 0:t.id)try{let{data:t}=await f.supabase.from("organization_accounts").select("ad_account_id, platform").eq("organization_id",e).eq("is_active",!0);if(t&&t.length>0){let{data:{session:n}}=await f.supabase.auth.getSession(),a=null==n?void 0:n.access_token,o={"Content-Type":"application/json",...a?{Authorization:"Bearer ".concat(a)}:{}};await Promise.all(t.map(t=>fetch("/api/organization/".concat(e,"/accounts"),{method:"DELETE",headers:o,body:JSON.stringify({adAccountId:t.ad_account_id,platform:t.platform})}).catch(e=>console.error("[useOrganizationOperations] Error deactivating account:",e))))}i.$.getState().clearAllDataForOrganization(e),c.Jv.getState().clearDataForOrganization(e);try{let{data:t}=await (0,O.T3)({settingType:"preference",settingKey:"preferred_organization"});(null==t||null==(n=t.setting_value)?void 0:n.organization_id)===e&&await (0,O.NJ)({settingType:"preference",settingKey:"preferred_organization"})}catch(e){}if((null==u?void 0:u.id)===e){let t=l.find(t=>t.id!==e);t?await S(t.id):(d(null),m(null),p(null),h(null))}await A()}catch(e){throw console.error("[useOrganizationOperations] Error during organization disconnection:",e),e}},[null==s||null==(r=s.user)?void 0:r.id,u,l,S,d,m,p,h,A]);return{switchOrganization:S,isSwitchingOrganization:b,createOrganization:k,updateOrganization:I,deleteOrganization:T,disconnectOrganization:M}}({session:U,userOrganizations:eo,currentOrganization:Q,setCurrentOrganization:K,setCurrentRole:H,setCurrentPermissions:V,setSelectedAccount:(0,o.useCallback)(e=>{W(e)},[W]),loadUserOrganizations:eb}),eT=function(e){var t;let{session:n,currentOrganization:a,loadOrganizationAccounts:r,loadUserOrganizations:s}=e,u=(0,d.jE)(),m=(0,i.$)(e=>e.removeAccountFromOrganization),g=(0,i.$)(e=>e.selectedAccount),p=(0,c.Jv)(e=>e.clearCacheForOrganization),A=(0,c.Jv)(e=>e.clearAllCache),v=(0,c.Jv)(e=>e.updateConfig);return{connectAccount:(0,o.useCallback)(async e=>{if(!(null==a?void 0:a.id))throw Error("No organization selected");let t=await (0,h.getAuthHeaders)(),n=await fetch("/api/accounts/save",{method:"POST",headers:t,body:JSON.stringify({organizationId:a.id,adAccountId:e.ad_account_id,accountName:e.account_name,accessToken:e.access_token||"",metadata:e.metadata})});if(!n.ok){let e=await n.json();throw Error(e.reason||e.error||"Failed to connect account")}await r(a.id),await s(),window.dispatchEvent(new Event("organizations:reload"))},[a,r,s]),disconnectAccount:(0,o.useCallback)(async e=>{let{data:t}=await f.supabase.from("organization_accounts").select("ad_account_id, organization_id, platform").eq("id",e).single();if(!t)throw Error("Account not found");let a=await (0,h.getAuthHeaders)(),o=await fetch("/api/organization/".concat(t.organization_id,"/accounts"),{method:"DELETE",headers:a,body:JSON.stringify({adAccountId:t.ad_account_id,platform:t.platform})});if(!o.ok){let e=await o.json();throw Error(e.reason||e.error||"Failed to disconnect account")}if(t){var i;let e=(null==g?void 0:g.organization_id)===t.organization_id&&(null==g?void 0:g.ad_account_id)===t.ad_account_id&&(null==g?void 0:g.platform)===t.platform;if(m(t.organization_id,t.ad_account_id,t.platform),p(t.organization_id),e&&"meta"===(0,l.FL)(t.platform)&&(v({adAccountId:null,businessId:null,currency:"USD"}),A()),null==n||null==(i=n.user)?void 0:i.id){let e="preferred_organization_".concat(n.user.id);localStorage.getItem(e)===t.organization_id&&localStorage.removeItem(e),["org_accounts_".concat(t.organization_id),"org_pages_".concat(t.organization_id),"org_data_".concat(t.organization_id)].forEac
1h(e=>{localStorage.removeItem(e)})}await r(t.organization_id),window.dispatchEvent(new Event("organizations:reload")),u.removeQueries({queryKey:["onboarding-sync-check",t.organization_id]})}},[a,r,u,A,p,m,null==n||null==(t=n.user)?void 0:t.id,g,v])}}({session:U,currentOrganization:Q,loadOrganizationAccounts:eE,loadUserOrganizations:eb}),eM=function(e){var t,n,a,r;let{session:i,currentOrganization:s,setCurrentOrganization:c,setCurrentRole:l,setCurrentPermissions:u,loadUserOrganizations:d,loadOrganizationMembers:m}=e,p=(0,o.useCallback)(async(e,t)=>{var n,a;if(!(null==s?void 0:s.id))throw Error("No organization selected");if(!(null==i||null==(n=i.user)?void 0:n.id))throw Error("No user session");let o=await (0,h.getAuthHeaders)(),r=await fetch("/api/organization/".concat(s.id,"/members/invite"),{method:"POST",headers:o,body:JSON.stringify({email:e,role:t,organizationName:s.name||"",inviterName:(null==(a=i.user.user_metadata)?void 0:a.full_name)||i.user.email||""})});if(!r.ok){let e=await r.json();throw Error(e.reason||e.error||"Failed to invite member")}},[s,null==i||null==(t=i.user)?void 0:t.id,null==i||null==(n=i.user)?void 0:n.email,null==i||null==(a=i.user)?void 0:a.user_metadata]),A=(0,o.useCallback)(async e=>{if(!(null==s?void 0:s.id))throw Error("No organization selected");let t=await (0,h.getAuthHeaders)(),n=await fetch("/api/organization/".concat(s.id,"/members/").concat(e),{method:"DELETE",headers:t});if(!n.ok){let e=await n.json();throw Error(e.reason||e.error||"Failed to remove member")}await m(s.id)},[s,m]),v=(0,o.useCallback)(async(e,t)=>{if(!(null==s?void 0:s.id))throw Error("No organization selected");let n=await (0,h.getAuthHeaders)(),a=await fetch("/api/organization/".concat(s.id,"/members/").concat(e),{method:"PATCH",headers:n,body:JSON.stringify({role:t})});if(!a.ok){let e=await a.json();throw Error(e.reason||e.error||"Failed to update member role")}await m(s.id)},[s,m]);return{inviteMember:p,removeMember:A,updateMemberRole:v,acceptInvitation:(0,o.useCallback)(async e=>{var t;if(!(null==i||null==(t=i.user)?void 0:t.id))throw Error("No user session");let{data:n,error:a}=await f.supabase.from("organization_invitations").select("id, organization_id, role").eq("token",e).single();if(a||!n)throw Error("Invalid invitation");let o=await (0,h.getAuthHeaders)(),r=await fetch("/api/invitations/accept",{method:"POST",headers:o,body:JSON.stringify({invitationId:n.id})});if(!r.ok){let e=await r.json();throw Error(e.reason||e.error||"Failed to accept invitation")}await d();let{data:s}=await f.supabase.from("organizations").select("*").eq("id",n.organization_id).single();s&&(c(s),l(n.role),u(g[n.role]))},[null==i||null==(r=i.user)?void 0:r.id,d,c,l,u]),revokeInvitation:(0,o.useCallback)(async e=>{if(!(null==s?void 0:s.id))throw Error("No organization selected");let t=await (0,h.getAuthHeaders)(),n=await fetch("/api/organization/".concat(s.id,"/members/invitations/").concat(e),{method:"DELETE",headers:t});if(!n.ok){let e=await n.json();throw Error(e.reason||e.error||"Failed to revoke invitation")}},[s])}}({session:U,currentOrganization:Q,setCurrentOrganization:K,setCurrentRole:H,setCurrentPermissions:V,loadUserOrganizations:eb,loadOrganizationMembers:eS}),ez=(0,o.useMemo)(()=>({currentOrganization:Q,setCurrentOrganization:K,userOrganizations:eo,currentRole:en,currentPermissions:ea,organizationAccounts:ee,selectedAccount:et,setSelectedAccount:W,organizationMembers:ec,isLoading:er,isLoadingAccounts:ei,isLoadingMembers:es,isServerOrganizationReady:F,selectedPlatform:el,setSelectedPlatform:eC,accountsByPlatform:ed,availablePlatforms:em,isLoadingPlatformPreference:eg,isSwitchingOrganization:eI.isSwitchingOrganization,switchOrganization:eI.switchOrganization,createOrganization:eI.createOrganization,updateOrganization:eI.updateOrganization,deleteOrganization:eI.deleteOrganization,disconnectOrganization:eI.disconnectOrganization,connectAccount:eT.connectAccount,disconnectAccount:eT.disconnectAccount,inviteMember:eM.inviteMember,removeMember:eM.removeMember,updateMemberRole:eM.updateMemberRole,acceptInvitation:eM.acceptInvitation,revokeInvitation:eM.revokeInvitation,hasPermission:eh.hasPermission,canManageOrganization:eh.canManageOrganization,canManageMembers:eh.canManageMembers,canManageAccounts:eh.canManageAccounts}),[Q,K,eo,en,ea,ee,et,W,ec,er,ei,es,el,eC,ed,em,eg,eI.isSwitchingOrganization,eI.switchOrganization,eI.createOrganization,eI.updateOrganization,eI.deleteOrganization,eI.disconnectOrganization,eT.connectAccount,eT.disconnectAccount,eM.inviteMember,eM.removeMember,eM.updateMemberRole,eM.acceptInvitation,eM.revokeInvitation,eh.hasPermission,eh.canManageOrganization,eh.canManageMembers,eh.canManageAccounts,F]);return(0,a.jsx)(D.Provider,{value:ez,children:R})},R=()=>{let e=(0,o.useContext)(D);if(void 0===e)throw Error("useOrganization must be used within an OrganizationProvider");return e};function U(){let e=(0,o.useContext)(D);if(void 0===e)throw Error("useOrganizationBootstrapState must be used within an OrganizationProvider");return{isServerOrganizationReady:e.isServerOrganizationReady}}},83875:(e,t,n)=>{n.d(t,{IW:()=>s,Jz:()=>u,PO:()=>g,US:()=>d,_3:()=>m,eS:()=>c,oF:()=>i,sf:()=>p,wL:()=>l});var a=n(50088),o=n(67501),r=n(81104);let i=["meta","google","tiktok","twitter","linkedin"];function s(e){return i.filter(t=>"twitter"===t?(0,o.yE)(e):"linkedin"!==t||(0,r.LW)(e))}function c(e){return i.includes(e)}function l(e,t){return"linkedin"===e?(0,r.LW)(t):"twitter"===e&&(0,o.yE)(t)}function u(e){return e.trim().replace(/^act_/,"")}function d(e){let t=new Set;for(let n of e){let e=(0,a.FL)(n.platform);c(e)&&t.add(e)}return i.filter(e=>t.has(e))}function m(e,t){if(!e)return[];let n=u(e),o=(0,a.FL)(t),r=new Set([e]);return"meta"!==o&&o||(r.add(n),r.add("act_".concat(n))),Array.from(r)}function g(e,t,n){if(!e||!t)return!1;let a=new Set(m(e,n));return m(t,n).some(e=>a.has(e))}function p(e){let{accountId:t,platform:n}=e,o=(0,a.FL)(n);return{accountId:null!=t?t:null,cleanAccountId:t?u(t):null,accountIdVariants:m(t,o),platform:o,platformStorageVariants:(0,a.zK)(o)}}}
1,85089:(e,t,n)=>{n.d(t,{IA:()=>o});var a=n(40399);let o=()=>(0,a.Jv)(e=>e.config)},88490:(e,t,n)=>{n.d(t,{Oc:()=>o,Rr:()=>i,VK:()=>a,cf:()=>r});let a=[{code:"USD",symbol:"$",name:"US Dollar",locale:"en-US"},{code:"EUR",symbol:"€",name:"Euro",locale:"de-DE"},{code:"GBP",symbol:"\xa3",name:"British Pound",locale:"en-GB"},{code:"CAD",symbol:"CA$",name:"Canadian Dollar",locale:"en-CA"},{code:"AUD",symbol:"A$",name:"Australian Dollar",locale:"en-AU"},{code:"JPY",symbol:"\xa5",name:"Japanese Yen",locale:"ja-JP"},{code:"CNY",symbol:"\xa5",name:"Chinese Yuan",locale:"zh-CN"},{code:"INR",symbol:"₹",name:"Indian Rupee",locale:"en-IN"},{code:"BRL",symbol:"R$",name:"Brazilian Real",locale:"pt-BR"},{code:"MXN",symbol:"MX$",name:"Mexican Peso",locale:"es-MX"},{code:"KRW",symbol:"₩",name:"South Korean Won",locale:"ko-KR"},{code:"SGD",symbol:"S$",name:"Singapore Dollar",locale:"en-SG"},{code:"HKD",symbol:"HK$",name:"Hong Kong Dollar",locale:"zh-HK"},{code:"NZD",symbol:"NZ$",name:"New Zealand Dollar",locale:"en-NZ"},{code:"SEK",symbol:"kr",name:"Swedish Krona",locale:"sv-SE"},{code:"NOK",symbol:"kr",name:"Norwegian Krone",locale:"nb-NO"},{code:"DKK",symbol:"kr",name:"Danish Krone",locale:"da-DK"},{code:"CHF",symbol:"CHF",name:"Swiss Franc",locale:"de-CH"},{code:"PLN",symbol:"zł",name:"Polish Zloty",locale:"pl-PL"},{code:"PHP",symbol:"₱",name:"Philippine Peso",locale:"en-PH"},{code:"THB",symbol:"฿",name:"Thai Baht",locale:"th-TH"},{code:"MYR",symbol:"RM",name:"Malaysian Ringgit",locale:"ms-MY"},{code:"IDR",symbol:"Rp",name:"Indonesian Rupiah",locale:"id-ID"},{code:"ZAR",symbol:"R",name:"South African Rand",locale:"en-ZA"},{code:"AED",symbol:"د.إ",name:"UAE Dirham",locale:"ar-AE"},{code:"SAR",symbol:"﷼",name:"Saudi Riyal",locale:"ar-SA"},{code:"ILS",symbol:"₪",name:"Israeli Shekel",locale:"he-IL"},{code:"TRY",symbol:"₺",name:"Turkish Lira",locale:"tr-TR"},{code:"RUB",symbol:"₽",name:"Russian Ruble",locale:"ru-RU"},{code:"COP",symbol:"CO$",name:"Colombian Peso",locale:"es-CO"},{code:"ARS",symbol:"AR$",name:"Argentine Peso",locale:"es-AR"},{code:"CLP",symbol:"CL$",name:"Chilean Peso",locale:"es-CL"},{code:"PEN",symbol:"S/",name:"Peruvian Sol",locale:"es-PE"}],o="USD";function r(e){return a.find(t=>t.code===e)}function i(){return a[0]}},91094:(e,t,n)=>{n.d(t,{z:()=>a});function a(e){return(e instanceof DOMException||!!e&&"object"==typeof e&&"name"in e&&"string"==typeof e.name)&&"AbortError"===e.name}},95458:(e,t,n)=>{n.d(t,{Pp:()=>u,Si:()=>o,WY:()=>l,XH:()=>d,Xi:()=>s,cK:()=>c,vU:()=>m});var a=n(50088);function o(e){var t,n;return null!=(n=null!=(t=e.find(e=>!0===e.is_primary))?t:e[0])?n:null}let r={google:"demo_google_nimbus",meta:"demo_meta_nimbus",tiktok:"demo_tiktok_nimbus"},i=new Set(Object.values(r));function s(e){return!!e&&i.has(e)}function c(e,t){var n;if(!e)return null;let a=r[e];return a&&null!=(n=t.find(e=>e.ad_account_id===a))?n:null}function l(e,t){return!!e&&(0,a.FL)(t.platform)===e&&("meta"!==e||"meta"===t.platform)}function u(e,t){return t.filter(t=>l(e,t))}function d(e,t,n){if(!e)return null;if(t&&!s(t.ad_account_id)&&l(e,t)&&n.some(e=>e.organization_id===t.organization_id&&e.ad_account_id===t.ad_account_id))return t;let a=o(n.filter(e=>!s(e.ad_account_id)));return a||c(e,n)}function m(e,t,n){return d(e,t,u(e,n))}},99914:(e,t,n)=>{n.d(t,{getAuthHeaders:()=>o});var a=n(8525);async function o(){let{data:{session:e}}=await a.supabase.auth.getSession(),t=null==e?void 0:e.access_token;return{"Content-Type":"application/json",...t?{Authorization:"Bearer ".concat(t)}:{}}}}}]);

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.