@sendbird/uikit-react-native-foundation 2.3.0 → 2.4.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/lib/commonjs/components/Box/index.js +46 -0
- package/lib/commonjs/components/Box/index.js.map +1 -0
- package/lib/commonjs/components/ImageWithPlaceholder/index.js +92 -0
- package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -0
- package/lib/commonjs/components/PressBox/index.js +60 -0
- package/lib/commonjs/components/PressBox/index.js.map +1 -0
- package/lib/commonjs/index.js +39 -5
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/theme/DarkUIKitTheme.js +220 -179
- package/lib/commonjs/theme/DarkUIKitTheme.js.map +1 -1
- package/lib/commonjs/theme/LightUIKitTheme.js +220 -179
- package/lib/commonjs/theme/LightUIKitTheme.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/Header/index.js +4 -2
- package/lib/commonjs/ui/Header/index.js.map +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/Message.admin.js +40 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.admin.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.image.js +57 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.image.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.js +90 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.video.js +134 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.file.video.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.unknown.js +55 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.unknown.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +83 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +140 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/MessageContainer.js +136 -0
- package/lib/commonjs/ui/OpenChannelMessage/MessageContainer.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/index.js +35 -0
- package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelPreview/index.js +134 -0
- package/lib/commonjs/ui/OpenChannelPreview/index.js.map +1 -0
- package/lib/module/components/Box/index.js +33 -0
- package/lib/module/components/Box/index.js.map +1 -0
- package/lib/module/components/ImageWithPlaceholder/index.js +71 -0
- package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -0
- package/lib/module/components/PressBox/index.js +45 -0
- package/lib/module/components/PressBox/index.js.map +1 -0
- package/lib/module/index.js +6 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/theme/DarkUIKitTheme.js +220 -179
- package/lib/module/theme/DarkUIKitTheme.js.map +1 -1
- package/lib/module/theme/LightUIKitTheme.js +220 -179
- package/lib/module/theme/LightUIKitTheme.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/Header/index.js +4 -2
- package/lib/module/ui/Header/index.js.map +1 -1
- package/lib/module/ui/OpenChannelMessage/Message.admin.js +27 -0
- package/lib/module/ui/OpenChannelMessage/Message.admin.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.image.js +41 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.image.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.js +71 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.video.js +112 -0
- package/lib/module/ui/OpenChannelMessage/Message.file.video.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.unknown.js +41 -0
- package/lib/module/ui/OpenChannelMessage/Message.unknown.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.js +67 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js +121 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/MessageContainer.js +116 -0
- package/lib/module/ui/OpenChannelMessage/MessageContainer.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/index.js +18 -0
- package/lib/module/ui/OpenChannelMessage/index.js.map +1 -0
- package/lib/module/ui/OpenChannelPreview/index.js +117 -0
- package/lib/module/ui/OpenChannelPreview/index.js.map +1 -0
- package/lib/typescript/src/components/Box/index.d.ts +11 -0
- package/lib/typescript/src/components/ImageWithPlaceholder/index.d.ts +11 -0
- package/lib/typescript/src/components/PressBox/index.d.ts +16 -0
- package/lib/typescript/src/index.d.ts +8 -1
- package/lib/typescript/src/types.d.ts +21 -5
- package/lib/typescript/src/ui/Header/index.d.ts +1 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.admin.d.ts +4 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.file.d.ts +5 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.file.image.d.ts +4 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.file.video.d.ts +9 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.unknown.d.ts +4 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.user.d.ts +5 -0
- package/lib/typescript/src/ui/OpenChannelMessage/Message.user.og.d.ts +5 -0
- package/lib/typescript/src/ui/OpenChannelMessage/MessageContainer.d.ts +7 -0
- package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +136 -0
- package/lib/typescript/src/ui/OpenChannelPreview/index.d.ts +10 -0
- package/package.json +4 -4
- package/src/components/Box/index.tsx +65 -0
- package/src/components/ImageWithPlaceholder/index.tsx +83 -0
- package/src/components/PressBox/index.tsx +53 -0
- package/src/index.ts +8 -1
- package/src/theme/DarkUIKitTheme.ts +213 -171
- package/src/theme/LightUIKitTheme.ts +213 -171
- package/src/types.ts +41 -6
- package/src/ui/Header/index.tsx +7 -2
- package/src/ui/OpenChannelMessage/Message.admin.tsx +24 -0
- package/src/ui/OpenChannelMessage/Message.file.image.tsx +34 -0
- package/src/ui/OpenChannelMessage/Message.file.tsx +67 -0
- package/src/ui/OpenChannelMessage/Message.file.video.tsx +93 -0
- package/src/ui/OpenChannelMessage/Message.unknown.tsx +31 -0
- package/src/ui/OpenChannelMessage/Message.user.og.tsx +120 -0
- package/src/ui/OpenChannelMessage/Message.user.tsx +61 -0
- package/src/ui/OpenChannelMessage/MessageContainer.tsx +121 -0
- package/src/ui/OpenChannelMessage/index.ts +42 -0
- package/src/ui/OpenChannelPreview/index.tsx +97 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Box from '../../components/Box';
|
|
3
|
+
import Text from '../../components/Text';
|
|
4
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
5
|
+
|
|
6
|
+
const AdminMessage = props => {
|
|
7
|
+
const {
|
|
8
|
+
colors
|
|
9
|
+
} = useUIKitTheme();
|
|
10
|
+
const color = colors.ui.openChannelMessage.default;
|
|
11
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
12
|
+
marginVertical: 8,
|
|
13
|
+
paddingHorizontal: 12,
|
|
14
|
+
backgroundColor: colors.background
|
|
15
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
16
|
+
borderRadius: 8,
|
|
17
|
+
paddingHorizontal: 16,
|
|
18
|
+
paddingVertical: 14,
|
|
19
|
+
backgroundColor: color.enabled.adminBackground
|
|
20
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
21
|
+
caption2: true,
|
|
22
|
+
color: colors.onBackground02
|
|
23
|
+
}, props.message.message)));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default AdminMessage;
|
|
27
|
+
//# sourceMappingURL=Message.admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Box","Text","useUIKitTheme","AdminMessage","props","colors","color","ui","openChannelMessage","default","background","enabled","adminBackground","onBackground02","message"],"sources":["Message.admin.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdAdminMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Text from '../../components/Text';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport type { OpenChannelMessageProps } from './index';\n\nconst AdminMessage = (props: OpenChannelMessageProps<SendbirdAdminMessage>) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelMessage.default;\n return (\n <Box marginVertical={8} paddingHorizontal={12} backgroundColor={colors.background}>\n <Box borderRadius={8} paddingHorizontal={16} paddingVertical={14} backgroundColor={color.enabled.adminBackground}>\n <Text caption2 color={colors.onBackground02}>\n {props.message.message}\n </Text>\n </Box>\n </Box>\n );\n};\n\nexport default AdminMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAIA,OAAOC,GAAP,MAAgB,sBAAhB;AACA,OAAOC,IAAP,MAAiB,uBAAjB;AACA,OAAOC,aAAP,MAA0B,2BAA1B;;AAGA,MAAMC,YAAY,GAAIC,KAAD,IAA0D;EAC7E,MAAM;IAAEC;EAAF,IAAaH,aAAa,EAAhC;EACA,MAAMI,KAAK,GAAGD,MAAM,CAACE,EAAP,CAAUC,kBAAV,CAA6BC,OAA3C;EACA,oBACE,oBAAC,GAAD;IAAK,cAAc,EAAE,CAArB;IAAwB,iBAAiB,EAAE,EAA3C;IAA+C,eAAe,EAAEJ,MAAM,CAACK;EAAvE,gBACE,oBAAC,GAAD;IAAK,YAAY,EAAE,CAAnB;IAAsB,iBAAiB,EAAE,EAAzC;IAA6C,eAAe,EAAE,EAA9D;IAAkE,eAAe,EAAEJ,KAAK,CAACK,OAAN,CAAcC;EAAjG,gBACE,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEP,MAAM,CAACQ;EAA7B,GACGT,KAAK,CAACU,OAAN,CAAcA,OADjB,CADF,CADF,CADF;AASD,CAZD;;AAcA,eAAeX,YAAf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';
|
|
3
|
+
import Box from '../../components/Box';
|
|
4
|
+
import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
|
|
5
|
+
import PressBox from '../../components/PressBox';
|
|
6
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
7
|
+
import MessageContainer from './MessageContainer';
|
|
8
|
+
|
|
9
|
+
const ImageFileMessage = props => {
|
|
10
|
+
const {
|
|
11
|
+
onPress,
|
|
12
|
+
onLongPress,
|
|
13
|
+
...rest
|
|
14
|
+
} = props;
|
|
15
|
+
const uri = getAvailableUriFromFileMessage(props.message);
|
|
16
|
+
return /*#__PURE__*/React.createElement(MessageContainer, rest, /*#__PURE__*/React.createElement(Box, {
|
|
17
|
+
borderRadius: 8,
|
|
18
|
+
overflow: 'hidden',
|
|
19
|
+
style: styles.container
|
|
20
|
+
}, /*#__PURE__*/React.createElement(PressBox, {
|
|
21
|
+
style: styles.container,
|
|
22
|
+
activeOpacity: 0.8,
|
|
23
|
+
onPress: onPress,
|
|
24
|
+
onLongPress: onLongPress
|
|
25
|
+
}, /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
|
|
26
|
+
source: {
|
|
27
|
+
uri
|
|
28
|
+
},
|
|
29
|
+
width: '100%',
|
|
30
|
+
height: '100%'
|
|
31
|
+
}))));
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const styles = createStyleSheet({
|
|
35
|
+
container: {
|
|
36
|
+
maxWidth: 296,
|
|
37
|
+
height: 196
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
export default ImageFileMessage;
|
|
41
|
+
//# sourceMappingURL=Message.file.image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","getAvailableUriFromFileMessage","Box","ImageWithPlaceholder","PressBox","createStyleSheet","MessageContainer","ImageFileMessage","props","onPress","onLongPress","rest","uri","message","styles","container","maxWidth","height"],"sources":["Message.file.image.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport ImageWithPlaceholder from '../../components/ImageWithPlaceholder';\nimport PressBox from '../../components/PressBox';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\nconst ImageFileMessage = (props: OpenChannelMessageProps<SendbirdFileMessage>) => {\n const { onPress, onLongPress, ...rest } = props;\n const uri = getAvailableUriFromFileMessage(props.message);\n return (\n <MessageContainer {...rest}>\n <Box borderRadius={8} overflow={'hidden'} style={styles.container}>\n <PressBox style={styles.container} activeOpacity={0.8} onPress={onPress} onLongPress={onLongPress}>\n <ImageWithPlaceholder source={{ uri }} width={'100%'} height={'100%'} />\n </PressBox>\n </Box>\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n maxWidth: 296,\n height: 196,\n },\n});\n\nexport default ImageFileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,8BAAT,QAA+C,uBAA/C;AAEA,OAAOC,GAAP,MAAgB,sBAAhB;AACA,OAAOC,oBAAP,MAAiC,uCAAjC;AACA,OAAOC,QAAP,MAAqB,2BAArB;AACA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,gBAAgB,GAAIC,KAAD,IAAyD;EAChF,MAAM;IAAEC,OAAF;IAAWC,WAAX;IAAwB,GAAGC;EAA3B,IAAoCH,KAA1C;EACA,MAAMI,GAAG,GAAGX,8BAA8B,CAACO,KAAK,CAACK,OAAP,CAA1C;EACA,oBACE,oBAAC,gBAAD,EAAsBF,IAAtB,eACE,oBAAC,GAAD;IAAK,YAAY,EAAE,CAAnB;IAAsB,QAAQ,EAAE,QAAhC;IAA0C,KAAK,EAAEG,MAAM,CAACC;EAAxD,gBACE,oBAAC,QAAD;IAAU,KAAK,EAAED,MAAM,CAACC,SAAxB;IAAmC,aAAa,EAAE,GAAlD;IAAuD,OAAO,EAAEN,OAAhE;IAAyE,WAAW,EAAEC;EAAtF,gBACE,oBAAC,oBAAD;IAAsB,MAAM,EAAE;MAAEE;IAAF,CAA9B;IAAuC,KAAK,EAAE,MAA9C;IAAsD,MAAM,EAAE;EAA9D,EADF,CADF,CADF,CADF;AASD,CAZD;;AAcA,MAAME,MAAM,GAAGT,gBAAgB,CAAC;EAC9BU,SAAS,EAAE;IACTC,QAAQ,EAAE,GADD;IAETC,MAAM,EAAE;EAFC;AADmB,CAAD,CAA/B;AAOA,eAAeV,gBAAf"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { getFileTypeFromMessage } from '@sendbird/uikit-utils';
|
|
3
|
+
import Box from '../../components/Box';
|
|
4
|
+
import Icon from '../../components/Icon';
|
|
5
|
+
import PressBox from '../../components/PressBox';
|
|
6
|
+
import Text from '../../components/Text';
|
|
7
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
8
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
9
|
+
import MessageContainer from './MessageContainer';
|
|
10
|
+
const iconMapper = {
|
|
11
|
+
audio: 'file-audio',
|
|
12
|
+
image: 'photo',
|
|
13
|
+
video: 'play',
|
|
14
|
+
file: 'file-document'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const FileMessage = props => {
|
|
18
|
+
const {
|
|
19
|
+
colors
|
|
20
|
+
} = useUIKitTheme();
|
|
21
|
+
const {
|
|
22
|
+
onPress,
|
|
23
|
+
onLongPress,
|
|
24
|
+
...rest
|
|
25
|
+
} = props;
|
|
26
|
+
const type = getFileTypeFromMessage(props.message);
|
|
27
|
+
const color = colors.ui.openChannelMessage.default;
|
|
28
|
+
return /*#__PURE__*/React.createElement(MessageContainer, rest, /*#__PURE__*/React.createElement(PressBox, {
|
|
29
|
+
onPress: onPress,
|
|
30
|
+
onLongPress: onLongPress
|
|
31
|
+
}, _ref => {
|
|
32
|
+
var _props$strings;
|
|
33
|
+
|
|
34
|
+
let {
|
|
35
|
+
pressed
|
|
36
|
+
} = _ref;
|
|
37
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
38
|
+
padding: 8,
|
|
39
|
+
borderRadius: 8,
|
|
40
|
+
flexDirection: 'row',
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
justifyContent: 'flex-start',
|
|
43
|
+
style: {
|
|
44
|
+
backgroundColor: pressed ? color.pressed.bubbleBackground : color.enabled.bubbleBackground
|
|
45
|
+
}
|
|
46
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
47
|
+
padding: 4,
|
|
48
|
+
marginRight: 8,
|
|
49
|
+
borderRadius: 8,
|
|
50
|
+
alignItems: 'flex-start',
|
|
51
|
+
backgroundColor: colors.background
|
|
52
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
53
|
+
icon: iconMapper[type],
|
|
54
|
+
size: 32
|
|
55
|
+
})), /*#__PURE__*/React.createElement(Text, {
|
|
56
|
+
body3: true,
|
|
57
|
+
numberOfLines: 1,
|
|
58
|
+
ellipsizeMode: 'middle',
|
|
59
|
+
color: color.enabled.textMsg,
|
|
60
|
+
style: styles.fileName
|
|
61
|
+
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.fileName) || props.message.name));
|
|
62
|
+
}));
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const styles = createStyleSheet({
|
|
66
|
+
fileName: {
|
|
67
|
+
flexShrink: 1
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
export default FileMessage;
|
|
71
|
+
//# sourceMappingURL=Message.file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","getFileTypeFromMessage","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","MessageContainer","iconMapper","audio","image","video","file","FileMessage","props","colors","onPress","onLongPress","rest","type","message","color","ui","openChannelMessage","default","pressed","backgroundColor","bubbleBackground","enabled","background","textMsg","styles","fileName","strings","name","flexShrink"],"sources":["Message.file.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendbirdFileMessage, getFileTypeFromMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport PressBox from '../../components/PressBox';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {};\nconst FileMessage = (props: OpenChannelMessageProps<SendbirdFileMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const { onPress, onLongPress, ...rest } = props;\n const type = getFileTypeFromMessage(props.message);\n const color = colors.ui.openChannelMessage.default;\n\n return (\n <MessageContainer {...rest}>\n <PressBox onPress={onPress} onLongPress={onLongPress}>\n {({ pressed }) => {\n return (\n <Box\n padding={8}\n borderRadius={8}\n flexDirection={'row'}\n alignItems={'center'}\n justifyContent={'flex-start'}\n style={{ backgroundColor: pressed ? color.pressed.bubbleBackground : color.enabled.bubbleBackground }}\n >\n <Box\n padding={4}\n marginRight={8}\n borderRadius={8}\n alignItems={'flex-start'}\n backgroundColor={colors.background}\n >\n <Icon icon={iconMapper[type]} size={32} />\n </Box>\n <Text\n body3\n numberOfLines={1}\n ellipsizeMode={'middle'}\n color={color.enabled.textMsg}\n style={styles.fileName}\n >\n {props.strings?.fileName || props.message.name}\n </Text>\n </Box>\n );\n }}\n </PressBox>\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n fileName: {\n flexShrink: 1,\n },\n});\nexport default FileMessage;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAA8BC,sBAA9B,QAA4D,uBAA5D;AAEA,OAAOC,GAAP,MAAgB,sBAAhB;AACA,OAAOC,IAAP,MAAiB,uBAAjB;AACA,OAAOC,QAAP,MAAqB,2BAArB;AACA,OAAOC,IAAP,MAAiB,uBAAjB;AACA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AAGA,MAAMC,UAAU,GAAG;EAAEC,KAAK,EAAE,YAAT;EAAuBC,KAAK,EAAE,OAA9B;EAAuCC,KAAK,EAAE,MAA9C;EAAsDC,IAAI,EAAE;AAA5D,CAAnB;;AAGA,MAAMC,WAAW,GAAIC,KAAD,IAAgE;EAClF,MAAM;IAAEC;EAAF,IAAaT,aAAa,EAAhC;EACA,MAAM;IAAEU,OAAF;IAAWC,WAAX;IAAwB,GAAGC;EAA3B,IAAoCJ,KAA1C;EACA,MAAMK,IAAI,GAAGnB,sBAAsB,CAACc,KAAK,CAACM,OAAP,CAAnC;EACA,MAAMC,KAAK,GAAGN,MAAM,CAACO,EAAP,CAAUC,kBAAV,CAA6BC,OAA3C;EAEA,oBACE,oBAAC,gBAAD,EAAsBN,IAAtB,eACE,oBAAC,QAAD;IAAU,OAAO,EAAEF,OAAnB;IAA4B,WAAW,EAAEC;EAAzC,GACG,QAAiB;IAAA;;IAAA,IAAhB;MAAEQ;IAAF,CAAgB;IAChB,oBACE,oBAAC,GAAD;MACE,OAAO,EAAE,CADX;MAEE,YAAY,EAAE,CAFhB;MAGE,aAAa,EAAE,KAHjB;MAIE,UAAU,EAAE,QAJd;MAKE,cAAc,EAAE,YALlB;MAME,KAAK,EAAE;QAAEC,eAAe,EAAED,OAAO,GAAGJ,KAAK,CAACI,OAAN,CAAcE,gBAAjB,GAAoCN,KAAK,CAACO,OAAN,CAAcD;MAA5E;IANT,gBAQE,oBAAC,GAAD;MACE,OAAO,EAAE,CADX;MAEE,WAAW,EAAE,CAFf;MAGE,YAAY,EAAE,CAHhB;MAIE,UAAU,EAAE,YAJd;MAKE,eAAe,EAAEZ,MAAM,CAACc;IAL1B,gBAOE,oBAAC,IAAD;MAAM,IAAI,EAAErB,UAAU,CAACW,IAAD,CAAtB;MAA8B,IAAI,EAAE;IAApC,EAPF,CARF,eAiBE,oBAAC,IAAD;MACE,KAAK,MADP;MAEE,aAAa,EAAE,CAFjB;MAGE,aAAa,EAAE,QAHjB;MAIE,KAAK,EAAEE,KAAK,CAACO,OAAN,CAAcE,OAJvB;MAKE,KAAK,EAAEC,MAAM,CAACC;IALhB,GAOG,mBAAAlB,KAAK,CAACmB,OAAN,kEAAeD,QAAf,KAA2BlB,KAAK,CAACM,OAAN,CAAcc,IAP5C,CAjBF,CADF;EA6BD,CA/BH,CADF,CADF;AAqCD,CA3CD;;AA6CA,MAAMH,MAAM,GAAG1B,gBAAgB,CAAC;EAC9B2B,QAAQ,EAAE;IACRG,UAAU,EAAE;EADJ;AADoB,CAAD,CAA/B;AAKA,eAAetB,WAAf"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';
|
|
3
|
+
import Box from '../../components/Box';
|
|
4
|
+
import Icon from '../../components/Icon';
|
|
5
|
+
import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
|
|
6
|
+
import PressBox from '../../components/PressBox';
|
|
7
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
8
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
9
|
+
import MessageContainer from './MessageContainer';
|
|
10
|
+
|
|
11
|
+
const VideoFileMessage = props => {
|
|
12
|
+
const {
|
|
13
|
+
colors,
|
|
14
|
+
palette
|
|
15
|
+
} = useUIKitTheme();
|
|
16
|
+
const {
|
|
17
|
+
onPress,
|
|
18
|
+
onLongPress,
|
|
19
|
+
...rest
|
|
20
|
+
} = props;
|
|
21
|
+
const uri = getAvailableUriFromFileMessage(props.message);
|
|
22
|
+
const {
|
|
23
|
+
thumbnail,
|
|
24
|
+
loading
|
|
25
|
+
} = useRetry(() => props.fetchThumbnailFromVideoSource(uri));
|
|
26
|
+
return /*#__PURE__*/React.createElement(MessageContainer, rest, /*#__PURE__*/React.createElement(PressBox, {
|
|
27
|
+
style: styles.container,
|
|
28
|
+
activeOpacity: 0.8,
|
|
29
|
+
onPress: onPress,
|
|
30
|
+
onLongPress: onLongPress
|
|
31
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
32
|
+
borderRadius: 8,
|
|
33
|
+
overflow: 'hidden',
|
|
34
|
+
style: styles.container
|
|
35
|
+
}, loading ? /*#__PURE__*/React.createElement(Box, {
|
|
36
|
+
backgroundColor: colors.onBackground04,
|
|
37
|
+
style: {
|
|
38
|
+
width: '100%',
|
|
39
|
+
height: '100%'
|
|
40
|
+
}
|
|
41
|
+
}) : /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
|
|
42
|
+
source: {
|
|
43
|
+
uri: thumbnail ?? 'invalid-image'
|
|
44
|
+
},
|
|
45
|
+
width: '100%',
|
|
46
|
+
height: '100%'
|
|
47
|
+
}), (loading || thumbnail !== null) && /*#__PURE__*/React.createElement(Box, {
|
|
48
|
+
style: styles.iconContainer,
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
justifyContent: 'center'
|
|
51
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
52
|
+
icon: 'play',
|
|
53
|
+
size: 28,
|
|
54
|
+
color: palette.onBackgroundLight02,
|
|
55
|
+
containerStyle: [styles.playIcon, {
|
|
56
|
+
backgroundColor: palette.onBackgroundDark01
|
|
57
|
+
}]
|
|
58
|
+
})))));
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const useRetry = function (fetch) {
|
|
62
|
+
let retryCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
|
|
63
|
+
const [state, setState] = useState({
|
|
64
|
+
thumbnail: null,
|
|
65
|
+
loading: true
|
|
66
|
+
});
|
|
67
|
+
const retryCountRef = useRef(0);
|
|
68
|
+
const retryTimeoutRef = useRef();
|
|
69
|
+
const fetchThumbnail = useRef(fetch);
|
|
70
|
+
fetchThumbnail.current = fetch;
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!state.thumbnail) {
|
|
73
|
+
const reloadReservation = () => {
|
|
74
|
+
if (retryCountRef.current < retryCount) {
|
|
75
|
+
retryTimeoutRef.current = setTimeout(() => {
|
|
76
|
+
retryCountRef.current++;
|
|
77
|
+
reloadReservation();
|
|
78
|
+
fetchThumbnail.current().then(result => {
|
|
79
|
+
setState({
|
|
80
|
+
loading: false,
|
|
81
|
+
thumbnail: (result === null || result === void 0 ? void 0 : result.path) ?? null
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}, retryCountRef.current * 5000);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
return reloadReservation();
|
|
89
|
+
} else {
|
|
90
|
+
return clearTimeout(retryTimeoutRef.current);
|
|
91
|
+
}
|
|
92
|
+
}, [state.thumbnail]);
|
|
93
|
+
return state;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const styles = createStyleSheet({
|
|
97
|
+
container: {
|
|
98
|
+
maxWidth: 296,
|
|
99
|
+
height: 196
|
|
100
|
+
},
|
|
101
|
+
iconContainer: {
|
|
102
|
+
position: 'absolute',
|
|
103
|
+
width: '100%',
|
|
104
|
+
height: '100%'
|
|
105
|
+
},
|
|
106
|
+
playIcon: {
|
|
107
|
+
padding: 10,
|
|
108
|
+
borderRadius: 50
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
export default VideoFileMessage;
|
|
112
|
+
//# sourceMappingURL=Message.file.video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","getAvailableUriFromFileMessage","Box","Icon","ImageWithPlaceholder","PressBox","createStyleSheet","useUIKitTheme","MessageContainer","VideoFileMessage","props","colors","palette","onPress","onLongPress","rest","uri","message","thumbnail","loading","useRetry","fetchThumbnailFromVideoSource","styles","container","onBackground04","width","height","iconContainer","onBackgroundLight02","playIcon","backgroundColor","onBackgroundDark01","fetch","retryCount","state","setState","retryCountRef","retryTimeoutRef","fetchThumbnail","current","reloadReservation","setTimeout","then","result","path","clearTimeout","maxWidth","position","padding","borderRadius"],"sources":["Message.file.video.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\n\nimport type { SendbirdFileMessage } from '@sendbird/uikit-utils';\nimport { getAvailableUriFromFileMessage } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport ImageWithPlaceholder from '../../components/ImageWithPlaceholder';\nimport PressBox from '../../components/PressBox';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {\n fetchThumbnailFromVideoSource: (uri: string) => Promise<{ path: string } | null>;\n};\nconst VideoFileMessage = (props: OpenChannelMessageProps<SendbirdFileMessage, Props>) => {\n const { colors, palette } = useUIKitTheme();\n const { onPress, onLongPress, ...rest } = props;\n const uri = getAvailableUriFromFileMessage(props.message);\n const { thumbnail, loading } = useRetry(() => props.fetchThumbnailFromVideoSource(uri));\n\n return (\n <MessageContainer {...rest}>\n <PressBox style={styles.container} activeOpacity={0.8} onPress={onPress} onLongPress={onLongPress}>\n <Box borderRadius={8} overflow={'hidden'} style={styles.container}>\n {loading ? (\n <Box backgroundColor={colors.onBackground04} style={{ width: '100%', height: '100%' }} />\n ) : (\n <ImageWithPlaceholder source={{ uri: thumbnail ?? 'invalid-image' }} width={'100%'} height={'100%'} />\n )}\n\n {(loading || thumbnail !== null) && (\n <Box style={styles.iconContainer} alignItems={'center'} justifyContent={'center'}>\n <Icon\n icon={'play'}\n size={28}\n color={palette.onBackgroundLight02}\n containerStyle={[styles.playIcon, { backgroundColor: palette.onBackgroundDark01 }]}\n />\n </Box>\n )}\n </Box>\n </PressBox>\n </MessageContainer>\n );\n};\nconst useRetry = (fetch: () => Promise<{ path: string } | null>, retryCount = 5) => {\n const [state, setState] = useState({ thumbnail: null as null | string, loading: true });\n const retryCountRef = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n const fetchThumbnail = useRef(fetch);\n fetchThumbnail.current = fetch;\n\n useEffect(() => {\n if (!state.thumbnail) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n fetchThumbnail.current().then((result) => {\n setState({ loading: false, thumbnail: result?.path ?? null });\n });\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [state.thumbnail]);\n\n return state;\n};\nconst styles = createStyleSheet({\n container: {\n maxWidth: 296,\n height: 196,\n },\n iconContainer: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n },\n playIcon: {\n padding: 10,\n borderRadius: 50,\n },\n});\nexport default VideoFileMessage;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import PressBox from '../../components/PressBox';
|
|
5
|
+
import Text from '../../components/Text';
|
|
6
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
7
|
+
import MessageContainer from './MessageContainer';
|
|
8
|
+
|
|
9
|
+
const UnknownMessage = props => {
|
|
10
|
+
const {
|
|
11
|
+
colors
|
|
12
|
+
} = useUIKitTheme();
|
|
13
|
+
const {
|
|
14
|
+
onPress,
|
|
15
|
+
onLongPress,
|
|
16
|
+
...rest
|
|
17
|
+
} = props;
|
|
18
|
+
const color = colors.ui.openChannelMessage.default;
|
|
19
|
+
return /*#__PURE__*/React.createElement(PressBox, {
|
|
20
|
+
onPress: onPress,
|
|
21
|
+
onLongPress: onLongPress
|
|
22
|
+
}, _ref => {
|
|
23
|
+
var _props$strings, _props$strings2;
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
pressed
|
|
27
|
+
} = _ref;
|
|
28
|
+
return /*#__PURE__*/React.createElement(MessageContainer, _extends({
|
|
29
|
+
pressed: pressed
|
|
30
|
+
}, rest), /*#__PURE__*/React.createElement(Text, {
|
|
31
|
+
body3: true,
|
|
32
|
+
color: color.enabled.textMsg
|
|
33
|
+
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.unknownTitle) ?? '(Unknown message type)'), /*#__PURE__*/React.createElement(Text, {
|
|
34
|
+
body3: true,
|
|
35
|
+
color: color.enabled.textMsgPostfix
|
|
36
|
+
}, ((_props$strings2 = props.strings) === null || _props$strings2 === void 0 ? void 0 : _props$strings2.unknownDescription) ?? 'Cannot read this message.'));
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default UnknownMessage;
|
|
41
|
+
//# sourceMappingURL=Message.unknown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","PressBox","Text","useUIKitTheme","MessageContainer","UnknownMessage","props","colors","onPress","onLongPress","rest","color","ui","openChannelMessage","default","pressed","enabled","textMsg","strings","unknownTitle","textMsgPostfix","unknownDescription"],"sources":["Message.unknown.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport PressBox from '../../components/PressBox';\nimport Text from '../../components/Text';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\nconst UnknownMessage = (props: OpenChannelMessageProps<SendbirdMessage>) => {\n const { colors } = useUIKitTheme();\n const { onPress, onLongPress, ...rest } = props;\n const color = colors.ui.openChannelMessage.default;\n return (\n <PressBox onPress={onPress} onLongPress={onLongPress}>\n {({ pressed }) => (\n <MessageContainer pressed={pressed} {...rest}>\n <Text body3 color={color.enabled.textMsg}>\n {props.strings?.unknownTitle ?? '(Unknown message type)'}\n </Text>\n <Text body3 color={color.enabled.textMsgPostfix}>\n {props.strings?.unknownDescription ?? 'Cannot read this message.'}\n </Text>\n </MessageContainer>\n )}\n </PressBox>\n );\n};\n\nexport default UnknownMessage;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAIA,OAAOC,QAAP,MAAqB,2BAArB;AACA,OAAOC,IAAP,MAAiB,uBAAjB;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAGA,MAAMC,cAAc,GAAIC,KAAD,IAAqD;EAC1E,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EACA,MAAM;IAAEK,OAAF;IAAWC,WAAX;IAAwB,GAAGC;EAA3B,IAAoCJ,KAA1C;EACA,MAAMK,KAAK,GAAGJ,MAAM,CAACK,EAAP,CAAUC,kBAAV,CAA6BC,OAA3C;EACA,oBACE,oBAAC,QAAD;IAAU,OAAO,EAAEN,OAAnB;IAA4B,WAAW,EAAEC;EAAzC,GACG;IAAA;;IAAA,IAAC;MAAEM;IAAF,CAAD;IAAA,oBACC,oBAAC,gBAAD;MAAkB,OAAO,EAAEA;IAA3B,GAAwCL,IAAxC,gBACE,oBAAC,IAAD;MAAM,KAAK,MAAX;MAAY,KAAK,EAAEC,KAAK,CAACK,OAAN,CAAcC;IAAjC,GACG,mBAAAX,KAAK,CAACY,OAAN,kEAAeC,YAAf,KAA+B,wBADlC,CADF,eAIE,oBAAC,IAAD;MAAM,KAAK,MAAX;MAAY,KAAK,EAAER,KAAK,CAACK,OAAN,CAAcI;IAAjC,GACG,oBAAAd,KAAK,CAACY,OAAN,oEAAeG,kBAAf,KAAqC,2BADxC,CAJF,CADD;EAAA,CADH,CADF;AAcD,CAlBD;;AAoBA,eAAehB,cAAf"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { urlRegexStrict } from '@sendbird/uikit-utils';
|
|
5
|
+
import PressBox from '../../components/PressBox';
|
|
6
|
+
import RegexText from '../../components/RegexText';
|
|
7
|
+
import Text from '../../components/Text';
|
|
8
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
9
|
+
import MessageContainer from './MessageContainer';
|
|
10
|
+
|
|
11
|
+
const UserMessage = props => {
|
|
12
|
+
const {
|
|
13
|
+
colors
|
|
14
|
+
} = useUIKitTheme();
|
|
15
|
+
const {
|
|
16
|
+
onPress,
|
|
17
|
+
onLongPress,
|
|
18
|
+
onPressURL,
|
|
19
|
+
...rest
|
|
20
|
+
} = props;
|
|
21
|
+
const color = colors.ui.openChannelMessage.default;
|
|
22
|
+
return /*#__PURE__*/React.createElement(PressBox, {
|
|
23
|
+
onPress: onPress,
|
|
24
|
+
onLongPress: onLongPress
|
|
25
|
+
}, _ref => {
|
|
26
|
+
var _props$strings;
|
|
27
|
+
|
|
28
|
+
let {
|
|
29
|
+
pressed
|
|
30
|
+
} = _ref;
|
|
31
|
+
return /*#__PURE__*/React.createElement(MessageContainer, _extends({
|
|
32
|
+
pressed: pressed
|
|
33
|
+
}, rest), /*#__PURE__*/React.createElement(Text, {
|
|
34
|
+
body3: true,
|
|
35
|
+
color: color.enabled.textMsg
|
|
36
|
+
}, /*#__PURE__*/React.createElement(RegexText, {
|
|
37
|
+
body3: true,
|
|
38
|
+
color: color.enabled.textMsg,
|
|
39
|
+
patterns: [{
|
|
40
|
+
regex: urlRegexStrict,
|
|
41
|
+
|
|
42
|
+
replacer(_ref2) {
|
|
43
|
+
let {
|
|
44
|
+
match,
|
|
45
|
+
parentProps,
|
|
46
|
+
keyPrefix,
|
|
47
|
+
index
|
|
48
|
+
} = _ref2;
|
|
49
|
+
return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
|
|
50
|
+
key: `${keyPrefix}-${index}`,
|
|
51
|
+
onPress: onPressURL,
|
|
52
|
+
onLongPress: onLongPress,
|
|
53
|
+
color: colors.primary,
|
|
54
|
+
style: parentProps === null || parentProps === void 0 ? void 0 : parentProps.style
|
|
55
|
+
}), match);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}]
|
|
59
|
+
}, props.message.message), Boolean(props.message.updatedAt) && /*#__PURE__*/React.createElement(Text, {
|
|
60
|
+
body3: true,
|
|
61
|
+
color: color.enabled.textMsgPostfix
|
|
62
|
+
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.edited) ?? ' (edited)')));
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default UserMessage;
|
|
67
|
+
//# sourceMappingURL=Message.user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","urlRegexStrict","PressBox","RegexText","Text","useUIKitTheme","MessageContainer","UserMessage","props","colors","onPress","onLongPress","onPressURL","rest","color","ui","openChannelMessage","default","pressed","enabled","textMsg","regex","replacer","match","parentProps","keyPrefix","index","primary","style","message","Boolean","updatedAt","textMsgPostfix","strings","edited"],"sources":["Message.user.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { urlRegexStrict } from '@sendbird/uikit-utils';\n\nimport PressBox from '../../components/PressBox';\nimport RegexText from '../../components/RegexText';\nimport Text from '../../components/Text';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {};\nconst UserMessage = (props: OpenChannelMessageProps<SendbirdUserMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const { onPress, onLongPress, onPressURL, ...rest } = props;\n const color = colors.ui.openChannelMessage.default;\n\n return (\n <PressBox onPress={onPress} onLongPress={onLongPress}>\n {({ pressed }) => (\n <MessageContainer pressed={pressed} {...rest}>\n <Text body3 color={color.enabled.textMsg}>\n <RegexText\n body3\n color={color.enabled.textMsg}\n patterns={[\n {\n regex: urlRegexStrict,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={onPressURL}\n onLongPress={onLongPress}\n color={colors.primary}\n style={parentProps?.style}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.message.message}\n </RegexText>\n {Boolean(props.message.updatedAt) && (\n <Text body3 color={color.enabled.textMsgPostfix}>\n {props.strings?.edited ?? ' (edited)'}\n </Text>\n )}\n </Text>\n </MessageContainer>\n )}\n </PressBox>\n );\n};\n\nexport default UserMessage;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,cAAT,QAA+B,uBAA/B;AAEA,OAAOC,QAAP,MAAqB,2BAArB;AACA,OAAOC,SAAP,MAAsB,4BAAtB;AACA,OAAOC,IAAP,MAAiB,uBAAjB;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;;AAIA,MAAMC,WAAW,GAAIC,KAAD,IAAgE;EAClF,MAAM;IAAEC;EAAF,IAAaJ,aAAa,EAAhC;EACA,MAAM;IAAEK,OAAF;IAAWC,WAAX;IAAwBC,UAAxB;IAAoC,GAAGC;EAAvC,IAAgDL,KAAtD;EACA,MAAMM,KAAK,GAAGL,MAAM,CAACM,EAAP,CAAUC,kBAAV,CAA6BC,OAA3C;EAEA,oBACE,oBAAC,QAAD;IAAU,OAAO,EAAEP,OAAnB;IAA4B,WAAW,EAAEC;EAAzC,GACG;IAAA;;IAAA,IAAC;MAAEO;IAAF,CAAD;IAAA,oBACC,oBAAC,gBAAD;MAAkB,OAAO,EAAEA;IAA3B,GAAwCL,IAAxC,gBACE,oBAAC,IAAD;MAAM,KAAK,MAAX;MAAY,KAAK,EAAEC,KAAK,CAACK,OAAN,CAAcC;IAAjC,gBACE,oBAAC,SAAD;MACE,KAAK,MADP;MAEE,KAAK,EAAEN,KAAK,CAACK,OAAN,CAAcC,OAFvB;MAGE,QAAQ,EAAE,CACR;QACEC,KAAK,EAAEpB,cADT;;QAEEqB,QAAQ,QAA2C;UAAA,IAA1C;YAAEC,KAAF;YAASC,WAAT;YAAsBC,SAAtB;YAAiCC;UAAjC,CAA0C;UACjD,oBACE,oBAAC,IAAD,eACMF,WADN;YAEE,GAAG,EAAG,GAAEC,SAAU,IAAGC,KAAM,EAF7B;YAGE,OAAO,EAAEd,UAHX;YAIE,WAAW,EAAED,WAJf;YAKE,KAAK,EAAEF,MAAM,CAACkB,OALhB;YAME,KAAK,EAAEH,WAAF,aAAEA,WAAF,uBAAEA,WAAW,CAAEI;UANtB,IAQGL,KARH,CADF;QAYD;;MAfH,CADQ;IAHZ,GAuBGf,KAAK,CAACqB,OAAN,CAAcA,OAvBjB,CADF,EA0BGC,OAAO,CAACtB,KAAK,CAACqB,OAAN,CAAcE,SAAf,CAAP,iBACC,oBAAC,IAAD;MAAM,KAAK,MAAX;MAAY,KAAK,EAAEjB,KAAK,CAACK,OAAN,CAAca;IAAjC,GACG,mBAAAxB,KAAK,CAACyB,OAAN,kEAAeC,MAAf,KAAyB,WAD5B,CA3BJ,CADF,CADD;EAAA,CADH,CADF;AAwCD,CA7CD;;AA+CA,eAAe3B,WAAf"}
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { urlRegexRough } from '@sendbird/uikit-utils';
|
|
5
|
+
import Box from '../../components/Box';
|
|
6
|
+
import ImageWithPlaceholder from '../../components/ImageWithPlaceholder';
|
|
7
|
+
import PressBox from '../../components/PressBox';
|
|
8
|
+
import RegexText from '../../components/RegexText';
|
|
9
|
+
import Text from '../../components/Text';
|
|
10
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
11
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
12
|
+
import MessageContainer from './MessageContainer';
|
|
13
|
+
|
|
14
|
+
const OpenGraphUserMessage = props => {
|
|
15
|
+
const {
|
|
16
|
+
colors
|
|
17
|
+
} = useUIKitTheme();
|
|
18
|
+
const {
|
|
19
|
+
onPress,
|
|
20
|
+
onLongPress,
|
|
21
|
+
onPressURL,
|
|
22
|
+
...rest
|
|
23
|
+
} = props;
|
|
24
|
+
const color = colors.ui.openChannelMessage.default;
|
|
25
|
+
return /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(PressBox, {
|
|
26
|
+
onPress: onPress,
|
|
27
|
+
onLongPress: onLongPress
|
|
28
|
+
}, _ref => {
|
|
29
|
+
var _props$strings;
|
|
30
|
+
|
|
31
|
+
let {
|
|
32
|
+
pressed
|
|
33
|
+
} = _ref;
|
|
34
|
+
return /*#__PURE__*/React.createElement(MessageContainer, _extends({
|
|
35
|
+
pressed: pressed
|
|
36
|
+
}, rest), /*#__PURE__*/React.createElement(Text, {
|
|
37
|
+
body3: true,
|
|
38
|
+
color: color.enabled.textMsg
|
|
39
|
+
}, /*#__PURE__*/React.createElement(RegexText, {
|
|
40
|
+
body3: true,
|
|
41
|
+
color: color.enabled.textMsg,
|
|
42
|
+
patterns: [{
|
|
43
|
+
regex: urlRegexRough,
|
|
44
|
+
|
|
45
|
+
replacer(_ref2) {
|
|
46
|
+
let {
|
|
47
|
+
match,
|
|
48
|
+
parentProps,
|
|
49
|
+
keyPrefix,
|
|
50
|
+
index
|
|
51
|
+
} = _ref2;
|
|
52
|
+
return /*#__PURE__*/React.createElement(Text, _extends({}, parentProps, {
|
|
53
|
+
key: `${keyPrefix}-${index}`,
|
|
54
|
+
onPress: onPressURL,
|
|
55
|
+
onLongPress: onLongPress,
|
|
56
|
+
color: colors.primary,
|
|
57
|
+
style: parentProps === null || parentProps === void 0 ? void 0 : parentProps.style
|
|
58
|
+
}), match);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}]
|
|
62
|
+
}, props.message.message), Boolean(props.message.updatedAt) && /*#__PURE__*/React.createElement(Text, {
|
|
63
|
+
body3: true,
|
|
64
|
+
color: color.enabled.textMsgPostfix
|
|
65
|
+
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.edited) ?? ' (edited)')));
|
|
66
|
+
}), props.message.ogMetaData && /*#__PURE__*/React.createElement(MessageContainer, _extends({}, rest, {
|
|
67
|
+
grouped: true
|
|
68
|
+
}), /*#__PURE__*/React.createElement(PressBox, {
|
|
69
|
+
style: styles.ogContainer,
|
|
70
|
+
onPress: onPressURL,
|
|
71
|
+
onLongPress: onLongPress
|
|
72
|
+
}, _ref3 => {
|
|
73
|
+
let {
|
|
74
|
+
pressed
|
|
75
|
+
} = _ref3;
|
|
76
|
+
return props.message.ogMetaData && /*#__PURE__*/React.createElement(Box, {
|
|
77
|
+
padding: 8,
|
|
78
|
+
borderRadius: 8,
|
|
79
|
+
style: styles.ogContainer,
|
|
80
|
+
backgroundColor: pressed ? color.pressed.bubbleBackground : color.enabled.bubbleBackground
|
|
81
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
82
|
+
numberOfLines: 1,
|
|
83
|
+
caption2: true,
|
|
84
|
+
color: colors.onBackground02,
|
|
85
|
+
style: styles.ogUrl
|
|
86
|
+
}, props.message.ogMetaData.url), /*#__PURE__*/React.createElement(Text, {
|
|
87
|
+
numberOfLines: 2,
|
|
88
|
+
body2: true,
|
|
89
|
+
color: colors.primary,
|
|
90
|
+
style: styles.ogTitle
|
|
91
|
+
}, props.message.ogMetaData.title), Boolean(props.message.ogMetaData.description) && /*#__PURE__*/React.createElement(Text, {
|
|
92
|
+
numberOfLines: 2,
|
|
93
|
+
caption2: true,
|
|
94
|
+
color: colors.onBackground01
|
|
95
|
+
}, props.message.ogMetaData.description), Boolean(props.message.ogMetaData.defaultImage) && /*#__PURE__*/React.createElement(ImageWithPlaceholder, {
|
|
96
|
+
style: styles.ogImage,
|
|
97
|
+
source: {
|
|
98
|
+
uri: props.message.ogMetaData.defaultImage.url
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
})));
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const styles = createStyleSheet({
|
|
105
|
+
ogContainer: {
|
|
106
|
+
maxWidth: 296
|
|
107
|
+
},
|
|
108
|
+
ogUrl: {
|
|
109
|
+
marginBottom: 4
|
|
110
|
+
},
|
|
111
|
+
ogTitle: {
|
|
112
|
+
marginBottom: 8
|
|
113
|
+
},
|
|
114
|
+
ogImage: {
|
|
115
|
+
width: '100%',
|
|
116
|
+
height: 156,
|
|
117
|
+
marginTop: 12
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
export default OpenGraphUserMessage;
|
|
121
|
+
//# sourceMappingURL=Message.user.og.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","urlRegexRough","Box","ImageWithPlaceholder","PressBox","RegexText","Text","createStyleSheet","useUIKitTheme","MessageContainer","OpenGraphUserMessage","props","colors","onPress","onLongPress","onPressURL","rest","color","ui","openChannelMessage","default","pressed","enabled","textMsg","regex","replacer","match","parentProps","keyPrefix","index","primary","style","message","Boolean","updatedAt","textMsgPostfix","strings","edited","ogMetaData","styles","ogContainer","bubbleBackground","onBackground02","ogUrl","url","ogTitle","title","description","onBackground01","defaultImage","ogImage","uri","maxWidth","marginBottom","width","height","marginTop"],"sources":["Message.user.og.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { urlRegexRough } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport ImageWithPlaceholder from '../../components/ImageWithPlaceholder';\nimport PressBox from '../../components/PressBox';\nimport RegexText from '../../components/RegexText';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport MessageContainer from './MessageContainer';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {};\nconst OpenGraphUserMessage = (props: OpenChannelMessageProps<SendbirdUserMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const { onPress, onLongPress, onPressURL, ...rest } = props;\n const color = colors.ui.openChannelMessage.default;\n\n return (\n <Box>\n <PressBox onPress={onPress} onLongPress={onLongPress}>\n {({ pressed }) => (\n <MessageContainer pressed={pressed} {...rest}>\n <Text body3 color={color.enabled.textMsg}>\n <RegexText\n body3\n color={color.enabled.textMsg}\n patterns={[\n {\n regex: urlRegexRough,\n replacer({ match, parentProps, keyPrefix, index }) {\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n onPress={onPressURL}\n onLongPress={onLongPress}\n color={colors.primary}\n style={parentProps?.style}\n >\n {match}\n </Text>\n );\n },\n },\n ]}\n >\n {props.message.message}\n </RegexText>\n {Boolean(props.message.updatedAt) && (\n <Text body3 color={color.enabled.textMsgPostfix}>\n {props.strings?.edited ?? ' (edited)'}\n </Text>\n )}\n </Text>\n </MessageContainer>\n )}\n </PressBox>\n {props.message.ogMetaData && (\n <MessageContainer {...rest} grouped>\n <PressBox style={styles.ogContainer} onPress={onPressURL} onLongPress={onLongPress}>\n {({ pressed }) =>\n props.message.ogMetaData && (\n <Box\n padding={8}\n borderRadius={8}\n style={styles.ogContainer}\n backgroundColor={pressed ? color.pressed.bubbleBackground : color.enabled.bubbleBackground}\n >\n <Text numberOfLines={1} caption2 color={colors.onBackground02} style={styles.ogUrl}>\n {props.message.ogMetaData.url}\n </Text>\n\n <Text numberOfLines={2} body2 color={colors.primary} style={styles.ogTitle}>\n {props.message.ogMetaData.title}\n </Text>\n\n {Boolean(props.message.ogMetaData.description) && (\n <Text numberOfLines={2} caption2 color={colors.onBackground01}>\n {props.message.ogMetaData.description}\n </Text>\n )}\n\n {Boolean(props.message.ogMetaData.defaultImage) && (\n <ImageWithPlaceholder\n style={styles.ogImage}\n source={{ uri: props.message.ogMetaData.defaultImage.url }}\n />\n )}\n </Box>\n )\n }\n </PressBox>\n </MessageContainer>\n )}\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n ogContainer: {\n maxWidth: 296,\n },\n ogUrl: {\n marginBottom: 4,\n },\n ogTitle: {\n marginBottom: 8,\n },\n ogImage: {\n width: '100%',\n height: 156,\n marginTop: 12,\n },\n});\n\nexport default OpenGraphUserMessage;\n"],"mappings":"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"}
|