{"version":3,"file":"ChannelHandoffThread.D-0W1K2T.mjs","names":["React.useId","React.useMemo","React.useState","React.useRef","React.Fragment"],"sources":["https:/framerusercontent.com/modules/6rmFZtQXhJ28sPpbvJcZ/UN8e86kqI5J9KJs2cIss/ChannelHandoffThread.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const GRAIN_SCALE=.17;const GRAIN_TEXTURE=\"https://framerusercontent.com/images/rR6HYXBrMmX4cRpXfXUOvpvpB0.png\";const AGENT_MARKER=\"①\";const CUSTOMER_MARKER=\"②\";const FONT='\"ES Klarheit Grotesk Book\", \"ES Klarheit Grotesk\", Inter, ui-sans-serif, system-ui, sans-serif';const clamp=(n,lo,hi)=>Math.min(hi,Math.max(lo,n));function parsePhase(raw,phaseIndex){if(!raw)return[];return raw.split(/\\n+/g).map(line=>line.trim()).filter(Boolean).map(line=>{const isCustomer=line.charAt(0)===CUSTOMER_MARKER;const isAgent=line.charAt(0)===AGENT_MARKER;const text=isCustomer||isAgent?line.slice(1).trim():line;return{speaker:isCustomer?\"customer\":\"agent\",text,phase:phaseIndex};}).filter(m=>m.text.length>0);}function WhatsappIcon({size=15}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"currentColor\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 2a10 10 0 0 0-8.6 15l-1.3 4.8 4.9-1.3A10 10 0 1 0 12 2Zm0 18.2a8.2 8.2 0 0 1-4.2-1.2l-.3-.2-2.9.8.8-2.8-.2-.3A8.2 8.2 0 1 1 12 20.2Zm4.5-6.1c-.2-.1-1.4-.7-1.7-.8-.2-.1-.4-.1-.5.1-.2.2-.6.8-.8 1-.1.1-.3.2-.5 0-.2-.1-1-.4-1.9-1.2-.7-.6-1.2-1.4-1.3-1.6-.1-.2 0-.3.1-.5l.4-.4c.1-.1.2-.3.2-.4 0-.2 0-.3-.1-.4l-.8-1.9c-.2-.5-.4-.4-.5-.4h-.5c-.2 0-.4 0-.6.3-.2.2-.8.8-.8 2s.8 2.3.9 2.5c.1.2 1.6 2.5 4 3.5.5.2 1 .4 1.3.5.6.2 1 .1 1.4.1.4-.1 1.4-.6 1.6-1.1.2-.6.2-1 .1-1.1-.1-.1-.2-.2-.4-.3Z\"})});}function PhoneIcon({size=15}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"currentColor\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M6.6 10.8a15.6 15.6 0 0 0 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.5.6.6 0 1 .5 1 1V20c0 .6-.4 1-1 1A17 17 0 0 1 3 4c0-.6.5-1 1-1h3.4c.6 0 1 .4 1 1 0 1.2.2 2.4.6 3.5.1.4 0 .8-.2 1l-2.2 2.3Z\"})});}function WebIcon({size=15}){return /*#__PURE__*/_jsxs(\"svg\",{width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.7\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"3\",y:\"4\",width:\"18\",height:\"14\",rx:\"2\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M3 8h18\",strokeLinecap:\"round\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"5.6\",cy:\"6\",r:\"0.5\",fill:\"currentColor\",stroke:\"none\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"7.4\",cy:\"6\",r:\"0.5\",fill:\"currentColor\",stroke:\"none\"})]});}function ChannelIcon({kind,size}){const k=(kind||\"\").toLowerCase();if(k.startsWith(\"what\"))return /*#__PURE__*/_jsx(WhatsappIcon,{size:size});if(k.startsWith(\"voi\")||k.startsWith(\"voz\")||k.startsWith(\"call\")||k.startsWith(\"llam\"))return /*#__PURE__*/_jsx(PhoneIcon,{size:size});return /*#__PURE__*/_jsx(WebIcon,{size:size});}/**\n * Channel Handoff Thread\n *\n * @framerIntrinsicWidth 1080\n * @framerIntrinsicHeight 520\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function ChannelHandoffThread(props){const{phases,height,radius,grain,startRevealed,autoplay,wordMs,messagePauseMs,phasePauseMs,loopDelayMs,cardFill,scrim,threadWidth,agentFill,agentText,customerFill,customerText,badgeFill,badgeText,dividerText,accent,titleColor,style}=props;const isStatic=useIsStaticRenderer();const uid=React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const cls=`cht-${uid}`;const reduced=React.useMemo(()=>{if(isStatic||typeof window===\"undefined\"||!window.matchMedia)return false;return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;},[isStatic]);const clean=(phases||[]).filter(p=>p&&(p.conversation||\"\").trim().length>0);const messages=React.useMemo(()=>clean.flatMap((p,i)=>parsePhase(p.conversation,i)),[clean.map(p=>p.conversation).join(\"|\")]);// How many messages are revealed. Static / reduced-motion show everything.\nconst[revealed,setRevealed]=React.useState(isStatic||reduced?messages.length:clamp(startRevealed,0,messages.length));const timer=React.useRef(null);const started=React.useRef(false);const rootRef=React.useRef(null);const clearTimer=()=>{if(timer.current){clearTimeout(timer.current);timer.current=null;}};// Drive the thread forward one message at a time; loop from the top.\nReact.useEffect(()=>{if(isStatic||reduced||!autoplay||messages.length===0)return;const schedule=()=>{setRevealed(r=>{const next=r>=messages.length?0:r+1;const crossingPhase=next>0&&next<messages.length+1&&messages[next-1]&&(next-1===0||messages[next-2]?.phase!==messages[next-1]?.phase);const restarting=next===0;const words=next>0?messages[next-1].text.split(/\\s+/).length:0;const revealTime=next>0?words*wordMs:0;const pause=restarting?loopDelayMs:crossingPhase?phasePauseMs:messagePauseMs;clearTimer();timer.current=setTimeout(schedule,revealTime+pause);return next;});};// start once, when scrolled into view\nconst begin=()=>{if(started.current)return;started.current=true;setRevealed(0);timer.current=setTimeout(schedule,400);};const el=rootRef.current;if(!el||typeof IntersectionObserver===\"undefined\"){begin();return clearTimer;}const io=new IntersectionObserver(entries=>{if(entries.some(e=>e.isIntersecting)){begin();io.disconnect();}},{threshold:.3});io.observe(el);return()=>{io.disconnect();clearTimer();};},[isStatic,reduced,autoplay,messages.length,wordMs,messagePauseMs,phasePauseMs,loopDelayMs]);const shownMessages=messages.slice(0,Math.max(0,revealed));const activePhase=shownMessages.length>0?shownMessages[shownMessages.length-1].phase:0;const css=`\n@font-face {\n    font-family: \"ES Klarheit Grotesk Book\";\n    src: url(\"https://framerusercontent.com/assets/uGvIBGEJGd3jpeCBJ6Kl0vkog.woff\") format(\"woff\");\n    font-weight: 450;\n    font-style: normal;\n    font-display: swap;\n}\n.${cls} {\n    position: relative;\n    width: 100%;\n    height: 100%;\n    border-radius: ${radius}px;\n    overflow: hidden;\n    container-type: inline-size;\n    font-family: ${FONT};\n    font-weight: 450;\n    background: ${cardFill};\n    isolation: isolate;\n}\n.${cls}-bg {\n    position: absolute;\n    inset: 0;\n    background-size: cover;\n    background-position: center right;\n    opacity: 0;\n    transition: opacity 0.9s ease;\n    z-index: 0;\n}\n.${cls}-bg[data-active=\"true\"] { opacity: 1; }\n.${cls}-video {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center right;\n    z-index: 0;\n    animation: ${cls}-fadein 0.7s ease both;\n}\n@keyframes ${cls}-fadein { from { opacity: 0; } to { opacity: 1; } }\n.${cls}-grain {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    pointer-events: none;\n    opacity: ${(grain*GRAIN_SCALE).toFixed(3)};\n    background-image: url(\"${GRAIN_TEXTURE}\");\n    background-repeat: repeat;\n    ${isStatic?\"\":`animation: ${cls}-grain-boil 1.1s steps(1, end) infinite;`}\n}\n@keyframes ${cls}-grain-boil {\n    0%   { background-position:    0px    0px; }\n    10%  { background-position:  -37px   19px; }\n    20%  { background-position:   61px  -43px; }\n    30%  { background-position:  -83px  -11px; }\n    40%  { background-position:   29px   67px; }\n    50%  { background-position: -101px   41px; }\n    60%  { background-position:   73px  -79px; }\n    70%  { background-position:  -19px  103px; }\n    80%  { background-position:   91px   13px; }\n    90%  { background-position:  -53px  -61px; }\n    100% { background-position:    0px    0px; }\n}\n.${cls}-scrim {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    background: linear-gradient(90deg, ${scrim} 0%, ${scrim} 40%, transparent 82%);\n}\n.${cls}-content {\n    position: absolute;\n    inset: 0;\n    z-index: 2;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n    gap: 18px;\n    padding: 40px 44px;\n    box-sizing: border-box;\n}\n.${cls}-head {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: 8px;\n    flex: none;\n}\n.${cls}-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    padding: 6px 12px;\n    border-radius: 999px;\n    background: ${badgeFill};\n    color: ${badgeText};\n    font-size: 12px;\n    letter-spacing: 0.02em;\n    transition: opacity 0.4s ease;\n}\n.${cls}-badge svg { display: block; }\n.${cls}-thread {\n    flex: 1 1 auto;\n    min-height: 0;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n    gap: 10px;\n    max-width: ${threadWidth}px;\n    overflow: hidden;\n    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 16%, #000 100%);\n    mask-image: linear-gradient(to bottom, transparent 0%, #000 16%, #000 100%);\n    padding-top: 8px;\n}\n.${cls}-divider {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    align-self: center;\n    color: ${dividerText};\n    font-size: 11px;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    padding: 4px 0;\n    opacity: 0.85;\n    animation: ${cls}-in 0.4s ease both;\n}\n.${cls}-divider svg { display: block; }\n.${cls}-divider::before, .${cls}-divider::after {\n    content: \"\";\n    height: 1px;\n    width: 26px;\n    background: currentColor;\n    opacity: 0.4;\n}\n.${cls}-msg {\n    max-width: 84%;\n    min-width: 0;\n    width: fit-content;\n    white-space: normal;\n    overflow-wrap: break-word;\n    padding: 10px 14px;\n    border-radius: 16px;\n    font-size: 14px;\n    line-height: 1.4;\n    animation: ${cls}-in 0.34s cubic-bezier(0,0,0.2,1) both;\n    box-shadow: 0 4px 14px rgba(0,0,0,0.18);\n}\n.${cls}-msg[data-speaker=\"agent\"] {\n    align-self: flex-start;\n    background: ${agentFill};\n    color: ${agentText};\n    border-radius: 4px 14px 14px 14px;\n}\n/* brightness() keeps the white text legible over a bright photo, while\n   saturate() lets the backdrop's own colour bleed through the glass. Same\n   treatment as the carousel bubbles on the other landings. */\n.${cls}-msg[data-speaker=\"customer\"] {\n    align-self: flex-end;\n    background: ${customerFill};\n    color: ${customerText};\n    border-radius: 14px 14px 4px 14px;\n    -webkit-backdrop-filter: blur(24px) saturate(160%) brightness(0.55);\n    backdrop-filter: blur(24px) saturate(160%) brightness(0.55);\n    border: 1px solid rgba(255, 255, 255, 0.16);\n}\n.${cls}-word {\n    opacity: 0;\n    animation: ${cls}-word 0.2s ease forwards;\n}\n@keyframes ${cls}-in {\n    from { opacity: 0.001; transform: translateY(8px) scale(0.96); }\n    to { opacity: 1; transform: none; }\n}\n@keyframes ${cls}-word { to { opacity: 1; } }\n@container (max-width: 720px) {\n    .${cls}-content { padding: 28px 24px; gap: 14px; }\n    .${cls}-thread { max-width: 100%; }\n    .${cls}-msg { max-width: 90%; font-size: 13px; }\n}\n@media (prefers-reduced-motion: reduce) {\n    .${cls}-msg, .${cls}-divider { animation: none; }\n    .${cls}-word { opacity: 1; animation: none; }\n}\n`;return /*#__PURE__*/_jsxs(\"div\",{style:{...style,height,width:\"100%\"},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:css}}),/*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:cls,style:{height:\"100%\"},children:[clean.map((p,i)=>/*#__PURE__*/_jsx(\"div\",{className:`${cls}-bg`,\"data-active\":i===activePhase,style:{backgroundImage:p.image?`url(${p.image})`:undefined}},i)),!isStatic&&!reduced&&clean[activePhase]?.video?/*#__PURE__*/_jsx(\"video\",{className:`${cls}-video`,src:clean[activePhase].video,poster:clean[activePhase].image||undefined,autoPlay:true,muted:true,loop:true,playsInline:true,preload:\"auto\"},activePhase):null,/*#__PURE__*/_jsx(\"div\",{className:`${cls}-scrim`}),grain>0?/*#__PURE__*/_jsx(\"div\",{className:`${cls}-grain`,\"aria-hidden\":\"true\"}):null,/*#__PURE__*/_jsxs(\"div\",{className:`${cls}-content`,children:[/*#__PURE__*/_jsx(\"div\",{className:`${cls}-head`,children:/*#__PURE__*/_jsxs(\"span\",{className:`${cls}-badge`,children:[/*#__PURE__*/_jsx(ChannelIcon,{kind:clean[activePhase]?.kind||\"\"}),clean[activePhase]?.label||\"\"]})}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-thread`,children:shownMessages.map((m,i)=>{const firstOfPhase=i===0||shownMessages[i-1].phase!==m.phase;const showDivider=firstOfPhase&&m.phase>0;const ph=clean[m.phase];return /*#__PURE__*/_jsxs(React.Fragment,{children:[showDivider&&/*#__PURE__*/_jsxs(\"div\",{className:`${cls}-divider`,children:[/*#__PURE__*/_jsx(ChannelIcon,{kind:ph?.kind||\"\",size:12}),`Sigue en ${ph?.label||\"\"}`]}),/*#__PURE__*/_jsx(\"div\",{className:`${cls}-msg`,\"data-speaker\":m.speaker,children:m.text.split(/\\s+/).map((w,wi)=>/*#__PURE__*/_jsxs(\"span\",{className:`${cls}-word`,style:{animationDelay:`${wi*wordMs}ms`},children:[w,wi<m.text.split(/\\s+/).length-1?\"\\xa0\":\"\"]},wi))})]},`${m.phase}-${i}`);})})]})]})]});}ChannelHandoffThread.defaultProps={width:1080,height:520};addPropertyControls(ChannelHandoffThread,{phases:{type:ControlType.Array,title:\"Phases\",maxCount:4,defaultValue:[{kind:\"whatsapp\",label:\"WhatsApp\",image:\"\",conversation:\"\"},{kind:\"voice\",label:\"Llamada\",image:\"\",conversation:\"\"},{kind:\"web\",label:\"Chat web\",image:\"\",conversation:\"\"}],control:{type:ControlType.Object,controls:{kind:{type:ControlType.Enum,title:\"Icon\",options:[\"whatsapp\",\"voice\",\"web\"],optionTitles:[\"WhatsApp\",\"Voz\",\"Web\"],defaultValue:\"whatsapp\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"WhatsApp\"},// Plain URL string, not ControlType.Image: an image control nested in an\n// object inside an array silently keeps its old value on write.\nimage:{type:ControlType.String,title:\"Image URL\",defaultValue:\"\"},video:{type:ControlType.String,title:\"Video URL\",defaultValue:\"\"},conversation:{type:ControlType.String,title:\"Conversation\",defaultValue:\"\",displayTextArea:true,description:`One message per line. ${AGENT_MARKER} = Silia, ${CUSTOMER_MARKER} = customer.`}}}},height:{type:ControlType.Number,title:\"Height\",defaultValue:520,min:300,max:900,step:10},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:24,min:0,max:48,step:1},grain:{type:ControlType.Number,title:\"Grain\",defaultValue:.11,min:0,max:.4,step:.005,description:\"Vintage grain over the footage, same texture as the site. 0 turns it off.\"},startRevealed:{type:ControlType.Number,title:\"Start Revealed\",defaultValue:0,min:0,max:20,step:1,description:\"Messages shown before autoplay starts. Static render shows all.\"},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true},wordMs:{type:ControlType.Number,title:\"Word ms\",defaultValue:42,min:0,max:140,step:2},messagePauseMs:{type:ControlType.Number,title:\"Msg Pause\",defaultValue:520,min:0,max:2e3,step:20},phasePauseMs:{type:ControlType.Number,title:\"Phase Pause\",defaultValue:1100,min:0,max:4e3,step:50},loopDelayMs:{type:ControlType.Number,title:\"Loop Delay\",defaultValue:2600,min:0,max:8e3,step:100},cardFill:{type:ControlType.Color,title:\"Card Fill\",defaultValue:\"#0A0A0C\"},scrim:{type:ControlType.Color,title:\"Scrim\",defaultValue:\"rgba(8,8,12,0.82)\"},threadWidth:{type:ControlType.Number,title:\"Thread Width\",defaultValue:460,min:280,max:720,step:10},agentFill:{type:ControlType.Color,title:\"Agent Fill\",defaultValue:\"#FFFFFF\"},agentText:{type:ControlType.Color,title:\"Agent Text\",defaultValue:\"#111111\"},customerFill:{type:ControlType.Color,title:\"Customer Fill\",defaultValue:\"rgba(10,10,12,0.34)\"},customerText:{type:ControlType.Color,title:\"Customer Text\",defaultValue:\"#FFFFFF\"},badgeFill:{type:ControlType.Color,title:\"Badge Fill\",defaultValue:\"rgba(255,255,255,0.14)\"},badgeText:{type:ControlType.Color,title:\"Badge Text\",defaultValue:\"#FFFFFF\"},dividerText:{type:ControlType.Color,title:\"Divider Text\",defaultValue:\"rgba(255,255,255,0.7)\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#CAF91A\"},titleColor:{type:ControlType.Color,title:\"Title\",defaultValue:\"#FFFFFF\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ChannelHandoffThread\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1080\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"520\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ChannelHandoffThread.map"],"mappings":"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"}