{"version":3,"file":"RandomizedTreatmentCalloutOverride.D2j6pmau.mjs","names":["forwardRef","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/8s2NYS7FRiEKc7rPUn0N/LOw9XZZXj86m1j25Te9t/RandomizedTreatmentCalloutOverride.js"],"sourcesContent":["// User request: Create a Framer code override export named RandomizedTreatmentCalloutOverride that, after client mount, treats each direct child as one treatment list area, shows exactly one random card per list, avoids duplicates across lists when possible using first anchor href (fallback normalized text), randomizes list-column order, preserves layout by fully hiding non-chosen cards, and safely re-runs during CMS hydration without infinite loops.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";const SELECTED_MARKER_ATTRIBUTE=\"data-randomized-treatment-selected\";export function RandomizedTreatmentCalloutOverride(Component){const Wrapped=/*#__PURE__*/forwardRef(function RandomizedTreatmentCalloutOverride(props,ref){const rootRef=useRef(null);const storageRef=useRef(new WeakMap);const debounceTimerRef=useRef(null);const observingUntilRef=useRef(0);const isApplyingRef=useRef(false);const refresh=useCallback(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\"){return;}const root=rootRef.current;if(!root)return;if(isApplyingRef.current)return;isApplyingRef.current=true;try{const listColumns=getDirectElementChildren(root).slice(0,3);if(listColumns.length===0)return;const cardsByList=listColumns.map(list=>getCardsForListColumn(list));for(const cards of cardsByList){for(const card of cards)restoreCard(card,storageRef);}const chosenCards=chooseCardsWithoutDuplicates(cardsByList);const chosenElements=new Set(chosenCards.map(card=>card?.element||null).filter(element=>element!==null));for(let i=0;i<cardsByList.length;i+=1){const chosen=chosenCards[i];for(const card of cardsByList[i]){if(card.element===chosen?.element){restoreCard(card,storageRef);markCardAsSelected(card);}else{hideCard(card,storageRef);clearCardSelectedMarker(card);}}}// Defensive cleanup: keep marker only on currently chosen cards.\nconst previouslyMarked=Array.from(root.querySelectorAll(`[${SELECTED_MARKER_ATTRIBUTE}=\"true\"]`)).filter(node=>node instanceof HTMLElement);for(const node of previouslyMarked){if(!chosenElements.has(node)){node.removeAttribute(SELECTED_MARKER_ATTRIBUTE);}}const shuffledColumns=shuffleArray([...listColumns]);for(const column of shuffledColumns){root.appendChild(column);}}finally{window.setTimeout(()=>{isApplyingRef.current=false;},0);}},[]);useEffect(()=>{if(typeof window===\"undefined\"||typeof MutationObserver===\"undefined\"){return;}const root=rootRef.current;if(!root)return;const scheduleRefresh=()=>{if(debounceTimerRef.current!==null){window.clearTimeout(debounceTimerRef.current);}debounceTimerRef.current=window.setTimeout(()=>{refresh();},120);};refresh();observingUntilRef.current=Date.now()+5e3;const observer=new MutationObserver(()=>{if(isApplyingRef.current)return;if(Date.now()>observingUntilRef.current)return;scheduleRefresh();});observer.observe(root,{childList:true,subtree:true});return()=>{observer.disconnect();if(debounceTimerRef.current!==null){window.clearTimeout(debounceTimerRef.current);debounceTimerRef.current=null;}};},[refresh]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,rootRef),...props});});return Wrapped;}function getDirectElementChildren(root){return Array.from(root.children).filter(child=>child instanceof HTMLElement);}function getCardsForListColumn(listColumn){const directChildren=getDirectElementChildren(listColumn);let cardElements=directChildren;if(directChildren.length===1){const single=directChildren[0];const nested=getDirectElementChildren(single);if(nested.length>0){cardElements=nested;}}if(cardElements.length<=1){try{const scoped=Array.from(listColumn.querySelectorAll(\":scope > * > *\")).filter(node=>node instanceof HTMLElement);if(scoped.length>1)cardElements=scoped;}catch{// Older engines may fail on :scope. In that case, keep previously resolved candidates.\n}}return cardElements.map(element=>({element,key:getCardUniquenessKey(element)}));}function getCardUniquenessKey(cardElement){const selfHref=cardElement.tagName.toLowerCase()===\"a\"?String(cardElement.getAttribute(\"href\")||\"\"):\"\";if(selfHref){const normalizedHref=normalizeHref(selfHref);if(normalizedHref)return`href:${normalizedHref}`;}const anchor=cardElement.querySelector(\"a[href]\");if(anchor){const rawHref=String(anchor.getAttribute(\"href\")||anchor.href||\"\");const normalizedHref=normalizeHref(rawHref);if(normalizedHref)return`href:${normalizedHref}`;}const titleCandidate=getPreferredTitleText(cardElement);if(titleCandidate)return`text:${normalizeText(titleCandidate)}`;return`text:${normalizeText(cardElement.textContent||\"\")}`;}function getPreferredTitleText(cardElement){const heading=cardElement.querySelector(\"h1, h2, h3, h4, h5, h6\");if(heading){const headingText=normalizeText(heading.textContent||\"\");if(headingText)return headingText;}const labelElement=cardElement.querySelector(\"[aria-label], [title]\");if(labelElement){const ariaLabel=normalizeText(labelElement.getAttribute(\"aria-label\")||\"\");if(ariaLabel)return ariaLabel;const title=normalizeText(labelElement.getAttribute(\"title\")||\"\");if(title)return title;}const ownAriaLabel=normalizeText(cardElement.getAttribute(\"aria-label\")||\"\");if(ownAriaLabel)return ownAriaLabel;const ownTitle=normalizeText(cardElement.getAttribute(\"title\")||\"\");if(ownTitle)return ownTitle;return\"\";}function normalizeHref(href){const trimmed=String(href||\"\").trim();if(!trimmed)return\"\";if(typeof window!==\"undefined\"){try{const url=new URL(trimmed,window.location.href);return`${url.origin}${url.pathname}`.replace(/\\/+$/,\"\").toLowerCase();}catch{return trimmed.toLowerCase();}}return trimmed.toLowerCase();}function normalizeText(value){return String(value||\"\").trim().replace(/\\s+/g,\" \").toLowerCase();}function chooseCardsWithoutDuplicates(cardsByList){const selections=[];const usedKeys=new Set;for(const cards of cardsByList){if(!cards.length){selections.push(null);continue;}const shuffled=shuffleArray([...cards]);let chosen=null;for(const card of shuffled){if(!usedKeys.has(card.key)){chosen=card;break;}}if(!chosen)chosen=shuffled[0];usedKeys.add(chosen.key);selections.push(chosen);}return selections;}function hideCard(card,storageRef){const element=card.element;if(!storageRef.current.has(element)){storageRef.current.set(element,{display:element.style.getPropertyValue(\"display\"),displayPriority:element.style.getPropertyPriority(\"display\"),ariaHidden:element.getAttribute(\"aria-hidden\")});}element.style.setProperty(\"display\",\"none\",\"important\");element.setAttribute(\"aria-hidden\",\"true\");}function restoreCard(card,storageRef){const element=card.element;const stored=storageRef.current.get(element);if(stored){if(stored.display){element.style.setProperty(\"display\",stored.display,stored.displayPriority||\"\");}else{element.style.removeProperty(\"display\");}if(stored.ariaHidden===null){element.removeAttribute(\"aria-hidden\");}else{element.setAttribute(\"aria-hidden\",stored.ariaHidden);}}else{element.style.removeProperty(\"display\");element.removeAttribute(\"aria-hidden\");}}function markCardAsSelected(card){card.element.setAttribute(SELECTED_MARKER_ATTRIBUTE,\"true\");}function clearCardSelectedMarker(card){card.element.removeAttribute(SELECTED_MARKER_ATTRIBUTE);}function mergeRefs(forwardedRef,internalRef){return node=>{internalRef.current=node;if(typeof forwardedRef===\"function\"){forwardedRef(node);}else if(forwardedRef){forwardedRef.current=node;}};}function shuffleArray(array){for(let i=array.length-1;i>0;i-=1){const j=Math.floor(Math.random()*(i+1));const temp=array[i];array[i]=array[j];array[j]=temp;}return array;}\nexport const __FramerMetadata__ = {\"exports\":{\"RandomizedTreatmentCalloutOverride\":{\"type\":\"reactHoc\",\"name\":\"RandomizedTreatmentCalloutOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RandomizedTreatmentCalloutOverride.map"],"mappings":"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"}