UNPKG

css-math

Version:

Simple library for performing math operations on CSS properties

84 lines (70 loc) 2.47 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _parser = require('../parser'); var _parser2 = _interopRequireDefault(_parser); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Get the padding box result * * @param top * @param right * @param bottom * @param left * @param defaultValue * @returns {{top: *, bottom: *, left: *, right: *, width, height}} */ var getPaddingBoxResult = function getPaddingBoxResult(top, right, bottom, left) { var defaultValue = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '0px'; var height = (0, _parser2.default)(top + ' + ' + bottom) || defaultValue; var width = (0, _parser2.default)(right + ' + ' + left) || defaultValue; return { top: top, bottom: bottom, left: left, right: right, width: width, height: height }; }; /** * Return an object with the top, bottom, right, left padding values * * @param padding * @param defaultValue * @returns {{top: string, bottom: string, left: string, right: string, width: string, height: string}} */ exports.default = function (padding) { var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0px'; // normalise the padding by removing and double spaces and trimming var paddingNormalised = String(padding).replace(/ +(?= )/g, '').trim(); // get the numeric value of the padding var defaultValueDouble = (0, _parser2.default)(defaultValue + ' * 2'); var result = { top: defaultValue, bottom: defaultValue, left: defaultValue, right: defaultValue, width: defaultValueDouble || defaultValue, height: defaultValueDouble || defaultValue }; // split the value in to it's constituent parts var parts = paddingNormalised.split(' '); switch (parts.length) { case 1: // equal values for each position return getPaddingBoxResult(parts[0], parts[0], parts[0], parts[0], defaultValue); case 2: // (top & bottom) + (left & right) return getPaddingBoxResult(parts[0], parts[1], parts[0], parts[1], defaultValue); case 3: // (top) + (left & right) + (bottom) return getPaddingBoxResult(parts[0], parts[1], parts[2], parts[1], defaultValue); case 4: // each position is specified return getPaddingBoxResult(parts[0], parts[1], parts[2], parts[3], defaultValue); default: return result; } };