mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-08 18:22:40 +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(() => {
|
useEffect(() => {
|
||||||
const locationHash = window.location.hash;
|
const locationHash = window.location.hash;
|
||||||
const iframe = document.getElementById('BrewRenderer');
|
|
||||||
|
|
||||||
const pageIdRegex = /^#p\d+$/;
|
const pageIdRegex = /^#p\d+$/;
|
||||||
|
|
||||||
const handleIframeLoad = () => {
|
console.log(state);
|
||||||
setTimeout(() => {
|
|
||||||
|
if (locationHash) {
|
||||||
|
if (state.isMounted) {
|
||||||
if (pageIdRegex.test(locationHash)) {
|
if (pageIdRegex.test(locationHash)) {
|
||||||
const pageNumber = parseInt(locationHash.slice(2));
|
const pageNumber = parseInt(locationHash.slice(2));
|
||||||
scrollToPage(pageNumber - 1);
|
scrollToPage(pageNumber - 1);
|
||||||
} else {
|
} else {
|
||||||
const elementId = locationHash.slice(1);
|
const elementId = locationHash.slice(1);
|
||||||
if (elementId) {
|
if (elementId) {
|
||||||
getPageContainingElement(elementId)
|
const element = document.getElementById(elementId);
|
||||||
.then((pageNumber) => {
|
console.log(element);
|
||||||
if (pageNumber !== -1) {
|
if (element) {
|
||||||
scrollToPage(pageNumber);
|
|
||||||
}
|
const page = element.closest(".page");
|
||||||
})
|
// Ensure `page` exists before proceeding
|
||||||
.catch((error) => {
|
if (page) {
|
||||||
console.error('Error:', error);
|
console.log(page.getAttribute("Id").slice(1));
|
||||||
});
|
scrollToPage(page.getAttribute("Id").slice(1));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 100);
|
}
|
||||||
};
|
|
||||||
|
|
||||||
if (locationHash) {
|
|
||||||
iframe.addEventListener('load', handleIframeLoad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (locationHash) {
|
|
||||||
iframe.removeEventListener('load', handleIframeLoad);
|
|
||||||
}
|
|
||||||
window.removeEventListener('resize', updateSize);
|
window.removeEventListener('resize', updateSize);
|
||||||
};
|
};
|
||||||
}, []);
|
}, [state.isMounted]);
|
||||||
|
|
||||||
|
|
||||||
const scrollToPage = (pageNumber) => {
|
const scrollToPage = (pageNumber) => {
|
||||||
const iframe = document.getElementById('BrewRenderer');
|
const iframe = document.getElementById('BrewRenderer');
|
||||||
@@ -134,24 +128,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 = ()=>{
|
const updateSize = ()=>{
|
||||||
setState((prevState)=>({
|
setState((prevState)=>({
|
||||||
...prevState,
|
...prevState,
|
||||||
|
|||||||
Reference in New Issue
Block a user