stream-chat-react-native-core 5.32.0-beta.2 → 5.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +7 -1
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  4. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  5. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js +18 -3
  6. package/lib/commonjs/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  7. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +4 -17
  8. package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  9. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  10. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +9 -6
  11. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  12. package/lib/commonjs/components/Message/MessageSimple/MessageEditedTimestamp.js +4 -5
  13. package/lib/commonjs/components/Message/MessageSimple/MessageEditedTimestamp.js.map +1 -1
  14. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +8 -8
  15. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  16. package/lib/commonjs/components/Message/MessageSimple/MessageTimestamp.js +21 -18
  17. package/lib/commonjs/components/Message/MessageSimple/MessageTimestamp.js.map +1 -1
  18. package/lib/commonjs/components/MessageList/InlineDateSeparator.js +14 -12
  19. package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
  20. package/lib/commonjs/components/MessageList/MessageList.js +4 -28
  21. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  22. package/lib/commonjs/components/MessageList/MessageSystem.js +14 -8
  23. package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
  24. package/lib/commonjs/components/MessageList/StickyHeader.js +36 -0
  25. package/lib/commonjs/components/MessageList/StickyHeader.js.map +1 -0
  26. package/lib/commonjs/components/index.js +11 -0
  27. package/lib/commonjs/components/index.js.map +1 -1
  28. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  29. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  30. package/lib/commonjs/hooks/useStreami18n.js +1 -1
  31. package/lib/commonjs/i18n/en.json +7 -0
  32. package/lib/commonjs/i18n/es.json +7 -0
  33. package/lib/commonjs/i18n/fr.json +7 -0
  34. package/lib/commonjs/i18n/he.json +7 -0
  35. package/lib/commonjs/i18n/hi.json +7 -0
  36. package/lib/commonjs/i18n/it.json +7 -0
  37. package/lib/commonjs/i18n/ja.json +7 -0
  38. package/lib/commonjs/i18n/ko.json +7 -0
  39. package/lib/commonjs/i18n/nl.json +7 -0
  40. package/lib/commonjs/i18n/pt-br.json +7 -0
  41. package/lib/commonjs/i18n/ru.json +7 -0
  42. package/lib/commonjs/i18n/tr.json +7 -0
  43. package/lib/commonjs/index.js +2 -1
  44. package/lib/commonjs/index.js.map +1 -1
  45. package/lib/commonjs/utils/{Streami18n.js → i18n/Streami18n.js} +61 -68
  46. package/lib/commonjs/utils/i18n/Streami18n.js.map +1 -0
  47. package/lib/commonjs/utils/i18n/calendarFormats.js +104 -0
  48. package/lib/commonjs/utils/i18n/calendarFormats.js.map +1 -0
  49. package/lib/commonjs/utils/i18n/getDateString.js +47 -0
  50. package/lib/commonjs/utils/i18n/getDateString.js.map +1 -0
  51. package/lib/commonjs/utils/i18n/predefinedFormatters.js +40 -0
  52. package/lib/commonjs/utils/i18n/predefinedFormatters.js.map +1 -0
  53. package/lib/commonjs/version.json +1 -1
  54. package/lib/module/components/Channel/Channel.js +7 -1
  55. package/lib/module/components/Channel/Channel.js.map +1 -1
  56. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  57. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  58. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js +18 -3
  59. package/lib/module/components/ChannelPreview/ChannelPreviewStatus.js.map +1 -1
  60. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +4 -17
  61. package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
  62. package/lib/module/components/Chat/Chat.js.map +1 -1
  63. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +9 -6
  64. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  65. package/lib/module/components/Message/MessageSimple/MessageEditedTimestamp.js +4 -5
  66. package/lib/module/components/Message/MessageSimple/MessageEditedTimestamp.js.map +1 -1
  67. package/lib/module/components/Message/MessageSimple/MessageFooter.js +8 -8
  68. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  69. package/lib/module/components/Message/MessageSimple/MessageTimestamp.js +21 -18
  70. package/lib/module/components/Message/MessageSimple/MessageTimestamp.js.map +1 -1
  71. package/lib/module/components/MessageList/InlineDateSeparator.js +14 -12
  72. package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
  73. package/lib/module/components/MessageList/MessageList.js +4 -28
  74. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  75. package/lib/module/components/MessageList/MessageSystem.js +14 -8
  76. package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
  77. package/lib/module/components/MessageList/StickyHeader.js +36 -0
  78. package/lib/module/components/MessageList/StickyHeader.js.map +1 -0
  79. package/lib/module/components/index.js +11 -0
  80. package/lib/module/components/index.js.map +1 -1
  81. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  82. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  83. package/lib/module/hooks/useStreami18n.js +1 -1
  84. package/lib/module/i18n/en.json +7 -0
  85. package/lib/module/i18n/es.json +7 -0
  86. package/lib/module/i18n/fr.json +7 -0
  87. package/lib/module/i18n/he.json +7 -0
  88. package/lib/module/i18n/hi.json +7 -0
  89. package/lib/module/i18n/it.json +7 -0
  90. package/lib/module/i18n/ja.json +7 -0
  91. package/lib/module/i18n/ko.json +7 -0
  92. package/lib/module/i18n/nl.json +7 -0
  93. package/lib/module/i18n/pt-br.json +7 -0
  94. package/lib/module/i18n/ru.json +7 -0
  95. package/lib/module/i18n/tr.json +7 -0
  96. package/lib/module/index.js +2 -1
  97. package/lib/module/index.js.map +1 -1
  98. package/lib/module/utils/{Streami18n.js → i18n/Streami18n.js} +61 -68
  99. package/lib/module/utils/i18n/Streami18n.js.map +1 -0
  100. package/lib/module/utils/i18n/calendarFormats.js +104 -0
  101. package/lib/module/utils/i18n/calendarFormats.js.map +1 -0
  102. package/lib/module/utils/i18n/getDateString.js +47 -0
  103. package/lib/module/utils/i18n/getDateString.js.map +1 -0
  104. package/lib/module/utils/i18n/predefinedFormatters.js +40 -0
  105. package/lib/module/utils/i18n/predefinedFormatters.js.map +1 -0
  106. package/lib/module/version.json +1 -1
  107. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  108. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  109. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  110. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  111. package/lib/typescript/components/ChannelPreview/ChannelPreviewStatus.d.ts.map +1 -1
  112. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts +1 -1
  113. package/lib/typescript/components/ChannelPreview/hooks/useLatestMessagePreview.d.ts.map +1 -1
  114. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  115. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  116. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts.map +1 -1
  117. package/lib/typescript/components/Message/MessageSimple/MessageEditedTimestamp.d.ts +2 -2
  118. package/lib/typescript/components/Message/MessageSimple/MessageEditedTimestamp.d.ts.map +1 -1
  119. package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
  120. package/lib/typescript/components/Message/MessageSimple/MessageTimestamp.d.ts +2 -13
  121. package/lib/typescript/components/Message/MessageSimple/MessageTimestamp.d.ts.map +1 -1
  122. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  123. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  124. package/lib/typescript/components/MessageList/DateHeader.d.ts +1 -1
  125. package/lib/typescript/components/MessageList/DateHeader.d.ts.map +1 -1
  126. package/lib/typescript/components/MessageList/InlineDateSeparator.d.ts +7 -1
  127. package/lib/typescript/components/MessageList/InlineDateSeparator.d.ts.map +1 -1
  128. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -2
  129. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  130. package/lib/typescript/components/MessageList/MessageSystem.d.ts +3 -0
  131. package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
  132. package/lib/typescript/components/MessageList/StickyHeader.d.ts +18 -0
  133. package/lib/typescript/components/MessageList/StickyHeader.d.ts.map +1 -0
  134. package/lib/typescript/components/index.d.ts +1 -0
  135. package/lib/typescript/components/index.d.ts.map +1 -1
  136. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +2 -3
  137. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  138. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  139. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -1
  140. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +6 -0
  141. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  142. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +1 -1
  143. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
  144. package/lib/typescript/hooks/useStreami18n.d.ts +1 -1
  145. package/lib/typescript/hooks/useStreami18n.d.ts.map +1 -1
  146. package/lib/typescript/i18n/en.json +7 -0
  147. package/lib/typescript/i18n/es.json +7 -0
  148. package/lib/typescript/i18n/fr.json +7 -0
  149. package/lib/typescript/i18n/he.json +7 -0
  150. package/lib/typescript/i18n/hi.json +7 -0
  151. package/lib/typescript/i18n/it.json +7 -0
  152. package/lib/typescript/i18n/ja.json +7 -0
  153. package/lib/typescript/i18n/ko.json +7 -0
  154. package/lib/typescript/i18n/nl.json +7 -0
  155. package/lib/typescript/i18n/pt-br.json +7 -0
  156. package/lib/typescript/i18n/ru.json +7 -0
  157. package/lib/typescript/i18n/tr.json +7 -0
  158. package/lib/typescript/index.d.ts +3 -1
  159. package/lib/typescript/index.d.ts.map +1 -1
  160. package/lib/typescript/utils/{Streami18n.d.ts → i18n/Streami18n.d.ts} +16 -5
  161. package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -0
  162. package/lib/typescript/utils/i18n/calendarFormats.d.ts +14 -0
  163. package/lib/typescript/utils/i18n/calendarFormats.d.ts.map +1 -0
  164. package/lib/typescript/utils/i18n/getDateString.d.ts +16 -0
  165. package/lib/typescript/utils/i18n/getDateString.d.ts.map +1 -0
  166. package/lib/typescript/utils/i18n/predefinedFormatters.d.ts +13 -0
  167. package/lib/typescript/utils/i18n/predefinedFormatters.d.ts.map +1 -0
  168. package/package.json +3 -2
  169. package/src/components/Attachment/__tests__/Giphy.test.js +1 -1
  170. package/src/components/Channel/Channel.tsx +6 -1
  171. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  172. package/src/components/ChannelPreview/ChannelPreviewStatus.tsx +16 -2
  173. package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +7 -28
  174. package/src/components/Chat/Chat.tsx +1 -1
  175. package/src/components/Chat/__tests__/Chat.test.js +1 -1
  176. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +13 -3
  177. package/src/components/Message/MessageSimple/MessageEditedTimestamp.tsx +10 -5
  178. package/src/components/Message/MessageSimple/MessageFooter.tsx +10 -7
  179. package/src/components/Message/MessageSimple/MessageTimestamp.tsx +20 -29
  180. package/src/components/Message/MessageSimple/__tests__/MessageStatus.test.js +1 -1
  181. package/src/components/MessageList/DateHeader.tsx +1 -1
  182. package/src/components/MessageList/InlineDateSeparator.tsx +20 -15
  183. package/src/components/MessageList/MessageList.tsx +4 -31
  184. package/src/components/MessageList/MessageSystem.tsx +20 -8
  185. package/src/components/MessageList/StickyHeader.tsx +42 -0
  186. package/src/components/MessageList/__tests__/MessageSystem.test.js +8 -3
  187. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +1 -1
  188. package/src/components/MessageList/__tests__/TypingIndicator.test.js +1 -1
  189. package/src/components/Thread/__tests__/Thread.test.js +1 -1
  190. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +1 -1
  191. package/src/components/index.ts +1 -0
  192. package/src/contexts/channelContext/ChannelContext.tsx +2 -1
  193. package/src/contexts/messagesContext/MessagesContext.tsx +6 -0
  194. package/src/contexts/overlayContext/OverlayContext.tsx +1 -1
  195. package/src/hooks/useStreami18n.ts +1 -1
  196. package/src/i18n/en.json +7 -0
  197. package/src/i18n/es.json +7 -0
  198. package/src/i18n/fr.json +7 -0
  199. package/src/i18n/he.json +7 -0
  200. package/src/i18n/hi.json +7 -0
  201. package/src/i18n/it.json +7 -0
  202. package/src/i18n/ja.json +7 -0
  203. package/src/i18n/ko.json +7 -0
  204. package/src/i18n/nl.json +7 -0
  205. package/src/i18n/pt-br.json +7 -0
  206. package/src/i18n/ru.json +7 -0
  207. package/src/i18n/tr.json +7 -0
  208. package/src/index.ts +4 -1
  209. package/src/utils/__tests__/Streami18n.test.js +23 -1
  210. package/src/utils/{Streami18n.ts → i18n/Streami18n.ts} +60 -71
  211. package/src/utils/i18n/calendarFormats.ts +110 -0
  212. package/src/utils/i18n/getDateString.ts +76 -0
  213. package/src/utils/i18n/predefinedFormatters.ts +63 -0
  214. package/src/version.json +1 -1
  215. package/lib/commonjs/utils/Streami18n.js.map +0 -1
  216. package/lib/commonjs/utils/getDateString.js +0 -31
  217. package/lib/commonjs/utils/getDateString.js.map +0 -1
  218. package/lib/module/utils/Streami18n.js.map +0 -1
  219. package/lib/module/utils/getDateString.js +0 -31
  220. package/lib/module/utils/getDateString.js.map +0 -1
  221. package/lib/typescript/utils/Streami18n.d.ts.map +0 -1
  222. package/lib/typescript/utils/getDateString.d.ts +0 -30
  223. package/lib/typescript/utils/getDateString.d.ts.map +0 -1
  224. package/src/utils/getDateString.ts +0 -67
@@ -74,6 +74,13 @@
74
74
  "Video": "Vídeo",
75
75
  "You": "Você",
76
76
  "You can't send messages in this channel": "Você não pode enviar mensagens neste canal",
77
+ "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Ontem]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Amanhã]\",\"nextWeek\":\"dddd [às] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}",
78
+ "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
79
+ "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}",
80
+ "timestamp/MessageEditedTimestamp": "{{ timestamp | timestampFormatter(calendar: true) }}",
81
+ "timestamp/MessageSystem": "{{ timestamp | timestampFormatter(calendar: true) }}",
82
+ "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(format: LT) }}",
83
+ "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
77
84
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} e mais {{ nonSelfUserLength }} pessoa(s) estão digitando",
78
85
  "{{ index }} of {{ photoLength }}": "{{ index }} de {{ photoLength }}",
79
86
  "{{ replyCount }} Replies": "{{ replyCount }} Respostas",
package/src/i18n/ru.json CHANGED
@@ -74,6 +74,13 @@
74
74
  "Video": "видео",
75
75
  "You": "Вы",
76
76
  "You can't send messages in this channel": "Вы не можете отправлять сообщения в этот канал",
77
+ "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Вчера]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Завтра]\",\"nextWeek\":\"dddd [в] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}",
78
+ "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
79
+ "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}",
80
+ "timestamp/MessageEditedTimestamp": "{{ timestamp | timestampFormatter(calendar: true) }}",
81
+ "timestamp/MessageSystem": "{{ timestamp | timestampFormatter(calendar: true) }}",
82
+ "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(format: LT) }}",
83
+ "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
77
84
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} и еще {{ nonSelfUserLength }} пишут",
78
85
  "{{ index }} of {{ photoLength }}": "{{ index }} из {{ photoLength }}",
79
86
  "{{ replyCount }} Replies": "{{ replyCount }} Ответов",
package/src/i18n/tr.json CHANGED
@@ -74,6 +74,13 @@
74
74
  "Video": "Video",
75
75
  "You": "Sen",
76
76
  "You can't send messages in this channel": "Bu konuşmaya mesaj gönderemezsiniz",
77
+ "timestamp/ChannelPreviewStatus": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: {\"lastDay\":\"[Dün]\",\"lastWeek\":\"dddd\",\"nextDay\":\"[Yarın]\",\"nextWeek\":\"dddd [saat] LT\",\"sameDay\":\"LT\",\"sameElse\":\"L\"}) }}",
78
+ "timestamp/ImageGalleryHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
79
+ "timestamp/InlineDateSeparator": "{{ timestamp | timestampFormatter(calendar: true) }}",
80
+ "timestamp/MessageEditedTimestamp": "{{ timestamp | timestampFormatter(calendar: true) }}",
81
+ "timestamp/MessageSystem": "{{ timestamp | timestampFormatter(calendar: true) }}",
82
+ "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(format: LT) }}",
83
+ "timestamp/StickyHeader": "{{ timestamp | timestampFormatter(calendar: true) }}",
77
84
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "{{ firstUser }} ve {{ nonSelfUserLength }} kişi daha yazıyor",
78
85
  "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
79
86
  "{{ replyCount }} Replies": "{{ replyCount }} Cevap",
package/src/index.ts CHANGED
@@ -1,3 +1,6 @@
1
+ /** i18next polyfill to handle intl format for pluralization. For more info see https://www.i18next.com/misc/json-format#i-18-next-json-v4 */
2
+ import 'intl-pluralrules';
3
+
1
4
  export * from './components';
2
5
  export * from './hooks';
3
6
  export { registerNativeHandlers, NetInfo, iOS14RefreshGallerySelection } from './native';
@@ -9,7 +12,7 @@ export * from './icons';
9
12
  export * from './types/types';
10
13
 
11
14
  export * from './utils/patchMessageTextCommand';
12
- export * from './utils/Streami18n';
15
+ export * from './utils/i18n/Streami18n';
13
16
  export * from './utils/utils';
14
17
  export * from './utils/StreamChatRN';
15
18
 
@@ -4,7 +4,7 @@ import localeData from 'dayjs/plugin/localeData';
4
4
 
5
5
  import frTranslations from '../../i18n/fr.json';
6
6
  import nlTranslations from '../../i18n/nl.json';
7
- import { Streami18n } from '../Streami18n';
7
+ import { Streami18n } from '../i18n/Streami18n';
8
8
 
9
9
  Dayjs.extend(localeData);
10
10
 
@@ -183,3 +183,25 @@ describe('setLanguage - switch to french', () => {
183
183
  }
184
184
  });
185
185
  });
186
+
187
+ describe('formatters property', () => {
188
+ it('contains the default timestampFormatter', () => {
189
+ expect(new Streami18n().formatters.timestampFormatter).toBeDefined();
190
+ });
191
+ it('allows to override the default timestampFormatter', async () => {
192
+ const i18n = new Streami18n({
193
+ formatters: { timestampFormatter: () => () => 'custom' },
194
+ translationsForLanguage: { abc: '{{ value | timestampFormatter }}' },
195
+ });
196
+ await i18n.init();
197
+ expect(i18n.t('abc')).toBe('custom');
198
+ });
199
+ it('allows to add new custom formatter', async () => {
200
+ const i18n = new Streami18n({
201
+ formatters: { customFormatter: () => () => 'custom' },
202
+ translationsForLanguage: { abc: '{{ value | customFormatter }}' },
203
+ });
204
+ await i18n.init();
205
+ expect(i18n.t('abc')).toBe('custom');
206
+ });
207
+ });
@@ -8,19 +8,26 @@ import i18n, { FallbackLng, TFunction } from 'i18next';
8
8
 
9
9
  import type moment from 'moment';
10
10
 
11
- import type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';
12
- import enTranslations from '../i18n/en.json';
13
- import esTranslations from '../i18n/es.json';
14
- import frTranslations from '../i18n/fr.json';
15
- import heTranslations from '../i18n/he.json';
16
- import hiTranslations from '../i18n/hi.json';
17
- import itTranslations from '../i18n/it.json';
18
- import jaTranslations from '../i18n/ja.json';
19
- import koTranslations from '../i18n/ko.json';
20
- import nlTranslations from '../i18n/nl.json';
21
- import ptBRTranslations from '../i18n/pt-br.json';
22
- import ruTranslations from '../i18n/ru.json';
23
- import trTranslations from '../i18n/tr.json';
11
+ import { calendarFormats } from './calendarFormats';
12
+ import {
13
+ CustomFormatters,
14
+ PredefinedFormatters,
15
+ predefinedFormatters,
16
+ } from './predefinedFormatters';
17
+
18
+ import type { TDateTimeParser } from '../../contexts/translationContext/TranslationContext';
19
+ import enTranslations from '../../i18n/en.json';
20
+ import esTranslations from '../../i18n/es.json';
21
+ import frTranslations from '../../i18n/fr.json';
22
+ import heTranslations from '../../i18n/he.json';
23
+ import hiTranslations from '../../i18n/hi.json';
24
+ import itTranslations from '../../i18n/it.json';
25
+ import jaTranslations from '../../i18n/ja.json';
26
+ import koTranslations from '../../i18n/ko.json';
27
+ import nlTranslations from '../../i18n/nl.json';
28
+ import ptBRTranslations from '../../i18n/pt-br.json';
29
+ import ruTranslations from '../../i18n/ru.json';
30
+ import trTranslations from '../../i18n/tr.json';
24
31
 
25
32
  import 'dayjs/locale/es';
26
33
  import 'dayjs/locale/fr';
@@ -41,7 +48,7 @@ import 'dayjs/locale/tr';
41
48
  */
42
49
  import 'dayjs/locale/en';
43
50
 
44
- import type { DefaultStreamChatGenerics } from '../types/types';
51
+ import type { DefaultStreamChatGenerics } from '../../types/types';
45
52
 
46
53
  const defaultNS = 'translation';
47
54
  const defaultLng = 'en';
@@ -49,6 +56,7 @@ const defaultLng = 'en';
49
56
  Dayjs.extend(updateLocale);
50
57
 
51
58
  Dayjs.updateLocale('en', {
59
+ calendar: calendarFormats.en,
52
60
  format: {
53
61
  L: 'DD/MM/YYYY',
54
62
  LL: 'D MMMM YYYY',
@@ -59,37 +67,18 @@ Dayjs.updateLocale('en', {
59
67
  },
60
68
  });
61
69
 
62
- Dayjs.updateLocale('nl', {
63
- calendar: {
64
- lastDay: '[gisteren om] LT',
65
- lastWeek: '[afgelopen] dddd [om] LT',
66
- nextDay: '[morgen om] LT',
67
- nextWeek: 'dddd [om] LT',
68
- sameDay: '[vandaag om] LT',
69
- sameElse: 'L',
70
- },
70
+ Dayjs.updateLocale('es', {
71
+ calendar: calendarFormats.es,
71
72
  });
72
-
73
- Dayjs.updateLocale('it', {
74
- calendar: {
75
- lastDay: '[Ieri alle] LT',
76
- lastWeek: '[lo scorso] dddd [alle] LT',
77
- nextDay: '[Domani alle] LT',
78
- nextWeek: 'dddd [alle] LT',
79
- sameDay: '[Oggi alle] LT',
80
- sameElse: 'L',
81
- },
73
+ Dayjs.updateLocale('fr', {
74
+ calendar: calendarFormats.fr,
75
+ });
76
+ Dayjs.updateLocale('he', {
77
+ calendar: calendarFormats.he,
82
78
  });
83
79
 
84
80
  Dayjs.updateLocale('hi', {
85
- calendar: {
86
- lastDay: '[कल] LT',
87
- lastWeek: '[पिछले] dddd, LT',
88
- nextDay: '[कल] LT',
89
- nextWeek: 'dddd, LT',
90
- sameDay: '[आज] LT',
91
- sameElse: 'L',
92
- },
81
+ calendar: calendarFormats.hi,
93
82
 
94
83
  /**
95
84
  * Hindi notation for meridiems are quite fuzzy in practice. While there exists
@@ -116,35 +105,26 @@ Dayjs.updateLocale('hi', {
116
105
 
117
106
  meridiemParse: /रात|सुबह|दोपहर|शाम/,
118
107
  });
119
-
120
- Dayjs.updateLocale('fr', {
121
- calendar: {
122
- lastDay: '[Hier à] LT',
123
- lastWeek: 'dddd [dernier à] LT',
124
- nextDay: '[Demain à] LT',
125
- nextWeek: 'dddd [à] LT',
126
- sameDay: '[Aujourd’hui à] LT',
127
- sameElse: 'L',
128
- },
108
+ Dayjs.updateLocale('it', {
109
+ calendar: calendarFormats.it,
129
110
  });
130
-
131
- Dayjs.updateLocale('tr', {
132
- calendar: {
133
- lastDay: '[dün] LT',
134
- lastWeek: '[geçen] dddd [saat] LT',
135
- nextDay: '[yarın saat] LT',
136
- nextWeek: '[gelecek] dddd [saat] LT',
137
- sameDay: '[bugün saat] LT',
138
- sameElse: 'L',
139
- },
111
+ Dayjs.updateLocale('ja', {
112
+ calendar: calendarFormats.ja,
113
+ });
114
+ Dayjs.updateLocale('ko', {
115
+ calendar: calendarFormats.ko,
116
+ });
117
+ Dayjs.updateLocale('nl', {
118
+ calendar: calendarFormats.nl,
119
+ });
120
+ Dayjs.updateLocale('pt-br', {
121
+ calendar: calendarFormats['pt-br'],
140
122
  });
141
-
142
123
  Dayjs.updateLocale('ru', {
143
- calendar: {
144
- lastDay: '[Вчера, в] LT',
145
- nextDay: '[Завтра, в] LT',
146
- sameDay: '[Сегодня, в] LT',
147
- },
124
+ calendar: calendarFormats.ru,
125
+ });
126
+ Dayjs.updateLocale('tr', {
127
+ calendar: calendarFormats.tr,
148
128
  });
149
129
 
150
130
  const en_locale = {
@@ -171,11 +151,12 @@ const en_locale = {
171
151
  const isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>
172
152
  (dateTimeParser as typeof Dayjs).extend !== undefined;
173
153
 
174
- type Options = {
154
+ type Streami18nOptions = {
175
155
  DateTimeParser?: typeof Dayjs | typeof moment;
176
156
  dayjsLocaleConfigForLanguage?: Partial<ILocale>;
177
157
  debug?: boolean;
178
158
  disableDateTimeTranslations?: boolean;
159
+ formatters?: Partial<PredefinedFormatters> & CustomFormatters;
179
160
  language?: string;
180
161
  logger?: (msg?: string) => void;
181
162
  translationsForLanguage?: Partial<typeof enTranslations>;
@@ -184,7 +165,7 @@ type Options = {
184
165
  type I18NextConfig = {
185
166
  debug: boolean;
186
167
  fallbackLng: false | FallbackLng;
187
- interpolation: { escapeValue: boolean };
168
+ interpolation: { escapeValue: boolean; formatSeparator: string };
188
169
  keySeparator: false | string;
189
170
  lng: string;
190
171
  nsSeparator: false | string;
@@ -405,6 +386,7 @@ export class Streami18n {
405
386
  logger: (msg?: string) => void;
406
387
  currentLanguage: string;
407
388
  DateTimeParser: typeof Dayjs | typeof moment;
389
+ formatters: PredefinedFormatters & CustomFormatters = predefinedFormatters;
408
390
  isCustomDateTimeParser: boolean;
409
391
  i18nextConfig: I18NextConfig;
410
392
 
@@ -434,7 +416,7 @@ export class Streami18n {
434
416
  *
435
417
  * @param {*} options
436
418
  */
437
- constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {
419
+ constructor(options: Streami18nOptions = {}, i18nextConfig: Partial<I18NextConfig> = {}) {
438
420
  const finalOptions = {
439
421
  ...defaultStreami18nOptions,
440
422
  ...options,
@@ -445,6 +427,7 @@ export class Streami18n {
445
427
 
446
428
  this.currentLanguage = finalOptions.language;
447
429
  this.DateTimeParser = finalOptions.DateTimeParser;
430
+ this.formatters = { ...predefinedFormatters, ...options?.formatters };
448
431
 
449
432
  try {
450
433
  /**
@@ -491,7 +474,7 @@ export class Streami18n {
491
474
  this.i18nextConfig = {
492
475
  debug: finalOptions.debug,
493
476
  fallbackLng: false,
494
- interpolation: { escapeValue: false },
477
+ interpolation: { escapeValue: false, formatSeparator: '|' },
495
478
  keySeparator: false,
496
479
  lng: this.currentLanguage,
497
480
  nsSeparator: false,
@@ -556,6 +539,12 @@ export class Streami18n {
556
539
  this.onTFunctionOverrideListeners.forEach((listener) => listener(this.t));
557
540
  }
558
541
  this.initialized = true;
542
+ if (this.formatters) {
543
+ Object.entries(this.formatters).forEach(([name, formatterFactory]) => {
544
+ if (!formatterFactory) return;
545
+ this.i18nInstance.services.formatter?.add(name, formatterFactory(this));
546
+ });
547
+ }
559
548
  } catch (error) {
560
549
  this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);
561
550
  }
@@ -0,0 +1,110 @@
1
+ type CalendarFormats = {
2
+ lastDay: string;
3
+ lastWeek: string;
4
+ nextDay: string;
5
+ nextWeek: string;
6
+ sameDay: string;
7
+ sameElse: string;
8
+ };
9
+
10
+ /**
11
+ * Calendar formats for different languages.
12
+ */
13
+ export const calendarFormats: Record<string, CalendarFormats> = {
14
+ en: {
15
+ lastDay: '[Yesterday]',
16
+ lastWeek: 'dddd',
17
+ nextDay: '[Tomorrow]',
18
+ nextWeek: 'dddd [at] LT',
19
+ sameDay: '[Today]',
20
+ sameElse: 'L',
21
+ },
22
+ es: {
23
+ lastDay: '[Ayer]',
24
+ lastWeek: 'dddd',
25
+ nextDay: '[Mañana]',
26
+ nextWeek: 'dddd [a las] LT',
27
+ sameDay: '[Hoy]',
28
+ sameElse: 'L',
29
+ },
30
+ fr: {
31
+ lastDay: '[Hier]',
32
+ lastWeek: 'dddd',
33
+ nextDay: '[Demain]',
34
+ nextWeek: 'dddd [à] LT',
35
+ sameDay: "[Aujourd'hui]",
36
+ sameElse: 'L',
37
+ },
38
+ he: {
39
+ lastDay: '[אתמול]',
40
+ lastWeek: 'dddd',
41
+ nextDay: '[מחר]',
42
+ nextWeek: 'dddd [בשעה] LT',
43
+ sameDay: '[היום]',
44
+ sameElse: 'L',
45
+ },
46
+ hi: {
47
+ lastDay: '[कल]',
48
+ lastWeek: 'dddd',
49
+ nextDay: '[कल]',
50
+ nextWeek: 'dddd [को] LT',
51
+ sameDay: '[आज]',
52
+ sameElse: 'L',
53
+ },
54
+ it: {
55
+ lastDay: '[Ieri]',
56
+ lastWeek: 'dddd',
57
+ nextDay: '[Domani]',
58
+ nextWeek: 'dddd [alle] LT',
59
+ sameDay: '[Oggi]',
60
+ sameElse: 'L',
61
+ },
62
+ ja: {
63
+ lastDay: '[昨日]',
64
+ lastWeek: 'dddd',
65
+ nextDay: '[明日]',
66
+ nextWeek: 'dddd [の] LT',
67
+ sameDay: '[今日]',
68
+ sameElse: 'L',
69
+ },
70
+ ko: {
71
+ lastDay: '[어제]',
72
+ lastWeek: 'dddd',
73
+ nextDay: '[내일]',
74
+ nextWeek: 'dddd [LT에]',
75
+ sameDay: '[오늘]',
76
+ sameElse: 'L',
77
+ },
78
+ nl: {
79
+ lastDay: '[Gisteren]',
80
+ lastWeek: 'dddd',
81
+ nextDay: '[Morgen]',
82
+ nextWeek: 'dddd [om] LT',
83
+ sameDay: '[Vandaag]',
84
+ sameElse: 'L',
85
+ },
86
+ 'pt-br': {
87
+ lastDay: '[Ontem]',
88
+ lastWeek: 'dddd',
89
+ nextDay: '[Amanhã]',
90
+ nextWeek: 'dddd [às] LT',
91
+ sameDay: '[Hoje]',
92
+ sameElse: 'L',
93
+ },
94
+ ru: {
95
+ lastDay: '[Вчера]',
96
+ lastWeek: 'dddd',
97
+ nextDay: '[Завтра]',
98
+ nextWeek: 'dddd [в] LT',
99
+ sameDay: '[Сегодня]',
100
+ sameElse: 'L', // L is the localized date format
101
+ },
102
+ tr: {
103
+ lastDay: '[Dün]',
104
+ lastWeek: 'dddd',
105
+ nextDay: '[Yarın]',
106
+ nextWeek: 'dddd [saat] LT',
107
+ sameDay: '[Bugün]',
108
+ sameElse: 'L',
109
+ },
110
+ };
@@ -0,0 +1,76 @@
1
+ import type { TimestampFormatterOptions } from './predefinedFormatters';
2
+
3
+ import {
4
+ isDayOrMoment,
5
+ TranslatorFunctions,
6
+ } from '../../contexts/translationContext/TranslationContext';
7
+
8
+ type DateFormatterOptions = TimestampFormatterOptions &
9
+ Partial<TranslatorFunctions> & {
10
+ /**
11
+ * The timestamp to be formatted.
12
+ */
13
+ date?: string | Date;
14
+ /*
15
+ * Lookup key in the language corresponding translations sheet to perform date formatting
16
+ */
17
+ timestampTranslationKey?: string;
18
+ };
19
+
20
+ export const noParsingFunctionWarning =
21
+ 'MessageTimestamp was called but there is no datetime parsing function available';
22
+
23
+ /**
24
+ * Utility function to format the date string.
25
+ */
26
+ export function getDateString({
27
+ calendar,
28
+ calendarFormats,
29
+ date,
30
+ format,
31
+ t,
32
+ tDateTimeParser,
33
+ timestampTranslationKey,
34
+ }: DateFormatterOptions): string | number | undefined {
35
+ if (!date || (typeof date === 'string' && !Date.parse(date))) {
36
+ return;
37
+ }
38
+
39
+ if (!tDateTimeParser) {
40
+ console.log(noParsingFunctionWarning);
41
+ return;
42
+ }
43
+
44
+ if (t && timestampTranslationKey) {
45
+ const options: TimestampFormatterOptions = {};
46
+ if (typeof calendar !== 'undefined' && calendar !== null) {
47
+ options.calendar = calendar;
48
+ }
49
+ if (typeof calendarFormats !== 'undefined' && calendarFormats !== null) {
50
+ options.calendarFormats = calendarFormats;
51
+ }
52
+ if (typeof format !== 'undefined' && format !== null) {
53
+ options.format = format;
54
+ }
55
+ const translatedTimestamp = t(timestampTranslationKey, {
56
+ ...options,
57
+ timestamp: new Date(date),
58
+ });
59
+ const translationKeyFound = timestampTranslationKey !== translatedTimestamp;
60
+ if (translationKeyFound) return translatedTimestamp;
61
+ }
62
+
63
+ const parsedTime = tDateTimeParser(date);
64
+
65
+ if (isDayOrMoment(parsedTime)) {
66
+ /**
67
+ * parsedTime.calendar is guaranteed on the type but is only
68
+ * available when a user calls dayjs.extend(calendar)
69
+ */
70
+ return calendar && parsedTime.calendar
71
+ ? parsedTime.calendar(undefined, calendarFormats)
72
+ : parsedTime.format(format);
73
+ }
74
+
75
+ return new Date(date).toDateString();
76
+ }
@@ -0,0 +1,63 @@
1
+ import { getDateString } from './getDateString';
2
+ import { Streami18n } from './Streami18n';
3
+
4
+ export type TimestampFormatterOptions = {
5
+ /* If true, call the `Day.js` calendar function to get the date string to display (e.g. "Yesterday at 3:58 PM"). */
6
+ calendar?: boolean | null;
7
+ /* Object specifying date display formats for dates formatted with calendar extension. Active only if calendar prop enabled. */
8
+ calendarFormats?: Record<string, string>;
9
+ /* Overrides the default timestamp format if calendar is disabled. */
10
+ format?: string;
11
+ };
12
+
13
+ export type FormatterFactory<V> = (
14
+ streamI18n: Streami18n,
15
+ ) => (value: V, lng: string | undefined, options: Record<string, unknown>) => string;
16
+
17
+ // Here is any used, because we do not want to enforce any specific rules and
18
+ // want to leave the type declaration to the integrator
19
+ /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
20
+ export type CustomFormatters = Record<string, FormatterFactory<any>>;
21
+
22
+ export type PredefinedFormatters = {
23
+ timestampFormatter: FormatterFactory<string | Date>;
24
+ };
25
+
26
+ export const predefinedFormatters: PredefinedFormatters = {
27
+ timestampFormatter:
28
+ (streamI18n) =>
29
+ (
30
+ value,
31
+ _,
32
+ {
33
+ calendarFormats,
34
+ ...options
35
+ }: Pick<TimestampFormatterOptions, 'calendar' | 'format'> & {
36
+ calendarFormats?: Record<string, string> | string;
37
+ },
38
+ ) => {
39
+ let parsedCalendarFormats;
40
+ try {
41
+ if (!options.calendar) {
42
+ parsedCalendarFormats = {};
43
+ } else if (typeof calendarFormats === 'string') {
44
+ parsedCalendarFormats = JSON.parse(calendarFormats);
45
+ } else if (typeof calendarFormats === 'object') {
46
+ parsedCalendarFormats = calendarFormats;
47
+ }
48
+ } catch (e) {
49
+ console.error('[TIMESTAMP FORMATTER]', e);
50
+ }
51
+
52
+ const result = getDateString({
53
+ ...options,
54
+ calendarFormats: parsedCalendarFormats,
55
+ date: value,
56
+ tDateTimeParser: streamI18n.tDateTimeParser,
57
+ });
58
+ if (!result || typeof result === 'number') {
59
+ return JSON.stringify(value);
60
+ }
61
+ return result;
62
+ },
63
+ };
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.32.0-beta.2"
2
+ "version": "5.32.0"
3
3
  }
@@ -1 +0,0 @@
1
- {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_es2","_fr2","_he2","_hi2","_it2","_ja2","_ko2","_nl2","_ptBr","_ru2","_tr2","defaultNS","defaultLng","Dayjs","extend","updateLocale","format","L","LL","LLL","LLLL","LT","LTS","calendar","lastDay","lastWeek","nextDay","nextWeek","sameDay","sameElse","meridiem","hour","meridiemHour","meridiemParse","en_locale","formats","months","relativeTime","weekdays","isDayJs","dateTimeParser","undefined","defaultStreami18nOptions","DateTimeParser","dayjsLocaleConfigForLanguage","debug","disableDateTimeTranslations","language","logger","msg","console","warn","Streami18n","_this","options","arguments","length","i18nextConfig","_classCallCheck2","i18nInstance","i18n","createInstance","initialized","onLanguageChangeListeners","onTFunctionOverrideListeners","t","key","translations","en","_defineProperty2","enTranslations","es","esTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ptBRTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","concat","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","assign","LocalizedFormat","localeData","error","Error","JSON","stringify","translationsForLanguage","fallbackLng","interpolation","escapeValue","keySeparator","lng","nsSeparator","parseMissingKeyHandler","addOrUpdateLocale","tDateTimeParser","timestamp","locale","_createClass2","value","_init","_asyncToGenerator2","_regenerator","mark","_callee","_this2","wrap","_callee$","_context","prev","next","init","resources","sent","queuedTFunctionOverride","forEach","listener","t0","waitForInitializing","stop","apply","_getTranslators","_callee2","initPromise","_callee2$","_context2","abrupt","getTranslators","registerTranslation","translation","customDayjsLocale","addResources","config","name","_setLanguage","_callee3","_t","_callee3$","_context3","changeLanguage","setLanguage","_x","addOnLanguageChangeListener","callback","_this3","push","unsubscribe","filter","addOnTFunctionOverrideListener","_this4","overrideTFunction","tFunction","exports"],"sourceRoot":"../../../src","sources":["utils/Streami18n.ts"],"mappings":"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","ignoreList":[]}
@@ -1,31 +0,0 @@
1
- Object.defineProperty(exports, "__esModule", {
2
- value: true
3
- });
4
- exports.getDateString = getDateString;
5
- exports.noParsingFunctionWarning = void 0;
6
- var _TranslationContext = require("../contexts/translationContext/TranslationContext");
7
- var noParsingFunctionWarning = 'MessageTimestamp was called but there is no datetime parsing function available';
8
- exports.noParsingFunctionWarning = noParsingFunctionWarning;
9
- function getDateString(_ref) {
10
- var calendar = _ref.calendar,
11
- date = _ref.date,
12
- format = _ref.format,
13
- formatDate = _ref.formatDate,
14
- tDateTimeParser = _ref.tDateTimeParser;
15
- if (!date || typeof date === 'string' && !Date.parse(date)) {
16
- return;
17
- }
18
- if (typeof formatDate === 'function') {
19
- return formatDate(new Date(date));
20
- }
21
- if (!tDateTimeParser) {
22
- console.log(noParsingFunctionWarning);
23
- return;
24
- }
25
- var parsedTime = tDateTimeParser(date);
26
- if ((0, _TranslationContext.isDayOrMoment)(parsedTime)) {
27
- return calendar && parsedTime.calendar ? parsedTime.calendar() : parsedTime.format(format);
28
- }
29
- return new Date(date).toDateString();
30
- }
31
- //# sourceMappingURL=getDateString.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_TranslationContext","require","noParsingFunctionWarning","exports","getDateString","_ref","calendar","date","format","formatDate","tDateTimeParser","Date","parse","console","log","parsedTime","isDayOrMoment","toDateString"],"sourceRoot":"../../../src","sources":["utils/getDateString.ts"],"mappings":";;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AA6BO,IAAMC,wBAAwB,GACnC,iFAAiF;AAACC,OAAA,CAAAD,wBAAA,GAAAA,wBAAA;AAK7E,SAASE,aAAaA,CAAAC,IAAA,EAMyB;EAAA,IALpDC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,MAAM,GAAAH,IAAA,CAANG,MAAM;IACNC,UAAU,GAAAJ,IAAA,CAAVI,UAAU;IACVC,eAAe,GAAAL,IAAA,CAAfK,eAAe;EAEf,IAAI,CAACH,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,IAAI,CAACI,IAAI,CAACC,KAAK,CAACL,IAAI,CAAE,EAAE;IAC5D;EACF;EAEA,IAAI,OAAOE,UAAU,KAAK,UAAU,EAAE;IACpC,OAAOA,UAAU,CAAC,IAAIE,IAAI,CAACJ,IAAI,CAAC,CAAC;EACnC;EAEA,IAAI,CAACG,eAAe,EAAE;IACpBG,OAAO,CAACC,GAAG,CAACZ,wBAAwB,CAAC;IACrC;EACF;EAEA,IAAMa,UAAU,GAAGL,eAAe,CAACH,IAAI,CAAC;EAExC,IAAI,IAAAS,iCAAa,EAACD,UAAU,CAAC,EAAE;IAK7B,OAAOT,QAAQ,IAAIS,UAAU,CAACT,QAAQ,GAAGS,UAAU,CAACT,QAAQ,CAAC,CAAC,GAAGS,UAAU,CAACP,MAAM,CAACA,MAAM,CAAC;EAC5F;EAEA,OAAO,IAAIG,IAAI,CAACJ,IAAI,CAAC,CAACU,YAAY,CAAC,CAAC;AACtC","ignoreList":[]}