stream-chat-react-native-core 5.18.0-beta.5 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +1 -1
  2. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  3. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js +9 -9
  4. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  5. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js +1 -15
  6. package/lib/commonjs/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/MessageList.js +34 -34
  8. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  9. package/lib/commonjs/version.json +1 -1
  10. package/lib/module/components/Message/MessageSimple/ReactionList.js +1 -1
  11. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  12. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js +9 -9
  13. package/lib/module/components/Message/MessageSimple/utils/parseLinks.js.map +1 -1
  14. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js +1 -15
  15. package/lib/module/components/Message/MessageSimple/utils/parseLinks.test.js.map +1 -1
  16. package/lib/module/components/MessageList/MessageList.js +34 -34
  17. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  18. package/lib/module/version.json +1 -1
  19. package/package.json +2 -2
  20. package/src/components/Message/MessageSimple/ReactionList.tsx +1 -1
  21. package/src/components/Message/MessageSimple/utils/parseLinks.test.ts +2 -26
  22. package/src/components/Message/MessageSimple/utils/parseLinks.ts +7 -7
  23. package/src/components/MessageList/MessageList.tsx +2 -1
  24. package/src/version.json +1 -1
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.parseLinksFromText = void 0;
6
- var _linkifyIt = _interopRequireDefault(require("linkify-it"));
6
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
7
+ var _linkifyjs = require("linkifyjs");
7
8
  var removeMarkdownLinksFromText = function removeMarkdownLinksFromText(input) {
8
9
  return input.replace(/\[[\w\s]+\]\(.*\)/g, '');
9
10
  };
@@ -11,18 +12,17 @@ var removeUserNamesFromText = function removeUserNamesFromText(input) {
11
12
  return input.replace(/^@\w+\.?\w/, '');
12
13
  };
13
14
  var parseLinksFromText = function parseLinksFromText(input) {
14
- var _linkify$match;
15
15
  var strippedInput = [removeMarkdownLinksFromText, removeUserNamesFromText].reduce(function (acc, fn) {
16
16
  return fn(acc);
17
17
  }, input);
18
- var linkify = (0, _linkifyIt["default"])();
19
- var matches = (_linkify$match = linkify.match(strippedInput)) != null ? _linkify$match : [];
20
- var result = matches.map(function (match) {
21
- var raw = match.raw,
22
- url = match.url;
18
+ var links = (0, _linkifyjs.find)(strippedInput, 'url');
19
+ var emails = (0, _linkifyjs.find)(strippedInput, 'email');
20
+ var result = [].concat((0, _toConsumableArray2["default"])(links), (0, _toConsumableArray2["default"])(emails)).map(function (_ref) {
21
+ var href = _ref.href,
22
+ value = _ref.value;
23
23
  return {
24
- encodedUrl: encodeURI(url),
25
- raw: raw
24
+ encodedUrl: encodeURI(href),
25
+ raw: value
26
26
  };
27
27
  });
28
28
  return result;
@@ -1 +1 @@
1
- {"version":3,"names":["_linkifyIt","_interopRequireDefault","require","removeMarkdownLinksFromText","input","replace","removeUserNamesFromText","parseLinksFromText","_linkify$match","strippedInput","reduce","acc","fn","linkify","Linkify","matches","match","result","map","raw","url","encodedUrl","encodeURI","exports"],"sources":["parseLinks.ts"],"sourcesContent":["import Linkify from 'linkify-it';\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 linkify = Linkify();\n const matches = linkify.match(strippedInput) ?? [];\n\n const result: LinkInfo[] = matches.map((match) => {\n const { raw, url } = match;\n return { encodedUrl: encodeURI(url), raw };\n });\n\n return result;\n};\n"],"mappings":";;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,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;EAAA,IAAAI,cAAA;EAC/D,IAAMC,aAAa,GAAG,CAACN,2BAA2B,EAAEG,uBAAuB,CAAC,CAACI,MAAM,CACjF,UAACC,GAAG,EAAEC,EAAE;IAAA,OAAKA,EAAE,CAACD,GAAG,CAAC;EAAA,GACpBP,KACF,CAAC;EAED,IAAMS,OAAO,GAAG,IAAAC,qBAAO,EAAC,CAAC;EACzB,IAAMC,OAAO,IAAAP,cAAA,GAAGK,OAAO,CAACG,KAAK,CAACP,aAAa,CAAC,YAAAD,cAAA,GAAI,EAAE;EAElD,IAAMS,MAAkB,GAAGF,OAAO,CAACG,GAAG,CAAC,UAACF,KAAK,EAAK;IAChD,IAAQG,GAAG,GAAUH,KAAK,CAAlBG,GAAG;MAAEC,GAAG,GAAKJ,KAAK,CAAbI,GAAG;IAChB,OAAO;MAAEC,UAAU,EAAEC,SAAS,CAACF,GAAG,CAAC;MAAED,GAAG,EAAHA;IAAI,CAAC;EAC5C,CAAC,CAAC;EAEF,OAAOF,MAAM;AACf,CAAC;AAACM,OAAA,CAAAhB,kBAAA,GAAAA,kBAAA"}
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,6 +1,6 @@
1
1
  var _parseLinks = require("./parseLinks");
2
2
  describe('parseLinksFromText', function () {
3
- it.each([['https://www.getstream.io', 'https://www.getstream.io'], ['https://getstream.io', 'https://getstream.io'], ['scrn://team-chat', undefined], ['https://localhost', 'https://localhost'], ['https://localhost/with/path?and=query&multiple=params', 'https://localhost/with/path?and=query&multiple=params'], ['https://localhost/with/path?and=query#fragment', 'https://localhost/with/path?and=query#fragment'], ['reactnative.stream', undefined], ['https://zh.wikipedia.org/wiki/挪威牛油危機', 'https://zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F'], ['https://getstream.io/chat/docs/react-native/?language=javascript', 'https://getstream.io/chat/docs/react-native/?language=javascript'], ['127.0.0.1/local_(development)_server', undefined], ['https://a.co:8999/ab.php?p=12', 'https://a.co:8999/ab.php?p=12'], ['https://help.apple.com/xcode/mac/current/#/devba7f53ad4', 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4']])('Returns the encoded value of %p as %p', function (link, expected) {
3
+ it.each([['https://www.getstream.io', 'https://www.getstream.io'], ['https://getstream.io', 'https://getstream.io'], ['scrn://team-chat', undefined], ['https://localhost', 'https://localhost'], ['https://localhost/with/path?and=query&multiple=params', 'https://localhost/with/path?and=query&multiple=params'], ['https://localhost/with/path?and=query#fragment', 'https://localhost/with/path?and=query#fragment'], ['reactnative.dev', 'http://reactnative.dev'], ['hinge.health/schedule-with-a-coach', 'http://hinge.health/schedule-with-a-coach'], ['https://zh.wikipedia.org/wiki/挪威牛油危機', 'https://zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F'], ['https://getstream.io/chat/docs/react-native/?language=javascript', 'https://getstream.io/chat/docs/react-native/?language=javascript'], ['127.0.0.1/local_(development)_server', undefined], ['https://a.co:8999/ab.php?p=12', 'https://a.co:8999/ab.php?p=12'], ['https://help.apple.com/xcode/mac/current/#/devba7f53ad4', 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4']])('Returns the encoded value of %p as %p', function (link, expected) {
4
4
  var _result$;
5
5
  var result = (0, _parseLinks.parseLinksFromText)(link);
6
6
  expect((_result$ = result[0]) == null ? void 0 : _result$.encodedUrl).toBe(expected);
@@ -42,19 +42,5 @@ describe('parseLinksFromText', function () {
42
42
  raw: input
43
43
  });
44
44
  });
45
- it('doest not report invalid tlds as urls', function () {
46
- var input = "\n %\n % Not links\n %\n example.invalid\n example.invalid/\n http://.example.com\n http://-example.com\n hppt://example.com\n example.coma\n -example.coma\n ";
47
- var result = (0, _parseLinks.parseLinksFromText)(input);
48
- expect(result).toHaveLength(0);
49
- });
50
- it('does not parse a decimal number as a URL', function () {
51
- var input = '123.456';
52
- var result = (0, _parseLinks.parseLinksFromText)(input);
53
- expect(result).toHaveLength(0);
54
- });
55
- it.each([['@user'], ['@user.name']])('does not parse %p as a URL', function (input) {
56
- var result = (0, _parseLinks.parseLinksFromText)(input);
57
- expect(result).toHaveLength(0);
58
- });
59
45
  });
60
46
  //# sourceMappingURL=parseLinks.test.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_parseLinks","require","describe","it","each","undefined","link","expected","_result$","result","parseLinksFromText","expect","encodedUrl","toBe","input","toEqual","raw","email","console","log","toHaveLength"],"sources":["parseLinks.test.ts"],"sourcesContent":["import { parseLinksFromText } from './parseLinks';\n\ndescribe('parseLinksFromText', () => {\n it.each([\n ['https://www.getstream.io', 'https://www.getstream.io'],\n ['https://getstream.io', 'https://getstream.io'],\n ['scrn://team-chat', undefined],\n ['https://localhost', 'https://localhost'],\n [\n 'https://localhost/with/path?and=query&multiple=params',\n 'https://localhost/with/path?and=query&multiple=params',\n ],\n [\n 'https://localhost/with/path?and=query#fragment',\n 'https://localhost/with/path?and=query#fragment',\n ],\n ['reactnative.stream', undefined],\n [\n 'https://zh.wikipedia.org/wiki/挪威牛油危機',\n 'https://zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F',\n ],\n [\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n ],\n ['127.0.0.1/local_(development)_server', undefined],\n ['https://a.co:8999/ab.php?p=12', 'https://a.co:8999/ab.php?p=12'],\n [\n 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n ],\n ])('Returns the encoded value of %p as %p', (link, expected) => {\n const result = parseLinksFromText(link);\n expect(result[0]?.encodedUrl).toBe(expected);\n });\n it('parses fqdn', () => {\n const input = `We have put the apim bol,\n temporarily so :sj: we can later put the monitors on my grasp\n on reality right now is\n https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier\n :)`;\n const result = parseLinksFromText(input);\n expect(result).toEqual([\n {\n encodedUrl:\n 'https://www.contrived-example.com:8080/sub/page.php?p1=1%F0%9F%87%B3%F0%9F%87%B4&p2=2#fragment-identifier',\n raw: 'https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier',\n },\n ]);\n });\n it.each([\n ['support+rn@getstream.io'],\n ['support.rn@getstream.io'],\n ['support-rn@getstream.io'],\n ['support_rn@getstream.io'],\n ])('Can parse the email address %p', (email) => {\n const result = parseLinksFromText(email);\n expect(result[0].encodedUrl).toBe('mailto:' + email);\n expect(result[0].raw).toBe(email);\n });\n it(\"doesn't double the mailto prefix\", () => {\n const input = 'mailto:support@getstream.io';\n const result = parseLinksFromText(input);\n expect(result[0]).toEqual({\n encodedUrl: input,\n raw: input,\n });\n });\n it('Does not falsely parse LINKs from text content', () => {\n const input = `#This string exists to test that we don't produce false positives\n Existing links:\n [already a parsed link](https://getstream.io/blog/react-native-how-to-build-bidirectional-infinite-scroll/)\n [even a bogus one]( should not match )\n ## These should, however, be parsed:\n www.getstream.io\n getstream.io\n `;\n const result = parseLinksFromText(input);\n console.log({ result });\n expect(result).toHaveLength(2);\n });\n it('Encodes incomplete emoji unicode', () => {\n const input = 'https://getstream.io/�';\n const result = parseLinksFromText(input);\n expect(result[0]).toEqual({\n encodedUrl: 'https://getstream.io/%EF%BF%BD',\n raw: input,\n });\n });\n it('doest not report invalid tlds as urls', () => {\n const input = `\n %\n % Not links\n %\n example.invalid\n example.invalid/\n http://.example.com\n http://-example.com\n hppt://example.com\n example.coma\n -example.coma\n `;\n const result = parseLinksFromText(input);\n expect(result).toHaveLength(0);\n });\n it('does not parse a decimal number as a URL', () => {\n const input = '123.456';\n const result = parseLinksFromText(input);\n expect(result).toHaveLength(0);\n });\n it.each([['@user'], ['@user.name']])('does not parse %p as a URL', (input) => {\n const result = parseLinksFromText(input);\n expect(result).toHaveLength(0);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_parseLinks","require","describe","it","each","undefined","link","expected","_result$","result","parseLinksFromText","expect","encodedUrl","toBe","input","toEqual","raw","email","console","log","toHaveLength"],"sources":["parseLinks.test.ts"],"sourcesContent":["import { parseLinksFromText } from './parseLinks';\n\ndescribe('parseLinksFromText', () => {\n it.each([\n ['https://www.getstream.io', 'https://www.getstream.io'],\n ['https://getstream.io', 'https://getstream.io'],\n ['scrn://team-chat', undefined],\n ['https://localhost', 'https://localhost'],\n [\n 'https://localhost/with/path?and=query&multiple=params',\n 'https://localhost/with/path?and=query&multiple=params',\n ],\n [\n 'https://localhost/with/path?and=query#fragment',\n 'https://localhost/with/path?and=query#fragment',\n ],\n ['reactnative.dev', 'http://reactnative.dev'],\n ['hinge.health/schedule-with-a-coach', 'http://hinge.health/schedule-with-a-coach'],\n [\n 'https://zh.wikipedia.org/wiki/挪威牛油危機',\n 'https://zh.wikipedia.org/wiki/%E6%8C%AA%E5%A8%81%E7%89%9B%E6%B2%B9%E5%8D%B1%E6%A9%9F',\n ],\n [\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n 'https://getstream.io/chat/docs/react-native/?language=javascript',\n ],\n ['127.0.0.1/local_(development)_server', undefined],\n ['https://a.co:8999/ab.php?p=12', 'https://a.co:8999/ab.php?p=12'],\n [\n 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n 'https://help.apple.com/xcode/mac/current/#/devba7f53ad4',\n ],\n ])('Returns the encoded value of %p as %p', (link, expected) => {\n const result = parseLinksFromText(link);\n expect(result[0]?.encodedUrl).toBe(expected);\n });\n it('parses fqdn', () => {\n const input = `We have put the apim bol,\n temporarily so :sj: we can later put the monitors on my grasp\n on reality right now is\n https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier\n :)`;\n const result = parseLinksFromText(input);\n expect(result).toEqual([\n {\n encodedUrl:\n 'https://www.contrived-example.com:8080/sub/page.php?p1=1%F0%9F%87%B3%F0%9F%87%B4&p2=2#fragment-identifier',\n raw: 'https://www.contrived-example.com:8080/sub/page.php?p1=1🇳🇴&p2=2#fragment-identifier',\n },\n ]);\n });\n it.each([\n ['support+rn@getstream.io'],\n ['support.rn@getstream.io'],\n ['support-rn@getstream.io'],\n ['support_rn@getstream.io'],\n ])('Can parse the email address %p', (email) => {\n const result = parseLinksFromText(email);\n expect(result[0].encodedUrl).toBe('mailto:' + email);\n expect(result[0].raw).toBe(email);\n });\n it(\"doesn't double the mailto prefix\", () => {\n const input = 'mailto:support@getstream.io';\n const result = parseLinksFromText(input);\n expect(result[0]).toEqual({\n encodedUrl: input,\n raw: input,\n });\n });\n it('Does not falsely parse LINKs from text content', () => {\n const input = `#This string exists to test that we don't produce false positives\n Existing links:\n [already a parsed link](https://getstream.io/blog/react-native-how-to-build-bidirectional-infinite-scroll/)\n [even a bogus one]( should not match )\n ## These should, however, be parsed:\n www.getstream.io\n getstream.io\n `;\n const result = parseLinksFromText(input);\n console.log({ result });\n expect(result).toHaveLength(2);\n });\n it('Encodes incomplete emoji unicode', () => {\n const input = 'https://getstream.io/�';\n const result = parseLinksFromText(input);\n expect(result[0]).toEqual({\n encodedUrl: 'https://getstream.io/%EF%BF%BD',\n raw: input,\n });\n });\n});\n"],"mappings":"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"}
@@ -306,7 +306,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
306
306
  return false;
307
307
  }
308
308
  var isCurrentMessageUnread = isMessageUnread(index);
309
- var showUnreadUnderlay = isCurrentMessageUnread && scrollToBottomButtonVisible;
309
+ var showUnreadUnderlay = !channel.muteStatus().muted && isCurrentMessageUnread && scrollToBottomButtonVisible;
310
310
  var insertInlineUnreadIndicator = showUnreadUnderlay && !isMessageUnread(index + 1);
311
311
  if (message.type === 'system') {
312
312
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -314,7 +314,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
314
314
  __self: _this,
315
315
  __source: {
316
316
  fileName: _jsxFileName,
317
- lineNumber: 562,
317
+ lineNumber: 563,
318
318
  columnNumber: 11
319
319
  }
320
320
  }, _react["default"].createElement(MessageSystem, {
@@ -325,14 +325,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
325
325
  __self: _this,
326
326
  __source: {
327
327
  fileName: _jsxFileName,
328
- lineNumber: 563,
328
+ lineNumber: 564,
329
329
  columnNumber: 13
330
330
  }
331
331
  })), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
332
332
  __self: _this,
333
333
  __source: {
334
334
  fileName: _jsxFileName,
335
- lineNumber: 568,
335
+ lineNumber: 569,
336
336
  columnNumber: 43
337
337
  }
338
338
  }));
@@ -343,7 +343,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
343
343
  __self: _this,
344
344
  __source: {
345
345
  fileName: _jsxFileName,
346
- lineNumber: 578,
346
+ lineNumber: 579,
347
347
  columnNumber: 36
348
348
  }
349
349
  }), _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -351,7 +351,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
351
351
  __self: _this,
352
352
  __source: {
353
353
  fileName: _jsxFileName,
354
- lineNumber: 579,
354
+ lineNumber: 580,
355
355
  columnNumber: 9
356
356
  }
357
357
  }, _react["default"].createElement(_reactNative.View, {
@@ -359,7 +359,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
359
359
  __self: _this,
360
360
  __source: {
361
361
  fileName: _jsxFileName,
362
- lineNumber: 580,
362
+ lineNumber: 581,
363
363
  columnNumber: 11
364
364
  }
365
365
  }, _react["default"].createElement(Message, {
@@ -377,7 +377,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
377
377
  __self: _this,
378
378
  __source: {
379
379
  fileName: _jsxFileName,
380
- lineNumber: 581,
380
+ lineNumber: 582,
381
381
  columnNumber: 13
382
382
  }
383
383
  }))), !shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
@@ -385,14 +385,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
385
385
  __self: _this,
386
386
  __source: {
387
387
  fileName: _jsxFileName,
388
- lineNumber: 598,
388
+ lineNumber: 599,
389
389
  columnNumber: 36
390
390
  }
391
391
  }), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
392
392
  __self: _this,
393
393
  __source: {
394
394
  fileName: _jsxFileName,
395
- lineNumber: 600,
395
+ lineNumber: 601,
396
396
  columnNumber: 41
397
397
  }
398
398
  })) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -400,7 +400,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
400
400
  __self: _this,
401
401
  __source: {
402
402
  fileName: _jsxFileName,
403
- lineNumber: 604,
403
+ lineNumber: 605,
404
404
  columnNumber: 9
405
405
  }
406
406
  }, shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
@@ -408,7 +408,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
408
408
  __self: _this,
409
409
  __source: {
410
410
  fileName: _jsxFileName,
411
- lineNumber: 607,
411
+ lineNumber: 608,
412
412
  columnNumber: 38
413
413
  }
414
414
  }), _react["default"].createElement(Message, {
@@ -426,7 +426,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
426
426
  __self: _this,
427
427
  __source: {
428
428
  fileName: _jsxFileName,
429
- lineNumber: 608,
429
+ lineNumber: 609,
430
430
  columnNumber: 11
431
431
  }
432
432
  })), !shouldApplyAndroidWorkaround && (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && _react["default"].createElement(InlineDateSeparator, {
@@ -434,14 +434,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
434
434
  __self: _this,
435
435
  __source: {
436
436
  fileName: _jsxFileName,
437
- lineNumber: 628,
437
+ lineNumber: 629,
438
438
  columnNumber: 36
439
439
  }
440
440
  }), insertInlineUnreadIndicator && _react["default"].createElement(InlineUnreadIndicator, {
441
441
  __self: _this,
442
442
  __source: {
443
443
  fileName: _jsxFileName,
444
- lineNumber: 630,
444
+ lineNumber: 631,
445
445
  columnNumber: 41
446
446
  }
447
447
  }));
@@ -749,7 +749,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
749
749
  __self: _this,
750
750
  __source: {
751
751
  fileName: _jsxFileName,
752
- lineNumber: 1007,
752
+ lineNumber: 1008,
753
753
  columnNumber: 7
754
754
  }
755
755
  }, _react["default"].createElement(EmptyStateIndicator, {
@@ -757,7 +757,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
757
757
  __self: _this,
758
758
  __source: {
759
759
  fileName: _jsxFileName,
760
- lineNumber: 1011,
760
+ lineNumber: 1012,
761
761
  columnNumber: 9
762
762
  }
763
763
  }));
@@ -768,14 +768,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
768
768
  __self: _this,
769
769
  __source: {
770
770
  fileName: _jsxFileName,
771
- lineNumber: 1019,
771
+ lineNumber: 1020,
772
772
  columnNumber: 7
773
773
  }
774
774
  }, _react["default"].createElement(FooterComponent, {
775
775
  __self: _this,
776
776
  __source: {
777
777
  fileName: _jsxFileName,
778
- lineNumber: 1020,
778
+ lineNumber: 1021,
779
779
  columnNumber: 9
780
780
  }
781
781
  }));
@@ -786,14 +786,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
786
786
  __self: _this,
787
787
  __source: {
788
788
  fileName: _jsxFileName,
789
- lineNumber: 1028,
789
+ lineNumber: 1029,
790
790
  columnNumber: 7
791
791
  }
792
792
  }, _react["default"].createElement(HeaderComponent, {
793
793
  __self: _this,
794
794
  __source: {
795
795
  fileName: _jsxFileName,
796
- lineNumber: 1029,
796
+ lineNumber: 1030,
797
797
  columnNumber: 9
798
798
  }
799
799
  }));
@@ -805,7 +805,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
805
805
  __self: _this,
806
806
  __source: {
807
807
  fileName: _jsxFileName,
808
- lineNumber: 1039,
808
+ lineNumber: 1040,
809
809
  columnNumber: 7
810
810
  }
811
811
  }, _react["default"].createElement(LoadingIndicator, {
@@ -813,7 +813,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
813
813
  __self: _this,
814
814
  __source: {
815
815
  fileName: _jsxFileName,
816
- lineNumber: 1040,
816
+ lineNumber: 1041,
817
817
  columnNumber: 9
818
818
  }
819
819
  }));
@@ -825,7 +825,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
825
825
  __self: _this,
826
826
  __source: {
827
827
  fileName: _jsxFileName,
828
- lineNumber: 1047,
828
+ lineNumber: 1048,
829
829
  columnNumber: 30
830
830
  }
831
831
  });
@@ -834,7 +834,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
834
834
  __self: _this,
835
835
  __source: {
836
836
  fileName: _jsxFileName,
837
- lineNumber: 1048,
837
+ lineNumber: 1049,
838
838
  columnNumber: 46
839
839
  }
840
840
  });
@@ -855,7 +855,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
855
855
  __self: _this,
856
856
  __source: {
857
857
  fileName: _jsxFileName,
858
- lineNumber: 1064,
858
+ lineNumber: 1065,
859
859
  columnNumber: 5
860
860
  }
861
861
  }, _react["default"].createElement(FlatList, (0, _extends2["default"])({
@@ -891,7 +891,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
891
891
  __self: _this,
892
892
  __source: {
893
893
  fileName: _jsxFileName,
894
- lineNumber: 1068,
894
+ lineNumber: 1069,
895
895
  columnNumber: 7
896
896
  }
897
897
  })), !loading && _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_reactNative.View, {
@@ -899,28 +899,28 @@ var MessageListWithContext = function MessageListWithContext(props) {
899
899
  __self: _this,
900
900
  __source: {
901
901
  fileName: _jsxFileName,
902
- lineNumber: 1113,
902
+ lineNumber: 1114,
903
903
  columnNumber: 11
904
904
  }
905
905
  }, _react["default"].createElement(StickyHeaderComponent, {
906
906
  __self: _this,
907
907
  __source: {
908
908
  fileName: _jsxFileName,
909
- lineNumber: 1114,
909
+ lineNumber: 1115,
910
910
  columnNumber: 13
911
911
  }
912
912
  })), !disableTypingIndicator && TypingIndicator && _react["default"].createElement(TypingIndicatorContainer, {
913
913
  __self: _this,
914
914
  __source: {
915
915
  fileName: _jsxFileName,
916
- lineNumber: 1117,
916
+ lineNumber: 1118,
917
917
  columnNumber: 13
918
918
  }
919
919
  }, _react["default"].createElement(TypingIndicator, {
920
920
  __self: _this,
921
921
  __source: {
922
922
  fileName: _jsxFileName,
923
- lineNumber: 1118,
923
+ lineNumber: 1119,
924
924
  columnNumber: 15
925
925
  }
926
926
  })), _react["default"].createElement(ScrollToBottomButton, {
@@ -930,14 +930,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
930
930
  __self: _this,
931
931
  __source: {
932
932
  fileName: _jsxFileName,
933
- lineNumber: 1121,
933
+ lineNumber: 1122,
934
934
  columnNumber: 11
935
935
  }
936
936
  })), _react["default"].createElement(NetworkDownIndicator, {
937
937
  __self: _this,
938
938
  __source: {
939
939
  fileName: _jsxFileName,
940
- lineNumber: 1128,
940
+ lineNumber: 1129,
941
941
  columnNumber: 7
942
942
  }
943
943
  }));
@@ -1044,7 +1044,7 @@ var MessageList = function MessageList(props) {
1044
1044
  __self: _this,
1045
1045
  __source: {
1046
1046
  fileName: _jsxFileName,
1047
- lineNumber: 1186,
1047
+ lineNumber: 1187,
1048
1048
  columnNumber: 5
1049
1049
  }
1050
1050
  }));