UNPKG

@r3l/app

Version:
195 lines (165 loc) 7.38 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _reactRedux = require("react-redux"); var _reactNativeWeb = require("react-native-web"); var _propTypes = _interopRequireDefault(require("prop-types")); var _global = require("../../../styles/global"); var _percent = _interopRequireDefault(require("../../stats/mobile/percent.component")); var _styles = require("../../../styles"); var _styled = require("../../styled"); var _reactNativeSafeAreaView = _interopRequireDefault(require("react-native-safe-area-view")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var styles; var Emoji = _reactNativeWeb.Text; if (_reactNativeWeb.Platform.OS === 'android') { Emoji = require('react-native-emoji-compat-text').default; } TabBar.propTypes = { currentTab: _propTypes.default.object, changeTab: _propTypes.default.func, tabs: _propTypes.default.array }; var _default = /*#__PURE__*/(0, _react.memo)(TabBar); exports.default = _default; function TabBar(_ref) { var tabs = _ref.tabs, currentTab = _ref.currentTab, changeTab = _ref.changeTab; return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaView.default, { forceInset: { top: 'never' } }, /*#__PURE__*/_react.default.createElement(_styled.Box, { sx: { bg: 'white', borderTopColor: 'black', borderTopWidth: _reactNativeWeb.StyleSheet.hairlineWidth } }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: [styles.footer, { borderTopColor: 'black' }] }, tabs.map(function (t) { return /*#__PURE__*/_react.default.createElement(Tab, { key: t.key, tab: t, currentTab: currentTab, changeTab: changeTab }); })))); } Tab.propTypes = { tab: _propTypes.default.object, currentTab: _propTypes.default.object, changeTab: _propTypes.default.func }; function Tab(_ref2) { var tab = _ref2.tab, currentTab = _ref2.currentTab, changeTab = _ref2.changeTab; var notif = (0, _reactRedux.useSelector)(function (state) { return state.notif; }); var user = (0, _reactRedux.useSelector)(function (state) { return state.auth.user; }); var active = tab.key === currentTab.key; var badge = tab.params.title === 'Activity' && notif.count && notif.count; var fontAdjust = tab.params.title === 'Wallet' && _reactNativeWeb.Platform.OS === 'ios' && { fontSize: 23 }; var defaultIcon = /*#__PURE__*/_react.default.createElement(Emoji, { style: [styles.icon, styles.textCenter, fontAdjust, active ? styles.footerTextActive : null] }, tab.params.icon); var defaultTitle = /*#__PURE__*/_react.default.createElement(_styled.SmallText, { sx: { fontSize: 10, color: active ? 'blue' : 'grey' } }, tab.params.title); var profileTab = tab.key === 'myProfile'; var icon = profileTab && user && user.image ? /*#__PURE__*/_react.default.createElement(_reactNativeWeb.Image, { source: { uri: user.image }, style: [styles.footerImg] }) : defaultIcon; var title = profileTab && user ? /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, null, /*#__PURE__*/_react.default.createElement(_percent.default, { fontSize: 10, fontFamily: 'Arial', user: user })) : defaultTitle; return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: { flex: 1 }, key: tab.key }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableHighlight, { onPress: function onPress() { return requestAnimationFrame(function () { return changeTab(tab.key); }); }, underlayColor: 'transparent', style: [styles.footerItem, { borderBottomColor: active ? _styles.colors.blue : 'transparent' }] }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: styles.footerItemView }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: styles.footerItemInner }, icon), title)), badge ? /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { pointerEvents: 'none', style: styles.notifCount }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.Text, { style: styles.notifText }, badge)) : null); } var localStyles = _reactNativeWeb.StyleSheet.create({ footer: { width: _global.fullWidth, height: 50, flexDirection: 'row', alignItems: 'stretch' }, footerItem: { flex: 1, borderBottomWidth: 2, alignItems: 'center', justifyContent: 'center' }, footerItemView: { flex: 1, justifyContent: 'center', alignItems: 'center', paddingTop: 2 }, footerItemInner: { height: 27, justifyContent: 'flex-start' }, footerImg: { resizeMode: 'cover', height: 25, width: 25, borderRadius: 12.5 }, icon: { fontSize: 20, opacity: 1, color: 'black', width: 25 } }); styles = _objectSpread(_objectSpread({}, localStyles), _global.globalStyles); //# sourceMappingURL=tabBar.component.js.map