UNPKG

@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
"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