@ggmdev/react-native-rating-bar
Version:
A React Native component for generating and displaying interactive Tap or Swipe enabled Ratings.
65 lines (63 loc) • 2.75 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _NoRatingElement = _interopRequireDefault(require("./NoRatingElement"));
var _utils = require("../helper/utils");
var _styles = require("../theme/styles");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const HalfRatingElement = _ref => {
var _children$props, _children$props$style;
let {
size,
children,
enableMask,
rtlMode,
unratedColor
// fraction, // for exact fraction
} = _ref;
// (I18nManager.isRTL && !isRTL):- if whole app is RTL and user passed 'ltr' then gesture will work opposite
const isOnlyRatingRTL = rtlMode && !_reactNative.I18nManager.isRTL || _reactNative.I18nManager.isRTL && !rtlMode;
const androidRTL = _utils.isAndroid && isOnlyRatingRTL;
// when android RTL is device based or forced, it works different, so inverting the condition on that case
const handleRtlAndroid = _reactNative.I18nManager.isRTL ? androidRTL : !androidRTL;
let padding = /*#__PURE__*/_react.default.isValidElement(children) && children !== null && children !== void 0 && (_children$props = children.props) !== null && _children$props !== void 0 && (_children$props$style = _children$props.style) !== null && _children$props$style !== void 0 && _children$props$style.width ? (size - (children === null || children === void 0 ? void 0 : children.props.style.width)) / 2 : 0;
if (isNaN(padding)) {
padding = 0;
}
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: {
width: size,
height: size
}
}, enableMask ? /*#__PURE__*/_react.default.createElement(_reactNative.View, null, /*#__PURE__*/_react.default.createElement(_NoRatingElement.default, {
size,
enableMask,
unratedColor
}, children), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: [(0, _styles.elementStyle)(size).container, {
position: 'absolute',
overflow: 'hidden',
paddingHorizontal: padding
},
// for complete fraction use 'size * (1 - fraction)' instead of 'size / 2'
!_utils.isAndroid || handleRtlAndroid ? {
right: size / 2
} : {
left: size / 2
}],
removeClippedSubviews: true
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: [!_utils.isAndroid || handleRtlAndroid ? {
left: size / 2
} : {
right: size / 2
}]
}, children))) : children);
};
var _default = /*#__PURE__*/_react.default.memo(HalfRatingElement);
exports.default = _default;
//# sourceMappingURL=HalfRatingElement.js.map