stream-chat-react-native-core 4.12.0-beta.1 → 4.12.0-beta.4

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.
Files changed (89) hide show
  1. package/lib/commonjs/components/{MessageInput/AudioAttachmentUploadPreview.js → Attachment/AudioAttachment.js} +26 -23
  2. package/lib/commonjs/components/Attachment/AudioAttachment.js.map +1 -0
  3. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +113 -10
  4. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/Gallery.js +22 -18
  6. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/VideoThumbnail.js +12 -6
  8. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  9. package/lib/commonjs/components/Channel/Channel.js +5 -5
  10. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  11. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  12. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  13. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +11 -10
  14. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  15. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +1 -1
  16. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  17. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +1 -1
  18. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
  19. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +10 -31
  20. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  21. package/lib/commonjs/components/index.js +13 -13
  22. package/lib/commonjs/components/index.js.map +1 -1
  23. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -2
  24. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  25. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  26. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  27. package/lib/commonjs/contexts/themeContext/utils/theme.js +2 -2
  28. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  29. package/lib/commonjs/version.json +1 -1
  30. package/lib/module/components/{MessageInput/AudioAttachmentUploadPreview.js → Attachment/AudioAttachment.js} +26 -23
  31. package/lib/module/components/Attachment/AudioAttachment.js.map +1 -0
  32. package/lib/module/components/Attachment/FileAttachmentGroup.js +113 -10
  33. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  34. package/lib/module/components/Attachment/Gallery.js +22 -18
  35. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  36. package/lib/module/components/Attachment/VideoThumbnail.js +12 -6
  37. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  38. package/lib/module/components/Channel/Channel.js +5 -5
  39. package/lib/module/components/Channel/Channel.js.map +1 -1
  40. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  41. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  42. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +11 -10
  43. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  44. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +1 -1
  45. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  46. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +1 -1
  47. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
  48. package/lib/module/components/MessageInput/FileUploadPreview.js +10 -31
  49. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  50. package/lib/module/components/index.js +13 -13
  51. package/lib/module/components/index.js.map +1 -1
  52. package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -2
  53. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  54. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +2 -2
  55. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  56. package/lib/module/contexts/themeContext/utils/theme.js +2 -2
  57. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  58. package/lib/module/version.json +1 -1
  59. package/lib/typescript/components/Attachment/AudioAttachment.d.ts +26 -0
  60. package/lib/typescript/components/Attachment/FileAttachmentGroup.d.ts +2 -1
  61. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  62. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  63. package/lib/typescript/components/index.d.ts +1 -1
  64. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +4 -4
  65. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  66. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +2 -2
  67. package/package.json +1 -1
  68. package/src/components/{MessageInput/AudioAttachmentUploadPreview.tsx → Attachment/AudioAttachment.tsx} +21 -26
  69. package/src/components/Attachment/FileAttachmentGroup.tsx +96 -7
  70. package/src/components/Attachment/Gallery.tsx +7 -1
  71. package/src/components/Attachment/VideoThumbnail.tsx +3 -2
  72. package/src/components/Channel/Channel.tsx +3 -3
  73. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -2
  74. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +12 -7
  75. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +4 -2
  76. package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +4 -0
  77. package/src/components/Message/MessageSimple/utils/parseLinks.ts +1 -1
  78. package/src/components/MessageInput/FileUploadPreview.tsx +8 -17
  79. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +4 -7
  80. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +4 -7
  81. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +5 -5
  82. package/src/components/index.ts +1 -1
  83. package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -5
  84. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +2 -2
  85. package/src/contexts/themeContext/utils/theme.ts +4 -4
  86. package/src/version.json +1 -1
  87. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js.map +0 -1
  88. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js.map +0 -1
  89. package/lib/typescript/components/MessageInput/AudioAttachmentUploadPreview.d.ts +0 -26
@@ -8,7 +8,7 @@ var _react = require("react");
8
8
  var useCreateInputMessageInputContext = function useCreateInputMessageInputContext(_ref) {
9
9
  var additionalTextInputProps = _ref.additionalTextInputProps,
10
10
  AttachButton = _ref.AttachButton,
11
- AudioAttachmentUploadPreview = _ref.AudioAttachmentUploadPreview,
11
+ AudioAttachment = _ref.AudioAttachment,
12
12
  autoCompleteSuggestionsLimit = _ref.autoCompleteSuggestionsLimit,
13
13
  autoCompleteTriggerSettings = _ref.autoCompleteTriggerSettings,
14
14
  channelId = _ref.channelId,
@@ -54,7 +54,7 @@ var useCreateInputMessageInputContext = function useCreateInputMessageInputConte
54
54
  return {
55
55
  additionalTextInputProps: additionalTextInputProps,
56
56
  AttachButton: AttachButton,
57
- AudioAttachmentUploadPreview: AudioAttachmentUploadPreview,
57
+ AudioAttachment: AudioAttachment,
58
58
  autoCompleteSuggestionsLimit: autoCompleteSuggestionsLimit,
59
59
  autoCompleteTriggerSettings: autoCompleteTriggerSettings,
60
60
  clearEditingState: clearEditingState,
@@ -1 +1 @@
1
- {"version":3,"sources":["useCreateInputMessageInputContext.ts"],"names":["useCreateInputMessageInputContext","additionalTextInputProps","AttachButton","AudioAttachmentUploadPreview","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","channelId","clearEditingState","clearQuotedMessageState","CommandsButton","compressImageQuality","CooldownTimer","doDocUploadRequest","doImageUploadRequest","editing","editMessage","FileUploadPreview","hasCommands","hasFilePicker","hasImagePicker","ImageUploadPreview","initialValue","Input","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","maxMessageLength","maxNumberOfFiles","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","MoreOptionsButton","numberOfLines","onChangeText","quotedMessage","SendButton","sendImageAsync","sendMessage","SendMessageDisallowedIndicator","setInputRef","setQuotedMessageState","ShowThreadMessageInChannelButton","UploadProgressIndicator","editingExists","quotedMessageId","id","inputMessageInputContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { InputMessageInputContextValue } from '../../../contexts/messageInputContext/MessageInputContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateInputMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTextInputProps,\n AttachButton,\n AudioAttachmentUploadPreview,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n}: InputMessageInputContextValue<StreamChatGenerics> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const editingExists = !!editing;\n const quotedMessageId = quotedMessage\n ? typeof quotedMessage === 'boolean'\n ? ''\n : quotedMessage.id\n : '';\n\n const inputMessageInputContext: InputMessageInputContextValue<StreamChatGenerics> = useMemo(\n () => ({\n additionalTextInputProps,\n AttachButton,\n AudioAttachmentUploadPreview,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n }),\n [\n compressImageQuality,\n channelId,\n editingExists,\n initialValue,\n maxMessageLength,\n quotedMessageId,\n ],\n );\n\n return inputMessageInputContext;\n};\n"]}
1
+ {"version":3,"sources":["useCreateInputMessageInputContext.ts"],"names":["useCreateInputMessageInputContext","additionalTextInputProps","AttachButton","AudioAttachment","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","channelId","clearEditingState","clearQuotedMessageState","CommandsButton","compressImageQuality","CooldownTimer","doDocUploadRequest","doImageUploadRequest","editing","editMessage","FileUploadPreview","hasCommands","hasFilePicker","hasImagePicker","ImageUploadPreview","initialValue","Input","InputButtons","InputEditingStateHeader","InputGiphySearch","InputReplyStateHeader","maxMessageLength","maxNumberOfFiles","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","MoreOptionsButton","numberOfLines","onChangeText","quotedMessage","SendButton","sendImageAsync","sendMessage","SendMessageDisallowedIndicator","setInputRef","setQuotedMessageState","ShowThreadMessageInChannelButton","UploadProgressIndicator","editingExists","quotedMessageId","id","inputMessageInputContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { InputMessageInputContextValue } from '../../../contexts/messageInputContext/MessageInputContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useCreateInputMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTextInputProps,\n AttachButton,\n AudioAttachment,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n}: InputMessageInputContextValue<StreamChatGenerics> & {\n /**\n * To ensure we allow re-render, when channel is changed\n */\n channelId?: string;\n}) => {\n const editingExists = !!editing;\n const quotedMessageId = quotedMessage\n ? typeof quotedMessage === 'boolean'\n ? ''\n : quotedMessage.id\n : '';\n\n const inputMessageInputContext: InputMessageInputContextValue<StreamChatGenerics> = useMemo(\n () => ({\n additionalTextInputProps,\n AttachButton,\n AudioAttachment,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n }),\n [\n compressImageQuality,\n channelId,\n editingExists,\n initialValue,\n maxMessageLength,\n quotedMessageId,\n ],\n );\n\n return inputMessageInputContext;\n};\n"]}
@@ -56,8 +56,8 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
56
56
  var _useTheme = (0, _ThemeContext.useTheme)(),
57
57
  _useTheme$theme = _useTheme.theme,
58
58
  _useTheme$theme$color = _useTheme$theme.colors,
59
- black = _useTheme$theme$color.black,
60
- white_snow = _useTheme$theme$color.white_snow,
59
+ static_black = _useTheme$theme$color.static_black,
60
+ static_white = _useTheme$theme$color.static_white,
61
61
  _useTheme$theme$image = _useTheme$theme.imageGallery.videoControl,
62
62
  durationTextStyle = _useTheme$theme$image.durationTextStyle,
63
63
  roundedView = _useTheme$theme$image.roundedView,
@@ -84,7 +84,7 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
84
84
  }
85
85
  }, _react["default"].createElement(_reactNative.View, {
86
86
  style: [styles.roundedView, roundedView, {
87
- backgroundColor: white_snow
87
+ backgroundColor: static_white
88
88
  }],
89
89
  __self: _this,
90
90
  __source: {
@@ -95,7 +95,7 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
95
95
  }, paused ? _react["default"].createElement(_icons.Play, {
96
96
  accessibilityLabel: "Play Icon",
97
97
  height: 24,
98
- pathFill: black,
98
+ pathFill: static_black,
99
99
  width: 24,
100
100
  __self: _this,
101
101
  __source: {
@@ -106,6 +106,7 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
106
106
  }) : _react["default"].createElement(_icons.Pause, {
107
107
  accessibilityLabel: "Pause Icon",
108
108
  height: 24,
109
+ pathFill: static_black,
109
110
  width: 24,
110
111
  __self: _this,
111
112
  __source: {
@@ -116,17 +117,17 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
116
117
  }))), _react["default"].createElement(_reactNative.Text, {
117
118
  accessibilityLabel: "Progress Duration",
118
119
  style: [styles.durationTextStyle, durationTextStyle, {
119
- color: white_snow
120
+ color: static_white
120
121
  }],
121
122
  __self: _this,
122
123
  __source: {
123
124
  fileName: _jsxFileName,
124
- lineNumber: 79,
125
+ lineNumber: 84,
125
126
  columnNumber: 9
126
127
  }
127
128
  }, progressDuration ? progressDuration : '00:00'), _react["default"].createElement(_ProgressControl.ProgressControl, {
128
129
  duration: duration,
129
- filledColor: white_snow,
130
+ filledColor: static_white,
130
131
  onPlayPause: onPlayPause,
131
132
  onProgressDrag: onProgressDrag,
132
133
  progress: progress,
@@ -135,18 +136,18 @@ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
135
136
  __self: _this,
136
137
  __source: {
137
138
  fileName: _jsxFileName,
138
- lineNumber: 85,
139
+ lineNumber: 90,
139
140
  columnNumber: 9
140
141
  }
141
142
  }), _react["default"].createElement(_reactNative.Text, {
142
143
  accessibilityLabel: "Video Duration",
143
144
  style: [styles.durationTextStyle, durationTextStyle, {
144
- color: white_snow
145
+ color: static_white
145
146
  }],
146
147
  __self: _this,
147
148
  __source: {
148
149
  fileName: _jsxFileName,
149
- lineNumber: 94,
150
+ lineNumber: 99,
150
151
  columnNumber: 9
151
152
  }
152
153
  }, videoDuration ? videoDuration : '00:00'));
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageGalleryVideoControl.tsx"],"names":["styles","StyleSheet","create","durationTextStyle","fontWeight","roundedView","alignItems","borderRadius","display","elevation","height","justifyContent","width","videoContainer","backgroundColor","flexDirection","padding","ImageGalleryVideoControl","React","memo","props","duration","onPlayPause","onProgressDrag","paused","progress","videoDuration","dayjs","format","progressValueInSeconds","progressDuration","theme","colors","black","white_snow","imageGallery","videoControl","color","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport dayjs from 'dayjs';\n\nimport type { ImageGalleryFooterVideoControlProps } from './ImageGalleryFooter';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Pause, Play } from '../../../icons';\nimport { ProgressControl } from '../../ProgressControl/ProgressControl';\n\nconst styles = StyleSheet.create({\n durationTextStyle: {\n fontWeight: 'bold',\n },\n roundedView: {\n alignItems: 'center',\n borderRadius: 50,\n display: 'flex',\n elevation: 2,\n height: 36,\n justifyContent: 'center',\n width: 36,\n },\n videoContainer: {\n alignItems: 'center',\n backgroundColor: 'rgba(52, 52, 52, 0.1)',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n});\n\nexport const ImageGalleryVideoControl: React.FC<ImageGalleryFooterVideoControlProps> = React.memo(\n (props) => {\n const { duration, onPlayPause, onProgressDrag, paused, progress } = props;\n\n const videoDuration = duration\n ? duration / 3600 >= 1\n ? dayjs.duration(duration, 'second').format('HH:mm:ss')\n : dayjs.duration(duration, 'second').format('mm:ss')\n : null;\n\n const progressValueInSeconds = progress * duration;\n\n const progressDuration = progressValueInSeconds\n ? progressValueInSeconds / 3600 >= 1\n ? dayjs.duration(progressValueInSeconds, 'second').format('HH:mm:ss')\n : dayjs.duration(progressValueInSeconds, 'second').format('mm:ss')\n : null;\n\n const {\n theme: {\n colors: { black, white_snow },\n imageGallery: {\n videoControl: { durationTextStyle, roundedView, videoContainer },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.videoContainer, videoContainer]}>\n <TouchableOpacity\n accessibilityLabel='Play Pause Button'\n onPress={() => {\n onPlayPause();\n }}\n >\n <View style={[styles.roundedView, roundedView, { backgroundColor: white_snow }]}>\n {paused ? (\n <Play accessibilityLabel='Play Icon' height={24} pathFill={black} width={24} />\n ) : (\n <Pause accessibilityLabel='Pause Icon' height={24} width={24} />\n )}\n </View>\n </TouchableOpacity>\n <Text\n accessibilityLabel='Progress Duration'\n style={[styles.durationTextStyle, durationTextStyle, { color: white_snow }]}\n >\n {progressDuration ? progressDuration : '00:00'}\n </Text>\n <ProgressControl\n duration={duration}\n filledColor={white_snow}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n progress={progress}\n testID={'progress-control'}\n width={180}\n />\n <Text\n accessibilityLabel='Video Duration'\n style={[styles.durationTextStyle, durationTextStyle, { color: white_snow }]}\n >\n {videoDuration ? videoDuration : '00:00'}\n </Text>\n </View>\n );\n },\n (prevProps, nextProps) => {\n if (\n prevProps.duration === nextProps.duration &&\n prevProps.paused === nextProps.paused &&\n prevProps.progress === nextProps.progress\n ) {\n return true;\n } else {\n return false;\n }\n },\n);\n\nImageGalleryVideoControl.displayName = 'ImageGalleryVideoControl{imageGallery{videoControl}}';\n"]}
1
+ {"version":3,"sources":["ImageGalleryVideoControl.tsx"],"names":["styles","StyleSheet","create","durationTextStyle","fontWeight","roundedView","alignItems","borderRadius","display","elevation","height","justifyContent","width","videoContainer","backgroundColor","flexDirection","padding","ImageGalleryVideoControl","React","memo","props","duration","onPlayPause","onProgressDrag","paused","progress","videoDuration","dayjs","format","progressValueInSeconds","progressDuration","theme","colors","static_black","static_white","imageGallery","videoControl","color","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport dayjs from 'dayjs';\n\nimport type { ImageGalleryFooterVideoControlProps } from './ImageGalleryFooter';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Pause, Play } from '../../../icons';\nimport { ProgressControl } from '../../ProgressControl/ProgressControl';\n\nconst styles = StyleSheet.create({\n durationTextStyle: {\n fontWeight: 'bold',\n },\n roundedView: {\n alignItems: 'center',\n borderRadius: 50,\n display: 'flex',\n elevation: 2,\n height: 36,\n justifyContent: 'center',\n width: 36,\n },\n videoContainer: {\n alignItems: 'center',\n backgroundColor: 'rgba(52, 52, 52, 0.1)',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n});\n\nexport const ImageGalleryVideoControl: React.FC<ImageGalleryFooterVideoControlProps> = React.memo(\n (props) => {\n const { duration, onPlayPause, onProgressDrag, paused, progress } = props;\n\n const videoDuration = duration\n ? duration / 3600 >= 1\n ? dayjs.duration(duration, 'second').format('HH:mm:ss')\n : dayjs.duration(duration, 'second').format('mm:ss')\n : null;\n\n const progressValueInSeconds = progress * duration;\n\n const progressDuration = progressValueInSeconds\n ? progressValueInSeconds / 3600 >= 1\n ? dayjs.duration(progressValueInSeconds, 'second').format('HH:mm:ss')\n : dayjs.duration(progressValueInSeconds, 'second').format('mm:ss')\n : null;\n\n const {\n theme: {\n colors: { static_black, static_white },\n imageGallery: {\n videoControl: { durationTextStyle, roundedView, videoContainer },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.videoContainer, videoContainer]}>\n <TouchableOpacity\n accessibilityLabel='Play Pause Button'\n onPress={() => {\n onPlayPause();\n }}\n >\n <View style={[styles.roundedView, roundedView, { backgroundColor: static_white }]}>\n {paused ? (\n <Play accessibilityLabel='Play Icon' height={24} pathFill={static_black} width={24} />\n ) : (\n <Pause\n accessibilityLabel='Pause Icon'\n height={24}\n pathFill={static_black}\n width={24}\n />\n )}\n </View>\n </TouchableOpacity>\n <Text\n accessibilityLabel='Progress Duration'\n style={[styles.durationTextStyle, durationTextStyle, { color: static_white }]}\n >\n {progressDuration ? progressDuration : '00:00'}\n </Text>\n <ProgressControl\n duration={duration}\n filledColor={static_white}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n progress={progress}\n testID={'progress-control'}\n width={180}\n />\n <Text\n accessibilityLabel='Video Duration'\n style={[styles.durationTextStyle, durationTextStyle, { color: static_white }]}\n >\n {videoDuration ? videoDuration : '00:00'}\n </Text>\n </View>\n );\n },\n (prevProps, nextProps) => {\n if (\n prevProps.duration === nextProps.duration &&\n prevProps.paused === nextProps.paused &&\n prevProps.progress === nextProps.progress\n ) {\n return true;\n } else {\n return false;\n }\n },\n);\n\nImageGalleryVideoControl.displayName = 'ImageGalleryVideoControl{imageGallery{videoControl}}';\n"]}
@@ -11,7 +11,7 @@ var emailUserName = '[\\w+\\.~$_-]+';
11
11
  var schema = "(\\w{2,15}:\\/\\/)";
12
12
  var domain = "((?:\\w+\\.[a-zA-Z]+)+(?:[^:\\/\\s]+)|(?:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}))";
13
13
  var port = "(:[0-9]{1,5})";
14
- var path = "((?:\\/)?[^?#\\s]+)";
14
+ var path = "((?:\\/)?[^?\\s]+)";
15
15
  var queryString = "(\\?[^#\\s]+)";
16
16
  var fragment = "(#[\\w_-]+)";
17
17
  var emailPattern = "(mailto:)?((?:" + emailUserName + ")@(?:" + domain + "))";
@@ -1 +1 @@
1
- {"version":3,"sources":["parseLinks.ts"],"names":["emailUserName","schema","domain","port","path","queryString","fragment","emailPattern","schemePrefixedLinkPattern","fqdnLinkPattern","removeMarkdownLinksFromText","input","replace","parseLinksFromText","matches","inputWithoutMarkdownLinks","results","emailRegExp","RegExp","exec","raw","scheme","displayValue","push","encoded","encodeURI","linkRegex","fqdnScheme","fqdnDomainName","fqdnPort","fqdnPath","fqdnQueryStraing","fqdnFragment","schemePrefixedScheme","schemePrefixedPath","join"],"mappings":";;;;;;;;;AAQA,IAAMA,aAAa,GAAG,gBAAtB;AACA,IAAMC,MAAM,uBAAZ;AAEA,IAAMC,MAAM,yFAAZ;AACA,IAAMC,IAAI,kBAAV;AACA,IAAMC,IAAI,wBAAV;AACA,IAAMC,WAAW,kBAAjB;AACA,IAAMC,QAAQ,gBAAd;AAKA,IAAMC,YAAY,sBAAoBP,aAApB,aAAyCE,MAAzC,OAAlB;AAKA,IAAMM,yBAAyB,GAAMP,MAAN,WAA/B;AAMA,IAAMQ,eAAe,GAAMR,MAAN,SAAgBC,MAAhB,GAAyBC,IAAzB,SAAiCC,IAAjC,SAAyCC,WAAzC,SAAwDC,QAAxD,MAArB;;AAYA,IAAMI,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACC,KAAD;AAAA,SAAmBA,KAAK,CAACC,OAAN,CAAc,oBAAd,EAAoC,EAApC,CAAnB;AAAA,CAApC;;AAEO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACF,KAAD,EAA2B;AAC3D,MAAIG,OAAJ;AAEA,MAAMC,yBAAyB,GAAGL,2BAA2B,CAACC,KAAD,CAA7D;AAEA,MAAMK,OAAe,GAAG,EAAxB;AAEA,MAAMC,WAAW,GAAG,IAAIC,MAAJ,CAAWX,YAAX,EAAyB,IAAzB,CAApB;;AACA,SAAO,CAACO,OAAO,GAAGG,WAAW,CAACE,IAAZ,CAAiBR,KAAjB,CAAX,MAAwC,IAA/C,EAAqD;AACnD,mBAAgDG,OAAhD;AAAA;AAAA,QAAOM,GAAP;AAAA;AAAA,QAAYC,MAAZ,2BAAqB,SAArB;AAAA,QAAgCC,YAAhC;;AACAN,IAAAA,OAAO,CAACO,IAAR,CAAa;AAAEC,MAAAA,OAAO,EAAEC,SAAS,CAACH,YAAD,CAApB;AAAoCF,MAAAA,GAAG,EAAHA,GAApC;AAAyCC,MAAAA,MAAM,EAANA;AAAzC,KAAb;AACD;;AAMD,MAAMK,SAAS,GAAG,IAAIR,MAAJ,CAAcT,eAAd,SAAiCD,yBAAjC,EAA8D,IAA9D,CAAlB;;AACA,SAAO,CAACM,OAAO,GAAGY,SAAS,CAACP,IAAV,CAAeJ,yBAAf,CAAX,MAA0D,IAAjE,EAAuE;AACrE,oBAUID,OAVJ;AAAA;AAAA,QACEM,IADF;AAAA;AAAA,QAEEO,UAFF,2BAEe,EAFf;AAAA;AAAA,QAGEC,cAHF,4BAGmB,EAHnB;AAAA;AAAA,QAIEC,QAJF,4BAIa,EAJb;AAAA;AAAA,QAKEC,QALF,4BAKa,EALb;AAAA;AAAA,QAMEC,gBANF,4BAMqB,EANrB;AAAA;AAAA,QAOEC,YAPF,4BAOiB,EAPjB;AAAA;AAAA,QAQEC,oBARF,4BAQyB,EARzB;AAAA;AAAA,QASEC,kBATF,4BASuB,EATvB;;AAYA,QAAID,oBAAoB,KAAK,EAA7B,EAAiC;AAC/BjB,MAAAA,OAAO,CAACO,IAAR,CAAa;AACXC,QAAAA,OAAO,EAAEC,SAAS,CAACS,kBAAD,CADP;AAEXd,QAAAA,GAAG,EAAHA,IAFW;AAGXC,QAAAA,MAAM,EAAEY;AAHG,OAAb;AAKA;AACD;;AAEDjB,IAAAA,OAAO,CAACO,IAAR,CAAa;AACXC,MAAAA,OAAO,EAAEC,SAAS,CAChB,CAACG,cAAD,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,gBAArC,EAAuDC,YAAvD,EAAqEG,IAArE,CAA0E,EAA1E,CADgB,CADP;AAIXf,MAAAA,GAAG,EAAHA,IAJW;AAKXC,MAAAA,MAAM,EAAEM;AALG,KAAb;AAOD;;AAED,SAAOX,OAAP;AACD,CAlDM","sourcesContent":["/**\n * 📣 Note: Do not use named capture groups, as\n * it is not yet available in Hermes.\n *\n * These helpers indend to make it easier to skim read\n * the patterns below, but note that some are optional,\n * specified in the patterns these are added to.\n * */\nconst emailUserName = '[\\\\w+\\\\.~$_-]+';\nconst schema = `(\\\\w{2,15}:\\\\/\\\\/)`;\n// something.tld OR 123.123.123.123\nconst domain = `((?:\\\\w+\\\\.[a-zA-Z]+)+(?:[^:\\\\/\\\\s]+)|(?:\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}))`;\nconst port = `(:[0-9]{1,5})`;\nconst path = `((?:\\\\/)?[^?#\\\\s]+)`;\nconst queryString = `(\\\\?[^#\\\\s]+)`;\nconst fragment = `(#[\\\\w_-]+)`;\n\n/**\n * Match any email address, with and without `mailto:`\n */\nconst emailPattern = `(mailto:)?((?:${emailUserName})@(?:${domain}))`;\n\n/**\n * Match any string starting with something that seems like it's a schema.\n * */\nconst schemePrefixedLinkPattern = `${schema}(\\\\S+)`;\n\n/**\n * Match as much as possible of a fqdn, at least with a domain name formed as\n * something.tld\n */\nconst fqdnLinkPattern = `${schema}?${domain}${port}?${path}?${queryString}?${fragment}?`;\n\ninterface Link {\n encoded: string;\n raw: string;\n scheme: string;\n}\n\n/**\n * This is done separately because of the version of javascript run\n * for expo\n * */\nconst removeMarkdownLinksFromText = (input: string) => input.replace(/\\[[\\w\\s]+\\]\\(.*\\)/g, '');\n\nexport const parseLinksFromText = (input: string): Link[] => {\n let matches;\n\n const inputWithoutMarkdownLinks = removeMarkdownLinksFromText(input);\n\n const results: Link[] = [];\n\n const emailRegExp = new RegExp(emailPattern, 'gi');\n while ((matches = emailRegExp.exec(input)) !== null) {\n const [raw, scheme = 'mailto:', displayValue] = matches;\n results.push({ encoded: encodeURI(displayValue), raw, scheme });\n }\n\n /**\n * The two link patterns are checked with an \"or\" (`|`)\n * to avoid overlapping matches being duplicated in the output.\n * */\n const linkRegex = new RegExp(`${fqdnLinkPattern}|${schemePrefixedLinkPattern}`, 'gi');\n while ((matches = linkRegex.exec(inputWithoutMarkdownLinks)) !== null) {\n const [\n raw,\n fqdnScheme = '',\n fqdnDomainName = '',\n fqdnPort = '',\n fqdnPath = '',\n fqdnQueryStraing = '',\n fqdnFragment = '',\n schemePrefixedScheme = '',\n schemePrefixedPath = '',\n ] = matches;\n\n if (schemePrefixedScheme !== '') {\n results.push({\n encoded: encodeURI(schemePrefixedPath),\n raw,\n scheme: schemePrefixedScheme,\n });\n continue;\n }\n\n results.push({\n encoded: encodeURI(\n [fqdnDomainName, fqdnPort, fqdnPath, fqdnQueryStraing, fqdnFragment].join(''),\n ),\n raw,\n scheme: fqdnScheme,\n });\n }\n\n return results;\n};\n"]}
1
+ {"version":3,"sources":["parseLinks.ts"],"names":["emailUserName","schema","domain","port","path","queryString","fragment","emailPattern","schemePrefixedLinkPattern","fqdnLinkPattern","removeMarkdownLinksFromText","input","replace","parseLinksFromText","matches","inputWithoutMarkdownLinks","results","emailRegExp","RegExp","exec","raw","scheme","displayValue","push","encoded","encodeURI","linkRegex","fqdnScheme","fqdnDomainName","fqdnPort","fqdnPath","fqdnQueryStraing","fqdnFragment","schemePrefixedScheme","schemePrefixedPath","join"],"mappings":";;;;;;;;;AAQA,IAAMA,aAAa,GAAG,gBAAtB;AACA,IAAMC,MAAM,uBAAZ;AAEA,IAAMC,MAAM,yFAAZ;AACA,IAAMC,IAAI,kBAAV;AACA,IAAMC,IAAI,uBAAV;AACA,IAAMC,WAAW,kBAAjB;AACA,IAAMC,QAAQ,gBAAd;AAKA,IAAMC,YAAY,sBAAoBP,aAApB,aAAyCE,MAAzC,OAAlB;AAKA,IAAMM,yBAAyB,GAAMP,MAAN,WAA/B;AAMA,IAAMQ,eAAe,GAAMR,MAAN,SAAgBC,MAAhB,GAAyBC,IAAzB,SAAiCC,IAAjC,SAAyCC,WAAzC,SAAwDC,QAAxD,MAArB;;AAYA,IAAMI,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACC,KAAD;AAAA,SAAmBA,KAAK,CAACC,OAAN,CAAc,oBAAd,EAAoC,EAApC,CAAnB;AAAA,CAApC;;AAEO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACF,KAAD,EAA2B;AAC3D,MAAIG,OAAJ;AAEA,MAAMC,yBAAyB,GAAGL,2BAA2B,CAACC,KAAD,CAA7D;AAEA,MAAMK,OAAe,GAAG,EAAxB;AAEA,MAAMC,WAAW,GAAG,IAAIC,MAAJ,CAAWX,YAAX,EAAyB,IAAzB,CAApB;;AACA,SAAO,CAACO,OAAO,GAAGG,WAAW,CAACE,IAAZ,CAAiBR,KAAjB,CAAX,MAAwC,IAA/C,EAAqD;AACnD,mBAAgDG,OAAhD;AAAA;AAAA,QAAOM,GAAP;AAAA;AAAA,QAAYC,MAAZ,2BAAqB,SAArB;AAAA,QAAgCC,YAAhC;;AACAN,IAAAA,OAAO,CAACO,IAAR,CAAa;AAAEC,MAAAA,OAAO,EAAEC,SAAS,CAACH,YAAD,CAApB;AAAoCF,MAAAA,GAAG,EAAHA,GAApC;AAAyCC,MAAAA,MAAM,EAANA;AAAzC,KAAb;AACD;;AAMD,MAAMK,SAAS,GAAG,IAAIR,MAAJ,CAAcT,eAAd,SAAiCD,yBAAjC,EAA8D,IAA9D,CAAlB;;AACA,SAAO,CAACM,OAAO,GAAGY,SAAS,CAACP,IAAV,CAAeJ,yBAAf,CAAX,MAA0D,IAAjE,EAAuE;AACrE,oBAUID,OAVJ;AAAA;AAAA,QACEM,IADF;AAAA;AAAA,QAEEO,UAFF,2BAEe,EAFf;AAAA;AAAA,QAGEC,cAHF,4BAGmB,EAHnB;AAAA;AAAA,QAIEC,QAJF,4BAIa,EAJb;AAAA;AAAA,QAKEC,QALF,4BAKa,EALb;AAAA;AAAA,QAMEC,gBANF,4BAMqB,EANrB;AAAA;AAAA,QAOEC,YAPF,4BAOiB,EAPjB;AAAA;AAAA,QAQEC,oBARF,4BAQyB,EARzB;AAAA;AAAA,QASEC,kBATF,4BASuB,EATvB;;AAYA,QAAID,oBAAoB,KAAK,EAA7B,EAAiC;AAC/BjB,MAAAA,OAAO,CAACO,IAAR,CAAa;AACXC,QAAAA,OAAO,EAAEC,SAAS,CAACS,kBAAD,CADP;AAEXd,QAAAA,GAAG,EAAHA,IAFW;AAGXC,QAAAA,MAAM,EAAEY;AAHG,OAAb;AAKA;AACD;;AAEDjB,IAAAA,OAAO,CAACO,IAAR,CAAa;AACXC,MAAAA,OAAO,EAAEC,SAAS,CAChB,CAACG,cAAD,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,gBAArC,EAAuDC,YAAvD,EAAqEG,IAArE,CAA0E,EAA1E,CADgB,CADP;AAIXf,MAAAA,GAAG,EAAHA,IAJW;AAKXC,MAAAA,MAAM,EAAEM;AALG,KAAb;AAOD;;AAED,SAAOX,OAAP;AACD,CAlDM","sourcesContent":["/**\n * 📣 Note: Do not use named capture groups, as\n * it is not yet available in Hermes.\n *\n * These helpers indend to make it easier to skim read\n * the patterns below, but note that some are optional,\n * specified in the patterns these are added to.\n * */\nconst emailUserName = '[\\\\w+\\\\.~$_-]+';\nconst schema = `(\\\\w{2,15}:\\\\/\\\\/)`;\n// something.tld OR 123.123.123.123\nconst domain = `((?:\\\\w+\\\\.[a-zA-Z]+)+(?:[^:\\\\/\\\\s]+)|(?:\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}))`;\nconst port = `(:[0-9]{1,5})`;\nconst path = `((?:\\\\/)?[^?\\\\s]+)`;\nconst queryString = `(\\\\?[^#\\\\s]+)`;\nconst fragment = `(#[\\\\w_-]+)`;\n\n/**\n * Match any email address, with and without `mailto:`\n */\nconst emailPattern = `(mailto:)?((?:${emailUserName})@(?:${domain}))`;\n\n/**\n * Match any string starting with something that seems like it's a schema.\n * */\nconst schemePrefixedLinkPattern = `${schema}(\\\\S+)`;\n\n/**\n * Match as much as possible of a fqdn, at least with a domain name formed as\n * something.tld\n */\nconst fqdnLinkPattern = `${schema}?${domain}${port}?${path}?${queryString}?${fragment}?`;\n\ninterface Link {\n encoded: string;\n raw: string;\n scheme: string;\n}\n\n/**\n * This is done separately because of the version of javascript run\n * for expo\n * */\nconst removeMarkdownLinksFromText = (input: string) => input.replace(/\\[[\\w\\s]+\\]\\(.*\\)/g, '');\n\nexport const parseLinksFromText = (input: string): Link[] => {\n let matches;\n\n const inputWithoutMarkdownLinks = removeMarkdownLinksFromText(input);\n\n const results: Link[] = [];\n\n const emailRegExp = new RegExp(emailPattern, 'gi');\n while ((matches = emailRegExp.exec(input)) !== null) {\n const [raw, scheme = 'mailto:', displayValue] = matches;\n results.push({ encoded: encodeURI(displayValue), raw, scheme });\n }\n\n /**\n * The two link patterns are checked with an \"or\" (`|`)\n * to avoid overlapping matches being duplicated in the output.\n * */\n const linkRegex = new RegExp(`${fqdnLinkPattern}|${schemePrefixedLinkPattern}`, 'gi');\n while ((matches = linkRegex.exec(inputWithoutMarkdownLinks)) !== null) {\n const [\n raw,\n fqdnScheme = '',\n fqdnDomainName = '',\n fqdnPort = '',\n fqdnPath = '',\n fqdnQueryStraing = '',\n fqdnFragment = '',\n schemePrefixedScheme = '',\n schemePrefixedPath = '',\n ] = matches;\n\n if (schemePrefixedScheme !== '') {\n results.push({\n encoded: encodeURI(schemePrefixedPath),\n raw,\n scheme: schemePrefixedScheme,\n });\n continue;\n }\n\n results.push({\n encoded: encodeURI(\n [fqdnDomainName, fqdnPort, fqdnPath, fqdnQueryStraing, fqdnFragment].join(''),\n ),\n raw,\n scheme: fqdnScheme,\n });\n }\n\n return results;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  var _parseLinks = require("./parseLinks");
2
2
 
3
3
  describe('parseLinksFromText', function () {
4
- it.each([['www.getstream.io', 'www.getstream.io'], ['getstream.io', 'getstream.io'], ['scrn://team-chat', 'team-chat'], ['https://localhost', 'localhost'], ['https://localhost/with/path?and=query&multiple=params', 'localhost/with/path?and=query&multiple=params'], ['https://localhost/with/path?and=query#fragment', 'localhost/with/path?and=query#fragment'], ['reactnative.stream', 'reactnative.stream'], ['https://zh.wikipedia.org/wiki/挪威牛油危機', 'zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F'], ['https://getstream.io/chat/docs/react-native/?language=javascript', 'getstream.io/chat/docs/react-native/?language=javascript'], ['127.0.0.1/local_(development)_server', '127.0.0.1/local_(development)_server'], ['https://a.co:8999/ab.php?p=12', 'a.co:8999/ab.php?p=12']])('Returns the encoded value of %p as %p', function (link, expected) {
4
+ it.each([['www.getstream.io', 'www.getstream.io'], ['getstream.io', 'getstream.io'], ['scrn://team-chat', 'team-chat'], ['https://localhost', 'localhost'], ['https://localhost/with/path?and=query&multiple=params', 'localhost/with/path?and=query&multiple=params'], ['https://localhost/with/path?and=query#fragment', 'localhost/with/path?and=query#fragment'], ['reactnative.stream', 'reactnative.stream'], ['https://zh.wikipedia.org/wiki/挪威牛油危機', 'zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F'], ['https://getstream.io/chat/docs/react-native/?language=javascript', 'getstream.io/chat/docs/react-native/?language=javascript'], ['127.0.0.1/local_(development)_server', '127.0.0.1/local_(development)_server'], ['https://a.co:8999/ab.php?p=12', 'a.co:8999/ab.php?p=12'], ['http://help.apple.com/xcode/mac/current/#/devba7f53ad4', 'help.apple.com/xcode/mac/current/#/devba7f53ad4']])('Returns the encoded value of %p as %p', function (link, expected) {
5
5
  var result = (0, _parseLinks.parseLinksFromText)(link);
6
6
  expect(result[0].encoded).toBe(expected);
7
7
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["parseLinks.test.ts"],"names":["describe","it","each","link","expected","result","expect","encoded","toBe","input","toEqual","raw","scheme","email","toHaveLength"],"mappings":"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","sourcesContent":["import { parseLinksFromText } from './parseLinks';\n\ndescribe('parseLinksFromText', () => {\n it.each([\n ['www.getstream.io', 'www.getstream.io'],\n ['getstream.io', 'getstream.io'],\n ['scrn://team-chat', 'team-chat'],\n ['https://localhost', 'localhost'],\n [\n 'https://localhost/with/path?and=query&multiple=params',\n 'localhost/with/path?and=query&multiple=params',\n ],\n ['https://localhost/with/path?and=query#fragment', 'localhost/with/path?and=query#fragment'],\n ['reactnative.stream', 'reactnative.stream'],\n [\n 'https://zh.wikipedia.org/wiki/挪威牛油危機',\n 'zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F',\n ],\n [\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n 'getstream.io/chat/docs/react-native/?language=javascript',\n ],\n ['127.0.0.1/local_(development)_server', '127.0.0.1/local_(development)_server'],\n ['https://a.co:8999/ab.php?p=12', 'a.co:8999/ab.php?p=12'],\n ])('Returns the encoded value of %p as %p', (link, expected) => {\n const result = parseLinksFromText(link);\n\n expect(result[0].encoded).toBe(expected);\n });\n\n it('parses fqdn', () => {\n const input = `We have put the apim bol,\ntemporarily so :sj: we can later put the monitors on my grasp\non reality right now is\nhttps://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier\n:)`;\n\n const result = parseLinksFromText(input);\n\n expect(result).toEqual([\n {\n encoded:\n 'www.contrived-example.com:8080/sub/page.php?p1=1%F0%9F%87%B3%F0%9F%87%B4&p2=2#fragment-identifier',\n raw: 'https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier',\n scheme: 'https://',\n },\n ]);\n });\n\n it.each([\n ['support+rn@getstream.io'],\n ['support.rn@getstream.io'],\n ['support-rn@getstream.io'],\n ['support_rn@getstream.io'],\n ])('Can parse the email address %p', (email) => {\n const result = parseLinksFromText(email);\n\n expect(result[0].encoded).toBe(email);\n expect(result[0].scheme).toBe('mailto:');\n });\n\n it(\"doesn't double the mailto prefix\", () => {\n const input = 'mailto:support@getstream.io';\n\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'support@getstream.io',\n raw: input,\n scheme: 'mailto:',\n });\n });\n\n it('Does not falsely parse LINKs from text content', () => {\n const input = `#This string exists to test that we don't produce false positives\n\nExisting links:\n[already a parsed link](https://getstream.io/blog/react-native-how-to-build-bidirectional-infinite-scroll/)\n[even a bogus one]( should not match )\n\n## These should, however, be parsed:\nwww.getstream.io\ngetstream.io\n`;\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(2);\n });\n\n it('Encodes incomplete emoji unicode', () => {\n const input = 'https://getstream.io/�';\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'getstream.io/%EF%BF%BD',\n raw: 'https://getstream.io/�',\n scheme: 'https://',\n });\n });\n\n it('does not parse a decimal number as a URL', () => {\n const input = '123.456';\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(0);\n });\n});\n"]}
1
+ {"version":3,"sources":["parseLinks.test.ts"],"names":["describe","it","each","link","expected","result","expect","encoded","toBe","input","toEqual","raw","scheme","email","toHaveLength"],"mappings":"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","sourcesContent":["import { parseLinksFromText } from './parseLinks';\n\ndescribe('parseLinksFromText', () => {\n it.each([\n ['www.getstream.io', 'www.getstream.io'],\n ['getstream.io', 'getstream.io'],\n ['scrn://team-chat', 'team-chat'],\n ['https://localhost', 'localhost'],\n [\n 'https://localhost/with/path?and=query&multiple=params',\n 'localhost/with/path?and=query&multiple=params',\n ],\n ['https://localhost/with/path?and=query#fragment', 'localhost/with/path?and=query#fragment'],\n ['reactnative.stream', 'reactnative.stream'],\n [\n 'https://zh.wikipedia.org/wiki/挪威牛油危機',\n 'zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F',\n ],\n [\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n 'getstream.io/chat/docs/react-native/?language=javascript',\n ],\n ['127.0.0.1/local_(development)_server', '127.0.0.1/local_(development)_server'],\n ['https://a.co:8999/ab.php?p=12', 'a.co:8999/ab.php?p=12'],\n [\n 'http://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n 'help.apple.com/xcode/mac/current/#/devba7f53ad4',\n ],\n ])('Returns the encoded value of %p as %p', (link, expected) => {\n const result = parseLinksFromText(link);\n\n expect(result[0].encoded).toBe(expected);\n });\n\n it('parses fqdn', () => {\n const input = `We have put the apim bol,\ntemporarily so :sj: we can later put the monitors on my grasp\non reality right now is\nhttps://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier\n:)`;\n\n const result = parseLinksFromText(input);\n\n expect(result).toEqual([\n {\n encoded:\n 'www.contrived-example.com:8080/sub/page.php?p1=1%F0%9F%87%B3%F0%9F%87%B4&p2=2#fragment-identifier',\n raw: 'https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier',\n scheme: 'https://',\n },\n ]);\n });\n\n it.each([\n ['support+rn@getstream.io'],\n ['support.rn@getstream.io'],\n ['support-rn@getstream.io'],\n ['support_rn@getstream.io'],\n ])('Can parse the email address %p', (email) => {\n const result = parseLinksFromText(email);\n\n expect(result[0].encoded).toBe(email);\n expect(result[0].scheme).toBe('mailto:');\n });\n\n it(\"doesn't double the mailto prefix\", () => {\n const input = 'mailto:support@getstream.io';\n\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'support@getstream.io',\n raw: input,\n scheme: 'mailto:',\n });\n });\n\n it('Does not falsely parse LINKs from text content', () => {\n const input = `#This string exists to test that we don't produce false positives\n\nExisting links:\n[already a parsed link](https://getstream.io/blog/react-native-how-to-build-bidirectional-infinite-scroll/)\n[even a bogus one]( should not match )\n\n## These should, however, be parsed:\nwww.getstream.io\ngetstream.io\n`;\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(2);\n });\n\n it('Encodes incomplete emoji unicode', () => {\n const input = 'https://getstream.io/�';\n const result = parseLinksFromText(input);\n\n expect(result[0]).toEqual({\n encoded: 'getstream.io/%EF%BF%BD',\n raw: 'https://getstream.io/�',\n scheme: 'https://',\n });\n });\n\n it('does not parse a decimal number as a URL', () => {\n const input = '123.456';\n const result = parseLinksFromText(input);\n\n expect(result).toHaveLength(0);\n });\n});\n"]}
@@ -168,7 +168,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
168
168
  };
169
169
 
170
170
  var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props) {
171
- var AudioAttachmentUploadPreview = props.AudioAttachmentUploadPreview,
171
+ var AudioAttachment = props.AudioAttachment,
172
172
  FileAttachmentIcon = props.FileAttachmentIcon,
173
173
  fileUploads = props.fileUploads,
174
174
  removeFile = props.removeFile,
@@ -201,8 +201,8 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
201
201
  });
202
202
  };
203
203
 
204
- var onPlayPause = function onPlayPause(index, status) {
205
- if (status === false) {
204
+ var onPlayPause = function onPlayPause(index, pausedStatus) {
205
+ if (pausedStatus === false) {
206
206
  setFileUploads(function (prevFileUploads) {
207
207
  return prevFileUploads.map(function (fileUpload) {
208
208
  return (0, _extends2["default"])({}, fileUpload, {
@@ -268,7 +268,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
268
268
  lineNumber: 227,
269
269
  columnNumber: 13
270
270
  }
271
- }, _react["default"].createElement(AudioAttachmentUploadPreview, {
271
+ }, _react["default"].createElement(AudioAttachment, {
272
272
  index: index,
273
273
  item: item,
274
274
  onLoad: onLoad,
@@ -366,35 +366,14 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
366
366
  columnNumber: 11
367
367
  }
368
368
  }, _react["default"].createElement(_Close.Close, {
369
+ pathFill: grey_dark,
369
370
  __self: _this,
370
371
  __source: {
371
372
  fileName: _jsxFileName,
372
373
  lineNumber: 299,
373
374
  columnNumber: 13
374
375
  }
375
- }))), _react["default"].createElement(_reactNative.TouchableOpacity, {
376
- onPress: function onPress() {
377
- removeFile(item.id);
378
- },
379
- style: [styles.dismiss, {
380
- backgroundColor: grey_gainsboro
381
- }, dismiss],
382
- testID: "remove-file-upload-preview",
383
- __self: _this,
384
- __source: {
385
- fileName: _jsxFileName,
386
- lineNumber: 302,
387
- columnNumber: 9
388
- }
389
- }, _react["default"].createElement(_Close.Close, {
390
- pathFill: grey_dark,
391
- __self: _this,
392
- __source: {
393
- fileName: _jsxFileName,
394
- lineNumber: 309,
395
- columnNumber: 11
396
- }
397
- })));
376
+ }))));
398
377
  };
399
378
 
400
379
  var fileUploadsLength = fileUploads.length;
@@ -429,7 +408,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
429
408
  __self: _this,
430
409
  __source: {
431
410
  fileName: _jsxFileName,
432
- lineNumber: 324,
411
+ lineNumber: 315,
433
412
  columnNumber: 5
434
413
  }
435
414
  }) : null;
@@ -447,7 +426,7 @@ var MemoizedFileUploadPreview = _react["default"].memo(FileUploadPreviewWithCont
447
426
 
448
427
  var FileUploadPreview = function FileUploadPreview(props) {
449
428
  var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
450
- AudioAttachmentUploadPreview = _useMessageInputConte.AudioAttachmentUploadPreview,
429
+ AudioAttachment = _useMessageInputConte.AudioAttachment,
451
430
  fileUploads = _useMessageInputConte.fileUploads,
452
431
  removeFile = _useMessageInputConte.removeFile,
453
432
  setFileUploads = _useMessageInputConte.setFileUploads,
@@ -457,7 +436,7 @@ var FileUploadPreview = function FileUploadPreview(props) {
457
436
  FileAttachmentIcon = _useMessagesContext.FileAttachmentIcon;
458
437
 
459
438
  return _react["default"].createElement(MemoizedFileUploadPreview, (0, _extends2["default"])({
460
- AudioAttachmentUploadPreview: AudioAttachmentUploadPreview,
439
+ AudioAttachment: AudioAttachment,
461
440
  FileAttachmentIcon: FileAttachmentIcon,
462
441
  fileUploads: fileUploads,
463
442
  removeFile: removeFile,
@@ -467,7 +446,7 @@ var FileUploadPreview = function FileUploadPreview(props) {
467
446
  __self: _this,
468
447
  __source: {
469
448
  fileName: _jsxFileName,
470
- lineNumber: 388,
449
+ lineNumber: 379,
471
450
  columnNumber: 5
472
451
  }
473
452
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","paddingLeft","paddingRight","fileContentContainer","fileIcon","alignItems","alignSelf","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","marginHorizontal","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","grey_dark","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","size","FileUploadPreviewWithContext","props","AudioAttachmentUploadPreview","FileAttachmentIcon","fileUploads","removeFile","setFileUploads","uploadFile","flatListRef","flatListWidth","setFlatListWidth","onLoad","index","prevFileUploads","map","fileUpload","id","onProgress","currentTime","hasEnd","progress","onPlayPause","status","paused","black","grey_gainsboro","grey_whisper","audioAttachmentFileContainer","renderItem","state","lastIndexOfDot","name","lastIndexOf","newFile","type","startsWith","FileState","UPLOADED","length","borderColor","I18nManager","isRTL","writingDirection","slice","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport { isAudioPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n fileIcon: {\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey, grey_dark },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey_dark }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads' | 'AudioAttachmentUploadPreview'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n AudioAttachmentUploadPreview,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n duration: fileUpload.id === index ? duration : fileUpload.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n progress:\n fileUpload.id === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, status?: boolean) => {\n if (status === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: fileUpload.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { black, grey_dark, grey_gainsboro, grey_whisper },\n messageInput: {\n fileUploadPreview: {\n audioAttachmentFileContainer,\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n {item.file.type?.startsWith('audio/') && isAudioPackageAvailable() ? (\n <View\n style={[\n { marginBottom: item.state === FileState.UPLOADED ? 8 : 0 },\n audioAttachmentFileContainer,\n ]}\n >\n <AudioAttachmentUploadPreview\n index={index}\n item={item}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-upload-preview'\n />\n </View>\n ) : (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <View style={styles.fileIcon}>\n <FileAttachmentIcon mimeType={item.file.type} />\n </View>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n )}\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close pathFill={grey_dark} />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => `${item.id}`}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) =>\n prevFileUpload.state === nextFileUploads[index].state &&\n prevFileUpload.paused === nextFileUploads[index].paused &&\n prevFileUpload.progress === nextFileUploads[index].progress &&\n prevFileUpload.duration === nextFileUploads[index].duration,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { AudioAttachmentUploadPreview, fileUploads, removeFile, setFileUploads, uploadFile } =\n useMessageInputContext<StreamChatGenerics>();\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{\n AudioAttachmentUploadPreview,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
1
+ {"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","paddingLeft","paddingRight","fileContentContainer","fileIcon","alignItems","alignSelf","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","marginHorizontal","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","grey_dark","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","size","FileUploadPreviewWithContext","props","AudioAttachment","FileAttachmentIcon","fileUploads","removeFile","setFileUploads","uploadFile","flatListRef","flatListWidth","setFlatListWidth","onLoad","index","prevFileUploads","map","fileUpload","id","onProgress","currentTime","hasEnd","progress","onPlayPause","pausedStatus","paused","black","grey_gainsboro","grey_whisper","audioAttachmentFileContainer","renderItem","state","lastIndexOfDot","name","lastIndexOf","newFile","type","startsWith","FileState","UPLOADED","length","borderColor","I18nManager","isRTL","writingDirection","slice","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport { isAudioPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n fileIcon: {\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey, grey_dark },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey_dark }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads' | 'AudioAttachment'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n AudioAttachment,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n duration: fileUpload.id === index ? duration : fileUpload.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n progress:\n fileUpload.id === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: fileUpload.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { black, grey_dark, grey_gainsboro, grey_whisper },\n messageInput: {\n fileUploadPreview: {\n audioAttachmentFileContainer,\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n {item.file.type?.startsWith('audio/') && isAudioPackageAvailable() ? (\n <View\n style={[\n { marginBottom: item.state === FileState.UPLOADED ? 8 : 0 },\n audioAttachmentFileContainer,\n ]}\n >\n <AudioAttachment\n index={index}\n item={item}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-upload-preview'\n />\n </View>\n ) : (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <View style={styles.fileIcon}>\n <FileAttachmentIcon mimeType={item.file.type} />\n </View>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n )}\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close pathFill={grey_dark} />\n </TouchableOpacity>\n </UploadProgressIndicator>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => `${item.id}`}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) =>\n prevFileUpload.state === nextFileUploads[index].state &&\n prevFileUpload.paused === nextFileUploads[index].paused &&\n prevFileUpload.progress === nextFileUploads[index].progress &&\n prevFileUpload.duration === nextFileUploads[index].duration,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { AudioAttachment, fileUploads, removeFile, setFileUploads, uploadFile } =\n useMessageInputContext<StreamChatGenerics>();\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{\n AudioAttachment,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
@@ -28,6 +28,19 @@ Object.keys(_AttachmentActions).forEach(function (key) {
28
28
  });
29
29
  });
30
30
 
31
+ var _AudioAttachment = require("./Attachment/AudioAttachment");
32
+
33
+ Object.keys(_AudioAttachment).forEach(function (key) {
34
+ if (key === "default" || key === "__esModule") return;
35
+ if (key in exports && exports[key] === _AudioAttachment[key]) return;
36
+ Object.defineProperty(exports, key, {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _AudioAttachment[key];
40
+ }
41
+ });
42
+ });
43
+
31
44
  var _Card = require("./Attachment/Card");
32
45
 
33
46
  Object.keys(_Card).forEach(function (key) {
@@ -1341,19 +1354,6 @@ Object.keys(_FileUploadPreview).forEach(function (key) {
1341
1354
  });
1342
1355
  });
1343
1356
 
1344
- var _AudioAttachmentUploadPreview = require("./MessageInput/AudioAttachmentUploadPreview");
1345
-
1346
- Object.keys(_AudioAttachmentUploadPreview).forEach(function (key) {
1347
- if (key === "default" || key === "__esModule") return;
1348
- if (key in exports && exports[key] === _AudioAttachmentUploadPreview[key]) return;
1349
- Object.defineProperty(exports, key, {
1350
- enumerable: true,
1351
- get: function get() {
1352
- return _AudioAttachmentUploadPreview[key];
1353
- }
1354
- });
1355
- });
1356
-
1357
1357
  var _ImageUploadPreview = require("./MessageInput/ImageUploadPreview");
1358
1358
 
1359
1359
  Object.keys(_ImageUploadPreview).forEach(function (key) {