stream-chat-react-native-core 5.21.0 → 5.22.0-beta.2

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 (86) hide show
  1. package/lib/commonjs/components/ImageGallery/ImageGallery.js +6 -5
  2. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  3. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
  4. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  5. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
  6. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  7. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js +10 -7
  8. package/lib/commonjs/components/Indicators/EmptyStateIndicator.js.map +1 -1
  9. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +18 -17
  10. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  11. package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
  12. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  13. package/lib/commonjs/i18n/en.json +2 -0
  14. package/lib/commonjs/i18n/es.json +74 -0
  15. package/lib/commonjs/i18n/fr.json +30 -28
  16. package/lib/commonjs/i18n/he.json +3 -1
  17. package/lib/commonjs/i18n/hi.json +30 -28
  18. package/lib/commonjs/i18n/it.json +30 -28
  19. package/lib/commonjs/i18n/ja.json +3 -1
  20. package/lib/commonjs/i18n/ko.json +3 -1
  21. package/lib/commonjs/i18n/nl.json +30 -28
  22. package/lib/commonjs/i18n/ru.json +30 -28
  23. package/lib/commonjs/i18n/tr.json +30 -28
  24. package/lib/commonjs/utils/Streami18n.js +4 -1
  25. package/lib/commonjs/utils/Streami18n.js.map +1 -1
  26. package/lib/commonjs/version.json +1 -1
  27. package/lib/module/components/ImageGallery/ImageGallery.js +6 -5
  28. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  29. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +18 -15
  30. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  31. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +41 -12
  32. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  33. package/lib/module/components/Indicators/EmptyStateIndicator.js +10 -7
  34. package/lib/module/components/Indicators/EmptyStateIndicator.js.map +1 -1
  35. package/lib/module/components/Message/MessageSimple/ReactionList.js +18 -17
  36. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  37. package/lib/module/contexts/themeContext/utils/theme.js +1 -0
  38. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  39. package/lib/module/i18n/en.json +2 -0
  40. package/lib/module/i18n/es.json +74 -0
  41. package/lib/module/i18n/fr.json +30 -28
  42. package/lib/module/i18n/he.json +3 -1
  43. package/lib/module/i18n/hi.json +30 -28
  44. package/lib/module/i18n/it.json +30 -28
  45. package/lib/module/i18n/ja.json +3 -1
  46. package/lib/module/i18n/ko.json +3 -1
  47. package/lib/module/i18n/nl.json +30 -28
  48. package/lib/module/i18n/ru.json +30 -28
  49. package/lib/module/i18n/tr.json +30 -28
  50. package/lib/module/utils/Streami18n.js +4 -1
  51. package/lib/module/utils/Streami18n.js.map +1 -1
  52. package/lib/module/version.json +1 -1
  53. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +3 -0
  54. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
  55. package/lib/typescript/i18n/en.json +2 -0
  56. package/lib/typescript/i18n/es.json +74 -0
  57. package/lib/typescript/i18n/fr.json +30 -28
  58. package/lib/typescript/i18n/he.json +3 -1
  59. package/lib/typescript/i18n/hi.json +30 -28
  60. package/lib/typescript/i18n/it.json +30 -28
  61. package/lib/typescript/i18n/ja.json +3 -1
  62. package/lib/typescript/i18n/ko.json +3 -1
  63. package/lib/typescript/i18n/nl.json +30 -28
  64. package/lib/typescript/i18n/ru.json +30 -28
  65. package/lib/typescript/i18n/tr.json +30 -28
  66. package/lib/typescript/utils/Streami18n.d.ts +13 -1
  67. package/package.json +1 -1
  68. package/src/components/ImageGallery/ImageGallery.tsx +1 -0
  69. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +6 -2
  70. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +12 -7
  71. package/src/components/Indicators/EmptyStateIndicator.tsx +4 -2
  72. package/src/components/Message/MessageSimple/ReactionList.tsx +2 -1
  73. package/src/contexts/themeContext/utils/theme.ts +2 -0
  74. package/src/i18n/en.json +2 -0
  75. package/src/i18n/es.json +74 -0
  76. package/src/i18n/fr.json +30 -28
  77. package/src/i18n/he.json +3 -1
  78. package/src/i18n/hi.json +30 -28
  79. package/src/i18n/it.json +30 -28
  80. package/src/i18n/ja.json +3 -1
  81. package/src/i18n/ko.json +3 -1
  82. package/src/i18n/nl.json +30 -28
  83. package/src/i18n/ru.json +30 -28
  84. package/src/i18n/tr.json +30 -28
  85. package/src/utils/Streami18n.ts +13 -6
  86. 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","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":"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"}
1
+ {"version":3,"names":["_dayjs","_interopRequireDefault","require","_calendar","_localeData","_localizedFormat","_relativeTime","_updateLocale","_i18next","_en2","_es2","_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","es","esTranslations","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 esTranslations from '../i18n/es.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/es';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/he';\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';\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. Spanish (es)\n * 3. French (fr)\n * 4. Hebrew (he)\n * 5. Hindi (hi)\n * 6. Italian (it)\n * 7. Japanese (ja)\n * 8. Korean (ko)\n * 9. Dutch (nl)\n * 10. Russian (ru)\n * 11. Turkish (tr)\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 es: { [defaultNS]: esTranslations },\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;AACA,IAAAiB,IAAA,GAAAlB,sBAAA,CAAAC,OAAA;AAEAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAOAA,OAAA;AAIA,IAAMkB,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;AA6KvD,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;EAkFrB,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,KAjF7EO,YAAY,GAAGC,mBAAI,CAACC,cAAc,CAAC,CAAC;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,CAAE;MACnCC,EAAE,MAAApB,gBAAA,iBAAK1D,SAAS,EAAG+E,eAAc;IACnC,CAAC;IAAA,KAQDC,YAAY,GAAwC,CAAC,CAAC;IAAA,KAqKtDC,YAAY,GAAG,UAAC7C,QAAgB,EAAK;MACnC,IAAIM,KAAI,CAACwC,sBAAsB,EAAE,OAAO,IAAI;MAE5C,OAAOC,MAAM,CAACC,IAAI,CAAClF,iBAAK,CAACmF,EAAE,CAAC,CAACC,OAAO,CAAClD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAAA,KAEDmD,uBAAuB,GAAG,YAAM;MAC9B,IAAMC,kBAAkB,GAAGL,MAAM,CAACC,IAAI,CAAC1C,KAAI,CAACc,YAAY,CAAC;MACzD,IAAIgC,kBAAkB,CAACF,OAAO,CAAC5C,KAAI,CAAC+C,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3D/C,KAAI,CAACL,MAAM,CACT,kBAAgBK,KAAI,CAAC+C,eAAe,qGAC2B/C,KAAI,CAAC+C,eAAe,mBAAe,oDAClD/C,KAAI,CAACgD,qBAAqB,CAAC,CAAC,CAC9E,CAAC;QAEDhD,KAAI,CAAC+C,eAAe,GAAGxF,UAAU;MACnC;IACF,CAAC;IAAA,KAGD0F,cAAc,GAAG;MAAA,OAAMjD,KAAI,CAACM,YAAY;IAAA;IAAA,KAGxC0C,qBAAqB,GAAG;MAAA,OAAMP,MAAM,CAACC,IAAI,CAAC1C,KAAI,CAACc,YAAY,CAAC;IAAA;IAAA,KAG5DoC,eAAe,GAAG;MAAA,OAAMlD,KAAI,CAACc,YAAY;IAAA;IAzJvC,IAAMqC,YAAY,OAAAC,SAAA,iBACb/D,wBAAwB,EACxBY,OAAO,CACX;IAGD,IAAI,CAACN,MAAM,GAAGwD,YAAY,CAACxD,MAAM;IAEjC,IAAI,CAACoD,eAAe,GAAGI,YAAY,CAACzD,QAAQ;IAC5C,IAAI,CAACJ,cAAc,GAAG6D,YAAY,CAAC7D,cAAc;IAEjD,IAAI;MAKF,IAAI,IAAI,CAACA,cAAc,IAAIJ,OAAO,CAAC,IAAI,CAACI,cAAc,CAAC,EAAE;QACvD,IAAI,CAACA,cAAc,CAAC7B,MAAM,CAAC4F,2BAAe,CAAC;QAC3C,IAAI,CAAC/D,cAAc,CAAC7B,MAAM,CAACS,oBAAQ,CAAC;QACpC,IAAI,CAACoB,cAAc,CAAC7B,MAAM,CAAC6F,sBAAU,CAAC;QACtC,IAAI,CAAChE,cAAc,CAAC7B,MAAM,CAACuB,wBAAY,CAAC;MAC1C;IACF,CAAC,CAAC,OAAOuE,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,kHACkGC,IAAI,CAACC,SAAS,CAC3HH,KACF,CACF,CAAC;IACH;IAEA,IAAI,CAACf,sBAAsB,GAAG,CAAC,CAACvC,OAAO,CAACX,cAAc;IACtD,IAAMqE,uBAAuB,GAAGR,YAAY,CAACQ,uBAAuB;IAEpE,IAAIA,uBAAuB,EAAE;MAC3B,IAAI,CAAC7C,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,OAAA/B,gBAAA,iBACpC1D,SAAS,EACR,IAAI,CAACwD,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,IACvC,IAAI,CAACjC,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,CAACzF,SAAS,CAAC,OAAA8F,SAAA,iBAEzC,IAAI,CAACtC,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,CAACzF,SAAS,CAAC,EAClDqG,uBAAuB,IAE5BA,uBAAuB,CAC9B;IACH;IAGA,IAAI,CAAC,IAAI,CAAC7C,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,EAAE;MAC5C,IAAI,CAACjC,YAAY,CAAC,IAAI,CAACiC,eAAe,CAAC,OAAA/B,gBAAA,iBACpC1D,SAAS,EAAG,CAAC,CAAC,CAChB;IACH;IAEA,IAAI,CAAC8C,aAAa,OAAAgD,SAAA;MAChB5D,KAAK,EAAE2D,YAAY,CAAC3D,KAAK;MACzBoE,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,uBAACrD,GAAW,EAAK;QACvCb,KAAI,CAACL,MAAM,+CAA6CkB,GAAK,CAAC;QAE9D,OAAOA,GAAG;MACZ;IAAC,GACET,aAAa,CACjB;IAED,IAAI,CAACyC,uBAAuB,CAAC,CAAC;IAE9B,IAAMtD,4BAA4B,GAAG4D,YAAY,CAAC5D,4BAA4B;IAE9E,IAAIA,4BAA4B,EAAE;MAChC,IAAI,CAAC4E,iBAAiB,CAAC,IAAI,CAACpB,eAAe,MAAAK,SAAA,iBACtC7D,4BAA4B,CAChC,CAAC;IACJ,CAAC,MAAM,IAAI,CAAC,IAAI,CAACgD,YAAY,CAAC,IAAI,CAACQ,eAAe,CAAC,EAAE;MACnD,IAAI,CAACpD,MAAM,CACT,qDAAmD,IAAI,CAACoD,eAAe,sGACP,IAAI,CAACA,eAAe,0BAAqB,mHAE3G,CAAC;IACH;IAEA,IAAI,CAACqB,eAAe,GAAG,UAACC,SAAS,EAAK;MACpC,IAAIlB,YAAY,CAAC1D,2BAA2B,IAAI,CAACO,KAAI,CAACuC,YAAY,CAACvC,KAAI,CAAC+C,eAAe,CAAC,EAAE;QAIxF,IAAI7D,OAAO,CAACc,KAAI,CAACV,cAAc,CAAC,EAAE;UAChC,OAAOU,KAAI,CAACV,cAAc,CAAC+E,SAAS,CAAC,CAACC,MAAM,CAAC/G,UAAU,CAAC;QAC1D;QACA,OAAOyC,KAAI,CAACV,cAAc,CAAC+E,SAAS,CAAC,CAACC,MAAM,CAAC/G,UAAU,CAAC;MAC1D;MACA,IAAI2B,OAAO,CAACc,KAAI,CAACV,cAAc,CAAC,EAAE;QAChC,OAAOU,KAAI,CAACV,cAAc,CAAC+E,SAAS,CAAC,CAACC,MAAM,CAACtE,KAAI,CAAC+C,eAAe,CAAC;MACpE;MACA,OAAO/C,KAAI,CAACV,cAAc,CAAC+E,SAAS,CAAC,CAACC,MAAM,CAACtE,KAAI,CAAC+C,eAAe,CAAC;IACpE,CAAC;EACH;EAAC,IAAAwB,aAAA,aAAAxE,UAAA;IAAAc,GAAA;IAAA2D,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,CAAC,CAAC;cAACoC,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAGd,IAAI,CAAC7E,YAAY,CAAC8E,IAAI,KAAAhC,SAAA,iBAChC,IAAI,CAAChD,aAAa;gBACrB4D,GAAG,EAAE,IAAI,CAACjB,eAAe;gBACzBsC,SAAS,EAAE,IAAI,CAACvE;cAAY,EAC7B,CAAC;YAAA;cAJF,IAAI,CAACF,CAAC,GAAAqE,QAAA,CAAAK,IAAA;cAKN,IAAI,IAAI,CAACC,uBAAuB,EAAE;gBAEhC,IAAI,CAAC3E,CAAC,GAAG,IAAI,CAAC2E,uBAAuB;gBACrC,IAAI,CAACA,uBAAuB,GAAGnG,SAAS;gBACxC,IAAI,CAACuB,4BAA4B,CAAC6E,OAAO,CAAC,UAACC,QAAQ;kBAAA,OAAKA,QAAQ,CAACX,MAAI,CAAClE,CAAC,CAAC;gBAAA,EAAC;cAC3E;cACA,IAAI,CAACH,WAAW,GAAG,IAAI;cAACwE,QAAA,CAAAE,IAAA;cAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAS,EAAA,GAAAT,QAAA;cAExB,IAAI,CAACtF,MAAM,sCAAoC8D,IAAI,CAACC,SAAS,CAAAuB,QAAA,CAAAS,EAAM,CAAG,CAAC;YAAC;cAE1E,IAAI,CAACC,mBAAmB,GAAGvG,SAAS;YAAC;YAAA;cAAA,OAAA6F,QAAA,CAAAW,IAAA;UAAA;QAAA,GAAAf,OAAA;MAAA,CACtC;MAAA,SAAAO,KAAA;QAAA,OAAAX,KAAA,CAAAoB,KAAA,OAAA3F,SAAA;MAAA;MAAA,OAAAkF,IAAA;IAAA;EAAA;IAAAvE,GAAA;IAAA2D,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,CAAC1E,WAAW;gBAAAyF,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,CAAC,CAAC;cAC/B,IAAI,CAACO,mBAAmB,GAAGK,WAAW;cAACE,SAAA,CAAAf,IAAA;cAAA,OACjCa,WAAW;YAAA;cAAA,OAAAE,SAAA,CAAAC,MAAA,WAGd;gBACLvF,CAAC,EAAE,IAAI,CAACA,CAAC;gBACTwD,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,OAAA3F,SAAA;MAAA;MAAA,OAAAkG,cAAA;IAAA;EAAA;IAAAvF,GAAA;IAAA2D,KAAA,EAKD,SAAA6B,oBACE3G,QAAgB,EAChB4G,WAAuE,EACvEC,iBAAoC,EACpC;MACA,IAAI,CAACD,WAAW,EAAE;QAChB,IAAI,CAAC3G,MAAM,uGAEX,CAAC;QACD;MACF;MAEA,IAAI,CAAC,IAAI,CAACmB,YAAY,CAACpB,QAAQ,CAAC,EAAE;QAChC,IAAI,CAACoB,YAAY,CAACpB,QAAQ,CAAC,OAAAsB,gBAAA,iBAAM1D,SAAS,EAAGgJ,WAAW,CAAE;MAC5D,CAAC,MAAM;QACL,IAAI,CAACxF,YAAY,CAACpB,QAAQ,CAAC,CAACpC,SAAS,CAAC,GAAGgJ,WAAW;MACtD;MAEA,IAAIC,iBAAiB,EAAE;QACrB,IAAI,CAACjE,YAAY,CAAC5C,QAAQ,CAAC,OAAA0D,SAAA,iBAAQmD,iBAAiB,CAAE;MACxD,CAAC,MAAM,IAAI,CAAC,IAAI,CAAChE,YAAY,CAAC7C,QAAQ,CAAC,EAAE;QACvC,IAAI,CAACC,MAAM,CACT,yGACuBD,QAAQ,+BAA2B,oEACKA,QAAQ,0BAAqB,mHAE9F,CAAC;MACH;MAEA,IAAI,IAAI,CAACe,WAAW,EAAE;QACpB,IAAI,CAACH,YAAY,CAACkG,YAAY,CAAC9G,QAAQ,EAAEpC,SAAS,EAAEgJ,WAAW,CAAC;MAClE;IACF;EAAC;IAAAzF,GAAA;IAAA2D,KAAA,EAED,SAAAL,kBAAkBtD,GAAW,EAAE4F,MAAwB,EAAE;MACvD,IAAI,IAAI,CAAClE,YAAY,CAAC1B,GAAG,CAAC,EAAE;QAC1BrD,iBAAK,CAACE,YAAY,CAACmD,GAAG,MAAAuC,SAAA,iBAAOqD,MAAM,CAAE,CAAC;MACxC,CAAC,MAAM;QAELjJ,iBAAK,CAAC8G,MAAM,KAAAlB,SAAA;UAAGsD,IAAI,EAAE7F;QAAG,GAAKhC,SAAS,EAAK4H,MAAM,GAAIrH,SAAS,EAAE,IAAI,CAAC;MACvE;IACF;EAAC;IAAAyB,GAAA;IAAA2D,KAAA;MAAA,IAAAmC,YAAA,OAAAjC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAMD,SAAAgC,SAAkBlH,QAAgB;QAAA,IAAAmH,EAAA;QAAA,OAAAlC,YAAA,YAAAI,IAAA,UAAA+B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA7B,IAAA,GAAA6B,SAAA,CAAA5B,IAAA;YAAA;cAChC,IAAI,CAACpC,eAAe,GAAGrD,QAAQ;cAAC,IAE3B,IAAI,CAACe,WAAW;gBAAAsG,SAAA,CAAA5B,IAAA;gBAAA;cAAA;cAAA,OAAA4B,SAAA,CAAAZ,MAAA;YAAA;cAAAY,SAAA,CAAA7B,IAAA;cAAA6B,SAAA,CAAA5B,IAAA;cAAA,OAGH,IAAI,CAAC7E,YAAY,CAAC0G,cAAc,CAACtH,QAAQ,CAAC;YAAA;cAApDkB,EAAC,GAAAmG,SAAA,CAAAzB,IAAA;cACP,IAAI,IAAI,CAAChD,YAAY,CAAC5C,QAAQ,CAAC,EAAE;gBAC/B,IAAI,CAACyE,iBAAiB,CAAC,IAAI,CAACpB,eAAe,EAAE,IAAI,CAACT,YAAY,CAAC,IAAI,CAACS,eAAe,CAAC,CAAC;cACvF;cACA,IAAI,CAACnC,CAAC,GAAGA,EAAC;cACV,IAAI,CAACF,yBAAyB,CAAC8E,OAAO,CAAC,UAACC,QAAQ;gBAAA,OAAKA,QAAQ,CAAC7E,EAAC,CAAC;cAAA,EAAC;cAAC,OAAAmG,SAAA,CAAAZ,MAAA,WAE3DvF,EAAC;YAAA;cAAAmG,SAAA,CAAA7B,IAAA;cAAA6B,SAAA,CAAArB,EAAA,GAAAqB,SAAA;cAER,IAAI,CAACpH,MAAM,8BAA4B8D,IAAI,CAACC,SAAS,CAAAqD,SAAA,CAAArB,EAAM,CAAG,CAAC;cAAC,OAAAqB,SAAA,CAAAZ,MAAA,WACzD,IAAI,CAACvF,CAAC;YAAA;YAAA;cAAA,OAAAmG,SAAA,CAAAnB,IAAA;UAAA;QAAA,GAAAgB,QAAA;MAAA,CAEhB;MAAA,SAAAK,YAAAC,EAAA;QAAA,OAAAP,YAAA,CAAAd,KAAA,OAAA3F,SAAA;MAAA;MAAA,OAAA+G,WAAA;IAAA;EAAA;IAAApG,GAAA;IAAA2D,KAAA,EAED,SAAA2C,4BAA4BC,QAAgC,EAAE;MAAA,IAAAC,MAAA;MAC5D,IAAI,CAAC3G,yBAAyB,CAAC4G,IAAI,CAACF,QAAQ,CAAC;MAC7C,OAAO;QACLG,WAAW,EAAE,SAAAA,YAAA,EAAM;UACjBF,MAAI,CAAC3G,yBAAyB,GAAG2G,MAAI,CAAC3G,yBAAyB,CAAC8G,MAAM,CACpE,UAAC/B,QAAQ;YAAA,OAAKA,QAAQ,KAAK2B,QAAQ;UAAA,CACrC,CAAC;QACH;MACF,CAAC;IACH;EAAC;IAAAvG,GAAA;IAAA2D,KAAA,EAED,SAAAiD,+BAA+BL,QAAgC,EAAE;MAAA,IAAAM,MAAA;MAC/D,IAAI,CAAC/G,4BAA4B,CAAC2G,IAAI,CAACF,QAAQ,CAAC;MAChD,OAAO;QACLG,WAAW,EAAE,SAAAA,YAAA,EAAM;UACjBG,MAAI,CAAC/G,4BAA4B,GAAG+G,MAAI,CAAC/G,4BAA4B,CAAC6G,MAAM,CAC1E,UAAC/B,QAAQ;YAAA,OAAKA,QAAQ,KAAK2B,QAAQ;UAAA,CACrC,CAAC;QACH;MACF,CAAC;IACH;EAAC;IAAAvG,GAAA;IAAA2D,KAAA,EAED,SAAAmD,kBAAkBC,SAAoB,EAAE;MACtC,IAAI,CAAC,IAAI,CAACnH,WAAW,EAAE;QACrB,IAAI,CAAC8E,uBAAuB,GAAGqC,SAAS;MAC1C,CAAC,MAAM;QACL,IAAI,CAAChH,CAAC,GAAGgH,SAAS;QAClB,IAAI,CAACjH,4BAA4B,CAAC6E,OAAO,CAAC,UAACC,QAAQ;UAAA,OAAKA,QAAQ,CAACmC,SAAS,CAAC;QAAA,EAAC;MAC9E;IACF;EAAC;EAAA,OAAA7H,UAAA;AAAA;AAAA8H,OAAA,CAAA9H,UAAA,GAAAA,UAAA"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.21.0"
2
+ "version": "5.22.0-beta.2"
3
3
  }
@@ -511,6 +511,7 @@ var ImageGallery = function ImageGallery(props) {
511
511
  photoLength: imageGalleryAttachments.length,
512
512
  progress: imageGalleryAttachments[selectedIndex].progress || 0,
513
513
  selectedIndex: selectedIndex,
514
+ videoRef: videoRef,
514
515
  visible: headerFooterVisible
515
516
  }, imageGalleryCustomComponents == null ? void 0 : imageGalleryCustomComponents.footer, {
516
517
  __self: _this,
@@ -526,14 +527,14 @@ var ImageGallery = function ImageGallery(props) {
526
527
  __self: _this,
527
528
  __source: {
528
529
  fileName: _jsxFileName,
529
- lineNumber: 677,
530
+ lineNumber: 678,
530
531
  columnNumber: 7
531
532
  }
532
533
  }), _react["default"].createElement(_bottomSheet.BottomSheetModalProvider, {
533
534
  __self: _this,
534
535
  __source: {
535
536
  fileName: _jsxFileName,
536
- lineNumber: 682,
537
+ lineNumber: 683,
537
538
  columnNumber: 7
538
539
  }
539
540
  }, _react["default"].createElement(_bottomSheet.BottomSheetModal, {
@@ -546,7 +547,7 @@ var ImageGallery = function ImageGallery(props) {
546
547
  __self: _this,
547
548
  __source: {
548
549
  fileName: _jsxFileName,
549
- lineNumber: 687,
550
+ lineNumber: 688,
550
551
  columnNumber: 13
551
552
  }
552
553
  }));
@@ -561,7 +562,7 @@ var ImageGallery = function ImageGallery(props) {
561
562
  __self: _this,
562
563
  __source: {
563
564
  fileName: _jsxFileName,
564
- lineNumber: 683,
565
+ lineNumber: 684,
565
566
  columnNumber: 9
566
567
  }
567
568
  }, _react["default"].createElement(_ImageGrid.ImageGrid, (0, _extends2["default"])({
@@ -573,7 +574,7 @@ var ImageGallery = function ImageGallery(props) {
573
574
  __self: _this,
574
575
  __source: {
575
576
  fileName: _jsxFileName,
576
- lineNumber: 698,
577
+ lineNumber: 699,
577
578
  columnNumber: 11
578
579
  }
579
580
  })))));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_utils","_getGiphyMimeType","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isAndroid","Platform","OS","fullScreenHeight","Dimensions","height","measuredScreenHeight","vh","screenWidth","vw","halfScreenWidth","MARGIN","HasPinched","exports","IsSwiping","ImageGallery","props","_StatusBar$currentHei","_imageGalleryAttachme","_props$autoPlayVideo","autoPlayVideo","_props$giphyVersion","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","_useState","useState","_useState2","_slicedToArray2","imageGalleryAttachments","setImageGalleryAttachments","_useTheme","useTheme","_useTheme$theme","theme","white_snow","colors","_useTheme$theme$image","imageGallery","backgroundColor","pager","slide","_useState3","_useState4","gridPhotos","setGridPhotos","_useOverlayContext","useOverlayContext","overlay","translucentStatusBar","_useImageGalleryConte","useImageGalleryContext","messages","selectedMessage","setSelectedMessage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","useRef","_useState5","_useState6","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","useSharedValue","screenTranslateY","showScreen","value","withTiming","duration","easing","Easing","out","ease","useEffect","Keyboard","dismiss","_useState7","_useState8","currentImageHeight","setCurrentImageHeight","_useState9","_useState10","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","_cur$attachments","attachmentImages","attachments","filter","attachment","_attachment$giphy","_attachment$giphy$gip","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","getUrlOfImageAttachment","isVideoPackageAvailable","reverse","attachmentPhotos","map","a","_a$giphy","_a$giphy$giphyVersion","imageUrl","giphyURL","isInitiallyPaused","channelId","cid","created_at","id","messageId","mime_type","getGiphyMimeType","original_height","original_width","paused","progress","uri","getResizedImageUrl","width","user","user_id","concat","_toConsumableArray2","photoLength","length","stripQueryFromUrl","split","updatePosition","newIndex","runOnJS","findIndex","photo","runOnUI","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","_useImageGalleryGestu","useImageGalleryGestures","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","useDerivedValue","pagerStyle","useAnimatedStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","_bottomSheetModalRef$","current","close","openGridView","_bottomSheetModalRef$2","present","handleEnd","handlePlayPause","handleProgress","videoRef","handleLoad","prevImageGalleryAttachment","imageGalleryAttachment","_extends2","hasEnd","prevImageGalleryAttachments","pausedStatus","onPlayPause","status","undefined","createElement","View","accessibilityLabel","pointerEvents","style","StyleSheet","absoluteFillObject","__self","__source","fileName","lineNumber","columnNumber","TapGestureHandler","minPointers","numberOfTaps","onGestureEvent","ref","waitFor","maxDeltaX","maxDeltaY","maxDist","PinchGestureHandler","simultaneousHandlers","absoluteFill","PanGestureHandler","enabled","maxPointers","minDist","styles","animatedContainer","i","AnimatedGalleryVideo","attachmentId","previous","repeat","selected","shouldRender","abs","source","marginRight","AnimatedGalleryImage","ImageGalleryHeader","visible","header","ImageGalleryFooter","footer","ImageGalleryOverlay","BottomSheetModalProvider","BottomSheetModal","animatedIndex","enablePanDownToClose","handleComponent","ImageGridHandle","gridHandle","handleHeight","onChange","ImageGrid","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"sources":["ImageGallery.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PinchGestureHandler,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n Easing,\n runOnJS,\n runOnUI,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport { AnimatedGalleryVideo } from './components/AnimatedGalleryVideo';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryGestures } from './hooks/useImageGalleryGestures';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n | 'autoPlayVideo'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n autoPlayVideo = false,\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [imageGalleryAttachments, setImageGalleryAttachments] = useState<\n Photo<StreamChatGenerics>[]\n >([]);\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor, pager, slide },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<StreamChatGenerics>[]>([]);\n const { overlay, translucentStatusBar } = useOverlayContext();\n const { messages, selectedMessage, setSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = messages.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments\n ?.filter(\n (attachment) =>\n (attachment.type === 'giphy' &&\n (attachment.giphy?.[giphyVersion]?.url ||\n attachment.thumb_url ||\n attachment.image_url)) ||\n (attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment)) ||\n (isVideoPackageAvailable() && attachment.type === 'video'),\n )\n .reverse() || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n const giphyURL = a.giphy?.[giphyVersion]?.url || a.thumb_url || a.image_url;\n const isInitiallyPaused = !autoPlayVideo;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n duration: 0,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.type === 'giphy' ? getGiphyMimeType(giphyURL ?? '') : a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n paused: isInitiallyPaused,\n progress: 0,\n type: a.type,\n uri:\n a.type === 'giphy'\n ? giphyURL\n : getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...attachmentPhotos, ...acc] as Photo<StreamChatGenerics>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n useEffect(() => {\n setImageGalleryAttachments(photos);\n }, []);\n\n /**\n * The URL for the images may differ because of dimensions passed as\n * part of the query.\n */\n const stripQueryFromUrl = (url: string) => url.split('?')[0];\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) =>\n photo.messageId === selectedMessage?.messageId &&\n stripQueryFromUrl(photo.uri) === stripQueryFromUrl(selectedMessage?.url || ''),\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [selectedMessage, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = imageGalleryAttachments[selectedIndex]?.uri;\n\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = imageGalleryAttachments[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n if (photo.type === 'image') {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }\n }, [uriForCurrentImage]);\n\n const { onDoubleTap, onPan, onPinch, onSingleTap } = useImageGalleryGestures({\n currentImageHeight,\n halfScreenHeight,\n halfScreenWidth,\n headerFooterVisible,\n offsetScale,\n overlayOpacity,\n photoLength,\n scale,\n screenHeight,\n screenWidth,\n selectedIndex,\n setSelectedIndex,\n translateX,\n translateY,\n translationX,\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: screenTranslateY.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(imageGalleryAttachments);\n }\n };\n\n const handleEnd = () => {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n handleProgress(imageGalleryAttachments[selectedIndex].id, 1, true);\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleLoad = (index: string, duration: number) => {\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n duration: imageGalleryAttachment.id === index ? duration : imageGalleryAttachment.duration,\n })),\n );\n };\n\n const handleProgress = (index: string, progress: number, hasEnd?: boolean) => {\n setImageGalleryAttachments((prevImageGalleryAttachments) =>\n prevImageGalleryAttachments.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n progress:\n imageGalleryAttachment.id === index\n ? hasEnd\n ? 1\n : progress\n : imageGalleryAttachment.progress,\n })),\n );\n };\n\n const handlePlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: imageGalleryAttachment.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: true,\n })),\n );\n }\n };\n\n const onPlayPause = (status?: boolean) => {\n if (status === undefined) {\n if (imageGalleryAttachments[selectedIndex].paused) {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, false);\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n }\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, status);\n }\n };\n\n return (\n <Animated.View\n accessibilityLabel='Image Gallery'\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {imageGalleryAttachments.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n attachmentId={photo.id}\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={photo.paused || false}\n previous={selectedIndex > i}\n repeat={true}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n source={{ uri: photo.uri }}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n videoRef={videoRef}\n />\n ) : (\n <AnimatedGalleryImage\n accessibilityLabel={'Image Item'}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n />\n ),\n )}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<StreamChatGenerics>\n opacity={headerFooterOpacity}\n photo={imageGalleryAttachments[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n\n {imageGalleryAttachments.length > 0 && (\n <ImageGalleryFooter<StreamChatGenerics>\n accessibilityLabel={'Image Gallery Footer'}\n duration={imageGalleryAttachments[selectedIndex].duration || 0}\n onPlayPause={onPlayPause}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={imageGalleryAttachments[selectedIndex].paused || false}\n photo={imageGalleryAttachments[selectedIndex]}\n photoLength={imageGalleryAttachments.length}\n progress={imageGalleryAttachments[selectedIndex].progress || 0}\n selectedIndex={selectedIndex}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n )}\n\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n setSelectedMessage={setSelectedMessage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n duration?: number;\n messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n paused?: boolean;\n progress?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_bottomSheet","_AnimatedGalleryImage","_AnimatedGalleryVideo","_ImageGalleryFooter","_ImageGalleryHeader","_ImageGalleryOverlay","_ImageGrid","_ImageGridHandle","_useImageGalleryGestures","_ImageGalleryContext","_OverlayContext","_ThemeContext","_native","_getResizedImageUrl","_getUrlOfImageAttachment","_utils","_getGiphyMimeType","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isAndroid","Platform","OS","fullScreenHeight","Dimensions","height","measuredScreenHeight","vh","screenWidth","vw","halfScreenWidth","MARGIN","HasPinched","exports","IsSwiping","ImageGallery","props","_StatusBar$currentHei","_imageGalleryAttachme","_props$autoPlayVideo","autoPlayVideo","_props$giphyVersion","giphyVersion","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","numberOfImageGalleryGridColumns","overlayOpacity","_useState","useState","_useState2","_slicedToArray2","imageGalleryAttachments","setImageGalleryAttachments","_useTheme","useTheme","_useTheme$theme","theme","white_snow","colors","_useTheme$theme$image","imageGallery","backgroundColor","pager","slide","_useState3","_useState4","gridPhotos","setGridPhotos","_useOverlayContext","useOverlayContext","overlay","translucentStatusBar","_useImageGalleryConte","useImageGalleryContext","messages","selectedMessage","setSelectedMessage","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","androidScreenHeightAdjustment","screenHeight","halfScreenHeight","quarterScreenHeight","snapPoints","React","useMemo","bottomSheetModalRef","useRef","_useState5","_useState6","currentBottomSheetIndex","setCurrentBottomSheetIndex","animatedBottomSheetIndex","useSharedValue","screenTranslateY","showScreen","value","withTiming","duration","easing","Easing","out","ease","useEffect","Keyboard","dismiss","_useState7","_useState8","currentImageHeight","setCurrentImageHeight","_useState9","_useState10","selectedIndex","setSelectedIndex","index","headerFooterVisible","doubleTapRef","panRef","pinchRef","singleTapRef","translateX","translateY","offsetScale","scale","translationX","photos","reduce","acc","cur","_cur$attachments","attachmentImages","attachments","filter","attachment","_attachment$giphy","_attachment$giphy$gip","type","giphy","url","thumb_url","image_url","title_link","og_scrape_url","getUrlOfImageAttachment","isVideoPackageAvailable","reverse","attachmentPhotos","map","a","_a$giphy","_a$giphy$giphyVersion","imageUrl","giphyURL","isInitiallyPaused","channelId","cid","created_at","id","messageId","mime_type","getGiphyMimeType","original_height","original_width","paused","progress","uri","getResizedImageUrl","width","user","user_id","concat","_toConsumableArray2","photoLength","length","stripQueryFromUrl","split","updatePosition","newIndex","runOnJS","findIndex","photo","runOnUI","uriForCurrentImage","imageHeight","Math","floor","Image","getSize","_useImageGalleryGestu","useImageGalleryGestures","onDoubleTap","onPan","onPinch","onSingleTap","headerFooterOpacity","useDerivedValue","pagerStyle","useAnimatedStyle","transform","scaleX","containerBackground","opacity","showScreenStyle","closeGridView","_bottomSheetModalRef$","current","close","openGridView","_bottomSheetModalRef$2","present","handleEnd","handlePlayPause","handleProgress","videoRef","handleLoad","prevImageGalleryAttachment","imageGalleryAttachment","_extends2","hasEnd","prevImageGalleryAttachments","pausedStatus","onPlayPause","status","undefined","createElement","View","accessibilityLabel","pointerEvents","style","StyleSheet","absoluteFillObject","__self","__source","fileName","lineNumber","columnNumber","TapGestureHandler","minPointers","numberOfTaps","onGestureEvent","ref","waitFor","maxDeltaX","maxDeltaY","maxDist","PinchGestureHandler","simultaneousHandlers","absoluteFill","PanGestureHandler","enabled","maxPointers","minDist","styles","animatedContainer","i","AnimatedGalleryVideo","attachmentId","previous","repeat","selected","shouldRender","abs","source","marginRight","AnimatedGalleryImage","ImageGalleryHeader","visible","header","ImageGalleryFooter","footer","ImageGalleryOverlay","BottomSheetModalProvider","BottomSheetModal","animatedIndex","enablePanDownToClose","handleComponent","ImageGridHandle","gridHandle","handleHeight","onChange","ImageGrid","grid","clamp","lowerBound","upperBound","min","max","create","alignItems","flexDirection","displayName"],"sources":["ImageGallery.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Dimensions,\n Image,\n ImageStyle,\n Keyboard,\n Platform,\n StatusBar,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\n\nimport {\n PanGestureHandler,\n PinchGestureHandler,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\n\nimport Animated, {\n Easing,\n runOnJS,\n runOnUI,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { BottomSheetModal, BottomSheetModalProvider } from '@gorhom/bottom-sheet';\n\nimport type { UserResponse } from 'stream-chat';\n\nimport { AnimatedGalleryImage } from './components/AnimatedGalleryImage';\nimport { AnimatedGalleryVideo } from './components/AnimatedGalleryVideo';\nimport {\n ImageGalleryFooter,\n ImageGalleryFooterCustomComponentProps,\n} from './components/ImageGalleryFooter';\nimport {\n ImageGalleryHeader,\n ImageGalleryHeaderCustomComponentProps,\n} from './components/ImageGalleryHeader';\nimport { ImageGalleryOverlay } from './components/ImageGalleryOverlay';\nimport { ImageGalleryGridImageComponents, ImageGrid } from './components/ImageGrid';\nimport {\n ImageGalleryGridHandleCustomComponentProps,\n ImageGridHandle,\n} from './components/ImageGridHandle';\n\nimport { useImageGalleryGestures } from './hooks/useImageGalleryGestures';\n\nimport { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { isVideoPackageAvailable, VideoType } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\nimport { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment';\nimport { vh, vw } from '../../utils/utils';\nimport { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType';\n\nconst isAndroid = Platform.OS === 'android';\nconst fullScreenHeight = Dimensions.get('screen').height;\nconst measuredScreenHeight = vh(100);\nconst screenWidth = vw(100);\nconst halfScreenWidth = vw(50);\nconst MARGIN = 32;\n\nexport enum HasPinched {\n FALSE = 0,\n TRUE,\n}\n\nexport enum IsSwiping {\n UNDETERMINED = 0,\n TRUE,\n FALSE,\n}\n\nexport type ImageGalleryCustomComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Override props for following UI components, which are part of [image gallery](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#gallery-components).\n *\n * - [ImageGalleryFooter](#ImageGalleryFooter)\n *\n * - [ImageGrid](#ImageGrid)\n *\n * - [ImageGridHandle](#ImageGridHandle)\n *\n * - [ImageGalleryHeader](#ImageGalleryHeader)\n *\n * e.g.,\n *\n * ```js\n * {\n * footer: {\n * ShareIcon: CustomShareIconComponent\n * },\n * grid: {\n * avatarComponent: CustomAvatarComponent\n * },\n * gridHandle: {\n * centerComponent: CustomCenterComponent\n * },\n * header: {\n * CloseIcon: CustomCloseButtonComponent\n * },\n * }\n * ```\n * @overrideType object\n */\n imageGalleryCustomComponents?: {\n footer?: ImageGalleryFooterCustomComponentProps<StreamChatGenerics>;\n grid?: ImageGalleryGridImageComponents<StreamChatGenerics>;\n gridHandle?: ImageGalleryGridHandleCustomComponentProps;\n header?: ImageGalleryHeaderCustomComponentProps<StreamChatGenerics>;\n };\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryCustomComponents<StreamChatGenerics> & {\n overlayOpacity: Animated.SharedValue<number>;\n } & Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'giphyVersion'\n | 'imageGalleryGridSnapPoints'\n | 'imageGalleryGridHandleHeight'\n | 'numberOfImageGalleryGridColumns'\n | 'autoPlayVideo'\n >;\n\nexport const ImageGallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n autoPlayVideo = false,\n giphyVersion = 'fixed_height',\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n numberOfImageGalleryGridColumns,\n overlayOpacity,\n } = props;\n const [imageGalleryAttachments, setImageGalleryAttachments] = useState<\n Photo<StreamChatGenerics>[]\n >([]);\n const {\n theme: {\n colors: { white_snow },\n imageGallery: { backgroundColor, pager, slide },\n },\n } = useTheme();\n const [gridPhotos, setGridPhotos] = useState<Photo<StreamChatGenerics>[]>([]);\n const { overlay, translucentStatusBar } = useOverlayContext();\n const { messages, selectedMessage, setSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n\n /**\n * Height constants\n */\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - measuredScreenHeight - statusBarHeight;\n const androidScreenHeightAdjustment = translucentStatusBar\n ? bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? 0\n : statusBarHeight\n : bottomBarHeight === statusBarHeight || bottomBarHeight < 0\n ? -statusBarHeight\n : 0;\n const screenHeight = isAndroid\n ? Dimensions.get('window').height + androidScreenHeightAdjustment\n : vh(100);\n const halfScreenHeight = screenHeight / 2;\n const quarterScreenHeight = screenHeight / 4;\n const snapPoints = React.useMemo(\n () => [(screenHeight * 3) / 4, screenHeight - (imageGalleryGridHandleHeight ?? 40)],\n [],\n );\n\n /**\n * BottomSheetModal ref\n */\n const bottomSheetModalRef = useRef<BottomSheetModal>(null);\n\n /**\n * BottomSheetModal state\n */\n const [currentBottomSheetIndex, setCurrentBottomSheetIndex] = useState(0);\n const animatedBottomSheetIndex = useSharedValue(0);\n\n /**\n * Fade animation for screen, it is always rendered with pointerEvents\n * set to none for fast opening\n */\n const screenTranslateY = useSharedValue(screenHeight);\n const showScreen = () => {\n 'worklet';\n screenTranslateY.value = withTiming(0, {\n duration: 250,\n easing: Easing.out(Easing.ease),\n });\n };\n\n /**\n * Run the fade animation on visible change\n */\n useEffect(() => {\n Keyboard.dismiss();\n showScreen();\n }, []);\n\n /**\n * Image height from URL or default to full screen height\n */\n const [currentImageHeight, setCurrentImageHeight] = useState<number>(screenHeight);\n\n /**\n * JS and UI index values, the JS follows the UI but is needed\n * for rendering the virtualized image list\n */\n const [selectedIndex, setSelectedIndex] = useState(0);\n const index = useSharedValue(0);\n\n /**\n * Header visible value for animating in out\n */\n const headerFooterVisible = useSharedValue(1);\n\n /**\n * Gesture handler refs\n */\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const panRef = useRef<PanGestureHandler>(null);\n const pinchRef = useRef<PinchGestureHandler>(null);\n const singleTapRef = useRef<TapGestureHandler>(null);\n\n /**\n * Shared values for movement\n */\n const translateX = useSharedValue(0);\n const translateY = useSharedValue(0);\n const offsetScale = useSharedValue(1);\n const scale = useSharedValue(1);\n const translationX = useSharedValue(0);\n\n /**\n * Photos array created from all currently available\n * photo attachments\n */\n\n const photos = messages.reduce((acc: Photo<StreamChatGenerics>[], cur) => {\n const attachmentImages =\n cur.attachments\n ?.filter(\n (attachment) =>\n (attachment.type === 'giphy' &&\n (attachment.giphy?.[giphyVersion]?.url ||\n attachment.thumb_url ||\n attachment.image_url)) ||\n (attachment.type === 'image' &&\n !attachment.title_link &&\n !attachment.og_scrape_url &&\n getUrlOfImageAttachment(attachment)) ||\n (isVideoPackageAvailable() && attachment.type === 'video'),\n )\n .reverse() || [];\n\n const attachmentPhotos = attachmentImages.map((a) => {\n const imageUrl = getUrlOfImageAttachment(a) as string;\n const giphyURL = a.giphy?.[giphyVersion]?.url || a.thumb_url || a.image_url;\n const isInitiallyPaused = !autoPlayVideo;\n\n return {\n channelId: cur.cid,\n created_at: cur.created_at,\n duration: 0,\n id: `photoId-${cur.id}-${imageUrl}`,\n messageId: cur.id,\n mime_type: a.type === 'giphy' ? getGiphyMimeType(giphyURL ?? '') : a.mime_type,\n original_height: a.original_height,\n original_width: a.original_width,\n paused: isInitiallyPaused,\n progress: 0,\n type: a.type,\n uri:\n a.type === 'giphy'\n ? giphyURL\n : getResizedImageUrl({\n height: screenHeight,\n url: imageUrl,\n width: screenWidth,\n }),\n user: cur.user,\n user_id: cur.user_id,\n };\n });\n\n return [...attachmentPhotos, ...acc] as Photo<StreamChatGenerics>[];\n }, []);\n\n /**\n * Photos length needs to be kept as a const here so if the length\n * changes it causes the pan gesture handler function to refresh. This\n * does not work if the calculation for the length of the array is left\n * inside the gesture handler as it will have an array as a dependency\n */\n const photoLength = photos.length;\n\n useEffect(() => {\n setImageGalleryAttachments(photos);\n }, []);\n\n /**\n * The URL for the images may differ because of dimensions passed as\n * part of the query.\n */\n const stripQueryFromUrl = (url: string) => url.split('?')[0];\n\n /**\n * Set selected photo when changed via pressing in the message list\n */\n useEffect(() => {\n const updatePosition = (newIndex: number) => {\n 'worklet';\n\n if (newIndex > -1) {\n index.value = newIndex;\n translationX.value = -(screenWidth + MARGIN) * newIndex;\n runOnJS(setSelectedIndex)(newIndex);\n }\n };\n\n const newIndex = photos.findIndex(\n (photo) =>\n photo.messageId === selectedMessage?.messageId &&\n stripQueryFromUrl(photo.uri) === stripQueryFromUrl(selectedMessage?.url || ''),\n );\n\n runOnUI(updatePosition)(newIndex);\n }, [selectedMessage, photoLength]);\n\n /**\n * Image heights are not provided and therefore need to be calculated.\n * We start by allowing the image to be the full height then reduce it\n * to the proper scaled height based on the width being restricted to the\n * screen width when the dimensions are received.\n */\n const uriForCurrentImage = imageGalleryAttachments[selectedIndex]?.uri;\n\n useEffect(() => {\n setCurrentImageHeight(screenHeight);\n const photo = imageGalleryAttachments[index.value];\n const height = photo?.original_height;\n const width = photo?.original_width;\n\n if (height && width) {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n } else if (photo?.uri) {\n if (photo.type === 'image') {\n Image.getSize(photo.uri, (width, height) => {\n const imageHeight = Math.floor(height * (screenWidth / width));\n setCurrentImageHeight(imageHeight > screenHeight ? screenHeight : imageHeight);\n });\n }\n }\n }, [uriForCurrentImage]);\n\n const { onDoubleTap, onPan, onPinch, onSingleTap } = useImageGalleryGestures({\n currentImageHeight,\n halfScreenHeight,\n halfScreenWidth,\n headerFooterVisible,\n offsetScale,\n overlayOpacity,\n photoLength,\n scale,\n screenHeight,\n screenWidth,\n selectedIndex,\n setSelectedIndex,\n translateX,\n translateY,\n translationX,\n });\n\n /**\n * If the header is visible we scale down the opacity of it as the\n * image is swiped downward\n */\n const headerFooterOpacity = useDerivedValue(\n () =>\n currentImageHeight * scale.value < screenHeight && translateY.value > 0\n ? 1 - translateY.value / quarterScreenHeight\n : currentImageHeight * scale.value > screenHeight &&\n translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight\n ? 1 -\n (translateY.value - ((currentImageHeight / 2) * scale.value - halfScreenHeight)) /\n quarterScreenHeight\n : 1,\n [currentImageHeight],\n );\n\n /**\n * This transition and scaleX reverse lets use scroll left\n */\n const pagerStyle = useAnimatedStyle<ImageStyle>(\n () => ({\n transform: [\n { scaleX: -1 },\n {\n translateX: translationX.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Simple background color animation on Y movement\n */\n const containerBackground = useAnimatedStyle<ViewStyle>(\n () => ({\n backgroundColor: backgroundColor || white_snow,\n opacity: headerFooterOpacity.value,\n }),\n [headerFooterOpacity],\n );\n\n /**\n * Show screen style as component is always rendered we hide it\n * down and up and set opacity to 0 for good measure\n */\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: screenTranslateY.value,\n },\n ],\n }),\n [],\n );\n\n /**\n * Functions toclose BottomSheetModal with image grid\n */\n const closeGridView = () => {\n if (bottomSheetModalRef.current?.close) {\n bottomSheetModalRef.current.close();\n setGridPhotos([]);\n }\n };\n\n /**\n * Function to open BottomSheetModal with image grid\n */\n const openGridView = () => {\n if (bottomSheetModalRef.current?.present) {\n bottomSheetModalRef.current.present();\n setGridPhotos(imageGalleryAttachments);\n }\n };\n\n const handleEnd = () => {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n handleProgress(imageGalleryAttachments[selectedIndex].id, 1, true);\n };\n\n const videoRef = useRef<VideoType>(null);\n\n const handleLoad = (index: string, duration: number) => {\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n duration: imageGalleryAttachment.id === index ? duration : imageGalleryAttachment.duration,\n })),\n );\n };\n\n const handleProgress = (index: string, progress: number, hasEnd?: boolean) => {\n setImageGalleryAttachments((prevImageGalleryAttachments) =>\n prevImageGalleryAttachments.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n progress:\n imageGalleryAttachment.id === index\n ? hasEnd\n ? 1\n : progress\n : imageGalleryAttachment.progress,\n })),\n );\n };\n\n const handlePlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: imageGalleryAttachment.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setImageGalleryAttachments((prevImageGalleryAttachment) =>\n prevImageGalleryAttachment.map((imageGalleryAttachment) => ({\n ...imageGalleryAttachment,\n paused: true,\n })),\n );\n }\n };\n\n const onPlayPause = (status?: boolean) => {\n if (status === undefined) {\n if (imageGalleryAttachments[selectedIndex].paused) {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, false);\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, true);\n }\n } else {\n handlePlayPause(imageGalleryAttachments[selectedIndex].id, status);\n }\n };\n\n return (\n <Animated.View\n accessibilityLabel='Image Gallery'\n pointerEvents={'auto'}\n style={[StyleSheet.absoluteFillObject, showScreenStyle]}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject, containerBackground]} />\n <TapGestureHandler\n minPointers={1}\n numberOfTaps={1}\n onGestureEvent={onSingleTap}\n ref={singleTapRef}\n waitFor={[panRef, pinchRef, doubleTapRef]}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <TapGestureHandler\n maxDeltaX={8}\n maxDeltaY={8}\n maxDist={8}\n minPointers={1}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View style={StyleSheet.absoluteFillObject}>\n <PinchGestureHandler\n onGestureEvent={onPinch}\n ref={pinchRef}\n simultaneousHandlers={[panRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <PanGestureHandler\n enabled={overlay === 'gallery'}\n maxPointers={isAndroid ? undefined : 1}\n minDist={10}\n onGestureEvent={onPan}\n ref={panRef}\n simultaneousHandlers={[pinchRef]}\n >\n <Animated.View style={StyleSheet.absoluteFill}>\n <Animated.View\n style={[\n styles.animatedContainer,\n pagerStyle,\n pager,\n {\n transform: [\n { scaleX: -1 }, // Also only here for opening, wrong direction when not included\n {\n translateX: translationX.value, // Only here for opening, wrong index when this is not included\n },\n ],\n },\n ]}\n >\n {imageGalleryAttachments.map((photo, i) =>\n photo.type === 'video' ? (\n <AnimatedGalleryVideo\n attachmentId={photo.id}\n handleEnd={handleEnd}\n handleLoad={handleLoad}\n handleProgress={handleProgress}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n paused={photo.paused || false}\n previous={selectedIndex > i}\n repeat={true}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n source={{ uri: photo.uri }}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n videoRef={videoRef}\n />\n ) : (\n <AnimatedGalleryImage\n accessibilityLabel={'Image Item'}\n index={i}\n key={`${photo.uri}-${i}`}\n offsetScale={offsetScale}\n photo={photo}\n previous={selectedIndex > i}\n scale={scale}\n screenHeight={screenHeight}\n selected={selectedIndex === i}\n shouldRender={Math.abs(selectedIndex - i) < 4}\n style={[\n {\n height: screenHeight * 8,\n marginRight: MARGIN,\n width: screenWidth * 8,\n },\n slide,\n ]}\n translateX={translateX}\n translateY={translateY}\n />\n ),\n )}\n </Animated.View>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </PinchGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n <ImageGalleryHeader<StreamChatGenerics>\n opacity={headerFooterOpacity}\n photo={imageGalleryAttachments[selectedIndex]}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.header}\n />\n\n {imageGalleryAttachments.length > 0 && (\n <ImageGalleryFooter<StreamChatGenerics>\n accessibilityLabel={'Image Gallery Footer'}\n duration={imageGalleryAttachments[selectedIndex].duration || 0}\n onPlayPause={onPlayPause}\n opacity={headerFooterOpacity}\n openGridView={openGridView}\n paused={imageGalleryAttachments[selectedIndex].paused || false}\n photo={imageGalleryAttachments[selectedIndex]}\n photoLength={imageGalleryAttachments.length}\n progress={imageGalleryAttachments[selectedIndex].progress || 0}\n selectedIndex={selectedIndex}\n videoRef={videoRef}\n visible={headerFooterVisible}\n {...imageGalleryCustomComponents?.footer}\n />\n )}\n\n <ImageGalleryOverlay\n animatedBottomSheetIndex={animatedBottomSheetIndex}\n closeGridView={closeGridView}\n currentBottomSheetIndex={currentBottomSheetIndex}\n />\n <BottomSheetModalProvider>\n <BottomSheetModal\n animatedIndex={animatedBottomSheetIndex}\n enablePanDownToClose={true}\n handleComponent={() => (\n <ImageGridHandle\n closeGridView={closeGridView}\n {...imageGalleryCustomComponents?.gridHandle}\n />\n )}\n handleHeight={imageGalleryGridHandleHeight ?? 40}\n index={0}\n onChange={(index: number) => setCurrentBottomSheetIndex(index)}\n ref={bottomSheetModalRef}\n snapPoints={imageGalleryGridSnapPoints || snapPoints}\n >\n <ImageGrid\n closeGridView={closeGridView}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n photos={gridPhotos}\n setSelectedMessage={setSelectedMessage}\n {...imageGalleryCustomComponents?.grid}\n />\n </BottomSheetModal>\n </BottomSheetModalProvider>\n </Animated.View>\n );\n};\n\n/**\n * Clamping worklet to clamp the scaling\n */\nexport const clamp = (value: number, lowerBound: number, upperBound: number) => {\n 'worklet';\n return Math.min(Math.max(lowerBound, value), upperBound);\n};\n\nconst styles = StyleSheet.create({\n animatedContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n },\n});\n\nexport type Photo<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n id: string;\n uri: string;\n channelId?: string;\n created_at?: string | Date;\n duration?: number;\n messageId?: string;\n mime_type?: string;\n original_height?: number;\n original_width?: number;\n paused?: boolean;\n progress?: number;\n type?: string;\n user?: UserResponse<StreamChatGenerics> | null;\n user_id?: string;\n};\n\nImageGallery.displayName = 'ImageGallery{imageGallery}';\n"],"mappings":"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"}