{"version":3,"file":"VideoEmbed.CJPVTlIV.mjs","names":["useState","useRef","useMemo","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/LotAHaM5eXIVhWaUyoTu/czSK9uXBVV217JA0DQN7/VideoEmbed.js"],"sourcesContent":["/**\n * VideoEmbed — Movement Wisdom Yoga\n *\n * Single video component. Works two ways:\n *   1. Standalone single embed (sales pages, testimonial spotlight)\n *   2. Repeated item inside a native Framer gallery (Stack / Collection List /\n *      horizontal slider) — the gallery is built in Framer, NOT in code.\n *\n * Interaction model (v3):\n *   • Idle          → static thumbnail + play button (+ optional text overlay)\n *   • Hover (desktop):\n *       – playOnHover ON  → the REAL embed autoplays in place (sound on where\n *         the browser allows) and stops on mouse-leave. One video at a time.\n *       – playOnHover OFF → a muted preview clip plays, if previewVideo is set.\n *   • Click / tap   → loads the real Spotlightr embed. Opens in a Lightbox\n *                     (overlay) or Inline (swap in place) per \"Click Opens\".\n *\n * Kept:\n *   • Accepts Spotlightr's full HTML embed snippet OR a plain URL in embedCode\n *   • Aspect ratio: Landscape (16:9), 4:5, Square (1:1), Vertical (9:16)\n *   • One video at a time (singleton) across the whole page\n *   • IntersectionObserver: unload real embed + stop preview on scroll-out\n *   • Keyboard accessible (Tab + Enter/Space; Escape closes the lightbox)\n *   • VideoObject JSON-LD schema injection\n *   • Text overlay on thumbnail (headline / subheadline)\n *   • Proportional play button, configurable corner radius (default 16px)\n *\n * New in v3.1 (chapter markers):\n *   • Derives the Spotlightr player id from the /watch/<id> URL and loads\n *     Spotlightr's JS API script once. Exposes a seek function on\n *     window.__mwSeekVideo[playerId] so a paired ChapterMarkers component can\n *     jump this player to a timestamp (activating it first if idle). Requires\n *     \"Advanced Embed Code\" to be enabled for the video in Spotlightr.\n *\n * ⚠️  NOTE: this component's iframe deliberately does NOT carry Spotlightr's\n * `video-player-container spotlightr` class or a `data-playerid` attribute,\n * so `spotlightrAPI()` cannot target it and the seek bridge above does not\n * actually reach the player. `SpotlightrAdvancedEmbed.tsx` (`htQnUSB`) exists\n * for exactly that reason and is the component to use when the page needs\n * chapter seeking or email gating. Do not bolt either onto this file — it is\n * used all over the site and the wrapping that Spotlightr's script applies to\n * a class-tagged iframe fights this component's aspect-ratio box.\n *\n * ⚠️  Before publishing: replace [YOUR_CLOUDINARY_ID] with your Cloudinary cloud name\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useRef,useEffect,useCallback,useMemo}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";// ─── Singleton: one real video playing at a time ──────────────────────────────\nlet _currentDeactivate=null;function registerActive(deactivateFn){if(_currentDeactivate&&_currentDeactivate!==deactivateFn){_currentDeactivate();}_currentDeactivate=deactivateFn;}function unregisterActive(deactivateFn){if(_currentDeactivate===deactivateFn){_currentDeactivate=null;}}// ─────────────────────────────────────────────────────────────────────────────\nconst RATIOS={Landscape:16/9,\"4by5\":4/5,Square:1/1,Vertical:9/16};/**\n * Play button diameter, sized off the SHORT side of the player box.\n *\n * The old value was a flat `clamp(40px, 15%, 96px)`. A CSS percentage width\n * resolves against the container's WIDTH only, and the container is\n * `width: 100%` + `aspect-ratio: ratio` — so a 16:9 player is wide and\n * saturates the 96px cap, while a 9:16 player is narrow and collapses to the\n * 40px floor even though it is visually the TALLER box. Same markup, wildly\n * different perceived size.\n *\n * Multiplying by min(1, 1 / ratio) converts a short-side percentage into the\n * equivalent width percentage (height = width / ratio), so the button reads\n * the same size at every aspect ratio. 16:9 lands at ~14% of width, which is\n * within a hair of the old 15% — landscape is deliberately left looking\n * unchanged. 48px floor keeps the play button clear of the 44px minimum\n * touch target.\n *\n * Kept in sync with the identical helper in SpotlightrAdvancedEmbed.tsx.\n */const playButtonSize=ratio=>`clamp(48px, ${(25*Math.min(1,1/ratio)).toFixed(2)}%, 96px)`;/**\n * Extracts a src URL from either:\n * - A plain URL string\n * - A Spotlightr HTML embed snippet (<div><iframe src=\"...\">)\n */function extractSrc(input){if(!input)return\"\";const trimmed=input.trim();if(trimmed.startsWith(\"<\")){const match=trimmed.match(/\\bsrc=[\"']([^\"']+)[\"']/);return match?match[1]:\"\";}return trimmed;}/**\n * Adds an autoplay flag to the embed URL so the real video starts on its own\n * (used for click and for hover-play). Note: browsers may still start muted\n * or block sound until the visitor interacts with the page.\n */function withAutoplay(src){if(!src)return src;if(/[?&]autoplay=/.test(src))return src;return src+(src.includes(\"?\")?\"&\":\"?\")+\"autoplay=1\";}export default function VideoEmbed({aspectRatio=\"Landscape\",thumbnail,previewVideo,embedCode=\"\",clickBehavior=\"lightbox\",playOnHover=false,playButtonColor=\"#FFAB3D\",cornerRadius=16,showOverlay=false,headline=\"\",subheadline=\"\",headlineFont,subheadlineFont,youtubeUrl=\"\",videoTitle=\"\",videoDescription=\"\",uploadDate=\"\",duration=\"\",style}){const[isPlaying,setIsPlaying]=useState(false);const[showPreview,setShowPreview]=useState(false);const[announce,setAnnounce]=useState(\"\");const containerRef=useRef(null);const previewRef=useRef(null);const closeBtnRef=useRef(null);const isPlayingRef=useRef(false);const thumbnailUrl=typeof thumbnail===\"string\"?thumbnail:\"\";const previewUrl=typeof previewVideo===\"string\"?previewVideo.trim():\"\";const iframeSrc=extractSrc(embedCode);const playSrc=withAutoplay(iframeSrc);const ratio=RATIOS[aspectRatio]??16/9;// Spotlightr player ID — the base64 slug in the /watch/<id> URL. This is\n// the same value Spotlightr's JS API expects as the player id, and the\n// same value a paired ChapterMarkers component uses as its `videoId`.\nconst spotlightrPlayerId=useMemo(()=>{const match=iframeSrc.match(/\\/watch\\/([^/?]+)/);return match?match[1]:null;},[iframeSrc]);useEffect(()=>{isPlayingRef.current=isPlaying;},[isPlaying]);// ── Capability detection (touch + reduced motion) ─────────────────────────\nconst isTouchDevice=useRef(false);const prefersReducedMotion=useRef(false);useEffect(()=>{if(typeof window===\"undefined\")return;isTouchDevice.current=window.matchMedia(\"(hover: none) and (pointer: coarse)\").matches;prefersReducedMotion.current=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;},[]);// ── Activate / Deactivate (real embed) ────────────────────────────────────\nconst deactivate=useCallback(()=>{setIsPlaying(false);setAnnounce(\"\");unregisterActive(deactivate);},[]);const activate=useCallback(()=>{registerActive(deactivate);setShowPreview(false);setIsPlaying(true);setAnnounce(\"Video playing\");},[deactivate]);useEffect(()=>{return()=>unregisterActive(deactivate);},[deactivate]);// ── Spotlightr chapter-seek bridge ─────────────────────────────────────────\n// Loads Spotlightr's JS API script once, then exposes a seek function on\n// window.__mwSeekVideo[playerId] so a separate ChapterMarkers component\n// can jump this player to a timestamp. Requires \"Advanced Embed Code\" to\n// be enabled for this video in Spotlightr's Publish settings.\nuseEffect(()=>{if(typeof document===\"undefined\"||!spotlightrPlayerId)return;const scriptSrc=\"https://videos.cdn.spotlightr.com/assets/spotlightr.js\";if(!document.querySelector(`script[src=\"${scriptSrc}\"]`)){const script=document.createElement(\"script\");script.src=scriptSrc;script.async=true;document.head.appendChild(script);}},[spotlightrPlayerId]);useEffect(()=>{if(typeof window===\"undefined\"||!spotlightrPlayerId)return;const w=window;w.__mwSeekVideo=w.__mwSeekVideo||{};w.__mwSeekVideo[spotlightrPlayerId]=seconds=>{const seek=()=>w.spotlightrAPI?.(spotlightrPlayerId,\"currentTime\",[seconds]);if(!isPlayingRef.current){activate();// give the iframe + spotlightr.js a moment to attach before seeking\nsetTimeout(seek,700);}else{seek();}};return()=>{if(w.__mwSeekVideo)delete w.__mwSeekVideo[spotlightrPlayerId];};},[spotlightrPlayerId,activate]);// ── IntersectionObserver: unload + stop preview when scrolled out ─────────\nuseEffect(()=>{const el=containerRef.current;if(!el)return;const observer=new IntersectionObserver(([entry])=>{if(!entry.isIntersecting){if(isPlayingRef.current)deactivate();setShowPreview(false);}},{threshold:.01});observer.observe(el);return()=>observer.disconnect();},[deactivate]);// ── Play the preview clip when it mounts ──────────────────────────────────\nuseEffect(()=>{if(!showPreview)return;const v=previewRef.current;if(!v)return;try{v.currentTime=0;}catch(_){/* ignore */}const p=v.play();if(p&&typeof p.catch===\"function\"){p.catch(()=>{});}},[showPreview]);// ── Lightbox: body scroll lock, focus management, Escape ──────────────────\nconst lightboxOpen=isPlaying&&clickBehavior===\"lightbox\"&&!!iframeSrc;useEffect(()=>{if(!lightboxOpen||typeof document===\"undefined\")return;const prevOverflow=document.body.style.overflow;document.body.style.overflow=\"hidden\";closeBtnRef.current?.focus();const onKey=e=>{if(e.key===\"Escape\"){e.preventDefault();deactivate();}};document.addEventListener(\"keydown\",onKey);return()=>{document.removeEventListener(\"keydown\",onKey);document.body.style.overflow=prevOverflow;containerRef.current?.focus();};},[lightboxOpen,deactivate]);// ── JSON-LD VideoObject Schema ────────────────────────────────────────────\nuseEffect(()=>{const schemaEmbedUrl=youtubeUrl||iframeSrc;const schema={\"@context\":\"https://schema.org\",\"@type\":\"VideoObject\",publisher:{\"@type\":\"Organization\",name:\"Movement Wisdom Yoga\",logo:{\"@type\":\"ImageObject\",// ⚠️  Replace [YOUR_CLOUDINARY_ID] with your Cloudinary cloud name\nurl:\"https://res.cloudinary.com/[YOUR_CLOUDINARY_ID]/image/upload/logo.png\"}}};if(videoTitle)schema.name=videoTitle;if(videoDescription)schema.description=videoDescription;if(thumbnailUrl)schema.thumbnailUrl=thumbnailUrl;if(uploadDate)schema.uploadDate=uploadDate;if(duration)schema.duration=duration;if(schemaEmbedUrl)schema.embedUrl=schemaEmbedUrl;const hasContent=videoTitle||videoDescription||thumbnailUrl||uploadDate||duration||schemaEmbedUrl;if(!hasContent)return;if(typeof document===\"undefined\")return;const scriptId=`mwy-video-schema-${Math.random().toString(36).slice(2,10)}`;const script=document.createElement(\"script\");script.type=\"application/ld+json\";script.id=scriptId;script.textContent=JSON.stringify(schema);document.head.appendChild(script);return()=>{const el=document.getElementById(scriptId);if(el)el.remove();};},[thumbnailUrl,iframeSrc,youtubeUrl,videoTitle,videoDescription,uploadDate,duration]);// ── Interaction Handlers ──────────────────────────────────────────────────\n// Click / tap always plays the real embed (needed for touch).\nconst handleClick=()=>{if(!isPlaying)activate();};const handleMouseEnter=()=>{if(isTouchDevice.current||isPlaying)return;// Play the real video on hover (with sound), one at a time.\nif(playOnHover){activate();return;}// Otherwise, play the muted preview clip if one is set.\nif(previewUrl&&!prefersReducedMotion.current){setShowPreview(true);}};const handleMouseLeave=()=>{if(showPreview)setShowPreview(false);if(playOnHover&&!isTouchDevice.current&&isPlayingRef.current){deactivate();}};const handleKeyDown=e=>{if(!isPlaying&&(e.key===\"Enter\"||e.key===\" \")){e.preventDefault();activate();}};// ── Render-state flags ────────────────────────────────────────────────────\nconst inlinePlaying=isPlaying&&clickBehavior===\"inline\"&&!!iframeSrc;const showFallback=isPlaying&&!iframeSrc;const showThumb=!isPlaying||lightboxOpen;// ── Overlay font styles ───────────────────────────────────────────────────\nconst headlineFontStyle={fontFamily:\"Satoshi, sans-serif\",fontSize:22,fontWeight:700,color:\"#ffffff\",lineHeight:1.3,marginBottom:subheadline?4:0,...headlineFont??{}};const subheadlineFontStyle={fontFamily:\"Satoshi, sans-serif\",fontSize:16,fontWeight:400,color:\"rgba(255,255,255,0.85)\",lineHeight:1.4,...subheadlineFont??{}};// Lightbox inner sizing: fit inside the viewport at the chosen aspect ratio\nconst lbWidth=`min(1200px, 92vw, calc(88vh * ${ratio}))`;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,onClick:handleClick,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onKeyDown:handleKeyDown,tabIndex:inlinePlaying?-1:0,role:\"button\",\"aria-label\":videoTitle?`Play video: ${videoTitle}`:\"Play video\",style:{position:\"relative\",width:\"100%\",aspectRatio:String(ratio),overflow:\"hidden\",borderRadius:cornerRadius,cursor:inlinePlaying?\"default\":\"pointer\",outline:\"none\",userSelect:\"none\",...style},children:[/*#__PURE__*/_jsx(\"div\",{\"aria-live\":\"polite\",style:{position:\"absolute\",width:1,height:1,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0,0,0,0)\",whiteSpace:\"nowrap\",border:0},children:announce}),showThumb&&/*#__PURE__*/_jsxs(_Fragment,{children:[thumbnailUrl?/*#__PURE__*/_jsx(\"img\",{src:thumbnailUrl,alt:videoTitle||\"Video thumbnail\",draggable:false,loading:\"lazy\",decoding:\"async\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}}):/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:\"#1a1a1a\"}}),showPreview&&previewUrl&&/*#__PURE__*/_jsx(\"video\",{ref:previewRef,src:previewUrl,muted:true,loop:true,playsInline:true,autoPlay:true,preload:\"none\",\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{style:{width:playButtonSize(ratio),aspectRatio:\"1\",backgroundColor:playButtonColor,borderRadius:\"50%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxShadow:\"0 4px 24px rgba(0,0,0,0.35)\"},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 20 20\",style:{width:\"42%\",height:\"42%\",marginLeft:\"8%\"},fill:\"white\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"polygon\",{points:\"4,2 18,10 4,18\"})})})}),showOverlay&&(headline||subheadline)&&/*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",bottom:0,left:0,right:0,padding:\"48px 20px 20px\",background:\"linear-gradient(to top, rgba(0,0,0,0.75) 0%, rgba(0,0,0,0) 100%)\",pointerEvents:\"none\"},children:[headline&&/*#__PURE__*/_jsx(\"div\",{style:headlineFontStyle,children:headline}),subheadline&&/*#__PURE__*/_jsx(\"div\",{style:subheadlineFontStyle,children:subheadline})]})]}),inlinePlaying&&/*#__PURE__*/_jsx(\"iframe\",{src:playSrc,title:videoTitle||\"Video\",allow:\"autoplay; fullscreen; picture-in-picture\",allowFullScreen:true,name:\"videoPlayer\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",border:\"none\",display:\"block\"}}),showFallback&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"#111\",color:\"rgba(255,255,255,0.5)\",fontSize:\"0.875em\"},children:\"No embed code set\"}),lightboxOpen&&typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":videoTitle||\"Video player\",onClick:e=>{if(e.target===e.currentTarget)deactivate();},style:{position:\"fixed\",inset:0,zIndex:2147483e3,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.85)\",padding:\"clamp(16px, 4vw, 64px)\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:lbWidth,aspectRatio:String(ratio),borderRadius:cornerRadius,overflow:\"hidden\",boxShadow:\"0 20px 80px rgba(0,0,0,0.5)\",background:\"#000\"},children:/*#__PURE__*/_jsx(\"iframe\",{src:playSrc,title:videoTitle||\"Video\",allow:\"autoplay; fullscreen; picture-in-picture\",allowFullScreen:true,name:\"videoPlayer\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",border:\"none\",display:\"block\"}})}),/*#__PURE__*/_jsx(\"button\",{ref:closeBtnRef,onClick:deactivate,\"aria-label\":\"Close video\",style:{position:\"fixed\",top:\"max(16px, 3vh)\",right:\"max(16px, 3vw)\",width:44,height:44,borderRadius:\"50%\",border:\"none\",background:\"rgba(255,255,255,0.12)\",color:\"#fff\",fontSize:22,lineHeight:1,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:\"\\xd7\"})]}),document.body)]});}// ── Property Controls ─────────────────────────────────────────────────────────\naddPropertyControls(VideoEmbed,{aspectRatio:{type:ControlType.Enum,title:\"Aspect Ratio\",defaultValue:\"Landscape\",options:[\"Landscape\",\"4by5\",\"Square\",\"Vertical\"],optionTitles:[\"Landscape (16:9)\",\"Portrait (4:5)\",\"Square (1:1)\",\"Vertical (9:16)\"]},thumbnail:{type:ControlType.Image,title:\"Thumbnail\"},previewVideo:{type:ControlType.File,title:\"Preview Clip\",description:\"Short muted clip that plays on hover when Play on Hover is Off. Optional.\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\",\"m4v\"]},embedCode:{type:ControlType.String,title:\"Embed Code\",placeholder:\"Paste Spotlightr embed code or plain URL\",displayTextArea:true},clickBehavior:{type:ControlType.Enum,title:\"Click Opens\",defaultValue:\"lightbox\",options:[\"lightbox\",\"inline\"],optionTitles:[\"Lightbox (overlay)\",\"Inline (swap in place)\"],description:\"Lightbox is best inside galleries; Inline suits standalone embeds.\"},playOnHover:{type:ControlType.Boolean,title:\"Play on Hover\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Desktop only: the real video autoplays on hover and stops on mouse-leave. One video at a time.\"},playButtonColor:{type:ControlType.Color,title:\"Play Button\",defaultValue:\"#FFAB3D\"},cornerRadius:{type:ControlType.Number,title:\"Corner Radius\",defaultValue:16,min:0,max:200,step:1,displayStepper:true},showOverlay:{type:ControlType.Boolean,title:\"Show Overlay\",defaultValue:false,enabledTitle:\"Visible\",disabledTitle:\"Hidden\"},headline:{type:ControlType.String,title:\"Headline\",placeholder:\"Video title\",hidden:props=>!props.showOverlay},headlineFont:{type:ControlType.Font,title:\"Headline Font\",controls:\"extended\",defaultValue:{fontSize:22},hidden:props=>!props.showOverlay},subheadline:{type:ControlType.String,title:\"Subheadline\",placeholder:\"Short description\",hidden:props=>!props.showOverlay},subheadlineFont:{type:ControlType.Font,title:\"Subhead Font\",controls:\"extended\",defaultValue:{fontSize:16},hidden:props=>!props.showOverlay},youtubeUrl:{type:ControlType.String,title:\"YouTube URL\",placeholder:\"https://youtube.com/watch?v=… (optional)\"},videoTitle:{type:ControlType.String,title:\"Schema: Title\",placeholder:\"Video title for SEO\"},videoDescription:{type:ControlType.String,title:\"Schema: Description\",placeholder:\"Video description for SEO\"},uploadDate:{type:ControlType.String,title:\"Schema: Upload Date\",placeholder:\"2024-03-15\"},duration:{type:ControlType.String,title:\"Schema: Duration\",placeholder:\"PT4M32S\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VideoEmbed\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VideoEmbed.map"],"mappings":"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"}