mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-10 02:42:43 +00:00
useEffect hook to update view after mode select
utilize useEffect hook to trigger render when the mode state is changed. Move modes array to top level array, and change 'book-mode' to 'facing', and add 'flow' mode. toggle modes as class names in .pages div, which are each styled as required.
This commit is contained in:
@@ -13,6 +13,7 @@ const ToolBar = ({ onZoomChange, currentPage, onPageChange, totalPages })=>{
|
|||||||
const [zoomLevel, setZoomLevel] = useState(100);
|
const [zoomLevel, setZoomLevel] = useState(100);
|
||||||
const [pageInput, setPageInput] = useState(currentPage);
|
const [pageInput, setPageInput] = useState(currentPage);
|
||||||
const [arrangement, setArrangement] = useState('single');
|
const [arrangement, setArrangement] = useState('single');
|
||||||
|
const modes = ['single', 'facing', 'flow'];
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
onZoomChange(zoomLevel);
|
onZoomChange(zoomLevel);
|
||||||
@@ -20,7 +21,19 @@ const ToolBar = ({ onZoomChange, currentPage, onPageChange, totalPages })=>{
|
|||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
setPageInput(currentPage);
|
setPageInput(currentPage);
|
||||||
}, [currentPage])
|
}, [currentPage]);
|
||||||
|
|
||||||
|
// update display arrangement when arrangement state is changed.
|
||||||
|
useEffect(()=>{
|
||||||
|
const iframe = document.getElementById('BrewRenderer');
|
||||||
|
const pagesContainer = iframe?.contentWindow?.document.querySelector('.pages');
|
||||||
|
|
||||||
|
if(pagesContainer) {
|
||||||
|
modes.forEach((mode)=>pagesContainer.classList.remove(mode));
|
||||||
|
pagesContainer.classList.add(arrangement);
|
||||||
|
}
|
||||||
|
}, [arrangement]);
|
||||||
|
|
||||||
|
|
||||||
const handleZoomChange = (delta)=>{
|
const handleZoomChange = (delta)=>{
|
||||||
const zoomChange = _.clamp(zoomLevel + delta, MIN_ZOOM, MAX_ZOOM);
|
const zoomChange = _.clamp(zoomLevel + delta, MIN_ZOOM, MAX_ZOOM);
|
||||||
@@ -88,10 +101,8 @@ const ToolBar = ({ onZoomChange, currentPage, onPageChange, totalPages })=>{
|
|||||||
};
|
};
|
||||||
|
|
||||||
const setBookMode = ()=>{
|
const setBookMode = ()=>{
|
||||||
const iframe = document.getElementById('BrewRenderer');
|
const nextMode = modes[(modes.indexOf(arrangement) + 1) % modes.length];
|
||||||
const pagesContainer = iframe.contentWindow.document.getElementsByClassName('pages')[0];
|
setArrangement(nextMode);
|
||||||
pagesContainer.classList.toggle('book-mode');
|
|
||||||
pagesContainer.firstChild.style.gridColumnStart = '2' ;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user