@compositor/kit
Version:
Components for development environments, style guides, and demos
90 lines (73 loc) • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.alpha = exports.gradient = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _nanoStyle = require('nano-style');
var _nanoStyle2 = _interopRequireDefault(_nanoStyle);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _chromaJs = require('chroma-js');
var _chromaJs2 = _interopRequireDefault(_chromaJs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var gradient = exports.gradient = function gradient() {
var angle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var size = arguments[1];
var color = arguments[2];
return 'linear-gradient(' + angle + 'deg, transparent, transparent ' + (size - 1) + 'px, ' + color + ' ' + (size - 1) + 'px)';
};
var alpha = exports.alpha = function alpha(val, a) {
try {
return (0, _chromaJs2.default)(val).alpha(a).css();
} catch (e) {
return val;
}
};
var XRay = (0, _nanoStyle2.default)('div')(function (_ref) {
var padding = _ref.padding,
color = _ref.color,
backgroundColor = _ref.backgroundColor,
outline = _ref.outline,
grid = _ref.grid,
center = _ref.center,
disabled = _ref.disabled,
style = _ref.style;
return disabled ? (0, _extends3.default)({}, style, { padding: padding }) : (0, _extends3.default)({}, style, {
padding: padding,
color: color,
backgroundColor: backgroundColor,
backgroundPosition: center ? 'center center' : 'left top',
'& *': {
color: outline ? color + ' !important' : null,
outline: outline ? '1px solid ' + alpha(color, 1 / 2) + ' !important' : null,
backgroundColor: outline ? alpha(color, 1 / 8) + ' !important' : null
}
}, getGrid(grid, alpha(color, 1 / 4)));
});
var getGrid = function getGrid(grid, color) {
if (!grid) return null;
var size = grid && typeof grid === 'number' ? grid : 8;
return {
backgroundImage: gradient(0, size, color) + ', ' + gradient(90, size, color),
backgroundSize: size + 'px ' + size + 'px'
};
};
XRay.propTypes = {
padding: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.number]),
color: _propTypes.string,
backgroundColor: _propTypes.string,
outline: _propTypes.bool,
grid: (0, _propTypes.oneOfType)([_propTypes.number, _propTypes.bool]),
center: _propTypes.bool
};
XRay.defaultProps = {
padding: 0,
outline: true,
grid: 8,
color: '#6bf',
backgroundColor: '#001424',
center: false
};
exports.default = XRay;