stream-chat-react-native-core 4.0.0-beta.4 → 4.0.0-beta.5

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 (25) hide show
  1. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  2. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  3. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  4. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +46 -46
  5. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
  6. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +11 -10
  7. package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  8. package/lib/commonjs/version.json +1 -1
  9. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  10. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +28 -11
  11. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  12. package/lib/module/components/Message/MessageSimple/ReactionList.js +46 -46
  13. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
  14. package/lib/module/components/Message/MessageSimple/utils/renderText.js +11 -10
  15. package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
  16. package/lib/module/version.json +1 -1
  17. package/lib/typescript/components/Avatar/Avatar.d.ts +1 -1
  18. package/lib/typescript/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/src/components/Avatar/Avatar.tsx +1 -1
  21. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +23 -9
  22. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +31 -0
  23. package/src/components/Message/MessageSimple/ReactionList.tsx +31 -31
  24. package/src/components/Message/MessageSimple/utils/renderText.tsx +7 -1
  25. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Avatar.tsx"],"names":["randomImageBaseUrl","randomSvgBaseUrl","streamCDN","styles","StyleSheet","create","container","alignItems","justifyContent","overflow","presenceIndicatorContainer","height","position","right","top","width","getInitials","fullName","split","slice","map","name","charAt","join","Avatar","props","containerStyle","imageProp","image","imageStyle","online","presenceIndicatorProp","presenceIndicator","presenceIndicatorContainerStyle","size","testID","theme","avatar","colors","accent_green","white","imageError","setImageError","borderRadius","uri","includes","url","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Svg, { Circle, CircleProps } from 'react-native-svg';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\n\nconst randomImageBaseUrl = 'https://getstream.io/random_png/';\nconst randomSvgBaseUrl = 'https://getstream.io/random_svg/';\nconst streamCDN = 'stream-io-cdn.com';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n presenceIndicatorContainer: {\n height: 12,\n position: 'absolute',\n right: 0,\n top: 0,\n width: 12,\n },\n});\n\nconst getInitials = (fullName: string) =>\n fullName\n .split(' ')\n .slice(0, 2)\n .map((name) => name.charAt(0))\n .join(' ');\n\nexport type AvatarProps = {\n /** size in pixels */\n size: number;\n containerStyle?: StyleProp<ViewStyle>;\n /** image url */\n image?: string;\n /** name of the picture, used for fallback */\n imageStyle?: StyleProp<ImageStyle>;\n name?: string;\n online?: boolean;\n presenceIndicator?: CircleProps;\n presenceIndicatorContainerStyle?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\n/**\n * Avatar - A round avatar image with fallback to user's initials\n */\nexport const Avatar: React.FC<AvatarProps> = (props) => {\n const {\n containerStyle,\n image: imageProp,\n imageStyle,\n name,\n online,\n presenceIndicator: presenceIndicatorProp,\n presenceIndicatorContainerStyle,\n size,\n testID,\n } = props;\n const {\n theme: {\n avatar: { container, image, presenceIndicator, presenceIndicatorContainer },\n colors: { accent_green, white },\n },\n } = useTheme();\n\n const [imageError, setImageError] = useState(false);\n\n return (\n <View>\n <View\n style={[\n styles.container,\n {\n borderRadius: size / 2,\n height: size,\n width: size,\n },\n container,\n containerStyle,\n ]}\n >\n <Image\n accessibilityLabel={testID || 'avatar-image'}\n onError={() => setImageError(true)}\n source={{\n uri:\n imageError ||\n !imageProp ||\n imageProp.includes(randomImageBaseUrl) ||\n imageProp.includes(randomSvgBaseUrl)\n ? imageProp?.includes(streamCDN)\n ? imageProp\n : `${randomImageBaseUrl}${name ? `?name=${getInitials(name)}&size=${size}` : ''}`\n : getResizedImageUrl({\n height: size,\n url: imageProp,\n width: size,\n }),\n }}\n style={[\n image,\n size\n ? {\n borderRadius: size / 2,\n height: size,\n width: size,\n }\n : {},\n imageStyle,\n ]}\n testID={testID || 'avatar-image'}\n />\n </View>\n {online && (\n <View\n style={[\n styles.presenceIndicatorContainer,\n presenceIndicatorContainer,\n presenceIndicatorContainerStyle,\n ]}\n >\n <Svg>\n <Circle\n fill={accent_green}\n stroke={white}\n {...presenceIndicator}\n {...presenceIndicatorProp}\n />\n </Svg>\n </View>\n )}\n </View>\n );\n};\n\nAvatar.displayName = 'Avatar{avatar}';\n"]}
1
+ {"version":3,"sources":["Avatar.tsx"],"names":["randomImageBaseUrl","randomSvgBaseUrl","streamCDN","styles","StyleSheet","create","container","alignItems","justifyContent","overflow","presenceIndicatorContainer","height","position","right","top","width","getInitials","fullName","split","slice","map","name","charAt","join","Avatar","props","containerStyle","imageProp","image","imageStyle","online","presenceIndicatorProp","presenceIndicator","presenceIndicatorContainerStyle","size","testID","theme","avatar","colors","accent_green","white","imageError","setImageError","borderRadius","uri","includes","url","displayName"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;AAEA,IAAMA,kBAAkB,GAAG,kCAA3B;AACA,IAAMC,gBAAgB,GAAG,kCAAzB;AACA,IAAMC,SAAS,GAAG,mBAAlB;;AAEA,IAAMC,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,cAAc,EAAE,QAFP;AAGTC,IAAAA,QAAQ,EAAE;AAHD,GADoB;AAM/BC,EAAAA,0BAA0B,EAAE;AAC1BC,IAAAA,MAAM,EAAE,EADkB;AAE1BC,IAAAA,QAAQ,EAAE,UAFgB;AAG1BC,IAAAA,KAAK,EAAE,CAHmB;AAI1BC,IAAAA,GAAG,EAAE,CAJqB;AAK1BC,IAAAA,KAAK,EAAE;AALmB;AANG,CAAlB,CAAf;;AAeA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD;AAAA,SAClBA,QAAQ,CACLC,KADH,CACS,GADT,EAEGC,KAFH,CAES,CAFT,EAEY,CAFZ,EAGGC,GAHH,CAGO,UAACC,IAAD;AAAA,WAAUA,IAAI,CAACC,MAAL,CAAY,CAAZ,CAAV;AAAA,GAHP,EAIGC,IAJH,CAIQ,GAJR,CADkB;AAAA,CAApB;;AAyBO,IAAMC,MAA6B,GAAG,SAAhCA,MAAgC,CAACC,KAAD,EAAW;AACtD,MACEC,cADF,GAUID,KAVJ,CACEC,cADF;AAAA,MAESC,SAFT,GAUIF,KAVJ,CAEEG,KAFF;AAAA,MAGEC,UAHF,GAUIJ,KAVJ,CAGEI,UAHF;AAAA,MAIER,IAJF,GAUII,KAVJ,CAIEJ,IAJF;AAAA,MAKES,MALF,GAUIL,KAVJ,CAKEK,MALF;AAAA,MAMqBC,qBANrB,GAUIN,KAVJ,CAMEO,iBANF;AAAA,MAOEC,+BAPF,GAUIR,KAVJ,CAOEQ,+BAPF;AAAA,MAQEC,IARF,GAUIT,KAVJ,CAQES,IARF;AAAA,MASEC,MATF,GAUIV,KAVJ,CASEU,MATF;;AAWA,kBAKI,6BALJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEc/B,SAFd,yBAEcA,SAFd;AAAA,MAEyBsB,KAFzB,yBAEyBA,KAFzB;AAAA,MAEgCI,iBAFhC,yBAEgCA,iBAFhC;AAAA,MAEmDtB,0BAFnD,yBAEmDA,0BAFnD;AAAA,8CAGI4B,MAHJ;AAAA,MAGcC,YAHd,yBAGcA,YAHd;AAAA,MAG4BC,KAH5B,yBAG4BA,KAH5B;;AAOA,kBAAoC,qBAAS,KAAT,CAApC;AAAA;AAAA,MAAOC,UAAP;AAAA,MAAmBC,aAAnB;;AAEA,SACE,gCAAC,iBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLvC,MAAM,CAACG,SADF,EAEL;AACEqC,MAAAA,YAAY,EAAET,IAAI,GAAG,CADvB;AAEEvB,MAAAA,MAAM,EAAEuB,IAFV;AAGEnB,MAAAA,KAAK,EAAEmB;AAHT,KAFK,EAOL5B,SAPK,EAQLoB,cARK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAYE,gCAAC,kBAAD;AACE,IAAA,kBAAkB,EAAES,MAAM,IAAI,cADhC;AAEE,IAAA,OAAO,EAAE;AAAA,aAAMO,aAAa,CAAC,IAAD,CAAnB;AAAA,KAFX;AAGE,IAAA,MAAM,EAAE;AACNE,MAAAA,GAAG,EACDH,UAAU,IACV,CAACd,SADD,IAEAA,SAAS,CAACkB,QAAV,CAAmB7C,kBAAnB,CAFA,IAGA2B,SAAS,CAACkB,QAAV,CAAmB5C,gBAAnB,CAHA,GAII0B,SAAS,QAAT,IAAAA,SAAS,CAAEkB,QAAX,CAAoB3C,SAApB,IACEyB,SADF,QAEK3B,kBAFL,IAE0BqB,IAAI,cAAYL,WAAW,CAACK,IAAD,CAAvB,cAAsCa,IAAtC,GAA+C,EAF7E,CAJJ,GAOI,4CAAmB;AACjBvB,QAAAA,MAAM,EAAEuB,IADS;AAEjBY,QAAAA,GAAG,EAAEnB,SAFY;AAGjBZ,QAAAA,KAAK,EAAEmB;AAHU,OAAnB;AATA,KAHV;AAkBE,IAAA,KAAK,EAAE,CACLN,KADK,EAELM,IAAI,GACA;AACES,MAAAA,YAAY,EAAET,IAAI,GAAG,CADvB;AAEEvB,MAAAA,MAAM,EAAEuB,IAFV;AAGEnB,MAAAA,KAAK,EAAEmB;AAHT,KADA,GAMA,EARC,EASLL,UATK,CAlBT;AA6BE,IAAA,MAAM,EAAEM,MAAM,IAAI,cA7BpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAZF,CADF,EA6CGL,MAAM,IACL,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL3B,MAAM,CAACO,0BADF,EAELA,0BAFK,EAGLuB,+BAHK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOE,gCAAC,0BAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,sBAAD;AACE,IAAA,IAAI,EAAEM,YADR;AAEE,IAAA,MAAM,EAAEC;AAFV,KAGMR,iBAHN,EAIMD,qBAJN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF,CAPF,CA9CJ,CADF;AAkED,CAvFM;;;AAyFPP,MAAM,CAACuB,WAAP,GAAqB,gBAArB","sourcesContent":["import React, { useState } from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport Svg, { Circle, CircleProps } from 'react-native-svg';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getResizedImageUrl } from '../../utils/getResizedImageUrl';\n\nconst randomImageBaseUrl = 'https://getstream.io/random_png/';\nconst randomSvgBaseUrl = 'https://getstream.io/random_svg/';\nconst streamCDN = 'stream-io-cdn.com';\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n presenceIndicatorContainer: {\n height: 12,\n position: 'absolute',\n right: 0,\n top: 0,\n width: 12,\n },\n});\n\nconst getInitials = (fullName: string) =>\n fullName\n .split(' ')\n .slice(0, 2)\n .map((name) => name.charAt(0))\n .join(' ');\n\nexport type AvatarProps = {\n /** size in pixels */\n size: number;\n containerStyle?: StyleProp<ViewStyle>;\n /** image url */\n image?: string;\n /** name of the picture, used for fallback */\n imageStyle?: StyleProp<ImageStyle>;\n name?: string;\n online?: boolean;\n presenceIndicator?: CircleProps;\n presenceIndicatorContainerStyle?: StyleProp<ViewStyle>;\n testID?: string;\n};\n\n/**\n * Avatar - A round avatar image with fallback to user's initials.\n */\nexport const Avatar: React.FC<AvatarProps> = (props) => {\n const {\n containerStyle,\n image: imageProp,\n imageStyle,\n name,\n online,\n presenceIndicator: presenceIndicatorProp,\n presenceIndicatorContainerStyle,\n size,\n testID,\n } = props;\n const {\n theme: {\n avatar: { container, image, presenceIndicator, presenceIndicatorContainer },\n colors: { accent_green, white },\n },\n } = useTheme();\n\n const [imageError, setImageError] = useState(false);\n\n return (\n <View>\n <View\n style={[\n styles.container,\n {\n borderRadius: size / 2,\n height: size,\n width: size,\n },\n container,\n containerStyle,\n ]}\n >\n <Image\n accessibilityLabel={testID || 'avatar-image'}\n onError={() => setImageError(true)}\n source={{\n uri:\n imageError ||\n !imageProp ||\n imageProp.includes(randomImageBaseUrl) ||\n imageProp.includes(randomSvgBaseUrl)\n ? imageProp?.includes(streamCDN)\n ? imageProp\n : `${randomImageBaseUrl}${name ? `?name=${getInitials(name)}&size=${size}` : ''}`\n : getResizedImageUrl({\n height: size,\n url: imageProp,\n width: size,\n }),\n }}\n style={[\n image,\n size\n ? {\n borderRadius: size / 2,\n height: size,\n width: size,\n }\n : {},\n imageStyle,\n ]}\n testID={testID || 'avatar-image'}\n />\n </View>\n {online && (\n <View\n style={[\n styles.presenceIndicatorContainer,\n presenceIndicatorContainer,\n presenceIndicatorContainerStyle,\n ]}\n >\n <Svg>\n <Circle\n fill={accent_green}\n stroke={white}\n {...presenceIndicator}\n {...presenceIndicatorProp}\n />\n </Svg>\n </View>\n )}\n </View>\n );\n};\n\nAvatar.displayName = 'Avatar{avatar}';\n"]}
@@ -102,7 +102,24 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
102
102
  translucentStatusBar = _useOverlayContext.translucentStatusBar;
103
103
 
104
104
  var parsedDate = photo ? tDateTimeParser(photo == null ? void 0 : photo.created_at) : null;
105
- var date = parsedDate && (0, _TranslationContext.isDayOrMoment)(parsedDate) ? parsedDate.calendar ? parsedDate.calendar() : parsedDate.fromNow() : null;
105
+
106
+ var getDateObject = function getDateObject(date) {
107
+ if (date === null || !(0, _TranslationContext.isDayOrMoment)(date)) {
108
+ return null;
109
+ }
110
+
111
+ if (date.calendar) {
112
+ return date.calendar();
113
+ }
114
+
115
+ if (date.fromNow) {
116
+ return date.fromNow();
117
+ }
118
+
119
+ return null;
120
+ };
121
+
122
+ var date = getDateObject(parsedDate);
106
123
  var headerStyle = (0, _reactNativeReanimated.useAnimatedStyle)(function () {
107
124
  return {
108
125
  opacity: opacity.value,
@@ -127,7 +144,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
127
144
  __self: _this,
128
145
  __source: {
129
146
  fileName: _jsxFileName,
130
- lineNumber: 137,
147
+ lineNumber: 151,
131
148
  columnNumber: 5
132
149
  }
133
150
  }, _react["default"].createElement(ReanimatedSafeAreaView, {
@@ -137,7 +154,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
137
154
  __self: _this,
138
155
  __source: {
139
156
  fileName: _jsxFileName,
140
- lineNumber: 141,
157
+ lineNumber: 155,
141
158
  columnNumber: 7
142
159
  }
143
160
  }, _react["default"].createElement(_reactNative.View, {
@@ -145,7 +162,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
145
162
  __self: _this,
146
163
  __source: {
147
164
  fileName: _jsxFileName,
148
- lineNumber: 144,
165
+ lineNumber: 158,
149
166
  columnNumber: 9
150
167
  }
151
168
  }, leftElement ? leftElement({
@@ -156,7 +173,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
156
173
  __self: _this,
157
174
  __source: {
158
175
  fileName: _jsxFileName,
159
- lineNumber: 148,
176
+ lineNumber: 162,
160
177
  columnNumber: 13
161
178
  }
162
179
  }, _react["default"].createElement(_reactNative.View, {
@@ -164,14 +181,14 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
164
181
  __self: _this,
165
182
  __source: {
166
183
  fileName: _jsxFileName,
167
- lineNumber: 149,
184
+ lineNumber: 163,
168
185
  columnNumber: 15
169
186
  }
170
187
  }, CloseIcon ? CloseIcon : _react["default"].createElement(_icons.Close, {
171
188
  __self: _this,
172
189
  __source: {
173
190
  fileName: _jsxFileName,
174
- lineNumber: 150,
191
+ lineNumber: 164,
175
192
  columnNumber: 42
176
193
  }
177
194
  }))), centerElement ? centerElement({
@@ -182,7 +199,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
182
199
  __self: _this,
183
200
  __source: {
184
201
  fileName: _jsxFileName,
185
- lineNumber: 157,
202
+ lineNumber: 171,
186
203
  columnNumber: 13
187
204
  }
188
205
  }, _react["default"].createElement(_reactNative.Text, {
@@ -192,7 +209,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
192
209
  __self: _this,
193
210
  __source: {
194
211
  fileName: _jsxFileName,
195
- lineNumber: 158,
212
+ lineNumber: 172,
196
213
  columnNumber: 15
197
214
  }
198
215
  }, (photo == null ? void 0 : (_photo$user = photo.user) == null ? void 0 : _photo$user.name) || t('Unknown User')), date && _react["default"].createElement(_reactNative.Text, {
@@ -202,7 +219,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
202
219
  __self: _this,
203
220
  __source: {
204
221
  fileName: _jsxFileName,
205
- lineNumber: 161,
222
+ lineNumber: 175,
206
223
  columnNumber: 24
207
224
  }
208
225
  }, date)), rightElement ? rightElement({
@@ -213,7 +230,7 @@ var ImageGalleryHeader = function ImageGalleryHeader(props) {
213
230
  __self: _this,
214
231
  __source: {
215
232
  fileName: _jsxFileName,
216
- lineNumber: 167,
233
+ lineNumber: 181,
217
234
  columnNumber: 13
218
235
  }
219
236
  }))));
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultUserType, UnknownType } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<Us extends UnknownType = DefaultUserType> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<Us>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<Us extends UnknownType = DefaultUserType> = {\n centerElement?: ImageGalleryHeaderCustomComponent<Us>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<Us>;\n rightElement?: ImageGalleryHeaderCustomComponent<Us>;\n};\n\ntype Props<Us extends UnknownType = DefaultUserType> =\n ImageGalleryHeaderCustomComponentProps<Us> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<Us>;\n };\n\nexport const ImageGalleryHeader = <Us extends UnknownType = DefaultUserType>(props: Props<Us>) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar is required on moment types, but in reality it\n * is unavailable on first render. We therefore check if it\n * is available and call it, otherwise we call .fromNow.\n */\n const date =\n parsedDate && isDayOrMoment(parsedDate)\n ? parsedDate.calendar\n ? parsedDate.calendar()\n : parsedDate.fromNow()\n : null;\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
1
+ {"version":3,"sources":["ImageGalleryHeader.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","date","fontSize","fontWeight","marginTop","opacity","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","width","userName","ImageGalleryHeader","props","centerElement","CloseIcon","leftElement","photo","rightElement","visible","setHeight","theme","colors","black","white","imageGallery","header","container","dateText","usernameText","t","tDateTimeParser","setOverlay","translucentStatusBar","parsedDate","created_at","getDateObject","calendar","fromNow","headerStyle","value","transform","translateY","Extrapolate","CLAMP","androidTranslucentHeaderStyle","paddingTop","Platform","OS","StatusBar","currentHeight","undefined","hideOverlay","event","nativeEvent","layout","backgroundColor","color","user","name","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport {\n Platform,\n SafeAreaView,\n StatusBar,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserOutput,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nimport type { DefaultUserType, UnknownType } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n date: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 4,\n opacity: 0.5,\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n marginRight: 8,\n width: 24, // Width of icon currently on left\n },\n userName: {\n fontSize: 16,\n fontWeight: '700',\n },\n});\n\nexport type ImageGalleryHeaderCustomComponent<Us extends UnknownType = DefaultUserType> = ({\n hideOverlay,\n photo,\n}: {\n hideOverlay: () => void;\n photo?: Photo<Us>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryHeaderCustomComponentProps<Us extends UnknownType = DefaultUserType> = {\n centerElement?: ImageGalleryHeaderCustomComponent<Us>;\n CloseIcon?: React.ReactElement;\n leftElement?: ImageGalleryHeaderCustomComponent<Us>;\n rightElement?: ImageGalleryHeaderCustomComponent<Us>;\n};\n\ntype Props<Us extends UnknownType = DefaultUserType> =\n ImageGalleryHeaderCustomComponentProps<Us> & {\n opacity: Animated.SharedValue<number>;\n visible: Animated.SharedValue<number>;\n photo?: Photo<Us>;\n };\n\nexport const ImageGalleryHeader = <Us extends UnknownType = DefaultUserType>(props: Props<Us>) => {\n const { centerElement, CloseIcon, leftElement, opacity, photo, rightElement, visible } = props;\n const [height, setHeight] = useState(200);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n header: {\n centerContainer,\n container,\n dateText,\n innerContainer,\n leftContainer,\n rightContainer,\n usernameText,\n },\n },\n },\n } = useTheme();\n const { t, tDateTimeParser } = useTranslationContext();\n const { setOverlay, translucentStatusBar } = useOverlayContext();\n\n const parsedDate = photo ? tDateTimeParser(photo?.created_at) : null;\n\n /**\n * .calendar and .fromNow can be initialized after the first render,\n * and attempting to access them at that time will cause an error\n * to be thrown.\n *\n * This falls back to null if neither exist.\n */\n const getDateObject = (date: TDateTimeParserOutput | null) => {\n if (date === null || !isDayOrMoment(date)) {\n return null;\n }\n\n if (date.calendar) {\n return date.calendar();\n }\n\n if (date.fromNow) {\n return date.fromNow();\n }\n\n return null;\n };\n\n const date = getDateObject(parsedDate);\n\n const headerStyle = useAnimatedStyle<ViewStyle>(() => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [-height, 0], Extrapolate.CLAMP),\n },\n ],\n }));\n\n const androidTranslucentHeaderStyle = {\n paddingTop:\n Platform.OS === 'android' && translucentStatusBar ? StatusBar.currentHeight : undefined,\n };\n\n const hideOverlay = () => {\n setOverlay('none');\n };\n\n return (\n <View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n >\n <ReanimatedSafeAreaView\n style={[{ backgroundColor: white }, androidTranslucentHeaderStyle, container, headerStyle]}\n >\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ hideOverlay, photo })\n ) : (\n <TouchableOpacity onPress={hideOverlay}>\n <View style={[styles.leftContainer, leftContainer]}>\n {CloseIcon ? CloseIcon : <Close />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.userName, { color: black }, usernameText]}>\n {photo?.user?.name || t('Unknown User')}\n </Text>\n {date && <Text style={[styles.date, { color: black }, dateText]}>{date}</Text>}\n </View>\n )}\n {rightElement ? (\n rightElement({ hideOverlay, photo })\n ) : (\n <View style={[styles.rightContainer, rightContainer]} />\n )}\n </View>\n </ReanimatedSafeAreaView>\n </View>\n );\n};\n\nImageGalleryHeader.displayName = 'ImageGalleryHeader{imageGallery{header}}';\n"]}
@@ -147,38 +147,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
147
147
  var insideLeftBound = x2 - reactionSize * reactions.length / 2 > screenPadding;
148
148
  var insideRightBound = x2 + strokeSize + reactionSize * reactions.length / 2 < width - screenPadding * 2;
149
149
  var left = reactions.length === 1 ? x1 + (alignmentLeft ? -radius : radius - reactionSize) : !insideLeftBound ? screenPadding : !insideRightBound ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize : x2 - reactionSize * reactions.length / 2 - strokeSize;
150
- return _react["default"].createElement(_reactNative.TouchableOpacity, {
151
- disabled: preventPress,
152
- onLongPress: function onLongPress(event) {
153
- if (_onLongPress) {
154
- _onLongPress({
155
- emitter: 'reactionList',
156
- event: event
157
- });
158
- }
159
- },
160
- onPress: function onPress(event) {
161
- if (_onPress) {
162
- _onPress({
163
- defaultHandler: function defaultHandler() {
164
- return showMessageOverlay(true);
165
- },
166
- emitter: 'reactionList',
167
- event: event
168
- });
169
- }
170
- },
171
- onPressIn: function onPressIn(event) {
172
- if (_onPressIn) {
173
- _onPressIn({
174
- defaultHandler: function defaultHandler() {
175
- return showMessageOverlay(true);
176
- },
177
- emitter: 'reactionList',
178
- event: event
179
- });
180
- }
181
- },
150
+ return _react["default"].createElement(_reactNative.View, {
182
151
  style: [styles.container, {
183
152
  height: reactionSize + radius * 5,
184
153
  width: width
@@ -195,14 +164,14 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
195
164
  __self: _this,
196
165
  __source: {
197
166
  fileName: _jsxFileName,
198
- lineNumber: 240,
167
+ lineNumber: 213,
199
168
  columnNumber: 9
200
169
  }
201
170
  }, _react["default"].createElement(_reactNativeSvg["default"], {
202
171
  __self: _this,
203
172
  __source: {
204
173
  fileName: _jsxFileName,
205
- lineNumber: 241,
174
+ lineNumber: 214,
206
175
  columnNumber: 11
207
176
  }
208
177
  }, _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -213,7 +182,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
213
182
  __self: _this,
214
183
  __source: {
215
184
  fileName: _jsxFileName,
216
- lineNumber: 242,
185
+ lineNumber: 215,
217
186
  columnNumber: 13
218
187
  }
219
188
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -224,7 +193,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
224
193
  __self: _this,
225
194
  __source: {
226
195
  fileName: _jsxFileName,
227
- lineNumber: 243,
196
+ lineNumber: 216,
228
197
  columnNumber: 13
229
198
  }
230
199
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -235,7 +204,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
235
204
  __self: _this,
236
205
  __source: {
237
206
  fileName: _jsxFileName,
238
- lineNumber: 244,
207
+ lineNumber: 217,
239
208
  columnNumber: 13
240
209
  }
241
210
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -246,7 +215,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
246
215
  __self: _this,
247
216
  __source: {
248
217
  fileName: _jsxFileName,
249
- lineNumber: 245,
218
+ lineNumber: 218,
250
219
  columnNumber: 13
251
220
  }
252
221
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -257,7 +226,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
257
226
  __self: _this,
258
227
  __source: {
259
228
  fileName: _jsxFileName,
260
- lineNumber: 246,
229
+ lineNumber: 219,
261
230
  columnNumber: 13
262
231
  }
263
232
  }), _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -268,7 +237,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
268
237
  __self: _this,
269
238
  __source: {
270
239
  fileName: _jsxFileName,
271
- lineNumber: 247,
240
+ lineNumber: 220,
272
241
  columnNumber: 13
273
242
  }
274
243
  })), _react["default"].createElement(_reactNative.View, {
@@ -284,7 +253,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
284
253
  __self: _this,
285
254
  __source: {
286
255
  fileName: _jsxFileName,
287
- lineNumber: 249,
256
+ lineNumber: 222,
288
257
  columnNumber: 11
289
258
  }
290
259
  }), _react["default"].createElement(_reactNative.View, {
@@ -292,14 +261,14 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
292
261
  __self: _this,
293
262
  __source: {
294
263
  fileName: _jsxFileName,
295
- lineNumber: 264,
264
+ lineNumber: 237,
296
265
  columnNumber: 11
297
266
  }
298
267
  }, _react["default"].createElement(_reactNativeSvg["default"], {
299
268
  __self: _this,
300
269
  __source: {
301
270
  fileName: _jsxFileName,
302
- lineNumber: 265,
271
+ lineNumber: 238,
303
272
  columnNumber: 13
304
273
  }
305
274
  }, _react["default"].createElement(_reactNativeSvg.Circle, {
@@ -310,10 +279,41 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
310
279
  __self: _this,
311
280
  __source: {
312
281
  fileName: _jsxFileName,
313
- lineNumber: 266,
282
+ lineNumber: 239,
314
283
  columnNumber: 15
315
284
  }
316
- }))), _react["default"].createElement(_reactNative.View, {
285
+ }))), _react["default"].createElement(_reactNative.TouchableOpacity, {
286
+ disabled: preventPress,
287
+ onLongPress: function onLongPress(event) {
288
+ if (_onLongPress) {
289
+ _onLongPress({
290
+ emitter: 'reactionList',
291
+ event: event
292
+ });
293
+ }
294
+ },
295
+ onPress: function onPress(event) {
296
+ if (_onPress) {
297
+ _onPress({
298
+ defaultHandler: function defaultHandler() {
299
+ return showMessageOverlay(true);
300
+ },
301
+ emitter: 'reactionList',
302
+ event: event
303
+ });
304
+ }
305
+ },
306
+ onPressIn: function onPressIn(event) {
307
+ if (_onPressIn) {
308
+ _onPressIn({
309
+ defaultHandler: function defaultHandler() {
310
+ return showMessageOverlay(true);
311
+ },
312
+ emitter: 'reactionList',
313
+ event: event
314
+ });
315
+ }
316
+ },
317
317
  style: [styles.reactionBubble, {
318
318
  backgroundColor: alignmentLeft ? fill : white,
319
319
  borderRadius: reactionSize - strokeSize * 2,
@@ -325,7 +325,7 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
325
325
  __self: _this,
326
326
  __source: {
327
327
  fileName: _jsxFileName,
328
- lineNumber: 269,
328
+ lineNumber: 242,
329
329
  columnNumber: 11
330
330
  }
331
331
  }, reactions.map(function (reaction) {
@@ -1 +1 @@
1
- {"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","event","emitter","defaultHandler","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <View\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </View>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { supportedReactions, targetedMessage } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: ReactionListProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { supportedReactions, targetedMessage } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
@@ -233,6 +233,7 @@ var renderText = function renderText(params) {
233
233
 
234
234
  var list = function list(node, output, state) {
235
235
  return _react["default"].createElement(ListOutput, {
236
+ key: "list-" + state.key,
236
237
  node: node,
237
238
  output: output,
238
239
  state: state,
@@ -280,7 +281,7 @@ var renderText = function renderText(params) {
280
281
  __self: _this,
281
282
  __source: {
282
283
  fileName: _jsxFileName,
283
- lineNumber: 279,
284
+ lineNumber: 285,
284
285
  columnNumber: 5
285
286
  }
286
287
  }, newText);
@@ -301,7 +302,7 @@ var ListOutput = function ListOutput(_ref4) {
301
302
  __self: _this,
302
303
  __source: {
303
304
  fileName: _jsxFileName,
304
- lineNumber: 314,
305
+ lineNumber: 320,
305
306
  columnNumber: 5
306
307
  }
307
308
  }, node.items.map(function (item, index) {
@@ -317,7 +318,7 @@ var ListOutput = function ListOutput(_ref4) {
317
318
  __self: _this,
318
319
  __source: {
319
320
  fileName: _jsxFileName,
320
- lineNumber: 320,
321
+ lineNumber: 326,
321
322
  columnNumber: 13
322
323
  }
323
324
  }, _react["default"].createElement(Bullet, {
@@ -325,7 +326,7 @@ var ListOutput = function ListOutput(_ref4) {
325
326
  __self: _this,
326
327
  __source: {
327
328
  fileName: _jsxFileName,
328
- lineNumber: 321,
329
+ lineNumber: 327,
329
330
  columnNumber: 15
330
331
  }
331
332
  }));
@@ -343,7 +344,7 @@ var ListOutput = function ListOutput(_ref4) {
343
344
  __self: _this,
344
345
  __source: {
345
346
  fileName: _jsxFileName,
346
- lineNumber: 331,
347
+ lineNumber: 337,
347
348
  columnNumber: 11
348
349
  }
349
350
  }, _react["default"].createElement(Bullet, {
@@ -351,7 +352,7 @@ var ListOutput = function ListOutput(_ref4) {
351
352
  __self: _this,
352
353
  __source: {
353
354
  fileName: _jsxFileName,
354
- lineNumber: 332,
355
+ lineNumber: 338,
355
356
  columnNumber: 13
356
357
  }
357
358
  }), _react["default"].createElement(ListItem, {
@@ -360,7 +361,7 @@ var ListOutput = function ListOutput(_ref4) {
360
361
  __self: _this,
361
362
  __source: {
362
363
  fileName: _jsxFileName,
363
- lineNumber: 333,
364
+ lineNumber: 339,
364
365
  columnNumber: 13
365
366
  }
366
367
  }, output(item, state)));
@@ -378,7 +379,7 @@ var Bullet = function Bullet(_ref5) {
378
379
  __self: _this,
379
380
  __source: {
380
381
  fileName: _jsxFileName,
381
- lineNumber: 348,
382
+ lineNumber: 354,
382
383
  columnNumber: 3
383
384
  }
384
385
  }, index ? index + ". " : "\u2022 ");
@@ -390,7 +391,7 @@ var ListRow = function ListRow(props) {
390
391
  __self: _this,
391
392
  __source: {
392
393
  fileName: _jsxFileName,
393
- lineNumber: 354,
394
+ lineNumber: 360,
394
395
  columnNumber: 3
395
396
  }
396
397
  }, props.children);
@@ -404,7 +405,7 @@ var ListItem = function ListItem(_ref6) {
404
405
  __self: _this,
405
406
  __source: {
406
407
  fileName: _jsxFileName,
407
- lineNumber: 358,
408
+ lineNumber: 364,
408
409
  columnNumber: 3
409
410
  }
410
411
  }, children);