{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/UhjBpDWttOSR7OOTHdVR/iI0npeX4azlClDMOqE3b/CloudinaryImage.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useEffect,useRef}from\"react\";const unoptimizedURLPattern=/https:\\/\\/res\\.cloudinary\\.com\\/zapier-media\\/image\\/upload\\/v\\d+\\//;function getFileExtension(url){const extension=url.split(\".\").pop().toLowerCase();return extension;}// Helper to generate a low-quality placeholder URL\nfunction getLowQualityUrl(url){if(unoptimizedURLPattern.test(url)){return url.replace(\"/upload/v\",\"/upload/w_50,e_blur:1000,q_10/v\");}return url;}// Helper to generate optimized URL\nfunction getOptimizedUrl(url,quality=\"auto\"){if(unoptimizedURLPattern.test(url)){return url.replace(\"/upload/v\",`/upload/f_auto,q_${quality}/v`);}return url;}// Generate responsive srcSet using array input\nfunction getSrcSet(url,widths=[400,800,1200]){if(!unoptimizedURLPattern.test(url))return undefined;return widths.map(w=>`${getOptimizedUrl(url).replace(\"/upload/\",`/upload/w_${w}/`)} ${w}w`).join(\", \");}// Helper to get aspect ratio CSS value\nfunction getAspectRatioValue(ratio){const ratios={\"1:1\":\"1 / 1\",\"16:9\":\"16 / 9\",\"4:3\":\"4 / 3\",\"3:2\":\"3 / 2\",\"2:1\":\"2 / 1\"};return ratios[ratio]||\"1 / 1\";}export function CloudinaryImage(props){const[isLoaded,setIsLoaded]=useState(!props.lazyLoad);const[isInView,setIsInView]=useState(!props.lazyLoad);const imageRef=useRef(null);const fileType=getFileExtension(props.url);const isVideo=fileType===\"mp4\";const commonStyles={maxWidth:\"100%\",display:\"block\",borderRadius:props.borderRadius,objectFit:props.fit,objectPosition:`${props.horizontalPosition}% ${props.verticalPosition}%`,width:\"100%\",height:\"100%\",transition:\"opacity 0.3s ease-in-out\"};// Container styles with conditional aspect ratio\nconst containerStyles={position:\"relative\",width:\"100%\",height:props.lockAspectRatio?\"auto\":\"100%\",...props.lockAspectRatio&&{aspectRatio:getAspectRatioValue(props.aspectRatio)}};useEffect(()=>{if(!props.lazyLoad||!imageRef.current)return;const observer=new IntersectionObserver(([entry])=>{setIsInView(entry.isIntersecting);},{rootMargin:\"50px\"});observer.observe(imageRef.current);return()=>observer.disconnect();},[props.lazyLoad]);if(isVideo){return /*#__PURE__*/_jsx(\"div\",{ref:imageRef,style:containerStyles,children:/*#__PURE__*/_jsx(\"video\",{src:isInView?getOptimizedUrl(props.url):\"\",style:{...commonStyles,opacity:isInView?1:0},autoPlay:props.autoPlay,loop:props.loop,muted:props.muted,controls:props.controls,preload:props.lazyLoad?\"none\":\"auto\",onLoadedData:()=>setIsLoaded(true)})});}const srcSet=getSrcSet(props.url,props.srcSetWidths);return /*#__PURE__*/_jsxs(\"div\",{ref:imageRef,style:containerStyles,children:[props.lazyLoad&&!isLoaded&&/*#__PURE__*/_jsx(\"img\",{src:getLowQualityUrl(props.url),alt:\"\",style:{...commonStyles,position:\"absolute\",top:0,left:0,filter:\"blur(10px)\"}}),(!props.lazyLoad||isInView)&&/*#__PURE__*/_jsx(\"img\",{src:getOptimizedUrl(props.url),srcSet:srcSet,sizes:\"(max-width: 768px) 100vw, 800px\",alt:props.alt,style:{...commonStyles,opacity:isLoaded?1:0},loading:props.lazyLoad?\"lazy\":\"eager\",onLoad:()=>setIsLoaded(true)})]});}addPropertyControls(CloudinaryImage,{url:{type:ControlType.String,title:\"URL\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"Image\"},lazyLoad:{type:ControlType.Boolean,title:\"Lazy Load\",defaultValue:true},borderRadius:{type:ControlType.BorderRadius},fit:{type:ControlType.Enum,title:\"Fit\",options:[\"fill\",\"contain\",\"cover\",\"none\",\"scale-down\"],optionTitles:[\"Fill\",\"Contain\",\"Cover\",\"None\",\"Scale Down\"],defaultValue:\"cover\"},horizontalPosition:{type:ControlType.Number,title:\"Horizontal Position\",defaultValue:50,min:0,max:100,unit:\"%\"},verticalPosition:{type:ControlType.Number,title:\"Vertical Position\",defaultValue:50,min:0,max:100,unit:\"%\"},// NEW ASPECT RATIO CONTROLS\nlockAspectRatio:{type:ControlType.Boolean,title:\"Lock Aspect Ratio\",defaultValue:false},aspectRatio:{type:ControlType.Enum,title:\"Aspect Ratio\",options:[\"1:1\",\"16:9\",\"4:3\",\"3:2\",\"2:1\"],optionTitles:[\"Square (1:1)\",\"Widescreen (16:9)\",\"Standard (4:3)\",\"Photo (3:2)\",\"Banner (2:1)\"],defaultValue:\"1:1\",// Only show this control when aspect ratio is locked\nhidden:props=>!props.lockAspectRatio},// Configurable srcSet\nsrcSetWidths:{type:ControlType.Array,title:\"SrcSet Widths\",propertyControl:{type:ControlType.Number},defaultValue:[400,800,1200],// Hide option if a video file\nhidden:props=>getFileExtension(props.url)===\"mp4\"},// Video-specific controls that only appear for video files\nautoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:true,hidden:props=>getFileExtension(props.url)!==\"mp4\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true,hidden:props=>getFileExtension(props.url)!==\"mp4\"},muted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true,hidden:props=>getFileExtension(props.url)!==\"mp4\"},controls:{type:ControlType.Boolean,title:\"Show Controls\",defaultValue:false,hidden:props=>getFileExtension(props.url)!==\"mp4\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"CloudinaryImage\":{\"type\":\"reactComponent\",\"name\":\"CloudinaryImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CloudinaryImage.map"],
  "mappings": "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",
  "names": ["unoptimizedURLPattern", "getFileExtension", "url", "getLowQualityUrl", "getOptimizedUrl", "quality", "getSrcSet", "widths", "w", "getAspectRatioValue", "ratio", "CloudinaryImage", "props", "isLoaded", "setIsLoaded", "ye", "isInView", "setIsInView", "imageRef", "pe", "isVideo", "commonStyles", "containerStyles", "ue", "observer", "entry", "p", "srcSet", "u", "addPropertyControls", "ControlType"]
}
