0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-15 12:42:45 +00:00

"Refactor BrewRenderer: updated iframe handling and scrolling logic in useEffect and scrollToPage function"

This commit is contained in:
Víctor Losada Hernández
2024-05-31 17:06:47 +02:00
parent 3cca38302a
commit d012a09346

View File

@@ -76,7 +76,7 @@ const BrewRenderer = (props)=>{
useEffect(() => { useEffect(() => {
const locationHash = window.location.hash; const locationHash = window.location.hash;
const iframe = document.getElementById('BrewRenderer'); const iframe = document.getElementById('BrewRenderer');
// Regular expression to match page IDs like '#p1' // Regular expression to match page IDs like '#p1'
const pageIdRegex = /^#p\d+$/; const pageIdRegex = /^#p\d+$/;
@@ -85,12 +85,7 @@ const BrewRenderer = (props)=>{
if (pageIdRegex.test(locationHash)) { if (pageIdRegex.test(locationHash)) {
// Extract page number from the ID // Extract page number from the ID
const pageNumber = parseInt(locationHash.slice(2)); const pageNumber = parseInt(locationHash.slice(2));
console.log('scrolling to page ', pageNumber); scrollToPage(iframe, pageNumber);
if (!isNaN(pageNumber)) {
scrollToPage(iframe, pageNumber);
} else {
console.error('Invalid page ID:', locationHash);
}
} else { } else {
// Treat it as an element ID // Treat it as an element ID
const elementId = locationHash.slice(1); // Remove the leading '#' const elementId = locationHash.slice(1); // Remove the leading '#'
@@ -117,16 +112,19 @@ const BrewRenderer = (props)=>{
const scrollToPage = (iframe, pageNumber) => { const scrollToPage = (iframe, pageNumber) => {
if (iframe && iframe.contentWindow) { if (iframe && iframe.contentWindow) {
const brewRenderer = iframe.contentWindow.document.querySelector('.brewRenderer'); const brewRenderer =
if (brewRenderer) { iframe.contentWindow.document.querySelector('.brewRenderer');
const pages = brewRenderer.querySelectorAll('.page'); if (brewRenderer) {
if (pages && pages[pageNumber]) { const pages = brewRenderer.querySelectorAll('.page');
pages[pageNumber].scrollIntoView({ block: 'start' }); if (pageNumber > pages.length) {
} console.log('page not found');
} } else {
} pages[pageNumber].scrollIntoView({ block: 'start' });
}; }
}
}
};
const getPageContainingElement = (iframe, elementId) => { const getPageContainingElement = (iframe, elementId) => {
return new Promise((resolve) => { return new Promise((resolve) => {