31 lines
755 B
JavaScript
31 lines
755 B
JavaScript
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; |