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.
Files changed (55) hide show
  1. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
  2. package/lib/commonjs/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
  3. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +3 -3
  4. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  5. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +24 -41
  6. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  7. package/lib/commonjs/components/Reply/Reply.js +4 -4
  8. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  9. package/lib/commonjs/i18n/fr.json +22 -22
  10. package/lib/commonjs/i18n/hi.json +22 -22
  11. package/lib/commonjs/i18n/it.json +22 -22
  12. package/lib/commonjs/i18n/nl.json +22 -22
  13. package/lib/commonjs/i18n/ru.json +23 -23
  14. package/lib/commonjs/i18n/tr.json +23 -23
  15. package/lib/commonjs/utils/utils.js +2 -1
  16. package/lib/commonjs/utils/utils.js.map +1 -1
  17. package/lib/commonjs/version.json +1 -1
  18. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js +32 -0
  19. package/lib/module/components/Message/MessageSimple/utils/generateMarkdownText.js.map +1 -0
  20. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +3 -3
  21. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  22. package/lib/module/components/Message/MessageSimple/utils/renderText.js +24 -41
  23. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  24. package/lib/module/components/Reply/Reply.js +4 -4
  25. package/lib/module/components/Reply/Reply.js.map +1 -1
  26. package/lib/module/i18n/fr.json +22 -22
  27. package/lib/module/i18n/hi.json +22 -22
  28. package/lib/module/i18n/it.json +22 -22
  29. package/lib/module/i18n/nl.json +22 -22
  30. package/lib/module/i18n/ru.json +23 -23
  31. package/lib/module/i18n/tr.json +23 -23
  32. package/lib/module/utils/utils.js +2 -1
  33. package/lib/module/utils/utils.js.map +1 -1
  34. package/lib/module/version.json +1 -1
  35. package/lib/typescript/components/Message/MessageSimple/utils/generateMarkdownText.d.ts +3 -0
  36. package/lib/typescript/components/Message/MessageSimple/utils/renderText.d.ts +1 -1
  37. package/lib/typescript/i18n/fr.json +22 -22
  38. package/lib/typescript/i18n/hi.json +22 -22
  39. package/lib/typescript/i18n/it.json +22 -22
  40. package/lib/typescript/i18n/nl.json +22 -22
  41. package/lib/typescript/i18n/ru.json +23 -23
  42. package/lib/typescript/i18n/tr.json +23 -23
  43. package/package.json +1 -1
  44. package/src/components/Message/MessageSimple/utils/generateMarkdownText.ts +43 -0
  45. package/src/components/Message/MessageSimple/utils/parseLinks.ts +5 -5
  46. package/src/components/Message/MessageSimple/utils/renderText.tsx +10 -26
  47. package/src/components/Reply/Reply.tsx +16 -14
  48. package/src/i18n/fr.json +22 -22
  49. package/src/i18n/hi.json +22 -22
  50. package/src/i18n/it.json +22 -22
  51. package/src/i18n/nl.json +22 -22
  52. package/src/i18n/ru.json +23 -23
  53. package/src/i18n/tr.json +23 -23
  54. package/src/utils/utils.ts +2 -1
  55. 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 removeUserNamesFromText = function removeUserNamesFromText(input) {
12
- return input.replace(/^@\w+\.?\w/, '');
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, removeUserNamesFromText].reduce(function (acc, fn) {
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","removeUserNamesFromText","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 * Hermes doesn't support lookbehind, so this is done separately to avoid\n * parsing user names as links.\n * */\nconst removeUserNamesFromText = (input: string) => input.replace(/^@\\w+\\.?\\w/, '');\n\nexport const parseLinksFromText = (input: string): LinkInfo[] => {\n const strippedInput = [removeMarkdownLinksFromText, removeUserNamesFromText].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;AAM9F,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIF,KAAa;EAAA,OAAKA,KAAK,CAACC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;AAAA;AAE3E,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIH,KAAa,EAAiB;EAC/D,IAAMI,aAAa,GAAG,CAACL,2BAA2B,EAAEG,uBAAuB,CAAC,CAACG,MAAM,CACjF,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"}
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 _parseLinks = require("./parseLinks");
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 parse = function parse(capture, _parse, state) {
50
+ var mentionsParseFunction = function mentionsParseFunction(capture, parse, state) {
55
51
  return {
56
- content: (0, _simpleMarkdown.parseInline)(_parse, capture[0], state)
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 mentioned_users = message.mentioned_users,
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: 189,
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: 207,
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: 217,
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 match = function match(source) {
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: 269,
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: 278,
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: match,
261
+ match: mentionsMatchFunction,
279
262
  order: _simpleMarkdown.defaultRules.text.order - 0.5,
280
- parse: 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: 310,
275
+ lineNumber: 294,
293
276
  columnNumber: 5
294
277
  }
295
- }, newText);
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: 345,
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: 351,
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: 352,
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: 365,
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: 366,
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: 370,
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: 385,
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: 391,
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: 395,
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.deleted_at ? (0, _merge["default"])({
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.deleted_at ? "_" + 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) || '' : ''
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: 347,
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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"}