UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

75 lines (66 loc) 2.83 kB
"use strict"; exports.__esModule = true; exports.getEasingTiming = exports.cubicBezierCSSProp = exports.customCubicBezier = exports.boopCubicBezier = exports.bounceCubicBezier = exports.defaultEasingTiming = void 0; var defaultEasingTiming = 'ease-in-out'; exports.defaultEasingTiming = defaultEasingTiming; var bounceCubicBezier = '0.680, -0.650, 0.265, 1.650'; exports.bounceCubicBezier = bounceCubicBezier; var boopCubicBezier = '0.175, 0.885, 0.325, 1.2'; exports.boopCubicBezier = boopCubicBezier; var customCubicBezier = { easeInQuad: '0.550, 0.085, 0.680, 0.530', easeInCubic: '0.550, 0.055, 0.675, 0.190', easeInQuart: '0.895, 0.030, 0.685, 0.220', easeInQuint: '0.755, 0.050, 0.855, 0.060', easeInSine: '0.470, 0.000, 0.745, 0.715', easeInExpo: '0.950, 0.050, 0.795, 0.035', easeInCirc: '0.600, 0.040, 0.980, 0.335', easeInBack: '0.600, -0.280, 0.735, 0.045', easeOutQuad: '0.250, 0.460, 0.450, 0.940', easeOutCubic: '0.215, 0.610, 0.355, 1.000', easeOutQuart: '0.165, 0.840, 0.440, 1.000', easeOutQuint: '0.230, 1.000, 0.320, 1.000', easeOutSine: '0.390, 0.575, 0.565, 1.000', easeOutExpo: '0.190, 1.000, 0.220, 1.000', easeOutCirc: '0.075, 0.820, 0.165, 1.000', easeOutBack: '0.175, 0.885, 0.320, 1.275', easeInOutQuad: '0.455, 0.030, 0.515, 0.955', easeInOutCubic: '0.645, 0.045, 0.355, 1.000', easeInOutQuart: '0.770, 0.000, 0.175, 1.000', easeInOutQuint: '0.860, 0.000, 0.070, 1.000', easeInOutSine: '0.445, 0.050, 0.550, 0.950', easeInOutExpo: '1.000, 0.000, 0.000, 1.000', easeInOutCirc: '0.785, 0.135, 0.150, 0.860', easeInOutBack: '0.680, -0.550, 0.265, 1.550', // Custom: Exaggerated form of easeInOutBack bounce: '0.680, -0.650, 0.265, 1.650', boop: '0.175, 0.885, 0.325, 1.2', elastic: '0.680, -1.500, 0.265, 2.500' }; exports.customCubicBezier = customCubicBezier; var cubicBezierCSSProp = function cubicBezierCSSProp(curve) { if (!curve) return defaultEasingTiming; return "cubic-bezier(" + curve.toString() + ")"; }; exports.cubicBezierCSSProp = cubicBezierCSSProp; var getEasingTiming = function getEasingTiming(easing) { if (easing === void 0) { easing = defaultEasingTiming; } if (!easing || typeof easing !== 'string') return defaultEasingTiming; var customEasing = customCubicBezier[camelCase(easing)]; return customEasing ? cubicBezierCSSProp(customEasing) : easing; }; /** * Camelcases a specified string. * * @param {string} string The string. * @returns {string} The camelCased string. */ exports.getEasingTiming = getEasingTiming; function camelCase(string) { return string.replace(/-/g, ' ').replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) { if (+match === 0) return ''; // or if (/\s+/.test(match)) for white spaces return index === 0 ? match.toLowerCase() : match.toUpperCase(); }); }