{"version":3,"file":"Utilities.DSsaHkdp.mjs","names":["useState","p","useRef","container"],"sources":["https:/framerusercontent.com/modules/e3mbKyeVheNgjZDZ9MDP/5zAn7HoiJUsgzIYM2eEP/Utilities.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";export function withConditionalDisplay(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){const filterProjectContainer=document.querySelector('[aria-label*=\"filter-project-container\"]');const noFilteringResults=document.querySelector('[aria-label*=\"no-filtering-results\"]');const deleteFilterElement=document.querySelector('[aria-label*=\"delete-filter-btn\"]');if(filterProjectContainer&&noFilteringResults){let previousContentCount=filterProjectContainer.childElementCount;const updateStyles=()=>{const cardComponents=filterProjectContainer.querySelectorAll('[aria-label*=\"project-card\"]');const nextDiv=noFilteringResults.nextElementSibling;if(cardComponents.length>0){filterProjectContainer.style.height=\"fit-content\";noFilteringResults.style.opacity=\"0\";noFilteringResults.style.height=\"0px\";deleteFilterElement.style.cursor=\"default\";if(nextDiv){nextDiv.style.height=\"fit-content\";}}else{filterProjectContainer.style.height=\"0px\";noFilteringResults.style.height=\"fit-content\";deleteFilterElement.style.cursor=\"pointer\";// Apply opacity after current execution stack\nsetTimeout(()=>{noFilteringResults.style.setProperty(\"opacity\",\"1\",\"important\");},300);if(nextDiv){nextDiv.style.height=\"0px\";}}};const observer=new MutationObserver(()=>{const currentContentCount=filterProjectContainer.childElementCount;// Ensure updateStyles is called even if there are no children\nif(currentContentCount!==previousContentCount||currentContentCount===0){previousContentCount=currentContentCount;updateStyles();}});observer.observe(filterProjectContainer,{childList:true,subtree:true,attributes:false});// Initial call to set styles\nupdateStyles();return()=>observer.disconnect();}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withScrollAnimation(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){const scrollItems=document.querySelectorAll('[aria-label=\"scroll-item\"]');const imageGalleryContent=document.querySelector('[aria-label=\"image-gallery-content\"]');const imageGalleryWrapper=document.querySelector('[aria-label=\"image-gallery-wrapper\"]');const projectsWrapper=document.getElementById(\"projects-wrapper\");let currentActiveIndex=-1// Track the current active index\n;let isUpdating=false// Debounce flag to prevent multiple executions\n;// Add clip-path style to the image-gallery-wrapper\nif(imageGalleryWrapper){imageGalleryWrapper.style.clipPath=\"inset(1px 0 1px 0)\";}const updateActiveIndex=()=>{if(isUpdating)return;// Skip execution if already processing\nisUpdating=true;const viewportCenter=window.innerHeight/2;let newActiveIndex=-1// Default if no active item is found\n;const lastIndex=scrollItems.length-1;scrollItems.forEach((item,index)=>{const rect=item.getBoundingClientRect();const itemCenter=rect.top+rect.height/2;const isActive=Math.abs(viewportCenter-itemCenter)<rect.height/2;item.style.opacity=isActive?\"1\":\"0.5\";if(isActive){const subtractValue=Math.floor(index/2)// Calculate how much to subtract\n;newActiveIndex=index-subtractValue;}});// Handle beyond last item\nconst lastItem=scrollItems[lastIndex];if(lastItem){const lastItemBottom=lastItem.getBoundingClientRect().bottom;if(lastItemBottom<viewportCenter){newActiveIndex=999// Custom value for beyond last item\n;}}// Only update if the active index has changed\nif(newActiveIndex!==currentActiveIndex){currentActiveIndex=newActiveIndex;if(imageGalleryContent){imageGalleryContent.style.transform=`translate3d(0, calc((${newActiveIndex} - 1) * -100%), 0)`;imageGalleryContent.style.transition=\"transform 0.5s ease-in-out\";}if(projectsWrapper){projectsWrapper.style.setProperty(\"--index\",currentActiveIndex.toString());}}isUpdating=false// Reset debounce flag\n;};window.addEventListener(\"scroll\",()=>window.requestAnimationFrame(updateActiveIndex));updateActiveIndex()// Initial setup\n;return()=>window.removeEventListener(\"scroll\",updateActiveIndex);}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withScrollAnimationToImages(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){const imageGallery=document.querySelectorAll('[aria-label=\"image-gallery\"]');const imageGalleryWrapper=document.querySelector('[aria-label=\"image-gallery-wrapper\"]');const projectsWrapper=document.getElementById(\"projects-wrapper\");if(imageGalleryWrapper&&projectsWrapper){// Function to animate showing the gallery wrapper\nconst showAnimation=()=>{// Make the wrapper visible before animating opacity\nimageGalleryWrapper.style.display=\"fixed\";imageGalleryWrapper.style.opacity=\"1\";imageGalleryWrapper.style.transition=\"opacity 0.4s ease-out\";};// Function to animate hiding the gallery wrapper\nconst hideAnimation=()=>{// Animate opacity to 0\nimageGalleryWrapper.style.opacity=\"0\";imageGalleryWrapper.style.transition=\"opacity 0.5s ease-in-out\";// Hide the element after the animation ends\nconst onTransitionEnd=()=>{imageGalleryWrapper.removeEventListener(\"transitionend\",onTransitionEnd);};imageGalleryWrapper.addEventListener(\"transitionend\",onTransitionEnd);};// Function to check and trigger animations\nconst checkAndAnimate=()=>{const index=parseInt(projectsWrapper.style.getPropertyValue(\"--index\"));if(index===1||index===imageGallery.length-1){showAnimation()// Show animation when index is 1 or the last one\n;}else if(index===999||index===-1){hideAnimation()// Hide animation when index is 999\n;}};// Add MutationObserver to watch for changes\nconst observer=new MutationObserver(checkAndAnimate);// Observe changes to the `style` attribute of `projects-wrapper`\nobserver.observe(projectsWrapper,{attributes:true,attributeFilter:[\"style\"]});// Initial check\ncheckAndAnimate();// Cleanup on unmount\nreturn()=>{observer.disconnect();};}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withWidthAndHeightImages(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){const overlayBottom=document.getElementById(\"overlay-bottom\");const overlayRight=document.getElementById(\"overlay-right\");if(overlayBottom&&overlayRight){// Function to update the styles\nconst updateStyles=()=>{overlayBottom.style.height=\"40.2%\";overlayBottom.style.transition=\"height 0.4s ease-in-out\";overlayRight.style.width=\"24.25%\";overlayRight.style.transition=\"width 0.4s ease-in-out\";};// Initial style update\nupdateStyles();// Cleanup on unmount\nreturn()=>{overlayBottom.style.height=\"\"// Reset styles on unmount\n;overlayRight.style.width=\"\";};}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withMaxWidthAndLeftGap(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Get the content-wrapper-blog container\nconst contentWrapper=document.getElementById(\"content-wrapper-blog\");// Get all meta-info containers\nconst metaInfos=document.querySelectorAll(\"#meta-info, #meta-info-1, #meta-info-2\");// Apply styles to direct children of content-wrapper-blog\nif(contentWrapper){const contentChildren=contentWrapper.querySelectorAll(\":scope > *:not(img)\");contentChildren.forEach(el=>{const element=el;element.style.maxWidth=\"600px\";element.style.paddingLeft=\"40px\";element.style.marginLeft=\"31%\";});}// Apply styles to all meta-info containers\nmetaInfos.forEach(metaInfo=>{const metaInfoElement=metaInfo;metaInfoElement.style.maxWidth=\"600px\";metaInfoElement.style.paddingLeft=\"40px\";metaInfoElement.style.marginLeft=\"31%\";});}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withMaxWidthImages(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Get the content-wrapper-blog container\nconst contentWrapper=document.getElementById(\"content-wrapper-blog\");// Apply styles to direct <img> children of content-wrapper-blog\nif(contentWrapper){const images=contentWrapper.querySelectorAll(\":scope > img\")// Select only direct <img> children\n;images.forEach(img=>{const imageElement=img;// Ensure the image fills the space\nimageElement.style.width=\"100%\";imageElement.style.height=\"auto\";imageElement.style.objectFit=\"cover\"// Optional: Ensures the image covers its container without distortion\n;});// Select all <ul> direct children\nconst ulElements=contentWrapper.querySelectorAll(\":scope > ul\");ulElements.forEach(ul=>{// Select all <li> children within each <ul>\nconst liElements=ul.querySelectorAll(\":scope > li\");liElements.forEach(li=>{const styleSheet=document.styleSheets[0];// Add a CSS rule for ::before pseudo-element inside <li>\nstyleSheet.insertRule(`#content-wrapper-blog > ul > li::before {\n                                    display: table-cell;\n                                    width: 2.25ch;\n                                    box-sizing: border-box;\n                                    padding-inline-end: 0.75ch;\n                                    content: \"•\";\n                                    font-size: 12px;\n                                }`,styleSheet.cssRules.length);});});}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withReducedHeadingMargins(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Get the content-wrapper-blog container\nconst contentWrapper=document.getElementById(\"content-wrapper-blog\");if(contentWrapper){// Select all direct heading tags (h1 to h6)\nconst headings=contentWrapper.querySelectorAll(\":scope > h1, :scope > h2, :scope > h3, :scope > h4, :scope > h5, :scope > h6\");headings.forEach(heading=>{const element=heading;const currentMarginTop=window.getComputedStyle(element).marginTop;// Parse the current margin-top value and reduce it by 15%\nif(currentMarginTop){const currentMarginTopValue=parseFloat(currentMarginTop);const reducedMarginTopValue=currentMarginTopValue*.85;element.style.marginTop=`${reducedMarginTopValue}px`;}});}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export const withShuffledAriaLabels=Component=>{const ShuffledComponent=props=>{const componentRef=useRef(null);const shuffleItems=()=>{const container=componentRef.current;if(!container)return;const items=Array.from(container.querySelectorAll('[id*=\"card-item\"]'));// Shuffle the array\nfor(let i=items.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[items[i],items[j]]=[items[j],items[i]];}return items;};const displayFirstThreeItems=items=>{items.forEach((item,index)=>{item.style.display=index<3?\"\":\"none\";});};useEffect(()=>{const shuffledItems=shuffleItems();displayFirstThreeItems(shuffledItems);},[])// Empty dependency array ensures this runs once after initial render\n;return /*#__PURE__*/_jsx(Component,{ref:componentRef,...props});};return ShuffledComponent;};export const withBlogShuffledAriaLabels=Component=>{const ShuffledBlogComponent=props=>{const componentRef=useRef(null);const shuffleItems=()=>{const container=componentRef.current;if(!container)return;const items=Array.from(container.querySelectorAll('[aria-label*=\"card-item\"]'));// Shuffle the array\nfor(let i=items.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[items[i],items[j]]=[items[j],items[i]];}return items;};const displayFirstTwentyFourItems=items=>{items.forEach((item,index)=>{item.style.display=index<24?\"\":\"none\";});};useEffect(()=>{const shuffledItems=shuffleItems();displayFirstTwentyFourItems(shuffledItems);},[])// Empty dependency array ensures this runs once after initial render\n;return /*#__PURE__*/_jsx(Component,{ref:componentRef,...props});};return ShuffledBlogComponent;};export const withAriaLabelOverrides=Component=>{const OverriddenComponent=props=>{const componentRef=useRef(null);//     // Function to dynamically inject CSS into the head\n//     const injectCSS = () => {\n//         const style = document.createElement(\"style\")\n//         style.innerHTML = `\n//     /* Limit text to two lines */\n//     .two-lines {\n//       display: -webkit-box;\n//       -webkit-line-clamp: 2;\n//       -webkit-box-orient: vertical;\n//       overflow: hidden;\n//       text-overflow: ellipsis;\n//     }\n//     /* Limit text to six words per line */\n//     .six-lines {\n//        display: -webkit-box;\n//       -webkit-line-clamp: 6;\n//       -webkit-box-orient: vertical;\n//       overflow: hidden;\n//       text-overflow: ellipsis;\n//     }\n//   `\n//         document.head.appendChild(style)\n//     }\n// Function to apply styles based on the aria-label and find the p or h tags inside\nconst applyAriaLabelStyles=()=>{const container=componentRef.current;if(!container)return;// Find all elements with aria-label=\"two-lines\"\nconst twoLinesContainers=container.querySelectorAll('[aria-label=\"two-lines\"]');twoLinesContainers.forEach(container=>{// Look for p or h tags inside the container and apply the 'two-lines' class\nconst textElement=container.querySelector(\"p, h1, h2, h3, h4, h5, h6\");if(textElement){textElement.classList.add(\"two-lines\");}});// Find all elements with aria-label=\"six-lines\"\nconst sixLinesContainers=container.querySelectorAll('[aria-label=\"six-lines\"]');sixLinesContainers.forEach(container=>{// Look for p or h tags inside the container and apply the 'six-lines' class\nconst textElement=container.querySelector(\"p, h1, h2, h3, h4, h5, h6\");if(textElement){textElement.classList.add(\"six-lines\");}});};// Call the injectCSS function to inject the styles once the component mounts\nuseEffect(()=>{// injectCSS() // Inject CSS styles into the document\napplyAriaLabelStyles()// Apply the styles for elements with aria-label=\"two-lines\" or \"six-lines\"\n;},[]);return /*#__PURE__*/_jsx(Component,{ref:componentRef,...props});};return OverriddenComponent;};export function withDirectChildRoomLinks(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Select all containers with aria-label \"list-project-rooms\"\nconst projectRoomsContainers=document.querySelectorAll('[aria-label=\"list-project-rooms\"]');console.log(\"projectRoomsContainers\",projectRoomsContainers);projectRoomsContainers.forEach(projectRoomsContainer=>{// Select only direct child divs of each container\nconst roomDivs=projectRoomsContainer.querySelectorAll(\":scope > div\");console.log(\"Room Divs\",roomDivs);roomDivs.forEach(div=>{// Find the slug inside the child div (aria-label \"project-room-name\" with p tag)\nconst roomNameElement=div.querySelector('[aria-label=\"project-room-name\"] p');console.log(\"Room Name\",roomNameElement);if(roomNameElement&&roomNameElement.textContent){// Generate slug from room name\nconst slug=roomNameElement.textContent.trim();const roomUrl=`${window.location.origin}/projects/${slug.toLowerCase().replace(/:/g,\"\").replace(/\\s+/g,\"-\")}`;console.log(roomUrl);// Make the div a clickable link\ndiv.style.cursor=\"pointer\";div.onclick=()=>{window.location.href=roomUrl;};// Optionally add the link as a data attribute for debugging\ndiv.setAttribute(\"data-anchor-link\",roomUrl);}});});}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withDirectChildProjectLinks(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Find the container with aria-label \"list-projects\"\nconst projectsContainer=document.querySelector('[aria-label=\"list-projects\"]');if(projectsContainer){// Select only direct child divs of the container\nconst projectDivs=projectsContainer.querySelectorAll(\":scope > div\");projectDivs.forEach(div=>{// Find the slug inside the child div (aria-label \"project-room-name\" with p tag)\nconst projectNameElement=div.querySelector('[aria-label=\"project-name\"] p');if(projectNameElement&&projectNameElement.textContent){// Combine the house name and room name\nconst slug=projectNameElement.textContent.trim();console.log(slug);// Construct the URL for the room\nconst baseUrl=`${window.location.origin}/projects`;const projectUrl=`${baseUrl}/${slug.toLowerCase().replace(/:/g,\"\").replace(/\\s+/g,\"-\")}`;// Make the div itself a clickable link\ndiv.style.cursor=\"pointer\";div.onclick=()=>{window.location.href=projectUrl;};// Optionally add the link as a data attribute for debugging\ndiv.setAttribute(\"data-anchor-link\",projectUrl);}});}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withDynamicZIndex(Component){return props=>{useEffect(()=>{// Grab the container by its aria-label\nconst container=document.querySelector('[aria-label=\"filter-project-container\"]');if(container){// Get only direct child div elements\nconst childDivs=Array.from(container.children).filter(child=>child.tagName===\"DIV\");// Apply z-index to the first-level child divs\nchildDivs.forEach((div,index)=>{const htmlElement=div;htmlElement.style.zIndex=`${childDivs.length-index}`;// Find the first child <div> inside this div\nconst innerChildDiv=htmlElement.querySelector(\"div\");if(innerChildDiv){const innerHtmlElement=innerChildDiv;// Apply z-index to the first inner child div\ninnerHtmlElement.style.zIndex=`${childDivs.length-index}`;}});}else{console.error('No container found with aria-label \"filter-project-container\"');}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withBreadcrumbLinkUpdate(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){// Find the breadcrumb link element with aria-label \"breadcrumb-link-2\"\nconst breadcrumbLinkElement=document.querySelector('[aria-label=\"breadcrumb-link-2\"] a');const houseName=breadcrumbLinkElement?.textContent?.trim()||\"\";if(breadcrumbLinkElement){// Generate the new href using only the room-name\nconst newHref=`./${houseName.toLowerCase().replace(/\\s+/g,\"-\")}`;// Update the href of the breadcrumb link\nbreadcrumbLinkElement.setAttribute(\"href\",newHref);// Add click event to override default navigation\nbreadcrumbLinkElement.onclick=event=>{event.preventDefault();window.location.href=newHref;};}}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}// Function to copy to clipboard\nfunction HandleCopyToClipboard(url){navigator.clipboard.writeText(url).then(()=>{console.log(\"URL copied to clipboard:\",url);}).catch(err=>{console.error(\"Could not copy URL: \",err);});}export function copyToClipboard(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,onClick:()=>HandleCopyToClipboard(window.location.href)});};}export function withScrollHighlight(Component){return props=>{const[activeHeadingIndex,setActiveHeadingIndex]=useState(null);useEffect(()=>{if(typeof window!==\"undefined\"){const headingsContainer=document.querySelector(\"#content-wrapper-blog\");// if (headingsContainer) {\n//     const headings = Array.from(\n//         headingsContainer.querySelectorAll(\"h2,h3,h4,h5,h6\")\n//     )\n//     const observerOptions = {\n//         root: null,\n//         rootMargin: \"-50px 0px 0px 0px\",\n//         threshold: 0,\n//     }\n//     const observer = new IntersectionObserver((entries) => {\n//         entries.forEach((entry) => {\n//             if (entry.isIntersecting) {\n//                 // Get the position of the heading relative to the viewport\n//                 const { top } = entry.boundingClientRect\n//                 console.log(top)\n//                 // Update activeHeadingIndex only when the heading is 50px from the top\n//                 if (\n//                     top >= 50 &&\n//                     top <= 100 &&\n//                     entry.isIntersecting\n//                 ) {\n//                     setActiveHeadingIndex(\n//                         headings.indexOf(entry.target)\n//                     )\n//                 }\n//             }\n//         })\n//     }, observerOptions)\n//     headings.forEach((heading) => {\n//         observer.observe(heading)\n//     })\n//     return () => observer.disconnect()\n// }\nif(headingsContainer){const headings=Array.from(headingsContainer.querySelectorAll(\"h2, h3, h4, h5, h6\"));// Function to check which heading is closest to 70px from the top\nconst checkActiveHeading=()=>{const closestIndex=headings.findIndex(heading=>{const rect=heading.getBoundingClientRect();return rect.top>=70&&rect.top<=100;});if(closestIndex!==-1&&closestIndex!==activeHeadingIndex){setActiveHeadingIndex(closestIndex);}};// Add scroll event listener\nwindow.addEventListener(\"scroll\",checkActiveHeading);// Initial check\ncheckActiveHeading();return()=>{window.removeEventListener(\"scroll\",checkActiveHeading);};}}},[]);// Use activeHeadingIndex to highlight the corresponding heading in the table-of-content\nuseEffect(()=>{if(typeof window!==\"undefined\"&&activeHeadingIndex!==null){const tocLinks=document.querySelectorAll(\"#table-of-content p\");tocLinks.forEach((link,index)=>{const elementStyle=link.style;elementStyle.color=\"\";if(index===activeHeadingIndex){elementStyle.color=\"#231F1C\";}//                     #table-of-content p {\n//     color: #000; /* Default color */\n//     font-weight: normal; /* Default font weight */\n//     transition: color 0.3s ease, font-weight 0.3s ease; /* Smooth transition */\n// }\n// #table-of-content p.active {\n//     color: #007bff; /* Active color */\n//     font-weight: bold; /* Active font weight */\n// }\n// link.classList.remove(\"active\") // Remove active class from all links\n// if (index === activeHeadingIndex) {\n//     link.classList.add(\"active\") // Add active class to the current link\n// }\n});}},[activeHeadingIndex]);return /*#__PURE__*/_jsx(Component,{...props});};}// FUNCTION - DropCap functionality\n// export function withTextStealAndReplace(\n//     Component: ComponentType\n// ): ComponentType {\n//     return (props) => {\n//         useEffect(() => {\n//             const interval = setInterval(() => {\n//                 if (typeof window !== \"undefined\") {\n//                     // Find the container with ID \"content-wrapper-blog\"\n//                     const contentWrapper = document.querySelector(\n//                         \"#content-wrapper-blog\"\n//                     )\n//                     if (contentWrapper) {\n//                         // Find the first paragraph with actual content\n//                         const paragraphs =\n//                             contentWrapper.querySelectorAll(\":scope > p\")\n//                         let targetParagraph = null\n//                         for (let p of paragraphs) {\n//                             if (p.textContent?.trim()) {\n//                                 targetParagraph = p\n//                                 break\n//                             }\n//                         }\n//                         if (targetParagraph) {\n//                             // Get both text content and HTML content\n//                             const textContent =\n//                                 targetParagraph.textContent || \"\"\n//                             const htmlContent = targetParagraph.innerHTML || \"\"\n//                             // Find the container with ID \"blog-text-drop-cap\"\n//                             const dropCapContainer = document.querySelector(\n//                                 \"#blog-text-drop-cap p\"\n//                             )\n//                             if (\n//                                 dropCapContainer &&\n//                                 textContent &&\n//                                 htmlContent\n//                             ) {\n//                                 // Extract the first letter from text content\n//                                 const firstLetter = textContent.charAt(0)\n//                                 // Create a temporary div to manipulate the HTML\n//                                 const tempDiv = document.createElement(\"div\")\n//                                 tempDiv.innerHTML = htmlContent\n//                                 // Find the first text node and remove its first character\n//                                 const walker = document.createTreeWalker(\n//                                     tempDiv,\n//                                     NodeFilter.SHOW_TEXT,\n//                                     {\n//                                         acceptNode: function (node) {\n//                                             return node.textContent?.trim()\n//                                                 ? NodeFilter.FILTER_ACCEPT\n//                                                 : NodeFilter.FILTER_REJECT\n//                                         },\n//                                     }\n//                                 )\n//                                 const firstTextNode = walker.nextNode()\n//                                 if (\n//                                     firstTextNode &&\n//                                     firstTextNode.textContent\n//                                 ) {\n//                                     firstTextNode.textContent =\n//                                         firstTextNode.textContent.slice(1)\n//                                 }\n//                                 // Find or create the <span> element inside the dropCapContainer\n//                                 let spanElement =\n//                                     dropCapContainer.querySelector(\"span\")\n//                                 if (!spanElement) {\n//                                     spanElement = document.createElement(\"span\")\n//                                     dropCapContainer.prepend(spanElement)\n//                                 }\n//                                 // Set the first letter inside the <span>\n//                                 spanElement.textContent = firstLetter\n//                                 // Clear existing non-span content and add the HTML content\n//                                 dropCapContainer.childNodes.forEach((node) => {\n//                                     if (node !== spanElement) node.remove()\n//                                 })\n//                                 // Insert the remaining HTML content (preserving links and formatting)\n//                                 const remainingHTML = tempDiv.innerHTML.trim()\n//                                 if (remainingHTML) {\n//                                     dropCapContainer.insertAdjacentHTML(\n//                                         \"beforeend\",\n//                                         remainingHTML\n//                                     )\n//                                 }\n//                                 // Only remove the paragraph AFTER successfully transferring content\n//                                 targetParagraph.remove()\n//                             }\n//                         }\n//                         clearInterval(interval)\n//                     }\n//                 }\n//             }, 100)\n//         }, [])\n//         return <Component {...props} />\n//     }\n// }\n// FUNCTION - DropCap functionality\nexport function withTextStealAndReplace(Component){return props=>{useEffect(()=>{let originalContent=null;let originalParagraph=null;const runDropCap=()=>{const interval=setInterval(()=>{if(typeof window!==\"undefined\"){// Find the container with ID \"content-wrapper-blog\"\nconst contentWrapper=document.querySelector(\"#content-wrapper-blog\");if(contentWrapper){// Find the container with ID \"blog-text-drop-cap\"\nconst dropCapContainer=document.querySelector(\"#blog-text-drop-cap p\");if(dropCapContainer){// Check if we already have stored content\nif(originalContent&&originalParagraph){// Use stored content\nprocessDropCap(dropCapContainer,originalContent.text,originalContent.html);}else{// Find the first paragraph with actual content and store it\nconst paragraphs=contentWrapper.querySelectorAll(\":scope > p\");let targetParagraph=null;for(let p of paragraphs){if(p.textContent?.trim()){targetParagraph=p;break;}}if(targetParagraph){// Store the original content\noriginalContent={text:targetParagraph.textContent||\"\",html:targetParagraph.innerHTML||\"\"};originalParagraph=targetParagraph;// Process the drop cap\nprocessDropCap(dropCapContainer,originalContent.text,originalContent.html);// Hide the original paragraph instead of removing it\ntargetParagraph.style.display=\"none\";}}}clearInterval(interval);}}},100);};const processDropCap=(dropCapContainer,textContent,htmlContent)=>{if(dropCapContainer&&textContent&&htmlContent){// Extract the first letter from text content\nconst firstLetter=textContent.charAt(0);// Simple approach: just remove the first character from the HTML string\n// Find the first occurrence of the first letter in the HTML\nconst firstLetterIndex=htmlContent.search(/\\S/)// Find first non-whitespace character\n;let modifiedHTML=htmlContent;if(firstLetterIndex!==-1){// Remove the first non-whitespace character\nmodifiedHTML=htmlContent.substring(0,firstLetterIndex)+htmlContent.substring(firstLetterIndex+1);}// Find or create the <span> element inside the dropCapContainer\nlet spanElement=dropCapContainer.querySelector(\"span\");if(!spanElement){spanElement=document.createElement(\"span\");dropCapContainer.prepend(spanElement);}// Set the first letter inside the <span>\nspanElement.textContent=firstLetter;// Clear existing non-span content and add the HTML content\ndropCapContainer.childNodes.forEach(node=>{if(node!==spanElement)node.remove();});// Insert the remaining HTML content (preserving links and formatting)\nif(modifiedHTML.trim()){dropCapContainer.insertAdjacentHTML(\"beforeend\",modifiedHTML);}}};// Run initially\nrunDropCap();// Run again on window resize (with debounce)\nlet resizeTimeout;const handleResize=()=>{clearTimeout(resizeTimeout);resizeTimeout=setTimeout(()=>{runDropCap();},300);};window.addEventListener(\"resize\",handleResize);// Cleanup\nreturn()=>{window.removeEventListener(\"resize\",handleResize);clearTimeout(resizeTimeout);// Restore original paragraph if it exists\nif(originalParagraph){originalParagraph.style.display=\"\";}};},[]);return /*#__PURE__*/_jsx(Component,{...props});};}// FUNCTION - Replace \"(location)\" with the text content from <p id=\"location\">\nexport function withLocationAndProjectNameReplace(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){setTimeout(()=>{// Find the <p> tags with the IDs \"location\" and \"project-name\"\nconst locationElement=document.getElementById(\"location\");const projectNameElement=document.getElementById(\"project-name\");const locationText=locationElement?.textContent||\"\";const projectNameText=projectNameElement?.textContent||\"\";if(locationText||projectNameText){// Select all elements containing text nodes on the page\nconst elementsWithText=document.querySelectorAll(\"*:not(script):not(style)\");elementsWithText.forEach(element=>{element.childNodes.forEach(node=>{if(node.nodeType===Node.TEXT_NODE){let updatedText=node.nodeValue||\"\";// Replace \"(location)\" if applicable\nif(locationText&&updatedText.includes(\"(location)\")){updatedText=updatedText.replaceAll(\"(location)\",locationText);}// Replace \"(house-name)\" if applicable\nif(projectNameText&&updatedText.includes(\"(house-name)\")){updatedText=updatedText.replaceAll(\"(house-name)\",projectNameText);}// Update the text node only if there were changes\nif(updatedText!==node.nodeValue){node.nodeValue=updatedText;}}});});}},500)// Delay execution slightly\n;}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withBoldReplace(Component){return props=>{useEffect(()=>{if(typeof window!==\"undefined\"){const boldRegex=/\\[\\[(.*?)\\]\\]/g;const elementsForBold=document.querySelectorAll(\"*:not(script):not(style)\");elementsForBold.forEach(element=>{element.childNodes.forEach(node=>{if(node.nodeType===Node.TEXT_NODE&&node.nodeValue?.includes(\"[[\")){const text=node.nodeValue;let match;const frag=document.createDocumentFragment();let lastIndex=0;// Process each occurrence of [[text]]\nwhile((match=boldRegex.exec(text))!==null){// Append text before the match\nconst textBefore=text.slice(lastIndex,match.index);if(textBefore){frag.appendChild(document.createTextNode(textBefore));}// Create a <b> element for the matched text (match[1])\nconst boldElement=document.createElement(\"b\");boldElement.textContent=match[1];frag.appendChild(boldElement);lastIndex=boldRegex.lastIndex;}// Append any remaining text after the last match\nif(lastIndex<text.length){frag.appendChild(document.createTextNode(text.slice(lastIndex)));}// Replace the original text node with the new fragment\nif(frag.childNodes.length>0){node.parentNode?.replaceChild(frag,node);}}});});}},[]);return /*#__PURE__*/_jsx(Component,{...props});};}export function withFixedSlidehowPaginationControls(Component){return props=>{const containerRef=useRef(null);useEffect(()=>{if(!containerRef.current)return;const fieldset=containerRef.current.querySelector('fieldset[aria-label=\"Slideshow pagination controls\"]');if(!fieldset)return;console.log(fieldset);const directChildDiv=fieldset.querySelector(\":scope > div\");console.log(directChildDiv);if(directChildDiv){// directChildDiv.style.position = \"fixed\"\n// directChildDiv.style.right = \"24px\"\n// directChildDiv.style.left = \"24px\"\n}},[props.children]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,children:/*#__PURE__*/_jsx(Component,{...props})});};}// Download Button\nexport function withAutoDownloadOnSubmit(Component){return props=>{const containerRef=useRef(null);const lastTriggerTime=useRef(0);useEffect(()=>{if(!containerRef.current)return;const form=containerRef.current.querySelector(\"#form\");const downloadButton=containerRef.current.querySelector(\"#download-button\");if(!form||!downloadButton)return;const handleFormSubmit=event=>{const currentTime=Date.now();if(currentTime-lastTriggerTime.current<5e3)return;// Prevent multiple triggers within 5 seconds\nlastTriggerTime.current=currentTime;setTimeout(()=>{downloadButton.click();},1e3);};form.addEventListener(\"submit\",handleFormSubmit);return()=>{form.removeEventListener(\"submit\",handleFormSubmit);};},[props.children]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,children:/*#__PURE__*/_jsx(Component,{...props})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withDynamicZIndex\":{\"type\":\"reactHoc\",\"name\":\"withDynamicZIndex\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"copyToClipboard\":{\"type\":\"reactHoc\",\"name\":\"copyToClipboard\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withWidthAndHeightImages\":{\"type\":\"reactHoc\",\"name\":\"withWidthAndHeightImages\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMaxWidthAndLeftGap\":{\"type\":\"reactHoc\",\"name\":\"withMaxWidthAndLeftGap\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBlogShuffledAriaLabels\":{\"type\":\"reactHoc\",\"name\":\"withBlogShuffledAriaLabels\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTextStealAndReplace\":{\"type\":\"reactHoc\",\"name\":\"withTextStealAndReplace\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLocationAndProjectNameReplace\":{\"type\":\"reactHoc\",\"name\":\"withLocationAndProjectNameReplace\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAutoDownloadOnSubmit\":{\"type\":\"reactHoc\",\"name\":\"withAutoDownloadOnSubmit\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDirectChildProjectLinks\":{\"type\":\"reactHoc\",\"name\":\"withDirectChildProjectLinks\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollAnimation\":{\"type\":\"reactHoc\",\"name\":\"withScrollAnimation\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollHighlight\":{\"type\":\"reactHoc\",\"name\":\"withScrollHighlight\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withConditionalDisplay\":{\"type\":\"reactHoc\",\"name\":\"withConditionalDisplay\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withReducedHeadingMargins\":{\"type\":\"reactHoc\",\"name\":\"withReducedHeadingMargins\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollAnimationToImages\":{\"type\":\"reactHoc\",\"name\":\"withScrollAnimationToImages\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMaxWidthImages\":{\"type\":\"reactHoc\",\"name\":\"withMaxWidthImages\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFixedSlidehowPaginationControls\":{\"type\":\"reactHoc\",\"name\":\"withFixedSlidehowPaginationControls\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBoldReplace\":{\"type\":\"reactHoc\",\"name\":\"withBoldReplace\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAriaLabelOverrides\":{\"type\":\"reactHoc\",\"name\":\"withAriaLabelOverrides\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDirectChildRoomLinks\":{\"type\":\"reactHoc\",\"name\":\"withDirectChildRoomLinks\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShuffledAriaLabels\":{\"type\":\"reactHoc\",\"name\":\"withShuffledAriaLabels\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBreadcrumbLinkUpdate\":{\"type\":\"reactHoc\",\"name\":\"withBreadcrumbLinkUpdate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utilities.map"],"mappings":"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"}