Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

stream-chat-react

Package Overview
Dependencies
Maintainers
9
Versions
480
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

stream-chat-react - npm Package Compare versions

Comparing version 12.7.1 to 12.8.0

dist/components/ChannelList/hooks/useChannelListShape.d.ts

2

dist/components/ChannelList/ChannelList.d.ts

@@ -97,2 +97,2 @@ import React from 'react';

*/
export declare const ChannelList: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: ChannelListProps<StreamChatGenerics>) => React.JSX.Element;
export declare const ChannelList: <SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: ChannelListProps<SCG>) => React.JSX.Element;
import React, { useCallback, useEffect, useRef, useState } from 'react';
import clsx from 'clsx';
import { ChannelListMessenger } from './ChannelListMessenger';
import { useChannelDeletedListener } from './hooks/useChannelDeletedListener';
import { useChannelHiddenListener } from './hooks/useChannelHiddenListener';
import { useChannelTruncatedListener } from './hooks/useChannelTruncatedListener';
import { useChannelUpdatedListener } from './hooks/useChannelUpdatedListener';
import { useChannelVisibleListener } from './hooks/useChannelVisibleListener';
import { useConnectionRecoveredListener } from './hooks/useConnectionRecoveredListener';
import { useMessageNewListener } from './hooks/useMessageNewListener';
import { useMobileNavigation } from './hooks/useMobileNavigation';
import { useNotificationAddedToChannelListener } from './hooks/useNotificationAddedToChannelListener';
import { useNotificationMessageNewListener } from './hooks/useNotificationMessageNewListener';
import { useNotificationRemovedFromChannelListener } from './hooks/useNotificationRemovedFromChannelListener';
import { usePaginatedChannels } from './hooks/usePaginatedChannels';
import { useUserPresenceChangedListener } from './hooks/useUserPresenceChangedListener';
import { MAX_QUERY_CHANNELS_LIMIT, moveChannelUp } from './utils';
import { MAX_QUERY_CHANNELS_LIMIT, moveChannelUpwards } from './utils';
import { Avatar as DefaultAvatar } from '../Avatar';

@@ -27,2 +17,3 @@ import { ChannelPreview } from '../ChannelPreview/ChannelPreview';

import { useChatContext } from '../../context/ChatContext';
import { useChannelListShape, usePrepareShapeHandlers } from './hooks/useChannelListShape';
const DEFAULT_FILTERS = {};

@@ -32,3 +23,3 @@ const DEFAULT_OPTIONS = {};

const UnMemoizedChannelList = (props) => {
const { additionalChannelSearchProps, Avatar = DefaultAvatar, allowNewMessagesFromUnfilteredChannels, channelRenderFilterFn, ChannelSearch = DefaultChannelSearch, customActiveChannel, customQueryChannels, EmptyStateIndicator = DefaultEmptyStateIndicator, filters, getLatestMessagePreview, LoadingErrorIndicator = NullComponent, LoadingIndicator = LoadingChannels, List = ChannelListMessenger, lockChannelOrder, onAddedToChannel, onChannelDeleted, onChannelHidden, onChannelTruncated, onChannelUpdated, onChannelVisible, onMessageNew, onMessageNewHandler, onRemovedFromChannel, options, Paginator = LoadMorePaginator, Preview, recoveryThrottleIntervalMs, renderChannels, sendChannelsToList = false, setActiveChannelOnMount = true, showChannelSearch = false, sort = DEFAULT_SORT, watchers = {}, } = props;
const { additionalChannelSearchProps, Avatar = DefaultAvatar, allowNewMessagesFromUnfilteredChannels = true, channelRenderFilterFn, ChannelSearch = DefaultChannelSearch, customActiveChannel, customQueryChannels, EmptyStateIndicator = DefaultEmptyStateIndicator, filters = {}, getLatestMessagePreview, LoadingErrorIndicator = NullComponent, LoadingIndicator = LoadingChannels, List = ChannelListMessenger, lockChannelOrder = false, onAddedToChannel, onChannelDeleted, onChannelHidden, onChannelTruncated, onChannelUpdated, onChannelVisible, onMessageNew, onMessageNewHandler, onRemovedFromChannel, options, Paginator = LoadMorePaginator, Preview, recoveryThrottleIntervalMs, renderChannels, sendChannelsToList = false, setActiveChannelOnMount = true, showChannelSearch = false, sort = DEFAULT_SORT, watchers = {}, } = props;
const { channel, channelsQueryState, client, closeMobileNav, customClasses, navOpen = false, setActiveChannel, theme, useImageFlagEmojisOnWindows, } = useChatContext('ChannelList');

@@ -47,2 +38,3 @@ const channelListRef = useRef(null);

if (customActiveChannel) {
// FIXME: this is wrong...
let customActiveChannelObject = channels.find((chan) => chan.id === customActiveChannel);

@@ -55,6 +47,6 @@ if (!customActiveChannelObject) {

setActiveChannel(customActiveChannelObject, watchers);
const newChannels = moveChannelUp({
activeChannel: customActiveChannelObject,
const newChannels = moveChannelUpwards({
channels,
cid: customActiveChannelObject.cid,
channelToMove: customActiveChannelObject,
sort,
});

@@ -73,12 +65,5 @@ setChannels(newChannels);

*/
const forceUpdate = useCallback(() => setChannelUpdateCount((count) => count + 1), [
setChannelUpdateCount,
]);
const forceUpdate = useCallback(() => setChannelUpdateCount((count) => count + 1), []);
const onSearch = useCallback((event) => {
if (!event.target.value) {
setSearchActive(false);
}
else {
setSearchActive(true);
}
setSearchActive(!!event.target.value);
additionalChannelSearchProps?.onSearch?.(event);

@@ -95,13 +80,23 @@ // eslint-disable-next-line react-hooks/exhaustive-deps

useMobileNavigation(channelListRef, navOpen, closeMobileNav);
useMessageNewListener(setChannels, onMessageNewHandler, lockChannelOrder, allowNewMessagesFromUnfilteredChannels);
useNotificationMessageNewListener(setChannels, onMessageNew, allowNewMessagesFromUnfilteredChannels);
useNotificationAddedToChannelListener(setChannels, onAddedToChannel, allowNewMessagesFromUnfilteredChannels);
useNotificationRemovedFromChannelListener(setChannels, onRemovedFromChannel);
useChannelDeletedListener(setChannels, onChannelDeleted);
useChannelHiddenListener(setChannels, onChannelHidden);
useChannelVisibleListener(setChannels, onChannelVisible);
useChannelTruncatedListener(setChannels, onChannelTruncated, forceUpdate);
useChannelUpdatedListener(setChannels, onChannelUpdated, forceUpdate);
const { customHandler, defaultHandler } = usePrepareShapeHandlers({
allowNewMessagesFromUnfilteredChannels,
filters,
lockChannelOrder,
onAddedToChannel,
onChannelDeleted,
onChannelHidden,
onChannelTruncated,
onChannelUpdated,
onChannelVisible,
onMessageNew,
onMessageNewHandler,
onRemovedFromChannel,
setChannels,
sort,
// TODO: implement
// customHandleChannelListShape
});
useChannelListShape(customHandler ?? defaultHandler);
// TODO: maybe move this too
useConnectionRecoveredListener(forceUpdate);
useUserPresenceChangedListener(setChannels);
useEffect(() => {

@@ -108,0 +103,0 @@ const handleEvent = (event) => {

@@ -14,1 +14,2 @@ export * from './useChannelDeletedListener';

export * from './useUserPresenceChangedListener';
export * from './useChannelMembershipState';

@@ -14,1 +14,2 @@ export * from './useChannelDeletedListener';

export * from './useUserPresenceChangedListener';
export * from './useChannelMembershipState';

@@ -1,10 +0,46 @@

import type { Channel } from 'stream-chat';
import type { Channel, ChannelSort, ExtendableGenerics } from 'stream-chat';
import type { DefaultStreamChatGenerics } from '../../types/types';
import type { ChannelListProps } from './ChannelList';
export declare const MAX_QUERY_CHANNELS_LIMIT = 30;
type MoveChannelUpParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
channels: Array<Channel<StreamChatGenerics>>;
type MoveChannelUpParams<SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
channels: Array<Channel<SCG>>;
cid: string;
activeChannel?: Channel<StreamChatGenerics>;
activeChannel?: Channel<SCG>;
};
export declare const moveChannelUp: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ activeChannel, channels, cid, }: MoveChannelUpParams<StreamChatGenerics>) => Channel<StreamChatGenerics>[];
/**
* @deprecated
*/
export declare const moveChannelUp: <SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ activeChannel, channels, cid, }: MoveChannelUpParams<SCG>) => Channel<SCG>[];
/**
* Expects channel array sorted by `{ pinned_at: -1 }`.
*
* TODO: add support for the `{ pinned_at: 1 }`
*/
export declare function findLastPinnedChannelIndex<SCG extends ExtendableGenerics>({ channels, }: {
channels: Channel<SCG>[];
}): number | null;
type MoveChannelUpwardsParams<SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
channels: Array<Channel<SCG>>;
channelToMove: Channel<SCG>;
sort: ChannelSort<SCG>;
/**
* If the index of the channel within `channels` list which is being moved upwards
* (`channelToMove`) is known, you can supply it to skip extra calculation.
*/
channelToMoveIndexWithinChannels?: number;
};
/**
* This function should not be used to move pinned already channels.
*/
export declare const moveChannelUpwards: <SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channels, channelToMove, channelToMoveIndexWithinChannels, sort, }: MoveChannelUpwardsParams<SCG>) => Channel<SCG>[];
/**
* Returns true only if `{ pinned_at: -1 }` or `{ pinned_at: 1 }` option is first within the `sort` array.
*/
export declare const shouldConsiderPinnedChannels: <SCG extends ExtendableGenerics>(sort: ChannelListProps<SCG>['sort']) => boolean;
/**
* Returns `true` only if `archived` property is set to `false` within `filters`.
*/
export declare const shouldConsiderArchivedChannels: <SCG extends ExtendableGenerics>(filters: ChannelListProps<SCG>['filters']) => boolean;
export declare const isChannelPinned: <SCG extends ExtendableGenerics>(channel: Channel<SCG>) => boolean;
export declare const isChannelArchived: <SCG extends ExtendableGenerics>(channel: Channel<SCG>) => boolean;
export {};
import uniqBy from 'lodash.uniqby';
export const MAX_QUERY_CHANNELS_LIMIT = 30;
/**
* @deprecated
*/
export const moveChannelUp = ({ activeChannel, channels, cid, }) => {

@@ -12,1 +15,83 @@ // get index of channel to move up

};
/**
* Expects channel array sorted by `{ pinned_at: -1 }`.
*
* TODO: add support for the `{ pinned_at: 1 }`
*/
export function findLastPinnedChannelIndex({ channels, }) {
let lastPinnedChannelIndex = null;
for (const channel of channels) {
if (!isChannelPinned(channel))
break;
if (typeof lastPinnedChannelIndex === 'number') {
lastPinnedChannelIndex++;
}
else {
lastPinnedChannelIndex = 0;
}
}
return lastPinnedChannelIndex;
}
/**
* This function should not be used to move pinned already channels.
*/
export const moveChannelUpwards = ({ channels, channelToMove, channelToMoveIndexWithinChannels, sort, }) => {
// get index of channel to move up
const targetChannelIndex = channelToMoveIndexWithinChannels ??
channels.findIndex((channel) => channel.cid === channelToMove.cid);
const targetChannelExistsWithinList = targetChannelIndex >= 0;
const targetChannelAlreadyAtTheTop = targetChannelIndex === 0;
// pinned channels should not move within the list based on recent activity, channels which
// receive messages and are not pinned should move upwards but only under the last pinned channel
// in the list
const considerPinnedChannels = shouldConsiderPinnedChannels(sort);
if (targetChannelAlreadyAtTheTop)
return channels;
const newChannels = [...channels];
// target channel index is known, remove it from the list
if (targetChannelExistsWithinList) {
newChannels.splice(targetChannelIndex, 1);
}
// as position of pinned channels has to stay unchanged, we need to
// find last pinned channel in the list to move the target channel after
let lastPinnedChannelIndex = null;
if (considerPinnedChannels) {
lastPinnedChannelIndex = findLastPinnedChannelIndex({ channels: newChannels });
}
// re-insert it at the new place (to specific index if pinned channels are considered)
newChannels.splice(typeof lastPinnedChannelIndex === 'number' ? lastPinnedChannelIndex + 1 : 0, 0, channelToMove);
return newChannels;
};
/**
* Returns true only if `{ pinned_at: -1 }` or `{ pinned_at: 1 }` option is first within the `sort` array.
*/
export const shouldConsiderPinnedChannels = (sort) => {
if (!sort)
return false;
if (!Array.isArray(sort))
return false;
const [option] = sort;
if (!option?.pinned_at)
return false;
return Math.abs(option.pinned_at) === 1;
};
/**
* Returns `true` only if `archived` property is set to `false` within `filters`.
*/
export const shouldConsiderArchivedChannels = (filters) => {
if (!filters)
return false;
return !filters.archived;
};
export const isChannelPinned = (channel) => {
if (!channel)
return false;
const member = channel.state.membership;
return !!member?.pinned_at;
};
export const isChannelArchived = (channel) => {
if (!channel)
return false;
const member = channel.state.membership;
return !!member?.archived_at;
};
import React from 'react';
import type { DefaultStreamChatGenerics } from '../../types/types';
import type { ChannelPreviewUIComponentProps } from './ChannelPreview';
import type { DefaultStreamChatGenerics } from '../../types/types';
/**

@@ -8,2 +8,2 @@ * Used as preview component for channel item in [ChannelList](#channellist) component.

*/
export declare const ChannelPreviewMessenger: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: ChannelPreviewUIComponentProps<StreamChatGenerics>) => React.JSX.Element;
export declare const ChannelPreviewMessenger: <SCG extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(props: ChannelPreviewUIComponentProps<SCG>) => React.JSX.Element;
import React, { useRef } from 'react';
import clsx from 'clsx';
import { ChannelPreviewActionButtons as DefaultChannelPreviewActionButtons } from './ChannelPreviewActionButtons';
import { Avatar as DefaultAvatar } from '../Avatar';
import { useComponentContext } from '../../context';
const UnMemoizedChannelPreviewMessenger = (props) => {
const { active, Avatar = DefaultAvatar, channel, className: customClassName = '', displayImage, displayTitle, groupChannelDisplayInfo, latestMessagePreview, onSelect: customOnSelectChannel, setActiveChannel, unread, watchers, } = props;
const { ChannelPreviewActionButtons = DefaultChannelPreviewActionButtons, } = useComponentContext();
const channelPreviewButton = useRef(null);

@@ -19,11 +22,13 @@ const avatarName = displayTitle || channel.state.messages[channel.state.messages.length - 1]?.user?.id;

};
return (React.createElement("button", { "aria-label": `Select Channel: ${displayTitle || ''}`, "aria-selected": active, className: clsx(`str-chat__channel-preview-messenger str-chat__channel-preview`, active && 'str-chat__channel-preview-messenger--active', unread && unread >= 1 && 'str-chat__channel-preview-messenger--unread', customClassName), "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton, role: 'option' },
React.createElement("div", { className: 'str-chat__channel-preview-messenger--left' },
React.createElement(Avatar, { className: 'str-chat__avatar--channel-preview', groupChannelDisplayInfo: groupChannelDisplayInfo, image: displayImage, name: avatarName })),
React.createElement("div", { className: 'str-chat__channel-preview-end' },
React.createElement("div", { className: 'str-chat__channel-preview-end-first-row' },
React.createElement("div", { className: 'str-chat__channel-preview-messenger--name' },
React.createElement("span", null, displayTitle)),
!!unread && (React.createElement("div", { className: 'str-chat__channel-preview-unread-badge', "data-testid": 'unread-badge' }, unread))),
React.createElement("div", { className: 'str-chat__channel-preview-messenger--last-message' }, latestMessagePreview))));
return (React.createElement("div", { className: 'str-chat__channel-preview-container' },
React.createElement(ChannelPreviewActionButtons, { channel: channel }),
React.createElement("button", { "aria-label": `Select Channel: ${displayTitle || ''}`, "aria-selected": active, className: clsx(`str-chat__channel-preview-messenger str-chat__channel-preview`, active && 'str-chat__channel-preview-messenger--active', unread && unread >= 1 && 'str-chat__channel-preview-messenger--unread', customClassName), "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton, role: 'option' },
React.createElement("div", { className: 'str-chat__channel-preview-messenger--left' },
React.createElement(Avatar, { className: 'str-chat__avatar--channel-preview', groupChannelDisplayInfo: groupChannelDisplayInfo, image: displayImage, name: avatarName })),
React.createElement("div", { className: 'str-chat__channel-preview-end' },
React.createElement("div", { className: 'str-chat__channel-preview-end-first-row' },
React.createElement("div", { className: 'str-chat__channel-preview-messenger--name' },
React.createElement("span", null, displayTitle)),
!!unread && (React.createElement("div", { className: 'str-chat__channel-preview-unread-badge', "data-testid": 'unread-badge' }, unread))),
React.createElement("div", { className: 'str-chat__channel-preview-messenger--last-message' }, latestMessagePreview)))));
};

@@ -30,0 +35,0 @@ /**

export * from './ChannelPreview';
export * from './ChannelPreviewMessenger';
export * from './ChannelPreviewActionButtons';
export * from './hooks';
export * from './utils';
export * from './ChannelPreview';
export * from './ChannelPreviewMessenger';
export * from './ChannelPreviewActionButtons';
export * from './hooks';
export * from './utils';

@@ -31,3 +31,3 @@ import { useCallback, useEffect, useRef, useState } from 'react';

// the upper-case text between double underscores is replaced with the actual semantic version of the library
client.setUserAgent(`stream-chat-react-12.7.1-${userAgent}`);
client.setUserAgent(`stream-chat-react-12.8.0-${userAgent}`);
}

@@ -34,0 +34,0 @@ client.threads.registerSubscriptions();

import React, { PropsWithChildren } from 'react';
import { AttachmentPreviewListProps, AttachmentProps, AvatarProps, BaseImageProps, CooldownTimerProps, CustomMessageActionsListProps, DateSeparatorProps, EmojiSearchIndex, EmptyStateIndicatorProps, EventComponentProps, FixedHeightMessageProps, GiphyPreviewMessageProps, LinkPreviewListProps, LoadingIndicatorProps, MessageBouncePromptProps, MessageDeletedProps, MessageInputProps, MessageListNotificationsProps, MessageNotificationProps, MessageOptionsProps, MessageProps, MessageRepliesCountButtonProps, MessageStatusProps, MessageTimestampProps, MessageUIComponentProps, ModalGalleryProps, PinIndicatorProps, PollCreationDialogProps, PollOptionSelectorProps, QuotedMessagePreviewProps, ReactionOptions, ReactionSelectorProps, ReactionsListProps, RecordingPermissionDeniedNotificationProps, SendButtonProps, StartRecordingAudioButtonProps, StreamedMessageTextProps, SuggestionItemProps, SuggestionListProps, ThreadHeaderProps, ThreadListItemProps, ThreadListItemUIProps, TimestampProps, TypingIndicatorProps, UnreadMessagesNotificationProps, UnreadMessagesSeparatorProps } from '../components';
import { AttachmentPreviewListProps, AttachmentProps, AvatarProps, BaseImageProps, ChannelPreviewActionButtonsProps, CooldownTimerProps, CustomMessageActionsListProps, DateSeparatorProps, EmojiSearchIndex, EmptyStateIndicatorProps, EventComponentProps, FixedHeightMessageProps, GiphyPreviewMessageProps, LinkPreviewListProps, LoadingIndicatorProps, MessageBouncePromptProps, MessageDeletedProps, MessageInputProps, MessageListNotificationsProps, MessageNotificationProps, MessageOptionsProps, MessageProps, MessageRepliesCountButtonProps, MessageStatusProps, MessageTimestampProps, MessageUIComponentProps, ModalGalleryProps, PinIndicatorProps, PollCreationDialogProps, PollOptionSelectorProps, QuotedMessagePreviewProps, ReactionOptions, ReactionSelectorProps, ReactionsListProps, RecordingPermissionDeniedNotificationProps, SendButtonProps, StartRecordingAudioButtonProps, StreamedMessageTextProps, SuggestionItemProps, SuggestionListProps, ThreadHeaderProps, ThreadListItemProps, ThreadListItemUIProps, TimestampProps, TypingIndicatorProps, UnreadMessagesNotificationProps, UnreadMessagesSeparatorProps } from '../components';
import type { CustomTrigger, DefaultStreamChatGenerics, PropsWithChildrenOnly, UnknownType } from '../types/types';

@@ -24,2 +24,4 @@ import type { StopAIGenerationButtonProps } from '../components/MessageInput/StopAIGenerationButton';

BaseImage?: React.ComponentType<BaseImageProps>;
/** Custom UI component to display set of action buttons within `ChannelPreviewMessenger` component, accepts same props as: [ChannelPreviewActionButtons](https://github.com/GetStream/stream-chat-react/blob/master/src/components/ChannelList/ChannelPreviewActionButtons.tsx) */
ChannelPreviewActionButtons?: React.ComponentType<ChannelPreviewActionButtonsProps<StreamChatGenerics>>;
/** Custom UI component to display the slow mode cooldown timer, defaults to and accepts same props as: [CooldownTimer](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageInput/CooldownTimer.tsx) */

@@ -26,0 +28,0 @@ CooldownTimer?: React.ComponentType<CooldownTimerProps>;

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Anonyme Umfrage",
"Archive": "Archivieren",
"Ask a question": "Eine Frage stellen",

@@ -121,2 +122,3 @@ "Attach files": "Dateien anhängen",

"Type your message": "Nachricht eingeben",
"Unarchive": "Archivierung aufheben",
"Unmute": "Stummschaltung aufheben",

@@ -123,0 +125,0 @@ "Unpin": "Anheftung aufheben",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Anonymous poll",
"Archive": "Archive",
"Ask a question": "Ask a question",

@@ -121,2 +122,3 @@ "Attach files": "Attach files",

"Type your message": "Type your message",
"Unarchive": "Unarchive",
"Unmute": "Unmute",

@@ -123,0 +125,0 @@ "Unpin": "Unpin",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Encuesta anónima",
"Archive": "Archivo",
"Ask a question": "Hacer una pregunta",

@@ -123,2 +124,3 @@ "Attach files": "Adjuntar archivos",

"Type your message": "Escribe tu mensaje",
"Unarchive": "Desarchivar",
"Unmute": "Activar sonido",

@@ -125,0 +127,0 @@ "Unpin": "Desfijar",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Sondage anonyme",
"Archive": "Archive",
"Ask a question": "Poser une question",

@@ -123,2 +124,3 @@ "Attach files": "Joindre des fichiers",

"Type your message": "Tapez votre message",
"Unarchive": "Désarchiver",
"Unmute": "Désactiver muet",

@@ -125,0 +127,0 @@ "Unpin": "Détacher",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "गुमनाम मतदान",
"Archive": "आर्काइव",
"Ask a question": "एक प्रश्न पूछें",

@@ -122,2 +123,3 @@ "Attach files": "फाइल्स अटैच करे",

"Type your message": "अपना मैसेज लिखे",
"Unarchive": "अनआर्काइव",
"Unmute": "अनम्यूट",

@@ -124,0 +126,0 @@ "Unpin": "अनपिन",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Sondaggio anonimo",
"Archive": "Archivia",
"Ask a question": "Fai una domanda",

@@ -123,2 +124,3 @@ "Attach files": "Allega file",

"Type your message": "Scrivi il tuo messaggio",
"Unarchive": "Ripristina",
"Unmute": "Riattiva il notifiche",

@@ -125,0 +127,0 @@ "Unpin": "Sblocca",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "匿名投票",
"Archive": "アーカイブ",
"Ask a question": "質問する",

@@ -119,2 +120,3 @@ "Attach files": "ファイルを添付する",

"Type your message": "メッセージを入力してください",
"Unarchive": "アーカイブ解除",
"Unmute": "無音を解除する",

@@ -121,0 +123,0 @@ "Unpin": "ピンを解除する",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "익명 투표",
"Archive": "아카이브",
"Ask a question": "질문하기",

@@ -119,2 +120,3 @@ "Attach files": "파일 첨부",

"Type your message": "메시지 입력",
"Unarchive": "아카이브 해제",
"Unmute": "음소거 해제",

@@ -121,0 +123,0 @@ "Unpin": "핀 해제",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Anonieme peiling",
"Archive": "Archief",
"Ask a question": "Stel een vraag",

@@ -121,2 +122,3 @@ "Attach files": "Bijlage toevoegen",

"Type your message": "Type je bericht",
"Unarchive": "Uit archief halen",
"Unmute": "Dempen opheffen",

@@ -123,0 +125,0 @@ "Unpin": "Losmaken",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Enquete anônima",
"Archive": "Arquivar",
"Ask a question": "Faça uma pergunta",

@@ -123,2 +124,3 @@ "Attach files": "Anexar arquivos",

"Type your message": "Digite sua mensagem",
"Unarchive": "Desarquivar",
"Unmute": "Ativar som",

@@ -125,0 +127,0 @@ "Unpin": "Desfixar",

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Анонимный опрос",
"Archive": "Aрхивировать",
"Ask a question": "Задать вопрос",

@@ -125,2 +126,3 @@ "Attach files": "Прикрепить файлы",

"Type your message": "Ваше сообщение",
"Unarchive": "Удалить из архива",
"Unmute": "Включить уведомления",

@@ -127,0 +129,0 @@ "Unpin": "Открепить",

@@ -142,2 +142,3 @@ import { TFunction } from 'i18next';

"Anonymous poll": string;
Archive: string;
"Ask a question": string;

@@ -251,2 +252,3 @@ "Attach files": string;

"Type your message": string;
Unarchive: string;
Unmute: string;

@@ -253,0 +255,0 @@ Unpin: string;

@@ -12,2 +12,3 @@ {

"Anonymous poll": "Anonim anket",
"Archive": "Arşivle",
"Ask a question": "Bir soru sor",

@@ -121,2 +122,3 @@ "Attach files": "Dosya ekle",

"Type your message": "Mesajınızı yazın",
"Unarchive": "Arşivden çıkar",
"Unmute": "Sesini aç",

@@ -123,0 +125,0 @@ "Unpin": "Sabitlemeyi kaldır",

{
"name": "stream-chat-react",
"version": "12.7.1",
"version": "12.8.0",
"description": "React components to create chat conversations or livestream style chat",

@@ -148,3 +148,3 @@ "author": "GetStream",

"react-dom": "^18.0.0 || ^17.0.0 || ^16.8.0",
"stream-chat": "^8.46.0"
"stream-chat": "^8.46.1"
},

@@ -191,3 +191,3 @@ "peerDependenciesMeta": {

"@stream-io/rollup-plugin-node-builtins": "^2.1.5",
"@stream-io/stream-chat-css": "^5.5.0",
"@stream-io/stream-chat-css": "^5.6.0",
"@testing-library/jest-dom": "^6.1.4",

@@ -262,3 +262,3 @@ "@testing-library/react": "^13.1.1",

"semantic-release": "^19.0.5",
"stream-chat": "^8.46.0",
"stream-chat": "^8.46.1",
"ts-jest": "^29.1.4",

@@ -265,0 +265,0 @@ "typescript": "^5.4.5"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc