stream-chat-react-native-core 4.0.0-beta.6 → 4.0.0-beta.9

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 (95) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +24 -25
  3. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  4. package/lib/commonjs/components/Chat/Chat.js +8 -4
  5. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  6. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +23 -28
  7. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  8. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +8 -10
  9. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  10. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -4
  11. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  12. package/lib/commonjs/init.js +13 -0
  13. package/lib/commonjs/init.js.map +1 -0
  14. package/lib/commonjs/utils/getResizedImageUrl.js +21 -10
  15. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
  16. package/lib/commonjs/version.json +1 -1
  17. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +24 -25
  18. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  19. package/lib/module/components/Chat/Chat.js +8 -4
  20. package/lib/module/components/Chat/Chat.js.map +1 -1
  21. package/lib/module/components/MessageOverlay/MessageOverlay.js +23 -28
  22. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  23. package/lib/module/components/MessageOverlay/OverlayReactionList.js +8 -10
  24. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
  25. package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -4
  26. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  27. package/lib/module/init.js +13 -0
  28. package/lib/module/init.js.map +1 -0
  29. package/lib/module/utils/getResizedImageUrl.js +21 -10
  30. package/lib/module/utils/getResizedImageUrl.js.map +1 -1
  31. package/lib/module/version.json +1 -1
  32. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +0 -1
  33. package/lib/typescript/init.d.ts +2 -0
  34. package/lib/typescript/utils/getResizedImageUrl.d.ts +2 -1
  35. package/package.json +2 -4
  36. package/src/components/Attachment/__tests__/buildGallery.test.js +4 -4
  37. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +8 -7
  38. package/src/components/Chat/Chat.tsx +3 -0
  39. package/src/components/MessageOverlay/MessageOverlay.tsx +0 -2
  40. package/src/components/MessageOverlay/OverlayReactionList.tsx +0 -3
  41. package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -2
  42. package/src/init.ts +5 -0
  43. package/src/utils/__tests__/getResizedImageUrl.test.js +57 -0
  44. package/src/utils/getResizedImageUrl.ts +33 -17
  45. package/src/version.json +1 -1
  46. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +0 -100
  47. package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +0 -1
  48. package/lib/commonjs/styleguideComponents/BottomSheet.js +0 -25
  49. package/lib/commonjs/styleguideComponents/BottomSheet.js.map +0 -1
  50. package/lib/commonjs/styleguideComponents/JsDoc.js +0 -87
  51. package/lib/commonjs/styleguideComponents/JsDoc.js.map +0 -1
  52. package/lib/commonjs/styleguideComponents/Markdown.js +0 -12
  53. package/lib/commonjs/styleguideComponents/Markdown.js.map +0 -1
  54. package/lib/commonjs/styleguideComponents/PathlineRenderer.js +0 -92
  55. package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +0 -1
  56. package/lib/commonjs/styleguideComponents/PropsRenderer.js +0 -267
  57. package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +0 -1
  58. package/lib/commonjs/styleguideComponents/Reanimated.js +0 -2
  59. package/lib/commonjs/styleguideComponents/Reanimated.js.map +0 -1
  60. package/lib/commonjs/styleguideComponents/Wrapper.js +0 -29
  61. package/lib/commonjs/styleguideComponents/Wrapper.js.map +0 -1
  62. package/lib/commonjs/styleguideComponents/register-react-native-web.js +0 -44
  63. package/lib/commonjs/styleguideComponents/register-react-native-web.js.map +0 -1
  64. package/lib/commonjs/styleguideComponents/resolveAssetSource.js +0 -11
  65. package/lib/commonjs/styleguideComponents/resolveAssetSource.js.map +0 -1
  66. package/lib/module/styleguideComponents/ArgumentsRenderer.js +0 -100
  67. package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +0 -1
  68. package/lib/module/styleguideComponents/BottomSheet.js +0 -25
  69. package/lib/module/styleguideComponents/BottomSheet.js.map +0 -1
  70. package/lib/module/styleguideComponents/JsDoc.js +0 -87
  71. package/lib/module/styleguideComponents/JsDoc.js.map +0 -1
  72. package/lib/module/styleguideComponents/Markdown.js +0 -12
  73. package/lib/module/styleguideComponents/Markdown.js.map +0 -1
  74. package/lib/module/styleguideComponents/PathlineRenderer.js +0 -92
  75. package/lib/module/styleguideComponents/PathlineRenderer.js.map +0 -1
  76. package/lib/module/styleguideComponents/PropsRenderer.js +0 -267
  77. package/lib/module/styleguideComponents/PropsRenderer.js.map +0 -1
  78. package/lib/module/styleguideComponents/Reanimated.js +0 -2
  79. package/lib/module/styleguideComponents/Reanimated.js.map +0 -1
  80. package/lib/module/styleguideComponents/Wrapper.js +0 -29
  81. package/lib/module/styleguideComponents/Wrapper.js.map +0 -1
  82. package/lib/module/styleguideComponents/register-react-native-web.js +0 -44
  83. package/lib/module/styleguideComponents/register-react-native-web.js.map +0 -1
  84. package/lib/module/styleguideComponents/resolveAssetSource.js +0 -11
  85. package/lib/module/styleguideComponents/resolveAssetSource.js.map +0 -1
  86. package/src/styleguideComponents/ArgumentsRenderer.tsx +0 -60
  87. package/src/styleguideComponents/BottomSheet.tsx +0 -3
  88. package/src/styleguideComponents/JsDoc.tsx +0 -45
  89. package/src/styleguideComponents/Markdown.tsx +0 -1
  90. package/src/styleguideComponents/PathlineRenderer.tsx +0 -45
  91. package/src/styleguideComponents/PropsRenderer.tsx +0 -141
  92. package/src/styleguideComponents/Reanimated.tsx +0 -0
  93. package/src/styleguideComponents/Wrapper.tsx +0 -7
  94. package/src/styleguideComponents/register-react-native-web.js +0 -13
  95. package/src/styleguideComponents/resolveAssetSource.js +0 -2
@@ -33,6 +33,8 @@ var _TranslationContext = require("../../contexts/translationContext/Translation
33
33
 
34
34
  var _useStreami18n = require("../../hooks/useStreami18n");
35
35
 
36
+ var _init = _interopRequireDefault(require("../../init"));
37
+
36
38
  var _native = require("../../native");
37
39
 
38
40
  var _version = require("../../version.json");
@@ -44,6 +46,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
44
46
 
45
47
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
46
48
 
49
+ (0, _init["default"])();
50
+
47
51
  var ChatWithContext = function ChatWithContext(props) {
48
52
  var children = props.children,
49
53
  client = props.client,
@@ -104,7 +108,7 @@ var ChatWithContext = function ChatWithContext(props) {
104
108
  __self: _this,
105
109
  __source: {
106
110
  fileName: _jsxFileName,
107
- lineNumber: 173,
111
+ lineNumber: 176,
108
112
  columnNumber: 5
109
113
  }
110
114
  }, _react["default"].createElement(_TranslationContext.TranslationProvider, {
@@ -112,7 +116,7 @@ var ChatWithContext = function ChatWithContext(props) {
112
116
  __self: _this,
113
117
  __source: {
114
118
  fileName: _jsxFileName,
115
- lineNumber: 174,
119
+ lineNumber: 177,
116
120
  columnNumber: 7
117
121
  }
118
122
  }, _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -120,7 +124,7 @@ var ChatWithContext = function ChatWithContext(props) {
120
124
  __self: _this,
121
125
  __source: {
122
126
  fileName: _jsxFileName,
123
- lineNumber: 175,
127
+ lineNumber: 178,
124
128
  columnNumber: 9
125
129
  }
126
130
  }, children)));
@@ -136,7 +140,7 @@ var Chat = function Chat(props) {
136
140
  __self: _this,
137
141
  __source: {
138
142
  fileName: _jsxFileName,
139
- lineNumber: 209,
143
+ lineNumber: 212,
140
144
  columnNumber: 10
141
145
  }
142
146
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","chatContext","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAIA;;AAEA;;AAGA;;;;;;;;;AA+FA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MAAQC,QAAR,GAAsFD,KAAtF,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAsFF,KAAtF,CAAkBE,MAAlB;AAAA,8BAAsFF,KAAtF,CAA0BG,2BAA1B;AAAA,MAA0BA,2BAA1B,sCAAwD,IAAxD;AAAA,MAA8DC,YAA9D,GAAsFJ,KAAtF,CAA8DI,YAA9D;AAAA,MAA4EC,KAA5E,GAAsFL,KAAtF,CAA4EK,KAA5E;;AAEA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAAkC;AACtEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KADmE;AAEtEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFqD,GAAlC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEV,IAAAA,YAAY,EAAZA,YAAF;AAAgBS,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCX,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQY,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AAQA,MAAMC,UAAU,GAAG,kCAAkCf,MAAlC,CAAnB;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,CAACgB,YAAX,EAAyB;AACvBhB,MAAAA,MAAM,CAACgB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEApB,MAAAA,MAAM,CAACqB,uBAAP,GAAiC,KAAjC;AACD;AACF,GAND,EAMG,EANH;;AAQA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8ClB,UAAU,CAACkB,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,gDAAqB;AACvCpB,IAAAA,OAAO,EAAPA,OADuC;AAEvCJ,IAAAA,MAAM,EAANA,MAFuC;AAGvCa,IAAAA,oBAAoB,EAApBA,oBAHuC;AAIvCC,IAAAA,QAAQ,EAARA,QAJuC;AAKvCC,IAAAA,UAAU,EAAVA,UALuC;AAMvCO,IAAAA,gBAAgB,EAAhBA;AANuC,GAArB,CAApB;AASA,MAAIV,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEY,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAAqB,IAAA,KAAK,EAAEd,WAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAEP,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA8BJ,QAA9B,CADF,CADF,CADF;AAOD,CA3DD;;AAkFO,IAAM0B,IAAI,GAAG,SAAPA,IAAO,CAGlB3B,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQK,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCL,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport { SDK } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/master/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const chatContext = useCreateChatContext({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","chatContext","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAEA;;AAGA;;;;;;;;;AAEA;;AA+FA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MAAQC,QAAR,GAAsFD,KAAtF,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAsFF,KAAtF,CAAkBE,MAAlB;AAAA,8BAAsFF,KAAtF,CAA0BG,2BAA1B;AAAA,MAA0BA,2BAA1B,sCAAwD,IAAxD;AAAA,MAA8DC,YAA9D,GAAsFJ,KAAtF,CAA8DI,YAA9D;AAAA,MAA4EC,KAA5E,GAAsFL,KAAtF,CAA4EK,KAA5E;;AAEA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAAkC;AACtEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KADmE;AAEtEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFqD,GAAlC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEV,IAAAA,YAAY,EAAZA,YAAF;AAAgBS,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCX,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQY,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AAQA,MAAMC,UAAU,GAAG,kCAAkCf,MAAlC,CAAnB;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,CAACgB,YAAX,EAAyB;AACvBhB,MAAAA,MAAM,CAACgB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEApB,MAAAA,MAAM,CAACqB,uBAAP,GAAiC,KAAjC;AACD;AACF,GAND,EAMG,EANH;;AAQA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8ClB,UAAU,CAACkB,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,gDAAqB;AACvCpB,IAAAA,OAAO,EAAPA,OADuC;AAEvCJ,IAAAA,MAAM,EAANA,MAFuC;AAGvCa,IAAAA,oBAAoB,EAApBA,oBAHuC;AAIvCC,IAAAA,QAAQ,EAARA,QAJuC;AAKvCC,IAAAA,UAAU,EAAVA,UALuC;AAMvCO,IAAAA,gBAAgB,EAAhBA;AANuC,GAArB,CAApB;AASA,MAAIV,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEY,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAAqB,IAAA,KAAK,EAAEd,WAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAEP,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA8BJ,QAA9B,CADF,CADF,CADF;AAOD,CA3DD;;AAkFO,IAAM0B,IAAI,GAAG,SAAPA,IAAO,CAGlB3B,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQK,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCL,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/master/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const chatContext = useCreateChatContext({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
@@ -145,10 +145,6 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
145
145
  myMessageThemeString = _useState2[0],
146
146
  setMyMessageThemeString = _useState2[1];
147
147
 
148
- var _useState3 = (0, _react.useState)(0),
149
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
150
- setReactionListHeight = _useState4[1];
151
-
152
148
  (0, _react.useEffect)(function () {
153
149
  if (myMessageTheme) {
154
150
  setMyMessageThemeString(JSON.stringify(myMessageTheme));
@@ -291,7 +287,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
291
287
  __self: _this,
292
288
  __source: {
293
289
  fileName: _jsxFileName,
294
- lineNumber: 324,
290
+ lineNumber: 323,
295
291
  columnNumber: 5
296
292
  }
297
293
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -299,7 +295,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
299
295
  __self: _this,
300
296
  __source: {
301
297
  fileName: _jsxFileName,
302
- lineNumber: 325,
298
+ lineNumber: 324,
303
299
  columnNumber: 7
304
300
  }
305
301
  }, _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -307,7 +303,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
307
303
  __self: _this,
308
304
  __source: {
309
305
  fileName: _jsxFileName,
310
- lineNumber: 326,
306
+ lineNumber: 325,
311
307
  columnNumber: 9
312
308
  }
313
309
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -316,7 +312,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
316
312
  __self: _this,
317
313
  __source: {
318
314
  fileName: _jsxFileName,
319
- lineNumber: 327,
315
+ lineNumber: 326,
320
316
  columnNumber: 11
321
317
  }
322
318
  }, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
@@ -327,7 +323,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
327
323
  __self: _this,
328
324
  __source: {
329
325
  fileName: _jsxFileName,
330
- lineNumber: 331,
326
+ lineNumber: 330,
331
327
  columnNumber: 13
332
328
  }
333
329
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -335,7 +331,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
335
331
  __self: _this,
336
332
  __source: {
337
333
  fileName: _jsxFileName,
338
- lineNumber: 337,
334
+ lineNumber: 336,
339
335
  columnNumber: 15
340
336
  }
341
337
  }, _react["default"].createElement(_reactNative.SafeAreaView, {
@@ -343,7 +339,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
343
339
  __self: _this,
344
340
  __source: {
345
341
  fileName: _jsxFileName,
346
- lineNumber: 338,
342
+ lineNumber: 337,
347
343
  columnNumber: 17
348
344
  }
349
345
  }, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -358,7 +354,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
358
354
  __self: _this,
359
355
  __source: {
360
356
  fileName: _jsxFileName,
361
- lineNumber: 339,
357
+ lineNumber: 338,
362
358
  columnNumber: 19
363
359
  }
364
360
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -366,7 +362,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
366
362
  __self: _this,
367
363
  __source: {
368
364
  fileName: _jsxFileName,
369
- lineNumber: 347,
365
+ lineNumber: 346,
370
366
  columnNumber: 21
371
367
  }
372
368
  }, message && _react["default"].createElement(_reactNative.View, {
@@ -376,7 +372,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
376
372
  __self: _this,
377
373
  __source: {
378
374
  fileName: _jsxFileName,
379
- lineNumber: 349,
375
+ lineNumber: 348,
380
376
  columnNumber: 25
381
377
  }
382
378
  }, handleReaction && ownCapabilities != null && ownCapabilities.sendReaction ? _react["default"].createElement(OverlayReactionList, {
@@ -384,12 +380,11 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
384
380
  ownReactionTypes: (message == null ? void 0 : (_message$own_reaction = message.own_reactions) == null ? void 0 : _message$own_reaction.map(function (reaction) {
385
381
  return reaction.type;
386
382
  })) || [],
387
- setReactionListHeight: setReactionListHeight,
388
383
  showScreen: showScreen,
389
384
  __self: _this,
390
385
  __source: {
391
386
  fileName: _jsxFileName,
392
- lineNumber: 358,
387
+ lineNumber: 357,
393
388
  columnNumber: 29
394
389
  }
395
390
  }) : null, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -410,7 +405,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
410
405
  __self: _this,
411
406
  __source: {
412
407
  fileName: _jsxFileName,
413
- lineNumber: 367,
408
+ lineNumber: 365,
414
409
  columnNumber: 27
415
410
  }
416
411
  }, alignment === 'left' && MessageAvatar && _react["default"].createElement(MessageAvatar, {
@@ -420,7 +415,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
420
415
  __self: _this,
421
416
  __source: {
422
417
  fileName: _jsxFileName,
423
- lineNumber: 383,
418
+ lineNumber: 381,
424
419
  columnNumber: 31
425
420
  }
426
421
  }), _react["default"].createElement(_reactNative.View, {
@@ -435,7 +430,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
435
430
  __self: _this,
436
431
  __source: {
437
432
  fileName: _jsxFileName,
438
- lineNumber: 385,
433
+ lineNumber: 383,
439
434
  columnNumber: 29
440
435
  }
441
436
  }, messagesContext == null ? void 0 : (_messagesContext$mess = messagesContext.messageContentOrder) == null ? void 0 : _messagesContext$mess.map(function (messageContentType, messageContentOrderIndex) {
@@ -447,7 +442,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
447
442
  __self: _this,
448
443
  __source: {
449
444
  fileName: _jsxFileName,
450
- lineNumber: 428,
445
+ lineNumber: 426,
451
446
  columnNumber: 43
452
447
  }
453
448
  }, _react["default"].createElement(Reply, {
@@ -460,7 +455,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
460
455
  __self: _this,
461
456
  __source: {
462
457
  fileName: _jsxFileName,
463
- lineNumber: 432,
458
+ lineNumber: 430,
464
459
  columnNumber: 45
465
460
  }
466
461
  }));
@@ -473,7 +468,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
473
468
  __self: _this,
474
469
  __source: {
475
470
  fileName: _jsxFileName,
476
- lineNumber: 449,
471
+ lineNumber: 447,
477
472
  columnNumber: 45
478
473
  }
479
474
  });
@@ -487,7 +482,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
487
482
  __self: _this,
488
483
  __source: {
489
484
  fileName: _jsxFileName,
490
- lineNumber: 458,
485
+ lineNumber: 456,
491
486
  columnNumber: 43
492
487
  }
493
488
  });
@@ -504,7 +499,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
504
499
  __self: _this,
505
500
  __source: {
506
501
  fileName: _jsxFileName,
507
- lineNumber: 468,
502
+ lineNumber: 466,
508
503
  columnNumber: 43
509
504
  }
510
505
  });
@@ -520,7 +515,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
520
515
  __self: _this,
521
516
  __source: {
522
517
  fileName: _jsxFileName,
523
- lineNumber: 483,
518
+ lineNumber: 481,
524
519
  columnNumber: 41
525
520
  }
526
521
  });
@@ -533,7 +528,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
533
528
  __self: _this,
534
529
  __source: {
535
530
  fileName: _jsxFileName,
536
- lineNumber: 497,
531
+ lineNumber: 495,
537
532
  columnNumber: 29
538
533
  }
539
534
  })), !!messageReactionTitle && message.latest_reactions && message.latest_reactions.length > 0 ? _react["default"].createElement(OverlayReactions, {
@@ -556,7 +551,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
556
551
  __self: _this,
557
552
  __source: {
558
553
  fileName: _jsxFileName,
559
- lineNumber: 507,
554
+ lineNumber: 505,
560
555
  columnNumber: 29
561
556
  }
562
557
  }) : null))))))))));
@@ -618,7 +613,7 @@ var MessageOverlay = function MessageOverlay(props) {
618
613
  __self: _this,
619
614
  __source: {
620
615
  fileName: _jsxFileName,
621
- lineNumber: 620,
616
+ lineNumber: 618,
622
617
  columnNumber: 5
623
618
  }
624
619
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","reset","setOverlay","threadList","visible","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","setReactionListHeight","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","show","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","duration","easing","Easing","out","ease","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","prevVisible","nextAlignment","nextMessage","nextMessageReactionTitle","nextVisible","visibleEqual","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAMA;;AAcA;;AACA;;AACA;;AAEA;;AACA;;AAMA;;AACA;;AAKA;;AAGA;;AACA;;AACA;;;;;;;;;AAMA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,QAAQ,EAAE;AAAEC,IAAAA,UAAU,EAAE;AAAd,GADqB;AAE/BC,EAAAA,UAAU,EAAE;AAAED,IAAAA,UAAU,EAAE;AAAd,GAFmB;AAG/BE,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,CADJ;AAENC,IAAAA,cAAc,EAAE;AAFV,GAHuB;AAO/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,mBAAmB,EAAE,EADP;AAEdC,IAAAA,oBAAoB,EAAE,EAFR;AAGdC,IAAAA,WAAW,EAAE,CAHC;AAIdC,IAAAA,QAAQ,EAAE;AAJI,GAPe;AAa/BC,EAAAA,IAAI,EAAE;AACJA,IAAAA,IAAI,EAAE;AADF,GAbyB;AAgB/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,OAAO,EAAE;AADK,GAhBe;AAmB/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,aAAa,EAAE,KADD;AAEdC,IAAAA,iBAAiB,EAAE,CAFL;AAGdC,IAAAA,UAAU,EAAE;AAHE,GAnBe;AAwB/BC,EAAAA,GAAG,EAAE;AAAEH,IAAAA,aAAa,EAAE;AAAjB,GAxB0B;AAyB/BI,EAAAA,UAAU,EAAE;AAAET,IAAAA,QAAQ,EAAEU,sBAASC,EAAT,KAAgB,KAAhB,GAAwB,SAAxB,GAAoC;AAAhD;AAzBmB,CAAlB,CAAf;;AA4BA,IAAMC,YAAY,GAAG,eAAG,GAAH,CAArB;AACA,IAAMC,gBAAgB,GAAG,eAAG,EAAH,CAAzB;AACA,IAAMC,+BAA+B,GAAG,CAAxC;;AA6BA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AAAA;;AACH,MACEC,SADF,GA+BID,KA/BJ,CACEC,SADF;AAAA,MAEEC,eAFF,GA+BIF,KA/BJ,CAEEE,eAFF;AAAA,MAGEC,QAHF,GA+BIH,KA/BJ,CAGEG,QAHF;AAAA,MAIEC,KAJF,GA+BIJ,KA/BJ,CAIEI,KAJF;AAAA,MAKEC,WALF,GA+BIL,KA/BJ,CAKEK,WALF;AAAA,MAMEC,cANF,GA+BIN,KA/BJ,CAMEM,cANF;AAAA,MAOEC,MAPF,GA+BIP,KA/BJ,CAOEO,MAPF;AAAA,MAQEC,OARF,GA+BIR,KA/BJ,CAQEQ,OARF;AAAA,MASEC,cATF,GA+BIT,KA/BJ,CASES,cATF;AAAA,8BA+BIT,KA/BJ,CAUEU,iBAVF;AAAA,MAUEA,iBAVF,sCAUsBC,oCAVtB;AAAA,MAWEC,qBAXF,GA+BIZ,KA/BJ,CAWEY,qBAXF;AAAA,MAYEC,cAZF,GA+BIb,KA/BJ,CAYEa,cAZF;AAAA,MAaEC,oBAbF,GA+BId,KA/BJ,CAaEc,oBAbF;AAAA,8BA+BId,KA/BJ,CAcEe,wBAdF;AAAA,MAcEA,wBAdF,sCAc6BjB,+BAd7B;AAAA,MAeEkB,eAfF,GA+BIhB,KA/BJ,CAeEgB,eAfF;AAAA,MAgBEC,UAhBF,GA+BIjB,KA/BJ,CAgBEiB,UAhBF;AAAA,MAiBEC,gBAjBF,GA+BIlB,KA/BJ,CAiBEkB,gBAjBF;AAAA,MAkBEC,OAlBF,GA+BInB,KA/BJ,CAkBEmB,OAlBF;AAAA,MAmBEC,cAnBF,GA+BIpB,KA/BJ,CAmBEoB,cAnBF;AAAA,8BA+BIpB,KA/BJ,CAoBEqB,mBApBF;AAAA,MAoBEA,mBApBF,sCAoBwBC,wCApBxB;AAAA,+BA+BItB,KA/BJ,CAqBEuB,gBArBF;AAAA,MAqBEA,gBArBF,uCAqBqBC,kCArBrB;AAAA,+BA+BIxB,KA/BJ,CAsBEyB,sBAtBF;AAAA,MAsBEA,sBAtBF,uCAsB2BC,8CAtB3B;AAAA,MAuBEC,KAvBF,GA+BI3B,KA/BJ,CAuBE2B,KAvBF;AAAA,MAwBEC,UAxBF,GA+BI5B,KA/BJ,CAwBE4B,UAxBF;AAAA,MAyBEC,UAzBF,GA+BI7B,KA/BJ,CAyBE6B,UAzBF;AAAA,MA0BEC,OA1BF,GA+BI9B,KA/BJ,CA0BE8B,OA1BF;AAAA,MA2BEC,WA3BF,GA+BI/B,KA/BJ,CA2BE+B,WA3BF;AAAA,MA4BEC,gBA5BF,GA+BIhC,KA/BJ,CA4BEgC,gBA5BF;AAAA,MA6BEC,KA7BF,GA+BIjC,KA/BJ,CA6BEiC,KA7BF;AAAA,MA8BEC,eA9BF,GA+BIlC,KA/BJ,CA8BEkC,eA9BF;AAiCA,MAAMC,kBAAkB,GAAG;AACzBF,IAAAA,KAAK,EAALA,KADyB;AAEzBF,IAAAA,WAAW,EAAXA,WAFyB;AAGzBG,IAAAA,eAAe,EAAfA,eAHyB;AAIzB1B,IAAAA,OAAO,EAAPA,OAJyB;AAKzBwB,IAAAA,gBAAgB,EAAhBA;AALyB,GAA3B;;AAQA,kBAAkB,6BAAlB;AAAA,MAAQI,KAAR,aAAQA,KAAR;;AAEA,MAAMC,cAAc,GAAGrB,eAAH,oBAAGA,eAAe,CAAEqB,cAAxC;AACA,MAAMC,kBAAkB,GAAGnC,QAAQ,MAAKK,OAAL,qCAAKA,OAAO,CAAE+B,IAAd,qBAAK,cAAeC,EAApB,CAAR,IAAkC,CAAC,CAACH,cAA/D;;AAEA,kBAAwD,qBAASI,IAAI,CAACC,SAAL,CAAeL,cAAf,CAAT,CAAxD;AAAA;AAAA,MAAOM,oBAAP;AAAA,MAA6BC,uBAA7B;;AACA,mBAAkC,qBAAS,CAAT,CAAlC;AAAA;AAAA,MAASC,qBAAT;;AAEA,wBAAU,YAAM;AACd,QAAIR,cAAJ,EAAoB;AAClBO,MAAAA,uBAAuB,CAACH,IAAI,CAACC,SAAL,CAAeL,cAAf,CAAD,CAAvB;AACD;AACF,GAJD,EAIG,CAACA,cAAD,CAJH;AAMA,MAAMS,aAAa,GAAG,oBACpB;AAAA,WAAM,+BAAY;AAAEC,MAAAA,KAAK,EAAEV,cAAT;AAAyBD,MAAAA,KAAK,EAALA;AAAzB,KAAZ,CAAN;AAAA,GADoB,EAEpB,CAACO,oBAAD,EAAuBP,KAAvB,CAFoB,CAAtB;;AAKA,aAUIE,kBAAkB,GAAGQ,aAAH,GAAmBV,KAVzC;AAAA,yBACEY,MADF;AAAA,MACYC,UADZ,eACYA,UADZ;AAAA,MACwBC,cADxB,eACwBA,cADxB;AAAA,MACwCC,YADxC,eACwCA,YADxC;AAAA,MACsDC,WADtD,eACsDA,WADtD;AAAA,MACmEC,WADnE,eACmEA,WADnE;AAAA,mCAEEC,aAFF,CAGIC,OAHJ;AAAA,qDAIMC,SAJN;AAAA,MAImBC,aAJnB,0BAImBA,aAJnB;AAAA,MAIkCC,aAJlC,0BAIkCA,aAJlC;AAAA,MAKM9E,cALN,yBAKMA,cALN;AAAA,MAMMQ,cANN,yBAMMA,cANN;AAAA,0BASE+B,OATF;AAAA,MASwBwC,cATxB,gBASaH,SATb;AAAA,MASiDtE,cATjD,gBASwCC,OATxC;;AAYA,MAAMyE,aAAa,GAAG,2CAAe,CAAf,CAAtB;AACA,MAAMC,aAAa,GAAG,2CAAe;AAAEC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAAf,CAAtB;AACA,MAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,MAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AACA,MAAMC,UAAU,GAAG,2CAAe,CAAf,CAAnB;AACA,MAAMC,KAAK,GAAG,2CAAe,CAAf,CAAd;AAEA,MAAMC,UAAU,GAAG,2CAAe,CAAf,CAAnB;;AACA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAmB;AACpC;;AACA,QAAIA,IAAJ,EAAU;AACRL,MAAAA,OAAO,CAACM,KAAR,GAAgB,CAAhB;AACAL,MAAAA,UAAU,CAACK,KAAX,GAAmB,CAAnB;AACAJ,MAAAA,KAAK,CAACI,KAAN,GAAc,CAAd;AACD;;AACDH,IAAAA,UAAU,CAACG,KAAX,GAAmBD,IAAI,GACnB,uCAAW,CAAX,EAAc;AACZE,MAAAA,OAAO,EAAE,GADG;AAEZC,MAAAA,IAAI,EAAE,GAFM;AAGZC,MAAAA,yBAAyB,EAAE,IAHf;AAIZC,MAAAA,kBAAkB,EAAE,IAJR;AAKZC,MAAAA,SAAS,EAAE,GALC;AAMZC,MAAAA,QAAQ,EAAE;AANE,KAAd,CADmB,GASnB,uCACE,CADF,EAEE;AACEC,MAAAA,QAAQ,EAAE,GADZ;AAEEC,MAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,KAFF,EAME,YAAM;AACJ,UAAI,CAACZ,IAAL,EAAW;AACT,4CAAQ3C,KAAR;AACD;AACF,KAVH,CATJ;AAqBD,GA5BD;;AA8BA,wBAAU,YAAM;AACd,QAAIG,OAAJ,EAAa;AACXqD,4BAASC,OAAT;AACD;;AACDf,IAAAA,UAAU,CAAC,CAAC,CAACvC,OAAH,CAAV;AACD,GALD,EAKG,CAACA,OAAD,CALH;AAOA,MAAMuD,KAAK,GAAG,sDAAyD;AACrEC,IAAAA,QAAQ,EAAE,kBAACC,GAAD,EAAS;AACjBrB,MAAAA,UAAU,CAACK,KAAX,GAAmBN,OAAO,CAACM,KAAR,GAAgBgB,GAAG,CAACC,YAAvC;AACApE,MAAAA,cAAc,CAACmD,KAAf,GAAuB,wCACrBL,UAAU,CAACK,KADU,EAErB,CAAC,CAAD,EAAI1E,gBAAJ,CAFqB,EAGrB,CAAC,CAAD,EAAI,IAAJ,CAHqB,EAIrB4F,mCAAYC,KAJS,CAAvB;AAMAvB,MAAAA,KAAK,CAACI,KAAN,GAAc,wCACZL,UAAU,CAACK,KADC,EAEZ,CAAC,CAAD,EAAI1E,gBAAJ,CAFY,EAGZ,CAAC,CAAD,EAAI,IAAJ,CAHY,EAIZ4F,mCAAYC,KAJA,CAAd;AAMD,KAfoE;AAgBrEC,IAAAA,QAAQ,EAAE,kBAACJ,GAAD,EAAS;AACjB,UAAMK,cAAc,GAAGL,GAAG,CAACC,YAAJ,GAAmBD,GAAG,CAACM,SAAJ,GAAgB,GAA1D;;AAEA,UAAID,cAAc,GAAG/F,gBAAjB,IAAqCqE,UAAU,CAACK,KAAX,GAAmB,CAA5D,EAA+D;AAC7D,oDAAgBL,UAAhB;AACA9C,QAAAA,cAAc,CAACmD,KAAf,GAAuB,uCACrB,CADqB,EAErB;AACEO,UAAAA,QAAQ,EAAE,GADZ;AAEEC,UAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,SAFqB,EAMrB,YAAM;AACJ,8CAAQtD,UAAR,EAAoB,MAApB;AACD,SARoB,CAAvB;AAUAsC,QAAAA,UAAU,CAACK,KAAX,GACEgB,GAAG,CAACM,SAAJ,GAAgB,IAAhB,GACI,sCAAU;AACRhB,UAAAA,QAAQ,EAAEU,GAAG,CAACM;AADN,SAAV,CADJ,GAII,uCAAWjG,YAAX,EAAyB;AACvBkF,UAAAA,QAAQ,EAAE,GADa;AAEvBC,UAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFe,SAAzB,CALN;AASD,OArBD,MAqBO;AACLhB,QAAAA,UAAU,CAACK,KAAX,GAAmB,uCAAW,CAAX,CAAnB;AACAJ,QAAAA,KAAK,CAACI,KAAN,GAAc,uCAAW,CAAX,CAAd;AACAnD,QAAAA,cAAc,CAACmD,KAAf,GAAuB,uCAAW,CAAX,CAAvB;AACD;AACF,KA7CoE;AA8CrEuB,IAAAA,OAAO,EAAE,mBAAM;AACb,kDAAgB5B,UAAhB;AACAD,MAAAA,OAAO,CAACM,KAAR,GAAgBL,UAAU,CAACK,KAA3B;AACD;AAjDoE,GAAzD,CAAd;AAoDA,MAAMwB,QAAQ,GAAG,6CAA4B;AAAA,WAAO;AAClDC,MAAAA,SAAS,EAAE,CACT;AACE9B,QAAAA,UAAU,EAAEA,UAAU,CAACK;AADzB,OADS,EAIT;AACEJ,QAAAA,KAAK,EAAEA,KAAK,CAACI;AADf,OAJS;AADuC,KAAP;AAAA,GAA5B,CAAjB;AAWA,MAAM0B,eAAe,GAAG,6CACtB;AAAA,WAAO;AACLD,MAAAA,SAAS,EAAE,CACT;AACE9B,QAAAA,UAAU,EAAE,wCAAYE,UAAU,CAACG,KAAvB,EAA8B,CAAC,CAAD,EAAI,CAAJ,CAA9B,EAAsC,CAACX,aAAa,CAACW,KAAd,GAAsB,CAAvB,EAA0B,CAA1B,CAAtC;AADd,OADS,EAIT;AACE2B,QAAAA,UAAU,EAAE,wCACV9B,UAAU,CAACG,KADD,EAEV,CAAC,CAAD,EAAI,CAAJ,CAFU,EAGV,CAACtE,SAAS,KAAK,MAAd,GAAuB,CAAC+D,YAAY,CAACO,KAAd,GAAsB,CAA7C,GAAiDP,YAAY,CAACO,KAAb,GAAqB,CAAvE,EAA0E,CAA1E,CAHU;AADd,OAJS,EAWT;AACEJ,QAAAA,KAAK,EAAEC,UAAU,CAACG;AADpB,OAXS;AADN,KAAP;AAAA,GADsB,EAkBtB,CAACtE,SAAD,CAlBsB,CAAxB;AAqBA,MAAMkG,UAAU,GAAMlG,SAAN,SAAmB,CAAC,CAAAI,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,KAAoB,QAArB,EAA+B+F,WAA/B,EAAnC;AAEA,MAAMC,gBAAgB,GAAG,CAAC,EAAC7F,OAAD,YAACA,OAAO,CAAE8F,WAAV,CAA1B;;AAEA,cAA2EtF,eAAe,IAAI,EAA9F;AAAA,MAAQuF,UAAR,SAAQA,UAAR;AAAA,MAAoBC,mBAApB,SAAoBA,mBAApB;AAAA,MAAyCC,OAAzC,SAAyCA,OAAzC;AAAA,MAAkDC,aAAlD,SAAkDA,aAAlD;AAAA,MAAiEC,KAAjE,SAAiEA,KAAjE;;AAEA,SACE,gCAAC,iCAAD;AAAkB,IAAA,KAAK,EAAE3F,eAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,+BAAD;AAAiB,IAAA,KAAK,EAAEH,cAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,WAAW,EAAEyB,kBAAkB,GAAGQ,aAAH,GAAmBV,KAAjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iCAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAEN,OAAO,GAAG,MAAH,GAAY,MADpC;AAEE,IAAA,KAAK,EAAE,CAAC1D,wBAAWwI,kBAAZ,EAAgCjD,cAAhC,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,4CAAD;AACE,IAAA,OAAO,EAAExC,OAAO,KAAK,SADvB;AAEE,IAAA,WAAW,EAAE,CAFf;AAGE,IAAA,OAAO,EAAE,EAHX;AAIE,IAAA,cAAc,EAAEkE,KAJlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAME,gCAAC,iCAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACjH,wBAAWwI,kBAAZ,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,yBAAD;AAAc,IAAA,KAAK,EAAEzI,MAAM,CAACc,IAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,4CAAD;AACE,IAAA,OAAO,EAAE,EADX;AAEE,IAAA,oBAAoB,EAAE,qCAAgC;AAAA,UAAd4H,KAAc,SAA7BC,WAA6B,CAAdD,KAAc;;AACpD,UAAIA,KAAK,KAAKE,iCAAMC,GAApB,EAAyB;AACvBpF,QAAAA,UAAU,CAAC,MAAD,CAAV;AACD;AACF,KANH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQE,gCAAC,iCAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACzD,MAAM,CAACc,IAAR,EAAc8G,QAAd,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGvF,OAAO,IACN,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLrC,MAAM,CAACM,MADF,EAELN,MAAM,CAACe,cAFF,EAGL;AAAEC,MAAAA,OAAO,EAAED;AAAX,KAHK,EAILe,SAAS,KAAK,MAAd,GAAuB9B,MAAM,CAACK,UAA9B,GAA2CL,MAAM,CAACG,QAJ7C,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQGgC,cAAc,IAAIJ,eAAJ,YAAIA,eAAe,CAAE+G,YAAnC,GACC,gCAAC,mBAAD;AACE,IAAA,aAAa,EAAEpD,aADjB;AAEE,IAAA,gBAAgB,EACd,CAAArD,OAAO,QAAP,qCAAAA,OAAO,CAAE0G,aAAT,2CAAwBC,GAAxB,CAA4B,UAACC,QAAD;AAAA,aAAcA,QAAQ,CAACC,IAAvB;AAAA,KAA5B,MAA4D,EAHhE;AAKE,IAAA,qBAAqB,EAAExE,qBALzB;AAME,IAAA,UAAU,EAAEuB,UANd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADD,GASG,IAjBN,EAkBE,gCAAC,iCAAD,CAAU,IAAV;AACE,IAAA,QAAQ,EAAE,yBAIJ;AAAA,wCAHJ0C,WAGI,CAFFQ,MAEE;AAAA,UAFgBC,YAEhB,yBAFQC,MAER;AAAA,UAFqCC,WAErC,yBAF8BC,KAE9B;AAAA,UAFkD5D,CAElD,yBAFkDA,CAElD;AAAA,UAFqDC,CAErD,yBAFqDA,CAErD;AACJF,MAAAA,aAAa,CAACU,KAAd,GAAsB;AACpBT,QAAAA,CAAC,EAAE7D,SAAS,KAAK,MAAd,GAAuB6D,CAAC,GAAG2D,WAA3B,GAAyC3D,CADxB;AAEpBC,QAAAA,CAAC,EAADA;AAFoB,OAAtB;AAIAC,MAAAA,YAAY,CAACO,KAAb,GAAqBkD,WAArB;AACA7D,MAAAA,aAAa,CAACW,KAAd,GAAsBgD,YAAtB;AACD,KAZH;AAaE,IAAA,KAAK,EAAE,CAACpJ,MAAM,CAACG,QAAR,EAAkBH,MAAM,CAACqB,GAAzB,EAA8ByG,eAA9B,CAbT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAeGhG,SAAS,KAAK,MAAd,IAAwByG,aAAxB,IACC,gCAAC,aAAD;AAAqBzG,IAAAA,SAAS,EAATA,SAArB;AAAgCO,IAAAA,OAAO,EAAPA,OAAhC;AAAyCmH,IAAAA,UAAU,EAAE,IAArD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAhBJ,EAkBE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLxJ,MAAM,CAACS,cADF,EAEL;AACEgJ,MAAAA,eAAe,EACb3G,UAAU,IAAI,CAACT,OAAO,CAACqH,cAAvB,GACIzE,WADJ,GAEIlC,gBAAgB,QAAhB,IAAAA,gBAAgB,CAAE4G,MAAlB,GACA5G,gBAAgB,CAAC,CAAD,CAAhB,CAAoBmG,IAApB,KAA6B,OAA7B,GACE,CAAC7G,OAAO,CAACqH,cAAT,GACEzE,WADF,GAEEF,cAHJ,GAIED,UALF,GAMAhD,SAAS,KAAK,MAAd,GACAoD,WADA,GAEAH,cAZR;AAaE6E,MAAAA,sBAAsB,EACpB,CAAC5B,UAAU,KAAK,aAAf,IACCA,UAAU,KAAK,aADjB,MAEC,CAACE,gBAAD,IAAqBxE,UAFtB,IAGI6B,aAHJ,GAIID,aAlBR;AAmBEuE,MAAAA,uBAAuB,EACrB,CAAC7B,UAAU,KAAK,cAAf,IACCA,UAAU,KAAK,cADjB,MAEC,CAACE,gBAAD,IAAqBxE,UAFtB,IAGI6B,aAHJ,GAIID,aAxBR;AAyBEwE,MAAAA,WAAW,EAAE9E;AAzBf,KAFK,EA6BJlC,UAAU,IAAI,CAACT,OAAO,CAACqH,cAAxB,IAA2C3G,gBAA3C,YAA2CA,gBAAgB,CAAE4G,MAA7D,GACI;AAAE/I,MAAAA,WAAW,EAAE;AAAf,KADJ,GAEI,EA/BC,EAgCLH,cAhCK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAoCGoC,eApCH,6CAoCGA,eAAe,CAAEkH,mBApCpB,qBAoCG,sBAAsCf,GAAtC,CACC,UAACgB,kBAAD,EAAqBC,wBAArB,EAAkD;AAChD,YAAQD,kBAAR;AACE,WAAK,cAAL;AACE,eACE3H,OAAO,CAACqH,cAAR,IACAlB,KADA,IAEE,gCAAC,iBAAD;AACE,UAAA,GAAG,oBAAkByB,wBADvB;AAEE,UAAA,KAAK,EAAE,CAACjK,MAAM,CAACiB,cAAR,EAAwBA,cAAxB,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAIE,gCAAC,KAAD;AACE,UAAA,aAAa,EACXoB,OAAO,CAACqH,cAFZ;AAIE,UAAA,MAAM,EAAE;AACNQ,YAAAA,gBAAgB,EAAE;AAChBC,cAAAA,QAAQ,EAAE,eAAG,EAAH;AADM;AADZ,WAJV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAJF,CAHJ;;AAoBF,WAAK,aAAL;AACE,eAAOpH,gBAAP,oBAAOA,gBAAgB,CAAEiG,GAAlB,CACL,UAACoB,UAAD,EAAaC,eAAb;AAAA,iBACEjC,UAAU,IACR,gCAAC,UAAD;AACE,YAAA,UAAU,EAAEgC,UADd;AAEE,YAAA,GAAG,EAAK/H,OAAO,CAACgC,EAAb,SAAmBgG,eAFxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAFJ;AAAA,SADK,CAAP;;AASF,WAAK,OAAL;AACE,eACEhC,mBAAmB,IACjB,gCAAC,mBAAD;AACE,UAAA,KAAK,EAAEpG,KADT;AAEE,UAAA,GAAG,6BAA2BgI,wBAFhC;AAGE,UAAA,SAAS,EAAE5H,OAAO,CAACgC,EAHrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFJ;;AASF,WAAK,SAAL;AACE,eACEiE,OAAO,IACL,gCAAC,OAAD;AACE,UAAA,SAAS,EAAExG,SADb;AAEE,UAAA,WAAW,EAAEI,WAFf;AAGE,UAAA,gBAAgB,EAAE,CAAC,EAACG,OAAD,YAACA,OAAO,CAAE8F,WAAV,CAHrB;AAIE,UAAA,MAAM,EAAE/F,MAJV;AAKE,UAAA,GAAG,eAAa6H,wBALlB;AAME,UAAA,OAAO,EAAE5H,OANX;AAOE,UAAA,UAAU,EAAEqB,UAPd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFJ;;AAaF,WAAK,MAAL;AACA;AACE,eAAOX,gBAAgB,QAAhB,IAAAA,gBAAgB,CAAE4G,MAAlB,IACL5G,gBAAgB,CAAC,CAAD,CAAhB,CAAoBuH,OADf,GACyB,IADzB,GAEL,gCAAC,0CAAD;AACE,UAAA,GAAG,8BAA4BL,wBADjC;AAEE,UAAA,OAAO,EAAE5H,OAFX;AAGE,UAAA,cAAc,MAHhB;AAIE,UAAA,wBAAwB,EAAEO,wBAJ5B;AAKE,UAAA,UAAU,EAAEE,UALd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFF;AA1DJ;AAqED,GAvEF,CApCH,CAlBF,CAlBF,EAmJGR,cAAc,IACb,gCAAC,iBAAD;AACE,IAAA,qBAAqB,EAAEG,qBADzB;AAEE,IAAA,UAAU,EAAEwD;AAFd,KAGMjC,kBAHN;AAIE,IAAA,OAAO,EAAE3B,OAJX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KApJJ,EA2JG,CAAC,CAACM,oBAAF,IACDN,OAAO,CAACkI,gBADP,IAEDlI,OAAO,CAACkI,gBAAR,CAAyBZ,MAAzB,GAAkC,CAFjC,GAGC,gCAAC,gBAAD;AACE,IAAA,SAAS,EAAE7H,SADb;AAEE,IAAA,sBAAsB,EAAEwB,sBAF1B;AAGE,IAAA,SAAS,EACPjB,OAAO,CAACkI,gBAAR,CAAyBvB,GAAzB,CAA6B,UAACC,QAAD;AAAA;;AAAA,aAAe;AAC1CnH,QAAAA,SAAS,EACPE,QAAQ,IAAIA,QAAQ,wBAAKiH,QAAQ,CAAC7E,IAAd,qBAAK,eAAeC,EAApB,CAApB,GAA6C,OAA7C,GAAuD,MAFf;AAG1CA,QAAAA,EAAE,EAAE,CAAA4E,QAAQ,QAAR,+BAAAA,QAAQ,CAAE7E,IAAV,qCAAgBC,EAAhB,KAAsB,EAHgB;AAI1CmG,QAAAA,KAAK,EAAEvB,QAAF,uCAAEA,QAAQ,CAAE7E,IAAZ,qBAAE,gBAAgBoG,KAJmB;AAK1CC,QAAAA,IAAI,EAAE,CAAAxB,QAAQ,QAAR,+BAAAA,QAAQ,CAAE7E,IAAV,qCAAgBqG,IAAhB,KAAwBxB,QAAQ,CAACyB,OAAjC,IAA4C,EALR;AAM1CxB,QAAAA,IAAI,EAAED,QAAQ,CAACC;AAN2B,OAAf;AAAA,KAA7B,CAJJ;AAaE,IAAA,UAAU,EAAEjD,UAbd;AAcE,IAAA,kBAAkB,EAAEpD,eAAF,oBAAEA,eAAe,CAAE8H,kBAdvC;AAeE,IAAA,KAAK,EAAEhI,oBAfT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAHD,GAoBG,IA/KN,CAFJ,CARF,CADF,CADF,CANF,CAJF,CADF,CADF,CADF,CADF;AAsND,CA3aD;;AA6aA,IAAMiI,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MACaC,aADb,GAKIF,SALJ,CACE/I,SADF;AAAA,MAEWkJ,WAFX,GAKIH,SALJ,CAEExI,OAFF;AAAA,MAGwB4I,wBAHxB,GAKIJ,SALJ,CAGElI,oBAHF;AAAA,MAIWuI,WAJX,GAKIL,SALJ,CAIElH,OAJF;AAMA,MACawH,aADb,GAKIL,SALJ,CACEhJ,SADF;AAAA,MAEWsJ,WAFX,GAKIN,SALJ,CAEEzI,OAFF;AAAA,MAGwBgJ,wBAHxB,GAKIP,SALJ,CAGEnI,oBAHF;AAAA,MAIW2I,WAJX,GAKIR,SALJ,CAIEnH,OAJF;AAOA,MAAM4H,YAAY,GAAGL,WAAW,KAAKI,WAArC;AACA,MAAI,CAACC,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,cAAc,GAAGT,aAAa,KAAKI,aAAzC;AACA,MAAI,CAACK,cAAL,EAAqB,OAAO,KAAP;AAErB,MAAMC,yBAAyB,GAAGR,wBAAwB,KAAKI,wBAA/D;AACA,MAAI,CAACI,yBAAL,EAAgC,OAAO,KAAP;AAEhC,MAAMC,oBAAoB,GACxBC,KAAK,CAACC,OAAN,CAAcZ,WAAd,oBAAcA,WAAW,CAAET,gBAA3B,KAAgDoB,KAAK,CAACC,OAAN,CAAcR,WAAd,oBAAcA,WAAW,CAAEb,gBAA3B,CAAhD,GACI,CAAAS,WAAW,QAAX,YAAAA,WAAW,CAAET,gBAAb,CAA8BZ,MAA9B,OAAyCyB,WAAzC,oBAAyCA,WAAW,CAAEb,gBAAb,CAA8BZ,MAAvE,MACAqB,WADA,oBACAA,WAAW,CAAET,gBAAb,CAA8BsB,KAA9B,CACE,iBAAWC,KAAX;AAAA;;AAAA,QAAG5C,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,MAAKkC,WAAL,6CAAKA,WAAW,CAAEb,gBAAlB,qBAAK,sBAAgCuB,KAAhC,EAAuC5C,IAA5C,CAAzB;AAAA,GADF,CADA,CADJ,GAKI,CAAA8B,WAAW,QAAX,YAAAA,WAAW,CAAET,gBAAb,OAAkCa,WAAlC,oBAAkCA,WAAW,CAAEb,gBAA/C,CANN;AAOA,MAAI,CAACmB,oBAAL,EAA2B,OAAO,KAAP;AAE3B,SAAO,IAAP;AACD,CApCD;;AAsCA,IAAMK,sBAAsB,GAAGC,kBAAMC,IAAN,CAC7BrK,yBAD6B,EAE7BgJ,QAF6B,CAA/B;;AAiBO,IAAMsB,cAAc,GAAG,SAAjBA,cAAiB,CAG5BrK,KAH4B,EAIzB;AACH,8BAQI,sDARJ;AAAA,MACEsK,IADF,yBACEA,IADF;AAAA,MAEE5J,iBAFF,yBAEEA,iBAFF;AAAA,MAGEE,qBAHF,yBAGEA,qBAHF;AAAA,MAIES,mBAJF,yBAIEA,mBAJF;AAAA,MAKEE,gBALF,yBAKEA,gBALF;AAAA,MAMEE,sBANF,yBAMEA,sBANF;AAAA,MAOEE,KAPF,yBAOEA,KAPF;;AASA,2BAAgC,wCAAhC;AAAA,MAAQR,OAAR,sBAAQA,OAAR;AAAA,MAAiBS,UAAjB,sBAAiBA,UAAjB;;AAEA,MAAM2I,cAAc,GAAG;AACrB7J,IAAAA,iBAAiB,EAAEV,KAAK,CAACU,iBAAN,IAA2BA,iBADzB;AAErBE,IAAAA,qBAAqB,EAAEZ,KAAK,CAACY,qBAAN,IAA+BA,qBAFjC;AAGrBS,IAAAA,mBAAmB,EACjBrB,KAAK,CAACqB,mBAAN,IAA6BA,mBAA7B,KAAoDiJ,IAApD,oBAAoDA,IAAI,CAAEjJ,mBAA1D,CAJmB;AAKrBE,IAAAA,gBAAgB,EAAEvB,KAAK,CAACuB,gBAAN,IAA0BA,gBALvB;AAMrBE,IAAAA,sBAAsB,EAAEzB,KAAK,CAACyB,sBAAN,IAAgCA;AANnC,GAAvB;AASA,SACE,gCAAC,sBAAD;AAEIN,IAAAA,OAAO,EAAPA,OAFJ;AAGIQ,IAAAA,KAAK,EAALA,KAHJ;AAIIC,IAAAA,UAAU,EAAVA;AAJJ,KAMM2I,cANN,EAOOD,IAAI,IAAI,EAPf,EAQMtK,KARN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAYD,CArCM","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n | 'reset'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n | 'overlayOpacity'\n > & {\n showScreen?: Animated.SharedValue<number>;\n visible?: boolean;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n reset,\n setOverlay,\n threadList,\n visible,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n const [, setReactionListHeight] = useState(0);\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n if (show) {\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n }\n showScreen.value = show\n ? withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n })\n : withTiming(\n 0,\n {\n duration: 150,\n easing: Easing.out(Easing.ease),\n },\n () => {\n if (!show) {\n runOnJS(reset)();\n }\n },\n );\n };\n\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(!!visible);\n }, [visible]);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n setReactionListHeight={setReactionListHeight}\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n visible: prevVisible,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n visible: nextVisible,\n } = nextProps;\n\n const visibleEqual = prevVisible === nextVisible;\n if (!visibleEqual) return false;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage?.latest_reactions) && Array.isArray(nextMessage?.latest_reactions)\n ? prevMessage?.latest_reactions.length === nextMessage?.latest_reactions.length &&\n prevMessage?.latest_reactions.every(\n ({ type }, index) => type === nextMessage?.latest_reactions?.[index].type,\n )\n : prevMessage?.latest_reactions === nextMessage?.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n reset,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n reset,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","reset","setOverlay","threadList","visible","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","show","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","duration","easing","Easing","out","ease","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","prevVisible","nextAlignment","nextMessage","nextMessageReactionTitle","nextVisible","visibleEqual","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n | 'reset'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n | 'overlayOpacity'\n > & {\n showScreen?: Animated.SharedValue<number>;\n visible?: boolean;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n reset,\n setOverlay,\n threadList,\n visible,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n if (show) {\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n }\n showScreen.value = show\n ? withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n })\n : withTiming(\n 0,\n {\n duration: 150,\n easing: Easing.out(Easing.ease),\n },\n () => {\n if (!show) {\n runOnJS(reset)();\n }\n },\n );\n };\n\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(!!visible);\n }, [visible]);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n visible: prevVisible,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n visible: nextVisible,\n } = nextProps;\n\n const visibleEqual = prevVisible === nextVisible;\n if (!visibleEqual) return false;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage?.latest_reactions) && Array.isArray(nextMessage?.latest_reactions)\n ? prevMessage?.latest_reactions.length === nextMessage?.latest_reactions.length &&\n prevMessage?.latest_reactions.every(\n ({ type }, index) => type === nextMessage?.latest_reactions?.[index].type,\n )\n : prevMessage?.latest_reactions === nextMessage?.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n reset,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n reset,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}
@@ -219,7 +219,6 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
219
219
  handleReaction = props.handleReaction,
220
220
  messageLayout = props.messageLayout,
221
221
  ownReactionTypes = props.ownReactionTypes,
222
- setReactionListHeight = props.setReactionListHeight,
223
222
  showScreen = props.showScreen,
224
223
  setOverlay = props.setOverlay,
225
224
  _props$supportedReact = props.supportedReactions,
@@ -287,7 +286,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
287
286
  __self: _this,
288
287
  __source: {
289
288
  fileName: _jsxFileName,
290
- lineNumber: 340,
289
+ lineNumber: 338,
291
290
  columnNumber: 5
292
291
  }
293
292
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -299,14 +298,14 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
299
298
  __self: _this,
300
299
  __source: {
301
300
  fileName: _jsxFileName,
302
- lineNumber: 341,
301
+ lineNumber: 339,
303
302
  columnNumber: 7
304
303
  }
305
304
  }, _react["default"].createElement(_reactNativeSvg["default"], {
306
305
  __self: _this,
307
306
  __source: {
308
307
  fileName: _jsxFileName,
309
- lineNumber: 347,
308
+ lineNumber: 345,
310
309
  columnNumber: 9
311
310
  }
312
311
  }, _react["default"].createElement(AnimatedCircle, {
@@ -315,7 +314,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
315
314
  __self: _this,
316
315
  __source: {
317
316
  fileName: _jsxFileName,
318
- lineNumber: 348,
317
+ lineNumber: 346,
319
318
  columnNumber: 11
320
319
  }
321
320
  }), _react["default"].createElement(AnimatedCircle, {
@@ -324,7 +323,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
324
323
  __self: _this,
325
324
  __source: {
326
325
  fileName: _jsxFileName,
327
- lineNumber: 349,
326
+ lineNumber: 347,
328
327
  columnNumber: 11
329
328
  }
330
329
  })), _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -337,7 +336,6 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
337
336
  width: layoutWidth
338
337
  };
339
338
  reactionListHeight.value = height;
340
- setReactionListHeight(height);
341
339
  },
342
340
  style: [styles.reactionList, {
343
341
  backgroundColor: white_snow
@@ -345,7 +343,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
345
343
  __self: _this,
346
344
  __source: {
347
345
  fileName: _jsxFileName,
348
- lineNumber: 351,
346
+ lineNumber: 349,
349
347
  columnNumber: 9
350
348
  }
351
349
  }, supportedReactions == null ? void 0 : supportedReactions.map(function (_ref3, index) {
@@ -364,7 +362,7 @@ var OverlayReactionListWithContext = function OverlayReactionListWithContext(pro
364
362
  __self: _this,
365
363
  __source: {
366
364
  fileName: _jsxFileName,
367
- lineNumber: 369,
365
+ lineNumber: 366,
368
366
  columnNumber: 13
369
367
  }
370
368
  });
@@ -402,7 +400,7 @@ var OverlayReactionList = function OverlayReactionList(props) {
402
400
  __self: _this,
403
401
  __source: {
404
402
  fileName: _jsxFileName,
405
- lineNumber: 434,
403
+ lineNumber: 431,
406
404
  columnNumber: 5
407
405
  }
408
406
  }));