0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-08 01:02:51 +00:00

functional zoom

This commit is contained in:
Víctor Losada Hernández
2024-05-28 08:51:23 +02:00
parent bc9ab284d8
commit 4543881808
2 changed files with 33 additions and 2 deletions

View File

@@ -65,6 +65,7 @@ const BrewRenderer = (props)=>{
height : PAGE_HEIGHT, height : PAGE_HEIGHT,
isMounted : false, isMounted : false,
visibility : 'hidden', visibility : 'hidden',
zoom : 100,
}); });
const mainRef = useRef(null); const mainRef = useRef(null);
@@ -182,6 +183,30 @@ const BrewRenderer = (props)=>{
const themePath = props.theme ?? '5ePHB'; const themePath = props.theme ?? '5ePHB';
const baseThemePath = Themes[rendererPath][themePath].baseTheme; const baseThemePath = Themes[rendererPath][themePath].baseTheme;
//Toolbar settings:
const updateZoom = (newZoom) => {
setState((prevState)=>({
...prevState,
zoom : newZoom
}));
};
const makeZoom = () => {
return(
<style>
{`
.pages {
scale:${state.zoom}%;
}
`}
</style>
);
}
return ( return (
<> <>
{/*render dummy page while iFrame is mounting.*/} {/*render dummy page while iFrame is mounting.*/}
@@ -199,7 +224,7 @@ const BrewRenderer = (props)=>{
contentDidMount={frameDidMount} contentDidMount={frameDidMount}
onClick={()=>{emitClick();}} onClick={()=>{emitClick();}}
> >
<ToolBar /> <ToolBar updateZoom={updateZoom} />
<div className={'brewRenderer'} <div className={'brewRenderer'}
onScroll={handleScroll} onScroll={handleScroll}
style={{ height: state.height }}> style={{ height: state.height }}>
@@ -214,6 +239,7 @@ const BrewRenderer = (props)=>{
<link href={`/themes/${rendererPath}/${baseThemePath}/style.css`} type='text/css' rel='stylesheet'/> <link href={`/themes/${rendererPath}/${baseThemePath}/style.css`} type='text/css' rel='stylesheet'/>
} }
<link href={`/themes/${rendererPath}/${themePath}/style.css`} type='text/css' rel='stylesheet'/> <link href={`/themes/${rendererPath}/${themePath}/style.css`} type='text/css' rel='stylesheet'/>
{makeZoom()}
{/* Apply CSS from Style tab and render pages from Markdown tab */} {/* Apply CSS from Style tab and render pages from Markdown tab */}
{state.isMounted {state.isMounted

View File

@@ -3,13 +3,18 @@ const React = require('react');
const { useState, useRef, useEffect } = React; const { useState, useRef, useEffect } = React;
const _ = require('lodash'); const _ = require('lodash');
const ToolBar = () => { const ToolBar = ({updateZoom}) => {
const [state, setState] = useState({ const [state, setState] = useState({
currentPage: 1, currentPage: 1,
totalPages: 10, totalPages: 10,
zoomLevel: 100, zoomLevel: 100,
}); });
useEffect(() => {
console.log(`Zoom to: ${state.zoomLevel}`);
updateZoom(state.zoomLevel);
}, [state.zoomLevel]);
const setZoomLevel = (direction) => { const setZoomLevel = (direction) => {
let zoomLevel = state.zoomLevel; let zoomLevel = state.zoomLevel;
if (direction === 'in') { if (direction === 'in') {