@bootstrap-styled/utils
Version:
UMD module for helper functions used as utilities for bootstrap-styled and other related modules
59 lines (51 loc) • 2.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
/**
* @public
* @description Used to extract parameters from a css animation. Multiple transition can be declared with a comma separated list)
* @param {String} transitions
* @example
* import parseTransition from '@bootstrap-styled/utils/lib/parseTransition';
*
* const parsedTransition = parseTransition(['height .35s ease', 'fade .5 ease-out']);
*
* // OUTPUT [{ timingFunction: 'height', duration: '.35s', property: 'height'}, { timingFunction: 'ease-out', duration: '.5s', property: 'fade'}]
*
* @returns {Array} will return an array of transition.
*/
var parseTransition = function parseTransition(transitions) {
if (!transitions) {
return [];
}
var sample = transitions;
var RULE_DELIMITER = ',';
var PROPERTY_DELIMITER = ' ';
var MS_UNIT = 'ms';
var TMP_STR = 'TMP'; // these are default css value for each property
var DEFAULT_PROPERTY = 'all';
var DEFAULT_DURATION = 0;
var DEFAULT_TIMING_FUNCTION = 'ease';
var DEFAULT_DELAY = 0; // eslint-disable-next-line no-useless-escape
var BEZIER_REGEX = /cubic-bezier\([^\)]+\)/gi;
var cubicBezierList = transitions.match(BEZIER_REGEX);
if (cubicBezierList) {
sample = sample.replace(BEZIER_REGEX, TMP_STR);
}
var transitionList = sample.split(RULE_DELIMITER).map(function (rule) {
var properties = rule.trim().split(PROPERTY_DELIMITER);
return {
property: properties[0] || DEFAULT_PROPERTY,
duration: properties[1] && !(properties[1].indexOf(MS_UNIT) !== -1) ? parseFloat(properties[1]) * 1000 : parseFloat(properties[1]) || DEFAULT_DURATION,
timingFunction: properties[2] && properties[2] !== TMP_STR ? properties[2] : cubicBezierList ? cubicBezierList.shift() : DEFAULT_TIMING_FUNCTION,
// eslint-disable-line no-nested-ternary
delay: properties[3] && !(properties[3].indexOf(MS_UNIT) !== -1) ? parseFloat(properties[3]) * 1000 : parseFloat(properties[3]) || DEFAULT_DELAY
};
});
return transitionList;
};
var _default = parseTransition;
exports.default = _default;
module.exports = exports.default;
;