@ethora/chat-component-rn 26.5.21 → 26.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +3 -3
  3. package/index.js +1 -1
  4. package/lib/commonjs/components/MainComponents/ChatHeader.js +20 -8
  5. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  6. package/lib/commonjs/components/MainComponents/ChatWrapper.js +17 -0
  7. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  8. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js +62 -0
  9. package/lib/commonjs/components/MainComponents/LanguageSelectorButton.js.map +1 -0
  10. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +253 -0
  11. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -0
  12. package/lib/commonjs/components/MainComponents/MediaMessage.js +7 -1
  13. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  14. package/lib/commonjs/components/MainComponents/RoomList.js +23 -9
  15. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  16. package/lib/commonjs/components/MessageBubble/Message.js +72 -11
  17. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  18. package/lib/commonjs/components/MessageBubble/MessageTranslate.js +160 -0
  19. package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -0
  20. package/lib/commonjs/components/MessageBubble/TranslatedMessageBody.js +59 -0
  21. package/lib/commonjs/components/MessageBubble/TranslatedMessageBody.js.map +1 -0
  22. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +3 -3
  23. package/lib/commonjs/components/UsersList/UsersList.js +3 -1
  24. package/lib/commonjs/components/UsersList/UsersList.js.map +1 -1
  25. package/lib/commonjs/components/VideoCalls/CallButtons.js +159 -0
  26. package/lib/commonjs/components/VideoCalls/CallButtons.js.map +1 -0
  27. package/lib/commonjs/components/VideoCalls/CallIcons.js +328 -0
  28. package/lib/commonjs/components/VideoCalls/CallIcons.js.map +1 -0
  29. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js +550 -0
  30. package/lib/commonjs/components/VideoCalls/VideoCallOverlay.js.map +1 -0
  31. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +636 -0
  32. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -0
  33. package/lib/commonjs/components/VideoCalls/livekitRuntime.js +91 -0
  34. package/lib/commonjs/components/VideoCalls/livekitRuntime.js.map +1 -0
  35. package/lib/commonjs/components/VideoCalls/useCallKeep.js +215 -0
  36. package/lib/commonjs/components/VideoCalls/useCallKeep.js.map +1 -0
  37. package/lib/commonjs/components/styled/AudioMessage.js +91 -33
  38. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  39. package/lib/commonjs/components/styled/RoomListComponents/index.js +13 -1
  40. package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
  41. package/lib/commonjs/components/styled/SendInput.js +83 -49
  42. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  43. package/lib/commonjs/components/styled/StyledComponents.js +9 -4
  44. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  45. package/lib/commonjs/components/styled/StyledInputComponents/Composing.js +2 -0
  46. package/lib/commonjs/components/styled/StyledInputComponents/Composing.js.map +1 -1
  47. package/lib/commonjs/components/styled/VideoMessage.js +110 -26
  48. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  49. package/lib/commonjs/context/xmppProvider.js +10 -3
  50. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  51. package/lib/commonjs/helpers/callLogMessage.js +162 -0
  52. package/lib/commonjs/helpers/callLogMessage.js.map +1 -0
  53. package/lib/commonjs/helpers/callPush.js +61 -0
  54. package/lib/commonjs/helpers/callPush.js.map +1 -0
  55. package/lib/commonjs/helpers/constants/LANGUAGE_OPTIONS.js +24 -12
  56. package/lib/commonjs/helpers/constants/LANGUAGE_OPTIONS.js.map +1 -1
  57. package/lib/commonjs/helpers/createUserNameFromSetUser.js +51 -2
  58. package/lib/commonjs/helpers/createUserNameFromSetUser.js.map +1 -1
  59. package/lib/commonjs/helpers/getDataFromXml.js +19 -1
  60. package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
  61. package/lib/commonjs/helpers/incomingCallFromPush.js +74 -0
  62. package/lib/commonjs/helpers/incomingCallFromPush.js.map +1 -0
  63. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -1
  64. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  65. package/lib/commonjs/helpers/isUnresolvedSenderId.js +32 -0
  66. package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -0
  67. package/lib/commonjs/hooks/useChatSettingState.js +2 -0
  68. package/lib/commonjs/hooks/useChatSettingState.js.map +1 -1
  69. package/lib/commonjs/hooks/useMessageTranslation.js +51 -0
  70. package/lib/commonjs/hooks/useMessageTranslation.js.map +1 -0
  71. package/lib/commonjs/hooks/usePushNotifications.js +13 -3
  72. package/lib/commonjs/hooks/usePushNotifications.js.map +1 -1
  73. package/lib/commonjs/hooks/useSendMessage.js +14 -4
  74. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  75. package/lib/commonjs/i18n/strings.js +1308 -0
  76. package/lib/commonjs/i18n/strings.js.map +1 -0
  77. package/lib/commonjs/i18n/useT.js +60 -0
  78. package/lib/commonjs/i18n/useT.js.map +1 -0
  79. package/lib/commonjs/main.js +44 -0
  80. package/lib/commonjs/main.js.map +1 -1
  81. package/lib/commonjs/networking/api-requests/auth.api.js +81 -52
  82. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  83. package/lib/commonjs/networking/api-requests/push.api.js +34 -5
  84. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  85. package/lib/commonjs/networking/api-requests/rooms.api.js +108 -0
  86. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  87. package/lib/commonjs/networking/callTokenStanza.js +531 -0
  88. package/lib/commonjs/networking/callTokenStanza.js.map +1 -0
  89. package/lib/commonjs/networking/outboundQueue.js.map +1 -1
  90. package/lib/commonjs/networking/stanzaHandlers.js +75 -8
  91. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  92. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js +47 -11
  93. package/lib/commonjs/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  94. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js +2 -1
  95. package/lib/commonjs/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  96. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +42 -5
  97. package/lib/commonjs/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  98. package/lib/commonjs/networking/xmppClient.js +78 -16
  99. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  100. package/lib/commonjs/roomStore/callSlice.js +144 -0
  101. package/lib/commonjs/roomStore/callSlice.js.map +1 -0
  102. package/lib/commonjs/roomStore/chatSettingsSlice.js +8 -2
  103. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  104. package/lib/commonjs/roomStore/index.js +7 -1
  105. package/lib/commonjs/roomStore/index.js.map +1 -1
  106. package/lib/commonjs/roomStore/persistence.js +69 -5
  107. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  108. package/lib/commonjs/roomStore/roomsSlice.js +136 -6
  109. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  110. package/lib/commonjs/utils/translateModePolicy.js +33 -0
  111. package/lib/commonjs/utils/translateModePolicy.js.map +1 -0
  112. package/lib/module/components/MainComponents/ChatHeader.js +20 -8
  113. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  114. package/lib/module/components/MainComponents/ChatWrapper.js +17 -0
  115. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  116. package/lib/module/components/MainComponents/LanguageSelectorButton.js +57 -0
  117. package/lib/module/components/MainComponents/LanguageSelectorButton.js.map +1 -0
  118. package/lib/module/components/MainComponents/LanguageSelectorModal.js +246 -0
  119. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -0
  120. package/lib/module/components/MainComponents/MediaMessage.js +7 -1
  121. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  122. package/lib/module/components/MainComponents/RoomList.js +23 -9
  123. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  124. package/lib/module/components/MessageBubble/Message.js +73 -12
  125. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  126. package/lib/module/components/MessageBubble/MessageTranslate.js +155 -0
  127. package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -0
  128. package/lib/module/components/MessageBubble/TranslatedMessageBody.js +53 -0
  129. package/lib/module/components/MessageBubble/TranslatedMessageBody.js.map +1 -0
  130. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +3 -3
  131. package/lib/module/components/UsersList/UsersList.js +3 -1
  132. package/lib/module/components/UsersList/UsersList.js.map +1 -1
  133. package/lib/module/components/VideoCalls/CallButtons.js +154 -0
  134. package/lib/module/components/VideoCalls/CallButtons.js.map +1 -0
  135. package/lib/module/components/VideoCalls/CallIcons.js +309 -0
  136. package/lib/module/components/VideoCalls/CallIcons.js.map +1 -0
  137. package/lib/module/components/VideoCalls/VideoCallOverlay.js +544 -0
  138. package/lib/module/components/VideoCalls/VideoCallOverlay.js.map +1 -0
  139. package/lib/module/components/VideoCalls/VideoCallSession.js +630 -0
  140. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -0
  141. package/lib/module/components/VideoCalls/livekitRuntime.js +83 -0
  142. package/lib/module/components/VideoCalls/livekitRuntime.js.map +1 -0
  143. package/lib/module/components/VideoCalls/useCallKeep.js +210 -0
  144. package/lib/module/components/VideoCalls/useCallKeep.js.map +1 -0
  145. package/lib/module/components/styled/AudioMessage.js +91 -33
  146. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  147. package/lib/module/components/styled/RoomListComponents/index.js +13 -1
  148. package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
  149. package/lib/module/components/styled/SendInput.js +83 -49
  150. package/lib/module/components/styled/SendInput.js.map +1 -1
  151. package/lib/module/components/styled/StyledComponents.js +9 -4
  152. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  153. package/lib/module/components/styled/StyledInputComponents/Composing.js +2 -0
  154. package/lib/module/components/styled/StyledInputComponents/Composing.js.map +1 -1
  155. package/lib/module/components/styled/VideoMessage.js +111 -27
  156. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  157. package/lib/module/context/xmppProvider.js +11 -4
  158. package/lib/module/context/xmppProvider.js.map +1 -1
  159. package/lib/module/helpers/callLogMessage.js +152 -0
  160. package/lib/module/helpers/callLogMessage.js.map +1 -0
  161. package/lib/module/helpers/callPush.js +55 -0
  162. package/lib/module/helpers/callPush.js.map +1 -0
  163. package/lib/module/helpers/constants/LANGUAGE_OPTIONS.js +24 -12
  164. package/lib/module/helpers/constants/LANGUAGE_OPTIONS.js.map +1 -1
  165. package/lib/module/helpers/createUserNameFromSetUser.js +49 -1
  166. package/lib/module/helpers/createUserNameFromSetUser.js.map +1 -1
  167. package/lib/module/helpers/getDataFromXml.js +20 -1
  168. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  169. package/lib/module/helpers/incomingCallFromPush.js +70 -0
  170. package/lib/module/helpers/incomingCallFromPush.js.map +1 -0
  171. package/lib/module/helpers/insertMessageWithDelimiter.js +13 -1
  172. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  173. package/lib/module/helpers/isUnresolvedSenderId.js +27 -0
  174. package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -0
  175. package/lib/module/hooks/useChatSettingState.js +2 -0
  176. package/lib/module/hooks/useChatSettingState.js.map +1 -1
  177. package/lib/module/hooks/useMessageTranslation.js +46 -0
  178. package/lib/module/hooks/useMessageTranslation.js.map +1 -0
  179. package/lib/module/hooks/usePushNotifications.js +13 -3
  180. package/lib/module/hooks/usePushNotifications.js.map +1 -1
  181. package/lib/module/hooks/useSendMessage.js +15 -5
  182. package/lib/module/hooks/useSendMessage.js.map +1 -1
  183. package/lib/module/i18n/strings.js +1300 -0
  184. package/lib/module/i18n/strings.js.map +1 -0
  185. package/lib/module/i18n/useT.js +55 -0
  186. package/lib/module/i18n/useT.js.map +1 -0
  187. package/lib/module/main.js +7 -1
  188. package/lib/module/main.js.map +1 -1
  189. package/lib/module/networking/api-requests/auth.api.js +80 -51
  190. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  191. package/lib/module/networking/api-requests/push.api.js +35 -5
  192. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  193. package/lib/module/networking/api-requests/rooms.api.js +109 -1
  194. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  195. package/lib/module/networking/callTokenStanza.js +526 -0
  196. package/lib/module/networking/callTokenStanza.js.map +1 -0
  197. package/lib/module/networking/outboundQueue.js.map +1 -1
  198. package/lib/module/networking/stanzaHandlers.js +76 -9
  199. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  200. package/lib/module/networking/xmpp/handleStanzas.xmpp.js +48 -11
  201. package/lib/module/networking/xmpp/handleStanzas.xmpp.js.map +1 -1
  202. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js +1 -1
  203. package/lib/module/networking/xmpp/sendTextMessage.xmpp.js.map +1 -1
  204. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js +43 -5
  205. package/lib/module/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.js.map +1 -1
  206. package/lib/module/networking/xmppClient.js +78 -16
  207. package/lib/module/networking/xmppClient.js.map +1 -1
  208. package/lib/module/roomStore/callSlice.js +130 -0
  209. package/lib/module/roomStore/callSlice.js.map +1 -0
  210. package/lib/module/roomStore/chatSettingsSlice.js +6 -1
  211. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  212. package/lib/module/roomStore/index.js +6 -1
  213. package/lib/module/roomStore/index.js.map +1 -1
  214. package/lib/module/roomStore/persistence.js +69 -5
  215. package/lib/module/roomStore/persistence.js.map +1 -1
  216. package/lib/module/roomStore/roomsSlice.js +134 -5
  217. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  218. package/lib/module/utils/translateModePolicy.js +27 -0
  219. package/lib/module/utils/translateModePolicy.js.map +1 -0
  220. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  221. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  222. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts +12 -0
  223. package/lib/typescript/components/MainComponents/LanguageSelectorButton.d.ts.map +1 -0
  224. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts +31 -0
  225. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -0
  226. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  227. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  228. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  229. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts +44 -0
  230. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -0
  231. package/lib/typescript/components/MessageBubble/TranslatedMessageBody.d.ts +24 -0
  232. package/lib/typescript/components/MessageBubble/TranslatedMessageBody.d.ts.map +1 -0
  233. package/lib/typescript/components/UsersList/UsersList.d.ts.map +1 -1
  234. package/lib/typescript/components/VideoCalls/CallButtons.d.ts +16 -0
  235. package/lib/typescript/components/VideoCalls/CallButtons.d.ts.map +1 -0
  236. package/lib/typescript/components/VideoCalls/CallIcons.d.ts +30 -0
  237. package/lib/typescript/components/VideoCalls/CallIcons.d.ts.map +1 -0
  238. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts +10 -0
  239. package/lib/typescript/components/VideoCalls/VideoCallOverlay.d.ts.map +1 -0
  240. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts +38 -0
  241. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -0
  242. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts +52 -0
  243. package/lib/typescript/components/VideoCalls/livekitRuntime.d.ts.map +1 -0
  244. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts +32 -0
  245. package/lib/typescript/components/VideoCalls/useCallKeep.d.ts.map +1 -0
  246. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  247. package/lib/typescript/components/styled/RoomListComponents/index.d.ts.map +1 -1
  248. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  249. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  250. package/lib/typescript/components/styled/StyledInputComponents/Composing.d.ts.map +1 -1
  251. package/lib/typescript/components/styled/VideoMessage.d.ts +2 -0
  252. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  253. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  254. package/lib/typescript/helpers/callLogMessage.d.ts +34 -0
  255. package/lib/typescript/helpers/callLogMessage.d.ts.map +1 -0
  256. package/lib/typescript/helpers/callPush.d.ts +23 -0
  257. package/lib/typescript/helpers/callPush.d.ts.map +1 -0
  258. package/lib/typescript/helpers/constants/LANGUAGE_OPTIONS.d.ts +14 -0
  259. package/lib/typescript/helpers/constants/LANGUAGE_OPTIONS.d.ts.map +1 -1
  260. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts +33 -1
  261. package/lib/typescript/helpers/createUserNameFromSetUser.d.ts.map +1 -1
  262. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  263. package/lib/typescript/helpers/incomingCallFromPush.d.ts +14 -0
  264. package/lib/typescript/helpers/incomingCallFromPush.d.ts.map +1 -0
  265. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  266. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts +2 -0
  267. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -0
  268. package/lib/typescript/hooks/useChatSettingState.d.ts +2 -1
  269. package/lib/typescript/hooks/useChatSettingState.d.ts.map +1 -1
  270. package/lib/typescript/hooks/useMessageTranslation.d.ts +25 -0
  271. package/lib/typescript/hooks/useMessageTranslation.d.ts.map +1 -0
  272. package/lib/typescript/hooks/usePushNotifications.d.ts.map +1 -1
  273. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  274. package/lib/typescript/i18n/strings.d.ts +16 -0
  275. package/lib/typescript/i18n/strings.d.ts.map +1 -0
  276. package/lib/typescript/i18n/useT.d.ts +34 -0
  277. package/lib/typescript/i18n/useT.d.ts.map +1 -0
  278. package/lib/typescript/main.d.ts +6 -1
  279. package/lib/typescript/main.d.ts.map +1 -1
  280. package/lib/typescript/networking/api-requests/auth.api.d.ts +27 -1
  281. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  282. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  283. package/lib/typescript/networking/api-requests/rooms.api.d.ts +3 -0
  284. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  285. package/lib/typescript/networking/callTokenStanza.d.ts +14 -0
  286. package/lib/typescript/networking/callTokenStanza.d.ts.map +1 -0
  287. package/lib/typescript/networking/outboundQueue.d.ts +1 -0
  288. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -1
  289. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  290. package/lib/typescript/networking/xmpp/handleStanzas.xmpp.d.ts.map +1 -1
  291. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts +10 -0
  292. package/lib/typescript/networking/xmpp/sendTextMessage.xmpp.d.ts.map +1 -1
  293. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts +16 -1
  294. package/lib/typescript/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.d.ts.map +1 -1
  295. package/lib/typescript/networking/xmppClient.d.ts +1 -1
  296. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  297. package/lib/typescript/roomStore/callSlice.d.ts +39 -0
  298. package/lib/typescript/roomStore/callSlice.d.ts.map +1 -0
  299. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +10 -1
  300. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  301. package/lib/typescript/roomStore/index.d.ts +4 -0
  302. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  303. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  304. package/lib/typescript/roomStore/roomsSlice.d.ts +6 -1
  305. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  306. package/lib/typescript/types/models/language.model.d.ts +1 -1
  307. package/lib/typescript/types/models/language.model.d.ts.map +1 -1
  308. package/lib/typescript/types/models/message.model.d.ts +7 -0
  309. package/lib/typescript/types/models/message.model.d.ts.map +1 -1
  310. package/lib/typescript/types/types.d.ts +135 -1
  311. package/lib/typescript/types/types.d.ts.map +1 -1
  312. package/lib/typescript/utils/translateModePolicy.d.ts +20 -0
  313. package/lib/typescript/utils/translateModePolicy.d.ts.map +1 -0
  314. package/package.json +20 -4
  315. package/src/components/MainComponents/ChatHeader.tsx +30 -9
  316. package/src/components/MainComponents/ChatWrapper.tsx +15 -0
  317. package/src/components/MainComponents/LanguageSelectorButton.tsx +53 -0
  318. package/src/components/MainComponents/LanguageSelectorModal.tsx +276 -0
  319. package/src/components/MainComponents/MediaMessage.tsx +5 -0
  320. package/src/components/MainComponents/RoomList.tsx +27 -9
  321. package/src/components/MessageBubble/Message.tsx +109 -17
  322. package/src/components/MessageBubble/MessageTranslate.tsx +182 -0
  323. package/src/components/MessageBubble/TranslatedMessageBody.tsx +59 -0
  324. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +3 -3
  325. package/src/components/UsersList/UsersList.tsx +3 -1
  326. package/src/components/VideoCalls/CallButtons.tsx +171 -0
  327. package/src/components/VideoCalls/CallIcons.tsx +246 -0
  328. package/src/components/VideoCalls/VideoCallOverlay.tsx +627 -0
  329. package/src/components/VideoCalls/VideoCallSession.tsx +675 -0
  330. package/src/components/VideoCalls/livekitRuntime.ts +100 -0
  331. package/src/components/VideoCalls/useCallKeep.ts +252 -0
  332. package/src/components/styled/AudioMessage.tsx +97 -37
  333. package/src/components/styled/RoomListComponents/index.tsx +15 -3
  334. package/src/components/styled/SendInput.tsx +94 -51
  335. package/src/components/styled/StyledComponents.ts +9 -6
  336. package/src/components/styled/StyledInputComponents/Composing.tsx +7 -1
  337. package/src/components/styled/VideoMessage.tsx +114 -20
  338. package/src/context/xmppProvider.tsx +14 -1
  339. package/src/helpers/callLogMessage.ts +174 -0
  340. package/src/helpers/callPush.ts +90 -0
  341. package/src/helpers/constants/LANGUAGE_OPTIONS.ts +20 -5
  342. package/src/helpers/createUserNameFromSetUser.ts +68 -2
  343. package/src/helpers/getDataFromXml.ts +40 -4
  344. package/src/helpers/incomingCallFromPush.ts +83 -0
  345. package/src/helpers/insertMessageWithDelimiter.ts +27 -9
  346. package/src/helpers/isUnresolvedSenderId.ts +25 -0
  347. package/src/hooks/useChatSettingState.tsx +4 -0
  348. package/src/hooks/useMessageTranslation.ts +70 -0
  349. package/src/hooks/usePushNotifications.ts +15 -3
  350. package/src/hooks/useSendMessage.tsx +18 -5
  351. package/src/i18n/strings.ts +1322 -0
  352. package/src/i18n/useT.ts +56 -0
  353. package/src/main.ts +18 -1
  354. package/src/networking/api-requests/auth.api.ts +79 -44
  355. package/src/networking/api-requests/push.api.ts +39 -8
  356. package/src/networking/api-requests/rooms.api.ts +109 -1
  357. package/src/networking/callTokenStanza.ts +636 -0
  358. package/src/networking/outboundQueue.ts +1 -0
  359. package/src/networking/stanzaHandlers.ts +74 -15
  360. package/src/networking/xmpp/handleStanzas.xmpp.ts +52 -11
  361. package/src/networking/xmpp/sendTextMessage.xmpp.ts +1 -1
  362. package/src/networking/xmpp/sendTextMessageWithTranslateTag.xmpp.ts +41 -5
  363. package/src/networking/xmppClient.ts +97 -28
  364. package/src/roomStore/callSlice.ts +190 -0
  365. package/src/roomStore/chatSettingsSlice.ts +16 -0
  366. package/src/roomStore/index.ts +5 -0
  367. package/src/roomStore/persistence.ts +103 -3
  368. package/src/roomStore/roomsSlice.ts +149 -4
  369. package/src/types/models/language.model.ts +17 -1
  370. package/src/types/models/message.model.ts +9 -0
  371. package/src/types/types.ts +142 -2
  372. package/src/utils/translateModePolicy.ts +31 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Optional-dependency bridge for the LiveKit React Native SDK.
3
+ *
4
+ * Calls are opt-in (`config.videoCalls.enabled`), and the LiveKit packages
5
+ * are NATIVE modules: they need a dev build, they cannot run in Expo Go,
6
+ * and they add camera/microphone entitlements to whatever app installs
7
+ * them. Most hosts embedding this chat SDK don't want calls at all, so
8
+ * `@livekit/react-native` and `@livekit/react-native-webrtc` are declared
9
+ * as OPTIONAL peer dependencies.
10
+ *
11
+ * That means a plain top-level `import ... from '@livekit/react-native'`
12
+ * is not allowed anywhere in the SDK: Metro resolves imports at bundle
13
+ * time, so a chat-only host would fail to build over a feature it never
14
+ * switched on. Everything call-related goes through `loadLiveKit()`, which
15
+ * requires the modules lazily at call time and returns null when they
16
+ * aren't installed. Callers surface that as a friendly config error rather
17
+ * than a redbox.
18
+ */
19
+ export interface LiveKitRuntime {
20
+ /** livekit-client `Room` constructor. */
21
+ Room: any;
22
+ /** livekit-client `RoomEvent` enum. */
23
+ RoomEvent: any;
24
+ /** livekit-client `Track` enum (Track.Source.Camera etc). */
25
+ Track: any;
26
+ /** livekit-client `ConnectionState` enum. */
27
+ ConnectionState: any;
28
+ /** RN `<VideoTrack trackRef={...} />` renderer. */
29
+ VideoTrack: any;
30
+ /** Native audio session control (routing, speaker, focus). */
31
+ AudioSession: any;
32
+ /** Installs the WebRTC globals livekit-client expects. */
33
+ registerGlobals: () => void;
34
+ }
35
+ export declare const isLiveKitAvailable: () => boolean;
36
+ /**
37
+ * Resolve the LiveKit runtime, or null when the optional native packages
38
+ * aren't installed in the host app. Result is memoised (including the
39
+ * failure) so a missing dependency doesn't re-throw on every render.
40
+ */
41
+ export declare const loadLiveKit: () => LiveKitRuntime | null;
42
+ /**
43
+ * `registerGlobals()` patches RTCPeerConnection / MediaStream / navigator
44
+ * .mediaDevices onto the JS global scope so livekit-client (written for
45
+ * browsers) works on React Native. It must run exactly once per JS
46
+ * context, before the first `new Room()`. Calling it repeatedly is
47
+ * harmless in current versions but has thrown in older ones, so guard it.
48
+ */
49
+ export declare const ensureLiveKitGlobals: (runtime: LiveKitRuntime) => void;
50
+ /** Reset memoised state. Test seam only. */
51
+ export declare const __resetLiveKitRuntimeForTests: () => void;
52
+ //# sourceMappingURL=livekitRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekitRuntime.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoCalls/livekitRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,IAAI,EAAE,GAAG,CAAC;IACV,uCAAuC;IACvC,SAAS,EAAE,GAAG,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,GAAG,CAAC;IACX,6CAA6C;IAC7C,eAAe,EAAE,GAAG,CAAC;IACrB,mDAAmD;IACnD,UAAU,EAAE,GAAG,CAAC;IAChB,8DAA8D;IAC9D,YAAY,EAAE,GAAG,CAAC;IAClB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAID,eAAO,MAAM,kBAAkB,QAAO,OAAiC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAO,cAAc,GAAG,IA6B/C,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,cAAc,KAAG,IAQ9D,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,6BAA6B,QAAO,IAGhD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Native incoming-call UI (Android ConnectionService / iOS CallKit) via
3
+ * the optional `react-native-callkeep` package.
4
+ *
5
+ * Why optional: CallKeep pulls a telecom-framework dependency into the
6
+ * host app and, on iOS, is only half a solution without PushKit. It is
7
+ * loaded lazily exactly like the LiveKit packages, so hosts that don't
8
+ * install it get the plain in-app ring screen and nothing breaks.
9
+ *
10
+ * Platform reality, stated plainly:
11
+ * - Android: full value. A ConnectionService call shows the system
12
+ * incoming-call screen over the lock screen.
13
+ * - iOS: this only fires while the app is running. A CallKit screen from
14
+ * a killed app requires a VoIP push over PushKit, which needs a
15
+ * separate Apple VoIP certificate and a separate send path on the
16
+ * backend (not FCM). Until that exists, iOS falls back to the regular
17
+ * data push and the in-app ring screen.
18
+ */
19
+ interface CallKeepModule {
20
+ setup: (options: any) => Promise<void>;
21
+ displayIncomingCall: (uuid: string, handle: string, localizedCallerName?: string, handleType?: string, hasVideo?: boolean) => void;
22
+ endCall: (uuid: string) => void;
23
+ endAllCalls: () => void;
24
+ addEventListener: (event: string, handler: (payload: any) => void) => void;
25
+ removeEventListener: (event: string) => void;
26
+ setAvailable?: (available: boolean) => void;
27
+ backToForeground?: () => void;
28
+ }
29
+ export declare const loadCallKeep: () => CallKeepModule | null;
30
+ export declare const useCallKeep: () => void;
31
+ export {};
32
+ //# sourceMappingURL=useCallKeep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCallKeep.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoCalls/useCallKeep.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,cAAc;IACtB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,EAAE,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;IAC3E,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAID,eAAO,MAAM,YAAY,QAAO,cAAc,GAAG,IA4BhD,CAAC;AAwBF,eAAO,MAAM,WAAW,QAAO,IA0J9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/AudioMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAyB3D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAqRF,QAAA,MAAM,YAAY,GAAI,4CAKnB,iBAAiB,sBAqanB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"AudioMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/AudioMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AA8B3D,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAqRF,QAAA,MAAM,YAAY,GAAI,4CAKnB,iBAAiB,sBA4dnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/styled/RoomListComponents/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAKL,SAAS,EACV,MAAM,cAAc,CAAC;AAItB,eAAO,MAAM,SAAS,GAAI,iCAIvB;IACD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAUA,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,aAAa;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,sBAIhE,CAAC;AAKF,eAAO,MAAM,QAAQ,GAAI,eAEtB;IACD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAEA,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,eAE7B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAA2D,CAAC;AAG7D,eAAO,MAAM,kBAAkB,GAAI,eAEhC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAA8D,CAAC;AAGhE,eAAO,MAAM,QAAQ,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAEnE,CAAC;AAGF,eAAO,MAAM,QAAQ,GAAI,UAAU;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,sBAElD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAEtE,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,kBAGvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB,sBAA0D,CAAC;AAE5D,eAAO,MAAM,QAAQ,yBAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/styled/RoomListComponents/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAKL,SAAS,EACV,MAAM,cAAc,CAAC;AAItB,eAAO,MAAM,SAAS,GAAI,iCAIvB;IACD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAUA,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,aAAa;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,sBAIhE,CAAC;AAKF,eAAO,MAAM,QAAQ,GAAI,eAEtB;IACD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAEA,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,eAE7B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAA2D,CAAC;AAG7D,eAAO,MAAM,kBAAkB,GAAI,eAEhC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAA8D,CAAC;AAGhE,eAAO,MAAM,QAAQ,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAEnE,CAAC;AAMF,eAAO,MAAM,QAAQ,GAAI,UAAU;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,sBAIlD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAItE,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,kBAGvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB,sBAA0D,CAAC;AAE5D,eAAO,MAAM,QAAQ,yBAAyC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SendInput.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/SendInput.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,EAAE,OAAO,EAAa,MAAM,mBAAmB,CAAC;AAwDvD,UAAU,cAAc;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAykBvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"SendInput.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/SendInput.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,EAAE,OAAO,EAAa,MAAM,mBAAmB,CAAC;AAgEvD,UAAU,cAAc;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4mBvC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StyledComponents.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/StyledComponents.ts"],"names":[],"mappings":"AAAA,cAAc;AAQd,eAAO,MAAM,aAAa,iPAMzB,CAAC;AAEF,eAAO,MAAM,eAAe,iPAM3B,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAU/B,CAAC;AAEF,eAAO,MAAM,eAAe;iBACb,OAAO;gBACR,OAAO;;iBADN,OAAO;gBACR,OAAO;oBAYpB,CAAC;AAEF,eAAO,MAAM,0BAA0B,mYAYtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,iPASnC,CAAC;AAEF,eAAO,MAAM,wBAAwB;eACxB,MAAM;iBACJ,MAAM;;eADR,MAAM;iBACJ,MAAM;oBAQpB,CAAC;AAGF,eAAO,MAAM,WAAW,iPAQvB,CAAC;AAEF,eAAO,MAAM,cAAc,6PAI1B,CAAC;AAEF,eAAO,MAAM,YAAY,iPAIxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iPAI5B,CAAC;AAEF,eAAO,MAAM,OAAO;YAAyB,OAAO;;YAAP,OAAO;oBAQnD,CAAC;AAEF,eAAO,MAAM,WAAW,iPAGvB,CAAC;AAEF,eAAO,MAAM,QAAQ,iPAGpB,CAAC;AAGF,eAAO,MAAM,cAAc,iPAO1B,CAAC;AAEF,eAAO,MAAM,YAAY,2PAMxB,CAAC;AAEF,eAAO,MAAM,UAAU,mYAGtB,CAAC;AAEF,eAAO,MAAM,UAAU,mYAOtB,CAAC;AAEF,eAAO,MAAM,cAAc,iPAE1B,CAAC;AAGF,eAAO,MAAM,YAAY;cACb,MAAM;WACT,MAAM;iBACA,OAAO;;cAFV,MAAM;WACT,MAAM;iBACA,OAAO;oBAUrB,CAAC;AAEF,eAAO,MAAM,WAAW;WAAyB,MAAM;;WAAN,MAAM;oBAKtD,CAAC;AAEF,eAAO,MAAM,YAAY,mYAUxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iPAI5B,CAAC;AAEF,eAAO,MAAM,YAAY;WAAwB,MAAM;YAAU,MAAM;;WAAtB,MAAM;YAAU,MAAM;oBAItE,CAAC;AAEF,eAAO,MAAM,OAAO,iPAWnB,CAAC;AAEF,eAAO,MAAM,iBAAiB;aACnB,OAAO;YACR,MAAM;eACH,MAAM;;aAFR,OAAO;YACR,MAAM;eACH,MAAM;oBAKlB,CAAC;AAEF,eAAO,MAAM,SAAS,2PAErB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAK/B,CAAC;AAEF,eAAO,MAAM,WAAW,iPAKvB,CAAC;AAEF,eAAO,MAAM,eAAe,iPAG3B,CAAC;AAEF,eAAO,MAAM,IAAI,iPAIhB,CAAC;AAEF,eAAO,MAAM,YAAY;iBAA8B,MAAM;;iBAAN,MAAM;oBAK5D,CAAC;AAEF,eAAO,MAAM,aAAa,mYAQzB,CAAC;AAEF,eAAO,MAAM,OAAO;cACR,MAAM;WACT,MAAM;iBACA,OAAO;;cAFV,MAAM;WACT,MAAM;iBACA,OAAO;oBAWrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAS/B,CAAC;AAEF,eAAO,MAAM,aAAa;YAAyB,OAAO;;YAAP,OAAO;oBAazD,CAAC"}
1
+ {"version":3,"file":"StyledComponents.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/StyledComponents.ts"],"names":[],"mappings":"AAAA,cAAc;AAQd,eAAO,MAAM,aAAa,iPAMzB,CAAC;AAEF,eAAO,MAAM,eAAe,iPAM3B,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAU/B,CAAC;AAEF,eAAO,MAAM,eAAe;iBACb,OAAO;gBACR,OAAO;;iBADN,OAAO;gBACR,OAAO;oBAepB,CAAC;AAEF,eAAO,MAAM,0BAA0B,mYAYtC,CAAC;AAEF,eAAO,MAAM,uBAAuB,iPASnC,CAAC;AAEF,eAAO,MAAM,wBAAwB;eACxB,MAAM;iBACJ,MAAM;;eADR,MAAM;iBACJ,MAAM;oBAQpB,CAAC;AAGF,eAAO,MAAM,WAAW,iPAQvB,CAAC;AAEF,eAAO,MAAM,cAAc,6PAI1B,CAAC;AAEF,eAAO,MAAM,YAAY,iPAIxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iPAI5B,CAAC;AAEF,eAAO,MAAM,OAAO;YAAyB,OAAO;;YAAP,OAAO;oBAQnD,CAAC;AAEF,eAAO,MAAM,WAAW,iPAGvB,CAAC;AAEF,eAAO,MAAM,QAAQ,iPAGpB,CAAC;AAGF,eAAO,MAAM,cAAc,iPAO1B,CAAC;AAEF,eAAO,MAAM,YAAY,2PAMxB,CAAC;AAEF,eAAO,MAAM,UAAU,mYAGtB,CAAC;AAEF,eAAO,MAAM,UAAU,mYAOtB,CAAC;AAEF,eAAO,MAAM,cAAc,iPAE1B,CAAC;AAGF,eAAO,MAAM,YAAY;cACb,MAAM;WACT,MAAM;iBACA,OAAO;;cAFV,MAAM;WACT,MAAM;iBACA,OAAO;oBAUrB,CAAC;AAEF,eAAO,MAAM,WAAW;WAAyB,MAAM;;WAAN,MAAM;oBAKtD,CAAC;AAEF,eAAO,MAAM,YAAY,mYAUxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,iPAI5B,CAAC;AAEF,eAAO,MAAM,YAAY;WAAwB,MAAM;YAAU,MAAM;;WAAtB,MAAM;YAAU,MAAM;oBAItE,CAAC;AAEF,eAAO,MAAM,OAAO,iPAWnB,CAAC;AAEF,eAAO,MAAM,iBAAiB;aACnB,OAAO;YACR,MAAM;eACH,MAAM;;aAFR,OAAO;YACR,MAAM;eACH,MAAM;oBAKlB,CAAC;AAEF,eAAO,MAAM,SAAS,2PAErB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAK/B,CAAC;AAEF,eAAO,MAAM,WAAW,iPAKvB,CAAC;AAEF,eAAO,MAAM,eAAe,iPAG3B,CAAC;AAEF,eAAO,MAAM,IAAI,iPAIhB,CAAC;AAEF,eAAO,MAAM,YAAY;iBAA8B,MAAM;;iBAAN,MAAM;oBAK5D,CAAC;AAEF,eAAO,MAAM,aAAa,mYAQzB,CAAC;AAEF,eAAO,MAAM,OAAO;cACR,MAAM;WACT,MAAM;iBACA,OAAO;;cAFV,MAAM;WACT,MAAM;iBACA,OAAO;oBAWrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,iPAS/B,CAAC;AAEF,eAAO,MAAM,aAAa;YAAyB,OAAO;;YAAP,OAAO;oBAazD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Composing.d.ts","sourceRoot":"","sources":["../../../../../src/components/styled/StyledInputComponents/Composing.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAqB,MAAM,OAAO,CAAC;AAIrD,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAGD,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA4DjC,CAAC;AA0BF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"Composing.d.ts","sourceRoot":"","sources":["../../../../../src/components/styled/StyledInputComponents/Composing.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAqB,MAAM,OAAO,CAAC;AAIrD,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAGD,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAkEjC,CAAC;AA0BF,eAAe,SAAS,CAAC"}
@@ -3,6 +3,8 @@ interface CustomMessageVideoProps {
3
3
  fileName: string;
4
4
  fileURL: string;
5
5
  mimetype: string;
6
+ /** The backend-generated poster frame (message.locationPreview). */
7
+ previewURL?: string;
6
8
  }
7
9
  declare const CustomMessageVideo: React.FC<CustomMessageVideoProps>;
8
10
  export default CustomMessageVideo;
@@ -1 +1 @@
1
- {"version":3,"file":"VideoMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/VideoMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgEzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"VideoMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/styled/VideoMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAgBnD,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqID,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAyBzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"xmppProvider.d.ts","sourceRoot":"","sources":["../../../src/context/xmppProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAQV,MAAM,OAAO,CAAC;AAGf,OAAO,UAEN,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,EACP,uBAAuB,EAEvB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAkCxB,UAAU,QAAQ;IAChB,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,qBAAqB,KACjC,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAID,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAIjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkrBpD,CAAC;AAEF,eAAO,MAAM,aAAa,uBAkBzB,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,cAAc,SAE7B"}
1
+ {"version":3,"file":"xmppProvider.d.ts","sourceRoot":"","sources":["../../../src/context/xmppProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,SAAS,EAQV,MAAM,OAAO,CAAC;AAIf,OAAO,UAEN,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,EACP,uBAAuB,EAEvB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAkCxB,UAAU,QAAQ;IAChB,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,qBAAqB,KACjC,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAID,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IAIjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8rBpD,CAAC;AAEF,eAAO,MAAM,aAAa,uBAkBzB,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,cAAc,SAE7B"}
@@ -0,0 +1,34 @@
1
+ import { IMessage } from '../types/types';
2
+ export interface CallLogMeta {
3
+ callId: string;
4
+ direction: 'outgoing' | 'incoming';
5
+ durationMs: number;
6
+ missed: boolean;
7
+ kind: 'audio' | 'video';
8
+ }
9
+ export declare const isCallLogMessage: (message: unknown) => boolean;
10
+ export declare const callStateHasLogData: (attrs: Record<string, any>) => boolean;
11
+ export declare const formatCallDuration: (ms: number) => string;
12
+ export declare const transformCallLogMessage: (message: IMessage, selfXmppUsername: string) => IMessage;
13
+ export declare const buildLocalCallLogMessage: (params: {
14
+ callId: string;
15
+ direction: "outgoing" | "incoming";
16
+ durationMs: number;
17
+ kind: "audio" | "video";
18
+ selfXmppUsername: string;
19
+ }) => IMessage;
20
+ /**
21
+ * The label for a call-log entry, built at RENDER time from the callLog
22
+ * meta rather than read off `message.body`.
23
+ *
24
+ * transformCallLogMessage bakes an English sentence into `body` the moment
25
+ * the stanza arrives, which freezes the language: switch to French and
26
+ * every call log you already received stays English forever, because the
27
+ * text is data by then, not a rendering. The meta (direction/duration/
28
+ * missed) is the actual fact, the sentence is a view of it, so it belongs
29
+ * where the view is. `body` stays as the fallback for entries received
30
+ * before this existed, and for the notification/room-list preview paths
31
+ * that only have the raw message.
32
+ */
33
+ export declare const formatCallLogLabel: (callLog: CallLogMeta | undefined, t: (key: string, vars?: Record<string, string | number>) => string, fallbackBody?: string) => string;
34
+ //# sourceMappingURL=callLogMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callLogMessage.d.ts","sourceRoot":"","sources":["../../../src/helpers/callLogMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW1C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,OAGnD,CAAC;AAMF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAQhE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,IAAI,MAAM,KAAG,MAO/C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,QAAQ,EACjB,kBAAkB,MAAM,KACvB,QAqCF,CAAC;AAQF,eAAO,MAAM,wBAAwB,GAAI,QAAQ;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,KAAG,QA8BH,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,WAAW,GAAG,SAAS,EAChC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,MAAM,EAClE,qBAAiB,KAChB,MAuBF,CAAC"}
@@ -0,0 +1,23 @@
1
+ export interface ParsedCallPush {
2
+ callId: string | null;
3
+ /** LiveKit token, if the push carried one (lets us ring + accept offline). */
4
+ token: string | null;
5
+ kind: 'audio' | 'video';
6
+ /** Bare room name (JID localpart) the call belongs to. */
7
+ roomBareName: string | null;
8
+ /** Raw room reference from the payload (full JID or bare name). */
9
+ roomRef: string | null;
10
+ /** Display name for the ring screen (caller). */
11
+ callerName: string | null;
12
+ /** Caller's xmpp localpart, when provided. */
13
+ callerXmppUsername: string | null;
14
+ }
15
+ /**
16
+ * True when a push `data` payload represents an incoming call. Matches on an
17
+ * explicit call marker (`type`/`pushType`/`category`/`event` === "call"-ish)
18
+ * or on a callId paired with a call-specific field, so a normal message push
19
+ * is never misread as a call.
20
+ */
21
+ export declare const isCallPush: (data: Record<string, any> | null | undefined) => boolean;
22
+ export declare const parseCallPush: (data: Record<string, any> | null | undefined) => ParsedCallPush;
23
+ //# sourceMappingURL=callPush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callPush.d.ts","sourceRoot":"","sources":["../../../src/helpers/callPush.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mEAAmE;IACnE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iDAAiD;IACjD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAYD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,KAC3C,OAwBF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,KAC3C,cAmBF,CAAC"}
@@ -3,6 +3,20 @@ type LanguageOption = {
3
3
  name: string;
4
4
  id: Iso639_1Codes;
5
5
  };
6
+ /**
7
+ * Languages the in-chat globe picker offers.
8
+ *
9
+ * Names are AUTONYMS (each language written in itself), which is what
10
+ * every mainstream language picker does: a reader who only speaks French
11
+ * can find "Français" but not "French". Ids carry the region because the
12
+ * deployment's readers are Canadian and US, and the region is forwarded to
13
+ * the translation service so it can tell fr-CA from fr-FR. Base-language
14
+ * lookups (i18n tables, Translate-button visibility) strip it via
15
+ * toBaseLanguage, so both forms interoperate.
16
+ *
17
+ * Commented-out entries still have full string tables in i18n/strings.ts,
18
+ * they're just not offered to readers in the current deployment.
19
+ */
6
20
  export declare const LANGUAGE_OPTIONS: LanguageOption[];
7
21
  export {};
8
22
  //# sourceMappingURL=LANGUAGE_OPTIONS.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LANGUAGE_OPTIONS.d.ts","sourceRoot":"","sources":["../../../../src/helpers/constants/LANGUAGE_OPTIONS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,aAAa,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAM5C,CAAC"}
1
+ {"version":3,"file":"LANGUAGE_OPTIONS.d.ts","sourceRoot":"","sources":["../../../../src/helpers/constants/LANGUAGE_OPTIONS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,aAAa,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAO5C,CAAC"}
@@ -1,3 +1,35 @@
1
- import { RoomMember } from '../types/types';
1
+ import { IMessage, RoomMember } from '../types/types';
2
+ /**
3
+ * Cache-only lookup. Returns the literal "Deleted User" as a MISS sentinel
4
+ * when `usersSet` has no entry for `userId` yet, callers that want a
5
+ * better fallback (e.g. resolveSenderDisplayName below) check for that
6
+ * exact string rather than treating it as a real name.
7
+ */
2
8
  export declare const createUserNameFromSetUser: (usersSet: Record<string, RoomMember>, userId: string) => string;
9
+ /**
10
+ * The sender's display name, resolved WITHOUT depending on `usersSet`
11
+ * having already been hydrated.
12
+ *
13
+ * `usersSet` is populated by a separate fetch (member list / presence) that
14
+ * can still be in flight when a message arrives, most reliably right after
15
+ * reconnect, when a burst of catch-up messages can land before that fetch
16
+ * resolves. A cache-only lookup shows the literal "Deleted User" for every
17
+ * one of those messages, even though the sender is very much not deleted.
18
+ * On mobile this is the common case, not the rare one: every return from
19
+ * background reconnects.
20
+ *
21
+ * The message itself already carries the sender's name on the wire: every
22
+ * client that sends through this SDK stamps `senderFirstName` /
23
+ * `senderLastName` / `fullName` onto the outgoing stanza's `<data>` element
24
+ * (see sendTextMessage.xmpp.ts / sendTextMessageWithTranslateTag.xmpp.ts),
25
+ * and createMessageFromXml spreads those onto the top-level message object.
26
+ * Preferring that over the cache removes the timing dependency entirely for
27
+ * the common case, and "Deleted User" becomes what it should have always
28
+ * been: a rare last resort, not "usersSet hasn't loaded yet".
29
+ */
30
+ export declare const resolveSenderDisplayName: (message: Pick<IMessage, "user"> & {
31
+ fullName?: string;
32
+ senderFirstName?: string;
33
+ senderLastName?: string;
34
+ }, usersSet: Record<string, RoomMember>) => string;
3
35
  //# sourceMappingURL=createUserNameFromSetUser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createUserNameFromSetUser.d.ts","sourceRoot":"","sources":["../../../src/helpers/createUserNameFromSetUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,MAAM,KACb,MASF,CAAC"}
1
+ {"version":3,"file":"createUserNameFromSetUser.d.ts","sourceRoot":"","sources":["../../../src/helpers/createUserNameFromSetUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,MAAM,KACb,MAaF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,EACD,UAAU,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,KACnC,MA0BF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDataFromXml.d.ts","sourceRoot":"","sources":["../../../src/helpers/getDataFromXml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAatD,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC5B;AACD,eAAO,MAAM,cAAc,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAoDjF,CAAC"}
1
+ {"version":3,"file":"getDataFromXml.d.ts","sourceRoot":"","sources":["../../../src/helpers/getDataFromXml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA6CtD,UAAU,OAAO;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC5B;AACD,eAAO,MAAM,cAAc,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAwDjF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Turn an incoming-call push into a ringing call.
3
+ *
4
+ * On mobile the XMPP socket dies whenever the OS backgrounds or kills the
5
+ * app, and the `call-token` stanza that normally opens the ring screen is
6
+ * lost with it. The backend also delivers the call as a data push, so this
7
+ * is the path every call takes when the app was not in the foreground.
8
+ *
9
+ * Returns true when the payload WAS a call push (whether or not it could
10
+ * be rung), so the caller knows to stop and not also show it as a chat
11
+ * notification. A user should never get a "new message: call-state" toast.
12
+ */
13
+ export declare const handleCallPush: (data: Record<string, any> | null | undefined) => boolean;
14
+ //# sourceMappingURL=incomingCallFromPush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incomingCallFromPush.d.ts","sourceRoot":"","sources":["../../../src/helpers/incomingCallFromPush.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,KAC3C,OAgEF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"insertMessageWithDelimiter.d.ts","sourceRoot":"","sources":["../../../src/helpers/insertMessageWithDelimiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB1C,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EACjC,OAAO,EAAE,QAAQ,EACjB,mBAAmB,EAAE;IAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;CAAE,GAAG,IAAI,QAiFvD"}
1
+ {"version":3,"file":"insertMessageWithDelimiter.d.ts","sourceRoot":"","sources":["../../../src/helpers/insertMessageWithDelimiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB1C,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EACjC,OAAO,EAAE,QAAQ,EACjB,mBAAmB,EAAE;IAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;CAAE,GAAG,IAAI,QAmGvD"}
@@ -0,0 +1,2 @@
1
+ export declare const isUnresolvedSenderId: (name?: string) => boolean;
2
+ //# sourceMappingURL=isUnresolvedSenderId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUnresolvedSenderId.d.ts","sourceRoot":"","sources":["../../../src/helpers/isUnresolvedSenderId.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,OAMpD,CAAC"}
@@ -5,7 +5,8 @@ export declare const useChatSettingState: () => {
5
5
  config: import("../main").IConfig | undefined;
6
6
  deleteModal: import("../types/types").DeleteModal | undefined;
7
7
  selectedUser: import("../main").IUser | undefined;
8
- langSource: import("../types/types").Iso639_1Codes | undefined;
8
+ langSource: import("../main").Iso639_1Codes | undefined;
9
+ translateMode: import("../main").TranslateMode | undefined;
9
10
  client: any;
10
11
  };
11
12
  //# sourceMappingURL=useChatSettingState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChatSettingState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChatSettingState.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;;CAkC/B,CAAC"}
1
+ {"version":3,"file":"useChatSettingState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChatSettingState.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;;;;;;;;;;CAsC/B,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { IMessage } from '../types/types';
2
+ export interface MessageTranslationState {
3
+ /** False when the message is already in the reader's language, or no
4
+ * translation is available — render the plain body, no quote. */
5
+ hasTranslation: boolean;
6
+ originalText: string;
7
+ /** Translation when hasTranslation, else the original — always safe to
8
+ * render directly. */
9
+ displayText: string;
10
+ }
11
+ /**
12
+ * Translation for ONE message, into the reader's language only. Ported
13
+ * verbatim from the web SDK (src/hooks/useMessageTranslation.ts).
14
+ *
15
+ * Pure and synchronous — no HTTP call. Every translation this client ever
16
+ * shows arrives over XMPP already: the sender tags outgoing messages with
17
+ * `<translate source="xx"/>` (see sendTextMessageWithTranslateTag) and
18
+ * whatever process attaches actual translations does so server-side,
19
+ * landing on `message.translations` when the stanza is parsed (see
20
+ * getDataFromXml). This function only ever reads that — it never calls a
21
+ * translation service itself, so there's nothing to fail when one isn't
22
+ * reachable, and nothing to await.
23
+ */
24
+ export declare const useMessageTranslation: (message: Pick<IMessage, "body" | "langSource" | "translations">, readerLocale?: string, enabled?: boolean) => MessageTranslationState;
25
+ //# sourceMappingURL=useMessageTranslation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageTranslation.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMessageTranslation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,WAAW,uBAAuB;IACtC;qEACiE;IACjE,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB;0BACsB;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,SAAS,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,cAAc,CAAC,EAC/D,eAAe,MAAM,EACrB,iBAAc,KACb,uBAmCF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePushNotifications.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePushNotifications.ts"],"names":[],"mappings":"AAcA,wBAAgB,oBAAoB;;;EAwGnC"}
1
+ {"version":3,"file":"usePushNotifications.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePushNotifications.ts"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB;;;EAmHnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSendMessage.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,gBAAgB,CAAC;AAwCxD,eAAO,MAAM,cAAc,GAAI,kBAAkB,OAAO;2BAgCzC,MAAM,iBACA,MAAM,YACX,OAAO,cACL,OAAO,gBACL,MAAM,eAOP,MAAM;sBAuMb,GAAG,QACH,MAAM,iBACG,MAAM,YACZ,OAAO,cACL,OAAO,gBACL,MAAM,eACN,MAAM;+BA+WL,MAAM,mBAAmB,MAAM;6BAvC9B,MAAM;kDAwEb,MAAM,KAAG,OAAO;CAoB7B,CAAC"}
1
+ {"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSendMessage.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,gBAAgB,CAAC;AAwCxD,eAAO,MAAM,cAAc,GAAI,kBAAkB,OAAO;2BAwCzC,MAAM,iBACA,MAAM,YACX,OAAO,cACL,OAAO,gBACL,MAAM,eAOP,MAAM;sBA4Mb,GAAG,QACH,MAAM,iBACG,MAAM,YACZ,OAAO,cACL,OAAO,gBACL,MAAM,eACN,MAAM;+BA+WL,MAAM,mBAAmB,MAAM;6BAvC9B,MAAM;kDAwEb,MAAM,KAAG,OAAO;CAoB7B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type UiStringTable = Record<string, string>;
2
+ export declare const BUILTIN_STRINGS: Record<string, UiStringTable>;
3
+ export declare const DEFAULT_UI_LANGUAGE = "en";
4
+ /** Reduce a BCP-47 locale ("fr-CA") to its base language ("fr"), lowercased. */
5
+ export declare const toBaseLanguage: (locale?: string | null) => string;
6
+ /**
7
+ * Build the effective string table for a locale: the built-in table for that
8
+ * base language (falling back to English for any missing key), with host
9
+ * overrides from `config.i18n.strings` merged on top.
10
+ */
11
+ export declare const resolveStringTable: (locale?: string | null, overrides?: UiStringTable | null) => UiStringTable;
12
+ /** Replace `{name}` placeholders with values from `vars`. */
13
+ export declare const interpolate: (template: string, vars?: Record<string, string | number>) => string;
14
+ /** One-shot translate for non-React code (helpers). */
15
+ export declare const translateKey: (key: string, locale?: string | null, overrides?: UiStringTable | null, vars?: Record<string, string | number>) => string;
16
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../src/i18n/strings.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAouCnD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAOzD,CAAC;AAEF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,gFAAgF;AAChF,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,GAAG,IAAI,KAAG,MAIf,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,GAAG,IAAI,EACtB,YAAY,aAAa,GAAG,IAAI,KAC/B,aAQF,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,EAChB,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACrC,MAKF,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,EACX,SAAS,MAAM,GAAG,IAAI,EACtB,YAAY,aAAa,GAAG,IAAI,EAChC,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACrC,MAGF,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * UI translation hook. Reads the active locale + host overrides from
3
+ * `config.i18n` and returns a `t(key, vars?)` function.
4
+ *
5
+ * const t = useT();
6
+ * <SearchInput placeholder={t('search.placeholder')} />
7
+ * <span>{t('presence.onlineCount', { count })}</span>
8
+ *
9
+ * Locale resolves to the base language for captions (region is only used for
10
+ * message translation). Missing keys fall back to English, then to the raw
11
+ * key, so nothing ever renders blank.
12
+ *
13
+ * When the host doesn't set `config.i18n.locale` explicitly, this falls
14
+ * back to `langSource` - the same reader-language state the in-chat globe
15
+ * picker (LanguageSelectorButton) and `config.translates.readerLocale`
16
+ * drive (see useChatWrapperInit's resolveExternalReaderLocaleLangSource).
17
+ * So picking a language in the chat changes both message translations AND
18
+ * static captions together, as one language switch, unless the host is
19
+ * explicitly managing UI locale separately via `config.i18n.locale`.
20
+ */
21
+ /**
22
+ * The locale the UI is currently in, resolved by the same rule useT uses
23
+ * (explicit `config.i18n.locale`, else the reader's `langSource`).
24
+ *
25
+ * For anything Intl already localises - dates, numbers, relative times -
26
+ * where you need the locale itself rather than a string from the table.
27
+ * Without it components reach for a hardcoded 'en-US' and quietly render
28
+ * American dates under a Chinese UI (DateLabel did exactly that).
29
+ * Undefined means "no explicit choice", which Intl reads as the browser's
30
+ * own locale - the right default.
31
+ */
32
+ export declare const useUiLocale: () => string | undefined;
33
+ export declare const useT: () => (key: string, vars?: Record<string, string | number>) => string;
34
+ //# sourceMappingURL=useT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useT.d.ts","sourceRoot":"","sources":["../../../src/i18n/useT.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,QAAO,MAAM,GAAG,SAGvC,CAAC;AAEF,eAAO,MAAM,IAAI,cAWP,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAG,MAI1D,CAAC"}
@@ -28,5 +28,10 @@ export { logoutService } from './hooks/useLogout';
28
28
  export { useQRCodeChat, handleQRChatId } from './hooks/useQRCodeChatHandler';
29
29
  export { resendMessage } from './utils/resendMessage';
30
30
  export { useChatFonts } from './hooks/useChatFonts';
31
- export type { IConfig, IRoom, IMessage, IUser, User, ConfigUser, MessageProps, TypographyConfig, RNFontSource, ChatTextStyle, } from './types/types';
31
+ export { useT, useUiLocale } from './i18n/useT';
32
+ export { BUILTIN_STRINGS, DEFAULT_UI_LANGUAGE, resolveStringTable, toBaseLanguage, translateKey, } from './i18n/strings';
33
+ export type { UiStringTable } from './i18n/strings';
34
+ export type { IConfig, IRoom, IMessage, IUser, User, ConfigUser, MessageProps, TypographyConfig, RNFontSource, ChatTextStyle, VideoCallsConfig, VideoCallIcons, } from './types/types';
35
+ export type { Iso639_1Codes } from './types/models/language.model';
36
+ export type { TranslateMode } from './utils/translateModePolicy';
32
37
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,gCAAgC,CAAC;AAGxC,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,YAAY,EACV,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,gCAAgC,CAAC;AAGxC,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD,YAAY,EACV,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
@@ -9,7 +9,33 @@ export declare function registerSocial(idToken: string, accessToken: string, aut
9
9
  export declare function checkEmailExist(email: string): Promise<import("axios").AxiosResponse<any, any, {}>>;
10
10
  export declare function loginViaJwt(clientToken: string): Promise<User>;
11
11
  export declare function uploadFile(formData: FormData): Promise<import("axios").AxiosResponse<any, any, {}>>;
12
- export declare function uploadFileViaFetch(formData: FormData): Promise<{
12
+ /**
13
+ * Multipart upload of a picked file, sent over `XMLHttpRequest`.
14
+ *
15
+ * The transport matters here, and both obvious alternatives are wrong:
16
+ *
17
+ * - `fetch`. Expo SDK 54 shipped a WinterCG-compliant fetch and SDK 57
18
+ * installs it as the GLOBAL fetch. It accepts only `Blob` / `File` /
19
+ * string form parts, so React Native's own `{ uri, type, name }` part
20
+ * — which is exactly what an image/document picker hands us — is
21
+ * rejected with "Unsupported FormDataPart implementation", surfacing
22
+ * to the caller as ERR_NETWORK. A host can set
23
+ * `EXPO_PUBLIC_USE_RN_FETCH=1`, but that opts their whole app out of
24
+ * Expo's fetch just to satisfy this SDK; not a cost we get to impose
25
+ * on a consumer.
26
+ * - axios. It forces its own `Content-Type: multipart/form-data`
27
+ * WITHOUT a boundary, so the server mis-parses one file as many and
28
+ * answers HTTP 413 TOO_MANY_FILES (bug #10 — this is why the upload
29
+ * was moved off axios in the first place).
30
+ *
31
+ * `XMLHttpRequest` avoids both. Expo replaces `fetch`, not `XHR`, so the
32
+ * request still goes through React Native's native networking module,
33
+ * which understands the `{ uri, type, name }` part, streams the file
34
+ * straight from disk (a 50MB video never lands in JS memory) and writes
35
+ * its own `Content-Type` with a valid boundary — which is precisely why
36
+ * we must NOT set that header ourselves below.
37
+ */
38
+ export declare function uploadFileMultipart(formData: FormData): Promise<{
13
39
  data: any;
14
40
  }>;
15
41
  //# sourceMappingURL=auth.api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/auth.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAezC,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;UAEtD,IAAI;kBACI,MAAM;WACb,MAAM;aAahB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAoB,wDAYhC;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,wDAapB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,wDAM5C;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;AAuBD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,wDAa5C;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAmDnF"}
1
+ {"version":3,"file":"auth.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/auth.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAezC,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;UAEtD,IAAI;kBACI,MAAM;WACb,MAAM;aAahB;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAoB,wDAYhC;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,wDAapB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,wDAM5C;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;AAuBD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,wDAa5C;AAID;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CA0D9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"push.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/push.api.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
1
+ {"version":3,"file":"push.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/push.api.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -14,6 +14,9 @@ export declare function postReportRoom(data: PostReportRoom): Promise<any>;
14
14
  export declare function postAddRoomMember(data: PostAddRoomMember): Promise<RoomMember[]>;
15
15
  export declare function deleteRoomMember(data: DeleteRoomMember): Promise<any>;
16
16
  export declare function deleteRoom(name: string): Promise<any>;
17
+ export declare function createChatCall(chatName: string, options?: {
18
+ kind?: 'audio' | 'video';
19
+ }): Promise<void>;
17
20
  export declare function clearRoomsRestCache(): void;
18
21
  export type { ApiRoom };
19
22
  //# sourceMappingURL=rooms.api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rooms.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/rooms.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAqGnI;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAqC9D;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAatE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,gBAa5C;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,gBAkBxD;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBvB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,gBAkB5D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,gBAc5C;AAED,wBAAgB,mBAAmB,SAIlC;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"rooms.api.d.ts","sourceRoot":"","sources":["../../../../src/networking/api-requests/rooms.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAgKnI;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAqC9D;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAatE;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,gBAa5C;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,gBAkBxD;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBvB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,gBAkB5D;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,gBAc5C;AAqBD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAgB,mBAAmB,SAIlC;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Element } from 'ltx';
2
+ export declare const onCallTokenMessage: (stanza: Element) => boolean;
3
+ export type CallSignalState = 'ended' | 'declined' | 'cancelled' | 'rejected';
4
+ export declare const sendCallStateSignal: (state: CallSignalState, options?: {
5
+ peerXmppUsername?: string | null;
6
+ callId?: string | null;
7
+ roomBareName?: string | null;
8
+ }) => void;
9
+ export declare const sendCallInviteSignal: (kind: "audio" | "video", options: {
10
+ peerXmppUsername: string;
11
+ roomBareName: string;
12
+ callId?: string | null;
13
+ }) => void;
14
+ //# sourceMappingURL=callTokenStanza.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callTokenStanza.d.ts","sourceRoot":"","sources":["../../../src/networking/callTokenStanza.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAgU9B,eAAO,MAAM,kBAAkB,GAAI,QAAQ,OAAO,KAAG,OA8MpD,CAAC;AAYF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAE9E,eAAO,MAAM,mBAAmB,GAC9B,OAAO,eAAe,EACtB,UAAU;IACR,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,KACA,IA0CF,CAAC;AAUF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,OAAO,GAAG,OAAO,EACvB,SAAS;IACP,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,KACA,IA6BF,CAAC"}
@@ -27,6 +27,7 @@
27
27
  */
28
28
  export interface OutboundQueueClient {
29
29
  sendMessage: (...args: any[]) => any;
30
+ sendTextMessageWithTranslateTagStanza: (...args: any[]) => any;
30
31
  sendMediaMessageStanza: (...args: any[]) => any;
31
32
  }
32
33
  export interface QueuedSend {
@@ -1 +1 @@
1
- {"version":3,"file":"outboundQueue.d.ts","sourceRoot":"","sources":["../../../src/networking/outboundQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACrC,sBAAsB,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACjD;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC7C;AAID,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,MAAM,GACV,IAAI,CAgBN;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
1
+ {"version":3,"file":"outboundQueue.d.ts","sourceRoot":"","sources":["../../../src/networking/outboundQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACrC,qCAAqC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAC/D,sBAAsB,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CACjD;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC7C;AAID,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,MAAM,GACV,IAAI,CAgBN;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"stanzaHandlers.d.ts","sourceRoot":"","sources":["../../../src/networking/stanzaHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AA2B9B,QAAA,MAAM,iBAAiB,GAAU,QAAQ,OAAO,oDAyF/C,CAAC;AAEF,QAAA,MAAM,eAAe,GAAU,QAAQ,OAAO,kBAiB7C,CAAC;AAEF,QAAA,MAAM,aAAa,GAAU,QAAQ,OAAO,kBAiB3C,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAU,QAAQ,GAAG,kBAiE1C,CAAC;AAEF,QAAA,MAAM,eAAe,GAAU,QAAQ,OAAO,EAAE,aAAa,MAAM,kBA8ClE,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,OAAO,GAAG,GAAG,SAU9C,CAAC;AAEF,QAAA,MAAM,YAAY,GAAU,QAAQ,OAAO,EAAE,QAAQ,GAAG,kBAoBvD,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ,OAAO,SAiDpC,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,QAAQ,OAAO,SAGrC,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAI,QAAQ,OAAO,EAAE,OAAO,GAAG,SAG3D,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,SAGnD,CAAC;AAEF,QAAA,MAAM,cAAc,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,SAsDjD,CAAC;AAKF,QAAA,MAAM,cAAc,GAAI,SAAS,OAAO,EAAE,QAAQ,GAAG,SAAO,CAAC;AAC7D,QAAA,MAAM,iBAAiB,GAAI,SAAS,OAAO,SAAO,CAAC;AACnD,QAAA,MAAM,iBAAiB,GAAI,SAAS,OAAO,SAAO,CAAC;AACnD,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,SAAO,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"stanzaHandlers.d.ts","sourceRoot":"","sources":["../../../src/networking/stanzaHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AA6B9B,QAAA,MAAM,iBAAiB,GAAU,QAAQ,OAAO,oDAgH/C,CAAC;AAEF,QAAA,MAAM,eAAe,GAAU,QAAQ,OAAO,kBAiB7C,CAAC;AAEF,QAAA,MAAM,aAAa,GAAU,QAAQ,OAAO,kBAiB3C,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAU,QAAQ,GAAG,kBAoF1C,CAAC;AAEF,QAAA,MAAM,eAAe,GAAU,QAAQ,OAAO,EAAE,aAAa,MAAM,kBA8ClE,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,OAAO,GAAG,GAAG,SAU9C,CAAC;AAEF,QAAA,MAAM,YAAY,GAAU,QAAQ,OAAO,EAAE,QAAQ,GAAG,kBAoBvD,CAAC;AAEF,QAAA,MAAM,YAAY,GAAI,QAAQ,OAAO,SAgEpC,CAAC;AAEF,QAAA,MAAM,aAAa,GAAI,QAAQ,OAAO,SAGrC,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAI,QAAQ,OAAO,EAAE,OAAO,GAAG,SAG3D,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,SAGnD,CAAC;AAEF,QAAA,MAAM,cAAc,GAAI,QAAQ,OAAO,EAAE,MAAM,GAAG,SAsDjD,CAAC;AAKF,QAAA,MAAM,cAAc,GAAI,SAAS,OAAO,EAAE,QAAQ,GAAG,SAAO,CAAC;AAC7D,QAAA,MAAM,iBAAiB,GAAI,SAAS,OAAO,SAAO,CAAC;AACnD,QAAA,MAAM,iBAAiB,GAAI,SAAS,OAAO,SAAO,CAAC;AACnD,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,SAAO,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,CAAC"}