stream-chat-react-native-core 5.24.0 → 5.25.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/MessageInput/SendButton.js +3 -1
- package/lib/commonjs/components/MessageInput/SendButton.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +11 -11
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/i18n/es.json +77 -78
- package/lib/commonjs/i18n/fr.json +46 -46
- package/lib/commonjs/i18n/he.json +77 -78
- package/lib/commonjs/i18n/hi.json +46 -46
- package/lib/commonjs/i18n/it.json +46 -46
- package/lib/commonjs/i18n/ja.json +77 -81
- package/lib/commonjs/i18n/ko.json +77 -80
- package/lib/commonjs/i18n/nl.json +46 -46
- package/lib/commonjs/i18n/ru.json +46 -46
- package/lib/commonjs/i18n/tr.json +46 -46
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/MessageInput/SendButton.js +3 -1
- package/lib/module/components/MessageInput/SendButton.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +11 -11
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/i18n/es.json +77 -78
- package/lib/module/i18n/fr.json +46 -46
- package/lib/module/i18n/he.json +77 -78
- package/lib/module/i18n/hi.json +46 -46
- package/lib/module/i18n/it.json +46 -46
- package/lib/module/i18n/ja.json +77 -81
- package/lib/module/i18n/ko.json +77 -80
- package/lib/module/i18n/nl.json +46 -46
- package/lib/module/i18n/ru.json +46 -46
- package/lib/module/i18n/tr.json +46 -46
- package/lib/module/version.json +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +2 -2
- package/lib/typescript/i18n/es.json +77 -78
- package/lib/typescript/i18n/fr.json +46 -46
- package/lib/typescript/i18n/he.json +77 -78
- package/lib/typescript/i18n/hi.json +46 -46
- package/lib/typescript/i18n/it.json +46 -46
- package/lib/typescript/i18n/ja.json +77 -81
- package/lib/typescript/i18n/ko.json +77 -80
- package/lib/typescript/i18n/nl.json +46 -46
- package/lib/typescript/i18n/ru.json +46 -46
- package/lib/typescript/i18n/tr.json +46 -46
- package/package.json +1 -1
- package/src/components/MessageInput/SendButton.tsx +1 -1
- package/src/contexts/messageInputContext/MessageInputContext.tsx +5 -2
- package/src/i18n/es.json +46 -47
- package/src/i18n/fr.json +46 -46
- package/src/i18n/he.json +46 -47
- package/src/i18n/hi.json +46 -46
- package/src/i18n/it.json +46 -46
- package/src/i18n/ja.json +53 -57
- package/src/i18n/ko.json +52 -55
- package/src/i18n/nl.json +46 -46
- package/src/i18n/ru.json +46 -46
- package/src/i18n/tr.json +46 -46
- package/src/version.json +1 -1
|
@@ -32,7 +32,9 @@ var SendButtonWithContext = function SendButtonWithContext(props) {
|
|
|
32
32
|
disabled: disabled,
|
|
33
33
|
onPress: disabled ? function () {
|
|
34
34
|
return null;
|
|
35
|
-
} :
|
|
35
|
+
} : function () {
|
|
36
|
+
return sendMessage(undefined);
|
|
37
|
+
},
|
|
36
38
|
style: [sendButton],
|
|
37
39
|
testID: "send-button",
|
|
38
40
|
__self: _this,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_MessageInputContext","_ThemeContext","_Search","_SendRight","_SendUp","_this","_jsxFileName","SendButtonWithContext","props","_props$disabled","disabled","giphyActive","sendMessage","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","grey_gainsboro","_useTheme$theme$messa","messageInput","searchIcon","sendButton","sendRightIcon","sendUpIcon","createElement","Pressable","onPress","style","testID","__self","__source","fileName","lineNumber","columnNumber","Search","_extends2","pathFill","SendRight","SendUp","areEqual","prevProps","nextProps","prevDisabled","prevGiphyActive","prevSendMessage","nextDisabled","nextGiphyActive","nextSendMessage","disabledEqual","giphyActiveEqual","sendMessageEqual","MemoizedSendButton","React","memo","SendButton","_useMessageInputConte","useMessageInputContext","exports","displayName"],"sources":["SendButton.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Pressable } from 'react-native';\n\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Search } from '../../icons/Search';\nimport { SendRight } from '../../icons/SendRight';\nimport { SendUp } from '../../icons/SendUp';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\ntype SendButtonPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'giphyActive' | 'sendMessage'> & {\n /** Disables the button */ disabled: boolean;\n};\n\nconst SendButtonWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: SendButtonPropsWithContext<StreamChatGenerics>,\n) => {\n const { disabled = false, giphyActive, sendMessage } = props;\n const {\n theme: {\n colors: { accent_blue, grey_gainsboro },\n messageInput: { searchIcon, sendButton, sendRightIcon, sendUpIcon },\n },\n } = useTheme();\n\n return (\n <Pressable\n disabled={disabled}\n onPress={disabled ? () => null : sendMessage}\n style={[sendButton]}\n testID='send-button'\n >\n {giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} {...searchIcon} />}\n {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} {...sendRightIcon} />}\n {!giphyActive && !disabled && <SendUp pathFill={accent_blue} {...sendUpIcon} />}\n </Pressable>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: SendButtonPropsWithContext<StreamChatGenerics>,\n nextProps: SendButtonPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n disabled: prevDisabled,\n giphyActive: prevGiphyActive,\n sendMessage: prevSendMessage,\n } = prevProps;\n const {\n disabled: nextDisabled,\n giphyActive: nextGiphyActive,\n sendMessage: nextSendMessage,\n } = nextProps;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const sendMessageEqual = prevSendMessage === nextSendMessage;\n if (!sendMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedSendButton = React.memo(\n SendButtonWithContext,\n areEqual,\n) as typeof SendButtonWithContext;\n\nexport type SendButtonProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<SendButtonPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for send button in MessageInput component.\n */\nexport const SendButton = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: SendButtonProps<StreamChatGenerics>,\n) => {\n const { giphyActive, sendMessage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedSendButton\n {...{ giphyActive, sendMessage }}\n {...props}\n {...{ disabled: props.disabled || false }}\n />\n );\n};\n\nSendButton.displayName = 'SendButton{messageInput}';\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AAIA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAA4C,IAAAO,KAAA;EAAAC,YAAA;AAU5C,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAGzBC,KAAqD,EAClD;EACH,IAAAC,eAAA,GAAuDD,KAAK,CAApDE,QAAQ;IAARA,QAAQ,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA;IAAEE,WAAW,GAAkBH,KAAK,CAAlCG,WAAW;IAAEC,WAAW,GAAKJ,KAAK,CAArBI,WAAW;EAClD,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,MAAM;IAAIC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,cAAc,GAAAH,qBAAA,CAAdG,cAAc;IAAAC,qBAAA,GAAAN,eAAA,CACrCO,YAAY;IAAIC,UAAU,GAAAF,qBAAA,CAAVE,UAAU;IAAEC,UAAU,GAAAH,qBAAA,CAAVG,UAAU;IAAEC,aAAa,GAAAJ,qBAAA,CAAbI,aAAa;IAAEC,UAAU,GAAAL,qBAAA,CAAVK,UAAU;EAIrE,OACE9B,MAAA,YAAA+B,aAAA,CAAC5B,YAAA,CAAA6B,SAAS;IACRlB,QAAQ,EAAEA,QAAS;IACnBmB,OAAO,EAAEnB,QAAQ,GAAG;MAAA,OAAM,IAAI;IAAA,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_MessageInputContext","_ThemeContext","_Search","_SendRight","_SendUp","_this","_jsxFileName","SendButtonWithContext","props","_props$disabled","disabled","giphyActive","sendMessage","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$color","colors","accent_blue","grey_gainsboro","_useTheme$theme$messa","messageInput","searchIcon","sendButton","sendRightIcon","sendUpIcon","createElement","Pressable","onPress","undefined","style","testID","__self","__source","fileName","lineNumber","columnNumber","Search","_extends2","pathFill","SendRight","SendUp","areEqual","prevProps","nextProps","prevDisabled","prevGiphyActive","prevSendMessage","nextDisabled","nextGiphyActive","nextSendMessage","disabledEqual","giphyActiveEqual","sendMessageEqual","MemoizedSendButton","React","memo","SendButton","_useMessageInputConte","useMessageInputContext","exports","displayName"],"sources":["SendButton.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Pressable } from 'react-native';\n\nimport {\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Search } from '../../icons/Search';\nimport { SendRight } from '../../icons/SendRight';\nimport { SendUp } from '../../icons/SendUp';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\n\ntype SendButtonPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<MessageInputContextValue<StreamChatGenerics>, 'giphyActive' | 'sendMessage'> & {\n /** Disables the button */ disabled: boolean;\n};\n\nconst SendButtonWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: SendButtonPropsWithContext<StreamChatGenerics>,\n) => {\n const { disabled = false, giphyActive, sendMessage } = props;\n const {\n theme: {\n colors: { accent_blue, grey_gainsboro },\n messageInput: { searchIcon, sendButton, sendRightIcon, sendUpIcon },\n },\n } = useTheme();\n\n return (\n <Pressable\n disabled={disabled}\n onPress={disabled ? () => null : () => sendMessage(undefined)}\n style={[sendButton]}\n testID='send-button'\n >\n {giphyActive && <Search pathFill={disabled ? grey_gainsboro : accent_blue} {...searchIcon} />}\n {!giphyActive && disabled && <SendRight pathFill={grey_gainsboro} {...sendRightIcon} />}\n {!giphyActive && !disabled && <SendUp pathFill={accent_blue} {...sendUpIcon} />}\n </Pressable>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: SendButtonPropsWithContext<StreamChatGenerics>,\n nextProps: SendButtonPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n disabled: prevDisabled,\n giphyActive: prevGiphyActive,\n sendMessage: prevSendMessage,\n } = prevProps;\n const {\n disabled: nextDisabled,\n giphyActive: nextGiphyActive,\n sendMessage: nextSendMessage,\n } = nextProps;\n\n const disabledEqual = prevDisabled === nextDisabled;\n if (!disabledEqual) return false;\n\n const giphyActiveEqual = prevGiphyActive === nextGiphyActive;\n if (!giphyActiveEqual) return false;\n\n const sendMessageEqual = prevSendMessage === nextSendMessage;\n if (!sendMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedSendButton = React.memo(\n SendButtonWithContext,\n areEqual,\n) as typeof SendButtonWithContext;\n\nexport type SendButtonProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<SendButtonPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI Component for send button in MessageInput component.\n */\nexport const SendButton = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: SendButtonProps<StreamChatGenerics>,\n) => {\n const { giphyActive, sendMessage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedSendButton\n {...{ giphyActive, sendMessage }}\n {...props}\n {...{ disabled: props.disabled || false }}\n />\n );\n};\n\nSendButton.displayName = 'SendButton{messageInput}';\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,oBAAA,GAAAF,OAAA;AAIA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAA4C,IAAAO,KAAA;EAAAC,YAAA;AAU5C,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAGzBC,KAAqD,EAClD;EACH,IAAAC,eAAA,GAAuDD,KAAK,CAApDE,QAAQ;IAARA,QAAQ,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA;IAAEE,WAAW,GAAkBH,KAAK,CAAlCG,WAAW;IAAEC,WAAW,GAAKJ,KAAK,CAArBI,WAAW;EAClD,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,MAAM;IAAIC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,cAAc,GAAAH,qBAAA,CAAdG,cAAc;IAAAC,qBAAA,GAAAN,eAAA,CACrCO,YAAY;IAAIC,UAAU,GAAAF,qBAAA,CAAVE,UAAU;IAAEC,UAAU,GAAAH,qBAAA,CAAVG,UAAU;IAAEC,aAAa,GAAAJ,qBAAA,CAAbI,aAAa;IAAEC,UAAU,GAAAL,qBAAA,CAAVK,UAAU;EAIrE,OACE9B,MAAA,YAAA+B,aAAA,CAAC5B,YAAA,CAAA6B,SAAS;IACRlB,QAAQ,EAAEA,QAAS;IACnBmB,OAAO,EAAEnB,QAAQ,GAAG;MAAA,OAAM,IAAI;IAAA,IAAG;MAAA,OAAME,WAAW,CAACkB,SAAS,CAAC;IAAA,CAAC;IAC9DC,KAAK,EAAE,CAACP,UAAU,CAAE;IACpBQ,MAAM,EAAC,aAAa;IAAAC,MAAA,EAAA5B,KAAA;IAAA6B,QAAA;MAAAC,QAAA,EAAA7B,YAAA;MAAA8B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEnB1B,WAAW,IAAIf,MAAA,YAAA+B,aAAA,CAACzB,OAAA,CAAAoC,MAAM,MAAAC,SAAA;IAACC,QAAQ,EAAE9B,QAAQ,GAAGU,cAAc,GAAGD;EAAY,GAAKI,UAAU;IAAAU,MAAA,EAAA5B,KAAA;IAAA6B,QAAA;MAAAC,QAAA,EAAA7B,YAAA;MAAA8B,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,CAAC,EAC5F,CAAC1B,WAAW,IAAID,QAAQ,IAAId,MAAA,YAAA+B,aAAA,CAACxB,UAAA,CAAAsC,SAAS,MAAAF,SAAA;IAACC,QAAQ,EAAEpB;EAAe,GAAKK,aAAa;IAAAQ,MAAA,EAAA5B,KAAA;IAAA6B,QAAA;MAAAC,QAAA,EAAA7B,YAAA;MAAA8B,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,CAAC,EACtF,CAAC1B,WAAW,IAAI,CAACD,QAAQ,IAAId,MAAA,YAAA+B,aAAA,CAACvB,OAAA,CAAAsC,MAAM,MAAAH,SAAA;IAACC,QAAQ,EAAErB;EAAY,GAAKO,UAAU;IAAAO,MAAA,EAAA5B,KAAA;IAAA6B,QAAA;MAAAC,QAAA,EAAA7B,YAAA;MAAA8B,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,CACrE,CAAC;AAEhB,CAAC;AAED,IAAMM,QAAQ,GAAG,SAAXA,QAAQA,CACZC,SAAyD,EACzDC,SAAyD,EACtD;EACH,IACYC,YAAY,GAGpBF,SAAS,CAHXlC,QAAQ;IACKqC,eAAe,GAE1BH,SAAS,CAFXjC,WAAW;IACEqC,eAAe,GAC1BJ,SAAS,CADXhC,WAAW;EAEb,IACYqC,YAAY,GAGpBJ,SAAS,CAHXnC,QAAQ;IACKwC,eAAe,GAE1BL,SAAS,CAFXlC,WAAW;IACEwC,eAAe,GAC1BN,SAAS,CADXjC,WAAW;EAGb,IAAMwC,aAAa,GAAGN,YAAY,KAAKG,YAAY;EACnD,IAAI,CAACG,aAAa,EAAE,OAAO,KAAK;EAEhC,IAAMC,gBAAgB,GAAGN,eAAe,KAAKG,eAAe;EAC5D,IAAI,CAACG,gBAAgB,EAAE,OAAO,KAAK;EAEnC,IAAMC,gBAAgB,GAAGN,eAAe,KAAKG,eAAe;EAC5D,IAAI,CAACG,gBAAgB,EAAE,OAAO,KAAK;EAEnC,OAAO,IAAI;AACb,CAAC;AAED,IAAMC,kBAAkB,GAAGC,iBAAK,CAACC,IAAI,CACnClD,qBAAqB,EACrBoC,QACF,CAAiC;AAS1B,IAAMe,UAAU,GAAG,SAAbA,UAAUA,CAGrBlD,KAA0C,EACvC;EACH,IAAAmD,qBAAA,GAAqC,IAAAC,2CAAsB,EAAqB,CAAC;IAAzEjD,WAAW,GAAAgD,qBAAA,CAAXhD,WAAW;IAAEC,WAAW,GAAA+C,qBAAA,CAAX/C,WAAW;EAEhC,OACEhB,MAAA,YAAA+B,aAAA,CAAC4B,kBAAkB,MAAAhB,SAAA;IACX5B,WAAW,EAAXA,WAAW;IAAEC,WAAW,EAAXA;EAAW,GAC1BJ,KAAK;IACHE,QAAQ,EAAEF,KAAK,CAACE,QAAQ,IAAI,KAAK;IAAAuB,MAAA,EAAA5B,KAAA;IAAA6B,QAAA;MAAAC,QAAA,EAAA7B,YAAA;MAAA8B,UAAA;MAAAC,YAAA;IAAA;EAAA,EACxC,CAAC;AAEN,CAAC;AAACwB,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAEFA,UAAU,CAACI,WAAW,GAAG,0BAA0B"}
|
|
@@ -361,7 +361,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
361
361
|
}
|
|
362
362
|
};
|
|
363
363
|
var sendMessage = function () {
|
|
364
|
-
var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
|
|
364
|
+
var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(customMessageData) {
|
|
365
365
|
var linkInfos, prevText, attachments, _loop, _iterator3, _step3, _image, _ret, _iterator4, _step4, _file3, message, updatedMessage, updateMessagePromise;
|
|
366
366
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
367
367
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -520,7 +520,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
520
520
|
mentioned_users: mentionedUsers,
|
|
521
521
|
quoted_message: undefined,
|
|
522
522
|
text: prevText
|
|
523
|
-
});
|
|
523
|
+
}, customMessageData);
|
|
524
524
|
value.clearEditingState();
|
|
525
525
|
updateMessagePromise = value.editMessage((0, _removeReservedFields.removeReservedFields)(updatedMessage)).then(value.clearEditingState);
|
|
526
526
|
resetInput(attachments);
|
|
@@ -531,14 +531,14 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
531
531
|
if (message && (0, _utils.isBouncedMessage)(message)) {
|
|
532
532
|
removeMessage(message);
|
|
533
533
|
}
|
|
534
|
-
value.sendMessage({
|
|
534
|
+
value.sendMessage((0, _extends2["default"])({
|
|
535
535
|
attachments: attachments,
|
|
536
536
|
mentioned_users: (0, _uniq["default"])(mentionedUsers),
|
|
537
537
|
parent_id: thread == null ? void 0 : thread.id,
|
|
538
538
|
quoted_message_id: typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,
|
|
539
539
|
show_in_channel: sendThreadMessageInChannel || undefined,
|
|
540
540
|
text: prevText
|
|
541
|
-
});
|
|
541
|
+
}, customMessageData));
|
|
542
542
|
value.clearQuotedMessageState();
|
|
543
543
|
sending.current = false;
|
|
544
544
|
resetInput(attachments);
|
|
@@ -557,7 +557,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
557
557
|
}
|
|
558
558
|
}, _callee3);
|
|
559
559
|
}));
|
|
560
|
-
return function sendMessage() {
|
|
560
|
+
return function sendMessage(_x) {
|
|
561
561
|
return _ref3.apply(this, arguments);
|
|
562
562
|
};
|
|
563
563
|
}();
|
|
@@ -766,7 +766,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
766
766
|
}
|
|
767
767
|
}, _callee5, null, [[4, 30]]);
|
|
768
768
|
}));
|
|
769
|
-
return function uploadFile(
|
|
769
|
+
return function uploadFile(_x2) {
|
|
770
770
|
return _ref6.apply(this, arguments);
|
|
771
771
|
};
|
|
772
772
|
}();
|
|
@@ -870,7 +870,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
870
870
|
}
|
|
871
871
|
}, _callee6, null, [[7, 32]]);
|
|
872
872
|
}));
|
|
873
|
-
return function uploadImage(
|
|
873
|
+
return function uploadImage(_x3) {
|
|
874
874
|
return _ref8.apply(this, arguments);
|
|
875
875
|
};
|
|
876
876
|
}();
|
|
@@ -916,7 +916,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
916
916
|
}
|
|
917
917
|
}, _callee7);
|
|
918
918
|
}));
|
|
919
|
-
return function uploadNewFile(
|
|
919
|
+
return function uploadNewFile(_x4) {
|
|
920
920
|
return _ref10.apply(this, arguments);
|
|
921
921
|
};
|
|
922
922
|
}();
|
|
@@ -962,7 +962,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
962
962
|
}
|
|
963
963
|
}, _callee8);
|
|
964
964
|
}));
|
|
965
|
-
return function uploadNewImage(
|
|
965
|
+
return function uploadNewImage(_x5) {
|
|
966
966
|
return _ref11.apply(this, arguments);
|
|
967
967
|
};
|
|
968
968
|
}();
|
|
@@ -1022,7 +1022,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
1022
1022
|
__self: _this,
|
|
1023
1023
|
__source: {
|
|
1024
1024
|
fileName: _jsxFileName,
|
|
1025
|
-
lineNumber:
|
|
1025
|
+
lineNumber: 1213,
|
|
1026
1026
|
columnNumber: 5
|
|
1027
1027
|
}
|
|
1028
1028
|
}, children);
|
|
@@ -1043,7 +1043,7 @@ var withMessageInputContext = function withMessageInputContext(Component) {
|
|
|
1043
1043
|
__self: _this,
|
|
1044
1044
|
__source: {
|
|
1045
1045
|
fileName: _jsxFileName,
|
|
1046
|
-
lineNumber:
|
|
1046
|
+
lineNumber: 1253,
|
|
1047
1047
|
columnNumber: 12
|
|
1048
1048
|
}
|
|
1049
1049
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uniq","_interopRequireDefault","_mimeTypes","_streamChat","_useCreateMessageInputContext","_useMessageDetailsForState","_parseLinks","_useCooldown2","_native","_compressImage","_removeReservedFields","_utils","_AttachmentPickerContext","_ChannelContext","_ChatContext","_MessagesContext","_OwnCapabilitiesContext","_ThreadContext","_TranslationContext","_defaultBaseContextValue","_getDisplayName","_isTestEnvironment","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof3","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","from","test","arr","len","arr2","MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","exports","MessageInputProvider","_ref","_getFileUploadConfig","_getFileUploadConfig2","_getImageUploadConfig","_getImageUploadConfig2","children","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","openPicker","selectedPicker","setSelectedPicker","_useChatContext","useChatContext","appSettings","client","enableOfflineSupport","_useMessagesContext","useMessagesContext","removeMessage","getFileUploadConfig","_appSettings$app","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","_appSettings$app2","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","useOwnCapabilitiesContext","_useChannelContext","useChannelContext","channel","giphyEnabled","uploadAbortControllerRef","_useThreadContext","useThreadContext","thread","_useTranslationContex","useTranslationContext","t","inputBoxRef","useRef","sending","_useState","useState","_useState2","_slicedToArray2","asyncIds","setAsyncIds","_useState3","_useState4","asyncUploads","setAsyncUploads","_useState5","_useState6","giphyActive","setGiphyActive","_useState7","_useState8","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","_useMessageDetailsFor","useMessageDetailsForState","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","_useCooldown","useCooldown","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","useEffect","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","concat","_toConsumableArray2","_iterator","_step","file","state","FileState","NOT_SUPPORTED","_iterator2","_step2","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","logChatPromiseExecution","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","result","MEGA_BYTES_TO_BYTES","MAX_FILE_SIZE_TO_UPLOAD_IN_MB","totalFileSize","wrap","_callee$","_context","prev","pickDocument","console","log","abrupt","maxNumberOfFiles","Alert","alert","sent","cancelled","assets","reduce","acc","asset","Number","size","forEach","uploadNewFile","stop","apply","arguments","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","clearEditingState","mapImageUploadToAttachment","mime_type","lookup","fallback","image_url","url","original_height","height","original_width","width","originalImage","type","mapFileUploadToAttachment","_file$file$mimeType","_file$file$mimeType2","_file$file$mimeType3","mimeType","startsWith","originalFile","asset_url","uri","duration","file_size","title","thumb_url","sendMessage","_ref3","_callee3","linkInfos","attachments","_loop","_iterator3","_step3","_image","_ret","_iterator4","_step4","_file3","message","updatedMessage","updateMessagePromise","_callee3$","_context3","parseLinksFromText","sendLinks","clear","_callee2","_callee2$","_context2","v","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","delegateYield","t0","_typeof2","_extends2","mentioned_users","quoted_message","editMessage","removeReservedFields","then","isBouncedMessage","uniq","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","ACITriggerSettings","updateMessage","_ref4","_callee4","_callee4$","_context4","regexCondition","getUploadSetStateAction","fileState","extraData","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","uploadFile","_ref6","_callee5","_ref5","newFile","response","_file$mimeType","compressedUri","_callee5$","_context5","doDocUploadRequest","createAbortControllerForNextRequest","includes","compressedImageURI","compressImageQuality","sendFile","_x","uploadImage","_ref8","_callee6","_ref7","_file$name","newImage","_ref9","filename","contentType","newImageUploads","_callee6$","_context6","replace","doImageUploadRequest","sendImage","res","keys","_x2","_ref10","_callee7","isBlockedFileExtension","isBlockedFileMimeType","_callee7$","_context7","generateRandomId","fileExtensionType","_file$name2","_file$name3","paused","progress","Promise","all","_x3","uploadNewImage","_ref11","_callee8","isBlockedImageMimeType","isBlockedImageExtension","imageState","_callee8$","_context8","_image$uri","imageExtensionType","_image$uri2","_x4","messageInputContext","useCreateMessageInputContext","openFilePicker","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","useMessageInputContext","contextValue","useContext","isTestEnvironment","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName","getDisplayName"],"sources":["MessageInputContext.tsx"],"sourcesContent":["import type { LegacyRef } from 'react';\nimport React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\nimport type { TextInput, TextInputProps } from 'react-native';\nimport { Alert, Keyboard } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport { parseLinksFromText } from '../../components/Message/MessageSimple/utils/parseLinks';\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { pickDocument } from '../../native';\nimport type {\n Asset,\n DefaultStreamChatGenerics,\n File,\n FileUpload,\n ImageUpload,\n UnknownType,\n} from '../../types/types';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n isBouncedMessage,\n TriggerSettings,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useMessagesContext } from '../messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: () => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: LegacyRef<TextInput> | undefined;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: File,\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /**\n * Variable that tracks the editing state.\n * It is defined with message type if the editing state is true, else its undefined.\n */\n editing?: MessageType<StreamChatGenerics>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { removeMessage } = useMessagesContext();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled, uploadAbortControllerRef } =\n useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (imagesAndFiles.length === 0) return false;\n\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (pickDocument === null) {\n console.log(\n 'The file picker is not installed. Check our Getting Started documentation to install it.',\n );\n return;\n }\n\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n\n const MEGA_BYTES_TO_BYTES = 1024 * 1024;\n const MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;\n\n if (!result.cancelled && result.assets) {\n const totalFileSize = result.assets.reduce((acc, asset) => acc + Number(asset.size), 0);\n if (totalFileSize / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {\n Alert.alert(\n t(\n `Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.`,\n { MAX_FILE_SIZE_TO_UPLOAD_IN_MB },\n ),\n );\n } else {\n result.assets.forEach((asset) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(asset);\n });\n }\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n if (value.editing) {\n value.clearEditingState();\n }\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload): Attachment<StreamChatGenerics> => {\n const mime_type: string | boolean = lookup(image.file.name as string);\n const name = image.file.name as string;\n return {\n fallback: name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalImage: image.file,\n type: 'image',\n };\n };\n\n const mapFileUploadToAttachment = (file: FileUpload): Attachment<StreamChatGenerics> => {\n if (file.file.mimeType?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.mimeType?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.mimeType?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async () => {\n if (sending.current) {\n return;\n }\n const linkInfos = parseLinksFromText(text);\n\n if (!channelCapabities.sendLinks && linkInfos.length > 0) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n const message = value.editing;\n if (message && message.type !== 'error') {\n const updatedMessage = {\n ...message,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n /**\n * If the message is bounced by moderation, we firstly remove the message from message list and then send a new message.\n */\n if (message && isBouncedMessage(message as MessageType<StreamChatGenerics>)) {\n removeMessage(message);\n }\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (value.editing) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n value.clearEditingState();\n resetInput();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regexCondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction =\n <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> =>\n (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regexCondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regexCondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n uploadAbortControllerRef.current.set(\n file.name,\n client.createAbortControllerForNextRequest(),\n );\n // Compress images selected through file picker when uploading them\n if (file.mimeType?.includes('image')) {\n const compressedUri = await compressedImageURI(file, value.compressImageQuality);\n response = await channel.sendFile(compressedUri, file.name, file.mimeType);\n } else {\n response = await channel.sendFile(file.uri, file.name, file.mimeType);\n }\n uploadAbortControllerRef.current.delete(file.name);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n if (\n error instanceof Error &&\n (error.name === 'AbortError' || error.name === 'CanceledError')\n ) {\n // nothing to do\n uploadAbortControllerRef.current.delete(file.name);\n return;\n }\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n const uri = file.uri || '';\n const filename = file.name ?? uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n\n try {\n const compressedUri = await compressedImageURI(file, value.compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n uploadAbortControllerRef.current.set(\n filename,\n client.createAbortControllerForNextRequest(),\n );\n channel.sendImage(compressedUri, filename, contentType).then(\n (res) => {\n uploadAbortControllerRef.current.delete(filename);\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(\n id,\n FileState.UPLOADED,\n {\n url: res.file,\n },\n );\n setImageUploads(newImageUploads);\n }\n },\n () => {\n uploadAbortControllerRef.current.delete(filename);\n },\n );\n } else {\n uploadAbortControllerRef.current.set(\n filename,\n client.createAbortControllerForNextRequest(),\n );\n response = await channel.sendImage(compressedUri, filename, contentType);\n uploadAbortControllerRef.current.delete(filename);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n if (\n error instanceof Error &&\n (error.name === 'AbortError' || error.name === 'CanceledError')\n ) {\n // nothing to do\n uploadAbortControllerRef.current.delete(filename);\n return;\n }\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: File) => {\n const id: string = generateRandomId();\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file,\n id: file.id || id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAYA,IAAAM,6BAAA,GAAAN,OAAA;AACA,IAAAO,0BAAA,GAAAP,OAAA;AAEA,IAAAQ,WAAA,GAAAR,OAAA;AAQA,IAAAS,aAAA,GAAAT,OAAA;AAQA,IAAAU,OAAA,GAAAV,OAAA;AASA,IAAAW,cAAA,GAAAX,OAAA;AACA,IAAAY,qBAAA,GAAAZ,OAAA;AACA,IAAAa,MAAA,GAAAb,OAAA;AASA,IAAAc,wBAAA,GAAAd,OAAA;AACA,IAAAe,eAAA,GAAAf,OAAA;AACA,IAAAgB,YAAA,GAAAhB,OAAA;AACA,IAAAiB,gBAAA,GAAAjB,OAAA;AACA,IAAAkB,uBAAA,GAAAlB,OAAA;AACA,IAAAmB,cAAA,GAAAnB,OAAA;AACA,IAAAoB,mBAAA,GAAApB,OAAA;AACA,IAAAqB,wBAAA,GAAArB,OAAA;AAEA,IAAAsB,eAAA,GAAAtB,OAAA;AACA,IAAAuB,kBAAA,GAAAvB,OAAA;AAA+D,IAAAwB,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAA5B,wBAAAgC,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,QAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAAA,SAAAW,gCAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,oBAAAE,EAAA,UAAAA,EAAA,GAAAA,EAAA,CAAAN,IAAA,CAAAI,CAAA,GAAAK,IAAA,CAAAC,IAAA,CAAAJ,EAAA,OAAAK,KAAA,CAAAC,OAAA,CAAAR,CAAA,MAAAE,EAAA,GAAAO,2BAAA,CAAAT,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAU,MAAA,qBAAAR,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAS,CAAA,+BAAAA,CAAA,IAAAX,CAAA,CAAAU,MAAA,WAAAE,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAW,CAAA,sBAAAG,SAAA;AAAA,SAAAL,4BAAAT,CAAA,EAAAe,MAAA,SAAAf,CAAA,qBAAAA,CAAA,sBAAAgB,iBAAA,CAAAhB,CAAA,EAAAe,MAAA,OAAAE,CAAA,GAAA3B,MAAA,CAAAI,SAAA,CAAAwB,QAAA,CAAAtB,IAAA,CAAAI,CAAA,EAAAmB,KAAA,aAAAF,CAAA,iBAAAjB,CAAA,CAAAoB,WAAA,EAAAH,CAAA,GAAAjB,CAAA,CAAAoB,WAAA,CAAAC,IAAA,MAAAJ,CAAA,cAAAA,CAAA,mBAAAV,KAAA,CAAAe,IAAA,CAAAtB,CAAA,OAAAiB,CAAA,+DAAAM,IAAA,CAAAN,CAAA,UAAAD,iBAAA,CAAAhB,CAAA,EAAAe,MAAA;AAAA,SAAAC,kBAAAQ,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAAd,MAAA,EAAAe,GAAA,GAAAD,GAAA,CAAAd,MAAA,WAAAC,CAAA,MAAAe,IAAA,OAAAnB,KAAA,CAAAkB,GAAA,GAAAd,CAAA,GAAAc,GAAA,EAAAd,CAAA,IAAAe,IAAA,CAAAf,CAAA,IAAAa,GAAA,CAAAb,CAAA,UAAAe,IAAA;AAoUxD,IAAMC,mBAAmB,GAAGC,iBAAK,CAACC,aAAa,CACpDC,mDACF,CAAC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA;AAEK,IAAMK,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAO1B;EAAA,IAAAC,oBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAAA,IAJLC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IACRzB,KAAK,GAAAoB,IAAA,CAALpB,KAAK;EAIL,IAAA0B,qBAAA,GACE,IAAAC,mDAA0B,EAAC,CAAC;IADtBC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IAAEC,UAAU,GAAAH,qBAAA,CAAVG,UAAU;IAAEC,cAAc,GAAAJ,qBAAA,CAAdI,cAAc;IAAEC,iBAAiB,GAAAL,qBAAA,CAAjBK,iBAAiB;EAElE,IAAAC,eAAA,GAAsD,IAAAC,2BAAc,EAAqB,CAAC;IAAlFC,WAAW,GAAAF,eAAA,CAAXE,WAAW;IAAEC,MAAM,GAAAH,eAAA,CAANG,MAAM;IAAEC,oBAAoB,GAAAJ,eAAA,CAApBI,oBAAoB;EACjD,IAAAC,mBAAA,GAA0B,IAAAC,mCAAkB,EAAC,CAAC;IAAtCC,aAAa,GAAAF,mBAAA,CAAbE,aAAa;EAErB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAS;IAAA,IAAAC,gBAAA;IAChC,IAAMC,UAAU,GAAGR,WAAW,qBAAAO,gBAAA,GAAXP,WAAW,CAAES,GAAG,qBAAhBF,gBAAA,CAAkBG,kBAAkB;IACvD,IAAIF,UAAU,KAAK,IAAI,IAAIA,UAAU,KAAKG,SAAS,EAAE;MACnD,OAAOH,UAAU;IACnB,CAAC,MAAM;MACL,OAAO,CAAC,CAAC;IACX;EACF,CAAC;EAED,IAAMI,yBAAyB,IAAAzB,oBAAA,GAAGmB,mBAAmB,CAAC,CAAC,qBAArBnB,oBAAA,CAAuB0B,uBAAuB;EAChF,IAAMC,oBAAoB,IAAA1B,qBAAA,GAAGkB,mBAAmB,CAAC,CAAC,qBAArBlB,qBAAA,CAAuB2B,kBAAkB;EAEtE,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA,EAAS;IAAA,IAAAC,iBAAA;IACjC,IAAMC,WAAW,GAAGlB,WAAW,qBAAAiB,iBAAA,GAAXjB,WAAW,CAAES,GAAG,qBAAhBQ,iBAAA,CAAkBE,mBAAmB;IACzD,IAAID,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKP,SAAS,EAAE;MACrD,OAAOO,WAAW;IACpB;IACA,OAAO,CAAC,CAAC;EACX,CAAC;EAED,IAAME,0BAA0B,IAAA/B,qBAAA,GAAG2B,oBAAoB,CAAC,CAAC,qBAAtB3B,qBAAA,CAAwBwB,uBAAuB;EAClF,IAAMQ,qBAAqB,IAAA/B,sBAAA,GAAG0B,oBAAoB,CAAC,CAAC,qBAAtB1B,sBAAA,CAAwByB,kBAAkB;EAExE,IAAMO,iBAAiB,GAAG,IAAAC,iDAAyB,EAAC,CAAC;EAErD,IAAAC,kBAAA,GACE,IAAAC,iCAAiB,EAAqB,CAAC;IADjCC,OAAO,GAAAF,kBAAA,CAAPE,OAAO;IAAEC,YAAY,GAAAH,kBAAA,CAAZG,YAAY;IAAEC,wBAAwB,GAAAJ,kBAAA,CAAxBI,wBAAwB;EAEvD,IAAAC,iBAAA,GAAmB,IAAAC,+BAAgB,EAAqB,CAAC;IAAjDC,MAAM,GAAAF,iBAAA,CAANE,MAAM;EACd,IAAAC,qBAAA,GAAc,IAAAC,yCAAqB,EAAC,CAAC;IAA7BC,CAAC,GAAAF,qBAAA,CAADE,CAAC;EACT,IAAMC,WAAW,GAAG,IAAAC,aAAM,EAAmB,IAAI,CAAC;EAClD,IAAMC,OAAO,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EAE7B,IAAAE,SAAA,GAAgC,IAAAC,eAAQ,EAAW,EAAE,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA/CI,QAAQ,GAAAF,UAAA;IAAEG,WAAW,GAAAH,UAAA;EAC5B,IAAAI,UAAA,GAAwC,IAAAL,eAAQ,EAK7C,CAAC,CAAC,CAAC;IAAAM,UAAA,OAAAJ,eAAA,aAAAG,UAAA;IALCE,YAAY,GAAAD,UAAA;IAAEE,eAAe,GAAAF,UAAA;EAMpC,IAAAG,UAAA,GAAsC,IAAAT,eAAQ,EAAC,KAAK,CAAC;IAAAU,UAAA,OAAAR,eAAA,aAAAO,UAAA;IAA9CE,WAAW,GAAAD,UAAA;IAAEE,cAAc,GAAAF,UAAA;EAClC,IAAAG,UAAA,GAAoE,IAAAb,eAAQ,EAAC,KAAK,CAAC;IAAAc,UAAA,OAAAZ,eAAA,aAAAW,UAAA;IAA5EE,0BAA0B,GAAAD,UAAA;IAAEE,6BAA6B,GAAAF,UAAA;EAChE,IAAQG,OAAO,GAAkD1F,KAAK,CAA9D0F,OAAO;IAAEC,aAAa,GAAmC3F,KAAK,CAArD2F,aAAa;IAAEC,cAAc,GAAmB5F,KAAK,CAAtC4F,cAAc;IAAEC,YAAY,GAAK7F,KAAK,CAAtB6F,YAAY;EAC5D,IAAAC,qBAAA,GAaI,IAAAC,oDAAyB,EAAqBL,OAAO,EAAEG,YAAY,CAAC;IAZtEG,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IACXC,YAAY,GAAAH,qBAAA,CAAZG,YAAY;IACZC,cAAc,GAAAJ,qBAAA,CAAdI,cAAc;IACdC,eAAe,GAAAL,qBAAA,CAAfK,eAAe;IACfC,cAAc,GAAAN,qBAAA,CAAdM,cAAc;IACdC,eAAe,GAAAP,qBAAA,CAAfO,eAAe;IACfC,iBAAiB,GAAAR,qBAAA,CAAjBQ,iBAAiB;IACjBC,kBAAkB,GAAAT,qBAAA,CAAlBS,kBAAkB;IAClBC,kBAAkB,GAAAV,qBAAA,CAAlBU,kBAAkB;IAClBC,OAAO,GAAAX,qBAAA,CAAPW,OAAO;IACPC,eAAe,GAAAZ,qBAAA,CAAfY,eAAe;IACfC,IAAI,GAAAb,qBAAA,CAAJa,IAAI;EAEN,IAAAC,YAAA,GAAyD,IAAAC,yBAAW,EAAqB,CAAC;IAA1EC,cAAc,GAAAF,YAAA,CAAtBG,MAAM;IAAyBC,aAAa,GAAAJ,YAAA,CAApBK,KAAK;EAErC,IAAMC,QAAQ,GAAGjD,MAAM,oBAANA,MAAM,CAAEkD,EAAE;EAC3B,IAAAC,gBAAS,EAAC,YAAM;IACd3B,6BAA6B,CAAC,KAAK,CAAC;EACtC,CAAC,EAAE,CAACyB,QAAQ,CAAC,CAAC;EAEd,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAIC,OAAe,EAAK;IACtCb,OAAO,CAAC,UAACc,QAAQ;MAAA,YAAQA,QAAQ,GAAGD,OAAO;IAAA,CAAE,CAAC;EAChD,CAAC;EAGD,IAAME,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAS;IAC3B,IAAIb,IAAI,IAAIA,IAAI,CAACc,IAAI,CAAC,CAAC,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,IAAMC,cAAc,MAAAC,MAAA,KAAAC,mBAAA,aAAO3B,YAAY,OAAA2B,mBAAA,aAAK5B,WAAW,EAAC;IACxD,IAAI0B,cAAc,CAAC7H,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;IAE7C,IAAIuC,oBAAoB,EAAE;MAExB,SAAAyF,SAAA,GAAA3I,+BAAA,CAAmBwI,cAAc,GAAAI,KAAA,IAAAA,KAAA,GAAAD,SAAA,IAAA9H,IAAA,GAAE;QAAA,IAAxBgI,KAAI,GAAAD,KAAA,CAAA9H,KAAA;QACb,IAAI+H,KAAI,CAACC,KAAK,KAAKC,gBAAS,CAACC,aAAa,EAAE;UAC1C,OAAO,KAAK;QACd;MACF;MAEA,OAAO,IAAI;IACb;IAEA,SAAAC,UAAA,GAAAjJ,+BAAA,CAAmBwI,cAAc,GAAAU,MAAA,IAAAA,MAAA,GAAAD,UAAA,IAAApI,IAAA,GAAE;MAAA,IAAxBgI,MAAI,GAAAK,MAAA,CAAApI,KAAA;MACb,IAAI,CAAC+H,MAAI,IAAIA,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACI,aAAa,EAAE;QACnD;MACF;MACA,IAAIN,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACK,SAAS,EAAE;QAEtC,OAAO,KAAK;MACd;MAEA,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd,CAAC;EAED,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAIjB,OAAe,EAAK;IACpC,IAAI/C,OAAO,CAACiE,OAAO,EAAE;MACnB;IACF;IACA/B,OAAO,CAACa,OAAO,CAAC;IAEhB,IAAIA,OAAO,IAAI1D,OAAO,IAAIJ,iBAAiB,CAACiF,gBAAgB,EAAE;MAC5D,IAAAC,mCAAuB,EAAC9E,OAAO,CAAC+E,SAAS,CAAC1E,MAAM,oBAANA,MAAM,CAAEkD,EAAE,CAAC,EAAE,oBAAoB,CAAC;IAC9E;IAEA,IAAInH,KAAK,CAAC4I,YAAY,EAAE;MACtB5I,KAAK,CAAC4I,YAAY,CAACtB,OAAO,CAAC;IAC7B;EACF,CAAC;EAED,IAAMuB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;IAC/BxB,UAAU,CAAC,GAAG,CAAC;IACf,IAAIhD,WAAW,CAACmE,OAAO,EAAE;MACvBnE,WAAW,CAACmE,OAAO,CAACM,KAAK,CAAC,CAAC;IAC7B;EACF,CAAC;EAED,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;IAC/B1B,UAAU,CAAC,GAAG,CAAC;IACf,IAAIhD,WAAW,CAACmE,OAAO,EAAE;MACvBnE,WAAW,CAACmE,OAAO,CAACM,KAAK,CAAC,CAAC;IAC7B;EACF,CAAC;EAED,IAAME,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA,EAAS;IACjC,IAAIpD,cAAc,EAAE;MAClBqD,qBAAQ,CAACC,OAAO,CAAC,CAAC;MAClBnH,iBAAiB,CAAC,QAAQ,CAAC;MAC3BF,UAAU,CAAC,CAAC;IACd,CAAC,MAAM,IAAI8D,aAAa,EAAE;MACxBwD,QAAQ,CAAC,CAAC;IACZ;EACF,CAAC;EAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAA,EAAS;IAClCrH,iBAAiB,CAACc,SAAS,CAAC;IAC5BjB,WAAW,CAAC,CAAC;EACf,CAAC;EAED,IAAMyH,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAA,EAAS;IACnC,IAAIvH,cAAc,EAAE;MAClBsH,qBAAqB,CAAC,CAAC;IACzB,CAAC,MAAM;MACLJ,oBAAoB,CAAC,CAAC;IACxB;EACF,CAAC;EAED,IAAMM,YAAY,GAAG,SAAfA,YAAYA,CAAIC,IAAsC,EAAK;IAC/DjD,iBAAiB,CAAC,UAACkD,kBAAkB;MAAA,UAAA7B,MAAA,KAAAC,mBAAA,aAAS4B,kBAAkB,IAAED,IAAI,CAACpC,EAAE;IAAA,CAAC,CAAC;EAC7E,CAAC;EAED,IAAMgC,QAAQ;IAAA,IAAAM,KAAA,OAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAC,QAAA;MAAA,IAAAC,MAAA,EAAAC,mBAAA,EAAAC,6BAAA,EAAAC,aAAA;MAAA,OAAAN,YAAA,YAAAO,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAA5K,IAAA;UAAA;YAAA,MACX8K,oBAAY,KAAK,IAAI;cAAAF,QAAA,CAAA5K,IAAA;cAAA;YAAA;YACvB+K,OAAO,CAACC,GAAG,CACT,0FACF,CAAC;YAAC,OAAAJ,QAAA,CAAAK,MAAA;UAAA;YAAA,MAIAtE,eAAe,IAAInG,KAAK,CAAC0K,gBAAgB;cAAAN,QAAA,CAAA5K,IAAA;cAAA;YAAA;YAC3CmL,kBAAK,CAACC,KAAK,CAAC,iCAAiC,CAAC;YAAC,OAAAR,QAAA,CAAAK,MAAA;UAAA;YAAAL,QAAA,CAAA5K,IAAA;YAAA,OAI5B,IAAA8K,oBAAY,EAAC;cAChCI,gBAAgB,EAAE1K,KAAK,CAAC0K,gBAAgB,GAAGvE;YAC7C,CAAC,CAAC;UAAA;YAFI2D,MAAM,GAAAM,QAAA,CAAAS,IAAA;YAINd,mBAAmB,GAAG,IAAI,GAAG,IAAI;YACjCC,6BAA6B,GAAG,GAAG;YAEzC,IAAI,CAACF,MAAM,CAACgB,SAAS,IAAIhB,MAAM,CAACiB,MAAM,EAAE;cAChCd,aAAa,GAAGH,MAAM,CAACiB,MAAM,CAACC,MAAM,CAAC,UAACC,GAAG,EAAEC,KAAK;gBAAA,OAAKD,GAAG,GAAGE,MAAM,CAACD,KAAK,CAACE,IAAI,CAAC;cAAA,GAAE,CAAC,CAAC;cACvF,IAAInB,aAAa,GAAGF,mBAAmB,GAAGC,6BAA6B,EAAE;gBACvEW,kBAAK,CAACC,KAAK,CACTxG,CAAC,6GAEC;kBAAE4F,6BAA6B,EAA7BA;gBAA8B,CAClC,CACF,CAAC;cACH,CAAC,MAAM;gBACLF,MAAM,CAACiB,MAAM,CAACM,OAAO,CAAC,UAACH,KAAK,EAAK;kBAQ/BI,aAAa,CAACJ,KAAK,CAAC;gBACtB,CAAC,CAAC;cACJ;YACF;UAAC;UAAA;YAAA,OAAAd,QAAA,CAAAmB,IAAA;QAAA;MAAA,GAAA1B,OAAA;IAAA,CACF;IAAA,gBA1CKV,QAAQA,CAAA;MAAA,OAAAM,KAAA,CAAA+B,KAAA,OAAAC,SAAA;IAAA;EAAA,GA0Cb;EAED,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIvE,EAAU,EAAK;IACjC,IAAInB,WAAW,CAAC2F,IAAI,CAAC,UAAC5D,IAAI;MAAA,OAAKA,IAAI,CAACZ,EAAE,KAAKA,EAAE;IAAA,EAAC,EAAE;MAC9Cf,cAAc,CAAC,UAACwF,eAAe;QAAA,OAAKA,eAAe,CAACC,MAAM,CAAC,UAAC9D,IAAI;UAAA,OAAKA,IAAI,CAACZ,EAAE,KAAKA,EAAE;QAAA,EAAC;MAAA,EAAC;MACrFZ,kBAAkB,CAAC,UAACuF,mBAAmB;QAAA,OAAKA,mBAAmB,GAAG,CAAC;MAAA,EAAC;IACtE;EACF,CAAC;EAED,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAI5E,EAAU,EAAK;IAClC,IAAIlB,YAAY,CAAC0F,IAAI,CAAC,UAACK,KAAK;MAAA,OAAKA,KAAK,CAAC7E,EAAE,KAAKA,EAAE;IAAA,EAAC,EAAE;MACjDd,eAAe,CAAC,UAAC4F,gBAAgB;QAAA,OAAKA,gBAAgB,CAACJ,MAAM,CAAC,UAACG,KAAK;UAAA,OAAKA,KAAK,CAAC7E,EAAE,KAAKA,EAAE;QAAA,EAAC;MAAA,EAAC;MAC1FZ,kBAAkB,CAAC,UAACuF,mBAAmB;QAAA,OAAKA,mBAAmB,GAAG,CAAC;MAAA,EAAC;IACtE;EACF,CAAC;EAED,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAkE;IAAA,IAA9DC,kBAAoD,GAAAV,SAAA,CAAA5L,MAAA,QAAA4L,SAAA,QAAA5I,SAAA,GAAA4I,SAAA,MAAG,EAAE;IAC3ErF,cAAc,CAAC,EAAE,CAAC;IAClBf,cAAc,CAAC,KAAK,CAAC;IACrBmB,kBAAkB,CAAC,IAAI,CAAC;IACxBH,eAAe,CAAC,EAAE,CAAC;IACnBC,iBAAiB,CAAC,EAAE,CAAC;IACrBC,kBAAkB,CAChB,UAACuF,mBAAmB;MAAA,OAAKA,mBAAmB,IAAI,CAAAK,kBAAkB,oBAAlBA,kBAAkB,CAAEtM,MAAM,KAAI,CAAC,CAAC;IAAA,CAClF,CAAC;IACD4G,OAAO,CAAC,EAAE,CAAC;IACX,IAAIzG,KAAK,CAAC0F,OAAO,EAAE;MACjB1F,KAAK,CAACoM,iBAAiB,CAAC,CAAC;IAC3B;EACF,CAAC;EAED,IAAMC,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAIL,KAAkB,EAAqC;IACzF,IAAMM,SAA2B,GAAG,IAAAC,iBAAM,EAACP,KAAK,CAACjE,IAAI,CAACvH,IAAc,CAAC;IACrE,IAAMA,IAAI,GAAGwL,KAAK,CAACjE,IAAI,CAACvH,IAAc;IACtC,OAAO;MACLgM,QAAQ,EAAEhM,IAAI;MACdiM,SAAS,EAAET,KAAK,CAACU,GAAG;MACpBJ,SAAS,EAAEA,SAAS,GAAGA,SAAS,GAAGzJ,SAAS;MAC5C8J,eAAe,EAAEX,KAAK,CAACY,MAAM;MAC7BC,cAAc,EAAEb,KAAK,CAACc,KAAK;MAC3BC,aAAa,EAAEf,KAAK,CAACjE,IAAI;MACzBiF,IAAI,EAAE;IACR,CAAC;EACH,CAAC;EAED,IAAMC,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIlF,IAAgB,EAAqC;IAAA,IAAAmF,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA;IACtF,KAAAF,mBAAA,GAAInF,IAAI,CAACA,IAAI,CAACsF,QAAQ,aAAlBH,mBAAA,CAAoBI,UAAU,CAAC,QAAQ,CAAC,EAAE;MAC5C,OAAO;QACLd,QAAQ,EAAEzE,IAAI,CAACA,IAAI,CAACvH,IAAI;QACxBiM,SAAS,EAAE1E,IAAI,CAAC2E,GAAG;QACnBJ,SAAS,EAAEvE,IAAI,CAACA,IAAI,CAACsF,QAAQ;QAC7BE,YAAY,EAAExF,IAAI,CAACA,IAAI;QACvBiF,IAAI,EAAE;MACR,CAAC;IACH,CAAC,MAAM,KAAAG,oBAAA,GAAIpF,IAAI,CAACA,IAAI,CAACsF,QAAQ,aAAlBF,oBAAA,CAAoBG,UAAU,CAAC,QAAQ,CAAC,EAAE;MACnD,OAAO;QACLE,SAAS,EAAEzF,IAAI,CAAC2E,GAAG,IAAI3E,IAAI,CAACA,IAAI,CAAC0F,GAAG;QACpCC,QAAQ,EAAE3F,IAAI,CAACA,IAAI,CAAC2F,QAAQ;QAC5BC,SAAS,EAAE5F,IAAI,CAACA,IAAI,CAACqD,IAAI;QACzBkB,SAAS,EAAEvE,IAAI,CAACA,IAAI,CAACsF,QAAQ;QAC7BE,YAAY,EAAExF,IAAI,CAACA,IAAI;QACvB6F,KAAK,EAAE7F,IAAI,CAACA,IAAI,CAACvH,IAAI;QACrBwM,IAAI,EAAE;MACR,CAAC;IACH,CAAC,MAAM,KAAAI,oBAAA,GAAIrF,IAAI,CAACA,IAAI,CAACsF,QAAQ,aAAlBD,oBAAA,CAAoBE,UAAU,CAAC,QAAQ,CAAC,EAAE;MACnD,OAAO;QACLE,SAAS,EAAEzF,IAAI,CAAC2E,GAAG,IAAI3E,IAAI,CAACA,IAAI,CAAC0F,GAAG;QACpCC,QAAQ,EAAE3F,IAAI,CAACA,IAAI,CAAC2F,QAAQ;QAC5BC,SAAS,EAAE5F,IAAI,CAACA,IAAI,CAACqD,IAAI;QACzBkB,SAAS,EAAEvE,IAAI,CAACA,IAAI,CAACsF,QAAQ;QAC7BE,YAAY,EAAExF,IAAI,CAACA,IAAI;QACvB8F,SAAS,EAAE9F,IAAI,CAAC8F,SAAS;QACzBD,KAAK,EAAE7F,IAAI,CAACA,IAAI,CAACvH,IAAI;QACrBwM,IAAI,EAAE;MACR,CAAC;IACH,CAAC,MAAM;MACL,OAAO;QACLQ,SAAS,EAAEzF,IAAI,CAAC2E,GAAG,IAAI3E,IAAI,CAACA,IAAI,CAAC0F,GAAG;QACpCE,SAAS,EAAE5F,IAAI,CAACA,IAAI,CAACqD,IAAI;QACzBkB,SAAS,EAAEvE,IAAI,CAACA,IAAI,CAACsF,QAAQ;QAC7BE,YAAY,EAAExF,IAAI,CAACA,IAAI;QACvB6F,KAAK,EAAE7F,IAAI,CAACA,IAAI,CAACvH,IAAI;QACrBwM,IAAI,EAAE;MACR,CAAC;IACH;EACF,CAAC;EAID,IAAMc,WAAW;IAAA,IAAAC,KAAA,OAAArE,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAoE,SAAA;MAAA,IAAAC,SAAA,EAAA1G,QAAA,EAAA2G,WAAA,EAAAC,KAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,UAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,OAAA,EAAAC,cAAA,EAAAC,oBAAA;MAAA,OAAAlF,YAAA,YAAAO,IAAA,UAAA4E,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA1E,IAAA,GAAA0E,SAAA,CAAAvP,IAAA;UAAA;YAAA,KACd+E,OAAO,CAACiE,OAAO;cAAAuG,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,OAAAuP,SAAA,CAAAtE,MAAA;UAAA;YAGbwD,SAAS,GAAG,IAAAe,8BAAkB,EAACrI,IAAI,CAAC;YAAA,MAEtC,CAACnD,iBAAiB,CAACyL,SAAS,IAAIhB,SAAS,CAACpO,MAAM,GAAG,CAAC;cAAAkP,SAAA,CAAAvP,IAAA;cAAA;YAAA;YACtDmL,kBAAK,CAACC,KAAK,CAACxG,CAAC,CAAC,oBAAoB,CAAC,EAAEA,CAAC,CAAC,mDAAmD,CAAC,CAAC;YAAC,OAAA2K,SAAA,CAAAtE,MAAA;UAAA;YAK/FlG,OAAO,CAACiE,OAAO,GAAG,IAAI;YAEtBxB,aAAa,CAAC,CAAC;YAETO,QAAQ,GAAG1D,YAAY,IAAIuB,WAAW,eAAauB,IAAI,GAAKA,IAAI;YACtEF,OAAO,CAAC,EAAE,CAAC;YACX,IAAIpC,WAAW,CAACmE,OAAO,EAAE;cACvBnE,WAAW,CAACmE,OAAO,CAAC0G,KAAK,CAAC,CAAC;YAC7B;YAEMhB,WAAW,GAAG,EAAE;YAAAC,KAAA,GAAAxE,YAAA,YAAAC,IAAA,UAAAuF,SAAAb,MAAA;cAAA,OAAA3E,YAAA,YAAAO,IAAA,UAAAkF,UAAAC,SAAA;gBAAA,kBAAAA,SAAA,CAAAhF,IAAA,GAAAgF,SAAA,CAAA7P,IAAA;kBAAA;oBAAA,KAEhB4C,oBAAoB;sBAAAiN,SAAA,CAAA7P,IAAA;sBAAA;oBAAA;oBAAA,MAClBwM,MAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACC,aAAa;sBAAAmH,SAAA,CAAA7P,IAAA;sBAAA;oBAAA;oBAAA,OAAA6P,SAAA,CAAA5E,MAAA;sBAAA6E,CAAA;oBAAA;kBAAA;oBAG3CpB,WAAW,CAACqB,IAAI,CAAClD,0BAA0B,CAACL,MAAK,CAAC,CAAC;oBAAC,OAAAqD,SAAA,CAAA5E,MAAA;kBAAA;oBAAA,MAIlD,CAAC,CAACuB,MAAK,IAAIA,MAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACI,aAAa,KAAK,CAACjG,oBAAoB;sBAAAiN,SAAA,CAAA7P,IAAA;sBAAA;oBAAA;oBAAA,OAAA6P,SAAA,CAAA5E,MAAA;kBAAA;oBAAA,MAI5EuB,MAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACK,SAAS;sBAAA+G,SAAA,CAAA7P,IAAA;sBAAA;oBAAA;oBAAA,KAEjCQ,KAAK,CAACwP,cAAc;sBAAAH,SAAA,CAAA7P,IAAA;sBAAA;oBAAA;oBAKtBqF,WAAW,CAAC,UAAC4K,YAAY;sBAAA,UAAA9H,MAAA,KAAAC,mBAAA,aAAS6H,YAAY,IAAEzD,MAAK,CAAC7E,EAAE;oBAAA,CAAC,CAAC;oBAACkI,SAAA,CAAA7P,IAAA;oBAAA;kBAAA;oBAE3D+E,OAAO,CAACiE,OAAO,GAAG,KAAK;oBAAC,OAAA6G,SAAA,CAAA5E,MAAA;sBAAA6E,CAAA,EACjB7I,OAAO,CAACc,QAAQ;oBAAC;kBAAA;oBAK5B,IAAIyE,MAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACyH,QAAQ,IAAI1D,MAAK,CAAChE,KAAK,KAAKC,gBAAS,CAAC0H,QAAQ,EAAE;sBAC5EzB,WAAW,CAACqB,IAAI,CAAClD,0BAA0B,CAACL,MAAK,CAAC,CAAC;oBACrD;kBAAC;kBAAA;oBAAA,OAAAqD,SAAA,CAAA9D,IAAA;gBAAA;cAAA,GAAA4D,QAAA;YAAA;YAAAf,UAAA,GAAAlP,+BAAA,CA9BiB+G,YAAY;UAAA;YAAA,KAAAoI,MAAA,GAAAD,UAAA,IAAArO,IAAA;cAAAgP,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAArBwM,MAAK,GAAAqC,MAAA,CAAArO,KAAA;YAAA,OAAA+O,SAAA,CAAAa,aAAA,CAAAzB,KAAA,CAAAG,MAAA;UAAA;YAAAC,IAAA,GAAAQ,SAAA,CAAAc,EAAA;YAAA,MAAAtB,IAAA;cAAAQ,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,OAAAuP,SAAA,CAAAtE,MAAA;UAAA;YAAA,UAAAqF,QAAA,aAAAvB,IAAA;cAAAQ,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,OAAAuP,SAAA,CAAAtE,MAAA,WAAA8D,IAAA,CAAAe,CAAA;UAAA;YAAAP,SAAA,CAAAvP,IAAA;YAAA;UAAA;YAAAgP,UAAA,GAAAtP,+BAAA,CAiCG8G,WAAW;UAAA;YAAA,KAAAyI,MAAA,GAAAD,UAAA,IAAAzO,IAAA;cAAAgP,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAnBuI,MAAI,GAAA0G,MAAA,CAAAzO,KAAA;YAAA,KACToC,oBAAoB;cAAA2M,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,MAClBuI,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACC,aAAa;cAAA6G,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,OAAAuP,SAAA,CAAAtE,MAAA;UAAA;YAG1CyD,WAAW,CAACqB,IAAI,CAACtC,yBAAyB,CAAClF,MAAI,CAAC,CAAC;YAAC,OAAAgH,SAAA,CAAAtE,MAAA;UAAA;YAAA,MAIhD,CAAC1C,MAAI,IAAIA,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACI,aAAa;cAAA0G,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAAA,OAAAuP,SAAA,CAAAtE,MAAA;UAAA;YAAA,MAI/C1C,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACK,SAAS;cAAAyG,SAAA,CAAAvP,IAAA;cAAA;YAAA;YAEpC+E,OAAO,CAACiE,OAAO,GAAG,KAAK;YAAC,OAAAuG,SAAA,CAAAtE,MAAA;UAAA;YAI1B,IAAI1C,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAACyH,QAAQ,IAAI3H,MAAI,CAACC,KAAK,KAAKC,gBAAS,CAAC0H,QAAQ,EAAE;cAC1EzB,WAAW,CAACqB,IAAI,CAACtC,yBAAyB,CAAClF,MAAI,CAAC,CAAC;YACnD;UAAC;YAAAgH,SAAA,CAAAvP,IAAA;YAAA;UAAA;YAAA,MAIC,CAAC+H,QAAQ,IAAI2G,WAAW,CAACrO,MAAM,KAAK,CAAC;cAAAkP,SAAA,CAAAvP,IAAA;cAAA;YAAA;YACvC+E,OAAO,CAACiE,OAAO,GAAG,KAAK;YAAC,OAAAuG,SAAA,CAAAtE,MAAA;UAAA;YAIpBkE,OAAO,GAAG3O,KAAK,CAAC0F,OAAO;YAC7B,IAAIiJ,OAAO,IAAIA,OAAO,CAAC3B,IAAI,KAAK,OAAO,EAAE;cACjC4B,cAAc,OAAAmB,SAAA,iBACfpB,OAAO;gBACVT,WAAW,EAAXA,WAAW;gBACX8B,eAAe,EAAE9J,cAAc;gBAC/B+J,cAAc,EAAEpN,SAAS;gBACzB8D,IAAI,EAAEY;cAAQ;cAIhBvH,KAAK,CAACoM,iBAAiB,CAAC,CAAC;cAEnByC,oBAAoB,GAAG7O,KAAK,CAC/BkQ,WAAW,CAEV,IAAAC,0CAAoB,EAACvB,cAAc,CACrC,CAAC,CACAwB,IAAI,CAACpQ,KAAK,CAACoM,iBAAiB,CAAC;cAChCF,UAAU,CAACgC,WAAW,CAAC;cACvB,IAAAxF,mCAAuB,EAACmG,oBAAoB,EAAE,gBAAgB,CAAC;cAE/DtK,OAAO,CAACiE,OAAO,GAAG,KAAK;YACzB,CAAC,MAAM;cACL,IAAI;gBAIF,IAAImG,OAAO,IAAI,IAAA0B,uBAAgB,EAAC1B,OAA0C,CAAC,EAAE;kBAC3EpM,aAAa,CAACoM,OAAO,CAAC;gBACxB;gBACA3O,KAAK,CAAC8N,WAAW,CAAC;kBAChBI,WAAW,EAAXA,WAAW;kBACX8B,eAAe,EAAE,IAAAM,gBAAI,EAACpK,cAAc,CAAC;kBAErCqK,SAAS,EAAEtM,MAAM,oBAANA,MAAM,CAAEkD,EAAE;kBACrBqJ,iBAAiB,EACf,OAAOxQ,KAAK,CAACyQ,aAAa,KAAK,SAAS,GAAG5N,SAAS,GAAG7C,KAAK,CAACyQ,aAAa,CAACtJ,EAAE;kBAC/EuJ,eAAe,EAAElL,0BAA0B,IAAI3C,SAAS;kBACxD8D,IAAI,EAAEY;gBACR,CAAiD,CAAC;gBAElDvH,KAAK,CAAC2Q,uBAAuB,CAAC,CAAC;gBAC/BpM,OAAO,CAACiE,OAAO,GAAG,KAAK;gBACvB0D,UAAU,CAACgC,WAAW,CAAC;cACzB,CAAC,CAAC,OAAO0C,MAAM,EAAE;gBACfrM,OAAO,CAACiE,OAAO,GAAG,KAAK;gBACvB,IAAIxI,KAAK,CAACyQ,aAAa,IAAI,OAAOzQ,KAAK,CAACyQ,aAAa,KAAK,SAAS,EAAE;kBACnEzQ,KAAK,CAAC6Q,qBAAqB,CAAC7Q,KAAK,CAACyQ,aAAa,CAAC;gBAClD;gBACAhK,OAAO,CAACc,QAAQ,CAACjH,KAAK,CAACuD,YAAY,IAAIuB,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5DmF,OAAO,CAACC,GAAG,CAAC,wBAAwB,CAAC;cACvC;YACF;UAAC;UAAA;YAAA,OAAAuE,SAAA,CAAAxD,IAAA;QAAA;MAAA,GAAAyC,QAAA;IAAA,CACF;IAAA,gBA5IKF,WAAWA,CAAA;MAAA,OAAAC,KAAA,CAAAvC,KAAA,OAAAC,SAAA;IAAA;EAAA,GA4IhB;EAED,IAAMqF,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAI3J,EAAU,EAAK;IACvC,IAAM6E,KAAK,GAAGhH,YAAY,CAACmC,EAAE,CAAC;IAC9B,IAAI,CAAC6E,KAAK,IAAIA,KAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACI,aAAa,EAAE;MACrD;IACF;IAEA,IAAI2D,KAAK,CAAChE,KAAK,KAAKC,gBAAS,CAACyH,QAAQ,IAAI1D,KAAK,CAAChE,KAAK,KAAKC,gBAAS,CAAC0H,QAAQ,EAAE;MAC5E,IAAMzB,WAAW,GAAG,CAClB;QACEzB,SAAS,EAAET,KAAK,CAACU,GAAG;QACpBM,IAAI,EAAE;MACR,CAAC,CACkD;MAErDhG,aAAa,CAAC,CAAC;MACf,IAAI;QACFhH,KAAK,CAAC8N,WAAW,CAAC;UAChBI,WAAW,EAAXA,WAAW;UACX8B,eAAe,EAAE,EAAE;UACnBO,SAAS,EAAEtM,MAAM,oBAANA,MAAM,CAAEkD,EAAE;UACrBqJ,iBAAiB,EACf,OAAOxQ,KAAK,CAACyQ,aAAa,KAAK,SAAS,GAAG5N,SAAS,GAAG7C,KAAK,CAACyQ,aAAa,CAACtJ,EAAE;UAC/EuJ,eAAe,EAAElL,0BAA0B,IAAI3C,SAAS;UACxD8D,IAAI,EAAE;QACR,CAA0D,CAAC;QAE3D9B,WAAW,CAAC,UAAC4K,YAAY;UAAA,OAAKA,YAAY,CAACsB,MAAM,CAACtB,YAAY,CAACuB,OAAO,CAAC7J,EAAE,CAAC,EAAE,CAAC,CAAC;QAAA,EAAC;QAC/ElC,eAAe,CAAC,UAACgM,gBAAgB,EAAK;UACpC,OAAOA,gBAAgB,CAAC9J,EAAE,CAAC;UAC3B,OAAO8J,gBAAgB;QACzB,CAAC,CAAC;QAEF1K,kBAAkB,CAAC,UAACuF,mBAAmB;UAAA,OAAKA,mBAAmB,GAAG,CAAC;QAAA,EAAC;MACtE,CAAC,CAAC,OAAO8E,MAAM,EAAE;QACfrG,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;MACvB;IACF;EACF,CAAC;EAED,IAAM0G,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,GAAqB,EAAK;IAChD9M,WAAW,CAACmE,OAAO,GAAG2I,GAAG;IACzB,IAAInR,KAAK,CAACoR,WAAW,EAAE;MACrBpR,KAAK,CAACoR,WAAW,CAACD,GAAG,CAAC;IACxB;EACF,CAAC;EAED,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;IAC/B,IAAIC,eAAoD,GAAG,CAAC,CAAC;IAC7D,IAAI1N,OAAO,EAAE;MACX,IAAI5D,KAAK,CAACuR,2BAA2B,EAAE;QACrCD,eAAe,GAAGtR,KAAK,CAACuR,2BAA2B,CAAC;UAClD3N,OAAO,EAAPA,OAAO;UACPzB,MAAM,EAANA,MAAM;UACNqP,mBAAmB,EAAElI;QACvB,CAAC,CAAC;MACJ,CAAC,MAAM;QACLgI,eAAe,GAAG,IAAAG,yBAAkB,EAAqB;UACvD7N,OAAO,EAAPA,OAAO;UACPzB,MAAM,EAANA,MAAM;UACNqP,mBAAmB,EAAElI;QACvB,CAAC,CAAC;MACJ;IACF;IACA,OAAOgI,eAAe;EACxB,CAAC;EAED,IAAMA,eAAe,GAAGD,kBAAkB,CAAC,CAAC;EAE5C,IAAMK,aAAa;IAAA,IAAAC,KAAA,OAAAjI,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAgI,SAAA;MAAA,OAAAjI,YAAA,YAAAO,IAAA,UAAA2H,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAzH,IAAA,GAAAyH,SAAA,CAAAtS,IAAA;UAAA;YAAAsS,SAAA,CAAAzH,IAAA;YAAA,KAEdrK,KAAK,CAAC0F,OAAO;cAAAoM,SAAA,CAAAtS,IAAA;cAAA;YAAA;YAAAsS,SAAA,CAAAtS,IAAA;YAAA,OACT2C,MAAM,CAACuP,aAAa,KAAA3B,SAAA,iBACrB/P,KAAK,CAAC0F,OAAO;cAChBuK,cAAc,EAAEpN,SAAS;cACzB8D,IAAI,EAAE9C,YAAY,IAAIuB,WAAW,eAAauB,IAAI,GAAKA;YAAI,EACM,CAAC;UAAA;YAGtE3G,KAAK,CAACoM,iBAAiB,CAAC,CAAC;YACzBF,UAAU,CAAC,CAAC;YAAC4F,SAAA,CAAAtS,IAAA;YAAA;UAAA;YAAAsS,SAAA,CAAAzH,IAAA;YAAAyH,SAAA,CAAAjC,EAAA,GAAAiC,SAAA;YAEbvH,OAAO,CAACC,GAAG,CAAAsH,SAAA,CAAAjC,EAAM,CAAC;UAAC;UAAA;YAAA,OAAAiC,SAAA,CAAAvG,IAAA;QAAA;MAAA,GAAAqG,QAAA;IAAA,CAEtB;IAAA,gBAfKF,aAAaA,CAAA;MAAA,OAAAC,KAAA,CAAAnG,KAAA,OAAAC,SAAA;IAAA;EAAA,GAelB;EAED,IAAMsG,cAAc,GAAG,sDAAsD;EAE7E,IAAMC,uBAAuB,GAC3B,SADIA,uBAAuBA,CAEzB7K,EAAU,EACV8K,SAAyB;IAAA,IACzBC,SAA8B,GAAAzG,SAAA,CAAA5L,MAAA,QAAA4L,SAAA,QAAA5I,SAAA,GAAA4I,SAAA,MAAG,CAAC,CAAC;IAAA,OAErC,UAAC0G,WAAyB;MAAA,OACxBA,WAAW,CAACC,GAAG,CAAC,UAACC,UAAU,EAAK;QAC9B,IAAIA,UAAU,CAAClL,EAAE,KAAKA,EAAE,EAAE;UACxB,WAAA4I,SAAA,iBACKsC,UAAU,EACVH,SAAS;YACZlK,KAAK,EAAEiK;UAAS;QAEpB;QACA,OAAOI,UAAU;MACnB,CAAC,CAAC;IAAA;EAAA;EAEN,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA4BA,CAAIC,KAAc,EAAEC,YAAqB,EAAErL,EAAU,EAAK;IAC1F,IAAIqL,YAAY,EAAE;MAChBjM,kBAAkB,CAAC,UAACuF,mBAAmB;QAAA,OAAKA,mBAAmB,GAAG,CAAC;MAAA,EAAC;MACpE,IAAIyG,KAAK,YAAYE,KAAK,EAAE;QAC1B,IAAIV,cAAc,CAACrR,IAAI,CAAC6R,KAAK,CAAC5D,OAAO,CAAC,EAAE;UACtC,OAAOtI,eAAe,CAAC2L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACC,aAAa,CAAC,CAAC;QAC9E;QAEA,OAAO7B,eAAe,CAAC2L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACI,aAAa,CAAC,CAAC;MAC9E;IACF,CAAC,MAAM;MACL9B,kBAAkB,CAAC,UAACuF,mBAAmB;QAAA,OAAKA,mBAAmB,GAAG,CAAC;MAAA,EAAC;MAEpE,IAAIyG,KAAK,YAAYE,KAAK,EAAE;QAC1B,IAAIV,cAAc,CAACrR,IAAI,CAAC6R,KAAK,CAAC5D,OAAO,CAAC,EAAE;UACtC,OAAOvI,cAAc,CAAC4L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACC,aAAa,CAAC,CAAC;QAC7E;QACA,OAAO9B,cAAc,CAAC4L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACI,aAAa,CAAC,CAAC;MAC7E;IACF;EACF,CAAC;EAED,IAAMqK,UAAU;IAAA,IAAAC,KAAA,OAAAjJ,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAgJ,SAAAC,KAAA;MAAA,IAAAC,OAAA,EAAA/K,IAAA,EAAAZ,EAAA,EAAA4L,QAAA,EAAAC,cAAA,EAAAC,aAAA,EAAAf,SAAA;MAAA,OAAAvI,YAAA,YAAAO,IAAA,UAAAgJ,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA9I,IAAA,GAAA8I,SAAA,CAAA3T,IAAA;UAAA;YAASsT,OAAO,GAAAD,KAAA,CAAPC,OAAO;YACzB/K,IAAI,GAAS+K,OAAO,CAApB/K,IAAI,EAAEZ,EAAE,GAAK2L,OAAO,CAAd3L,EAAE;YAEhBf,cAAc,CAAC4L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACK,SAAS,CAAC,CAAC;YAE5DyK,QAAsC,GAAG,CAAC,CAAC;YAAAI,SAAA,CAAA9I,IAAA;YAAA,KAEzCrK,KAAK,CAACoT,kBAAkB;cAAAD,SAAA,CAAA3T,IAAA;cAAA;YAAA;YAAA2T,SAAA,CAAA3T,IAAA;YAAA,OACTQ,KAAK,CAACoT,kBAAkB,CAACrL,IAAI,EAAEnE,OAAO,CAAC;UAAA;YAAxDmP,QAAQ,GAAAI,SAAA,CAAAtI,IAAA;YAAAsI,SAAA,CAAA3T,IAAA;YAAA;UAAA;YAAA,MACCoE,OAAO,IAAImE,IAAI,CAAC0F,GAAG;cAAA0F,SAAA,CAAA3T,IAAA;cAAA;YAAA;YAC5BsE,wBAAwB,CAAC0E,OAAO,CAACvJ,GAAG,CAClC8I,IAAI,CAACvH,IAAI,EACT2B,MAAM,CAACkR,mCAAmC,CAAC,CAC7C,CAAC;YAAC,OAAAL,cAAA,GAEEjL,IAAI,CAACsF,QAAQ,aAAb2F,cAAA,CAAeM,QAAQ,CAAC,OAAO,CAAC;cAAAH,SAAA,CAAA3T,IAAA;cAAA;YAAA;YAAA2T,SAAA,CAAA3T,IAAA;YAAA,OACN,IAAA+T,iCAAkB,EAACxL,IAAI,EAAE/H,KAAK,CAACwT,oBAAoB,CAAC;UAAA;YAA1EP,aAAa,GAAAE,SAAA,CAAAtI,IAAA;YAAAsI,SAAA,CAAA3T,IAAA;YAAA,OACFoE,OAAO,CAAC6P,QAAQ,CAACR,aAAa,EAAElL,IAAI,CAACvH,IAAI,EAAEuH,IAAI,CAACsF,QAAQ,CAAC;UAAA;YAA1E0F,QAAQ,GAAAI,SAAA,CAAAtI,IAAA;YAAAsI,SAAA,CAAA3T,IAAA;YAAA;UAAA;YAAA2T,SAAA,CAAA3T,IAAA;YAAA,OAESoE,OAAO,CAAC6P,QAAQ,CAAC1L,IAAI,CAAC0F,GAAG,EAAE1F,IAAI,CAACvH,IAAI,EAAEuH,IAAI,CAACsF,QAAQ,CAAC;UAAA;YAArE0F,QAAQ,GAAAI,SAAA,CAAAtI,IAAA;UAAA;YAEV/G,wBAAwB,CAAC0E,OAAO,UAAO,CAACT,IAAI,CAACvH,IAAI,CAAC;UAAC;YAE/C0R,SAA8B,GAAG;cAAErE,SAAS,EAAEkF,QAAQ,CAAClF,SAAS;cAAEnB,GAAG,EAAEqG,QAAQ,CAAChL;YAAK,CAAC;YAC5F3B,cAAc,CAAC4L,uBAAuB,CAAC7K,EAAE,EAAEc,gBAAS,CAACyH,QAAQ,EAAEwC,SAAS,CAAC,CAAC;YAACiB,SAAA,CAAA3T,IAAA;YAAA;UAAA;YAAA2T,SAAA,CAAA9I,IAAA;YAAA8I,SAAA,CAAAtD,EAAA,GAAAsD,SAAA;YAAA,MAGzEA,SAAA,CAAAtD,EAAA,YAAiB4C,KAAK,KACrBU,SAAA,CAAAtD,EAAA,CAAMrP,IAAI,KAAK,YAAY,IAAI2S,SAAA,CAAAtD,EAAA,CAAMrP,IAAI,KAAK,eAAe,CAAC;cAAA2S,SAAA,CAAA3T,IAAA;cAAA;YAAA;YAG/DsE,wBAAwB,CAAC0E,OAAO,UAAO,CAACT,IAAI,CAACvH,IAAI,CAAC;YAAC,OAAA2S,SAAA,CAAA1I,MAAA;UAAA;YAGrD6H,4BAA4B,CAAAa,SAAA,CAAAtD,EAAA,EAAQ,KAAK,EAAE1I,EAAE,CAAC;UAAC;UAAA;YAAA,OAAAgM,SAAA,CAAA5H,IAAA;QAAA;MAAA,GAAAqH,QAAA;IAAA,CAElD;IAAA,gBApCKF,UAAUA,CAAAgB,EAAA;MAAA,OAAAf,KAAA,CAAAnH,KAAA,OAAAC,SAAA;IAAA;EAAA,GAoCf;EAED,IAAMkI,WAAW;IAAA,IAAAC,KAAA,OAAAlK,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAiK,SAAAC,KAAA;MAAA,IAAAC,UAAA;MAAA,IAAAC,QAAA,EAAAC,KAAA,EAAAlM,IAAA,EAAAZ,EAAA,EAAA4L,QAAA,EAAAtF,GAAA,EAAAyG,QAAA,EAAAjB,aAAA,EAAAkB,WAAA,EAAAC,eAAA;MAAA,OAAAzK,YAAA,YAAAO,IAAA,UAAAmK,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAjK,IAAA,GAAAiK,SAAA,CAAA9U,IAAA;UAAA;YAASwU,QAAQ,GAAAF,KAAA,CAARE,QAAQ;YAAAC,KAAA,GACdD,QAAQ,IAAI,CAAC,CAAC,EAA3BjM,IAAI,GAAAkM,KAAA,CAAJlM,IAAI,EAAEZ,EAAE,GAAA8M,KAAA,CAAF9M,EAAE;YAAA,IAEXY,IAAI;cAAAuM,SAAA,CAAA9U,IAAA;cAAA;YAAA;YAAA,OAAA8U,SAAA,CAAA7J,MAAA;UAAA;YAILsI,QAAQ,GAAG,CAAC,CAAC;YAEXtF,GAAG,GAAG1F,IAAI,CAAC0F,GAAG,IAAI,EAAE;YACpByG,QAAQ,IAAAH,UAAA,GAAGhM,IAAI,CAACvH,IAAI,YAAAuT,UAAA,GAAItG,GAAG,CAAC8G,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;YAAAD,SAAA,CAAAjK,IAAA;YAAAiK,SAAA,CAAA9U,IAAA;YAAA,OAG5C,IAAA+T,iCAAkB,EAACxL,IAAI,EAAE/H,KAAK,CAACwT,oBAAoB,CAAC;UAAA;YAA1EP,aAAa,GAAAqB,SAAA,CAAAzJ,IAAA;YACbsJ,WAAW,GAAG,IAAA5H,iBAAM,EAAC2H,QAAQ,CAAC,IAAI,qBAAqB;YAAA,KACzDlU,KAAK,CAACwU,oBAAoB;cAAAF,SAAA,CAAA9U,IAAA;cAAA;YAAA;YAAA8U,SAAA,CAAA9U,IAAA;YAAA,OACXQ,KAAK,CAACwU,oBAAoB,CAACzM,IAAI,EAAEnE,OAAO,CAAC;UAAA;YAA1DmP,QAAQ,GAAAuB,SAAA,CAAAzJ,IAAA;YAAAyJ,SAAA,CAAA9U,IAAA;YAAA;UAAA;YAAA,MACCyT,aAAa,IAAIrP,OAAO;cAAA0Q,SAAA,CAAA9U,IAAA;cAAA;YAAA;YAAA,KAC7BQ,KAAK,CAACwP,cAAc;cAAA8E,SAAA,CAAA9U,IAAA;cAAA;YAAA;YACtBsE,wBAAwB,CAAC0E,OAAO,CAACvJ,GAAG,CAClCiV,QAAQ,EACR/R,MAAM,CAACkR,mCAAmC,CAAC,CAC7C,CAAC;YACDzP,OAAO,CAAC6Q,SAAS,CAACxB,aAAa,EAAEiB,QAAQ,EAAEC,WAAW,CAAC,CAAC/D,IAAI,CAC1D,UAACsE,GAAG,EAAK;cACP5Q,wBAAwB,CAAC0E,OAAO,UAAO,CAAC0L,QAAQ,CAAC;cACjD,IAAItP,QAAQ,CAAC0O,QAAQ,CAACnM,EAAE,CAAC,EAAE;gBAEzBlC,eAAe,CAAC,UAACgM,gBAAgB,EAAK;kBACpCA,gBAAgB,CAAC9J,EAAE,CAAC,OAAA4I,SAAA,iBACfkB,gBAAgB,CAAC9J,EAAE,CAAC;oBACvBa,KAAK,EAAEC,gBAAS,CAACyH,QAAQ;oBACzBhD,GAAG,EAAEgI,GAAG,CAAC3M;kBAAI,EACd;kBACD,OAAOkJ,gBAAgB;gBACzB,CAAC,CAAC;cACJ,CAAC,MAAM;gBACL,IAAMmD,eAAe,GAAGpC,uBAAuB,CAC7C7K,EAAE,EACFc,gBAAS,CAACyH,QAAQ,EAClB;kBACEhD,GAAG,EAAEgI,GAAG,CAAC3M;gBACX,CACF,CAAC;gBACD1B,eAAe,CAAC+N,eAAe,CAAC;cAClC;YACF,CAAC,EACD,YAAM;cACJtQ,wBAAwB,CAAC0E,OAAO,UAAO,CAAC0L,QAAQ,CAAC;YACnD,CACF,CAAC;YAACI,SAAA,CAAA9U,IAAA;YAAA;UAAA;YAEFsE,wBAAwB,CAAC0E,OAAO,CAACvJ,GAAG,CAClCiV,QAAQ,EACR/R,MAAM,CAACkR,mCAAmC,CAAC,CAC7C,CAAC;YAACiB,SAAA,CAAA9U,IAAA;YAAA,OACeoE,OAAO,CAAC6Q,SAAS,CAACxB,aAAa,EAAEiB,QAAQ,EAAEC,WAAW,CAAC;UAAA;YAAxEpB,QAAQ,GAAAuB,SAAA,CAAAzJ,IAAA;YACR/G,wBAAwB,CAAC0E,OAAO,UAAO,CAAC0L,QAAQ,CAAC;UAAC;YAItD,IAAIzV,MAAM,CAACkW,IAAI,CAAC5B,QAAQ,CAAC,CAAClT,MAAM,EAAE;cAC1BuU,eAAe,GAAGpC,uBAAuB,CAAc7K,EAAE,EAAEc,gBAAS,CAACyH,QAAQ,EAAE;gBACnF9C,MAAM,EAAE7E,IAAI,CAAC6E,MAAM;gBACnBF,GAAG,EAAEqG,QAAQ,CAAChL,IAAI;gBAClB+E,KAAK,EAAE/E,IAAI,CAAC+E;cACd,CAAC,CAAC;cACFzG,eAAe,CAAC+N,eAAe,CAAC;YAClC;YAACE,SAAA,CAAA9U,IAAA;YAAA;UAAA;YAAA8U,SAAA,CAAAjK,IAAA;YAAAiK,SAAA,CAAAzE,EAAA,GAAAyE,SAAA;YAAA,MAGCA,SAAA,CAAAzE,EAAA,YAAiB4C,KAAK,KACrB6B,SAAA,CAAAzE,EAAA,CAAMrP,IAAI,KAAK,YAAY,IAAI8T,SAAA,CAAAzE,EAAA,CAAMrP,IAAI,KAAK,eAAe,CAAC;cAAA8T,SAAA,CAAA9U,IAAA;cAAA;YAAA;YAG/DsE,wBAAwB,CAAC0E,OAAO,UAAO,CAAC0L,QAAQ,CAAC;YAAC,OAAAI,SAAA,CAAA7J,MAAA;UAAA;YAGpD6H,4BAA4B,CAAAgC,SAAA,CAAAzE,EAAA,EAAQ,IAAI,EAAE1I,EAAE,CAAC;UAAC;UAAA;YAAA,OAAAmN,SAAA,CAAA/I,IAAA;QAAA;MAAA,GAAAsI,QAAA;IAAA,CAEjD;IAAA,gBAhFKF,WAAWA,CAAAiB,GAAA;MAAA,OAAAhB,KAAA,CAAApI,KAAA,OAAAC,SAAA;IAAA;EAAA,GAgFhB;EAED,IAAMH,aAAa;IAAA,IAAAuJ,MAAA,OAAAnL,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAkL,SAAO/M,IAAU;MAAA,IAAAZ,EAAA,EAAA4N,sBAAA,EAAAC,qBAAA,EAAA/C,SAAA,EAAAa,OAAA;MAAA,OAAAnJ,YAAA,YAAAO,IAAA,UAAA+K,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA7K,IAAA,GAAA6K,SAAA,CAAA1V,IAAA;UAAA;YAC/B2H,EAAU,GAAG,IAAAgO,uBAAgB,EAAC,CAAC;YAE/BJ,sBAA2C,GAAGjS,yBAAyB,oBAAzBA,yBAAyB,CAAE6I,IAAI,CACjF,UAACyJ,iBAAyB;cAAA,IAAAC,WAAA;cAAA,QAAAA,WAAA,GAAKtN,IAAI,CAACvH,IAAI,qBAAT6U,WAAA,CAAW/B,QAAQ,CAAC8B,iBAAiB,CAAC;YAAA,CACvE,CAAC;YACKJ,qBAA0C,GAAGhS,oBAAoB,oBAApBA,oBAAoB,CAAE2I,IAAI,CAC3E,UAAC0B,QAAgB;cAAA,IAAAiI,WAAA;cAAA,QAAAA,WAAA,GAAKvN,IAAI,CAACvH,IAAI,qBAAT8U,WAAA,CAAWhC,QAAQ,CAACjG,QAAQ,CAAC;YAAA,CACrD,CAAC;YAEK4E,SAAS,GACb8C,sBAAsB,IAAIC,qBAAqB,GAC3C/M,gBAAS,CAACC,aAAa,GACvBD,gBAAS,CAACK,SAAS;YAEnBwK,OAAmB,GAAG;cAC1BpF,QAAQ,EAAE,CAAC;cACX3F,IAAI,EAAJA,IAAI;cACJZ,EAAE,EAAEY,IAAI,CAACZ,EAAE,IAAIA,EAAE;cACjBoO,MAAM,EAAE,IAAI;cACZC,QAAQ,EAAE,CAAC;cACXxN,KAAK,EAAEiK;YACT,CAAC;YAAAiD,SAAA,CAAA1V,IAAA;YAAA,OAEKiW,OAAO,CAACC,GAAG,CAAC,CAChBtP,cAAc,CAAC,UAACwF,eAAe;cAAA,OAAKA,eAAe,CAACjE,MAAM,CAAC,CAACmL,OAAO,CAAC,CAAC;YAAA,EAAC,EACtEvM,kBAAkB,CAAC,UAACuF,mBAAmB;cAAA,OAAKA,mBAAmB,GAAG,CAAC;YAAA,EAAC,CACrE,CAAC;UAAA;YAEF,IAAI,CAACiJ,sBAAsB,EAAE;cAC3BrC,UAAU,CAAC;gBAAEI,OAAO,EAAPA;cAAQ,CAAC,CAAC;YACzB;UAAC;UAAA;YAAA,OAAAoC,SAAA,CAAA3J,IAAA;QAAA;MAAA,GAAAuJ,QAAA;IAAA,CACF;IAAA,gBAhCKxJ,aAAaA,CAAAqK,GAAA;MAAA,OAAAd,MAAA,CAAArJ,KAAA,OAAAC,SAAA;IAAA;EAAA,GAgClB;EAED,IAAMmK,cAAc;IAAA,IAAAC,MAAA,OAAAnM,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAkM,SAAO9J,KAAqB;MAAA,IAAA7E,EAAA,EAAA4O,sBAAA,EAAAC,uBAAA,EAAAC,UAAA,EAAAjC,QAAA;MAAA,OAAArK,YAAA,YAAAO,IAAA,UAAAgM,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA9L,IAAA,GAAA8L,SAAA,CAAA3W,IAAA;UAAA;YAC3C2H,EAAE,GAAG,IAAAgO,uBAAgB,EAAC,CAAC;YAEvBY,sBAAsB,GAAGxS,qBAAqB,oBAArBA,qBAAqB,CAAEoI,IAAI,CAAC,UAAC0B,QAAgB;cAAA,IAAA+I,UAAA;cAAA,QAAAA,UAAA,GAC1EpK,KAAK,CAACyB,GAAG,qBAAT2I,UAAA,CAAW9C,QAAQ,CAACjG,QAAQ,CAAC;YAAA,CAC/B,CAAC;YAEK2I,uBAAuB,GAAG1S,0BAA0B,oBAA1BA,0BAA0B,CAAEqI,IAAI,CAAC,UAAC0K,kBAA0B;cAAA,IAAAC,WAAA;cAAA,QAAAA,WAAA,GAC1FtK,KAAK,CAACyB,GAAG,qBAAT6I,WAAA,CAAWhD,QAAQ,CAAC+C,kBAAkB,CAAC;YAAA,CACzC,CAAC;YAEKJ,UAAU,GACdD,uBAAuB,IAAID,sBAAsB,GAC7C9N,gBAAS,CAACC,aAAa,GACvBD,gBAAS,CAACK,SAAS;YAEnB0L,QAAqB,GAAG;cAC5BjM,IAAI,EAAEiE,KAAK;cACXY,MAAM,EAAEZ,KAAK,CAACY,MAAM;cACpBzF,EAAE,EAAFA,EAAE;cACFa,KAAK,EAAEiO,UAAU;cACjBvJ,GAAG,EAAEV,KAAK,CAACyB,GAAG;cACdX,KAAK,EAAEd,KAAK,CAACc;YACf,CAAC;YAAAqJ,SAAA,CAAA3W,IAAA;YAAA,OAEKiW,OAAO,CAACC,GAAG,CAAC,CAChBrP,eAAe,CAAC,UAAC4F,gBAAgB;cAAA,OAAKA,gBAAgB,CAACtE,MAAM,CAAC,CAACqM,QAAQ,CAAC,CAAC;YAAA,EAAC,EAC1EzN,kBAAkB,CAAC,UAACuF,mBAAmB;cAAA,OAAKA,mBAAmB,GAAG,CAAC;YAAA,EAAC,CACrE,CAAC;UAAA;YAEF,IAAI,CAACkK,uBAAuB,EAAE;cAC5BrC,WAAW,CAAC;gBAAEK,QAAQ,EAARA;cAAS,CAAC,CAAC;YAC3B;UAAC;UAAA;YAAA,OAAAmC,SAAA,CAAA5K,IAAA;QAAA;MAAA,GAAAuK,QAAA;IAAA,CACF;IAAA,gBAjCKF,cAAcA,CAAAW,GAAA;MAAA,OAAAV,MAAA,CAAArK,KAAA,OAAAC,SAAA;IAAA;EAAA,GAiCnB;EAED,IAAM+K,mBAAmB,GAAG,IAAAC,0DAA4B,MAAA1G,SAAA;IACtD1I,UAAU,EAAVA,UAAU;IACVzC,QAAQ,EAARA,QAAQ;IACRI,YAAY,EAAZA,YAAY;IACZoE,qBAAqB,EAArBA,qBAAqB;IACrBtC,cAAc,EAAdA,cAAc;IACdd,WAAW,EAAXA,WAAW;IACXZ,WAAW,EAAXA,WAAW;IACXa,YAAY,EAAZA,YAAY;IACZ5B,WAAW,EAAXA,WAAW;IACXmD,cAAc,EAAdA,cAAc;IACdtB,cAAc,EAAdA,cAAc;IACdC,eAAe,EAAfA,eAAe;IACfoC,QAAQ,EAARA,QAAQ;IACRe,YAAY,EAAZA,YAAY;IACZN,oBAAoB,EAApBA,oBAAoB;IACpBH,kBAAkB,EAAlBA,kBAAkB;IAClB6N,cAAc,EAAEvN,QAAQ;IACxBJ,kBAAkB,EAAlBA,kBAAkB;IAClBI,QAAQ,EAARA,QAAQ;IACRuC,UAAU,EAAVA,UAAU;IACVK,WAAW,EAAXA,WAAW;IACXG,UAAU,EAAVA,UAAU;IACVpK,cAAc,EAAdA,cAAc;IACdyC,OAAO,EAAPA,OAAO;IACPuM,gBAAgB,EAAhBA,gBAAgB;IAChBtL,0BAA0B,EAA1BA,0BAA0B;IAC1BX,WAAW,EAAXA,WAAW;IACXI,eAAe,EAAfA,eAAe;IACfmB,cAAc,EAAdA,cAAc;IACdf,cAAc,EAAdA,cAAc;IACdgB,eAAe,EAAfA,eAAe;IACf6K,cAAc,EAAdA,cAAc;IACd5K,iBAAiB,EAAjBA,iBAAiB;IACjBC,kBAAkB,EAAlBA,kBAAkB;IAClBd,6BAA6B,EAA7BA,6BAA6B;IAC7Be,kBAAkB,EAAlBA,kBAAkB;IAClBC,OAAO,EAAPA,OAAO;IACPC,eAAe,EAAfA,eAAe;IACfC,IAAI,EAAJA,IAAI;IACJ1C,MAAM,EAANA,MAAM;IACNoF,sBAAsB,EAAtBA,sBAAsB;IACtBiI,eAAe,EAAfA,eAAe;IACfI,aAAa,EAAbA,aAAa;IACbgB,UAAU,EAAVA,UAAU;IACViB,WAAW,EAAXA,WAAW;IACXrI,aAAa,EAAbA,aAAa;IACbsK,cAAc,EAAdA;EAAc,GACX5V,KAAK;IACR8N,WAAW,EAAXA;EAAW,EACZ,CAAC;EAEF,OACE9R,MAAA,YAAA2a,aAAA,CAAC7V,mBAAmB,CAAC8V,QAAQ;IAC3B5W,KAAK,EAAEwW,mBAA2D;IAAAK,MAAA,EAAAnZ,KAAA;IAAAoZ,QAAA;MAAAC,QAAA,EAAApZ,YAAA;MAAAqZ,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEjExV,QAC2B,CAAC;AAEnC,CAAC;AAACP,OAAA,CAAAC,oBAAA,GAAAA,oBAAA;AAEK,IAAM+V,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAA,EAE5B;EACL,IAAMC,YAAY,GAAG,IAAAC,iBAAU,EAC7BtW,mBACF,CAA4D;EAE5D,IAAIqW,YAAY,KAAKlW,mDAA0B,IAAI,CAAC,IAAAoW,oCAAiB,EAAC,CAAC,EAAE;IACvE,MAAM,IAAI5E,KAAK,uOAEf,CAAC;EACH;EAEA,OAAO0E,YAAY;AACrB,CAAC;AAACjW,OAAA,CAAAgW,sBAAA,GAAAA,sBAAA;AAOK,IAAMI,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAIlCC,SAAiC,EACyC;EAC1E,IAAMC,gCAAgC,GAAG,SAAnCA,gCAAgCA,CACpCC,KAAkE,EAC/D;IACH,IAAMjB,mBAAmB,GAAGU,sBAAsB,CAAqB,CAAC;IAExE,OAAOlb,MAAA,YAAA2a,aAAA,CAACY,SAAS,MAAAxH,SAAA,iBAAM0H,KAAK,EAAYjB,mBAAmB;MAAAK,MAAA,EAAAnZ,KAAA;MAAAoZ,QAAA;QAAAC,QAAA,EAAApZ,YAAA;QAAAqZ,UAAA;QAAAC,YAAA;MAAA;IAAA,EAAG,CAAC;EACjE,CAAC;EACDO,gCAAgC,CAACE,WAAW,+BAA6B,IAAAC,8BAAc,EACrFJ,SACF,CAAG;EACH,OAAOC,gCAAgC;AACzC,CAAC;AAACtW,OAAA,CAAAoW,uBAAA,GAAAA,uBAAA"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uniq","_interopRequireDefault","_mimeTypes","_streamChat","_useCreateMessageInputContext","_useMessageDetailsForState","_parseLinks","_useCooldown2","_native","_compressImage","_removeReservedFields","_utils","_AttachmentPickerContext","_ChannelContext","_ChatContext","_MessagesContext","_OwnCapabilitiesContext","_ThreadContext","_TranslationContext","_defaultBaseContextValue","_getDisplayName","_isTestEnvironment","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof3","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","from","test","arr","len","arr2","MessageInputContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","exports","MessageInputProvider","_ref","_getFileUploadConfig","_getFileUploadConfig2","_getImageUploadConfig","_getImageUploadConfig2","children","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","openPicker","selectedPicker","setSelectedPicker","_useChatContext","useChatContext","appSettings","client","enableOfflineSupport","_useMessagesContext","useMessagesContext","removeMessage","getFileUploadConfig","_appSettings$app","fileConfig","app","file_upload_config","undefined","blockedFileExtensionTypes","blocked_file_extensions","blockedFileMimeTypes","blocked_mime_types","getImageUploadConfig","_appSettings$app2","imageConfig","image_upload_config","blockedImageExtensionTypes","blockedImageMimeTypes","channelCapabities","useOwnCapabilitiesContext","_useChannelContext","useChannelContext","channel","giphyEnabled","uploadAbortControllerRef","_useThreadContext","useThreadContext","thread","_useTranslationContex","useTranslationContext","t","inputBoxRef","useRef","sending","_useState","useState","_useState2","_slicedToArray2","asyncIds","setAsyncIds","_useState3","_useState4","asyncUploads","setAsyncUploads","_useState5","_useState6","giphyActive","setGiphyActive","_useState7","_useState8","sendThreadMessageInChannel","setSendThreadMessageInChannel","editing","hasFilePicker","hasImagePicker","initialValue","_useMessageDetailsFor","useMessageDetailsForState","fileUploads","imageUploads","mentionedUsers","numberOfUploads","setFileUploads","setImageUploads","setMentionedUsers","setNumberOfUploads","setShowMoreOptions","setText","showMoreOptions","text","_useCooldown","useCooldown","cooldownEndsAt","endsAt","startCooldown","start","threadId","id","useEffect","appendText","newText","prevText","isValidMessage","trim","imagesAndFiles","concat","_toConsumableArray2","_iterator","_step","file","state","FileState","NOT_SUPPORTED","_iterator2","_step2","UPLOAD_FAILED","UPLOADING","onChange","current","sendTypingEvents","logChatPromiseExecution","keystroke","onChangeText","openCommandsPicker","focus","openMentionsPicker","openAttachmentPicker","Keyboard","dismiss","pickFile","closeAttachmentPicker","toggleAttachmentPicker","onSelectItem","item","prevMentionedUsers","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","result","MEGA_BYTES_TO_BYTES","MAX_FILE_SIZE_TO_UPLOAD_IN_MB","totalFileSize","wrap","_callee$","_context","prev","pickDocument","console","log","abrupt","maxNumberOfFiles","Alert","alert","sent","cancelled","assets","reduce","acc","asset","Number","size","forEach","uploadNewFile","stop","apply","arguments","removeFile","some","prevFileUploads","filter","prevNumberOfUploads","removeImage","image","prevImageUploads","resetInput","pendingAttachments","clearEditingState","mapImageUploadToAttachment","mime_type","lookup","fallback","image_url","url","original_height","height","original_width","width","originalImage","type","mapFileUploadToAttachment","_file$file$mimeType","_file$file$mimeType2","_file$file$mimeType3","mimeType","startsWith","originalFile","asset_url","uri","duration","file_size","title","thumb_url","sendMessage","_ref3","_callee3","customMessageData","linkInfos","attachments","_loop","_iterator3","_step3","_image","_ret","_iterator4","_step4","_file3","message","updatedMessage","updateMessagePromise","_callee3$","_context3","parseLinksFromText","sendLinks","clear","_callee2","_callee2$","_context2","v","push","sendImageAsync","prevAsyncIds","UPLOADED","FINISHED","delegateYield","t0","_typeof2","_extends2","mentioned_users","quoted_message","editMessage","removeReservedFields","then","isBouncedMessage","uniq","parent_id","quoted_message_id","quotedMessage","show_in_channel","clearQuotedMessageState","_error","setQuotedMessageState","_x","sendMessageAsync","splice","indexOf","prevAsyncUploads","setInputBoxRef","ref","setInputRef","getTriggerSettings","triggerSettings","autoCompleteTriggerSettings","onMentionSelectItem","ACITriggerSettings","updateMessage","_ref4","_callee4","_callee4$","_context4","regexCondition","getUploadSetStateAction","fileState","extraData","prevUploads","map","prevUpload","handleFileOrImageUploadError","error","isImageError","Error","uploadFile","_ref6","_callee5","_ref5","newFile","response","_file$mimeType","compressedUri","_callee5$","_context5","doDocUploadRequest","createAbortControllerForNextRequest","includes","compressedImageURI","compressImageQuality","sendFile","_x2","uploadImage","_ref8","_callee6","_ref7","_file$name","newImage","_ref9","filename","contentType","newImageUploads","_callee6$","_context6","replace","doImageUploadRequest","sendImage","res","keys","_x3","_ref10","_callee7","isBlockedFileExtension","isBlockedFileMimeType","_callee7$","_context7","generateRandomId","fileExtensionType","_file$name2","_file$name3","paused","progress","Promise","all","_x4","uploadNewImage","_ref11","_callee8","isBlockedImageMimeType","isBlockedImageExtension","imageState","_callee8$","_context8","_image$uri","imageExtensionType","_image$uri2","_x5","messageInputContext","useCreateMessageInputContext","openFilePicker","createElement","Provider","__self","__source","fileName","lineNumber","columnNumber","useMessageInputContext","contextValue","useContext","isTestEnvironment","withMessageInputContext","Component","WithMessageInputContextComponent","props","displayName","getDisplayName"],"sources":["MessageInputContext.tsx"],"sourcesContent":["import type { LegacyRef } from 'react';\nimport React, { PropsWithChildren, useContext, useEffect, useRef, useState } from 'react';\nimport type { TextInput, TextInputProps } from 'react-native';\nimport { Alert, Keyboard } from 'react-native';\n\nimport uniq from 'lodash/uniq';\nimport { lookup } from 'mime-types';\nimport {\n Attachment,\n logChatPromiseExecution,\n Message,\n SendFileAPIResponse,\n StreamChat,\n Message as StreamMessage,\n UserFilters,\n UserOptions,\n UserResponse,\n UserSort,\n} from 'stream-chat';\n\nimport { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';\nimport { useMessageDetailsForState } from './hooks/useMessageDetailsForState';\n\nimport { parseLinksFromText } from '../../components/Message/MessageSimple/utils/parseLinks';\nimport type { AttachButtonProps } from '../../components/MessageInput/AttachButton';\nimport type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';\nimport type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';\nimport type { InputGiphySearchProps } from '../../components/MessageInput/components/InputGiphySearch';\nimport type { InputReplyStateHeaderProps } from '../../components/MessageInput/components/InputReplyStateHeader';\nimport type { CooldownTimerProps } from '../../components/MessageInput/CooldownTimer';\nimport type { FileUploadPreviewProps } from '../../components/MessageInput/FileUploadPreview';\nimport { useCooldown } from '../../components/MessageInput/hooks/useCooldown';\nimport type { ImageUploadPreviewProps } from '../../components/MessageInput/ImageUploadPreview';\nimport type { InputButtonsProps } from '../../components/MessageInput/InputButtons';\nimport type { MessageInputProps } from '../../components/MessageInput/MessageInput';\nimport type { MoreOptionsButtonProps } from '../../components/MessageInput/MoreOptionsButton';\nimport type { SendButtonProps } from '../../components/MessageInput/SendButton';\nimport type { UploadProgressIndicatorProps } from '../../components/MessageInput/UploadProgressIndicator';\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport { pickDocument } from '../../native';\nimport type {\n Asset,\n DefaultStreamChatGenerics,\n File,\n FileUpload,\n ImageUpload,\n UnknownType,\n} from '../../types/types';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n ACITriggerSettings,\n ACITriggerSettingsParams,\n FileState,\n FileStateValue,\n generateRandomId,\n isBouncedMessage,\n TriggerSettings,\n} from '../../utils/utils';\nimport { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';\nimport { useChatContext } from '../chatContext/ChatContext';\nimport { useMessagesContext } from '../messagesContext/MessagesContext';\nimport { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';\nimport { useThreadContext } from '../threadContext/ThreadContext';\nimport { useTranslationContext } from '../translationContext/TranslationContext';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type MentionAllAppUsersQuery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n filters?: UserFilters<StreamChatGenerics>;\n options?: UserOptions;\n sort?: UserSort<StreamChatGenerics>;\n};\n\nexport type LocalMessageInputContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n appendText: (newText: string) => void;\n asyncIds: string[];\n asyncUploads: {\n [key: string]: {\n state: string;\n url: string;\n };\n };\n closeAttachmentPicker: () => void;\n /** The time at which the active cooldown will end */\n cooldownEndsAt: Date;\n /**\n * An array of file objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * \"url\": \"https://url1.com\",\n * },\n * ]\n * ```\n *\n */\n fileUploads: FileUpload[];\n giphyActive: boolean;\n /**\n * An array of image objects which are set for upload. It has the following structure:\n *\n * ```json\n * [\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_1\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * {\n * \"file\": // File object,\n * \"id\": \"randomly_generated_temp_id_2\",\n * \"state\": \"uploading\" // or \"finished\",\n * },\n * ]\n * ```\n *\n */\n imageUploads: ImageUpload[];\n inputBoxRef: React.MutableRefObject<TextInput | null>;\n isValidMessage: () => boolean;\n mentionedUsers: string[];\n numberOfUploads: number;\n onChange: (newText: string) => void;\n onSelectItem: (item: UserResponse<StreamChatGenerics>) => void;\n openAttachmentPicker: () => void;\n openCommandsPicker: () => void;\n openFilePicker: () => void;\n openMentionsPicker: () => void;\n pickFile: () => Promise<void>;\n /**\n * Function for removing a file from the upload preview\n *\n * @param id string ID of file in `fileUploads` object in state of MessageInput\n */\n removeFile: (id: string) => void;\n /**\n * Function for removing an image from the upload preview\n *\n * @param id string ID of image in `imageUploads` object in state of MessageInput\n */\n removeImage: (id: string) => void;\n resetInput: (pendingAttachments?: Attachment<StreamChatGenerics>[]) => void;\n selectedPicker: string | undefined;\n sending: React.MutableRefObject<boolean>;\n sendMessage: (customMessageData?: Partial<Message<StreamChatGenerics>>) => Promise<void>;\n sendMessageAsync: (id: string) => void;\n sendThreadMessageInChannel: boolean;\n setAsyncIds: React.Dispatch<React.SetStateAction<string[]>>;\n setAsyncUploads: React.Dispatch<\n React.SetStateAction<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>\n >;\n setFileUploads: React.Dispatch<React.SetStateAction<FileUpload[]>>;\n setGiphyActive: React.Dispatch<React.SetStateAction<boolean>>;\n setImageUploads: React.Dispatch<React.SetStateAction<ImageUpload[]>>;\n /**\n * Ref callback to set reference on input box\n */\n setInputBoxRef: LegacyRef<TextInput> | undefined;\n setMentionedUsers: React.Dispatch<React.SetStateAction<string[]>>;\n setNumberOfUploads: React.Dispatch<React.SetStateAction<number>>;\n setSendThreadMessageInChannel: React.Dispatch<React.SetStateAction<boolean>>;\n setShowMoreOptions: React.Dispatch<React.SetStateAction<boolean>>;\n setText: React.Dispatch<React.SetStateAction<string>>;\n showMoreOptions: boolean;\n /**\n * Text value of the TextInput\n */\n text: string;\n toggleAttachmentPicker: () => void;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n triggerSettings: TriggerSettings<StreamChatGenerics>;\n updateMessage: () => Promise<void>;\n /** Function for attempting to upload a file */\n uploadFile: ({ newFile }: { newFile: FileUpload }) => Promise<void>;\n /** Function for attempting to upload an image */\n uploadImage: ({ newImage }: { newImage: ImageUpload }) => Promise<void>;\n uploadNewFile: (file: File) => Promise<void>;\n uploadNewImage: (image: Partial<Asset>) => Promise<void>;\n};\n\nexport type InputMessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Custom UI component for attach button.\n *\n * Defaults to and accepts same props as: [AttachButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/attach-button/)\n */\n AttachButton: React.ComponentType<AttachButtonProps<StreamChatGenerics>>;\n\n clearEditingState: () => void;\n clearQuotedMessageState: () => void;\n /**\n * Custom UI component for commands button.\n *\n * Defaults to and accepts same props as: [CommandsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/commands-button/)\n */\n CommandsButton: React.ComponentType<CommandsButtonProps<StreamChatGenerics>>;\n /**\n * Custom UI component to display the remaining cooldown a user will have to wait before\n * being allowed to send another message. This component is displayed in place of the\n * send button for the MessageInput component.\n *\n * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)\n */\n CooldownTimer: React.ComponentType<CooldownTimerProps>;\n editMessage: StreamChat<StreamChatGenerics>['updateMessage'];\n\n /**\n * Custom UI component for FileUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/FileUploadPreview.tsx\n */\n FileUploadPreview: React.ComponentType<FileUploadPreviewProps<StreamChatGenerics>>;\n\n /** When false, CommandsButton will be hidden */\n hasCommands: boolean;\n /** When false, FileSelectorIcon will be hidden */\n hasFilePicker: boolean;\n /** When false, ImageSelectorIcon will be hidden */\n hasImagePicker: boolean;\n /**\n * Custom UI component for ImageUploadPreview.\n * Defaults to and accepts same props as: https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/ImageUploadPreview.tsx\n */\n ImageUploadPreview: React.ComponentType<ImageUploadPreviewProps<StreamChatGenerics>>;\n InputEditingStateHeader: React.ComponentType<InputEditingStateHeaderProps<StreamChatGenerics>>;\n InputGiphySearch: React.ComponentType<InputGiphySearchProps<StreamChatGenerics>>;\n InputReplyStateHeader: React.ComponentType<InputReplyStateHeaderProps<StreamChatGenerics>>;\n /** Limit on allowed number of files to attach at a time. */\n maxNumberOfFiles: number;\n /**\n * Custom UI component for more options button.\n *\n * Defaults to and accepts same props as: [MoreOptionsButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/more-options-button/)\n */\n MoreOptionsButton: React.ComponentType<MoreOptionsButtonProps<StreamChatGenerics>>;\n /** Limit on the number of lines in the text input before scrolling */\n numberOfLines: number;\n quotedMessage: boolean | MessageType<StreamChatGenerics>;\n /**\n * Custom UI component for send button.\n *\n * Defaults to and accepts same props as: [SendButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/send-button/)\n */\n SendButton: React.ComponentType<SendButtonProps<StreamChatGenerics>>;\n sendImageAsync: boolean;\n sendMessage: (message: Partial<StreamMessage<StreamChatGenerics>>) => Promise<void>;\n setQuotedMessageState: (message: MessageType<StreamChatGenerics>) => void;\n /**\n * Custom UI component to render checkbox with text (\"Also send to channel\") in Thread's input box.\n * When ticked, message will also be sent in parent channel.\n */\n ShowThreadMessageInChannelButton: React.ComponentType<{\n threadList?: boolean;\n }>;\n /**\n * Custom UI component to render upload progress indicator on attachment preview.\n *\n * **Default** [UploadProgressIndicator](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/UploadProgressIndicator.tsx)\n */\n UploadProgressIndicator: React.ComponentType<UploadProgressIndicatorProps>;\n /**\n * Additional props for underlying TextInput component. These props will be forwarded as it is to TextInput component.\n *\n * @see See https://reactnative.dev/docs/textinput#reference\n */\n additionalTextInputProps?: TextInputProps;\n /** Max number of suggestions to display in autocomplete list. Defaults to 10. */\n autoCompleteSuggestionsLimit?: number;\n /**\n * Mapping of input triggers to the outputs to be displayed by the AutoCompleteInput\n */\n autoCompleteTriggerSettings?: (\n settings: ACITriggerSettingsParams<StreamChatGenerics>,\n ) => TriggerSettings<StreamChatGenerics>;\n /**\n * Compress image with quality (from 0 to 1, where 1 is best quality).\n * On iOS, values larger than 0.8 don't produce a noticeable quality increase in most images,\n * while a value of 0.8 will reduce the file size by about half or less compared to a value of 1.\n * Image picker defaults to 0.8 for iOS and 1 for Android\n */\n compressImageQuality?: number;\n /**\n * Override file upload request\n *\n * @param file File object - { uri: '', name: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doDocUploadRequest?: (\n file: File,\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n /**\n * Override image upload request\n *\n * @param file File object - { uri: '' }\n * @param channel Current channel object\n *\n * @overrideType Function\n */\n doImageUploadRequest?: (\n file: {\n name?: string;\n uri?: string;\n },\n channel: ChannelContextValue<StreamChatGenerics>['channel'],\n ) => Promise<SendFileAPIResponse>;\n\n /**\n * Variable that tracks the editing state.\n * It is defined with message type if the editing state is true, else its undefined.\n */\n editing?: MessageType<StreamChatGenerics>;\n\n /** Initial value to set on input */\n initialValue?: string;\n /**\n * Custom UI component for AutoCompleteInput.\n * Has access to all of [MessageInputContext](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/messageInputContext/MessageInputContext.tsx)\n */\n Input?: React.ComponentType<\n Omit<MessageInputProps<StreamChatGenerics>, 'Input'> &\n InputButtonsProps<StreamChatGenerics> & {\n getUsers: () => UserResponse<StreamChatGenerics>[];\n }\n >;\n /**\n * Custom UI component to override buttons on left side of input box\n * Defaults to [InputButtons](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/InputButtons.tsx),\n * which contain following components/buttons:\n *\n * - AttachButton\n * - CommandsButtom\n *\n * You have access to following prop functions:\n *\n * - closeAttachmentPicker\n * - openAttachmentPicker\n * - openCommandsPicker\n * - toggleAttachmentPicker\n */\n InputButtons?: React.ComponentType<InputButtonsProps<StreamChatGenerics>>;\n maxMessageLength?: number;\n mentionAllAppUsersEnabled?: boolean;\n /** Object containing filters/sort/options overrides for an @mention user query */\n mentionAllAppUsersQuery?: MentionAllAppUsersQuery<StreamChatGenerics>;\n /**\n * Callback that is called when the text input's text changes. Changed text is passed as a single string argument to the callback handler.\n */\n onChangeText?: (newText: string) => void;\n SendMessageDisallowedIndicator?: React.ComponentType;\n /**\n * ref for input setter function\n *\n * @param ref [Ref object](https://reactjs.org/docs/refs-and-the-dom.html) for underling `TextInput` component.\n *\n * @overrideType Function\n */\n setInputRef?: (ref: TextInput | null) => void;\n};\n\nexport type MessageInputContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = LocalMessageInputContext<StreamChatGenerics> &\n Omit<InputMessageInputContextValue<StreamChatGenerics>, 'sendMessage'>;\n\nexport const MessageInputContext = React.createContext(\n DEFAULT_BASE_CONTEXT_VALUE as MessageInputContextValue,\n);\n\nexport const MessageInputProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value: InputMessageInputContextValue<StreamChatGenerics>;\n}>) => {\n const { closePicker, openPicker, selectedPicker, setSelectedPicker } =\n useAttachmentPickerContext();\n const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { removeMessage } = useMessagesContext();\n\n const getFileUploadConfig = () => {\n const fileConfig = appSettings?.app?.file_upload_config;\n if (fileConfig !== null || fileConfig !== undefined) {\n return fileConfig;\n } else {\n return {};\n }\n };\n\n const blockedFileExtensionTypes = getFileUploadConfig()?.blocked_file_extensions;\n const blockedFileMimeTypes = getFileUploadConfig()?.blocked_mime_types;\n\n const getImageUploadConfig = () => {\n const imageConfig = appSettings?.app?.image_upload_config;\n if (imageConfig !== null || imageConfig !== undefined) {\n return imageConfig;\n }\n return {};\n };\n\n const blockedImageExtensionTypes = getImageUploadConfig()?.blocked_file_extensions;\n const blockedImageMimeTypes = getImageUploadConfig()?.blocked_mime_types;\n\n const channelCapabities = useOwnCapabilitiesContext();\n\n const { channel, giphyEnabled, uploadAbortControllerRef } =\n useChannelContext<StreamChatGenerics>();\n const { thread } = useThreadContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n const inputBoxRef = useRef<TextInput | null>(null);\n const sending = useRef(false);\n\n const [asyncIds, setAsyncIds] = useState<string[]>([]);\n const [asyncUploads, setAsyncUploads] = useState<{\n [key: string]: {\n state: string;\n url: string;\n };\n }>({});\n const [giphyActive, setGiphyActive] = useState(false);\n const [sendThreadMessageInChannel, setSendThreadMessageInChannel] = useState(false);\n const { editing, hasFilePicker, hasImagePicker, initialValue } = value;\n const {\n fileUploads,\n imageUploads,\n mentionedUsers,\n numberOfUploads,\n setFileUploads,\n setImageUploads,\n setMentionedUsers,\n setNumberOfUploads,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n } = useMessageDetailsForState<StreamChatGenerics>(editing, initialValue);\n const { endsAt: cooldownEndsAt, start: startCooldown } = useCooldown<StreamChatGenerics>();\n\n const threadId = thread?.id;\n useEffect(() => {\n setSendThreadMessageInChannel(false);\n }, [threadId]);\n\n const appendText = (newText: string) => {\n setText((prevText) => `${prevText}${newText}`);\n };\n\n /** Checks if the message is valid or not. Accordingly we can enable/disable send button */\n const isValidMessage = () => {\n if (text && text.trim()) {\n return true;\n }\n\n const imagesAndFiles = [...imageUploads, ...fileUploads];\n if (imagesAndFiles.length === 0) return false;\n\n if (enableOfflineSupport) {\n // Allow only if none of the attachments have unsupported status\n for (const file of imagesAndFiles) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return false;\n }\n }\n\n return true;\n }\n\n for (const file of imagesAndFiles) {\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n return false;\n }\n\n return true;\n }\n\n return false;\n };\n\n const onChange = (newText: string) => {\n if (sending.current) {\n return;\n }\n setText(newText);\n\n if (newText && channel && channelCapabities.sendTypingEvents) {\n logChatPromiseExecution(channel.keystroke(thread?.id), 'start typing event');\n }\n\n if (value.onChangeText) {\n value.onChangeText(newText);\n }\n };\n\n const openCommandsPicker = () => {\n appendText('/');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openMentionsPicker = () => {\n appendText('@');\n if (inputBoxRef.current) {\n inputBoxRef.current.focus();\n }\n };\n\n const openAttachmentPicker = () => {\n if (hasImagePicker) {\n Keyboard.dismiss();\n setSelectedPicker('images');\n openPicker();\n } else if (hasFilePicker) {\n pickFile();\n }\n };\n\n const closeAttachmentPicker = () => {\n setSelectedPicker(undefined);\n closePicker();\n };\n\n const toggleAttachmentPicker = () => {\n if (selectedPicker) {\n closeAttachmentPicker();\n } else {\n openAttachmentPicker();\n }\n };\n\n const onSelectItem = (item: UserResponse<StreamChatGenerics>) => {\n setMentionedUsers((prevMentionedUsers) => [...prevMentionedUsers, item.id]);\n };\n\n const pickFile = async () => {\n if (pickDocument === null) {\n console.log(\n 'The file picker is not installed. Check our Getting Started documentation to install it.',\n );\n return;\n }\n\n if (numberOfUploads >= value.maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n\n const result = await pickDocument({\n maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads,\n });\n\n const MEGA_BYTES_TO_BYTES = 1024 * 1024;\n const MAX_FILE_SIZE_TO_UPLOAD_IN_MB = 100;\n\n if (!result.cancelled && result.assets) {\n const totalFileSize = result.assets.reduce((acc, asset) => acc + Number(asset.size), 0);\n if (totalFileSize / MEGA_BYTES_TO_BYTES > MAX_FILE_SIZE_TO_UPLOAD_IN_MB) {\n Alert.alert(\n t(\n `Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.`,\n { MAX_FILE_SIZE_TO_UPLOAD_IN_MB },\n ),\n );\n } else {\n result.assets.forEach((asset) => {\n /**\n * TODO: The current tight coupling of images to the image\n * picker does not allow images picked from the file picker\n * to be rendered in a preview via the uploadNewImage call.\n * This should be updated alongside allowing image a file\n * uploads together.\n */\n uploadNewFile(asset);\n });\n }\n }\n };\n\n const removeFile = (id: string) => {\n if (fileUploads.some((file) => file.id === id)) {\n setFileUploads((prevFileUploads) => prevFileUploads.filter((file) => file.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const removeImage = (id: string) => {\n if (imageUploads.some((image) => image.id === id)) {\n setImageUploads((prevImageUploads) => prevImageUploads.filter((image) => image.id !== id));\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n }\n };\n\n const resetInput = (pendingAttachments: Attachment<StreamChatGenerics>[] = []) => {\n setFileUploads([]);\n setGiphyActive(false);\n setShowMoreOptions(true);\n setImageUploads([]);\n setMentionedUsers([]);\n setNumberOfUploads(\n (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),\n );\n setText('');\n if (value.editing) {\n value.clearEditingState();\n }\n };\n\n const mapImageUploadToAttachment = (image: ImageUpload): Attachment<StreamChatGenerics> => {\n const mime_type: string | boolean = lookup(image.file.name as string);\n const name = image.file.name as string;\n return {\n fallback: name,\n image_url: image.url,\n mime_type: mime_type ? mime_type : undefined,\n original_height: image.height,\n original_width: image.width,\n originalImage: image.file,\n type: 'image',\n };\n };\n\n const mapFileUploadToAttachment = (file: FileUpload): Attachment<StreamChatGenerics> => {\n if (file.file.mimeType?.startsWith('image/')) {\n return {\n fallback: file.file.name,\n image_url: file.url,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n type: 'image',\n };\n } else if (file.file.mimeType?.startsWith('audio/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n title: file.file.name,\n type: 'audio',\n };\n } else if (file.file.mimeType?.startsWith('video/')) {\n return {\n asset_url: file.url || file.file.uri,\n duration: file.file.duration,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n thumb_url: file.thumb_url,\n title: file.file.name,\n type: 'video',\n };\n } else {\n return {\n asset_url: file.url || file.file.uri,\n file_size: file.file.size,\n mime_type: file.file.mimeType,\n originalFile: file.file,\n title: file.file.name,\n type: 'file',\n };\n }\n };\n\n // TODO: Figure out why this is async, as it doesn't await any promise.\n // eslint-disable-next-line require-await\n const sendMessage = async (customMessageData?: Partial<Message<StreamChatGenerics>>) => {\n if (sending.current) {\n return;\n }\n const linkInfos = parseLinksFromText(text);\n\n if (!channelCapabities.sendLinks && linkInfos.length > 0) {\n Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));\n\n return;\n }\n\n sending.current = true;\n\n startCooldown();\n\n const prevText = giphyEnabled && giphyActive ? `/giphy ${text}` : text;\n setText('');\n if (inputBoxRef.current) {\n inputBoxRef.current.clear();\n }\n\n const attachments = [] as Attachment<StreamChatGenerics>[];\n for (const image of imageUploads) {\n if (enableOfflineSupport) {\n if (image.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapImageUploadToAttachment(image));\n continue;\n }\n\n if ((!image || image.state === FileState.UPLOAD_FAILED) && !enableOfflineSupport) {\n continue;\n }\n\n if (image.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n if (value.sendImageAsync) {\n /**\n * If user hit send before image uploaded, push ID into a queue to later\n * be matched with the successful CDN response\n */\n setAsyncIds((prevAsyncIds) => [...prevAsyncIds, image.id]);\n } else {\n sending.current = false;\n return setText(prevText);\n }\n }\n\n // To get the mime type of the image from the file name and send it as an response for an image\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n attachments.push(mapImageUploadToAttachment(image));\n }\n }\n\n for (const file of fileUploads) {\n if (enableOfflineSupport) {\n if (file.state === FileState.NOT_SUPPORTED) {\n return;\n }\n attachments.push(mapFileUploadToAttachment(file));\n continue;\n }\n\n if (!file || file.state === FileState.UPLOAD_FAILED) {\n continue;\n }\n\n if (file.state === FileState.UPLOADING) {\n // TODO: show error to user that they should wait until image is uploaded\n sending.current = false;\n return;\n }\n\n if (file.state === FileState.UPLOADED || file.state === FileState.FINISHED) {\n attachments.push(mapFileUploadToAttachment(file));\n }\n }\n\n // Disallow sending message if its empty.\n if (!prevText && attachments.length === 0) {\n sending.current = false;\n return;\n }\n\n const message = value.editing;\n if (message && message.type !== 'error') {\n const updatedMessage = {\n ...message,\n attachments,\n mentioned_users: mentionedUsers,\n quoted_message: undefined,\n text: prevText,\n ...customMessageData,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0];\n\n // TODO: Remove this line and show an error when submit fails\n value.clearEditingState();\n\n const updateMessagePromise = value\n .editMessage(\n // @ts-ignore\n removeReservedFields(updatedMessage),\n )\n .then(value.clearEditingState);\n resetInput(attachments);\n logChatPromiseExecution(updateMessagePromise, 'update message');\n\n sending.current = false;\n } else {\n try {\n /**\n * If the message is bounced by moderation, we firstly remove the message from message list and then send a new message.\n */\n if (message && isBouncedMessage(message as MessageType<StreamChatGenerics>)) {\n removeMessage(message);\n }\n value.sendMessage({\n attachments,\n mentioned_users: uniq(mentionedUsers),\n /** Parent message id - in case of thread */\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: prevText,\n ...customMessageData,\n } as unknown as StreamMessage<StreamChatGenerics>);\n\n value.clearQuotedMessageState();\n sending.current = false;\n resetInput(attachments);\n } catch (_error) {\n sending.current = false;\n if (value.quotedMessage && typeof value.quotedMessage !== 'boolean') {\n value.setQuotedMessageState(value.quotedMessage);\n }\n setText(prevText.slice(giphyEnabled && giphyActive ? 7 : 0)); // 7 because of '/giphy ' length\n console.log('Failed to send message');\n }\n }\n };\n\n const sendMessageAsync = (id: string) => {\n const image = asyncUploads[id];\n if (!image || image.state === FileState.UPLOAD_FAILED) {\n return;\n }\n\n if (image.state === FileState.UPLOADED || image.state === FileState.FINISHED) {\n const attachments = [\n {\n image_url: image.url,\n type: 'image',\n },\n ] as StreamMessage<StreamChatGenerics>['attachments'];\n\n startCooldown();\n try {\n value.sendMessage({\n attachments,\n mentioned_users: [],\n parent_id: thread?.id,\n quoted_message_id:\n typeof value.quotedMessage === 'boolean' ? undefined : value.quotedMessage.id,\n show_in_channel: sendThreadMessageInChannel || undefined,\n text: '',\n } as unknown as Partial<StreamMessage<StreamChatGenerics>>);\n\n setAsyncIds((prevAsyncIds) => prevAsyncIds.splice(prevAsyncIds.indexOf(id), 1));\n setAsyncUploads((prevAsyncUploads) => {\n delete prevAsyncUploads[id];\n return prevAsyncUploads;\n });\n\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n } catch (_error) {\n console.log('Failed');\n }\n }\n };\n\n const setInputBoxRef = (ref: TextInput | null) => {\n inputBoxRef.current = ref;\n if (value.setInputRef) {\n value.setInputRef(ref);\n }\n };\n\n const getTriggerSettings = () => {\n let triggerSettings: TriggerSettings<StreamChatGenerics> = {};\n if (channel) {\n if (value.autoCompleteTriggerSettings) {\n triggerSettings = value.autoCompleteTriggerSettings({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n } else {\n triggerSettings = ACITriggerSettings<StreamChatGenerics>({\n channel,\n client,\n onMentionSelectItem: onSelectItem,\n });\n }\n }\n return triggerSettings;\n };\n\n const triggerSettings = getTriggerSettings();\n\n const updateMessage = async () => {\n try {\n if (value.editing) {\n await client.updateMessage({\n ...value.editing,\n quoted_message: undefined,\n text: giphyEnabled && giphyActive ? `/giphy ${text}` : text,\n } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);\n }\n\n value.clearEditingState();\n resetInput();\n } catch (error) {\n console.log(error);\n }\n };\n\n const regexCondition = /File (extension \\.\\w{2,4}|type \\S+) is not supported/;\n\n const getUploadSetStateAction =\n <UploadType extends ImageUpload | FileUpload>(\n id: string,\n fileState: FileStateValue,\n extraData: Partial<UploadType> = {},\n ): React.SetStateAction<UploadType[]> =>\n (prevUploads: UploadType[]) =>\n prevUploads.map((prevUpload) => {\n if (prevUpload.id === id) {\n return {\n ...prevUpload,\n ...extraData,\n state: fileState,\n };\n }\n return prevUpload;\n });\n\n const handleFileOrImageUploadError = (error: unknown, isImageError: boolean, id: string) => {\n if (isImageError) {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n if (error instanceof Error) {\n if (regexCondition.test(error.message)) {\n return setImageUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n\n return setImageUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n } else {\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads - 1);\n\n if (error instanceof Error) {\n if (regexCondition.test(error.message)) {\n return setFileUploads(getUploadSetStateAction(id, FileState.NOT_SUPPORTED));\n }\n return setFileUploads(getUploadSetStateAction(id, FileState.UPLOAD_FAILED));\n }\n }\n };\n\n const uploadFile = async ({ newFile }: { newFile: FileUpload }) => {\n const { file, id } = newFile;\n\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADING));\n\n let response: Partial<SendFileAPIResponse> = {};\n try {\n if (value.doDocUploadRequest) {\n response = await value.doDocUploadRequest(file, channel);\n } else if (channel && file.uri) {\n uploadAbortControllerRef.current.set(\n file.name,\n client.createAbortControllerForNextRequest(),\n );\n // Compress images selected through file picker when uploading them\n if (file.mimeType?.includes('image')) {\n const compressedUri = await compressedImageURI(file, value.compressImageQuality);\n response = await channel.sendFile(compressedUri, file.name, file.mimeType);\n } else {\n response = await channel.sendFile(file.uri, file.name, file.mimeType);\n }\n uploadAbortControllerRef.current.delete(file.name);\n }\n const extraData: Partial<FileUpload> = { thumb_url: response.thumb_url, url: response.file };\n setFileUploads(getUploadSetStateAction(id, FileState.UPLOADED, extraData));\n } catch (error: unknown) {\n if (\n error instanceof Error &&\n (error.name === 'AbortError' || error.name === 'CanceledError')\n ) {\n // nothing to do\n uploadAbortControllerRef.current.delete(file.name);\n return;\n }\n handleFileOrImageUploadError(error, false, id);\n }\n };\n\n const uploadImage = async ({ newImage }: { newImage: ImageUpload }) => {\n const { file, id } = newImage || {};\n\n if (!file) {\n return;\n }\n\n let response = {} as SendFileAPIResponse;\n\n const uri = file.uri || '';\n const filename = file.name ?? uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n\n try {\n const compressedUri = await compressedImageURI(file, value.compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n if (value.doImageUploadRequest) {\n response = await value.doImageUploadRequest(file, channel);\n } else if (compressedUri && channel) {\n if (value.sendImageAsync) {\n uploadAbortControllerRef.current.set(\n filename,\n client.createAbortControllerForNextRequest(),\n );\n channel.sendImage(compressedUri, filename, contentType).then(\n (res) => {\n uploadAbortControllerRef.current.delete(filename);\n if (asyncIds.includes(id)) {\n // Evaluates to true if user hit send before image successfully uploaded\n setAsyncUploads((prevAsyncUploads) => {\n prevAsyncUploads[id] = {\n ...prevAsyncUploads[id],\n state: FileState.UPLOADED,\n url: res.file,\n };\n return prevAsyncUploads;\n });\n } else {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(\n id,\n FileState.UPLOADED,\n {\n url: res.file,\n },\n );\n setImageUploads(newImageUploads);\n }\n },\n () => {\n uploadAbortControllerRef.current.delete(filename);\n },\n );\n } else {\n uploadAbortControllerRef.current.set(\n filename,\n client.createAbortControllerForNextRequest(),\n );\n response = await channel.sendImage(compressedUri, filename, contentType);\n uploadAbortControllerRef.current.delete(filename);\n }\n }\n\n if (Object.keys(response).length) {\n const newImageUploads = getUploadSetStateAction<ImageUpload>(id, FileState.UPLOADED, {\n height: file.height,\n url: response.file,\n width: file.width,\n });\n setImageUploads(newImageUploads);\n }\n } catch (error) {\n if (\n error instanceof Error &&\n (error.name === 'AbortError' || error.name === 'CanceledError')\n ) {\n // nothing to do\n uploadAbortControllerRef.current.delete(filename);\n return;\n }\n handleFileOrImageUploadError(error, true, id);\n }\n };\n\n const uploadNewFile = async (file: File) => {\n const id: string = generateRandomId();\n\n const isBlockedFileExtension: boolean | undefined = blockedFileExtensionTypes?.some(\n (fileExtensionType: string) => file.name?.includes(fileExtensionType),\n );\n const isBlockedFileMimeType: boolean | undefined = blockedFileMimeTypes?.some(\n (mimeType: string) => file.name?.includes(mimeType),\n );\n\n const fileState =\n isBlockedFileExtension || isBlockedFileMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newFile: FileUpload = {\n duration: 0,\n file,\n id: file.id || id,\n paused: true,\n progress: 0,\n state: fileState,\n };\n\n await Promise.all([\n setFileUploads((prevFileUploads) => prevFileUploads.concat([newFile])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedFileExtension) {\n uploadFile({ newFile });\n }\n };\n\n const uploadNewImage = async (image: Partial<Asset>) => {\n const id = generateRandomId();\n\n const isBlockedImageMimeType = blockedImageMimeTypes?.some((mimeType: string) =>\n image.uri?.includes(mimeType),\n );\n\n const isBlockedImageExtension = blockedImageExtensionTypes?.some((imageExtensionType: string) =>\n image.uri?.includes(imageExtensionType),\n );\n\n const imageState =\n isBlockedImageExtension || isBlockedImageMimeType\n ? FileState.NOT_SUPPORTED\n : FileState.UPLOADING;\n\n const newImage: ImageUpload = {\n file: image,\n height: image.height,\n id,\n state: imageState,\n url: image.uri,\n width: image.width,\n };\n\n await Promise.all([\n setImageUploads((prevImageUploads) => prevImageUploads.concat([newImage])),\n setNumberOfUploads((prevNumberOfUploads) => prevNumberOfUploads + 1),\n ]);\n\n if (!isBlockedImageExtension) {\n uploadImage({ newImage });\n }\n };\n\n const messageInputContext = useCreateMessageInputContext({\n appendText,\n asyncIds,\n asyncUploads,\n closeAttachmentPicker,\n cooldownEndsAt,\n fileUploads,\n giphyActive,\n imageUploads,\n inputBoxRef,\n isValidMessage,\n mentionedUsers,\n numberOfUploads,\n onChange,\n onSelectItem,\n openAttachmentPicker,\n openCommandsPicker,\n openFilePicker: pickFile,\n openMentionsPicker,\n pickFile,\n removeFile,\n removeImage,\n resetInput,\n selectedPicker,\n sending,\n sendMessageAsync,\n sendThreadMessageInChannel,\n setAsyncIds,\n setAsyncUploads,\n setFileUploads,\n setGiphyActive,\n setImageUploads,\n setInputBoxRef,\n setMentionedUsers,\n setNumberOfUploads,\n setSendThreadMessageInChannel,\n setShowMoreOptions,\n setText,\n showMoreOptions,\n text,\n thread,\n toggleAttachmentPicker,\n triggerSettings,\n updateMessage,\n uploadFile,\n uploadImage,\n uploadNewFile,\n uploadNewImage,\n ...value,\n sendMessage, // overriding the originally passed in sendMessage\n });\n\n return (\n <MessageInputContext.Provider\n value={messageInputContext as unknown as MessageInputContextValue}\n >\n {children}\n </MessageInputContext.Provider>\n );\n};\n\nexport const useMessageInputContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(\n MessageInputContext,\n ) as unknown as MessageInputContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure you have configured Channel component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#channel`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if MessageInputContext\n * typing is desired while using the HOC withMessageInputContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withMessageInputContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>> => {\n const WithMessageInputContextComponent = (\n props: Omit<P, keyof MessageInputContextValue<StreamChatGenerics>>,\n ) => {\n const messageInputContext = useMessageInputContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...messageInputContext} />;\n };\n WithMessageInputContextComponent.displayName = `WithMessageInputContext${getDisplayName(\n Component,\n )}`;\n return WithMessageInputContextComponent;\n};\n"],"mappings":"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"}
|