@age/quantum
Version:
Catho react components
119 lines (101 loc) • 4.92 kB
JavaScript
;
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _theme = require("../shared/theme");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getSizePixels = function getSizePixels(size, gutter) {
var sizes = {
medium: gutter * 2,
// 16
large: gutter * 3,
// 24
xlarge: gutter * 4,
// 32
xxlarge: gutter * 5,
// 40
xxxlarge: gutter * 6 // 48
};
return sizes[size];
};
var Content = _styledComponents.default.svg.withConfig({
displayName: "CircularLoader__Content",
componentId: "sc-6tzjmf-0"
})(["left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;height:100%;", ""], function (_ref) {
var color = _ref.color;
return "\n color: ".concat(color, ";\n ");
});
var circularRotate = (0, _styledComponents.keyframes)(["100%{transform:rotate(360deg);}"]);
var circularDash = (0, _styledComponents.keyframes)(["0%{stroke-dasharray:1px,200px;stroke-dashoffset:0px;}50%{stroke-dasharray:100px,200px;stroke-dashoffset:-15px;}100%{stroke-dasharray:100px,200px;stroke-dashoffset:-125px;}"]);
var circleProps = {
cx: 44,
cy: 44,
r: 20.2,
strokeWidth: 3.6
};
var Circle = _styledComponents.default.circle.withConfig({
displayName: "CircularLoader__Circle",
componentId: "sc-6tzjmf-1"
})(["animation:", " 1.4s ease-in-out infinite;cx:", "px;cy:", "px;fill:none;line-height:1;r:", "px;stroke-dasharray:80px,200px;stroke-dashoffset:0px;stroke-width:", "px;stroke:currentColor;", ""], circularDash, circleProps.cx, circleProps.cy, circleProps.r, circleProps.strokeWidth, function (_ref2) {
var color = _ref2.color;
return "\n color: ".concat(color, ";\n ");
});
var Wrapper = _styledComponents.default.div.withConfig({
displayName: "CircularLoader__Wrapper",
componentId: "sc-6tzjmf-2"
})(["animation:", " 1.4s linear infinite;position:relative;", ""], circularRotate, function (_ref3) {
var size = _ref3.size,
gutter = _ref3.gutter;
return "\n height: ".concat(getSizePixels(size, gutter), "px;\n width: ").concat(getSizePixels(size, gutter), "px; \n ");
});
var CircularLoader = function CircularLoader(props) {
var size = props.size,
skin = props.skin,
_props$theme = props.theme,
color = _props$theme.colors[skin][700],
gutter = _props$theme.gutter;
var cx = circleProps.cx,
cy = circleProps.cy,
r = circleProps.r,
strokeWidth = circleProps.strokeWidth;
return _react.default.createElement(Wrapper, {
size: size,
gutter: gutter,
role: "progressbar"
}, _react.default.createElement(Content, {
color: color,
viewBox: "22 22 44 44"
}, _react.default.createElement(Circle, {
strokeWidth: strokeWidth,
cx: cx,
cy: cy,
r: r,
color: color
})));
};
CircularLoader.defaultProps = {
size: 'medium',
skin: 'primary',
theme: {
colors: _theme.colors,
gutter: _theme.gutter
}
};
CircularLoader.propTypes = {
size: _propTypes.default.oneOf(['medium', 'large', 'xlarge', 'xxlarge', 'xxxlarge']),
skin: _propTypes.default.oneOf(['primary', 'secondary']),
/** Edit only for themification */
theme: _propTypes.default.shape({
colors: _propTypes.default.object,
gutter: _propTypes.default.number
})
};
var _default = CircularLoader;
exports.default = _default;