stream-chat-react-native-core 5.17.1-beta.1 → 5.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +7 -5
  2. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  3. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +153 -39
  4. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +46 -58
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +25 -36
  8. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  9. package/lib/commonjs/version.json +1 -1
  10. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +7 -5
  11. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  12. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +153 -39
  13. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  14. package/lib/module/components/Channel/Channel.js +46 -58
  15. package/lib/module/components/Channel/Channel.js.map +1 -1
  16. package/lib/module/contexts/messageInputContext/MessageInputContext.js +25 -36
  17. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  18. package/lib/module/version.json +1 -1
  19. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts +3 -5
  20. package/package.json +1 -1
  21. package/src/components/AttachmentPicker/AttachmentPicker.tsx +7 -2
  22. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +77 -35
  23. package/src/components/Channel/Channel.tsx +4 -8
  24. package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -5
  25. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","getMorePhotos","useCallback","_asyncToGenerator2","_regenerator","mark","_callee","endCursor","results","wrap","_callee$","_context","prev","next","current","getPhotos","after","first","sent","prevPhotos","concat","_toConsumableArray2","assets","hasNextPage","t0","stop","getMorePhotosRef","useEffect","_oniOS14GalleryLibrar","oniOS14GalleryLibrarySelectionChange","undefined","unsubscribe","backAction","backHandler","BackHandler","addEventListener","remove","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","BottomSheetFlatList","contentContainerStyle","backgroundColor","opacity","data","keyExtractor","item","numColumns","onEndReached","renderItem","renderAttachmentPickerItem","exports","displayName"],"sources":["AttachmentPicker.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { BackHandler, Dimensions, Keyboard, Platform, StatusBar, StyleSheet } from 'react-native';\n\nimport BottomSheet, { BottomSheetFlatList, BottomSheetHandleProps } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { renderAttachmentPickerItem } from './components/AttachmentPickerItem';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setSelectedFiles,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n Keyboard.removeListener(keyboardShowEvent, closePicker);\n };\n }, [closePicker]);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n endCursorRef.current = undefined;\n hasNextPageRef.current = true;\n attemptedToLoadPhotosOnOpenRef.current = false;\n setPhotoError(false);\n }\n }\n }, [currentIndex, loadingPhotos]);\n\n useEffect(() => {\n if (\n !attemptedToLoadPhotosOnOpenRef.current &&\n selectedPicker === 'images' &&\n endCursorRef.current === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n getMorePhotos();\n // we do this only once on open for avoiding to request permissions in rationale dialog again and again on Android\n attemptedToLoadPhotosOnOpenRef.current = true;\n }\n }, [currentIndex, selectedPicker, getMorePhotos, loadingPhotos]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads: selectedFiles.length + selectedImages.length,\n selected:\n selectedImages.some((image) => image.uri === asset.uri) ||\n selectedFiles.some((file) => file.uri === asset.uri),\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [initialSnapPoint, finalSnapPoint],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={photoError ? undefined : getMorePhotos}\n renderItem={renderAttachmentPickerItem}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={initialSnapPoint}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_bottomSheet","_dayjs","_interopRequireDefault","_duration","_AttachmentPickerItem","_AttachmentPickerContext","_ThemeContext","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","dayjs","extend","duration","styles","StyleSheet","create","container","flexGrow","screenHeight","vh","fullScreenHeight","Dimensions","height","AttachmentPicker","React","forwardRef","props","ref","AttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","AttachmentPickerError","attachmentPickerErrorButtonText","AttachmentPickerErrorImage","attachmentPickerErrorText","ImageOverlaySelectedComponent","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","translucentStatusBar","_useTheme","useTheme","_useTheme$theme","theme","bottomSheetContentContainer","attachmentPicker","white","colors","_useAttachmentPickerC","useAttachmentPickerContext","closePicker","maxNumberOfFiles","selectedFiles","selectedImages","selectedPicker","setSelectedFiles","setSelectedImages","setSelectedPicker","topInset","_useState","useState","_useState2","_slicedToArray2","currentIndex","setCurrentIndex","endCursorRef","useRef","_useState3","_useState4","photoError","setPhotoError","hasNextPageRef","_useState5","_useState6","loadingPhotos","setLoadingPhotos","_useState7","_useState8","photos","setPhotos","attemptedToLoadPhotosOnOpenRef","getMorePhotos","useCallback","_asyncToGenerator2","_regenerator","mark","_callee","endCursor","results","wrap","_callee$","_context","prev","next","current","getPhotos","after","first","sent","prevPhotos","concat","_toConsumableArray2","assets","hasNextPage","t0","stop","getMorePhotosRef","useEffect","_oniOS14GalleryLibrar","oniOS14GalleryLibrarySelectionChange","undefined","unsubscribe","backAction","backHandler","BackHandler","addEventListener","remove","keyboardShowEvent","Platform","OS","keyboardSubscription","Keyboard","addListener","removeListener","selectedPhotos","map","asset","numberOfUploads","length","selected","some","image","id","uri","file","handleHeight","getAndroidBottomBarHeightAdjustment","_StatusBar$currentHei","statusBarHeight","StatusBar","currentHeight","bottomBarHeight","getInitialSnapPoint","initialSnapPoint","finalSnapPoint","snapPoints","useMemo","createElement","Fragment","containerHeight","enablePanDownToClose","handleComponent","index","onChange","__self","__source","fileName","lineNumber","columnNumber","BottomSheetFlatList","contentContainerStyle","backgroundColor","opacity","data","keyExtractor","item","numColumns","onEndReached","renderItem","renderAttachmentPickerItem","exports","displayName"],"sources":["AttachmentPicker.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { BackHandler, Dimensions, Keyboard, Platform, StatusBar, StyleSheet } from 'react-native';\n\nimport BottomSheet, { BottomSheetFlatList, BottomSheetHandleProps } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\nimport type { AttachmentPickerErrorProps } from './components/AttachmentPickerError';\n\nimport { renderAttachmentPickerItem } from './components/AttachmentPickerItem';\n\nimport { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { getPhotos, oniOS14GalleryLibrarySelectionChange } from '../../native';\nimport type { Asset } from '../../types/types';\nimport { vh } from '../../utils/utils';\n\ndayjs.extend(duration);\n\nconst styles = StyleSheet.create({\n container: {\n flexGrow: 1,\n },\n});\n\nconst screenHeight = vh(100);\nconst fullScreenHeight = Dimensions.get('window').height;\n\nexport type AttachmentPickerProps = {\n /**\n * Custom UI component to render [draggable handle](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) of attachment picker.\n *\n * **Default** [AttachmentPickerBottomSheetHandle](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx)\n */\n AttachmentPickerBottomSheetHandle: React.FC<BottomSheetHandleProps>;\n /**\n * Custom UI component to render error component while opening attachment picker.\n *\n * **Default** [AttachmentPickerError](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerError.tsx)\n */\n AttachmentPickerError: React.ComponentType<AttachmentPickerErrorProps>;\n /**\n * Custom UI component to render error image for attachment picker\n *\n * **Default** [AttachmentPickerErrorImage](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/AttachmentPickerErrorImage.tsx)\n */\n AttachmentPickerErrorImage: React.ComponentType;\n /**\n * Custom UI component to render overlay component, that shows up on top of [selected image](https://github.com/GetStream/stream-chat-react-native/blob/main/screenshots/docs/1.png) (with tick mark)\n *\n * **Default** [ImageOverlaySelectedComponent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/AttachmentPicker/components/ImageOverlaySelectedComponent.tsx)\n */\n ImageOverlaySelectedComponent: React.ComponentType;\n attachmentPickerBottomSheetHandleHeight?: number;\n attachmentPickerBottomSheetHeight?: number;\n attachmentPickerErrorButtonText?: string;\n attachmentPickerErrorText?: string;\n numberOfAttachmentImagesToLoadPerCall?: number;\n numberOfAttachmentPickerImageColumns?: number;\n translucentStatusBar?: boolean;\n};\n\nexport const AttachmentPicker = React.forwardRef(\n (props: AttachmentPickerProps, ref: React.ForwardedRef<BottomSheet>) => {\n const {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { bottomSheetContentContainer },\n colors: { white },\n },\n } = useTheme();\n const {\n closePicker,\n maxNumberOfFiles,\n selectedFiles,\n selectedImages,\n selectedPicker,\n setSelectedFiles,\n setSelectedImages,\n setSelectedPicker,\n topInset,\n } = useAttachmentPickerContext();\n\n const [currentIndex, setCurrentIndex] = useState(-1);\n const endCursorRef = useRef<string>();\n const [photoError, setPhotoError] = useState(false);\n const hasNextPageRef = useRef(true);\n const [loadingPhotos, setLoadingPhotos] = useState(false);\n const [photos, setPhotos] = useState<Asset[]>([]);\n const attemptedToLoadPhotosOnOpenRef = useRef(false);\n\n const getMorePhotos = useCallback(async () => {\n if (\n hasNextPageRef.current &&\n !loadingPhotos &&\n currentIndex > -1 &&\n selectedPicker === 'images'\n ) {\n setPhotoError(false);\n setLoadingPhotos(true);\n const endCursor = endCursorRef.current;\n try {\n const results = await getPhotos({\n after: endCursor,\n first: numberOfAttachmentImagesToLoadPerCall ?? 60,\n });\n endCursorRef.current = results.endCursor;\n setPhotos((prevPhotos) =>\n endCursor ? [...prevPhotos, ...results.assets] : results.assets,\n );\n hasNextPageRef.current = !!results.hasNextPage;\n } catch (error) {\n setPhotoError(true);\n }\n setLoadingPhotos(false);\n }\n }, [currentIndex, selectedPicker, loadingPhotos]);\n\n // we need to use ref here to avoid running effect when getMorePhotos changes\n const getMorePhotosRef = useRef(getMorePhotos);\n getMorePhotosRef.current = getMorePhotos;\n\n useEffect(() => {\n if (selectedPicker !== 'images') return;\n // ios 14 library selection change event is fired when user reselects the images that are permitted to be readable by the app\n const { unsubscribe } = oniOS14GalleryLibrarySelectionChange(() => {\n // we reset the cursor and has next page to true to facilitate fetching of the first page of photos again\n hasNextPageRef.current = true;\n endCursorRef.current = undefined;\n // fetch the first page of photos again\n getMorePhotosRef.current();\n });\n return unsubscribe;\n }, [selectedPicker]);\n\n useEffect(() => {\n const backAction = () => {\n if (selectedPicker) {\n setSelectedPicker(undefined);\n closePicker();\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [selectedPicker, closePicker]);\n\n useEffect(() => {\n const keyboardShowEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const keyboardSubscription = Keyboard.addListener(keyboardShowEvent, closePicker);\n\n return () => {\n if (keyboardSubscription?.remove) {\n keyboardSubscription.remove();\n return;\n }\n\n // To keep compatibility with older versions of React Native, where `remove()` is not available\n Keyboard.removeListener(keyboardShowEvent, closePicker);\n };\n }, [closePicker]);\n\n useEffect(() => {\n if (currentIndex < 0) {\n setSelectedPicker(undefined);\n if (!loadingPhotos) {\n endCursorRef.current = undefined;\n hasNextPageRef.current = true;\n attemptedToLoadPhotosOnOpenRef.current = false;\n setPhotoError(false);\n }\n }\n }, [currentIndex, loadingPhotos]);\n\n useEffect(() => {\n if (\n !attemptedToLoadPhotosOnOpenRef.current &&\n selectedPicker === 'images' &&\n endCursorRef.current === undefined &&\n currentIndex > -1 &&\n !loadingPhotos\n ) {\n getMorePhotos();\n // we do this only once on open for avoiding to request permissions in rationale dialog again and again on Android\n attemptedToLoadPhotosOnOpenRef.current = true;\n }\n }, [currentIndex, selectedPicker, getMorePhotos, loadingPhotos]);\n\n const selectedPhotos = photos.map((asset) => ({\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads: selectedFiles.length + selectedImages.length,\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n selected:\n selectedImages.some((image) =>\n image.id ? image.id === asset.id : image.uri === asset.uri,\n ) ||\n selectedFiles.some((file) => (file.id ? file.id === asset.id : file.uri === asset.uri)),\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n }));\n\n const handleHeight = attachmentPickerBottomSheetHandleHeight || 20;\n\n /**\n * This is to handle issues with Android measurements coming back incorrect.\n * If the StatusBar height is perfectly 1/2 of the difference between the two\n * dimensions for screen and window, it is incorrect and we need to account for\n * this. If you use a translucent header bar more adjustments are needed.\n */\n const getAndroidBottomBarHeightAdjustment = (): number => {\n if (Platform.OS === 'android') {\n const statusBarHeight = StatusBar.currentHeight ?? 0;\n const bottomBarHeight = fullScreenHeight - screenHeight - statusBarHeight;\n if (bottomBarHeight === statusBarHeight) {\n return translucentStatusBar ? 0 : statusBarHeight;\n } else {\n if (translucentStatusBar) {\n if (bottomBarHeight > statusBarHeight) {\n return -bottomBarHeight + statusBarHeight;\n } else {\n return bottomBarHeight > 0 ? -statusBarHeight : 0;\n }\n } else {\n return bottomBarHeight > 0 ? 0 : statusBarHeight;\n }\n }\n }\n return 0;\n };\n\n const getInitialSnapPoint = (): number => {\n if (attachmentPickerBottomSheetHeight !== undefined) {\n return attachmentPickerBottomSheetHeight;\n }\n if (Platform.OS === 'android') {\n return (\n 308 +\n (fullScreenHeight - screenHeight + getAndroidBottomBarHeightAdjustment()) -\n handleHeight\n );\n } else {\n return 308 + (fullScreenHeight - screenHeight);\n }\n };\n\n const initialSnapPoint = getInitialSnapPoint();\n\n const finalSnapPoint =\n Platform.OS === 'android'\n ? fullScreenHeight - topInset - handleHeight\n : fullScreenHeight - topInset;\n\n /**\n * Snap points changing cause a rerender of the position,\n * this is an issue if you are calling close on the bottom sheet.\n */\n const snapPoints = useMemo(\n () => [initialSnapPoint, finalSnapPoint],\n [initialSnapPoint, finalSnapPoint],\n );\n\n return (\n <>\n <BottomSheet\n containerHeight={fullScreenHeight}\n enablePanDownToClose={true}\n handleComponent={\n /**\n * using `null` here instead of `style={{ opacity: photoError ? 0 : 1 }}`\n * as opacity is not an allowed style\n */\n photoError ? null : AttachmentPickerBottomSheetHandle\n }\n handleHeight={handleHeight}\n index={-1}\n onChange={setCurrentIndex}\n ref={ref}\n snapPoints={snapPoints}\n >\n <BottomSheetFlatList\n contentContainerStyle={[\n styles.container,\n { backgroundColor: white },\n bottomSheetContentContainer,\n { opacity: photoError ? 0 : 1 },\n ]}\n data={selectedPhotos}\n keyExtractor={(item) => item.asset.uri}\n numColumns={numberOfAttachmentPickerImageColumns ?? 3}\n onEndReached={photoError ? undefined : getMorePhotos}\n renderItem={renderAttachmentPickerItem}\n />\n </BottomSheet>\n {selectedPicker === 'images' && photoError && (\n <AttachmentPickerError\n attachmentPickerBottomSheetHeight={initialSnapPoint}\n attachmentPickerErrorButtonText={attachmentPickerErrorButtonText}\n AttachmentPickerErrorImage={AttachmentPickerErrorImage}\n attachmentPickerErrorText={attachmentPickerErrorText}\n />\n )}\n </>\n );\n },\n);\n\nAttachmentPicker.displayName = 'AttachmentPicker';\n"],"mappings":"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"}
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  exports.renderAttachmentPickerItem = void 0;
6
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
10
  var _react = _interopRequireDefault(require("react"));
8
11
  var _reactNative = require("react-native");
9
12
  var _bottomSheet = require("@gorhom/bottom-sheet");
@@ -11,6 +14,7 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
11
14
  var _mimeTypes = require("mime-types");
12
15
  var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
13
16
  var _icons = require("../../../icons");
17
+ var _native = require("../../../native");
14
18
  var _utils = require("../../../utils/utils");
15
19
  var _this = this,
16
20
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx";
@@ -21,6 +25,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
21
25
  numberOfAttachmentPickerImageColumns = props.numberOfAttachmentPickerImageColumns,
22
26
  numberOfUploads = props.numberOfUploads,
23
27
  selected = props.selected,
28
+ selectedFiles = props.selectedFiles,
24
29
  setSelectedFiles = props.setSelectedFiles;
25
30
  var _useTheme = (0, _ThemeContext.useTheme)(),
26
31
  _useTheme$theme = _useTheme.theme,
@@ -42,29 +47,80 @@ var AttachmentVideo = function AttachmentVideo(props) {
42
47
  durationLabel = formattedVideoDuration;
43
48
  }
44
49
  var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
50
+ var patchVideoFile = function () {
51
+ var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(files) {
52
+ var localAssetURI, uri, mimeType;
53
+ return _regenerator["default"].wrap(function _callee$(_context) {
54
+ while (1) switch (_context.prev = _context.next) {
55
+ case 0:
56
+ _context.t0 = _reactNative.Platform.OS === 'ios' && asset.id;
57
+ if (!_context.t0) {
58
+ _context.next = 5;
59
+ break;
60
+ }
61
+ _context.next = 4;
62
+ return (0, _native.getLocalAssetUri)(asset.id);
63
+ case 4:
64
+ _context.t0 = _context.sent;
65
+ case 5:
66
+ localAssetURI = _context.t0;
67
+ uri = localAssetURI || asset.uri || '';
68
+ mimeType = (0, _mimeTypes.lookup)(asset.filename) || 'multipart/form-data';
69
+ return _context.abrupt("return", [].concat((0, _toConsumableArray2["default"])(files), [{
70
+ duration: durationLabel,
71
+ id: asset.id,
72
+ mimeType: mimeType,
73
+ name: asset.filename,
74
+ size: asset.fileSize,
75
+ uri: uri
76
+ }]));
77
+ case 9:
78
+ case "end":
79
+ return _context.stop();
80
+ }
81
+ }, _callee);
82
+ }));
83
+ return function patchVideoFile(_x) {
84
+ return _ref.apply(this, arguments);
85
+ };
86
+ }();
87
+ var updateSelectedFiles = function () {
88
+ var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
89
+ var files;
90
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
91
+ while (1) switch (_context2.prev = _context2.next) {
92
+ case 0:
93
+ if (!(numberOfUploads >= maxNumberOfFiles)) {
94
+ _context2.next = 3;
95
+ break;
96
+ }
97
+ _reactNative.Alert.alert('Maximum number of files reached');
98
+ return _context2.abrupt("return");
99
+ case 3:
100
+ _context2.next = 5;
101
+ return patchVideoFile(selectedFiles);
102
+ case 5:
103
+ files = _context2.sent;
104
+ setSelectedFiles(files);
105
+ case 7:
106
+ case "end":
107
+ return _context2.stop();
108
+ }
109
+ }, _callee2);
110
+ }));
111
+ return function updateSelectedFiles() {
112
+ return _ref2.apply(this, arguments);
113
+ };
114
+ }();
45
115
  var onPressVideo = function onPressVideo() {
46
116
  if (selected) {
47
117
  setSelectedFiles(function (files) {
48
118
  return files.filter(function (file) {
49
- return file.uri !== asset.uri;
119
+ return file.id ? file.id !== asset.id : file.uri !== asset.uri;
50
120
  });
51
121
  });
52
122
  } else {
53
- setSelectedFiles(function (files) {
54
- if (numberOfUploads >= maxNumberOfFiles) {
55
- _reactNative.Alert.alert('Maximum number of files reached');
56
- return files;
57
- }
58
- var mimeType = (0, _mimeTypes.lookup)(asset.filename) || 'multipart/form-data';
59
- return [].concat((0, _toConsumableArray2["default"])(files), [{
60
- duration: durationLabel,
61
- id: asset.id,
62
- mimeType: mimeType,
63
- name: asset.filename,
64
- size: asset.fileSize,
65
- uri: asset.uri
66
- }]);
67
- });
123
+ updateSelectedFiles();
68
124
  }
69
125
  };
70
126
  return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
@@ -72,7 +128,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
72
128
  __self: _this,
73
129
  __source: {
74
130
  fileName: _jsxFileName,
75
- lineNumber: 91,
131
+ lineNumber: 108,
76
132
  columnNumber: 5
77
133
  }
78
134
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -87,7 +143,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
87
143
  __self: _this,
88
144
  __source: {
89
145
  fileName: _jsxFileName,
90
- lineNumber: 92,
146
+ lineNumber: 109,
91
147
  columnNumber: 7
92
148
  }
93
149
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -97,14 +153,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
97
153
  __self: _this,
98
154
  __source: {
99
155
  fileName: _jsxFileName,
100
- lineNumber: 104,
156
+ lineNumber: 121,
101
157
  columnNumber: 11
102
158
  }
103
159
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
104
160
  __self: _this,
105
161
  __source: {
106
162
  fileName: _jsxFileName,
107
- lineNumber: 105,
163
+ lineNumber: 122,
108
164
  columnNumber: 13
109
165
  }
110
166
  })), _react["default"].createElement(_reactNative.View, {
@@ -112,7 +168,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
112
168
  __self: _this,
113
169
  __source: {
114
170
  fileName: _jsxFileName,
115
- lineNumber: 108,
171
+ lineNumber: 125,
116
172
  columnNumber: 9
117
173
  }
118
174
  }, _react["default"].createElement(_icons.Recorder, {
@@ -122,7 +178,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
122
178
  __self: _this,
123
179
  __source: {
124
180
  fileName: _jsxFileName,
125
- lineNumber: 109,
181
+ lineNumber: 126,
126
182
  columnNumber: 11
127
183
  }
128
184
  }), videoDuration ? _react["default"].createElement(_reactNative.Text, {
@@ -132,7 +188,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
132
188
  __self: _this,
133
189
  __source: {
134
190
  fileName: _jsxFileName,
135
- lineNumber: 111,
191
+ lineNumber: 128,
136
192
  columnNumber: 13
137
193
  }
138
194
  }, durationLabel) : null)));
@@ -144,6 +200,7 @@ var AttachmentImage = function AttachmentImage(props) {
144
200
  numberOfAttachmentPickerImageColumns = props.numberOfAttachmentPickerImageColumns,
145
201
  numberOfUploads = props.numberOfUploads,
146
202
  selected = props.selected,
203
+ selectedImages = props.selectedImages,
147
204
  setSelectedImages = props.setSelectedImages;
148
205
  var _useTheme2 = (0, _ThemeContext.useTheme)(),
149
206
  _useTheme2$theme = _useTheme2.theme,
@@ -153,21 +210,74 @@ var AttachmentImage = function AttachmentImage(props) {
153
210
  overlay = _useTheme2$theme.colors.overlay;
154
211
  var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
155
212
  var uri = asset.uri;
213
+ var patchImageFile = function () {
214
+ var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(images) {
215
+ var localAssetURI, uri;
216
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
217
+ while (1) switch (_context3.prev = _context3.next) {
218
+ case 0:
219
+ _context3.t0 = _reactNative.Platform.OS === 'ios' && asset.id;
220
+ if (!_context3.t0) {
221
+ _context3.next = 5;
222
+ break;
223
+ }
224
+ _context3.next = 4;
225
+ return (0, _native.getLocalAssetUri)(asset.id);
226
+ case 4:
227
+ _context3.t0 = _context3.sent;
228
+ case 5:
229
+ localAssetURI = _context3.t0;
230
+ uri = localAssetURI || asset.uri || '';
231
+ return _context3.abrupt("return", [].concat((0, _toConsumableArray2["default"])(images), [(0, _extends2["default"])({}, asset, {
232
+ uri: uri
233
+ })]));
234
+ case 8:
235
+ case "end":
236
+ return _context3.stop();
237
+ }
238
+ }, _callee3);
239
+ }));
240
+ return function patchImageFile(_x2) {
241
+ return _ref3.apply(this, arguments);
242
+ };
243
+ }();
244
+ var updateSelectedImages = function () {
245
+ var _ref4 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
246
+ var images;
247
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
248
+ while (1) switch (_context4.prev = _context4.next) {
249
+ case 0:
250
+ if (!(numberOfUploads >= maxNumberOfFiles)) {
251
+ _context4.next = 3;
252
+ break;
253
+ }
254
+ _reactNative.Alert.alert('Maximum number of files reached');
255
+ return _context4.abrupt("return");
256
+ case 3:
257
+ _context4.next = 5;
258
+ return patchImageFile(selectedImages);
259
+ case 5:
260
+ images = _context4.sent;
261
+ setSelectedImages(images);
262
+ case 7:
263
+ case "end":
264
+ return _context4.stop();
265
+ }
266
+ }, _callee4);
267
+ }));
268
+ return function updateSelectedImages() {
269
+ return _ref4.apply(this, arguments);
270
+ };
271
+ }();
156
272
  var onPressImage = function onPressImage() {
157
273
  if (selected) {
158
274
  setSelectedImages(function (images) {
159
275
  return images.filter(function (image) {
160
- return image.uri !== asset.uri;
276
+ return image.id ? image.id !== asset.id : image.uri !== asset.uri;
161
277
  });
162
278
  });
163
279
  } else {
164
- setSelectedImages(function (images) {
165
- if (numberOfUploads >= maxNumberOfFiles) {
166
- _reactNative.Alert.alert('Maximum number of files reached');
167
- return images;
168
- }
169
- return [].concat((0, _toConsumableArray2["default"])(images), [asset]);
170
- });
280
+ updateSelectedImages();
171
281
  }
172
282
  };
173
283
  return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
@@ -175,7 +285,7 @@ var AttachmentImage = function AttachmentImage(props) {
175
285
  __self: _this,
176
286
  __source: {
177
287
  fileName: _jsxFileName,
178
- lineNumber: 157,
288
+ lineNumber: 195,
179
289
  columnNumber: 5
180
290
  }
181
291
  }, _react["default"].createElement(_reactNative.ImageBackground, {
@@ -190,7 +300,7 @@ var AttachmentImage = function AttachmentImage(props) {
190
300
  __self: _this,
191
301
  __source: {
192
302
  fileName: _jsxFileName,
193
- lineNumber: 158,
303
+ lineNumber: 196,
194
304
  columnNumber: 7
195
305
  }
196
306
  }, selected && _react["default"].createElement(_reactNative.View, {
@@ -200,26 +310,28 @@ var AttachmentImage = function AttachmentImage(props) {
200
310
  __self: _this,
201
311
  __source: {
202
312
  fileName: _jsxFileName,
203
- lineNumber: 170,
313
+ lineNumber: 208,
204
314
  columnNumber: 11
205
315
  }
206
316
  }, _react["default"].createElement(ImageOverlaySelectedComponent, {
207
317
  __self: _this,
208
318
  __source: {
209
319
  fileName: _jsxFileName,
210
- lineNumber: 171,
320
+ lineNumber: 209,
211
321
  columnNumber: 13
212
322
  }
213
323
  }))));
214
324
  };
215
- var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
216
- var item = _ref.item;
325
+ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref5) {
326
+ var item = _ref5.item;
217
327
  var asset = item.asset,
218
328
  ImageOverlaySelectedComponent = item.ImageOverlaySelectedComponent,
219
329
  maxNumberOfFiles = item.maxNumberOfFiles,
220
330
  numberOfAttachmentPickerImageColumns = item.numberOfAttachmentPickerImageColumns,
221
331
  numberOfUploads = item.numberOfUploads,
222
332
  selected = item.selected,
333
+ selectedFiles = item.selectedFiles,
334
+ selectedImages = item.selectedImages,
223
335
  setSelectedFiles = item.setSelectedFiles,
224
336
  setSelectedImages = item.setSelectedImages;
225
337
  var isVideoType = asset.type.includes('video');
@@ -231,11 +343,12 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
231
343
  numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
232
344
  numberOfUploads: numberOfUploads,
233
345
  selected: selected,
346
+ selectedFiles: selectedFiles,
234
347
  setSelectedFiles: setSelectedFiles,
235
348
  __self: _this,
236
349
  __source: {
237
350
  fileName: _jsxFileName,
238
- lineNumber: 201,
351
+ lineNumber: 241,
239
352
  columnNumber: 7
240
353
  }
241
354
  });
@@ -247,11 +360,12 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
247
360
  numberOfAttachmentPickerImageColumns: numberOfAttachmentPickerImageColumns,
248
361
  numberOfUploads: numberOfUploads,
249
362
  selected: selected,
363
+ selectedImages: selectedImages,
250
364
  setSelectedImages: setSelectedImages,
251
365
  __self: _this,
252
366
  __source: {
253
367
  fileName: _jsxFileName,
254
- lineNumber: 214,
368
+ lineNumber: 255,
255
369
  columnNumber: 5
256
370
  }
257
371
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","mimeType","lookup","filename","concat","_toConsumableArray2","id","name","fileSize","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","onPressImage","images","renderAttachmentPickerItem","_ref","item","isVideoType","type","includes","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n // We need a mime-type to upload a video file.\n const mimeType = lookup(asset.filename) || 'multipart/form-data';\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n mimeType,\n name: asset.filename,\n size: asset.fileSize,\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n /**\n * Expo Media Library - Result of asset type\n * Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)\n * Native iOS - Gives `image` or `video`\n * Expo Android/iOS - Gives `photo` or `video`\n **/\n const isVideoType = asset.type.includes('video');\n\n if (isVideoType) {\n return (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n }\n\n return (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AAEA,IAAAO,MAAA,GAAAP,OAAA;AAA0C,IAAAQ,KAAA;EAAAC,YAAA;AAiB1C,IAAMC,eAA+C,GAAG,SAAlDA,eAA+CA,CAAIC,KAAK,EAAK;EACjE,IACEC,KAAK,GAOHD,KAAK,CAPPC,KAAK;IACLC,6BAA6B,GAM3BF,KAAK,CANPE,6BAA6B;IAC7BC,gBAAgB,GAKdH,KAAK,CALPG,gBAAgB;IAChBC,oCAAoC,GAIlCJ,KAAK,CAJPI,oCAAoC;IACpCC,eAAe,GAGbL,KAAK,CAHPK,eAAe;IACfC,QAAQ,GAENN,KAAK,CAFPM,QAAQ;IACRC,gBAAgB,GACdP,KAAK,CADPO,gBAAgB;EAGlB,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IAAAC,qBAAA,GAAAF,eAAA,CACHG,gBAAgB;IAAIC,YAAY,GAAAF,qBAAA,CAAZE,YAAY;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;IAAEC,YAAY,GAAAJ,qBAAA,CAAZI,YAAY;IAAAC,qBAAA,GAAAP,eAAA,CACrDQ,MAAM;IAAIC,OAAO,GAAAF,qBAAA,CAAPE,OAAO;IAAEC,KAAK,GAAAH,qBAAA,CAALG,KAAK;EAI5B,IAAkBC,aAAa,GAAUpB,KAAK,CAAtCqB,QAAQ;IAAiBC,GAAG,GAAKtB,KAAK,CAAbsB,GAAG;EAEpC,IAAMC,mBAAmB,GAAG,IAAI;EAEhC,IAAIC,aAAa,GAAG,OAAO;EAE3B,IAAIJ,aAAa,EAAE;IACjB,IAAMK,wBAAwB,GAAGL,aAAa,GAAGG,mBAAmB,IAAI,CAAC;IACzE,IAAMG,sBAAsB,GAAGD,wBAAwB,GAAG,UAAU,GAAG,OAAO;IAC9E,IAAME,sBAAsB,GAAGC,iBAAK,CACjCP,QAAQ,CAACD,aAAa,EAAE,QAAQ,CAAC,CACjCS,MAAM,CAACH,sBAAsB,CAAC;IACjCF,aAAa,GAAGG,sBAAsB;EACxC;EAEA,IAAMG,IAAI,GAAG,IAAAC,SAAE,EAAC,GAAG,CAAC,IAAI5B,oCAAoC,IAAI,CAAC,CAAC,GAAG,CAAC;EAEtE,IAAM6B,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzB,IAAI3B,QAAQ,EAAE;MACZC,gBAAgB,CAAC,UAAC2B,KAAK;QAAA,OAAKA,KAAK,CAACC,MAAM,CAAC,UAACC,IAAI;UAAA,OAAKA,IAAI,CAACb,GAAG,KAAKtB,KAAK,CAACsB,GAAG;QAAA,EAAC;MAAA,EAAC;IAC7E,CAAC,MAAM;MACLhB,gBAAgB,CAAC,UAAC2B,KAAK,EAAK;QAC1B,IAAI7B,eAAe,IAAIF,gBAAgB,EAAE;UACvCkC,kBAAK,CAACC,KAAK,CAAC,iCAAiC,CAAC;UAC9C,OAAOJ,KAAK;QACd;QAEA,IAAMK,QAAQ,GAAG,IAAAC,iBAAM,EAACvC,KAAK,CAACwC,QAAQ,CAAC,IAAI,qBAAqB;QAChE,UAAAC,MAAA,KAAAC,mBAAA,aACKT,KAAK,IACR;UACEZ,QAAQ,EAAEG,aAAa;UACvBmB,EAAE,EAAE3C,KAAK,CAAC2C,EAAE;UACZL,QAAQ,EAARA,QAAQ;UACRM,IAAI,EAAE5C,KAAK,CAACwC,QAAQ;UACpBV,IAAI,EAAE9B,KAAK,CAAC6C,QAAQ;UACpBvB,GAAG,EAAEtB,KAAK,CAACsB;QACb,CAAC;MAEL,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OACEpC,MAAA,YAAA4D,aAAA,CAACxD,YAAA,CAAAyD,gBAAgB;IAACC,OAAO,EAAEhB,YAAa;IAAAiB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACtCnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAiE,eAAe;IACdC,MAAM,EAAE;MAAEjC,GAAG,EAAHA;IAAI,CAAE;IAChBkC,KAAK,EAAE,CACL;MACEC,MAAM,EAAE3B,IAAI;MACZ4B,MAAM,EAAE,CAAC;MACTC,KAAK,EAAE7B;IACT,CAAC,EACDhB,KAAK,CACL;IAAAmC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEDhD,QAAQ,IACPnB,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAE,CAACK,MAAM,CAAC3C,OAAO,EAAE;MAAE4C,eAAe,EAAE5C;IAAQ,CAAC,EAAEH,YAAY,CAAE;IAAAkC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxEnE,MAAA,YAAA4D,aAAA,CAAC7C,6BAA6B;IAAAgD,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAC5B,CACP,EACDnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAEK,MAAM,CAACE,SAAU;IAAAd,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC5BnE,MAAA,YAAA4D,aAAA,CAACpD,MAAA,CAAAsE,QAAQ;IAACP,MAAM,EAAE,EAAG;IAACQ,QAAQ,EAAE9C,KAAM;IAACwC,KAAK,EAAE,EAAG;IAAAV,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAAC,EACnDjC,aAAa,GACZlC,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAA6E,IAAI;IAACV,KAAK,EAAE,CAACK,MAAM,CAAChD,YAAY,EAAEA,YAAY,EAAE;MAAEsD,KAAK,EAAEhD;IAAM,CAAC,CAAE;IAAA8B,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAChE7B,aACG,CAAC,GACL,IACA,CACS,CACD,CAAC;AAEvB,CAAC;AAED,IAAM4C,eAA+C,GAAG,SAAlDA,eAA+CA,CAAIrE,KAAK,EAAK;EACjE,IACEC,KAAK,GAOHD,KAAK,CAPPC,KAAK;IACLC,6BAA6B,GAM3BF,KAAK,CANPE,6BAA6B;IAC7BC,gBAAgB,GAKdH,KAAK,CALPG,gBAAgB;IAChBC,oCAAoC,GAIlCJ,KAAK,CAJPI,oCAAoC;IACpCC,eAAe,GAGbL,KAAK,CAHPK,eAAe;IACfC,QAAQ,GAENN,KAAK,CAFPM,QAAQ;IACRgE,iBAAiB,GACftE,KAAK,CADPsE,iBAAiB;EAEnB,IAAAC,UAAA,GAKI,IAAA9D,sBAAQ,EAAC,CAAC;IAAA+D,gBAAA,GAAAD,UAAA,CAJZ5D,KAAK;IAAA8D,qBAAA,GAAAD,gBAAA,CACH3D,gBAAgB;IAAIE,KAAK,GAAA0D,qBAAA,CAAL1D,KAAK;IAAEC,YAAY,GAAAyD,qBAAA,CAAZzD,YAAY;IAC7BG,OAAO,GAAAqD,gBAAA,CAAjBtD,MAAM,CAAIC,OAAO;EAIrB,IAAMY,IAAI,GAAG,IAAAC,SAAE,EAAC,GAAG,CAAC,IAAI5B,oCAAoC,IAAI,CAAC,CAAC,GAAG,CAAC;EAEtE,IAAQmB,GAAG,GAAKtB,KAAK,CAAbsB,GAAG;EAEX,IAAMmD,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;IACzB,IAAIpE,QAAQ,EAAE;MACZgE,iBAAiB,CAAC,UAACK,MAAM;QAAA,OAAKA,MAAM,CAACxC,MAAM,CAAC,UAACpB,KAAK;UAAA,OAAKA,KAAK,CAACQ,GAAG,KAAKtB,KAAK,CAACsB,GAAG;QAAA,EAAC;MAAA,EAAC;IAClF,CAAC,MAAM;MACL+C,iBAAiB,CAAC,UAACK,MAAM,EAAK;QAC5B,IAAItE,eAAe,IAAIF,gBAAgB,EAAE;UACvCkC,kBAAK,CAACC,KAAK,CAAC,iCAAiC,CAAC;UAC9C,OAAOqC,MAAM;QACf;QACA,UAAAjC,MAAA,KAAAC,mBAAA,aAAWgC,MAAM,IAAE1E,KAAK;MAC1B,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OACEd,MAAA,YAAA4D,aAAA,CAACxD,YAAA,CAAAyD,gBAAgB;IAACC,OAAO,EAAEyB,YAAa;IAAAxB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACtCnE,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAiE,eAAe;IACdC,MAAM,EAAE;MAAEjC,GAAG,EAAHA;IAAI,CAAE;IAChBkC,KAAK,EAAE,CACL;MACEC,MAAM,EAAE3B,IAAI;MACZ4B,MAAM,EAAE,CAAC;MACTC,KAAK,EAAE7B;IACT,CAAC,EACDhB,KAAK,CACL;IAAAmC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEDhD,QAAQ,IACPnB,MAAA,YAAA4D,aAAA,CAACzD,YAAA,CAAAuE,IAAI;IAACJ,KAAK,EAAE,CAACK,MAAM,CAAC3C,OAAO,EAAE;MAAE4C,eAAe,EAAE5C;IAAQ,CAAC,EAAEH,YAAY,CAAE;IAAAkC,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxEnE,MAAA,YAAA4D,aAAA,CAAC7C,6BAA6B;IAAAgD,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CAAE,CAC5B,CAEO,CACD,CAAC;AAEvB,CAAC;AAEM,IAAMsB,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAAC,IAAA,EAAqD;EAAA,IAA/CC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAC/C,IACE7E,KAAK,GAQH6E,IAAI,CARN7E,KAAK;IACLC,6BAA6B,GAO3B4E,IAAI,CAPN5E,6BAA6B;IAC7BC,gBAAgB,GAMd2E,IAAI,CANN3E,gBAAgB;IAChBC,oCAAoC,GAKlC0E,IAAI,CALN1E,oCAAoC;IACpCC,eAAe,GAIbyE,IAAI,CAJNzE,eAAe;IACfC,QAAQ,GAGNwE,IAAI,CAHNxE,QAAQ;IACRC,gBAAgB,GAEduE,IAAI,CAFNvE,gBAAgB;IAChB+D,iBAAiB,GACfQ,IAAI,CADNR,iBAAiB;EASnB,IAAMS,WAAW,GAAG9E,KAAK,CAAC+E,IAAI,CAACC,QAAQ,CAAC,OAAO,CAAC;EAEhD,IAAIF,WAAW,EAAE;IACf,OACE5F,MAAA,YAAA4D,aAAA,CAAChD,eAAe;MACdE,KAAK,EAAEA,KAAM;MACbC,6BAA6B,EAAEA,6BAA8B;MAC7DC,gBAAgB,EAAEA,gBAAiB;MACnCC,oCAAoC,EAAEA,oCAAqC;MAC3EC,eAAe,EAAEA,eAAgB;MACjCC,QAAQ,EAAEA,QAAS;MACnBC,gBAAgB,EAAEA,gBAAiB;MAAA2C,MAAA,EAAArD,KAAA;MAAAsD,QAAA;QAAAC,QAAA,EAAAtD,YAAA;QAAAuD,UAAA;QAAAC,YAAA;MAAA;IAAA,CACpC,CAAC;EAEN;EAEA,OACEnE,MAAA,YAAA4D,aAAA,CAACsB,eAAe;IACdpE,KAAK,EAAEA,KAAM;IACbC,6BAA6B,EAAEA,6BAA8B;IAC7DC,gBAAgB,EAAEA,gBAAiB;IACnCC,oCAAoC,EAAEA,oCAAqC;IAC3EC,eAAe,EAAEA,eAAgB;IACjCC,QAAQ,EAAEA,QAAS;IACnBgE,iBAAiB,EAAEA,iBAAkB;IAAApB,MAAA,EAAArD,KAAA;IAAAsD,QAAA;MAAAC,QAAA,EAAAtD,YAAA;MAAAuD,UAAA;MAAAC,YAAA;IAAA;EAAA,CACtC,CAAC;AAEN,CAAC;AAAC4B,OAAA,CAAAN,0BAAA,GAAAA,0BAAA;AAEF,IAAMd,MAAM,GAAGqB,uBAAU,CAACC,MAAM,CAAC;EAC/BtE,YAAY,EAAE;IACZuE,UAAU,EAAE;EACd,CAAC;EACDlE,OAAO,EAAE;IACPmE,UAAU,EAAE,UAAU;IACtBC,IAAI,EAAE;EACR,CAAC;EACDvB,SAAS,EAAE;IACTwB,MAAM,EAAE,CAAC;IACTC,OAAO,EAAE,MAAM;IACfC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,iBAAiB,EAAE,CAAC;IACpBC,QAAQ,EAAE,UAAU;IACpBjC,KAAK,EAAE;EACT;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_bottomSheet","_dayjs","_mimeTypes","_ThemeContext","_icons","_native","_utils","_this","_jsxFileName","AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","selectedFiles","setSelectedFiles","_useTheme","useTheme","_useTheme$theme","theme","_useTheme$theme$attac","attachmentPicker","durationText","image","imageOverlay","_useTheme$theme$color","colors","overlay","white","videoDuration","duration","uri","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","patchVideoFile","_ref","_asyncToGenerator2","_regenerator","mark","_callee","files","localAssetURI","mimeType","wrap","_callee$","_context","prev","next","t0","Platform","OS","id","getLocalAssetUri","sent","lookup","filename","abrupt","concat","_toConsumableArray2","name","fileSize","stop","_x","apply","arguments","updateSelectedFiles","_ref2","_callee2","_callee2$","_context2","Alert","alert","onPressVideo","filter","file","createElement","TouchableOpacity","onPress","__self","__source","fileName","lineNumber","columnNumber","ImageBackground","source","style","height","margin","width","View","styles","backgroundColor","videoView","Recorder","pathFill","Text","color","AttachmentImage","selectedImages","setSelectedImages","_useTheme2","_useTheme2$theme","_useTheme2$theme$atta","patchImageFile","_ref3","_callee3","images","_callee3$","_context3","_extends2","_x2","updateSelectedImages","_ref4","_callee4","_callee4$","_context4","onPressImage","renderAttachmentPickerItem","_ref5","item","isVideoType","type","includes","exports","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, Platform, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport type { AttachmentPickerContextValue } from '../../../contexts/attachmentPickerContext/AttachmentPickerContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport { getLocalAssetUri } from '../../../native';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = Pick<\n AttachmentPickerContextValue,\n 'selectedFiles' | 'setSelectedFiles' | 'setSelectedImages' | 'selectedImages' | 'maxNumberOfFiles'\n> & {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n numberOfUploads: number;\n selected: boolean;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles' | 'selectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages' | 'selectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n selectedFiles,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration: videoDuration, uri } = asset;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n /* Patches video files with uri and mimetype */\n const patchVideoFile = async (files: File[]) => {\n // For the case of Expo CLI where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && asset.id && (await getLocalAssetUri(asset.id));\n const uri = localAssetURI || asset.uri || '';\n // We need a mime-type to upload a video file.\n const mimeType = lookup(asset.filename) || 'multipart/form-data';\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n mimeType,\n name: asset.filename,\n size: asset.fileSize,\n uri,\n },\n ];\n };\n\n const updateSelectedFiles = async () => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n const files = await patchVideoFile(selectedFiles);\n setSelectedFiles(files);\n };\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) =>\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n files.filter((file) => (file.id ? file.id !== asset.id : file.uri !== asset.uri)),\n );\n } else {\n updateSelectedFiles();\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n selectedImages,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n /* Patches image files with uri */\n const patchImageFile = async (images: Asset[]) => {\n // For the case of Expo CLI where you need to fetch the file uri from file id. Here it is only done for iOS since for android the file.uri is fine.\n const localAssetURI = Platform.OS === 'ios' && asset.id && (await getLocalAssetUri(asset.id));\n const uri = localAssetURI || asset.uri || '';\n return [\n ...images,\n {\n ...asset,\n uri,\n },\n ];\n };\n\n const updateSelectedImages = async () => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return;\n }\n const images = await patchImageFile(selectedImages);\n setSelectedImages(images);\n };\n\n const onPressImage = () => {\n if (selected) {\n // `id` is available for Expo MediaLibrary while Cameraroll doesn't share id therefore we use `uri`\n setSelectedImages((images) =>\n images.filter((image) => (image.id ? image.id !== asset.id : image.uri !== asset.uri)),\n );\n } else {\n updateSelectedImages();\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n selectedFiles,\n selectedImages,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n /**\n * Expo Media Library - Result of asset type\n * Native Android - Gives mime type(Eg: image/jpeg, video/mp4, etc.)\n * Native iOS - Gives `image` or `video`\n * Expo Android/iOS - Gives `photo` or `video`\n **/\n const isVideoType = asset.type.includes('video');\n\n if (isVideoType) {\n return (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n selectedFiles={selectedFiles}\n setSelectedFiles={setSelectedFiles}\n />\n );\n }\n\n return (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n selectedImages={selectedImages}\n setSelectedImages={setSelectedImages}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}