stream-chat-react-native-core 5.17.1-beta.1 → 5.17.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +7 -5
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +153 -39
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +46 -58
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +25 -36
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +7 -5
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +153 -39
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +46 -58
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +25 -36
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts +3 -5
- package/package.json +1 -1
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +7 -2
- package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +77 -35
- package/src/components/Channel/Channel.tsx +4 -8
- package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -5
- 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":";;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAD,sBAAA,CAAAJ,OAAA;AAIA,IAAAM,qBAAA,GAAAN,OAAA;AAEA,IAAAO,wBAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AAEA,IAAAU,MAAA,GAAAV,OAAA;AAAuC,IAAAW,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAf,wBAAAmB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAEvCW,iBAAK,CAACC,MAAM,CAACC,oBAAQ,CAAC;AAEtB,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,SAAS,EAAE;IACTC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,IAAMC,YAAY,GAAG,IAAAC,SAAE,EAAC,GAAG,CAAC;AAC5B,IAAMC,gBAAgB,GAAGC,uBAAU,CAACvB,GAAG,CAAC,QAAQ,CAAC,CAACwB,MAAM;AAoCjD,IAAMC,gBAAgB,GAAGC,iBAAK,CAACC,UAAU,CAC9C,UAACC,KAA4B,EAAEC,GAAoC,EAAK;EACtE,IACEC,iCAAiC,GAW/BF,KAAK,CAXPE,iCAAiC;IACjCC,uCAAuC,GAUrCH,KAAK,CAVPG,uCAAuC;IACvCC,iCAAiC,GAS/BJ,KAAK,CATPI,iCAAiC;IACjCC,qBAAqB,GAQnBL,KAAK,CARPK,qBAAqB;IACrBC,+BAA+B,GAO7BN,KAAK,CAPPM,+BAA+B;IAC/BC,0BAA0B,GAMxBP,KAAK,CANPO,0BAA0B;IAC1BC,yBAAyB,GAKvBR,KAAK,CALPQ,yBAAyB;IACzBC,6BAA6B,GAI3BT,KAAK,CAJPS,6BAA6B;IAC7BC,qCAAqC,GAGnCV,KAAK,CAHPU,qCAAqC;IACrCC,oCAAoC,GAElCX,KAAK,CAFPW,oCAAoC;IACpCC,oBAAoB,GAClBZ,KAAK,CADPY,oBAAoB;EAGtB,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IACiBC,2BAA2B,GAAAF,eAAA,CAA/CG,gBAAgB,CAAID,2BAA2B;IACrCE,KAAK,GAAAJ,eAAA,CAAfK,MAAM,CAAID,KAAK;EAGnB,IAAAE,qBAAA,GAUI,IAAAC,mDAA0B,EAAC,CAAC;IAT9BC,WAAW,GAAAF,qBAAA,CAAXE,WAAW;IACXC,gBAAgB,GAAAH,qBAAA,CAAhBG,gBAAgB;IAChBC,aAAa,GAAAJ,qBAAA,CAAbI,aAAa;IACbC,cAAc,GAAAL,qBAAA,CAAdK,cAAc;IACdC,cAAc,GAAAN,qBAAA,CAAdM,cAAc;IACdC,gBAAgB,GAAAP,qBAAA,CAAhBO,gBAAgB;IAChBC,iBAAiB,GAAAR,qBAAA,CAAjBQ,iBAAiB;IACjBC,iBAAiB,GAAAT,qBAAA,CAAjBS,iBAAiB;IACjBC,QAAQ,GAAAV,qBAAA,CAARU,QAAQ;EAGV,IAAAC,SAAA,GAAwC,IAAAC,eAAQ,EAAC,CAAC,CAAC,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA7CI,YAAY,GAAAF,UAAA;IAAEG,eAAe,GAAAH,UAAA;EACpC,IAAMI,YAAY,GAAG,IAAAC,aAAM,EAAS,CAAC;EACrC,IAAAC,UAAA,GAAoC,IAAAP,eAAQ,EAAC,KAAK,CAAC;IAAAQ,UAAA,OAAAN,eAAA,aAAAK,UAAA;IAA5CE,UAAU,GAAAD,UAAA;IAAEE,aAAa,GAAAF,UAAA;EAChC,IAAMG,cAAc,GAAG,IAAAL,aAAM,EAAC,IAAI,CAAC;EACnC,IAAAM,UAAA,GAA0C,IAAAZ,eAAQ,EAAC,KAAK,CAAC;IAAAa,UAAA,OAAAX,eAAA,aAAAU,UAAA;IAAlDE,aAAa,GAAAD,UAAA;IAAEE,gBAAgB,GAAAF,UAAA;EACtC,IAAAG,UAAA,GAA4B,IAAAhB,eAAQ,EAAU,EAAE,CAAC;IAAAiB,UAAA,OAAAf,eAAA,aAAAc,UAAA;IAA1CE,MAAM,GAAAD,UAAA;IAAEE,SAAS,GAAAF,UAAA;EACxB,IAAMG,8BAA8B,GAAG,IAAAd,aAAM,EAAC,KAAK,CAAC;EAEpD,IAAMe,aAAa,GAAG,IAAAC,kBAAW,MAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAC,QAAA;IAAA,IAAAC,SAAA,EAAAC,OAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAA,MAE9BtB,cAAc,CAACuB,OAAO,IACtB,CAACpB,aAAa,IACdX,YAAY,GAAG,CAAC,CAAC,IACjBT,cAAc,KAAK,QAAQ;YAAAqC,QAAA,CAAAE,IAAA;YAAA;UAAA;UAE3BvB,aAAa,CAAC,KAAK,CAAC;UACpBK,gBAAgB,CAAC,IAAI,CAAC;UAChBY,SAAS,GAAGtB,YAAY,CAAC6B,OAAO;UAAAH,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEd,IAAAE,iBAAS,EAAC;YAC9BC,KAAK,EAAET,SAAS;YAChBU,KAAK,EAAE5D,qCAAqC,WAArCA,qCAAqC,GAAI;UAClD,CAAC,CAAC;QAAA;UAHImD,OAAO,GAAAG,QAAA,CAAAO,IAAA;UAIbjC,YAAY,CAAC6B,OAAO,GAAGN,OAAO,CAACD,SAAS;UACxCR,SAAS,CAAC,UAACoB,UAAU;YAAA,OACnBZ,SAAS,MAAAa,MAAA,KAAAC,mBAAA,aAAOF,UAAU,OAAAE,mBAAA,aAAKb,OAAO,CAACc,MAAM,KAAId,OAAO,CAACc,MAAM;UAAA,CACjE,CAAC;UACD/B,cAAc,CAACuB,OAAO,GAAG,CAAC,CAACN,OAAO,CAACe,WAAW;UAACZ,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAa,EAAA,GAAAb,QAAA;UAE/CrB,aAAa,CAAC,IAAI,CAAC;QAAC;UAEtBK,gBAAgB,CAAC,KAAK,CAAC;QAAC;QAAA;UAAA,OAAAgB,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAAnB,OAAA;EAAA,CAE3B,IAAE,CAACvB,YAAY,EAAET,cAAc,EAAEoB,aAAa,CAAC,CAAC;EAGjD,IAAMgC,gBAAgB,GAAG,IAAAxC,aAAM,EAACe,aAAa,CAAC;EAC9CyB,gBAAgB,CAACZ,OAAO,GAAGb,aAAa;EAExC,IAAA0B,gBAAS,EAAC,YAAM;IACd,IAAIrD,cAAc,KAAK,QAAQ,EAAE;IAEjC,IAAAsD,qBAAA,GAAwB,IAAAC,4CAAoC,EAAC,YAAM;QAEjEtC,cAAc,CAACuB,OAAO,GAAG,IAAI;QAC7B7B,YAAY,CAAC6B,OAAO,GAAGgB,SAAS;QAEhCJ,gBAAgB,CAACZ,OAAO,CAAC,CAAC;MAC5B,CAAC,CAAC;MANMiB,WAAW,GAAAH,qBAAA,CAAXG,WAAW;IAOnB,OAAOA,WAAW;EACpB,CAAC,EAAE,CAACzD,cAAc,CAAC,CAAC;EAEpB,IAAAqD,gBAAS,EAAC,YAAM;IACd,IAAMK,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;MACvB,IAAI1D,cAAc,EAAE;QAClBG,iBAAiB,CAACqD,SAAS,CAAC;QAC5B5D,WAAW,CAAC,CAAC;QACb,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd,CAAC;IAED,IAAM+D,WAAW,GAAGC,wBAAW,CAACC,gBAAgB,CAAC,mBAAmB,EAAEH,UAAU,CAAC;IAEjF,OAAO;MAAA,OAAMC,WAAW,CAACG,MAAM,CAAC,CAAC;IAAA;EACnC,CAAC,EAAE,CAAC9D,cAAc,EAAEJ,WAAW,CAAC,CAAC;EAEjC,IAAAyD,gBAAS,EAAC,YAAM;IACd,IAAMU,iBAAiB,GAAGC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,kBAAkB,GAAG,iBAAiB;IACxF,IAAMC,oBAAoB,GAAGC,qBAAQ,CAACC,WAAW,CAACL,iBAAiB,EAAEnE,WAAW,CAAC;IAEjF,OAAO,YAAM;MACX,IAAIsE,oBAAoB,YAApBA,oBAAoB,CAAEJ,MAAM,EAAE;QAChCI,oBAAoB,CAACJ,MAAM,CAAC,CAAC;QAC7B;MACF;MAGAK,qBAAQ,CAACE,cAAc,CAACN,iBAAiB,EAAEnE,WAAW,CAAC;IACzD,CAAC;EACH,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,IAAAyD,gBAAS,EAAC,YAAM;IACd,IAAI5C,YAAY,GAAG,CAAC,EAAE;MACpBN,iBAAiB,CAACqD,SAAS,CAAC;MAC5B,IAAI,CAACpC,aAAa,EAAE;QAClBT,YAAY,CAAC6B,OAAO,GAAGgB,SAAS;QAChCvC,cAAc,CAACuB,OAAO,GAAG,IAAI;QAC7Bd,8BAA8B,CAACc,OAAO,GAAG,KAAK;QAC9CxB,aAAa,CAAC,KAAK,CAAC;MACtB;IACF;EACF,CAAC,EAAE,CAACP,YAAY,EAAEW,aAAa,CAAC,CAAC;EAEjC,IAAAiC,gBAAS,EAAC,YAAM;IACd,IACE,CAAC3B,8BAA8B,CAACc,OAAO,IACvCxC,cAAc,KAAK,QAAQ,IAC3BW,YAAY,CAAC6B,OAAO,KAAKgB,SAAS,IAClC/C,YAAY,GAAG,CAAC,CAAC,IACjB,CAACW,aAAa,EACd;MACAO,aAAa,CAAC,CAAC;MAEfD,8BAA8B,CAACc,OAAO,GAAG,IAAI;IAC/C;EACF,CAAC,EAAE,CAAC/B,YAAY,EAAET,cAAc,EAAE2B,aAAa,EAAEP,aAAa,CAAC,CAAC;EAEhE,IAAMkD,cAAc,GAAG9C,MAAM,CAAC+C,GAAG,CAAC,UAACC,KAAK;IAAA,OAAM;MAC5CA,KAAK,EAALA,KAAK;MACL1F,6BAA6B,EAA7BA,6BAA6B;MAC7Be,gBAAgB,EAAhBA,gBAAgB;MAChBb,oCAAoC,EAApCA,oCAAoC;MACpCyF,eAAe,EAAE3E,aAAa,CAAC4E,MAAM,GAAG3E,cAAc,CAAC2E,MAAM;MAC7DC,QAAQ,EACN5E,cAAc,CAAC6E,IAAI,CAAC,UAACC,KAAK;QAAA,OAAKA,KAAK,CAACC,GAAG,KAAKN,KAAK,CAACM,GAAG;MAAA,EAAC,IACvDhF,aAAa,CAAC8E,IAAI,CAAC,UAACG,IAAI;QAAA,OAAKA,IAAI,CAACD,GAAG,KAAKN,KAAK,CAACM,GAAG;MAAA,EAAC;MACtD7E,gBAAgB,EAAhBA,gBAAgB;MAChBC,iBAAiB,EAAjBA;IACF,CAAC;EAAA,CAAC,CAAC;EAEH,IAAM8E,YAAY,GAAGxG,uCAAuC,IAAI,EAAE;EAQlE,IAAMyG,mCAAmC,GAAG,SAAtCA,mCAAmCA,CAAA,EAAiB;IACxD,IAAIjB,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAAA,IAAAiB,qBAAA;MAC7B,IAAMC,eAAe,IAAAD,qBAAA,GAAGE,sBAAS,CAACC,aAAa,YAAAH,qBAAA,GAAI,CAAC;MACpD,IAAMI,eAAe,GAAGvH,gBAAgB,GAAGF,YAAY,GAAGsH,eAAe;MACzE,IAAIG,eAAe,KAAKH,eAAe,EAAE;QACvC,OAAOlG,oBAAoB,GAAG,CAAC,GAAGkG,eAAe;MACnD,CAAC,MAAM;QACL,IAAIlG,oBAAoB,EAAE;UACxB,IAAIqG,eAAe,GAAGH,eAAe,EAAE;YACrC,OAAO,CAACG,eAAe,GAAGH,eAAe;UAC3C,CAAC,MAAM;YACL,OAAOG,eAAe,GAAG,CAAC,GAAG,CAACH,eAAe,GAAG,CAAC;UACnD;QACF,CAAC,MAAM;UACL,OAAOG,eAAe,GAAG,CAAC,GAAG,CAAC,GAAGH,eAAe;QAClD;MACF;IACF;IACA,OAAO,CAAC;EACV,CAAC;EAED,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAiB;IACxC,IAAI9G,iCAAiC,KAAK+E,SAAS,EAAE;MACnD,OAAO/E,iCAAiC;IAC1C;IACA,IAAIuF,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B,OACE,GAAG,IACFlG,gBAAgB,GAAGF,YAAY,GAAGoH,mCAAmC,CAAC,CAAC,CAAC,GACzED,YAAY;IAEhB,CAAC,MAAM;MACL,OAAO,GAAG,IAAIjH,gBAAgB,GAAGF,YAAY,CAAC;IAChD;EACF,CAAC;EAED,IAAM2H,gBAAgB,GAAGD,mBAAmB,CAAC,CAAC;EAE9C,IAAME,cAAc,GAClBzB,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrBlG,gBAAgB,GAAGqC,QAAQ,GAAG4E,YAAY,GAC1CjH,gBAAgB,GAAGqC,QAAQ;EAMjC,IAAMsF,UAAU,GAAG,IAAAC,cAAO,EACxB;IAAA,OAAM,CAACH,gBAAgB,EAAEC,cAAc,CAAC;EAAA,GACxC,CAACD,gBAAgB,EAAEC,cAAc,CACnC,CAAC;EAED,OACEzK,MAAA,YAAA4K,aAAA,CAAA5K,MAAA,YAAA6K,QAAA,QACE7K,MAAA,YAAA4K,aAAA,CAACxK,YAAA,WAAW;IACV0K,eAAe,EAAE/H,gBAAiB;IAClCgI,oBAAoB,EAAE,IAAK;IAC3BC,eAAe,EAKbjF,UAAU,GAAG,IAAI,GAAGxC,iCACrB;IACDyG,YAAY,EAAEA,YAAa;IAC3BiB,KAAK,EAAE,CAAC,CAAE;IACVC,QAAQ,EAAExF,eAAgB;IAC1BpC,GAAG,EAAEA,GAAI;IACToH,UAAU,EAAEA,UAAW;IAAAS,MAAA,EAAAtK,KAAA;IAAAuK,QAAA;MAAAC,QAAA,EAAAvK,YAAA;MAAAwK,UAAA;MAAAC,YAAA;IAAA;EAAA,GAEvBvL,MAAA,YAAA4K,aAAA,CAACxK,YAAA,CAAAoL,mBAAmB;IAClBC,qBAAqB,EAAE,CACrBjJ,MAAM,CAACG,SAAS,EAChB;MAAE+I,eAAe,EAAElH;IAAM,CAAC,EAC1BF,2BAA2B,EAC3B;MAAEqH,OAAO,EAAE5F,UAAU,GAAG,CAAC,GAAG;IAAE,CAAC,CAC/B;IACF6F,IAAI,EAAEtC,cAAe;IACrBuC,YAAY,EAAE,SAAAA,aAACC,IAAI;MAAA,OAAKA,IAAI,CAACtC,KAAK,CAACM,GAAG;IAAA,CAAC;IACvCiC,UAAU,EAAE/H,oCAAoC,WAApCA,oCAAoC,GAAI,CAAE;IACtDgI,YAAY,EAAEjG,UAAU,GAAGyC,SAAS,GAAG7B,aAAc;IACrDsF,UAAU,EAAEC,gDAA2B;IAAAf,MAAA,EAAAtK,KAAA;IAAAuK,QAAA;MAAAC,QAAA,EAAAvK,YAAA;MAAAwK,UAAA;MAAAC,YAAA;IAAA;EAAA,CACxC,CACU,CAAC,EACbvG,cAAc,KAAK,QAAQ,IAAIe,UAAU,IACxC/F,MAAA,YAAA4K,aAAA,CAAClH,qBAAqB;IACpBD,iCAAiC,EAAE+G,gBAAiB;IACpD7G,+BAA+B,EAAEA,+BAAgC;IACjEC,0BAA0B,EAAEA,0BAA2B;IACvDC,yBAAyB,EAAEA,yBAA0B;IAAAsH,MAAA,EAAAtK,KAAA;IAAAuK,QAAA;MAAAC,QAAA,EAAAvK,YAAA;MAAAwK,UAAA;MAAAC,YAAA;IAAA;EAAA,CACtD,CAEH,CAAC;AAEP,CACF,CAAC;AAACY,OAAA,CAAAjJ,gBAAA,GAAAA,gBAAA;AAEFA,gBAAgB,CAACkJ,WAAW,GAAG,kBAAkB"}
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
320
|
+
lineNumber: 209,
|
|
211
321
|
columnNumber: 13
|
|
212
322
|
}
|
|
213
323
|
}))));
|
|
214
324
|
};
|
|
215
|
-
var renderAttachmentPickerItem = function renderAttachmentPickerItem(
|
|
216
|
-
var 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:
|
|
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:
|
|
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":"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"}
|
|
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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"}
|