diff --git a/src/scrollToTarget.ts b/src/scrollToTarget.ts index 0a5c714fd40d4151a2a917b80bfc72fd47b54681..598766f1ff73509ae26075e9c5d351c7be143e62 100644 --- a/src/scrollToTarget.ts +++ b/src/scrollToTarget.ts @@ -1,11 +1,12 @@ import * as Velocity from 'velocity-animate'; import {HashTarget} from './HashTarget'; +import {EASE_IN_SKIP_OUT_EASING} from './setupVelocity'; export function scrollToTarget(hashTarget: HashTarget): void { Velocity.animate(hashTarget.getElement(), 'scroll', { duration: 1200, // todo: different depending on offset from page top? - easing: 'ease-in-skip-out', + easing: EASE_IN_SKIP_OUT_EASING, complete: () => window.location.hash = hashTarget.getHash(), }); } diff --git a/src/setupVelocity.d.ts b/src/setupVelocity.d.ts index 09599dc5886a5010e878aba01a1a8028a0bcbf13..7f66e6b6c14b071a30704e3ad54a74f1bcf2bf1a 100644 --- a/src/setupVelocity.d.ts +++ b/src/setupVelocity.d.ts @@ -1,4 +1,5 @@ import * as Velocity from 'velocity-animate'; declare const setupVelocity: (velocity: typeof Velocity) => void; +export declare const EASE_IN_SKIP_OUT_EASING: string; export default setupVelocity; diff --git a/src/setupVelocity.js b/src/setupVelocity.js index a58f37208f9b9d44a6a6447afe315f2bf1c78947..4d0264e822519e4276ba9bb5b15d0a4675ae53f5 100644 --- a/src/setupVelocity.js +++ b/src/setupVelocity.js @@ -1,3 +1,5 @@ +export const EASE_IN_SKIP_OUT_EASING = 'ease-in-skip-out'; + // e.g. (5, 5, 10, 500, 1000) => 500 // e.g. (5, 0, 10, 500, 1000) => 750 const mapIntervalLinear = (number, originalFrom, originalTo, newFrom, newTo) => { @@ -67,7 +69,7 @@ const computeHowMuchToSkip = (tweenDelta) => { }; const setupVelocity = (velocity) => { - velocity.Easings['ease-in-skip-out'] = composeEasing( + velocity.Easings[EASE_IN_SKIP_OUT_EASING] = composeEasing( (time, opts, tweenDelta) => mapIntervalLinear( velocity.Easings['ease-in'](time, opts, tweenDelta), 0, 1, // from interval