@sendbird/uikit-react-native-foundation 2.5.0 → 3.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/lib/commonjs/components/ImageWithPlaceholder/index.js +7 -1
- package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -1
- package/lib/commonjs/components/RegexText/index.js.map +1 -1
- package/lib/commonjs/index.js +8 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/Avatar/AvatarGroup.js +1 -1
- package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js +37 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js +54 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.js +80 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js +120 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +54 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.js +44 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js +59 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js +74 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js +110 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js +91 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/index.js +26 -0
- package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +5 -2
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -1
- package/lib/module/components/ImageWithPlaceholder/index.js +7 -1
- package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -1
- package/lib/module/components/RegexText/index.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/Avatar/AvatarGroup.js +1 -1
- package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/module/ui/GroupChannelMessage/Message.admin.js +29 -0
- package/lib/module/ui/GroupChannelMessage/Message.admin.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.image.js +46 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.js +72 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.video.js +110 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.unknown.js +46 -0
- package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.js +36 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.og.js +51 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js +66 -0
- package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageContainer.js +102 -0
- package/lib/module/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js +83 -0
- package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/index.js +18 -0
- package/lib/module/ui/GroupChannelMessage/index.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.js +1 -1
- package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -1
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js +5 -2
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
- package/lib/module/ui/OpenChannelMessage/index.js.map +1 -1
- package/lib/typescript/src/components/RegexText/index.d.ts +2 -2
- package/lib/typescript/src/index.d.ts +4 -2
- package/lib/typescript/src/types.d.ts +1 -9
- package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +5 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +10 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +8 -0
- package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +191 -0
- package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
- package/package.json +5 -6
- package/src/components/ImageWithPlaceholder/index.tsx +3 -2
- package/src/components/RegexText/index.tsx +2 -2
- package/src/index.ts +5 -2
- package/src/types.ts +1 -11
- package/src/ui/Avatar/AvatarGroup.tsx +1 -1
- package/src/ui/GroupChannelMessage/Message.admin.tsx +34 -0
- package/src/ui/GroupChannelMessage/Message.file.image.tsx +45 -0
- package/src/ui/GroupChannelMessage/Message.file.tsx +70 -0
- package/src/ui/GroupChannelMessage/Message.file.video.tsx +106 -0
- package/src/ui/GroupChannelMessage/Message.unknown.tsx +47 -0
- package/src/ui/GroupChannelMessage/Message.user.og.tsx +62 -0
- package/src/ui/GroupChannelMessage/Message.user.tsx +49 -0
- package/src/ui/GroupChannelMessage/MessageBubbleWithText.tsx +80 -0
- package/src/ui/GroupChannelMessage/MessageContainer.tsx +106 -0
- package/src/ui/GroupChannelMessage/MessageOpenGraph.tsx +84 -0
- package/src/ui/GroupChannelMessage/index.ts +48 -0
- package/src/ui/OpenChannelMessage/Message.user.og.tsx +6 -2
- package/src/ui/OpenChannelMessage/Message.user.tsx +1 -1
- package/src/ui/OpenChannelMessage/index.ts +1 -1
- package/lib/commonjs/components/URLParsedText/index.js +0 -46
- package/lib/commonjs/components/URLParsedText/index.js.map +0 -1
- package/lib/module/components/URLParsedText/index.js +0 -38
- package/lib/module/components/URLParsedText/index.js.map +0 -1
- package/lib/typescript/src/components/URLParsedText/index.d.ts +0 -8
- package/src/components/URLParsedText/index.tsx +0 -50
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { SendbirdUserMessage } from '@sendbird/uikit-utils';
|
|
4
|
+
|
|
5
|
+
import Box from '../../components/Box';
|
|
6
|
+
import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
|
|
7
|
+
import PressBox from '../../components/PressBox';
|
|
8
|
+
import Text from '../../components/Text';
|
|
9
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
10
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
11
|
+
|
|
12
|
+
const MessageOpenGraph = ({
|
|
13
|
+
onPressURL,
|
|
14
|
+
onLongPress,
|
|
15
|
+
ogMetaData,
|
|
16
|
+
variant,
|
|
17
|
+
}: {
|
|
18
|
+
ogMetaData: Required<SendbirdUserMessage>['ogMetaData'];
|
|
19
|
+
variant: 'outgoing' | 'incoming';
|
|
20
|
+
onPressURL?: (url: string) => void;
|
|
21
|
+
onLongPress?: () => void;
|
|
22
|
+
}) => {
|
|
23
|
+
const { palette, select, colors } = useUIKitTheme();
|
|
24
|
+
const color = colors.ui.groupChannelMessage[variant];
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<PressBox
|
|
28
|
+
activeOpacity={0.85}
|
|
29
|
+
onPress={() => typeof ogMetaData?.url === 'string' && onPressURL?.(ogMetaData.url)}
|
|
30
|
+
onLongPress={onLongPress}
|
|
31
|
+
>
|
|
32
|
+
{({ pressed }) => (
|
|
33
|
+
<Box backgroundColor={pressed ? color.pressed.background : color.enabled.background}>
|
|
34
|
+
{Boolean(ogMetaData.defaultImage) && (
|
|
35
|
+
<ImageWithPlaceholder style={styles.ogImage} source={{ uri: ogMetaData.defaultImage.url }} />
|
|
36
|
+
)}
|
|
37
|
+
|
|
38
|
+
<Box
|
|
39
|
+
style={styles.ogContainer}
|
|
40
|
+
backgroundColor={select({ dark: palette.background400, light: palette.background100 })}
|
|
41
|
+
>
|
|
42
|
+
<Text numberOfLines={3} body2 color={colors.onBackground01} style={styles.ogTitle}>
|
|
43
|
+
{ogMetaData.title}
|
|
44
|
+
</Text>
|
|
45
|
+
{Boolean(ogMetaData.description) && (
|
|
46
|
+
<Text numberOfLines={1} caption2 color={colors.onBackground01} style={styles.ogDesc}>
|
|
47
|
+
{ogMetaData.description}
|
|
48
|
+
</Text>
|
|
49
|
+
)}
|
|
50
|
+
<Text numberOfLines={1} caption2 color={colors.onBackground02}>
|
|
51
|
+
{ogMetaData.url}
|
|
52
|
+
</Text>
|
|
53
|
+
</Box>
|
|
54
|
+
</Box>
|
|
55
|
+
)}
|
|
56
|
+
</PressBox>
|
|
57
|
+
);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const styles = createStyleSheet({
|
|
61
|
+
ogContainer: {
|
|
62
|
+
overflow: 'hidden',
|
|
63
|
+
paddingHorizontal: 12,
|
|
64
|
+
paddingTop: 8,
|
|
65
|
+
paddingBottom: 12,
|
|
66
|
+
},
|
|
67
|
+
ogImage: {
|
|
68
|
+
maxWidth: 240,
|
|
69
|
+
width: 240,
|
|
70
|
+
height: 136,
|
|
71
|
+
},
|
|
72
|
+
ogUrl: {
|
|
73
|
+
marginBottom: 4,
|
|
74
|
+
},
|
|
75
|
+
ogTitle: {
|
|
76
|
+
marginBottom: 4,
|
|
77
|
+
},
|
|
78
|
+
ogDesc: {
|
|
79
|
+
lineHeight: 14,
|
|
80
|
+
marginBottom: 8,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
export default MessageOpenGraph;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
|
|
3
|
+
import type { SendbirdGroupChannel, SendbirdMessage, SendbirdUser } from '@sendbird/uikit-utils';
|
|
4
|
+
|
|
5
|
+
import AdminMessage from './Message.admin';
|
|
6
|
+
import FileMessage from './Message.file';
|
|
7
|
+
import ImageFileMessage from './Message.file.image';
|
|
8
|
+
import VideoFileMessage from './Message.file.video';
|
|
9
|
+
import UnknownMessage from './Message.unknown';
|
|
10
|
+
import UserMessage from './Message.user';
|
|
11
|
+
import OpenGraphUser from './Message.user.og';
|
|
12
|
+
|
|
13
|
+
export type GroupChannelMessageProps<T extends SendbirdMessage, AdditionalProps = unknown> = {
|
|
14
|
+
channel: SendbirdGroupChannel;
|
|
15
|
+
message: T;
|
|
16
|
+
variant?: 'outgoing' | 'incoming';
|
|
17
|
+
strings?: {
|
|
18
|
+
senderName?: string;
|
|
19
|
+
sentDate?: string;
|
|
20
|
+
edited?: string;
|
|
21
|
+
fileName?: string;
|
|
22
|
+
unknownTitle?: string;
|
|
23
|
+
unknownDescription?: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
children?: React.ReactNode;
|
|
27
|
+
sendingStatus?: React.ReactNode;
|
|
28
|
+
|
|
29
|
+
groupedWithPrev: boolean;
|
|
30
|
+
groupedWithNext: boolean;
|
|
31
|
+
onPress?: () => void;
|
|
32
|
+
onLongPress?: () => void;
|
|
33
|
+
onPressAvatar?: () => void;
|
|
34
|
+
onPressURL?: (url: string) => void;
|
|
35
|
+
onPressMentionedUser?: (mentionedUser?: SendbirdUser) => void;
|
|
36
|
+
} & AdditionalProps;
|
|
37
|
+
|
|
38
|
+
const GroupChannelMessage = {
|
|
39
|
+
User: UserMessage,
|
|
40
|
+
OpenGraphUser: OpenGraphUser,
|
|
41
|
+
File: FileMessage,
|
|
42
|
+
ImageFile: ImageFileMessage,
|
|
43
|
+
VideoFile: VideoFileMessage,
|
|
44
|
+
Admin: AdminMessage,
|
|
45
|
+
Unknown: UnknownMessage,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default GroupChannelMessage;
|
|
@@ -36,7 +36,7 @@ const OpenGraphUserMessage = (props: OpenChannelMessageProps<SendbirdUserMessage
|
|
|
36
36
|
<Text
|
|
37
37
|
{...parentProps}
|
|
38
38
|
key={`${keyPrefix}-${index}`}
|
|
39
|
-
onPress={onPressURL}
|
|
39
|
+
onPress={() => onPressURL?.(match)}
|
|
40
40
|
onLongPress={onLongPress}
|
|
41
41
|
color={colors.primary}
|
|
42
42
|
style={parentProps?.style}
|
|
@@ -61,7 +61,11 @@ const OpenGraphUserMessage = (props: OpenChannelMessageProps<SendbirdUserMessage
|
|
|
61
61
|
</PressBox>
|
|
62
62
|
{props.message.ogMetaData && (
|
|
63
63
|
<MessageContainer {...rest} grouped>
|
|
64
|
-
<PressBox
|
|
64
|
+
<PressBox
|
|
65
|
+
style={styles.ogContainer}
|
|
66
|
+
onPress={() => props.message.ogMetaData?.url && onPressURL?.(props.message.ogMetaData.url)}
|
|
67
|
+
onLongPress={onLongPress}
|
|
68
|
+
>
|
|
65
69
|
{({ pressed }) =>
|
|
66
70
|
props.message.ogMetaData && (
|
|
67
71
|
<Box
|
|
@@ -32,7 +32,7 @@ const UserMessage = (props: OpenChannelMessageProps<SendbirdUserMessage, Props>)
|
|
|
32
32
|
<Text
|
|
33
33
|
{...parentProps}
|
|
34
34
|
key={`${keyPrefix}-${index}`}
|
|
35
|
-
onPress={onPressURL}
|
|
35
|
+
onPress={() => onPressURL?.(match)}
|
|
36
36
|
onLongPress={onLongPress}
|
|
37
37
|
color={colors.primary}
|
|
38
38
|
style={parentProps?.style}
|
|
@@ -26,7 +26,7 @@ export type OpenChannelMessageProps<T extends SendbirdMessage, AdditionalProps =
|
|
|
26
26
|
onPress?: () => void;
|
|
27
27
|
onLongPress?: () => void;
|
|
28
28
|
onPressAvatar?: () => void;
|
|
29
|
-
onPressURL?: () => void;
|
|
29
|
+
onPressURL?: (url: string) => void;
|
|
30
30
|
} & AdditionalProps;
|
|
31
31
|
|
|
32
32
|
const OpenChannelMessage = {
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
10
|
-
var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet"));
|
|
11
|
-
var _Text = _interopRequireDefault(require("../Text"));
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
14
|
-
const openUrl = (url, httpProtocol) => {
|
|
15
|
-
const targetUrl = httpProtocol ? url : 'https://' + url;
|
|
16
|
-
_reactNative.Linking.openURL(targetUrl).catch(err => _uikitUtils.Logger.warn('[URLParsedText]', 'Cannot open url', err));
|
|
17
|
-
};
|
|
18
|
-
const URLParsedText = _ref => {
|
|
19
|
-
let {
|
|
20
|
-
children,
|
|
21
|
-
onPressUrl = openUrl,
|
|
22
|
-
strict,
|
|
23
|
-
...props
|
|
24
|
-
} = _ref;
|
|
25
|
-
const parsedChildren = _react.default.Children.map(_react.default.Children.toArray(children), child => {
|
|
26
|
-
if (typeof child === 'string') {
|
|
27
|
-
return (0, _uikitUtils.replaceUrlAsComponents)(child, url => {
|
|
28
|
-
return /*#__PURE__*/_react.default.createElement(_Text.default, _extends({}, props, {
|
|
29
|
-
suppressHighlighting: true,
|
|
30
|
-
onPress: () => onPressUrl === null || onPressUrl === void 0 ? void 0 : onPressUrl(url, url.startsWith('http')),
|
|
31
|
-
style: [props.style, styles.url]
|
|
32
|
-
}), url);
|
|
33
|
-
}, strict);
|
|
34
|
-
}
|
|
35
|
-
return child;
|
|
36
|
-
});
|
|
37
|
-
return /*#__PURE__*/_react.default.createElement(_Text.default, props, parsedChildren);
|
|
38
|
-
};
|
|
39
|
-
const styles = (0, _createStyleSheet.default)({
|
|
40
|
-
url: {
|
|
41
|
-
textDecorationLine: 'underline'
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
var _default = URLParsedText;
|
|
45
|
-
exports.default = _default;
|
|
46
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitUtils","_createStyleSheet","_Text","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","openUrl","url","httpProtocol","targetUrl","Linking","openURL","catch","err","Logger","warn","URLParsedText","_ref","children","onPressUrl","strict","props","parsedChildren","React","Children","map","toArray","child","replaceUrlAsComponents","createElement","suppressHighlighting","onPress","startsWith","style","styles","createStyleSheet","textDecorationLine","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {\n const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {\n if (typeof child === 'string') {\n return replaceUrlAsComponents(\n child,\n (url) => {\n return (\n <Text\n {...props}\n suppressHighlighting\n onPress={() => onPressUrl?.(url, url.startsWith('http'))}\n style={[props.style, styles.url]}\n >\n {url}\n </Text>\n );\n },\n strict,\n );\n }\n\n return child;\n });\n\n return <Text {...props}>{parsedChildren}</Text>;\n};\nconst styles = createStyleSheet({\n url: { textDecorationLine: 'underline' },\n});\nexport default URLParsedText;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,iBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,IAAAI,KAAA,GAAAL,sBAAA,CAAAC,OAAA;AAA2B,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAI3B,MAAMQ,OAAmB,GAAGA,CAACC,GAAG,EAAEC,YAAY,KAAK;EACjD,MAAMC,SAAS,GAAGD,YAAY,GAAGD,GAAG,GAAG,UAAU,GAAGA,GAAG;EACvDG,oBAAO,CAACC,OAAO,CAACF,SAAS,CAAC,CAACG,KAAK,CAAEC,GAAG,IAAKC,kBAAM,CAACC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAEF,GAAG,CAAC,CAAC;AACnG,CAAC;AAMD,MAAMG,aAAa,GAAGC,IAAA,IAAiE;EAAA,IAAhE;IAAEC,QAAQ;IAAEC,UAAU,GAAGb,OAAO;IAAEc,MAAM;IAAE,GAAGC;EAAa,CAAC,GAAAJ,IAAA;EAChF,MAAMK,cAAc,GAAGC,cAAK,CAACC,QAAQ,CAACC,GAAG,CAACF,cAAK,CAACC,QAAQ,CAACE,OAAO,CAACR,QAAQ,CAAC,EAAGS,KAAK,IAAK;IACrF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO,IAAAC,kCAAsB,EAC3BD,KAAK,EACJpB,GAAG,IAAK;QACP,oBACEzB,MAAA,CAAAS,OAAA,CAAAsC,aAAA,CAACzC,KAAA,CAAAG,OAAI,EAAAC,QAAA,KACC6B,KAAK;UACTS,oBAAoB;UACpBC,OAAO,EAAEA,CAAA,KAAMZ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGZ,GAAG,EAAEA,GAAG,CAACyB,UAAU,CAAC,MAAM,CAAC,CAAE;UACzDC,KAAK,EAAE,CAACZ,KAAK,CAACY,KAAK,EAAEC,MAAM,CAAC3B,GAAG;QAAE,IAEhCA,GAAG,CACC;MAEX,CAAC,EACDa,MAAM,CACP;IACH;IAEA,OAAOO,KAAK;EACd,CAAC,CAAC;EAEF,oBAAO7C,MAAA,CAAAS,OAAA,CAAAsC,aAAA,CAACzC,KAAA,CAAAG,OAAI,EAAK8B,KAAK,EAAGC,cAAc,CAAQ;AACjD,CAAC;AACD,MAAMY,MAAM,GAAG,IAAAC,yBAAgB,EAAC;EAC9B5B,GAAG,EAAE;IAAE6B,kBAAkB,EAAE;EAAY;AACzC,CAAC,CAAC;AAAC,IAAAC,QAAA,GACYrB,aAAa;AAAAsB,OAAA,CAAA/C,OAAA,GAAA8C,QAAA"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { Linking } from 'react-native';
|
|
4
|
-
import { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';
|
|
5
|
-
import createStyleSheet from '../../styles/createStyleSheet';
|
|
6
|
-
import Text from '../Text';
|
|
7
|
-
const openUrl = (url, httpProtocol) => {
|
|
8
|
-
const targetUrl = httpProtocol ? url : 'https://' + url;
|
|
9
|
-
Linking.openURL(targetUrl).catch(err => Logger.warn('[URLParsedText]', 'Cannot open url', err));
|
|
10
|
-
};
|
|
11
|
-
const URLParsedText = _ref => {
|
|
12
|
-
let {
|
|
13
|
-
children,
|
|
14
|
-
onPressUrl = openUrl,
|
|
15
|
-
strict,
|
|
16
|
-
...props
|
|
17
|
-
} = _ref;
|
|
18
|
-
const parsedChildren = React.Children.map(React.Children.toArray(children), child => {
|
|
19
|
-
if (typeof child === 'string') {
|
|
20
|
-
return replaceUrlAsComponents(child, url => {
|
|
21
|
-
return /*#__PURE__*/React.createElement(Text, _extends({}, props, {
|
|
22
|
-
suppressHighlighting: true,
|
|
23
|
-
onPress: () => onPressUrl === null || onPressUrl === void 0 ? void 0 : onPressUrl(url, url.startsWith('http')),
|
|
24
|
-
style: [props.style, styles.url]
|
|
25
|
-
}), url);
|
|
26
|
-
}, strict);
|
|
27
|
-
}
|
|
28
|
-
return child;
|
|
29
|
-
});
|
|
30
|
-
return /*#__PURE__*/React.createElement(Text, props, parsedChildren);
|
|
31
|
-
};
|
|
32
|
-
const styles = createStyleSheet({
|
|
33
|
-
url: {
|
|
34
|
-
textDecorationLine: 'underline'
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
export default URLParsedText;
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","Linking","Logger","replaceUrlAsComponents","createStyleSheet","Text","openUrl","url","httpProtocol","targetUrl","openURL","catch","err","warn","URLParsedText","_ref","children","onPressUrl","strict","props","parsedChildren","Children","map","toArray","child","createElement","_extends","suppressHighlighting","onPress","startsWith","style","styles","textDecorationLine"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {\n const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {\n if (typeof child === 'string') {\n return replaceUrlAsComponents(\n child,\n (url) => {\n return (\n <Text\n {...props}\n suppressHighlighting\n onPress={() => onPressUrl?.(url, url.startsWith('http'))}\n style={[props.style, styles.url]}\n >\n {url}\n </Text>\n );\n },\n strict,\n );\n }\n\n return child;\n });\n\n return <Text {...props}>{parsedChildren}</Text>;\n};\nconst styles = createStyleSheet({\n url: { textDecorationLine: 'underline' },\n});\nexport default URLParsedText;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,MAAM,EAAEC,sBAAsB,QAAQ,uBAAuB;AAEtE,OAAOC,gBAAgB,MAAM,+BAA+B;AAE5D,OAAOC,IAAI,MAAM,SAAS;AAI1B,MAAMC,OAAmB,GAAGA,CAACC,GAAG,EAAEC,YAAY,KAAK;EACjD,MAAMC,SAAS,GAAGD,YAAY,GAAGD,GAAG,GAAG,UAAU,GAAGA,GAAG;EACvDN,OAAO,CAACS,OAAO,CAACD,SAAS,CAAC,CAACE,KAAK,CAAEC,GAAG,IAAKV,MAAM,CAACW,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAED,GAAG,CAAC,CAAC;AACnG,CAAC;AAMD,MAAME,aAAa,GAAGC,IAAA,IAAiE;EAAA,IAAhE;IAAEC,QAAQ;IAAEC,UAAU,GAAGX,OAAO;IAAEY,MAAM;IAAE,GAAGC;EAAa,CAAC,GAAAJ,IAAA;EAChF,MAAMK,cAAc,GAAGpB,KAAK,CAACqB,QAAQ,CAACC,GAAG,CAACtB,KAAK,CAACqB,QAAQ,CAACE,OAAO,CAACP,QAAQ,CAAC,EAAGQ,KAAK,IAAK;IACrF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAOrB,sBAAsB,CAC3BqB,KAAK,EACJjB,GAAG,IAAK;QACP,oBACEP,KAAA,CAAAyB,aAAA,CAACpB,IAAI,EAAAqB,QAAA,KACCP,KAAK;UACTQ,oBAAoB;UACpBC,OAAO,EAAEA,CAAA,KAAMX,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGV,GAAG,EAAEA,GAAG,CAACsB,UAAU,CAAC,MAAM,CAAC,CAAE;UACzDC,KAAK,EAAE,CAACX,KAAK,CAACW,KAAK,EAAEC,MAAM,CAACxB,GAAG;QAAE,IAEhCA,GAAG,CACC;MAEX,CAAC,EACDW,MAAM,CACP;IACH;IAEA,OAAOM,KAAK;EACd,CAAC,CAAC;EAEF,oBAAOxB,KAAA,CAAAyB,aAAA,CAACpB,IAAI,EAAKc,KAAK,EAAGC,cAAc,CAAQ;AACjD,CAAC;AACD,MAAMW,MAAM,GAAG3B,gBAAgB,CAAC;EAC9BG,GAAG,EAAE;IAAEyB,kBAAkB,EAAE;EAAY;AACzC,CAAC,CAAC;AACF,eAAelB,aAAa"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { TextProps } from '../Text';
|
|
2
|
-
type OnPressUrl = (url: string, httpProtocol: boolean) => void;
|
|
3
|
-
type Props = TextProps & {
|
|
4
|
-
onPressUrl?: OnPressUrl;
|
|
5
|
-
strict?: boolean;
|
|
6
|
-
};
|
|
7
|
-
declare const URLParsedText: ({ children, onPressUrl, strict, ...props }: Props) => JSX.Element;
|
|
8
|
-
export default URLParsedText;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Linking } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';
|
|
5
|
-
|
|
6
|
-
import createStyleSheet from '../../styles/createStyleSheet';
|
|
7
|
-
import type { TextProps } from '../Text';
|
|
8
|
-
import Text from '../Text';
|
|
9
|
-
|
|
10
|
-
type OnPressUrl = (url: string, httpProtocol: boolean) => void;
|
|
11
|
-
|
|
12
|
-
const openUrl: OnPressUrl = (url, httpProtocol) => {
|
|
13
|
-
const targetUrl = httpProtocol ? url : 'https://' + url;
|
|
14
|
-
Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
type Props = TextProps & {
|
|
18
|
-
onPressUrl?: OnPressUrl;
|
|
19
|
-
strict?: boolean;
|
|
20
|
-
};
|
|
21
|
-
const URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {
|
|
22
|
-
const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {
|
|
23
|
-
if (typeof child === 'string') {
|
|
24
|
-
return replaceUrlAsComponents(
|
|
25
|
-
child,
|
|
26
|
-
(url) => {
|
|
27
|
-
return (
|
|
28
|
-
<Text
|
|
29
|
-
{...props}
|
|
30
|
-
suppressHighlighting
|
|
31
|
-
onPress={() => onPressUrl?.(url, url.startsWith('http'))}
|
|
32
|
-
style={[props.style, styles.url]}
|
|
33
|
-
>
|
|
34
|
-
{url}
|
|
35
|
-
</Text>
|
|
36
|
-
);
|
|
37
|
-
},
|
|
38
|
-
strict,
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return child;
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return <Text {...props}>{parsedChildren}</Text>;
|
|
46
|
-
};
|
|
47
|
-
const styles = createStyleSheet({
|
|
48
|
-
url: { textDecorationLine: 'underline' },
|
|
49
|
-
});
|
|
50
|
-
export default URLParsedText;
|