stream-chat-react 10.14.1 → 10.15.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.
- package/dist/browser.full-bundle.js +6528 -6421
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/AutoCompleteTextarea/List.js +1 -1
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +1 -1
- package/dist/components/DateSeparator/DateSeparator.js +1 -1
- package/dist/components/EventComponent/EventComponent.js +1 -1
- package/dist/components/Message/FixedHeightMessage.js +1 -1
- package/dist/components/Message/MessageText.js +2 -2
- package/dist/components/Message/index.d.ts +1 -0
- package/dist/components/Message/index.d.ts.map +1 -1
- package/dist/components/Message/index.js +1 -0
- package/dist/components/Message/renderText/Anchor.d.ts +4 -0
- package/dist/components/Message/renderText/Anchor.d.ts.map +1 -0
- package/dist/components/Message/renderText/Anchor.js +10 -0
- package/dist/components/Message/renderText/Emoji.d.ts +3 -0
- package/dist/components/Message/renderText/Emoji.d.ts.map +1 -0
- package/dist/components/Message/renderText/Emoji.js +5 -0
- package/dist/components/Message/renderText/Mention.d.ts +18 -0
- package/dist/components/Message/renderText/Mention.d.ts.map +1 -0
- package/dist/components/Message/renderText/Mention.js +5 -0
- package/dist/components/Message/renderText/index.d.ts +5 -0
- package/dist/components/Message/renderText/index.d.ts.map +1 -0
- package/dist/components/Message/renderText/index.js +3 -0
- package/dist/components/Message/renderText/regex.d.ts +5 -0
- package/dist/components/Message/renderText/regex.d.ts.map +1 -0
- package/dist/components/Message/renderText/regex.js +21 -0
- package/dist/components/Message/renderText/rehypePlugins.d.ts +7 -0
- package/dist/components/Message/renderText/rehypePlugins.d.ts.map +1 -0
- package/dist/components/Message/renderText/rehypePlugins.js +60 -0
- package/dist/components/Message/renderText/renderText.d.ts +21 -0
- package/dist/components/Message/renderText/renderText.d.ts.map +1 -0
- package/dist/components/Message/renderText/renderText.js +126 -0
- package/dist/components/Message/types.d.ts +1 -1
- package/dist/components/Message/types.d.ts.map +1 -1
- package/dist/components/Message/utils.d.ts +1 -0
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +8 -0
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +1 -3
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +36 -6
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +39 -122
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +23 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +70 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts +5 -0
- package/dist/components/MessageList/hooks/MessageList/index.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/MessageList/index.js +4 -0
- package/dist/components/MessageList/hooks/{useEnrichedMessages.d.ts → MessageList/useEnrichedMessages.d.ts} +3 -3
- package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useEnrichedMessages.js → MessageList/useEnrichedMessages.js} +3 -3
- package/dist/components/MessageList/hooks/{useMessageListElements.d.ts → MessageList/useMessageListElements.d.ts} +4 -4
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useMessageListElements.js → MessageList/useMessageListElements.js} +9 -9
- package/dist/components/MessageList/hooks/{useMessageListScrollManager.d.ts → MessageList/useMessageListScrollManager.d.ts} +2 -2
- package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useMessageListScrollManager.js → MessageList/useMessageListScrollManager.js} +1 -1
- package/dist/components/MessageList/hooks/{useScrollLocationLogic.d.ts → MessageList/useScrollLocationLogic.d.ts} +2 -2
- package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts +7 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/index.js +6 -0
- package/dist/components/MessageList/hooks/{useGiphyPreview.d.ts → VirtualizedMessageList/useGiphyPreview.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{useGiphyPreview.js → VirtualizedMessageList/useGiphyPreview.js} +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +10 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +20 -0
- package/dist/components/MessageList/hooks/{useNewMessageNotification.d.ts → VirtualizedMessageList/useNewMessageNotification.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/{usePrependMessagesCount.d.ts → VirtualizedMessageList/usePrependMessagesCount.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +12 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js +28 -0
- package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.d.ts → VirtualizedMessageList/useShouldForceScrollToBottom.d.ts} +2 -2
- package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts.map +1 -0
- package/dist/components/MessageList/hooks/index.d.ts +7 -7
- package/dist/components/MessageList/hooks/index.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/index.js +7 -7
- package/dist/context/MessageContext.d.ts +1 -1
- package/dist/context/MessageContext.d.ts.map +1 -1
- package/dist/index.cjs.js +627 -584
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/utils/generateRandomId.d.ts +6 -0
- package/dist/utils/generateRandomId.d.ts.map +1 -0
- package/dist/utils/generateRandomId.js +5 -0
- package/dist/utils/getWholeChar.d.ts +2 -0
- package/dist/utils/getWholeChar.d.ts.map +1 -0
- package/dist/utils/getWholeChar.js +26 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +0 -1
- package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +0 -1
- package/dist/utils.d.ts +0 -42
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -253
- /package/dist/components/MessageList/hooks/{useScrollLocationLogic.js → MessageList/useScrollLocationLogic.js} +0 -0
- /package/dist/components/MessageList/hooks/{useNewMessageNotification.js → VirtualizedMessageList/useNewMessageNotification.js} +0 -0
- /package/dist/components/MessageList/hooks/{usePrependMessagesCount.js → VirtualizedMessageList/usePrependMessagesCount.js} +0 -0
- /package/dist/components/MessageList/hooks/{useShouldForceScrollToBottom.js → VirtualizedMessageList/useShouldForceScrollToBottom.js} +0 -0
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateRandomId.d.ts","sourceRoot":"","sources":["../../src/utils/generateRandomId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getWholeChar.d.ts","sourceRoot":"","sources":["../../src/utils/getWholeChar.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,QAAS,MAAM,KAAK,MAAM,WAgClD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt#getting_whole_characters
|
|
2
|
+
export var getWholeChar = function (str, i) {
|
|
3
|
+
var code = str.charCodeAt(i);
|
|
4
|
+
if (Number.isNaN(code))
|
|
5
|
+
return '';
|
|
6
|
+
if (code < 0xd800 || code > 0xdfff)
|
|
7
|
+
return str.charAt(i);
|
|
8
|
+
if (0xd800 <= code && code <= 0xdbff) {
|
|
9
|
+
if (str.length <= i + 1) {
|
|
10
|
+
throw 'High surrogate without following low surrogate';
|
|
11
|
+
}
|
|
12
|
+
var next = str.charCodeAt(i + 1);
|
|
13
|
+
if (0xdc00 > next || next > 0xdfff) {
|
|
14
|
+
throw 'High surrogate without following low surrogate';
|
|
15
|
+
}
|
|
16
|
+
return str.charAt(i) + str.charAt(i + 1);
|
|
17
|
+
}
|
|
18
|
+
if (i === 0) {
|
|
19
|
+
throw 'Low surrogate without preceding high surrogate';
|
|
20
|
+
}
|
|
21
|
+
var prev = str.charCodeAt(i - 1);
|
|
22
|
+
if (0xd800 > prev || prev > 0xdbff) {
|
|
23
|
+
throw 'Low surrogate without preceding high surrogate';
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "10.
|
|
1
|
+
export declare const version = "10.15.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export var version = '10.
|
|
1
|
+
export var version = '10.15.0';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useEnrichedMessages.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useEnrichedMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,UAAU,EAAgC,MAAM,UAAU,CAAC;AAKpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;0BAIR,OAAO;yBACR,OAAO;6BACH,OAAO;;mBAEjB,OAAO;mLAKL,OAAO,KACnB,UAAU;;;;;CAsDhB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useGiphyPreview.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useGiphyPreview.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,eAAe,2GAGJ,OAAO;;;CAsB9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageListElements.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListElements.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAmB,UAAU,EAAE,MAAM,UAAU,CAAC;AAWvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,aAAK,kBAAkB,GACnB,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,aAAK,2BAA2B,CAC9B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACtD,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACjF,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;KAAE,CAAC,CAAC;CACpF,CAAC;AAEF,eAAO,MAAM,sBAAsB,iKAkGlC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMessageListScrollManager.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useMessageListScrollManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,iCAAiC,CAC3C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAGF,wBAAgB,2BAA2B,CACzC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,MAAM,EAAE,iCAAiC,CAAC,kBAAkB,CAAC,oBAmErC,MAAM,UAG/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useNewMessageNotification.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useNewMessageNotification.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAEhF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAC7C,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,CAAC,EAAE,OAAO;;;;;;EA6CvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePrependMessagesCount.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/usePrependMessagesCount.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAItE,wBAAgB,yBAAyB,CACvC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,OAAO,UA2DzE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollLocationLogic.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useScrollLocationLogic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAI9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,oBAAY,4BAA4B,CACtC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;sBA0DvB,aAAa,CAAC,cAAc,CAAC;;;CAgCxC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useShouldForceScrollToBottom.d.ts","sourceRoot":"","sources":["../../../../src/components/MessageList/hooks/useShouldForceScrollToBottom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,wBAAgB,4BAA4B,CAC1C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,EAChF,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,iBA2BtE"}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
2
|
-
import { nanoid } from 'nanoid';
|
|
3
|
-
import { Options } from 'react-markdown';
|
|
4
|
-
import type { ReactMarkdownProps } from 'react-markdown/lib/complex-types';
|
|
5
|
-
import type { Content, Root } from 'hast';
|
|
6
|
-
import type { UserResponse } from 'stream-chat';
|
|
7
|
-
import type { DefaultStreamChatGenerics } from './types/types';
|
|
8
|
-
export declare const isOnlyEmojis: (text?: string) => boolean;
|
|
9
|
-
declare type HNode = Content | Root;
|
|
10
|
-
export declare const matchMarkdownLinks: (message: string) => (string | null)[];
|
|
11
|
-
export declare const messageCodeBlocks: (message: string) => RegExpMatchArray;
|
|
12
|
-
export declare type MentionProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = ReactMarkdownProps & {
|
|
13
|
-
/**
|
|
14
|
-
* @deprecated will be removed in the next major release, transition to using `node.mentionedUser` instead
|
|
15
|
-
*/
|
|
16
|
-
mentioned_user: UserResponse<StreamChatGenerics>;
|
|
17
|
-
node: {
|
|
18
|
-
/**
|
|
19
|
-
* @deprecated will be removed in the next major release, transition to using `node.mentionedUser` instead
|
|
20
|
-
*/
|
|
21
|
-
mentioned_user: UserResponse<StreamChatGenerics>;
|
|
22
|
-
mentionedUser: UserResponse<StreamChatGenerics>;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export declare const markDownRenderers: RenderTextOptions['customMarkDownRenderers'];
|
|
26
|
-
export declare const emojiMarkdownPlugin: () => (node: HNode) => import("hast-util-find-and-replace/lib").Node;
|
|
27
|
-
export declare const mentionsMarkdownPlugin: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(mentioned_users: UserResponse<StreamChatGenerics>[]) => () => (tree: HNode) => HNode;
|
|
28
|
-
export declare type RenderTextOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
29
|
-
customMarkDownRenderers?: Options['components'] & Partial<{
|
|
30
|
-
emoji: ComponentType<ReactMarkdownProps>;
|
|
31
|
-
mention: ComponentType<MentionProps<StreamChatGenerics>>;
|
|
32
|
-
}>;
|
|
33
|
-
};
|
|
34
|
-
export declare const renderText: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(text?: string, mentionedUsers?: UserResponse<StreamChatGenerics>[] | undefined, { customMarkDownRenderers }?: RenderTextOptions) => JSX.Element | null;
|
|
35
|
-
export declare function escapeRegExp(text: string): string;
|
|
36
|
-
/**
|
|
37
|
-
* @deprecated will be removed in the next major release
|
|
38
|
-
*/
|
|
39
|
-
export declare const generateRandomId: typeof nanoid;
|
|
40
|
-
export declare const getWholeChar: (str: string, i: number) => string;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAkB,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAsB,EAAE,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AASxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAO,MAAM,YAAY,UAAW,MAAM,YAOzC,CAAC;AAsBF,aAAK,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;AAE5B,eAAO,MAAM,kBAAkB,YAAa,MAAM,sBAajD,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,qBAIhD,CAAC;AA4CF,oBAAY,YAAY,CACtB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,kBAAkB,GAAG;IACvB;;OAEG;IACH,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,EAAE;QACJ;;WAEG;QACH,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACjD,aAAa,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;KACjD,CAAC;CACH,CAAC;AAWF,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,CAAC,yBAAyB,CAI1E,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAIL,KAAK,kDAG/B,CAAC;AAEF,eAAO,MAAM,sBAAsB,0JAuBR,KAAK,KAAG,KAoClC,CAAC;AAEF,oBAAY,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,uBAAuB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7C,OAAO,CAAC;QACN,KAAK,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACzC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;KAC1D,CAAC,CAAC;CACN,CAAC;AAEF,eAAO,MAAM,UAAU,4FAGd,MAAM,iGAEgB,iBAAiB,uBAqG/C,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,UAExC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,eAAS,CAAC;AAGvC,eAAO,MAAM,YAAY,QAAS,MAAM,KAAK,MAAM,WAgClD,CAAC"}
|
package/dist/utils.js
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { __assign, __rest, __spreadArray } from "tslib";
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import emojiRegex from 'emoji-regex';
|
|
4
|
-
import { find } from 'linkifyjs';
|
|
5
|
-
import { nanoid } from 'nanoid';
|
|
6
|
-
import { findAndReplace } from 'hast-util-find-and-replace';
|
|
7
|
-
import ReactMarkdown, { uriTransformer } from 'react-markdown';
|
|
8
|
-
import { u } from 'unist-builder';
|
|
9
|
-
import { visit } from 'unist-util-visit';
|
|
10
|
-
import remarkGfm from 'remark-gfm';
|
|
11
|
-
import uniqBy from 'lodash.uniqby';
|
|
12
|
-
import clsx from 'clsx';
|
|
13
|
-
export var isOnlyEmojis = function (text) {
|
|
14
|
-
if (!text)
|
|
15
|
-
return false;
|
|
16
|
-
var noEmojis = text.replace(emojiRegex(), '');
|
|
17
|
-
var noSpace = noEmojis.replace(/[\s\n]/gm, '');
|
|
18
|
-
return !noSpace;
|
|
19
|
-
};
|
|
20
|
-
var allowedMarkups = [
|
|
21
|
-
'html',
|
|
22
|
-
'text',
|
|
23
|
-
'br',
|
|
24
|
-
'p',
|
|
25
|
-
'em',
|
|
26
|
-
'strong',
|
|
27
|
-
'a',
|
|
28
|
-
'ol',
|
|
29
|
-
'ul',
|
|
30
|
-
'li',
|
|
31
|
-
'code',
|
|
32
|
-
'pre',
|
|
33
|
-
'blockquote',
|
|
34
|
-
'del',
|
|
35
|
-
// custom types (tagNames)
|
|
36
|
-
'emoji',
|
|
37
|
-
'mention',
|
|
38
|
-
];
|
|
39
|
-
export var matchMarkdownLinks = function (message) {
|
|
40
|
-
var regexMdLinks = /\[([^[]+)\](\(.*\))/gm;
|
|
41
|
-
var matches = message.match(regexMdLinks);
|
|
42
|
-
var singleMatch = /\[([^[]+)\]\((.*)\)/;
|
|
43
|
-
var links = matches
|
|
44
|
-
? matches.map(function (match) {
|
|
45
|
-
var i = singleMatch.exec(match);
|
|
46
|
-
return i && [i[1], i[2]];
|
|
47
|
-
})
|
|
48
|
-
: [];
|
|
49
|
-
return links.flat();
|
|
50
|
-
};
|
|
51
|
-
export var messageCodeBlocks = function (message) {
|
|
52
|
-
var codeRegex = /```[a-z]*\n[\s\S]*?\n```|`[a-z]*[\s\S]*?`/gm;
|
|
53
|
-
var matches = message.match(codeRegex);
|
|
54
|
-
return matches || [];
|
|
55
|
-
};
|
|
56
|
-
var detectHttp = /(http(s?):\/\/)?(www\.)?/;
|
|
57
|
-
function formatUrlForDisplay(url) {
|
|
58
|
-
try {
|
|
59
|
-
return decodeURIComponent(url).replace(detectHttp, '');
|
|
60
|
-
}
|
|
61
|
-
catch (e) {
|
|
62
|
-
return url;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function encodeDecode(url) {
|
|
66
|
-
try {
|
|
67
|
-
return encodeURI(decodeURIComponent(url));
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
return url;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
var Anchor = function (_a) {
|
|
74
|
-
var children = _a.children, href = _a.href;
|
|
75
|
-
var isEmail = href === null || href === void 0 ? void 0 : href.startsWith('mailto:');
|
|
76
|
-
var isUrl = href === null || href === void 0 ? void 0 : href.startsWith('http');
|
|
77
|
-
if (!href || (!isEmail && !isUrl))
|
|
78
|
-
return React.createElement(React.Fragment, null, children);
|
|
79
|
-
return (React.createElement("a", { className: clsx({ 'str-chat__message-url-link': isUrl }), href: href, rel: 'nofollow noreferrer noopener', target: '_blank' }, children));
|
|
80
|
-
};
|
|
81
|
-
var Emoji = function (_a) {
|
|
82
|
-
var children = _a.children;
|
|
83
|
-
return (React.createElement("span", { className: 'inline-text-emoji', "data-testid": 'inline-text-emoji' }, children));
|
|
84
|
-
};
|
|
85
|
-
var Mention = function (_a) {
|
|
86
|
-
var children = _a.children, mentionedUser = _a.node.mentionedUser;
|
|
87
|
-
return (React.createElement("span", { className: 'str-chat__message-mention', "data-user-id": mentionedUser.id }, children));
|
|
88
|
-
};
|
|
89
|
-
export var markDownRenderers = {
|
|
90
|
-
a: Anchor,
|
|
91
|
-
emoji: Emoji,
|
|
92
|
-
mention: Mention,
|
|
93
|
-
};
|
|
94
|
-
export var emojiMarkdownPlugin = function () {
|
|
95
|
-
var replace = function (match) {
|
|
96
|
-
return u('element', { tagName: 'emoji' }, [u('text', match)]);
|
|
97
|
-
};
|
|
98
|
-
var transform = function (node) { return findAndReplace(node, emojiRegex(), replace); };
|
|
99
|
-
return transform;
|
|
100
|
-
};
|
|
101
|
-
export var mentionsMarkdownPlugin = function (mentioned_users) { return function () {
|
|
102
|
-
var mentioned_usernames = mentioned_users
|
|
103
|
-
.map(function (user) { return user.name || user.id; })
|
|
104
|
-
.filter(Boolean)
|
|
105
|
-
.map(escapeRegExp);
|
|
106
|
-
var mentionedUsersRegex = new RegExp(mentioned_usernames.map(function (username) { return "@".concat(username); }).join('|'), 'g');
|
|
107
|
-
var replace = function (match) {
|
|
108
|
-
var usernameOrId = match.replace('@', '');
|
|
109
|
-
var user = mentioned_users.find(function (_a) {
|
|
110
|
-
var id = _a.id, name = _a.name;
|
|
111
|
-
return name === usernameOrId || id === usernameOrId;
|
|
112
|
-
});
|
|
113
|
-
return u('element', { mentionedUser: user, tagName: 'mention' }, [u('text', match)]);
|
|
114
|
-
};
|
|
115
|
-
var transform = function (tree) {
|
|
116
|
-
if (!mentioned_usernames.length)
|
|
117
|
-
return tree;
|
|
118
|
-
// handles special cases of mentions where user.name is an e-mail
|
|
119
|
-
// Remark GFM translates all e-mail-like text nodes to links creating
|
|
120
|
-
// two separate child nodes "@" and "your.name@as.email" instead of
|
|
121
|
-
// keeping it as one text node with value "@your.name@as.email"
|
|
122
|
-
// this piece finds these two separated nodes and merges them together
|
|
123
|
-
// before "replace" function takes over
|
|
124
|
-
visit(tree, function (node, index, parent) {
|
|
125
|
-
var _a;
|
|
126
|
-
if (index === null)
|
|
127
|
-
return;
|
|
128
|
-
if (!parent)
|
|
129
|
-
return;
|
|
130
|
-
var nextChild = parent.children.at(index + 1);
|
|
131
|
-
var nextChildHref = (_a = nextChild === null || nextChild === void 0 ? void 0 : nextChild.properties) === null || _a === void 0 ? void 0 : _a.href;
|
|
132
|
-
if (node.type === 'text' &&
|
|
133
|
-
// text value has to have @ sign at the end of the string
|
|
134
|
-
// and no other characters except whitespace can precede it
|
|
135
|
-
// valid cases: "text @", "@", " @"
|
|
136
|
-
// invalid cases: "text@", "@text",
|
|
137
|
-
/.?\s?@$|^@$/.test(node.value) &&
|
|
138
|
-
(nextChildHref === null || nextChildHref === void 0 ? void 0 : nextChildHref.startsWith('mailto:'))) {
|
|
139
|
-
var newTextValue = node.value.replace(/@$/, '');
|
|
140
|
-
var username = nextChildHref.replace('mailto:', '');
|
|
141
|
-
parent.children[index] = u('text', newTextValue);
|
|
142
|
-
parent.children[index + 1] = u('text', "@".concat(username));
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
return findAndReplace(tree, mentionedUsersRegex, replace);
|
|
146
|
-
};
|
|
147
|
-
return transform;
|
|
148
|
-
}; };
|
|
149
|
-
export var renderText = function (text, mentionedUsers, _a) {
|
|
150
|
-
var _b = _a === void 0 ? {} : _a, customMarkDownRenderers = _b.customMarkDownRenderers;
|
|
151
|
-
// take the @ mentions and turn them into markdown?
|
|
152
|
-
// translate links
|
|
153
|
-
if (!text)
|
|
154
|
-
return null;
|
|
155
|
-
if (text.trim().length === 1)
|
|
156
|
-
return React.createElement(React.Fragment, null, text);
|
|
157
|
-
var newText = text;
|
|
158
|
-
var markdownLinks = matchMarkdownLinks(newText);
|
|
159
|
-
var codeBlocks = messageCodeBlocks(newText);
|
|
160
|
-
// extract all valid links/emails within text and replace it with proper markup
|
|
161
|
-
uniqBy(__spreadArray(__spreadArray([], find(newText, 'email'), true), find(newText, 'url'), true), 'value').forEach(function (_a) {
|
|
162
|
-
var href = _a.href, type = _a.type, value = _a.value;
|
|
163
|
-
var linkIsInBlock = codeBlocks.some(function (block) { return block === null || block === void 0 ? void 0 : block.includes(value); });
|
|
164
|
-
// check if message is already markdown
|
|
165
|
-
var noParsingNeeded = markdownLinks &&
|
|
166
|
-
markdownLinks.filter(function (text) {
|
|
167
|
-
var strippedHref = href === null || href === void 0 ? void 0 : href.replace(detectHttp, '');
|
|
168
|
-
var strippedText = text === null || text === void 0 ? void 0 : text.replace(detectHttp, '');
|
|
169
|
-
if (!strippedHref || !strippedText)
|
|
170
|
-
return false;
|
|
171
|
-
return strippedHref.includes(strippedText) || strippedText.includes(strippedHref);
|
|
172
|
-
});
|
|
173
|
-
if (noParsingNeeded.length > 0 || linkIsInBlock)
|
|
174
|
-
return;
|
|
175
|
-
try {
|
|
176
|
-
// special case for mentions:
|
|
177
|
-
// it could happen that a user's name matches with an e-mail format pattern.
|
|
178
|
-
// in that case, we check whether the found e-mail is actually a mention
|
|
179
|
-
// by naively checking for an existence of @ sign in front of it.
|
|
180
|
-
if (type === 'email' && mentionedUsers) {
|
|
181
|
-
var emailMatchesWithName = mentionedUsers.some(function (u) { return u.name === value; });
|
|
182
|
-
if (emailMatchesWithName) {
|
|
183
|
-
newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), function (match, position) {
|
|
184
|
-
var isMention = newText.charAt(position - 1) === '@';
|
|
185
|
-
// in case of mention, we leave the match in its original form,
|
|
186
|
-
// and we let `mentionsMarkdownPlugin` to do its job
|
|
187
|
-
return isMention ? match : "[".concat(match, "](").concat(encodeDecode(href), ")");
|
|
188
|
-
});
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
var displayLink = type === 'email' ? value : formatUrlForDisplay(href);
|
|
193
|
-
newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[".concat(displayLink, "](").concat(encodeDecode(href), ")"));
|
|
194
|
-
}
|
|
195
|
-
catch (e) {
|
|
196
|
-
void e;
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
var rehypePlugins = [emojiMarkdownPlugin];
|
|
200
|
-
if (mentionedUsers === null || mentionedUsers === void 0 ? void 0 : mentionedUsers.length) {
|
|
201
|
-
rehypePlugins.push(mentionsMarkdownPlugin(mentionedUsers));
|
|
202
|
-
}
|
|
203
|
-
// TODO: remove in the next major release
|
|
204
|
-
if (customMarkDownRenderers === null || customMarkDownRenderers === void 0 ? void 0 : customMarkDownRenderers.mention) {
|
|
205
|
-
var MentionComponent_1 = customMarkDownRenderers['mention'];
|
|
206
|
-
// eslint-disable-next-line react/display-name
|
|
207
|
-
customMarkDownRenderers['mention'] = function (_a) {
|
|
208
|
-
var node = _a.node, rest = __rest(_a, ["node"]);
|
|
209
|
-
return (React.createElement(MentionComponent_1
|
|
210
|
-
// @ts-ignore
|
|
211
|
-
, __assign({
|
|
212
|
-
// @ts-ignore
|
|
213
|
-
mentioned_user: node.mentionedUser,
|
|
214
|
-
// @ts-ignore
|
|
215
|
-
node: __assign({ mentioned_user: node.mentionedUser }, node) }, rest)));
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
var rehypeComponents = __assign(__assign({}, markDownRenderers), customMarkDownRenderers);
|
|
219
|
-
return (React.createElement(ReactMarkdown, { allowedElements: allowedMarkups, components: rehypeComponents, rehypePlugins: rehypePlugins, remarkPlugins: [[remarkGfm, { singleTilde: false }]], skipHtml: true, transformLinkUri: function (uri) { return (uri.startsWith('app://') ? uri : uriTransformer(uri)); }, unwrapDisallowed: true }, newText));
|
|
220
|
-
};
|
|
221
|
-
export function escapeRegExp(text) {
|
|
222
|
-
return text.replace(/[-[\]{}()*+?.,/\\^$|#]/g, '\\$&');
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* @deprecated will be removed in the next major release
|
|
226
|
-
*/
|
|
227
|
-
export var generateRandomId = nanoid;
|
|
228
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt#getting_whole_characters
|
|
229
|
-
export var getWholeChar = function (str, i) {
|
|
230
|
-
var code = str.charCodeAt(i);
|
|
231
|
-
if (Number.isNaN(code))
|
|
232
|
-
return '';
|
|
233
|
-
if (code < 0xd800 || code > 0xdfff)
|
|
234
|
-
return str.charAt(i);
|
|
235
|
-
if (0xd800 <= code && code <= 0xdbff) {
|
|
236
|
-
if (str.length <= i + 1) {
|
|
237
|
-
throw 'High surrogate without following low surrogate';
|
|
238
|
-
}
|
|
239
|
-
var next = str.charCodeAt(i + 1);
|
|
240
|
-
if (0xdc00 > next || next > 0xdfff) {
|
|
241
|
-
throw 'High surrogate without following low surrogate';
|
|
242
|
-
}
|
|
243
|
-
return str.charAt(i) + str.charAt(i + 1);
|
|
244
|
-
}
|
|
245
|
-
if (i === 0) {
|
|
246
|
-
throw 'Low surrogate without preceding high surrogate';
|
|
247
|
-
}
|
|
248
|
-
var prev = str.charCodeAt(i - 1);
|
|
249
|
-
if (0xd800 > prev || prev > 0xdbff) {
|
|
250
|
-
throw 'Low surrogate without preceding high surrogate';
|
|
251
|
-
}
|
|
252
|
-
return '';
|
|
253
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|