stream-chat-react 11.0.0-rc.4 → 11.0.0-rc.6

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 (47) hide show
  1. package/dist/browser.full-bundle.js +110 -46
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +5 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Emojis/EmojiPicker.d.ts +14 -1
  6. package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -1
  7. package/dist/components/Emojis/EmojiPicker.js +7 -10
  8. package/dist/components/Emojis/index.cjs.js +8 -11
  9. package/dist/components/Message/renderText/index.d.ts +3 -1
  10. package/dist/components/Message/renderText/index.d.ts.map +1 -1
  11. package/dist/components/Message/renderText/index.js +2 -1
  12. package/dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.d.ts +3 -0
  13. package/dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.d.ts.map +1 -0
  14. package/dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.js +10 -0
  15. package/dist/components/Message/renderText/rehypePlugins/index.d.ts +3 -0
  16. package/dist/components/Message/renderText/rehypePlugins/index.d.ts.map +1 -0
  17. package/dist/components/Message/renderText/rehypePlugins/index.js +2 -0
  18. package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +5 -0
  19. package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts.map +1 -0
  20. package/dist/components/Message/renderText/{rehypePlugins.js → rehypePlugins/mentionsMarkdownPlugin.js} +1 -9
  21. package/dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.d.ts +3 -0
  22. package/dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.d.ts.map +1 -0
  23. package/dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.js +10 -0
  24. package/dist/components/Message/renderText/remarkPlugins/index.d.ts +3 -0
  25. package/dist/components/Message/renderText/remarkPlugins/index.d.ts.map +1 -0
  26. package/dist/components/Message/renderText/remarkPlugins/index.js +2 -0
  27. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.d.ts +3 -0
  28. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.d.ts.map +1 -0
  29. package/dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js +32 -0
  30. package/dist/components/Message/renderText/types.d.ts +3 -0
  31. package/dist/components/Message/renderText/types.d.ts.map +1 -0
  32. package/dist/components/Message/renderText/types.js +1 -0
  33. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  34. package/dist/components/MessageList/MessageList.js +2 -1
  35. package/dist/context/MessageListContext.d.ts +16 -0
  36. package/dist/context/MessageListContext.d.ts.map +1 -0
  37. package/dist/context/MessageListContext.js +17 -0
  38. package/dist/context/index.d.ts +1 -0
  39. package/dist/context/index.d.ts.map +1 -1
  40. package/dist/context/index.js +1 -0
  41. package/dist/{icons-5ee8c22b.js → icons-427fd8d5.js} +20 -0
  42. package/dist/index.cjs.js +77 -31
  43. package/dist/version.d.ts +1 -1
  44. package/dist/version.js +1 -1
  45. package/package.json +11 -4
  46. package/dist/components/Message/renderText/rehypePlugins.d.ts +0 -7
  47. package/dist/components/Message/renderText/rehypePlugins.d.ts.map +0 -1
package/dist/index.cjs.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var icons = require('./icons-5ee8c22b.js');
5
+ var icons = require('./icons-427fd8d5.js');
6
6
  var React = require('react');
7
7
  var ReactPlayer = require('react-player');
8
8
  var prettybytes = require('pretty-bytes');
@@ -3388,6 +3388,28 @@ var DefaultSuggestionListHeader = function (props) {
3388
3388
  return null;
3389
3389
  };
3390
3390
 
3391
+ function escapeRegExp(text) {
3392
+ return text.replace(/[-[\]{}()*+?.,/\\^$|#]/g, '\\$&');
3393
+ }
3394
+ var detectHttp = /(http(s?):\/\/)?(www\.)?/;
3395
+ var messageCodeBlocks = function (message) {
3396
+ var codeRegex = /```[a-z]*\n[\s\S]*?\n```|`[a-z]*[\s\S]*?`/gm;
3397
+ var matches = message.match(codeRegex);
3398
+ return matches || [];
3399
+ };
3400
+ var matchMarkdownLinks = function (message) {
3401
+ var regexMdLinks = /\[([^[]+)\](\(.*\))/gm;
3402
+ var matches = message.match(regexMdLinks);
3403
+ var singleMatch = /\[([^[]+)\]\((.*)\)/;
3404
+ var links = matches
3405
+ ? matches.map(function (match) {
3406
+ var i = singleMatch.exec(match);
3407
+ return i && [i[1], i[2]];
3408
+ })
3409
+ : [];
3410
+ return links.flat();
3411
+ };
3412
+
3391
3413
  /**
3392
3414
  * @typedef {import('unist').Node} Node
3393
3415
  * @typedef {import('unist').Parent} Parent
@@ -4111,6 +4133,14 @@ var u = /**
4111
4133
  }
4112
4134
  );
4113
4135
 
4136
+ var emojiMarkdownPlugin = function () {
4137
+ var replace = function (match) {
4138
+ return u('element', { tagName: 'emoji' }, [u('text', match)]);
4139
+ };
4140
+ var transform = function (node) { return findAndReplace$1(node, emojiRegex__default["default"](), replace); };
4141
+ return transform;
4142
+ };
4143
+
4114
4144
  /**
4115
4145
  * @param {string} d
4116
4146
  * @returns {string}
@@ -4331,28 +4361,6 @@ const visit =
4331
4361
  }
4332
4362
  );
4333
4363
 
4334
- function escapeRegExp(text) {
4335
- return text.replace(/[-[\]{}()*+?.,/\\^$|#]/g, '\\$&');
4336
- }
4337
- var detectHttp = /(http(s?):\/\/)?(www\.)?/;
4338
- var messageCodeBlocks = function (message) {
4339
- var codeRegex = /```[a-z]*\n[\s\S]*?\n```|`[a-z]*[\s\S]*?`/gm;
4340
- var matches = message.match(codeRegex);
4341
- return matches || [];
4342
- };
4343
- var matchMarkdownLinks = function (message) {
4344
- var regexMdLinks = /\[([^[]+)\](\(.*\))/gm;
4345
- var matches = message.match(regexMdLinks);
4346
- var singleMatch = /\[([^[]+)\]\((.*)\)/;
4347
- var links = matches
4348
- ? matches.map(function (match) {
4349
- var i = singleMatch.exec(match);
4350
- return i && [i[1], i[2]];
4351
- })
4352
- : [];
4353
- return links.flat();
4354
- };
4355
-
4356
4364
  var mentionsMarkdownPlugin = function (mentioned_users) { return function () {
4357
4365
  var mentioned_usernames = mentioned_users
4358
4366
  .map(function (user) { return user.name || user.id; })
@@ -4401,13 +4409,46 @@ var mentionsMarkdownPlugin = function (mentioned_users) { return function () {
4401
4409
  };
4402
4410
  return transform;
4403
4411
  }; };
4404
- var emojiMarkdownPlugin = function () {
4405
- var replace = function (match) {
4406
- return u('element', { tagName: 'emoji' }, [u('text', match)]);
4407
- };
4408
- var transform = function (node) { return findAndReplace$1(node, emojiRegex__default["default"](), replace); };
4409
- return transform;
4412
+
4413
+ var visitor$1 = function (node) {
4414
+ if (node.type !== 'html')
4415
+ return;
4416
+ node.type = 'text';
4417
+ };
4418
+ var transform$1 = function (tree) {
4419
+ visit(tree, visitor$1);
4420
+ };
4421
+ var htmlToTextPlugin = function () { return transform$1; };
4422
+
4423
+ var visitor = function (node, index, parent) {
4424
+ if (index === null || index === 0)
4425
+ return;
4426
+ if (!parent)
4427
+ return;
4428
+ if (!node.position)
4429
+ return;
4430
+ var prevSibling = parent.children.at(index - 1);
4431
+ if (!(prevSibling === null || prevSibling === void 0 ? void 0 : prevSibling.position))
4432
+ return;
4433
+ if (node.position.start.line === prevSibling.position.start.line)
4434
+ return false;
4435
+ var ownStartLine = node.position.start.line;
4436
+ var prevEndLine = prevSibling.position.end.line;
4437
+ // the -1 is adjustment for the single line break into which multiple line breaks are converted
4438
+ var countTruncatedLineBreaks = ownStartLine - prevEndLine - 1;
4439
+ if (countTruncatedLineBreaks < 1)
4440
+ return;
4441
+ var lineBreaks = Array.from({ length: countTruncatedLineBreaks }, function () {
4442
+ return u('break', { tagName: 'br' });
4443
+ });
4444
+ // @ts-ignore
4445
+ parent.children = icons.__spreadArray(icons.__spreadArray(icons.__spreadArray([], parent.children.slice(0, index), true), lineBreaks, true), parent.children.slice(index), true);
4446
+ return;
4410
4447
  };
4448
+ var transform = function (tree) {
4449
+ visit(tree, visitor);
4450
+ };
4451
+ var keepLineBreaksPlugin = function () { return transform; };
4411
4452
 
4412
4453
  const protocols = ['http', 'https', 'mailto', 'tel'];
4413
4454
 
@@ -31949,7 +31990,7 @@ var UnMemoizedChannelList = function (props) {
31949
31990
  */
31950
31991
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
31951
31992
 
31952
- var version = '11.0.0-rc.4';
31993
+ var version = '11.0.0-rc.6';
31953
31994
 
31954
31995
  var useChat = function (_a) {
31955
31996
  var _b, _c;
@@ -33403,7 +33444,7 @@ var MessageListWithContext = function (props) {
33403
33444
  }
33404
33445
  }, [highlightedMessageId]);
33405
33446
  var showEmptyStateIndicator = elements.length === 0 && !threadList;
33406
- return (React__default["default"].createElement(React__default["default"].Fragment, null,
33447
+ return (React__default["default"].createElement(icons.MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
33407
33448
  React__default["default"].createElement(MessageListMainPanel, null,
33408
33449
  React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator$1, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, icons.__assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator$1, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
33409
33450
  React__default["default"].createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
@@ -34058,6 +34099,8 @@ exports.LoadingIndicatorIcon = icons.LoadingIndicatorIcon;
34058
34099
  exports.MessageContext = icons.MessageContext;
34059
34100
  exports.MessageInputContext = icons.MessageInputContext;
34060
34101
  exports.MessageInputContextProvider = icons.MessageInputContextProvider;
34102
+ exports.MessageListContext = icons.MessageListContext;
34103
+ exports.MessageListContextProvider = icons.MessageListContextProvider;
34061
34104
  exports.MessageProvider = icons.MessageProvider;
34062
34105
  exports.PopperTooltip = icons.PopperTooltip;
34063
34106
  exports.RetryIcon = icons.RetryIcon;
@@ -34095,6 +34138,7 @@ exports.useChatContext = icons.useChatContext;
34095
34138
  exports.useComponentContext = icons.useComponentContext;
34096
34139
  exports.useMessageContext = icons.useMessageContext;
34097
34140
  exports.useMessageInputContext = icons.useMessageInputContext;
34141
+ exports.useMessageListContext = icons.useMessageListContext;
34098
34142
  exports.useTranslationContext = icons.useTranslationContext;
34099
34143
  exports.useTypingContext = icons.useTypingContext;
34100
34144
  exports.withChannelActionContext = icons.withChannelActionContext;
@@ -34239,6 +34283,7 @@ exports.getWholeChar = getWholeChar;
34239
34283
  exports.handleActionWarning = handleActionWarning;
34240
34284
  exports.hasMoreMessagesProbably = hasMoreMessagesProbably;
34241
34285
  exports.hasNotMoreMessages = hasNotMoreMessages;
34286
+ exports.htmlToTextPlugin = htmlToTextPlugin;
34242
34287
  exports.insertIntro = insertIntro;
34243
34288
  exports.isAudioAttachment = isAudioAttachment;
34244
34289
  exports.isChannel = isChannel;
@@ -34250,6 +34295,7 @@ exports.isScrapedContent = isScrapedContent;
34250
34295
  exports.isSvgAttachment = isSvgAttachment;
34251
34296
  exports.isUploadedImage = isUploadedImage;
34252
34297
  exports.isUserMuted = isUserMuted;
34298
+ exports.keepLineBreaksPlugin = keepLineBreaksPlugin;
34253
34299
  exports.makeDateMessageId = makeDateMessageId;
34254
34300
  exports.mapToUserNameOrId = mapToUserNameOrId;
34255
34301
  exports.markDownRenderers = markDownRenderers;
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "11.0.0-rc.4";
1
+ export declare const version = "11.0.0-rc.6";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export var version = '11.0.0-rc.4';
1
+ export var version = '11.0.0-rc.6';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-chat-react",
3
- "version": "11.0.0-rc.4",
3
+ "version": "11.0.0-rc.6",
4
4
  "description": "React components to create chat conversations or livestream style chat",
5
5
  "author": "GetStream",
6
6
  "homepage": "https://getstream.io/chat/",
@@ -38,6 +38,13 @@
38
38
  "default": "./dist/scss/*"
39
39
  }
40
40
  },
41
+ "typesVersions": {
42
+ "*": {
43
+ "emojis": [
44
+ "./dist/components/Emojis/index.d.ts"
45
+ ]
46
+ }
47
+ },
41
48
  "sideEffects": [
42
49
  "*.css"
43
50
  ],
@@ -87,9 +94,9 @@
87
94
  "mml-react": "^0.4.7"
88
95
  },
89
96
  "peerDependencies": {
90
- "@emoji-mart/data": "^1.1.2",
91
- "@emoji-mart/react": "^1.1.1",
92
- "emoji-mart": "^5.5.2",
97
+ "@emoji-mart/data": "^1.1.0",
98
+ "@emoji-mart/react": "^1.1.0",
99
+ "emoji-mart": "^5.4.0",
93
100
  "react": "^18.0.0 || ^17.0.0 || ^16.8.0",
94
101
  "react-dom": "^18.0.0 || ^17.0.0 || ^16.8.0",
95
102
  "stream-chat": "^8.0.0"
@@ -1,7 +0,0 @@
1
- import type { Content, Root } from 'hast';
2
- import type { UserResponse } from 'stream-chat';
3
- import type { DefaultStreamChatGenerics } from '../../../types/types';
4
- export declare type HNode = Content | Root;
5
- export declare const mentionsMarkdownPlugin: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(mentioned_users: UserResponse<StreamChatGenerics>[]) => () => (tree: HNode) => HNode;
6
- export declare const emojiMarkdownPlugin: () => (node: HNode) => import("hast-util-find-and-replace/lib").Node;
7
- //# sourceMappingURL=rehypePlugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rehypePlugins.d.ts","sourceRoot":"","sources":["../../../../src/components/Message/renderText/rehypePlugins.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;AACnC,eAAO,MAAM,sBAAsB,0JAuBR,KAAK,KAAG,KAoClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAIL,KAAK,kDAG/B,CAAC"}