mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-08 01:02:51 +00:00
functional zoom
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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') {
|
||||||
|
|||||||
Reference in New Issue
Block a user