stream-chat-react-native-core 5.20.0-beta.5 → 5.20.1-beta.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/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +3 -3
- package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +24 -41
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +4 -4
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/i18n/fr.json +22 -22
- package/lib/commonjs/i18n/hi.json +22 -22
- package/lib/commonjs/i18n/it.json +22 -22
- package/lib/commonjs/i18n/nl.json +22 -22
- package/lib/commonjs/i18n/ru.json +23 -23
- package/lib/commonjs/i18n/tr.json +23 -23
- package/lib/commonjs/utils/utils.js +2 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
- package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +3 -3
- package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +24 -41
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +4 -4
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/i18n/fr.json +22 -22
- package/lib/module/i18n/hi.json +22 -22
- package/lib/module/i18n/it.json +22 -22
- package/lib/module/i18n/nl.json +22 -22
- package/lib/module/i18n/ru.json +23 -23
- package/lib/module/i18n/tr.json +23 -23
- package/lib/module/utils/utils.js +2 -1
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts +3 -0
- package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +1 -1
- package/lib/typescript/i18n/fr.json +22 -22
- package/lib/typescript/i18n/hi.json +22 -22
- package/lib/typescript/i18n/it.json +22 -22
- package/lib/typescript/i18n/nl.json +22 -22
- package/lib/typescript/i18n/ru.json +23 -23
- package/lib/typescript/i18n/tr.json +23 -23
- package/package.json +1 -1
- package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +43 -0
- package/src/components/Message/MessageSimple/utils/parseLinks.ts +5 -5
- package/src/components/Message/MessageSimple/utils/renderText.tsx +10 -26
- package/src/components/Reply/Reply.tsx +16 -14
- package/src/i18n/fr.json +22 -22
- package/src/i18n/hi.json +22 -22
- package/src/i18n/it.json +22 -22
- package/src/i18n/nl.json +22 -22
- package/src/i18n/ru.json +23 -23
- package/src/i18n/tr.json +23 -23
- package/src/utils/utils.ts +2 -1
- package/src/version.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.generateMarkdownText = void 0;
|
|
6
|
+
var _truncate = _interopRequireDefault(require("lodash/truncate"));
|
|
7
|
+
var _parseLinks = require("./parseLinks");
|
|
8
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
var generateMarkdownText = function generateMarkdownText(message) {
|
|
12
|
+
var text = message.text;
|
|
13
|
+
if (!text) return null;
|
|
14
|
+
var resultText = text.trim();
|
|
15
|
+
var linkInfos = (0, _parseLinks.parseLinksFromText)(resultText);
|
|
16
|
+
for (var _iterator = _createForOfIteratorHelperLoose(linkInfos), _step; !(_step = _iterator()).done;) {
|
|
17
|
+
var linkInfo = _step.value;
|
|
18
|
+
var displayLink = (0, _truncate["default"])(linkInfo.raw, {
|
|
19
|
+
length: 200,
|
|
20
|
+
omission: '...'
|
|
21
|
+
});
|
|
22
|
+
var normalRegEx = new RegExp(linkInfo.raw, 'g');
|
|
23
|
+
var markdown = "[" + displayLink + "](" + linkInfo.encodedUrl + ")";
|
|
24
|
+
resultText = text.replace(normalRegEx, markdown);
|
|
25
|
+
var mentionsRegex = new RegExp("@\\[" + displayLink + "\\]\\(" + linkInfo.encodedUrl + "\\)", 'g');
|
|
26
|
+
resultText = resultText.replace(mentionsRegex, "@" + displayLink);
|
|
27
|
+
}
|
|
28
|
+
resultText = resultText.replace(/[<&"'>]/g, '\\$&');
|
|
29
|
+
return resultText;
|
|
30
|
+
};
|
|
31
|
+
exports.generateMarkdownText = generateMarkdownText;
|
|
32
|
+
//# sourceMappingURL=generateMarkdownText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_truncate","_interopRequireDefault","require","_parseLinks","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","generateMarkdownText","message","text","resultText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","normalRegEx","RegExp","markdown","encodedUrl","replace","mentionsRegex","exports"],"sources":["generateMarkdownText.ts"],"sourcesContent":["import truncate from 'lodash/truncate';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nexport const generateMarkdownText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n message: MessageType<StreamChatGenerics>,\n) => {\n const { text } = message;\n\n if (!text) return null;\n\n // Trim the extra spaces from the text.\n let resultText = text.trim();\n\n // List of all the links present in the text.\n const linkInfos = parseLinksFromText(resultText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n // Convert raw links/emails in the text to respective markdown syntax.\n // Eg: Hi getstream.io -> Hi [getstream.io](getstream.io).\n const normalRegEx = new RegExp(linkInfo.raw, 'g');\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n resultText = text.replace(normalRegEx, markdown);\n\n // After previous step, in some cases, the mentioned user after `@` might have a link/email so we convert it back to normal raw text.\n // Eg: Hi, @[test.user@gmail.com](mailto:test.user@gmail.com) to @test.user@gmail.com.\n const mentionsRegex = new RegExp(`@\\\\[${displayLink}\\\\]\\\\(${linkInfo.encodedUrl}\\\\)`, 'g');\n resultText = resultText.replace(mentionsRegex, `@${displayLink}`);\n }\n\n resultText = resultText.replace(/[<&\"'>]/g, '\\\\$&');\n\n return resultText;\n};\n"],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ var _linkifyjs = require("linkifyjs");
|
|
|
8
8
|
var removeMarkdownLinksFromText = function removeMarkdownLinksFromText(input) {
|
|
9
9
|
return input.replace(/\[[\w\s]+\]\(.*\)/g, '');
|
|
10
10
|
};
|
|
11
|
-
var
|
|
12
|
-
return input.replace(
|
|
11
|
+
var removeUserNamesWithEmailFromText = function removeUserNamesWithEmailFromText(input) {
|
|
12
|
+
return input.replace(/@(\w+(\.\w+)?)(@\w+\.\w+)/g, '');
|
|
13
13
|
};
|
|
14
14
|
var parseLinksFromText = function parseLinksFromText(input) {
|
|
15
|
-
var strippedInput = [removeMarkdownLinksFromText,
|
|
15
|
+
var strippedInput = [removeMarkdownLinksFromText, removeUserNamesWithEmailFromText].reduce(function (acc, fn) {
|
|
16
16
|
return fn(acc);
|
|
17
17
|
}, input);
|
|
18
18
|
var links = (0, _linkifyjs.find)(strippedInput, 'url');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_linkifyjs","require","removeMarkdownLinksFromText","input","replace","
|
|
1
|
+
{"version":3,"names":["_linkifyjs","require","removeMarkdownLinksFromText","input","replace","removeUserNamesWithEmailFromText","parseLinksFromText","strippedInput","reduce","acc","fn","links","find","emails","result","concat","_toConsumableArray2","map","_ref","href","value","encodedUrl","encodeURI","raw","exports"],"sources":["parseLinks.ts"],"sourcesContent":["import { find } from 'linkifyjs';\n\ninterface LinkInfo {\n encodedUrl: string;\n raw: 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\n/**\n * This is done to avoid parsing usernames with dot as well as an email address in it.\n */\nconst removeUserNamesWithEmailFromText = (input: string) =>\n input.replace(/@(\\w+(\\.\\w+)?)(@\\w+\\.\\w+)/g, '');\n\nexport const parseLinksFromText = (input: string): LinkInfo[] => {\n const strippedInput = [removeMarkdownLinksFromText, removeUserNamesWithEmailFromText].reduce(\n (acc, fn) => fn(acc),\n input,\n );\n\n const links = find(strippedInput, 'url');\n const emails = find(strippedInput, 'email');\n\n const result: LinkInfo[] = [...links, ...emails].map(({ href, value }) => ({\n encodedUrl: encodeURI(href),\n raw: value,\n }));\n\n return result;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAWA,IAAMC,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAAIC,KAAa;EAAA,OAAKA,KAAK,CAACC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;AAAA;AAK9F,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAgCA,CAAIF,KAAa;EAAA,OACrDA,KAAK,CAACC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;AAAA;AAE1C,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIH,KAAa,EAAiB;EAC/D,IAAMI,aAAa,GAAG,CAACL,2BAA2B,EAAEG,gCAAgC,CAAC,CAACG,MAAM,CAC1F,UAACC,GAAG,EAAEC,EAAE;IAAA,OAAKA,EAAE,CAACD,GAAG,CAAC;EAAA,GACpBN,KACF,CAAC;EAED,IAAMQ,KAAK,GAAG,IAAAC,eAAI,EAACL,aAAa,EAAE,KAAK,CAAC;EACxC,IAAMM,MAAM,GAAG,IAAAD,eAAI,EAACL,aAAa,EAAE,OAAO,CAAC;EAE3C,IAAMO,MAAkB,GAAG,GAAAC,MAAA,KAAAC,mBAAA,aAAIL,KAAK,OAAAK,mBAAA,aAAKH,MAAM,GAAEI,GAAG,CAAC,UAAAC,IAAA;IAAA,IAAGC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK;IAAA,OAAQ;MACzEC,UAAU,EAAEC,SAAS,CAACH,IAAI,CAAC;MAC3BI,GAAG,EAAEH;IACP,CAAC;EAAA,CAAC,CAAC;EAEH,OAAON,MAAM;AACf,CAAC;AAACU,OAAA,CAAAlB,kBAAA,GAAAA,kBAAA"}
|
|
@@ -8,14 +8,10 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _reactNative = require("react-native");
|
|
10
10
|
var _reactNativeMarkdownPackage = _interopRequireDefault(require("react-native-markdown-package"));
|
|
11
|
-
var _truncate = _interopRequireDefault(require("lodash/truncate"));
|
|
12
11
|
var _simpleMarkdown = require("simple-markdown");
|
|
13
|
-
var
|
|
12
|
+
var _generateMarkdownText = require("./generateMarkdownText");
|
|
14
13
|
var _this = this,
|
|
15
14
|
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Message/MessageSimple/utils/renderText.tsx";
|
|
16
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
19
15
|
var defaultMarkdownStyles = {
|
|
20
16
|
inlineCode: {
|
|
21
17
|
fontSize: 13,
|
|
@@ -51,9 +47,9 @@ var defaultMarkdownStyles = {
|
|
|
51
47
|
marginTop: 8
|
|
52
48
|
}
|
|
53
49
|
};
|
|
54
|
-
var
|
|
50
|
+
var mentionsParseFunction = function mentionsParseFunction(capture, parse, state) {
|
|
55
51
|
return {
|
|
56
|
-
content: (0, _simpleMarkdown.parseInline)(
|
|
52
|
+
content: (0, _simpleMarkdown.parseInline)(parse, capture[0], state)
|
|
57
53
|
};
|
|
58
54
|
};
|
|
59
55
|
var renderText = function renderText(params) {
|
|
@@ -68,21 +64,7 @@ var renderText = function renderText(params) {
|
|
|
68
64
|
onlyEmojis = params.onlyEmojis,
|
|
69
65
|
onPressParam = params.onPress,
|
|
70
66
|
preventPress = params.preventPress;
|
|
71
|
-
var
|
|
72
|
-
text = message.text;
|
|
73
|
-
if (!text) return null;
|
|
74
|
-
var newText = text.trim();
|
|
75
|
-
var linkInfos = (0, _parseLinks.parseLinksFromText)(newText);
|
|
76
|
-
for (var _iterator = _createForOfIteratorHelperLoose(linkInfos), _step; !(_step = _iterator()).done;) {
|
|
77
|
-
var linkInfo = _step.value;
|
|
78
|
-
var displayLink = (0, _truncate["default"])(linkInfo.raw, {
|
|
79
|
-
length: 200,
|
|
80
|
-
omission: '...'
|
|
81
|
-
});
|
|
82
|
-
var markdown = "[" + displayLink + "](" + linkInfo.encodedUrl + ")";
|
|
83
|
-
newText = newText.replace(linkInfo.raw, markdown);
|
|
84
|
-
}
|
|
85
|
-
newText = newText.replace(/[<&"'>]/g, '\\$&');
|
|
67
|
+
var markdownText = (0, _generateMarkdownText.generateMarkdownText)(message);
|
|
86
68
|
var styles = (0, _extends2["default"])({}, defaultMarkdownStyles, markdownStyles, {
|
|
87
69
|
autolink: (0, _extends2["default"])({}, defaultMarkdownStyles.autolink, {
|
|
88
70
|
color: colors.accent_blue
|
|
@@ -145,7 +127,7 @@ var renderText = function renderText(params) {
|
|
|
145
127
|
__self: _this,
|
|
146
128
|
__source: {
|
|
147
129
|
fileName: _jsxFileName,
|
|
148
|
-
lineNumber:
|
|
130
|
+
lineNumber: 170,
|
|
149
131
|
columnNumber: 7
|
|
150
132
|
}
|
|
151
133
|
}, output(node.content, (0, _extends2["default"])({}, state, {
|
|
@@ -163,7 +145,7 @@ var renderText = function renderText(params) {
|
|
|
163
145
|
__self: _this,
|
|
164
146
|
__source: {
|
|
165
147
|
fileName: _jsxFileName,
|
|
166
|
-
lineNumber:
|
|
148
|
+
lineNumber: 188,
|
|
167
149
|
columnNumber: 11
|
|
168
150
|
}
|
|
169
151
|
}, output(node.content, state));
|
|
@@ -177,11 +159,12 @@ var renderText = function renderText(params) {
|
|
|
177
159
|
__self: _this,
|
|
178
160
|
__source: {
|
|
179
161
|
fileName: _jsxFileName,
|
|
180
|
-
lineNumber:
|
|
162
|
+
lineNumber: 198,
|
|
181
163
|
columnNumber: 7
|
|
182
164
|
}
|
|
183
165
|
}, output(node.content, state));
|
|
184
166
|
};
|
|
167
|
+
var mentioned_users = message.mentioned_users;
|
|
185
168
|
var mentionedUsers = Array.isArray(mentioned_users) ? mentioned_users.reduce(function (acc, cur) {
|
|
186
169
|
var userName = cur.name || cur.id || '';
|
|
187
170
|
if (userName) {
|
|
@@ -192,7 +175,7 @@ var renderText = function renderText(params) {
|
|
|
192
175
|
return acc;
|
|
193
176
|
}, '') : '';
|
|
194
177
|
var regEx = new RegExp("^\\B(" + mentionedUsers + ")", 'g');
|
|
195
|
-
var
|
|
178
|
+
var mentionsMatchFunction = function mentionsMatchFunction(source) {
|
|
196
179
|
return regEx.exec(source);
|
|
197
180
|
};
|
|
198
181
|
var mentionsReact = function mentionsReact(node, output, _ref3) {
|
|
@@ -228,7 +211,7 @@ var renderText = function renderText(params) {
|
|
|
228
211
|
__self: _this,
|
|
229
212
|
__source: {
|
|
230
213
|
fileName: _jsxFileName,
|
|
231
|
-
lineNumber:
|
|
214
|
+
lineNumber: 253,
|
|
232
215
|
columnNumber: 7
|
|
233
216
|
}
|
|
234
217
|
}, Array.isArray(node.content) ? node.content.reduce(function (acc, current) {
|
|
@@ -245,7 +228,7 @@ var renderText = function renderText(params) {
|
|
|
245
228
|
__self: _this,
|
|
246
229
|
__source: {
|
|
247
230
|
fileName: _jsxFileName,
|
|
248
|
-
lineNumber:
|
|
231
|
+
lineNumber: 262,
|
|
249
232
|
columnNumber: 5
|
|
250
233
|
}
|
|
251
234
|
});
|
|
@@ -275,9 +258,9 @@ var renderText = function renderText(params) {
|
|
|
275
258
|
}
|
|
276
259
|
}, mentionedUsers ? {
|
|
277
260
|
mentions: {
|
|
278
|
-
match:
|
|
261
|
+
match: mentionsMatchFunction,
|
|
279
262
|
order: _simpleMarkdown.defaultRules.text.order - 0.5,
|
|
280
|
-
parse:
|
|
263
|
+
parse: mentionsParseFunction,
|
|
281
264
|
react: mentionsReact
|
|
282
265
|
}
|
|
283
266
|
} : {});
|
|
@@ -289,10 +272,10 @@ var renderText = function renderText(params) {
|
|
|
289
272
|
__self: _this,
|
|
290
273
|
__source: {
|
|
291
274
|
fileName: _jsxFileName,
|
|
292
|
-
lineNumber:
|
|
275
|
+
lineNumber: 294,
|
|
293
276
|
columnNumber: 5
|
|
294
277
|
}
|
|
295
|
-
},
|
|
278
|
+
}, markdownText);
|
|
296
279
|
};
|
|
297
280
|
exports.renderText = renderText;
|
|
298
281
|
var ListOutput = function ListOutput(_ref4) {
|
|
@@ -308,7 +291,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
308
291
|
__self: _this,
|
|
309
292
|
__source: {
|
|
310
293
|
fileName: _jsxFileName,
|
|
311
|
-
lineNumber:
|
|
294
|
+
lineNumber: 329,
|
|
312
295
|
columnNumber: 5
|
|
313
296
|
}
|
|
314
297
|
}, node.items.map(function (item, index) {
|
|
@@ -322,7 +305,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
322
305
|
__self: _this,
|
|
323
306
|
__source: {
|
|
324
307
|
fileName: _jsxFileName,
|
|
325
|
-
lineNumber:
|
|
308
|
+
lineNumber: 335,
|
|
326
309
|
columnNumber: 13
|
|
327
310
|
}
|
|
328
311
|
}, _react["default"].createElement(Bullet, {
|
|
@@ -331,7 +314,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
331
314
|
__self: _this,
|
|
332
315
|
__source: {
|
|
333
316
|
fileName: _jsxFileName,
|
|
334
|
-
lineNumber:
|
|
317
|
+
lineNumber: 336,
|
|
335
318
|
columnNumber: 15
|
|
336
319
|
}
|
|
337
320
|
}));
|
|
@@ -348,7 +331,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
348
331
|
__self: _this,
|
|
349
332
|
__source: {
|
|
350
333
|
fileName: _jsxFileName,
|
|
351
|
-
lineNumber:
|
|
334
|
+
lineNumber: 349,
|
|
352
335
|
columnNumber: 11
|
|
353
336
|
}
|
|
354
337
|
}, _react["default"].createElement(Bullet, {
|
|
@@ -357,7 +340,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
357
340
|
__self: _this,
|
|
358
341
|
__source: {
|
|
359
342
|
fileName: _jsxFileName,
|
|
360
|
-
lineNumber:
|
|
343
|
+
lineNumber: 350,
|
|
361
344
|
columnNumber: 13
|
|
362
345
|
}
|
|
363
346
|
}), _react["default"].createElement(ListItem, {
|
|
@@ -366,7 +349,7 @@ var ListOutput = function ListOutput(_ref4) {
|
|
|
366
349
|
__self: _this,
|
|
367
350
|
__source: {
|
|
368
351
|
fileName: _jsxFileName,
|
|
369
|
-
lineNumber:
|
|
352
|
+
lineNumber: 354,
|
|
370
353
|
columnNumber: 13
|
|
371
354
|
}
|
|
372
355
|
}, output(item, state)));
|
|
@@ -382,7 +365,7 @@ var Bullet = function Bullet(_ref5) {
|
|
|
382
365
|
__self: _this,
|
|
383
366
|
__source: {
|
|
384
367
|
fileName: _jsxFileName,
|
|
385
|
-
lineNumber:
|
|
368
|
+
lineNumber: 369,
|
|
386
369
|
columnNumber: 3
|
|
387
370
|
}
|
|
388
371
|
}, index ? index + ". " : "\u2022 ");
|
|
@@ -395,7 +378,7 @@ var ListRow = function ListRow(_ref6) {
|
|
|
395
378
|
__self: _this,
|
|
396
379
|
__source: {
|
|
397
380
|
fileName: _jsxFileName,
|
|
398
|
-
lineNumber:
|
|
381
|
+
lineNumber: 375,
|
|
399
382
|
columnNumber: 3
|
|
400
383
|
}
|
|
401
384
|
}, children);
|
|
@@ -408,7 +391,7 @@ var ListItem = function ListItem(_ref7) {
|
|
|
408
391
|
__self: _this,
|
|
409
392
|
__source: {
|
|
410
393
|
fileName: _jsxFileName,
|
|
411
|
-
lineNumber:
|
|
394
|
+
lineNumber: 379,
|
|
412
395
|
columnNumber: 3
|
|
413
396
|
}
|
|
414
397
|
}, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_truncate","_simpleMarkdown","_parseLinks","_this","_jsxFileName","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","parse","capture","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","mentioned_users","text","newText","trim","linkInfos","parseLinksFromText","_iterator","_step","linkInfo","displayLink","truncate","raw","omission","markdown","encodedUrl","replace","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","black","url","pattern","RegExp","Linking","canOpenURL","then","canOpenUrl","openURL","linkReact","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphTextReact","_ref2","undefined","numberOfLines","mentionedUsers","reduce","acc","cur","userName","id","match","regEx","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","listReact","ListOutput","customRules","image","link","react","reflink","sublist","order","defaultRules","JSON","stringify","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport truncate from 'lodash/truncate';\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { parseLinksFromText } from './parseLinks';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst parse: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users, text } = message;\n\n if (!text) return null;\n\n let newText = text.trim();\n const linkInfos = parseLinksFromText(newText);\n\n for (const linkInfo of linkInfos) {\n const displayLink = truncate(linkInfo.raw, {\n length: 200,\n omission: '...',\n });\n const markdown = `[${displayLink}](${linkInfo.encodedUrl})`;\n newText = newText.replace(linkInfo.raw, markdown);\n }\n\n newText = newText.replace(/[<&\"'>]/g, '\\\\$&');\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const linkReact: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphTextReact: ReactNodeOutput = (node, output, { ...state }) => {\n if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n };\n\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n function (match) {\n return '\\\\' + match;\n },\n )}`;\n }\n\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const match: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const listReact: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: linkReact },\n list: { react: listReact },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphTextReact } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: listReact },\n ...(mentionedUsers\n ? {\n mentions: {\n match,\n order: defaultRules.text.order - 0.5,\n parse,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {newText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeMarkdownPackage","_simpleMarkdown","_generateMarkdownText","_this","_jsxFileName","defaultMarkdownStyles","inlineCode","fontSize","padding","paddingHorizontal","list","marginBottom","marginTop","listItemNumber","fontWeight","listItemText","flex","listRow","flexDirection","mentions","paragraph","paragraphCenter","paragraphWithImage","mentionsParseFunction","capture","parse","state","content","parseInline","renderText","params","colors","markdownRules","markdownStyles","message","messageOverlay","messageTextNumberOfLines","onLinkParams","onLink","onLongPressParam","onLongPress","onlyEmojis","onPressParam","onPress","preventPress","markdownText","generateMarkdownText","styles","_extends2","autolink","color","accent_blue","backgroundColor","white_smoke","borderColor","grey_gainsboro","accent_red","text","black","url","pattern","RegExp","test","Linking","canOpenURL","then","canOpenUrl","openURL","linkReact","node","output","_ref","_objectDestructuringEmpty2","target","event","additionalInfo","defaultHandler","emitter","createElement","Text","key","style","suppressHighlighting","__self","__source","fileName","lineNumber","columnNumber","withinLink","paragraphTextReact","_ref2","undefined","numberOfLines","mentioned_users","mentionedUsers","Array","isArray","reduce","acc","cur","userName","name","id","length","replace","match","regEx","mentionsMatchFunction","source","exec","mentionsReact","_ref3","_node$content$","_node$content$$conten","substring","user","find","current","listReact","ListOutput","customRules","image","link","react","reflink","sublist","order","defaultRules","JSON","stringify","rules","exports","_ref4","isSublist","withinList","parentTypes","View","items","map","item","index","_item$","indexAfterStart","start","ListRow","testID","Bullet","ordered","listItemBullet","type","isSublistWithinText","includes","ListItem","_ref5","_ref6","children","_ref7"],"sources":["renderText.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { GestureResponderEvent, Linking, Text, TextProps, View, ViewProps } from 'react-native';\n\n// @ts-expect-error\nimport Markdown from 'react-native-markdown-package';\n\nimport {\n DefaultRules,\n defaultRules,\n MatchFunction,\n ParseFunction,\n parseInline,\n ReactNodeOutput,\n ReactOutput,\n SingleASTNode,\n State,\n} from 'simple-markdown';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { generateMarkdownText } from './generateMarkdownText';\n\nimport type { MessageContextValue } from '../../../../contexts/messageContext/MessageContext';\nimport type { Colors, MarkdownStyle } from '../../../../contexts/themeContext/utils/theme';\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\nimport type { MessageType } from '../../../MessageList/hooks/useMessageList';\n\nconst defaultMarkdownStyles: MarkdownStyle = {\n inlineCode: {\n fontSize: 13,\n padding: 3,\n paddingHorizontal: 5,\n },\n list: {\n marginBottom: 8,\n marginTop: 8,\n },\n listItemNumber: {\n fontWeight: 'bold',\n },\n listItemText: {\n flex: 0,\n },\n listRow: {\n flexDirection: 'row',\n },\n mentions: {\n fontWeight: '700',\n },\n paragraph: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphCenter: {\n marginBottom: 8,\n marginTop: 8,\n },\n paragraphWithImage: {\n marginBottom: 8,\n marginTop: 8,\n },\n};\n\nconst mentionsParseFunction: ParseFunction = (capture, parse, state) => ({\n content: parseInline(parse, capture[0], state),\n});\n\nexport type MarkdownRules = Partial<DefaultRules>;\n\nexport type RenderTextParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<\n Pick<MessageContextValue<StreamChatGenerics>, 'onLongPress' | 'onPress' | 'preventPress'>\n> & {\n colors: typeof Colors;\n message: MessageType<StreamChatGenerics>;\n markdownRules?: MarkdownRules;\n markdownStyles?: MarkdownStyle;\n messageOverlay?: boolean;\n messageTextNumberOfLines?: number;\n onLink?: (url: string) => Promise<void>;\n onlyEmojis?: boolean;\n};\n\nexport const renderText = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n params: RenderTextParams<StreamChatGenerics>,\n) => {\n const {\n colors,\n markdownRules,\n markdownStyles,\n message,\n messageOverlay,\n messageTextNumberOfLines,\n onLink: onLinkParams,\n onLongPress: onLongPressParam,\n onlyEmojis,\n onPress: onPressParam,\n preventPress,\n } = params;\n\n const markdownText = generateMarkdownText<StreamChatGenerics>(message);\n\n const styles: MarkdownStyle = {\n ...defaultMarkdownStyles,\n ...markdownStyles,\n autolink: {\n ...defaultMarkdownStyles.autolink,\n color: colors.accent_blue,\n ...markdownStyles?.autolink,\n },\n inlineCode: {\n ...defaultMarkdownStyles.inlineCode,\n backgroundColor: colors.white_smoke,\n borderColor: colors.grey_gainsboro,\n color: colors.accent_red,\n ...markdownStyles?.inlineCode,\n },\n mentions: {\n ...defaultMarkdownStyles.mentions,\n color: colors.accent_blue,\n ...markdownStyles?.mentions,\n },\n text: {\n ...defaultMarkdownStyles.text,\n color: colors.black,\n ...markdownStyles?.text,\n },\n };\n\n const onLink = (url: string) => {\n const pattern = new RegExp(/^\\S+:\\/\\//);\n if (!pattern.test(url)) {\n url = 'http://' + url;\n }\n\n return onLinkParams\n ? onLinkParams(url)\n : Linking.canOpenURL(url).then((canOpenUrl) => canOpenUrl && Linking.openURL(url));\n };\n\n const linkReact: ReactNodeOutput = (node, output, { ...state }) => {\n const url = node.target;\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: { url },\n defaultHandler: () => {\n onLink(url);\n },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n additionalInfo: { url },\n emitter: 'textLink',\n event,\n });\n }\n };\n\n return (\n <Text\n key={state.key}\n onLongPress={onLongPress}\n onPress={onPress}\n style={styles.autolink}\n suppressHighlighting={true}\n >\n {output(node.content, { ...state, withinLink: true })}\n </Text>\n );\n };\n\n const paragraphTextReact: ReactNodeOutput = (node, output, { ...state }) => {\n if (messageTextNumberOfLines !== undefined) {\n // If we want to truncate the message text, lets only truncate the first paragraph\n // and simply not render rest of the paragraphs.\n if (state.key === '0' || state.key === 0) {\n return (\n <Text key={state.key} numberOfLines={messageTextNumberOfLines} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n } else {\n return null;\n }\n }\n\n return (\n <Text key={state.key} style={styles.paragraph}>\n {output(node.content, state)}\n </Text>\n );\n };\n\n // take the @ mentions and turn them into markdown?\n // translate links\n const { mentioned_users } = message;\n const mentionedUsers = Array.isArray(mentioned_users)\n ? mentioned_users.reduce((acc, cur) => {\n const userName = cur.name || cur.id || '';\n if (userName) {\n acc += `${acc.length ? '|' : ''}@${userName.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n function (match) {\n return '\\\\' + match;\n },\n )}`;\n }\n\n return acc;\n }, '')\n : '';\n\n const regEx = new RegExp(`^\\\\B(${mentionedUsers})`, 'g');\n const mentionsMatchFunction: MatchFunction = (source) => regEx.exec(source);\n\n const mentionsReact: ReactNodeOutput = (node, output, { ...state }) => {\n /**removes the @ prefix of username */\n const userName = node.content[0]?.content?.substring(1);\n const onPress = (event: GestureResponderEvent) => {\n if (!preventPress && onPressParam) {\n onPressParam({\n additionalInfo: {\n user: mentioned_users?.find(\n (user: UserResponse<StreamChatGenerics>) => userName === user.name,\n ),\n },\n emitter: 'textMention',\n event,\n });\n }\n };\n\n const onLongPress = (event: GestureResponderEvent) => {\n if (!preventPress && onLongPressParam) {\n onLongPressParam({\n emitter: 'textMention',\n event,\n });\n }\n };\n\n return (\n <Text key={state.key} onLongPress={onLongPress} onPress={onPress} style={styles.mentions}>\n {Array.isArray(node.content)\n ? node.content.reduce((acc, current) => acc + current.content, '') || ''\n : output(node.content, state)}\n </Text>\n );\n };\n\n const listReact: ReactNodeOutput = (node, output, state) => (\n <ListOutput\n key={`list-${state.key}`}\n node={node}\n output={output}\n state={state}\n styles={styles}\n />\n );\n\n const customRules = {\n // do not render images, we will scrape them out of the message and show on attachment card component\n image: { match: () => null },\n link: { react: linkReact },\n list: { react: listReact },\n // Truncate long text content in the message overlay\n paragraph: messageTextNumberOfLines ? { react: paragraphTextReact } : {},\n // we have no react rendering support for reflinks\n reflink: { match: () => null },\n sublist: { react: listReact },\n ...(mentionedUsers\n ? {\n mentions: {\n match: mentionsMatchFunction,\n order: defaultRules.text.order - 0.5,\n parse: mentionsParseFunction,\n react: mentionsReact,\n },\n }\n : {}),\n };\n\n return (\n <Markdown\n key={`${JSON.stringify(mentioned_users)}-${onlyEmojis}-${\n messageOverlay ? JSON.stringify(markdownStyles) : undefined\n }-${JSON.stringify(colors)}`}\n onLink={onLink}\n rules={{\n ...customRules,\n ...markdownRules,\n }}\n styles={styles}\n >\n {markdownText}\n </Markdown>\n );\n};\n\nexport interface ListOutputProps {\n node: SingleASTNode;\n output: ReactOutput;\n state: State;\n styles?: Partial<MarkdownStyle>;\n}\n\n/**\n * For lists and sublists, the default behavior of the markdown library we use is\n * to always renumber any list, so all ordered lists start from 1.\n *\n * This custom rule overrides this behavior both for top level lists and sublists,\n * in order to start the numbering from the number of the first list item provided.\n */\nexport const ListOutput = ({ node, output, state, styles }: ListOutputProps) => {\n let isSublist = state.withinList;\n const parentTypes = ['text', 'paragraph', 'strong'];\n\n return (\n <View key={state.key} style={isSublist ? styles?.sublist : styles?.list}>\n {node.items.map((item: SingleASTNode, index: number) => {\n const indexAfterStart = node.start + index;\n\n if (item === null) {\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n </ListRow>\n );\n }\n\n isSublist = item.length > 1 && item[1].type === 'list';\n const isSublistWithinText = parentTypes.includes((item[0] ?? {}).type) && isSublist;\n const style = isSublistWithinText ? { marginBottom: 0 } : {};\n\n return (\n <ListRow key={index} style={styles?.listRow} testID='list-item'>\n <Bullet\n index={node.ordered && indexAfterStart}\n style={node.ordered ? styles?.listItemNumber : styles?.listItemBullet}\n />\n <ListItem key={1} style={[styles?.listItemText, style]}>\n {output(item, state)}\n </ListItem>\n </ListRow>\n );\n })}\n </View>\n );\n};\n\ninterface BulletProps extends TextProps {\n index?: number;\n}\n\nconst Bullet = ({ index, style }: BulletProps) => (\n <Text key={0} style={style}>\n {index ? `${index}. ` : '\\u2022 '}\n </Text>\n);\n\nconst ListRow = ({ children, style }: PropsWithChildren<ViewProps>) => (\n <Text style={style}>{children}</Text>\n);\n\nconst ListItem = ({ children, style }: PropsWithChildren<TextProps>) => (\n <Text style={style}>{children}</Text>\n);\n"],"mappings":"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"}
|
|
@@ -199,7 +199,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
199
199
|
columnNumber: 11
|
|
200
200
|
}
|
|
201
201
|
}) : null, _react["default"].createElement(_MessageTextContainer.MessageTextContainer, {
|
|
202
|
-
markdownStyles: quotedMessage.
|
|
202
|
+
markdownStyles: quotedMessage.type === 'deleted' ? (0, _merge["default"])({
|
|
203
203
|
em: {
|
|
204
204
|
color: grey
|
|
205
205
|
}
|
|
@@ -207,7 +207,7 @@ var ReplyWithContext = function ReplyWithContext(props) {
|
|
|
207
207
|
text: styles.text
|
|
208
208
|
}, markdownStyles),
|
|
209
209
|
message: (0, _extends2["default"])({}, quotedMessage, {
|
|
210
|
-
text: quotedMessage.
|
|
210
|
+
text: quotedMessage.type === 'deleted' ? "_" + t('Message deleted') + "_" : quotedMessage.text ? quotedMessage.text.length > 170 ? quotedMessage.text.slice(0, 170) + "..." : quotedMessage.text : messageType === 'image' ? t('Photo') : messageType === 'video' ? t('Video') : messageType === 'file' ? (lastAttachment == null ? void 0 : lastAttachment.title) || '' : ''
|
|
211
211
|
}),
|
|
212
212
|
onlyEmojis: onlyEmojis,
|
|
213
213
|
styles: {
|
|
@@ -230,7 +230,7 @@ var useMessageInputContextIfAvailable = function useMessageInputContextIfAvailab
|
|
|
230
230
|
var areEqual = function areEqual(prevProps, nextProps) {
|
|
231
231
|
var prevQuotedMessage = prevProps.quotedMessage;
|
|
232
232
|
var nextQuotedMessage = nextProps.quotedMessage;
|
|
233
|
-
var quotedMessageEqual = !!prevQuotedMessage && !!nextQuotedMessage && typeof prevQuotedMessage !== 'boolean' && typeof nextQuotedMessage !== 'boolean' ? prevQuotedMessage.id === nextQuotedMessage.id && prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at : !!prevQuotedMessage === !!nextQuotedMessage;
|
|
233
|
+
var quotedMessageEqual = !!prevQuotedMessage && !!nextQuotedMessage && typeof prevQuotedMessage !== 'boolean' && typeof nextQuotedMessage !== 'boolean' ? prevQuotedMessage.id === nextQuotedMessage.id && prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at && prevQuotedMessage.type === nextQuotedMessage.type : !!prevQuotedMessage === !!nextQuotedMessage;
|
|
234
234
|
if (!quotedMessageEqual) return false;
|
|
235
235
|
return true;
|
|
236
236
|
};
|
|
@@ -258,7 +258,7 @@ var Reply = function Reply(props) {
|
|
|
258
258
|
__self: _this,
|
|
259
259
|
__source: {
|
|
260
260
|
fileName: _jsxFileName,
|
|
261
|
-
lineNumber:
|
|
261
|
+
lineNumber: 349,
|
|
262
262
|
columnNumber: 5
|
|
263
263
|
}
|
|
264
264
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_merge","_interopRequireDefault","_MessageContext","_MessageInputContext","_MessagesContext","_ThemeContext","_TranslationContext","_getResizedImageUrl","_utils","_FileIcon","_VideoThumbnail","_MessageAvatar","_MessageTextContainer","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","videoThumbnailContainerStyle","videoThumbnailImageStyle","getMessageType","lastAttachment","messageType","isLastAttachmentFile","type","isLastAttachmentVideo","isLastAttachmentGiphy","isLastAttachmentImageOrGiphy","title_link","og_scrape_url","isLastAttachmentImage","image_url","thumb_url","ReplyWithContext","props","_quotedMessage$attach","_stylesProp$imageAtta","_stylesProp$imageAtta2","_stylesProp$imageAtta3","_stylesProp$imageAtta4","_stylesProp$fileAttac","FileAttachmentIcon","_props$attachmentSize","attachmentSize","MessageAvatar","quotedMessage","_props$styles","stylesProp","t","_useState","useState","_useState2","_slicedToArray2","error","setError","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","_useTheme$theme$reply","reply","markdownStyles","_useTheme$theme$reply2","videoThumbnail","image","attachments","slice","hasImage","onlyEmojis","emojiRegex","test","createElement","View","style","__self","__source","fileName","lineNumber","columnNumber","alignment","lastGroupMessage","message","size","backgroundColor","borderColor","borderWidth","mimeType","mime_type","Image","onError","source","uri","getResizedImageUrl","url","VideoThumbnail","imageStyle","MessageTextContainer","deleted_at","merge","em","color","_extends2","length","title","marginRight","Number","useMessageInputContextIfAvailable","contextValue","useContext","MessageInputContext","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","MemoizedReply","React","memo","Reply","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_useMessagesContext$F","FileIconDefault","_useMessagesContext$M","MessageAvatarDefault","_useMessageInputConte","editing","quotedEditingMessage","quoted_message","_useTranslationContex","useTranslationContext","exports","displayName"],"sources":["Reply.tsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContext,\n MessageInputContextValue,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { emojiRegex } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { VideoThumbnail } from '../Attachment/VideoThumbnail';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n videoThumbnailContainerStyle: {\n borderRadius: 8,\n height: 50,\n marginLeft: 8,\n marginVertical: 8,\n width: 50,\n },\n videoThumbnailImageStyle: {\n borderRadius: 10,\n },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst getMessageType = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n lastAttachment: Attachment<StreamChatGenerics>,\n) => {\n let messageType;\n\n const isLastAttachmentFile = lastAttachment.type === 'file' || lastAttachment.type === 'audio';\n\n const isLastAttachmentVideo = lastAttachment.type === 'video';\n\n const isLastAttachmentGiphy =\n lastAttachment?.type === 'giphy' || lastAttachment?.type === 'imgur';\n\n const isLastAttachmentImageOrGiphy =\n lastAttachment?.type === 'image' &&\n !lastAttachment?.title_link &&\n !lastAttachment?.og_scrape_url;\n\n const isLastAttachmentImage = lastAttachment?.image_url || lastAttachment?.thumb_url;\n\n if (isLastAttachmentFile) {\n messageType = 'file';\n } else if (isLastAttachmentVideo) {\n messageType = 'video';\n } else if (isLastAttachmentImageOrGiphy) {\n if (isLastAttachmentImage) messageType = 'image';\n else messageType = undefined;\n } else if (isLastAttachmentGiphy) messageType = 'giphy';\n else messageType = 'other';\n\n return messageType;\n};\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n videoThumbnail: {\n container: videoThumbnailContainerStyle,\n image: videoThumbnailImageStyle,\n },\n },\n },\n } = useTheme();\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n const messageType = lastAttachment && getMessageType(lastAttachment);\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n messageType !== 'video' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && !!quotedMessage.text && emojiRegex.test(quotedMessage.text);\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n {messageType === 'video' && !lastAttachment.og_scrape_url ? (\n <VideoThumbnail\n imageStyle={[styles.videoThumbnailImageStyle, videoThumbnailImageStyle]}\n style={[styles.videoThumbnailContainerStyle, videoThumbnailContainerStyle]}\n thumb_url={lastAttachment.thumb_url}\n />\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.deleted_at\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text: quotedMessage.deleted_at\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'video'\n ? t('Video')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight:\n hasImage || messageType === 'video'\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\n/**\n * When a reply is rendered in a MessageSimple, it does\n * not have a MessageInputContext. As this is deliberate,\n * this function exists to avoid the error thrown when\n * using a context outside of its provider.\n * */\nconst useMessageInputContextIfAvailable = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n return contextValue;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContextIfAvailable<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_merge","_interopRequireDefault","_MessageContext","_MessageInputContext","_MessagesContext","_ThemeContext","_TranslationContext","_getResizedImageUrl","_utils","_FileIcon","_VideoThumbnail","_MessageAvatar","_MessageTextContainer","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","container","alignItems","flexDirection","fileAttachmentContainer","paddingLeft","paddingVertical","imageAttachment","borderRadius","height","marginLeft","marginVertical","width","messageContainer","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","flexGrow","flexShrink","text","fontSize","textContainer","maxWidth","undefined","paddingHorizontal","videoThumbnailContainerStyle","videoThumbnailImageStyle","getMessageType","lastAttachment","messageType","isLastAttachmentFile","type","isLastAttachmentVideo","isLastAttachmentGiphy","isLastAttachmentImageOrGiphy","title_link","og_scrape_url","isLastAttachmentImage","image_url","thumb_url","ReplyWithContext","props","_quotedMessage$attach","_stylesProp$imageAtta","_stylesProp$imageAtta2","_stylesProp$imageAtta3","_stylesProp$imageAtta4","_stylesProp$fileAttac","FileAttachmentIcon","_props$attachmentSize","attachmentSize","MessageAvatar","quotedMessage","_props$styles","stylesProp","t","_useState","useState","_useState2","_slicedToArray2","error","setError","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","blue_alice","border","grey","transparent","white","deletedText","messageSimple","content","_useTheme$theme$reply","reply","markdownStyles","_useTheme$theme$reply2","videoThumbnail","image","attachments","slice","hasImage","onlyEmojis","emojiRegex","test","createElement","View","style","__self","__source","fileName","lineNumber","columnNumber","alignment","lastGroupMessage","message","size","backgroundColor","borderColor","borderWidth","mimeType","mime_type","Image","onError","source","uri","getResizedImageUrl","url","VideoThumbnail","imageStyle","MessageTextContainer","merge","em","color","_extends2","length","title","marginRight","Number","useMessageInputContextIfAvailable","contextValue","useContext","MessageInputContext","areEqual","prevProps","nextProps","prevQuotedMessage","nextQuotedMessage","quotedMessageEqual","id","deleted_at","MemoizedReply","React","memo","Reply","_useMessageContext","useMessageContext","_useMessagesContext","useMessagesContext","_useMessagesContext$F","FileIconDefault","_useMessagesContext$M","MessageAvatarDefault","_useMessageInputConte","editing","quotedEditingMessage","quoted_message","_useTranslationContex","useTranslationContext","exports","displayName"],"sources":["Reply.tsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport { Image, ImageStyle, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport merge from 'lodash/merge';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { useMessageContext } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageInputContext,\n MessageInputContextValue,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { emojiRegex } from '../../utils/utils';\n\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { VideoThumbnail } from '../Attachment/VideoThumbnail';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n },\n fileAttachmentContainer: { paddingLeft: 8, paddingVertical: 8 },\n imageAttachment: {\n borderRadius: 8,\n height: 32,\n marginLeft: 8,\n marginVertical: 8,\n width: 32,\n },\n messageContainer: {\n alignItems: 'flex-start',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 12,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n flexGrow: 1,\n flexShrink: 1,\n },\n text: { fontSize: 12 },\n textContainer: { maxWidth: undefined, paddingHorizontal: 8 },\n videoThumbnailContainerStyle: {\n borderRadius: 8,\n height: 50,\n marginLeft: 8,\n marginVertical: 8,\n width: 50,\n },\n videoThumbnailImageStyle: {\n borderRadius: 10,\n },\n});\n\ntype ReplyPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'quotedMessage'> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon' | 'MessageAvatar'> &\n Pick<TranslationContextValue, 't'> & {\n attachmentSize?: number;\n styles?: Partial<{\n container: ViewStyle;\n fileAttachmentContainer: ViewStyle;\n imageAttachment: ImageStyle;\n messageContainer: ViewStyle;\n textContainer: ViewStyle;\n }>;\n };\n\nconst getMessageType = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n lastAttachment: Attachment<StreamChatGenerics>,\n) => {\n let messageType;\n\n const isLastAttachmentFile = lastAttachment.type === 'file' || lastAttachment.type === 'audio';\n\n const isLastAttachmentVideo = lastAttachment.type === 'video';\n\n const isLastAttachmentGiphy =\n lastAttachment?.type === 'giphy' || lastAttachment?.type === 'imgur';\n\n const isLastAttachmentImageOrGiphy =\n lastAttachment?.type === 'image' &&\n !lastAttachment?.title_link &&\n !lastAttachment?.og_scrape_url;\n\n const isLastAttachmentImage = lastAttachment?.image_url || lastAttachment?.thumb_url;\n\n if (isLastAttachmentFile) {\n messageType = 'file';\n } else if (isLastAttachmentVideo) {\n messageType = 'video';\n } else if (isLastAttachmentImageOrGiphy) {\n if (isLastAttachmentImage) messageType = 'image';\n else messageType = undefined;\n } else if (isLastAttachmentGiphy) messageType = 'giphy';\n else messageType = 'other';\n\n return messageType;\n};\n\nconst ReplyWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n FileAttachmentIcon,\n attachmentSize = 40,\n MessageAvatar,\n quotedMessage,\n styles: stylesProp = {},\n t,\n } = props;\n\n const [error, setError] = useState(false);\n\n const {\n theme: {\n colors: { blue_alice, border, grey, transparent, white },\n messageSimple: {\n content: { deletedText },\n },\n reply: {\n container,\n fileAttachmentContainer,\n imageAttachment,\n markdownStyles,\n messageContainer,\n textContainer,\n videoThumbnail: {\n container: videoThumbnailContainerStyle,\n image: videoThumbnailImageStyle,\n },\n },\n },\n } = useTheme();\n\n if (typeof quotedMessage === 'boolean') return null;\n\n const lastAttachment = quotedMessage.attachments?.slice(-1)[0] as Attachment<StreamChatGenerics>;\n const messageType = lastAttachment && getMessageType(lastAttachment);\n\n const hasImage =\n !error &&\n lastAttachment &&\n messageType !== 'file' &&\n messageType !== 'video' &&\n (lastAttachment.image_url || lastAttachment.thumb_url || lastAttachment.og_scrape_url);\n\n const onlyEmojis = !lastAttachment && !!quotedMessage.text && emojiRegex.test(quotedMessage.text);\n\n return (\n <View style={[styles.container, container, stylesProp.container]}>\n <MessageAvatar alignment={'left'} lastGroupMessage message={quotedMessage} size={24} />\n <View\n style={[\n styles.messageContainer,\n {\n backgroundColor:\n messageType === 'other' ? blue_alice : messageType === 'giphy' ? transparent : white,\n borderColor: border,\n borderWidth: messageType === 'other' ? 0 : 1,\n },\n messageContainer,\n stylesProp.messageContainer,\n ]}\n >\n {!error && lastAttachment ? (\n messageType === 'file' ? (\n <View\n style={[\n styles.fileAttachmentContainer,\n fileAttachmentContainer,\n stylesProp.fileAttachmentContainer,\n ]}\n >\n <FileAttachmentIcon mimeType={lastAttachment.mime_type} size={attachmentSize} />\n </View>\n ) : hasImage ? (\n <Image\n onError={() => setError(true)}\n source={{\n uri: getResizedImageUrl({\n height:\n stylesProp.imageAttachment?.height ||\n imageAttachment?.height ||\n styles.imageAttachment.height,\n url: (lastAttachment.image_url ||\n lastAttachment.thumb_url ||\n lastAttachment.og_scrape_url) as string,\n width:\n stylesProp.imageAttachment?.width ||\n imageAttachment?.width ||\n styles.imageAttachment.width,\n }),\n }}\n style={[styles.imageAttachment, imageAttachment, stylesProp.imageAttachment]}\n />\n ) : null\n ) : null}\n {messageType === 'video' && !lastAttachment.og_scrape_url ? (\n <VideoThumbnail\n imageStyle={[styles.videoThumbnailImageStyle, videoThumbnailImageStyle]}\n style={[styles.videoThumbnailContainerStyle, videoThumbnailContainerStyle]}\n thumb_url={lastAttachment.thumb_url}\n />\n ) : null}\n <MessageTextContainer<StreamChatGenerics>\n markdownStyles={\n quotedMessage.type === 'deleted'\n ? merge({ em: { color: grey } }, deletedText)\n : { text: styles.text, ...markdownStyles }\n }\n message={{\n ...quotedMessage,\n text:\n quotedMessage.type === 'deleted'\n ? `_${t('Message deleted')}_`\n : quotedMessage.text\n ? quotedMessage.text.length > 170\n ? `${quotedMessage.text.slice(0, 170)}...`\n : quotedMessage.text\n : messageType === 'image'\n ? t('Photo')\n : messageType === 'video'\n ? t('Video')\n : messageType === 'file'\n ? lastAttachment?.title || ''\n : '',\n }}\n onlyEmojis={onlyEmojis}\n styles={{\n textContainer: [\n {\n marginRight:\n hasImage || messageType === 'video'\n ? Number(\n stylesProp.imageAttachment?.height ||\n imageAttachment.height ||\n styles.imageAttachment.height,\n ) +\n Number(\n stylesProp.imageAttachment?.marginLeft ||\n imageAttachment.marginLeft ||\n styles.imageAttachment.marginLeft,\n )\n : messageType === 'file'\n ? attachmentSize +\n Number(\n stylesProp.fileAttachmentContainer?.paddingLeft ||\n fileAttachmentContainer.paddingLeft ||\n styles.fileAttachmentContainer.paddingLeft,\n )\n : undefined,\n },\n styles.textContainer,\n textContainer,\n stylesProp.textContainer,\n ],\n }}\n />\n </View>\n </View>\n );\n};\n\n/**\n * When a reply is rendered in a MessageSimple, it does\n * not have a MessageInputContext. As this is deliberate,\n * this function exists to avoid the error thrown when\n * using a context outside of its provider.\n * */\nconst useMessageInputContextIfAvailable = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n return contextValue;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReplyPropsWithContext<StreamChatGenerics>,\n nextProps: ReplyPropsWithContext<StreamChatGenerics>,\n) => {\n const { quotedMessage: prevQuotedMessage } = prevProps;\n const { quotedMessage: nextQuotedMessage } = nextProps;\n\n const quotedMessageEqual =\n !!prevQuotedMessage &&\n !!nextQuotedMessage &&\n typeof prevQuotedMessage !== 'boolean' &&\n typeof nextQuotedMessage !== 'boolean'\n ? prevQuotedMessage.id === nextQuotedMessage.id &&\n prevQuotedMessage.deleted_at === nextQuotedMessage.deleted_at &&\n prevQuotedMessage.type === nextQuotedMessage.type\n : !!prevQuotedMessage === !!nextQuotedMessage;\n\n if (!quotedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedReply = React.memo(ReplyWithContext, areEqual) as typeof ReplyWithContext;\n\nexport type ReplyProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ReplyPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for reply\n */\nexport const Reply = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReplyProps<StreamChatGenerics>,\n) => {\n const { message } = useMessageContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon = FileIconDefault, MessageAvatar = MessageAvatarDefault } =\n useMessagesContext<StreamChatGenerics>();\n\n const { editing, quotedMessage } = useMessageInputContextIfAvailable<StreamChatGenerics>();\n\n const quotedEditingMessage = (\n typeof editing !== 'boolean' ? editing?.quoted_message || false : false\n ) as MessageInputContextValue<StreamChatGenerics>['quotedMessage'];\n\n const { t } = useTranslationContext();\n\n return (\n <MemoizedReply\n {...{\n FileAttachmentIcon,\n MessageAvatar,\n quotedMessage: message\n ? (message.quoted_message as MessageInputContextValue<StreamChatGenerics>['quotedMessage'])\n : quotedMessage || quotedEditingMessage,\n t,\n }}\n {...props}\n />\n );\n};\n\nReply.displayName = 'Reply{reply}';\n"],"mappings":"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"}
|