import xOffsetUpdate from './x-offset-update'; /** * * @param {{ * xScale: number * }} pstate * @returns */ function xScaleUpdate(pstate, xScaleNextFn) { let xScaleNext = xScaleNextFn(); const { xOffset, xCursor, xScale, xScaleMin, xScaleMax } = pstate; xScaleNext = (xScaleNext > xScaleMax) ? xScaleMax : xScaleNext; xScaleNext = (xScaleNext < xScaleMin) ? xScaleMin : xScaleNext; // console.log('scale next', xScaleNext); if (xScaleNext === xScale) { return false; // exit without scale change } pstate.oldXScale = pstate.xScale; pstate.xScale = xScaleNext; xOffsetUpdate(pstate, () => xCursor - (xCursor - xOffset) * xScaleNext / xScale); return true; } export default xScaleUpdate;