1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[60032],{18953:(e,t,n)=>{n.d(t,{B:()=>i,NR:()=>s,cw:()=>r,ky:()=>l,uv:()=>o});var a=n(95155);function r(e){let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z"})})}function i(e){let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M6.3 5.2c-2.1 0-3.7 1.5-4.5 3.4A11.3 11.3 0 0 0 1 12.9c0 2.1.5 3.5 1.3 4.4.8.9 1.8 1.3 2.9 1.3 1.4 0 2.5-.7 3.5-1.9.7-.9 1.4-2 2.1-3.3l1-1.9c.2-.3.3-.6.5-.9l.6 1c.8 1.4 1.5 2.6 2.2 3.6.9 1.3 1.9 2.3 3.1 2.9.6.3 1.2.5 1.9.5 2 0 3.4-1.4 3.4-4.1 0-2.6-.8-5.4-2.3-7.5-1.2-1.7-2.7-2.7-4.4-2.7-1.3 0-2.4.6-3.4 1.7-.6.7-1.2 1.5-1.7 2.4-.5-.8-1-1.6-1.6-2.3-1-1.2-2.1-1.9-3.5-1.9Zm.2 2.4c.6 0 1.2.4 1.8 1.1.5.6.9 1.3 1.4 2.1l-.9 1.6c-.6 1.1-1.1 2-1.6 2.7-.6.8-1.1 1.2-1.7 1.2-.5 0-.9-.2-1.2-.7-.3-.5-.5-1.3-.5-2.4 0-1.4.3-2.9.8-4 .5-1 1.1-1.6 1.9-1.6Zm11 0c.8 0 1.6.6 2.3 1.7.9 1.4 1.5 3.4 1.5 5.3 0 1.4-.5 2-1.2 2-.5 0-1-.3-1.6-1-.6-.7-1.2-1.7-2-3l-1.1-2c.3-.6.6-1.1.9-1.5.6-.9 1.2-1.5 1.9-1.5Z"})})}function o(e){let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"})})}function l(e){let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.34V8.98h3.42v1.57h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.29ZM5.32 7.41a2.07 2.07 0 1 1 0-4.13 2.07 2.07 0 0 1 0 4.13ZM7.1 20.45H3.54V8.98H7.1v11.47Z"})})}function s(e){let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z",fill:"#4285F4"}),(0,a.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,a.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,a.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})}n(12115)},20120:(e,t,n)=>{n.d(t,{$v:()=>f,EO:()=>u,Lt:()=>l,Rx:()=>m,Zr:()=>y,ck:()=>_,r7:()=>g,tv:()=>s,wd:()=>p});var a=n(95155),r=n(12115),i=n(35646),o=n(25016);let l=i.bL,s=i.l9,c=e=>{let{...t}=e;return(0,a.jsx)(i.ZL,{...t})};c.displayName=i.ZL.displayName;let d=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsx)(i.hJ,{className:(0,o.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:t})});d.displayName=i.hJ.displayName;let u=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsxs)(c,{children:[(0,a.jsx)(d,{}),(0,a.jsx)(i.UC,{ref:t,className:(0,o.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rou
1nded-lg md:w-full",n),...r})]})});u.displayName=i.UC.displayName;let p=e=>{let{className:t,...n}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...n})};p.displayName="AlertDialogHeader";let _=e=>{let{className:t,...n}=e;return(0,a.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...n})};_.displayName="AlertDialogFooter";let g=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsx)(i.hE,{ref:t,className:(0,o.cn)("text-lg font-semibold",n),...r})});g.displayName=i.hE.displayName;let f=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsx)(i.VY,{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",n),...r})});f.displayName=i.VY.displayName;let m=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsx)(i.rc,{ref:t,className:(0,o.cn)("inline-flex h-10 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground ring-offset-background transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 cursor-pointer",n),...r})});m.displayName=i.rc.displayName;let y=r.forwardRef((e,t)=>{let{className:n,...r}=e;return(0,a.jsx)(i.ZD,{ref:t,className:(0,o.cn)("mt-2 inline-flex h-10 items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 sm:mt-0 cursor-pointer",n),...r})});y.displayName=i.ZD.displayName},21296:(e,t,n)=>{n.d(t,{js:()=>o});var a=n(8525);async function r(e){try{var t;{let t=localStorage.getItem("currentOrganizationId");if(t){let{data:n}=await a.supabase.from("organization_members").select("organization_id").eq("user_id",e).eq("organization_id",t).single();if(n)return t}}let{data:n}=await a.supabase.from("organization_members").select("organization_id").eq("user_id",e).order("joined_at",{ascending:!1}).limit(1);return(null==n||null==(t=n[0])?void 0:t.organization_id)||null}catch(e){return console.error("Error getting current organization:",e),null}}async function i(e){let{data:t}=await a.supabase.from("organization_members").select("organization_id").eq("user_id",e).limit(1).single();if(null==t?void 0:t.organization_id)return t.organization_id;let{data:n,error:r}=await a.supabase.from("organizations").insert({name:"My Organization",slug:"org_".concat(e.replace(/-/g,"")),owner_id:e}).select().single();if(r||!n)throw Error("Failed to create default organization");return await a.supabase.from("organization_members").insert({organization_id:n.id,user_id:e,role:"owner"}),n.id}async function o(e){if(!(null==e?void 0:e.id))return null;let t=await r(e.id);if(!t){let t=await i(e.id);return{userId:e.id,organizationId:t}}return{userId:e.id,organizationId:t}}}
1,25698:(e,t,n)=>{n.d(t,{v:()=>d});var a=n(12115),r=n(82734),i=n(24460),o=n(95458),l=n(60673),s=n(83875),c=n(38535);function d(){let{currentOrganization:e,organizationAccounts:t,selectedAccount:n,selectedPlatform:d,isLoading:u,isSwitchingOrganization:p,isLoadingAccounts:_,isLoadingPlatformPreference:g}=(0,r.Z5)(),f=(0,c.$)(e=>e.isLoadingAccount),m=(0,c.$)(e=>e.explicitAccountSelections);return(0,a.useMemo)(()=>{var a,r;return function(e){var t,n,a;let{currentOrganizationId:r,currentOrganizationName:l,organizationAccounts:c,selectedAccount:d,selectedPlatform:u,isLoadingOrganization:p,isSwitchingOrganization:_,isLoadingAccounts:g,isLoadingPlatformPreference:f,isLoadingAccount:m,googleTestModeEnabled:y,explicitAccountSelections:v={}}=e;if(!r)return{organizationId:null,platform:null,selectableAccounts:[],selectedAccount:null,accountIdVariants:[],platformStorageVariants:[],isScopeReady:!1,readinessReason:p?"loading-organization":"no-organization"};if(_)return{organizationId:r,platform:null,selectableAccounts:[],selectedAccount:null,accountIdVariants:[],platformStorageVariants:[],isScopeReady:!1,readinessReason:"switching-organization"};if(g)return{organizationId:r,platform:null,selectableAccounts:[],selectedAccount:null,accountIdVariants:[],platformStorageVariants:[],isScopeReady:!1,readinessReason:"loading-accounts"};if(f)return{organizationId:r,platform:null,selectableAccounts:[],selectedAccount:null,accountIdVariants:[],platformStorageVariants:[],isScopeReady:!1,readinessReason:"loading-platform-preference"};let h=r?c.filter(e=>e.organization_id===r):[],b=(0,s.US)(h),x=(0,i.W)({savedPlatform:u,availablePlatforms:b,organizationAccountsCount:h.length,googleTestModeEnabled:y,organizationId:r,organizationName:l});if(!x)return{organizationId:r,platform:null,selectableAccounts:[],selectedAccount:null,accountIdVariants:[],platformStorageVariants:[],isScopeReady:!1,readinessReason:"loading-platform-resolution"};let k=(0,o.Pp)(x,h),w=null!=(t=v["".concat(r,"_").concat(x)])?t:null,N=w&&null!=(n=k.find(e=>e.ad_account_id===w))?n:null,A=(null==d?void 0:d.organization_id)===r?d:null,j=null!==A&&!(0,o.Xi)(A.ad_account_id)&&(0,o.WY)(x,A)&&k.some(e=>e.organization_id===A.organization_id&&e.ad_account_id===A.ad_account_id),I=N||(j?A:(0,o.XH)(x,A,k));if(k.length>0&&!j&&!N&&m)return{organizationId:r,platform:x,selectableAccounts:k,selectedAccount:null,accountIdVariants:[],platformStorageVariants:(0,s.sf)({platform:x}).platformStorageVariants,isScopeReady:!1,readinessReason:"restoring-account"};let S=(0,s.sf)({accountId:null!=(a=null==I?void 0:I.ad_account_id)?a:null,platform:x});return{organizationId:r,platform:x,selectableAccounts:k,selectedAccount:I,accountIdVariants:S.accountIdVariants,platformStorageVariants:S.platformStorageVariants,isScopeReady:!0,readinessReason:I?"ready":"ready-no-account"}}({currentOrganizationId:null!=(a=null==e?void 0:e.id)?a:null,currentOrganizationName:null!=(r=null==e?void 0:e.name)?r:null,organizationAccounts:t,selectedAccount:n,selectedPlatform:d,isLoadingOrganization:u,isSwitchingOrganization:p,isLoadingAccounts:_,isLoadingPlatformPreference:g,isLoadingAccount:f,googleTestModeEnabled:(0,l.isGoogleAdsTestMode)(),explicitAccountSelections:null!=m?m:{}})},[null==e?void 0:e.id,null==e?void 0:e.name,t,n,d,u,p,_,g,f,m])}},30434:(e,t,n)=>{n.d(t,{UY:()=>d});var a=n(33018),r=n.n(a),i=n(95704);n(81029).Buffer,i.env.TOKEN_ENCRYPTION_GCM,r().createHash("sha256").update("default-dev-key-do-not-use-in-production").digest();let o=e=>r().createHash("sha256").update(e).digest(),l=i.env.TOKEN_ENCRYPTION_KEY?o(i.env.TOKEN_ENCRYPTION_KEY):null,s=i.env.PREVIOUS_TOKEN_ENCRYPTION_KEY?o(i.env.PREVIOUS_TOKEN_ENCRYPTION_KEY):null;l&&r().createHash("md5").update(l).digest("hex").substring(0,8),s&&r().createHash("md5").update(s).digest("hex").substring(0,8);let c=e=>/^[0-9a-f]+$/i.test(e);function d(e){return null===function(e){let t,n,a,r=e.split(":");if(4===r.length){let[e,t,n,a]=r;return"v3"===e.toLowerCase()&&c(t)&&24===t.length&&c(n)&&32===n.length&&c(a)&&0!==a.length?{version:"v3",cipher:"gcm",ivHex:t,tagHex:n,encryptedHex:a}:null}if(2===r.length)[n,a]=r,t="v1";else if(3!==r.length)return null;else if([t,n,a]=r,!/^v\d+$/i.test(t))return null;return c(n)&&32===n.length&&c(a)&&0!==a.length?{version:t.toLowerCase(),cipher:"cbc",ivHex:n,encryptedHex:a}:null}(e)||console.warn("[token-encryption] Cannot decrypt token client-side - encryption key not available"),e}}
1,33789:(e,t,n)=>{n.d(t,{p:()=>i});var a=n(95155);n(12115);var r=n(25016);function i(e){let{className:t,type:n,...i}=e,o=null==t?void 0:t.includes("form-field-white-bg");return(0,a.jsx)("input",{type:n,"data-slot":"input",className:(0,r.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",!o&&"bg-transparent dark:bg-input/30","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",t),...i})}},36742:(e,t,n)=>{n.d(t,{G7:()=>s,L$:()=>u,h_:()=>p,oI:()=>c,uB:()=>l,xL:()=>d});var a=n(95155);n(12115);var r=n(41808),i=n(86651),o=n(25016);function l(e){let{className:t,...n}=e;return(0,a.jsx)(r.uB,{"data-slot":"command",className:(0,o.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",t),...n})}function s(e){let{className:t,...n}=e;return(0,a.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,a.jsx)(i.A,{className:"size-4 shrink-0 opacity-50"}),(0,a.jsx)(r.uB.Input,{"data-slot":"command-input",className:(0,o.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t),...n})]})}function c(e){let{className:t,...n}=e;return(0,a.jsx)(r.uB.List,{"data-slot":"command-list",className:(0,o.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",t),...n})}function d(e){let{...t}=e;return(0,a.jsx)(r.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...t})}function u(e){let{className:t,...n}=e;return(0,a.jsx)(r.uB.Group,{"data-slot":"command-group",className:(0,o.cn)("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",t),...n})}function p(e){let{className:t,...n}=e;return(0,a.jsx)(r.uB.Item,{"data-slot":"command-item",className:(0,o.cn)("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...n})}n(54679)},46276:(e,t,n)=>{n.d(t,{dj:()=>u,oR:()=>d});var a=n(12115);let r=0,i=new Map,o=e=>{if(i.has(e))return;let t=setTimeout(()=>{i.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);i.set(e,t)},l=[],s={toasts:[]};function c(e){s=((e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,5)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:n}=t;return n?o(n):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===n||void 0===n?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}})(s,e),l.forEach(e=>{e(s)})}function d(e){let{...t}=e,n=(r=(r+1)%Number.MAX_VALUE).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:n});return c({type:"ADD_TOAST",toast:{...t,id:n,open:!0,onOpenChange:e=>{e||a()}}}),{id:n,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:n}})}}function u(){let[e,t]=a.useState(s);return a.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:d,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},51269:(e,t,n)=>{n.d(t,{Y:()=>m});var a=n(95155);n(12115);var r=n(20063),i=n(65555),o=n(60673),l=n(97003),s=n(83209),c=n(25016),d=n(67333),u=n(6191),p=n(18953),_=n(92853);let g={meta:function(e){let{className:t}=e;
1return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z"})})},tiktok:function(e){let{className:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"currentColor",className:t,"aria-hidden":"true",children:(0,a.jsx)("path",{d:"M19.59 6.69a4.83 4.83 0 0 1-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 0 1-5.2 1.74 2.89 2.89 0 0 1 2.31-4.64 2.93 2.93 0 0 1 .88.13V9.4a6.84 6.84 0 0 0-1-.05A6.33 6.33 0 0 0 5 20.1a6.34 6.34 0 0 0 10.86-4.43v-7a8.16 8.16 0 0 0 4.77 1.52v-3.4a4.85 4.85 0 0 1-1-.1z"})})},google:function(e){let{className:t}=e;return(0,a.jsxs)("svg",{viewBox:"0 0 24 24",className:t,"aria-hidden":"true",children:[(0,a.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z",fill:"#4285F4"}),(0,a.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,a.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,a.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]})},twitter:p.uv,linkedin:d.A},f={meta:"Connect your Meta (Facebook/Instagram) ad account to manage campaigns, view analytics, and sync performance data.",tiktok:"Connect your TikTok Ads account to manage campaigns, track conversions, and analyze performance.",google:"Connect your Google Ads account to manage campaigns, monitor performance, and optimize spend.",twitter:"X Ads support is currently available only through the pre-release connection gate.",linkedin:"Connect your LinkedIn Ads account to sync campaigns, ads, and daily performance data."};function m(e){let{platform:t,className:n,compact:d=!1}=e,p=(0,r.useRouter)();if("google"===t&&(0,o.isGoogleAdsTestMode)())return console.log("[PlatformEmptyState] Bypassing empty state for Google test mode"),null;let m=i.Y_[t],y=g[t],v=f[t],h=()=>{p.push("/settings#organization")};return d?(0,a.jsxs)("div",{className:(0,c.cn)("flex items-center gap-3 p-4 rounded-lg border bg-muted/30",n),children:[(0,a.jsx)("div",{className:(0,c.cn)("p-2 rounded-lg bg-muted",m.color),children:(0,a.jsx)(y,{className:"h-5 w-5"})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsxs)("p",{className:"text-sm font-medium",children:["No ",m.shortName," accounts"]}),(0,a.jsxs)("p",{className:"text-xs text-muted-foreground truncate",children:["Connect to start managing ",m.shortName," ads"]})]}),(0,a.jsxs)(l.$,{size:"sm",variant:"outline",onClick:h,children:[(0,a.jsx)(u.A,{className:"h-4 w-4 mr-1"}),"Connect"]})]}):(0,a.jsx)(s.Zp,{className:(0,c.cn)("border-dashed",n),children:(0,a.jsxs)(s.Wu,{className:"flex flex-col items-center justify-center py-12 px-6 text-center",children:[(0,a.jsx)(_.Le,{state:"thinking",size:112,skin:(0,_.
1EP)(t),className:"mb-4",fallback:(0,a.jsx)("div",{className:(0,c.cn)("p-4 rounded-full bg-muted mb-4",m.color),children:(0,a.jsx)(y,{className:"h-10 w-10"})})}),(0,a.jsxs)("h3",{className:"text-lg font-semibold mb-2",children:["No ",m.displayName," Connected"]}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground max-w-md mb-6",children:v}),(0,a.jsxs)(l.$,{onClick:h,variant:"google"===t?"outline":"default",className:(0,c.cn)("tiktok"===t&&"bg-black hover:bg-black/90","meta"===t&&"bg-blue-600 hover:bg-blue-700","google"===t&&"bg-white dark:bg-card hover:bg-gray-50 text-gray-800 dark:text-foreground border-gray-300 dark:border-border"),children:[(0,a.jsx)(y,{className:"h-4 w-4 mr-2"}),"Connect ",m.shortName," Account"]})]})})}},52825:(e,t,n)=>{n.d(t,{Gb:()=>r,Hf:()=>p,JM:()=>u,Q9:()=>l,pi:()=>d});let a="cec_",r="pixel_custom_all",i="pixel_custom_all_value",o="pixel_custom_all_cpa",l="Custom Conversions",s="_value",c="_cpa";function d(e){return e.startsWith("cc_")||e.startsWith("ce_")||e.startsWith(a)||e===r||e===i||e===o}function u(e){return e.startsWith(a)?"cpa":e.startsWith("ce_")?"count":e.startsWith("cc_")?e.endsWith(c)?"cpa":e.endsWith(s)?"value":"count":e===o?"cpa":e===i?"value":e===r?"count":null}function p(e){return e.startsWith(a)?"".concat("ce_").concat(e.slice(a.length)):e.startsWith("cc_")?e.endsWith(c)?e.slice(0,-c.length):e.endsWith(s)?e.slice(0,-s.length):e:e===o||e===i?r:e}},54679:(e,t,n)=>{n.d(t,{Cf:()=>p,Es:()=>g,HM:()=>d,L3:()=>f,c7:()=>_,lG:()=>l,rr:()=>m,zM:()=>s});var a=n(95155);n(12115);var r=n(89511),i=n(65229),o=n(25016);function l(e){let{...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"dialog",...t})}function s(e){let{...t}=e;return(0,a.jsx)(r.l9,{"data-slot":"dialog-trigger",...t})}function c(e){let{...t}=e;return(0,a.jsx)(r.ZL,{"data-slot":"dialog-portal",...t})}function d(e){let{...t}=e;return(0,a.jsx)(r.bm,{"data-slot":"dialog-close",...t})}function u(e){let{className:t,...n}=e;return(0,a.jsx)(r.hJ,{"data-slot":"dialog-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...n})}function p(e){let{className:t,children:n,...l}=e;return(0,a.jsxs)(c,{"data-slot":"dialog-portal",children:[(0,a.jsx)(u,{}),(0,a.jsxs)(r.UC,{"data-slot":"dialog-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...l,children:[n,(0,a.jsxs)(r.bm,{className:"modal-close-sticky ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(i.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function _(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,o.cn)("flex flex-col gap-2 text-center sm:text-left",t),...n})}function g(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,o.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...n})}function f(e){let{className:t,...n}=e;return(0,a.jsx)(r.hE,{"data-slot":"dialog-title",className:(0,o.cn)("text-lg leading-none font-semibold",t),...n})}function m(e){let{className:t,...n}=e;return(0,a.jsx)(r.VY,{"data-slot":"dialog-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...n})}},65555:(e,t,n)=>{n.d(t,{Y_:()=>a});let a={meta:{id:"meta",displayName:"Meta (Facebook/Instagram)",shortName:"Meta",color:"text-[#0064E0]",bgColor:"bg-[#0064E0]",icon:"meta"},tiktok:{id:"tiktok",displayName:"TikTok Ads",shortName:"TikTok",color:"text-[#FE2C55]",bgColor:"bg-[#FE2C55]",icon:"tiktok"},google:{id:"google",displayName:"Google Ads",shortName:"Google",color:"text-[#4285F4]",bgColor:"bg-[#4285F4]",icon:"google"},twitter:{id:"twitter",displayName:"X",shortName:"X",color:"text-black dark:text-white",bgColor:"bg-black dark:bg-white",icon:"twitter"},linkedin:{id:"linkedin",displayName:"LinkedIn",shortName:"LinkedIn",color:"text-[#0A66C2]",bgColor:"bg-[#0A66C2]",icon:"linkedin"}}},73657:(e,t,n)=>{n.d(t,{a:()=>T});var a=n(12115),r=n(8525),i=n(38621),o=n(83875),l=n(30434);async function s(e,t){try{let n=r.supabase.from("organization_accounts").select("access_token, ad_account_id").eq("organization_id",e).eq("platform","meta").eq("is_active",!0);t&&(n=n.in("ad_account_id",(0,o._3)(t,"meta")));let{data:a,error:i}=await n.order("is_primary",{ascending:!1}).order("created_at",{ascending:!0}).limit(1).single();if(i||!a)return console.error("[ApiConfiguration] Failed to get API configuration from database:",i),null;if(!a.access_token)return console.error("[ApiConfiguration] Account has no stored access token (not c
1onnected)"),null;let s=(0,l.UY)(a.access_token);if(!s)return console.error("[ApiConfiguration] Failed to decrypt access token"),null;return{accessToken:s,adAccountId:a.ad_account_id}}catch(e){return console.error("[ApiConfiguration] Error getting API configuration:",e),null}}var c=n(7438);let d={ACCOUNT_ID:{field:"account_id",type:"string",category:"identity",description:"Ad account ID"},ACCOUNT_NAME:{field:"account_name",type:"string",category:"identity",description:"Ad account name"},CAMPAIGN_ID:{field:"campaign_id",type:"string",category:"identity",description:"Campaign ID"},ADSET_ID:{field:"adset_id",type:"string",category:"identity",description:"Ad set ID",dbColumn:"ad_set_id"},AD_ID:{field:"ad_id",type:"string",category:"identity",description:"Ad ID"},DATE_START:{field:"date_start",type:"string",category:"metadata",description:"Start date of the reporting period"},DATE_STOP:{field:"date_stop",type:"string",category:"metadata",description:"End date of the reporting period"},SPEND:{field:"spend",type:"currency",category:"core",description:"Amount spent during the period"},IMPRESSIONS:{field:"impressions",type:"integer",category:"core",description:"Number of times ads were shown"},CLICKS:{field:"clicks",type:"integer",category:"core",description:"Total number of clicks"},REACH:{field:"reach",type:"integer",category:"core",description:"Number of unique people who saw ads"},FREQUENCY:{field:"frequency",type:"float",category:"core",description:"Average number of times each person saw ads"},CPM:{field:"cpm",type:"currency",category:"core",description:"Cost per 1,000 impressions"},CPC:{field:"cpc",type:"currency",category:"core",description:"Cost per click"},CTR:{field:"ctr",type:"percentage",category:"core",description:"Click-through rate"},INLINE_LINK_CLICKS:{field:"inline_link_clicks",type:"integer",category:"click",description:"Clicks on links to destinations"},INLINE_LINK_CLICK_CTR:{field:"inline_link_click_ctr",type:"percentage",category:"click",description:"Inline link click-through rate"},COST_PER_INLINE_LINK_CLICK:{field:"cost_per_inline_link_click",type:"currency",category:"click",description:"Average cost per inline link click"},UNIQUE_CLICKS:{field:"unique_clicks",type:"integer",category:"click",description:"Number of unique people who clicked"},UNIQUE_CTR:{field:"unique_ctr",type:"percentage",category:"click",description:"Unique click-through rate"},UNIQUE_INLINE_LINK_CLICKS:{field:"unique_inline_link_clicks",type:"integer",category:"click",description:"Unique inline link clicks",dbColumn:"unique_inline_link_clicks"},VIDEO_P25_WATCHED:{field:"video_p25_watched_actions",type:"action_array",category:"video",description:"Number of times video played to 25%"},VIDEO_P50_WATCHED:{field:"video_p50_watched_actions",type:"action_array",category:"video",description:"Number of times video played to 50%"},VIDEO_P75_WATCHED:{field:"video_p75_watched_actions",type:"action_array",category:"video",description:"Number of times video played to 75%"},VIDEO_P95_WATCHED:{field:"video_p95_watched_actions",type:"action_array",category:"video",description:"Number of times video played to 95%"},VIDEO_P100_WATCHED:{field:"video_p100_watched_actions",type:"action_array",category:"video",description:"Number of times video played to completion"},VIDEO_AVG_TIME_WATCHED:{field:"video_avg_time_watched_actions",type:"action_array",category:"video",description:"Average time spent watching video"},VIDEO_PLAY_ACTIONS:{field:"video_play_actions",type:"action_array",category:"video",description:"Number of video plays"},ACTIONS:{field:"actions",type:"actions",category:"conversion",description:"All conversion actions"},ACTION_VALUES:{field:"action_values",type:"jsonb",category:"conversion",description:"Values associated with actions"},COST_PER_ACTION_TYPE:{field:"cost_per_action_type",type:"jsonb",category:"conversion",description:"Cost per action by type"},UNIQUE_ACTIONS:{field:"unique_actions",type:"jsonb",category:"conversion",description:"Unique conversion actions"},INSTAGRAM_PROFILE_VISITS:{field:"instagram_profile_visits",type:"integer",category:"engagement",description:"Number of Instagram profile visits - direct API field"}};function u(e){return Array.isArray(e)&&e.every(e=>"object"==typeof e&&null!==e&&"action_type"in e&&"value"in e)}function p(e){if(!e)return null;let t=g(e);return Number.isNaN(t)?null:t}function _(e){if(!e)return null;let t=parseInt(e,10);return Number.isNaN(t)?null:t}function g(e){if(!e)return null;let t=Number.parseFloat(e);return Number.isNaN(t)?null:t}let f={currency:e=>p(e),integer:e=>_(e),float:e=>g(e),percentage:e=>g(e),string:e=>e||null,ranking:e=>e||null,action_array:function(e){var t;return Array.isArray(e)&&e.length>0&&"object"==typeof e[0]&&"value"in e[0]?_(null==(t=e[0])?void 0:t.value):null},actions:function(e){if(!(Array.isArray(e)&&e.every(e=>"object"==typeof e&&null!==e&&"action_type"in e&&"value"in e)))return null;let t={};
1return e.forEach(e=>{let n=_(e.value);null!==n&&(t[e.action_type]=(t[e.action_type]||0)+n)}),Object.keys(t).length>0?t:null},jsonb:function(e){if(u(e)){if(!u(e))return null;let t={};return e.forEach(e=>{let n=p(e.value);null!==n&&(t[e.action_type]=n)}),Object.keys(t).length>0?t:null}return"object"==typeof e&&null!==e?JSON.parse(JSON.stringify(e)):null}};function m(e,t){var n,a,r,i,o,l;let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!Array.isArray(e))return 0;let c=Array.isArray(t)?t:[t];if(!s){for(let t of c){let i=e.find(e=>e.action_type===t);if(i){let e=parseFloat(String(null!=(r=null!=(a=null!=(n=i.value)?n:i["1d_click"])?a:i["7d_click"])?r:"0"));return isNaN(e)?0:e}}return 0}let d=0;for(let t of c){let n=e.find(e=>e.action_type===t);if(n){let e=parseFloat(String(null!=(l=null!=(o=null!=(i=n.value)?i:n["1d_click"])?o:n["7d_click"])?l:"0"));d+=isNaN(e)?0:e}}return d}var y=n(52825);let v="offsite_conversion.custom.",h="custom_event_actions_";var b=n(21296);let x={campaign:{fields:"id,name,status,objective",tableName:"campaigns"},ad_set:{fields:"id,name,status,campaign_id,optimization_goal",tableName:"ad_sets"},ad:{fields:"id,name,status,adset_id,campaign_id,creative{id}",tableName:"ads"}};async function k(e,t,n,a,i){console.log("[EntitySync] Syncing ".concat(e," with IDs:"),t);let{data:{user:o},error:l}=await r.supabase.auth.getUser();if(l||!o)return a("Authentication error: ".concat((null==l?void 0:l.message)||"User not found.")),console.error("[EntitySync] Auth error",l),{success:!1};let c=await (0,b.js)(o);if(!c)return a("Failed to get organization context"),{success:!1};let{userId:d}=c,u=(null==i?void 0:i.organizationId)||c.organizationId;n("Syncing new ".concat(e,"...")),a(null);try{let r=await s(u,null==i?void 0:i.adAccountId);if(!r)throw Error("Failed to get API configuration. Please connect an account in settings.");let{accessToken:o,adAccountId:l}=r,c=await w(e,t,o);if(0===c.length)return a("Could not fetch ".concat(e," data from Meta API")),{success:!1};return await N(e,c,d,u,l),"ad"===e&&await A(t,o,d,u,l,n),n("Successfully synced ".concat(c.length," ").concat(e,"(s)")),{success:!0}}catch(t){return console.error("[EntitySync] Failed:",t),a("Error syncing ".concat(e,": ").concat(t instanceof Error?t.message:"Unknown error")),{success:!1}}}async function w(e,t,n){let a=x[e],r=t.map(async e=>{let t="https://graph.facebook.com/".concat(c.mG,"/").concat(e,"?fields=").concat(a.fields,"&access_token=").concat(n);try{let n=await fetch(t),a=await n.json();if(a.error)return console.error("[EntitySync] API error for ".concat(e,":"),a.error),null;return a}catch(t){return console.error("[EntitySync] Fetch error for ".concat(e,":"),t),null}});return(await Promise.all(r)).filter(e=>null!==e)}async function N(e,t,n,a,i){let o=String(i).replace(/^act_/,"");if("campaign"===e){let e=t.map(e=>({campaign_id:e.id,user_id:n,organization_id:a,ad_account_id:o,name:e.name,status:e.status,objective:e.objective})),{error:i}=await r.supabase.from("campaigns").upsert(e,{onConflict:"campaign_id,organization_id"});if(i)throw console.error("[EntitySync] Error upserting campaigns:",i),Error("Failed to save campaign: ".concat(i.message))}else if("ad_set"===e){let{data:{session:e}}=await r.supabase.auth.getSession(),n=null==e?void 0:e.access_token;for(let e of t){let t=await fetch("/api/adsets/save",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:"Bearer ".concat(n)}:{}},body:JSON.stringify({adSetId:e.id,adSetData:e,campaignId:e.campaign_id,adAccountId:o,organizationId:a}),credentials:"include"});if(!t.ok){let e=await t.json().catch(()=>({}));throw console.error("[EntitySync] Error saving ad set via API:",e),Error((null==e?void 0:e.error)||"Failed to save ad set")}}}else if("ad"===e){let{data:{session:e}}=await r.supabase.auth.getSession(),n=null==e?void 0:e.access_token;for(let e of t){var l,s,c,d,u,p,_,g,f,m,y,v,h,b,x,k,w,N,A,j,I,S,C,E,z;let t=(null==e||null==(l=e.creative)?void 0:l.object_story_spec)||null,r=null==t?void 0:t.link_data,i=null==t?void 0:t.video_data,T={primaryText:null!=(d=null!=(c=null==r?void 0:r.message)?c:null==i?void 0:i.message)?d:null,headline:null!=(u=null==r?void 0:r.name)?u:null,description:null!=(p=null==r?void 0:r.description)?p:null,websiteUrl:null!=(g=null!=(_=null==r?void 0:r.link)?_:null==e?void 0:e.website_url)?g:null,displayLink:null!=(m=null!=(f=null==r?void 0:r.display_link)?f:null==e?void 0:e.display_link)?m:null,callToAction:null!=(v=null!=(y=null==r||null==(s=r.call_to_action)?void 0:s.type)?y:null==e?void 0:e.call_to_action_type)?v:null,pageId:null!=(b=null!=(h=null==t?void 0:t.page_id)?h:null==e?void 0:e.page_id)?b:null,pageName:null!=(x=null==e?void 0:e.fb_page_name)?x:null,pageLogoUrl:null!=(k=null==e?void 0:e.page_logo_url)?k:null,facebookUsername:null!=(w=null==e?void 0:e.facebook_username)?w:null,instagramUsername:null!=(N=null==e?void 0:e.instagram_username)?N:null,adFormat:null!=(A=null==e?void 0:e.ad_format)?A:null,imageUrl:null!=(I=null!=(j=null==r?void 0:r.picture)?j:null==e?void 0:e.image_url)?I:null,thumbnailUrl:null!=(S=null==e?void 0:e.thumbnail_url)?S:null,videoId:null!=(E=null!=(C=null==i?void 0:i.video_id)?C:null==e?void 0:e.video_id)?E:null,videoUrl:null!=(z=null==e?void 0:e.video_url)?z:null},M=await fetch("/api/ads/save",{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:"Bearer ".concat(n)}:{}}
1,body:JSON.stringify({adId:String(e.id),adData:e,campaignId:String(e.campaign_id),adSetId:String(e.adset_id),adAccountId:o,organizationId:a,adMetadata:T}),credentials:"include"});if(!M.ok){let e=await M.json().catch(()=>({}));throw console.error("[EntitySync] Error saving ad via API:",e),Error((null==e?void 0:e.error)||"Failed to save ad")}}}}async function A(e,t,n,a,o,l){let s=(0,i.GP)(new Date,"yyyy-MM-dd");for(let i of(l("Fetching initial metrics for ads..."),e)){let e="https://graph.facebook.com/".concat(c.mG,"/").concat(i,"/insights?fields=impressions,spend,clicks,reach,inline_link_clicks,unique_inline_link_clicks,conversions,actions,action_values&time_range={'since':'").concat(s,"','until':'").concat(s,"'}&access_token=").concat(t);try{let t=await fetch(e),l=await t.json();if(l.data&&l.data.length>0){let e=l.data[0],t=function(e,t,n,a,r){var i,o,l,s,c,u,p,g,b,x,k,w,N,A,j,I,S,C,E,z,T,M;let O=function(e){let t={...e};if(Object.assign(t,function(e){let t={};return e.actions&&(t.landing_page_views=m(e.actions,"landing_page_view"),t.adds_to_cart=m(e.actions,["add_to_cart","omni_add_to_cart"]),t.checkouts_initiated=m(e.actions,"initiate_checkout"),t.purchases=m(e.actions,["purchase","omni_purchase"])),t}(e)),void 0!==e.instagram_profile_visits&&(t.instagram_profile_visits=parseInt(String(e.instagram_profile_visits))||0),Object.assign(t,function(e){let t={};return e.video_play_actions&&(t.video_views=m(e.video_play_actions,"video_view"),!t.video_views&&Array.isArray(e.video_play_actions)&&(t.video_views=e.video_play_actions.reduce((e,t)=>{let n=parseFloat(String(t.value||"0"));return e+(isNaN(n)?0:n)},0))),e.video_thruplay_watched_actions&&(t.thruplay_actions=m(e.video_thruplay_watched_actions,"video_view"),!t.thruplay_actions&&Array.isArray(e.video_thruplay_watched_actions)&&(t.thruplay_actions=e.video_thruplay_watched_actions.reduce((e,t)=>{let n=parseFloat(String(t.value||"0"));return e+(isNaN(n)?0:n)},0))),t}(e)),Object.assign(t,function(e){let t={};if(e.targeting){if(e.targeting.age_min||e.targeting.age_max){let n=e.targeting.age_min||18,a=e.targeting.age_max||65;t.age_targeting="".concat(n,"-").concat(a)}e.targeting.genders&&Array.isArray(e.targeting.genders)?t.gender_targeting=e.targeting.genders.join(","):e.targeting.gender&&(t.gender_targeting=e.targeting.gender)}return t}(e)),Object.assign(t,function(e){let t={};if(e.cost_per_thruplay)t.cost_per_thruplay_action=parseFloat(String(e.cost_per_thruplay));else if(e.spend&&e.video_thruplay_watched_actions){let n=m(e.video_thruplay_watched_actions,"video_view");n>0&&(t.cost_per_thruplay_action=e.spend/n)}t.purchase_value=e.action_values&&Array.isArray(e.action_values)?m(e.action_values,["purchase","omni_purchase"]):0;let n=function(e){let t={};if(!e.cost_per_action_type||!Array.isArray(e.cost_per_action_type))return t;for(let{type:n,label:a}of[{type:"purchase",label:"Purchase"},{type:"omni_purchase",label:"Purchase"},{type:"add_to_cart",label:"Add to Cart"},{type:"omni_add_to_cart",label:"Add to Cart"},{type:"landing_page_view",label:"Landing Page View"},{type:"link_click",label:"Link Click"},{type:"post_engagement",label:"Post Engagement"},{type:"page_engagement",label:"Page Engagement"},{type:"video_view",label:"Video View"}]){let r=e.cost_per_action_type.find(e=>e.action_type===n);if(r&&r.value){t.cost_per_result=parseFloat(String(r.value))||0,t.cost_per_result_type=a;break}}return t}(e);return n.cost_per_result&&(t.cost_per_result=n.cost_per_result,t.cost_per_result_type=n.cost_per_result_type),t}(e)),t.purchase_attribution_breakdown=function(e){var t,n;let a;if(!e.actions||!Array.isArray(e.actions))return null;let r=e.actions.find(e=>"purchase"===e.action_type);if(r||(r=e.actions.find(e=>"omni_purchase"===e.action_type)),!r)return null;let i=r.action_type;e.action_values&&Array.isArray(e.action_values)&&(a=e.action_values.find(e=>e.action_type===i));let o={},l=0,s=0;for(let e of["7d_click","1d_view","1d_ev"]){let t=r[e];if(null==t)continue;let n=parseFloat(String(t));if(isNaN(n)||0===n)continue;let i=0;if(a){let t=a[e];if(null!=t){let e=parseFloat(String(t));isNaN(e)||(i=e)}}o[e]={purchases:n,value:i},l+=n,s+=i}if(0===l)return null;
1let c=parseFloat(String(null!=(t=r.value)?t:"0")),d=a?parseFloat(String(null!=(n=a.value)?n:"0")):0;return o.total={purchases:isNaN(c)?l:c,value:isNaN(d)?s:d},o}(e),!t.purchase_roas||"number"!=typeof t.purchase_roas){let n=0;e.website_purchase_roas&&(Array.isArray(e.website_purchase_roas)?n=m(e.website_purchase_roas,["purchase","omni_purchase"]):"number"==typeof e.website_purchase_roas?n=e.website_purchase_roas:"string"==typeof e.website_purchase_roas&&(n=parseFloat(e.website_purchase_roas)||0)),!n&&e.mobile_app_purchase_roas&&(Array.isArray(e.mobile_app_purchase_roas)?n=m(e.mobile_app_purchase_roas,["purchase","omni_purchase"]):"number"==typeof e.mobile_app_purchase_roas?n=e.mobile_app_purchase_roas:"string"==typeof e.mobile_app_purchase_roas&&(n=parseFloat(e.mobile_app_purchase_roas)||0)),!n&&e.purchase_roas&&(Array.isArray(e.purchase_roas)?n=m(e.purchase_roas,["purchase","omni_purchase"]):"number"==typeof e.purchase_roas?n=e.purchase_roas:"string"==typeof e.purchase_roas&&(n=parseFloat(e.purchase_roas)||0)),!n&&t.purchase_value&&t.spend&&t.spend>0&&(n=t.purchase_value/t.spend),t.purchase_roas=n}return t}(e),D=function(e,t){let n={};return(t||Object.values(d)).forEach(t=>{let a=t.field,r="dbColumn"in t&&t.dbColumn?t.dbColumn:a;if(a in e){let i=e[a],o=f[t.type];if(o)try{let e=o(i);null!=e&&(n[r]=e)}catch(e){console.warn("Failed to parse field ".concat(a," with type ").concat(t.type,":"),e)}else console.warn("No parser found for type ".concat(t.type))}}),n}(O,a),P=D.impressions||0,L=D.clicks||0,R=D.spend||0,V=D.reach||null,F=D.inline_link_clicks||null,U=null!=(i=O.purchases)?i:0,q=null!=(o=O.adds_to_cart)?o:0,H=null!=(l=O.checkouts_initiated)?l:0,B=D.actions;if(!(U>0)&&!(q>0)&&!(H>0)&&0===P&&0===L&&0===R&&(null===V||0===V)&&(null===F||0===F)&&!(B&&Object.entries(B).some(e=>{let[t,n]=e;return"number"==typeof n&&n>0&&null!==function(e){if("offsite_conversion.fb_pixel_custom"===e)return{family:"pixel_custom_all",key:y.Gb};if(e.startsWith(v)){let t=e.slice(v.length);return/^\d+$/.test(t)?{family:"custom_conversion",key:t}:null}if(e.startsWith(h)){let t=e.slice(h.length);return t?{family:"custom_event",key:t}:null}return null}(t)})))return .01>Math.random()&&console.log("[MetricsProcessor] Skipping zero-value metrics record (sample):",{campaign_id:D.campaign_id,ad_id:D.ad_id,date:D.date_start}),null;let W=function(e){if(!Array.isArray(e))return null;for(let t of["inline_link_click","link_click","outbound_click"]){let n=e.find(e=>(null==e?void 0:e.action_type)===t);if(n&&n.value)return _(n.value)}return null}(O.unique_actions),G={p25:D.video_p25_watched_actions||null,p50:D.video_p50_watched_actions||null,p75:D.video_p75_watched_actions||null,p95:D.video_p95_watched_actions||null,p100:D.video_p100_watched_actions||null,avg_time:D.video_avg_time_watched_actions||null,plays:D.video_play_actions||null},Y=null!=(s=O.landing_page_views)?s:0,K=null!=(c=O.thruplay_actions)?c:0,Z=null!=(u=O.adds_to_cart)?u:0,J=null!=(p=O.checkouts_initiated)?p:0,$=null!=(g=O.purchases)?g:0,Q=null!=(b=O.purchase_value)?b:0,X=function(e){let t=e.impressions||0,n=e.clicks||0,a=e.spend||0,r=e.unique_clicks||null;return{ctr:t>0?n/t:null,cpc:n>0?a/n:null,cost_per_unique_click:r&&r>0?a/r:null}}(D),ee=null!=(x=O.purchase_roas)?x:R>0&&Q>0?Q/R:0,et={user_id:t,organization_id:r,ad_account_id:String(n),campaign_id:D.campaign_id?String(D.campaign_id):null,ad_set_id:D.ad_set_id?String(D.ad_set_id):null,ad_id:D.ad_id?String(D.ad_id):null,date_start:D.date_start||"",date_stop:D.date_stop||"",account_name:D.account_name||"",impressions:P,clicks:L,spend:R,reach:D.reach||null,frequency:D.frequency||null,ctr:X.ctr||null,cpc:X.cpc||null,cpm:D.cpm||null,inline_link_clicks:D.inline_link_clicks||null,unique_inline_link_clicks:W,inline_link_click_ctr:D.inline_link_click_ctr||null,cost_per_inline_link_click:D.cost_per_inline_link_click||null,unique_clicks:D.unique_clicks||null,unique_ctr:D.unique_ctr||null,cost_per_unique_click:X.cost_per_unique_click||null,landing_page_views:Y,instagram_profile_visits:null!=(k=O.instagram_profile_visits)?k:D.instagram_profile_visits||0,adds_to_cart:Z,checkouts_initiated:J,purchases:$,purchase_value:Q,purchase_roas:ee,actions:B,action_values:D.action_values||null,video_views:G,cost_per_action_type:D.cost_per_action_type||null,cost_per_result:null!=(w=O.cost_per_result)?w:null,cost_per_result_type:null!=(N=O.cost_per_result_type)?N:null,thruplay_actions:K,cost_per_thruplay_action:null!=(A=O.cost_per_thruplay_action)?A:null,video_p25_watched_actions:G.p25,video_p50_watched_actions:G.p50,video_p75_watched_actions:G.p75,video_p95_watched_actions:G.p95,video_p100_watched_actions:G.p100,video_avg_time_watched_actions:G.avg_time,video_play_actions:null!=(j=O.video_views)?j:G.plays,quality_ranking:D.quality_ranking||null,engagement_rate_ranking:D.engagement_rate_ranking||null,conversion_rate_ranking:D.conversion_rate_ranking||null,attribution_setting:D.attribution_setting||O.attribution_setting||null,purchase_attribution_breakdown:O.purchase_attribution_breakdown||null,age_targeting:O.age_targeting||null,gender_targeting:O.gender_targeting||null,ig_reels:null!=(I=O.ig_reels)?I:null,fb_mobile_feed:null!=(S=O.fb_mobile_feed)?S:null,fb_desktop_feed:null!=(C=O.fb_desktop_feed)?C:null,instagram_stories:null!=(E=O.instagram_stories)?E:null,fb_stories:null!=(z=O.fb_stories)?z:null,ig_stream:null!=(T=O.ig_stream)?T:null,messenger_inbox:null!=(M=O.messenger_inbox)?M:null};return et.campaign_id&&et.ad_set_id&&et.ad_id&&et.date_start?et:(console.warn("[MetricsProcessor] Skipping insight due to missing required fields:",{c
1ampaign_id:et.campaign_id,ad_set_id:et.ad_set_id,ad_id:et.ad_id,date_start:et.date_start,spend:et.spend,rawKeys:Object.keys(e).slice(0,10)}),null)}({...e,ad_id:i,date_start:s},n,o,void 0,a);if(t){let{error:e}=await r.supabase.from("ad_daily_metrics").upsert([t],{onConflict:"date_start,ad_id,organization_id",ignoreDuplicates:!1});e&&console.warn("[EntitySync] Could not save initial metrics:",e)}}}catch(e){console.warn("[EntitySync] Could not fetch initial metrics:",e)}}}let j=async(e,t,n,a,r)=>k(e,t,n,a,r);var I=n(91094),S=n(82904);let C={meta:"Meta",google:"Google Ads",tiktok:"TikTok",twitter:"X",linkedin:"LinkedIn"};async function E(){let{data:{session:e}}=await r.supabase.auth.getSession();return{"Content-Type":"application/json",...(null==e?void 0:e.access_token)?{Authorization:"Bearer ".concat(e.access_token)}:{}}}async function z(e){let{jobId:t,signal:n,isCurrent:a,onProgress:r}=e,i=Date.now()+6e5;for(;;){let e;if(n.aborted||!a())return{kind:"aborted"};try{e=await fetch("/api/jobs/sync?jobId=".concat(encodeURIComponent(t)),{headers:await E(),signal:n})}catch(t){if((0,I.z)(t))return{kind:"aborted"};e=null}if(e){if(404===e.status)return{kind:"background"};if(e.ok){let t=await e.json().catch(()=>null),n=null==t?void 0:t.data,a=null==n?void 0:n.status;if("completed"===a)return(null==n?void 0:n.error_message)?{kind:"completed_with_errors",errorMessage:n.error_message}:{kind:"completed"};if("failed"===a){var o;return{kind:"failed",errorMessage:null!=(o=null==n?void 0:n.error_message)?o:null}}if("cancelled"===a)return{kind:"cancelled"};let i=Array.isArray(null==n?void 0:n.job_progress)?n.job_progress[0]:null==n?void 0:n.job_progress;if(null==i?void 0:i.message){let e=i.total>0?Math.round(i.current/i.total*100):null;r(null!==e&&e>0&&e<100?"".concat(i.message," (").concat(e,"%)"):i.message)}}}if(Date.now()>=i)return{kind:"background"};if(await function(e,t){return new Promise(e=>{if(t.aborted)return void e();let n=()=>{clearTimeout(a),e()},a=setTimeout(()=>{t.removeEventListener("abort",n),e()},4e3);t.addEventListener("abort",n,{once:!0})})}(0,n),n.aborted)return{kind:"aborted"}}}function T(e){var t,n;let{selectedAccount:r,organizationId:o,onSyncComplete:l}=e,s="".concat(null!=o?o:"no-org",":").concat(null!=(t=null==r?void 0:r.platform)?t:"no-platform",":").concat(null!=(n=null==r?void 0:r.id)?n:"no-account"),[c,d]=(0,a.useState)(!1),[u,p]=(0,a.useState)(null),[_,g]=(0,a.useState)(null),[f,m]=(0,a.useState)(null),y=(0,a.useRef)(0),v=(0,a.useRef)(null),h=(0,a.useRef)(null),b=(0,a.useRef)(s);b.current=s;let x=(0,a.useCallback)(e=>b.current===e,[]),k=(0,a.useCallback)(async()=>{var e;let t=++y.current,n=new AbortController;null==(e=v.current)||e.abort(),v.current=n;let a=()=>y.current===t&&x(s);if(!(null==r?void 0:r.id)){a()&&(m(null),p(null));return}p(null);try{let e={accountId:r.id,organizationId:o,platform:r.platform},t=await (0,S.Z8)((0,S.rd)(e),n.signal);if(!a())return;m(t.lastSyncDate),p(t.error)}catch(e){if((0,I.z)(e)||!a())return;console.error("[useSyncManager] Error fetching last sync date:",e),p("Could not retrieve last sync date."),m(null)}},[x,null==r?void 0:r.id,s]),w=(0,a.useCallback)(async e=>{var t,n,a,u,_;if(!r||c)return!1;let f=e=>{x(s)&&g(e)},y=e=>{x(s)&&p(e)},v=()=>{x(s)&&d(!1)};if(!o)return p("Organization ID is required to sync"),!1;let b="google"===(u=r.platform)||"tiktok"===u||"twitter"===u||"linkedin"===u?u:"meta",w=C[b];null==(t=h.current)||t.abort();let N=new AbortController;h.current=N,d(!0),p(null),g(null);try{f("Queueing ".concat(w," sync..."));let t=await fetch("/api/jobs/sync",{method:"POST",headers:await E(),body:JSON.stringify({organizationId:o,adAccountId:r.id,platform:b,syncType:"smart",useSmartDateRange:!0,forceResync:null==(a=null==e?void 0:e.force)||a}),signal:N.signal}),c=await t.json();if(!x(s))return!1;if(!t.ok)return y(c.reason||c.error||"".concat(w," sync failed to start")),console.error("[useSyncManager] Sync queue failed:",c.reason||c.error),v(),!1;let d=null==(n=c.data)?void 0:n.jobId;if(!d)return y("".concat(w," sync did not return a job id")),v(),!1;f("Syncing ".concat(w," data..."));let u=await z({jobId:d,signal:N.signal,isCurrent:()=>x(s),onProgress:f});if(!x(s))return!1;switch(u.kind){case"completed":return f("Sync completed successfully."),_=(0,i.GP)(new Date,"yyyy-MM-dd"),x(s)&&m(_),v(),k(),null==l||l(),!0;case"completed_with_errors":return y(u.errorMessage),v(),k(),!1;case"failed":return y(u.errorMessage||"".concat(w," sync failed")),v(),!1;case"cancelled":return f("Sync cancelled."),v(),!1;case"background":return f("".concat(w," sync is running in the background.")),v(),!0;case"aborted":return!1}}catch(e){if((0,I.z)(e))return!1;return console.error("[useSyncManager] Sync error:",e),x(s)&&(p("".concat(w," sync failed unexpectedly")),d(!1)),!1}},[r,c,k,x,o,l,s]),N=(0,a.useCallback)(async(e,t)=>{if(!r)return{success:!1};console.log("[useSyncManager] Syncing new ".concat(e," with ID: ").concat(t)),p(null);try{let n=await j(e,[t],e=>{x(s)&&g(e)},e=>{x(s)&&p(e)},{organizationId:o,adAccountId:r.id});if(!x(s))return{success:!1};if(n.success){let n=(0,i.GP)(new Date,"yyyy-MM-dd");m(n),console.log("[useSyncManager] Successfully synced ".concat(e," ").concat(t))}else console.error("[useSyncManager] Failed to sync ".concat(e," ").concat(t));return n}catch(t){return console.error("[useSyncManager] Error syncing ".concat(e,":"),t),x(s)&&p("Failed to sync new ".concat(e)),{success:!1}}},[x,o,r,s]);return(0,a.useEffect)(()=>{var e,t;null==(e=v.current)||e.abort(),null==(t=h.current)||t.abort(),d(!1),g(null),p(null),m(null)},[s]),(0,a.useEffect)(()=>{k()},[k]),(0,a.useEffect)(()=>()=>{var e,t;null==(e=v.current)||e.abort(),null==(t=h.current)||t.abort()},[]),{isSyncing:c,syncStatus:_,syncError:u,lastSyncDate:f,fetchLastSyncDate:k,handleSync:w,syncNewEntity:N}}},80253:(e,t,n)=>{n.d(t,{P:()=>p});var a=n(95155),r=n(12115),i=n(19408),o=n(24033),l=n(5917),s=n(25016),c=n(97003),d=n(36742),u=n(97450);function p(e){let{selectedAccount:t,accounts:n,onAccountChange:p,disabled:_=!1,className:g,placeholder:f="Select account...",size:m="sm"}=e,[y,v]=(0,r.useState)(!1);return(0,a.jsxs)(u.AM,{open:y,onOpenChange:v,children:[(0,a.jsx)(u.Wv,{asChild:!0,children:(0,a.jsxs)(c.$,{variant:"outline",role:"combobox","aria-expanded":y,size:m,disabled:_||0===n.length,className:(0,s.cn)("w-[200px] justify-between font-normal","sm"===m&&"h-9",!t&&"text-muted-foreground",g),children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 truncate",children:[(0,a.jsx)(i.A,{className:"h-4 w-4 shrink-0 opacity-50"}),(0,a.jsx)("span",{className:"truncate",children:t?t.name:f})]}),(0,a.jsx)(o.A,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,a.jsx)(u.hl,{className:"w-[250px] p-0",align:"start",children:(0,a.jsxs)(d.uB,{children:[(0,a.jsx)(d.G7,{placeholder:"Search accounts..."}),(0,a.jsxs)(d.oI,{children:[(0,a.jsx)(d.xL,{children:"No accounts found."}),(0,a.jsx)(d.L$,{children:n.map(e=>(0,a.jsxs)(d.h_,{value:e.name,onSelect:()=>(e=>{let t=n.find(t=>
1t.id===e);t&&(p(t),v(!1))})(e.id),className:"cursor-pointer",children:[(0,a.jsx)(l.A,{className:(0,s.cn)("mr-2 h-4 w-4",(null==t?void 0:t.id)===e.id?"opacity-100":"opacity-0")}),(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)("span",{className:"truncate",children:e.name}),e.currency&&(0,a.jsx)("span",{className:"text-xs text-muted-foreground",children:e.currency})]})]},e.id))})]})]})})]})}},82904:(e,t,n)=>{n.d(t,{NW:()=>u,Z8:()=>p,rd:()=>_});var a=n(38621),r=n(91094),i=n(99914),o=n(83875);let l=new Map;function s(){return new DOMException("The operation was aborted.","AbortError")}function c(e){var t,n;if(!e)return null;if("string"==typeof e){let t=(0,o.Jz)(e);return t?{accountId:t}:null}let a=(n=e.accountId,(0,o.Jz)(n));return a?{accountId:a,organizationId:(null==(t=e.organizationId)?void 0:t.trim())||void 0,platform:e.platform}:null}async function d(e){let t=c(e);if(!t)return null;try{var n;let e=await (0,i.getAuthHeaders)(),a=new URLSearchParams({accountId:t.accountId});t.organizationId&&a.set("organizationId",t.organizationId),t.platform&&a.set("platform",t.platform);let r=await fetch("/api/ads-manager/sync-dates?".concat(a),{headers:e});if(!r.ok)return null;return null!=(n=(await r.json()).data)?n:null}catch(e){if((0,r.z)(e))throw e;return null}}function u(e){return"meta"===e?"meta_sync":"tiktok"===e?"tiktok_sync":"google"===e?"google_sync":"twitter"===e?"twitter_sync":"linkedin"===e?"linkedin_
1sync":null}async function p(e,t){if(!t)return e;if(t.aborted)throw s();return await new Promise((n,a)=>{let r=()=>{a(s())};t.addEventListener("abort",r,{once:!0}),e.then(e=>{t.removeEventListener("abort",r),n(e)},e=>{t.removeEventListener("abort",r),a(e)})})}async function _(e){var t,n;let i=c(e);if(!i)return{lastSyncDate:null,error:null};let o=[null!=(t=i.organizationId)?t:"no-org",null!=(n=i.platform)?n:"no-platform",i.accountId].join(":"),s=l.get(o);if(s)return s;let u=(async()=>{try{let e=await d(i);if(!e)return{lastSyncDate:null,error:"Could not retrieve last sync date."};return{lastSyncDate:function(e){if(!e)return null;let t=[e.campaign,e.adSet,e.ad].filter(e=>!!e).map(e=>new Date(e).getTime());if(0===t.length)return null;let n=Math.max(...t);return Number.isNaN(n)?null:(0,a.GP)(new Date(n),"yyyy-MM-dd")}(e),error:null}}catch(e){if((0,r.z)(e))throw e;return{lastSyncDate:null,error:"Could not retrieve last sync date."}}finally{l.delete(o)}})();return l.set(o,u),u}},83209:(e,t,n)=>{n.d(t,{BT:()=>c,Wu:()=>d,ZB:()=>s,Zp:()=>o,aR:()=>l,wL:()=>u});var a=n(95155);n(12115);var r=n(25016);let i={frost:"frost-card",subtle:"frost-card-subtle",plain:"bg-card border border-neutral-200 dark:border-border"};function o(e){let{className:t,variant:n="frost",...o}=e;return(0,a.jsx)("div",{"data-slot":"card",className:(0,r.cn)("text-card-foreground flex flex-col gap-6 rounded-xl py-6",i[n],t),...o})}function l(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...n})}function s(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("leading-none font-semibold",t),...n})}function c(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"card-description",className:(0,r.cn)("text-muted-foreground text-sm",t),...n})}function d(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-6",t),...n})}function u(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"card-footer",className:(0,r.cn)("flex items-center px-6 [.border-t]:pt-6",t),...n})}},97450:(e,t,n)=>{n.d(t,{AM:()=>o,Wv:()=>l,dT:()=>c,hl:()=>s});var a=n(95155);n(12115);var r=n(82286),i=n(25016);function o(e){let{...t}=e;return(0,a.jsx)(r.bL,{"data-slot":"popover",...t})}function l(e){let{...t}=e;return(0,a.jsx)(r.l9,{"data-slot":"popover-trigger",...t})}function s(e){let{className:t,align:n="center",sideOffset:o=4,...l}=e;return(0,a.jsx)(r.ZL,{children:(0,a.jsx)(r.UC,{"data-slot":"popover-content",align:n,sideOffset:o,className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",t),...l})})}function c(e){let{...t}=e;return(0,a.jsx)(r.Mz,{"data-slot":"popover-anchor",...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.