mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-15 10:32:45 +00:00
"Refactor BrewRenderer: updated iframe handling and scrolling logic in useEffect and scrollToPage function"
This commit is contained in:
@@ -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) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user