UNPKG

@shopgate/engage

Version:
50 lines 3.82 kB
/** * The linear easing callback. * @param {number} relativeValue The relative value between [0...1]. * @param {number} resolution The resolution, must be a value between [0,1...1]. * @returns {number} The interpolated value. */var easeLinear=function easeLinear(relativeValue,resolution){var inverseResolution=1.0/resolution;return relativeValue*inverseResolution/inverseResolution;};/** * Generates a linear easing callback. * @param {number} resolution The discrete step size. * @returns {Function} The generated callback. */export var generateLinearEasingCallback=function generateLinearEasingCallback(){var resolution=arguments.length>0&&arguments[0]!==undefined?arguments[0]:0.1;return function(relativeValue){return easeLinear(relativeValue,resolution);};};/** * The exponential easing callback. * @param {number} relativeValue The relative value between [0...1]. * @param {number} factor The exponential scale factor. * @returns {number} The interpolated value. */var easeExponential=function easeExponential(relativeValue,factor){return Math.pow(relativeValue,factor);};/** * Generates an exponential easing callback. * @param {number} factor The exponential scale factor. * @returns {Function} The generated callback. */export var generateExponentialEasingCallback=function generateExponentialEasingCallback(){var factor=arguments.length>0&&arguments[0]!==undefined?arguments[0]:2.5;return function(relativeValue){return easeExponential(relativeValue,factor);};};/** * Converts a range of [0...1] into a style object. * @param {number} min A value in interval [0...1] * @param {number} max A value in interval [0...1] * @param {number} transitionDuration The duration of the transition. * @returns {Object} The generated style object */export var getRangeStyle=function getRangeStyle(min,max,transitionDuration){return{left:"".concat(Math.min(1,Math.max(0,min))*100,"%"),right:"".concat((1-Math.min(1,Math.max(0,max)))*100,"%"),transition:transitionDuration>0?"left ".concat(transitionDuration,"ms, right ").concat(transitionDuration,"ms"):null};};/** * Shortcut for retrieving x position of a touch or mouse event. * @param {Event} event The event * @returns {number} The x position */export var getTouchPositionX=function getTouchPositionX(event){if(event.touches){return event.touches[0].pageX;}return event.pageX;};/** * Converts a relative slider value into an absolute value. * A relative value is a value between [0...1] indicating the position * on the slider given its absolute width. * An absolute value is a value in screen space coordinates. This value must be * between [0...offsetWidth] of the range slider. * @param {number} value The actual value. * @param {number} min The minimum. * @param {number} max The maximum. * @param {boolean} allowRealValues Whether the value should be rounded to the nearest integer. * @returns {number} The converted absolute value. */export var getAbsoluteValue=function getAbsoluteValue(value,min,max){var allowRealValues=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;var result=min+(max-min)*value;return Math.min(max,Math.max(min,allowRealValues?result:Math.round(result)));};/** * Converts an absolute slider value into a relative value. * An absolute value is a value in screen space coordinates. This value must be * between [0...offsetWidth] of the price range slider. * A relative value is a value between [0...1] indicating the position * on the slider given its absolute width. * @param {number} value The actual value. * @param {number} min The minimum. * @param {number} max The maximum. * @returns {number} The converted relative value. */export var getRelativeValue=function getRelativeValue(value,min,max){var result=(value-min)/(max-min);return Math.min(1,Math.max(0,result));};