@kesha-antonov/react-native-chat 4.3.0 → 5.0.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 (167) hide show
  1. package/README.md +318 -210
  2. package/lib/Avatar.d.ts.map +1 -1
  3. package/lib/Avatar.js +12 -5
  4. package/lib/Avatar.js.map +1 -1
  5. package/lib/Bubble/index.d.ts.map +1 -1
  6. package/lib/Bubble/index.js +15 -5
  7. package/lib/Bubble/index.js.map +1 -1
  8. package/lib/Chat/index.d.ts +1 -0
  9. package/lib/Chat/index.d.ts.map +1 -1
  10. package/lib/Chat/index.js +81 -34
  11. package/lib/Chat/index.js.map +1 -1
  12. package/lib/Chat/types.d.ts +37 -4
  13. package/lib/Chat/types.d.ts.map +1 -1
  14. package/lib/ChatContext.d.ts +2 -0
  15. package/lib/ChatContext.d.ts.map +1 -1
  16. package/lib/ChatContext.js +1 -0
  17. package/lib/ChatContext.js.map +1 -1
  18. package/lib/Composer.d.ts.map +1 -1
  19. package/lib/Composer.js +5 -0
  20. package/lib/Composer.js.map +1 -1
  21. package/lib/Constant.d.ts +1 -0
  22. package/lib/Constant.d.ts.map +1 -1
  23. package/lib/Constant.js +1 -0
  24. package/lib/Constant.js.map +1 -1
  25. package/lib/InputToolbar.d.ts.map +1 -1
  26. package/lib/InputToolbar.js +36 -10
  27. package/lib/InputToolbar.js.map +1 -1
  28. package/lib/Message/index.d.ts.map +1 -1
  29. package/lib/Message/index.js +11 -3
  30. package/lib/Message/index.js.map +1 -1
  31. package/lib/MessageImage.js +2 -2
  32. package/lib/MessageImage.js.map +1 -1
  33. package/lib/MessagesContainer/components/DayAnimated/debug.d.ts +1 -1
  34. package/lib/MessagesContainer/components/DayAnimated/debug.d.ts.map +1 -1
  35. package/lib/MessagesContainer/components/DayAnimated/debug.js +2 -2
  36. package/lib/MessagesContainer/components/DayAnimated/debug.js.map +1 -1
  37. package/lib/MessagesContainer/components/DayAnimated/index.d.ts.map +1 -1
  38. package/lib/MessagesContainer/components/DayAnimated/index.js +5 -5
  39. package/lib/MessagesContainer/components/DayAnimated/index.js.map +1 -1
  40. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.d.ts.map +1 -1
  41. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js +1 -1
  42. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js.map +1 -1
  43. package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
  44. package/lib/MessagesContainer/components/Item/index.js +13 -11
  45. package/lib/MessagesContainer/components/Item/index.js.map +1 -1
  46. package/lib/MessagesContainer/index.d.ts.map +1 -1
  47. package/lib/MessagesContainer/index.js +71 -42
  48. package/lib/MessagesContainer/index.js.map +1 -1
  49. package/lib/MessagesContainer/types.d.ts +1 -0
  50. package/lib/MessagesContainer/types.d.ts.map +1 -1
  51. package/lib/Theme.d.ts +13 -2
  52. package/lib/Theme.d.ts.map +1 -1
  53. package/lib/Theme.js +7 -2
  54. package/lib/Theme.js.map +1 -1
  55. package/lib/TypingIndicator/index.d.ts.map +1 -1
  56. package/lib/TypingIndicator/index.js +11 -5
  57. package/lib/TypingIndicator/index.js.map +1 -1
  58. package/lib/components/MediaControls.d.ts +1 -1
  59. package/lib/components/MediaControls.d.ts.map +1 -1
  60. package/lib/components/MediaControls.js +2 -1
  61. package/lib/components/MediaControls.js.map +1 -1
  62. package/lib/components/ReplyPreview.d.ts.map +1 -1
  63. package/lib/components/ReplyPreview.js +2 -1
  64. package/lib/components/ReplyPreview.js.map +1 -1
  65. package/lib/components/TouchableOpacity.d.ts.map +1 -1
  66. package/lib/components/TouchableOpacity.js +10 -3
  67. package/lib/components/TouchableOpacity.js.map +1 -1
  68. package/lib/components/VoiceMessageInput.d.ts.map +1 -1
  69. package/lib/components/VoiceMessageInput.js +11 -4
  70. package/lib/components/VoiceMessageInput.js.map +1 -1
  71. package/lib/dayjsLocales.d.ts +18 -0
  72. package/lib/dayjsLocales.d.ts.map +1 -0
  73. package/lib/dayjsLocales.js +36 -0
  74. package/lib/dayjsLocales.js.map +1 -0
  75. package/lib/hooks/useIsRTL.d.ts +3 -0
  76. package/lib/hooks/useIsRTL.d.ts.map +1 -0
  77. package/lib/hooks/useIsRTL.js +7 -0
  78. package/lib/hooks/useIsRTL.js.map +1 -0
  79. package/lib/hooks/useKeyboardVerticalOffset.d.ts +12 -0
  80. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  81. package/lib/hooks/useKeyboardVerticalOffset.js +12 -0
  82. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  83. package/lib/hooks/useUpdateLayoutEffect.d.ts.map +1 -1
  84. package/lib/hooks/useUpdateLayoutEffect.js +3 -0
  85. package/lib/hooks/useUpdateLayoutEffect.js.map +1 -1
  86. package/lib/i18n.d.ts +12 -5
  87. package/lib/i18n.d.ts.map +1 -1
  88. package/lib/i18n.js +20 -89
  89. package/lib/i18n.js.map +1 -1
  90. package/lib/index.d.ts +2 -0
  91. package/lib/index.d.ts.map +1 -1
  92. package/lib/index.js +2 -0
  93. package/lib/index.js.map +1 -1
  94. package/lib/linkParser.d.ts +14 -0
  95. package/lib/linkParser.d.ts.map +1 -1
  96. package/lib/linkParser.js +103 -34
  97. package/lib/linkParser.js.map +1 -1
  98. package/lib/locales/ar.d.ts +3 -0
  99. package/lib/locales/ar.d.ts.map +1 -0
  100. package/lib/locales/ar.js +22 -0
  101. package/lib/locales/ar.js.map +1 -0
  102. package/lib/locales/de.d.ts +3 -0
  103. package/lib/locales/de.d.ts.map +1 -0
  104. package/lib/locales/de.js +22 -0
  105. package/lib/locales/de.js.map +1 -0
  106. package/lib/locales/es.d.ts +3 -0
  107. package/lib/locales/es.d.ts.map +1 -0
  108. package/lib/locales/es.js +22 -0
  109. package/lib/locales/es.js.map +1 -0
  110. package/lib/locales/fr.d.ts +3 -0
  111. package/lib/locales/fr.d.ts.map +1 -0
  112. package/lib/locales/fr.js +22 -0
  113. package/lib/locales/fr.js.map +1 -0
  114. package/lib/locales/hi.d.ts +3 -0
  115. package/lib/locales/hi.d.ts.map +1 -0
  116. package/lib/locales/hi.js +22 -0
  117. package/lib/locales/hi.js.map +1 -0
  118. package/lib/locales/id.d.ts +3 -0
  119. package/lib/locales/id.d.ts.map +1 -0
  120. package/lib/locales/id.js +22 -0
  121. package/lib/locales/id.js.map +1 -0
  122. package/lib/locales/index.d.ts +19 -0
  123. package/lib/locales/index.d.ts.map +1 -0
  124. package/lib/locales/index.js +39 -0
  125. package/lib/locales/index.js.map +1 -0
  126. package/lib/locales/it.d.ts +3 -0
  127. package/lib/locales/it.d.ts.map +1 -0
  128. package/lib/locales/it.js +22 -0
  129. package/lib/locales/it.js.map +1 -0
  130. package/lib/locales/ja.d.ts +3 -0
  131. package/lib/locales/ja.d.ts.map +1 -0
  132. package/lib/locales/ja.js +22 -0
  133. package/lib/locales/ja.js.map +1 -0
  134. package/lib/locales/ko.d.ts +3 -0
  135. package/lib/locales/ko.d.ts.map +1 -0
  136. package/lib/locales/ko.js +22 -0
  137. package/lib/locales/ko.js.map +1 -0
  138. package/lib/locales/nl.d.ts +3 -0
  139. package/lib/locales/nl.d.ts.map +1 -0
  140. package/lib/locales/nl.js +22 -0
  141. package/lib/locales/nl.js.map +1 -0
  142. package/lib/locales/pl.d.ts +3 -0
  143. package/lib/locales/pl.d.ts.map +1 -0
  144. package/lib/locales/pl.js +22 -0
  145. package/lib/locales/pl.js.map +1 -0
  146. package/lib/locales/pt.d.ts +3 -0
  147. package/lib/locales/pt.d.ts.map +1 -0
  148. package/lib/locales/pt.js +22 -0
  149. package/lib/locales/pt.js.map +1 -0
  150. package/lib/locales/ru.d.ts +3 -0
  151. package/lib/locales/ru.d.ts.map +1 -0
  152. package/lib/locales/ru.js +22 -0
  153. package/lib/locales/ru.js.map +1 -0
  154. package/lib/locales/tr.d.ts +3 -0
  155. package/lib/locales/tr.d.ts.map +1 -0
  156. package/lib/locales/tr.js +22 -0
  157. package/lib/locales/tr.js.map +1 -0
  158. package/lib/locales/zh.d.ts +3 -0
  159. package/lib/locales/zh.d.ts.map +1 -0
  160. package/lib/locales/zh.js +22 -0
  161. package/lib/locales/zh.js.map +1 -0
  162. package/lib/rtl.d.ts +18 -0
  163. package/lib/rtl.d.ts.map +1 -0
  164. package/lib/rtl.js +31 -0
  165. package/lib/rtl.js.map +1 -0
  166. package/llms.txt +175 -0
  167. package/package.json +21 -22
package/lib/i18n.js CHANGED
@@ -1,3 +1,16 @@
1
+ /**
2
+ * UI string localization for the chat. Date/time localization (month/day names, calendar
3
+ * formats) is handled separately by Day.js via the `locale` prop - dayjsLocales.ts bundles the
4
+ * matching dayjs locale for every language translated here, kept in sync via the
5
+ * `SupportedLocale` type in ./locales (compile time) and dayjsLocales.test.ts (runtime). This
6
+ * file covers the static UI labels (composer placeholder, buttons, recording hint, media/
7
+ * location labels, etc.); the actual per-language strings live one-per-file under `src/locales/`.
8
+ *
9
+ * Provide overrides through the `labels` prop on `Chat`, or rely on the built-in
10
+ * translations selected by the `locale` prop. Labels resolve as:
11
+ * labels (prop) > translations[locale] > defaultLabels (English)
12
+ */
13
+ import { matchSupportedLocale, translations } from './locales';
1
14
  export const defaultLabels = {
2
15
  placeholder: 'Type a message...',
3
16
  send: 'Send',
@@ -19,100 +32,18 @@ export const defaultLabels = {
19
32
  releaseToSend: 'Release to send, slide up to lock',
20
33
  holdToRecord: 'Hold to record',
21
34
  };
22
- /** Built-in translations (a starter set). Each is merged over English. */
23
- export const translations = {
24
- es: {
25
- placeholder: 'Escribe un mensaje...',
26
- send: 'Enviar',
27
- cancel: 'Cancelar',
28
- loadEarlier: 'Cargar mensajes anteriores',
29
- today: 'Hoy',
30
- video: 'Video',
31
- voiceMessage: 'Mensaje de voz',
32
- videoMessage: 'Mensaje de video',
33
- location: 'Ubicacion',
34
- openLocationAccessibility: 'Abrir ubicacion en mapas',
35
- slideToCancel: 'desliza para cancelar',
36
- replyingTo: 'Respondiendo a {name}',
37
- editing: 'Editando',
38
- cameraPermission: 'Se necesita permiso de camara',
39
- noCamera: 'No hay camara disponible',
40
- stopAndSend: 'Toca para detener y enviar',
41
- tapToRecord: 'Toca para grabar',
42
- releaseToSend: 'Suelta para enviar, desliza arriba para bloquear',
43
- holdToRecord: 'Manten pulsado para grabar',
44
- },
45
- fr: {
46
- placeholder: 'Ecrire un message...',
47
- send: 'Envoyer',
48
- cancel: 'Annuler',
49
- loadEarlier: 'Charger les messages precedents',
50
- today: 'Aujourd\'hui',
51
- video: 'Video',
52
- voiceMessage: 'Message vocal',
53
- videoMessage: 'Message vidéo',
54
- location: 'Position',
55
- openLocationAccessibility: 'Ouvrir la position dans les cartes',
56
- slideToCancel: 'glisser pour annuler',
57
- replyingTo: 'Reponse a {name}',
58
- editing: 'Modification',
59
- cameraPermission: 'Autorisation de la camera requise',
60
- noCamera: 'Aucune camera disponible',
61
- stopAndSend: 'Appuyez pour arreter et envoyer',
62
- tapToRecord: 'Appuyez pour enregistrer',
63
- releaseToSend: 'Relachez pour envoyer, glissez vers le haut pour verrouiller',
64
- holdToRecord: 'Maintenez pour enregistrer',
65
- },
66
- de: {
67
- placeholder: 'Nachricht schreiben...',
68
- send: 'Senden',
69
- cancel: 'Abbrechen',
70
- loadEarlier: 'Fruhere Nachrichten laden',
71
- today: 'Heute',
72
- video: 'Video',
73
- voiceMessage: 'Sprachnachricht',
74
- videoMessage: 'Videonachricht',
75
- location: 'Standort',
76
- openLocationAccessibility: 'Standort in Karten offnen',
77
- slideToCancel: 'zum Abbrechen wischen',
78
- replyingTo: 'Antwort an {name}',
79
- editing: 'Bearbeiten',
80
- cameraPermission: 'Kameraberechtigung erforderlich',
81
- noCamera: 'Keine Kamera verfugbar',
82
- stopAndSend: 'Tippen zum Beenden und Senden',
83
- tapToRecord: 'Zum Aufnehmen tippen',
84
- releaseToSend: 'Loslassen zum Senden, nach oben wischen zum Sperren',
85
- holdToRecord: 'Zum Aufnehmen gedruckt halten',
86
- },
87
- ru: {
88
- placeholder: 'Введите сообщение...',
89
- send: 'Отправить',
90
- cancel: 'Отмена',
91
- loadEarlier: 'Загрузить предыдущие сообщения',
92
- today: 'Сегодня',
93
- video: 'Видео',
94
- voiceMessage: 'Голосовое сообщение',
95
- videoMessage: 'Видеосообщение',
96
- location: 'Местоположение',
97
- openLocationAccessibility: 'Открыть местоположение на картах',
98
- slideToCancel: 'смахните для отмены',
99
- replyingTo: 'Ответ {name}',
100
- editing: 'Редактирование',
101
- cameraPermission: 'Требуется доступ к камере',
102
- noCamera: 'Камера недоступна',
103
- stopAndSend: 'Нажмите, чтобы остановить и отправить',
104
- tapToRecord: 'Нажмите, чтобы записать',
105
- releaseToSend: 'Отпустите, чтобы отправить, вверх - закрепить',
106
- holdToRecord: 'Удерживайте для записи',
107
- },
108
- };
35
+ /**
36
+ * Built-in translations (a starter set), one language per file under `src/locales/`. Re-exported
37
+ * here so `import { translations } from 'react-native-chat'` keeps working.
38
+ */
39
+ export { translations };
109
40
  /**
110
41
  * Resolve the active labels: the `labels` override on top of the built-in
111
42
  * translation for `locale` (if any) on top of English defaults.
112
43
  */
113
44
  export function resolveLabels(locale, labels) {
114
- const localeKey = locale?.split('-')[0]?.toLowerCase();
115
- const translated = localeKey ? translations[localeKey] : undefined;
45
+ const matched = matchSupportedLocale(locale);
46
+ const translated = matched ? translations[matched] : undefined;
116
47
  return { ...defaultLabels, ...translated, ...labels };
117
48
  }
118
49
  /** Interpolate `{name}`-style placeholders in a label. */
package/lib/i18n.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AA0C9D,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,WAAW,EAAE,mBAAmB;IAChC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,yBAAyB,EAAE,uBAAuB;IAClD,aAAa,EAAE,yBAAyB;IACxC,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,0BAA0B;IAC5C,QAAQ,EAAE,qBAAqB;IAC/B,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,eAAe;IAC5B,aAAa,EAAE,mCAAmC;IAClD,YAAY,EAAE,gBAAgB;CAC/B,CAAA;AAED;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAe,EACf,MAA4B;IAE5B,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9D,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,CAAA;AACvD,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAE,KAAa,EAAE,MAAuC;IACjF,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAChF,CAAC"}
package/lib/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export * from './styles';
11
11
  export * from './Theme';
12
12
  export * from './Icons';
13
13
  export * from './i18n';
14
+ export { isRTLLocale, mirrorPosition } from './rtl';
14
15
  export { Color } from './Color';
15
16
  export { Actions } from './Actions';
16
17
  export { Avatar } from './Avatar';
@@ -46,6 +47,7 @@ export { useColorScheme } from './hooks/useColorScheme';
46
47
  export { useTheme, useThemedStyles } from './hooks/useTheme';
47
48
  export { useIcons } from './hooks/useIcons';
48
49
  export { useLabels } from './hooks/useLabels';
50
+ export { useIsRTL } from './hooks/useIsRTL';
49
51
  export { Icon } from './components/Icon';
50
52
  export { useStreamingMessages } from './hooks/useStreamingMessages';
51
53
  export type { UseStreamingMessagesOptions, UseStreamingMessagesResult, StreamHandle } from './hooks/useStreamingMessages';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -11,6 +11,7 @@ export * from './styles';
11
11
  export * from './Theme';
12
12
  export * from './Icons';
13
13
  export * from './i18n';
14
+ export { isRTLLocale, mirrorPosition } from './rtl';
14
15
  export { Color } from './Color';
15
16
  export { Actions } from './Actions';
16
17
  export { Avatar } from './Avatar';
@@ -46,6 +47,7 @@ export { useColorScheme } from './hooks/useColorScheme';
46
47
  export { useTheme, useThemedStyles } from './hooks/useTheme';
47
48
  export { useIcons } from './hooks/useIcons';
48
49
  export { useLabels } from './hooks/useLabels';
50
+ export { useIsRTL } from './hooks/useIsRTL';
49
51
  export { Icon } from './components/Icon';
50
52
  export { useStreamingMessages } from './hooks/useStreamingMessages';
51
53
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,20 @@ export interface ParsedLink {
11
11
  export interface LinkMatcher {
12
12
  type: LinkType;
13
13
  pattern: RegExp;
14
+ /**
15
+ * Character class the match must NOT be preceded by. Portable stand-in for a
16
+ * lookbehind assertion `(?<!...)`, which JavaScriptCore on iOS/Safari < 16.4
17
+ * rejects while parsing the file, taking the whole app down with
18
+ * "SyntaxError: Invalid regular expression: invalid group specifier name".
19
+ * A rejected match does not end the scan: it resumes one character further
20
+ * along, exactly as a lookbehind would.
21
+ */
22
+ notPrecededBy?: RegExp;
23
+ /**
24
+ * Limits `notPrecededBy` to matches in which this capture group took part, so
25
+ * a pattern can guard a single one of its alternatives.
26
+ */
27
+ notPrecededByGroup?: number;
14
28
  getLinkUrl?: (text: string) => string;
15
29
  getLinkText?: (text: string) => string;
16
30
  baseUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"linkParser.d.ts","sourceRoot":"","sources":["../src/linkParser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAQ,SAAS,EAAE,SAAS,EAAW,MAAM,cAAc,CAAA;AAElE,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1F,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAChD;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;CACzC;AA6FD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EAAE,cAAc,EACxB,KAAY,EACZ,KAAY,EACZ,GAAU,EACV,OAAe,EACf,OAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,WAAkB,EAClB,SAAS,EACT,aAAoB,GACrB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CA2GtC"}
1
+ {"version":3,"file":"linkParser.d.ts","sourceRoot":"","sources":["../src/linkParser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,EAAQ,SAAS,EAAE,SAAS,EAAW,MAAM,cAAc,CAAA;AAElE,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAExE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1F,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;CAChD;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;CACzC;AA2KD,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EAAE,cAAc,EACxB,KAAY,EACZ,KAAY,EACZ,GAAU,EACV,OAAe,EACf,OAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,WAAkB,EAClB,SAAS,EACT,aAAoB,GACrB,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAgHtC"}
package/lib/linkParser.js CHANGED
@@ -1,9 +1,13 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import { Text, Linking } from 'react-native';
3
3
  const DEFAULT_MATCHERS = [
4
4
  {
5
5
  type: 'url',
6
- pattern: /(?:https?:\/\/(?:www\.)?|www\.)[^\s]+|(?<![A-Za-z0-9_.@])(?![A-Za-z0-9._%+-]*@)[a-zA-Z0-9][a-zA-Z0-9-]*\.(?!@)[a-zA-Z]{2,}(?![A-Za-z0-9._%+-]*@)(?:\/[^\s]*)?/gi,
6
+ // The bare-domain alternative is captured so `notPrecededBy` applies to it
7
+ // alone, leaving scheme/www links matchable anywhere.
8
+ pattern: /(?:https?:\/\/(?:www\.)?|www\.)[^\s]+|((?![A-Za-z0-9._%+-]*@)[a-zA-Z0-9][a-zA-Z0-9-]*\.(?!@)[a-zA-Z]{2,}(?![A-Za-z0-9._%+-]*@)(?:\/[^\s]*)?)/gi,
9
+ notPrecededBy: /[A-Za-z0-9_.@]/,
10
+ notPrecededByGroup: 1,
7
11
  getLinkUrl: (text) => {
8
12
  if (!/^https?:\/\//i.test(text))
9
13
  return `http://${text}`;
@@ -12,12 +16,14 @@ const DEFAULT_MATCHERS = [
12
16
  },
13
17
  {
14
18
  type: 'email',
15
- pattern: /(?<![A-Za-z0-9])([a-zA-Z0-9][a-zA-Z0-9._%+-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/gi,
19
+ pattern: /([a-zA-Z0-9][a-zA-Z0-9._%+-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/gi,
20
+ notPrecededBy: /[A-Za-z0-9]/,
16
21
  getLinkUrl: (text) => `mailto:${text}`,
17
22
  },
18
23
  {
19
24
  type: 'phone',
20
- pattern: /(?<![A-Za-z0-9_])(?:\+?\d{1,3}[\s.\-]?)?\(?\d{1,4}\)?[\s.\-]?\d{1,4}[\s.\-]?\d{1,9}(?![A-Za-z0-9_]|\.[a-z]{2,4})/gi,
25
+ pattern: /(?:\+?\d{1,3}[\s.\-]?)?\(?\d{1,4}\)?[\s.\-]?\d{1,4}[\s.\-]?\d{1,9}(?![A-Za-z0-9_]|\.[a-z]{2,4})/gi,
26
+ notPrecededBy: /[A-Za-z0-9_]/,
21
27
  getLinkUrl: (text) => {
22
28
  const cleaned = text.replace(/[\s.()\-]/g, '');
23
29
  return `tel:${cleaned}`;
@@ -31,15 +37,73 @@ const DEFAULT_MATCHERS = [
31
37
  },
32
38
  {
33
39
  type: 'mention',
34
- pattern: /(?<![a-zA-Z0-9._%+-])@[\w-]+/g,
40
+ pattern: /@[\w-]+/g,
41
+ notPrecededBy: /[a-zA-Z0-9._%+-]/,
35
42
  getLinkUrl: (text) => text,
36
43
  baseUrl: undefined,
37
44
  },
38
45
  ];
46
+ /**
47
+ * Runs `matcher.pattern` over `text`, honouring `matcher.notPrecededBy`.
48
+ *
49
+ * The pattern is cloned so a matcher shared between renders never carries
50
+ * `lastIndex` state around, which is what `String.prototype.matchAll` does too.
51
+ * When the preceding character is rejected the scan restarts at
52
+ * `match.index + 1` rather than after the match, so a start position ruled out
53
+ * here can still be part of a match found one character later - the same
54
+ * behaviour a lookbehind assertion gives.
55
+ */
56
+ // Compiling a RegExp is the expensive half of parsing, and every pattern here is a
57
+ // constant - only `lastIndex` varies per call, and that is reset on checkout. Without
58
+ // this, each message re-compiled the whole matcher set on every render of its text.
59
+ // Keyed on the source RegExp object so custom matchers benefit too, as long as the
60
+ // consumer keeps their pattern stable.
61
+ const globalPatternCache = new WeakMap();
62
+ const boundaryPatternCache = new WeakMap();
63
+ function globalPattern(pattern) {
64
+ let compiled = globalPatternCache.get(pattern);
65
+ if (!compiled) {
66
+ const flags = pattern.flags.includes('g') ? pattern.flags : `${pattern.flags}g`;
67
+ compiled = new RegExp(pattern.source, flags);
68
+ globalPatternCache.set(pattern, compiled);
69
+ }
70
+ // Reused across calls, so the cursor has to be rewound rather than assumed at 0.
71
+ compiled.lastIndex = 0;
72
+ return compiled;
73
+ }
74
+ function boundaryPattern(notPrecededBy) {
75
+ let compiled = boundaryPatternCache.get(notPrecededBy);
76
+ if (!compiled) {
77
+ // Dropped `g` here as well: `test` on a global regex advances lastIndex and
78
+ // would skip every other rejection.
79
+ compiled = new RegExp(notPrecededBy.source, notPrecededBy.flags.replace(/[gy]/g, ''));
80
+ boundaryPatternCache.set(notPrecededBy, compiled);
81
+ }
82
+ return compiled;
83
+ }
84
+ function execMatches(text, matcher) {
85
+ const { pattern, notPrecededBy, notPrecededByGroup } = matcher;
86
+ const regex = globalPattern(pattern);
87
+ const boundary = notPrecededBy ? boundaryPattern(notPrecededBy) : undefined;
88
+ const matches = [];
89
+ let match;
90
+ while ((match = regex.exec(text)) !== null) {
91
+ const guarded = notPrecededByGroup === undefined || match[notPrecededByGroup] !== undefined;
92
+ if (boundary && guarded && match.index > 0 && boundary.test(text[match.index - 1])) {
93
+ regex.lastIndex = match.index + 1;
94
+ continue;
95
+ }
96
+ matches.push(match);
97
+ // Zero-length matches would otherwise spin forever.
98
+ if (match[0].length === 0)
99
+ regex.lastIndex += 1;
100
+ }
101
+ return matches;
102
+ }
39
103
  function parseLinks(text, matchers) {
40
104
  const links = [];
41
105
  matchers.forEach(matcher => {
42
- const matches = text.matchAll(matcher.pattern);
106
+ const matches = execMatches(text, matcher);
43
107
  for (const match of matches)
44
108
  if (match.index !== undefined) {
45
109
  const matchText = match[0];
@@ -77,36 +141,41 @@ function removeOverlaps(links) {
77
141
  return filtered;
78
142
  }
79
143
  export function LinkParser({ text, matchers: customMatchers, email = true, phone = true, url = true, hashtag = false, mention = false, hashtagUrl, mentionUrl, linkStyle, onPress, stripPrefix = true, textStyle, TextComponent = Text, }) {
80
- const activeMatchers = [];
81
- // Add custom matchers first (they take precedence)
82
- if (customMatchers)
83
- activeMatchers.push(...customMatchers);
84
- // Add default matchers based on flags
85
- if (url && !customMatchers?.some(m => m.type === 'url'))
86
- activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'url'));
87
- if (email && !customMatchers?.some(m => m.type === 'email'))
88
- activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'email'));
89
- if (phone && !customMatchers?.some(m => m.type === 'phone'))
90
- activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'phone'));
91
- if (hashtag && !customMatchers?.some(m => m.type === 'hashtag')) {
92
- const hashtagMatcher = { ...DEFAULT_MATCHERS.find(m => m.type === 'hashtag') };
93
- if (hashtagUrl) {
94
- hashtagMatcher.baseUrl = hashtagUrl;
95
- const baseUrl = hashtagUrl.endsWith('/') ? hashtagUrl : `${hashtagUrl}/`;
96
- hashtagMatcher.getLinkUrl = (text) => `${baseUrl}${text.substring(1)}`;
144
+ // Parsing is the expensive part of rendering a message body - matcher assembly plus a
145
+ // scan per matcher - and it depends only on the text and the matcher configuration.
146
+ // Left in the render body it re-ran on every render of every message.
147
+ const { links, activeMatchers } = useMemo(() => {
148
+ const activeMatchers = [];
149
+ // Add custom matchers first (they take precedence)
150
+ if (customMatchers)
151
+ activeMatchers.push(...customMatchers);
152
+ // Add default matchers based on flags
153
+ if (url && !customMatchers?.some(m => m.type === 'url'))
154
+ activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'url'));
155
+ if (email && !customMatchers?.some(m => m.type === 'email'))
156
+ activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'email'));
157
+ if (phone && !customMatchers?.some(m => m.type === 'phone'))
158
+ activeMatchers.push(DEFAULT_MATCHERS.find(m => m.type === 'phone'));
159
+ if (hashtag && !customMatchers?.some(m => m.type === 'hashtag')) {
160
+ const hashtagMatcher = { ...DEFAULT_MATCHERS.find(m => m.type === 'hashtag') };
161
+ if (hashtagUrl) {
162
+ hashtagMatcher.baseUrl = hashtagUrl;
163
+ const baseUrl = hashtagUrl.endsWith('/') ? hashtagUrl : `${hashtagUrl}/`;
164
+ hashtagMatcher.getLinkUrl = (text) => `${baseUrl}${text.substring(1)}`;
165
+ }
166
+ activeMatchers.push(hashtagMatcher);
97
167
  }
98
- activeMatchers.push(hashtagMatcher);
99
- }
100
- if (mention && !customMatchers?.some(m => m.type === 'mention')) {
101
- const mentionMatcher = { ...DEFAULT_MATCHERS.find(m => m.type === 'mention') };
102
- if (mentionUrl) {
103
- mentionMatcher.baseUrl = mentionUrl;
104
- const baseUrl = mentionUrl.endsWith('/') ? mentionUrl : `${mentionUrl}/`;
105
- mentionMatcher.getLinkUrl = (text) => `${baseUrl}${text.substring(1)}`;
168
+ if (mention && !customMatchers?.some(m => m.type === 'mention')) {
169
+ const mentionMatcher = { ...DEFAULT_MATCHERS.find(m => m.type === 'mention') };
170
+ if (mentionUrl) {
171
+ mentionMatcher.baseUrl = mentionUrl;
172
+ const baseUrl = mentionUrl.endsWith('/') ? mentionUrl : `${mentionUrl}/`;
173
+ mentionMatcher.getLinkUrl = (text) => `${baseUrl}${text.substring(1)}`;
174
+ }
175
+ activeMatchers.push(mentionMatcher);
106
176
  }
107
- activeMatchers.push(mentionMatcher);
108
- }
109
- const links = removeOverlaps(parseLinks(text, activeMatchers));
177
+ return { activeMatchers, links: removeOverlaps(parseLinks(text, activeMatchers)) };
178
+ }, [text, customMatchers, url, email, phone, hashtag, mention, hashtagUrl, mentionUrl]);
110
179
  if (links.length === 0)
111
180
  return <TextComponent style={textStyle}>{text}</TextComponent>;
112
181
  const elements = [];
@@ -1 +1 @@
1
- {"version":3,"file":"linkParser.js","sourceRoot":"","sources":["../src/linkParser.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linkParser.js","sourceRoot":"","sources":["../src/linkParser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ChatLabels } from '../i18n';
2
+ export declare const ar: Partial<ChatLabels>;
3
+ //# sourceMappingURL=ar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../src/locales/ar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,OAAO,CAAC,UAAU,CAoBlC,CAAA"}
@@ -0,0 +1,22 @@
1
+ export const ar = {
2
+ placeholder: 'اكتب رسالة...',
3
+ send: 'إرسال',
4
+ cancel: 'إلغاء',
5
+ loadEarlier: 'تحميل الرسائل السابقة',
6
+ today: 'اليوم',
7
+ video: 'فيديو',
8
+ voiceMessage: 'رسالة صوتية',
9
+ videoMessage: 'رسالة فيديو',
10
+ location: 'الموقع',
11
+ openLocationAccessibility: 'فتح الموقع في الخرائط',
12
+ slideToCancel: 'اسحب لليمين للإلغاء...',
13
+ replyingTo: 'الرد على {name}',
14
+ editing: 'تعديل',
15
+ cameraPermission: 'مطلوب إذن الكاميرا',
16
+ noCamera: 'لا توجد كاميرا متاحة',
17
+ stopAndSend: 'اضغط للإيقاف والإرسال',
18
+ tapToRecord: 'اضغط للتسجيل',
19
+ releaseToSend: 'اترك للإرسال، اسحب للأعلى للقفل',
20
+ holdToRecord: 'اضغط مطولاً للتسجيل',
21
+ };
22
+ //# sourceMappingURL=ar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar.js","sourceRoot":"","sources":["../../src/locales/ar.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAwB;IACrC,WAAW,EAAE,eAAe;IAC5B,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,aAAa;IAC3B,QAAQ,EAAE,QAAQ;IAClB,yBAAyB,EAAE,uBAAuB;IAClD,aAAa,EAAE,wBAAwB;IACvC,UAAU,EAAE,iBAAiB;IAC7B,OAAO,EAAE,OAAO;IAChB,gBAAgB,EAAE,oBAAoB;IACtC,QAAQ,EAAE,sBAAsB;IAChC,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,iCAAiC;IAChD,YAAY,EAAE,qBAAqB;CACpC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ChatLabels } from '../i18n';
2
+ export declare const de: Partial<ChatLabels>;
3
+ //# sourceMappingURL=de.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../src/locales/de.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,OAAO,CAAC,UAAU,CAoBlC,CAAA"}
@@ -0,0 +1,22 @@
1
+ export const de = {
2
+ placeholder: 'Nachricht schreiben...',
3
+ send: 'Senden',
4
+ cancel: 'Abbrechen',
5
+ loadEarlier: 'Fruhere Nachrichten laden',
6
+ today: 'Heute',
7
+ video: 'Video',
8
+ voiceMessage: 'Sprachnachricht',
9
+ videoMessage: 'Videonachricht',
10
+ location: 'Standort',
11
+ openLocationAccessibility: 'Standort in Karten offnen',
12
+ slideToCancel: 'zum Abbrechen wischen',
13
+ replyingTo: 'Antwort an {name}',
14
+ editing: 'Bearbeiten',
15
+ cameraPermission: 'Kameraberechtigung erforderlich',
16
+ noCamera: 'Keine Kamera verfugbar',
17
+ stopAndSend: 'Tippen zum Beenden und Senden',
18
+ tapToRecord: 'Zum Aufnehmen tippen',
19
+ releaseToSend: 'Loslassen zum Senden, nach oben wischen zum Sperren',
20
+ holdToRecord: 'Zum Aufnehmen gedruckt halten',
21
+ };
22
+ //# sourceMappingURL=de.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de.js","sourceRoot":"","sources":["../../src/locales/de.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAwB;IACrC,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,gBAAgB;IAC9B,QAAQ,EAAE,UAAU;IACpB,yBAAyB,EAAE,2BAA2B;IACtD,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,YAAY;IACrB,gBAAgB,EAAE,iCAAiC;IACnD,QAAQ,EAAE,wBAAwB;IAClC,WAAW,EAAE,+BAA+B;IAC5C,WAAW,EAAE,sBAAsB;IACnC,aAAa,EAAE,qDAAqD;IACpE,YAAY,EAAE,+BAA+B;CAC9C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ChatLabels } from '../i18n';
2
+ export declare const es: Partial<ChatLabels>;
3
+ //# sourceMappingURL=es.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/locales/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,OAAO,CAAC,UAAU,CAoBlC,CAAA"}
@@ -0,0 +1,22 @@
1
+ export const es = {
2
+ placeholder: 'Escribe un mensaje...',
3
+ send: 'Enviar',
4
+ cancel: 'Cancelar',
5
+ loadEarlier: 'Cargar mensajes anteriores',
6
+ today: 'Hoy',
7
+ video: 'Video',
8
+ voiceMessage: 'Mensaje de voz',
9
+ videoMessage: 'Mensaje de video',
10
+ location: 'Ubicacion',
11
+ openLocationAccessibility: 'Abrir ubicacion en mapas',
12
+ slideToCancel: 'desliza para cancelar',
13
+ replyingTo: 'Respondiendo a {name}',
14
+ editing: 'Editando',
15
+ cameraPermission: 'Se necesita permiso de camara',
16
+ noCamera: 'No hay camara disponible',
17
+ stopAndSend: 'Toca para detener y enviar',
18
+ tapToRecord: 'Toca para grabar',
19
+ releaseToSend: 'Suelta para enviar, desliza arriba para bloquear',
20
+ holdToRecord: 'Manten pulsado para grabar',
21
+ };
22
+ //# sourceMappingURL=es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/locales/es.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAwB;IACrC,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;IAClB,WAAW,EAAE,4BAA4B;IACzC,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,QAAQ,EAAE,WAAW;IACrB,yBAAyB,EAAE,0BAA0B;IACrD,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,uBAAuB;IACnC,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,+BAA+B;IACjD,QAAQ,EAAE,0BAA0B;IACpC,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,kBAAkB;IAC/B,aAAa,EAAE,kDAAkD;IACjE,YAAY,EAAE,4BAA4B;CAC3C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ChatLabels } from '../i18n';
2
+ export declare const fr: Partial<ChatLabels>;
3
+ //# sourceMappingURL=fr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr.d.ts","sourceRoot":"","sources":["../../src/locales/fr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,OAAO,CAAC,UAAU,CAoBlC,CAAA"}
@@ -0,0 +1,22 @@
1
+ export const fr = {
2
+ placeholder: 'Ecrire un message...',
3
+ send: 'Envoyer',
4
+ cancel: 'Annuler',
5
+ loadEarlier: 'Charger les messages precedents',
6
+ today: 'Aujourd\'hui',
7
+ video: 'Video',
8
+ voiceMessage: 'Message vocal',
9
+ videoMessage: 'Message vidéo',
10
+ location: 'Position',
11
+ openLocationAccessibility: 'Ouvrir la position dans les cartes',
12
+ slideToCancel: 'glisser pour annuler',
13
+ replyingTo: 'Reponse a {name}',
14
+ editing: 'Modification',
15
+ cameraPermission: 'Autorisation de la camera requise',
16
+ noCamera: 'Aucune camera disponible',
17
+ stopAndSend: 'Appuyez pour arreter et envoyer',
18
+ tapToRecord: 'Appuyez pour enregistrer',
19
+ releaseToSend: 'Relachez pour envoyer, glissez vers le haut pour verrouiller',
20
+ holdToRecord: 'Maintenez pour enregistrer',
21
+ };
22
+ //# sourceMappingURL=fr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr.js","sourceRoot":"","sources":["../../src/locales/fr.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,EAAE,GAAwB;IACrC,WAAW,EAAE,sBAAsB;IACnC,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,iCAAiC;IAC9C,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,yBAAyB,EAAE,oCAAoC;IAC/D,aAAa,EAAE,sBAAsB;IACrC,UAAU,EAAE,kBAAkB;IAC9B,OAAO,EAAE,cAAc;IACvB,gBAAgB,EAAE,mCAAmC;IACrD,QAAQ,EAAE,0BAA0B;IACpC,WAAW,EAAE,iCAAiC;IAC9C,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,8DAA8D;IAC7E,YAAY,EAAE,4BAA4B;CAC3C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ChatLabels } from '../i18n';
2
+ export declare const hi: Partial<ChatLabels>;
3
+ //# sourceMappingURL=hi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hi.d.ts","sourceRoot":"","sources":["../../src/locales/hi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,OAAO,CAAC,UAAU,CAoBlC,CAAA"}