UNPKG

@r3l/app

Version:
114 lines (94 loc) 4.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = TabBar; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _reactNativeWeb = require("react-native-web"); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated")); var _styled = require("../../styled"); var _global = require("../../../styles/global"); var _styles = require("../../../styles"); 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; TabBar.propTypes = { position: _propTypes.default.object, navigationState: _propTypes.default.object, setTab: _propTypes.default.func }; function TabBar(_ref) { var navigationState = _ref.navigationState, position = _ref.position, setTab = _ref.setTab; var inputRange = navigationState.routes.map(function (x, i) { return i; }); var nRoutes = navigationState.routes.length; var tabUnderlineStyle = { position: 'absolute', width: _global.fullWidth / nRoutes, height: 4, backgroundColor: _styles.colors.blue, bottom: 0 }; function getColor(inactive, active, i) { return _reactNativeReanimated.default.round(_reactNativeReanimated.default.interpolate(position, { inputRange: inputRange, outputRange: inputRange.map(function (inputIndex) { return inputIndex === i ? active : inactive; }), extrapolate: 'clamp' })); } var left = _reactNativeReanimated.default.interpolate(position, { inputRange: inputRange, outputRange: inputRange.map(function (i) { return i * _global.fullWidth / nRoutes; }), extrapolate: 'clamp' }); return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: styles.tabs }, navigationState.routes.map(function (route, i) { var color = _reactNativeReanimated.default.color(getColor(33, 0, i), getColor(33, 0, i), getColor(33, 255, i)); return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableOpacity, { key: route.title, activeOpacity: 0.6, style: styles.tab, onPress: function onPress() { return setTab(i); } }, /*#__PURE__*/_react.default.createElement(_styled.NumericalValue, null, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.Text, { style: [{ color: color, fontWeight: 'bold' }] }, route.title))); }), /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.View, { style: [tabUnderlineStyle, { transform: [{ translateX: left }] }] })); } var localStyles = _reactNativeWeb.StyleSheet.create({ tab: { flex: 1, alignItems: 'center', justifyContent: 'center' }, tabs: { height: 50, flexDirection: 'row', justifyContent: 'space-around', borderBottomWidth: _reactNativeWeb.StyleSheet.hairlineWidth, borderColor: _styles.colors.borderGrey } }); styles = _objectSpread(_objectSpread({}, _global.globalStyles), localStyles); //# sourceMappingURL=TabBar.js.map