@fruits-chain/react-native-xiaoshu
Version:
React Native UI library
118 lines (99 loc) • 4.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _theme = require("../theme");
var _icon = require("../icon");
var _helpers = require("../helpers");
var _style = require("./style");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (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; }
/**
* Tag 标签
*/
const Tag = _ref => {
let {
children,
style,
innerStyle,
textStyle,
color,
textColor,
mark = false,
outward = 'fill',
round = false,
size = 'medium',
type = 'default',
closeable = false,
onPressClose,
hairline = false
} = _ref;
const THEME_VAR = (0, _theme.useTheme)();
const STYLES = (0, _theme.widthStyle)(THEME_VAR, _style.createStyles);
const mainColor = (0, _helpers.isDef)(color) ? color : THEME_VAR[`tag_${type}_color`] || THEME_VAR.tag_default_color;
const padding_vertical_size = `padding_vertical_${size}`;
const padding_horizontal_size = `padding_horizontal_${size}`;
const {
outwardInnerStyle,
outwardTextStyle
} = (0, _react.useMemo)(() => {
const tempInnerStyle = {};
const tempTextStyle = {};
switch (outward) {
case 'fill':
tempInnerStyle.backgroundColor = mainColor;
tempInnerStyle.borderColor = mainColor;
tempTextStyle.color = THEME_VAR.tag_text_color;
break;
case 'ghost':
tempInnerStyle.backgroundColor = THEME_VAR.tag_ghost_bg_color;
tempInnerStyle.borderColor = mainColor;
tempTextStyle.color = mainColor;
break;
case 'flat':
tempInnerStyle.backgroundColor = (0, _helpers.hex2rgba)(mainColor, 0.1);
tempInnerStyle.borderColor = (0, _helpers.hex2rgba)(mainColor, 0.1);
tempTextStyle.color = mainColor;
break;
default:
break;
}
return {
outwardInnerStyle: tempInnerStyle,
outwardTextStyle: tempTextStyle
};
}, [outward, mainColor, THEME_VAR.tag_text_color, THEME_VAR.tag_ghost_bg_color]);
const innerStyles = [
/** 基础样式 */
STYLES.inner,
/** 类型样式 */
outwardInnerStyle, hairline ? STYLES.border_width_hairline : null, size === 'large' && STYLES.border_radius_large, round && STYLES.border_radius_round, mark && STYLES.inner_mark,
/** 外部样式 */
innerStyle];
const textStyleSummary = _reactNative.StyleSheet.flatten([
/** 基础样式 */
STYLES.text,
/** 类型样式 */
outwardTextStyle, STYLES === null || STYLES === void 0 ? void 0 : STYLES[padding_vertical_size], STYLES === null || STYLES === void 0 ? void 0 : STYLES[padding_horizontal_size], size === 'large' && STYLES.font_size_large,
/** 外部样式 */
(0, _helpers.isDef)(textColor) && {
color: textColor
}, textStyle]);
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: [STYLES.tag, style]
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: innerStyles
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
style: textStyleSummary
}, children), closeable ? /*#__PURE__*/_react.default.createElement(_icon.CrossOutline, {
onPress: onPressClose,
size: textStyleSummary.fontSize,
color: textStyleSummary.color
}) : null));
};
var _default = /*#__PURE__*/(0, _react.memo)(Tag);
exports.default = _default;
//# sourceMappingURL=index.js.map