@kesha-antonov/react-native-chat 6.0.1 → 6.1.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 (179) hide show
  1. package/README.md +36 -4
  2. package/lib/Actions.d.ts.map +1 -1
  3. package/lib/Actions.js +33 -27
  4. package/lib/Actions.js.map +1 -1
  5. package/lib/Chat/Chat.d.ts.map +1 -1
  6. package/lib/Chat/Chat.js +253 -203
  7. package/lib/Chat/Chat.js.map +1 -1
  8. package/lib/Chat/ChatMessageList.d.ts.map +1 -1
  9. package/lib/Chat/ChatMessageList.js +4 -0
  10. package/lib/Chat/ChatMessageList.js.map +1 -1
  11. package/lib/Chat/index.d.ts +9 -1
  12. package/lib/Chat/index.d.ts.map +1 -1
  13. package/lib/Chat/index.js +14 -1
  14. package/lib/Chat/index.js.map +1 -1
  15. package/lib/Chat/types.d.ts +29 -0
  16. package/lib/Chat/types.d.ts.map +1 -1
  17. package/lib/Chat/types.js.map +1 -1
  18. package/lib/Chat/useMessageActions.d.ts +1 -0
  19. package/lib/Chat/useMessageActions.d.ts.map +1 -1
  20. package/lib/Chat/useMessageActions.js +97 -89
  21. package/lib/Chat/useMessageActions.js.map +1 -1
  22. package/lib/ChatHeader.d.ts +50 -0
  23. package/lib/ChatHeader.d.ts.map +1 -0
  24. package/lib/ChatHeader.js +356 -0
  25. package/lib/ChatHeader.js.map +1 -0
  26. package/lib/ChatList/ChatListCell.d.ts +1 -1
  27. package/lib/ChatList/ChatListCell.d.ts.map +1 -1
  28. package/lib/ChatList/ChatListCell.js +42 -11
  29. package/lib/ChatList/ChatListCell.js.map +1 -1
  30. package/lib/ChatList/index.js +332 -323
  31. package/lib/ChatList/index.js.map +1 -1
  32. package/lib/ChatList/types.d.ts +17 -1
  33. package/lib/ChatList/types.d.ts.map +1 -1
  34. package/lib/ChatList/types.js.map +1 -1
  35. package/lib/ChatList/utils.d.ts +4 -1
  36. package/lib/ChatList/utils.d.ts.map +1 -1
  37. package/lib/ChatList/utils.js +3 -2
  38. package/lib/ChatList/utils.js.map +1 -1
  39. package/lib/Composer.js +5 -1
  40. package/lib/Composer.js.map +1 -1
  41. package/lib/InputToolbar/fragments.d.ts +1 -1
  42. package/lib/InputToolbar/fragments.d.ts.map +1 -1
  43. package/lib/InputToolbar/fragments.js +9 -7
  44. package/lib/InputToolbar/fragments.js.map +1 -1
  45. package/lib/InputToolbar/index.d.ts.map +1 -1
  46. package/lib/InputToolbar/index.js +3 -2
  47. package/lib/InputToolbar/index.js.map +1 -1
  48. package/lib/InputToolbar/types.d.ts +6 -0
  49. package/lib/InputToolbar/types.d.ts.map +1 -1
  50. package/lib/InputToolbar/types.js.map +1 -1
  51. package/lib/InputToolbar/useActionsFragment.d.ts.map +1 -1
  52. package/lib/InputToolbar/useActionsFragment.js +83 -59
  53. package/lib/InputToolbar/useActionsFragment.js.map +1 -1
  54. package/lib/InputToolbar/useKeyboardInset.d.ts +1 -1
  55. package/lib/InputToolbar/useKeyboardInset.d.ts.map +1 -1
  56. package/lib/InputToolbar/useKeyboardInset.js +2 -2
  57. package/lib/InputToolbar/useKeyboardInset.js.map +1 -1
  58. package/lib/MessageText.d.ts.map +1 -1
  59. package/lib/MessageText.js +39 -33
  60. package/lib/MessageText.js.map +1 -1
  61. package/lib/MessagesContainer/index.d.ts.map +1 -1
  62. package/lib/MessagesContainer/index.js +113 -94
  63. package/lib/MessagesContainer/index.js.map +1 -1
  64. package/lib/MessagesContainer/types.d.ts +5 -2
  65. package/lib/MessagesContainer/types.d.ts.map +1 -1
  66. package/lib/MessagesContainer/types.js.map +1 -1
  67. package/lib/MessagesContainer/useChained.d.ts +6 -0
  68. package/lib/MessagesContainer/useChained.d.ts.map +1 -0
  69. package/lib/MessagesContainer/useChained.js +38 -0
  70. package/lib/MessagesContainer/useChained.js.map +1 -0
  71. package/lib/MessagesContainer/useListChrome.d.ts.map +1 -1
  72. package/lib/MessagesContainer/useListChrome.js +1 -1
  73. package/lib/MessagesContainer/useListChrome.js.map +1 -1
  74. package/lib/Models.d.ts +2 -1
  75. package/lib/Models.d.ts.map +1 -1
  76. package/lib/Models.js.map +1 -1
  77. package/lib/Send.d.ts.map +1 -1
  78. package/lib/Send.js +18 -13
  79. package/lib/Send.js.map +1 -1
  80. package/lib/Theme.d.ts +11 -0
  81. package/lib/Theme.d.ts.map +1 -1
  82. package/lib/Theme.js +17 -1
  83. package/lib/Theme.js.map +1 -1
  84. package/lib/attachments/AttachmentButton.js +17 -15
  85. package/lib/attachments/AttachmentButton.js.map +1 -1
  86. package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts +3 -1
  87. package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts.map +1 -1
  88. package/lib/attachments/AttachmentMenu/GalleryGrid.js +69 -68
  89. package/lib/attachments/AttachmentMenu/GalleryGrid.js.map +1 -1
  90. package/lib/attachments/AttachmentMenu/TabPanel.d.ts +3 -1
  91. package/lib/attachments/AttachmentMenu/TabPanel.d.ts.map +1 -1
  92. package/lib/attachments/AttachmentMenu/TabPanel.js +23 -21
  93. package/lib/attachments/AttachmentMenu/TabPanel.js.map +1 -1
  94. package/lib/attachments/AttachmentMenu/index.d.ts +6 -2
  95. package/lib/attachments/AttachmentMenu/index.d.ts.map +1 -1
  96. package/lib/attachments/AttachmentMenu/index.js +259 -247
  97. package/lib/attachments/AttachmentMenu/index.js.map +1 -1
  98. package/lib/attachments/buildMessages.d.ts +4 -4
  99. package/lib/attachments/buildMessages.d.ts.map +1 -1
  100. package/lib/attachments/buildMessages.js +9 -8
  101. package/lib/attachments/buildMessages.js.map +1 -1
  102. package/lib/attachments/types.d.ts +19 -0
  103. package/lib/attachments/types.d.ts.map +1 -1
  104. package/lib/attachments/types.js.map +1 -1
  105. package/lib/components/TouchableOpacity.d.ts +5 -0
  106. package/lib/components/TouchableOpacity.d.ts.map +1 -1
  107. package/lib/components/TouchableOpacity.js +59 -54
  108. package/lib/components/TouchableOpacity.js.map +1 -1
  109. package/lib/components/defaultMessageActions.d.ts +3 -1
  110. package/lib/components/defaultMessageActions.d.ts.map +1 -1
  111. package/lib/components/defaultMessageActions.js +9 -1
  112. package/lib/components/defaultMessageActions.js.map +1 -1
  113. package/lib/components/textHighlight.d.ts +14 -0
  114. package/lib/components/textHighlight.d.ts.map +1 -0
  115. package/lib/components/textHighlight.js +39 -0
  116. package/lib/components/textHighlight.js.map +1 -0
  117. package/lib/hooks/useKeyboardVerticalOffset.d.ts +6 -0
  118. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  119. package/lib/hooks/useKeyboardVerticalOffset.js +35 -13
  120. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  121. package/lib/i18n.d.ts +2 -0
  122. package/lib/i18n.d.ts.map +1 -1
  123. package/lib/i18n.js +1 -0
  124. package/lib/i18n.js.map +1 -1
  125. package/lib/index.d.ts +3 -1
  126. package/lib/index.d.ts.map +1 -1
  127. package/lib/index.js +1 -0
  128. package/lib/index.js.map +1 -1
  129. package/lib/linkParser.d.ts +4 -1
  130. package/lib/linkParser.d.ts.map +1 -1
  131. package/lib/linkParser.js +115 -78
  132. package/lib/linkParser.js.map +1 -1
  133. package/lib/locales/ar.d.ts.map +1 -1
  134. package/lib/locales/ar.js +1 -0
  135. package/lib/locales/ar.js.map +1 -1
  136. package/lib/locales/de.d.ts.map +1 -1
  137. package/lib/locales/de.js +1 -0
  138. package/lib/locales/de.js.map +1 -1
  139. package/lib/locales/es.d.ts.map +1 -1
  140. package/lib/locales/es.js +1 -0
  141. package/lib/locales/es.js.map +1 -1
  142. package/lib/locales/fr.d.ts.map +1 -1
  143. package/lib/locales/fr.js +1 -0
  144. package/lib/locales/fr.js.map +1 -1
  145. package/lib/locales/hi.d.ts.map +1 -1
  146. package/lib/locales/hi.js +1 -0
  147. package/lib/locales/hi.js.map +1 -1
  148. package/lib/locales/id.d.ts.map +1 -1
  149. package/lib/locales/id.js +1 -0
  150. package/lib/locales/id.js.map +1 -1
  151. package/lib/locales/it.d.ts.map +1 -1
  152. package/lib/locales/it.js +1 -0
  153. package/lib/locales/it.js.map +1 -1
  154. package/lib/locales/ja.d.ts.map +1 -1
  155. package/lib/locales/ja.js +1 -0
  156. package/lib/locales/ja.js.map +1 -1
  157. package/lib/locales/ko.d.ts.map +1 -1
  158. package/lib/locales/ko.js +1 -0
  159. package/lib/locales/ko.js.map +1 -1
  160. package/lib/locales/nl.d.ts.map +1 -1
  161. package/lib/locales/nl.js +1 -0
  162. package/lib/locales/nl.js.map +1 -1
  163. package/lib/locales/pl.d.ts.map +1 -1
  164. package/lib/locales/pl.js +1 -0
  165. package/lib/locales/pl.js.map +1 -1
  166. package/lib/locales/pt.d.ts.map +1 -1
  167. package/lib/locales/pt.js +1 -0
  168. package/lib/locales/pt.js.map +1 -1
  169. package/lib/locales/ru.d.ts.map +1 -1
  170. package/lib/locales/ru.js +1 -0
  171. package/lib/locales/ru.js.map +1 -1
  172. package/lib/locales/tr.d.ts.map +1 -1
  173. package/lib/locales/tr.js +1 -0
  174. package/lib/locales/tr.js.map +1 -1
  175. package/lib/locales/zh.d.ts.map +1 -1
  176. package/lib/locales/zh.js +1 -0
  177. package/lib/locales/zh.js.map +1 -1
  178. package/llms.txt +1 -1
  179. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","Modal","Pressable","StyleSheet","View","useWindowDimensions","useReanimatedKeyboardAnimation","Animated","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","withSpring","withTiming","useWindowInsets","useColorScheme","useThemedStyles","warning","hasMediaLibrary","getCurrentLocation","pickDocuments","pickFromSystemGallery","takePhoto","toPickedAttachment","useGallery","CaptionBar","CAPTION_SWAP_MS","CLOSE","COLUMNS","DECELERATE","GRID_GAP","HEADER","OPEN_FRACTION","PANEL_HEIGHT","REDUCE_MOTION","TAB_CONTENT_SHIFT","TAB_CONTENT_SPRING","TAB_MAX_WIDTH","TABS_ROW","GalleryGrid","createStyles","TabBar","TabPanel","useSheetPresence","AttachmentMenu","t0","$","_c","visible","tabs","onClose","onSend","styles","isDark","insets","width","screenWidth","height","screenHeight","t1","includes","hasGrid","t2","t3","tab","filter","contentTabs","initialTab","activeTab","setActiveTab","Symbol","for","selected","setSelected","caption","setCaption","location","setLocation","scrollY","gridMode","captionShown","contentShift","isMounted","close","sheetStyle","dimStyle","wasMounted","setWasMounted","length","isGridTab","gallery","isGridShown","status","assets","t4","t5","set","t6","t7","duration","easing","reduceMotion","t8","dismiss","t9","action","closeThen","t10","attachments","t11","withCaption","undefined","sendPicked","isPickingRef","picker","current","then","picked","catch","_temp","finally","runPicker","t12","fetchLocation","t13","tab_0","onTabPress","t14","t15","t16","picked_0","type","latitude","longitude","accuracy","sendLocation","t17","asset","previous","some","item_0","item","id","toggleAsset","t18","picks","text","Promise","all","map","attachments_0","_temp2","sendSelection","keyboard","fallbackKeyboard","keyboardHeight","spacer","Math","round","bottomArea","bottom","fixedTop","cellSize","floor","tabWidth","min","max","scrollHandler","event","contentOffset","y","backgroundStyle","gridTop","value","transform","translateY","contentStyle","t19","dim","absoluteFill","t20","t21","t22","t23","t24","background","t25","handle","t26","t27","loadMore","panel","top","t28","t29","t30","t31","t32","reason"],"sources":["../../../src/attachments/AttachmentMenu/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n Modal,\n Pressable,\n StyleSheet,\n View,\n useWindowDimensions,\n} from 'react-native'\nimport { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller'\nimport Animated, {\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n withTiming,\n} from 'react-native-reanimated'\n\nimport { useWindowInsets } from '../../components/windowInsets'\nimport { useColorScheme } from '../../hooks/useColorScheme'\nimport { useThemedStyles } from '../../hooks/useTheme'\nimport { warning } from '../../logging'\nimport { hasMediaLibrary } from '../../optional'\nimport { CurrentLocation, getCurrentLocation, pickDocuments, pickFromSystemGallery, takePhoto } from '../buildMessages'\nimport { GalleryAsset, toPickedAttachment, useGallery } from '../gallery'\nimport { AttachmentTab, PickedAttachment } from '../types'\nimport { CaptionBar } from './CaptionBar'\nimport {\n CAPTION_SWAP_MS,\n CLOSE,\n COLUMNS,\n DECELERATE,\n GRID_GAP,\n HEADER,\n OPEN_FRACTION,\n PANEL_HEIGHT,\n REDUCE_MOTION,\n TAB_CONTENT_SHIFT,\n TAB_CONTENT_SPRING,\n TAB_MAX_WIDTH,\n TABS_ROW,\n} from './constants'\nimport { GalleryGrid } from './GalleryGrid'\nimport { createStyles } from './styles'\nimport { TabBar } from './TabBar'\nimport { TabPanel } from './TabPanel'\nimport { useSheetPresence } from './useSheetPresence'\n\nexport interface AttachmentMenuProps {\n visible: boolean\n tabs: AttachmentTab[]\n onClose: () => void\n /** Called with the picks and the caption; the menu closes itself first. */\n onSend: (attachments: PickedAttachment[], caption: string) => void\n}\n\n/**\n * The attachment menu: a sheet with the newest photos (with `expo-media-library`)\n * over a floating pill of tabs. Picking photos numbers them and swaps the tabs for a caption and\n * a \"Send N\" button; File, Camera and (without the grid) Gallery hand over to the system pickers.\n */\nexport function AttachmentMenu ({ visible, tabs, onClose, onSend }: AttachmentMenuProps) {\n const styles = useThemedStyles(createStyles)\n const isDark = useColorScheme() === 'dark'\n const insets = useWindowInsets()\n const { width: screenWidth, height: screenHeight } = useWindowDimensions()\n\n const hasGrid = tabs.includes('gallery') && hasMediaLibrary()\n const contentTabs = useMemo(() => tabs.filter(tab => (tab === 'gallery' && hasGrid) || tab === 'location' || tab === 'gallery'), [tabs, hasGrid])\n const initialTab: AttachmentTab = contentTabs[0] ?? tabs[0] ?? 'gallery'\n const [activeTab, setActiveTab] = useState<AttachmentTab>(initialTab)\n const [selected, setSelected] = useState<GalleryAsset[]>([])\n const [caption, setCaption] = useState('')\n const [location, setLocation] = useState<CurrentLocation | 'locating' | null>(null)\n\n const scrollY = useSharedValue(0)\n const gridMode = useSharedValue(1)\n const captionShown = useSharedValue(0)\n const contentShift = useSharedValue(0)\n\n const { isMounted, close, sheetStyle, dimStyle } = useSheetPresence(visible, screenHeight)\n\n // Every open starts fresh.\n const [wasMounted, setWasMounted] = useState(false)\n if (isMounted !== wasMounted) {\n setWasMounted(isMounted)\n if (isMounted) {\n if (activeTab !== initialTab)\n setActiveTab(initialTab)\n if (selected.length)\n setSelected([])\n if (caption)\n setCaption('')\n }\n }\n\n const isGridTab = activeTab === 'gallery' && hasGrid\n const gallery = useGallery(isMounted && isGridTab)\n const isGridShown = isGridTab && gallery.status !== 'denied' && gallery.status !== 'unavailable' &&\n !(gallery.status === 'ready' && gallery.assets.length === 0)\n\n useEffect(() => {\n gridMode.set(withTiming(isGridShown ? 1 : 0, CLOSE))\n }, [isGridShown, gridMode])\n useEffect(() => {\n captionShown.set(withTiming(selected.length > 0 ? 1 : 0, { duration: CAPTION_SWAP_MS, easing: DECELERATE, reduceMotion: REDUCE_MOTION }))\n }, [selected.length, captionShown])\n\n const dismiss = useCallback(() => close(onClose), [close, onClose])\n // Closes the sheet, then runs `action` (a system picker must not present over the sheet).\n const closeThen = useCallback((action: () => void) => {\n close(() => {\n onClose()\n action()\n })\n }, [close, onClose])\n\n const sendPicked = useCallback((attachments: PickedAttachment[], withCaption = '') => {\n if (attachments.length)\n onSend(attachments, withCaption)\n }, [onSend])\n\n // The system picker opens over the sheet, and the sheet closes only once something was\n // picked. Closing first unmounted the sheet's Modal in the same tick as the picker was\n // presented, and iOS refuses to present while a controller is being dismissed - so the File\n // tab just closed the sheet. Cancelling the picker also leaves the sheet open.\n const isPickingRef = useRef(false)\n const runPicker = useCallback((picker: () => Promise<PickedAttachment[]>) => {\n if (isPickingRef.current)\n return\n\n isPickingRef.current = true\n picker()\n .then(picked => {\n if (picked.length)\n closeThen(() => sendPicked(picked))\n })\n .catch(reason => warning('The attachment picker failed:', reason))\n .finally(() => {\n isPickingRef.current = false\n })\n }, [closeThen, sendPicked])\n\n const fetchLocation = useCallback(() => {\n setLocation('locating')\n getCurrentLocation().then(setLocation).catch(() => setLocation({ status: 'failed' }))\n }, [])\n\n const onTabPress = useCallback((tab: AttachmentTab) => {\n if (tab === 'file')\n return runPicker(pickDocuments)\n if (tab === 'camera')\n return runPicker(takePhoto)\n if (tab === 'gallery' && !hasGrid && activeTab === 'gallery')\n return runPicker(pickFromSystemGallery)\n if (tab === activeTab)\n return\n setActiveTab(tab)\n contentShift.set(TAB_CONTENT_SHIFT)\n contentShift.set(withSpring(0, TAB_CONTENT_SPRING))\n if (tab === 'location' && (location == null || (typeof location === 'object' && location.status !== 'located')))\n fetchLocation()\n }, [runPicker, hasGrid, activeTab, contentShift, location, fetchLocation])\n\n // The location tab finds the position as soon as it opens.\n useEffect(() => {\n if (isMounted && activeTab === 'location' && location == null)\n fetchLocation()\n }, [isMounted, activeTab, location, fetchLocation])\n\n const sendLocation = useCallback(() => {\n if (location && typeof location === 'object' && location.status === 'located') {\n const picked: PickedAttachment = { type: 'location', latitude: location.latitude, longitude: location.longitude, accuracy: location.accuracy }\n closeThen(() => sendPicked([picked]))\n return\n }\n if (location !== 'locating')\n fetchLocation()\n }, [location, closeThen, sendPicked, fetchLocation])\n\n const toggleAsset = useCallback((asset: GalleryAsset) => {\n setSelected(previous => previous.some(item => item.id === asset.id)\n ? previous.filter(item => item.id !== asset.id)\n : [...previous, asset])\n }, [])\n\n const sendSelection = useCallback(() => {\n const picks = selected\n const text = caption\n closeThen(() => {\n Promise.all(picks.map(toPickedAttachment))\n .then(attachments => sendPicked(attachments, text))\n .catch(() => {})\n })\n }, [selected, caption, closeThen, sendPicked])\n\n const keyboard = useReanimatedKeyboardAnimation()\n const fallbackKeyboard = useSharedValue(0)\n const keyboardHeight = keyboard?.height ?? fallbackKeyboard\n\n // Geometry.\n const spacer = Math.round(screenHeight * OPEN_FRACTION)\n const bottomArea = TABS_ROW + insets.bottom\n const fixedTop = screenHeight - bottomArea - PANEL_HEIGHT - HEADER\n const cellSize = Math.floor((screenWidth - GRID_GAP * 2 - GRID_GAP * (COLUMNS - 1)) / COLUMNS)\n const tabWidth = Math.min(TAB_MAX_WIDTH, Math.floor((screenWidth - 40) / Math.min(4.5, Math.max(1, tabs.length))))\n\n const scrollHandler = useAnimatedScrollHandler(event => {\n scrollY.set(event.contentOffset.y)\n })\n\n const backgroundStyle = useAnimatedStyle(() => {\n const gridTop = Math.max(0, spacer - scrollY.value)\n return { transform: [{ translateY: gridTop * gridMode.value + fixedTop * (1 - gridMode.value) }] }\n })\n const contentStyle = useAnimatedStyle(() => ({ transform: [{ translateY: contentShift.value }] }))\n\n if (!isMounted)\n return null\n\n return (\n <Modal transparent visible animationType='none' onRequestClose={dismiss} statusBarTranslucent>\n <Animated.View style={[StyleSheet.absoluteFill, styles.dim, dimStyle]} pointerEvents='none' />\n <Animated.View style={[StyleSheet.absoluteFill, sheetStyle]}>\n <Pressable style={StyleSheet.absoluteFill} onPress={dismiss} accessibilityLabel='dismiss' />\n <Animated.View style={[styles.background, { height: screenHeight + 100 }, backgroundStyle]} pointerEvents='none'>\n <View style={styles.handle} />\n </Animated.View>\n\n {isGridShown\n ? (\n <Animated.View style={[StyleSheet.absoluteFill, contentStyle]} pointerEvents='box-none'>\n <GalleryGrid\n assets={gallery.assets}\n selected={selected}\n cellSize={cellSize}\n spacer={spacer}\n bottomArea={bottomArea}\n onScroll={scrollHandler}\n onEndReached={gallery.loadMore}\n onDismiss={dismiss}\n onToggle={toggleAsset}\n runPicker={runPicker}\n />\n </Animated.View>\n )\n : (\n <Animated.View style={[styles.panel, { top: fixedTop + HEADER, height: PANEL_HEIGHT }, contentStyle]}>\n <TabPanel\n activeTab={activeTab}\n location={location}\n onSendLocation={sendLocation}\n hasGrid={hasGrid}\n galleryStatus={gallery.status}\n runPicker={runPicker}\n />\n </Animated.View>\n )}\n\n <TabBar\n tabs={tabs}\n activeTab={activeTab}\n tabWidth={tabWidth}\n bottomInset={insets.bottom}\n hasSelection={selected.length > 0}\n captionShown={captionShown}\n onTabPress={onTabPress}\n />\n\n {selected.length > 0 && (\n <CaptionBar\n count={selected.length}\n caption={caption}\n onChangeCaption={setCaption}\n onSend={sendSelection}\n captionShown={captionShown}\n keyboardHeight={keyboardHeight}\n bottomInset={insets.bottom}\n isDark={isDark}\n />\n )}\n </Animated.View>\n </Modal>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","Modal","Pressable","StyleSheet","View","useWindowDimensions","useReanimatedKeyboardAnimation","Animated","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","withSpring","withTiming","useWindowInsets","useColorScheme","useThemedStyles","warning","hasImagePickerCamera","hasMediaLibrary","getCurrentLocation","pickDocuments","pickFromSystemGallery","takePhoto","toPickedAttachment","useGallery","CaptionBar","CAPTION_SWAP_MS","CLOSE","COLUMNS","DECELERATE","GRID_GAP","HEADER","OPEN_FRACTION","PANEL_HEIGHT","REDUCE_MOTION","TAB_CONTENT_SHIFT","TAB_CONTENT_SPRING","TAB_MAX_WIDTH","TABS_ROW","GalleryGrid","createStyles","TabBar","TabPanel","useSheetPresence","AttachmentMenu","t0","$","_c","visible","tabs","onClose","onSend","pickers","isGalleryGridEnabled","t1","undefined","pickFile","file","pickCamera","camera","pickGallery","gallery","styles","isDark","insets","width","screenWidth","height","screenHeight","t2","includes","hasGrid","t3","t4","tab","filter","contentTabs","initialTab","activeTab","setActiveTab","Symbol","for","selected","setSelected","caption","setCaption","location","setLocation","scrollY","gridMode","captionShown","contentShift","isMounted","close","sheetStyle","dimStyle","wasMounted","setWasMounted","length","isGridTab","isGridShown","status","assets","t5","t6","set","t7","t8","duration","easing","reduceMotion","t9","dismiss","t10","action","closeThen","t11","attachments","t12","withCaption","sendPicked","isPickingRef","picker","current","then","picked","catch","_temp","finally","runPicker","t13","fetchLocation","t14","tab_0","onTabPress","t15","t16","t17","picked_0","type","latitude","longitude","accuracy","sendLocation","t18","asset","previous","some","item_0","item","id","toggleAsset","t19","picks","text","Promise","all","map","attachments_0","_temp2","sendSelection","keyboard","fallbackKeyboard","keyboardHeight","spacer","Math","round","bottomArea","bottom","fixedTop","cellSize","floor","tabWidth","min","max","scrollHandler","event","contentOffset","y","backgroundStyle","gridTop","value","transform","translateY","contentStyle","t20","dim","absoluteFill","t21","t22","t23","t24","t25","background","t26","handle","t27","t28","loadMore","panel","top","t29","t30","t31","t32","t33","reason"],"sources":["../../../src/attachments/AttachmentMenu/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport {\n Modal,\n Pressable,\n StyleSheet,\n View,\n useWindowDimensions,\n} from 'react-native'\nimport { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller'\nimport Animated, {\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useSharedValue,\n withSpring,\n withTiming,\n} from 'react-native-reanimated'\n\nimport { useWindowInsets } from '../../components/windowInsets'\nimport { useColorScheme } from '../../hooks/useColorScheme'\nimport { useThemedStyles } from '../../hooks/useTheme'\nimport { warning } from '../../logging'\nimport { hasImagePickerCamera, hasMediaLibrary } from '../../optional'\nimport { CurrentLocation, getCurrentLocation, pickDocuments, pickFromSystemGallery, takePhoto } from '../buildMessages'\nimport { GalleryAsset, toPickedAttachment, useGallery } from '../gallery'\nimport { AttachmentPickers, AttachmentTab, PickedAttachment } from '../types'\nimport { CaptionBar } from './CaptionBar'\nimport {\n CAPTION_SWAP_MS,\n CLOSE,\n COLUMNS,\n DECELERATE,\n GRID_GAP,\n HEADER,\n OPEN_FRACTION,\n PANEL_HEIGHT,\n REDUCE_MOTION,\n TAB_CONTENT_SHIFT,\n TAB_CONTENT_SPRING,\n TAB_MAX_WIDTH,\n TABS_ROW,\n} from './constants'\nimport { GalleryGrid } from './GalleryGrid'\nimport { createStyles } from './styles'\nimport { TabBar } from './TabBar'\nimport { TabPanel } from './TabPanel'\nimport { useSheetPresence } from './useSheetPresence'\n\nexport interface AttachmentMenuProps {\n visible: boolean\n tabs: AttachmentTab[]\n onClose: () => void\n /** Called with the picks and the caption; the menu closes itself first. */\n onSend: (attachments: PickedAttachment[], caption: string) => void\n /** The app's own pickers, used instead of the Expo ones. */\n pickers?: AttachmentPickers\n /** `false` leaves the Gallery tab to the system picker instead of the in-sheet grid. */\n isGalleryGridEnabled?: boolean\n}\n\n/**\n * The attachment menu: a sheet with the newest photos (with `expo-media-library`)\n * over a floating pill of tabs. Picking photos numbers them and swaps the tabs for a caption and\n * a \"Send N\" button; File, Camera and (without the grid) Gallery hand over to the system pickers.\n */\nexport function AttachmentMenu ({ visible, tabs, onClose, onSend, pickers, isGalleryGridEnabled = true }: AttachmentMenuProps) {\n const pickFile = pickers?.file ?? pickDocuments\n const pickCamera = pickers?.camera ?? (hasImagePickerCamera() ? takePhoto : undefined)\n const pickGallery = pickers?.gallery ?? pickFromSystemGallery\n const styles = useThemedStyles(createStyles)\n const isDark = useColorScheme() === 'dark'\n const insets = useWindowInsets()\n const { width: screenWidth, height: screenHeight } = useWindowDimensions()\n\n const hasGrid = isGalleryGridEnabled && tabs.includes('gallery') && hasMediaLibrary()\n const contentTabs = useMemo(() => tabs.filter(tab => (tab === 'gallery' && hasGrid) || tab === 'location' || tab === 'gallery'), [tabs, hasGrid])\n const initialTab: AttachmentTab = contentTabs[0] ?? tabs[0] ?? 'gallery'\n const [activeTab, setActiveTab] = useState<AttachmentTab>(initialTab)\n const [selected, setSelected] = useState<GalleryAsset[]>([])\n const [caption, setCaption] = useState('')\n const [location, setLocation] = useState<CurrentLocation | 'locating' | null>(null)\n\n const scrollY = useSharedValue(0)\n const gridMode = useSharedValue(1)\n const captionShown = useSharedValue(0)\n const contentShift = useSharedValue(0)\n\n const { isMounted, close, sheetStyle, dimStyle } = useSheetPresence(visible, screenHeight)\n\n // Every open starts fresh.\n const [wasMounted, setWasMounted] = useState(false)\n if (isMounted !== wasMounted) {\n setWasMounted(isMounted)\n if (isMounted) {\n if (activeTab !== initialTab)\n setActiveTab(initialTab)\n if (selected.length)\n setSelected([])\n if (caption)\n setCaption('')\n }\n }\n\n const isGridTab = activeTab === 'gallery' && hasGrid\n const gallery = useGallery(isMounted && isGridTab)\n const isGridShown = isGridTab && gallery.status !== 'denied' && gallery.status !== 'unavailable' &&\n !(gallery.status === 'ready' && gallery.assets.length === 0)\n\n useEffect(() => {\n gridMode.set(withTiming(isGridShown ? 1 : 0, CLOSE))\n }, [isGridShown, gridMode])\n useEffect(() => {\n captionShown.set(withTiming(selected.length > 0 ? 1 : 0, { duration: CAPTION_SWAP_MS, easing: DECELERATE, reduceMotion: REDUCE_MOTION }))\n }, [selected.length, captionShown])\n\n const dismiss = useCallback(() => close(onClose), [close, onClose])\n // Closes the sheet, then runs `action` (a system picker must not present over the sheet).\n const closeThen = useCallback((action: () => void) => {\n close(() => {\n onClose()\n action()\n })\n }, [close, onClose])\n\n const sendPicked = useCallback((attachments: PickedAttachment[], withCaption = '') => {\n if (attachments.length)\n onSend(attachments, withCaption)\n }, [onSend])\n\n // The system picker opens over the sheet, and the sheet closes only once something was\n // picked. Closing first unmounted the sheet's Modal in the same tick as the picker was\n // presented, and iOS refuses to present while a controller is being dismissed - so the File\n // tab just closed the sheet. Cancelling the picker also leaves the sheet open.\n const isPickingRef = useRef(false)\n const runPicker = useCallback((picker: () => Promise<PickedAttachment[]>) => {\n if (isPickingRef.current)\n return\n\n isPickingRef.current = true\n picker()\n .then(picked => {\n if (picked.length)\n closeThen(() => sendPicked(picked))\n })\n .catch(reason => warning('The attachment picker failed:', reason))\n .finally(() => {\n isPickingRef.current = false\n })\n }, [closeThen, sendPicked])\n\n const fetchLocation = useCallback(() => {\n setLocation('locating')\n getCurrentLocation().then(setLocation).catch(() => setLocation({ status: 'failed' }))\n }, [])\n\n const onTabPress = useCallback((tab: AttachmentTab) => {\n if (tab === 'file')\n return runPicker(pickFile)\n if (tab === 'camera')\n return runPicker(pickCamera ?? takePhoto)\n if (tab === 'gallery' && !hasGrid && activeTab === 'gallery')\n return runPicker(pickGallery)\n if (tab === activeTab)\n return\n setActiveTab(tab)\n contentShift.set(TAB_CONTENT_SHIFT)\n contentShift.set(withSpring(0, TAB_CONTENT_SPRING))\n if (tab === 'location' && (location == null || (typeof location === 'object' && location.status !== 'located')))\n fetchLocation()\n }, [runPicker, pickFile, pickCamera, pickGallery, hasGrid, activeTab, contentShift, location, fetchLocation])\n\n // The location tab finds the position as soon as it opens.\n useEffect(() => {\n if (isMounted && activeTab === 'location' && location == null)\n fetchLocation()\n }, [isMounted, activeTab, location, fetchLocation])\n\n const sendLocation = useCallback(() => {\n if (location && typeof location === 'object' && location.status === 'located') {\n const picked: PickedAttachment = { type: 'location', latitude: location.latitude, longitude: location.longitude, accuracy: location.accuracy }\n closeThen(() => sendPicked([picked]))\n return\n }\n if (location !== 'locating')\n fetchLocation()\n }, [location, closeThen, sendPicked, fetchLocation])\n\n const toggleAsset = useCallback((asset: GalleryAsset) => {\n setSelected(previous => previous.some(item => item.id === asset.id)\n ? previous.filter(item => item.id !== asset.id)\n : [...previous, asset])\n }, [])\n\n const sendSelection = useCallback(() => {\n const picks = selected\n const text = caption\n closeThen(() => {\n Promise.all(picks.map(toPickedAttachment))\n .then(attachments => sendPicked(attachments, text))\n .catch(() => {})\n })\n }, [selected, caption, closeThen, sendPicked])\n\n const keyboard = useReanimatedKeyboardAnimation()\n const fallbackKeyboard = useSharedValue(0)\n const keyboardHeight = keyboard?.height ?? fallbackKeyboard\n\n // Geometry.\n const spacer = Math.round(screenHeight * OPEN_FRACTION)\n const bottomArea = TABS_ROW + insets.bottom\n const fixedTop = screenHeight - bottomArea - PANEL_HEIGHT - HEADER\n const cellSize = Math.floor((screenWidth - GRID_GAP * 2 - GRID_GAP * (COLUMNS - 1)) / COLUMNS)\n const tabWidth = Math.min(TAB_MAX_WIDTH, Math.floor((screenWidth - 40) / Math.min(4.5, Math.max(1, tabs.length))))\n\n const scrollHandler = useAnimatedScrollHandler(event => {\n scrollY.set(event.contentOffset.y)\n })\n\n const backgroundStyle = useAnimatedStyle(() => {\n const gridTop = Math.max(0, spacer - scrollY.value)\n return { transform: [{ translateY: gridTop * gridMode.value + fixedTop * (1 - gridMode.value) }] }\n })\n const contentStyle = useAnimatedStyle(() => ({ transform: [{ translateY: contentShift.value }] }))\n\n if (!isMounted)\n return null\n\n return (\n <Modal transparent visible animationType='none' onRequestClose={dismiss} statusBarTranslucent>\n <Animated.View style={[StyleSheet.absoluteFill, styles.dim, dimStyle]} pointerEvents='none' />\n <Animated.View style={[StyleSheet.absoluteFill, sheetStyle]}>\n <Pressable style={StyleSheet.absoluteFill} onPress={dismiss} accessibilityLabel='dismiss' />\n <Animated.View style={[styles.background, { height: screenHeight + 100 }, backgroundStyle]} pointerEvents='none'>\n <View style={styles.handle} />\n </Animated.View>\n\n {isGridShown\n ? (\n <Animated.View style={[StyleSheet.absoluteFill, contentStyle]} pointerEvents='box-none'>\n <GalleryGrid\n assets={gallery.assets}\n selected={selected}\n cellSize={cellSize}\n spacer={spacer}\n bottomArea={bottomArea}\n onScroll={scrollHandler}\n onEndReached={gallery.loadMore}\n onDismiss={dismiss}\n onToggle={toggleAsset}\n runPicker={runPicker}\n pickCamera={pickCamera}\n />\n </Animated.View>\n )\n : (\n <Animated.View style={[styles.panel, { top: fixedTop + HEADER, height: PANEL_HEIGHT }, contentStyle]}>\n <TabPanel\n activeTab={activeTab}\n location={location}\n onSendLocation={sendLocation}\n hasGrid={hasGrid}\n galleryStatus={gallery.status}\n runPicker={runPicker}\n pickGallery={pickers?.gallery}\n />\n </Animated.View>\n )}\n\n <TabBar\n tabs={tabs}\n activeTab={activeTab}\n tabWidth={tabWidth}\n bottomInset={insets.bottom}\n hasSelection={selected.length > 0}\n captionShown={captionShown}\n onTabPress={onTabPress}\n />\n\n {selected.length > 0 && (\n <CaptionBar\n count={selected.length}\n caption={caption}\n onChangeCaption={setCaption}\n onSend={sendSelection}\n captionShown={captionShown}\n keyboardHeight={keyboardHeight}\n bottomInset={insets.bottom}\n isDark={isDark}\n />\n )}\n </Animated.View>\n </Modal>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { IMessage } from '../Models';
2
- import { AttachmentTab, AttachmentsProps, PickedAttachment } from './types';
2
+ import { AttachmentPickers, AttachmentTab, AttachmentsProps, PickedAttachment } from './types';
3
3
  /**
4
4
  * The messages the built-in menu sends: one per image, video and file (there are no albums
5
5
  * yet), one per location, with the caption as the first pick's text. Returned newest first,
@@ -8,13 +8,13 @@ import { AttachmentTab, AttachmentsProps, PickedAttachment } from './types';
8
8
  export declare function buildAttachmentMessages<TMessage extends IMessage = IMessage>(attachments: PickedAttachment[], caption?: string): Partial<TMessage>[];
9
9
  /** Runs `onPick` (if any) and resolves the messages to send. */
10
10
  export declare function resolveAttachmentMessages<TMessage extends IMessage = IMessage>(attachments: PickedAttachment[], caption: string, onPick?: AttachmentsProps<TMessage>['onPick']): Promise<Partial<TMessage>[]>;
11
- /** Whether a tab can work with the installed peers. */
12
- export declare const isAttachmentTabAvailable: (tab: AttachmentTab) => boolean;
11
+ /** Whether a tab can work with the installed peers or a picker the app gave. */
12
+ export declare const isAttachmentTabAvailable: (tab: AttachmentTab, pickers?: Partial<Record<keyof AttachmentPickers, unknown>>, isGalleryGridEnabled?: boolean) => boolean;
13
13
  /**
14
14
  * The tabs to show: the requested ones (or Gallery, File, Location) that have their
15
15
  * peer. Camera gets a tab of its own only when there is no in-sheet grid to hold its tile.
16
16
  */
17
- export declare const getAttachmentTabs: (requested?: AttachmentTab[]) => AttachmentTab[];
17
+ export declare const getAttachmentTabs: (requested?: AttachmentTab[], pickers?: Partial<Record<keyof AttachmentPickers, unknown>>, isGalleryGridEnabled?: boolean) => AttachmentTab[];
18
18
  /** The system photo picker (`expo-image-picker`), several at once. */
19
19
  export declare function pickFromSystemGallery(): Promise<PickedAttachment[]>;
20
20
  /** The system camera (`expo-image-picker`). Throws on a device without one (the simulator). */
@@ -1 +1 @@
1
- {"version":3,"file":"buildMessages.d.ts","sourceRoot":"","sources":["../../src/attachments/buildMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAWpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE3E;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC1E,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,SAAK,GACX,OAAO,CAAC,QAAQ,CAAC,EAAE,CAyBrB;AAED,gEAAgE;AAChE,wBAAsB,yBAAyB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAClF,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAC5C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAW9B;AAID,uDAAuD;AACvD,eAAO,MAAM,wBAAwB,GAAI,KAAK,aAAa,KAAG,OAY7D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,YAAY,aAAa,EAAE,KAAG,aAAa,EAG5E,CAAA;AA2BD,sEAAsE;AACtE,wBAAsB,qBAAqB,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW1E;AAED,+FAA+F;AAC/F,wBAAsB,SAAS,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS9D;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAclE;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAA;AAIxB,2EAA2E;AAC3E,wBAAsB,kBAAkB,IAAK,OAAO,CAAC,eAAe,CAAC,CA0BpE"}
1
+ {"version":3,"file":"buildMessages.d.ts","sourceRoot":"","sources":["../../src/attachments/buildMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAWpC,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE9F;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC1E,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,SAAK,GACX,OAAO,CAAC,QAAQ,CAAC,EAAE,CAyBrB;AAED,gEAAgE;AAChE,wBAAsB,yBAAyB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAClF,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAC5C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAW9B;AAID,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,GACnC,KAAK,aAAa,EAClB,UAAU,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,OAAO,CAAC,CAAC,EAC3D,8BAA2B,KAC1B,OAYF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,aAAa,EAAE,EAC3B,UAAU,OAAO,CAAC,MAAM,CAAC,MAAM,iBAAiB,EAAE,OAAO,CAAC,CAAC,EAC3D,8BAA2B,KAC1B,aAAa,EAIf,CAAA;AA2BD,sEAAsE;AACtE,wBAAsB,qBAAqB,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW1E;AAED,+FAA+F;AAC/F,wBAAsB,SAAS,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS9D;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAclE;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAA;AAIxB,2EAA2E;AAC3E,wBAAsB,kBAAkB,IAAK,OAAO,CAAC,eAAe,CAAC,CA0BpE"}
@@ -66,15 +66,15 @@ export async function resolveAttachmentMessages(attachments, caption, onPick) {
66
66
  }
67
67
  const DEFAULT_ORDER = ['gallery', 'camera', 'file', 'location'];
68
68
 
69
- /** Whether a tab can work with the installed peers. */
70
- export const isAttachmentTabAvailable = tab => {
69
+ /** Whether a tab can work with the installed peers or a picker the app gave. */
70
+ export const isAttachmentTabAvailable = (tab, pickers, isGalleryGridEnabled = true) => {
71
71
  switch (tab) {
72
72
  case 'gallery':
73
- return hasMediaLibrary() || hasImagePicker();
73
+ return isGalleryGridEnabled && hasMediaLibrary() || hasImagePicker() || !!pickers?.gallery;
74
74
  case 'camera':
75
- return hasImagePickerCamera();
75
+ return hasImagePickerCamera() || !!pickers?.camera;
76
76
  case 'file':
77
- return hasDocumentPicker();
77
+ return hasDocumentPicker() || !!pickers?.file;
78
78
  case 'location':
79
79
  return hasLocation();
80
80
  }
@@ -85,9 +85,10 @@ export const isAttachmentTabAvailable = tab => {
85
85
  * The tabs to show: the requested ones (or Gallery, File, Location) that have their
86
86
  * peer. Camera gets a tab of its own only when there is no in-sheet grid to hold its tile.
87
87
  */
88
- export const getAttachmentTabs = requested => {
89
- const tabs = requested ?? DEFAULT_ORDER.filter(tab => tab !== 'camera' || !hasMediaLibrary());
90
- return tabs.filter((tab, index) => tabs.indexOf(tab) === index && isAttachmentTabAvailable(tab));
88
+ export const getAttachmentTabs = (requested, pickers, isGalleryGridEnabled = true) => {
89
+ const hasGrid = isGalleryGridEnabled && hasMediaLibrary();
90
+ const tabs = requested ?? DEFAULT_ORDER.filter(tab => tab !== 'camera' || !hasGrid);
91
+ return tabs.filter((tab, index) => tabs.indexOf(tab) === index && isAttachmentTabAvailable(tab, pickers, isGalleryGridEnabled));
91
92
  };
92
93
 
93
94
  /* ------------------------------------------------------------------------------------------ */
@@ -1 +1 @@
1
- {"version":3,"file":"buildMessages.js","names":["getExpoDocumentPicker","getExpoImagePicker","getExpoLocation","hasDocumentPicker","hasImagePicker","hasImagePickerCamera","hasLocation","hasMediaLibrary","buildAttachmentMessages","attachments","caption","text","trim","messages","map","attachment","index","base","type","image","uri","video","duration","file","name","size","mimeType","location","latitude","longitude","reverse","resolveAttachmentMessages","onPick","length","result","Array","isArray","DEFAULT_ORDER","isAttachmentTabAvailable","tab","getAttachmentTabs","requested","tabs","filter","indexOf","fromImagePickerAssets","assets","asset","width","height","undefined","fileName","pickFromSystemGallery","picker","launchImageLibraryAsync","mediaTypes","allowsMultipleSelection","selectionLimit","quality","canceled","takePhoto","launchCameraAsync","permission","requestCameraPermissionsAsync","granted","pickDocuments","getDocumentAsync","multiple","copyToCacheDirectory","split","pop","LOCATION_TIMEOUT_MS","getCurrentLocation","getCurrentPositionAsync","status","requestForegroundPermissionsAsync","timeout","Promise","resolve","setTimeout","position","race","accuracy","Accuracy","Balanced","getLastKnownPositionAsync","coords"],"sources":["../../src/attachments/buildMessages.ts"],"sourcesContent":["import { IMessage } from '../Models'\nimport {\n getExpoDocumentPicker,\n getExpoImagePicker,\n getExpoLocation,\n hasDocumentPicker,\n hasImagePicker,\n hasImagePickerCamera,\n hasLocation,\n hasMediaLibrary,\n} from '../optional'\nimport { AttachmentTab, AttachmentsProps, PickedAttachment } from './types'\n\n/**\n * The messages the built-in menu sends: one per image, video and file (there are no albums\n * yet), one per location, with the caption as the first pick's text. Returned newest first,\n * the order `onSend` and `Chat.append` use, so the picks read top to bottom in pick order.\n */\nexport function buildAttachmentMessages<TMessage extends IMessage = IMessage> (\n attachments: PickedAttachment[],\n caption = ''\n): Partial<TMessage>[] {\n const text = caption.trim()\n const messages = attachments.map((attachment, index) => {\n const base = { text: index === 0 ? text : '' } as Partial<TMessage>\n switch (attachment.type) {\n case 'image':\n return { ...base, image: attachment.uri }\n case 'video':\n return { ...base, video: attachment.uri, ...(attachment.duration ? { duration: attachment.duration } : null) }\n case 'file':\n return {\n ...base,\n file: {\n uri: attachment.uri,\n name: attachment.name,\n ...(attachment.size != null ? { size: attachment.size } : null),\n ...(attachment.mimeType ? { mimeType: attachment.mimeType } : null),\n },\n }\n case 'location':\n return { ...base, location: { latitude: attachment.latitude, longitude: attachment.longitude } }\n }\n return base\n })\n return messages.reverse()\n}\n\n/** Runs `onPick` (if any) and resolves the messages to send. */\nexport async function resolveAttachmentMessages<TMessage extends IMessage = IMessage> (\n attachments: PickedAttachment[],\n caption: string,\n onPick?: AttachmentsProps<TMessage>['onPick']\n): Promise<Partial<TMessage>[]> {\n if (attachments.length === 0)\n return []\n if (onPick) {\n const result = await onPick(attachments, { caption })\n if (result === null)\n return []\n if (Array.isArray(result))\n return result\n }\n return buildAttachmentMessages<TMessage>(attachments, caption)\n}\n\nconst DEFAULT_ORDER: AttachmentTab[] = ['gallery', 'camera', 'file', 'location']\n\n/** Whether a tab can work with the installed peers. */\nexport const isAttachmentTabAvailable = (tab: AttachmentTab): boolean => {\n switch (tab) {\n case 'gallery':\n return hasMediaLibrary() || hasImagePicker()\n case 'camera':\n return hasImagePickerCamera()\n case 'file':\n return hasDocumentPicker()\n case 'location':\n return hasLocation()\n }\n return false\n}\n\n/**\n * The tabs to show: the requested ones (or Gallery, File, Location) that have their\n * peer. Camera gets a tab of its own only when there is no in-sheet grid to hold its tile.\n */\nexport const getAttachmentTabs = (requested?: AttachmentTab[]): AttachmentTab[] => {\n const tabs = requested ?? DEFAULT_ORDER.filter(tab => tab !== 'camera' || !hasMediaLibrary())\n return tabs.filter((tab, index) => tabs.indexOf(tab) === index && isAttachmentTabAvailable(tab))\n}\n\n/* ------------------------------------------------------------------------------------------ */\n/* System pickers */\n/* ------------------------------------------------------------------------------------------ */\n\nconst fromImagePickerAssets = (assets: any[] | null | undefined): PickedAttachment[] =>\n (assets ?? []).map(asset => asset.type === 'video'\n ? {\n type: 'video' as const,\n uri: asset.uri,\n width: asset.width,\n height: asset.height,\n // expo-image-picker reports milliseconds.\n duration: asset.duration ? asset.duration / 1000 : undefined,\n mimeType: asset.mimeType ?? undefined,\n fileName: asset.fileName ?? undefined,\n }\n : {\n type: 'image' as const,\n uri: asset.uri,\n width: asset.width,\n height: asset.height,\n mimeType: asset.mimeType ?? undefined,\n fileName: asset.fileName ?? undefined,\n })\n\n/** The system photo picker (`expo-image-picker`), several at once. */\nexport async function pickFromSystemGallery (): Promise<PickedAttachment[]> {\n const picker = getExpoImagePicker()\n if (!picker?.launchImageLibraryAsync)\n return []\n const result = await picker.launchImageLibraryAsync({\n mediaTypes: ['images', 'videos'],\n allowsMultipleSelection: true,\n selectionLimit: 10,\n quality: 0.8,\n })\n return result?.canceled ? [] : fromImagePickerAssets(result?.assets)\n}\n\n/** The system camera (`expo-image-picker`). Throws on a device without one (the simulator). */\nexport async function takePhoto (): Promise<PickedAttachment[]> {\n const picker = getExpoImagePicker()\n if (!picker?.launchCameraAsync)\n return []\n const permission = await picker.requestCameraPermissionsAsync?.()\n if (permission && permission.granted === false)\n return []\n const result = await picker.launchCameraAsync({ mediaTypes: ['images', 'videos'], quality: 0.8 })\n return result?.canceled ? [] : fromImagePickerAssets(result?.assets)\n}\n\n/** The system document picker (`expo-document-picker`), several at once. */\nexport async function pickDocuments (): Promise<PickedAttachment[]> {\n const picker = getExpoDocumentPicker()\n if (!picker?.getDocumentAsync)\n return []\n const result = await picker.getDocumentAsync({ multiple: true, copyToCacheDirectory: true })\n if (result?.canceled || !result?.assets)\n return []\n return result.assets.map((asset: any) => ({\n type: 'file' as const,\n uri: asset.uri,\n name: asset.name ?? asset.uri.split('/').pop() ?? 'file',\n size: asset.size ?? undefined,\n mimeType: asset.mimeType ?? undefined,\n }))\n}\n\nexport type CurrentLocation =\n | { status: 'located', latitude: number, longitude: number, accuracy?: number }\n | { status: 'denied' }\n | { status: 'failed' }\n\nconst LOCATION_TIMEOUT_MS = 8000\n\n/** The current position (`expo-location`), asking for permission first. */\nexport async function getCurrentLocation (): Promise<CurrentLocation> {\n const location = getExpoLocation()\n if (!location?.getCurrentPositionAsync)\n return { status: 'failed' }\n try {\n const permission = await location.requestForegroundPermissionsAsync()\n if (permission?.status !== 'granted')\n return { status: 'denied' }\n // A fix can take a while (or never come, on a simulator with no location set), so the\n // last known one stands in after a few seconds.\n const timeout = new Promise<null>(resolve => setTimeout(() => resolve(null), LOCATION_TIMEOUT_MS))\n const position = await Promise.race([\n location.getCurrentPositionAsync({ accuracy: location.Accuracy?.Balanced ?? 3 }),\n timeout,\n ]) ?? await location.getLastKnownPositionAsync?.()\n if (!position?.coords)\n return { status: 'failed' }\n return {\n status: 'located',\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n accuracy: position.coords.accuracy ?? undefined,\n }\n } catch {\n return { status: 'failed' }\n }\n}\n"],"mappings":"AACA,SACEA,qBAAqB,EACrBC,kBAAkB,EAClBC,eAAe,EACfC,iBAAiB,EACjBC,cAAc,EACdC,oBAAoB,EACpBC,WAAW,EACXC,eAAe,QACV,aAAa;AAGpB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,WAA+B,EAC/BC,OAAO,GAAG,EAAE,EACS;EACrB,MAAMC,IAAI,GAAGD,OAAO,CAACE,IAAI,CAAC,CAAC;EAC3B,MAAMC,QAAQ,GAAGJ,WAAW,CAACK,GAAG,CAAC,CAACC,UAAU,EAAEC,KAAK,KAAK;IACtD,MAAMC,IAAI,GAAG;MAAEN,IAAI,EAAEK,KAAK,KAAK,CAAC,GAAGL,IAAI,GAAG;IAAG,CAAsB;IACnE,QAAQI,UAAU,CAACG,IAAI;MACrB,KAAK,OAAO;QACV,OAAO;UAAE,GAAGD,IAAI;UAAEE,KAAK,EAAEJ,UAAU,CAACK;QAAI,CAAC;MAC3C,KAAK,OAAO;QACV,OAAO;UAAE,GAAGH,IAAI;UAAEI,KAAK,EAAEN,UAAU,CAACK,GAAG;UAAE,IAAIL,UAAU,CAACO,QAAQ,GAAG;YAAEA,QAAQ,EAAEP,UAAU,CAACO;UAAS,CAAC,GAAG,IAAI;QAAE,CAAC;MAChH,KAAK,MAAM;QACT,OAAO;UACL,GAAGL,IAAI;UACPM,IAAI,EAAE;YACJH,GAAG,EAAEL,UAAU,CAACK,GAAG;YACnBI,IAAI,EAAET,UAAU,CAACS,IAAI;YACrB,IAAIT,UAAU,CAACU,IAAI,IAAI,IAAI,GAAG;cAAEA,IAAI,EAAEV,UAAU,CAACU;YAAK,CAAC,GAAG,IAAI,CAAC;YAC/D,IAAIV,UAAU,CAACW,QAAQ,GAAG;cAAEA,QAAQ,EAAEX,UAAU,CAACW;YAAS,CAAC,GAAG,IAAI;UACpE;QACF,CAAC;MACH,KAAK,UAAU;QACb,OAAO;UAAE,GAAGT,IAAI;UAAEU,QAAQ,EAAE;YAAEC,QAAQ,EAAEb,UAAU,CAACa,QAAQ;YAAEC,SAAS,EAAEd,UAAU,CAACc;UAAU;QAAE,CAAC;IACpG;IACA,OAAOZ,IAAI;EACb,CAAC,CAAC;EACF,OAAOJ,QAAQ,CAACiB,OAAO,CAAC,CAAC;AAC3B;;AAEA;AACA,OAAO,eAAeC,yBAAyBA,CAC7CtB,WAA+B,EAC/BC,OAAe,EACfsB,MAA6C,EACf;EAC9B,IAAIvB,WAAW,CAACwB,MAAM,KAAK,CAAC,EAC1B,OAAO,EAAE;EACX,IAAID,MAAM,EAAE;IACV,MAAME,MAAM,GAAG,MAAMF,MAAM,CAACvB,WAAW,EAAE;MAAEC;IAAQ,CAAC,CAAC;IACrD,IAAIwB,MAAM,KAAK,IAAI,EACjB,OAAO,EAAE;IACX,IAAIC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,EACvB,OAAOA,MAAM;EACjB;EACA,OAAO1B,uBAAuB,CAAWC,WAAW,EAAEC,OAAO,CAAC;AAChE;AAEA,MAAM2B,aAA8B,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;;AAEhF;AACA,OAAO,MAAMC,wBAAwB,GAAIC,GAAkB,IAAc;EACvE,QAAQA,GAAG;IACT,KAAK,SAAS;MACZ,OAAOhC,eAAe,CAAC,CAAC,IAAIH,cAAc,CAAC,CAAC;IAC9C,KAAK,QAAQ;MACX,OAAOC,oBAAoB,CAAC,CAAC;IAC/B,KAAK,MAAM;MACT,OAAOF,iBAAiB,CAAC,CAAC;IAC5B,KAAK,UAAU;MACb,OAAOG,WAAW,CAAC,CAAC;EACxB;EACA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMkC,iBAAiB,GAAIC,SAA2B,IAAsB;EACjF,MAAMC,IAAI,GAAGD,SAAS,IAAIJ,aAAa,CAACM,MAAM,CAACJ,GAAG,IAAIA,GAAG,KAAK,QAAQ,IAAI,CAAChC,eAAe,CAAC,CAAC,CAAC;EAC7F,OAAOmC,IAAI,CAACC,MAAM,CAAC,CAACJ,GAAG,EAAEvB,KAAK,KAAK0B,IAAI,CAACE,OAAO,CAACL,GAAG,CAAC,KAAKvB,KAAK,IAAIsB,wBAAwB,CAACC,GAAG,CAAC,CAAC;AAClG,CAAC;;AAED;AACA;AACA;;AAEA,MAAMM,qBAAqB,GAAIC,MAAgC,IAC7D,CAACA,MAAM,IAAI,EAAE,EAAEhC,GAAG,CAACiC,KAAK,IAAIA,KAAK,CAAC7B,IAAI,KAAK,OAAO,GAC9C;EACAA,IAAI,EAAE,OAAgB;EACtBE,GAAG,EAAE2B,KAAK,CAAC3B,GAAG;EACd4B,KAAK,EAAED,KAAK,CAACC,KAAK;EAClBC,MAAM,EAAEF,KAAK,CAACE,MAAM;EACpB;EACA3B,QAAQ,EAAEyB,KAAK,CAACzB,QAAQ,GAAGyB,KAAK,CAACzB,QAAQ,GAAG,IAAI,GAAG4B,SAAS;EAC5DxB,QAAQ,EAAEqB,KAAK,CAACrB,QAAQ,IAAIwB,SAAS;EACrCC,QAAQ,EAAEJ,KAAK,CAACI,QAAQ,IAAID;AAC9B,CAAC,GACC;EACAhC,IAAI,EAAE,OAAgB;EACtBE,GAAG,EAAE2B,KAAK,CAAC3B,GAAG;EACd4B,KAAK,EAAED,KAAK,CAACC,KAAK;EAClBC,MAAM,EAAEF,KAAK,CAACE,MAAM;EACpBvB,QAAQ,EAAEqB,KAAK,CAACrB,QAAQ,IAAIwB,SAAS;EACrCC,QAAQ,EAAEJ,KAAK,CAACI,QAAQ,IAAID;AAC9B,CAAC,CAAC;;AAEN;AACA,OAAO,eAAeE,qBAAqBA,CAAA,EAAiC;EAC1E,MAAMC,MAAM,GAAGpD,kBAAkB,CAAC,CAAC;EACnC,IAAI,CAACoD,MAAM,EAAEC,uBAAuB,EAClC,OAAO,EAAE;EACX,MAAMpB,MAAM,GAAG,MAAMmB,MAAM,CAACC,uBAAuB,CAAC;IAClDC,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAChCC,uBAAuB,EAAE,IAAI;IAC7BC,cAAc,EAAE,EAAE;IAClBC,OAAO,EAAE;EACX,CAAC,CAAC;EACF,OAAOxB,MAAM,EAAEyB,QAAQ,GAAG,EAAE,GAAGd,qBAAqB,CAACX,MAAM,EAAEY,MAAM,CAAC;AACtE;;AAEA;AACA,OAAO,eAAec,SAASA,CAAA,EAAiC;EAC9D,MAAMP,MAAM,GAAGpD,kBAAkB,CAAC,CAAC;EACnC,IAAI,CAACoD,MAAM,EAAEQ,iBAAiB,EAC5B,OAAO,EAAE;EACX,MAAMC,UAAU,GAAG,MAAMT,MAAM,CAACU,6BAA6B,GAAG,CAAC;EACjE,IAAID,UAAU,IAAIA,UAAU,CAACE,OAAO,KAAK,KAAK,EAC5C,OAAO,EAAE;EACX,MAAM9B,MAAM,GAAG,MAAMmB,MAAM,CAACQ,iBAAiB,CAAC;IAAEN,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAEG,OAAO,EAAE;EAAI,CAAC,CAAC;EACjG,OAAOxB,MAAM,EAAEyB,QAAQ,GAAG,EAAE,GAAGd,qBAAqB,CAACX,MAAM,EAAEY,MAAM,CAAC;AACtE;;AAEA;AACA,OAAO,eAAemB,aAAaA,CAAA,EAAiC;EAClE,MAAMZ,MAAM,GAAGrD,qBAAqB,CAAC,CAAC;EACtC,IAAI,CAACqD,MAAM,EAAEa,gBAAgB,EAC3B,OAAO,EAAE;EACX,MAAMhC,MAAM,GAAG,MAAMmB,MAAM,CAACa,gBAAgB,CAAC;IAAEC,QAAQ,EAAE,IAAI;IAAEC,oBAAoB,EAAE;EAAK,CAAC,CAAC;EAC5F,IAAIlC,MAAM,EAAEyB,QAAQ,IAAI,CAACzB,MAAM,EAAEY,MAAM,EACrC,OAAO,EAAE;EACX,OAAOZ,MAAM,CAACY,MAAM,CAAChC,GAAG,CAAEiC,KAAU,KAAM;IACxC7B,IAAI,EAAE,MAAe;IACrBE,GAAG,EAAE2B,KAAK,CAAC3B,GAAG;IACdI,IAAI,EAAEuB,KAAK,CAACvB,IAAI,IAAIuB,KAAK,CAAC3B,GAAG,CAACiD,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC,IAAI,MAAM;IACxD7C,IAAI,EAAEsB,KAAK,CAACtB,IAAI,IAAIyB,SAAS;IAC7BxB,QAAQ,EAAEqB,KAAK,CAACrB,QAAQ,IAAIwB;EAC9B,CAAC,CAAC,CAAC;AACL;AAOA,MAAMqB,mBAAmB,GAAG,IAAI;;AAEhC;AACA,OAAO,eAAeC,kBAAkBA,CAAA,EAA8B;EACpE,MAAM7C,QAAQ,GAAGzB,eAAe,CAAC,CAAC;EAClC,IAAI,CAACyB,QAAQ,EAAE8C,uBAAuB,EACpC,OAAO;IAAEC,MAAM,EAAE;EAAS,CAAC;EAC7B,IAAI;IACF,MAAMZ,UAAU,GAAG,MAAMnC,QAAQ,CAACgD,iCAAiC,CAAC,CAAC;IACrE,IAAIb,UAAU,EAAEY,MAAM,KAAK,SAAS,EAClC,OAAO;MAAEA,MAAM,EAAE;IAAS,CAAC;IAC7B;IACA;IACA,MAAME,OAAO,GAAG,IAAIC,OAAO,CAAOC,OAAO,IAAIC,UAAU,CAAC,MAAMD,OAAO,CAAC,IAAI,CAAC,EAAEP,mBAAmB,CAAC,CAAC;IAClG,MAAMS,QAAQ,GAAG,OAAMH,OAAO,CAACI,IAAI,CAAC,CAClCtD,QAAQ,CAAC8C,uBAAuB,CAAC;MAAES,QAAQ,EAAEvD,QAAQ,CAACwD,QAAQ,EAAEC,QAAQ,IAAI;IAAE,CAAC,CAAC,EAChFR,OAAO,CACR,CAAC,MAAI,MAAMjD,QAAQ,CAAC0D,yBAAyB,GAAG,CAAC;IAClD,IAAI,CAACL,QAAQ,EAAEM,MAAM,EACnB,OAAO;MAAEZ,MAAM,EAAE;IAAS,CAAC;IAC7B,OAAO;MACLA,MAAM,EAAE,SAAS;MACjB9C,QAAQ,EAAEoD,QAAQ,CAACM,MAAM,CAAC1D,QAAQ;MAClCC,SAAS,EAAEmD,QAAQ,CAACM,MAAM,CAACzD,SAAS;MACpCqD,QAAQ,EAAEF,QAAQ,CAACM,MAAM,CAACJ,QAAQ,IAAIhC;IACxC,CAAC;EACH,CAAC,CAAC,MAAM;IACN,OAAO;MAAEwB,MAAM,EAAE;IAAS,CAAC;EAC7B;AACF","ignoreList":[]}
1
+ {"version":3,"file":"buildMessages.js","names":["getExpoDocumentPicker","getExpoImagePicker","getExpoLocation","hasDocumentPicker","hasImagePicker","hasImagePickerCamera","hasLocation","hasMediaLibrary","buildAttachmentMessages","attachments","caption","text","trim","messages","map","attachment","index","base","type","image","uri","video","duration","file","name","size","mimeType","location","latitude","longitude","reverse","resolveAttachmentMessages","onPick","length","result","Array","isArray","DEFAULT_ORDER","isAttachmentTabAvailable","tab","pickers","isGalleryGridEnabled","gallery","camera","getAttachmentTabs","requested","hasGrid","tabs","filter","indexOf","fromImagePickerAssets","assets","asset","width","height","undefined","fileName","pickFromSystemGallery","picker","launchImageLibraryAsync","mediaTypes","allowsMultipleSelection","selectionLimit","quality","canceled","takePhoto","launchCameraAsync","permission","requestCameraPermissionsAsync","granted","pickDocuments","getDocumentAsync","multiple","copyToCacheDirectory","split","pop","LOCATION_TIMEOUT_MS","getCurrentLocation","getCurrentPositionAsync","status","requestForegroundPermissionsAsync","timeout","Promise","resolve","setTimeout","position","race","accuracy","Accuracy","Balanced","getLastKnownPositionAsync","coords"],"sources":["../../src/attachments/buildMessages.ts"],"sourcesContent":["import { IMessage } from '../Models'\nimport {\n getExpoDocumentPicker,\n getExpoImagePicker,\n getExpoLocation,\n hasDocumentPicker,\n hasImagePicker,\n hasImagePickerCamera,\n hasLocation,\n hasMediaLibrary,\n} from '../optional'\nimport { AttachmentPickers, AttachmentTab, AttachmentsProps, PickedAttachment } from './types'\n\n/**\n * The messages the built-in menu sends: one per image, video and file (there are no albums\n * yet), one per location, with the caption as the first pick's text. Returned newest first,\n * the order `onSend` and `Chat.append` use, so the picks read top to bottom in pick order.\n */\nexport function buildAttachmentMessages<TMessage extends IMessage = IMessage> (\n attachments: PickedAttachment[],\n caption = ''\n): Partial<TMessage>[] {\n const text = caption.trim()\n const messages = attachments.map((attachment, index) => {\n const base = { text: index === 0 ? text : '' } as Partial<TMessage>\n switch (attachment.type) {\n case 'image':\n return { ...base, image: attachment.uri }\n case 'video':\n return { ...base, video: attachment.uri, ...(attachment.duration ? { duration: attachment.duration } : null) }\n case 'file':\n return {\n ...base,\n file: {\n uri: attachment.uri,\n name: attachment.name,\n ...(attachment.size != null ? { size: attachment.size } : null),\n ...(attachment.mimeType ? { mimeType: attachment.mimeType } : null),\n },\n }\n case 'location':\n return { ...base, location: { latitude: attachment.latitude, longitude: attachment.longitude } }\n }\n return base\n })\n return messages.reverse()\n}\n\n/** Runs `onPick` (if any) and resolves the messages to send. */\nexport async function resolveAttachmentMessages<TMessage extends IMessage = IMessage> (\n attachments: PickedAttachment[],\n caption: string,\n onPick?: AttachmentsProps<TMessage>['onPick']\n): Promise<Partial<TMessage>[]> {\n if (attachments.length === 0)\n return []\n if (onPick) {\n const result = await onPick(attachments, { caption })\n if (result === null)\n return []\n if (Array.isArray(result))\n return result\n }\n return buildAttachmentMessages<TMessage>(attachments, caption)\n}\n\nconst DEFAULT_ORDER: AttachmentTab[] = ['gallery', 'camera', 'file', 'location']\n\n/** Whether a tab can work with the installed peers or a picker the app gave. */\nexport const isAttachmentTabAvailable = (\n tab: AttachmentTab,\n pickers?: Partial<Record<keyof AttachmentPickers, unknown>>,\n isGalleryGridEnabled = true\n): boolean => {\n switch (tab) {\n case 'gallery':\n return (isGalleryGridEnabled && hasMediaLibrary()) || hasImagePicker() || !!pickers?.gallery\n case 'camera':\n return hasImagePickerCamera() || !!pickers?.camera\n case 'file':\n return hasDocumentPicker() || !!pickers?.file\n case 'location':\n return hasLocation()\n }\n return false\n}\n\n/**\n * The tabs to show: the requested ones (or Gallery, File, Location) that have their\n * peer. Camera gets a tab of its own only when there is no in-sheet grid to hold its tile.\n */\nexport const getAttachmentTabs = (\n requested?: AttachmentTab[],\n pickers?: Partial<Record<keyof AttachmentPickers, unknown>>,\n isGalleryGridEnabled = true\n): AttachmentTab[] => {\n const hasGrid = isGalleryGridEnabled && hasMediaLibrary()\n const tabs = requested ?? DEFAULT_ORDER.filter(tab => tab !== 'camera' || !hasGrid)\n return tabs.filter((tab, index) => tabs.indexOf(tab) === index && isAttachmentTabAvailable(tab, pickers, isGalleryGridEnabled))\n}\n\n/* ------------------------------------------------------------------------------------------ */\n/* System pickers */\n/* ------------------------------------------------------------------------------------------ */\n\nconst fromImagePickerAssets = (assets: any[] | null | undefined): PickedAttachment[] =>\n (assets ?? []).map(asset => asset.type === 'video'\n ? {\n type: 'video' as const,\n uri: asset.uri,\n width: asset.width,\n height: asset.height,\n // expo-image-picker reports milliseconds.\n duration: asset.duration ? asset.duration / 1000 : undefined,\n mimeType: asset.mimeType ?? undefined,\n fileName: asset.fileName ?? undefined,\n }\n : {\n type: 'image' as const,\n uri: asset.uri,\n width: asset.width,\n height: asset.height,\n mimeType: asset.mimeType ?? undefined,\n fileName: asset.fileName ?? undefined,\n })\n\n/** The system photo picker (`expo-image-picker`), several at once. */\nexport async function pickFromSystemGallery (): Promise<PickedAttachment[]> {\n const picker = getExpoImagePicker()\n if (!picker?.launchImageLibraryAsync)\n return []\n const result = await picker.launchImageLibraryAsync({\n mediaTypes: ['images', 'videos'],\n allowsMultipleSelection: true,\n selectionLimit: 10,\n quality: 0.8,\n })\n return result?.canceled ? [] : fromImagePickerAssets(result?.assets)\n}\n\n/** The system camera (`expo-image-picker`). Throws on a device without one (the simulator). */\nexport async function takePhoto (): Promise<PickedAttachment[]> {\n const picker = getExpoImagePicker()\n if (!picker?.launchCameraAsync)\n return []\n const permission = await picker.requestCameraPermissionsAsync?.()\n if (permission && permission.granted === false)\n return []\n const result = await picker.launchCameraAsync({ mediaTypes: ['images', 'videos'], quality: 0.8 })\n return result?.canceled ? [] : fromImagePickerAssets(result?.assets)\n}\n\n/** The system document picker (`expo-document-picker`), several at once. */\nexport async function pickDocuments (): Promise<PickedAttachment[]> {\n const picker = getExpoDocumentPicker()\n if (!picker?.getDocumentAsync)\n return []\n const result = await picker.getDocumentAsync({ multiple: true, copyToCacheDirectory: true })\n if (result?.canceled || !result?.assets)\n return []\n return result.assets.map((asset: any) => ({\n type: 'file' as const,\n uri: asset.uri,\n name: asset.name ?? asset.uri.split('/').pop() ?? 'file',\n size: asset.size ?? undefined,\n mimeType: asset.mimeType ?? undefined,\n }))\n}\n\nexport type CurrentLocation =\n | { status: 'located', latitude: number, longitude: number, accuracy?: number }\n | { status: 'denied' }\n | { status: 'failed' }\n\nconst LOCATION_TIMEOUT_MS = 8000\n\n/** The current position (`expo-location`), asking for permission first. */\nexport async function getCurrentLocation (): Promise<CurrentLocation> {\n const location = getExpoLocation()\n if (!location?.getCurrentPositionAsync)\n return { status: 'failed' }\n try {\n const permission = await location.requestForegroundPermissionsAsync()\n if (permission?.status !== 'granted')\n return { status: 'denied' }\n // A fix can take a while (or never come, on a simulator with no location set), so the\n // last known one stands in after a few seconds.\n const timeout = new Promise<null>(resolve => setTimeout(() => resolve(null), LOCATION_TIMEOUT_MS))\n const position = await Promise.race([\n location.getCurrentPositionAsync({ accuracy: location.Accuracy?.Balanced ?? 3 }),\n timeout,\n ]) ?? await location.getLastKnownPositionAsync?.()\n if (!position?.coords)\n return { status: 'failed' }\n return {\n status: 'located',\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n accuracy: position.coords.accuracy ?? undefined,\n }\n } catch {\n return { status: 'failed' }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -35,6 +35,17 @@ export type PickedAttachment = {
35
35
  longitude: number;
36
36
  accuracy?: number;
37
37
  };
38
+ /**
39
+ * Your own pickers for the menu's system tabs, for an app that picks with other libraries than the
40
+ * Expo ones. Each resolves to what was picked, or an empty array when the user cancels. A tab
41
+ * with a picker here shows even when its Expo peer is not installed. The gallery picker opens
42
+ * from the Gallery tab when there is no in-sheet grid (`expo-media-library`).
43
+ */
44
+ export interface AttachmentPickers {
45
+ gallery?: () => Promise<PickedAttachment[]>;
46
+ camera?: () => Promise<PickedAttachment[]>;
47
+ file?: () => Promise<PickedAttachment[]>;
48
+ }
38
49
  /** What `attachments.onPick` can return. */
39
50
  export type AttachmentPickResult<TMessage extends IMessage> = Partial<TMessage>[] | null | undefined | void;
40
51
  /** Props for a custom `attachments.renderAttachmentMenu`. */
@@ -55,6 +66,14 @@ export interface AttachmentsProps<TMessage extends IMessage = IMessage> {
55
66
  isEnabled?: boolean;
56
67
  /** Which tabs to offer, in order. Default: Gallery, File, Location (+ Camera without a grid). */
57
68
  tabs?: AttachmentTab[];
69
+ /** Pickers to use instead of `expo-image-picker` and `expo-document-picker`. */
70
+ pickers?: AttachmentPickers;
71
+ /**
72
+ * Show the newest photos in the sheet (`expo-media-library`). Default true. `false` leaves the
73
+ * Gallery tab to the system picker, which needs no access to the whole library: for an app that
74
+ * does not hold Android's `READ_MEDIA_IMAGES` / `READ_MEDIA_VIDEO`.
75
+ */
76
+ isGalleryGridEnabled?: boolean;
58
77
  /**
59
78
  * Intercept picked attachments, e.g. to upload them first. Return the messages to send, `null`
60
79
  * to send nothing (you handle it), or nothing for the default: one message per image, video
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/attachments/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAEtE,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,QAAQ,IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE,GACnB,IAAI,GACJ,SAAS,GACT,IAAI,CAAA;AAER,6DAA6D;AAC7D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uCAAuC;IACvC,IAAI,EAAE,aAAa,EAAE,CAAA;IACrB,wFAAwF;IACxF,MAAM,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ;IACpE,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iGAAiG;IACjG,IAAI,CAAC,EAAE,aAAa,EAAE,CAAA;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CACP,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACzB,oBAAoB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7E,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAA;CAC7E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/attachments/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAEtE,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACxH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CACzC;AAED,4CAA4C;AAC5C,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,QAAQ,IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE,GACnB,IAAI,GACJ,SAAS,GACT,IAAI,CAAA;AAER,6DAA6D;AAC7D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uCAAuC;IACvC,IAAI,EAAE,aAAa,EAAE,CAAA;IACrB,wFAAwF;IACxF,MAAM,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CACpE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ;IACpE,8FAA8F;IAC9F,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iGAAiG;IACjG,IAAI,CAAC,EAAE,aAAa,EAAE,CAAA;IACtB,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,CACP,WAAW,EAAE,gBAAgB,EAAE,EAC/B,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACzB,oBAAoB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7E,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAA;CAC7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/attachments/types.ts"],"sourcesContent":["import React from 'react'\n\nimport { IMessage } from '../Models'\n\n/**\n * The attachment menu's tabs, in their default order. Each shows only when its optional peer is\n * installed: `gallery` (`expo-media-library` for the in-sheet grid, or `expo-image-picker` for\n * the system picker), `camera` (`expo-image-picker`), `file` (`expo-document-picker`) and\n * `location` (`expo-location`).\n */\nexport type AttachmentTab = 'gallery' | 'camera' | 'file' | 'location'\n\n/** Something the user picked in the attachment menu, before it becomes a message. */\nexport type PickedAttachment =\n | { type: 'image', uri: string, width?: number, height?: number, mimeType?: string, fileName?: string }\n | { type: 'video', uri: string, width?: number, height?: number, duration?: number, mimeType?: string, fileName?: string }\n | { type: 'file', uri: string, name: string, size?: number, mimeType?: string }\n | { type: 'location', latitude: number, longitude: number, accuracy?: number }\n\n/** What `attachments.onPick` can return. */\nexport type AttachmentPickResult<TMessage extends IMessage> =\n | Partial<TMessage>[]\n | null\n | undefined\n | void\n\n/** Props for a custom `attachments.renderAttachmentMenu`. */\nexport interface AttachmentMenuRenderProps {\n visible: boolean\n onClose: () => void\n /** The tabs this install can offer. */\n tabs: AttachmentTab[]\n /** Send picked attachments the way the built-in menu does (`onPick`, then `onSend`). */\n onSend: (attachments: PickedAttachment[], caption?: string) => void\n}\n\n/**\n * The built-in attachment menu (`Chat`'s `attachments` prop) behind the composer's\n * paperclip. On by default.\n */\nexport interface AttachmentsProps<TMessage extends IMessage = IMessage> {\n /** Show the paperclip and its menu. Default true (hidden when no tab's peer is installed). */\n isEnabled?: boolean\n /** Which tabs to offer, in order. Default: Gallery, File, Location (+ Camera without a grid). */\n tabs?: AttachmentTab[]\n /**\n * Intercept picked attachments, e.g. to upload them first. Return the messages to send, `null`\n * to send nothing (you handle it), or nothing for the default: one message per image, video\n * and file, and one for a location, with the caption on the first.\n */\n onPick?: (\n attachments: PickedAttachment[],\n context: { caption: string }\n ) => AttachmentPickResult<TMessage> | Promise<AttachmentPickResult<TMessage>>\n /** Draw your own menu instead of the built-in sheet. */\n renderAttachmentMenu?: (props: AttachmentMenuRenderProps) => React.ReactNode\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/attachments/types.ts"],"sourcesContent":["import React from 'react'\n\nimport { IMessage } from '../Models'\n\n/**\n * The attachment menu's tabs, in their default order. Each shows only when its optional peer is\n * installed: `gallery` (`expo-media-library` for the in-sheet grid, or `expo-image-picker` for\n * the system picker), `camera` (`expo-image-picker`), `file` (`expo-document-picker`) and\n * `location` (`expo-location`).\n */\nexport type AttachmentTab = 'gallery' | 'camera' | 'file' | 'location'\n\n/** Something the user picked in the attachment menu, before it becomes a message. */\nexport type PickedAttachment =\n | { type: 'image', uri: string, width?: number, height?: number, mimeType?: string, fileName?: string }\n | { type: 'video', uri: string, width?: number, height?: number, duration?: number, mimeType?: string, fileName?: string }\n | { type: 'file', uri: string, name: string, size?: number, mimeType?: string }\n | { type: 'location', latitude: number, longitude: number, accuracy?: number }\n\n/**\n * Your own pickers for the menu's system tabs, for an app that picks with other libraries than the\n * Expo ones. Each resolves to what was picked, or an empty array when the user cancels. A tab\n * with a picker here shows even when its Expo peer is not installed. The gallery picker opens\n * from the Gallery tab when there is no in-sheet grid (`expo-media-library`).\n */\nexport interface AttachmentPickers {\n gallery?: () => Promise<PickedAttachment[]>\n camera?: () => Promise<PickedAttachment[]>\n file?: () => Promise<PickedAttachment[]>\n}\n\n/** What `attachments.onPick` can return. */\nexport type AttachmentPickResult<TMessage extends IMessage> =\n | Partial<TMessage>[]\n | null\n | undefined\n | void\n\n/** Props for a custom `attachments.renderAttachmentMenu`. */\nexport interface AttachmentMenuRenderProps {\n visible: boolean\n onClose: () => void\n /** The tabs this install can offer. */\n tabs: AttachmentTab[]\n /** Send picked attachments the way the built-in menu does (`onPick`, then `onSend`). */\n onSend: (attachments: PickedAttachment[], caption?: string) => void\n}\n\n/**\n * The built-in attachment menu (`Chat`'s `attachments` prop) behind the composer's\n * paperclip. On by default.\n */\nexport interface AttachmentsProps<TMessage extends IMessage = IMessage> {\n /** Show the paperclip and its menu. Default true (hidden when no tab's peer is installed). */\n isEnabled?: boolean\n /** Which tabs to offer, in order. Default: Gallery, File, Location (+ Camera without a grid). */\n tabs?: AttachmentTab[]\n /** Pickers to use instead of `expo-image-picker` and `expo-document-picker`. */\n pickers?: AttachmentPickers\n /**\n * Show the newest photos in the sheet (`expo-media-library`). Default true. `false` leaves the\n * Gallery tab to the system picker, which needs no access to the whole library: for an app that\n * does not hold Android's `READ_MEDIA_IMAGES` / `READ_MEDIA_VIDEO`.\n */\n isGalleryGridEnabled?: boolean\n /**\n * Intercept picked attachments, e.g. to upload them first. Return the messages to send, `null`\n * to send nothing (you handle it), or nothing for the default: one message per image, video\n * and file, and one for a location, with the caption on the first.\n */\n onPick?: (\n attachments: PickedAttachment[],\n context: { caption: string }\n ) => AttachmentPickResult<TMessage> | Promise<AttachmentPickResult<TMessage>>\n /** Draw your own menu instead of the built-in sheet. */\n renderAttachmentMenu?: (props: AttachmentMenuRenderProps) => React.ReactNode\n}\n"],"mappings":"","ignoreList":[]}
@@ -4,6 +4,11 @@ import Animated from 'react-native-reanimated';
4
4
  export type TouchableOpacityProps = Omit<React.ComponentProps<typeof BaseButton>, 'onPress'> & {
5
5
  activeOpacity?: number;
6
6
  onPress?: () => void;
7
+ /**
8
+ * The button's own style, around the content: its shape is the shape of Android's press ripple,
9
+ * e.g. a `borderRadius` for a round one. `style` goes on the content.
10
+ */
11
+ buttonStyle?: React.ComponentProps<typeof BaseButton>['style'];
7
12
  } & React.ComponentProps<typeof Animated.View>;
8
13
  export declare const TouchableOpacity: React.FC<TouchableOpacityProps>;
9
14
  //# sourceMappingURL=TouchableOpacity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TouchableOpacity.d.ts","sourceRoot":"","sources":["../../src/components/TouchableOpacity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,QAIN,MAAM,yBAAyB,CAAA;AAEhC,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7F,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AAQ9C,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoE5D,CAAA"}
1
+ {"version":3,"file":"TouchableOpacity.d.ts","sourceRoot":"","sources":["../../src/components/TouchableOpacity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,QAIN,MAAM,yBAAyB,CAAA;AAEhC,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7F,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC,OAAO,CAAC,CAAA;CAC/D,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AAQ9C,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAsE5D,CAAA"}
@@ -10,7 +10,8 @@ import Animated, { useAnimatedStyle, useSharedValue, withTiming } from 'react-na
10
10
  // from opening the viewer. `BaseButton` is still a gesture, so it loses to the
11
11
  // long-press the way it always did.
12
12
  export const TouchableOpacity = t0 => {
13
- const $ = _c(31);
13
+ const $ = _c(33);
14
+ let buttonStyle;
14
15
  let children;
15
16
  let onPress;
16
17
  let rest;
@@ -20,22 +21,25 @@ export const TouchableOpacity = t0 => {
20
21
  ({
21
22
  children,
22
23
  style,
24
+ buttonStyle,
23
25
  activeOpacity: t1,
24
26
  onPress,
25
27
  ...rest
26
28
  } = t0);
27
29
  $[0] = t0;
28
- $[1] = children;
29
- $[2] = onPress;
30
- $[3] = rest;
31
- $[4] = style;
32
- $[5] = t1;
30
+ $[1] = buttonStyle;
31
+ $[2] = children;
32
+ $[3] = onPress;
33
+ $[4] = rest;
34
+ $[5] = style;
35
+ $[6] = t1;
33
36
  } else {
34
- children = $[1];
35
- onPress = $[2];
36
- rest = $[3];
37
- style = $[4];
38
- t1 = $[5];
37
+ buttonStyle = $[1];
38
+ children = $[2];
39
+ onPress = $[3];
40
+ rest = $[4];
41
+ style = $[5];
42
+ t1 = $[6];
39
43
  }
40
44
  const activeOpacity = t1 === undefined ? 0.2 : t1;
41
45
  const opacity = useSharedValue(1);
@@ -43,20 +47,20 @@ export const TouchableOpacity = t0 => {
43
47
  const pressOutTimeout = useRef(undefined);
44
48
  let t2;
45
49
  let t3;
46
- if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
50
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
47
51
  t2 = () => () => {
48
52
  clearTimeout(pressOutTimeout.current);
49
53
  };
50
54
  t3 = [];
51
- $[6] = t2;
52
- $[7] = t3;
55
+ $[7] = t2;
56
+ $[8] = t3;
53
57
  } else {
54
- t2 = $[6];
55
- t3 = $[7];
58
+ t2 = $[7];
59
+ t3 = $[8];
56
60
  }
57
61
  useEffect(t2, t3);
58
62
  let t4;
59
- if ($[8] !== activeOpacity || $[9] !== isAnimationInFinished || $[10] !== opacity) {
63
+ if ($[9] !== activeOpacity || $[10] !== isAnimationInFinished || $[11] !== opacity) {
60
64
  t4 = () => {
61
65
  opacity.set(withTiming(activeOpacity, {
62
66
  duration: 150
@@ -64,16 +68,16 @@ export const TouchableOpacity = t0 => {
64
68
  isAnimationInFinished.set(true);
65
69
  }));
66
70
  };
67
- $[8] = activeOpacity;
68
- $[9] = isAnimationInFinished;
69
- $[10] = opacity;
70
- $[11] = t4;
71
+ $[9] = activeOpacity;
72
+ $[10] = isAnimationInFinished;
73
+ $[11] = opacity;
74
+ $[12] = t4;
71
75
  } else {
72
- t4 = $[11];
76
+ t4 = $[12];
73
77
  }
74
78
  const handlePressIn = t4;
75
79
  let t5;
76
- if ($[12] !== isAnimationInFinished || $[13] !== opacity) {
80
+ if ($[13] !== isAnimationInFinished || $[14] !== opacity) {
77
81
  t5 = () => {
78
82
  clearTimeout(pressOutTimeout.current);
79
83
  pressOutTimeout.current = setTimeout(() => {
@@ -83,15 +87,15 @@ export const TouchableOpacity = t0 => {
83
87
  isAnimationInFinished.set(false);
84
88
  }, isAnimationInFinished.get() ? 0 : 150);
85
89
  };
86
- $[12] = isAnimationInFinished;
87
- $[13] = opacity;
88
- $[14] = t5;
90
+ $[13] = isAnimationInFinished;
91
+ $[14] = opacity;
92
+ $[15] = t5;
89
93
  } else {
90
- t5 = $[14];
94
+ t5 = $[15];
91
95
  }
92
96
  const handlePressOut = t5;
93
97
  let t6;
94
- if ($[15] !== handlePressIn || $[16] !== handlePressOut) {
98
+ if ($[16] !== handlePressIn || $[17] !== handlePressOut) {
95
99
  t6 = isActive => {
96
100
  if (isActive) {
97
101
  handlePressIn();
@@ -99,56 +103,57 @@ export const TouchableOpacity = t0 => {
99
103
  handlePressOut();
100
104
  }
101
105
  };
102
- $[15] = handlePressIn;
103
- $[16] = handlePressOut;
104
- $[17] = t6;
106
+ $[16] = handlePressIn;
107
+ $[17] = handlePressOut;
108
+ $[18] = t6;
105
109
  } else {
106
- t6 = $[17];
110
+ t6 = $[18];
107
111
  }
108
112
  const handleActiveStateChange = t6;
109
113
  const animatedStyle = useAnimatedStyle(() => ({
110
114
  opacity: opacity.get()
111
115
  }));
112
116
  let t7;
113
- if ($[18] !== onPress) {
117
+ if ($[19] !== onPress) {
114
118
  t7 = () => {
115
119
  onPress?.();
116
120
  };
117
- $[18] = onPress;
118
- $[19] = t7;
121
+ $[19] = onPress;
122
+ $[20] = t7;
119
123
  } else {
120
- t7 = $[19];
124
+ t7 = $[20];
121
125
  }
122
126
  const handlePress = t7;
123
127
  let t8;
124
- if ($[20] !== animatedStyle || $[21] !== style) {
128
+ if ($[21] !== animatedStyle || $[22] !== style) {
125
129
  t8 = [style, animatedStyle, styles.content];
126
- $[20] = animatedStyle;
127
- $[21] = style;
128
- $[22] = t8;
130
+ $[21] = animatedStyle;
131
+ $[22] = style;
132
+ $[23] = t8;
129
133
  } else {
130
- t8 = $[22];
134
+ t8 = $[23];
131
135
  }
132
136
  const composedStyle = t8;
133
137
  let t9;
134
- if ($[23] !== children || $[24] !== composedStyle) {
138
+ if ($[24] !== children || $[25] !== composedStyle) {
135
139
  t9 = <Animated.View style={composedStyle}>{children}</Animated.View>;
136
- $[23] = children;
137
- $[24] = composedStyle;
138
- $[25] = t9;
140
+ $[24] = children;
141
+ $[25] = composedStyle;
142
+ $[26] = t9;
139
143
  } else {
140
- t9 = $[25];
144
+ t9 = $[26];
141
145
  }
142
146
  let t10;
143
- if ($[26] !== handleActiveStateChange || $[27] !== handlePress || $[28] !== rest || $[29] !== t9) {
144
- t10 = <BaseButton {...rest} onPress={handlePress} onActiveStateChange={handleActiveStateChange}>{t9}</BaseButton>;
145
- $[26] = handleActiveStateChange;
146
- $[27] = handlePress;
147
- $[28] = rest;
148
- $[29] = t9;
149
- $[30] = t10;
147
+ if ($[27] !== buttonStyle || $[28] !== handleActiveStateChange || $[29] !== handlePress || $[30] !== rest || $[31] !== t9) {
148
+ t10 = <BaseButton {...rest} style={buttonStyle} onPress={handlePress} onActiveStateChange={handleActiveStateChange}>{t9}</BaseButton>;
149
+ $[27] = buttonStyle;
150
+ $[28] = handleActiveStateChange;
151
+ $[29] = handlePress;
152
+ $[30] = rest;
153
+ $[31] = t9;
154
+ $[32] = t10;
150
155
  } else {
151
- t10 = $[30];
156
+ t10 = $[32];
152
157
  }
153
158
  return t10;
154
159
  };