UNPKG

canvas-trading

Version:
35 lines (34 loc) 1.79 kB
import { canvasSettings } from './config'; function scrollZoom(movement, shift, candlesShown, maxCandles, setShift, setCandlesShown) { maxCandles -= 3; var newCandlesShown = yMovement(movement, candlesShown, maxCandles, shift, setCandlesShown); xMovement(movement, shift, newCandlesShown, maxCandles, setShift); } function yMovement(movement, candlesShown, maxCandles, shift, setCandlesShown) { if (movement.y !== 0) { if ((candlesShown > canvasSettings.minCandlesShown - 1 || (candlesShown === canvasSettings.minCandlesShown && movement.y > 0)) && (candlesShown < maxCandles - shift + 1 || (candlesShown === maxCandles - shift && movement.y < 0))) { var exponentialMultiplier = Math.max(0.3, candlesShown / maxCandles * 3); var newCandlesShown = Math.max(Math.min(candlesShown + Math.round(movement.y * exponentialMultiplier * canvasSettings.zoomStrength), maxCandles - shift), canvasSettings.minCandlesShown); setCandlesShown(newCandlesShown); return newCandlesShown; } } return candlesShown; } function xMovement(movement, shift, candlesShown, maxCandles, setShift) { if (movement.x !== 0) { if ((shift > 0 || (shift === 0 && movement.x < 0)) && (shift < maxCandles - candlesShown + 1 || (shift === maxCandles - candlesShown && movement.x > 0))) { var exponentialMultiplier = Math.max(0.6, candlesShown / maxCandles * 3); var newShift = Math.max(Math.min(shift - Math.round(movement.x * exponentialMultiplier * canvasSettings.shiftStrength), maxCandles - candlesShown), 0); setShift(newShift); return newShift; } } return shift; } export default scrollZoom;