{"version":3,"file":"ProjectGalleryLine.Do2ZhTg7.mjs","names":["useState","useRef","_Fragment","useMemo"],"sources":["https:/framerusercontent.com/modules/zLHYcVsmEz3qYPfdmSxT/qY7kQuHXj1DowQTrOKD1/ProjectGalleryLine.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useMemo,useRef,useEffect}from\"react\";import{motion,AnimatePresence,addPropertyControls,ControlType,RenderTarget,useInView}from\"framer\";// ─── YouTube helpers ─────────────────────────────────────────────────────────\n/**\n * Accepts every common YouTube URL shape and returns the 11-char video id:\n * watch?v=ID, youtu.be/ID, /embed/ID, /shorts/ID, /live/ID, /v/ID,\n * or a bare ID pasted on its own.\n */function getYouTubeId(url){if(!url||typeof url!==\"string\")return null;const raw=url.trim();if(!raw)return null;if(/^[a-zA-Z0-9_-]{11}$/.test(raw))return raw;const patterns=[/(?:youtube\\.com|youtube-nocookie\\.com)\\/watch\\?(?:.*&)?v=([a-zA-Z0-9_-]{11})/,/youtu\\.be\\/([a-zA-Z0-9_-]{11})/,/(?:youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9_-]{11})/,/(?:youtube\\.com|youtube-nocookie\\.com)\\/shorts\\/([a-zA-Z0-9_-]{11})/,/(?:youtube\\.com|youtube-nocookie\\.com)\\/live\\/([a-zA-Z0-9_-]{11})/,/(?:youtube\\.com|youtube-nocookie\\.com)\\/v\\/([a-zA-Z0-9_-]{11})/];for(const pattern of patterns){const match=raw.match(pattern);if(match&&match[1])return match[1];}return null;}function isShortsUrl(url){if(!url||typeof url!==\"string\")return false;return/\\/shorts\\//i.test(url);}// Cache across cards and re-renders so a thumbnail is probed once per session\nconst mediaCache=new Map;/**\n * Resolves both the thumbnail and the true aspect ratio of a video.\n *\n * Probe order:\n * 1. oardefault.jpg — YouTube's \"original aspect ratio\" still. When it exists,\n *    its natural width/height IS the video's ratio (9:16 for Shorts, 16:9 for\n *    landscape, 4:3 for old uploads).\n * 2. maxresdefault.jpg — high quality, always 16:9 letterboxed, so it is used\n *    for pixels only and never to derive a ratio.\n * 3. hqdefault.jpg — always exists, final fallback.\n */function useYouTubeMedia(videoId){const cached=videoId?mediaCache.get(videoId):undefined;const[media,setMedia]=useState(cached??{src:videoId?`https://i.ytimg.com/vi/${videoId}/hqdefault.jpg`:null,ratio:null});useEffect(()=>{if(!videoId){setMedia({src:null,ratio:null});return;}const hit=mediaCache.get(videoId);if(hit){setMedia(hit);return;}if(typeof window===\"undefined\")return;let cancelled=false;const base=`https://i.ytimg.com/vi/${videoId}`;const commit=result=>{mediaCache.set(videoId,result);if(!cancelled)setMedia(result);};// Step 3 — guaranteed fallback\nconst useHq=()=>commit({src:`${base}/hqdefault.jpg`,ratio:null});// Step 2 — high res, ratio not trustworthy (letterboxed)\nconst tryMaxres=()=>{const img=new window.Image;img.onload=()=>{// YouTube serves a 120x90 grey placeholder when maxres is missing\nif(img.naturalWidth>=200){commit({src:`${base}/maxresdefault.jpg`,ratio:null});}else{useHq();}};img.onerror=useHq;img.src=`${base}/maxresdefault.jpg`;};// Step 1 — original aspect ratio still\nconst tryOar=()=>{const img=new window.Image;img.onload=()=>{if(img.naturalWidth>=200&&img.naturalHeight>=200){commit({src:`${base}/oardefault.jpg`,ratio:`${img.naturalWidth} / ${img.naturalHeight}`});}else{tryMaxres();}};img.onerror=tryMaxres;img.src=`${base}/oardefault.jpg`;};tryOar();return()=>{cancelled=true;};},[videoId]);return media;}// ─── Play icon ───────────────────────────────────────────────────────────────\nfunction PlayIcon({color,size}){return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",width:`${size}px`,height:`${size}px`,borderRadius:\"50%\",backgroundColor:color,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\",zIndex:2,boxShadow:\"0 4px 16px rgba(0,0,0,0.25)\"},children:/*#__PURE__*/_jsx(\"svg\",{width:size*.38,height:size*.38,viewBox:\"0 0 24 24\",fill:\"#ffffff\",style:{marginLeft:size*.05},children:/*#__PURE__*/_jsx(\"path\",{d:\"M8 5v14l11-7z\"})})});}// ─── Card ────────────────────────────────────────────────────────────────────\nfunction ProjectCard({item,i,isCanvas,masonry,cardGap,cardTextGap,cardStyles,cardTextColor,cardUppercase,fallbackRatio,showPlayIcon,playIconColor,playIconSize,onOpen}){const ref=useRef(null);const inView=useInView(ref,{once:true,margin:\"0px 0px -60px 0px\"});const videoId=getYouTubeId(item.youtubeUrl);const{src:ytThumb,ratio:detectedRatio}=useYouTubeMedia(videoId);const thumbSrc=item.image?.src||ytThumb;// Ratio priority: manual override → detected from the video → Shorts URL → global default\nconst resolvedRatio=item.ratio&&item.ratio!==\"auto\"?item.ratio:detectedRatio||(isShortsUrl(item.youtubeUrl)?\"9 / 16\":fallbackRatio);return /*#__PURE__*/_jsxs(motion.div,{ref:ref,layout:!isCanvas,initial:isCanvas?{opacity:1,y:0}:{opacity:0,y:40},animate:isCanvas||inView?{opacity:1,y:0}:{opacity:0,y:40},exit:{opacity:0,y:20,transition:{duration:.2,ease:\"easeIn\"}},transition:{duration:1.8,delay:isCanvas?0:i*.25,ease:[.16,1,.3,1]},style:{display:\"flex\",flexDirection:\"column\",gap:`${cardTextGap}px`,width:\"100%\",// Masonry mode uses CSS columns, so cards must not split across them\nbreakInside:masonry?\"avoid\":undefined,WebkitColumnBreakInside:masonry?\"avoid\":undefined,marginBottom:masonry?`${cardGap}px`:undefined},children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>{if(videoId){onOpen({type:\"video\",value:videoId,ratio:resolvedRatio});}else if(item.image?.src){onOpen({type:\"image\",value:item.image.src,ratio:resolvedRatio});}},style:{width:\"100%\",aspectRatio:resolvedRatio,overflow:\"hidden\",backgroundColor:\"#1a1a1a\",flexShrink:0,position:\"relative\",cursor:!isCanvas&&(thumbSrc||videoId)?\"pointer\":\"default\"},children:thumbSrc?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(motion.div,{whileHover:{scale:1.04},transition:{duration:.6,ease:[.22,.03,.26,1]},style:{width:\"100%\",height:\"100%\",backgroundImage:`url(${thumbSrc})`,backgroundSize:\"cover\",backgroundPosition:`${item.focalX??50}% ${item.focalY??50}%`,backgroundRepeat:\"no-repeat\",display:\"block\",transformOrigin:\"center center\"}}),videoId&&showPlayIcon?/*#__PURE__*/_jsx(PlayIcon,{color:playIconColor,size:playIconSize}):null]}):/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",color:\"#888\",fontSize:11,fontFamily:cardStyles.fontFamily,textAlign:\"center\",padding:\"12px\",gap:\"6px\",lineHeight:1.4},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:18},children:\"+\"}),\"Paste a YouTube link and fill in Title and Category via the right panel\"]})}),item.title&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:cardStyles.fontSize,fontWeight:cardStyles.fontWeight,color:cardTextColor,fontFamily:cardStyles.fontFamily,letterSpacing:cardStyles.letterSpacing,lineHeight:cardStyles.lineHeight,textAlign:cardStyles.textAlign,textTransform:cardUppercase?\"uppercase\":\"none\",width:\"100%\",overflowWrap:\"break-word\",wordBreak:\"break-word\"},children:item.title})]});}// ─── Component ────────────────────────────────────────────────────────────────\nexport default function ProjectGallery(props){const{items=[],columns,masonry,cardGap,tabGap,sectionGap,activeTextColor,inactiveTextColor,underlineColor,dividerColor,tabFont,tabUppercase,cardTextColor,cardFont,cardUppercase,cardTextGap,showPlayIcon,playIconColor,playIconSize,autoplay,privacyMode,allLabel,aspectRatio,style}=props;const getFontStyle=(font,defaultSize,defaultWeight)=>{const rawSize=font?.fontSize??defaultSize;const fontSize=typeof rawSize===\"number\"?`${rawSize}px`:rawSize;return{fontFamily:font?.fontFamily||\"Inter, sans-serif\",fontSize:fontSize,fontWeight:font?.fontWeight??defaultWeight,letterSpacing:font?.letterSpacing??0,lineHeight:font?.lineHeight??1.3,textAlign:font?.textAlign||\"left\"};};const tabStyles=getFontStyle(tabFont,14,500);const cardStyles=getFontStyle(cardFont,13,400);// The column count is now fully controlled natively by Framer's breakpoint overrides\n// Build unique tab list from item categories (case-insensitive deduplication)\nconst tabs=useMemo(()=>{const catsMap=new Map;items.forEach(item=>{if(item.category&&item.category.trim()){const trimmed=item.category.trim();const lower=trimmed.toLowerCase();if(!catsMap.has(lower)){catsMap.set(lower,trimmed);}}});return[allLabel,...Array.from(catsMap.values())];},[items,allLabel]);const[activeTab,setActiveTab]=useState(allLabel);const[direction,setDirection]=useState(1);// Holds either a YouTube id or an image src, plus the ratio to play it at\nconst[lightbox,setLightbox]=useState(null);const tabsRef=useRef(null);const tabsInView=useInView(tabsRef,{once:true,margin:\"0px 0px -50px 0px\"});const handleTabChange=tab=>{const currentIndex=tabs.indexOf(activeTab);const nextIndex=tabs.indexOf(tab);setDirection(nextIndex>=currentIndex?1:-1);setActiveTab(tab);};// Filter items by active tab\nconst filtered=useMemo(()=>{if(activeTab===allLabel)return items;return items.filter(item=>item.category?.trim().toLowerCase()===activeTab.toLowerCase());},[items,activeTab,allLabel]);// Placeholder when no items are added\nif(!items||items.length===0){return /*#__PURE__*/_jsx(\"div\",{style:{padding:\"24px\",color:\"#888\",fontSize:13,fontFamily:\"Inter, sans-serif\",border:\"1px dashed #444\",borderRadius:8,textAlign:\"center\",...style},children:\"← Add YouTube videos in the right panel (Items)\"});}// On the Framer canvas animations don't run — cards would stay invisible.\n// RenderTarget.current() lets us detect canvas and skip initial animation.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const embedHost=privacyMode?\"https://www.youtube-nocookie.com\":\"https://www.youtube.com\";// Mixed ratios: masonry packs cards tightly, grid keeps strict rows\nconst gridStyle=masonry?{columnCount:columns,columnGap:`${cardGap}px`,width:\"100%\"}:{display:\"grid\",gridTemplateColumns:`repeat(${columns}, 1fr)`,gap:`${cardGap}px`,alignItems:\"start\",width:\"100%\"};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:`${sectionGap}px`,width:\"100%\",...style},children:[/*#__PURE__*/_jsx(motion.div,{ref:tabsRef,initial:isCanvas?{opacity:1,y:0}:{opacity:0,y:15},animate:isCanvas||tabsInView?{opacity:1,y:0}:{opacity:0,y:15},transition:{duration:1.2,ease:[.16,1,.3,1],delay:.1},style:{display:\"flex\",flexWrap:\"wrap\",gap:`${tabGap}px`,width:\"100%\",borderBottom:`1px solid ${dividerColor}`,position:\"relative\",paddingBottom:\"1px\"},children:tabs.map((tab,i)=>{const isActive=activeTab===tab;return /*#__PURE__*/_jsxs(motion.button,{onClick:()=>handleTabChange(tab),initial:isCanvas?{opacity:1,x:0}:{opacity:0,x:-10},animate:isCanvas||tabsInView?{opacity:1,x:0}:{opacity:0,x:-10},transition:{duration:.6,delay:isCanvas?0:.2+i*.05,ease:[.22,1,.36,1]},style:{border:\"none\",backgroundColor:\"transparent\",padding:\"8px 0\",cursor:\"pointer\",fontWeight:tabStyles.fontWeight,fontSize:tabStyles.fontSize,fontFamily:tabStyles.fontFamily,letterSpacing:tabStyles.letterSpacing,lineHeight:tabStyles.lineHeight,textAlign:tabStyles.textAlign,textTransform:tabUppercase?\"uppercase\":\"none\",color:isActive?activeTextColor:inactiveTextColor,transition:\"color 0.2s ease\",outline:\"none\",userSelect:\"none\",whiteSpace:\"nowrap\",position:\"relative\"},children:[tab,isActive?/*#__PURE__*/_jsx(motion.div,{layoutId:\"tabUnderlineLineVariant\",style:{position:\"absolute\",bottom:\"-2px\",left:0,right:0,height:\"2px\",backgroundColor:underlineColor,zIndex:2},transition:{type:\"spring\",stiffness:500,damping:35}}):null]},tab);})}),/*#__PURE__*/_jsx(\"div\",{style:gridStyle,children:/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",children:filtered.map((item,i)=>/*#__PURE__*/_jsx(ProjectCard,{item:item,i:i,isCanvas:isCanvas,masonry:masonry,cardGap:cardGap,cardTextGap:cardTextGap,cardStyles:cardStyles,cardTextColor:cardTextColor,cardUppercase:cardUppercase,fallbackRatio:aspectRatio,showPlayIcon:showPlayIcon,playIconColor:playIconColor,playIconSize:playIconSize,onOpen:setLightbox},`${activeTab}-${i}`))})}),/*#__PURE__*/_jsx(AnimatePresence,{children:lightbox&&/*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:()=>setLightbox(null),style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:\"rgba(0,0,0,0.85)\",backdropFilter:\"blur(10px)\",WebkitBackdropFilter:\"blur(10px)\",zIndex:99999,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"40px\",cursor:\"zoom-out\",pointerEvents:\"auto\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"40px\",right:\"40px\",width:\"48px\",height:\"48px\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",color:\"#fff\",zIndex:2,transition:\"background-color 0.2s\"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 0.2)\";},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 0.1)\";},onClick:e=>{e.stopPropagation();setLightbox(null);},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"line\",{x1:\"18\",y1:\"6\",x2:\"6\",y2:\"18\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"6\",y1:\"6\",x2:\"18\",y2:\"18\"})]})}),lightbox.type===\"video\"?/*#__PURE__*/_jsx(motion.div,{initial:{scale:.95,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.95,opacity:0},transition:{type:\"spring\",damping:25,stiffness:300},onClick:e=>e.stopPropagation(),style:{// Player matches the video's own ratio, and is\n// capped by both viewport height and width\naspectRatio:lightbox.ratio,height:\"min(100%, 90vh)\",maxWidth:\"100%\",maxHeight:\"100%\",backgroundColor:\"#000\",overflow:\"hidden\",boxShadow:\"0 24px 64px rgba(0,0,0,0.5)\",cursor:\"default\"},children:/*#__PURE__*/_jsx(\"iframe\",{src:`${embedHost}/embed/${lightbox.value}?autoplay=${autoplay?1:0}&rel=0&modestbranding=1&playsinline=1`,title:\"YouTube video player\",frameBorder:\"0\",allow:\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\",allowFullScreen:true,style:{width:\"100%\",height:\"100%\",border:\"none\",display:\"block\"}})}):/*#__PURE__*/_jsx(motion.img,{src:lightbox.value,initial:{scale:.95,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.95,opacity:0},transition:{type:\"spring\",damping:25,stiffness:300},style:{maxWidth:\"100%\",maxHeight:\"100%\",objectFit:\"contain\",boxShadow:\"0 24px 64px rgba(0,0,0,0.5)\"}})]})})]});}// ─── Property Controls ────────────────────────────────────────────────────────\naddPropertyControls(ProjectGallery,{// ── Data ─────────────────────────────────────────────────────────────────\nitems:{type:ControlType.Array,title:\"Items\",description:\"Add your videos — each item has a YouTube link, title, and category.\",control:{type:ControlType.Object,controls:{youtubeUrl:{type:ControlType.String,title:\"YouTube Link\",defaultValue:\"\",placeholder:\"https://youtu.be/dQw4w9WgXcQ\",description:\"Paste any YouTube URL — watch, youtu.be, Shorts, live, or embed.\"},ratio:{type:ControlType.Enum,title:\"Ratio\",options:[\"auto\",\"16 / 9\",\"9 / 16\",\"1 / 1\",\"4 / 3\",\"3 / 4\",\"4 / 5\"],optionTitles:[\"Auto (from video)\",\"16:9\",\"9:16\",\"Square\",\"4:3\",\"3:4\",\"4:5\"],defaultValue:\"auto\",description:\"Auto reads the real ratio off the video. Override only if you want a forced crop.\"},image:{type:ControlType.ResponsiveImage,title:\"Custom Thumb\",description:\"💡 Optional. Leave empty to auto-pull the YouTube thumbnail. Use Focal X/Y below to crop.\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"Project Name\",placeholder:\"Project Name\"},category:{type:ControlType.String,title:\"Category\",defaultValue:\"Commercial\",placeholder:\"Commercial\"},focalX:{type:ControlType.Number,title:\"Focal X\",defaultValue:50,min:0,max:100,step:1,displayStepper:true,unit:\"%\"},focalY:{type:ControlType.Number,title:\"Focal Y\",defaultValue:50,min:0,max:100,step:1,displayStepper:true,unit:\"%\"}}},defaultValue:[{title:\"Project 1\",category:\"Category A\",ratio:\"auto\"},{title:\"Project 2\",category:\"Category B\",ratio:\"auto\"},{title:\"Project 3\",category:\"Category A\",ratio:\"auto\"},{title:\"Project 4\",category:\"Category C\",ratio:\"auto\"},{title:\"Project 5\",category:\"Category B\",ratio:\"auto\"}]},allLabel:{type:ControlType.String,title:\"All Label\",defaultValue:\"ALL\",description:\"Text for the tab that shows all items.\"},// ─── TABS ────────────────────────────────────────────────────────────────\ntabFont:{type:ControlType.Font,title:\"Tab Font\",description:\"Control font family, size, weight, and letter spacing for the filter tabs.\",defaultValue:{fontFamily:\"Inter\",fontSize:14,fontWeight:500},controls:\"extended\"},tabUppercase:{type:ControlType.Boolean,title:\"Tab Uppercase\",defaultValue:true},activeTextColor:{type:ControlType.Color,title:\"Active Text Color\",defaultValue:\"#000000\",description:\"Color of the currently selected tab label.\"},inactiveTextColor:{type:ControlType.Color,title:\"Inactive Text Color\",defaultValue:\"#888888\",description:\"Color of unselected tab labels.\"},underlineColor:{type:ControlType.Color,title:\"Underline Color\",defaultValue:\"#000000\",description:\"Color of the animated underline under the active tab.\"},dividerColor:{type:ControlType.Color,title:\"Divider Line Color\",defaultValue:\"#e5e5e5\",description:\"Color of the full-width line beneath all tabs.\"},tabGap:{type:ControlType.Number,title:\"Tab Gap\",defaultValue:16,min:0,max:40,description:\"Horizontal space between filter tab buttons.\"},// ─── CARDS ───────────────────────────────────────────────────────────────\ncardFont:{type:ControlType.Font,title:\"Card Font\",description:\"Control font family, size, weight, and alignment for project titles on cards.\",defaultValue:{fontFamily:\"Inter\",fontSize:13,fontWeight:400},controls:\"extended\"},cardUppercase:{type:ControlType.Boolean,title:\"Card Uppercase\",defaultValue:false},cardTextColor:{type:ControlType.Color,title:\"Card Title Color\",defaultValue:\"#000000\",description:\"Color of the project title below each card.\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:6,step:1,displayStepper:true,description:\"Number of columns in the card grid.\"},masonry:{type:ControlType.Boolean,title:\"Masonry\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"On: mixed ratios pack tightly with no gaps. Off: strict rows, cards align to the top.\"},aspectRatio:{type:ControlType.Enum,title:\"Fallback Ratio\",options:[\"1 / 1\",\"4 / 3\",\"16 / 9\",\"3 / 4\",\"9 / 16\"],optionTitles:[\"Square\",\"4:3\",\"16:9\",\"Portrait 3:4\",\"Portrait 9:16\"],defaultValue:\"16 / 9\",description:\"Used only while a video's real ratio is still loading, or if it can't be read.\"},cardGap:{type:ControlType.Number,title:\"Card Gap X/Y\",defaultValue:16,min:0,max:80,description:\"Space between cards, both horizontal and vertical.\"},cardTextGap:{type:ControlType.Number,title:\"Img to Title Gap\",defaultValue:4,min:0,max:40,description:\"Vertical space between the card image and its title.\"},// ─── VIDEO ───────────────────────────────────────────────────────────────\nshowPlayIcon:{type:ControlType.Boolean,title:\"Play Icon\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Play button badge in the middle of each thumbnail.\"},playIconColor:{type:ControlType.Color,title:\"Play Icon BG\",defaultValue:\"rgba(0, 0, 0, 0.6)\",hidden:props=>props.showPlayIcon===false},playIconSize:{type:ControlType.Number,title:\"Play Icon Size\",defaultValue:56,min:24,max:120,step:1,hidden:props=>props.showPlayIcon===false},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Start the video as soon as the lightbox opens.\"},privacyMode:{type:ControlType.Boolean,title:\"Privacy Mode\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Use youtube-nocookie.com for the embed.\"},// ─── LAYOUT ──────────────────────────────────────────────────────────────\nsectionGap:{type:ControlType.Number,title:\"Tabs to Cards\",defaultValue:40,min:0,max:120,description:\"Vertical gap between the tab row and the card grid.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProjectGallery\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProjectGalleryLine.map"],"mappings":"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"}