@kesha-antonov/react-native-chat 6.0.0 → 6.1.0
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/README.md +28 -5
- package/lib/Actions.d.ts.map +1 -1
- package/lib/Actions.js +33 -27
- package/lib/Actions.js.map +1 -1
- package/lib/Chat/Chat.d.ts.map +1 -1
- package/lib/Chat/Chat.js +253 -203
- package/lib/Chat/Chat.js.map +1 -1
- package/lib/Chat/ChatMessageList.d.ts.map +1 -1
- package/lib/Chat/ChatMessageList.js +4 -0
- package/lib/Chat/ChatMessageList.js.map +1 -1
- package/lib/Chat/index.d.ts +9 -1
- package/lib/Chat/index.d.ts.map +1 -1
- package/lib/Chat/index.js +14 -1
- package/lib/Chat/index.js.map +1 -1
- package/lib/Chat/types.d.ts +29 -0
- package/lib/Chat/types.d.ts.map +1 -1
- package/lib/Chat/types.js.map +1 -1
- package/lib/Chat/useMessageActions.d.ts +1 -0
- package/lib/Chat/useMessageActions.d.ts.map +1 -1
- package/lib/Chat/useMessageActions.js +97 -89
- package/lib/Chat/useMessageActions.js.map +1 -1
- package/lib/ChatHeader.d.ts +50 -0
- package/lib/ChatHeader.d.ts.map +1 -0
- package/lib/ChatHeader.js +356 -0
- package/lib/ChatHeader.js.map +1 -0
- package/lib/ChatList/ChatListCell.d.ts +1 -1
- package/lib/ChatList/ChatListCell.d.ts.map +1 -1
- package/lib/ChatList/ChatListCell.js +42 -11
- package/lib/ChatList/ChatListCell.js.map +1 -1
- package/lib/ChatList/index.js +332 -323
- package/lib/ChatList/index.js.map +1 -1
- package/lib/ChatList/types.d.ts +17 -1
- package/lib/ChatList/types.d.ts.map +1 -1
- package/lib/ChatList/types.js.map +1 -1
- package/lib/ChatList/utils.d.ts +4 -1
- package/lib/ChatList/utils.d.ts.map +1 -1
- package/lib/ChatList/utils.js +3 -2
- package/lib/ChatList/utils.js.map +1 -1
- package/lib/Composer.js +5 -1
- package/lib/Composer.js.map +1 -1
- package/lib/InputToolbar/fragments.d.ts +1 -1
- package/lib/InputToolbar/fragments.d.ts.map +1 -1
- package/lib/InputToolbar/fragments.js +9 -7
- package/lib/InputToolbar/fragments.js.map +1 -1
- package/lib/InputToolbar/index.d.ts.map +1 -1
- package/lib/InputToolbar/index.js +3 -2
- package/lib/InputToolbar/index.js.map +1 -1
- package/lib/InputToolbar/types.d.ts +6 -0
- package/lib/InputToolbar/types.d.ts.map +1 -1
- package/lib/InputToolbar/types.js.map +1 -1
- package/lib/InputToolbar/useActionsFragment.d.ts.map +1 -1
- package/lib/InputToolbar/useActionsFragment.js +83 -59
- package/lib/InputToolbar/useActionsFragment.js.map +1 -1
- package/lib/InputToolbar/useKeyboardInset.d.ts +1 -1
- package/lib/InputToolbar/useKeyboardInset.d.ts.map +1 -1
- package/lib/InputToolbar/useKeyboardInset.js +2 -2
- package/lib/InputToolbar/useKeyboardInset.js.map +1 -1
- package/lib/MessageText.d.ts.map +1 -1
- package/lib/MessageText.js +39 -33
- package/lib/MessageText.js.map +1 -1
- package/lib/MessagesContainer/index.d.ts.map +1 -1
- package/lib/MessagesContainer/index.js +113 -94
- package/lib/MessagesContainer/index.js.map +1 -1
- package/lib/MessagesContainer/types.d.ts +5 -2
- package/lib/MessagesContainer/types.d.ts.map +1 -1
- package/lib/MessagesContainer/types.js.map +1 -1
- package/lib/MessagesContainer/useChained.d.ts +6 -0
- package/lib/MessagesContainer/useChained.d.ts.map +1 -0
- package/lib/MessagesContainer/useChained.js +38 -0
- package/lib/MessagesContainer/useChained.js.map +1 -0
- package/lib/MessagesContainer/useListChrome.d.ts.map +1 -1
- package/lib/MessagesContainer/useListChrome.js +1 -1
- package/lib/MessagesContainer/useListChrome.js.map +1 -1
- package/lib/Models.d.ts +2 -1
- package/lib/Models.d.ts.map +1 -1
- package/lib/Models.js.map +1 -1
- package/lib/Send.d.ts.map +1 -1
- package/lib/Send.js +18 -13
- package/lib/Send.js.map +1 -1
- package/lib/Theme.d.ts +11 -0
- package/lib/Theme.d.ts.map +1 -1
- package/lib/Theme.js +17 -1
- package/lib/Theme.js.map +1 -1
- package/lib/attachments/AttachmentButton.js +17 -15
- package/lib/attachments/AttachmentButton.js.map +1 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts +3 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/GalleryGrid.js +69 -68
- package/lib/attachments/AttachmentMenu/GalleryGrid.js.map +1 -1
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts +3 -1
- package/lib/attachments/AttachmentMenu/TabPanel.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/TabPanel.js +23 -21
- package/lib/attachments/AttachmentMenu/TabPanel.js.map +1 -1
- package/lib/attachments/AttachmentMenu/index.d.ts +6 -2
- package/lib/attachments/AttachmentMenu/index.d.ts.map +1 -1
- package/lib/attachments/AttachmentMenu/index.js +259 -247
- package/lib/attachments/AttachmentMenu/index.js.map +1 -1
- package/lib/attachments/buildMessages.d.ts +4 -4
- package/lib/attachments/buildMessages.d.ts.map +1 -1
- package/lib/attachments/buildMessages.js +9 -8
- package/lib/attachments/buildMessages.js.map +1 -1
- package/lib/attachments/types.d.ts +19 -0
- package/lib/attachments/types.d.ts.map +1 -1
- package/lib/attachments/types.js.map +1 -1
- package/lib/components/TouchableOpacity.d.ts +5 -0
- package/lib/components/TouchableOpacity.d.ts.map +1 -1
- package/lib/components/TouchableOpacity.js +59 -54
- package/lib/components/TouchableOpacity.js.map +1 -1
- package/lib/components/defaultMessageActions.d.ts +3 -1
- package/lib/components/defaultMessageActions.d.ts.map +1 -1
- package/lib/components/defaultMessageActions.js +9 -1
- package/lib/components/defaultMessageActions.js.map +1 -1
- package/lib/components/textHighlight.d.ts +14 -0
- package/lib/components/textHighlight.d.ts.map +1 -0
- package/lib/components/textHighlight.js +39 -0
- package/lib/components/textHighlight.js.map +1 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts +6 -0
- package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
- package/lib/hooks/useKeyboardVerticalOffset.js +35 -13
- package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
- package/lib/i18n.d.ts +2 -0
- package/lib/i18n.d.ts.map +1 -1
- package/lib/i18n.js +1 -0
- package/lib/i18n.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/linkParser.d.ts +4 -1
- package/lib/linkParser.d.ts.map +1 -1
- package/lib/linkParser.js +115 -78
- package/lib/linkParser.js.map +1 -1
- package/lib/locales/ar.d.ts.map +1 -1
- package/lib/locales/ar.js +1 -0
- package/lib/locales/ar.js.map +1 -1
- package/lib/locales/de.d.ts.map +1 -1
- package/lib/locales/de.js +1 -0
- package/lib/locales/de.js.map +1 -1
- package/lib/locales/es.d.ts.map +1 -1
- package/lib/locales/es.js +1 -0
- package/lib/locales/es.js.map +1 -1
- package/lib/locales/fr.d.ts.map +1 -1
- package/lib/locales/fr.js +1 -0
- package/lib/locales/fr.js.map +1 -1
- package/lib/locales/hi.d.ts.map +1 -1
- package/lib/locales/hi.js +1 -0
- package/lib/locales/hi.js.map +1 -1
- package/lib/locales/id.d.ts.map +1 -1
- package/lib/locales/id.js +1 -0
- package/lib/locales/id.js.map +1 -1
- package/lib/locales/it.d.ts.map +1 -1
- package/lib/locales/it.js +1 -0
- package/lib/locales/it.js.map +1 -1
- package/lib/locales/ja.d.ts.map +1 -1
- package/lib/locales/ja.js +1 -0
- package/lib/locales/ja.js.map +1 -1
- package/lib/locales/ko.d.ts.map +1 -1
- package/lib/locales/ko.js +1 -0
- package/lib/locales/ko.js.map +1 -1
- package/lib/locales/nl.d.ts.map +1 -1
- package/lib/locales/nl.js +1 -0
- package/lib/locales/nl.js.map +1 -1
- package/lib/locales/pl.d.ts.map +1 -1
- package/lib/locales/pl.js +1 -0
- package/lib/locales/pl.js.map +1 -1
- package/lib/locales/pt.d.ts.map +1 -1
- package/lib/locales/pt.js +1 -0
- package/lib/locales/pt.js.map +1 -1
- package/lib/locales/ru.d.ts.map +1 -1
- package/lib/locales/ru.js +1 -0
- package/lib/locales/ru.js.map +1 -1
- package/lib/locales/tr.d.ts.map +1 -1
- package/lib/locales/tr.js +1 -0
- package/lib/locales/tr.js.map +1 -1
- package/lib/locales/zh.d.ts.map +1 -1
- package/lib/locales/zh.js +1 -0
- package/lib/locales/zh.js.map +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useCallback","useContext","useEffect","useLayoutEffect","useMemo","useRef","useState","Alert","BackHandler","Pressable","StyleSheet","Text","TextInput","useColorScheme","View","GestureHandlerRootView","Touchable","Animated","Easing","FadeIn","FadeOut","LinearTransition","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","withTiming","SafeAreaInsetsContext","ChatContext","impactHaptic","Icon","normalizeColorScheme","formatLabel","resolveLabels","isRTLLocale","resolveTheme","ChatListAvatar","CHAT_LIST_ROW_HEIGHT","ChatListCell","ChatListShimmer","matchesChatQuery","sortChats","formatChatListDate","getChatPreview","getInitials","useChatList","LIST_TRANSITION","duration","easing","bezier","FAB_TIMING","FAB_SIZE","FAB_HIDDEN_OFFSET","HEADER_HEIGHT","ARCHIVE_ROW_ID","isArchiveRow","row","id","ChatList","props","$","_c","theme","darkTheme","colorScheme","colorSchemeProp","locale","labels","icons","systemColorScheme","t0","undefined","t1","t2","resolvedTheme","t3","resolvedLabels","t4","isRTL","t5","t6","t7","t8","t9","t10","t11","actionSheet","_temp2","getLocale","getIsRTL","getColorScheme","getTheme","getIcons","getLabels","context","t12","t13","styles","fill","showActionSheetWithOptions","_temp","ChatListContent","chats","user","onPressChat","onLongPressChat","onPinChats","onMuteChats","onArchiveChats","onDeleteChats","onReorderPinnedChats","onPressNewChat","isDeleteConfirmed","isSwipeEnabled","isLoading","isSortEnabled","isHeaderVisible","title","renderHeaderRight","isTopInsetApplied","isSearchEnabled","filterChat","onSearchChange","isArchiveOpen","isArchiveOpenProp","onArchiveOpenChange","renderChat","renderEmpty","listProps","style","colors","chatList","insets","topInset","top","isArchiveOpenState","setIsArchiveOpenState","isOpen","setIsArchiveOpen","Symbol","for","selectedIds","setSelectedIds","query","setQueryState","next","setQuery","isSelectionMode","length","sorted","t14","filter","_temp3","mainChats","t15","_temp4","archivedChats","t16","bb0","source","t17","t18","chat_1","chat","rows","ids","kept","some","chat_2","t19","t20","id_0","find","chat_3","map","_temp5","selectedChats","clearSelection","t21","t22","subscription","addEventListener","remove","t23","chat_5","ids_0","includes","id_1","toggleSelected","t24","chat_6","onPressRow","t25","chat_7","onLongPressRow","t26","chat_8","isArchived","onSwipeRow","t27","_temp6","_temp7","pinnedIds","canReorder","dragId","dragFrom","dragY","isDragActive","t28","from","y","isActive","drag","liftedId","setLiftedId","isSettling","setIsSettling","dropCount","setDropCount","t29","chat_11","String","onDragStart","t30","chat_12","toIndex","order","id_2","splice","id_3","index","_temp8","onDrop","t31","t32","set","timer","setTimeout","clearTimeout","t33","dragHandlersRef","t34","current","t35","chat_13","stableOnStart","t36","chat_14","toIndex_0","stableOnDrop","t37","chat_15","index_0","indexOf","count","onStart","reorderFor","t38","action","runOnSelection","t39","count_0","alert","chatListDeleteTitle","chatListDeleteManyTitle","chatListDeleteMessage","text","cancel","actionDelete","onPress","onDeleteSelected","fabOffset","lastScrollY","onScroll","event","contentOffset","delta","value","Math","abs","target","fabStyle","transform","translateY","t40","t41","item","index_1","cellProps","isSelected","onLongPress","onSwipe","isLast","reorder","isReordering","isPinned","renderItem","every","_temp9","isAllPinned","t42","_temp0","isAllMuted","headerTitle","chatListArchived","chatListTitle","t43","message","empty","color","chatListNoResults","chatListEmpty","t44","background","backgroundColor","t45","t46","headerBackground","headerText","header","paddingTop","headerBar","headerContent","cancelSelection","selectionCount","spacer","actionUnpin","actionPin","selection","chatListUnmute","chatListMute","selection_0","chatListUnarchive","chatListArchive","selection_1","chatListBack","chatListSearch","searchInput","headerTitleStart","t47","EMPTY_ROWS","t48","t49","t50","item_1","liftedCell","listContentWithFab","t51","t52","t53","_temp1","t54","absoluteFill","t55","t56","fab","fabIcon","fabWrap","chatListNewChat","t57","item_0","chat_17","isMuted","chat_16","chat_10","chat_9","chat_4","chat_0","HeaderButton","icon","label","slice","headerButton","ArchiveRow","unread","reduce","_temp10","archiveRow","pressed","archiveAvatar","name","archiveTitle","archivePreview","_temp11","join","badgeMuted","badgeText","archiveBadge","archiveBadgeText","archiveBottom","archiveContent","divider","archiveDivider","sum","unreadCount","create","flex","zIndex","height","flexDirection","alignItems","paddingHorizontal","width","justifyContent","flexShrink","fontSize","fontWeight","marginStart","textAlign","paddingBottom","marginTop","position","end","bottom","borderRadius","boxShadow","start","paddingEnd","minWidth","hairlineWidth"],"sources":["../../src/ChatList/index.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport {\n Alert,\n BackHandler,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n useColorScheme,\n View,\n} from 'react-native'\nimport { GestureHandlerRootView, Touchable } from 'react-native-gesture-handler'\nimport Animated, {\n Easing,\n FadeIn,\n FadeOut,\n LinearTransition,\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated'\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context'\n\nimport { ChatContext, IChatContext } from '../ChatContext'\nimport { impactHaptic } from '../components/haptics'\nimport { Icon } from '../components/Icon'\nimport { normalizeColorScheme } from '../hooks/useColorScheme'\nimport { formatLabel, resolveLabels } from '../i18n'\nimport { IconName } from '../Icons'\nimport { isRTLLocale } from '../rtl'\nimport { ChatTheme, resolveTheme } from '../Theme'\nimport { ChatListAvatar } from './ChatListAvatar'\nimport { CHAT_LIST_ROW_HEIGHT, ChatListCell } from './ChatListCell'\nimport { ChatListShimmer } from './ChatListShimmer'\nimport { ChatListDrag, ChatListItem, ChatListProps, ChatListReorder } from './types'\nimport { matchesChatQuery, sortChats } from './utils'\n\nexport * from './types'\nexport { ChatListAvatar } from './ChatListAvatar'\nexport { ChatListCell, CHAT_LIST_ROW_HEIGHT } from './ChatListCell'\nexport { ChatListShimmer } from './ChatListShimmer'\nexport { formatChatListDate, getChatPreview, getInitials, matchesChatQuery, sortChats } from './utils'\nexport { useChatList } from './useChatList'\n\n/** Rows move over 250ms on bezier(0.199, 0.011, 0.279, 0.91). */\nconst LIST_TRANSITION = LinearTransition.duration(250).easing(Easing.bezier(0.199, 0.011, 0.279, 0.91))\n/** The new-chat button hides and shows over 380ms on an ease-out-quint curve... */\nconst FAB_TIMING = { duration: 380, easing: Easing.bezier(0.23, 1, 0.32, 1) }\n/** ...moving its size, its 14 margin and 40 more. */\nconst FAB_SIZE = 48\nconst FAB_HIDDEN_OFFSET = FAB_SIZE + 14 + 40\nconst HEADER_HEIGHT = 56\n\nconst ARCHIVE_ROW_ID = '__chat-list-archive__'\ntype Row<TChat> = TChat | { id: typeof ARCHIVE_ROW_ID }\n\nconst isArchiveRow = <TChat, >(row: Row<TChat>): row is { id: typeof ARCHIVE_ROW_ID } =>\n (row as { id: unknown }).id === ARCHIVE_ROW_ID\n\n/**\n * A list of chats with everything a messenger's main screen has: a header with search and a\n * selection bar (pin, mute, archive, delete), an \"Archived Chats\" folder, swipe to archive,\n * pinned chats you can drag into order, unread counters, typing and drafts, a loading\n * placeholder and a new-chat button. Feed it your chats and wire the callbacks to your backend.\n */\nexport function ChatList<TChat extends ChatListItem = ChatListItem> (props: ChatListProps<TChat>) {\n const {\n theme,\n darkTheme,\n colorScheme: colorSchemeProp,\n locale,\n labels,\n icons,\n } = props\n const systemColorScheme = useColorScheme()\n const colorScheme = normalizeColorScheme(colorSchemeProp !== undefined ? colorSchemeProp : systemColorScheme)\n const resolvedTheme = useMemo(() => resolveTheme(colorScheme, theme, darkTheme), [colorScheme, theme, darkTheme])\n const resolvedLabels = useMemo(() => resolveLabels(locale, labels), [locale, labels])\n const isRTL = useMemo(() => isRTLLocale(locale), [locale])\n const context = useMemo<IChatContext>(() => ({\n actionSheet: () => ({ showActionSheetWithOptions: () => {} }),\n getLocale: () => locale ?? 'en',\n getIsRTL: () => isRTL,\n getColorScheme: () => colorScheme,\n getTheme: () => resolvedTheme,\n getIcons: () => icons,\n getLabels: () => resolvedLabels,\n }), [locale, isRTL, colorScheme, resolvedTheme, icons, resolvedLabels])\n\n return (\n <GestureHandlerRootView style={styles.fill}>\n <ChatContext.Provider value={context}>\n <ChatListContent<TChat> {...props} resolvedTheme={resolvedTheme} />\n </ChatContext.Provider>\n </GestureHandlerRootView>\n )\n}\n\nfunction ChatListContent<TChat extends ChatListItem> ({\n chats,\n user,\n onPressChat,\n onLongPressChat,\n onPinChats,\n onMuteChats,\n onArchiveChats,\n onDeleteChats,\n onReorderPinnedChats,\n onPressNewChat,\n isDeleteConfirmed = true,\n isSwipeEnabled = true,\n isLoading = false,\n isSortEnabled = true,\n isHeaderVisible = true,\n title,\n renderHeaderRight,\n isTopInsetApplied = true,\n isSearchEnabled = true,\n filterChat = matchesChatQuery,\n onSearchChange,\n isArchiveOpen: isArchiveOpenProp,\n onArchiveOpenChange,\n renderChat,\n renderEmpty,\n listProps,\n style,\n resolvedTheme,\n}: ChatListProps<TChat> & { resolvedTheme: ChatTheme }) {\n const colors = resolvedTheme.chatList\n const { getLabels } = useContext(ChatContext)\n const labels = getLabels!()!\n const insets = useContext(SafeAreaInsetsContext)\n const topInset = isHeaderVisible && isTopInsetApplied ? insets?.top ?? 0 : 0\n\n const [isArchiveOpenState, setIsArchiveOpenState] = useState(false)\n const isArchiveOpen = isArchiveOpenProp ?? isArchiveOpenState\n const setIsArchiveOpen = useCallback((isOpen: boolean) => {\n setIsArchiveOpenState(isOpen)\n onArchiveOpenChange?.(isOpen)\n }, [onArchiveOpenChange])\n\n const [selectedIds, setSelectedIds] = useState<TChat['id'][]>([])\n const [query, setQueryState] = useState<string | null>(null)\n const setQuery = useCallback((next: string | null) => {\n setQueryState(next)\n onSearchChange?.(next)\n }, [onSearchChange])\n const isSelectionMode = selectedIds.length > 0\n\n const sorted = useMemo(() => (isSortEnabled ? sortChats(chats) : chats), [chats, isSortEnabled])\n const mainChats = useMemo(() => sorted.filter(chat => !chat.isArchived), [sorted])\n const archivedChats = useMemo(() => sorted.filter(chat => chat.isArchived), [sorted])\n\n const rows = useMemo<Row<TChat>[]>(() => {\n const source = isArchiveOpen ? archivedChats : mainChats\n if (query)\n return source.filter(chat => filterChat(chat, query))\n // The archive sits on top of the list as a folder row.\n if (!isArchiveOpen && archivedChats.length)\n return [{ id: ARCHIVE_ROW_ID }, ...source]\n return source\n }, [isArchiveOpen, archivedChats, mainChats, query, filterChat])\n\n // Selected chats that are gone (deleted, or moved by an action) drop out of the selection.\n useEffect(() => {\n setSelectedIds(ids => {\n const kept = ids.filter(id => chats.some(chat => chat.id === id))\n return kept.length === ids.length ? ids : kept\n })\n }, [chats])\n const selectedChats = useMemo(\n () => selectedIds.map(id => chats.find(chat => chat.id === id)).filter((chat): chat is TChat => !!chat),\n [selectedIds, chats]\n )\n const clearSelection = useCallback(() => setSelectedIds([]), [])\n\n // Android's back closes selection, search and the archive before leaving the screen.\n useEffect(() => {\n const subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n if (isSelectionMode)\n clearSelection()\n else if (query !== null)\n setQuery(null)\n else if (isArchiveOpen)\n setIsArchiveOpen(false)\n else\n return false\n return true\n })\n return () => subscription.remove()\n }, [isSelectionMode, query, isArchiveOpen, clearSelection, setQuery, setIsArchiveOpen])\n\n const toggleSelected = useCallback((chat: TChat) => {\n setSelectedIds(ids => (ids.includes(chat.id) ? ids.filter(id => id !== chat.id) : [...ids, chat.id]))\n }, [])\n\n const onPressRow = useCallback((chat: TChat) => {\n if (isSelectionMode) {\n toggleSelected(chat)\n return\n }\n onPressChat?.(chat)\n }, [isSelectionMode, onPressChat, toggleSelected])\n\n // A long-press selects the chat instead of opening a menu.\n const onLongPressRow = useCallback((chat: TChat) => {\n if (onLongPressChat) {\n onLongPressChat(chat)\n return\n }\n impactHaptic('Medium')\n toggleSelected(chat)\n }, [onLongPressChat, toggleSelected])\n\n const onSwipeRow = useCallback((chat: TChat) => {\n onArchiveChats?.([chat], !chat.isArchived)\n }, [onArchiveChats])\n\n // Pinned chats in the main list can be dragged into a new order.\n const pinnedIds = useMemo(() => mainChats.filter(chat => chat.isPinned).map(chat => chat.id), [mainChats])\n const canReorder = !!onReorderPinnedChats && !isArchiveOpen && !query\n const dragId = useSharedValue('')\n const dragFrom = useSharedValue(0)\n const dragY = useSharedValue(0)\n const isDragActive = useSharedValue(false)\n const drag = useMemo<ChatListDrag>(() => ({ id: dragId, from: dragFrom, y: dragY, isActive: isDragActive }), [dragId, dragFrom, dragY, isDragActive])\n // While a row is lifted, and for the frame it lands in, the list does not animate its own\n // layout: the rows are already where the new order puts them.\n const [liftedId, setLiftedId] = useState<string | null>(null)\n const [isSettling, setIsSettling] = useState(false)\n const [dropCount, setDropCount] = useState(0)\n\n const onDragStart = useCallback((chat: TChat) => {\n setLiftedId(String(chat.id))\n setIsSettling(true)\n if (!selectedIds.includes(chat.id)) {\n impactHaptic('Medium')\n toggleSelected(chat)\n }\n }, [selectedIds, toggleSelected])\n\n const onDrop = useCallback((chat: TChat, toIndex: number) => {\n const order = pinnedIds.filter(id => id !== chat.id)\n order.splice(toIndex, 0, chat.id)\n if (order.some((id, index) => id !== pinnedIds[index]))\n onReorderPinnedChats?.(order)\n setLiftedId(null)\n setDropCount(count => count + 1)\n }, [pinnedIds, onReorderPinnedChats])\n\n // Committed with the new order: the rows drop their offsets in the same frame.\n useLayoutEffect(() => {\n if (!dropCount)\n return\n isDragActive.set(false)\n dragY.set(0)\n dragId.set('')\n const timer = setTimeout(() => setIsSettling(false), 50)\n return () => clearTimeout(timer)\n }, [dropCount, isDragActive, dragY, dragId])\n\n // Stable handlers for the rows (which only re-render when what they show changes).\n const dragHandlersRef = useRef({ onDragStart, onDrop })\n useLayoutEffect(() => {\n dragHandlersRef.current = { onDragStart, onDrop }\n })\n const stableOnStart = useCallback((chat: TChat) => dragHandlersRef.current.onDragStart(chat), [])\n const stableOnDrop = useCallback((chat: TChat, toIndex: number) => dragHandlersRef.current.onDrop(chat, toIndex), [])\n\n const reorderFor = useCallback((chat: TChat): ChatListReorder<TChat> | undefined => {\n const index = pinnedIds.indexOf(chat.id)\n if (!canReorder || index < 0)\n return undefined\n return { index, count: pinnedIds.length, drag, onStart: stableOnStart, onDrop: stableOnDrop }\n }, [pinnedIds, canReorder, drag, stableOnStart, stableOnDrop])\n\n const runOnSelection = useCallback((action: (selection: TChat[]) => void) => {\n action(selectedChats)\n clearSelection()\n }, [selectedChats, clearSelection])\n\n const onDeleteSelected = useCallback(() => {\n if (!onDeleteChats)\n return\n if (!isDeleteConfirmed) {\n runOnSelection(onDeleteChats)\n return\n }\n const count = selectedChats.length\n Alert.alert(\n count === 1 ? labels.chatListDeleteTitle : formatLabel(labels.chatListDeleteManyTitle, { count }),\n labels.chatListDeleteMessage,\n [\n { text: labels.cancel, style: 'cancel' },\n { text: labels.actionDelete, style: 'destructive', onPress: () => runOnSelection(onDeleteChats) },\n ]\n )\n }, [onDeleteChats, isDeleteConfirmed, selectedChats.length, labels, runOnSelection])\n\n // The new-chat button hides while you scroll down the list and comes back on the way up.\n const fabOffset = useSharedValue(0)\n const lastScrollY = useSharedValue(0)\n const onScroll = useAnimatedScrollHandler(event => {\n const y = event.contentOffset.y\n const delta = y - lastScrollY.value\n lastScrollY.value = y\n if (Math.abs(delta) < 2)\n return\n const target = delta > 0 && y > CHAT_LIST_ROW_HEIGHT ? FAB_HIDDEN_OFFSET : 0\n if (target !== fabOffset.value)\n fabOffset.value = withTiming(target, FAB_TIMING)\n })\n const fabStyle = useAnimatedStyle(() => ({ transform: [{ translateY: fabOffset.value }] }))\n\n const renderItem = useCallback(({ item, index }: { item: Row<TChat>, index: number }) => {\n if (isArchiveRow(item))\n return <ArchiveRow chats={archivedChats} onPress={() => setIsArchiveOpen(true)} />\n const cellProps = {\n chat: item,\n user,\n isSelected: selectedIds.includes(item.id),\n isSelectionMode,\n onPress: onPressRow,\n onLongPress: onLongPressRow,\n onSwipe: onArchiveChats && isSwipeEnabled ? onSwipeRow : undefined,\n isLast: index === rows.length - 1,\n reorder: reorderFor(item),\n isReordering: isSelectionMode && canReorder && pinnedIds.length > 1 && !!item.isPinned,\n }\n return renderChat ? <>{renderChat(cellProps)}</> : <ChatListCell<TChat> {...cellProps} />\n }, [archivedChats, setIsArchiveOpen, user, selectedIds, isSelectionMode, onPressRow, onLongPressRow, onArchiveChats, isSwipeEnabled, onSwipeRow, rows.length, reorderFor, canReorder, pinnedIds.length, renderChat])\n\n const isAllPinned = selectedChats.length > 0 && selectedChats.every(chat => chat.isPinned)\n const isAllMuted = selectedChats.length > 0 && selectedChats.every(chat => chat.isMuted)\n const headerTitle = isArchiveOpen ? labels.chatListArchived : title ?? labels.chatListTitle\n\n const empty = renderEmpty\n ? <>{renderEmpty(!!query)}</>\n : <Text style={[styles.empty, { color: colors.message }]}>{query ? labels.chatListNoResults : labels.chatListEmpty}</Text>\n\n return (\n <View style={[styles.fill, { backgroundColor: colors.background }, style]}>\n {isHeaderVisible && (\n <View style={[styles.header, { paddingTop: topInset, backgroundColor: colors.headerBackground }]}>\n <View style={styles.headerBar}>\n {isSelectionMode\n ? (\n <Animated.View key='selection' entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n <HeaderButton icon='close' color={colors.headerText} onPress={clearSelection} label={labels.cancelSelection} />\n <Text style={[styles.headerTitle, styles.selectionCount, { color: colors.headerText }]}>{selectedIds.length}</Text>\n <View style={styles.spacer} />\n {onPinChats && !isArchiveOpen && (\n <HeaderButton\n icon={isAllPinned ? 'pinOff' : 'pushpin'}\n color={colors.headerText}\n label={isAllPinned ? labels.actionUnpin : labels.actionPin}\n onPress={() => runOnSelection(selection => onPinChats(selection, !isAllPinned))}\n />\n )}\n {onMuteChats && (\n <HeaderButton\n icon={isAllMuted ? 'unmute' : 'mute'}\n color={colors.headerText}\n label={isAllMuted ? labels.chatListUnmute : labels.chatListMute}\n onPress={() => runOnSelection(selection => onMuteChats(selection, !isAllMuted))}\n />\n )}\n {onArchiveChats && (\n <HeaderButton\n icon={isArchiveOpen ? 'unarchive' : 'archive'}\n color={colors.headerText}\n label={isArchiveOpen ? labels.chatListUnarchive : labels.chatListArchive}\n onPress={() => runOnSelection(selection => onArchiveChats(selection, !isArchiveOpen))}\n />\n )}\n {onDeleteChats && (\n <HeaderButton icon='trash' color={colors.headerText} label={labels.actionDelete} onPress={onDeleteSelected} />\n )}\n </Animated.View>\n )\n : query !== null\n ? (\n <Animated.View key='search' entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n <HeaderButton icon='arrowLeft' color={colors.headerText} onPress={() => setQuery(null)} label={labels.chatListBack} />\n <TextInput\n autoFocus\n value={query}\n onChangeText={setQuery}\n placeholder={labels.chatListSearch}\n placeholderTextColor={colors.message}\n style={[styles.searchInput, { color: colors.headerText }]}\n returnKeyType='search'\n />\n </Animated.View>\n )\n : (\n <Animated.View key={isArchiveOpen ? 'archive' : 'main'} entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n {isArchiveOpen && <HeaderButton icon='arrowLeft' color={colors.headerText} onPress={() => setIsArchiveOpen(false)} label={labels.chatListBack} />}\n <Text style={[styles.headerTitle, !isArchiveOpen && styles.headerTitleStart, { color: colors.headerText }]} numberOfLines={1}>\n {headerTitle}\n </Text>\n <View style={styles.spacer} />\n {renderHeaderRight?.()}\n {isSearchEnabled && <HeaderButton icon='search' color={colors.headerText} onPress={() => setQuery('')} label={labels.chatListSearch} />}\n </Animated.View>\n )}\n </View>\n </View>\n )}\n\n <View style={styles.fill}>\n <Animated.FlatList<Row<TChat>>\n data={isLoading ? EMPTY_ROWS as Row<TChat>[] : rows}\n keyExtractor={item => String(item.id)}\n renderItem={renderItem}\n itemLayoutAnimation={isSettling ? undefined : LIST_TRANSITION}\n extraData={liftedId}\n // The lifted row passes over the rows below it too.\n CellRendererComponentStyle={({ item }: { item: Row<TChat> }) => (String(item.id) === liftedId ? styles.liftedCell : undefined)}\n onScroll={onScroll}\n scrollEventThrottle={16}\n keyboardShouldPersistTaps='handled'\n contentContainerStyle={onPressNewChat ? styles.listContentWithFab : undefined}\n ListEmptyComponent={isLoading ? undefined : empty}\n {...listProps as object}\n />\n {isLoading && (\n // The rows fade in over the placeholder.\n <Animated.View exiting={FadeOut.duration(150)} style={StyleSheet.absoluteFill} pointerEvents='none'>\n <ChatListShimmer />\n </Animated.View>\n )}\n </View>\n\n {onPressNewChat && !isArchiveOpen && !isSelectionMode && (\n <Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(200)} style={[styles.fabWrap, fabStyle]}>\n <Touchable\n style={[styles.fab, { backgroundColor: colors.fab }]}\n activeScale={0.9}\n onPress={onPressNewChat}\n accessibilityRole='button'\n accessibilityLabel={labels.chatListNewChat}\n >\n <Icon name='pencil' size={24} color={colors.fabIcon} fallback={<Text style={{ color: colors.fabIcon }}>+</Text>} />\n </Touchable>\n </Animated.View>\n )}\n </View>\n )\n}\n\nfunction HeaderButton ({ icon, color, label, onPress }: { icon: IconName, color: string, label: string, onPress: () => void }) {\n return (\n <Pressable onPress={onPress} hitSlop={4} style={styles.headerButton} accessibilityRole='button' accessibilityLabel={label}>\n <Icon name={icon} size={24} color={color} fallback={<Text style={{ color }}>{label.slice(0, 1)}</Text>} />\n </Pressable>\n )\n}\n\n/** The \"Archived Chats\" folder row: a grey archive avatar and the names inside. */\nfunction ArchiveRow ({ chats, onPress }: { chats: ChatListItem[], onPress: () => void }) {\n const { getTheme, getLabels } = useContext(ChatContext)\n const colors = getTheme!()!.chatList\n const labels = getLabels!()!\n const unread = chats.reduce((sum, chat) => sum + (chat.unreadCount ?? 0), 0)\n\n return (\n <Touchable\n style={[styles.archiveRow, { backgroundColor: colors.background }]}\n underlayColor={colors.pressed}\n activeUnderlayOpacity={1}\n onPress={onPress}\n accessibilityRole='button'\n accessibilityLabel={labels.chatListArchived}\n >\n <View style={styles.archiveAvatar}>\n <ChatListAvatar id='archive' title={labels.chatListArchived} size={52} isArchive />\n </View>\n <View style={styles.archiveContent}>\n <Text style={[styles.archiveTitle, { color: colors.name }]} numberOfLines={1}>{labels.chatListArchived}</Text>\n <View style={styles.archiveBottom}>\n <Text style={[styles.archivePreview, { color: colors.message }]} numberOfLines={1}>\n {chats.map(chat => chat.title).join(', ')}\n </Text>\n {unread > 0 && (\n <View style={[styles.archiveBadge, { backgroundColor: colors.badgeMuted }]}>\n <Text style={[styles.archiveBadgeText, { color: colors.badgeText }]}>{unread}</Text>\n </View>\n )}\n </View>\n </View>\n <View style={[styles.archiveDivider, { backgroundColor: colors.divider }]} />\n </Touchable>\n )\n}\n\nconst EMPTY_ROWS: unknown[] = []\n\nconst styles = StyleSheet.create({\n fill: {\n flex: 1,\n },\n liftedCell: {\n zIndex: 1,\n },\n header: {\n zIndex: 1,\n },\n headerBar: {\n height: HEADER_HEIGHT,\n },\n headerContent: {\n ...StyleSheet.absoluteFill,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 4,\n },\n headerButton: {\n width: 48,\n height: 48,\n alignItems: 'center',\n justifyContent: 'center',\n },\n headerTitle: {\n flexShrink: 1,\n fontSize: 20,\n fontWeight: '500',\n marginStart: 8,\n },\n headerTitleStart: {\n marginStart: 14,\n },\n selectionCount: {\n fontSize: 18,\n marginStart: 14,\n },\n spacer: {\n flex: 1,\n },\n searchInput: {\n flex: 1,\n fontSize: 18,\n marginStart: 8,\n textAlign: 'auto',\n },\n listContentWithFab: {\n paddingBottom: FAB_SIZE + 40,\n },\n empty: {\n textAlign: 'center',\n marginTop: 48,\n fontSize: 15,\n },\n // 20 from the end, 14 from the bottom.\n fabWrap: {\n position: 'absolute',\n end: 20,\n bottom: 14,\n },\n fab: {\n width: FAB_SIZE,\n height: FAB_SIZE,\n borderRadius: FAB_SIZE / 2,\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.2)',\n },\n archiveRow: {\n height: CHAT_LIST_ROW_HEIGHT,\n flexDirection: 'row',\n },\n archiveAvatar: {\n position: 'absolute',\n start: 11,\n top: 9,\n },\n archiveContent: {\n flex: 1,\n marginStart: 76,\n paddingEnd: 15,\n },\n archiveTitle: {\n marginTop: 14,\n height: 19,\n fontSize: 16,\n fontWeight: '500',\n textAlign: 'left',\n },\n archiveBottom: {\n marginTop: 5,\n height: 20.666,\n flexDirection: 'row',\n alignItems: 'center',\n },\n archivePreview: {\n flex: 1,\n fontSize: 15,\n textAlign: 'left',\n },\n archiveBadge: {\n minWidth: 20.666,\n height: 20.666,\n borderRadius: 11.5,\n paddingHorizontal: 6.333,\n marginStart: 6,\n alignItems: 'center',\n justifyContent: 'center',\n },\n archiveBadgeText: {\n fontSize: 13,\n fontWeight: '500',\n },\n archiveDivider: {\n position: 'absolute',\n start: 72,\n end: 0,\n bottom: 0,\n height: StyleSheet.hairlineWidth,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useCallback","useContext","useEffect","useLayoutEffect","useMemo","useRef","useState","Alert","BackHandler","Pressable","StyleSheet","Text","TextInput","useColorScheme","View","GestureHandlerRootView","Touchable","Animated","Easing","FadeIn","FadeOut","LinearTransition","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","withTiming","SafeAreaInsetsContext","ChatContext","impactHaptic","Icon","normalizeColorScheme","formatLabel","resolveLabels","isRTLLocale","resolveTheme","ChatListAvatar","CHAT_LIST_ROW_HEIGHT","ChatListCell","ChatListShimmer","matchesChatQuery","sortChats","formatChatListDate","getChatPreview","getInitials","useChatList","LIST_TRANSITION","duration","easing","bezier","FAB_TIMING","FAB_SIZE","FAB_HIDDEN_OFFSET","HEADER_HEIGHT","ARCHIVE_ROW_ID","isArchiveRow","row","id","ChatList","props","$","_c","theme","darkTheme","colorScheme","colorSchemeProp","locale","labels","icons","systemColorScheme","t0","undefined","t1","t2","resolvedTheme","t3","resolvedLabels","t4","isRTL","t5","t6","t7","t8","t9","t10","t11","actionSheet","_temp2","getLocale","getIsRTL","getColorScheme","getTheme","getIcons","getLabels","context","t12","t13","styles","fill","showActionSheetWithOptions","_temp","ChatListContent","chats","user","onPressChat","onLongPressChat","onPinChats","onMuteChats","onArchiveChats","onDeleteChats","onReorderPinnedChats","onPressNewChat","isDeleteConfirmed","isSwipeEnabled","isLoading","isSortEnabled","isHeaderVisible","title","renderHeaderRight","headerRightPosition","timeFormat","dateFormat","isTopInsetApplied","isSearchEnabled","filterChat","onSearchChange","isArchiveOpen","isArchiveOpenProp","onArchiveOpenChange","renderChat","renderEmpty","listProps","style","colors","chatList","insets","topInset","top","isArchiveOpenState","setIsArchiveOpenState","isOpen","setIsArchiveOpen","Symbol","for","selectedIds","setSelectedIds","query","setQueryState","next","setQuery","isSelectionMode","length","t14","sorted","t15","filter","_temp3","mainChats","t16","_temp4","archivedChats","t17","bb0","source","t18","t19","chat_1","chat","rows","ids","kept","some","chat_2","t20","t21","id_0","find","chat_3","map","_temp5","selectedChats","clearSelection","t22","t23","subscription","addEventListener","remove","t24","chat_5","ids_0","includes","id_1","toggleSelected","t25","chat_6","onPressRow","t26","chat_7","onLongPressRow","t27","chat_8","isArchived","onSwipeRow","t28","_temp6","_temp7","pinnedIds","canReorder","dragId","dragFrom","dragY","isDragActive","t29","from","y","isActive","drag","liftedId","setLiftedId","isSettling","setIsSettling","dropCount","setDropCount","t30","chat_11","String","onDragStart","t31","chat_12","toIndex","order","id_2","splice","id_3","index","_temp8","onDrop","t32","t33","set","timer","setTimeout","clearTimeout","t34","dragHandlersRef","t35","current","t36","chat_13","stableOnStart","t37","chat_14","toIndex_0","stableOnDrop","t38","chat_15","index_0","indexOf","count","onStart","reorderFor","t39","action","runOnSelection","t40","count_0","alert","chatListDeleteTitle","chatListDeleteManyTitle","chatListDeleteMessage","text","cancel","actionDelete","onPress","onDeleteSelected","fabOffset","lastScrollY","onScroll","event","contentOffset","delta","value","Math","abs","target","fabStyle","transform","translateY","t41","t42","item","index_1","cellProps","isSelected","onLongPress","onSwipe","isLast","reorder","isReordering","isPinned","renderItem","every","_temp9","isAllPinned","t43","_temp0","isAllMuted","headerTitle","chatListArchived","chatListTitle","t44","message","empty","color","chatListNoResults","chatListEmpty","t45","background","backgroundColor","t46","t47","headerBackground","headerText","header","paddingTop","headerBar","headerContent","cancelSelection","selectionCount","spacer","actionUnpin","actionPin","selection","chatListUnmute","chatListMute","selection_0","chatListUnarchive","chatListArchive","selection_1","chatListBack","chatListSearch","searchInput","headerTitleStart","t48","EMPTY_ROWS","t49","t50","t51","item_1","liftedCell","listContentWithFab","t52","t53","t54","_temp1","t55","absoluteFill","t56","t57","fab","fabIcon","fabWrap","chatListNewChat","t58","item_0","chat_17","isMuted","chat_16","chat_10","chat_9","chat_4","chat_0","HeaderButton","icon","label","slice","headerButton","ArchiveRow","unread","reduce","_temp10","archiveRow","pressed","archiveAvatar","name","archiveTitle","archivePreview","_temp11","join","badgeMuted","badgeText","archiveBadge","archiveBadgeText","archiveBottom","archiveContent","divider","archiveDivider","sum","unreadCount","create","flex","zIndex","height","flexDirection","alignItems","paddingHorizontal","width","justifyContent","flexShrink","fontSize","fontWeight","marginStart","textAlign","paddingBottom","marginTop","position","end","bottom","borderRadius","boxShadow","start","paddingEnd","minWidth","hairlineWidth"],"sources":["../../src/ChatList/index.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport {\n Alert,\n BackHandler,\n Pressable,\n StyleSheet,\n Text,\n TextInput,\n useColorScheme,\n View,\n} from 'react-native'\nimport { GestureHandlerRootView, Touchable } from 'react-native-gesture-handler'\nimport Animated, {\n Easing,\n FadeIn,\n FadeOut,\n LinearTransition,\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated'\nimport { SafeAreaInsetsContext } from 'react-native-safe-area-context'\n\nimport { ChatContext, IChatContext } from '../ChatContext'\nimport { impactHaptic } from '../components/haptics'\nimport { Icon } from '../components/Icon'\nimport { normalizeColorScheme } from '../hooks/useColorScheme'\nimport { formatLabel, resolveLabels } from '../i18n'\nimport { IconName } from '../Icons'\nimport { isRTLLocale } from '../rtl'\nimport { ChatTheme, resolveTheme } from '../Theme'\nimport { ChatListAvatar } from './ChatListAvatar'\nimport { CHAT_LIST_ROW_HEIGHT, ChatListCell } from './ChatListCell'\nimport { ChatListShimmer } from './ChatListShimmer'\nimport { ChatListDrag, ChatListItem, ChatListProps, ChatListReorder } from './types'\nimport { matchesChatQuery, sortChats } from './utils'\n\nexport * from './types'\nexport { ChatListAvatar } from './ChatListAvatar'\nexport { ChatListCell, CHAT_LIST_ROW_HEIGHT } from './ChatListCell'\nexport { ChatListShimmer } from './ChatListShimmer'\nexport { formatChatListDate, getChatPreview, getInitials, matchesChatQuery, sortChats } from './utils'\nexport { useChatList } from './useChatList'\n\n/** Rows move over 250ms on bezier(0.199, 0.011, 0.279, 0.91). */\nconst LIST_TRANSITION = LinearTransition.duration(250).easing(Easing.bezier(0.199, 0.011, 0.279, 0.91))\n/** The new-chat button hides and shows over 380ms on an ease-out-quint curve... */\nconst FAB_TIMING = { duration: 380, easing: Easing.bezier(0.23, 1, 0.32, 1) }\n/** ...moving its size, its 14 margin and 40 more. */\nconst FAB_SIZE = 48\nconst FAB_HIDDEN_OFFSET = FAB_SIZE + 14 + 40\nconst HEADER_HEIGHT = 56\n\nconst ARCHIVE_ROW_ID = '__chat-list-archive__'\ntype Row<TChat> = TChat | { id: typeof ARCHIVE_ROW_ID }\n\nconst isArchiveRow = <TChat, >(row: Row<TChat>): row is { id: typeof ARCHIVE_ROW_ID } =>\n (row as { id: unknown }).id === ARCHIVE_ROW_ID\n\n/**\n * A list of chats with everything a messenger's main screen has: a header with search and a\n * selection bar (pin, mute, archive, delete), an \"Archived Chats\" folder, swipe to archive,\n * pinned chats you can drag into order, unread counters, typing and drafts, a loading\n * placeholder and a new-chat button. Feed it your chats and wire the callbacks to your backend.\n */\nexport function ChatList<TChat extends ChatListItem = ChatListItem> (props: ChatListProps<TChat>) {\n const {\n theme,\n darkTheme,\n colorScheme: colorSchemeProp,\n locale,\n labels,\n icons,\n } = props\n const systemColorScheme = useColorScheme()\n const colorScheme = normalizeColorScheme(colorSchemeProp !== undefined ? colorSchemeProp : systemColorScheme)\n const resolvedTheme = useMemo(() => resolveTheme(colorScheme, theme, darkTheme), [colorScheme, theme, darkTheme])\n const resolvedLabels = useMemo(() => resolveLabels(locale, labels), [locale, labels])\n const isRTL = useMemo(() => isRTLLocale(locale), [locale])\n const context = useMemo<IChatContext>(() => ({\n actionSheet: () => ({ showActionSheetWithOptions: () => {} }),\n getLocale: () => locale ?? 'en',\n getIsRTL: () => isRTL,\n getColorScheme: () => colorScheme,\n getTheme: () => resolvedTheme,\n getIcons: () => icons,\n getLabels: () => resolvedLabels,\n }), [locale, isRTL, colorScheme, resolvedTheme, icons, resolvedLabels])\n\n return (\n <GestureHandlerRootView style={styles.fill}>\n <ChatContext.Provider value={context}>\n <ChatListContent<TChat> {...props} resolvedTheme={resolvedTheme} />\n </ChatContext.Provider>\n </GestureHandlerRootView>\n )\n}\n\nfunction ChatListContent<TChat extends ChatListItem> ({\n chats,\n user,\n onPressChat,\n onLongPressChat,\n onPinChats,\n onMuteChats,\n onArchiveChats,\n onDeleteChats,\n onReorderPinnedChats,\n onPressNewChat,\n isDeleteConfirmed = true,\n isSwipeEnabled = true,\n isLoading = false,\n isSortEnabled = true,\n isHeaderVisible = true,\n title,\n renderHeaderRight,\n headerRightPosition = 'beforeSearch',\n timeFormat,\n dateFormat,\n isTopInsetApplied = true,\n isSearchEnabled = true,\n filterChat = matchesChatQuery,\n onSearchChange,\n isArchiveOpen: isArchiveOpenProp,\n onArchiveOpenChange,\n renderChat,\n renderEmpty,\n listProps,\n style,\n resolvedTheme,\n}: ChatListProps<TChat> & { resolvedTheme: ChatTheme }) {\n const colors = resolvedTheme.chatList\n const { getLabels } = useContext(ChatContext)\n const labels = getLabels!()!\n const insets = useContext(SafeAreaInsetsContext)\n const topInset = isHeaderVisible && isTopInsetApplied ? insets?.top ?? 0 : 0\n\n const [isArchiveOpenState, setIsArchiveOpenState] = useState(false)\n const isArchiveOpen = isArchiveOpenProp ?? isArchiveOpenState\n const setIsArchiveOpen = useCallback((isOpen: boolean) => {\n setIsArchiveOpenState(isOpen)\n onArchiveOpenChange?.(isOpen)\n }, [onArchiveOpenChange])\n\n const [selectedIds, setSelectedIds] = useState<TChat['id'][]>([])\n const [query, setQueryState] = useState<string | null>(null)\n const setQuery = useCallback((next: string | null) => {\n setQueryState(next)\n onSearchChange?.(next)\n }, [onSearchChange])\n const isSelectionMode = selectedIds.length > 0\n\n const sorted = useMemo(() => (isSortEnabled ? sortChats(chats) : chats), [chats, isSortEnabled])\n const mainChats = useMemo(() => sorted.filter(chat => !chat.isArchived), [sorted])\n const archivedChats = useMemo(() => sorted.filter(chat => chat.isArchived), [sorted])\n\n const rows = useMemo<Row<TChat>[]>(() => {\n const source = isArchiveOpen ? archivedChats : mainChats\n if (query)\n return source.filter(chat => filterChat(chat, query))\n // The archive sits on top of the list as a folder row.\n if (!isArchiveOpen && archivedChats.length)\n return [{ id: ARCHIVE_ROW_ID }, ...source]\n return source\n }, [isArchiveOpen, archivedChats, mainChats, query, filterChat])\n\n // Selected chats that are gone (deleted, or moved by an action) drop out of the selection.\n useEffect(() => {\n setSelectedIds(ids => {\n const kept = ids.filter(id => chats.some(chat => chat.id === id))\n return kept.length === ids.length ? ids : kept\n })\n }, [chats])\n const selectedChats = useMemo(\n () => selectedIds.map(id => chats.find(chat => chat.id === id)).filter((chat): chat is TChat => !!chat),\n [selectedIds, chats]\n )\n const clearSelection = useCallback(() => setSelectedIds([]), [])\n\n // Android's back closes selection, search and the archive before leaving the screen.\n useEffect(() => {\n const subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n if (isSelectionMode)\n clearSelection()\n else if (query !== null)\n setQuery(null)\n else if (isArchiveOpen)\n setIsArchiveOpen(false)\n else\n return false\n return true\n })\n return () => subscription.remove()\n }, [isSelectionMode, query, isArchiveOpen, clearSelection, setQuery, setIsArchiveOpen])\n\n const toggleSelected = useCallback((chat: TChat) => {\n setSelectedIds(ids => (ids.includes(chat.id) ? ids.filter(id => id !== chat.id) : [...ids, chat.id]))\n }, [])\n\n const onPressRow = useCallback((chat: TChat) => {\n if (isSelectionMode) {\n toggleSelected(chat)\n return\n }\n onPressChat?.(chat)\n }, [isSelectionMode, onPressChat, toggleSelected])\n\n // A long-press selects the chat instead of opening a menu.\n const onLongPressRow = useCallback((chat: TChat) => {\n if (onLongPressChat) {\n onLongPressChat(chat)\n return\n }\n impactHaptic('Medium')\n toggleSelected(chat)\n }, [onLongPressChat, toggleSelected])\n\n const onSwipeRow = useCallback((chat: TChat) => {\n onArchiveChats?.([chat], !chat.isArchived)\n }, [onArchiveChats])\n\n // Pinned chats in the main list can be dragged into a new order.\n const pinnedIds = useMemo(() => mainChats.filter(chat => chat.isPinned).map(chat => chat.id), [mainChats])\n const canReorder = !!onReorderPinnedChats && !isArchiveOpen && !query\n const dragId = useSharedValue('')\n const dragFrom = useSharedValue(0)\n const dragY = useSharedValue(0)\n const isDragActive = useSharedValue(false)\n const drag = useMemo<ChatListDrag>(() => ({ id: dragId, from: dragFrom, y: dragY, isActive: isDragActive }), [dragId, dragFrom, dragY, isDragActive])\n // While a row is lifted, and for the frame it lands in, the list does not animate its own\n // layout: the rows are already where the new order puts them.\n const [liftedId, setLiftedId] = useState<string | null>(null)\n const [isSettling, setIsSettling] = useState(false)\n const [dropCount, setDropCount] = useState(0)\n\n const onDragStart = useCallback((chat: TChat) => {\n setLiftedId(String(chat.id))\n setIsSettling(true)\n if (!selectedIds.includes(chat.id)) {\n impactHaptic('Medium')\n toggleSelected(chat)\n }\n }, [selectedIds, toggleSelected])\n\n const onDrop = useCallback((chat: TChat, toIndex: number) => {\n const order = pinnedIds.filter(id => id !== chat.id)\n order.splice(toIndex, 0, chat.id)\n if (order.some((id, index) => id !== pinnedIds[index]))\n onReorderPinnedChats?.(order)\n setLiftedId(null)\n setDropCount(count => count + 1)\n }, [pinnedIds, onReorderPinnedChats])\n\n // Committed with the new order: the rows drop their offsets in the same frame.\n useLayoutEffect(() => {\n if (!dropCount)\n return\n isDragActive.set(false)\n dragY.set(0)\n dragId.set('')\n const timer = setTimeout(() => setIsSettling(false), 50)\n return () => clearTimeout(timer)\n }, [dropCount, isDragActive, dragY, dragId])\n\n // Stable handlers for the rows (which only re-render when what they show changes).\n const dragHandlersRef = useRef({ onDragStart, onDrop })\n useLayoutEffect(() => {\n dragHandlersRef.current = { onDragStart, onDrop }\n })\n const stableOnStart = useCallback((chat: TChat) => dragHandlersRef.current.onDragStart(chat), [])\n const stableOnDrop = useCallback((chat: TChat, toIndex: number) => dragHandlersRef.current.onDrop(chat, toIndex), [])\n\n const reorderFor = useCallback((chat: TChat): ChatListReorder<TChat> | undefined => {\n const index = pinnedIds.indexOf(chat.id)\n if (!canReorder || index < 0)\n return undefined\n return { index, count: pinnedIds.length, drag, onStart: stableOnStart, onDrop: stableOnDrop }\n }, [pinnedIds, canReorder, drag, stableOnStart, stableOnDrop])\n\n const runOnSelection = useCallback((action: (selection: TChat[]) => void) => {\n action(selectedChats)\n clearSelection()\n }, [selectedChats, clearSelection])\n\n const onDeleteSelected = useCallback(() => {\n if (!onDeleteChats)\n return\n if (!isDeleteConfirmed) {\n runOnSelection(onDeleteChats)\n return\n }\n const count = selectedChats.length\n Alert.alert(\n count === 1 ? labels.chatListDeleteTitle : formatLabel(labels.chatListDeleteManyTitle, { count }),\n labels.chatListDeleteMessage,\n [\n { text: labels.cancel, style: 'cancel' },\n { text: labels.actionDelete, style: 'destructive', onPress: () => runOnSelection(onDeleteChats) },\n ]\n )\n }, [onDeleteChats, isDeleteConfirmed, selectedChats.length, labels, runOnSelection])\n\n // The new-chat button hides while you scroll down the list and comes back on the way up.\n const fabOffset = useSharedValue(0)\n const lastScrollY = useSharedValue(0)\n const onScroll = useAnimatedScrollHandler(event => {\n const y = event.contentOffset.y\n const delta = y - lastScrollY.value\n lastScrollY.value = y\n if (Math.abs(delta) < 2)\n return\n const target = delta > 0 && y > CHAT_LIST_ROW_HEIGHT ? FAB_HIDDEN_OFFSET : 0\n if (target !== fabOffset.value)\n fabOffset.value = withTiming(target, FAB_TIMING)\n })\n const fabStyle = useAnimatedStyle(() => ({ transform: [{ translateY: fabOffset.value }] }))\n\n const renderItem = useCallback(({ item, index }: { item: Row<TChat>, index: number }) => {\n if (isArchiveRow(item))\n return <ArchiveRow chats={archivedChats} onPress={() => setIsArchiveOpen(true)} />\n const cellProps = {\n chat: item,\n user,\n isSelected: selectedIds.includes(item.id),\n isSelectionMode,\n onPress: onPressRow,\n onLongPress: onLongPressRow,\n onSwipe: onArchiveChats && isSwipeEnabled ? onSwipeRow : undefined,\n isLast: index === rows.length - 1,\n reorder: reorderFor(item),\n isReordering: isSelectionMode && canReorder && pinnedIds.length > 1 && !!item.isPinned,\n timeFormat,\n dateFormat,\n }\n return renderChat ? <>{renderChat(cellProps)}</> : <ChatListCell<TChat> {...cellProps} />\n }, [archivedChats, setIsArchiveOpen, user, selectedIds, isSelectionMode, onPressRow, onLongPressRow, onArchiveChats, isSwipeEnabled, onSwipeRow, rows.length, reorderFor, canReorder, pinnedIds.length, renderChat, timeFormat, dateFormat])\n\n const isAllPinned = selectedChats.length > 0 && selectedChats.every(chat => chat.isPinned)\n const isAllMuted = selectedChats.length > 0 && selectedChats.every(chat => chat.isMuted)\n const headerTitle = isArchiveOpen ? labels.chatListArchived : title ?? labels.chatListTitle\n\n const empty = renderEmpty\n ? <>{renderEmpty(!!query)}</>\n : <Text style={[styles.empty, { color: colors.message }]}>{query ? labels.chatListNoResults : labels.chatListEmpty}</Text>\n\n return (\n <View style={[styles.fill, { backgroundColor: colors.background }, style]}>\n {isHeaderVisible && (\n <View style={[styles.header, { paddingTop: topInset, backgroundColor: colors.headerBackground }]}>\n <View style={styles.headerBar}>\n {isSelectionMode\n ? (\n <Animated.View key='selection' entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n <HeaderButton icon='close' color={colors.headerText} onPress={clearSelection} label={labels.cancelSelection} />\n <Text style={[styles.headerTitle, styles.selectionCount, { color: colors.headerText }]}>{selectedIds.length}</Text>\n <View style={styles.spacer} />\n {onPinChats && !isArchiveOpen && (\n <HeaderButton\n icon={isAllPinned ? 'pinOff' : 'pushpin'}\n color={colors.headerText}\n label={isAllPinned ? labels.actionUnpin : labels.actionPin}\n onPress={() => runOnSelection(selection => onPinChats(selection, !isAllPinned))}\n />\n )}\n {onMuteChats && (\n <HeaderButton\n icon={isAllMuted ? 'unmute' : 'mute'}\n color={colors.headerText}\n label={isAllMuted ? labels.chatListUnmute : labels.chatListMute}\n onPress={() => runOnSelection(selection => onMuteChats(selection, !isAllMuted))}\n />\n )}\n {onArchiveChats && (\n <HeaderButton\n icon={isArchiveOpen ? 'unarchive' : 'archive'}\n color={colors.headerText}\n label={isArchiveOpen ? labels.chatListUnarchive : labels.chatListArchive}\n onPress={() => runOnSelection(selection => onArchiveChats(selection, !isArchiveOpen))}\n />\n )}\n {onDeleteChats && (\n <HeaderButton icon='trash' color={colors.headerText} label={labels.actionDelete} onPress={onDeleteSelected} />\n )}\n </Animated.View>\n )\n : query !== null\n ? (\n <Animated.View key='search' entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n <HeaderButton icon='arrowLeft' color={colors.headerText} onPress={() => setQuery(null)} label={labels.chatListBack} />\n <TextInput\n autoFocus\n value={query}\n onChangeText={setQuery}\n placeholder={labels.chatListSearch}\n placeholderTextColor={colors.message}\n style={[styles.searchInput, { color: colors.headerText }]}\n returnKeyType='search'\n />\n </Animated.View>\n )\n : (\n <Animated.View key={isArchiveOpen ? 'archive' : 'main'} entering={FadeIn.duration(150)} exiting={FadeOut.duration(150)} style={styles.headerContent}>\n {isArchiveOpen && <HeaderButton icon='arrowLeft' color={colors.headerText} onPress={() => setIsArchiveOpen(false)} label={labels.chatListBack} />}\n <Text style={[styles.headerTitle, !isArchiveOpen && styles.headerTitleStart, { color: colors.headerText }]} numberOfLines={1}>\n {headerTitle}\n </Text>\n <View style={styles.spacer} />\n {headerRightPosition === 'beforeSearch' && renderHeaderRight?.()}\n {isSearchEnabled && <HeaderButton icon='search' color={colors.headerText} onPress={() => setQuery('')} label={labels.chatListSearch} />}\n {headerRightPosition === 'afterSearch' && renderHeaderRight?.()}\n </Animated.View>\n )}\n </View>\n </View>\n )}\n\n <View style={styles.fill}>\n <Animated.FlatList<Row<TChat>>\n data={isLoading ? EMPTY_ROWS as Row<TChat>[] : rows}\n keyExtractor={item => String(item.id)}\n renderItem={renderItem}\n itemLayoutAnimation={isSettling ? undefined : LIST_TRANSITION}\n extraData={liftedId}\n // The lifted row passes over the rows below it too.\n CellRendererComponentStyle={({ item }: { item: Row<TChat> }) => (String(item.id) === liftedId ? styles.liftedCell : undefined)}\n onScroll={onScroll}\n scrollEventThrottle={16}\n keyboardShouldPersistTaps='handled'\n contentContainerStyle={onPressNewChat ? styles.listContentWithFab : undefined}\n ListEmptyComponent={isLoading ? undefined : empty}\n {...listProps as object}\n />\n {isLoading && (\n // The rows fade in over the placeholder.\n <Animated.View exiting={FadeOut.duration(150)} style={StyleSheet.absoluteFill} pointerEvents='none'>\n <ChatListShimmer />\n </Animated.View>\n )}\n </View>\n\n {onPressNewChat && !isArchiveOpen && !isSelectionMode && (\n <Animated.View entering={FadeIn.duration(200)} exiting={FadeOut.duration(200)} style={[styles.fabWrap, fabStyle]}>\n <Touchable\n style={[styles.fab, { backgroundColor: colors.fab }]}\n activeScale={0.9}\n onPress={onPressNewChat}\n accessibilityRole='button'\n accessibilityLabel={labels.chatListNewChat}\n >\n <Icon name='pencil' size={24} color={colors.fabIcon} fallback={<Text style={{ color: colors.fabIcon }}>+</Text>} />\n </Touchable>\n </Animated.View>\n )}\n </View>\n )\n}\n\nfunction HeaderButton ({ icon, color, label, onPress }: { icon: IconName, color: string, label: string, onPress: () => void }) {\n return (\n <Pressable onPress={onPress} hitSlop={4} style={styles.headerButton} accessibilityRole='button' accessibilityLabel={label}>\n <Icon name={icon} size={24} color={color} fallback={<Text style={{ color }}>{label.slice(0, 1)}</Text>} />\n </Pressable>\n )\n}\n\n/** The \"Archived Chats\" folder row: a grey archive avatar and the names inside. */\nfunction ArchiveRow ({ chats, onPress }: { chats: ChatListItem[], onPress: () => void }) {\n const { getTheme, getLabels } = useContext(ChatContext)\n const colors = getTheme!()!.chatList\n const labels = getLabels!()!\n const unread = chats.reduce((sum, chat) => sum + (chat.unreadCount ?? 0), 0)\n\n return (\n <Touchable\n style={[styles.archiveRow, { backgroundColor: colors.background }]}\n underlayColor={colors.pressed}\n activeUnderlayOpacity={1}\n onPress={onPress}\n accessibilityRole='button'\n accessibilityLabel={labels.chatListArchived}\n >\n <View style={styles.archiveAvatar}>\n <ChatListAvatar id='archive' title={labels.chatListArchived} size={52} isArchive />\n </View>\n <View style={styles.archiveContent}>\n <Text style={[styles.archiveTitle, { color: colors.name }]} numberOfLines={1}>{labels.chatListArchived}</Text>\n <View style={styles.archiveBottom}>\n <Text style={[styles.archivePreview, { color: colors.message }]} numberOfLines={1}>\n {chats.map(chat => chat.title).join(', ')}\n </Text>\n {unread > 0 && (\n <View style={[styles.archiveBadge, { backgroundColor: colors.badgeMuted }]}>\n <Text style={[styles.archiveBadgeText, { color: colors.badgeText }]}>{unread}</Text>\n </View>\n )}\n </View>\n </View>\n <View style={[styles.archiveDivider, { backgroundColor: colors.divider }]} />\n </Touchable>\n )\n}\n\nconst EMPTY_ROWS: unknown[] = []\n\nconst styles = StyleSheet.create({\n fill: {\n flex: 1,\n },\n liftedCell: {\n zIndex: 1,\n },\n header: {\n zIndex: 1,\n },\n headerBar: {\n height: HEADER_HEIGHT,\n },\n headerContent: {\n ...StyleSheet.absoluteFill,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 4,\n },\n headerButton: {\n width: 48,\n height: 48,\n alignItems: 'center',\n justifyContent: 'center',\n },\n headerTitle: {\n flexShrink: 1,\n fontSize: 20,\n fontWeight: '500',\n marginStart: 8,\n },\n headerTitleStart: {\n marginStart: 14,\n },\n selectionCount: {\n fontSize: 18,\n marginStart: 14,\n },\n spacer: {\n flex: 1,\n },\n searchInput: {\n flex: 1,\n fontSize: 18,\n marginStart: 8,\n textAlign: 'auto',\n },\n listContentWithFab: {\n paddingBottom: FAB_SIZE + 40,\n },\n empty: {\n textAlign: 'center',\n marginTop: 48,\n fontSize: 15,\n },\n // 20 from the end, 14 from the bottom.\n fabWrap: {\n position: 'absolute',\n end: 20,\n bottom: 14,\n },\n fab: {\n width: FAB_SIZE,\n height: FAB_SIZE,\n borderRadius: FAB_SIZE / 2,\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.2)',\n },\n archiveRow: {\n height: CHAT_LIST_ROW_HEIGHT,\n flexDirection: 'row',\n },\n archiveAvatar: {\n position: 'absolute',\n start: 11,\n top: 9,\n },\n archiveContent: {\n flex: 1,\n marginStart: 76,\n paddingEnd: 15,\n },\n archiveTitle: {\n marginTop: 14,\n height: 19,\n fontSize: 16,\n fontWeight: '500',\n textAlign: 'left',\n },\n archiveBottom: {\n marginTop: 5,\n height: 20.666,\n flexDirection: 'row',\n alignItems: 'center',\n },\n archivePreview: {\n flex: 1,\n fontSize: 15,\n textAlign: 'left',\n },\n archiveBadge: {\n minWidth: 20.666,\n height: 20.666,\n borderRadius: 11.5,\n paddingHorizontal: 6.333,\n marginStart: 6,\n alignItems: 'center',\n justifyContent: 'center',\n },\n archiveBadgeText: {\n fontSize: 13,\n fontWeight: '500',\n },\n archiveDivider: {\n position: 'absolute',\n start: 72,\n end: 0,\n bottom: 0,\n height: StyleSheet.hairlineWidth,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
package/lib/ChatList/types.d.ts
CHANGED
|
@@ -50,6 +50,10 @@ export interface ChatListCellProps<TChat extends ChatListItem = ChatListItem> {
|
|
|
50
50
|
reorder?: ChatListReorder<TChat>;
|
|
51
51
|
/** Selecting with more than one chat pinned: pinned rows show a reorder handle. */
|
|
52
52
|
isReordering?: boolean;
|
|
53
|
+
/** The row's time today (dayjs format); the locale's own by default. */
|
|
54
|
+
timeFormat?: string;
|
|
55
|
+
/** The row's date before this week (dayjs format); the month name this year, the locale's date before. */
|
|
56
|
+
dateFormat?: string;
|
|
53
57
|
}
|
|
54
58
|
/** A pinned row's part in a drag. */
|
|
55
59
|
export interface ChatListReorder<TChat extends ChatListItem = ChatListItem> {
|
|
@@ -98,8 +102,20 @@ export interface ChatListProps<TChat extends ChatListItem = ChatListItem> {
|
|
|
98
102
|
isHeaderVisible?: boolean;
|
|
99
103
|
/** Header title. Default the `chatListTitle` label. */
|
|
100
104
|
title?: string;
|
|
101
|
-
/** Extra header buttons, before the search button. */
|
|
105
|
+
/** Extra header buttons, before the search button (or after it, see `headerRightPosition`). */
|
|
102
106
|
renderHeaderRight?: () => React.ReactNode;
|
|
107
|
+
/** Where `renderHeaderRight` goes: 'beforeSearch' (default) or 'afterSearch', e.g. for a close button. */
|
|
108
|
+
headerRightPosition?: 'beforeSearch' | 'afterSearch';
|
|
109
|
+
/**
|
|
110
|
+
* The rows' time today, as a dayjs format: 'HH:mm' for a 24-hour clock whatever the locale.
|
|
111
|
+
* Default the locale's own ('LT').
|
|
112
|
+
*/
|
|
113
|
+
timeFormat?: string;
|
|
114
|
+
/**
|
|
115
|
+
* The rows' date for chats older than a week, as a dayjs format, e.g. 'DD.MM.YY' for digits only.
|
|
116
|
+
* Default the month name this year ('MMM D') and the locale's date before ('L').
|
|
117
|
+
*/
|
|
118
|
+
dateFormat?: string;
|
|
103
119
|
/** Pads the header below the status bar. Default true. */
|
|
104
120
|
isTopInsetApplied?: boolean;
|
|
105
121
|
/** The header's search button. Default true. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ChatList/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2FAA2F;IAC3F,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,WAAW,CAAC,EAAE,IAAI,EAAE,CAAA;IACpB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,YAAY,GAAG,YAAY;IAC1E,IAAI,EAAE,KAAK,CAAA;IACX,+DAA+D;IAC/D,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,UAAU,EAAE,OAAO,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;IAClC,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IAChC,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ChatList/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/ChatList/types.ts"],"sourcesContent":["import React from 'react'\nimport { ColorSchemeName, FlatListProps, StyleProp, ViewStyle } from 'react-native'\nimport { SharedValue } from 'react-native-reanimated'\n\nimport { TypingAction } from '../components/TypingStatus'\nimport { ChatLabels } from '../i18n'\nimport { ChatIcons } from '../Icons'\nimport { IMessage, User } from '../Models'\nimport { PartialChatTheme } from '../Theme'\n\n/** What a chat is: a one-to-one chat, a group (its rows name the sender) or a channel. */\nexport type ChatListItemKind = 'private' | 'group' | 'channel'\n\n/**\n * One chat in a `ChatList`: map your backend's conversations onto this. Everything but `id` and\n * `title` is optional, and each field turns on the part of the row that draws it.\n */\nexport interface ChatListItem {\n id: string | number\n title: string\n kind?: ChatListItemKind\n /** A photo URL; initials on a per-chat color otherwise. */\n avatar?: string\n /** The newest message: its preview, time and (when it is yours) its sent / read checks. */\n lastMessage?: IMessage\n unreadCount?: number\n isPinned?: boolean\n isMuted?: boolean\n isArchived?: boolean\n isVerified?: boolean\n /** The green dot on the avatar. */\n isOnline?: boolean\n /** An unsent draft, shown in place of the last message. */\n draft?: string\n /** Who is typing right now; shown in place of the last message. */\n typingUsers?: User[]\n /** What they are doing, when not typing: recording a note, sending media... */\n typingAction?: TypingAction\n}\n\n/** The props a custom `renderChat` receives: the built-in row's own. */\nexport interface ChatListCellProps<TChat extends ChatListItem = ChatListItem> {\n chat: TChat\n /** You, for \"You:\" and the checks on your own last message. */\n user?: User\n isSelected: boolean\n isSelectionMode: boolean\n onPress: (chat: TChat) => void\n onLongPress: (chat: TChat) => void\n /** Swipe towards the start edge to archive (or unarchive); omitted turns the swipe off. */\n onSwipe?: (chat: TChat) => void\n isLast?: boolean\n /** Set on a pinned chat when pinned chats can be reordered. */\n reorder?: ChatListReorder<TChat>\n /** Selecting with more than one chat pinned: pinned rows show a reorder handle. */\n isReordering?: boolean\n}\n\n/** A pinned row's part in a drag. */\nexport interface ChatListReorder<TChat extends ChatListItem = ChatListItem> {\n index: number\n count: number\n drag: ChatListDrag\n onStart: (chat: TChat) => void\n onDrop: (chat: TChat, toIndex: number) => void\n}\n\n/** The drag in progress, shared by every pinned row (UI-thread values). */\nexport interface ChatListDrag {\n id: SharedValue<string>\n from: SharedValue<number>\n y: SharedValue<number>\n isActive: SharedValue<boolean>\n}\n\nexport interface ChatListProps<TChat extends ChatListItem = ChatListItem> {\n /** Every chat, archived ones included. Sorted for you unless `isSortEnabled` is false. */\n chats: TChat[]\n /** You: \"You:\" in groups and the checks on your own last messages. */\n user?: User\n onPressChat?: (chat: TChat) => void\n /** Replaces the default long-press, which selects the chat. */\n onLongPressChat?: (chat: TChat) => void\n\n /** Pin / unpin from the selection bar. Pinned chats come first, in the order of `chats`. */\n onPinChats?: (chats: TChat[], isPinned: boolean) => void\n /** Mute / unmute from the selection bar. */\n onMuteChats?: (chats: TChat[], isMuted: boolean) => void\n /** Archive / unarchive from the selection bar and by swiping a row. */\n onArchiveChats?: (chats: TChat[], isArchived: boolean) => void\n /** Delete from the selection bar, after a confirmation (see `isDeleteConfirmed`). */\n onDeleteChats?: (chats: TChat[]) => void\n /** Turns on dragging pinned chats into a new order; called with the pinned ids in it. */\n onReorderPinnedChats?: (ids: TChat['id'][]) => void\n /** Shows the round new-chat button. */\n onPressNewChat?: () => void\n /** Ask before deleting. Default true. */\n isDeleteConfirmed?: boolean\n /** Swipe a row to archive it (needs `onArchiveChats`). Default true. */\n isSwipeEnabled?: boolean\n\n /** Shows the loading placeholder instead of the rows. */\n isLoading?: boolean\n /** Pinned first, in the order given, then the rest by their newest message. Default true. */\n isSortEnabled?: boolean\n\n /** The built-in header (title, search, selection actions). Default true. */\n isHeaderVisible?: boolean\n /** Header title. Default the `chatListTitle` label. */\n title?: string\n /** Extra header buttons, before the search button. */\n renderHeaderRight?: () => React.ReactNode\n /** Pads the header below the status bar. Default true. */\n isTopInsetApplied?: boolean\n\n /** The header's search button. Default true. */\n isSearchEnabled?: boolean\n /** Which chats a query keeps. Default: the title or the last message contains it. */\n filterChat?: (chat: TChat, query: string) => boolean\n /** Called as the query changes (for a server-side search, also pass `filterChat={() => true}`). */\n onSearchChange?: (query: string | null) => void\n\n /** Shows the archived chats instead of the main list; controlled when set. */\n isArchiveOpen?: boolean\n onArchiveOpenChange?: (isOpen: boolean) => void\n\n /** Replaces a row; `ChatListCell` is the built-in one. */\n renderChat?: (props: ChatListCellProps<TChat>) => React.ReactNode\n /** Replaces the empty-list text. */\n renderEmpty?: (isSearching: boolean) => React.ReactNode\n /** Passed to the FlatList (e.g. `onEndReached` for paging, `refreshControl`). */\n listProps?: Partial<FlatListProps<TChat>>\n style?: StyleProp<ViewStyle>\n\n theme?: PartialChatTheme\n darkTheme?: PartialChatTheme\n colorScheme?: ColorSchemeName\n locale?: string\n labels?: Partial<ChatLabels>\n icons?: ChatIcons\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/ChatList/types.ts"],"sourcesContent":["import React from 'react'\nimport { ColorSchemeName, FlatListProps, StyleProp, ViewStyle } from 'react-native'\nimport { SharedValue } from 'react-native-reanimated'\n\nimport { TypingAction } from '../components/TypingStatus'\nimport { ChatLabels } from '../i18n'\nimport { ChatIcons } from '../Icons'\nimport { IMessage, User } from '../Models'\nimport { PartialChatTheme } from '../Theme'\n\n/** What a chat is: a one-to-one chat, a group (its rows name the sender) or a channel. */\nexport type ChatListItemKind = 'private' | 'group' | 'channel'\n\n/**\n * One chat in a `ChatList`: map your backend's conversations onto this. Everything but `id` and\n * `title` is optional, and each field turns on the part of the row that draws it.\n */\nexport interface ChatListItem {\n id: string | number\n title: string\n kind?: ChatListItemKind\n /** A photo URL; initials on a per-chat color otherwise. */\n avatar?: string\n /** The newest message: its preview, time and (when it is yours) its sent / read checks. */\n lastMessage?: IMessage\n unreadCount?: number\n isPinned?: boolean\n isMuted?: boolean\n isArchived?: boolean\n isVerified?: boolean\n /** The green dot on the avatar. */\n isOnline?: boolean\n /** An unsent draft, shown in place of the last message. */\n draft?: string\n /** Who is typing right now; shown in place of the last message. */\n typingUsers?: User[]\n /** What they are doing, when not typing: recording a note, sending media... */\n typingAction?: TypingAction\n}\n\n/** The props a custom `renderChat` receives: the built-in row's own. */\nexport interface ChatListCellProps<TChat extends ChatListItem = ChatListItem> {\n chat: TChat\n /** You, for \"You:\" and the checks on your own last message. */\n user?: User\n isSelected: boolean\n isSelectionMode: boolean\n onPress: (chat: TChat) => void\n onLongPress: (chat: TChat) => void\n /** Swipe towards the start edge to archive (or unarchive); omitted turns the swipe off. */\n onSwipe?: (chat: TChat) => void\n isLast?: boolean\n /** Set on a pinned chat when pinned chats can be reordered. */\n reorder?: ChatListReorder<TChat>\n /** Selecting with more than one chat pinned: pinned rows show a reorder handle. */\n isReordering?: boolean\n /** The row's time today (dayjs format); the locale's own by default. */\n timeFormat?: string\n /** The row's date before this week (dayjs format); the month name this year, the locale's date before. */\n dateFormat?: string\n}\n\n/** A pinned row's part in a drag. */\nexport interface ChatListReorder<TChat extends ChatListItem = ChatListItem> {\n index: number\n count: number\n drag: ChatListDrag\n onStart: (chat: TChat) => void\n onDrop: (chat: TChat, toIndex: number) => void\n}\n\n/** The drag in progress, shared by every pinned row (UI-thread values). */\nexport interface ChatListDrag {\n id: SharedValue<string>\n from: SharedValue<number>\n y: SharedValue<number>\n isActive: SharedValue<boolean>\n}\n\nexport interface ChatListProps<TChat extends ChatListItem = ChatListItem> {\n /** Every chat, archived ones included. Sorted for you unless `isSortEnabled` is false. */\n chats: TChat[]\n /** You: \"You:\" in groups and the checks on your own last messages. */\n user?: User\n onPressChat?: (chat: TChat) => void\n /** Replaces the default long-press, which selects the chat. */\n onLongPressChat?: (chat: TChat) => void\n\n /** Pin / unpin from the selection bar. Pinned chats come first, in the order of `chats`. */\n onPinChats?: (chats: TChat[], isPinned: boolean) => void\n /** Mute / unmute from the selection bar. */\n onMuteChats?: (chats: TChat[], isMuted: boolean) => void\n /** Archive / unarchive from the selection bar and by swiping a row. */\n onArchiveChats?: (chats: TChat[], isArchived: boolean) => void\n /** Delete from the selection bar, after a confirmation (see `isDeleteConfirmed`). */\n onDeleteChats?: (chats: TChat[]) => void\n /** Turns on dragging pinned chats into a new order; called with the pinned ids in it. */\n onReorderPinnedChats?: (ids: TChat['id'][]) => void\n /** Shows the round new-chat button. */\n onPressNewChat?: () => void\n /** Ask before deleting. Default true. */\n isDeleteConfirmed?: boolean\n /** Swipe a row to archive it (needs `onArchiveChats`). Default true. */\n isSwipeEnabled?: boolean\n\n /** Shows the loading placeholder instead of the rows. */\n isLoading?: boolean\n /** Pinned first, in the order given, then the rest by their newest message. Default true. */\n isSortEnabled?: boolean\n\n /** The built-in header (title, search, selection actions). Default true. */\n isHeaderVisible?: boolean\n /** Header title. Default the `chatListTitle` label. */\n title?: string\n /** Extra header buttons, before the search button (or after it, see `headerRightPosition`). */\n renderHeaderRight?: () => React.ReactNode\n /** Where `renderHeaderRight` goes: 'beforeSearch' (default) or 'afterSearch', e.g. for a close button. */\n headerRightPosition?: 'beforeSearch' | 'afterSearch'\n /**\n * The rows' time today, as a dayjs format: 'HH:mm' for a 24-hour clock whatever the locale.\n * Default the locale's own ('LT').\n */\n timeFormat?: string\n /**\n * The rows' date for chats older than a week, as a dayjs format, e.g. 'DD.MM.YY' for digits only.\n * Default the month name this year ('MMM D') and the locale's date before ('L').\n */\n dateFormat?: string\n /** Pads the header below the status bar. Default true. */\n isTopInsetApplied?: boolean\n\n /** The header's search button. Default true. */\n isSearchEnabled?: boolean\n /** Which chats a query keeps. Default: the title or the last message contains it. */\n filterChat?: (chat: TChat, query: string) => boolean\n /** Called as the query changes (for a server-side search, also pass `filterChat={() => true}`). */\n onSearchChange?: (query: string | null) => void\n\n /** Shows the archived chats instead of the main list; controlled when set. */\n isArchiveOpen?: boolean\n onArchiveOpenChange?: (isOpen: boolean) => void\n\n /** Replaces a row; `ChatListCell` is the built-in one. */\n renderChat?: (props: ChatListCellProps<TChat>) => React.ReactNode\n /** Replaces the empty-list text. */\n renderEmpty?: (isSearching: boolean) => React.ReactNode\n /** Passed to the FlatList (e.g. `onEndReached` for paging, `refreshControl`). */\n listProps?: Partial<FlatListProps<TChat>>\n style?: StyleProp<ViewStyle>\n\n theme?: PartialChatTheme\n darkTheme?: PartialChatTheme\n colorScheme?: ColorSchemeName\n locale?: string\n labels?: Partial<ChatLabels>\n icons?: ChatIcons\n}\n"],"mappings":"","ignoreList":[]}
|
package/lib/ChatList/utils.d.ts
CHANGED
|
@@ -9,7 +9,10 @@ export declare function matchesChatQuery(chat: ChatListItem, query: string): boo
|
|
|
9
9
|
* The time on a row: the time today, the weekday within a week, the day and month this year,
|
|
10
10
|
* and the full date before that.
|
|
11
11
|
*/
|
|
12
|
-
export declare function formatChatListDate(date: Date | number, locale?: string
|
|
12
|
+
export declare function formatChatListDate(date: Date | number, locale?: string, formats?: {
|
|
13
|
+
timeFormat?: string;
|
|
14
|
+
dateFormat?: string;
|
|
15
|
+
}): string;
|
|
13
16
|
/** Initials: the first letters of the first two words. */
|
|
14
17
|
export declare function getInitials(title: string | undefined): string;
|
|
15
18
|
export interface ChatPreview {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/ChatList/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,KAAK,SAAS,YAAY,EAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAM9E;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/ChatList/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAItC,qFAAqF;AACrF,wBAAgB,SAAS,CAAC,KAAK,SAAS,YAAY,EAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAM9E;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM5E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,GAAG,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,MAAM,CAYR;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,yFAAyF;AACzF,wBAAgB,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,uDAAuD;AACvD,wBAAgB,cAAc,CAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CA8BhG"}
|
package/lib/ChatList/utils.js
CHANGED
|
@@ -19,11 +19,12 @@ export function matchesChatQuery(chat, query) {
|
|
|
19
19
|
* The time on a row: the time today, the weekday within a week, the day and month this year,
|
|
20
20
|
* and the full date before that.
|
|
21
21
|
*/
|
|
22
|
-
export function formatChatListDate(date, locale) {
|
|
22
|
+
export function formatChatListDate(date, locale, formats) {
|
|
23
23
|
const value = locale ? dayjs(date).locale(locale) : dayjs(date);
|
|
24
24
|
const now = dayjs();
|
|
25
|
-
if (value.isSame(now, 'day')) return value.format('LT');
|
|
25
|
+
if (value.isSame(now, 'day')) return value.format(formats?.timeFormat ?? 'LT');
|
|
26
26
|
if (now.diff(value, 'day') < 7) return value.format('ddd');
|
|
27
|
+
if (formats?.dateFormat) return value.format(formats.dateFormat);
|
|
27
28
|
if (value.isSame(now, 'year')) return value.format('MMM D');
|
|
28
29
|
return value.format('L');
|
|
29
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["dayjs","timeOf","message","createdAt","Date","getTime","sortChats","chats","pinned","filter","chat","isPinned","rest","sort","a","b","lastMessage","matchesChatQuery","query","needle","trim","toLowerCase","title","includes","text","formatChatListDate","date","locale","value","now","isSame","format","diff","getInitials","words","replace","split","Boolean","slice","map","word","join","toUpperCase","firstName","name","stripMarkdown","match","getChatPreview","labels","user","isMine","_id","prefix","kind","system","chatListYou","undefined","attachment","image","chatListPhoto","videoNote","videoMessage","video","audio","voiceMessage","file","chatListFile","location","thumbnail"],"sources":["../../src/ChatList/utils.ts"],"sourcesContent":["import dayjs from 'dayjs'\n\nimport { ChatLabels } from '../i18n'\nimport { IMessage, User } from '../Models'\nimport { ChatListItem } from './types'\n\nconst timeOf = (message?: IMessage) => (message?.createdAt ? new Date(message.createdAt).getTime() : 0)\n\n/** Pinned chats first, in the order given, then the rest by their newest message. */\nexport function sortChats<TChat extends ChatListItem> (chats: TChat[]): TChat[] {\n const pinned = chats.filter(chat => chat.isPinned)\n const rest = chats\n .filter(chat => !chat.isPinned)\n .sort((a, b) => timeOf(b.lastMessage) - timeOf(a.lastMessage))\n return [...pinned, ...rest]\n}\n\n/** The default search: the title or the last message's text contains the query. */\nexport function matchesChatQuery (chat: ChatListItem, query: string): boolean {\n const needle = query.trim().toLowerCase()\n if (!needle)\n return true\n return chat.title.toLowerCase().includes(needle) ||\n !!chat.lastMessage?.text?.toLowerCase().includes(needle)\n}\n\n/**\n * The time on a row: the time today, the weekday within a week, the day and month this year,\n * and the full date before that.\n */\nexport function formatChatListDate (date: Date | number,
|
|
1
|
+
{"version":3,"file":"utils.js","names":["dayjs","timeOf","message","createdAt","Date","getTime","sortChats","chats","pinned","filter","chat","isPinned","rest","sort","a","b","lastMessage","matchesChatQuery","query","needle","trim","toLowerCase","title","includes","text","formatChatListDate","date","locale","formats","value","now","isSame","format","timeFormat","diff","dateFormat","getInitials","words","replace","split","Boolean","slice","map","word","join","toUpperCase","firstName","name","stripMarkdown","match","getChatPreview","labels","user","isMine","_id","prefix","kind","system","chatListYou","undefined","attachment","image","chatListPhoto","videoNote","videoMessage","video","audio","voiceMessage","file","chatListFile","location","thumbnail"],"sources":["../../src/ChatList/utils.ts"],"sourcesContent":["import dayjs from 'dayjs'\n\nimport { ChatLabels } from '../i18n'\nimport { IMessage, User } from '../Models'\nimport { ChatListItem } from './types'\n\nconst timeOf = (message?: IMessage) => (message?.createdAt ? new Date(message.createdAt).getTime() : 0)\n\n/** Pinned chats first, in the order given, then the rest by their newest message. */\nexport function sortChats<TChat extends ChatListItem> (chats: TChat[]): TChat[] {\n const pinned = chats.filter(chat => chat.isPinned)\n const rest = chats\n .filter(chat => !chat.isPinned)\n .sort((a, b) => timeOf(b.lastMessage) - timeOf(a.lastMessage))\n return [...pinned, ...rest]\n}\n\n/** The default search: the title or the last message's text contains the query. */\nexport function matchesChatQuery (chat: ChatListItem, query: string): boolean {\n const needle = query.trim().toLowerCase()\n if (!needle)\n return true\n return chat.title.toLowerCase().includes(needle) ||\n !!chat.lastMessage?.text?.toLowerCase().includes(needle)\n}\n\n/**\n * The time on a row: the time today, the weekday within a week, the day and month this year,\n * and the full date before that.\n */\nexport function formatChatListDate (\n date: Date | number,\n locale?: string,\n formats?: { timeFormat?: string, dateFormat?: string }\n): string {\n const value = locale ? dayjs(date).locale(locale) : dayjs(date)\n const now = dayjs()\n if (value.isSame(now, 'day'))\n return value.format(formats?.timeFormat ?? 'LT')\n if (now.diff(value, 'day') < 7)\n return value.format('ddd')\n if (formats?.dateFormat)\n return value.format(formats.dateFormat)\n if (value.isSame(now, 'year'))\n return value.format('MMM D')\n return value.format('L')\n}\n\n/** Initials: the first letters of the first two words. */\nexport function getInitials (title: string | undefined): string {\n // A chat whose title has not loaded yet draws an empty circle rather than throwing.\n const words = (title ?? '').replace(/[^\\p{L}\\p{N}\\s]/gu, '').trim().split(/\\s+/).filter(Boolean)\n return words.slice(0, 2).map(word => word[0]).join('').toUpperCase()\n}\n\nexport interface ChatPreview {\n /** \"You: \" or \"Anna: \" in groups. */\n prefix?: string\n /** \"Photo\", \"Voice message\"... when the message has no text. */\n attachment?: string\n text: string\n /** A photo's thumbnail, drawn before the text. */\n thumbnail?: string\n}\n\nconst firstName = (name?: string) => (name ?? '').split(' ')[0]\n\n/** Markdown as plain text, for a one-line preview: links keep their text, markers go. */\nexport function stripMarkdown (text: string): string {\n return text\n .replace(/```[\\s\\S]*?```/g, match => match.replace(/```\\w*/g, ''))\n .replace(/!?\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1')\n .replace(/^\\s{0,3}(#{1,6}|>|[-*+]|\\d+\\.)\\s+/gm, '')\n .replace(/(\\*\\*|__|~~|`)(.+?)\\1/g, '$2')\n .replace(/(^|[^\\w*])[*_]([^*_\\n]+)[*_](?=[^\\w*]|$)/g, '$1$2')\n}\n\n/** The second line of a row for its newest message. */\nexport function getChatPreview (chat: ChatListItem, labels: ChatLabels, user?: User): ChatPreview {\n const message = chat.lastMessage\n if (!message)\n return { text: '' }\n\n const isMine = user != null && message.user?._id === user._id\n const prefix = chat.kind === 'group' && !message.system\n ? `${isMine ? labels.chatListYou : firstName(message.user?.name)}: `\n : undefined\n\n const attachment = message.image\n ? labels.chatListPhoto\n : message.videoNote\n ? labels.videoMessage\n : message.video\n ? labels.video\n : message.audio\n ? labels.voiceMessage\n : message.file\n ? message.file.name || labels.chatListFile\n : message.location\n ? labels.location\n : undefined\n\n return {\n prefix,\n attachment: attachment && message.text ? undefined : attachment,\n text: message.text ? stripMarkdown(message.text).replace(/\\s+/g, ' ').trim() : '',\n thumbnail: message.image,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/Composer.js
CHANGED
|
@@ -146,7 +146,11 @@ const createStyles = theme => {
|
|
|
146
146
|
paddingTop: paddingVertical,
|
|
147
147
|
paddingBottom: paddingVertical,
|
|
148
148
|
paddingHorizontal: 0,
|
|
149
|
-
color: theme.colors.inputText
|
|
149
|
+
color: theme.colors.inputText,
|
|
150
|
+
// Android adds font padding above the text and re-measures on the first glyph, so the text
|
|
151
|
+
// dropped a little once you started typing; without it the placeholder and the text share a line.
|
|
152
|
+
includeFontPadding: false,
|
|
153
|
+
textAlignVertical: 'center'
|
|
150
154
|
}
|
|
151
155
|
});
|
|
152
156
|
};
|