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')} onMouseUp={(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;