UNPKG

@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
"use strict"; 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;