{"version":3,"file":"PartnerBookingButton.DzOiwJxD.mjs","names":["React.useState","React.useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/2CJWWVwkbWN22DdIkzNn/gOVzzUizVhjN5JjFmuuP/PartnerBookingButton.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{createPortal}from\"react-dom\";export default function BookingButton(props){const{label,formId,locationName,businessName,city,state,zip,slug,category,fallbackUrl,fontSize}=props;const[open,setOpen]=React.useState(false);const[hovered,setHovered]=React.useState(false);const[pressed,setPressed]=React.useState(false);const[iframeHeight,setIframeHeight]=React.useState(850);const iframeRef=React.useRef(null);const isPartnerProvider=String(category||\"\").trim().toLowerCase()===\"partner provider\";React.useEffect(()=>{if(!open)return;const previousOverflow=document.body.style.overflow;document.body.style.overflow=\"hidden\";return()=>{document.body.style.overflow=previousOverflow;};},[open]);// Listen for postMessage from the iframe to auto-fit height\nReact.useEffect(()=>{if(!open)return;function handleMessage(e){// Many form widgets (including GHL) send height via postMessage\nif(e.data&&typeof e.data===\"object\"){const h=e.data.height||e.data.frameHeight||e.data.iframeHeight||e.data.scrollHeight;if(typeof h===\"number\"&&h>100&&h<2e3){setIframeHeight(h);}}if(typeof e.data===\"string\"){// Format: \"height:600\" or similar\nconst match=e.data.match(/height[:\\s=]+(\\d+)/);if(match){const h=parseInt(match[1],10);if(h>100&&h<2e3)setIframeHeight(h);}}}window.addEventListener(\"message\",handleMessage);return()=>window.removeEventListener(\"message\",handleMessage);},[open]);const pageUrl=typeof window!==\"undefined\"?window.location.href:\"\";function buildFormUrl(){const url=new URL(`https://link.coto.services/widget/form/${formId}`);url.searchParams.set(\"page_url\",pageUrl);url.searchParams.set(\"location_name\",locationName||\"\");url.searchParams.set(\"partner_name\",businessName||\"\");url.searchParams.set(\"city\",city||\"\");url.searchParams.set(\"state\",state||\"\");url.searchParams.set(\"zip\",zip||\"\");url.searchParams.set(\"location_slug\",slug||\"\");url.searchParams.set(\"category\",category||\"\");url.searchParams.set(\"source_page\",\"locations\");url.searchParams.set(\"source_action\",\"card_book_appointment\");if(typeof window!==\"undefined\"&&slug){url.searchParams.set(\"partner_inkout_location\",`${window.location.origin}/locations/${slug}`);}return url.toString();}function handleClick(){if(isPartnerProvider){setOpen(true);return;}const targetUrl=fallbackUrl&&fallbackUrl.trim()?fallbackUrl.trim():slug?`/locations/${slug}`:\"/locations\";if(typeof window!==\"undefined\"){window.location.href=targetUrl;}}const iframeSrc=buildFormUrl();const buttonStyle={width:\"100%\",height:\"100%\",border:\"none\",borderRadius:30,cursor:\"pointer\",padding:\"12px 24px\",whiteSpace:\"nowrap\",fontSize:fontSize||12,lineHeight:1,fontWeight:400,fontFamily:'\"Gotham Book\", Gotham, Arial, sans-serif',color:\"#FFFFFF\",transition:\"background 0.2s ease, transform 0.08s ease, box-shadow 0.2s ease\",boxShadow:\"none\"};if(pressed){buttonStyle.background=\"#82C1FF\";}else if(hovered){buttonStyle.background=\"linear-gradient(180deg, #FFFFFF 0%, #82C1FF 100%)\";buttonStyle.color=\"#FFFFFF\";}else{buttonStyle.background=\"#2693FF\";}// Cap iframe height to available viewport\nconst cappedHeight=typeof window!==\"undefined\"?Math.min(iframeHeight,window.innerHeight*.94):iframeHeight;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:handleClick,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>{setHovered(false);setPressed(false);},onMouseDown:()=>setPressed(true),onMouseUp:()=>setPressed(false),onBlur:()=>setPressed(false),style:buttonStyle,children:label||\"Book Appointment\"}),open&&typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,zIndex:999999,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:8},children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>setOpen(false),style:{position:\"absolute\",inset:0,background:\"rgba(0,0,0,0.45)\"}}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",zIndex:2,width:\"100%\",maxWidth:400,background:\"#fff\",borderRadius:18,overflow:\"hidden\",boxShadow:\"0 20px 70px rgba(0,0,0,0.25)\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setOpen(false),style:{position:\"absolute\",top:10,right:12,zIndex:3,width:32,height:32,border:\"none\",background:\"transparent\",fontSize:24,cursor:\"pointer\",color:\"#444\"},\"aria-label\":\"Close\",children:\"\\xd7\"}),/*#__PURE__*/_jsx(\"iframe\",{ref:iframeRef,src:iframeSrc,style:{width:\"100%\",height:cappedHeight,border:\"none\",display:\"block\",background:\"#fff\"},title:\"Booking Form\"})]})]}),document.body)]});}addPropertyControls(BookingButton,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Book Appointment\"},formId:{type:ControlType.String,title:\"Form ID\",defaultValue:\"47y9HoXjw18vd30RsZBy\"},locationName:{type:ControlType.String,title:\"Location Name\"},businessName:{type:ControlType.String,title:\"Business Name\"},city:{type:ControlType.String,title:\"City\"},state:{type:ControlType.String,title:\"State\"},zip:{type:ControlType.String,title:\"Zip\"},slug:{type:ControlType.String,title:\"Slug\"},category:{type:ControlType.String,title:\"Category\"},fallbackUrl:{type:ControlType.String,title:\"Fallback URL\",defaultValue:\"\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:12,min:8,max:32,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BookingButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PartnerBookingButton.map"],"mappings":"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"}