wix-style-react
Version:
wix-style-react
68 lines (51 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// taken from https://stackoverflow.com/a/18473154
function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
return {
x: centerX + radius * Math.cos(angleInRadians),
y: centerY + radius * Math.sin(angleInRadians)
};
}
/* eslint-disable max-params */
function describeArc(x, y, radius, startAngle, endAngle) {
var start = polarToCartesian(x, y, radius, endAngle);
var end = polarToCartesian(x, y, radius, startAngle);
var largeArcFlag = endAngle - startAngle <= 180 ? '0' : '1';
var d = ['M', start.x, start.y, 'A', radius, radius, 0, largeArcFlag, 0, end.x, end.y].join(' ');
return d;
}
/* eslint-enable */
var Arc = function Arc(_ref) {
var className = _ref.className,
strokeWidth = _ref.strokeWidth,
viewBoxSize = _ref.viewBoxSize,
angle = _ref.angle;
var d = describeArc(0, 0, (viewBoxSize - strokeWidth) / 2, 0, angle);
var viewBox = '-' + viewBoxSize / 2 + ' -' + viewBoxSize / 2 + ' ' + viewBoxSize + ' ' + viewBoxSize;
return _react2.default.createElement(
'svg',
{
xmlns: 'http://www.w3.org/2000/svg',
viewBox: viewBox,
className: className
},
_react2.default.createElement('path', { strokeWidth: strokeWidth, d: d })
);
};
Arc.propTypes = {
angle: _propTypes2.default.number,
className: _propTypes2.default.string,
strokeWidth: _propTypes2.default.number,
viewBoxSize: _propTypes2.default.number
};
Arc.displayName = 'Arc';
exports.default = Arc;