@sendbird/uikit-react-native-foundation
Version:
A foundational UI kit for building chat-enabled React Native apps.
131 lines (130 loc) • 5.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _uikitUtils = require("@sendbird/uikit-utils");
var _Box = _interopRequireDefault(require("../../components/Box"));
var _ImageWithPlaceholder = _interopRequireDefault(require("../../components/ImageWithPlaceholder"));
var _PressBox = _interopRequireDefault(require("../../components/PressBox"));
var _RegexText = _interopRequireDefault(require("../../components/RegexText"));
var _Text = _interopRequireDefault(require("../../components/Text"));
var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet"));
var _useUIKitTheme = _interopRequireDefault(require("../../theme/useUIKitTheme"));
var _MessageContainer = _interopRequireDefault(require("./MessageContainer"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
const OpenGraphUserMessage = props => {
const {
colors
} = (0, _useUIKitTheme.default)();
const {
onPress,
onLongPress,
onPressURL,
...rest
} = props;
const color = colors.ui.openChannelMessage.default;
return /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_PressBox.default, {
onPress: onPress,
onLongPress: onLongPress
}, ({
pressed
}) => {
var _props$strings;
return /*#__PURE__*/_react.default.createElement(_MessageContainer.default, _extends({
pressed: pressed
}, rest), /*#__PURE__*/_react.default.createElement(_Box.default, {
alignItems: 'flex-start'
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
body3: true,
color: color.enabled.textMsg,
suppressHighlighting: true,
supportRTLAlign: true,
originalText: props.message.message
}, /*#__PURE__*/_react.default.createElement(_RegexText.default, {
body3: true,
suppressHighlighting: true,
supportRTLAlign: true,
originalText: props.message.message,
color: color.enabled.textMsg,
patterns: [{
regex: _uikitUtils.urlRegexRough,
replacer({
match,
parentProps,
keyPrefix,
index
}) {
return /*#__PURE__*/_react.default.createElement(_Text.default, _extends({}, parentProps, {
key: `${keyPrefix}-${index}`,
onPress: () => onPressURL === null || onPressURL === void 0 ? void 0 : onPressURL(match),
onLongPress: onLongPress,
color: colors.primary,
style: parentProps === null || parentProps === void 0 ? void 0 : parentProps.style,
supportRTLAlign: true,
originalText: match
}), match);
}
}]
}, props.message.message), Boolean(props.message.updatedAt) && /*#__PURE__*/_react.default.createElement(_Text.default, {
body3: true,
color: color.enabled.textMsgPostfix
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.edited) ?? ' (edited)'))));
}), props.message.ogMetaData && /*#__PURE__*/_react.default.createElement(_MessageContainer.default, _extends({}, rest, {
grouped: true
}), /*#__PURE__*/_react.default.createElement(_PressBox.default, {
style: styles.ogContainer,
onPress: () => {
var _props$message$ogMeta;
return ((_props$message$ogMeta = props.message.ogMetaData) === null || _props$message$ogMeta === void 0 ? void 0 : _props$message$ogMeta.url) && (onPressURL === null || onPressURL === void 0 ? void 0 : onPressURL(props.message.ogMetaData.url));
},
onLongPress: onLongPress
}, ({
pressed
}) => props.message.ogMetaData && /*#__PURE__*/_react.default.createElement(_Box.default, {
padding: 8,
borderRadius: 8,
style: styles.ogContainer,
backgroundColor: pressed ? color.pressed.bubbleBackground : color.enabled.bubbleBackground,
alignItems: 'flex-start'
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
numberOfLines: 1,
caption2: true,
color: colors.onBackground02,
style: styles.ogUrl
}, props.message.ogMetaData.url), /*#__PURE__*/_react.default.createElement(_Text.default, {
numberOfLines: 2,
body2: true,
color: colors.primary,
style: styles.ogTitle
}, props.message.ogMetaData.title), Boolean(props.message.ogMetaData.description) && /*#__PURE__*/_react.default.createElement(_Text.default, {
numberOfLines: 2,
caption2: true,
color: colors.onBackground01
}, props.message.ogMetaData.description), !!props.message.ogMetaData.defaultImage && /*#__PURE__*/_react.default.createElement(_ImageWithPlaceholder.default, {
style: styles.ogImage,
source: {
uri: props.message.ogMetaData.defaultImage.url
}
})))));
};
const styles = (0, _createStyleSheet.default)({
ogContainer: {
maxWidth: 296
},
ogUrl: {
marginBottom: 4
},
ogTitle: {
marginBottom: 8
},
ogImage: {
width: '100%',
height: 156,
marginTop: 12
}
});
var _default = exports.default = OpenGraphUserMessage;
//# sourceMappingURL=Message.user.og.js.map