From 28a7f249890053d616f3035b03ef954aa202eced Mon Sep 17 00:00:00 2001 From: Gazook89 Date: Thu, 7 Nov 2024 20:32:30 -0600 Subject: [PATCH] add scrollToHash method back in pretty much completely unchanged, was originally moved just to help with merging master in (ie it was erroneously removed) --- client/homebrew/brewRenderer/brewRenderer.jsx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/client/homebrew/brewRenderer/brewRenderer.jsx b/client/homebrew/brewRenderer/brewRenderer.jsx index 3108176b4..795095f71 100644 --- a/client/homebrew/brewRenderer/brewRenderer.jsx +++ b/client/homebrew/brewRenderer/brewRenderer.jsx @@ -221,7 +221,28 @@ const BrewRenderer = (props)=>{ } }; + const scrollToHash = (hash)=>{ + if(!hash) return; + + const iframeDoc = document.getElementById('BrewRenderer').contentDocument; + let anchor = iframeDoc.querySelector(hash); + + if(anchor) { + anchor.scrollIntoView({ behavior: 'smooth' }); + } else { + // Use MutationObserver to wait for the element if it's not immediately available + new MutationObserver((mutations, obs)=>{ + anchor = iframeDoc.querySelector(hash); + if(anchor) { + anchor.scrollIntoView({ behavior: 'smooth' }); + obs.disconnect(); + } + }).observe(iframeDoc, { childList: true, subtree: true }); + } + }; + const frameDidMount = ()=>{ //This triggers when iFrame finishes internal "componentDidMount" + scrollToHash(window.location.hash); setTimeout(()=>{ //We still see a flicker where the style isn't applied yet, so wait 100ms before showing iFrame renderPages(); //Make sure page is renderable before showing