@wezom/toolkit-css-in-js
Version:
Useful tools for working with CSS-in-JS
97 lines (92 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var toolkitMath = require('@wezom/toolkit-math');
/**
* Low level converter
* @param size
* @param pixels
* @param unit
* @param joiner
*/
function jssConvertPixels(size, pixels, unit, joiner) {
return pixels
.map(function (px) {
if (typeof px === 'string') {
return px;
} else if (px === 0) {
return '0';
}
return toolkitMath.mathRound(px / size, -5) + unit;
})
.join(joiner);
}
/**
* High level converter from px to em
* @see jssConvertPixels
* @example
* jssEm(16, 16); // => '1em'
* jssEm(16, 16, 'auto'); // => '1em auto'
* jssEm(16, -8, 0); // => '-0.5em 0'
* jssEm(16, 24, 32, 48); // => '1.5em 2em 3em'
* jssEm(20, 30, 10, 45); // => '1.5em 0.5em 2.25em'
*/
function jssEm(emSize) {
var pixels = [];
for (var _i = 1; _i < arguments.length; _i++) {
pixels[_i - 1] = arguments[_i];
}
return jssConvertPixels(emSize, pixels, 'em', ' ');
}
var _remSize = 16;
/**
* High level converter from px to rem with pre-defined rem size
* By default rem size used as 16px;
* @see jssConvertPixels()
* @see jssSetPreDefinedRemSize()
* @example
* jssRem(16); // => '1rem'
* jssRem(16, 'auto'); // => '1rem auto'
* jssRem(-8, 0); // => '-0.5rem 0'
* jssRem(24, 32, 48); // => '1.5rem 2rem 3rem'
* jssRem(30, 10, 45); // => '1.5rem 0.5rem 2.25rem'
*/
function jssRem() {
var pixels = [];
for (var _i = 0; _i < arguments.length; _i++) {
pixels[_i] = arguments[_i];
}
return jssConvertPixels(_remSize, pixels, 'rem', ' ');
}
/**
* High level converter from px to rem, with custom rem size
* @see jssConvertPixels()
* @example
* jssRemWithSize(16, 16); // => '1rem'
* jssRemWithSize(16, 16, 'auto'); // => '1rem auto'
* jssRemWithSize(16, -8, 0); // => '-0.5rem 0'
* jssRemWithSize(16, 24, 32, 48); // => '1.5rem 2rem 3rem'
* jssRemWithSize(20, 30, 10, 45); // => '1.5rem 0.5rem 2.25rem'
*/
function jssRemWithSize(remSize) {
var pixels = [];
for (var _i = 1; _i < arguments.length; _i++) {
pixels[_i - 1] = arguments[_i];
}
return jssConvertPixels(remSize, pixels, 'rem', ' ');
}
/**
* Change pre-defined rem size.
* @see jssRemDefined()
* @example
* jssRemDefined(20); // => '1.25rem'
* jssSetPreDefinedRemSize(20);
* jssRemDefined(20); // => '1rem'
*/
function jssSetPreDefinedRemSize(size) {
_remSize = size;
}
exports.jssConvertPixels = jssConvertPixels;
exports.jssEm = jssEm;
exports.jssRem = jssRem;
exports.jssRemWithSize = jssRemWithSize;
exports.jssSetPreDefinedRemSize = jssSetPreDefinedRemSize;