@spaced-out/ui-design-system
Version:
Sense UI components library
67 lines (66 loc) • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ScoreBar = exports.Direction = exports.DEFAULT_COLOR_MAP = void 0;
var React = _interopRequireWildcard(require("react"));
var _invariant = _interopRequireDefault(require("invariant"));
var _clamp = _interopRequireDefault(require("lodash/clamp"));
var _color = require("../../styles/variables/_color.js");
var _size = require("../../styles/variables/_size");
var _classify = require("../../utils/classify");
var _scoreBar = require("../../utils/score-bar");
var _Text = require("../Text");
var _ScoreBarModule = _interopRequireDefault(require("./ScoreBar.module.css"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const Direction = exports.Direction = Object.freeze({
horizontal: 'horizontal',
vertical: 'vertical'
});
const DEFAULT_BARS_COUNT = 5;
const DEFAULT_COLOR_MAP = exports.DEFAULT_COLOR_MAP = {
inactive: _color.colorScoreBarInactive,
'100': _color.colorScoreBarLevel5,
'80': _color.colorScoreBarLevel4,
'60': _color.colorScoreBarLevel3,
'40': _color.colorScoreBarLevel2,
'20': _color.colorScoreBarLevel1
};
const ScoreBar = exports.ScoreBar = /*#__PURE__*/React.forwardRef((_ref, ref) => {
let {
score = 0,
colorMap = DEFAULT_COLOR_MAP,
totalBars = DEFAULT_BARS_COUNT,
direction = 'vertical',
classNames,
withBorder = false,
labelMap
} = _ref;
(0, _invariant.default)(totalBars > 0, JSON.stringify(_scoreBar.SCORE_BAR_ERRORS.INVALID_BAR_COUNT));
const activeLabel = (0, _scoreBar.getLabelByScorePercentage)(score, totalBars, labelMap);
return /*#__PURE__*/React.createElement("div", {
ref: ref,
"data-testid": "ScoreBar",
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarWrapper, {
[_ScoreBarModule.default.scoreBarBorder]: withBorder
}, classNames?.wrapper)
}, /*#__PURE__*/React.createElement("div", {
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarContainer, classNames?.container),
style: {
'--direction': direction === Direction.horizontal ? 'row-reverse' : 'column',
'--height': direction === Direction.horizontal ? _size.size18 : 'unset',
'--width': direction === Direction.vertical ? _size.size18 : 'unset'
}
}, [...Array(totalBars).keys()].reverse().map(count => /*#__PURE__*/React.createElement("div", {
className: (0, _classify.classify)(_ScoreBarModule.default.bar, classNames?.bar),
style: {
'--background-color': (0, _scoreBar.getColorByScorePercentage)(totalBars, (0, _clamp.default)(score, 0, totalBars), count, colorMap),
'--height': direction === Direction.horizontal ? _size.size18 : _size.size2,
'--width': direction === Direction.vertical ? _size.size18 : _size.size2
},
key: count
}))), activeLabel && /*#__PURE__*/React.createElement(_Text.SubTitleExtraSmall, {
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarLabel, classNames?.label)
}, activeLabel));
});