mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2025-12-27 02:52:43 +00:00
"Refactor BrewRenderer: removed iframe load event listener, simplified page scrolling logic, and inlined getPageContainingElement functionality"
This commit is contained in:
@@ -79,44 +79,38 @@ const BrewRenderer = (props)=>{
|
||||
|
||||
useEffect(() => {
|
||||
const locationHash = window.location.hash;
|
||||
const iframe = document.getElementById('BrewRenderer');
|
||||
|
||||
const pageIdRegex = /^#p\d+$/;
|
||||
|
||||
const handleIframeLoad = () => {
|
||||
setTimeout(() => {
|
||||
console.log(state);
|
||||
|
||||
if (locationHash) {
|
||||
if (state.isMounted) {
|
||||
if (pageIdRegex.test(locationHash)) {
|
||||
const pageNumber = parseInt(locationHash.slice(2));
|
||||
scrollToPage(pageNumber - 1);
|
||||
} else {
|
||||
const elementId = locationHash.slice(1);
|
||||
if (elementId) {
|
||||
getPageContainingElement(elementId)
|
||||
.then((pageNumber) => {
|
||||
if (pageNumber !== -1) {
|
||||
scrollToPage(pageNumber);
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
const element = document.getElementById(elementId);
|
||||
console.log(element);
|
||||
if (element) {
|
||||
|
||||
const page = element.closest(".page");
|
||||
// Ensure `page` exists before proceeding
|
||||
if (page) {
|
||||
console.log(page.getAttribute("Id").slice(1));
|
||||
scrollToPage(page.getAttribute("Id").slice(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 100);
|
||||
};
|
||||
|
||||
if (locationHash) {
|
||||
iframe.addEventListener('load', handleIframeLoad);
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (locationHash) {
|
||||
iframe.removeEventListener('load', handleIframeLoad);
|
||||
}
|
||||
}
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('resize', updateSize);
|
||||
};
|
||||
}, []);
|
||||
|
||||
}, [state.isMounted]);
|
||||
|
||||
const scrollToPage = (pageNumber) => {
|
||||
const iframe = document.getElementById('BrewRenderer');
|
||||
@@ -133,24 +127,6 @@ const BrewRenderer = (props)=>{
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const getPageContainingElement = (elementId) => {
|
||||
const iframe = document.getElementById('BrewRenderer');
|
||||
return new Promise((resolve) => {
|
||||
const brewRenderer =
|
||||
iframe.contentWindow.document.querySelector('.brewRenderer');
|
||||
const pages = brewRenderer.querySelectorAll('.page');
|
||||
for (let i = 0; i < pages.length; i++) {
|
||||
if (pages[i].querySelector(`#${elementId}`)) {
|
||||
resolve(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Element with ID not found in any page.');
|
||||
resolve(-1);
|
||||
});
|
||||
};
|
||||
|
||||
const updateSize = ()=>{
|
||||
setState((prevState)=>({
|
||||
|
||||
Reference in New Issue
Block a user