rn-text-highlight
Version:
react-naitve-highlight component
53 lines (46 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const RnTextHighlight = e => {
const {
originText: r,
keyword: l,
keywordStyle: o,
textStyle: t
} = e;
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
style: t
}, (() => {
if (!l || 0 === l.length) return /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, r);
var e = l.split("").reduce((e, t, r) => r === l.length - 1 ? e + `(${t})` : e + `(${t})|`, ""),
e = new RegExp(e);
const t = r.split(e);
return t.map((e, t) => e ? l.includes(e) ? /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
style: o,
key: t
}, e) : /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
key: t
}, e) : null);
})()));
};
var _default = RnTextHighlight;
exports.default = _default;
RnTextHighlight.propTypes = {
originText: _propTypes.default.string,
keyword: _propTypes.default.string,
keywordStyle: _propTypes.default.object,
textStyle: _propTypes.default.object
}, RnTextHighlight.defaultProps = {
originText: "",
keyword: "",
textStyle: {},
keywordStyle: {
color: "#f40"
}
};