@shopgate/engage
Version:
Shopgate's ENGAGE library.
50 lines • 3.82 kB
JavaScript
/**
* 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));};