require('./toolBar.less'); const React = require('react'); const { useState, useEffect } = React; const maxZoom = 300; const minZoom = 10; const zoomStep = 10; const ToolBar = ({ updateZoom, currentPage, onPageChange, totalPages })=>{ const [state, setState] = useState({ currentPage : currentPage, totalPages : totalPages, zoomLevel : 100, pageNumberInput : currentPage, zoomInput : 100, }); useEffect(()=>{ updateZoom(state.zoomLevel); }, [state.zoomLevel]); useEffect(()=>{ setState((prevState)=>({ ...prevState, currentPage : currentPage, pageNumberInput : currentPage, })); }, [currentPage]); const setZoomLevel = (direction)=>{ let zoomLevel = state.zoomLevel; if(direction === 'in') { zoomLevel += zoomStep; } else { zoomLevel -= zoomStep; } setState((prevState)=>({ ...prevState, zoomLevel : zoomLevel, zoomInput : zoomLevel, })); }; const handleInputChange = (value, type)=>{ const newValue = parseInt(value, 10); if(type === 'zoom' && newValue >= minZoom && newValue <= maxZoom) { setState((prevState)=>({ ...prevState, zoomInput : newValue, })); } else if(type === 'page' && newValue >= 1 && newValue <= totalPages) { setState((prevState)=>({ ...prevState, pageNumberInput : newValue, })); } }; return (
handleInputChange(e.target.value, 'zoom')} onChange={(e)=>{ const newZoomLevel = parseInt(e.target.value, 10); if(newZoomLevel !== state.zoomLevel) { setState((prevState)=>({ ...prevState, zoomLevel : newZoomLevel, zoomInput : newZoomLevel, })); updateZoom(newZoomLevel); } }} />
handleInputChange(e.target.value, 'page')} onBlur={(e)=>{ parseInt(state.pageNumberInput) === state.currentPage || onPageChange(parseInt(state.pageNumberInput) - 1); }} onKeyPress={(e)=>{ if(e.key === 'Enter') { e.target.blur(); } }} />
); }; module.exports = ToolBar;