1import{g as I,A as U,R as M,B as O,C as j,o as m,c as x,Z as F,a as n,O as $,t as V,p as C,q as A,_ as Y,N as S,l as D,h as P,s as W,cW as G,bM as K,I as q,u as J,F as T,r as R,b as z,v as Z}from"./Bl7aIc7Y.js";import{C as Q}from"./CPzawc8g.js";import{C as X}from"./D3MSiAdk.js";import{u as ee}from"./DShNS4KA.js";import{u as te}from"./DWPcOr1N.js";const oe=400,B=.35;function se(o,s,p,y,u="hover"){let r=null,v=!1,l=!1,_=!1;const k=window.matchMedia("(hover: hover) and (pointer: fine)").matches,c=()=>{r!==null&&(clearTimeout(r),r=null)},h=()=>{_=!1,s.pause()},f=async()=>{_=!0,v||(s.src=p,s.load(),v=!0);try{if(await s.play(),!_){s.pause();return}l||(l=!0,y())}catch{}},b=()=>{if(c(),!s.paused&&!s.ended){h();return}f()},L=()=>{u==="hover"&&k&&(c(),r=setTimeout(()=>{r=null,f()},oe))},g=()=>{u==="hover"&&k&&(c(),h())},w=()=>{b()},t=e=>{e.key!=="Enter"&&e.key!==" "||(e.preventDefault(),b())},i=new IntersectionObserver(([e])=>{if(!e)return;if(u==="autoplay"&&e.isIntersecting&&e.intersectionRatio>=B){c(),f();return}(!e.isIntersecting||u==="autoplay")&&(c(),h())},{threshold:[0,B]});return o.addEventListener("mouseenter",L),o.addEventListener("mouseleave",g),o.addEventListener("click",w),o.addEventListener("keydown",t),i.observe(o),()=>{c(),i.disconnect(),o.removeEventListener("mouseenter",L),o.removeEventListener("mouseleave",g),o.removeEventListener("click",w),o.removeEventListener("keydown",t),h(),s.removeAttribute("src"),s.load()}}const ae=["aria-label"],ie=["src","alt","title"],re=["title","poster"],ne={class:"absolute inset-0 bg-linear-to-t from-black/80 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-end justify-center pb-[5%] z-[3]"},le={class:"text-white text-sm font-medium px-4 text-center"},ce=I({__name:"VideoCard",props:{item:{},playMode:{default:"hover"}},setup(o){const s=o,p=C(null),y=C(null),u=C(null),r=C(!1),v=C("9 / 16"),l=A(()=>s.item.cover||s.item.cover_image||""),_=A(()=>{const t=s.item.title||"Video preview";return s.playMode==="autoplay"?`${t}. Auto plays when visible. Click to pause or play.`:`${t}. Hover or click to play.`}),k=A(()=>({"--video-card-aspect-ratio":v.value}));let c=null;const h=(t,i)=>{t>0&&i>0&&(v.value=`${t} / ${i}`)},f=t=>!t?.complete||t.naturalWidth<=0||t.naturalHeight<=0?!1:(h(t.naturalWidth,t.naturalHeight),!0),b=()=>{if(f(y.value)||!l.value)return;const t=new Image;t.referrerPolicy="no-referrer",t.onload=()=>{h(t.naturalWidth,t.naturalHeight)},t.src=l.value},L=t=>{f(t.target)},g=A(()=>s.item.demo_video?.url||s.item.video||""),w=()=>{c?.(),c=null,r.value=!1,p.value&&u.value&&g.value&&(c=se(p.value,u.value,g.value,()=>{r.value=!0},s.playMode))};return U(()=>{M(b),w()}),O(g,()=>{w()}),O(l,()=>{v.value="9 / 16",M(b)}),j(()=>{c?.()}),(t,i)=>(m(),x("div",{ref_key:"containerRef",ref:p,role:"button",tabindex:"0","aria-label":_.value,class:"video-card group relative rounded-2xl overflow-hidden border border-white/10 bg-white/5 cursor-pointer",style:F(k.value)},[n("img",{ref_key:"coverImageRef",ref:y,src:l.value,alt:o.item.description||"Apptovid Video Cover",title:o.item.title||"Apptovid Video",width:"225",height:"400",loading:"lazy",decoding:"async",fetchpriority:"low",class:$(["video-card__cover",{"video-card__cover--hidden":r.value}]),onLoad:L,referrerpolicy:"no-referrer"},null,42,ie),n("video",{ref_key:"videoRef",ref:u,muted:"",loop:"",playsinline:"",title:o.item.title,poster:l.value,preload:"none",class:"video-card__video"},null,8,re),n("div",ne,[n("span",le,V(o.item.title),1)])],12,ae))}}),de=Object.assign(Y(ce,[["__scopeId","data-v-224f4e44"]]),{__name:"HomeVideoCard"}),ue=["disabled","aria-label"],pe=I({__name:"NavArrowButton",props:{direction:{},ariaLabel:{},disabled:{type:Boolean,default:!1},size:{default:"md"}},emits:["click"],setup(o,{emit:s}){const p=o,y=s,u=A(()=>{switch(p.size){case"sm":return"h-8 w-8";case"lg":return"h-12 w-12";default:return"h-10 w-10"}}),r=A(()=>{switch(p.size){case"sm":return"h-4 w-4";case"lg":return"h-6 w-6";default:return"h-5 w-5"}});return(v,l)=>(m(),x("button",{type:"button",disabled:o.disabled,"aria-label":o.ariaLabel,class:$([u.value,"group inline-flex items-center justify-center rounded-full border border-white/20 bg-white/[0.06] shadow-[0_4px_12px_rgba(0,0,0,0.3)] transition-all duration-200 cursor-pointer hover:-translate-y-
1px hover:scale-[1.03] hover:border-white/40 hover:bg-white/[0.18] hover:shadow-[0_10px_22px_rgba(97,76,255,0.28)] active:scale-[0.97] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/90 focus-visible:ring-offset-2 focus-visible:ring-offset-[#080808] disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50"]),onClick:l[0]||(l[0]=_=>y("click"))},[o.direction==="left"?(m(),S(D(Q),{key:0,class:$([r.value,"text-white/80 transition-all duration-200 group-hover:-translate-x-0.5 group-hover:scale-105 group-hover:text-white"])},null,8,["class"])):(m(),S(D(X),{key:1,class:$([r.value,"text-white/80 transition-all duration-200 group-hover:translate-x-0.5 group-hover:scale-105 group-hover:text-white"])},null,8,["class"]))],10,ue))}}),E=Object.assign(pe,{__name:"CommonNavArrowButton"}),ve={id:"ad-formats",class:"pt-4 pb-14 px-6 md:px-12 md:pt-8 md:pb-24 bg-[#080808]"},he={class:"max-w-7xl mx-auto"},me={class:"space-y-16 md:space-y-24"},fe={class:"mb-6 md:mb-8 md:flex md:items-end md:justify-between md:gap-8"},ye={class:"max-w-2xl"},_e={class:"text-2xl md:text-4xl font-bold font-display mb-3"},be={class:"text-white/60 leading-relaxed mb-4"},ge={class:"flex flex-wrap items-center gap-2"},we={class:"mt-5 hidden items-center gap-2 shrink-0 md:mt-0 md:flex"},N="home-video-list",xe=3600*1e3,ke=I({__name:"AdFormats",props:{playMode:{default:"hover"}},async setup(o){let s,p;const y=o,{$firebaseAnalytics:u}=P(),{appUrl:r}=q,v=ee(),{fetcHomeVideoList:l}=v,{ugcVideoList:_,animatedVideoList:k,storyVideoList:c}=W(v),h=new Map,f=G(`${N}-fetched-at`,()=>0),b=[{key:"ugc",title:"Social & UGC Ads",description:"Craft UGC-style ads that feel organic and build trust for your app.",platforms:["TikTok","Instagram Reels","YouTube Shorts"],items:_},{key:"explainer",title:"Animated Explainer Ads",description:"Clean motion-graphic ads that explain your app's value in seconds.",platforms:["Meta Feed","YouTube","Display"],items:k},{key:"storytelling",title:"Storytelling Ads",description:"Mini story ads with a hook, a conflict and your app as the payoff.",platforms:["TikTok","Meta","YouTube Shorts"],items:c}];[s,p]=K(async()=>te(N,async()=>{const i=await l();return f.value=Date.now(),i},{getCachedData(i,e){const a=e.payload.data[i]??e.static.data[i];return a&&Date.now()-f.value<xe?a:void 0}})),await s,p();const L=b.flatMap(i=>i.items.value.map((e,a)=>({"@type":"VideoObject",name:e.title||"AI Video Ad Demo",description:e.description||e.title||"AI Video Ad Demo",thumbnailUrl:e.cover||e.cover_image,uploadDate:e.upload_date||"2026-07-30",duration:`PT${e.duration||15}S`,contentUrl:e.video||e.demo_video?.url,embedUrl:`${r}/demo/${i.key}/${a}`,publisher:{"@type":"Organization",name:"Apptovid",logo:{"@type":"ImageObject",url:`${r}/static/logo/apptovid-256x256.png`,width:"256",height:"256"}}})))||[];J({script:[{type:"application/ld+json",innerHTML:()=>JSON.stringify({"@context":"https://schema.org","@graph":[...L]})}]});const g=(i,e)=>{e instanceof HTMLDivElement&&h.set(i,e)},w=(i,e)=>{u?.trackEvent("click_home_demo_video"),Z(`/demo/${i}/${e}`)},t=(i,e)=>{const a=h.get(i);if(a){const d=a.clientWidth*.8;a.scrollBy({left:e==="left"?-d:d,behavior:"smooth"})}};return(i,e)=>(m(),x("section",ve,[n("div",he,[n("div",me,[(m(),x(T,null,R(b,a=>n("div",{key:a.key},[n("div",fe,[n("div",ye,[n("h3",_e,V(a.title),1),n("p",be,V(a.description),1),n("div",ge,[(m(!0),x(T,null,R(a.platforms,d=>(m(),x("span",{key:d,class:"px-3 py-1 rounded-full bg-white/5 border border-white/10 text-xs font-semibold text-white/70"},V(d),1))),128))])]),n("div",we,[z(E,{ariaLabel:`Scroll ${a.title} left`,direction:"left",onClick:d=>t(a.key,"left")},null,8,["ariaLabel","onClick"]),z(E,{ariaLabel:`Scroll ${a.title} right`,direction:"right",onClick:d=>t(a.key,"right")},null,8,["ariaLabel","onClick"])])]),n("div",{ref_for:!0,ref:d=>g(a.key,d),class:"flex gap-3 overflow-x-auto scrollbar-hide scroll-smooth pb-4"},[(m(!0),x(T,null,R(a.items.value,(d,H)=>(m(),S(de,{key:d.id||`${a.key}-${H}`,item:d,"play-mode":y.playMode,onClick:Le=>w(a.key,H)},null,8,["item","play-mode","onClick"]))),128))],512)])),64))])])]))}}),Re=Object.assign(ke,{__name:"HomeAdFormats"});export{Re as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.