stream-chat-react-native-core 5.12.1-beta.2 → 5.13.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  2. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  3. package/lib/commonjs/components/Chat/Chat.js +1 -4
  4. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  5. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
  6. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  7. package/lib/commonjs/hooks/useStreami18n.js +17 -8
  8. package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
  9. package/lib/commonjs/utils/Streami18n.js +78 -27
  10. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  11. package/lib/commonjs/version.json +1 -1
  12. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
  13. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  14. package/lib/module/components/Chat/Chat.js +1 -4
  15. package/lib/module/components/Chat/Chat.js.map +1 -1
  16. package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
  17. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  18. package/lib/module/hooks/useStreami18n.js +17 -8
  19. package/lib/module/hooks/useStreami18n.js.map +1 -1
  20. package/lib/module/utils/Streami18n.js +78 -27
  21. package/lib/module/utils/Streami18n.js.map +1 -1
  22. package/lib/module/version.json +1 -1
  23. package/lib/typescript/hooks/useStreami18n.d.ts +1 -4
  24. package/lib/typescript/utils/Streami18n.d.ts +13 -6
  25. package/package.json +1 -1
  26. package/src/__tests__/optimistic-update.test.js +2 -1
  27. package/src/components/ChannelList/__tests__/ChannelList.test.js +4 -2
  28. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
  29. package/src/components/Chat/Chat.tsx +1 -1
  30. package/src/contexts/overlayContext/OverlayProvider.tsx +1 -1
  31. package/src/hooks/useStreami18n.ts +21 -12
  32. package/src/utils/Streami18n.ts +66 -18
  33. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_fr2","_he2","_hi2","_it2","_ja2","_ko2","_nl2","_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","setLanguageCallback","initialized","t","key","translations","en","_defineProperty2","enTranslations","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","_extends2","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","wrap","_callee$","_context","prev","next","init","resources","sent","t0","abrupt","stop","apply","_getTranslators","_callee2","_callee2$","_context2","getTranslators","registerTranslation","translation","customDayjsLocale","addResources","config","name","_setLanguage","_callee3","_t","_callee3$","_context3","changeLanguage","setLanguage","_x","registerSetLanguageCallback","callback","exports"],"sources":["Streami18n.ts"],"sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n setLanguageCallback: (t: TFunction) => void = () => null;\n initialized = false;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n return await this.init();\n } else {\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.setLanguageCallback(t);\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n registerSetLanguageCallback(callback: (t: TFunction) => void) {\n this.setLanguageCallback = callback;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_fr2","_he2","_hi2","_it2","_ja2","_ko2","_nl2","_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","fr","frTranslations","he","heTranslations","hi","hiTranslations","it","itTranslations","ja","jaTranslations","ko","koTranslations","nl","nlTranslations","ru","ruTranslations","tr","trTranslations","dayjsLocales","localeExists","isCustomDateTimeParser","Object","keys","Ls","indexOf","validateCurrentLanguage","availableLanguages","currentLanguage","getAvailableLanguages","geti18Instance","getTranslations","finalOptions","_extends2","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"],"sources":["Streami18n.ts"],"sourcesContent":["import Dayjs from 'dayjs';\nimport calendar from 'dayjs/plugin/calendar';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport i18n, { FallbackLng, TFunction } from 'i18next';\n\nimport type moment from 'moment';\n\nimport type { TDateTimeParser } from '../contexts/translationContext/TranslationContext';\nimport enTranslations from '../i18n/en.json';\nimport frTranslations from '../i18n/fr.json';\nimport heTranslations from '../i18n/he.json';\nimport hiTranslations from '../i18n/hi.json';\nimport itTranslations from '../i18n/it.json';\nimport jaTranslations from '../i18n/ja.json';\nimport koTranslations from '../i18n/ko.json';\nimport nlTranslations from '../i18n/nl.json';\nimport ruTranslations from '../i18n/ru.json';\nimport trTranslations from '../i18n/tr.json';\n\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ko';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/he';\n\n/**\n * These locale imports also set these locales globally.\n * So as a last step we import the english locale to make\n * sure we don't mess up languages in other places in the app.\n */\nimport 'dayjs/locale/en';\n\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\nconst defaultNS = 'translation';\nconst defaultLng = 'en';\n\nDayjs.extend(updateLocale);\n\nDayjs.updateLocale('en', {\n format: {\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n LT: 'hh:mmA',\n LTS: 'HH:mm:ss',\n },\n});\n\nDayjs.updateLocale('nl', {\n calendar: {\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n sameDay: '[vandaag om] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('it', {\n calendar: {\n lastDay: '[Ieri alle] LT',\n lastWeek: '[lo scorso] dddd [alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n sameDay: '[Oggi alle] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('hi', {\n calendar: {\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n sameDay: '[आज] LT',\n sameElse: 'L',\n },\n\n /**\n * Hindi notation for meridiems are quite fuzzy in practice. While there exists\n * a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n */\n meridiem(hour: number) {\n if (hour < 4) return 'रात';\n if (hour < 10) return 'सुबह';\n if (hour < 17) return 'दोपहर';\n if (hour < 20) return 'शाम';\n return 'रात';\n },\n\n meridiemHour(hour: number, meridiem: string) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') return hour < 4 ? hour : hour + 12;\n if (meridiem === 'सुबह') return hour;\n if (meridiem === 'दोपहर') return hour >= 10 ? hour : hour + 12;\n if (meridiem === 'शाम') return hour + 12;\n return hour;\n },\n\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n});\n\nDayjs.updateLocale('fr', {\n calendar: {\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n sameDay: '[Aujourd’hui à] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('tr', {\n calendar: {\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n sameDay: '[bugün saat] LT',\n sameElse: 'L',\n },\n});\n\nDayjs.updateLocale('ru', {\n calendar: {\n lastDay: '[Вчера, в] LT',\n nextDay: '[Завтра, в] LT',\n sameDay: '[Сегодня, в] LT',\n },\n});\n\nconst en_locale = {\n formats: {},\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n relativeTime: {},\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n};\n\n// Type guards to check DayJs\nconst isDayJs = (dateTimeParser: typeof Dayjs | typeof moment): dateTimeParser is typeof Dayjs =>\n (dateTimeParser as typeof Dayjs).extend !== undefined;\n\ntype Options = {\n DateTimeParser?: typeof Dayjs | typeof moment;\n dayjsLocaleConfigForLanguage?: Partial<ILocale>;\n debug?: boolean;\n disableDateTimeTranslations?: boolean;\n language?: string;\n logger?: (msg?: string) => void;\n translationsForLanguage?: Partial<typeof enTranslations>;\n};\n\ntype I18NextConfig = {\n debug: boolean;\n fallbackLng: false | FallbackLng;\n interpolation: { escapeValue: boolean };\n keySeparator: false | string;\n lng: string;\n nsSeparator: false | string;\n parseMissingKeyHandler: (key: string) => string;\n};\n\n/**\n * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.\n * Instance of this class should be provided to Chat component to handle translations.\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. Russian (ru)\n * 4. Turkish (tr)\n * 5. French (fr)\n * 6. Italian (it)\n * 7. Hindi (hi)\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n({ language 'nl' });\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * translationsForLanguage: {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * }\n * });\n *\n * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:\n *\n * i18n.registerTranslation('zh', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language as well.\n *\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation('mr', {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * ## Datetime translations\n *\n * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.\n * e.g., in ChannelPreview, MessageContent components.\n * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n\n * Dayjs is a lightweight alternative to Momentjs with the same modern API.\n *\n * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url\n * https://github.com/iamkun/dayjs/tree/dev/src/locale\n *\n * You can either provide the dayjs locale config while registering\n * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance\n * to Streami18n constructor, which will be then used internally (using the language locale) in components.\n *\n * 1. Via language registration\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n({\n * language: 'nl',\n * dayjsLocaleConfigForLanguage: {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * });\n * ```\n *\n * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.\n *\n * e.g.,\n * ```\n * const i18n = new Streami18n();\n *\n * i18n.registerTranslation(\n * 'mr',\n * {\n * 'Nothing yet...': 'काहीही नाही ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',\n * },\n * {\n * months: [...],\n * monthsShort: [...],\n * calendar: {\n * sameDay: ...'\n * }\n * }\n * );\n *```\n * 2. Provide your own Moment object\n *\n * ```js\n * import 'moment/locale/nl';\n * import 'moment/locale/it';\n * // or if you want to include all locales\n * import 'moment/min/locales';\n *\n * import Moment from moment\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Moment\n * })\n * ```\n *\n * 3. Provide your own Dayjs object\n *\n * ```js\n * import Dayjs from 'dayjs'\n *\n * import 'dayjs/locale/nl';\n * import 'dayjs/locale/it';\n * // or if you want to include all locales\n * import 'dayjs/min/locales';\n *\n * const i18n = new Streami18n({\n * language: 'nl',\n * DateTimeParser: Dayjs\n * })\n * ```\n * If you would like to stick with english language for date-times in Stream components, you can set `disableDateTimeTranslations` to true.\n *\n */\nconst defaultStreami18nOptions = {\n DateTimeParser: Dayjs,\n dayjsLocaleConfigForLanguage: null,\n debug: false,\n disableDateTimeTranslations: false,\n language: 'en',\n logger: (msg?: string) => console.warn(msg),\n};\n\nexport class Streami18n {\n i18nInstance = i18n.createInstance();\n Dayjs = null;\n initialized = false;\n /* this promise is used to prevent simultaneous calls to init (happens in Overlay and Chat) */\n private waitForInitializing: Promise<void> | undefined;\n /* This is the callback to be fired when the language is changed */\n private onLanguageChangeListeners: ((t: TFunction) => void)[] = [];\n /* This is the callback to be fired when the tFunc is overridden\n * This is useful when a different i18n library needs to be used\n * The SDK uses this in useStreami18n hook to set the tFunc in the context\n */\n private onTFunctionOverrideListeners: ((t: TFunction) => void)[] = [];\n /* We need to queue the overridden tFunction\n * if the tFunction is overridden before the SDK has initialized the translations\n */\n private queuedTFunctionOverride: TFunction | undefined;\n\n t: TFunction = (key: string) => key;\n tDateTimeParser: TDateTimeParser;\n\n translations: {\n [key: string]: {\n [key: string]: Partial<typeof enTranslations> | DefaultStreamChatGenerics;\n };\n } = {\n en: { [defaultNS]: enTranslations },\n fr: { [defaultNS]: frTranslations },\n he: { [defaultNS]: heTranslations },\n hi: { [defaultNS]: hiTranslations },\n it: { [defaultNS]: itTranslations },\n ja: { [defaultNS]: jaTranslations },\n ko: { [defaultNS]: koTranslations },\n nl: { [defaultNS]: nlTranslations },\n ru: { [defaultNS]: ruTranslations },\n tr: { [defaultNS]: trTranslations },\n };\n\n /**\n * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that\n * when a user calls the registerTranslation() function. So instead we will store the\n * locale configs given to the registerTranslation() function in `dayjsLocales` object,\n * and register the required locale with moment when setLanguage is called.\n */\n dayjsLocales: { [key: string]: Partial<ILocale> } = {};\n\n /**\n * Initialize properties used in constructor\n */\n logger: (msg?: string) => void;\n currentLanguage: string;\n DateTimeParser: typeof Dayjs | typeof moment;\n isCustomDateTimeParser: boolean;\n i18nextConfig: I18NextConfig;\n\n /**\n * Constructor accepts following options:\n * - language (String) default: 'en'\n * Language code e.g., en, tr\n *\n * - translationsForLanguage (object)\n * Translations object. Please check src/i18n/en.json for example.\n *\n * - disableDateTimeTranslations (boolean) default: false\n * Disable translations for date-times\n *\n * - debug (boolean) default: false\n * Enable debug mode in internal i18n class\n *\n * - logger (function) default: () => {}\n * Logger function to log warnings/errors from this class\n *\n * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'\n * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,\n * corresponding to language (param)\n *\n * - DateTimeParser (function) Moment or Dayjs instance/function.\n * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n\n *\n * @param {*} options\n */\n constructor(options: Options = {}, i18nextConfig: Partial<I18NextConfig> = {}) {\n const finalOptions = {\n ...defaultStreami18nOptions,\n ...options,\n };\n\n // Prepare the i18next configuration.\n this.logger = finalOptions.logger;\n\n this.currentLanguage = finalOptions.language;\n this.DateTimeParser = finalOptions.DateTimeParser;\n\n try {\n /**\n * This is a shallow check to see if the given parser is an instance of Dayjs.\n * For some reason Dayjs.isDayjs(this.DateTimeParser()) doesn't work.\n */\n if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {\n this.DateTimeParser.extend(LocalizedFormat);\n this.DateTimeParser.extend(calendar);\n this.DateTimeParser.extend(localeData);\n this.DateTimeParser.extend(relativeTime);\n }\n } catch (error) {\n throw new Error(\n `Streami18n: Looks like you wanted to provide a Dayjs instance but something went wrong while adding plugins ${JSON.stringify(\n error,\n )}`,\n );\n }\n\n this.isCustomDateTimeParser = !!options.DateTimeParser;\n const translationsForLanguage = finalOptions.translationsForLanguage;\n\n if (translationsForLanguage) {\n this.translations[this.currentLanguage] = {\n [defaultNS]:\n this.translations[this.currentLanguage] &&\n this.translations[this.currentLanguage][defaultNS]\n ? {\n ...this.translations[this.currentLanguage][defaultNS],\n ...translationsForLanguage,\n }\n : translationsForLanguage,\n };\n }\n\n // If translations don't exist for given language, then set it as empty object.\n if (!this.translations[this.currentLanguage]) {\n this.translations[this.currentLanguage] = {\n [defaultNS]: {},\n };\n }\n\n this.i18nextConfig = {\n debug: finalOptions.debug,\n fallbackLng: false,\n interpolation: { escapeValue: false },\n keySeparator: false,\n lng: this.currentLanguage,\n nsSeparator: false,\n\n parseMissingKeyHandler: (key: string) => {\n this.logger(`Streami18n: Missing translation for key: ${key}`);\n\n return key;\n },\n ...i18nextConfig,\n };\n\n this.validateCurrentLanguage();\n\n const dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;\n\n if (dayjsLocaleConfigForLanguage) {\n this.addOrUpdateLocale(this.currentLanguage, {\n ...dayjsLocaleConfigForLanguage,\n });\n } else if (!this.localeExists(this.currentLanguage)) {\n this.logger(\n `Streami18n: Streami18n(...) - Locale config for ${this.currentLanguage} does not exist in momentjs.` +\n `Please import the locale file using \"import 'moment/locale/${this.currentLanguage}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n this.tDateTimeParser = (timestamp) => {\n if (finalOptions.disableDateTimeTranslations || !this.localeExists(this.currentLanguage)) {\n /**\n * TS needs to know which is being called to accept the chain call\n */\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n return this.DateTimeParser(timestamp).locale(defaultLng);\n }\n if (isDayJs(this.DateTimeParser)) {\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n }\n return this.DateTimeParser(timestamp).locale(this.currentLanguage);\n };\n }\n\n /**\n * Initializes the i18next instance with configuration (which enables natural language as default keys)\n */\n private async init() {\n this.validateCurrentLanguage();\n\n try {\n this.t = await this.i18nInstance.init({\n ...this.i18nextConfig,\n lng: this.currentLanguage,\n resources: this.translations,\n });\n if (this.queuedTFunctionOverride) {\n // special case where we have a override for tFunc before initialization\n this.t = this.queuedTFunctionOverride;\n this.queuedTFunctionOverride = undefined;\n this.onTFunctionOverrideListeners.forEach((listener) => listener(this.t));\n }\n this.initialized = true;\n } catch (error) {\n this.logger(`Something went wrong with init: ${JSON.stringify(error)}`);\n }\n this.waitForInitializing = undefined;\n }\n\n localeExists = (language: string) => {\n if (this.isCustomDateTimeParser) return true;\n\n return Object.keys(Dayjs.Ls).indexOf(language) > -1;\n };\n\n validateCurrentLanguage = () => {\n const availableLanguages = Object.keys(this.translations);\n if (availableLanguages.indexOf(this.currentLanguage) === -1) {\n this.logger(\n `Streami18n: '${this.currentLanguage}' language is not registered.` +\n ` Please make sure to call streami18n.registerTranslation('${this.currentLanguage}', {...}) or ` +\n `use one the built-in supported languages - ${this.getAvailableLanguages()}`,\n );\n\n this.currentLanguage = defaultLng;\n }\n };\n\n /** Returns an instance of i18next used within this class instance */\n geti18Instance = () => this.i18nInstance;\n\n /** Returns list of available languages. */\n getAvailableLanguages = () => Object.keys(this.translations);\n\n /** Returns all the translation dictionary for all inbuilt-languages */\n getTranslations = () => this.translations;\n\n /**\n * Returns current version translator function.\n */\n async getTranslators() {\n if (!this.initialized) {\n if (this.waitForInitializing) {\n await this.waitForInitializing;\n } else {\n if (this.dayjsLocales[this.currentLanguage]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n const initPromise = this.init();\n this.waitForInitializing = initPromise;\n await initPromise;\n }\n }\n return {\n t: this.t,\n tDateTimeParser: this.tDateTimeParser,\n };\n }\n\n /**\n * Register translation\n */\n registerTranslation(\n language: string,\n translation: Partial<typeof enTranslations> | DefaultStreamChatGenerics,\n customDayjsLocale?: Partial<ILocale>,\n ) {\n if (!translation) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation`,\n );\n return;\n }\n\n if (!this.translations[language]) {\n this.translations[language] = { [defaultNS]: translation };\n } else {\n this.translations[language][defaultNS] = translation;\n }\n\n if (customDayjsLocale) {\n this.dayjsLocales[language] = { ...customDayjsLocale };\n } else if (!this.localeExists(language)) {\n this.logger(\n `Streami18n: registerTranslation(language, translation, customDayjsLocale) - ` +\n `Locale config for ${language} does not exist in Dayjs.` +\n `Please import the locale file using \"import 'dayjs/locale/${language}';\" in your app or ` +\n `register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)`,\n );\n }\n\n if (this.initialized) {\n this.i18nInstance.addResources(language, defaultNS, translation);\n }\n }\n\n addOrUpdateLocale(key: string, config: Partial<ILocale>) {\n if (this.localeExists(key)) {\n Dayjs.updateLocale(key, { ...config });\n } else {\n // Merging the custom locale config with en config, so missing keys can default to english.\n Dayjs.locale({ name: key, ...en_locale, ...config }, undefined, true);\n }\n }\n\n /**\n * Changes the language.\n * Note: if you are using overrideTFunction, you will need to call the override again after changing the language.\n */\n async setLanguage(language: string) {\n this.currentLanguage = language;\n\n if (!this.initialized) return;\n\n try {\n const t = await this.i18nInstance.changeLanguage(language);\n if (this.dayjsLocales[language]) {\n this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);\n }\n this.t = t;\n this.onLanguageChangeListeners.forEach((listener) => listener(t));\n\n return t;\n } catch (error) {\n this.logger(`Failed to set language: ${JSON.stringify(error)}`);\n return this.t;\n }\n }\n\n addOnLanguageChangeListener(callback: (t: TFunction) => void) {\n this.onLanguageChangeListeners.push(callback);\n return {\n unsubscribe: () => {\n this.onLanguageChangeListeners = this.onLanguageChangeListeners.filter(\n (listener) => listener !== callback,\n );\n },\n };\n }\n\n addOnTFunctionOverrideListener(callback: (t: TFunction) => void) {\n this.onTFunctionOverrideListeners.push(callback);\n return {\n unsubscribe: () => {\n this.onTFunctionOverrideListeners = this.onTFunctionOverrideListeners.filter(\n (listener) => listener !== callback,\n );\n },\n };\n }\n\n overrideTFunction(tFunction: TFunction) {\n if (!this.initialized) {\n this.queuedTFunctionOverride = tFunction;\n } else {\n this.t = tFunction;\n this.onTFunctionOverrideListeners.forEach((listener) => listener(tFunction));\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,gBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,aAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,aAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,QAAA,GAAAP,sBAAA,CAAAC,OAAA;AAKA,IAAAO,IAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,IAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,IAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,IAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,IAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,IAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,IAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,IAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,IAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,IAAA,GAAAjB,sBAAA,CAAAC,OAAA;AAEAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAOAA,OAAA;AAIA,IAAMiB,SAAS,GAAG,aAAa;AAC/B,IAAMC,UAAU,GAAG,IAAI;AAEvBC,iBAAK,CAACC,MAAM,CAACC,wBAAY,CAAC;AAE1BF,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBC,MAAM,EAAE;IACNC,CAAC,EAAE,YAAY;IACfC,EAAE,EAAE,aAAa;IACjBC,GAAG,EAAE,mBAAmB;IACxBC,IAAI,EAAE,yBAAyB;IAC/BC,EAAE,EAAE,QAAQ;IACZC,GAAG,EAAE;EACP;AACF,CAAC,CAAC;AAEFT,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,kBAAkB;IAC3BC,QAAQ,EAAE,0BAA0B;IACpCC,OAAO,EAAE,gBAAgB;IACzBC,QAAQ,EAAE,cAAc;IACxBC,OAAO,EAAE,iBAAiB;IAC1BC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEFhB,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,gBAAgB;IACzBC,QAAQ,EAAE,4BAA4B;IACtCC,OAAO,EAAE,kBAAkB;IAC3BC,QAAQ,EAAE,gBAAgB;IAC1BC,OAAO,EAAE,gBAAgB;IACzBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEFhB,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,SAAS;IAClBC,QAAQ,EAAE,kBAAkB;IAC5BC,OAAO,EAAE,SAAS;IAClBC,QAAQ,EAAE,UAAU;IACpBC,OAAO,EAAE,SAAS;IAClBC,QAAQ,EAAE;EACZ,CAAC;EAMDC,QAAQ,WAAAA,SAACC,IAAY,EAAE;IACrB,IAAIA,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK;IAC1B,IAAIA,IAAI,GAAG,EAAE,EAAE,OAAO,MAAM;IAC5B,IAAIA,IAAI,GAAG,EAAE,EAAE,OAAO,OAAO;IAC7B,IAAIA,IAAI,GAAG,EAAE,EAAE,OAAO,KAAK;IAC3B,OAAO,KAAK;EACd,CAAC;EAEDC,YAAY,WAAAA,aAACD,IAAY,EAAED,QAAgB,EAAE;IAC3C,IAAIC,IAAI,KAAK,EAAE,EAAE;MACfA,IAAI,GAAG,CAAC;IACV;IACA,IAAID,QAAQ,KAAK,KAAK,EAAE,OAAOC,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAGA,IAAI,GAAG,EAAE;IAC1D,IAAID,QAAQ,KAAK,MAAM,EAAE,OAAOC,IAAI;IACpC,IAAID,QAAQ,KAAK,OAAO,EAAE,OAAOC,IAAI,IAAI,EAAE,GAAGA,IAAI,GAAGA,IAAI,GAAG,EAAE;IAC9D,IAAID,QAAQ,KAAK,KAAK,EAAE,OAAOC,IAAI,GAAG,EAAE;IACxC,OAAOA,IAAI;EACb,CAAC;EAEDE,aAAa,EAAE;AACjB,CAAC,CAAC;AAEFpB,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,aAAa;IACtBC,QAAQ,EAAE,qBAAqB;IAC/BC,OAAO,EAAE,eAAe;IACxBC,QAAQ,EAAE,aAAa;IACvBC,OAAO,EAAE,oBAAoB;IAC7BC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEFhB,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,UAAU;IACnBC,QAAQ,EAAE,wBAAwB;IAClCC,OAAO,EAAE,iBAAiB;IAC1BC,QAAQ,EAAE,0BAA0B;IACpCC,OAAO,EAAE,iBAAiB;IAC1BC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEFhB,iBAAK,CAACE,YAAY,CAAC,IAAI,EAAE;EACvBQ,QAAQ,EAAE;IACRC,OAAO,EAAE,eAAe;IACxBE,OAAO,EAAE,gBAAgB;IACzBE,OAAO,EAAE;EACX;AACF,CAAC,CAAC;AAEF,IAAMM,SAAS,GAAG;EAChBC,OAAO,EAAE,CAAC,CAAC;EACXC,MAAM,EAAE,CACN,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,CACX;EACDC,YAAY,EAAE,CAAC,CAAC;EAChBC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;AACzF,CAAC;AAGD,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAIC,cAA4C;EAAA,OAC1DA,cAAc,CAAkB1B,MAAM,KAAK2B,SAAS;AAAA;AAyKvD,IAAMC,wBAAwB,GAAG;EAC/BC,cAAc,EAAE9B,iBAAK;EACrB+B,4BAA4B,EAAE,IAAI;EAClCC,KAAK,EAAE,KAAK;EACZC,2BAA2B,EAAE,KAAK;EAClCC,QAAQ,EAAE,IAAI;EACdC,MAAM,EAAE,SAAAA,OAACC,GAAY;IAAA,OAAKC,OAAO,CAACC,IAAI,CAACF,GAAG,CAAC;EAAA;AAC7C,CAAC;AAAC,IAEWG,UAAU;EAiFrB,SAAAA,WAAA,EAA+E;IAAA,IAAAC,KAAA;IAAA,IAAnEC,OAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAd,SAAA,GAAAc,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEE,aAAqC,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAd,SAAA,GAAAc,SAAA,MAAG,CAAC,CAAC;IAAA,IAAAG,gBAAA,mBAAAN,UAAA;IAAA,KAhF7EO,YAAY,GAAGC,mBAAI,CAACC,cAAc,EAAE;IAAA,KACpChD,KAAK,GAAG,IAAI;IAAA,KACZiD,WAAW,GAAG,KAAK;IAAA,KAIXC,yBAAyB,GAA+B,EAAE;IAAA,KAK1DC,4BAA4B,GAA+B,EAAE;IAAA,KAMrEC,CAAC,GAAc,UAACC,GAAW;MAAA,OAAKA,GAAG;IAAA;IAAA,KAGnCC,YAAY,GAIR;MACFC,EAAE,MAAAC,gBAAA,iBAAK1D,SAAS,EAAG2D,eAAc,CAAE;MACnCC,EAAE,MAAAF,gBAAA,iBAAK1D,SAAS,EAAG6D,eAAc,CAAE;MACnCC,EAAE,MAAAJ,gBAAA,iBAAK1D,SAAS,EAAG+D,eAAc,CAAE;MACnCC,EAAE,MAAAN,gBAAA,iBAAK1D,SAAS,EAAGiE,eAAc,CAAE;MACnCC,EAAE,MAAAR,gBAAA,iBAAK1D,SAAS,EAAGmE,eAAc,CAAE;MACnCC,EAAE,MAAAV,gBAAA,iBAAK1D,SAAS,EAAGqE,eAAc,CAAE;MACnCC,EAAE,MAAAZ,gBAAA,iBAAK1D,SAAS,EAAGuE,eAAc,CAAE;MACnCC,EAAE,MAAAd,gBAAA,iBAAK1D,SAAS,EAAGyE,eAAc,CAAE;MACnCC,EAAE,MAAAhB,gBAAA,iBAAK1D,SAAS,EAAG2E,eAAc,CAAE;MACnCC,EAAE,MAAAlB,gBAAA,iBAAK1D,SAAS,EAAG6E,eAAc;IACnC,CAAC;IAAA,KAQDC,YAAY,GAAwC,CAAC,CAAC;IAAA,KAqKtDC,YAAY,GAAG,UAAC3C,QAAgB,EAAK;MACnC,IAAIM,KAAI,CAACsC,sBAAsB,EAAE,OAAO,IAAI;MAE5C,OAAOC,MAAM,CAACC,IAAI,CAAChF,iBAAK,CAACiF,EAAE,CAAC,CAACC,OAAO,CAAChD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAAA,KAEDiD,uBAAuB,GAAG,YAAM;MAC9B,IAAMC,kBAAkB,GAAGL,MAAM,CAACC,IAAI,CAACxC,KAAI,CAACc,YAAY,CAAC;MACzD,IAAI8B,kBAAkB,CAACF,OAAO,CAAC1C,KAAI,CAAC6C,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3D7C,KAAI,CAACL,MAAM,CACT,kBAAgBK,KAAI,CAAC6C,eAAe,qGAC2B7C,KAAI,CAAC6C,eAAe,mBAAe,oDAClD7C,KAAI,CAAC8C,qBAAqB,EAAE,CAAE,CAC/E;QAED9C,KAAI,CAAC6C,eAAe,GAAGtF,UAAU;MACnC;IACF,CAAC;IAAA,KAGDwF,cAAc,GAAG;MAAA,OAAM/C,KAAI,CAACM,YAAY;IAAA;IAAA,KAGxCwC,qBAAqB,GAAG;MAAA,OAAMP,MAAM,CAACC,IAAI,CAACxC,KAAI,CAACc,YAAY,CAAC;IAAA;IAAA,KAG5DkC,eAAe,GAAG;MAAA,OAAMhD,KAAI,CAACc,YAAY;IAAA;IAzJvC,IAAMmC,YAAY,OAAAC,SAAA,iBACb7D,wBAAwB,EACxBY,OAAO,CACX;IAGD,IAAI,CAACN,MAAM,GAAGsD,YAAY,CAACtD,MAAM;IAEjC,IAAI,CAACkD,eAAe,GAAGI,YAAY,CAACvD,QAAQ;IAC5C,IAAI,CAACJ,cAAc,GAAG2D,YAAY,CAAC3D,cAAc;IAEjD,IAAI;MAKF,IAAI,IAAI,CAACA,cAAc,IAAIJ,OAAO,CAAC,IAAI,CAACI,cAAc,CAAC,EAAE;QACvD,IAAI,CAACA,cAAc,CAAC7B,MAAM,CAAC0F,2BAAe,CAAC;QAC3C,IAAI,CAAC7D,cAAc,CAAC7B,MAAM,CAACS,oBAAQ,CAAC;QACpC,IAAI,CAACoB,cAAc,CAAC7B,MAAM,CAAC2F,sBAAU,CAAC;QACtC,IAAI,CAAC9D,cAAc,CAAC7B,MAAM,CAACuB,wBAAY,CAAC;MAC1C;IACF,CAAC,CAAC,OAAOqE,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,kHACkGC,IAAI,CAACC,SAAS,CAC3HH,KAAK,CACN,CACF;IACH;IAEA,IAAI,CAACf,sBAAsB,GAAG,CAAC,CAACrC,OAAO,CAACX,cAAc;IACtD,IAAMmE,uBAAuB,GAAGR,YAAY,CAACQ,uBAAuB;IAEpE,IAAIA,uBAAuB,EAAE;MAC3B,IAAI,CAAC3C,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,OAAA7B,gBAAA,iBACpC1D,SAAS,EACR,IAAI,CAACwD,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,IACvC,IAAI,CAAC/B,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,CAACvF,SAAS,CAAC,OAAA4F,SAAA,iBAEzC,IAAI,CAACpC,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,CAACvF,SAAS,CAAC,EAClDmG,uBAAuB,IAE5BA,uBAAuB,CAC9B;IACH;IAGA,IAAI,CAAC,IAAI,CAAC3C,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,EAAE;MAC5C,IAAI,CAAC/B,YAAY,CAAC,IAAI,CAAC+B,eAAe,CAAC,OAAA7B,gBAAA,iBACpC1D,SAAS,EAAG,CAAC,CAAC,CAChB;IACH;IAEA,IAAI,CAAC8C,aAAa,OAAA8C,SAAA;MAChB1D,KAAK,EAAEyD,YAAY,CAACzD,KAAK;MACzBkE,WAAW,EAAE,KAAK;MAClBC,aAAa,EAAE;QAAEC,WAAW,EAAE;MAAM,CAAC;MACrCC,YAAY,EAAE,KAAK;MACnBC,GAAG,EAAE,IAAI,CAACjB,eAAe;MACzBkB,WAAW,EAAE,KAAK;MAElBC,sBAAsB,EAAE,SAAAA,uBAACnD,GAAW,EAAK;QACvCb,KAAI,CAACL,MAAM,+CAA6CkB,GAAG,CAAG;QAE9D,OAAOA,GAAG;MACZ;IAAC,GACET,aAAa,CACjB;IAED,IAAI,CAACuC,uBAAuB,EAAE;IAE9B,IAAMpD,4BAA4B,GAAG0D,YAAY,CAAC1D,4BAA4B;IAE9E,IAAIA,4BAA4B,EAAE;MAChC,IAAI,CAAC0E,iBAAiB,CAAC,IAAI,CAACpB,eAAe,MAAAK,SAAA,iBACtC3D,4BAA4B,EAC/B;IACJ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC8C,YAAY,CAAC,IAAI,CAACQ,eAAe,CAAC,EAAE;MACnD,IAAI,CAAClD,MAAM,CACT,qDAAmD,IAAI,CAACkD,eAAe,sGACP,IAAI,CAACA,eAAe,0BAAqB,mHACS,CACnH;IACH;IAEA,IAAI,CAACqB,eAAe,GAAG,UAACC,SAAS,EAAK;MACpC,IAAIlB,YAAY,CAACxD,2BAA2B,IAAI,CAACO,KAAI,CAACqC,YAAY,CAACrC,KAAI,CAAC6C,eAAe,CAAC,EAAE;QAIxF,IAAI3D,OAAO,CAACc,KAAI,CAACV,cAAc,CAAC,EAAE;UAChC,OAAOU,KAAI,CAACV,cAAc,CAAC6E,SAAS,CAAC,CAACC,MAAM,CAAC7G,UAAU,CAAC;QAC1D;QACA,OAAOyC,KAAI,CAACV,cAAc,CAAC6E,SAAS,CAAC,CAACC,MAAM,CAAC7G,UAAU,CAAC;MAC1D;MACA,IAAI2B,OAAO,CAACc,KAAI,CAACV,cAAc,CAAC,EAAE;QAChC,OAAOU,KAAI,CAACV,cAAc,CAAC6E,SAAS,CAAC,CAACC,MAAM,CAACpE,KAAI,CAAC6C,eAAe,CAAC;MACpE;MACA,OAAO7C,KAAI,CAACV,cAAc,CAAC6E,SAAS,CAAC,CAACC,MAAM,CAACpE,KAAI,CAAC6C,eAAe,CAAC;IACpE,CAAC;EACH;EAAC,IAAAwB,aAAA,aAAAtE,UAAA;IAAAc,GAAA;IAAAyD,KAAA;MAAA,IAAAC,KAAA,OAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAKD,SAAAC,QAAA;QAAA,IAAAC,MAAA;QAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cACE,IAAI,CAACtC,uBAAuB,EAAE;cAACoC,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAGd,IAAI,CAAC3E,YAAY,CAAC4E,IAAI,KAAAhC,SAAA,iBAChC,IAAI,CAAC9C,aAAa;gBACrB0D,GAAG,EAAE,IAAI,CAACjB,eAAe;gBACzBsC,SAAS,EAAE,IAAI,CAACrE;cAAY,GAC5B;YAAA;cAJF,IAAI,CAACF,CAAC,GAAAmE,QAAA,CAAAK,IAAA;cAKN,IAAI,IAAI,CAACC,uBAAuB,EAAE;gBAEhC,IAAI,CAACzE,CAAC,GAAG,IAAI,CAACyE,uBAAuB;gBACrC,IAAI,CAACA,uBAAuB,GAAGjG,SAAS;gBACxC,IAAI,CAACuB,4BAA4B,CAAC2E,OAAO,CAAC,UAACC,QAAQ;kBAAA,OAAKA,QAAQ,CAACX,MAAI,CAAChE,CAAC,CAAC;gBAAA,EAAC;cAC3E;cACA,IAAI,CAACH,WAAW,GAAG,IAAI;cAACsE,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAS,EAAA,GAAAT,QAAA;cAExB,IAAI,CAACpF,MAAM,sCAAoC4D,IAAI,CAACC,SAAS,CAAAuB,QAAA,CAAAS,EAAA,CAAO,CAAG;YAAC;cAE1E,IAAI,CAACC,mBAAmB,GAAGrG,SAAS;YAAC;YAAA;cAAA,OAAA2F,QAAA,CAAAW,IAAA;UAAA;QAAA,GAAAf,OAAA;MAAA,CACtC;MAAA,SAAAO,KAAA;QAAA,OAAAX,KAAA,CAAAoB,KAAA,OAAAzF,SAAA;MAAA;MAAA,OAAAgF,IAAA;IAAA;EAAA;IAAArE,GAAA;IAAAyD,KAAA;MAAA,IAAAsB,eAAA,OAAApB,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAiCD,SAAAmB,SAAA;QAAA,IAAAC,WAAA;QAAA,OAAArB,YAAA,YAAAI,IAAA,UAAAkB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAhB,IAAA,GAAAgB,SAAA,CAAAf,IAAA;YAAA;cAAA,IACO,IAAI,CAACxE,WAAW;gBAAAuF,SAAA,CAAAf,IAAA;gBAAA;cAAA;cAAA,KACf,IAAI,CAACQ,mBAAmB;gBAAAO,SAAA,CAAAf,IAAA;gBAAA;cAAA;cAAAe,SAAA,CAAAf,IAAA;cAAA,OACpB,IAAI,CAACQ,mBAAmB;YAAA;cAAAO,SAAA,CAAAf,IAAA;cAAA;YAAA;cAE9B,IAAI,IAAI,CAAC7C,YAAY,CAAC,IAAI,CAACS,eAAe,CAAC,EAAE;gBAC3C,IAAI,CAACoB,iBAAiB,CAAC,IAAI,CAACpB,eAAe,EAAE,IAAI,CAACT,YAAY,CAAC,IAAI,CAACS,eAAe,CAAC,CAAC;cACvF;cACMiD,WAAW,GAAG,IAAI,CAACZ,IAAI,EAAE;cAC/B,IAAI,CAACO,mBAAmB,GAAGK,WAAW;cAACE,SAAA,CAAAf,IAAA;cAAA,OACjCa,WAAW;YAAA;cAAA,OAAAE,SAAA,CAAAC,MAAA,WAGd;gBACLrF,CAAC,EAAE,IAAI,CAACA,CAAC;gBACTsD,eAAe,EAAE,IAAI,CAACA;cACxB,CAAC;YAAA;YAAA;cAAA,OAAA8B,SAAA,CAAAN,IAAA;UAAA;QAAA,GAAAG,QAAA;MAAA,CACF;MAAA,SAAAK,eAAA;QAAA,OAAAN,eAAA,CAAAD,KAAA,OAAAzF,SAAA;MAAA;MAAA,OAAAgG,cAAA;IAAA;EAAA;IAAArF,GAAA;IAAAyD,KAAA,EAKD,SAAA6B,oBACEzG,QAAgB,EAChB0G,WAAuE,EACvEC,iBAAoC,EACpC;MACA,IAAI,CAACD,WAAW,EAAE;QAChB,IAAI,CAACzG,MAAM,wGAEV;QACD;MACF;MAEA,IAAI,CAAC,IAAI,CAACmB,YAAY,CAACpB,QAAQ,CAAC,EAAE;QAChC,IAAI,CAACoB,YAAY,CAACpB,QAAQ,CAAC,OAAAsB,gBAAA,iBAAM1D,SAAS,EAAG8I,WAAW,CAAE;MAC5D,CAAC,MAAM;QACL,IAAI,CAACtF,YAAY,CAACpB,QAAQ,CAAC,CAACpC,SAAS,CAAC,GAAG8I,WAAW;MACtD;MAEA,IAAIC,iBAAiB,EAAE;QACrB,IAAI,CAACjE,YAAY,CAAC1C,QAAQ,CAAC,OAAAwD,SAAA,iBAAQmD,iBAAiB,CAAE;MACxD,CAAC,MAAM,IAAI,CAAC,IAAI,CAAChE,YAAY,CAAC3C,QAAQ,CAAC,EAAE;QACvC,IAAI,CAACC,MAAM,CACT,yGACuBD,QAAQ,+BAA2B,oEACKA,QAAQ,0BAAqB,mHACsB,CACnH;MACH;MAEA,IAAI,IAAI,CAACe,WAAW,EAAE;QACpB,IAAI,CAACH,YAAY,CAACgG,YAAY,CAAC5G,QAAQ,EAAEpC,SAAS,EAAE8I,WAAW,CAAC;MAClE;IACF;EAAC;IAAAvF,GAAA;IAAAyD,KAAA,EAED,SAAAL,kBAAkBpD,GAAW,EAAE0F,MAAwB,EAAE;MACvD,IAAI,IAAI,CAAClE,YAAY,CAACxB,GAAG,CAAC,EAAE;QAC1BrD,iBAAK,CAACE,YAAY,CAACmD,GAAG,MAAAqC,SAAA,iBAAOqD,MAAM,EAAG;MACxC,CAAC,MAAM;QAEL/I,iBAAK,CAAC4G,MAAM,KAAAlB,SAAA;UAAGsD,IAAI,EAAE3F;QAAG,GAAKhC,SAAS,EAAK0H,MAAM,GAAInH,SAAS,EAAE,IAAI,CAAC;MACvE;IACF;EAAC;IAAAyB,GAAA;IAAAyD,KAAA;MAAA,IAAAmC,YAAA,OAAAjC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAMD,SAAAgC,SAAkBhH,QAAgB;QAAA,IAAAiH,EAAA;QAAA,OAAAlC,YAAA,YAAAI,IAAA,UAAA+B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA7B,IAAA,GAAA6B,SAAA,CAAA5B,IAAA;YAAA;cAChC,IAAI,CAACpC,eAAe,GAAGnD,QAAQ;cAAC,IAE3B,IAAI,CAACe,WAAW;gBAAAoG,SAAA,CAAA5B,IAAA;gBAAA;cAAA;cAAA,OAAA4B,SAAA,CAAAZ,MAAA;YAAA;cAAAY,SAAA,CAAA7B,IAAA;cAAA6B,SAAA,CAAA5B,IAAA;cAAA,OAGH,IAAI,CAAC3E,YAAY,CAACwG,cAAc,CAACpH,QAAQ,CAAC;YAAA;cAApDkB,EAAC,GAAAiG,SAAA,CAAAzB,IAAA;cACP,IAAI,IAAI,CAAChD,YAAY,CAAC1C,QAAQ,CAAC,EAAE;gBAC/B,IAAI,CAACuE,iBAAiB,CAAC,IAAI,CAACpB,eAAe,EAAE,IAAI,CAACT,YAAY,CAAC,IAAI,CAACS,eAAe,CAAC,CAAC;cACvF;cACA,IAAI,CAACjC,CAAC,GAAGA,EAAC;cACV,IAAI,CAACF,yBAAyB,CAAC4E,OAAO,CAAC,UAACC,QAAQ;gBAAA,OAAKA,QAAQ,CAAC3E,EAAC,CAAC;cAAA,EAAC;cAAC,OAAAiG,SAAA,CAAAZ,MAAA,WAE3DrF,EAAC;YAAA;cAAAiG,SAAA,CAAA7B,IAAA;cAAA6B,SAAA,CAAArB,EAAA,GAAAqB,SAAA;cAER,IAAI,CAAClH,MAAM,8BAA4B4D,IAAI,CAACC,SAAS,CAAAqD,SAAA,CAAArB,EAAA,CAAO,CAAG;cAAC,OAAAqB,SAAA,CAAAZ,MAAA,WACzD,IAAI,CAACrF,CAAC;YAAA;YAAA;cAAA,OAAAiG,SAAA,CAAAnB,IAAA;UAAA;QAAA,GAAAgB,QAAA;MAAA,CAEhB;MAAA,SAAAK,YAAAC,EAAA;QAAA,OAAAP,YAAA,CAAAd,KAAA,OAAAzF,SAAA;MAAA;MAAA,OAAA6G,WAAA;IAAA;EAAA;IAAAlG,GAAA;IAAAyD,KAAA,EAED,SAAA2C,4BAA4BC,QAAgC,EAAE;MAAA,IAAAC,MAAA;MAC5D,IAAI,CAACzG,yBAAyB,CAAC0G,IAAI,CAACF,QAAQ,CAAC;MAC7C,OAAO;QACLG,WAAW,EAAE,SAAAA,YAAA,EAAM;UACjBF,MAAI,CAACzG,yBAAyB,GAAGyG,MAAI,CAACzG,yBAAyB,CAAC4G,MAAM,CACpE,UAAC/B,QAAQ;YAAA,OAAKA,QAAQ,KAAK2B,QAAQ;UAAA,EACpC;QACH;MACF,CAAC;IACH;EAAC;IAAArG,GAAA;IAAAyD,KAAA,EAED,SAAAiD,+BAA+BL,QAAgC,EAAE;MAAA,IAAAM,MAAA;MAC/D,IAAI,CAAC7G,4BAA4B,CAACyG,IAAI,CAACF,QAAQ,CAAC;MAChD,OAAO;QACLG,WAAW,EAAE,SAAAA,YAAA,EAAM;UACjBG,MAAI,CAAC7G,4BAA4B,GAAG6G,MAAI,CAAC7G,4BAA4B,CAAC2G,MAAM,CAC1E,UAAC/B,QAAQ;YAAA,OAAKA,QAAQ,KAAK2B,QAAQ;UAAA,EACpC;QACH;MACF,CAAC;IACH;EAAC;IAAArG,GAAA;IAAAyD,KAAA,EAED,SAAAmD,kBAAkBC,SAAoB,EAAE;MACtC,IAAI,CAAC,IAAI,CAACjH,WAAW,EAAE;QACrB,IAAI,CAAC4E,uBAAuB,GAAGqC,SAAS;MAC1C,CAAC,MAAM;QACL,IAAI,CAAC9G,CAAC,GAAG8G,SAAS;QAClB,IAAI,CAAC/G,4BAA4B,CAAC2E,OAAO,CAAC,UAACC,QAAQ;UAAA,OAAKA,QAAQ,CAACmC,SAAS,CAAC;QAAA,EAAC;MAC9E;IACF;EAAC;EAAA,OAAA3H,UAAA;AAAA;AAAA4H,OAAA,CAAA5H,UAAA,GAAAA,UAAA"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.12.1-beta.2"
2
+ "version": "5.13.0-beta.1"
3
3
  }
@@ -123,7 +123,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
123
123
  }
124
124
  _context.next = 22;
125
125
  return client.queryChannels(filters, sort, newOptions, {
126
- skipInitialization: enableOfflineSupport ? activeChannelIds : activeChannels.current
126
+ skipInitialization: activeChannels.current
127
127
  });
128
128
  case 22:
129
129
  channelQueryResponse = _context.sent;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_ActiveChannelsRefContext","_ChatContext","_useIsMountedRef","_getChannelsForFilterSort","_date","_DBSyncManager","_utils","waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","_ref","enableOfflineSupport","_ref$filters","filters","_ref$options","options","setForceUpdate","_ref$sort","sort","_useState","useState","_useState2","_slicedToArray2","channels","setChannels","_useState3","undefined","_useState4","error","setError","_useState5","_useState6","staticChannelsActive","setStaticChannelsActive","_useState7","_useState8","activeQueryType","setActiveQueryType","_useState9","_useState10","hasNextPage","setHasNextPage","activeChannels","useActiveChannelsRefContext","isMountedRef","useIsMountedRef","_useChatContext","useChatContext","client","filtersRef","useRef","sortRef","activeRequestId","isQueryingRef","lastRefresh","Date","now","queryChannels","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","_options$limit","queryType","retryCount","hasUpdatedData","isQueryStale","currentRequestId","newOptions","activeChannelIds","cid","channelQueryResponse","newChannels","_args","arguments","wrap","_callee$","_context","prev","next","length","current","abrupt","JSON","stringify","some","Boolean","_extends2","limit","MAX_QUERY_CHANNELS_LIMIT","offset","id","push","skipInitialization","sent","concat","_toConsumableArray2","map","c","existingChannel","t0","console","warn","Error","stop","apply","refreshList","_ref3","_callee2","_callee2$","_context2","reloadList","filterStr","useMemo","sortStr","useEffect","loadOfflineChannels","_client$user","user","channelsFromDB","getChannelsForFilterSort","currentUserId","hydrateActiveChannels","offlineMode","e","listener","DBSyncManager","onSyncStatusChange","syncStatus","dbSyncStatus","getSyncStatus","on","_ref4","_callee3","event","_callee3$","_context3","online","u","_x","_listener","unsubscribe","loadingChannels","loadingNextPage","loadNextPage","refreshing","exports"],"sources":["usePaginatedChannels.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { DBSyncManager } from '../../../utils/DBSyncManager';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n setForceUpdate: React.Dispatch<React.SetStateAction<number>>;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n setForceUpdate,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const [hasNextPage, setHasNextPage] = useState<boolean>(false);\n\n const activeChannels = useActiveChannelsRefContext();\n const isMountedRef = useIsMountedRef();\n const { client } = useChatContext<StreamChatGenerics>();\n\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n const isQueryingRef = useRef(false);\n const lastRefresh = useRef(Date.now());\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset:\n queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0,\n ...options,\n };\n\n try {\n const activeChannelIds: string[] = [];\n for (const cid in client.activeChannels) {\n if (client.activeChannels[cid].id) {\n // @ts-ignore\n activeChannelIds.push(client.activeChannels[cid].id);\n }\n }\n\n // TODO: Think about the implications of this.\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: enableOfflineSupport ? activeChannelIds : activeChannels.current,\n });\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive && channels\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse.map((c) => {\n const existingChannel = client.activeChannels[c.cid];\n if (existingChannel) {\n return existingChannel;\n }\n\n return c;\n });\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const refreshList = async () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n await queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n const loadOfflineChannels = () => {\n if (!client?.user?.id) return;\n\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n setStaticChannelsActive(true);\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n\n setActiveQueryType(null);\n };\n\n let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;\n if (enableOfflineSupport) {\n // Any time DB is synced, we need to update the UI with local DB channels first,\n // and then call queryChannels to ensure any new channels are added to UI.\n listener = DBSyncManager.onSyncStatusChange((syncStatus) => {\n if (syncStatus) {\n loadOfflineChannels();\n reloadList();\n }\n });\n // On start, load the channels from local db.\n loadOfflineChannels();\n\n // If db is already synced (sync api and pending api calls), then\n // right away call queryChannels.\n const dbSyncStatus = DBSyncManager.getSyncStatus();\n if (dbSyncStatus) {\n reloadList();\n }\n } else {\n listener = client.on('connection.changed', async (event) => {\n if (event.online) {\n await refreshList();\n setForceUpdate((u) => u + 1);\n }\n });\n\n reloadList();\n }\n\n return () => listener?.unsubscribe?.();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : (activeQueryType === 'reload' || activeQueryType === null) && channels === null,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage: queryChannels,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n // Although channels can be null, there is no practical case where channels will be null\n // when setChannels is used. setChannels is only recommended to be used for overriding\n // event handler. Thus instead of adding if check for channels === null, its better to\n // simply reassign types here.\n setChannels,\n staticChannelsActive,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_ActiveChannelsRefContext","_ChatContext","_useIsMountedRef","_getChannelsForFilterSort","_date","_DBSyncManager","_utils","waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","_ref","enableOfflineSupport","_ref$filters","filters","_ref$options","options","setForceUpdate","_ref$sort","sort","_useState","useState","_useState2","_slicedToArray2","channels","setChannels","_useState3","undefined","_useState4","error","setError","_useState5","_useState6","staticChannelsActive","setStaticChannelsActive","_useState7","_useState8","activeQueryType","setActiveQueryType","_useState9","_useState10","hasNextPage","setHasNextPage","activeChannels","useActiveChannelsRefContext","isMountedRef","useIsMountedRef","_useChatContext","useChatContext","client","filtersRef","useRef","sortRef","activeRequestId","isQueryingRef","lastRefresh","Date","now","queryChannels","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","_options$limit","queryType","retryCount","hasUpdatedData","isQueryStale","currentRequestId","newOptions","activeChannelIds","cid","channelQueryResponse","newChannels","_args","arguments","wrap","_callee$","_context","prev","next","length","current","abrupt","JSON","stringify","some","Boolean","_extends2","limit","MAX_QUERY_CHANNELS_LIMIT","offset","id","push","skipInitialization","sent","concat","_toConsumableArray2","map","c","existingChannel","t0","console","warn","Error","stop","apply","refreshList","_ref3","_callee2","_callee2$","_context2","reloadList","filterStr","useMemo","sortStr","useEffect","loadOfflineChannels","_client$user","user","channelsFromDB","getChannelsForFilterSort","currentUserId","hydrateActiveChannels","offlineMode","e","listener","DBSyncManager","onSyncStatusChange","syncStatus","dbSyncStatus","getSyncStatus","on","_ref4","_callee3","event","_callee3$","_context3","online","u","_x","_listener","unsubscribe","loadingChannels","loadingNextPage","loadNextPage","refreshing","exports"],"sources":["usePaginatedChannels.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { DBSyncManager } from '../../../utils/DBSyncManager';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n setForceUpdate: React.Dispatch<React.SetStateAction<number>>;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n setForceUpdate,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const [hasNextPage, setHasNextPage] = useState<boolean>(false);\n const activeChannels = useActiveChannelsRefContext();\n const isMountedRef = useIsMountedRef();\n const { client } = useChatContext<StreamChatGenerics>();\n\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n const isQueryingRef = useRef(false);\n const lastRefresh = useRef(Date.now());\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n queryType === 'refresh' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset:\n queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0,\n ...options,\n };\n\n try {\n const activeChannelIds: string[] = [];\n for (const cid in client.activeChannels) {\n if (client.activeChannels[cid].id) {\n // @ts-ignore\n activeChannelIds.push(client.activeChannels[cid].id);\n }\n }\n\n /**\n * We skipInitialization here for handling race condition between ChannelList, Channel (and Thread)\n * when they all (may) update the channel state at the same time (when connection state recovers)\n * TODO: if we move the channel state to a single context and share it between ChannelList, Channel and Thread we can remove this\n */\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive && channels\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse.map((c) => {\n const existingChannel = client.activeChannels[c.cid];\n if (existingChannel) {\n return existingChannel;\n }\n\n return c;\n });\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const refreshList = async () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n await queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n const loadOfflineChannels = () => {\n if (!client?.user?.id) return;\n\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n setStaticChannelsActive(true);\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n\n setActiveQueryType(null);\n };\n\n let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;\n if (enableOfflineSupport) {\n // Any time DB is synced, we need to update the UI with local DB channels first,\n // and then call queryChannels to ensure any new channels are added to UI.\n listener = DBSyncManager.onSyncStatusChange((syncStatus) => {\n if (syncStatus) {\n loadOfflineChannels();\n reloadList();\n }\n });\n // On start, load the channels from local db.\n loadOfflineChannels();\n\n // If db is already synced (sync api and pending api calls), then\n // right away call queryChannels.\n const dbSyncStatus = DBSyncManager.getSyncStatus();\n if (dbSyncStatus) {\n reloadList();\n }\n } else {\n listener = client.on('connection.changed', async (event) => {\n if (event.online) {\n await refreshList();\n setForceUpdate((u) => u + 1);\n }\n });\n\n reloadList();\n }\n\n return () => listener?.unsubscribe?.();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : (activeQueryType === 'reload' || activeQueryType === null) && channels === null,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage: queryChannels,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n // Although channels can be null, there is no practical case where channels will be null\n // when setChannels is used. setChannels is only recommended to be used for overriding\n // event handler. Thus instead of adding if check for channels === null, its better to\n // simply reassign types here.\n setChannels,\n staticChannelsActive,\n };\n};\n"],"mappings":"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"}
@@ -58,10 +58,7 @@ var ChatWithContext = function ChatWithContext(props) {
58
58
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
59
59
  translators = _useState4[0],
60
60
  setTranslators = _useState4[1];
61
- var loadingTranslators = (0, _useStreami18n.useStreami18n)({
62
- i18nInstance: i18nInstance,
63
- setTranslators: setTranslators
64
- });
61
+ var loadingTranslators = (0, _useStreami18n.useStreami18n)(setTranslators, i18nInstance);
65
62
  var _useIsOnline = (0, _useIsOnline2.useIsOnline)(client, closeConnectionOnBackground),
66
63
  connectionRecovering = _useIsOnline.connectionRecovering,
67
64
  isOnline = _useIsOnline.isOnline;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_dayjs","_interopRequireDefault","_useAppSettings","_useCreateChatContext","_useIsOnline2","_useMutedUsers","_useSyncDatabase","_ChannelsStateContext","_ChatContext","_DebugContext","_OverlayContext","_ThemeContext","_TranslationContext","_useStreami18n","_init","_native","_QuickSqliteClient","_DBSyncManager","_version","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","init","ChatWithContext","props","_client$user2","_client$user3","children","client","_props$closeConnectio","closeConnectionOnBackground","_props$enableOfflineS","enableOfflineSupport","i18nInstance","_props$ImageComponent","ImageComponent","Image","style","_useState","useState","_useState2","_slicedToArray2","channel","setChannel","_useState3","t","tDateTimeParser","input","Dayjs","_useState4","translators","setTranslators","loadingTranslators","useStreami18n","_useIsOnline","useIsOnline","connectionRecovering","isOnline","_useState5","_useState6","initialisedDatabase","setInitialisedDatabase","mutedUsers","useMutedUsers","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","current","useEffect","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","_client$user","id","QuickSqliteClient","initializeDatabase","DBSyncManager","appSettings","useAppSettings","chatContext","useCreateChatContext","useSyncDatabase","createElement","ChatProvider","value","__self","__source","fileName","lineNumber","columnNumber","TranslationProvider","_extends2","userLanguage","language","DEFAULT_USER_LANGUAGE","ThemeProvider","ChannelsStateProvider","Chat","_useOverlayContext","useOverlayContext","exports"],"sources":["Chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n };\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n ImageComponent = Image,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n const [initialisedDatabase, setInitialisedDatabase] = useState(false);\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n const debugRef = useDebugContext();\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Client',\n data: client.user,\n });\n }\n }, [client, enableOfflineSupport]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n setInitialisedDatabase(false);\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n setInitialisedDatabase(true);\n }\n }, [client?.user?.id, enableOfflineSupport]);\n\n const appSettings = useAppSettings(client, isOnline, enableOfflineSupport, initialisedDatabase);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_dayjs","_interopRequireDefault","_useAppSettings","_useCreateChatContext","_useIsOnline2","_useMutedUsers","_useSyncDatabase","_ChannelsStateContext","_ChatContext","_DebugContext","_OverlayContext","_ThemeContext","_TranslationContext","_useStreami18n","_init","_native","_QuickSqliteClient","_DBSyncManager","_version","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","init","ChatWithContext","props","_client$user2","_client$user3","children","client","_props$closeConnectio","closeConnectionOnBackground","_props$enableOfflineS","enableOfflineSupport","i18nInstance","_props$ImageComponent","ImageComponent","Image","style","_useState","useState","_useState2","_slicedToArray2","channel","setChannel","_useState3","t","tDateTimeParser","input","Dayjs","_useState4","translators","setTranslators","loadingTranslators","useStreami18n","_useIsOnline","useIsOnline","connectionRecovering","isOnline","_useState5","_useState6","initialisedDatabase","setInitialisedDatabase","mutedUsers","useMutedUsers","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","current","useEffect","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","_client$user","id","QuickSqliteClient","initializeDatabase","DBSyncManager","appSettings","useAppSettings","chatContext","useCreateChatContext","useSyncDatabase","createElement","ChatProvider","value","__self","__source","fileName","lineNumber","columnNumber","TranslationProvider","_extends2","userLanguage","language","DEFAULT_USER_LANGUAGE","ThemeProvider","ChannelsStateProvider","Chat","_useOverlayContext","useOverlayContext","exports"],"sources":["Chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n };\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n ImageComponent = Image,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n(setTranslators, i18nInstance);\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n const [initialisedDatabase, setInitialisedDatabase] = useState(false);\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n const debugRef = useDebugContext();\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Client',\n data: client.user,\n });\n }\n }, [client, enableOfflineSupport]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n setInitialisedDatabase(false);\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n setInitialisedDatabase(true);\n }\n }, [client?.user?.id, enableOfflineSupport]);\n\n const appSettings = useAppSettings(client, isOnline, enableOfflineSupport, initialisedDatabase);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAIA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,cAAA,GAAAP,OAAA;AAEA,IAAAQ,gBAAA,GAAAR,OAAA;AAEA,IAAAS,qBAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,aAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,aAAA,GAAAb,OAAA;AAEA,IAAAc,mBAAA,GAAAd,OAAA;AAKA,IAAAe,cAAA,GAAAf,OAAA;AACA,IAAAgB,KAAA,GAAAb,sBAAA,CAAAH,OAAA;AAEA,IAAAiB,OAAA,GAAAjB,OAAA;AACA,IAAAkB,kBAAA,GAAAlB,OAAA;AAEA,IAAAmB,cAAA,GAAAnB,OAAA;AAEA,IAAAoB,QAAA,GAAApB,OAAA;AAA6C,IAAAqB,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAzB,wBAAA6B,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAE7C,IAAAW,gBAAI,GAAE;AAoGN,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAGnBC,KAAuD,EACpD;EAAA,IAAAC,aAAA,EAAAC,aAAA;EACH,IACEC,QAAQ,GAONH,KAAK,CAPPG,QAAQ;IACRC,MAAM,GAMJJ,KAAK,CANPI,MAAM;IAAAC,qBAAA,GAMJL,KAAK,CALPM,2BAA2B;IAA3BA,2BAA2B,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,qBAAA,GAKhCP,KAAK,CAJPQ,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAC5BE,YAAY,GAGVT,KAAK,CAHPS,YAAY;IAAAC,qBAAA,GAGVV,KAAK,CAFPW,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,kBAAK,GAAAF,qBAAA;IACtBG,KAAK,GACHb,KAAK,CADPa,KAAK;EAGP,IAAAC,SAAA,GAA8B,IAAAC,eAAQ,GAA+B;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA9DI,OAAO,GAAAF,UAAA;IAAEG,UAAU,GAAAH,UAAA;EAC1B,IAAAI,UAAA,GAAsC,IAAAL,eAAQ,EAAsB;MAClEM,CAAC,EAAE,SAAAA,EAAC7B,GAAW;QAAA,OAAKA,GAAG;MAAA;MACvB8B,eAAe,EAAE,SAAAA,gBAACC,KAA8B;QAAA,OAAK,IAAAC,iBAAK,EAACD,KAAK,CAAC;MAAA;IACnE,CAAC,CAAC;IAAAE,UAAA,OAAAR,eAAA,aAAAG,UAAA;IAHKM,WAAW,GAAAD,UAAA;IAAEE,cAAc,GAAAF,UAAA;EAQlC,IAAMG,kBAAkB,GAAG,IAAAC,4BAAa,EAACF,cAAc,EAAElB,YAAY,CAAC;EAKtE,IAAAqB,YAAA,GAA2C,IAAAC,yBAAW,EACpD3B,MAAM,EACNE,2BAA2B,CAC5B;IAHO0B,oBAAoB,GAAAF,YAAA,CAApBE,oBAAoB;IAAEC,QAAQ,GAAAH,YAAA,CAARG,QAAQ;EAKtC,IAAAC,UAAA,GAAsD,IAAAnB,eAAQ,EAAC,KAAK,CAAC;IAAAoB,UAAA,OAAAlB,eAAA,aAAAiB,UAAA;IAA9DE,mBAAmB,GAAAD,UAAA;IAAEE,sBAAsB,GAAAF,UAAA;EAMlD,IAAMG,UAAU,GAAG,IAAAC,4BAAa,EAAqBnC,MAAM,CAAC;EAE5D,IAAMoC,QAAQ,GAAG,IAAAC,6BAAe,GAAE;EAClC,IAAMC,kBAAkB,GAAGC,OAAO,IAAIH,QAAQ,IAAIA,QAAQ,CAACI,OAAO;EAElE,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIzC,MAAM,EAAE;MACVA,MAAM,CAAC0C,YAAY,CAAIC,WAAG,SAAIC,qBAAQ,CAACC,EAAE,SAAIC,gBAAO,CAAG;MAEvD9C,MAAM,CAAC+C,uBAAuB,GAAG,KAAK;MACtC/C,MAAM,CAACgD,8BAA8B,GAAG5C,oBAAoB;IAC9D;IAEA,IAAIkC,kBAAkB,EAAE;MACtB,IAAIF,QAAQ,CAACI,OAAO,CAACS,YAAY,EAAEb,QAAQ,CAACI,OAAO,CAACS,YAAY,CAAC,MAAM,CAAC;MACxE,IAAIb,QAAQ,CAACI,OAAO,CAACU,kBAAkB,EACrCd,QAAQ,CAACI,OAAO,CAACU,kBAAkB,CAAC;QAClCC,MAAM,EAAE,QAAQ;QAChBC,IAAI,EAAEpD,MAAM,CAACqD;MACf,CAAC,CAAC;IACN;EACF,CAAC,EAAE,CAACrD,MAAM,EAAEI,oBAAoB,CAAC,CAAC;EAElC,IAAMkD,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,UAAwC;IAAA,OAAKxC,UAAU,CAACwC,UAAU,CAAC;EAAA;EAE7F,IAAAd,gBAAS,EAAC,YAAM;IAAA,IAAAe,YAAA;IACd,IAAI,CAAAA,YAAA,GAAAxD,MAAM,CAACqD,IAAI,aAAXG,YAAA,CAAaC,EAAE,IAAIrD,oBAAoB,EAAE;MAC3C6B,sBAAsB,CAAC,KAAK,CAAC;MAC7ByB,oCAAiB,CAACC,kBAAkB,EAAE;MACtCC,4BAAa,CAAClE,IAAI,CAACM,MAAM,CAA0B;MACnDiC,sBAAsB,CAAC,IAAI,CAAC;IAC9B;EACF,CAAC,EAAE,CAACjC,MAAM,qBAAAH,aAAA,GAANG,MAAM,CAAEqD,IAAI,qBAAZxD,aAAA,CAAc4D,EAAE,EAAErD,oBAAoB,CAAC,CAAC;EAE5C,IAAMyD,WAAW,GAAG,IAAAC,8BAAc,EAAC9D,MAAM,EAAE6B,QAAQ,EAAEzB,oBAAoB,EAAE4B,mBAAmB,CAAC;EAE/F,IAAM+B,WAAW,GAAG,IAAAC,0CAAoB,EAAC;IACvCH,WAAW,EAAXA,WAAW;IACX/C,OAAO,EAAPA,OAAO;IACPd,MAAM,EAANA,MAAM;IACN4B,oBAAoB,EAApBA,oBAAoB;IACpBxB,oBAAoB,EAApBA,oBAAoB;IACpBG,cAAc,EAAdA,cAAc;IACdsB,QAAQ,EAARA,QAAQ;IACRK,UAAU,EAAVA,UAAU;IACVoB,gBAAgB,EAAhBA;EACF,CAAC,CAAC;EAEF,IAAAW,gCAAe,EAAC;IACdjE,MAAM,EAANA,MAAM;IACNI,oBAAoB,EAApBA;EACF,CAAC,CAAC;EAEF,IAAIoB,kBAAkB,EAAE,OAAO,IAAI;EAEnC,OACE7E,MAAA,YAAAuH,aAAA,CAAC3G,YAAA,CAAA4G,YAAY;IAAqBC,KAAK,EAAEL,WAAY;IAAAM,MAAA,EAAAnG,KAAA;IAAAoG,QAAA;MAAAC,QAAA,EAAApG,YAAA;MAAAqG,UAAA;MAAAC,YAAA;IAAA;EAAA,GACnD9H,MAAA,YAAAuH,aAAA,CAACvG,mBAAA,CAAA+G,mBAAmB;IAClBN,KAAK,MAAAO,SAAA,iBAAOrD,WAAW;MAAEsD,YAAY,EAAE,EAAA9E,aAAA,GAAAE,MAAM,CAACqD,IAAI,qBAAXvD,aAAA,CAAa+E,QAAQ,KAAIC;IAAqB,EAAG;IAAAT,MAAA,EAAAnG,KAAA;IAAAoG,QAAA;MAAAC,QAAA,EAAApG,YAAA;MAAAqG,UAAA;MAAAC,YAAA;IAAA;EAAA,GAExF9H,MAAA,YAAAuH,aAAA,CAACxG,aAAA,CAAAqH,aAAa;IAACtE,KAAK,EAAEA,KAAM;IAAA4D,MAAA,EAAAnG,KAAA;IAAAoG,QAAA;MAAAC,QAAA,EAAApG,YAAA;MAAAqG,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC1B9H,MAAA,YAAAuH,aAAA,CAAC5G,qBAAA,CAAA0H,qBAAqB;IAAAX,MAAA,EAAAnG,KAAA;IAAAoG,QAAA;MAAAC,QAAA,EAAApG,YAAA;MAAAqG,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAsB1E,QAAQ,CAAyB,CAC/D,CACI,CACT;AAEnB,CAAC;AAuBM,IAAMkF,IAAI,GAAG,SAAPA,IAAIA,CAGfrF,KAAuD,EACpD;EACH,IAAAsF,kBAAA,GAAkB,IAAAC,iCAAiB,GAAE;IAA7B1E,KAAK,GAAAyE,kBAAA,CAALzE,KAAK;EAEb,OAAO9D,MAAA,YAAAuH,aAAA,CAACvE,eAAe,MAAAgF,SAAA;IAAOlE,KAAK,EAALA;EAAK,GAAQb,KAAK;IAAAyE,MAAA,EAAAnG,KAAA;IAAAoG,QAAA;MAAAC,QAAA,EAAApG,YAAA;MAAAqG,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAI;AACtD,CAAC;AAACW,OAAA,CAAAH,IAAA,GAAAA,IAAA"}
@@ -132,10 +132,7 @@ var OverlayProvider = function OverlayProvider(props) {
132
132
  var _Dimensions$get = _reactNative.Dimensions.get('screen'),
133
133
  height = _Dimensions$get.height,
134
134
  width = _Dimensions$get.width;
135
- var loadingTranslators = (0, _useStreami18n.useStreami18n)({
136
- i18nInstance: i18nInstance,
137
- setTranslators: setTranslators
138
- });
135
+ var loadingTranslators = (0, _useStreami18n.useStreami18n)(setTranslators, i18nInstance);
139
136
  (0, _react.useEffect)(function () {
140
137
  var backAction = function backAction() {
141
138
  if (overlay !== 'none') {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_dayjs","_interopRequireDefault","_OverlayContext","_AttachmentPicker","_AttachmentPickerBottomSheetHandle","_AttachmentPickerError","_AttachmentPickerErrorImage","_CameraSelectorIcon","_FileSelectorIcon","_ImageOverlaySelectedComponent","_ImageSelectorIcon","_ImageGallery","_MessageOverlay","_OverlayBackdrop","_useStreami18n","_AttachmentPickerContext","_ImageGalleryContext","_MessageOverlayContext","_ThemeContext","_TranslationContext","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OverlayProvider","props","bottomSheetCloseTimeoutRef","useRef","_props$AttachmentPick","AttachmentPickerBottomSheetHandle","DefaultAttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","_props$AttachmentPick2","AttachmentPickerError","DefaultAttachmentPickerError","attachmentPickerErrorButtonText","_props$AttachmentPick3","AttachmentPickerErrorImage","DefaultAttachmentPickerErrorImage","attachmentPickerErrorText","attachmentSelectionBarHeight","bottomInset","_props$CameraSelector","CameraSelectorIcon","DefaultCameraSelectorIcon","children","_props$closePicker","closePicker","ref","_ref$current","current","close","clearTimeout","setTimeout","_ref$current2","_props$FileSelectorIc","FileSelectorIcon","DefaultFileSelectorIcon","giphyVersion","i18nInstance","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","_props$ImageOverlaySe","ImageOverlaySelectedComponent","DefaultImageOverlaySelectedComponent","_props$ImageSelectorI","ImageSelectorIcon","DefaultImageSelectorIcon","MessageActionList","MessageActionListItem","messageTextNumberOfLines","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","numberOfImageGalleryGridColumns","_props$openPicker","openPicker","_ref$current3","snapToIndex","console","warn","topInset","translucentStatusBar","OverlayReactionList","OverlayReactions","OverlayReactionsAvatar","value","attachmentPickerProps","bottomSheetRef","_useState","useState","t","tDateTimeParser","input","Dayjs","_useState2","_slicedToArray2","translators","setTranslators","_useState3","overlay","_useState4","setOverlay","overlayOpacity","useSharedValue","_Dimensions$get","Dimensions","height","width","loadingTranslators","useStreami18n","useEffect","backAction","backHandler","BackHandler","addEventListener","remove","cancelAnimation","withTiming","attachmentPickerContext","overlayStyle","useAnimatedStyle","opacity","overlayContext","style","createElement","TranslationProvider","_extends2","userLanguage","DEFAULT_USER_LANGUAGE","__self","__source","fileName","lineNumber","columnNumber","OverlayContext","Provider","MessageOverlayProvider","AttachmentPickerProvider","ImageGalleryProvider","ThemeProvider","View","pointerEvents","StyleSheet","absoluteFill","OverlayBackdrop","MessageOverlay","ImageGallery","AttachmentPicker","exports"],"sources":["OverlayProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport { BackHandler, Dimensions, StyleSheet, ViewStyle } from 'react-native';\n\nimport Animated, {\n cancelAnimation,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport type BottomSheet from '@gorhom/bottom-sheet';\nimport Dayjs from 'dayjs';\n\nimport { OverlayContext, OverlayProviderProps } from './OverlayContext';\n\nimport { AttachmentPicker } from '../../components/AttachmentPicker/AttachmentPicker';\n\nimport { AttachmentPickerBottomSheetHandle as DefaultAttachmentPickerBottomSheetHandle } from '../../components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle';\nimport { AttachmentPickerError as DefaultAttachmentPickerError } from '../../components/AttachmentPicker/components/AttachmentPickerError';\nimport { AttachmentPickerErrorImage as DefaultAttachmentPickerErrorImage } from '../../components/AttachmentPicker/components/AttachmentPickerErrorImage';\nimport { CameraSelectorIcon as DefaultCameraSelectorIcon } from '../../components/AttachmentPicker/components/CameraSelectorIcon';\nimport { FileSelectorIcon as DefaultFileSelectorIcon } from '../../components/AttachmentPicker/components/FileSelectorIcon';\nimport { ImageOverlaySelectedComponent as DefaultImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent';\nimport { ImageSelectorIcon as DefaultImageSelectorIcon } from '../../components/AttachmentPicker/components/ImageSelectorIcon';\nimport { ImageGallery } from '../../components/ImageGallery/ImageGallery';\nimport { MessageOverlay } from '../../components/MessageOverlay/MessageOverlay';\nimport { OverlayBackdrop } from '../../components/MessageOverlay/OverlayBackdrop';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentPickerProvider } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ImageGalleryProvider } from '../imageGalleryContext/ImageGalleryContext';\nimport { MessageOverlayProvider } from '../messageOverlayContext/MessageOverlayContext';\nimport { ThemeProvider } from '../themeContext/ThemeContext';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../translationContext/TranslationContext';\n\n/**\n * - The highest level of these components is the `OverlayProvider`. The `OverlayProvider` allows users to interact with messages on long press above the underlying views, use the full screen image viewer, and use the `AttachmentPicker` as a keyboard-esk view.\n * Because these views must exist above all others `OverlayProvider` should wrap your navigation stack as well. Assuming [`React Navigation`](https://reactnavigation.org/) is being used, your highest level navigation stack should be wrapped in the provider:\n *\n * ```js\n * <NavigationContainer>\n * <OverlayProvider>\n * <Stack.Navigator>\n * <Stack.Screen />\n * </Stack.Navigator>\n * </OverlayProvider>\n * </NavigationContainer>\n * ```\n *\n * - Don't forget to check our cookbook section of [OverlayProvider](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#overlayprovider)\n *\n * - Also check the [visual component guide](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#custom-components), to learn about component customizations.\n *\n * @example ./OverlayProvider.md\n */\nexport const OverlayProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<OverlayProviderProps<StreamChatGenerics>>,\n) => {\n const bottomSheetCloseTimeoutRef = useRef<NodeJS.Timeout>();\n const {\n AttachmentPickerBottomSheetHandle = DefaultAttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError = DefaultAttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage = DefaultAttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon = DefaultCameraSelectorIcon,\n children,\n closePicker = (ref) => {\n if (ref.current?.close) {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n ref.current.close();\n // Attempt to close the bottomsheet again to circumvent accidental opening on Android.\n // Details: This to prevent a race condition where the close function is called during the point when a internal container layout happens within the bottomsheet due to keyboard affecting the layout\n // If the container layout measures a shorter height than previous but if the close snapped to the previous height's position, the bottom sheet will show up\n // this short delay ensures that close function is always called after a container layout due to keyboard change\n // NOTE: this timeout has to be above 500 as the keyboardAnimationDuration is 500 in the bottomsheet library - see src/hooks/useKeyboard.ts there for more details\n bottomSheetCloseTimeoutRef.current = setTimeout(() => {\n ref.current?.close();\n }, 600);\n }\n },\n FileSelectorIcon = DefaultFileSelectorIcon,\n giphyVersion,\n i18nInstance,\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n ImageOverlaySelectedComponent = DefaultImageOverlaySelectedComponent,\n ImageSelectorIcon = DefaultImageSelectorIcon,\n MessageActionList,\n MessageActionListItem,\n messageTextNumberOfLines,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n numberOfImageGalleryGridColumns,\n openPicker = (ref) => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n if (ref.current?.snapToIndex) {\n ref.current.snapToIndex(0);\n } else {\n console.warn('bottom and top insets must be set for the image picker to work correctly');\n }\n },\n topInset,\n translucentStatusBar,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n value,\n } = props;\n\n const attachmentPickerProps = {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n };\n\n const bottomSheetRef = useRef<BottomSheet>(null);\n\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n const [overlay, setOverlay] = useState(value?.overlay || 'none');\n\n const overlayOpacity = useSharedValue(0);\n const { height, width } = Dimensions.get('screen');\n\n // Setup translators\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n useEffect(() => {\n const backAction = () => {\n if (overlay !== 'none') {\n setOverlay('none');\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [overlay]);\n\n useEffect(\n () =>\n // cleanup the timeout if the component unmounts\n () => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n },\n [],\n );\n\n useEffect(() => {\n closePicker(bottomSheetRef);\n cancelAnimation(overlayOpacity);\n if (overlay !== 'none') {\n overlayOpacity.value = withTiming(1);\n } else {\n overlayOpacity.value = withTiming(0);\n }\n }, [overlay]);\n\n const attachmentPickerContext = {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon,\n closePicker: () => closePicker(bottomSheetRef),\n FileSelectorIcon,\n ImageSelectorIcon,\n openPicker: () => openPicker(bottomSheetRef),\n topInset,\n };\n\n const overlayStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: overlayOpacity.value,\n }),\n [],\n );\n\n const overlayContext = {\n overlay,\n setOverlay,\n style: value?.style,\n translucentStatusBar,\n };\n\n if (loadingTranslators) return null;\n\n return (\n <TranslationProvider value={{ ...translators, userLanguage: DEFAULT_USER_LANGUAGE }}>\n <OverlayContext.Provider value={overlayContext}>\n <MessageOverlayProvider<StreamChatGenerics>>\n <AttachmentPickerProvider value={attachmentPickerContext}>\n <ImageGalleryProvider>\n {children}\n <ThemeProvider style={overlayContext.style}>\n <Animated.View\n pointerEvents={overlay === 'none' ? 'none' : 'auto'}\n style={[StyleSheet.absoluteFill, overlayStyle]}\n >\n <OverlayBackdrop style={[StyleSheet.absoluteFill, { height, width }]} />\n </Animated.View>\n {overlay === 'message' && (\n <MessageOverlay<StreamChatGenerics>\n MessageActionList={MessageActionList}\n MessageActionListItem={MessageActionListItem}\n messageTextNumberOfLines={messageTextNumberOfLines}\n overlayOpacity={overlayOpacity}\n OverlayReactionList={OverlayReactionList}\n OverlayReactions={OverlayReactions}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n />\n )}\n {overlay === 'gallery' && (\n <ImageGallery<StreamChatGenerics>\n giphyVersion={giphyVersion}\n imageGalleryCustomComponents={imageGalleryCustomComponents}\n imageGalleryGridHandleHeight={imageGalleryGridHandleHeight}\n imageGalleryGridSnapPoints={imageGalleryGridSnapPoints}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n overlayOpacity={overlayOpacity}\n />\n )}\n <AttachmentPicker ref={bottomSheetRef} {...attachmentPickerProps} />\n </ThemeProvider>\n </ImageGalleryProvider>\n </AttachmentPickerProvider>\n </MessageOverlayProvider>\n </OverlayContext.Provider>\n </TranslationProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_dayjs","_interopRequireDefault","_OverlayContext","_AttachmentPicker","_AttachmentPickerBottomSheetHandle","_AttachmentPickerError","_AttachmentPickerErrorImage","_CameraSelectorIcon","_FileSelectorIcon","_ImageOverlaySelectedComponent","_ImageSelectorIcon","_ImageGallery","_MessageOverlay","_OverlayBackdrop","_useStreami18n","_AttachmentPickerContext","_ImageGalleryContext","_MessageOverlayContext","_ThemeContext","_TranslationContext","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OverlayProvider","props","bottomSheetCloseTimeoutRef","useRef","_props$AttachmentPick","AttachmentPickerBottomSheetHandle","DefaultAttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","_props$AttachmentPick2","AttachmentPickerError","DefaultAttachmentPickerError","attachmentPickerErrorButtonText","_props$AttachmentPick3","AttachmentPickerErrorImage","DefaultAttachmentPickerErrorImage","attachmentPickerErrorText","attachmentSelectionBarHeight","bottomInset","_props$CameraSelector","CameraSelectorIcon","DefaultCameraSelectorIcon","children","_props$closePicker","closePicker","ref","_ref$current","current","close","clearTimeout","setTimeout","_ref$current2","_props$FileSelectorIc","FileSelectorIcon","DefaultFileSelectorIcon","giphyVersion","i18nInstance","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","_props$ImageOverlaySe","ImageOverlaySelectedComponent","DefaultImageOverlaySelectedComponent","_props$ImageSelectorI","ImageSelectorIcon","DefaultImageSelectorIcon","MessageActionList","MessageActionListItem","messageTextNumberOfLines","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","numberOfImageGalleryGridColumns","_props$openPicker","openPicker","_ref$current3","snapToIndex","console","warn","topInset","translucentStatusBar","OverlayReactionList","OverlayReactions","OverlayReactionsAvatar","value","attachmentPickerProps","bottomSheetRef","_useState","useState","t","tDateTimeParser","input","Dayjs","_useState2","_slicedToArray2","translators","setTranslators","_useState3","overlay","_useState4","setOverlay","overlayOpacity","useSharedValue","_Dimensions$get","Dimensions","height","width","loadingTranslators","useStreami18n","useEffect","backAction","backHandler","BackHandler","addEventListener","remove","cancelAnimation","withTiming","attachmentPickerContext","overlayStyle","useAnimatedStyle","opacity","overlayContext","style","createElement","TranslationProvider","_extends2","userLanguage","DEFAULT_USER_LANGUAGE","__self","__source","fileName","lineNumber","columnNumber","OverlayContext","Provider","MessageOverlayProvider","AttachmentPickerProvider","ImageGalleryProvider","ThemeProvider","View","pointerEvents","StyleSheet","absoluteFill","OverlayBackdrop","MessageOverlay","ImageGallery","AttachmentPicker","exports"],"sources":["OverlayProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport { BackHandler, Dimensions, StyleSheet, ViewStyle } from 'react-native';\n\nimport Animated, {\n cancelAnimation,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport type BottomSheet from '@gorhom/bottom-sheet';\nimport Dayjs from 'dayjs';\n\nimport { OverlayContext, OverlayProviderProps } from './OverlayContext';\n\nimport { AttachmentPicker } from '../../components/AttachmentPicker/AttachmentPicker';\n\nimport { AttachmentPickerBottomSheetHandle as DefaultAttachmentPickerBottomSheetHandle } from '../../components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle';\nimport { AttachmentPickerError as DefaultAttachmentPickerError } from '../../components/AttachmentPicker/components/AttachmentPickerError';\nimport { AttachmentPickerErrorImage as DefaultAttachmentPickerErrorImage } from '../../components/AttachmentPicker/components/AttachmentPickerErrorImage';\nimport { CameraSelectorIcon as DefaultCameraSelectorIcon } from '../../components/AttachmentPicker/components/CameraSelectorIcon';\nimport { FileSelectorIcon as DefaultFileSelectorIcon } from '../../components/AttachmentPicker/components/FileSelectorIcon';\nimport { ImageOverlaySelectedComponent as DefaultImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent';\nimport { ImageSelectorIcon as DefaultImageSelectorIcon } from '../../components/AttachmentPicker/components/ImageSelectorIcon';\nimport { ImageGallery } from '../../components/ImageGallery/ImageGallery';\nimport { MessageOverlay } from '../../components/MessageOverlay/MessageOverlay';\nimport { OverlayBackdrop } from '../../components/MessageOverlay/OverlayBackdrop';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentPickerProvider } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ImageGalleryProvider } from '../imageGalleryContext/ImageGalleryContext';\nimport { MessageOverlayProvider } from '../messageOverlayContext/MessageOverlayContext';\nimport { ThemeProvider } from '../themeContext/ThemeContext';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../translationContext/TranslationContext';\n\n/**\n * - The highest level of these components is the `OverlayProvider`. The `OverlayProvider` allows users to interact with messages on long press above the underlying views, use the full screen image viewer, and use the `AttachmentPicker` as a keyboard-esk view.\n * Because these views must exist above all others `OverlayProvider` should wrap your navigation stack as well. Assuming [`React Navigation`](https://reactnavigation.org/) is being used, your highest level navigation stack should be wrapped in the provider:\n *\n * ```js\n * <NavigationContainer>\n * <OverlayProvider>\n * <Stack.Navigator>\n * <Stack.Screen />\n * </Stack.Navigator>\n * </OverlayProvider>\n * </NavigationContainer>\n * ```\n *\n * - Don't forget to check our cookbook section of [OverlayProvider](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#overlayprovider)\n *\n * - Also check the [visual component guide](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#custom-components), to learn about component customizations.\n *\n * @example ./OverlayProvider.md\n */\nexport const OverlayProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<OverlayProviderProps<StreamChatGenerics>>,\n) => {\n const bottomSheetCloseTimeoutRef = useRef<NodeJS.Timeout>();\n const {\n AttachmentPickerBottomSheetHandle = DefaultAttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError = DefaultAttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage = DefaultAttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon = DefaultCameraSelectorIcon,\n children,\n closePicker = (ref) => {\n if (ref.current?.close) {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n ref.current.close();\n // Attempt to close the bottomsheet again to circumvent accidental opening on Android.\n // Details: This to prevent a race condition where the close function is called during the point when a internal container layout happens within the bottomsheet due to keyboard affecting the layout\n // If the container layout measures a shorter height than previous but if the close snapped to the previous height's position, the bottom sheet will show up\n // this short delay ensures that close function is always called after a container layout due to keyboard change\n // NOTE: this timeout has to be above 500 as the keyboardAnimationDuration is 500 in the bottomsheet library - see src/hooks/useKeyboard.ts there for more details\n bottomSheetCloseTimeoutRef.current = setTimeout(() => {\n ref.current?.close();\n }, 600);\n }\n },\n FileSelectorIcon = DefaultFileSelectorIcon,\n giphyVersion,\n i18nInstance,\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n ImageOverlaySelectedComponent = DefaultImageOverlaySelectedComponent,\n ImageSelectorIcon = DefaultImageSelectorIcon,\n MessageActionList,\n MessageActionListItem,\n messageTextNumberOfLines,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n numberOfImageGalleryGridColumns,\n openPicker = (ref) => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n if (ref.current?.snapToIndex) {\n ref.current.snapToIndex(0);\n } else {\n console.warn('bottom and top insets must be set for the image picker to work correctly');\n }\n },\n topInset,\n translucentStatusBar,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n value,\n } = props;\n\n const attachmentPickerProps = {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n };\n\n const bottomSheetRef = useRef<BottomSheet>(null);\n\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n const [overlay, setOverlay] = useState(value?.overlay || 'none');\n\n const overlayOpacity = useSharedValue(0);\n const { height, width } = Dimensions.get('screen');\n\n // Setup translators\n const loadingTranslators = useStreami18n(setTranslators, i18nInstance);\n\n useEffect(() => {\n const backAction = () => {\n if (overlay !== 'none') {\n setOverlay('none');\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [overlay]);\n\n useEffect(\n () =>\n // cleanup the timeout if the component unmounts\n () => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n },\n [],\n );\n\n useEffect(() => {\n closePicker(bottomSheetRef);\n cancelAnimation(overlayOpacity);\n if (overlay !== 'none') {\n overlayOpacity.value = withTiming(1);\n } else {\n overlayOpacity.value = withTiming(0);\n }\n }, [overlay]);\n\n const attachmentPickerContext = {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon,\n closePicker: () => closePicker(bottomSheetRef),\n FileSelectorIcon,\n ImageSelectorIcon,\n openPicker: () => openPicker(bottomSheetRef),\n topInset,\n };\n\n const overlayStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: overlayOpacity.value,\n }),\n [],\n );\n\n const overlayContext = {\n overlay,\n setOverlay,\n style: value?.style,\n translucentStatusBar,\n };\n\n if (loadingTranslators) return null;\n\n return (\n <TranslationProvider value={{ ...translators, userLanguage: DEFAULT_USER_LANGUAGE }}>\n <OverlayContext.Provider value={overlayContext}>\n <MessageOverlayProvider<StreamChatGenerics>>\n <AttachmentPickerProvider value={attachmentPickerContext}>\n <ImageGalleryProvider>\n {children}\n <ThemeProvider style={overlayContext.style}>\n <Animated.View\n pointerEvents={overlay === 'none' ? 'none' : 'auto'}\n style={[StyleSheet.absoluteFill, overlayStyle]}\n >\n <OverlayBackdrop style={[StyleSheet.absoluteFill, { height, width }]} />\n </Animated.View>\n {overlay === 'message' && (\n <MessageOverlay<StreamChatGenerics>\n MessageActionList={MessageActionList}\n MessageActionListItem={MessageActionListItem}\n messageTextNumberOfLines={messageTextNumberOfLines}\n overlayOpacity={overlayOpacity}\n OverlayReactionList={OverlayReactionList}\n OverlayReactions={OverlayReactions}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n />\n )}\n {overlay === 'gallery' && (\n <ImageGallery<StreamChatGenerics>\n giphyVersion={giphyVersion}\n imageGalleryCustomComponents={imageGalleryCustomComponents}\n imageGalleryGridHandleHeight={imageGalleryGridHandleHeight}\n imageGalleryGridSnapPoints={imageGalleryGridSnapPoints}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n overlayOpacity={overlayOpacity}\n />\n )}\n <AttachmentPicker ref={bottomSheetRef} {...attachmentPickerProps} />\n </ThemeProvider>\n </ImageGalleryProvider>\n </AttachmentPickerProvider>\n </MessageOverlayProvider>\n </OverlayContext.Provider>\n </TranslationProvider>\n );\n};\n"],"mappings":"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"}