@sendbird/uikit-react-native-foundation 2.3.0 → 2.4.1
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 @@
|
|
|
1
|
+
{"version":3,"names":["OpenGraphUserMessage","props","colors","useUIKitTheme","onPress","onLongPress","onPressURL","rest","color","ui","openChannelMessage","default","pressed","enabled","textMsg","regex","urlRegexRough","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","createStyleSheet","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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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _message = require("@sendbird/chat/message");
|
|
11
|
+
|
|
12
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
13
|
+
|
|
14
|
+
var _Box = _interopRequireDefault(require("../../components/Box"));
|
|
15
|
+
|
|
16
|
+
var _Icon = _interopRequireDefault(require("../../components/Icon"));
|
|
17
|
+
|
|
18
|
+
var _PressBox = _interopRequireDefault(require("../../components/PressBox"));
|
|
19
|
+
|
|
20
|
+
var _Text = _interopRequireDefault(require("../../components/Text"));
|
|
21
|
+
|
|
22
|
+
var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet"));
|
|
23
|
+
|
|
24
|
+
var _useUIKitTheme = _interopRequireDefault(require("../../theme/useUIKitTheme"));
|
|
25
|
+
|
|
26
|
+
var _Avatar = _interopRequireDefault(require("../Avatar"));
|
|
27
|
+
|
|
28
|
+
var _LoadingSpinner = _interopRequireDefault(require("../LoadingSpinner"));
|
|
29
|
+
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
+
|
|
32
|
+
const MessageContainer = _ref => {
|
|
33
|
+
var _props$strings, _props$strings2;
|
|
34
|
+
|
|
35
|
+
let {
|
|
36
|
+
children,
|
|
37
|
+
channel,
|
|
38
|
+
grouped,
|
|
39
|
+
pressed,
|
|
40
|
+
...props
|
|
41
|
+
} = _ref;
|
|
42
|
+
const {
|
|
43
|
+
colors
|
|
44
|
+
} = (0, _useUIKitTheme.default)();
|
|
45
|
+
const color = colors.ui.openChannelMessage.default;
|
|
46
|
+
|
|
47
|
+
const renderSendingStatus = () => {
|
|
48
|
+
if (!('sendingStatus' in props.message)) return null;
|
|
49
|
+
|
|
50
|
+
switch (props.message.sendingStatus) {
|
|
51
|
+
case _message.SendingStatus.PENDING:
|
|
52
|
+
{
|
|
53
|
+
return /*#__PURE__*/_react.default.createElement(SendingStatusContainer, null, /*#__PURE__*/_react.default.createElement(_LoadingSpinner.default, {
|
|
54
|
+
color: colors.primary,
|
|
55
|
+
size: 16
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
case _message.SendingStatus.FAILED:
|
|
60
|
+
{
|
|
61
|
+
return /*#__PURE__*/_react.default.createElement(SendingStatusContainer, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
62
|
+
icon: 'error',
|
|
63
|
+
color: colors.error,
|
|
64
|
+
size: 16
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
default:
|
|
69
|
+
{
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
76
|
+
flexDirection: 'row',
|
|
77
|
+
paddingVertical: grouped ? 5 : 6,
|
|
78
|
+
paddingLeft: 12,
|
|
79
|
+
paddingRight: 12,
|
|
80
|
+
backgroundColor: pressed ? color.pressed.background : color.enabled.background
|
|
81
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
82
|
+
marginRight: 12
|
|
83
|
+
}, !grouped && 'sender' in props.message ? /*#__PURE__*/_react.default.createElement(_PressBox.default, {
|
|
84
|
+
onPress: props.onPressAvatar
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
|
|
86
|
+
size: styles.avatar.width,
|
|
87
|
+
uri: props.message.sender.profileUrl
|
|
88
|
+
})) : /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
89
|
+
style: styles.avatar
|
|
90
|
+
})), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
91
|
+
flexShrink: 1,
|
|
92
|
+
flex: 1,
|
|
93
|
+
flexDirection: 'column',
|
|
94
|
+
alignItems: 'flex-start'
|
|
95
|
+
}, !grouped && 'sender' in props.message && /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
96
|
+
flexDirection: 'row',
|
|
97
|
+
alignItems: 'center',
|
|
98
|
+
marginBottom: 2
|
|
99
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
100
|
+
marginRight: 4,
|
|
101
|
+
flexShrink: 1
|
|
102
|
+
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
103
|
+
caption1: true,
|
|
104
|
+
ellipsizeMode: 'middle',
|
|
105
|
+
numberOfLines: 1,
|
|
106
|
+
color: channel.isOperator(props.message.sender.userId) ? color.enabled.textOperator : color.enabled.textSenderName
|
|
107
|
+
}, ((_props$strings = props.strings) === null || _props$strings === void 0 ? void 0 : _props$strings.senderName) ?? props.message.sender.nickname)), /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
108
|
+
caption4: true,
|
|
109
|
+
color: color.enabled.textTime
|
|
110
|
+
}, ((_props$strings2 = props.strings) === null || _props$strings2 === void 0 ? void 0 : _props$strings2.sentDate) ?? (0, _uikitUtils.getMessageTimeFormat)(new Date(props.message.createdAt))))), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
111
|
+
style: styles.message
|
|
112
|
+
}, children), renderSendingStatus()));
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const SendingStatusContainer = _ref2 => {
|
|
116
|
+
let {
|
|
117
|
+
children
|
|
118
|
+
} = _ref2;
|
|
119
|
+
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
120
|
+
flexDirection: 'row'
|
|
121
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
122
|
+
marginTop: 2
|
|
123
|
+
}, children));
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const styles = (0, _createStyleSheet.default)({
|
|
127
|
+
avatar: {
|
|
128
|
+
width: 28
|
|
129
|
+
},
|
|
130
|
+
message: {
|
|
131
|
+
width: '100%'
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
var _default = MessageContainer;
|
|
135
|
+
exports.default = _default;
|
|
136
|
+
//# sourceMappingURL=MessageContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MessageContainer","children","channel","grouped","pressed","props","colors","useUIKitTheme","color","ui","openChannelMessage","default","renderSendingStatus","message","sendingStatus","SendingStatus","PENDING","primary","FAILED","error","background","enabled","onPressAvatar","styles","avatar","width","sender","profileUrl","isOperator","userId","textOperator","textSenderName","strings","senderName","nickname","textTime","sentDate","getMessageTimeFormat","Date","createdAt","SendingStatusContainer","createStyleSheet"],"sources":["MessageContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { getMessageTimeFormat } 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 Avatar from '../Avatar';\nimport LoadingSpinner from '../LoadingSpinner';\nimport type { OpenChannelMessageProps } from './index';\n\ntype Props = {\n pressed?: boolean;\n};\n\nconst MessageContainer = ({\n children,\n channel,\n grouped,\n pressed,\n ...props\n}: OpenChannelMessageProps<SendbirdMessage, Props>) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelMessage.default;\n\n const renderSendingStatus = () => {\n if (!('sendingStatus' in props.message)) return null;\n\n switch (props.message.sendingStatus) {\n case SendingStatus.PENDING: {\n return (\n <SendingStatusContainer>\n <LoadingSpinner color={colors.primary} size={16} />\n </SendingStatusContainer>\n );\n }\n case SendingStatus.FAILED: {\n return (\n <SendingStatusContainer>\n <Icon icon={'error'} color={colors.error} size={16} />\n </SendingStatusContainer>\n );\n }\n default: {\n return null;\n }\n }\n };\n\n return (\n <Box\n flexDirection={'row'}\n paddingVertical={grouped ? 5 : 6}\n paddingLeft={12}\n paddingRight={12}\n backgroundColor={pressed ? color.pressed.background : color.enabled.background}\n >\n <Box marginRight={12}>\n {!grouped && 'sender' in props.message ? (\n <PressBox onPress={props.onPressAvatar}>\n <Avatar size={styles.avatar.width} uri={props.message.sender.profileUrl} />\n </PressBox>\n ) : (\n <Box style={styles.avatar} />\n )}\n </Box>\n <Box flexShrink={1} flex={1} flexDirection={'column'} alignItems={'flex-start'}>\n {!grouped && 'sender' in props.message && (\n <Box flexDirection={'row'} alignItems={'center'} marginBottom={2}>\n <Box marginRight={4} flexShrink={1}>\n <Text\n caption1\n ellipsizeMode={'middle'}\n numberOfLines={1}\n color={\n channel.isOperator(props.message.sender.userId)\n ? color.enabled.textOperator\n : color.enabled.textSenderName\n }\n >\n {props.strings?.senderName ?? props.message.sender.nickname}\n </Text>\n </Box>\n <Box>\n <Text caption4 color={color.enabled.textTime}>\n {props.strings?.sentDate ?? getMessageTimeFormat(new Date(props.message.createdAt))}\n </Text>\n </Box>\n </Box>\n )}\n <Box style={styles.message}>{children}</Box>\n\n {renderSendingStatus()}\n </Box>\n </Box>\n );\n};\n\nconst SendingStatusContainer = ({ children }: { children: React.ReactElement }) => {\n return (\n <Box flexDirection={'row'}>\n <Box marginTop={2}>{children}</Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 28,\n },\n message: {\n width: '100%',\n },\n});\n\nexport default MessageContainer;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _Message = _interopRequireDefault(require("./Message.admin"));
|
|
9
|
+
|
|
10
|
+
var _Message2 = _interopRequireDefault(require("./Message.file"));
|
|
11
|
+
|
|
12
|
+
var _MessageFile = _interopRequireDefault(require("./Message.file.image"));
|
|
13
|
+
|
|
14
|
+
var _MessageFile2 = _interopRequireDefault(require("./Message.file.video"));
|
|
15
|
+
|
|
16
|
+
var _Message3 = _interopRequireDefault(require("./Message.unknown"));
|
|
17
|
+
|
|
18
|
+
var _Message4 = _interopRequireDefault(require("./Message.user"));
|
|
19
|
+
|
|
20
|
+
var _MessageUser = _interopRequireDefault(require("./Message.user.og"));
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
const OpenChannelMessage = {
|
|
25
|
+
User: _Message4.default,
|
|
26
|
+
OpenGraphUser: _MessageUser.default,
|
|
27
|
+
File: _Message2.default,
|
|
28
|
+
ImageFile: _MessageFile.default,
|
|
29
|
+
VideoFile: _MessageFile2.default,
|
|
30
|
+
Admin: _Message.default,
|
|
31
|
+
Unknown: _Message3.default
|
|
32
|
+
};
|
|
33
|
+
var _default = OpenChannelMessage;
|
|
34
|
+
exports.default = _default;
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenChannelMessage","User","UserMessage","OpenGraphUser","OpenGraphUserMessage","File","FileMessage","ImageFile","ImageFileMessage","VideoFile","VideoFileMessage","Admin","AdminMessage","Unknown","UnknownMessage"],"sources":["index.ts"],"sourcesContent":["import type React from 'react';\n\nimport type { SendbirdMessage, SendbirdOpenChannel } from '@sendbird/uikit-utils';\n\nimport AdminMessage from './Message.admin';\nimport FileMessage from './Message.file';\nimport ImageFileMessage from './Message.file.image';\nimport VideoFileMessage from './Message.file.video';\nimport UnknownMessage from './Message.unknown';\nimport UserMessage from './Message.user';\nimport OpenGraphUserMessage from './Message.user.og';\n\nexport type OpenChannelMessageProps<T extends SendbirdMessage, AdditionalProps = unknown> = {\n channel: SendbirdOpenChannel;\n message: T;\n strings?: {\n senderName?: string;\n sentDate?: string;\n edited?: string;\n fileName?: string;\n unknownTitle?: string;\n unknownDescription?: string;\n };\n children?: React.ReactNode;\n grouped?: boolean;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressAvatar?: () => void;\n onPressURL?: () => void;\n} & AdditionalProps;\n\nconst OpenChannelMessage = {\n User: UserMessage,\n OpenGraphUser: OpenGraphUserMessage,\n File: FileMessage,\n ImageFile: ImageFileMessage,\n VideoFile: VideoFileMessage,\n Admin: AdminMessage,\n Unknown: UnknownMessage,\n};\n\nexport default OpenChannelMessage;\n"],"mappings":";;;;;;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAqBA,MAAMA,kBAAkB,GAAG;EACzBC,IAAI,EAAEC,iBADmB;EAEzBC,aAAa,EAAEC,oBAFU;EAGzBC,IAAI,EAAEC,iBAHmB;EAIzBC,SAAS,EAAEC,oBAJc;EAKzBC,SAAS,EAAEC,qBALc;EAMzBC,KAAK,EAAEC,gBANkB;EAOzBC,OAAO,EAAEC;AAPgB,CAA3B;eAUed,kB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
11
|
+
|
|
12
|
+
var _Box = _interopRequireDefault(require("../../components/Box"));
|
|
13
|
+
|
|
14
|
+
var _Icon = _interopRequireDefault(require("../../components/Icon"));
|
|
15
|
+
|
|
16
|
+
var _Image = _interopRequireDefault(require("../../components/Image"));
|
|
17
|
+
|
|
18
|
+
var _Text = _interopRequireDefault(require("../../components/Text"));
|
|
19
|
+
|
|
20
|
+
var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet"));
|
|
21
|
+
|
|
22
|
+
var _useUIKitTheme = _interopRequireDefault(require("../../theme/useUIKitTheme"));
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
const OpenChannelPreview = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
customCover,
|
|
29
|
+
coverUrl,
|
|
30
|
+
participantsCount = 0,
|
|
31
|
+
title,
|
|
32
|
+
frozen
|
|
33
|
+
} = _ref;
|
|
34
|
+
const {
|
|
35
|
+
colors
|
|
36
|
+
} = (0, _useUIKitTheme.default)();
|
|
37
|
+
const color = colors.ui.openChannelPreview.default.none;
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
39
|
+
backgroundColor: color.background,
|
|
40
|
+
width: '100%',
|
|
41
|
+
height: 62,
|
|
42
|
+
flexDirection: 'row',
|
|
43
|
+
alignItems: 'center',
|
|
44
|
+
paddingHorizontal: 16
|
|
45
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
46
|
+
width: styles.channelCover.width,
|
|
47
|
+
height: styles.channelCover.height,
|
|
48
|
+
borderRadius: styles.channelCover.width,
|
|
49
|
+
overflow: 'hidden',
|
|
50
|
+
marginRight: 16
|
|
51
|
+
}, (0, _uikitUtils.conditionChaining)([Boolean(customCover)], [customCover, /*#__PURE__*/_react.default.createElement(_Image.default, {
|
|
52
|
+
resizeMode: 'cover',
|
|
53
|
+
style: [styles.channelCover, {
|
|
54
|
+
backgroundColor: color.coverBackground
|
|
55
|
+
}],
|
|
56
|
+
source: {
|
|
57
|
+
uri: coverUrl
|
|
58
|
+
}
|
|
59
|
+
})])), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
60
|
+
flex: 1,
|
|
61
|
+
height: '100%',
|
|
62
|
+
justifyContent: 'center'
|
|
63
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
64
|
+
flexDirection: 'row',
|
|
65
|
+
flexShrink: 1,
|
|
66
|
+
marginBottom: 4,
|
|
67
|
+
alignItems: 'center'
|
|
68
|
+
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
69
|
+
subtitle1: true,
|
|
70
|
+
style: styles.channelInfoTitle,
|
|
71
|
+
numberOfLines: 1,
|
|
72
|
+
color: color.textTitle
|
|
73
|
+
}, title), frozen && /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
74
|
+
size: 16,
|
|
75
|
+
icon: 'freeze',
|
|
76
|
+
color: color.frozenIcon,
|
|
77
|
+
containerStyle: styles.marginLeft
|
|
78
|
+
})), /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
79
|
+
flexDirection: 'row',
|
|
80
|
+
flexShrink: 1,
|
|
81
|
+
alignItems: 'center',
|
|
82
|
+
justifyContent: 'flex-start'
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
84
|
+
flexDirection: 'row',
|
|
85
|
+
alignItems: 'center'
|
|
86
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
87
|
+
size: 16,
|
|
88
|
+
icon: 'members',
|
|
89
|
+
color: color.participantsIcon,
|
|
90
|
+
containerStyle: styles.marginRight
|
|
91
|
+
}), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
92
|
+
caption2: true,
|
|
93
|
+
color: color.textParticipants
|
|
94
|
+
}, (0, _uikitUtils.truncatedCount)(participantsCount, 999)))), /*#__PURE__*/_react.default.createElement(Separator, {
|
|
95
|
+
color: color.separator
|
|
96
|
+
})));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const Separator = _ref2 => {
|
|
100
|
+
let {
|
|
101
|
+
color
|
|
102
|
+
} = _ref2;
|
|
103
|
+
return /*#__PURE__*/_react.default.createElement(_Box.default, {
|
|
104
|
+
style: [styles.separator, {
|
|
105
|
+
backgroundColor: color
|
|
106
|
+
}]
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const styles = (0, _createStyleSheet.default)({
|
|
111
|
+
channelCover: {
|
|
112
|
+
width: 32,
|
|
113
|
+
height: 32
|
|
114
|
+
},
|
|
115
|
+
channelInfoTitle: {
|
|
116
|
+
flexShrink: 1
|
|
117
|
+
},
|
|
118
|
+
marginRight: {
|
|
119
|
+
marginRight: 4
|
|
120
|
+
},
|
|
121
|
+
marginLeft: {
|
|
122
|
+
marginLeft: 4
|
|
123
|
+
},
|
|
124
|
+
separator: {
|
|
125
|
+
position: 'absolute',
|
|
126
|
+
left: 0,
|
|
127
|
+
right: -16,
|
|
128
|
+
bottom: 0,
|
|
129
|
+
height: 1
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
var _default = OpenChannelPreview;
|
|
133
|
+
exports.default = _default;
|
|
134
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OpenChannelPreview","customCover","coverUrl","participantsCount","title","frozen","colors","useUIKitTheme","color","ui","openChannelPreview","default","none","background","styles","channelCover","width","height","conditionChaining","Boolean","backgroundColor","coverBackground","uri","channelInfoTitle","textTitle","frozenIcon","marginLeft","participantsIcon","marginRight","textParticipants","truncatedCount","separator","Separator","createStyleSheet","flexShrink","position","left","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { conditionChaining, truncatedCount } from '@sendbird/uikit-utils';\n\nimport Box from '../../components/Box';\nimport Icon from '../../components/Icon';\nimport Image from '../../components/Image';\nimport Text from '../../components/Text';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n customCover?: React.ReactElement;\n coverUrl: string;\n title: string;\n participantsCount?: number;\n frozen?: boolean;\n};\nconst OpenChannelPreview = ({ customCover, coverUrl, participantsCount = 0, title, frozen }: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.openChannelPreview.default.none;\n\n return (\n <Box\n backgroundColor={color.background}\n width={'100%'}\n height={62}\n flexDirection={'row'}\n alignItems={'center'}\n paddingHorizontal={16}\n >\n <Box\n width={styles.channelCover.width}\n height={styles.channelCover.height}\n borderRadius={styles.channelCover.width}\n overflow={'hidden'}\n marginRight={16}\n >\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </Box>\n <Box flex={1} height={'100%'} justifyContent={'center'}>\n <Box flexDirection={'row'} flexShrink={1} marginBottom={4} alignItems={'center'}>\n <Text subtitle1 style={styles.channelInfoTitle} numberOfLines={1} color={color.textTitle}>\n {title}\n </Text>\n {frozen && <Icon size={16} icon={'freeze'} color={color.frozenIcon} containerStyle={styles.marginLeft} />}\n </Box>\n <Box flexDirection={'row'} flexShrink={1} alignItems={'center'} justifyContent={'flex-start'}>\n <Box flexDirection={'row'} alignItems={'center'}>\n <Icon size={16} icon={'members'} color={color.participantsIcon} containerStyle={styles.marginRight} />\n <Text caption2 color={color.textParticipants}>\n {truncatedCount(participantsCount, 999)}\n </Text>\n </Box>\n </Box>\n <Separator color={color.separator} />\n </Box>\n </Box>\n );\n};\n\nconst Separator = ({ color }: { color: string }) => <Box style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n channelCover: {\n width: 32,\n height: 32,\n },\n channelInfoTitle: {\n flexShrink: 1,\n },\n marginRight: {\n marginRight: 4,\n },\n marginLeft: {\n marginLeft: 4,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default OpenChannelPreview;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { View } from 'react-native';
|
|
5
|
+
import { isFunction } from '@sendbird/uikit-utils';
|
|
6
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
7
|
+
|
|
8
|
+
const Box = _ref => {
|
|
9
|
+
let {
|
|
10
|
+
style,
|
|
11
|
+
children,
|
|
12
|
+
...props
|
|
13
|
+
} = _ref;
|
|
14
|
+
const boxStyle = useBoxStyle(props);
|
|
15
|
+
return /*#__PURE__*/React.createElement(View, _extends({
|
|
16
|
+
style: [boxStyle, style]
|
|
17
|
+
}, props), children);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const useBoxStyle = props => {
|
|
21
|
+
const theme = useUIKitTheme();
|
|
22
|
+
const {
|
|
23
|
+
backgroundColor,
|
|
24
|
+
...rest
|
|
25
|
+
} = props;
|
|
26
|
+
return {
|
|
27
|
+
backgroundColor: isFunction(backgroundColor) ? backgroundColor(theme) : backgroundColor,
|
|
28
|
+
...rest
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default Box;
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","isFunction","useUIKitTheme","Box","style","children","props","boxStyle","useBoxStyle","theme","backgroundColor","rest"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewProps, ViewStyle } from 'react-native';\n\nimport { isFunction } from '@sendbird/uikit-utils';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport type { UIKitColors, UIKitPalette } from '../../types';\n\ntype BaseBoxProps = Pick<\n ViewStyle,\n | 'flex'\n | 'flexShrink'\n | 'flexGrow'\n | 'flexDirection'\n | 'alignItems'\n | 'justifyContent'\n | 'borderRadius'\n | 'borderWidth'\n | 'borderColor'\n | 'borderBottomColor'\n | 'borderBottomWidth'\n | 'margin'\n | 'marginHorizontal'\n | 'marginVertical'\n | 'marginLeft'\n | 'marginRight'\n | 'marginTop'\n | 'marginBottom'\n | 'padding'\n | 'paddingHorizontal'\n | 'paddingVertical'\n | 'paddingLeft'\n | 'paddingRight'\n | 'paddingTop'\n | 'paddingBottom'\n | 'overflow'\n | 'width'\n | 'height'\n> & {\n backgroundColor?: string | ((theme: { colors: UIKitColors; palette: UIKitPalette }) => string);\n};\n\ntype BoxProps = BaseBoxProps & ViewProps;\nconst Box = ({ style, children, ...props }: BoxProps) => {\n const boxStyle = useBoxStyle(props);\n\n return (\n <View style={[boxStyle, style]} {...props}>\n {children}\n </View>\n );\n};\n\nconst useBoxStyle = (props: BaseBoxProps): StyleProp<ViewStyle> => {\n const theme = useUIKitTheme();\n\n const { backgroundColor, ...rest } = props;\n\n return {\n backgroundColor: isFunction(backgroundColor) ? backgroundColor(theme) : backgroundColor,\n ...rest,\n };\n};\n\nexport default Box;\n"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAAoBC,IAApB,QAAsD,cAAtD;AAEA,SAASC,UAAT,QAA2B,uBAA3B;AAEA,OAAOC,aAAP,MAA0B,2BAA1B;;AAsCA,MAAMC,GAAG,GAAG,QAA6C;EAAA,IAA5C;IAAEC,KAAF;IAASC,QAAT;IAAmB,GAAGC;EAAtB,CAA4C;EACvD,MAAMC,QAAQ,GAAGC,WAAW,CAACF,KAAD,CAA5B;EAEA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACC,QAAD,EAAWH,KAAX;EAAb,GAAoCE,KAApC,GACGD,QADH,CADF;AAKD,CARD;;AAUA,MAAMG,WAAW,GAAIF,KAAD,IAA+C;EACjE,MAAMG,KAAK,GAAGP,aAAa,EAA3B;EAEA,MAAM;IAAEQ,eAAF;IAAmB,GAAGC;EAAtB,IAA+BL,KAArC;EAEA,OAAO;IACLI,eAAe,EAAET,UAAU,CAACS,eAAD,CAAV,GAA8BA,eAAe,CAACD,KAAD,CAA7C,GAAuDC,eADnE;IAEL,GAAGC;EAFE,CAAP;AAID,CATD;;AAWA,eAAeR,GAAf"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { Platform, StyleSheet } from 'react-native';
|
|
3
|
+
import { useForceUpdate } from '@sendbird/uikit-utils';
|
|
4
|
+
import createStyleSheet from '../../styles/createStyleSheet';
|
|
5
|
+
import useUIKitTheme from '../../theme/useUIKitTheme';
|
|
6
|
+
import Box from '../Box';
|
|
7
|
+
import Icon from '../Icon';
|
|
8
|
+
import Image from '../Image';
|
|
9
|
+
|
|
10
|
+
const useRetry = function (hasError) {
|
|
11
|
+
let retryCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
|
|
12
|
+
if (Platform.OS === 'android') return '';
|
|
13
|
+
const forceUpdate = useForceUpdate();
|
|
14
|
+
const retryCountRef = useRef(1);
|
|
15
|
+
const retryTimeoutRef = useRef();
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (hasError) {
|
|
18
|
+
const reloadReservation = () => {
|
|
19
|
+
if (retryCountRef.current < retryCount) {
|
|
20
|
+
retryTimeoutRef.current = setTimeout(() => {
|
|
21
|
+
retryCountRef.current++;
|
|
22
|
+
reloadReservation();
|
|
23
|
+
forceUpdate();
|
|
24
|
+
}, retryCountRef.current * 5000);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return reloadReservation();
|
|
29
|
+
} else {
|
|
30
|
+
return clearTimeout(retryTimeoutRef.current);
|
|
31
|
+
}
|
|
32
|
+
}, [hasError]);
|
|
33
|
+
return retryCountRef.current;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const ImageWithPlaceholder = props => {
|
|
37
|
+
const {
|
|
38
|
+
colors
|
|
39
|
+
} = useUIKitTheme();
|
|
40
|
+
const [imageNotFound, setImageNotFound] = useState(false);
|
|
41
|
+
const key = useRetry(imageNotFound);
|
|
42
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
43
|
+
style: [{
|
|
44
|
+
overflow: 'hidden',
|
|
45
|
+
width: props.width,
|
|
46
|
+
height: props.height
|
|
47
|
+
}, props.style],
|
|
48
|
+
backgroundColor: colors.onBackground04
|
|
49
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
50
|
+
key: key,
|
|
51
|
+
source: props.source,
|
|
52
|
+
style: [StyleSheet.absoluteFill, imageNotFound && styles.hide],
|
|
53
|
+
resizeMode: 'cover',
|
|
54
|
+
resizeMethod: 'resize',
|
|
55
|
+
onError: () => setImageNotFound(true),
|
|
56
|
+
onLoad: () => setImageNotFound(false)
|
|
57
|
+
}), imageNotFound && /*#__PURE__*/React.createElement(Icon, {
|
|
58
|
+
containerStyle: StyleSheet.absoluteFill,
|
|
59
|
+
icon: 'thumbnail-none',
|
|
60
|
+
size: 48,
|
|
61
|
+
color: colors.onBackground02
|
|
62
|
+
}));
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const styles = createStyleSheet({
|
|
66
|
+
hide: {
|
|
67
|
+
display: 'none'
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
export default ImageWithPlaceholder;
|
|
71
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","Platform","StyleSheet","useForceUpdate","createStyleSheet","useUIKitTheme","Box","Icon","Image","useRetry","hasError","retryCount","OS","forceUpdate","retryCountRef","retryTimeoutRef","reloadReservation","current","setTimeout","clearTimeout","ImageWithPlaceholder","props","colors","imageNotFound","setImageNotFound","key","overflow","width","height","style","onBackground04","source","absoluteFill","styles","hide","onBackground02","display"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform, StyleProp, StyleSheet, ViewStyle } from 'react-native';\n\nimport { useForceUpdate } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Box from '../Box';\nimport Icon from '../Icon';\nimport Image from '../Image';\n\nconst useRetry = (hasError: boolean, retryCount = 5) => {\n if (Platform.OS === 'android') return '';\n\n const forceUpdate = useForceUpdate();\n const retryCountRef = useRef(1);\n const retryTimeoutRef = useRef<NodeJS.Timeout>();\n\n useEffect(() => {\n if (hasError) {\n const reloadReservation = () => {\n if (retryCountRef.current < retryCount) {\n retryTimeoutRef.current = setTimeout(() => {\n retryCountRef.current++;\n reloadReservation();\n forceUpdate();\n }, retryCountRef.current * 5000);\n }\n };\n\n return reloadReservation();\n } else {\n return clearTimeout(retryTimeoutRef.current);\n }\n }, [hasError]);\n\n return retryCountRef.current;\n};\n\ntype Props = {\n source: number | { uri: string };\n width?: number | string;\n height?: number | string;\n style?: StyleProp<ViewStyle>;\n};\nconst ImageWithPlaceholder = (props: Props) => {\n const { colors } = useUIKitTheme();\n const [imageNotFound, setImageNotFound] = useState(false);\n\n const key = useRetry(imageNotFound);\n return (\n <Box\n style={[{ overflow: 'hidden', width: props.width, height: props.height }, props.style]}\n backgroundColor={colors.onBackground04}\n >\n <Image\n key={key}\n source={props.source}\n style={[StyleSheet.absoluteFill, imageNotFound && styles.hide]}\n resizeMode={'cover'}\n resizeMethod={'resize'}\n onError={() => setImageNotFound(true)}\n onLoad={() => setImageNotFound(false)}\n />\n {imageNotFound && (\n <Icon\n containerStyle={StyleSheet.absoluteFill}\n icon={'thumbnail-none'}\n size={48}\n color={colors.onBackground02}\n />\n )}\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n hide: {\n display: 'none',\n },\n});\n\nexport default ImageWithPlaceholder;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AACA,SAASC,QAAT,EAA8BC,UAA9B,QAA2D,cAA3D;AAEA,SAASC,cAAT,QAA+B,uBAA/B;AAEA,OAAOC,gBAAP,MAA6B,+BAA7B;AACA,OAAOC,aAAP,MAA0B,2BAA1B;AACA,OAAOC,GAAP,MAAgB,QAAhB;AACA,OAAOC,IAAP,MAAiB,SAAjB;AACA,OAAOC,KAAP,MAAkB,UAAlB;;AAEA,MAAMC,QAAQ,GAAG,UAACC,QAAD,EAAuC;EAAA,IAAnBC,UAAmB,uEAAN,CAAM;EACtD,IAAIV,QAAQ,CAACW,EAAT,KAAgB,SAApB,EAA+B,OAAO,EAAP;EAE/B,MAAMC,WAAW,GAAGV,cAAc,EAAlC;EACA,MAAMW,aAAa,GAAGf,MAAM,CAAC,CAAD,CAA5B;EACA,MAAMgB,eAAe,GAAGhB,MAAM,EAA9B;EAEAD,SAAS,CAAC,MAAM;IACd,IAAIY,QAAJ,EAAc;MACZ,MAAMM,iBAAiB,GAAG,MAAM;QAC9B,IAAIF,aAAa,CAACG,OAAd,GAAwBN,UAA5B,EAAwC;UACtCI,eAAe,CAACE,OAAhB,GAA0BC,UAAU,CAAC,MAAM;YACzCJ,aAAa,CAACG,OAAd;YACAD,iBAAiB;YACjBH,WAAW;UACZ,CAJmC,EAIjCC,aAAa,CAACG,OAAd,GAAwB,IAJS,CAApC;QAKD;MACF,CARD;;MAUA,OAAOD,iBAAiB,EAAxB;IACD,CAZD,MAYO;MACL,OAAOG,YAAY,CAACJ,eAAe,CAACE,OAAjB,CAAnB;IACD;EACF,CAhBQ,EAgBN,CAACP,QAAD,CAhBM,CAAT;EAkBA,OAAOI,aAAa,CAACG,OAArB;AACD,CA1BD;;AAkCA,MAAMG,oBAAoB,GAAIC,KAAD,IAAkB;EAC7C,MAAM;IAAEC;EAAF,IAAajB,aAAa,EAAhC;EACA,MAAM,CAACkB,aAAD,EAAgBC,gBAAhB,IAAoCxB,QAAQ,CAAC,KAAD,CAAlD;EAEA,MAAMyB,GAAG,GAAGhB,QAAQ,CAACc,aAAD,CAApB;EACA,oBACE,oBAAC,GAAD;IACE,KAAK,EAAE,CAAC;MAAEG,QAAQ,EAAE,QAAZ;MAAsBC,KAAK,EAAEN,KAAK,CAACM,KAAnC;MAA0CC,MAAM,EAAEP,KAAK,CAACO;IAAxD,CAAD,EAAmEP,KAAK,CAACQ,KAAzE,CADT;IAEE,eAAe,EAAEP,MAAM,CAACQ;EAF1B,gBAIE,oBAAC,KAAD;IACE,GAAG,EAAEL,GADP;IAEE,MAAM,EAAEJ,KAAK,CAACU,MAFhB;IAGE,KAAK,EAAE,CAAC7B,UAAU,CAAC8B,YAAZ,EAA0BT,aAAa,IAAIU,MAAM,CAACC,IAAlD,CAHT;IAIE,UAAU,EAAE,OAJd;IAKE,YAAY,EAAE,QALhB;IAME,OAAO,EAAE,MAAMV,gBAAgB,CAAC,IAAD,CANjC;IAOE,MAAM,EAAE,MAAMA,gBAAgB,CAAC,KAAD;EAPhC,EAJF,EAaGD,aAAa,iBACZ,oBAAC,IAAD;IACE,cAAc,EAAErB,UAAU,CAAC8B,YAD7B;IAEE,IAAI,EAAE,gBAFR;IAGE,IAAI,EAAE,EAHR;IAIE,KAAK,EAAEV,MAAM,CAACa;EAJhB,EAdJ,CADF;AAwBD,CA7BD;;AA+BA,MAAMF,MAAM,GAAG7B,gBAAgB,CAAC;EAC9B8B,IAAI,EAAE;IACJE,OAAO,EAAE;EADL;AADwB,CAAD,CAA/B;AAMA,eAAehB,oBAAf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
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 * as React from 'react';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { Pressable, TouchableOpacity } from 'react-native';
|
|
6
|
+
import { isFunction } from '@sendbird/uikit-utils';
|
|
7
|
+
export const DEFAULT_LONG_PRESS_DELAY = 350;
|
|
8
|
+
|
|
9
|
+
const PressBox = props => {
|
|
10
|
+
if (props.activeOpacity && props.activeOpacity < 1) return /*#__PURE__*/React.createElement(PressBoxWithTouchableOpacity, props);
|
|
11
|
+
return /*#__PURE__*/React.createElement(PressBoxWithPressable, props);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const PressBoxWithPressable = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
children,
|
|
17
|
+
...props
|
|
18
|
+
} = _ref;
|
|
19
|
+
return /*#__PURE__*/React.createElement(Pressable, _extends({
|
|
20
|
+
disabled: !props.onPress && !props.onLongPress,
|
|
21
|
+
delayLongPress: DEFAULT_LONG_PRESS_DELAY
|
|
22
|
+
}, props), state => isFunction(children) ? children(state) : children);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const PressBoxWithTouchableOpacity = _ref2 => {
|
|
26
|
+
let {
|
|
27
|
+
children,
|
|
28
|
+
style,
|
|
29
|
+
...props
|
|
30
|
+
} = _ref2;
|
|
31
|
+
const [pressed, setPressed] = useState(false);
|
|
32
|
+
const state = {
|
|
33
|
+
pressed
|
|
34
|
+
};
|
|
35
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
|
|
36
|
+
disabled: !props.onPress && !props.onLongPress,
|
|
37
|
+
delayLongPress: DEFAULT_LONG_PRESS_DELAY,
|
|
38
|
+
style: isFunction(style) ? style(state) : style,
|
|
39
|
+
onPressIn: () => setPressed(true),
|
|
40
|
+
onPressOut: () => setPressed(false)
|
|
41
|
+
}, props), isFunction(children) ? children(state) : children);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default PressBox;
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","TouchableOpacity","isFunction","DEFAULT_LONG_PRESS_DELAY","PressBox","props","activeOpacity","PressBoxWithPressable","children","onPress","onLongPress","state","PressBoxWithTouchableOpacity","style","pressed","setPressed"],"sources":["index.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\nimport type { GestureResponderEvent, StyleProp, ViewStyle } from 'react-native';\nimport { Pressable, TouchableOpacity } from 'react-native';\n\nimport { isFunction } from '@sendbird/uikit-utils';\n\ntype PressBoxStateParams = {\n pressed: boolean;\n};\n\ntype Props = {\n onPress?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n delayLongPress?: number;\n activeOpacity?: number;\n style?: StyleProp<ViewStyle> | ((state: PressBoxStateParams) => StyleProp<ViewStyle>);\n children?: React.ReactNode | ((params: PressBoxStateParams) => React.ReactNode);\n};\n\nexport const DEFAULT_LONG_PRESS_DELAY = 350;\n\nconst PressBox = (props: Props) => {\n if (props.activeOpacity && props.activeOpacity < 1) return <PressBoxWithTouchableOpacity {...props} />;\n return <PressBoxWithPressable {...props} />;\n};\n\nconst PressBoxWithPressable = ({ children, ...props }: Props) => {\n return (\n <Pressable disabled={!props.onPress && !props.onLongPress} delayLongPress={DEFAULT_LONG_PRESS_DELAY} {...props}>\n {(state) => (isFunction(children) ? children(state) : children)}\n </Pressable>\n );\n};\n\nconst PressBoxWithTouchableOpacity = ({ children, style, ...props }: Props) => {\n const [pressed, setPressed] = useState(false);\n const state: PressBoxStateParams = { pressed };\n return (\n <TouchableOpacity\n disabled={!props.onPress && !props.onLongPress}\n delayLongPress={DEFAULT_LONG_PRESS_DELAY}\n style={isFunction(style) ? style(state) : style}\n onPressIn={() => setPressed(true)}\n onPressOut={() => setPressed(false)}\n {...props}\n >\n {isFunction(children) ? children(state) : children}\n </TouchableOpacity>\n );\n};\n\nexport default PressBox;\n"],"mappings":";;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT,QAAyB,OAAzB;AAEA,SAASC,SAAT,EAAoBC,gBAApB,QAA4C,cAA5C;AAEA,SAASC,UAAT,QAA2B,uBAA3B;AAeA,OAAO,MAAMC,wBAAwB,GAAG,GAAjC;;AAEP,MAAMC,QAAQ,GAAIC,KAAD,IAAkB;EACjC,IAAIA,KAAK,CAACC,aAAN,IAAuBD,KAAK,CAACC,aAAN,GAAsB,CAAjD,EAAoD,oBAAO,oBAAC,4BAAD,EAAkCD,KAAlC,CAAP;EACpD,oBAAO,oBAAC,qBAAD,EAA2BA,KAA3B,CAAP;AACD,CAHD;;AAKA,MAAME,qBAAqB,GAAG,QAAmC;EAAA,IAAlC;IAAEC,QAAF;IAAY,GAAGH;EAAf,CAAkC;EAC/D,oBACE,oBAAC,SAAD;IAAW,QAAQ,EAAE,CAACA,KAAK,CAACI,OAAP,IAAkB,CAACJ,KAAK,CAACK,WAA9C;IAA2D,cAAc,EAAEP;EAA3E,GAAyGE,KAAzG,GACIM,KAAD,IAAYT,UAAU,CAACM,QAAD,CAAV,GAAuBA,QAAQ,CAACG,KAAD,CAA/B,GAAyCH,QADxD,CADF;AAKD,CAND;;AAQA,MAAMI,4BAA4B,GAAG,SAA0C;EAAA,IAAzC;IAAEJ,QAAF;IAAYK,KAAZ;IAAmB,GAAGR;EAAtB,CAAyC;EAC7E,MAAM,CAACS,OAAD,EAAUC,UAAV,IAAwBhB,QAAQ,CAAC,KAAD,CAAtC;EACA,MAAMY,KAA0B,GAAG;IAAEG;EAAF,CAAnC;EACA,oBACE,oBAAC,gBAAD;IACE,QAAQ,EAAE,CAACT,KAAK,CAACI,OAAP,IAAkB,CAACJ,KAAK,CAACK,WADrC;IAEE,cAAc,EAAEP,wBAFlB;IAGE,KAAK,EAAED,UAAU,CAACW,KAAD,CAAV,GAAoBA,KAAK,CAACF,KAAD,CAAzB,GAAmCE,KAH5C;IAIE,SAAS,EAAE,MAAME,UAAU,CAAC,IAAD,CAJ7B;IAKE,UAAU,EAAE,MAAMA,UAAU,CAAC,KAAD;EAL9B,GAMMV,KANN,GAQGH,UAAU,CAACM,QAAD,CAAV,GAAuBA,QAAQ,CAACG,KAAD,CAA/B,GAAyCH,QAR5C,CADF;AAYD,CAfD;;AAiBA,eAAeJ,QAAf"}
|
package/lib/module/index.js
CHANGED
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
export { default as IconAssets } from './assets/icon';
|
|
3
3
|
/** Component **/
|
|
4
4
|
|
|
5
|
+
export { default as Box } from './components/Box';
|
|
5
6
|
export { default as Divider } from './components/Divider';
|
|
6
7
|
export { default as Icon } from './components/Icon';
|
|
7
8
|
export { default as Image } from './components/Image';
|
|
9
|
+
export { default as ImageWithPlaceholder } from './components/ImageWithPlaceholder';
|
|
8
10
|
export { default as Modal } from './components/Modal';
|
|
11
|
+
export { default as PressBox } from './components/PressBox';
|
|
9
12
|
export { default as RegexText } from './components/RegexText';
|
|
10
13
|
export { default as Switch } from './components/Switch';
|
|
11
14
|
export { default as Text } from './components/Text';
|
|
@@ -24,7 +27,9 @@ export { DialogProvider, useActionMenu, useAlert, usePrompt, useBottomSheet } fr
|
|
|
24
27
|
export { default as GroupChannelPreview } from './ui/GroupChannelPreview';
|
|
25
28
|
export { default as Header } from './ui/Header';
|
|
26
29
|
export { default as LoadingSpinner } from './ui/LoadingSpinner';
|
|
27
|
-
export { default as MenuBar
|
|
30
|
+
export { default as MenuBar } from './ui/MenuBar';
|
|
31
|
+
export { default as OpenChannelMessage } from './ui/OpenChannelMessage';
|
|
32
|
+
export { default as OpenChannelPreview } from './ui/OpenChannelPreview';
|
|
28
33
|
export { default as OutlinedButton } from './ui/OutlinedButton';
|
|
29
34
|
export { default as Placeholder } from './ui/Placeholder';
|
|
30
35
|
export { default as ProfileCard } from './ui/ProfileCard';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","IconAssets","Divider","Icon","Image","Modal","RegexText","Switch","Text","TextInput","URLParsedText","ActionMenu","Alert","Avatar","Badge","BottomSheet","Button","ChannelFrozenBanner","DialogProvider","useActionMenu","useAlert","usePrompt","useBottomSheet","GroupChannelPreview","Header","LoadingSpinner","MenuBar","
|
|
1
|
+
{"version":3,"names":["default","IconAssets","Box","Divider","Icon","Image","ImageWithPlaceholder","Modal","PressBox","RegexText","Switch","Text","TextInput","URLParsedText","ActionMenu","Alert","Avatar","Badge","BottomSheet","Button","ChannelFrozenBanner","DialogProvider","useActionMenu","useAlert","usePrompt","useBottomSheet","GroupChannelPreview","Header","LoadingSpinner","MenuBar","OpenChannelMessage","OpenChannelPreview","OutlinedButton","Placeholder","ProfileCard","Prompt","Toast","useToast","ToastProvider","createSelectByColorScheme","createScaleFactor","createStyleSheet","createTypography","getDefaultHeaderHeight","HeaderStyleContext","HeaderStyleProvider","useHeaderStyle","createTheme","DarkUIKitTheme","LightUIKitTheme","Palette","UIKitThemeContext","UIKitThemeProvider","useUIKitTheme"],"sources":["index.ts"],"sourcesContent":["/** Assets **/\nexport { default as IconAssets } from './assets/icon';\n\n/** Component **/\nexport { default as Box } from './components/Box';\nexport { default as Divider } from './components/Divider';\nexport { default as Icon } from './components/Icon';\nexport { default as Image } from './components/Image';\nexport { default as ImageWithPlaceholder } from './components/ImageWithPlaceholder';\nexport { default as Modal } from './components/Modal';\nexport { default as PressBox } from './components/PressBox';\nexport { default as RegexText } from './components/RegexText';\nexport { default as Switch } from './components/Switch';\nexport { default as Text } from './components/Text';\nexport { default as TextInput } from './components/TextInput';\nexport { default as URLParsedText } from './components/URLParsedText';\n\n/** UI **/\nexport { default as ActionMenu } from './ui/ActionMenu';\nexport { default as Alert } from './ui/Alert';\nexport { default as Avatar } from './ui/Avatar';\nexport { default as Badge } from './ui/Badge';\nexport { default as BottomSheet } from './ui/BottomSheet';\nexport { default as Button } from './ui/Button';\nexport { default as ChannelFrozenBanner } from './ui/ChannelFrozenBanner';\nexport { DialogProvider, useActionMenu, useAlert, usePrompt, useBottomSheet } from './ui/Dialog';\nexport { default as GroupChannelPreview } from './ui/GroupChannelPreview';\nexport { default as Header } from './ui/Header';\nexport { default as LoadingSpinner } from './ui/LoadingSpinner';\nexport { default as MenuBar } from './ui/MenuBar';\nexport type { MenuBarProps } from './ui/MenuBar';\nexport { default as OpenChannelMessage } from './ui/OpenChannelMessage';\nexport type { OpenChannelMessageProps } from './ui/OpenChannelMessage';\nexport { default as OpenChannelPreview } from './ui/OpenChannelPreview';\nexport { default as OutlinedButton } from './ui/OutlinedButton';\nexport { default as Placeholder } from './ui/Placeholder';\nexport { default as ProfileCard } from './ui/ProfileCard';\nexport { default as Prompt } from './ui/Prompt';\nexport { default as Toast, useToast, ToastProvider } from './ui/Toast';\n\n/** Styles **/\nexport { default as createSelectByColorScheme } from './styles/createSelectByColorScheme';\nexport { default as createScaleFactor } from './styles/createScaleFactor';\nexport { default as createStyleSheet } from './styles/createStyleSheet';\nexport { default as createTypography } from './styles/createTypography';\nexport { default as getDefaultHeaderHeight } from './styles/getDefaultHeaderHeight';\nexport { HeaderStyleContext, HeaderStyleProvider } from './styles/HeaderStyleContext';\nexport { default as useHeaderStyle } from './styles/useHeaderStyle';\n\n/** Theme **/\nexport { default as createTheme } from './theme/createTheme';\nexport { default as DarkUIKitTheme } from './theme/DarkUIKitTheme';\nexport { default as LightUIKitTheme } from './theme/LightUIKitTheme';\nexport { default as Palette } from './theme/Palette';\nexport { default as UIKitThemeContext } from './theme/UIKitThemeContext';\nexport { default as UIKitThemeProvider } from './theme/UIKitThemeProvider';\nexport { default as useUIKitTheme } from './theme/useUIKitTheme';\n\n/** Types **/\nexport type {\n TypoName,\n UIKitTheme,\n UIKitTypography,\n FontAttributes,\n BaseHeaderProps,\n UIKitColorScheme,\n UIKitColors,\n ComponentColorTree,\n UIKitPalette,\n HeaderElement,\n HeaderPartProps,\n ComponentColors,\n Component,\n GetColorTree,\n} from './types';\nexport type { ActionMenuItem } from './ui/ActionMenu';\nexport type { BottomSheetItem } from './ui/BottomSheet';\nexport type { UIKitTypographyOverrides } from './styles/createTypography';\nexport type { HeaderStyleContextType } from './styles/HeaderStyleContext';\n"],"mappings":"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"}
|