css-math
Version:
Simple library for performing math operations on CSS properties
84 lines (70 loc) • 2.47 kB
JavaScript
;
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;
}
};