diff --git a/.circleci/config.yml b/.circleci/config.yml index ac5e942a3..79b6a968f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ defaults: &defaults macos: &macos macos: - xcode: "12.5.0" + xcode: "13.3.0" resource_class: large bash-env: &bash-env diff --git a/__tests__/Storyshots.test.js b/__tests__/Storyshots.test.js index 638fbb0ee..c6e133477 100644 --- a/__tests__/Storyshots.test.js +++ b/__tests__/Storyshots.test.js @@ -1,45 +1,8 @@ import initStoryshots, { Stories2SnapsConverter } from '@storybook/addon-storyshots'; import { render } from '@testing-library/react-native'; -jest.mock('rn-fetch-blob', () => ({ - fs: { - dirs: { - DocumentDir: '/data/com.rocket.chat/documents', - DownloadDir: '/data/com.rocket.chat/downloads' - }, - exists: jest.fn(() => null) - }, - fetch: jest.fn(() => null), - config: jest.fn(() => null) -})); - -jest.mock('react-native-file-viewer', () => ({ - open: jest.fn(() => null) -})); - -jest.mock('../app/lib/database', () => jest.fn(() => null)); global.Date.now = jest.fn(() => new Date('2019-10-10').getTime()); -jest.mock('react-native-mmkv-storage', () => { - return { - Loader: jest.fn().mockImplementation(() => { - return { - setProcessingMode: jest.fn().mockImplementation(() => { - return { - withEncryption: jest.fn().mockImplementation(() => { - return { - initialize: jest.fn() - }; - }) - }; - }) - }; - }), - create: jest.fn(), - MODES: { MULTI_PROCESS: '' } - }; -}); - const converter = new Stories2SnapsConverter(); initStoryshots({ diff --git a/android/app/build.gradle b/android/app/build.gradle index 2207ca59c..bedf03d37 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -144,7 +144,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.26.0" + versionName "4.26.2" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/app/actions/messages.ts b/app/actions/messages.ts index eb0383abf..733de0a58 100644 --- a/app/actions/messages.ts +++ b/app/actions/messages.ts @@ -1,8 +1,7 @@ import { Action } from 'redux'; import { MESSAGES } from './actionsTypes'; - -type IMessage = Record; +import { IMessage } from '../definitions'; interface IReplyBroadcast extends Action { message: IMessage; diff --git a/app/constants/colors.ts b/app/constants/colors.ts index 3920441a2..f4800908a 100644 --- a/app/constants/colors.ts +++ b/app/constants/colors.ts @@ -19,7 +19,7 @@ const mentions = { mentionOtherColor: '#F3BE08' }; -export const themes: any = { +export const colors = { light: { backgroundColor: '#ffffff', focusedBackground: '#ffffff', @@ -174,3 +174,5 @@ export const themes: any = { ...mentions } }; + +export const themes: any = colors; diff --git a/app/containers/ActionSheet/Provider.tsx b/app/containers/ActionSheet/Provider.tsx index 112242263..8ad0e7c27 100644 --- a/app/containers/ActionSheet/Provider.tsx +++ b/app/containers/ActionSheet/Provider.tsx @@ -2,7 +2,7 @@ import React, { ForwardedRef, forwardRef, useContext, useRef } from 'react'; import ActionSheet from './ActionSheet'; -export type TActionSheetOptionsItem = { title: string; icon: string; onPress: () => void }; +export type TActionSheetOptionsItem = { title: string; icon: string; onPress: () => void; danger?: boolean }; export type TActionSheetOptions = { options: TActionSheetOptionsItem[]; diff --git a/app/containers/Avatar/Avatar.tsx b/app/containers/Avatar/Avatar.tsx index 8abb87843..fc8bcecb1 100644 --- a/app/containers/Avatar/Avatar.tsx +++ b/app/containers/Avatar/Avatar.tsx @@ -8,6 +8,7 @@ import { avatarURL } from '../../utils/avatar'; import { SubscriptionType } from '../../definitions/ISubscription'; import Emoji from '../markdown/Emoji'; import { IAvatar } from './interfaces'; +import { useTheme } from '../../theme'; const Avatar = React.memo( ({ @@ -18,7 +19,6 @@ const Avatar = React.memo( user, onPress, emoji, - theme, getCustomEmoji, avatarETag, isStatic, @@ -34,6 +34,8 @@ const Avatar = React.memo( return null; } + const { theme } = useTheme(); + const avatarStyle = { width: size, height: size, @@ -44,7 +46,7 @@ const Avatar = React.memo( if (emoji) { image = ( { - private mounted: boolean; - private subscription?: Subscription; static defaultProps = { @@ -21,16 +19,11 @@ class AvatarContainer extends React.Component { constructor(props: IAvatar) { super(props); - this.mounted = false; this.state = { avatarETag: '' }; this.init(); } - componentDidMount() { - this.mounted = true; - } - - componentDidUpdate(prevProps: any) { + componentDidUpdate(prevProps: IAvatar) { const { text, type } = this.props; if (prevProps.text !== text || prevProps.type !== type) { this.init(); @@ -88,12 +81,7 @@ class AvatarContainer extends React.Component { const observable = record.observe() as Observable; this.subscription = observable.subscribe(r => { const { avatarETag } = r; - if (this.mounted) { - this.setState({ avatarETag }); - } else { - // @ts-ignore - this.state.avatarETag = avatarETag; - } + this.setState({ avatarETag }); }); } }; @@ -105,12 +93,12 @@ class AvatarContainer extends React.Component { } } -const mapStateToProps = (state: any) => ({ +const mapStateToProps = (state: IApplicationState) => ({ user: getUserSelector(state), server: state.share.server.server || state.server.server, serverVersion: state.share.server.version || state.server.version, blockUnauthenticatedAccess: - state.share.settings?.Accounts_AvatarBlockUnauthenticatedAccess ?? + (state.share.settings?.Accounts_AvatarBlockUnauthenticatedAccess as boolean) ?? state.settings.Accounts_AvatarBlockUnauthenticatedAccess ?? true }); diff --git a/app/containers/Avatar/interfaces.ts b/app/containers/Avatar/interfaces.ts index 3bc5dd85e..c455da0a5 100644 --- a/app/containers/Avatar/interfaces.ts +++ b/app/containers/Avatar/interfaces.ts @@ -16,12 +16,11 @@ export interface IAvatar { id?: string; token?: string; }; - theme?: string; onPress?: () => void; getCustomEmoji?: TGetCustomEmoji; avatarETag?: string; isStatic?: boolean | string; rid?: string; blockUnauthenticatedAccess?: boolean; - serverVersion: string; + serverVersion: string | null; } diff --git a/app/containers/EmojiPicker/CustomEmoji.tsx b/app/containers/EmojiPicker/CustomEmoji.tsx index c96ee7ae5..aeebbe21c 100644 --- a/app/containers/EmojiPicker/CustomEmoji.tsx +++ b/app/containers/EmojiPicker/CustomEmoji.tsx @@ -8,6 +8,7 @@ const CustomEmoji = React.memo( > { contentContainerStyle={{ marginHorizontal }} // rerender FlatList in case of width changes key={`emoji-category-${width}`} + // @ts-ignore keyExtractor={item => (item && item.isCustom && item.content) || item} data={emojis} extraData={this.props} diff --git a/app/containers/EmojiPicker/index.tsx b/app/containers/EmojiPicker/index.tsx index 5577fd190..5c67b06df 100644 --- a/app/containers/EmojiPicker/index.tsx +++ b/app/containers/EmojiPicker/index.tsx @@ -109,6 +109,7 @@ class EmojiPicker extends Component { const freqEmojiCollection = db.get('frequently_used_emojis'); let freqEmojiRecord: any; try { + // @ts-ignore freqEmojiRecord = await freqEmojiCollection.find(emoji.content); } catch (error) { // Do nothing diff --git a/app/containers/LoginServices.tsx b/app/containers/LoginServices.tsx index ece543e08..f087922d1 100644 --- a/app/containers/LoginServices.tsx +++ b/app/containers/LoginServices.tsx @@ -285,7 +285,7 @@ class LoginServices extends React.PureComponent void; server: string; - message: object; + message: TAnyMessageModel; isMasterDetail: boolean; - theme?: string; } +type TOnReaction = ({ emoji }: { emoji: TItem }) => void; + interface THeaderItem { - item: IEmoji; - onReaction: Function; + item: TItem; + onReaction: TOnReaction; server: string; theme: string; } interface THeaderFooter { - onReaction: any; + onReaction: TOnReaction; theme: string; } @@ -62,25 +66,32 @@ const styles = StyleSheet.create({ } }); -const keyExtractor = (item: any) => item?.id || item; +const keyExtractor = (item: TItem) => { + const emojiModel = item as TFrequentlyUsedEmojiModel; + return (emojiModel.id ? emojiModel.content : item) as string; +}; const DEFAULT_EMOJIS = ['clap', '+1', 'heart_eyes', 'grinning', 'thinking_face', 'smiley']; -const HeaderItem = React.memo(({ item, onReaction, server, theme }: THeaderItem) => ( - -)); +const HeaderItem = ({ item, onReaction, server, theme }: THeaderItem) => { + const emojiModel = item as TFrequentlyUsedEmojiModel; + const emoji = (emojiModel.id ? emojiModel.content : item) as string; + return ( + + ); +}; -const HeaderFooter = React.memo(({ onReaction, theme }: THeaderFooter) => ( +const HeaderFooter = ({ onReaction, theme }: THeaderFooter) => ( -)); +); -const Header = React.memo(({ handleReaction, server, message, isMasterDetail, theme }: IHeader) => { - const [items, setItems] = useState<(TFrequentlyUsedEmojiModel | string)[]>([]); - const { width, height }: any = useDimensions(); +const Header = React.memo(({ handleReaction, server, message, isMasterDetail }: IHeader) => { + const [items, setItems] = useState([]); + const { width, height } = useDimensions(); + const { theme } = useTheme(); + // TODO: create custom hook to re-render based on screen size const setEmojis = async () => { try { const db = database.active; const freqEmojiCollection = db.get('frequently_used_emojis'); - let freqEmojis: (TFrequentlyUsedEmojiModel | string)[] = await freqEmojiCollection.query().fetch(); + let freqEmojis: TItem[] = await freqEmojiCollection.query().fetch(); const isLandscape = width > height; const size = (isLandscape || isMasterDetail ? width / 2 : width) - CONTAINER_MARGIN * 2; @@ -115,22 +128,21 @@ const Header = React.memo(({ handleReaction, server, message, isMasterDetail, th setEmojis(); }, []); - const onReaction = ({ emoji }: { emoji: IEmoji }) => handleReaction(emoji, message); + const onReaction: TOnReaction = ({ emoji }) => handleReaction(emoji, message); - const renderItem = useCallback( - ({ item }) => , - [] + const renderItem = ({ item }: { item: TItem }) => ( + ); - const renderFooter = useCallback(() => , []); + const renderFooter = () => ; return ( - + ; - editInit: Function; - reactionInit: Function; - onReactionPress: Function; - replyInit: Function; + editInit: (message: TAnyMessageModel) => void; + reactionInit: (message: TAnyMessageModel) => void; + onReactionPress: (shortname: string, messageId: string) => void; + replyInit: (message: TAnyMessageModel, mention: boolean) => void; isMasterDetail: boolean; isReadOnly: boolean; - Message_AllowDeleting: boolean; - Message_AllowDeleting_BlockDeleteInMinutes: number; - Message_AllowEditing: boolean; - Message_AllowEditing_BlockEditInMinutes: number; - Message_AllowPinning: boolean; - Message_AllowStarring: boolean; - Message_Read_Receipt_Store_Users: boolean; + Message_AllowDeleting?: boolean; + Message_AllowDeleting_BlockDeleteInMinutes?: number; + Message_AllowEditing?: boolean; + Message_AllowEditing_BlockEditInMinutes?: number; + Message_AllowPinning?: boolean; + Message_AllowStarring?: boolean; + Message_Read_Receipt_Store_Users?: boolean; server: string; - editMessagePermission: []; - deleteMessagePermission: []; - forceDeleteMessagePermission: []; - pinMessagePermission: []; + editMessagePermission?: string[]; + deleteMessagePermission?: string[]; + forceDeleteMessagePermission?: string[]; + pinMessagePermission?: string[]; } const MessageActions = React.memo( @@ -68,9 +69,14 @@ const MessageActions = React.memo( pinMessagePermission }: IMessageActions, ref - ): any => { - let permissions: any = {}; - const { showActionSheet, hideActionSheet }: any = useActionSheet(); + ) => { + let permissions = { + hasEditPermission: false, + hasDeletePermission: false, + hasForceDeletePermission: false, + hasPinPermission: false + }; + const { showActionSheet, hideActionSheet } = useActionSheet(); const getPermissions = async () => { try { @@ -87,9 +93,9 @@ const MessageActions = React.memo( } }; - const isOwn = (message: any) => message.u && message.u._id === user.id; + const isOwn = (message: TAnyMessageModel) => message.u && message.u._id === user.id; - const allowEdit = (message: any) => { + const allowEdit = (message: TAnyMessageModel) => { if (isReadOnly) { return false; } @@ -104,7 +110,7 @@ const MessageActions = React.memo( if (message.ts != null) { msgTs = moment(message.ts); } - let currentTsDiff: any; + let currentTsDiff = 0; if (msgTs != null) { currentTsDiff = moment().diff(msgTs, 'minutes'); } @@ -113,7 +119,7 @@ const MessageActions = React.memo( return true; }; - const allowDelete = (message: any) => { + const allowDelete = (message: TAnyMessageModel) => { if (isReadOnly) { return false; } @@ -135,7 +141,7 @@ const MessageActions = React.memo( if (message.ts != null) { msgTs = moment(message.ts); } - let currentTsDiff: any; + let currentTsDiff = 0; if (msgTs != null) { currentTsDiff = moment().diff(msgTs, 'minutes'); } @@ -144,19 +150,19 @@ const MessageActions = React.memo( return true; }; - const getPermalink = (message: any) => RocketChat.getPermalinkMessage(message); + const getPermalink = (message: TAnyMessageModel) => RocketChat.getPermalinkMessage(message); - const handleReply = (message: any) => { + const handleReply = (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_REPLY); replyInit(message, true); }; - const handleEdit = (message: any) => { + const handleEdit = (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_EDIT); editInit(message); }; - const handleCreateDiscussion = (message: any) => { + const handleCreateDiscussion = (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_DISCUSSION); const params = { message, channel: room, showCloseModal: true }; if (isMasterDetail) { @@ -166,7 +172,7 @@ const MessageActions = React.memo( } }; - const handleUnread = async (message: any) => { + const handleUnread = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_UNREAD); const { id: messageId, ts } = message; const { rid } = room; @@ -178,7 +184,7 @@ const MessageActions = React.memo( const subRecord = await subCollection.find(rid); await db.write(async () => { try { - await subRecord.update(sub => (sub.lastOpen = ts)); + await subRecord.update(sub => (sub.lastOpen = ts as Date)); // TODO: reevaluate IMessage } catch { // do nothing } @@ -191,42 +197,44 @@ const MessageActions = React.memo( } }; - const handlePermalink = async (message: any) => { + const handlePermalink = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_PERMALINK); try { - const permalink: any = await getPermalink(message); - Clipboard.setString(permalink); + const permalink = await getPermalink(message); + Clipboard.setString(permalink ?? ''); EventEmitter.emit(LISTENER, { message: I18n.t('Permalink_copied_to_clipboard') }); } catch { logEvent(events.ROOM_MSG_ACTION_PERMALINK_F); } }; - const handleCopy = async (message: any) => { + const handleCopy = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_COPY); - await Clipboard.setString(message?.attachments?.[0]?.description || message.msg); + await Clipboard.setString((message?.attachments?.[0]?.description || message.msg) ?? ''); EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') }); }; - const handleShare = async (message: any) => { + const handleShare = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_SHARE); try { - const permalink: any = await getPermalink(message); - Share.share({ message: permalink }); + const permalink = await getPermalink(message); + if (permalink) { + Share.share({ message: permalink }); + } } catch { logEvent(events.ROOM_MSG_ACTION_SHARE_F); } }; - const handleQuote = (message: any) => { + const handleQuote = (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_QUOTE); replyInit(message, false); }; - const handleStar = async (message: any) => { + const handleStar = async (message: TAnyMessageModel) => { logEvent(message.starred ? events.ROOM_MSG_ACTION_UNSTAR : events.ROOM_MSG_ACTION_STAR); try { - await RocketChat.toggleStarMessage(message.id, message.starred); + await RocketChat.toggleStarMessage(message.id, message.starred as boolean); // TODO: reevaluate `message.starred` type on IMessage EventEmitter.emit(LISTENER, { message: message.starred ? I18n.t('Message_unstarred') : I18n.t('Message_starred') }); } catch (e) { logEvent(events.ROOM_MSG_ACTION_STAR_F); @@ -234,20 +242,21 @@ const MessageActions = React.memo( } }; - const handlePin = async (message: any) => { + const handlePin = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_PIN); try { - await RocketChat.togglePinMessage(message.id, message.pinned); + await RocketChat.togglePinMessage(message.id, message.pinned as boolean); // TODO: reevaluate `message.pinned` type on IMessage } catch (e) { logEvent(events.ROOM_MSG_ACTION_PIN_F); log(e); } }; - const handleReaction = (shortname: any, message: any) => { + const handleReaction: IHeader['handleReaction'] = (shortname, message) => { logEvent(events.ROOM_MSG_ACTION_REACTION); if (shortname) { - onReactionPress(shortname, message.id); + // TODO: evaluate unification with IEmoji + onReactionPress(shortname as any, message.id); } else { reactionInit(message); } @@ -255,7 +264,7 @@ const MessageActions = React.memo( hideActionSheet(); }; - const handleReadReceipt = (message: any) => { + const handleReadReceipt = (message: TAnyMessageModel) => { if (isMasterDetail) { Navigation.navigate('ModalStackNavigator', { screen: 'ReadReceiptsView', params: { messageId: message.id } }); } else { @@ -290,7 +299,7 @@ const MessageActions = React.memo( } }; - const handleReport = async (message: any) => { + const handleReport = async (message: TAnyMessageModel) => { logEvent(events.ROOM_MSG_ACTION_REPORT); try { await RocketChat.reportMessage(message.id); @@ -301,14 +310,14 @@ const MessageActions = React.memo( } }; - const handleDelete = (message: any) => { + const handleDelete = (message: TAnyMessageModel) => { showConfirmationAlert({ message: I18n.t('You_will_not_be_able_to_recover_this_message'), confirmationText: I18n.t('Delete'), onPress: async () => { try { logEvent(events.ROOM_MSG_ACTION_DELETE); - await RocketChat.deleteMessage(message.id, message.subscription.id); + await RocketChat.deleteMessage(message.id, message.subscription ? message.subscription.id : ''); } catch (e) { logEvent(events.ROOM_MSG_ACTION_DELETE_F); log(e); @@ -318,7 +327,7 @@ const MessageActions = React.memo( }; const getOptions = (message: TAnyMessageModel) => { - let options: any = []; + let options: TActionSheetOptionsItem[] = []; // Reply if (!isReadOnly) { @@ -462,16 +471,15 @@ const MessageActions = React.memo( } ) ); - -const mapStateToProps = (state: any) => ({ +const mapStateToProps = (state: IApplicationState) => ({ server: state.server.server, - Message_AllowDeleting: state.settings.Message_AllowDeleting, - Message_AllowDeleting_BlockDeleteInMinutes: state.settings.Message_AllowDeleting_BlockDeleteInMinutes, - Message_AllowEditing: state.settings.Message_AllowEditing, - Message_AllowEditing_BlockEditInMinutes: state.settings.Message_AllowEditing_BlockEditInMinutes, - Message_AllowPinning: state.settings.Message_AllowPinning, - Message_AllowStarring: state.settings.Message_AllowStarring, - Message_Read_Receipt_Store_Users: state.settings.Message_Read_Receipt_Store_Users, + Message_AllowDeleting: state.settings.Message_AllowDeleting as boolean, + Message_AllowDeleting_BlockDeleteInMinutes: state.settings.Message_AllowDeleting_BlockDeleteInMinutes as number, + Message_AllowEditing: state.settings.Message_AllowEditing as boolean, + Message_AllowEditing_BlockEditInMinutes: state.settings.Message_AllowEditing_BlockEditInMinutes as number, + Message_AllowPinning: state.settings.Message_AllowPinning as boolean, + Message_AllowStarring: state.settings.Message_AllowStarring as boolean, + Message_Read_Receipt_Store_Users: state.settings.Message_Read_Receipt_Store_Users as boolean, isMasterDetail: state.app.isMasterDetail, editMessagePermission: state.permissions['edit-message'], deleteMessagePermission: state.permissions['delete-message'], diff --git a/app/containers/MessageBox/CommandsPreview/Item.tsx b/app/containers/MessageBox/CommandsPreview/Item.tsx index 3f18d2aac..e65ee70b7 100644 --- a/app/containers/MessageBox/CommandsPreview/Item.tsx +++ b/app/containers/MessageBox/CommandsPreview/Item.tsx @@ -1,12 +1,13 @@ +import FastImage from '@rocket.chat/react-native-fast-image'; import React, { useContext, useState } from 'react'; import { TouchableOpacity } from 'react-native'; -import FastImage from '@rocket.chat/react-native-fast-image'; -import styles from '../styles'; -import { CustomIcon } from '../../../lib/Icons'; import { themes } from '../../../constants/colors'; -import MessageboxContext from '../Context'; +import { CustomIcon } from '../../../lib/Icons'; +import { useTheme } from '../../../theme'; import ActivityIndicator from '../../ActivityIndicator'; +import MessageboxContext from '../Context'; +import styles from '../styles'; interface IMessageBoxCommandsPreviewItem { item: { @@ -14,13 +15,13 @@ interface IMessageBoxCommandsPreviewItem { id: string; value: string; }; - theme?: string; } -const Item = ({ item, theme }: IMessageBoxCommandsPreviewItem) => { +const Item = ({ item }: IMessageBoxCommandsPreviewItem) => { const context = useContext(MessageboxContext); const { onPressCommandPreview } = context; const [loading, setLoading] = useState(true); + const { theme } = useTheme(); return ( { {loading ? : null} ) : ( - + )} ); diff --git a/app/containers/MessageBox/CommandsPreview/index.tsx b/app/containers/MessageBox/CommandsPreview/index.tsx index d55545ddc..e5a94200a 100644 --- a/app/containers/MessageBox/CommandsPreview/index.tsx +++ b/app/containers/MessageBox/CommandsPreview/index.tsx @@ -1,30 +1,30 @@ +import { dequal } from 'dequal'; import React from 'react'; import { FlatList } from 'react-native'; -import { dequal } from 'dequal'; -import Item from './Item'; -import styles from '../styles'; import { themes } from '../../../constants/colors'; -import { withTheme } from '../../../theme'; import { IPreviewItem } from '../../../definitions'; +import { useTheme } from '../../../theme'; +import styles from '../styles'; +import Item from './Item'; interface IMessageBoxCommandsPreview { commandPreview: IPreviewItem[]; showCommandPreview: boolean; - theme?: string; } const CommandsPreview = React.memo( - ({ theme, commandPreview, showCommandPreview }: IMessageBoxCommandsPreview) => { + ({ commandPreview, showCommandPreview }: IMessageBoxCommandsPreview) => { if (!showCommandPreview) { return null; } + const { theme } = useTheme(); return ( } + renderItem={({ item }) => } keyExtractor={(item: any) => item.id} keyboardShouldPersistTaps='always' horizontal @@ -33,9 +33,6 @@ const CommandsPreview = React.memo( ); }, (prevProps, nextProps) => { - if (prevProps.theme !== nextProps.theme) { - return false; - } if (prevProps.showCommandPreview !== nextProps.showCommandPreview) { return false; } @@ -46,4 +43,4 @@ const CommandsPreview = React.memo( } ); -export default withTheme(CommandsPreview); +export default CommandsPreview; diff --git a/app/containers/MessageBox/Context.ts b/app/containers/MessageBox/Context.ts index 4978b78db..fee6475af 100644 --- a/app/containers/MessageBox/Context.ts +++ b/app/containers/MessageBox/Context.ts @@ -1,5 +1,4 @@ import React from 'react'; -// @ts-ignore -const MessageboxContext = React.createContext(); +const MessageboxContext = React.createContext(null); export default MessageboxContext; diff --git a/app/containers/MessageBox/EmojiKeyboard.tsx b/app/containers/MessageBox/EmojiKeyboard.tsx index e5bc65a6e..c6e742170 100644 --- a/app/containers/MessageBox/EmojiKeyboard.tsx +++ b/app/containers/MessageBox/EmojiKeyboard.tsx @@ -7,6 +7,7 @@ import EmojiPicker from '../EmojiPicker'; import styles from './styles'; import { themes } from '../../constants/colors'; import { withTheme } from '../../theme'; +import { IEmoji } from '../../definitions/IEmoji'; interface IMessageBoxEmojiKeyboard { theme: string; @@ -21,7 +22,7 @@ export default class EmojiKeyboard extends React.PureComponent { + onEmojiSelected = (emoji: IEmoji) => { KeyboardRegistry.onItemSelected('EmojiKeyboard', { emoji }); }; diff --git a/app/containers/MessageBox/LeftButtons.android.tsx b/app/containers/MessageBox/LeftButtons.android.tsx index 105ce6297..499fd7e61 100644 --- a/app/containers/MessageBox/LeftButtons.android.tsx +++ b/app/containers/MessageBox/LeftButtons.android.tsx @@ -3,7 +3,6 @@ import React from 'react'; import { CancelEditingButton, ToggleEmojiButton } from './buttons'; interface IMessageBoxLeftButtons { - theme: string; showEmojiKeyboard: boolean; openEmoji(): void; closeEmoji(): void; @@ -11,13 +10,11 @@ interface IMessageBoxLeftButtons { editCancel(): void; } -const LeftButtons = React.memo( - ({ theme, showEmojiKeyboard, editing, editCancel, openEmoji, closeEmoji }: IMessageBoxLeftButtons) => { - if (editing) { - return ; - } - return ; +const LeftButtons = React.memo(({ showEmojiKeyboard, editing, editCancel, openEmoji, closeEmoji }: IMessageBoxLeftButtons) => { + if (editing) { + return ; } -); + return ; +}); export default LeftButtons; diff --git a/app/containers/MessageBox/LeftButtons.ios.tsx b/app/containers/MessageBox/LeftButtons.ios.tsx index 3ed9b5060..94d253705 100644 --- a/app/containers/MessageBox/LeftButtons.ios.tsx +++ b/app/containers/MessageBox/LeftButtons.ios.tsx @@ -5,23 +5,20 @@ import { ActionsButton, CancelEditingButton } from './buttons'; import styles from './styles'; interface IMessageBoxLeftButtons { - theme: string; showMessageBoxActions(): void; editing: boolean; editCancel(): void; isActionsEnabled: boolean; } -const LeftButtons = React.memo( - ({ theme, showMessageBoxActions, editing, editCancel, isActionsEnabled }: IMessageBoxLeftButtons) => { - if (editing) { - return ; - } - if (isActionsEnabled) { - return ; - } - return ; +const LeftButtons = React.memo(({ showMessageBoxActions, editing, editCancel, isActionsEnabled }: IMessageBoxLeftButtons) => { + if (editing) { + return ; } -); + if (isActionsEnabled) { + return ; + } + return ; +}); export default LeftButtons; diff --git a/app/containers/MessageBox/Mentions/FixedMentionItem.tsx b/app/containers/MessageBox/Mentions/FixedMentionItem.tsx index a1326b6b1..0b5693998 100644 --- a/app/containers/MessageBox/Mentions/FixedMentionItem.tsx +++ b/app/containers/MessageBox/Mentions/FixedMentionItem.tsx @@ -4,30 +4,33 @@ import { Text, TouchableOpacity } from 'react-native'; import styles from '../styles'; import I18n from '../../../i18n'; import { themes } from '../../../constants/colors'; +import { useTheme } from '../../../theme'; interface IMessageBoxFixedMentionItem { item: { username: string; }; onPress: Function; - theme: string; } -const FixedMentionItem = ({ item, onPress, theme }: IMessageBoxFixedMentionItem) => ( - onPress(item)}> - {item.username} - - {item.username === 'here' ? I18n.t('Notify_active_in_this_room') : I18n.t('Notify_all_in_this_room')} - - -); +const FixedMentionItem = ({ item, onPress }: IMessageBoxFixedMentionItem) => { + const { theme } = useTheme(); + return ( + onPress(item)}> + {item.username} + + {item.username === 'here' ? I18n.t('Notify_active_in_this_room') : I18n.t('Notify_all_in_this_room')} + + + ); +}; export default FixedMentionItem; diff --git a/app/containers/MessageBox/Mentions/MentionEmoji.tsx b/app/containers/MessageBox/Mentions/MentionEmoji.tsx index 851b857b3..a6c589acf 100644 --- a/app/containers/MessageBox/Mentions/MentionEmoji.tsx +++ b/app/containers/MessageBox/Mentions/MentionEmoji.tsx @@ -1,12 +1,11 @@ import React, { useContext } from 'react'; import { Text } from 'react-native'; -import PropTypes from 'prop-types'; -import shortnameToUnicode from '../../../utils/shortnameToUnicode'; -import styles from '../styles'; -import MessageboxContext from '../Context'; -import CustomEmoji from '../../EmojiPicker/CustomEmoji'; import { IEmoji } from '../../../definitions/IEmoji'; +import shortnameToUnicode from '../../../utils/shortnameToUnicode'; +import CustomEmoji from '../../EmojiPicker/CustomEmoji'; +import MessageboxContext from '../Context'; +import styles from '../styles'; interface IMessageBoxMentionEmoji { item: IEmoji; @@ -22,8 +21,4 @@ const MentionEmoji = ({ item }: IMessageBoxMentionEmoji) => { return {shortnameToUnicode(`:${item}:`)}; }; -MentionEmoji.propTypes = { - item: PropTypes.object -}; - export default MentionEmoji; diff --git a/app/containers/MessageBox/Mentions/MentionHeaderList.js b/app/containers/MessageBox/Mentions/MentionHeaderList.tsx similarity index 80% rename from app/containers/MessageBox/Mentions/MentionHeaderList.js rename to app/containers/MessageBox/Mentions/MentionHeaderList.tsx index 10b48e4e9..4be2dcdcd 100644 --- a/app/containers/MessageBox/Mentions/MentionHeaderList.js +++ b/app/containers/MessageBox/Mentions/MentionHeaderList.tsx @@ -1,16 +1,23 @@ import React, { useContext } from 'react'; -import { View, Text, ActivityIndicator, TouchableOpacity } from 'react-native'; -import PropTypes from 'prop-types'; +import { ActivityIndicator, Text, TouchableOpacity, View } from 'react-native'; -import { MENTIONS_TRACKING_TYPE_CANNED } from '../constants'; -import styles from '../styles'; -import sharedStyles from '../../../views/Styles'; -import I18n from '../../../i18n'; import { themes } from '../../../constants/colors'; +import I18n from '../../../i18n'; import { CustomIcon } from '../../../lib/Icons'; +import { useTheme } from '../../../theme'; +import sharedStyles from '../../../views/Styles'; +import { MENTIONS_TRACKING_TYPE_CANNED } from '../constants'; import MessageboxContext from '../Context'; +import styles from '../styles'; -const MentionHeaderList = ({ trackingType, hasMentions, theme, loading }) => { +interface IMentionHeaderList { + trackingType: string; + hasMentions: boolean; + loading: boolean; +} + +const MentionHeaderList = ({ trackingType, hasMentions, loading }: IMentionHeaderList) => { + const { theme } = useTheme(); const context = useContext(MessageboxContext); const { onPressNoMatchCanned } = context; @@ -39,11 +46,4 @@ const MentionHeaderList = ({ trackingType, hasMentions, theme, loading }) => { return null; }; -MentionHeaderList.propTypes = { - trackingType: PropTypes.string, - hasMentions: PropTypes.bool, - theme: PropTypes.string, - loading: PropTypes.bool -}; - export default MentionHeaderList; diff --git a/app/containers/MessageBox/Mentions/MentionItem.tsx b/app/containers/MessageBox/Mentions/MentionItem.tsx index 6c78bfe9f..9daf4d47a 100644 --- a/app/containers/MessageBox/Mentions/MentionItem.tsx +++ b/app/containers/MessageBox/Mentions/MentionItem.tsx @@ -1,14 +1,15 @@ import React, { useContext } from 'react'; import { Text, TouchableOpacity } from 'react-native'; -import styles from '../styles'; -import Avatar from '../../Avatar'; -import MessageboxContext from '../Context'; -import FixedMentionItem from './FixedMentionItem'; -import MentionEmoji from './MentionEmoji'; -import { MENTIONS_TRACKING_TYPE_EMOJIS, MENTIONS_TRACKING_TYPE_COMMANDS, MENTIONS_TRACKING_TYPE_CANNED } from '../constants'; import { themes } from '../../../constants/colors'; import { IEmoji } from '../../../definitions/IEmoji'; +import { useTheme } from '../../../theme'; +import Avatar from '../../Avatar'; +import { MENTIONS_TRACKING_TYPE_CANNED, MENTIONS_TRACKING_TYPE_COMMANDS, MENTIONS_TRACKING_TYPE_EMOJIS } from '../constants'; +import MessageboxContext from '../Context'; +import styles from '../styles'; +import FixedMentionItem from './FixedMentionItem'; +import MentionEmoji from './MentionEmoji'; interface IMessageBoxMentionItem { item: { @@ -21,11 +22,48 @@ interface IMessageBoxMentionItem { text: string; } & IEmoji; trackingType: string; - theme: string; } -const MentionItem = ({ item, trackingType, theme }: IMessageBoxMentionItem) => { +const MentionItemContent = React.memo(({ trackingType, item }: IMessageBoxMentionItem) => { + const { theme } = useTheme(); + switch (trackingType) { + case MENTIONS_TRACKING_TYPE_EMOJIS: + return ( + <> + + :{item.name || item}: + + ); + case MENTIONS_TRACKING_TYPE_COMMANDS: + return ( + <> + / + {item.id} + + ); + case MENTIONS_TRACKING_TYPE_CANNED: + return ( + <> + !{item.shortcut} + + {item.text} + + + ); + + default: + return ( + <> + + {item.username || item.name || item} + + ); + } +}); + +const MentionItem = ({ item, trackingType }: IMessageBoxMentionItem) => { const context = useContext(MessageboxContext); + const { theme } = useTheme(); const { onPressMention } = context; const defineTestID = (type: string) => { @@ -44,43 +82,7 @@ const MentionItem = ({ item, trackingType, theme }: IMessageBoxMentionItem) => { const testID = defineTestID(trackingType); if (item.username === 'all' || item.username === 'here') { - return ; - } - - let content = ( - <> - - {item.username || item.name || item} - - ); - - if (trackingType === MENTIONS_TRACKING_TYPE_EMOJIS) { - content = ( - <> - - :{item.name || item}: - - ); - } - - if (trackingType === MENTIONS_TRACKING_TYPE_COMMANDS) { - content = ( - <> - / - {item.id} - - ); - } - - if (trackingType === MENTIONS_TRACKING_TYPE_CANNED) { - content = ( - <> - !{item.shortcut} - - {item.text} - - - ); + return ; } return ( @@ -94,7 +96,7 @@ const MentionItem = ({ item, trackingType, theme }: IMessageBoxMentionItem) => { ]} onPress={() => onPressMention(item)} testID={testID}> - {content} + ); }; diff --git a/app/containers/MessageBox/Mentions/index.tsx b/app/containers/MessageBox/Mentions/index.tsx index 13f82ac7c..c7bbd1539 100644 --- a/app/containers/MessageBox/Mentions/index.tsx +++ b/app/containers/MessageBox/Mentions/index.tsx @@ -6,29 +6,30 @@ import MentionHeaderList from './MentionHeaderList'; import styles from '../styles'; import MentionItem from './MentionItem'; import { themes } from '../../../constants/colors'; +import { useTheme } from '../../../theme'; interface IMessageBoxMentions { mentions: any[]; trackingType: string; - theme: string; loading: boolean; } const Mentions = React.memo( - ({ mentions, trackingType, theme, loading }: IMessageBoxMentions) => { + ({ mentions, trackingType, loading }: IMessageBoxMentions) => { if (!trackingType) { return null; } + const { theme } = useTheme(); return ( ( - 0} theme={theme} loading={loading} /> + 0} loading={loading} /> )} data={mentions} extraData={mentions} - renderItem={({ item }) => } + renderItem={({ item }) => } keyExtractor={item => item.rid || item.name || item.command || item.shortcut || item} keyboardShouldPersistTaps='always' /> @@ -39,9 +40,6 @@ const Mentions = React.memo( if (prevProps.loading !== nextProps.loading) { return false; } - if (prevProps.theme !== nextProps.theme) { - return false; - } if (prevProps.trackingType !== nextProps.trackingType) { return false; } diff --git a/app/containers/MessageBox/RecordAudio.tsx b/app/containers/MessageBox/RecordAudio.tsx index e219e6423..3071d6310 100644 --- a/app/containers/MessageBox/RecordAudio.tsx +++ b/app/containers/MessageBox/RecordAudio.tsx @@ -47,23 +47,17 @@ const RECORDING_MODE = { interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX }; -const formatTime = function (seconds: any) { - let minutes: any = Math.floor(seconds / 60); - seconds %= 60; - if (minutes < 10) { - minutes = `0${minutes}`; - } - if (seconds < 10) { - seconds = `0${seconds}`; - } - return `${minutes}:${seconds}`; +const formatTime = function (time: number) { + const minutes = Math.floor(time / 60); + const seconds = time % 60; + const min = minutes < 10 ? `0${minutes}` : minutes; + const sec = seconds < 10 ? `0${seconds}` : seconds; + return `${min}:${sec}`; }; export default class RecordAudio extends React.PureComponent { private isRecorderBusy: boolean; - - private recording: any; - + private recording!: Audio.Recording; private LastDuration: number; constructor(props: IMessageBoxRecordAudioProps) { @@ -112,7 +106,7 @@ export default class RecordAudio extends React.PureComponent { + onRecordingStatusUpdate = (status: Audio.RecordingStatus) => { this.setState({ isRecording: status.isRecording, recordingDurationMillis: status.durationMillis @@ -157,7 +151,7 @@ export default class RecordAudio extends React.PureComponent { + ({ message, Message_TimeFormat, replying, close, useRealName }: IMessageBoxReplyPreview) => { if (!replying) { return null; } - + const { theme } = useTheme(); const time = moment(message.ts).format(Message_TimeFormat); return ( @@ -75,16 +76,14 @@ const ReplyPreview = React.memo( ); }, - (prevProps: any, nextProps: any) => - prevProps.replying === nextProps.replying && - prevProps.theme === nextProps.theme && - prevProps.message.id === nextProps.message.id + (prevProps: IMessageBoxReplyPreview, nextProps: IMessageBoxReplyPreview) => + prevProps.replying === nextProps.replying && prevProps.message.id === nextProps.message.id ); -const mapStateToProps = (state: any) => ({ - Message_TimeFormat: state.settings.Message_TimeFormat, +const mapStateToProps = (state: IApplicationState) => ({ + Message_TimeFormat: state.settings.Message_TimeFormat as string, baseUrl: state.server.server, - useRealName: state.settings.UI_Use_Real_Name + useRealName: state.settings.UI_Use_Real_Name as boolean }); export default connect(mapStateToProps)(ReplyPreview); diff --git a/app/containers/MessageBox/RightButtons.android.tsx b/app/containers/MessageBox/RightButtons.android.tsx index 0ad3b22ee..4af8d5027 100644 --- a/app/containers/MessageBox/RightButtons.android.tsx +++ b/app/containers/MessageBox/RightButtons.android.tsx @@ -5,24 +5,20 @@ import { ActionsButton, SendButton } from './buttons'; import styles from './styles'; interface IMessageBoxRightButtons { - theme: string; showSend: boolean; submit(): void; showMessageBoxActions(): void; isActionsEnabled: boolean; } -const RightButtons = React.memo( - ({ theme, showSend, submit, showMessageBoxActions, isActionsEnabled }: IMessageBoxRightButtons) => { - if (showSend) { - return ; - } - if (isActionsEnabled) { - return ; - } - - return ; +const RightButtons = React.memo(({ showSend, submit, showMessageBoxActions, isActionsEnabled }: IMessageBoxRightButtons) => { + if (showSend) { + return ; } -); + if (isActionsEnabled) { + return ; + } + return ; +}); export default RightButtons; diff --git a/app/containers/MessageBox/RightButtons.ios.tsx b/app/containers/MessageBox/RightButtons.ios.tsx index c295d37dc..f2cf2bca5 100644 --- a/app/containers/MessageBox/RightButtons.ios.tsx +++ b/app/containers/MessageBox/RightButtons.ios.tsx @@ -3,16 +3,15 @@ import React from 'react'; import { SendButton } from './buttons'; interface IMessageBoxRightButtons { - theme: string; showSend: boolean; submit(): void; } -const RightButtons = React.memo(({ theme, showSend, submit }: IMessageBoxRightButtons) => { +const RightButtons = ({ showSend, submit }: IMessageBoxRightButtons) => { if (showSend) { - return ; + return ; } return null; -}); +}; export default RightButtons; diff --git a/app/containers/MessageBox/buttons/ActionsButton.tsx b/app/containers/MessageBox/buttons/ActionsButton.tsx index e40513b4a..b6b8fd28e 100644 --- a/app/containers/MessageBox/buttons/ActionsButton.tsx +++ b/app/containers/MessageBox/buttons/ActionsButton.tsx @@ -3,12 +3,11 @@ import React from 'react'; import BaseButton from './BaseButton'; interface IActionsButton { - theme: string; onPress(): void; } -const ActionsButton = React.memo(({ theme, onPress }: IActionsButton) => ( - -)); +const ActionsButton = ({ onPress }: IActionsButton) => ( + +); export default ActionsButton; diff --git a/app/containers/MessageBox/buttons/BaseButton.tsx b/app/containers/MessageBox/buttons/BaseButton.tsx index ca14cb015..be63c5934 100644 --- a/app/containers/MessageBox/buttons/BaseButton.tsx +++ b/app/containers/MessageBox/buttons/BaseButton.tsx @@ -1,13 +1,13 @@ -import React from 'react'; import { BorderlessButton } from 'react-native-gesture-handler'; +import React from 'react'; -import { themes } from '../../../constants/colors'; -import { CustomIcon } from '../../../lib/Icons'; import styles from '../styles'; -import I18n from '../../../i18n'; +import i18n from '../../../i18n'; +import { CustomIcon } from '../../../lib/Icons'; +import { useTheme } from '../../../theme'; +import { themes } from '../../../constants/colors'; interface IBaseButton { - theme: string; onPress(): void; testID: string; accessibilityLabel: string; @@ -15,16 +15,18 @@ interface IBaseButton { color: string; } -const BaseButton = React.memo(({ onPress, testID, accessibilityLabel, icon, theme, color }: Partial) => ( - - - -)); +const BaseButton = ({ accessibilityLabel, icon, color, ...props }: Partial) => { + const { theme } = useTheme(); + return ( + + + + ); +}; export default BaseButton; diff --git a/app/containers/MessageBox/buttons/CancelEditingButton.tsx b/app/containers/MessageBox/buttons/CancelEditingButton.tsx index 9f026dabc..821b7a193 100644 --- a/app/containers/MessageBox/buttons/CancelEditingButton.tsx +++ b/app/containers/MessageBox/buttons/CancelEditingButton.tsx @@ -3,18 +3,11 @@ import React from 'react'; import BaseButton from './BaseButton'; interface ICancelEditingButton { - theme: string; onPress(): void; } -const CancelEditingButton = React.memo(({ theme, onPress }: ICancelEditingButton) => ( - -)); +const CancelEditingButton = ({ onPress }: ICancelEditingButton) => ( + +); export default CancelEditingButton; diff --git a/app/containers/MessageBox/buttons/SendButton.tsx b/app/containers/MessageBox/buttons/SendButton.tsx index 7f24ad7e8..2634307fd 100644 --- a/app/containers/MessageBox/buttons/SendButton.tsx +++ b/app/containers/MessageBox/buttons/SendButton.tsx @@ -1,22 +1,24 @@ import React from 'react'; -import BaseButton from './BaseButton'; import { themes } from '../../../constants/colors'; +import { useTheme } from '../../../theme'; +import BaseButton from './BaseButton'; interface ISendButton { - theme: string; onPress(): void; } -const SendButton = React.memo(({ theme, onPress }: ISendButton) => ( - -)); +const SendButton = ({ onPress }: ISendButton) => { + const { theme } = useTheme(); + return ( + + ); +}; export default SendButton; diff --git a/app/containers/MessageBox/buttons/ToggleEmojiButton.tsx b/app/containers/MessageBox/buttons/ToggleEmojiButton.tsx index cd04fff14..41bfd01b7 100644 --- a/app/containers/MessageBox/buttons/ToggleEmojiButton.tsx +++ b/app/containers/MessageBox/buttons/ToggleEmojiButton.tsx @@ -3,33 +3,18 @@ import React from 'react'; import BaseButton from './BaseButton'; interface IToggleEmojiButton { - theme: string; show: boolean; open(): void; close(): void; } -const ToggleEmojiButton = React.memo(({ theme, show, open, close }: IToggleEmojiButton) => { +const ToggleEmojiButton = ({ show, open, close }: IToggleEmojiButton) => { if (show) { return ( - + ); } - return ( - - ); -}); + return ; +}; export default ToggleEmojiButton; diff --git a/app/containers/MessageBox/index.tsx b/app/containers/MessageBox/index.tsx index d3b15e246..6c3635a39 100644 --- a/app/containers/MessageBox/index.tsx +++ b/app/containers/MessageBox/index.tsx @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import { Alert, Keyboard, NativeModules, Text, View } from 'react-native'; import { connect } from 'react-redux'; import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard'; -import ImagePicker, { Image, ImageOrVideo } from 'react-native-image-crop-picker'; +import ImagePicker, { Image, ImageOrVideo, Options } from 'react-native-image-crop-picker'; import { dequal } from 'dequal'; import DocumentPicker from 'react-native-document-picker'; import { Q } from '@nozbe/watermelondb'; @@ -50,7 +50,8 @@ import { sanitizeLikeString } from '../../lib/database/utils'; import { CustomIcon } from '../../lib/Icons'; import { IMessage } from '../../definitions/IMessage'; import { forceJpgExtension } from './forceJpgExtension'; -import { IPreviewItem, IUser } from '../../definitions'; +import { IBaseScreen, IPreviewItem, IUser, TSubscriptionModel, TThreadModel } from '../../definitions'; +import { MasterDetailInsideStackParamList } from '../../stacks/MasterDetailStack/types'; if (isAndroid) { require('./EmojiKeyboard'); @@ -63,18 +64,18 @@ const imagePickerConfig = { forceJpg: true }; -const libraryPickerConfig = { +const libraryPickerConfig: Options = { multiple: true, compressVideoPreset: 'Passthrough', mediaType: 'any', forceJpg: true }; -const videoPickerConfig = { +const videoPickerConfig: Options = { mediaType: 'video' }; -export interface IMessageBoxProps { +export interface IMessageBoxProps extends IBaseScreen { rid: string; baseUrl: string; message: IMessage; @@ -97,7 +98,6 @@ export interface IMessageBoxProps { theme: string; replyCancel(): void; showSend: boolean; - navigation: any; children: JSX.Element; isMasterDetail: boolean; showActionSheet: Function; @@ -118,7 +118,7 @@ interface IMessageBoxState { commandPreview: IPreviewItem[]; showCommandPreview: boolean; command: { - appId?: any; + appId?: string; }; tshow: boolean; mentionLoading: boolean; @@ -132,17 +132,15 @@ class MessageBox extends Component { private focused: boolean; - private options: any; + private imagePickerConfig: Options; - private imagePickerConfig: any; + private libraryPickerConfig: Options; - private libraryPickerConfig: any; + private videoPickerConfig: Options; - private videoPickerConfig: any; + private room!: TSubscriptionModel; - private room: any; - - private thread: any; + private thread!: TThreadModel; private unsubscribeFocus: any; @@ -713,7 +711,8 @@ class MessageBox extends Component { chooseFromLibrary = async () => { logEvent(events.ROOM_BOX_ACTION_LIBRARY); try { - let attachments = (await ImagePicker.openPicker(this.libraryPickerConfig)) as ImageOrVideo[]; + // The type can be video or photo, however the lib understands that it is just one of them. + let attachments = (await ImagePicker.openPicker(this.libraryPickerConfig)) as unknown as ImageOrVideo[]; attachments = attachments.map(att => forceJpgExtension(att)); this.openShareView(attachments); } catch (e) { @@ -757,12 +756,12 @@ class MessageBox extends Component { openShareView = (attachments: any) => { const { message, replyCancel, replyWithMention } = this.props; // Start a thread with an attachment - let { thread } = this; + let value: TThreadModel | IMessage = this.thread; if (replyWithMention) { - thread = message; + value = message; replyCancel(); } - Navigation.navigate('ShareView', { room: this.room, thread, attachments }); + Navigation.navigate('ShareView', { room: this.room, value, attachments }); }; createDiscussion = () => { @@ -1058,7 +1057,7 @@ class MessageBox extends Component { const commandsPreviewAndMentions = !recording ? ( <> - + ) : null; @@ -1069,7 +1068,6 @@ class MessageBox extends Component { username={user.username} replying={replying} getCustomEmoji={getCustomEmoji} - theme={theme} /> ) : null; diff --git a/app/containers/ReactionsModal.tsx b/app/containers/ReactionsModal.tsx index 3240baff6..2bbd9fa4f 100644 --- a/app/containers/ReactionsModal.tsx +++ b/app/containers/ReactionsModal.tsx @@ -8,7 +8,7 @@ import I18n from '../i18n'; import { CustomIcon } from '../lib/Icons'; import sharedStyles from '../views/Styles'; import { themes } from '../constants/colors'; -import { withTheme } from '../theme'; +import { useTheme, withTheme } from '../theme'; import { TGetCustomEmoji } from '../definitions/IEmoji'; import { TMessageModel, ILoggedUser } from '../definitions'; import SafeAreaView from './SafeAreaView'; @@ -61,38 +61,37 @@ const styles = StyleSheet.create({ const standardEmojiStyle = { fontSize: 20 }; const customEmojiStyle = { width: 20, height: 20 }; -interface IItem { +interface ISharedFields { + user?: Pick; + baseUrl: string; + getCustomEmoji: TGetCustomEmoji; +} + +interface IItem extends ISharedFields { item: { - usernames: any; + usernames: string[]; emoji: string; }; - user?: Pick; - baseUrl?: string; - getCustomEmoji?: TGetCustomEmoji; - theme?: string; } -interface IModalContent { +interface IModalContent extends ISharedFields { message?: TMessageModel; - onClose: Function; + onClose: () => void; theme: string; } -interface IReactionsModal { - message?: any; - user?: Pick; +interface IReactionsModal extends ISharedFields { + message?: TMessageModel; isVisible: boolean; onClose(): void; - baseUrl: string; - getCustomEmoji?: TGetCustomEmoji; - theme: string; } -const Item = React.memo(({ item, user, baseUrl, getCustomEmoji, theme }: IItem) => { +const Item = React.memo(({ item, user, baseUrl, getCustomEmoji }: IItem) => { + const { theme } = useTheme(); const count = item.usernames.length; let usernames = item.usernames .slice(0, 3) - .map((username: any) => (username === user?.username ? I18n.t('you') : username)) + .map((username: string) => (username === user?.username ? I18n.t('you') : username)) .join(', '); if (count > 3) { usernames = `${usernames} ${I18n.t('and_more')} ${count - 3}`; @@ -106,15 +105,15 @@ const Item = React.memo(({ item, user, baseUrl, getCustomEmoji, theme }: IItem) content={item.emoji} standardEmojiStyle={standardEmojiStyle} customEmojiStyle={customEmojiStyle} - baseUrl={baseUrl!} - getCustomEmoji={getCustomEmoji!} + baseUrl={baseUrl} + getCustomEmoji={getCustomEmoji} /> - + {count === 1 ? I18n.t('1_person_reacted') : I18n.t('N_people_reacted', { n: count })} - {usernames} + {usernames} ); @@ -143,18 +142,21 @@ const ModalContent = React.memo(({ message, onClose, ...props }: IModalContent) }); const ReactionsModal = React.memo( - ({ isVisible, onClose, theme, ...props }: IReactionsModal) => ( - - - - ), - (prevProps, nextProps) => prevProps.isVisible === nextProps.isVisible && prevProps.theme === nextProps.theme + ({ isVisible, onClose, ...props }: IReactionsModal) => { + const { theme } = useTheme(); + return ( + + + + ); + }, + (prevProps, nextProps) => prevProps.isVisible === nextProps.isVisible ); ReactionsModal.displayName = 'ReactionsModal'; diff --git a/app/containers/RoomHeader/RoomHeader.tsx b/app/containers/RoomHeader/RoomHeader.tsx index c0627d2d8..2ee96db45 100644 --- a/app/containers/RoomHeader/RoomHeader.tsx +++ b/app/containers/RoomHeader/RoomHeader.tsx @@ -6,8 +6,8 @@ import sharedStyles from '../../views/Styles'; import { themes } from '../../constants/colors'; import { MarkdownPreview } from '../markdown'; import RoomTypeIcon from '../RoomTypeIcon'; -import { withTheme } from '../../theme'; import { TUserStatus } from '../../definitions'; +import { useTheme } from '../../theme'; const HIT_SLOP = { top: 5, @@ -44,9 +44,8 @@ const styles = StyleSheet.create({ type TRoomHeaderSubTitle = { usersTyping: []; - theme: string; subtitle: string; - renderFunc: any; + renderFunc?: () => React.ReactElement; scale: number; }; @@ -55,7 +54,6 @@ type TRoomHeaderHeaderTitle = { tmid: string; prid: string; scale: number; - theme: string; testID: string; }; @@ -77,7 +75,8 @@ interface IRoomHeader { testID: string; } -const SubTitle = React.memo(({ usersTyping, subtitle, renderFunc, theme, scale }: TRoomHeaderSubTitle) => { +const SubTitle = React.memo(({ usersTyping, subtitle, renderFunc, scale }: TRoomHeaderSubTitle) => { + const { theme } = useTheme(); const fontSize = getSubTitleSize(scale); // typing if (usersTyping.length) { @@ -108,7 +107,8 @@ const SubTitle = React.memo(({ usersTyping, subtitle, renderFunc, theme, scale } return null; }); -const HeaderTitle = React.memo(({ title, tmid, prid, scale, theme, testID }: TRoomHeaderHeaderTitle) => { +const HeaderTitle = React.memo(({ title, tmid, prid, scale, testID }: TRoomHeaderHeaderTitle) => { + const { theme } = useTheme(); const titleStyle = { fontSize: TITLE_SIZE * scale, color: themes[theme].headerTitleColor }; if (!tmid && !prid) { return ( @@ -133,12 +133,12 @@ const Header = React.memo( prid, tmid, onPress, - theme, isGroupChat, teamMain, testID, usersTyping = [] }: IRoomHeader) => { + const { theme } = useTheme(); const portrait = height > width; let scale = 1; @@ -153,7 +153,7 @@ const Header = React.memo( renderFunc = () => ( - + {parentTitle} @@ -168,25 +168,18 @@ const Header = React.memo( accessibilityLabel={title} onPress={handleOnPress} style={styles.container} - // @ts-ignore - disabled={tmid} + disabled={!!tmid} hitSlop={HIT_SLOP}> {tmid ? null : ( )} - + - + ); } ); -export default withTheme(Header); +export default Header; diff --git a/app/containers/SafeAreaView.tsx b/app/containers/SafeAreaView.tsx index 3794fdb91..2ffae53ec 100644 --- a/app/containers/SafeAreaView.tsx +++ b/app/containers/SafeAreaView.tsx @@ -1,9 +1,9 @@ import React from 'react'; -import { StyleSheet } from 'react-native'; +import { StyleSheet, ViewProps } from 'react-native'; import { SafeAreaView as SafeAreaContext } from 'react-native-safe-area-context'; import { themes } from '../constants/colors'; -import { withTheme } from '../theme'; +import { useTheme } from '../theme'; const styles = StyleSheet.create({ view: { @@ -11,22 +11,24 @@ const styles = StyleSheet.create({ } }); -interface ISafeAreaView { - testID?: string; - theme?: string; +type SupportedChildren = React.ReactElement | React.ReactElement[] | null; +type TSafeAreaViewChildren = SupportedChildren | SupportedChildren[]; + +interface ISafeAreaView extends ViewProps { vertical?: boolean; - style?: object; - children: React.ReactNode; + children: TSafeAreaViewChildren; } -const SafeAreaView = React.memo(({ style, children, testID, theme, vertical = true, ...props }: ISafeAreaView) => ( - - {children} - -)); +const SafeAreaView = React.memo(({ style, children, vertical = true, ...props }: ISafeAreaView) => { + const { theme } = useTheme(); + return ( + + {children} + + ); +}); -export default withTheme(SafeAreaView); +export default SafeAreaView; diff --git a/app/containers/SearchBox.tsx b/app/containers/SearchBox.tsx index 463413b71..e19cd5343 100644 --- a/app/containers/SearchBox.tsx +++ b/app/containers/SearchBox.tsx @@ -47,11 +47,11 @@ const styles = StyleSheet.create({ interface ISearchBox extends TextInputProps { value?: string; hasCancel?: boolean; - onCancelPress?: Function; + onCancelPress?: () => void; inputRef?: React.Ref; } -const CancelButton = ({ onCancelPress }: { onCancelPress?: Function }) => { +const CancelButton = ({ onCancelPress }: { onCancelPress?: () => void }) => { const { theme } = useTheme(); return ( @@ -84,7 +84,7 @@ const SearchBox = ({ hasCancel, onCancelPress, inputRef, ...props }: ISearchBox) {...props} /> - {hasCancel ? : null} + {hasCancel && onCancelPress ? : null} ); }; diff --git a/app/containers/UIKit/Actions.tsx b/app/containers/UIKit/Actions.tsx index 801e8d4ae..ad267013d 100644 --- a/app/containers/UIKit/Actions.tsx +++ b/app/containers/UIKit/Actions.tsx @@ -4,8 +4,10 @@ import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit'; import Button from '../Button'; import I18n from '../../i18n'; import { IActions } from './interfaces'; +import { useTheme } from '../../theme'; -export const Actions = ({ blockId, appId, elements, parser, theme }: IActions) => { +export const Actions = ({ blockId, appId, elements, parser }: IActions) => { + const { theme } = useTheme(); const [showMoreVisible, setShowMoreVisible] = useState(() => elements && elements.length > 5); const renderedElements = showMoreVisible ? elements?.slice(0, 5) : elements; diff --git a/app/containers/UIKit/DatePicker.tsx b/app/containers/UIKit/DatePicker.tsx index 08b5343a8..69ebb1296 100644 --- a/app/containers/UIKit/DatePicker.tsx +++ b/app/containers/UIKit/DatePicker.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { StyleSheet, Text, View } from 'react-native'; -import DateTimePicker from '@react-native-community/datetimepicker'; +import DateTimePicker, { Event } from '@react-native-community/datetimepicker'; import Touchable from 'react-native-platform-touchable'; import { BLOCK_CONTEXT } from '@rocket.chat/ui-kit'; import moment from 'moment'; @@ -11,6 +11,7 @@ import { themes } from '../../constants/colors'; import sharedStyles from '../../views/Styles'; import { CustomIcon } from '../../lib/Icons'; import { isAndroid } from '../../utils/deviceInfo'; +import { useTheme } from '../../theme'; import ActivityIndicator from '../ActivityIndicator'; import { IDatePicker } from './interfaces'; @@ -36,14 +37,17 @@ const styles = StyleSheet.create({ } }); -export const DatePicker = ({ element, language, action, context, theme, loading, value, error }: IDatePicker) => { +export const DatePicker = ({ element, language, action, context, loading, value, error }: IDatePicker) => { + const { theme } = useTheme(); const [show, onShow] = useState(false); const initial_date = element?.initial_date; const placeholder = element?.placeholder; const [currentDate, onChangeDate] = useState(new Date(initial_date || value)); - const onChange = ({ nativeEvent: { timestamp } }: any, date: any) => { + // timestamp as number exists in Event + // @ts-ignore + const onChange = ({ nativeEvent: { timestamp } }: Event, date?: Date) => { const newDate = date || new Date(timestamp); onChangeDate(newDate); action({ value: moment(newDate).format('YYYY-MM-DD') }); @@ -52,7 +56,9 @@ export const DatePicker = ({ element, language, action, context, theme, loading, } }; - let button = ); @@ -96,11 +93,11 @@ const ImageContainer = React.memo( return ( ); }, - (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme + (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) ); ImageContainer.displayName = 'MessageImageContainer'; diff --git a/app/containers/message/Message.tsx b/app/containers/message/Message.tsx index 011857619..5c22293b0 100644 --- a/app/containers/message/Message.tsx +++ b/app/containers/message/Message.tsx @@ -19,6 +19,7 @@ import ReadReceipt from './ReadReceipt'; import CallButton from './CallButton'; import { themes } from '../../constants/colors'; import { IMessage, IMessageInner, IMessageTouchable } from './interfaces'; +import { useTheme } from '../../theme'; const MessageInner = React.memo((props: IMessageInner) => { const { attachments } = props; @@ -85,7 +86,6 @@ const Message = React.memo((props: IMessage) => { {thread} - {/* @ts-ignore */} @@ -98,12 +98,11 @@ const Message = React.memo((props: IMessage) => { return ( - {/* @ts-ignore */} - + ); @@ -119,12 +118,14 @@ const MessageTouchable = React.memo((props: IMessageTouchable & IMessage) => { ); } const { onPress, onLongPress } = useContext(MessageContext); + const { theme } = useTheme(); + return ( + style={{ backgroundColor: props.highlighted ? themes[theme].headerBackground : null }}> diff --git a/app/containers/message/MessageAvatar.tsx b/app/containers/message/MessageAvatar.tsx index 3f330d819..3852939f0 100644 --- a/app/containers/message/MessageAvatar.tsx +++ b/app/containers/message/MessageAvatar.tsx @@ -4,32 +4,30 @@ import Avatar from '../Avatar'; import styles from './styles'; import MessageContext from './Context'; import { IMessageAvatar } from './interfaces'; +import { SubscriptionType } from '../../definitions'; -const MessageAvatar = React.memo( - ({ isHeader, avatar, author, small, navToRoomInfo, emoji, getCustomEmoji, theme }: IMessageAvatar) => { - const { user } = useContext(MessageContext); - if (isHeader && author) { - const navParam = { - t: 'd', - rid: author._id - }; - return ( - navToRoomInfo(navParam)} - getCustomEmoji={getCustomEmoji} - avatar={avatar} - emoji={emoji} - theme={theme} - /> - ); - } - return null; +const MessageAvatar = React.memo(({ isHeader, avatar, author, small, navToRoomInfo, emoji, getCustomEmoji }: IMessageAvatar) => { + const { user } = useContext(MessageContext); + if (isHeader && author) { + const navParam = { + t: SubscriptionType.DIRECT, + rid: author._id + }; + return ( + navToRoomInfo(navParam)} + getCustomEmoji={getCustomEmoji} + avatar={avatar} + emoji={emoji} + /> + ); } -); + return null; +}); MessageAvatar.displayName = 'MessageAvatar'; diff --git a/app/containers/message/MessageError.tsx b/app/containers/message/MessageError.tsx index 5405f955d..d72c8c911 100644 --- a/app/containers/message/MessageError.tsx +++ b/app/containers/message/MessageError.tsx @@ -6,14 +6,12 @@ import styles from './styles'; import { BUTTON_HIT_SLOP } from './utils'; import { themes } from '../../constants/colors'; import MessageContext from './Context'; - -interface IMessageError { - hasError: boolean; - theme: string; -} +import { useTheme } from '../../theme'; const MessageError = React.memo( - ({ hasError, theme }: IMessageError) => { + ({ hasError }: { hasError: boolean }) => { + const { theme } = useTheme(); + if (!hasError) { return null; } @@ -24,7 +22,7 @@ const MessageError = React.memo( ); }, - (prevProps, nextProps) => prevProps.hasError === nextProps.hasError && prevProps.theme === nextProps.theme + (prevProps, nextProps) => prevProps.hasError === nextProps.hasError ); MessageError.displayName = 'MessageError'; diff --git a/app/containers/message/Reactions.tsx b/app/containers/message/Reactions.tsx index 2a681a8d3..346b24002 100644 --- a/app/containers/message/Reactions.tsx +++ b/app/containers/message/Reactions.tsx @@ -7,30 +7,28 @@ import styles from './styles'; import Emoji from './Emoji'; import { BUTTON_HIT_SLOP } from './utils'; import { themes } from '../../constants/colors'; -import { withTheme } from '../../theme'; +import { useTheme } from '../../theme'; import MessageContext from './Context'; import { TGetCustomEmoji } from '../../definitions/IEmoji'; -interface IMessageAddReaction { - theme: string; +interface IReaction { + _id: string; + emoji: string; + usernames: string[]; } interface IMessageReaction { - reaction: { - usernames: []; - emoji: object; - }; + reaction: IReaction; getCustomEmoji: TGetCustomEmoji; theme: string; } interface IMessageReactions { - reactions?: object[]; + reactions?: IReaction[]; getCustomEmoji: TGetCustomEmoji; - theme: string; } -const AddReaction = React.memo(({ theme }: IMessageAddReaction) => { +const AddReaction = React.memo(({ theme }: { theme: string }) => { const { reactionInit } = useContext(MessageContext); return ( { const Reaction = React.memo(({ reaction, getCustomEmoji, theme }: IMessageReaction) => { const { onReactionPress, onReactionLongPress, baseUrl, user } = useContext(MessageContext); - const reacted = reaction.usernames.findIndex((item: IMessageReaction) => item === user.username) !== -1; + const reacted = reaction.usernames.findIndex((item: string) => item === user.username) !== -1; return ( onReactionPress(reaction.emoji)} @@ -76,13 +74,15 @@ const Reaction = React.memo(({ reaction, getCustomEmoji, theme }: IMessageReacti ); }); -const Reactions = React.memo(({ reactions, getCustomEmoji, theme }: IMessageReactions) => { +const Reactions = React.memo(({ reactions, getCustomEmoji }: IMessageReactions) => { + const { theme } = useTheme(); + if (!Array.isArray(reactions) || reactions.length === 0) { return null; } return ( - {reactions.map((reaction: any) => ( + {reactions.map(reaction => ( ))} @@ -94,4 +94,4 @@ Reaction.displayName = 'MessageReaction'; Reactions.displayName = 'MessageReactions'; AddReaction.displayName = 'MessageAddReaction'; -export default withTheme(Reactions); +export default Reactions; diff --git a/app/containers/message/ReadReceipt.tsx b/app/containers/message/ReadReceipt.tsx index 8a5298eea..4a68acf16 100644 --- a/app/containers/message/ReadReceipt.tsx +++ b/app/containers/message/ReadReceipt.tsx @@ -3,14 +3,10 @@ import React from 'react'; import { themes } from '../../constants/colors'; import { CustomIcon } from '../../lib/Icons'; import styles from './styles'; +import { useTheme } from '../../theme'; -interface IMessageReadReceipt { - isReadReceiptEnabled: boolean; - unread: boolean; - theme: string; -} - -const ReadReceipt = React.memo(({ isReadReceiptEnabled, unread, theme }: IMessageReadReceipt) => { +const ReadReceipt = React.memo(({ isReadReceiptEnabled, unread }: { isReadReceiptEnabled?: boolean; unread: boolean }) => { + const { theme } = useTheme(); if (isReadReceiptEnabled && !unread && unread !== null) { return ; } diff --git a/app/containers/message/RepliedThread.tsx b/app/containers/message/RepliedThread.tsx index 9f1e5639a..fc0f92577 100644 --- a/app/containers/message/RepliedThread.tsx +++ b/app/containers/message/RepliedThread.tsx @@ -7,15 +7,18 @@ import { themes } from '../../constants/colors'; import I18n from '../../i18n'; import { MarkdownPreview } from '../markdown'; import { IMessageRepliedThread } from './interfaces'; +import { useTheme } from '../../theme'; + +const RepliedThread = memo(({ tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted }: IMessageRepliedThread) => { + const { theme } = useTheme(); -const RepliedThread = memo(({ tmid, tmsg, isHeader, fetchThreadName, id, isEncrypted, theme }: IMessageRepliedThread) => { if (!tmid || !isHeader) { return null; } const [msg, setMsg] = useState(isEncrypted ? I18n.t('Encrypted_message') : tmsg); const fetch = async () => { - const threadName = await fetchThreadName(tmid, id); + const threadName = fetchThreadName ? await fetchThreadName(tmid, id) : ''; setMsg(threadName); }; diff --git a/app/containers/message/Reply.tsx b/app/containers/message/Reply.tsx index 4f197bc47..4705c5540 100644 --- a/app/containers/message/Reply.tsx +++ b/app/containers/message/Reply.tsx @@ -77,7 +77,7 @@ const styles = StyleSheet.create({ marginBottom: 4 }, image: { - // @ts-ignore + // @ts-ignore TODO - check with the team, change this to undefined width: null, height: 200, flex: 1, @@ -93,24 +93,6 @@ const styles = StyleSheet.create({ } }); -interface IMessageTitle { - attachment: IAttachment; - timeFormat?: string; - theme: string; -} - -interface IMessageDescription { - attachment: IAttachment; - getCustomEmoji: TGetCustomEmoji; - theme: string; -} - -interface IMessageFields { - attachment: IAttachment; - theme: string; - getCustomEmoji: TGetCustomEmoji; -} - interface IMessageReply { attachment: IAttachment; timeFormat?: string; @@ -118,7 +100,7 @@ interface IMessageReply { getCustomEmoji: TGetCustomEmoji; } -const Title = React.memo(({ attachment, timeFormat, theme }: IMessageTitle) => { +const Title = React.memo(({ attachment, timeFormat, theme }: { attachment: IAttachment; timeFormat?: string; theme: string }) => { const time = attachment.message_link && attachment.ts ? moment(attachment.ts).format(timeFormat) : null; return ( @@ -132,7 +114,7 @@ const Title = React.memo(({ attachment, timeFormat, theme }: IMessageTitle) => { }); const Description = React.memo( - ({ attachment, getCustomEmoji, theme }: IMessageDescription) => { + ({ attachment, getCustomEmoji, theme }: { attachment: IAttachment; getCustomEmoji: TGetCustomEmoji; theme: string }) => { const text = attachment.text || attachment.title; if (!text) { return null; @@ -164,7 +146,7 @@ const Description = React.memo( ); const UrlImage = React.memo( - ({ image }: any) => { + ({ image }: { image?: string }) => { if (!image) { return null; } @@ -176,7 +158,7 @@ const UrlImage = React.memo( ); const Fields = React.memo( - ({ attachment, theme, getCustomEmoji }: IMessageFields) => { + ({ attachment, theme, getCustomEmoji }: { attachment: IAttachment; theme: string; getCustomEmoji: TGetCustomEmoji }) => { if (!attachment.fields) { return null; } @@ -206,12 +188,12 @@ const Fields = React.memo( const Reply = React.memo( ({ attachment, timeFormat, index, getCustomEmoji }: IMessageReply) => { const [loading, setLoading] = useState(false); + const { theme } = useTheme(); if (!attachment) { return null; } - const { theme } = useTheme(); const { baseUrl, user, jumpToMessage } = useContext(MessageContext); const onPress = async () => { diff --git a/app/containers/message/Thread.tsx b/app/containers/message/Thread.tsx index 4ddfda3b5..4bfed49ac 100644 --- a/app/containers/message/Thread.tsx +++ b/app/containers/message/Thread.tsx @@ -7,9 +7,12 @@ import MessageContext from './Context'; import ThreadDetails from '../ThreadDetails'; import I18n from '../../i18n'; import { IMessageThread } from './interfaces'; +import { useTheme } from '../../theme'; const Thread = React.memo( - ({ msg, tcount, tlm, isThreadRoom, theme, id }: IMessageThread) => { + ({ msg, tcount, tlm, isThreadRoom, id }: IMessageThread) => { + const { theme } = useTheme(); + if (!tlm || isThreadRoom || tcount === 0) { return null; } @@ -38,9 +41,6 @@ const Thread = React.memo( if (prevProps.tcount !== nextProps.tcount) { return false; } - if (prevProps.theme !== nextProps.theme) { - return false; - } return true; } ); diff --git a/app/containers/message/Urls.tsx b/app/containers/message/Urls.tsx index f3b86dd1c..65da7cd52 100644 --- a/app/containers/message/Urls.tsx +++ b/app/containers/message/Urls.tsx @@ -1,5 +1,6 @@ import React, { useContext } from 'react'; -import { Clipboard, StyleSheet, Text, View } from 'react-native'; +import { StyleSheet, Text, View } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; import FastImage from '@rocket.chat/react-native-fast-image'; import { dequal } from 'dequal'; @@ -7,11 +8,12 @@ import Touchable from './Touchable'; import openLink from '../../utils/openLink'; import sharedStyles from '../../views/Styles'; import { themes } from '../../constants/colors'; -import { withTheme } from '../../theme'; +import { useTheme, withTheme } from '../../theme'; import { LISTENER } from '../Toast'; import EventEmitter from '../../utils/events'; import I18n from '../../i18n'; import MessageContext from './Context'; +import { IUrl } from '../../definitions'; const styles = StyleSheet.create({ button: { @@ -49,29 +51,6 @@ const styles = StyleSheet.create({ } }); -interface IMessageUrlContent { - title: string; - description: string; - theme: string; -} - -interface IMessageUrl { - url: { - ignoreParse: boolean; - url: string; - image: string; - title: string; - description: string; - }; - index: number; - theme: string; -} - -interface IMessageUrls { - urls?: any; - theme?: string; -} - const UrlImage = React.memo( ({ image }: { image: string }) => { if (!image) { @@ -85,7 +64,7 @@ const UrlImage = React.memo( ); const UrlContent = React.memo( - ({ title, description, theme }: IMessageUrlContent) => ( + ({ title, description, theme }: { title: string; description: string; theme: string }) => ( {title ? ( @@ -114,7 +93,7 @@ const UrlContent = React.memo( ); const Url = React.memo( - ({ url, index, theme }: IMessageUrl) => { + ({ url, index, theme }: { url: IUrl; index: number; theme: string }) => { if (!url || url?.ignoreParse) { return null; } @@ -151,14 +130,17 @@ const Url = React.memo( ); const Urls = React.memo( - ({ urls, theme }: IMessageUrls) => { + // TODO - didn't work - (React.ReactElement | null)[] | React.ReactElement | null + ({ urls }: { urls?: IUrl[] }): any => { + const { theme } = useTheme(); + if (!urls || urls.length === 0) { return null; } - return urls.map((url: any, index: number) => ); + return urls.map((url: IUrl, index: number) => ); }, - (oldProps, newProps) => dequal(oldProps.urls, newProps.urls) && oldProps.theme === newProps.theme + (oldProps, newProps) => dequal(oldProps.urls, newProps.urls) ); UrlImage.displayName = 'MessageUrlImage'; diff --git a/app/containers/message/User.tsx b/app/containers/message/User.tsx index 17494deee..ed42c225c 100644 --- a/app/containers/message/User.tsx +++ b/app/containers/message/User.tsx @@ -3,12 +3,14 @@ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import moment from 'moment'; import { themes } from '../../constants/colors'; -import { withTheme } from '../../theme'; +import { useTheme } from '../../theme'; import MessageError from './MessageError'; import sharedStyles from '../../views/Styles'; import messageStyles from './styles'; import MessageContext from './Context'; import { SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME } from './utils'; +import { SubscriptionType } from '../../definitions'; +import { IRoomInfoParam } from '../../views/SearchMessagesView'; const styles = StyleSheet.create({ container: { @@ -49,15 +51,15 @@ interface IMessageUser { alias?: string; ts?: Date; timeFormat?: string; - theme: string; - navToRoomInfo?: Function; + navToRoomInfo?: (navParam: IRoomInfoParam) => void; type: string; } const User = React.memo( - ({ isHeader, useRealName, author, alias, ts, timeFormat, hasError, theme, navToRoomInfo, type, ...props }: IMessageUser) => { + ({ isHeader, useRealName, author, alias, ts, timeFormat, hasError, navToRoomInfo, type, ...props }: IMessageUser) => { if (isHeader || hasError) { const { user } = useContext(MessageContext); + const { theme } = useTheme(); const username = (useRealName && author?.name) || author?.username; const aliasUsername = alias ? ( @{username} @@ -65,8 +67,8 @@ const User = React.memo( const time = moment(ts).format(timeFormat); const onUserPress = () => { navToRoomInfo?.({ - t: 'd', - rid: author?._id + t: SubscriptionType.DIRECT, + rid: author?._id || '' }); }; const isDisabled = author?._id === user.id; @@ -83,7 +85,7 @@ const User = React.memo( {textContent} @@ -98,7 +100,7 @@ const User = React.memo( {time} - {hasError && } + {hasError ? : null} ); } @@ -108,4 +110,4 @@ const User = React.memo( User.displayName = 'MessageUser'; -export default withTheme(User); +export default User; diff --git a/app/containers/message/Video.tsx b/app/containers/message/Video.tsx index 8490b66d9..b493027cb 100644 --- a/app/containers/message/Video.tsx +++ b/app/containers/message/Video.tsx @@ -16,9 +16,10 @@ import I18n from '../../i18n'; import { IAttachment } from '../../definitions/IAttachment'; import RCActivityIndicator from '../ActivityIndicator'; import { TGetCustomEmoji } from '../../definitions/IEmoji'; +import { useTheme } from '../../theme'; const SUPPORTED_TYPES = ['video/quicktime', 'video/mp4', ...(isIOS ? [] : ['video/3gp', 'video/mkv'])]; -const isTypeSupported = (type: any) => SUPPORTED_TYPES.indexOf(type) !== -1; +const isTypeSupported = (type: string) => SUPPORTED_TYPES.indexOf(type) !== -1; const styles = StyleSheet.create({ button: { @@ -33,23 +34,24 @@ const styles = StyleSheet.create({ interface IMessageVideo { file: IAttachment; - showAttachment?: Function; + showAttachment?: (file: IAttachment) => void; getCustomEmoji: TGetCustomEmoji; style?: StyleProp[]; isReply?: boolean; - theme: string; } const Video = React.memo( - ({ file, showAttachment, getCustomEmoji, style, isReply, theme }: IMessageVideo) => { + ({ file, showAttachment, getCustomEmoji, style, isReply }: IMessageVideo) => { const { baseUrl, user } = useContext(MessageContext); const [loading, setLoading] = useState(false); + const { theme } = useTheme(); if (!baseUrl) { return null; } + const onPress = async () => { - if (isTypeSupported(file.video_type) && showAttachment) { + if (file.video_type && isTypeSupported(file.video_type) && showAttachment) { return showAttachment(file); } @@ -93,7 +95,7 @@ const Video = React.memo( ); }, - (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) && prevProps.theme === nextProps.theme + (prevProps, nextProps) => dequal(prevProps.file, nextProps.file) ); export default Video; diff --git a/app/containers/message/index.tsx b/app/containers/message/index.tsx index ab37997c2..804794196 100644 --- a/app/containers/message/index.tsx +++ b/app/containers/message/index.tsx @@ -1,16 +1,18 @@ import React from 'react'; import { Keyboard, ViewStyle } from 'react-native'; +import { Subscription } from 'rxjs'; import Message from './Message'; import MessageContext from './Context'; import debounce from '../../utils/debounce'; import { SYSTEM_MESSAGES, getMessageTranslation } from './utils'; -import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/encryption/constants'; +import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/constants'; import messagesStatus from '../../constants/messagesStatus'; -import { withTheme } from '../../theme'; +import { useTheme, withTheme } from '../../theme'; import openLink from '../../utils/openLink'; import { TGetCustomEmoji } from '../../definitions/IEmoji'; -import { TAnyMessageModel } from '../../definitions'; +import { IAttachment, TAnyMessageModel } from '../../definitions'; +import { IRoomInfoParam } from '../../views/SearchMessagesView'; interface IMessageContainerProps { item: TAnyMessageModel; @@ -20,7 +22,7 @@ interface IMessageContainerProps { token: string; }; msg?: string; - rid?: string; + rid: string; timeFormat?: string; style?: ViewStyle; archived?: boolean; @@ -37,44 +39,35 @@ interface IMessageContainerProps { isIgnored?: boolean; highlighted?: boolean; getCustomEmoji: TGetCustomEmoji; - onLongPress?: Function; - onReactionPress?: Function; - onEncryptedPress?: Function; - onDiscussionPress?: Function; - onThreadPress?: Function; - errorActionsShow?: Function; - replyBroadcast?: Function; - reactionInit?: Function; - fetchThreadName?: Function; - showAttachment?: Function; - onReactionLongPress?: Function; - navToRoomInfo?: Function; - callJitsi?: Function; - blockAction?: Function; - onAnswerButtonPress?: Function; - theme?: string; + onLongPress?: (item: TAnyMessageModel) => void; + onReactionPress?: (emoji: string, id: string) => void; + onEncryptedPress?: () => void; + onDiscussionPress?: (item: TAnyMessageModel) => void; + onThreadPress?: (item: TAnyMessageModel) => void; + errorActionsShow?: (item: TAnyMessageModel) => void; + replyBroadcast?: (item: TAnyMessageModel) => void; + reactionInit?: (item: TAnyMessageModel) => void; + fetchThreadName?: (tmid: string, id: string) => Promise; + showAttachment: (file: IAttachment) => void; + onReactionLongPress?: (item: TAnyMessageModel) => void; + navToRoomInfo: (navParam: IRoomInfoParam) => void; + callJitsi?: () => void; + blockAction?: (params: { actionId: string; appId: string; value: string; blockId: string; rid: string; mid: string }) => void; + onAnswerButtonPress?: (message: string, tmid?: string, tshow?: boolean) => void; threadBadgeColor?: string; - toggleFollowThread?: Function; - jumpToMessage?: Function; - onPress?: Function; + toggleFollowThread?: (isFollowingThread: boolean, tmid?: string) => Promise; + jumpToMessage?: (link: string) => void; + onPress?: () => void; } -class MessageContainer extends React.Component { +interface IMessageContainerState { + isManualUnignored: boolean; +} + +class MessageContainer extends React.Component { static defaultProps = { getCustomEmoji: () => null, onLongPress: () => {}, - onReactionPress: () => {}, - onEncryptedPress: () => {}, - onDiscussionPress: () => {}, - onThreadPress: () => {}, - onAnswerButtonPress: () => {}, - errorActionsShow: () => {}, - replyBroadcast: () => {}, - reactionInit: () => {}, - fetchThreadName: () => {}, - showAttachment: () => {}, - onReactionLongPress: () => {}, - navToRoomInfo: () => {}, callJitsi: () => {}, blockAction: () => {}, archived: false, @@ -85,7 +78,7 @@ class MessageContainer extends React.Component { state = { isManualUnignored: false }; - private subscription: any; + private subscription?: Subscription; componentDidMount() { const { item } = this.props; @@ -97,12 +90,9 @@ class MessageContainer extends React.Component { } } - shouldComponentUpdate(nextProps: any, nextState: any) { + shouldComponentUpdate(nextProps: IMessageContainerProps, nextState: IMessageContainerState) { const { isManualUnignored } = this.state; - const { theme, threadBadgeColor, isIgnored, highlighted } = this.props; - if (nextProps.theme !== theme) { - return true; - } + const { threadBadgeColor, isIgnored, highlighted } = this.props; if (nextProps.highlighted !== highlighted) { return true; } @@ -169,7 +159,7 @@ class MessageContainer extends React.Component { } }; - onReactionPress = (emoji: any) => { + onReactionPress = (emoji: string) => { const { onReactionPress, item } = this.props; if (onReactionPress) { onReactionPress(emoji, item.id); @@ -228,7 +218,7 @@ class MessageContainer extends React.Component { previousItem.u.username === item.u.username && !(previousItem.groupable === false || item.groupable === false || broadcast === true) && // @ts-ignore TODO: IMessage vs IMessageFromServer non-sense - item.ts - previousItem.ts < Message_GroupingPeriod! * 1000 && + item.ts - previousItem.ts < Message_GroupingPeriod * 1000 && previousItem.tmid === item.tmid ) { return false; @@ -303,10 +293,11 @@ class MessageContainer extends React.Component { }; onLinkPress = (link: string): void => { - const { item, theme, jumpToMessage } = this.props; - const isMessageLink = item?.attachments?.findIndex((att: any) => att?.message_link === link) !== -1; - if (isMessageLink) { - return jumpToMessage!(link); + const { theme } = useTheme(); + const { item, jumpToMessage } = this.props; + const isMessageLink = item?.attachments?.findIndex((att: IAttachment) => att?.message_link === link) !== -1; + if (isMessageLink && jumpToMessage) { + return jumpToMessage(link); } openLink(link, theme); }; @@ -332,7 +323,6 @@ class MessageContainer extends React.Component { callJitsi, blockAction, rid, - theme, threadBadgeColor, toggleFollowThread, jumpToMessage, @@ -371,8 +361,8 @@ class MessageContainer extends React.Component { let message = msg; // "autoTranslateRoom" and "autoTranslateLanguage" are properties from the subscription // "autoTranslateMessage" is a toggle between "View Original" and "Translate" state - if (autoTranslateRoom && autoTranslateMessage) { - message = getMessageTranslation(item, autoTranslateLanguage!) || message; + if (autoTranslateRoom && autoTranslateMessage && autoTranslateLanguage) { + message = getMessageTranslation(item, autoTranslateLanguage) || message; } return ( @@ -396,14 +386,15 @@ class MessageContainer extends React.Component { toggleFollowThread, replies }}> + {/* @ts-ignore*/} { emoji={emoji} timeFormat={timeFormat} style={style} - archived={archived!} - broadcast={broadcast!} + archived={archived} + broadcast={broadcast} useRealName={useRealName} - isReadReceiptEnabled={isReadReceiptEnabled!} + isReadReceiptEnabled={isReadReceiptEnabled} unread={unread} role={role} drid={drid} dcount={dcount} - // @ts-ignore dlm={dlm} tmid={tmid} tcount={tcount} - // @ts-ignore tlm={tlm} tmsg={tmsg} - fetchThreadName={fetchThreadName!} - // @ts-ignore + fetchThreadName={fetchThreadName} mentions={mentions} channels={channels} isIgnored={this.isIgnored} @@ -442,13 +430,12 @@ class MessageContainer extends React.Component { isTemp={this.isTemp} isEncrypted={this.isEncrypted} hasError={this.hasError} - showAttachment={showAttachment!} + showAttachment={showAttachment} getCustomEmoji={getCustomEmoji} - navToRoomInfo={navToRoomInfo!} - callJitsi={callJitsi!} - blockAction={blockAction!} - theme={theme as string} - highlighted={highlighted!} + navToRoomInfo={navToRoomInfo} + callJitsi={callJitsi} + blockAction={blockAction} + highlighted={highlighted} /> ); diff --git a/app/containers/message/interfaces.ts b/app/containers/message/interfaces.ts index 8dae235ba..f71560536 100644 --- a/app/containers/message/interfaces.ts +++ b/app/containers/message/interfaces.ts @@ -1,64 +1,45 @@ import { MarkdownAST } from '@rocket.chat/message-parser'; import { StyleProp, TextStyle } from 'react-native'; +import { ImageStyle } from '@rocket.chat/react-native-fast-image'; -import { IUserChannel, IUserMention } from '../markdown/interfaces'; +import { IUserChannel } from '../markdown/interfaces'; import { TGetCustomEmoji } from '../../definitions/IEmoji'; -import { IAttachment } from '../../definitions'; - -export type TMessageType = 'discussion-created' | 'jitsi_call_started'; +import { IAttachment, IThread, IUrl, IUserMention, IUserMessage, MessageType, TAnyMessageModel } from '../../definitions'; +import { IRoomInfoParam } from '../../views/SearchMessagesView'; export interface IMessageAttachments { attachments?: IAttachment[]; timeFormat?: string; style?: StyleProp[]; isReply?: boolean; - showAttachment?: Function; + showAttachment?: (file: IAttachment) => void; getCustomEmoji: TGetCustomEmoji; } -export interface IMessageAttachedActions { - attachment: IAttachment; -} - export interface IMessageAvatar { isHeader: boolean; - avatar: string; - emoji: string; - author: { - username: string; - _id: string; - }; + avatar?: string; + emoji?: string; + author?: IUserMessage; small?: boolean; - navToRoomInfo: Function; + navToRoomInfo: (navParam: IRoomInfoParam) => void; getCustomEmoji: TGetCustomEmoji; - theme: string; } export interface IMessageBlocks { - blocks: any; + blocks: { appId?: string }[]; id: string; rid: string; - blockAction: Function; + blockAction?: (params: { actionId: string; appId: string; value: string; blockId: string; rid: string; mid: string }) => void; } export interface IMessageBroadcast { - author: { - _id: string; - }; - broadcast: boolean; - theme: string; + author?: IUserMessage; + broadcast?: boolean; } export interface IMessageCallButton { - theme: string; - callJitsi: Function; -} - -export interface IUser { - id: string; - username: string; - token: string; - name: string; + callJitsi?: () => void; } export interface IMessageContent { @@ -69,40 +50,27 @@ export interface IMessageContent { isThreadRoom: boolean; msg?: string; md?: MarkdownAST; - theme: string; isEdited: boolean; isEncrypted: boolean; getCustomEmoji: TGetCustomEmoji; channels?: IUserChannel[]; mentions?: IUserMention[]; - navToRoomInfo?: Function; + navToRoomInfo: (navParam: IRoomInfoParam) => void; useRealName?: boolean; isIgnored: boolean; type: string; } -export interface IMessageDiscussion { - msg?: string; - dcount?: number; - dlm?: Date; - theme: string; -} - export interface IMessageEmoji { - content: any; + content: string; baseUrl: string; - standardEmojiStyle: object; - customEmojiStyle: object; + standardEmojiStyle: { fontSize: number }; + customEmojiStyle: StyleProp; getCustomEmoji: TGetCustomEmoji; } -export interface IMessageThread { - msg?: string; - tcount?: number | null; - theme: string; - tlm?: Date; +export interface IMessageThread extends Pick { isThreadRoom: boolean; - id: string; } export interface IMessageTouchable { @@ -110,40 +78,35 @@ export interface IMessageTouchable { isInfo: boolean; isThreadReply: boolean; isTemp: boolean; - archived: boolean; - highlighted: boolean; - theme: string; - ts?: any; - urls?: any; + archived?: boolean; + highlighted?: boolean; + ts?: string | Date; + urls?: IUrl[]; reactions?: any; - alias?: any; - role?: any; - drid?: any; + alias?: string; + role?: string; + drid?: string; } -export interface IMessageRepliedThread { - tmid?: string; - tmsg?: string; - id: string; +export interface IMessageRepliedThread extends Pick { isHeader: boolean; - theme: string; - fetchThreadName: Function; + fetchThreadName?: (tmid: string, id: string) => Promise; isEncrypted: boolean; } export interface IMessageInner - extends IMessageDiscussion, - IMessageContent, + extends IMessageContent, IMessageCallButton, IMessageBlocks, IMessageThread, IMessageAttachments, IMessageBroadcast { - type: TMessageType; + type: MessageType; blocks: []; + urls?: IUrl[]; } -export interface IMessage extends IMessageRepliedThread, IMessageInner { +export interface IMessage extends IMessageRepliedThread, IMessageInner, IMessageAvatar { isThreadReply: boolean; isThreadSequential: boolean; isInfo: boolean; @@ -151,9 +114,11 @@ export interface IMessage extends IMessageRepliedThread, IMessageInner { isHeader: boolean; hasError: boolean; style: any; - onLongPress: Function; - isReadReceiptEnabled: boolean; + // style: ViewStyle; + onLongPress?: (item: TAnyMessageModel) => void; + isReadReceiptEnabled?: boolean; unread?: boolean; - theme: string; isIgnored: boolean; + dcount: number | undefined; + dlm: string | Date | undefined; } diff --git a/app/definitions/IAttachment.ts b/app/definitions/IAttachment.ts index 94d0e6195..e2f6f3913 100644 --- a/app/definitions/IAttachment.ts +++ b/app/definitions/IAttachment.ts @@ -2,7 +2,7 @@ import { IUser } from './IUser'; export interface IAttachment { ts?: string | Date; - title: string; + title?: string; type?: string; description?: string; title_link?: string; @@ -19,7 +19,7 @@ export interface IAttachment { image_size?: number; author_name?: string; author_icon?: string; - actions?: []; + actions?: { type: string; msg: string; text: string }[]; message_link?: string; text?: string; short?: boolean; diff --git a/app/definitions/IEmoji.ts b/app/definitions/IEmoji.ts index 94841aab1..3896aa5e2 100644 --- a/app/definitions/IEmoji.ts +++ b/app/definitions/IEmoji.ts @@ -1,8 +1,9 @@ +// TODO: evaluate unification with IEmoji export interface IEmoji { - content: any; - name: string; - extension: any; - isCustom: boolean; + content?: string; + name?: string; + extension?: string; + isCustom?: boolean; } export interface ICustomEmoji { diff --git a/app/definitions/IFrequentlyUsedEmoji.ts b/app/definitions/IFrequentlyUsedEmoji.ts index 87e46cf33..2602466ce 100644 --- a/app/definitions/IFrequentlyUsedEmoji.ts +++ b/app/definitions/IFrequentlyUsedEmoji.ts @@ -1,5 +1,6 @@ import Model from '@nozbe/watermelondb/Model'; +// TODO: evaluate unification with IEmoji export interface IFrequentlyUsedEmoji { content?: string; extension?: string; diff --git a/app/definitions/IMessage.ts b/app/definitions/IMessage.ts index 4765b2ca1..7a6cf234d 100644 --- a/app/definitions/IMessage.ts +++ b/app/definitions/IMessage.ts @@ -6,7 +6,7 @@ import { IAttachment } from './IAttachment'; import { IReaction } from './IReaction'; import { TThreadMessageModel } from './IThreadMessage'; import { TThreadModel } from './IThread'; -import { IUrlFromServer } from './IUrl'; +import { IUrl, IUrlFromServer } from './IUrl'; export type MessageType = 'jitsi_call_started' | 'discussion-created' | 'e2e' | 'load_more' | 'rm' | 'uj' | MessageTypeLoad; @@ -75,7 +75,7 @@ export interface IMessageFromServer { ts: string | Date; // wm date issue u: IUserMessage; _updatedAt: string | Date; - urls?: IUrlFromServer[]; + urls?: IUrl[]; mentions?: IUserMention[]; channels?: IUserChannel[]; md?: MarkdownAST; @@ -111,7 +111,7 @@ export interface ILoadMoreMessage { export interface IMessage extends IMessageFromServer { id: string; - t?: MessageType; + t: MessageType; alias?: string; parseUrls?: boolean; avatar?: string; diff --git a/app/definitions/ISubscription.ts b/app/definitions/ISubscription.ts index 6f13a040c..41cd4d5e6 100644 --- a/app/definitions/ISubscription.ts +++ b/app/definitions/ISubscription.ts @@ -106,6 +106,7 @@ export interface ISubscription { } export type TSubscriptionModel = ISubscription & Model; +export type TSubscription = TSubscriptionModel | ISubscription; // https://github.com/RocketChat/Rocket.Chat/blob/a88a96fcadd925b678ff27ada37075e029f78b5e/definition/ISubscription.ts#L8 export interface IServerSubscription extends IRocketChatRecord { diff --git a/app/definitions/IUrl.ts b/app/definitions/IUrl.ts index 3210afa23..cf12b94db 100644 --- a/app/definitions/IUrl.ts +++ b/app/definitions/IUrl.ts @@ -45,5 +45,4 @@ export interface IUrl extends IUrlFromServer { title: string; description: string; image: string; - url: string; } diff --git a/app/definitions/index.ts b/app/definitions/index.ts index 9a72e1b7a..05762a953 100644 --- a/app/definitions/index.ts +++ b/app/definitions/index.ts @@ -2,6 +2,8 @@ import { RouteProp } from '@react-navigation/native'; import { StackNavigationProp } from '@react-navigation/stack'; import { Dispatch } from 'redux'; +import { TColors } from '../theme'; + export * from './IAttachment'; export * from './INotification'; export * from './IPreferences'; @@ -32,8 +34,10 @@ export interface IBaseScreen, S ext navigation: StackNavigationProp; route: RouteProp; dispatch: Dispatch; - theme: string; isMasterDetail: boolean; + // TODO: remove after migrating all Class components + theme: string; + colors: TColors; } export * from './redux'; diff --git a/app/definitions/rest/v1/users.ts b/app/definitions/rest/v1/users.ts index 035e62509..898799102 100644 --- a/app/definitions/rest/v1/users.ts +++ b/app/definitions/rest/v1/users.ts @@ -49,6 +49,9 @@ export type UsersEndpoints = { 'users.resetAvatar': { POST: (params: { userId: string }) => {}; }; + 'users.removeOtherTokens': { + POST: (params: { userId: string }) => {}; + }; 'users.getPreferences': { GET: (params: { userId: IUser['_id'] }) => { preferences: INotificationPreferences; diff --git a/app/dimensions.tsx b/app/dimensions.tsx index 92b4ee9b3..afa86d38b 100644 --- a/app/dimensions.tsx +++ b/app/dimensions.tsx @@ -7,7 +7,7 @@ import { TNavigationOptions } from './definitions/navigationTypes'; export interface IDimensionsContextProps { width: number; height: number; - scale?: number; + scale: number; fontScale: number; setDimensions?: ({ width, diff --git a/app/ee/omnichannel/containers/OmnichannelStatus.tsx b/app/ee/omnichannel/containers/OmnichannelStatus.tsx index 6963ac1c4..33d99efd5 100644 --- a/app/ee/omnichannel/containers/OmnichannelStatus.tsx +++ b/app/ee/omnichannel/containers/OmnichannelStatus.tsx @@ -9,6 +9,7 @@ import UnreadBadge from '../../../presentation/UnreadBadge'; import RocketChat from '../../../lib/rocketchat'; import { changeLivechatStatus, isOmnichannelStatusAvailable } from '../lib'; import { IUser } from '../../../definitions/IUser'; +import Touch from '../../../utils/touch'; interface IOmnichannelStatus { searching: boolean; @@ -48,7 +49,9 @@ const OmnichannelStatus = memo(({ searching, goQueue, queueSize, inquiryEnabled, right={() => ( {inquiryEnabled ? : null} - + + + )} /> diff --git a/app/externalModules.d.ts b/app/externalModules.d.ts index 02c57204f..bec0d8103 100644 --- a/app/externalModules.d.ts +++ b/app/externalModules.d.ts @@ -3,7 +3,6 @@ declare module 'commonmark'; declare module 'commonmark-react-renderer'; declare module 'remove-markdown'; declare module 'react-native-image-progress'; -declare module 'react-native-platform-touchable'; declare module 'react-native-ui-lib/keyboard'; declare module '@rocket.chat/ui-kit'; declare module '@rocket.chat/sdk'; diff --git a/app/index.tsx b/app/index.tsx index 508bec332..218098447 100644 --- a/app/index.tsx +++ b/app/index.tsx @@ -14,7 +14,7 @@ import parseQuery from './lib/methods/helpers/parseQuery'; import { initializePushNotifications, onNotification } from './notifications/push'; import store from './lib/createStore'; import { toggleAnalyticsEventsReport, toggleCrashErrorsReport } from './utils/log'; -import { ThemeContext } from './theme'; +import { ThemeContext, TSupportedThemes } from './theme'; import { DimensionsContext } from './dimensions'; import RocketChat from './lib/rocketchat'; import { MIN_WIDTH_MASTER_DETAIL_LAYOUT } from './constants/tablet'; @@ -32,7 +32,7 @@ import { isFDroidBuild } from './constants/environment'; import { IThemePreference } from './definitions/ITheme'; import { ICommand } from './definitions/ICommand'; import { initStore } from './lib/auxStore'; -import { themes } from './constants/colors'; +import { colors, themes } from './constants/colors'; RNScreens.enableScreens(); initStore(store); @@ -45,7 +45,7 @@ interface IDimensions { } interface IState { - theme: string; + theme: TSupportedThemes; themePreferences: IThemePreference; width: number; height: number; @@ -215,7 +215,8 @@ export default class Root extends React.Component<{}, IState> { value={{ theme, themePreferences, - setTheme: this.setTheme + setTheme: this.setTheme, + colors: colors[theme] }}> = { d: 'd', p: 'p' }; + +export const THEME_PREFERENCES_KEY = 'RC_THEME_PREFERENCES_KEY'; +export const CRASH_REPORT_KEY = 'RC_CRASH_REPORT_KEY'; +export const ANALYTICS_EVENTS_KEY = 'RC_ANALYTICS_EVENTS_KEY'; +export const MIN_ROCKETCHAT_VERSION = '0.70.0'; diff --git a/app/lib/encryption/encryption.ts b/app/lib/encryption/encryption.ts index 6e9abae2d..39ca516bb 100644 --- a/app/lib/encryption/encryption.ts +++ b/app/lib/encryption/encryption.ts @@ -17,7 +17,7 @@ import { E2E_PUBLIC_KEY, E2E_RANDOM_PASSWORD_KEY, E2E_STATUS -} from './constants'; +} from '../constants'; import { joinVectorData, randomPassword, splitVectorData, toString, utf8ToBuffer } from './utils'; import { EncryptionRoom } from './index'; import { IMessage, ISubscription, TMessageModel, TSubscriptionModel, TThreadMessageModel, TThreadModel } from '../../definitions'; diff --git a/app/lib/encryption/room.ts b/app/lib/encryption/room.ts index ee3519207..45907aa98 100644 --- a/app/lib/encryption/room.ts +++ b/app/lib/encryption/room.ts @@ -9,7 +9,7 @@ import Deferred from '../../utils/deferred'; import debounce from '../../utils/debounce'; import database from '../database'; import log from '../../utils/log'; -import { E2E_MESSAGE_TYPE, E2E_STATUS } from './constants'; +import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../constants'; import { b64ToBuffer, bufferToB64, diff --git a/app/lib/methods/actions.ts b/app/lib/methods/actions.ts index 73dc44468..2e4323598 100644 --- a/app/lib/methods/actions.ts +++ b/app/lib/methods/actions.ts @@ -1,18 +1,10 @@ -import random from '../../utils/random'; +import { ITriggerAction, IUserInteraction, ModalActions } from '../../containers/UIKit/interfaces'; +import { TRocketChat } from '../../definitions/IRocketChat'; import EventEmitter from '../../utils/events'; import fetch from '../../utils/fetch'; +import random from '../../utils/random'; import Navigation from '../Navigation'; import sdk from '../rocketchat/services/sdk'; -import { - ActionTypes, - ITriggerAction, - ITriggerBlockAction, - ITriggerCancel, - ITriggerSubmitView, - IUserInteraction, - ModalActions -} from '../../containers/UIKit/interfaces'; -import { TRocketChat } from '../../definitions/IRocketChat'; const triggersId = new Map(); @@ -139,18 +131,3 @@ export function triggerAction( return reject(); }); } - -export default function triggerBlockAction(this: TRocketChat, options: ITriggerBlockAction) { - return triggerAction.call(this, { type: ActionTypes.ACTION, ...options }); -} - -export async function triggerSubmitView(this: TRocketChat, { viewId, ...options }: ITriggerSubmitView) { - const result = await triggerAction.call(this, { type: ActionTypes.SUBMIT, viewId, ...options }); - if (!result || ModalActions.CLOSE === result) { - Navigation.back(); - } -} - -export function triggerCancel(this: TRocketChat, { view, ...options }: ITriggerCancel) { - return triggerAction.call(this, { type: ActionTypes.CLOSED, view, ...options }); -} diff --git a/app/lib/rocketchat/methods/clearCache.ts b/app/lib/methods/clearCache.ts similarity index 93% rename from app/lib/rocketchat/methods/clearCache.ts rename to app/lib/methods/clearCache.ts index 41fc4f62d..eeb5a97b2 100644 --- a/app/lib/rocketchat/methods/clearCache.ts +++ b/app/lib/methods/clearCache.ts @@ -1,4 +1,4 @@ -import database from '../../database'; +import database from '../database'; export default async function clearCache({ server }: { server: string }): Promise { try { diff --git a/app/lib/rocketchat/methods/getRoom.ts b/app/lib/methods/getRoom.ts similarity index 74% rename from app/lib/rocketchat/methods/getRoom.ts rename to app/lib/methods/getRoom.ts index 849a8a6c7..35842e4f3 100644 --- a/app/lib/rocketchat/methods/getRoom.ts +++ b/app/lib/methods/getRoom.ts @@ -1,5 +1,5 @@ -import { TSubscriptionModel } from '../../../definitions'; -import database from '../../database'; +import { TSubscriptionModel } from '../../definitions'; +import database from '../database'; export default async function getRoom(rid: string): Promise { try { diff --git a/app/lib/methods/loadMessagesForRoom.ts b/app/lib/methods/loadMessagesForRoom.ts index f2bce7102..f190473f4 100644 --- a/app/lib/methods/loadMessagesForRoom.ts +++ b/app/lib/methods/loadMessagesForRoom.ts @@ -4,7 +4,7 @@ import { MessageTypeLoad } from '../../constants/messageTypeLoad'; import { IMessage, TMessageModel } from '../../definitions'; import log from '../../utils/log'; import { getMessageById } from '../database/services/Message'; -import roomTypeToApiType, { RoomTypes } from '../rocketchat/methods/roomTypeToApiType'; +import roomTypeToApiType, { RoomTypes } from './roomTypeToApiType'; import sdk from '../rocketchat/services/sdk'; import { generateLoadMoreId } from '../utils'; import updateMessages from './updateMessages'; diff --git a/app/lib/methods/loadNextMessages.ts b/app/lib/methods/loadNextMessages.ts index 063170652..e1f668a3a 100644 --- a/app/lib/methods/loadNextMessages.ts +++ b/app/lib/methods/loadNextMessages.ts @@ -8,7 +8,7 @@ import { MessageTypeLoad } from '../../constants/messageTypeLoad'; import { generateLoadMoreId } from '../utils'; import updateMessages from './updateMessages'; import { TMessageModel } from '../../definitions'; -import RocketChat from '../rocketchat'; +import sdk from '../rocketchat/services/sdk'; const COUNT = 50; @@ -22,7 +22,7 @@ interface ILoadNextMessages { export default function loadNextMessages(args: ILoadNextMessages): Promise { return new Promise(async (resolve, reject) => { try { - const data = await RocketChat.methodCallWrapper('loadNextMessages', args.rid, args.ts, COUNT); + const data = await sdk.methodCallWrapper('loadNextMessages', args.rid, args.ts, COUNT); let messages = EJSON.fromJSONValue(data?.messages); messages = orderBy(messages, 'ts'); if (messages?.length) { diff --git a/app/lib/rocketchat/methods/roomTypeToApiType.ts b/app/lib/methods/roomTypeToApiType.ts similarity index 100% rename from app/lib/rocketchat/methods/roomTypeToApiType.ts rename to app/lib/methods/roomTypeToApiType.ts diff --git a/app/lib/methods/sendMessage.ts b/app/lib/methods/sendMessage.ts index d41d38612..aaf03ea8d 100644 --- a/app/lib/methods/sendMessage.ts +++ b/app/lib/methods/sendMessage.ts @@ -6,7 +6,7 @@ import database from '../database'; import log from '../../utils/log'; import random from '../../utils/random'; import { Encryption } from '../encryption'; -import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../encryption/constants'; +import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../constants'; import { E2EType, IMessage, IUser, TMessageModel } from '../../definitions'; import sdk from '../rocketchat/services/sdk'; @@ -85,7 +85,7 @@ export async function resendMessage(message: TMessageModel, tmid?: string) { } } -export default async function ( +export async function sendMessage( rid: string, msg: string, tmid: string | undefined, diff --git a/app/lib/methods/subscriptions/room.ts b/app/lib/methods/subscriptions/room.ts index ce2bf766a..baac2b72c 100644 --- a/app/lib/methods/subscriptions/room.ts +++ b/app/lib/methods/subscriptions/room.ts @@ -17,6 +17,7 @@ import { subscribeRoom, unsubscribeRoom } from '../../../actions/room'; import { Encryption } from '../../encryption'; import { IMessage, TMessageModel, TSubscriptionModel, TThreadMessageModel, TThreadModel } from '../../../definitions'; import { IDDPMessage } from '../../../definitions/IDDPMessage'; +import sdk from '../../rocketchat/services/sdk'; const WINDOW_TIME = 1000; @@ -57,12 +58,12 @@ export default class RoomSubscription { if (this.promises) { await this.unsubscribe(); } - this.promises = RocketChat.subscribeRoom(this.rid); + this.promises = sdk.subscribeRoom(this.rid); - this.connectedListener = RocketChat.onStreamData('connected', this.handleConnection); - this.disconnectedListener = RocketChat.onStreamData('close', this.handleConnection); - this.notifyRoomListener = RocketChat.onStreamData('stream-notify-room', this.handleNotifyRoomReceived); - this.messageReceivedListener = RocketChat.onStreamData('stream-room-messages', this.handleMessageReceived); + this.connectedListener = sdk.onStreamData('connected', this.handleConnection); + this.disconnectedListener = sdk.onStreamData('close', this.handleConnection); + this.notifyRoomListener = sdk.onStreamData('stream-notify-room', this.handleNotifyRoomReceived); + this.messageReceivedListener = sdk.onStreamData('stream-room-messages', this.handleMessageReceived); if (!this.isAlive) { await this.unsubscribe(); } diff --git a/app/lib/methods/subscriptions/rooms.ts b/app/lib/methods/subscriptions/rooms.ts index f6af324b9..fa7f3a734 100644 --- a/app/lib/methods/subscriptions/rooms.ts +++ b/app/lib/methods/subscriptions/rooms.ts @@ -17,7 +17,7 @@ import { removedRoom } from '../../../actions/room'; import { setUser } from '../../../actions/login'; import { INAPP_NOTIFICATION_EMITTER } from '../../../containers/InAppNotification'; import { Encryption } from '../../encryption'; -import { E2E_MESSAGE_TYPE } from '../../encryption/constants'; +import { E2E_MESSAGE_TYPE } from '../../constants'; import updateMessages from '../updateMessages'; import { IMessage, diff --git a/app/lib/rocketchat/index.ts b/app/lib/rocketchat/index.ts index 0a63687ae..43695952e 100644 --- a/app/lib/rocketchat/index.ts +++ b/app/lib/rocketchat/index.ts @@ -1,4 +1,77 @@ -import RocketChat, { THEME_PREFERENCES_KEY, CRASH_REPORT_KEY, ANALYTICS_EVENTS_KEY } from './rocketchat'; +// Methods +import canOpenRoom from '../methods/canOpenRoom'; +import clearCache from '../methods/clearCache'; +import getRoom from '../methods/getRoom'; +import getRooms from '../methods/getRooms'; +import getSlashCommands from '../methods/getSlashCommands'; +import loadMessagesForRoom from '../methods/loadMessagesForRoom'; +import loadMissedMessages from '../methods/loadMissedMessages'; +import loadNextMessages from '../methods/loadNextMessages'; +import loadSurroundingMessages from '../methods/loadSurroundingMessages'; +import loadThreadMessages from '../methods/loadThreadMessages'; +import readMessages from '../methods/readMessages'; +import roomTypeToApiType from '../methods/roomTypeToApiType'; +// Spread Methods +import * as sendMessage from '../methods/sendMessage'; +import * as callJitsi from './methods/callJitsi'; +import * as enterpriseModules from './methods/enterpriseModules'; +import * as getCustomEmojis from './methods/getCustomEmojis'; +import * as getPermalinks from './methods/getPermalinks'; +import * as getPermissions from './methods/getPermissions'; +import * as getRoles from './methods/getRoles'; +import * as getSettings from './methods/getSettings'; +import * as getUsersPresence from './methods/getUsersPresence'; +import * as helpers from './methods/helpers'; +import * as logout from './methods/logout'; +import * as search from './methods/search'; +import * as sendFileMessage from './methods/sendFileMessage'; +import * as setUser from './methods/setUser'; +import * as triggerActions from './methods/triggerActions'; +import * as userPreferencesMethods from './methods/userPreferencesMethods'; +import * as connect from './services/connect'; +import * as restApis from './services/restApi'; +import * as shareExtension from './services/shareExtension'; + +const TOKEN_KEY = 'reactnativemeteor_usertoken'; +const CURRENT_SERVER = 'currentServer'; +const CERTIFICATE_KEY = 'RC_CERTIFICATE_KEY'; + +const RocketChat = { + TOKEN_KEY, + CURRENT_SERVER, + CERTIFICATE_KEY, + ...restApis, + ...search, + ...getPermalinks, + ...connect, + ...enterpriseModules, + ...sendMessage, + ...shareExtension, + ...sendFileMessage, + ...logout, + ...getUsersPresence, + ...getSettings, + ...getRoles, + ...getPermissions, + ...triggerActions, + ...callJitsi, + ...getCustomEmojis, + ...helpers, + ...userPreferencesMethods, + ...setUser, + + canOpenRoom, + clearCache, + loadMissedMessages, + loadMessagesForRoom, + loadSurroundingMessages, + loadNextMessages, + loadThreadMessages, + getRooms, + readMessages, + getSlashCommands, + getRoom, + roomTypeToApiType +}; -export { THEME_PREFERENCES_KEY, CRASH_REPORT_KEY, ANALYTICS_EVENTS_KEY }; export default RocketChat; diff --git a/app/lib/methods/callJitsi.ts b/app/lib/rocketchat/methods/callJitsi.ts similarity index 81% rename from app/lib/methods/callJitsi.ts rename to app/lib/rocketchat/methods/callJitsi.ts index b04fbb19d..0bd2567cc 100644 --- a/app/lib/methods/callJitsi.ts +++ b/app/lib/rocketchat/methods/callJitsi.ts @@ -1,8 +1,8 @@ -import { ISubscription } from '../../definitions'; -import { events, logEvent } from '../../utils/log'; -import { store } from '../auxStore'; -import Navigation from '../Navigation'; -import sdk from '../rocketchat'; +import { ISubscription } from '../../../definitions'; +import { events, logEvent } from '../../../utils/log'; +import { store } from '../../auxStore'; +import Navigation from '../../Navigation'; +import sdk from '../services/sdk'; async function jitsiURL({ room }: { room: ISubscription }) { const { settings } = store.getState(); @@ -46,10 +46,8 @@ export function callJitsiWithoutServer(path: string): void { Navigation.navigate('JitsiMeetView', { url, onlyAudio: false }); } -async function callJitsi(room: ISubscription, onlyAudio = false): Promise { +export async function callJitsi(room: ISubscription, onlyAudio = false): Promise { logEvent(onlyAudio ? events.RA_JITSI_AUDIO : events.RA_JITSI_VIDEO); const url = await jitsiURL({ room }); Navigation.navigate('JitsiMeetView', { url, onlyAudio, rid: room?.rid }); } - -export default callJitsi; diff --git a/app/lib/methods/enterpriseModules.ts b/app/lib/rocketchat/methods/enterpriseModules.ts similarity index 87% rename from app/lib/methods/enterpriseModules.ts rename to app/lib/rocketchat/methods/enterpriseModules.ts index 8769e3818..5f1475913 100644 --- a/app/lib/methods/enterpriseModules.ts +++ b/app/lib/rocketchat/methods/enterpriseModules.ts @@ -1,9 +1,9 @@ -import sdk from '../rocketchat/services/sdk'; -import { compareServerVersion } from '../utils'; -import { store as reduxStore } from '../auxStore'; -import database from '../database'; -import log from '../../utils/log'; -import { clearEnterpriseModules, setEnterpriseModules as setEnterpriseModulesAction } from '../../actions/enterpriseModules'; +import sdk from '../services/sdk'; +import { compareServerVersion } from '../../utils'; +import { store as reduxStore } from '../../auxStore'; +import database from '../../database'; +import log from '../../../utils/log'; +import { clearEnterpriseModules, setEnterpriseModules as setEnterpriseModulesAction } from '../../../actions/enterpriseModules'; const LICENSE_OMNICHANNEL_MOBILE_ENTERPRISE = 'omnichannel-mobile-enterprise'; const LICENSE_LIVECHAT_ENTERPRISE = 'livechat-enterprise'; diff --git a/app/lib/methods/getCustomEmojis.ts b/app/lib/rocketchat/methods/getCustomEmojis.ts similarity index 91% rename from app/lib/methods/getCustomEmojis.ts rename to app/lib/rocketchat/methods/getCustomEmojis.ts index 87a549d18..8e73891ae 100644 --- a/app/lib/methods/getCustomEmojis.ts +++ b/app/lib/rocketchat/methods/getCustomEmojis.ts @@ -1,14 +1,14 @@ import orderBy from 'lodash/orderBy'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; -import { ICustomEmojis } from '../../reducers/customEmojis'; -import { compareServerVersion } from '../utils'; -import { store as reduxStore } from '../auxStore'; -import database from '../database'; -import log from '../../utils/log'; -import { setCustomEmojis as setCustomEmojisAction } from '../../actions/customEmojis'; -import { ICustomEmoji, TCustomEmojiModel } from '../../definitions'; -import sdk from '../rocketchat/services/sdk'; +import { ICustomEmojis } from '../../../reducers/customEmojis'; +import { compareServerVersion } from '../../utils'; +import { store as reduxStore } from '../../auxStore'; +import database from '../../database'; +import log from '../../../utils/log'; +import { setCustomEmojis as setCustomEmojisAction } from '../../../actions/customEmojis'; +import { ICustomEmoji, TCustomEmojiModel } from '../../../definitions'; +import sdk from '../services/sdk'; interface IUpdateEmojis { update: TCustomEmojiModel[]; diff --git a/app/lib/rocketchat/methods/getPermalinkMessage.ts b/app/lib/rocketchat/methods/getPermalinkMessage.ts deleted file mode 100644 index 9bc96bdd8..000000000 --- a/app/lib/rocketchat/methods/getPermalinkMessage.ts +++ /dev/null @@ -1,25 +0,0 @@ -import log from '../../../utils/log'; -import { TMessageModel, TSubscriptionModel } from '../../../definitions'; -import reduxStore from '../../createStore'; -import getRoom from './getRoom'; -import isGroupChat from './isGroupChat'; - -type TRoomType = 'p' | 'c' | 'd'; - -export default async function getPermalinkMessage(message: TMessageModel): Promise { - if (!message.subscription) return null; - let room: TSubscriptionModel; - try { - room = await getRoom(message.subscription.id); - } catch (e) { - log(e); - return null; - } - const { server } = reduxStore.getState().server; - const roomType = { - p: 'group', - c: 'channel', - d: 'direct' - }[room.t as TRoomType]; - return `${server}/${roomType}/${isGroupChat(room) ? room.rid : room.name}?msg=${message.id}`; -} diff --git a/app/lib/rocketchat/methods/getPermalinks.ts b/app/lib/rocketchat/methods/getPermalinks.ts new file mode 100644 index 000000000..9bbe89a15 --- /dev/null +++ b/app/lib/rocketchat/methods/getPermalinks.ts @@ -0,0 +1,39 @@ +import log from '../../../utils/log'; +import { TMessageModel, TSubscriptionModel } from '../../../definitions'; +import { store } from '../../auxStore'; +import getRoom from '../../methods/getRoom'; +import { isGroupChat } from './helpers'; + +type TRoomType = 'p' | 'c' | 'd'; + +export async function getPermalinkMessage(message: TMessageModel): Promise { + if (!message.subscription) return null; + let room: TSubscriptionModel; + try { + room = await getRoom(message.subscription.id); + } catch (e) { + log(e); + return null; + } + const { server } = store.getState().server; + const roomType = { + p: 'group', + c: 'channel', + d: 'direct' + }[room.t as TRoomType]; + return `${server}/${roomType}/${isGroupChat(room) ? room.rid : room.name}?msg=${message.id}`; +} + +export function getPermalinkChannel(channel: TSubscriptionModel): string { + const { server } = store.getState().server; + const roomType = { + p: 'group', + c: 'channel', + d: 'direct' + }; + + // @ts-ignore - wrong SubscriptionType + const room = roomType[channel.t]; + + return `${server}/${room}/${channel.name}`; +} diff --git a/app/lib/methods/getPermissions.ts b/app/lib/rocketchat/methods/getPermissions.ts similarity index 90% rename from app/lib/methods/getPermissions.ts rename to app/lib/rocketchat/methods/getPermissions.ts index fa807d7fa..d75af0f0c 100644 --- a/app/lib/methods/getPermissions.ts +++ b/app/lib/rocketchat/methods/getPermissions.ts @@ -1,16 +1,15 @@ -import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import { Q } from '@nozbe/watermelondb'; +import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import orderBy from 'lodash/orderBy'; -import { compareServerVersion } from '../utils'; -import database from '../database'; -import log from '../../utils/log'; -import { store as reduxStore } from '../auxStore'; -import RocketChat from '../rocketchat'; -import sdk from '../rocketchat/services/sdk'; -import { setPermissions as setPermissionsAction } from '../../actions/permissions'; -import protectedFunction from './helpers/protectedFunction'; -import { TPermissionModel, IPermission } from '../../definitions'; +import { setPermissions as setPermissionsAction } from '../../../actions/permissions'; +import { IPermission, TPermissionModel } from '../../../definitions'; +import log from '../../../utils/log'; +import { store as reduxStore } from '../../auxStore'; +import database from '../../database'; +import sdk from '../services/sdk'; +import { compareServerVersion } from '../../utils'; +import protectedFunction from '../../methods/helpers/protectedFunction'; export const SUPPORTED_PERMISSIONS = [ 'add-user-to-any-c-room', @@ -154,7 +153,7 @@ export function getPermissions(): Promise { const db = database.active; const permissionsCollection = db.get('permissions'); const allRecords = await permissionsCollection.query().fetch(); - RocketChat.subscribe('stream-notify-logged', 'permissions-changed'); + sdk.subscribe('stream-notify-logged', 'permissions-changed'); // if server version is lower than 0.73.0, fetches from old api if (serverVersion && compareServerVersion(serverVersion, 'lowerThan', '0.73.0')) { // RC 0.66.0 diff --git a/app/lib/methods/getRoles.ts b/app/lib/rocketchat/methods/getRoles.ts similarity index 89% rename from app/lib/methods/getRoles.ts rename to app/lib/rocketchat/methods/getRoles.ts index 6add9e897..97677305a 100644 --- a/app/lib/methods/getRoles.ts +++ b/app/lib/rocketchat/methods/getRoles.ts @@ -1,14 +1,14 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; import Model from '@nozbe/watermelondb/Model'; -import database from '../database'; -import { getRoleById } from '../database/services/Role'; -import log from '../../utils/log'; -import { store as reduxStore } from '../auxStore'; -import { removeRoles, setRoles as setRolesAction, updateRoles } from '../../actions/roles'; -import protectedFunction from './helpers/protectedFunction'; -import { TRoleModel } from '../../definitions'; -import sdk from '../rocketchat/services/sdk'; +import database from '../../database'; +import { getRoleById } from '../../database/services/Role'; +import log from '../../../utils/log'; +import { store as reduxStore } from '../../auxStore'; +import { removeRoles, setRoles as setRolesAction, updateRoles } from '../../../actions/roles'; +import protectedFunction from '../../methods/helpers/protectedFunction'; +import { TRoleModel } from '../../../definitions'; +import sdk from '../services/sdk'; export async function setRoles(): Promise { const db = database.active; diff --git a/app/lib/methods/getSettings.ts b/app/lib/rocketchat/methods/getSettings.ts similarity index 90% rename from app/lib/methods/getSettings.ts rename to app/lib/rocketchat/methods/getSettings.ts index 2ef89b603..cae346c15 100644 --- a/app/lib/methods/getSettings.ts +++ b/app/lib/rocketchat/methods/getSettings.ts @@ -1,17 +1,17 @@ import { Q } from '@nozbe/watermelondb'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; -import { addSettings, clearSettings } from '../../actions/settings'; -import { DEFAULT_AUTO_LOCK } from '../../constants/localAuthentication'; -import settings from '../../constants/settings'; -import { IPreparedSettings, ISettingsIcon } from '../../definitions'; -import fetch from '../../utils/fetch'; -import log from '../../utils/log'; -import { store as reduxStore } from '../auxStore'; -import database from '../database'; -import RocketChat from '../rocketchat'; -import sdk from '../rocketchat/services/sdk'; -import protectedFunction from './helpers/protectedFunction'; +import { addSettings, clearSettings } from '../../../actions/settings'; +import { DEFAULT_AUTO_LOCK } from '../../../constants/localAuthentication'; +import settings from '../../../constants/settings'; +import { IPreparedSettings, ISettingsIcon } from '../../../definitions'; +import fetch from '../../../utils/fetch'; +import log from '../../../utils/log'; +import { store as reduxStore } from '../../auxStore'; +import database from '../../database'; +import RocketChat from '..'; +import sdk from '../services/sdk'; +import protectedFunction from '../../methods/helpers/protectedFunction'; const serverInfoKeys = [ 'Site_Name', @@ -136,12 +136,12 @@ export async function setSettings(): Promise { } export function subscribeSettings(): void { - return RocketChat.subscribe('stream-notify-all', 'public-settings-changed'); + return sdk.subscribe('stream-notify-all', 'public-settings-changed'); } type IData = ISettingsIcon | IPreparedSettings; -export default async function (): Promise { +export async function getSettings(): Promise { try { const db = database.active; const settingsParams = Object.keys(settings).filter(key => !loginSettings.includes(key)); diff --git a/app/lib/methods/getUsersPresence.ts b/app/lib/rocketchat/methods/getUsersPresence.ts similarity index 77% rename from app/lib/methods/getUsersPresence.ts rename to app/lib/rocketchat/methods/getUsersPresence.ts index bb8705e0a..eb6e349cc 100644 --- a/app/lib/methods/getUsersPresence.ts +++ b/app/lib/rocketchat/methods/getUsersPresence.ts @@ -1,14 +1,14 @@ import { InteractionManager } from 'react-native'; import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; -import { IActiveUsers } from '../../reducers/activeUsers'; -import { compareServerVersion } from '../utils'; -import { store as reduxStore } from '../auxStore'; -import { setActiveUsers } from '../../actions/activeUsers'; -import { setUser } from '../../actions/login'; -import database from '../database'; -import { IRocketChat, IUser } from '../../definitions'; -import sdk from '../rocketchat/services/sdk'; +import { IActiveUsers } from '../../../reducers/activeUsers'; +import { compareServerVersion } from '../../utils'; +import { store as reduxStore } from '../../auxStore'; +import { setActiveUsers } from '../../../actions/activeUsers'; +import { setUser } from '../../../actions/login'; +import database from '../../database'; +import { IRocketChat, IUser } from '../../../definitions'; +import sdk from '../services/sdk'; export function subscribeUsersPresence(this: IRocketChat) { const serverVersion = reduxStore.getState().server.version as string; @@ -32,9 +32,9 @@ export function subscribeUsersPresence(this: IRocketChat) { sdk.subscribe('stream-notify-logged', 'Users:NameChanged'); } -let ids: string[] = []; +let usersBatch: string[] = []; -export default async function getUsersPresence() { +export default async function getUsersPresence(usersParams: string[]) { const serverVersion = reduxStore.getState().server.version as string; const { user: loggedUser } = reduxStore.getState().login; @@ -45,11 +45,11 @@ export default async function getUsersPresence() { // if server is greather than or equal 3.0.0 if (compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '3.0.0')) { // if not have any id - if (!ids.length) { + if (!usersParams.length) { return; } // Request userPresence on demand - params = { ids: ids.join(',') }; + params = { ids: usersParams.join(',') }; } try { @@ -57,13 +57,13 @@ export default async function getUsersPresence() { const result = (await sdk.get('users.presence' as any, params as any)) as any; if (compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '4.1.0')) { - sdk.subscribeRaw('stream-user-presence', ['', { added: ids }]); + sdk.subscribeRaw('stream-user-presence', ['', { added: usersParams }]); } if (result.success) { const { users } = result; - const activeUsers = ids.reduce((ret: IActiveUsers, id) => { + const activeUsers = usersParams.reduce((ret: IActiveUsers, id) => { const user = users.find((u: IUser) => u._id === id) ?? { _id: id, status: 'offline' }; const { _id, status, statusText } = user; @@ -77,7 +77,6 @@ export default async function getUsersPresence() { InteractionManager.runAfterInteractions(() => { reduxStore.dispatch(setActiveUsers(activeUsers)); }); - ids = []; const db = database.active; const userCollection = db.get('users'); @@ -110,12 +109,13 @@ let usersTimer: ReturnType | null = null; export function getUserPresence(uid: string) { if (!usersTimer) { usersTimer = setTimeout(() => { - getUsersPresence(); + getUsersPresence(usersBatch); + usersBatch = []; usersTimer = null; }, 2000); } if (uid) { - ids.push(uid); + usersBatch.push(uid); } } diff --git a/app/lib/rocketchat/methods/helpers.ts b/app/lib/rocketchat/methods/helpers.ts new file mode 100644 index 000000000..a0fcd64cf --- /dev/null +++ b/app/lib/rocketchat/methods/helpers.ts @@ -0,0 +1,176 @@ +// @ts-nocheck - TEMP +import AsyncStorage from '@react-native-community/async-storage'; + +import log from '../../../utils/log'; +import { store as reduxStore } from '../../auxStore'; +import { ANALYTICS_EVENTS_KEY, CRASH_REPORT_KEY } from '../../constants'; +import defaultSettings from '../../../constants/settings'; +import database from '../../database'; +import subscribeRoomsTmp from '../../methods/subscriptions/rooms'; + +export function isGroupChat(room): boolean { + return ((room.uids && room.uids.length > 2) || (room.usernames && room.usernames.length > 2)) ?? false; +} + +export function getRoomAvatar(room) { + if (isGroupChat(room) && room.uids && room.usernames) { + return room.uids.length + room.usernames.join(); + } + return room.prid ? room.fname : room.name; +} + +export function getUidDirectMessage(room) { + const { id: userId } = reduxStore.getState().login.user; + + if (!room) { + return null; + } + + // legacy method + if (!room?.uids && room.rid && room.t === 'd' && userId) { + return room.rid.replace(userId, '').trim(); + } + + if (isGroupChat(room)) { + return null; + } + + const me = room.uids?.find(uid => uid === userId); + const other = room.uids?.filter(uid => uid !== userId); + + return other && other.length ? other[0] : me; +} + +export function getRoomTitle(room) { + const { UI_Use_Real_Name: useRealName, UI_Allow_room_names_with_special_chars: allowSpecialChars } = + reduxStore.getState().settings; + const { username } = reduxStore.getState().login.user; + if (isGroupChat(room) && !(room.name && room.name.length) && room.usernames) { + return room.usernames + .filter(u => u !== username) + .sort((u1, u2) => u1.localeCompare(u2)) + .join(', '); + } + if (allowSpecialChars && room.t !== 'd') { + return room.fname || room.name; + } + return ((room.prid || useRealName) && room.fname) || room.name; +} + +export function getSenderName(sender) { + const { UI_Use_Real_Name: useRealName } = reduxStore.getState().settings; + return useRealName ? sender.name : sender.username; +} + +export function canAutoTranslate() { + try { + const { AutoTranslate_Enabled } = reduxStore.getState().settings; + if (!AutoTranslate_Enabled) { + return false; + } + const autoTranslatePermission = reduxStore.getState().permissions['auto-translate']; + const userRoles = reduxStore.getState().login?.user?.roles ?? []; + return autoTranslatePermission?.some(role => userRoles.includes(role)) ?? false; + } catch (e) { + log(e); + return false; + } +} + +export function isRead(item) { + let isUnread = item.archived !== true && item.open === true; // item is not archived and not opened + isUnread = isUnread && (item.unread > 0 || item.alert === true); // either its unread count > 0 or its alert + return !isUnread; +} + +export function hasRole(role): boolean { + const shareUser = reduxStore.getState().share.user; + const loginUser = reduxStore.getState().login.user; + const userRoles = shareUser?.roles || loginUser?.roles || []; + return userRoles.indexOf(role) > -1; +} + +// AsyncStorage +export async function getAllowCrashReport() { + const allowCrashReport = await AsyncStorage.getItem(CRASH_REPORT_KEY); + if (allowCrashReport === null) { + return true; + } + return JSON.parse(allowCrashReport); +} + +export async function getAllowAnalyticsEvents() { + const allowAnalyticsEvents = await AsyncStorage.getItem(ANALYTICS_EVENTS_KEY); + if (allowAnalyticsEvents === null) { + return true; + } + return JSON.parse(allowAnalyticsEvents); +} + +// TODO: remove this +export async function subscribeRooms(this: any) { + if (!this.roomsSub) { + try { + // TODO: We need to change this naming. Maybe move this logic to the SDK? + this.roomsSub = await subscribeRoomsTmp.call(this); + } catch (e) { + log(e); + } + } +} + +// TODO: remove this +export function unsubscribeRooms(this: any) { + if (this.roomsSub) { + this.roomsSub.stop(); + this.roomsSub = null; + } +} + +export function parseSettings(settings) { + return settings.reduce((ret, item) => { + ret[item._id] = defaultSettings[item._id] && item[defaultSettings[item._id].type]; + if (item._id === 'Hide_System_Messages') { + ret[item._id] = ret[item._id].reduce( + (array, value) => [...array, ...(value === 'mute_unmute' ? ['user-muted', 'user-unmuted'] : [value])], + [] + ); + } + return ret; + }); +} + +export function _prepareSettings(settings) { + return settings.map(setting => { + setting[defaultSettings[setting._id].type] = setting.value; + return setting; + }); +} + +export async function hasPermission(permissions, rid?: any) { + let roomRoles = []; + if (rid) { + const db = database.active; + const subsCollection = db.get('subscriptions'); + try { + // get the room from database + const room = await subsCollection.find(rid); + // get room roles + roomRoles = room.roles || []; + } catch (error) { + console.log('hasPermission -> Room not found'); + return permissions.map(() => false); + } + } + + try { + const shareUser = reduxStore.getState().share.user; + const loginUser = reduxStore.getState().login.user; + // get user roles on the server from redux + const userRoles = shareUser?.roles || loginUser?.roles || []; + const mergedRoles = [...new Set([...roomRoles, ...userRoles])]; + return permissions.map(permission => permission?.some(r => mergedRoles.includes(r) ?? false)); + } catch (e) { + log(e); + } +} diff --git a/app/lib/rocketchat/methods/isGroupChat.ts b/app/lib/rocketchat/methods/isGroupChat.ts deleted file mode 100644 index 558091b60..000000000 --- a/app/lib/rocketchat/methods/isGroupChat.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ISubscription, TSubscriptionModel } from '../../../definitions'; - -export default function isGroupChat(room: ISubscription | TSubscriptionModel): boolean { - return ((room.uids && room.uids.length > 2) || (room.usernames && room.usernames.length > 2)) ?? false; -} diff --git a/app/lib/methods/logout.ts b/app/lib/rocketchat/methods/logout.ts similarity index 83% rename from app/lib/methods/logout.ts rename to app/lib/rocketchat/methods/logout.ts index 0086fe102..a9bad1df1 100644 --- a/app/lib/methods/logout.ts +++ b/app/lib/rocketchat/methods/logout.ts @@ -2,17 +2,17 @@ import * as FileSystem from 'expo-file-system'; import { Rocketchat as RocketchatClient } from '@rocket.chat/sdk'; import Model from '@nozbe/watermelondb/Model'; -import { getDeviceToken } from '../../notifications/push'; -import { extractHostname } from '../../utils/server'; -import { BASIC_AUTH_KEY } from '../../utils/fetch'; -import database, { getDatabase } from '../database'; -import RocketChat from '../rocketchat'; -import { useSsl } from '../../utils/url'; -import log from '../../utils/log'; -import { E2E_PRIVATE_KEY, E2E_PUBLIC_KEY, E2E_RANDOM_PASSWORD_KEY } from '../encryption/constants'; -import UserPreferences from '../userPreferences'; -import { ICertificate, IRocketChat } from '../../definitions'; -import sdk from '../rocketchat/services/sdk'; +import { getDeviceToken } from '../../../notifications/push'; +import { extractHostname } from '../../../utils/server'; +import { BASIC_AUTH_KEY } from '../../../utils/fetch'; +import database, { getDatabase } from '../../database'; +import RocketChat from '..'; +import { useSsl } from '../../../utils/url'; +import log from '../../../utils/log'; +import { E2E_PRIVATE_KEY, E2E_PUBLIC_KEY, E2E_RANDOM_PASSWORD_KEY } from '../../constants'; +import UserPreferences from '../../userPreferences'; +import { ICertificate, IRocketChat } from '../../../definitions'; +import sdk from '../services/sdk'; function removeServerKeys({ server, userId }: { server: string; userId?: string | null }) { UserPreferences.removeItem(`${RocketChat.TOKEN_KEY}-${server}`); @@ -98,7 +98,7 @@ export async function removeServer({ server }: { server: string }): Promise { +export async function logout(this: IRocketChat, { server }: { server: string }): Promise { if (this.roomsSub) { this.roomsSub.stop(); this.roomsSub = null; diff --git a/app/lib/rocketchat/methods/search.ts b/app/lib/rocketchat/methods/search.ts index 136dce0b6..f094077dd 100644 --- a/app/lib/rocketchat/methods/search.ts +++ b/app/lib/rocketchat/methods/search.ts @@ -3,8 +3,8 @@ import { Q } from '@nozbe/watermelondb'; import { sanitizeLikeString } from '../../database/utils'; import database from '../../database/index'; import { spotlight } from '../services/restApi'; -import isGroupChat from './isGroupChat'; import { ISearch, ISearchLocal, SubscriptionType } from '../../../definitions'; +import { isGroupChat } from './helpers'; let debounce: null | ((reason: string) => void) = null; diff --git a/app/lib/methods/sendFileMessage.ts b/app/lib/rocketchat/methods/sendFileMessage.ts similarity index 93% rename from app/lib/methods/sendFileMessage.ts rename to app/lib/rocketchat/methods/sendFileMessage.ts index e282f5555..2d5a012e2 100644 --- a/app/lib/methods/sendFileMessage.ts +++ b/app/lib/rocketchat/methods/sendFileMessage.ts @@ -3,11 +3,11 @@ import { settings as RocketChatSettings } from '@rocket.chat/sdk'; import { FetchBlobResponse, StatefulPromise } from 'rn-fetch-blob'; import isEmpty from 'lodash/isEmpty'; -import FileUpload from '../../utils/fileUpload'; -import database from '../database'; -import log from '../../utils/log'; -import { IUpload, IUser, TUploadModel } from '../../definitions'; -import { IFileUpload } from '../../utils/fileUpload/interfaces'; +import FileUpload from '../../../utils/fileUpload'; +import database from '../../database'; +import log from '../../../utils/log'; +import { IUpload, IUser, TUploadModel } from '../../../definitions'; +import { IFileUpload } from '../../../utils/fileUpload/interfaces'; const uploadQueue: { [index: string]: StatefulPromise } = {}; diff --git a/app/lib/rocketchat/methods/setUser.ts b/app/lib/rocketchat/methods/setUser.ts new file mode 100644 index 000000000..f67c9ab2f --- /dev/null +++ b/app/lib/rocketchat/methods/setUser.ts @@ -0,0 +1,40 @@ +import { InteractionManager } from 'react-native'; + +import { setActiveUsers } from '../../../actions/activeUsers'; +import { setUser } from '../../../actions/login'; +import { store as reduxStore } from '../../auxStore'; +import { compareServerVersion } from '../../utils'; + +// TODO +export function _setUser(this: any, ddpMessage: { fields: any; id: any; cleared: any }) { + this.activeUsers = this.activeUsers || {}; + const { user } = reduxStore.getState().login; + + if (ddpMessage.fields && user && user.id === ddpMessage.id) { + reduxStore.dispatch(setUser(ddpMessage.fields)); + } + + if (ddpMessage.cleared && user && user.id === ddpMessage.id) { + reduxStore.dispatch(setUser({ status: 'offline' })); + } + + const serverVersion = reduxStore.getState().server.version; + if (compareServerVersion(serverVersion, 'lowerThan', '4.1.0')) { + if (!this._setUserTimer) { + this._setUserTimer = setTimeout(() => { + const activeUsersBatch = this.activeUsers; + InteractionManager.runAfterInteractions(() => { + reduxStore.dispatch(setActiveUsers(activeUsersBatch)); + }); + this._setUserTimer = null; + return (this.activeUsers = {}); + }, 10000); + } + } + + if (!ddpMessage.fields) { + this.activeUsers[ddpMessage.id] = { status: 'offline' }; + } else if (ddpMessage.fields.status) { + this.activeUsers[ddpMessage.id] = { status: ddpMessage.fields.status }; + } +} diff --git a/app/lib/rocketchat/methods/triggerActions.ts b/app/lib/rocketchat/methods/triggerActions.ts new file mode 100644 index 000000000..9816f386d --- /dev/null +++ b/app/lib/rocketchat/methods/triggerActions.ts @@ -0,0 +1,25 @@ +import { + ActionTypes, + ITriggerBlockAction, + ITriggerCancel, + ITriggerSubmitView, + ModalActions +} from '../../../containers/UIKit/interfaces'; +import { TRocketChat } from '../../../definitions'; +import { triggerAction } from '../../methods/actions'; +import Navigation from '../../Navigation'; + +export function triggerBlockAction(this: TRocketChat, options: ITriggerBlockAction) { + return triggerAction.call(this, { type: ActionTypes.ACTION, ...options }); +} + +export async function triggerSubmitView(this: TRocketChat, { viewId, ...options }: ITriggerSubmitView) { + const result = await triggerAction.call(this, { type: ActionTypes.SUBMIT, viewId, ...options }); + if (!result || ModalActions.CLOSE === result) { + Navigation.back(); + } +} + +export function triggerCancel(this: TRocketChat, { view, ...options }: ITriggerCancel) { + return triggerAction.call(this, { type: ActionTypes.CLOSED, view, ...options }); +} diff --git a/app/lib/rocketchat/methods/userPreferencesMethods.ts b/app/lib/rocketchat/methods/userPreferencesMethods.ts new file mode 100644 index 000000000..fd8ae9741 --- /dev/null +++ b/app/lib/rocketchat/methods/userPreferencesMethods.ts @@ -0,0 +1,14 @@ +import { IPreferences } from '../../../definitions'; +import userPreferences from '../../userPreferences'; + +const SORT_PREFS_KEY = 'RC_SORT_PREFS_KEY'; + +export function getSortPreferences() { + return userPreferences.getMap(SORT_PREFS_KEY); +} + +export function saveSortPreference(param: Partial) { + let prefs = getSortPreferences(); + prefs = { ...prefs, ...param } as object; + return userPreferences.setMap(SORT_PREFS_KEY, prefs); +} diff --git a/app/lib/rocketchat/rocketchat.js b/app/lib/rocketchat/rocketchat.js deleted file mode 100644 index cae66d8cf..000000000 --- a/app/lib/rocketchat/rocketchat.js +++ /dev/null @@ -1,373 +0,0 @@ -import { Q } from '@nozbe/watermelondb'; -import AsyncStorage from '@react-native-community/async-storage'; -import { InteractionManager } from 'react-native'; -import { setActiveUsers } from '../../actions/activeUsers'; -import { setUser } from '../../actions/login'; -import defaultSettings from '../../constants/settings'; -import { getDeviceToken } from '../../notifications/push'; -import log from '../../utils/log'; -import database from '../database'; -import triggerBlockAction, { triggerCancel, triggerSubmitView } from '../methods/actions'; -import callJitsi, { callJitsiWithoutServer } from '../methods/callJitsi'; -import canOpenRoom from '../methods/canOpenRoom'; -import { - getEnterpriseModules, - hasLicense, - isOmnichannelModuleAvailable, - setEnterpriseModules -} from '../methods/enterpriseModules'; -import { getCustomEmojis, setCustomEmojis } from '../methods/getCustomEmojis'; -import { getPermissions, setPermissions } from '../methods/getPermissions'; -import { getRoles, setRoles } from '../methods/getRoles'; -import getRooms from '../methods/getRooms'; -import getSettings, { getLoginSettings, setSettings, subscribeSettings } from '../methods/getSettings'; -import getSlashCommands from '../methods/getSlashCommands'; -import loadMessagesForRoom from '../methods/loadMessagesForRoom'; -import loadMissedMessages from '../methods/loadMissedMessages'; -import loadNextMessages from '../methods/loadNextMessages'; -import loadSurroundingMessages from '../methods/loadSurroundingMessages'; -import loadThreadMessages from '../methods/loadThreadMessages'; -import logout, { removeServer } from '../methods/logout'; -import readMessages from '../methods/readMessages'; -import { cancelUpload, isUploadActive, sendFileMessage } from '../methods/sendFileMessage'; -import sendMessage, { resendMessage } from '../methods/sendMessage'; -import subscribeRooms from '../methods/subscriptions/rooms'; -import UserPreferences from '../userPreferences'; -import { compareServerVersion } from '../utils'; -import { getUserPresence, subscribeUsersPresence } from '../methods/getUsersPresence'; -import { store as reduxStore } from '../auxStore'; -// Methods -import clearCache from './methods/clearCache'; -import getPermalinkMessage from './methods/getPermalinkMessage'; -import getRoom from './methods/getRoom'; -import isGroupChat from './methods/isGroupChat'; -import roomTypeToApiType from './methods/roomTypeToApiType'; -import getUserInfo from './services/getUserInfo'; -import * as search from './methods/search'; -// Services -import sdk from './services/sdk'; -import toggleFavorite from './services/toggleFavorite'; -import { - login, - loginTOTP, - loginWithPassword, - loginOAuthOrSso, - getLoginServices, - determineAuthType, - disconnect, - checkAndReopen, - abort, - getServerInfo, - getWebsocketInfo, - stopListener, - connect -} from './services/connect'; -import { shareExtensionInit, closeShareExtension } from './services/shareExtension'; -import * as restApis from './services/restApi'; - -const TOKEN_KEY = 'reactnativemeteor_usertoken'; -const CURRENT_SERVER = 'currentServer'; -const SORT_PREFS_KEY = 'RC_SORT_PREFS_KEY'; -const CERTIFICATE_KEY = 'RC_CERTIFICATE_KEY'; -export const THEME_PREFERENCES_KEY = 'RC_THEME_PREFERENCES_KEY'; -export const CRASH_REPORT_KEY = 'RC_CRASH_REPORT_KEY'; -export const ANALYTICS_EVENTS_KEY = 'RC_ANALYTICS_EVENTS_KEY'; -export const MIN_ROCKETCHAT_VERSION = '0.70.0'; - -const RocketChat = { - TOKEN_KEY, - CURRENT_SERVER, - CERTIFICATE_KEY, - ...restApis, - ...search, - callJitsi, - callJitsiWithoutServer, - async subscribeRooms() { - if (!this.roomsSub) { - try { - this.roomsSub = await subscribeRooms.call(this); - } catch (e) { - log(e); - } - } - }, - unsubscribeRooms() { - if (this.roomsSub) { - this.roomsSub.stop(); - this.roomsSub = null; - } - }, - canOpenRoom, - getWebsocketInfo, - getServerInfo, - stopListener, - // Abort all requests and create a new AbortController - abort, - checkAndReopen, - disconnect, - connect, - shareExtensionInit, - closeShareExtension, - loginTOTP, - loginWithPassword, - loginOAuthOrSso, - login, - logout, - logoutOtherLocations() { - const { id: userId } = reduxStore.getState().login.user; - return this.sdk.post('users.removeOtherTokens', { userId }); - }, - removeServer, - clearCache, - loadMissedMessages, - loadMessagesForRoom, - loadSurroundingMessages, - loadNextMessages, - loadThreadMessages, - sendMessage, - getRooms, - readMessages, - resendMessage, - triggerBlockAction, - triggerSubmitView, - triggerCancel, - sendFileMessage, - cancelUpload, - isUploadActive, - getSettings, - getLoginSettings, - setSettings, - subscribeSettings, - getPermissions, - setPermissions, - getCustomEmojis, - setCustomEmojis, - getEnterpriseModules, - setEnterpriseModules, - hasLicense, - isOmnichannelModuleAvailable, - getSlashCommands, - getRoles, - setRoles, - parseSettings: settings => - settings.reduce((ret, item) => { - ret[item._id] = defaultSettings[item._id] && item[defaultSettings[item._id].type]; - if (item._id === 'Hide_System_Messages') { - ret[item._id] = ret[item._id].reduce( - (array, value) => [...array, ...(value === 'mute_unmute' ? ['user-muted', 'user-unmuted'] : [value])], - [] - ); - } - return ret; - }, {}), - _prepareSettings(settings) { - return settings.map(setting => { - setting[defaultSettings[setting._id].type] = setting.value; - return setting; - }); - }, - getRoom, - getPermalinkMessage, - getPermalinkChannel(channel) { - const { server } = reduxStore.getState().server; - const roomType = { - p: 'group', - c: 'channel', - d: 'direct' - }[channel.t]; - return `${server}/${roomType}/${channel.name}`; - }, - subscribe(...args) { - return sdk.subscribe(...args); - }, - subscribeRaw(...args) { - return sdk.subscribeRaw(...args); - }, - subscribeRoom(...args) { - return sdk.subscribeRoom(...args); - }, - unsubscribe(subscription) { - return sdk.unsubscribe(subscription); - }, - onStreamData(...args) { - return sdk.onStreamData(...args); - }, - toggleFavorite, - methodCallWrapper(method, ...params) { - return sdk.methodCallWrapper(method, ...params); - }, - getUserInfo, - getUidDirectMessage(room) { - const { id: userId } = reduxStore.getState().login.user; - - if (!room) { - return false; - } - - // legacy method - if (!room?.uids && room.rid && room.t === 'd') { - return room.rid.replace(userId, '').trim(); - } - - if (RocketChat.isGroupChat(room)) { - return false; - } - - const me = room.uids?.find(uid => uid === userId); - const other = room.uids?.filter(uid => uid !== userId); - - return other && other.length ? other[0] : me; - }, - - isRead(item) { - let isUnread = item.archived !== true && item.open === true; // item is not archived and not opened - isUnread = isUnread && (item.unread > 0 || item.alert === true); // either its unread count > 0 or its alert - return !isUnread; - }, - isGroupChat, - post(...args) { - return sdk.post(...args); - }, - methodCall(...args) { - return sdk.methodCall(...args); - }, - hasRole(role) { - const shareUser = reduxStore.getState().share.user; - const loginUser = reduxStore.getState().login.user; - // get user roles on the server from redux - const userRoles = shareUser?.roles || loginUser?.roles || []; - - return userRoles.indexOf(r => r === role) > -1; - }, - /** - * Permissions: array of permissions' roles from redux. Example: [['owner', 'admin'], ['leader']] - * Returns an array of boolean for each permission from permissions arg - */ - async hasPermission(permissions, rid) { - let roomRoles = []; - if (rid) { - const db = database.active; - const subsCollection = db.get('subscriptions'); - try { - // get the room from database - const room = await subsCollection.find(rid); - // get room roles - roomRoles = room.roles || []; - } catch (error) { - console.log('hasPermission -> Room not found'); - return permissions.map(() => false); - } - } - - try { - const shareUser = reduxStore.getState().share.user; - const loginUser = reduxStore.getState().login.user; - // get user roles on the server from redux - const userRoles = shareUser?.roles || loginUser?.roles || []; - const mergedRoles = [...new Set([...roomRoles, ...userRoles])]; - return permissions.map(permission => permission?.some(r => mergedRoles.includes(r) ?? false)); - } catch (e) { - log(e); - } - }, - async getAllowCrashReport() { - const allowCrashReport = await AsyncStorage.getItem(CRASH_REPORT_KEY); - if (allowCrashReport === null) { - return true; - } - return JSON.parse(allowCrashReport); - }, - async getAllowAnalyticsEvents() { - const allowAnalyticsEvents = await AsyncStorage.getItem(ANALYTICS_EVENTS_KEY); - if (allowAnalyticsEvents === null) { - return true; - } - return JSON.parse(allowAnalyticsEvents); - }, - getSortPreferences() { - return UserPreferences.getMap(SORT_PREFS_KEY); - }, - saveSortPreference(param) { - let prefs = RocketChat.getSortPreferences(); - prefs = { ...prefs, ...param }; - return UserPreferences.setMap(SORT_PREFS_KEY, prefs); - }, - getLoginServices, - determineAuthType, - roomTypeToApiType, - _setUser(ddpMessage) { - this.activeUsers = this.activeUsers || {}; - const { user } = reduxStore.getState().login; - - if (ddpMessage.fields && user && user.id === ddpMessage.id) { - reduxStore.dispatch(setUser(ddpMessage.fields)); - } - - if (ddpMessage.cleared && user && user.id === ddpMessage.id) { - reduxStore.dispatch(setUser({ status: { status: 'offline' } })); - } - - const serverVersion = reduxStore.getState().server.version; - if (compareServerVersion(serverVersion, 'lowerThan', '4.1.0')) { - if (!this._setUserTimer) { - this._setUserTimer = setTimeout(() => { - const activeUsersBatch = this.activeUsers; - InteractionManager.runAfterInteractions(() => { - reduxStore.dispatch(setActiveUsers(activeUsersBatch)); - }); - this._setUserTimer = null; - return (this.activeUsers = {}); - }, 10000); - } - } - - if (!ddpMessage.fields) { - this.activeUsers[ddpMessage.id] = { status: 'offline' }; - } else if (ddpMessage.fields.status) { - this.activeUsers[ddpMessage.id] = { status: ddpMessage.fields.status }; - } - }, - getUserPresence, - subscribeUsersPresence, - canAutoTranslate() { - try { - const { AutoTranslate_Enabled } = reduxStore.getState().settings; - if (!AutoTranslate_Enabled) { - return false; - } - const autoTranslatePermission = reduxStore.getState().permissions['auto-translate']; - const userRoles = reduxStore.getState().login?.user?.roles ?? []; - return autoTranslatePermission?.some(role => userRoles.includes(role)) ?? false; - } catch (e) { - log(e); - return false; - } - }, - getSenderName(sender) { - const { UI_Use_Real_Name: useRealName } = reduxStore.getState().settings; - return useRealName ? sender.name : sender.username; - }, - getRoomTitle(room) { - const { UI_Use_Real_Name: useRealName, UI_Allow_room_names_with_special_chars: allowSpecialChars } = - reduxStore.getState().settings; - const { username } = reduxStore.getState().login.user; - if (RocketChat.isGroupChat(room) && !(room.name && room.name.length)) { - return room.usernames - .filter(u => u !== username) - .sort((u1, u2) => u1.localeCompare(u2)) - .join(', '); - } - if (allowSpecialChars && room.t !== 'd') { - return room.fname || room.name; - } - return ((room.prid || useRealName) && room.fname) || room.name; - }, - getRoomAvatar(room) { - if (RocketChat.isGroupChat(room)) { - return room.uids?.length + room.usernames?.join(); - } - return room.prid ? room.fname : room.name; - } -}; - -export default RocketChat; diff --git a/app/lib/rocketchat/services/connect.ts b/app/lib/rocketchat/services/connect.ts index acc10eb49..ed7ca610a 100644 --- a/app/lib/rocketchat/services/connect.ts +++ b/app/lib/rocketchat/services/connect.ts @@ -5,7 +5,7 @@ import { InteractionManager } from 'react-native'; import { Q } from '@nozbe/watermelondb'; import log from '../../../utils/log'; -import { onRolesChanged } from '../../methods/getRoles'; +import { onRolesChanged } from '../methods/getRoles'; import { setActiveUsers } from '../../../actions/activeUsers'; import protectedFunction from '../../methods/helpers/protectedFunction'; import database from '../../database'; @@ -16,7 +16,7 @@ import { store } from '../../auxStore'; import { loginRequest, setLoginServices, setUser } from '../../../actions/login'; import sdk from './sdk'; import I18n from '../../../i18n'; -import RocketChat, { MIN_ROCKETCHAT_VERSION } from '../rocketchat'; +import RocketChat from '..'; import { ICredentials, ILoggedUser, IRocketChat, STATUSES } from '../../../definitions'; import { isIOS } from '../../../utils/deviceInfo'; import { connectRequest, connectSuccess, disconnect as disconnectAction } from '../../../actions/connect'; @@ -24,6 +24,7 @@ import { updatePermission } from '../../../actions/permissions'; import EventEmitter from '../../../utils/events'; import { updateSettings } from '../../../actions/settings'; import defaultSettings from '../../../constants/settings'; +import { MIN_ROCKETCHAT_VERSION } from '../../constants'; interface IServices { [index: string]: string | boolean; diff --git a/app/lib/rocketchat/services/getUserInfo.ts b/app/lib/rocketchat/services/getUserInfo.ts deleted file mode 100644 index 1da955456..000000000 --- a/app/lib/rocketchat/services/getUserInfo.ts +++ /dev/null @@ -1,6 +0,0 @@ -import sdk from './sdk'; - -export default function getUserInfo(userId: string) { - // RC 0.48.0 - return sdk.get('users.info', { userId }); -} diff --git a/app/lib/rocketchat/services/restApi.ts b/app/lib/rocketchat/services/restApi.ts index 0d7f766bc..3039f400c 100644 --- a/app/lib/rocketchat/services/restApi.ts +++ b/app/lib/rocketchat/services/restApi.ts @@ -17,7 +17,7 @@ import { store as reduxStore } from '../../auxStore'; import { getDeviceToken } from '../../../notifications/push'; import { getBundleId, isIOS } from '../../../utils/deviceInfo'; import { compareServerVersion } from '../../utils'; -import roomTypeToApiType, { RoomTypes } from '../methods/roomTypeToApiType'; +import roomTypeToApiType, { RoomTypes } from '../../methods/roomTypeToApiType'; import sdk from './sdk'; export const createChannel = ({ @@ -901,3 +901,15 @@ export const e2eFetchMyKeys = async () => { } return result; }; + +export const logoutOtherLocations = () => { + const { id } = reduxStore.getState().login.user; + return sdk.post('users.removeOtherTokens', { userId: id as string }); +}; + +export function getUserInfo(userId: string) { + // RC 0.48.0 + return sdk.get('users.info', { userId }); +} + +export const toggleFavorite = (roomId: string, favorite: boolean) => sdk.post('rooms.favorite', { roomId, favorite }); diff --git a/app/lib/rocketchat/services/shareExtension.ts b/app/lib/rocketchat/services/shareExtension.ts index ad83eb989..65a7f76dd 100644 --- a/app/lib/rocketchat/services/shareExtension.ts +++ b/app/lib/rocketchat/services/shareExtension.ts @@ -6,7 +6,7 @@ import log from '../../../utils/log'; import { IShareServer, IShareUser } from '../../../reducers/share'; import UserPreferences from '../../userPreferences'; import database from '../../database'; -import RocketChat from '../rocketchat'; +import RocketChat from '..'; import { encryptionInit } from '../../../actions/encryption'; import { store } from '../../auxStore'; import sdk from './sdk'; diff --git a/app/lib/rocketchat/services/toggleFavorite.ts b/app/lib/rocketchat/services/toggleFavorite.ts deleted file mode 100644 index ed3049634..000000000 --- a/app/lib/rocketchat/services/toggleFavorite.ts +++ /dev/null @@ -1,6 +0,0 @@ -import sdk from './sdk'; - -// RC 0.64.0 -const toggleFavorite = (roomId: string, favorite: boolean) => sdk.post('rooms.favorite', { roomId, favorite }); - -export default toggleFavorite; diff --git a/app/presentation/RoomItem/LastMessage.tsx b/app/presentation/RoomItem/LastMessage.tsx index b21f0a6f3..b2715bb42 100644 --- a/app/presentation/RoomItem/LastMessage.tsx +++ b/app/presentation/RoomItem/LastMessage.tsx @@ -5,7 +5,7 @@ import I18n from '../../i18n'; import styles from './styles'; import { MarkdownPreview } from '../../containers/markdown'; import { themes } from '../../constants/colors'; -import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/encryption/constants'; +import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/constants'; interface ILastMessage { theme: string; diff --git a/app/reducers/permissions.ts b/app/reducers/permissions.ts index d2887a555..be97f7936 100644 --- a/app/reducers/permissions.ts +++ b/app/reducers/permissions.ts @@ -1,6 +1,6 @@ import { PERMISSIONS } from '../actions/actionsTypes'; import { TActionPermissions } from '../actions/permissions'; -import { SUPPORTED_PERMISSIONS } from '../lib/methods/getPermissions'; +import { SUPPORTED_PERMISSIONS } from '../lib/rocketchat/methods/getPermissions'; export type TSupportedPermissions = typeof SUPPORTED_PERMISSIONS[number]; diff --git a/app/sagas/encryption.js b/app/sagas/encryption.js index e99f8b72b..6f6f6186e 100644 --- a/app/sagas/encryption.js +++ b/app/sagas/encryption.js @@ -5,7 +5,7 @@ import { ENCRYPTION } from '../actions/actionsTypes'; import { encryptionSet } from '../actions/encryption'; import { Encryption } from '../lib/encryption'; import Navigation from '../lib/Navigation'; -import { E2E_BANNER_TYPE, E2E_PRIVATE_KEY, E2E_PUBLIC_KEY, E2E_RANDOM_PASSWORD_KEY } from '../lib/encryption/constants'; +import { E2E_BANNER_TYPE, E2E_PRIVATE_KEY, E2E_PUBLIC_KEY, E2E_RANDOM_PASSWORD_KEY } from '../lib/constants'; import database from '../lib/database'; import RocketChat from '../lib/rocketchat'; import UserPreferences from '../lib/userPreferences'; diff --git a/app/sagas/login.js b/app/sagas/login.js index adde0dad3..41fe6c5ca 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -20,6 +20,7 @@ import UserPreferences from '../lib/userPreferences'; import { inquiryRequest, inquiryReset } from '../ee/omnichannel/actions/inquiry'; import { isOmnichannelStatusAvailable } from '../ee/omnichannel/lib'; import { RootEnum } from '../definitions'; +import sdk from '../lib/rocketchat/services/sdk'; const getServer = state => state.server.server; const loginWithPasswordCall = args => RocketChat.loginWithPassword(args); @@ -86,7 +87,7 @@ const fetchCustomEmojis = function* fetchCustomEmojis() { }; const fetchRoles = function* fetchRoles() { - RocketChat.subscribe('stream-roles', 'roles'); + sdk.subscribe('stream-roles', 'roles'); yield RocketChat.getRoles(); }; diff --git a/app/share.tsx b/app/share.tsx index a518a1eba..17ad911e8 100644 --- a/app/share.tsx +++ b/app/share.tsx @@ -13,7 +13,7 @@ import { initStore } from './lib/auxStore'; import { closeShareExtension, shareExtensionInit } from './lib/rocketchat/services/shareExtension'; import { defaultHeader, getActiveRouteName, navigationTheme, themedHeader } from './utils/navigation'; import RocketChat from './lib/rocketchat'; -import { ThemeContext } from './theme'; +import { ThemeContext, TSupportedThemes } from './theme'; import { localAuthenticate } from './utils/localAuthentication'; import { IThemePreference } from './definitions/ITheme'; import ScreenLockedView from './views/ScreenLockedView'; @@ -28,6 +28,7 @@ import AuthLoadingView from './views/AuthLoadingView'; import { DimensionsContext } from './dimensions'; import debounce from './utils/debounce'; import { ShareInsideStackParamList, ShareOutsideStackParamList, ShareAppStackParamList } from './definitions/navigationTypes'; +import { colors } from './constants/colors'; initStore(store); @@ -39,7 +40,7 @@ interface IDimensions { } interface IState { - theme: string; + theme: TSupportedThemes; themePreferences: IThemePreference; root: any; width: number; @@ -161,7 +162,7 @@ class Root extends React.Component<{}, IState> { return ( - + void; + colors: TColors; } -export const ThemeContext = React.createContext({ theme: 'light' }); +export const ThemeContext = React.createContext({ theme: 'light', colors: colors.light }); export function withTheme(Component: React.ComponentType & TNavigationOptions): typeof Component { const ThemedComponent = (props: T) => ( diff --git a/app/utils/theme.ts b/app/utils/theme.ts index 1f2e848c8..08079ca22 100644 --- a/app/utils/theme.ts +++ b/app/utils/theme.ts @@ -6,7 +6,9 @@ import { IThemePreference, TThemeMode } from '../definitions/ITheme'; import { themes } from '../constants/colors'; import { isAndroid } from './deviceInfo'; import UserPreferences from '../lib/userPreferences'; -import { THEME_PREFERENCES_KEY } from '../lib/rocketchat'; +import { THEME_PREFERENCES_KEY } from '../lib/constants'; +import { TSupportedThemes } from '../theme'; + let themeListener: { remove: () => void } | null; @@ -27,7 +29,7 @@ export const defaultTheme = (): TThemeMode => { return 'light'; }; -export const getTheme = (themePreferences: IThemePreference): string => { +export const getTheme = (themePreferences: IThemePreference): TSupportedThemes => { const { darkLevel, currentTheme } = themePreferences; let theme = currentTheme; if (currentTheme === 'automatic') { diff --git a/app/views/AttachmentView.tsx b/app/views/AttachmentView.tsx index 1aef32b07..b51b116d3 100644 --- a/app/views/AttachmentView.tsx +++ b/app/views/AttachmentView.tsx @@ -84,7 +84,9 @@ class AttachmentView extends React.Component {I18n.t('Parent_channel_or_group')} ({ - value: channel, + value: channel.name || channel.fname, text: { text: RocketChat.getRoomTitle(channel) }, imageUrl: getAvatar(channel) }))} diff --git a/app/views/CreateDiscussionView/SelectUsers.tsx b/app/views/CreateDiscussionView/SelectUsers.tsx index 6ef6e25df..cee43dfb5 100644 --- a/app/views/CreateDiscussionView/SelectUsers.tsx +++ b/app/views/CreateDiscussionView/SelectUsers.tsx @@ -77,7 +77,6 @@ const SelectUsers = ({ <> {I18n.t('Invite_users')} { testID={`discussions-view-${item.msg}`} style={{ backgroundColor: themes[theme].backgroundColor }}> - + diff --git a/app/views/E2ESaveYourPasswordView.tsx b/app/views/E2ESaveYourPasswordView.tsx index 72be28097..9bd9a3fbf 100644 --- a/app/views/E2ESaveYourPasswordView.tsx +++ b/app/views/E2ESaveYourPasswordView.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import { Clipboard, ScrollView, StyleSheet, Text, View } from 'react-native'; +import { ScrollView, StyleSheet, Text, View } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; import { connect } from 'react-redux'; import { encryptionSetBanner } from '../actions/encryption'; @@ -11,7 +12,7 @@ import StatusBar from '../containers/StatusBar'; import { LISTENER } from '../containers/Toast'; import { IApplicationState, IBaseScreen } from '../definitions'; import I18n from '../i18n'; -import { E2E_RANDOM_PASSWORD_KEY } from '../lib/encryption/constants'; +import { E2E_RANDOM_PASSWORD_KEY } from '../lib/constants'; import UserPreferences from '../lib/userPreferences'; import { E2ESaveYourPasswordStackParamList } from '../stacks/types'; import { withTheme } from '../theme'; diff --git a/app/views/LivechatEditView.tsx b/app/views/LivechatEditView.tsx index f709245fd..bbd0d8ac7 100644 --- a/app/views/LivechatEditView.tsx +++ b/app/views/LivechatEditView.tsx @@ -275,7 +275,6 @@ const LivechatEditView = ({ value={tagParamSelected} context={BLOCK_CONTEXT.FORM} multiselect - theme={theme} disabled={!permissions[1]} inputStyle={styles.multiSelect} /> diff --git a/app/views/MessagesView/index.tsx b/app/views/MessagesView/index.tsx index 67ddffdd6..4eef9e8f7 100644 --- a/app/views/MessagesView/index.tsx +++ b/app/views/MessagesView/index.tsx @@ -22,6 +22,8 @@ import styles from './styles'; import { ChatsStackParamList } from '../../stacks/types'; import { ISubscription, SubscriptionType } from '../../definitions/ISubscription'; import { IEmoji } from '../../definitions/IEmoji'; +import { IRoomInfoParam } from '../SearchMessagesView'; +import { TMessageModel } from '../../definitions'; interface IMessagesViewProps { user: { @@ -42,14 +44,6 @@ interface IMessagesViewProps { isMasterDetail: boolean; } -interface IRoomInfoParam { - room: ISubscription; - member: any; - rid: string; - t: SubscriptionType; - joined: boolean; -} - interface IMessagesViewState { loading: boolean; messages: []; @@ -79,7 +73,7 @@ interface IParams { rid: string; t: SubscriptionType; tmid?: string; - message?: object; + message?: TMessageModel; name?: string; fname?: string; prid?: string; @@ -187,7 +181,8 @@ class MessagesView extends React.Component { showAttachment: this.showAttachment, getCustomEmoji: this.getCustomEmoji, navToRoomInfo: this.navToRoomInfo, - onPress: () => this.jumpToMessage({ item }) + onPress: () => this.jumpToMessage({ item }), + rid: this.rid }); return { @@ -218,7 +213,6 @@ class MessagesView extends React.Component { } ] }} - theme={theme} /> ) }, diff --git a/app/views/RoomActionsView/index.tsx b/app/views/RoomActionsView/index.tsx index ed56fc72f..7cf1c17bc 100644 --- a/app/views/RoomActionsView/index.tsx +++ b/app/views/RoomActionsView/index.tsx @@ -21,7 +21,7 @@ import { IApplicationState, IBaseScreen, IRoom, ISubscription, IUser, TSubscript import { withDimensions } from '../../dimensions'; import I18n from '../../i18n'; import database from '../../lib/database'; -import { E2E_ROOM_TYPES } from '../../lib/encryption/constants'; +import { E2E_ROOM_TYPES } from '../../lib/constants'; import protectedFunction from '../../lib/methods/helpers/protectedFunction'; import RocketChat from '../../lib/rocketchat'; import { compareServerVersion } from '../../lib/utils'; diff --git a/app/views/RoomInfoEditView/index.tsx b/app/views/RoomInfoEditView/index.tsx index 615453be6..06d858d92 100644 --- a/app/views/RoomInfoEditView/index.tsx +++ b/app/views/RoomInfoEditView/index.tsx @@ -464,7 +464,6 @@ class RoomInfoEditView extends React.Component { const { systemMessages, enableSysMes } = this.state; - const { theme } = this.props; if (!enableSysMes) { return null; @@ -481,7 +480,6 @@ class RoomInfoEditView extends React.Component ); }; diff --git a/app/views/RoomMembersView/index.tsx b/app/views/RoomMembersView/index.tsx index 43395d912..866924cbe 100644 --- a/app/views/RoomMembersView/index.tsx +++ b/app/views/RoomMembersView/index.tsx @@ -28,7 +28,7 @@ import { goRoom, TGoRoomItem } from '../../utils/goRoom'; import { showConfirmationAlert, showErrorAlert } from '../../utils/info'; import log from '../../utils/log'; import scrollPersistTaps from '../../utils/scrollPersistTaps'; -import { RoomTypes } from '../../lib/rocketchat/methods/roomTypeToApiType'; +import { RoomTypes } from '../../lib/methods/roomTypeToApiType'; import styles from './styles'; const PAGE_SIZE = 25; diff --git a/app/views/RoomView/index.tsx b/app/views/RoomView/index.tsx index b8800783d..491e7f780 100644 --- a/app/views/RoomView/index.tsx +++ b/app/views/RoomView/index.tsx @@ -48,7 +48,7 @@ import Navigation from '../../lib/Navigation'; import SafeAreaView from '../../containers/SafeAreaView'; import { withDimensions } from '../../dimensions'; import { getHeaderTitlePosition } from '../../containers/Header'; -import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/encryption/constants'; +import { E2E_MESSAGE_TYPE, E2E_STATUS } from '../../lib/constants'; import { takeInquiry } from '../../ee/omnichannel/lib'; import Loading from '../../containers/Loading'; import { goRoom, TGoRoomItem } from '../../utils/goRoom'; @@ -77,6 +77,7 @@ import { IVisitor, SubscriptionType, TAnyMessageModel, + TMessageModel, TSubscriptionModel, TThreadModel } from '../../definitions'; @@ -150,7 +151,7 @@ interface IRoomViewState { member: any; lastOpen: Date | null; reactionsModalVisible: boolean; - selectedMessage?: Object; + selectedMessage?: TAnyMessageModel; canAutoTranslate: boolean; loading: boolean; showingBlockingLoader: boolean; @@ -686,7 +687,7 @@ class RoomView extends React.Component { id: message.subscription.id }, msg: message?.attachments?.[0]?.description || message.msg - }; + } as TMessageModel; this.setState({ selectedMessage: newMessage, editing: true }); }; @@ -866,7 +867,7 @@ class RoomView extends React.Component { } }; - replyBroadcast = (message: Record) => { + replyBroadcast = (message: IMessage) => { const { dispatch } = this.props; dispatch(replyBroadcast(message)); }; @@ -1374,7 +1375,6 @@ class RoomView extends React.Component { baseUrl={baseUrl} onClose={this.onCloseReactionsModal} getCustomEmoji={this.getCustomEmoji} - theme={theme} /> diff --git a/app/views/RoomsListView/ListHeader/index.tsx b/app/views/RoomsListView/ListHeader/index.tsx index ad9e00eb5..1dbe9eb3b 100644 --- a/app/views/RoomsListView/ListHeader/index.tsx +++ b/app/views/RoomsListView/ListHeader/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { useTheme } from '../../../theme'; import * as List from '../../../containers/List'; -import { E2E_BANNER_TYPE } from '../../../lib/encryption/constants'; +import { E2E_BANNER_TYPE } from '../../../lib/constants'; import { themes } from '../../../constants/colors'; import OmnichannelStatus from '../../../ee/omnichannel/containers/OmnichannelStatus'; import { IUser } from '../../../definitions'; diff --git a/app/views/RoomsListView/index.tsx b/app/views/RoomsListView/index.tsx index 24c6414d1..e2367b06d 100644 --- a/app/views/RoomsListView/index.tsx +++ b/app/views/RoomsListView/index.tsx @@ -43,7 +43,7 @@ import SafeAreaView from '../../containers/SafeAreaView'; import Header, { getHeaderTitlePosition } from '../../containers/Header'; import { withDimensions } from '../../dimensions'; import { showConfirmationAlert, showErrorAlert } from '../../utils/info'; -import { E2E_BANNER_TYPE } from '../../lib/encryption/constants'; +import { E2E_BANNER_TYPE } from '../../lib/constants'; import { getInquiryQueueSelector } from '../../ee/omnichannel/selectors/inquiry'; import { changeLivechatStatus, isOmnichannelStatusAvailable } from '../../ee/omnichannel/lib'; import { IApplicationState, IBaseScreen, ISubscription, IUser, RootEnum, TSubscriptionModel } from '../../definitions'; @@ -53,7 +53,7 @@ import ServerDropdown from './ServerDropdown'; import ListHeader, { TEncryptionBanner } from './ListHeader'; import RoomsListHeaderView from './Header'; import { ChatsStackParamList } from '../../stacks/types'; -import { RoomTypes } from '../../lib/rocketchat/methods/roomTypeToApiType'; +import { RoomTypes } from '../../lib/methods/roomTypeToApiType'; interface IRoomsListViewProps extends IBaseScreen { [key: string]: any; diff --git a/app/views/SearchMessagesView/index.tsx b/app/views/SearchMessagesView/index.tsx index 585bf76aa..c6b5579d4 100644 --- a/app/views/SearchMessagesView/index.tsx +++ b/app/views/SearchMessagesView/index.tsx @@ -42,12 +42,12 @@ interface ISearchMessagesViewState { searchText: string; } -interface IRoomInfoParam { - room: ISubscription; - member: any; +export interface IRoomInfoParam { + room?: ISubscription; + member?: any; rid: string; t: SubscriptionType; - joined: boolean; + joined?: boolean; } interface INavigationOption { diff --git a/app/views/SecurityPrivacyView.tsx b/app/views/SecurityPrivacyView.tsx index ffd61d31e..529964752 100644 --- a/app/views/SecurityPrivacyView.tsx +++ b/app/views/SecurityPrivacyView.tsx @@ -8,7 +8,6 @@ import { SWITCH_TRACK_COLOR } from '../constants/colors'; import StatusBar from '../containers/StatusBar'; import * as List from '../containers/List'; import I18n from '../i18n'; -import { CRASH_REPORT_KEY, ANALYTICS_EVENTS_KEY } from '../lib/rocketchat'; import { logEvent, events, @@ -19,6 +18,7 @@ import { } from '../utils/log'; import SafeAreaView from '../containers/SafeAreaView'; import { isFDroidBuild } from '../constants/environment'; +import { ANALYTICS_EVENTS_KEY, CRASH_REPORT_KEY } from '../lib/constants'; interface ISecurityPrivacyViewProps { navigation: StackNavigationProp; diff --git a/app/views/SettingsView/index.tsx b/app/views/SettingsView/index.tsx index b2fd3bcc1..21e5bfae9 100644 --- a/app/views/SettingsView/index.tsx +++ b/app/views/SettingsView/index.tsx @@ -2,7 +2,8 @@ import CookieManager from '@react-native-cookies/cookies'; import { StackNavigationOptions } from '@react-navigation/stack'; import FastImage from '@rocket.chat/react-native-fast-image'; import React from 'react'; -import { Clipboard, Linking, Share } from 'react-native'; +import { Linking, Share } from 'react-native'; +import Clipboard from '@react-native-clipboard/clipboard'; import { connect } from 'react-redux'; import { appStart } from '../../actions/app'; diff --git a/app/views/StatusView.tsx b/app/views/StatusView.tsx index 3aa232089..07d7138ca 100644 --- a/app/views/StatusView.tsx +++ b/app/views/StatusView.tsx @@ -166,7 +166,11 @@ class StatusView extends React.Component { dispatch(setUser({ status: item.id })); } } catch (e: any) { - showErrorAlert(I18n.t(e.data.errorType)); + const messageError = + e.data && e.data.error.includes('[error-too-many-requests]') + ? I18n.t('error-too-many-requests', { seconds: e.data.error.replace(/\D/g, '') }) + : e.data.errorType; + showErrorAlert(messageError); logEvent(events.SET_STATUS_FAIL); log(e); } diff --git a/app/views/ThemeView.tsx b/app/views/ThemeView.tsx index 5bc365d35..512b8b123 100644 --- a/app/views/ThemeView.tsx +++ b/app/views/ThemeView.tsx @@ -6,12 +6,12 @@ import { withTheme } from '../theme'; import { themes } from '../constants/colors'; import StatusBar from '../containers/StatusBar'; import * as List from '../containers/List'; -import { THEME_PREFERENCES_KEY } from '../lib/rocketchat'; import { supportSystemTheme } from '../utils/deviceInfo'; import SafeAreaView from '../containers/SafeAreaView'; import UserPreferences from '../lib/userPreferences'; import { events, logEvent } from '../utils/log'; import { IThemePreference, TThemeMode, TDarkLevel } from '../definitions/ITheme'; +import { THEME_PREFERENCES_KEY } from '../lib/constants'; const THEME_GROUP = 'THEME_GROUP'; const DARK_GROUP = 'DARK_GROUP'; diff --git a/app/views/ThreadMessagesView/Item.tsx b/app/views/ThreadMessagesView/Item.tsx index 82441c43e..d5b7a2b55 100644 --- a/app/views/ThreadMessagesView/Item.tsx +++ b/app/views/ThreadMessagesView/Item.tsx @@ -65,7 +65,7 @@ interface IItem { toggleFollowThread: (isFollowing: boolean, id: string) => void; } -const Item = ({ item, useRealName, user, badgeColor, onPress, toggleFollowThread }: IItem) => { +const Item = ({ item, useRealName, user, badgeColor, onPress, toggleFollowThread }: IItem): React.ReactElement => { const { theme } = useTheme(); const username = (useRealName && item?.u?.name) || item?.u?.username; let time; @@ -79,7 +79,7 @@ const Item = ({ item, useRealName, user, badgeColor, onPress, toggleFollowThread testID={`thread-messages-view-${item.msg}`} style={{ backgroundColor: themes[theme].backgroundColor }}> - + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f8d86561f..737b35679 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -506,6 +506,8 @@ PODS: - React-Core - RNCAsyncStorage (1.12.1): - React-Core + - RNCClipboard (1.8.5): + - React-Core - RNCMaskedView (0.1.11): - React - RNConfigReader (1.0.0): @@ -693,6 +695,7 @@ DEPENDENCIES: - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) - RNBootSplash (from `../node_modules/react-native-bootsplash`) - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" + - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" - RNConfigReader (from `../node_modules/react-native-config-reader`) - "RNCPicker (from `../node_modules/@react-native-community/picker`)" @@ -879,6 +882,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-bootsplash" RNCAsyncStorage: :path: "../node_modules/@react-native-community/async-storage" + RNCClipboard: + :path: "../node_modules/@react-native-clipboard/clipboard" RNCMaskedView: :path: "../node_modules/@react-native-community/masked-view" RNConfigReader: @@ -950,7 +955,7 @@ SPEC CHECKSUMS: EXVideoThumbnails: 442c3abadb51a81551a3b53705b7560de390e6f7 EXWebBrowser: 76783ba5dcb8699237746ecf41a9643d428a4cc5 FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b - FBReactNativeSpec: 110d69378fce79af38271c39894b59fec7890221 + FBReactNativeSpec: 686ac17e193dcf7d5df4d772b224504dd2f3ad81 Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892 FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4 FirebaseCore: 8cd4f8ea22075e0ee582849b1cf79d8816506085 @@ -1024,6 +1029,7 @@ SPEC CHECKSUMS: rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNBootSplash: 4844706cbb56a3270556c9b94e59dedadccd47e4 RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 + RNCClipboard: cc054ad1e8a33d2a74cd13e565588b4ca928d8fd RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489 RNConfigReader: 396da6a6444182a76e8ae0930b9436c7575045cb RNCPicker: 914b557e20b3b8317b084aca9ff4b4edb95f61e4 diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index ae9f0754d..c1ac46682 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1682,7 +1682,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.26.0; + MARKETING_VERSION = 4.26.2; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; @@ -1719,7 +1719,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.26.0; + MARKETING_VERSION = 4.26.2; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 66afb89f2..cf28d3aaa 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -26,7 +26,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.26.0 + 4.26.2 CFBundleSignature ???? CFBundleURLTypes diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 51d77db19..1442a5899 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -26,7 +26,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 4.26.0 + 4.26.2 CFBundleVersion 1 KeychainGroup diff --git a/jest.setup.js b/jest.setup.js new file mode 100644 index 000000000..c33037889 --- /dev/null +++ b/jest.setup.js @@ -0,0 +1,33 @@ +import mockClipboard from '@react-native-clipboard/clipboard/jest/clipboard-mock.js'; + +jest.mock('@react-native-clipboard/clipboard', () => mockClipboard); + +jest.mock('react-native-mmkv-storage', () => ({ + Loader: jest.fn().mockImplementation(() => ({ + setProcessingMode: jest.fn().mockImplementation(() => ({ + withEncryption: jest.fn().mockImplementation(() => ({ + initialize: jest.fn() + })) + })) + })), + create: jest.fn(), + MODES: { MULTI_PROCESS: '' } +})); + +jest.mock('rn-fetch-blob', () => ({ + fs: { + dirs: { + DocumentDir: '/data/com.rocket.chat/documents', + DownloadDir: '/data/com.rocket.chat/downloads' + }, + exists: jest.fn(() => null) + }, + fetch: jest.fn(() => null), + config: jest.fn(() => null) +})); + +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn(() => null) +})); + +jest.mock('./app/lib/database', () => jest.fn(() => null)); diff --git a/package.json b/package.json index e8162c9ea..b2ca75937 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.26.0", + "version": "4.26.2", "private": true, "scripts": { "start": "react-native start", @@ -30,6 +30,7 @@ "@bugsnag/react-native": "^7.10.5", "@codler/react-native-keyboard-aware-scroll-view": "^1.0.1", "@nozbe/watermelondb": "0.23.0", + "@react-native-clipboard/clipboard": "^1.8.5", "@react-native-community/art": "^1.2.0", "@react-native-community/async-storage": "1.12.1", "@react-native-community/blur": "^3.6.0", @@ -208,7 +209,8 @@ "^.+\\.js$": "/node_modules/react-native/jest/preprocessor.js" }, "setupFilesAfterEnv": [ - "@testing-library/jest-native/extend-expect" + "@testing-library/jest-native/extend-expect", + "./jest.setup.js" ] }, "snyk": true, diff --git a/patches/rn-fetch-blob+0.12.0.patch b/patches/rn-fetch-blob+0.12.0.patch index 5b0c59c59..44a57c005 100644 --- a/patches/rn-fetch-blob+0.12.0.patch +++ b/patches/rn-fetch-blob+0.12.0.patch @@ -23,7 +23,7 @@ index 602d51d..920d975 100644 public String getName() { return "RNFetchBlob"; diff --git a/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m b/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m -index cdbe6b1..1699c6c 100644 +index cdbe6b1..c0ce9bd 100644 --- a/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m +++ b/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m @@ -15,6 +15,9 @@ @@ -36,7 +36,7 @@ index cdbe6b1..1699c6c 100644 typedef NS_ENUM(NSUInteger, ResponseFormat) { UTF8, -@@ -450,16 +453,107 @@ typedef NS_ENUM(NSUInteger, ResponseFormat) { +@@ -450,16 +453,108 @@ - (void) URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSen } } @@ -106,38 +106,39 @@ index cdbe6b1..1699c6c 100644 + while (*utf8) [hex appendFormat:@"%02X", *utf8++ & 0x00FF]; + + return [[NSString stringWithFormat:@"%@", hex] lowercaseString]; -+} -+ + } + +-(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler +{ + NSString *host = challenge.protectionSpace.host; + + // Read the clientSSL info from MMKV -+ __block NSDictionary *clientSSL; ++ __block NSString *clientSSL; + SecureStorage *secureStorage = [[SecureStorage alloc] init]; + + // https://github.com/ammarahm-ed/react-native-mmkv-storage/blob/master/src/loader.js#L31 + NSString *key = [secureStorage getSecureKey:[self stringToHex:@"com.MMKV.default"]]; + + if (key == NULL) { -+ return; ++ return; + } + ++ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; + MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; -+ clientSSL = [mmkv getObjectOfClass:[NSDictionary class] forKey:host]; ++ clientSSL = [mmkv getStringForKey:host]; + -+ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; -+ -+ if (clientSSL != (id)[NSNull null]) { -+ NSString *path = [clientSSL objectForKey:@"path"]; -+ NSString *password = [clientSSL objectForKey:@"password"]; ++ if ([clientSSL length] != 0) { ++ NSData *data = [clientSSL dataUsingEncoding:NSUTF8StringEncoding]; ++ id dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; ++ NSString *path = [dict objectForKey:@"path"]; ++ NSString *password = [dict objectForKey:@"password"]; + credential = [self getUrlCredential:challenge path:path password:password]; + } + + completionHandler(NSURLSessionAuthChallengeUseCredential, credential); - } - ++} ++ +// - (void) URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable credantial))completionHandler +// { +// if ([[options valueForKey:CONFIG_TRUSTY] boolValue]) { diff --git a/storybook/stories/__snapshots__/List.storyshot b/storybook/stories/__snapshots__/List.storyshot index 0744a75ac..82416e9a0 100644 --- a/storybook/stories/__snapshots__/List.storyshot +++ b/storybook/stories/__snapshots__/List.storyshot @@ -1,29 +1,29 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Storyshots List alert 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List alert 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20},[{\\"paddingLeft\\":4},{\\"color\\":\\"#f5455c\\"}],{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; -exports[`Storyshots List header 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]}"`; +exports[`Storyshots List header 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]}"`; -exports[`Storyshots List icon 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`; +exports[`Storyshots List icon 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}"`; -exports[`Storyshots List pressable 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Press me\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"I'm disabled\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List pressable 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Press me\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"I'm disabled\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; -exports[`Storyshots List separator 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List separator 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; -exports[`Storyshots List title and subtitle 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}],\\"testID\\":\\"test-id\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List title and subtitle 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}],\\"testID\\":\\"test-id\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; exports[`Storyshots List with FlatList 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"data\\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],\\"contentContainerStyle\\":{\\"paddingVertical\\":32},\\"ListHeaderComponent\\":{\\"compare\\":null},\\"ListFooterComponent\\":{\\"compare\\":null},\\"ItemSeparatorComponent\\":{\\"compare\\":null},\\"disableVirtualization\\":false,\\"horizontal\\":false,\\"initialNumToRender\\":10,\\"maxToRenderPerBatch\\":10,\\"onEndReachedThreshold\\":2,\\"scrollEventThrottle\\":50,\\"updateCellsBatchingPeriod\\":50,\\"windowSize\\":21,\\"removeClippedSubviews\\":false,\\"viewabilityConfigCallbackPairs\\":[],\\"stickyHeaderIndices\\":[]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"0\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"1\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"2\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"3\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"4\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"5\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"6\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"7\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"8\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":null},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"9\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"height\\":0}},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}]}]}"`; -exports[`Storyshots List with bigger font 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; +exports[`Storyshots List with bigger font 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":69}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; exports[`Storyshots List with black theme 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#080808\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"black\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#b2b8c6\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#b2b8c6\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#b2b8c6\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#b2b8c6\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#b2b8c6\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#272728\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; -exports[`Storyshots List with custom colors 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"red\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"white\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Press me!\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List with custom colors 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"red\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"white\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Press me!\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; exports[`Storyshots List with dark theme 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#07101e\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"dark\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6D6D72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9297a2\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9297a2\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6D6D72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6D6D72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9297a2\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#f9f9f9\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9297a2\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9297a2\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#2b2b2d\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6D6D72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; -exports[`Storyshots List with icon 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Icon Left\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Icon Right\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Show Action Indicator\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},{}]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; +exports[`Storyshots List with icon 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Icon Left\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Icon Right\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Show Action Indicator\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},{}]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]}]}"`; -exports[`Storyshots List with section and info 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]}]}]}"`; +exports[`Storyshots List with section and info 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":92}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Section Item\\"]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries\\"]}]}]}]}]}]}"`; -exports[`Storyshots List with small font 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; +exports[`Storyshots List with small font 1`] = `"{\\"type\\":\\"RNCSafeAreaView\\",\\"props\\":{\\"style\\":[{\\"flex\\":1},{\\"backgroundColor\\":\\"#efeff4\\"},null],\\"edges\\":[\\"right\\",\\"left\\"]},\\"children\\":[{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"contentContainerStyle\\":{\\"paddingVertical\\":16},\\"scrollIndicatorInsets\\":{\\"right\\":1},\\"keyboardShouldPersistTaps\\":\\"always\\",\\"keyboardDismissMode\\":\\"interactive\\",\\"theme\\":\\"light\\",\\"colors\\":{\\"backgroundColor\\":\\"#ffffff\\",\\"focusedBackground\\":\\"#ffffff\\",\\"chatComponentBackground\\":\\"#f3f4f5\\",\\"auxiliaryBackground\\":\\"#efeff4\\",\\"bannerBackground\\":\\"#f1f2f4\\",\\"titleText\\":\\"#0d0e12\\",\\"bodyText\\":\\"#2f343d\\",\\"backdropColor\\":\\"#000000\\",\\"dangerColor\\":\\"#f5455c\\",\\"successColor\\":\\"#2de0a5\\",\\"borderColor\\":\\"#e1e5e8\\",\\"controlText\\":\\"#54585e\\",\\"auxiliaryText\\":\\"#9ca2a8\\",\\"infoText\\":\\"#6d6d72\\",\\"tintColor\\":\\"#1d74f5\\",\\"tintActive\\":\\"#549df9\\",\\"tintDisabled\\":\\"#88B4F5\\",\\"auxiliaryTintColor\\":\\"#6C727A\\",\\"actionTintColor\\":\\"#1d74f5\\",\\"separatorColor\\":\\"#cbcbcc\\",\\"navbarBackground\\":\\"#ffffff\\",\\"headerBorder\\":\\"#B2B2B2\\",\\"headerBackground\\":\\"#EEEFF1\\",\\"headerSecondaryBackground\\":\\"#ffffff\\",\\"headerTintColor\\":\\"#6C727A\\",\\"headerTitleColor\\":\\"#0C0D0F\\",\\"headerSecondaryText\\":\\"#1d74f5\\",\\"toastBackground\\":\\"#0C0D0F\\",\\"videoBackground\\":\\"#1f2329\\",\\"favoriteBackground\\":\\"#ffbb00\\",\\"hideBackground\\":\\"#54585e\\",\\"messageboxBackground\\":\\"#ffffff\\",\\"searchboxBackground\\":\\"#E6E6E7\\",\\"buttonBackground\\":\\"#414852\\",\\"buttonText\\":\\"#ffffff\\",\\"passcodeBackground\\":\\"#EEEFF1\\",\\"passcodeButtonActive\\":\\"#E4E7EA\\",\\"passcodeLockIcon\\":\\"#6C727A\\",\\"passcodePrimary\\":\\"#2F343D\\",\\"passcodeSecondary\\":\\"#6C727A\\",\\"passcodeDotEmpty\\":\\"#CBCED1\\",\\"passcodeDotFull\\":\\"#6C727A\\",\\"previewBackground\\":\\"#1F2329\\",\\"previewTintColor\\":\\"#ffffff\\",\\"backdropOpacity\\":0.3,\\"attachmentLoadingOpacity\\":0.7,\\"collapsibleQuoteBorder\\":\\"#CBCED1\\",\\"collapsibleChevron\\":\\"#6C727A\\",\\"unreadColor\\":\\"#6C727A\\",\\"tunreadColor\\":\\"#1d74f5\\",\\"mentionMeColor\\":\\"#F5455C\\",\\"mentionGroupColor\\":\\"#F38C39\\",\\"mentionOtherColor\\":\\"#F3BE08\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginVertical\\":16}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingBottom\\":12,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},null,{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\",\\"paddingHorizontal\\":12},{\\"opacity\\":0.3},{\\"height\\":36.800000000000004}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingRight\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"flexShrink\\":1,\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Chats\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#9ca2a8\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"All\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingLeft\\":12}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"},null]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"height\\":0.5},null,{\\"backgroundColor\\":\\"#cbcbcc\\"}]},\\"children\\":null},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"paddingTop\\":8,\\"paddingHorizontal\\":12}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":14,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6d6d72\\"}]},\\"children\\":[\\"Chats\\"]}]}]}]}]}]}"`; diff --git a/storybook/stories/__snapshots__/Message.storyshot b/storybook/stories/__snapshots__/Message.storyshot index 4f227eb5d..413a536f1 100644 --- a/storybook/stories/__snapshots__/Message.storyshot +++ b/storybook/stories/__snapshots__/Message.storyshot @@ -50,7 +50,7 @@ exports[`Storyshots Message Sequential thread messages following thread button 1 exports[`Storyshots Message Sequential thread messages following thread reply 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"marginTop\\":6,\\"marginBottom\\":12},\\"testID\\":\\"message-thread-replied-on-How are you?\\"},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#1d74f5\\"},{\\"marginRight\\":10,\\"marginLeft\\":16},{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]},{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"How are you?\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#2f343d\\"},{\\"fontSize\\":16,\\"flex\\":1,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#1d74f5\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"How are you?\\"]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"marginLeft\\":4,\\"marginRight\\":4,\\"alignItems\\":\\"center\\",\\"justifyContent\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"allowFontScaling\\":false,\\"style\\":[{\\"fontSize\\":20,\\"color\\":\\"#9ca2a8\\"},null,{\\"fontFamily\\":\\"custom\\",\\"fontWeight\\":\\"normal\\",\\"fontStyle\\":\\"normal\\"},{}]},\\"children\\":[\\"\\"]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2},{\\"marginLeft\\":16}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=20\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"I'm fine!\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"I'm fine!\\"]}]}]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2},{\\"marginLeft\\":16}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=20\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"Cool!\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Cool!\\"]}]}]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2},{\\"marginLeft\\":16}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=20\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#2f343d\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\"]}]}]}]}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2},{\\"marginLeft\\":16}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":20,\\"height\\":20,\\"borderRadius\\":2}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=20\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":null}]}]}]}]}]}]}]}"`; -exports[`Storyshots Message Show a button as attachment 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4},{\\"marginTop\\":4}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=36\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"justifyContent\\":\\"space-between\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"flexShrink\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"lineHeight\\":22,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"diego.mello\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":12,\\"marginLeft\\":8,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6C727A\\"}]},\\"children\\":[\\"10:00 AM\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"}},\\"children\\":[\\"Test Button\\"]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityLabel\\":\\"Text button\\",\\"focusable\\":true,\\"style\\":{\\"paddingHorizontal\\":14,\\"justifyContent\\":\\"center\\",\\"height\\":48,\\"borderRadius\\":2,\\"marginBottom\\":12,\\"backgroundColor\\":\\"#1d74f5\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"center\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#ffffff\\"},null,null],\\"accessibilityLabel\\":\\"Text button\\"},\\"children\\":[\\"Text button\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":null}]}]}]}]}]}]}]}"`; +exports[`Storyshots Message Show a button as attachment 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4},{\\"marginTop\\":4}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://open.rocket.chat/avatar/diego.mello?format=png&size=36\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"justifyContent\\":\\"space-between\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"flexShrink\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"lineHeight\\":22,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"diego.mello\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":12,\\"marginLeft\\":8,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6C727A\\"}]},\\"children\\":[\\"10:00 AM\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#2f343d\\"}]},\\"children\\":[\\"Test Button\\"]},{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"accessibilityLabel\\":\\"Text button\\",\\"focusable\\":true,\\"style\\":{\\"paddingHorizontal\\":14,\\"justifyContent\\":\\"center\\",\\"height\\":48,\\"borderRadius\\":2,\\"marginBottom\\":12,\\"backgroundColor\\":\\"#1d74f5\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"center\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#ffffff\\"},null,null],\\"accessibilityLabel\\":\\"Text button\\"},\\"children\\":[\\"Text button\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":null}]}]}]}]}]}]}]}"`; exports[`Storyshots Message Static avatar 1`] = `"{\\"type\\":\\"RCTScrollView\\",\\"props\\":{\\"style\\":{\\"backgroundColor\\":\\"#ffffff\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"backgroundColor\\":null,\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"paddingVertical\\":4,\\"width\\":\\"100%\\",\\"paddingHorizontal\\":14,\\"flexDirection\\":\\"column\\"},null]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flexDirection\\":\\"row\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4},{\\"marginTop\\":4}],\\"testID\\":\\"avatar\\"},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"overflow\\":\\"hidden\\"},{\\"width\\":36,\\"height\\":36,\\"borderRadius\\":4}]},\\"children\\":[{\\"type\\":\\"FastImageView\\",\\"props\\":{\\"style\\":{\\"position\\":\\"absolute\\",\\"left\\":0,\\"right\\":0,\\"top\\":0,\\"bottom\\":0},\\"source\\":{\\"uri\\":\\"https://pbs.twimg.com/profile_images/1016397063649660929/14EIApTi_400x400.jpg\\",\\"priority\\":\\"high\\"},\\"resizeMode\\":\\"cover\\"},\\"children\\":null}]}]}]},{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":[{\\"flex\\":1,\\"marginLeft\\":46},{\\"marginLeft\\":10}]},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"style\\":{\\"flex\\":1,\\"flexDirection\\":\\"row\\",\\"justifyContent\\":\\"space-between\\",\\"alignItems\\":\\"center\\"}},\\"children\\":[{\\"type\\":\\"View\\",\\"props\\":{\\"accessible\\":true,\\"focusable\\":true,\\"style\\":{\\"flexShrink\\":1,\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"center\\",\\"opacity\\":1}},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"lineHeight\\":22,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"500\\"},{\\"color\\":\\"#0d0e12\\"}],\\"numberOfLines\\":1},\\"children\\":[\\"diego.mello\\"]}]},{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":12,\\"marginLeft\\":8,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},{\\"color\\":\\"#6C727A\\"}]},\\"children\\":[\\"10:00 AM\\"]}]},{\\"type\\":\\"View\\",\\"props\\":{},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},null,{\\"color\\":\\"#2f343d\\"}]},\\"children\\":[{\\"type\\":\\"Text\\",\\"props\\":{\\"accessibilityLabel\\":\\"Message\\",\\"style\\":[{\\"fontSize\\":16,\\"textAlign\\":\\"left\\",\\"backgroundColor\\":\\"transparent\\",\\"fontFamily\\":\\"System\\",\\"fontWeight\\":\\"400\\"},[{},{\\"marginTop\\":0,\\"marginBottom\\":0,\\"flexWrap\\":\\"wrap\\",\\"flexDirection\\":\\"row\\",\\"alignItems\\":\\"flex-start\\",\\"justifyContent\\":\\"flex-start\\"}]]},\\"children\\":[\\"Message\\"]}]}]}]}]}]}]}]}]}]}"`; diff --git a/yarn.lock b/yarn.lock index e044d7250..b7545bce9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -37,6 +44,13 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + "@babel/compat-data@^7.12.13", "@babel/compat-data@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" @@ -52,6 +66,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + "@babel/core@7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" @@ -97,25 +116,25 @@ source-map "^0.5.0" "@babel/core@^7.1.6": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" - integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.8" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" "@babel/core@^7.12.9", "@babel/core@^7.7.2": version "7.14.6" @@ -195,15 +214,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.14.8", "@babel/generator@^7.5.0": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" - integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== - dependencies: - "@babel/types" "^7.14.8" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@^7.15.4", "@babel/generator@^7.9.0": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" @@ -213,6 +223,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.5.0": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" + integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/generator@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" @@ -237,6 +256,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -297,6 +323,16 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.12.13", "@babel/helper-create-class-features-plugin@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" @@ -321,17 +357,18 @@ "@babel/helper-replace-supers" "^7.14.5" "@babel/helper-split-export-declaration" "^7.14.5" -"@babel/helper-create-class-features-plugin@^7.14.6": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" - integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== +"@babel/helper-create-class-features-plugin@^7.16.7": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.7" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6": version "7.9.6" @@ -385,6 +422,13 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" @@ -427,6 +471,15 @@ "@babel/template" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" @@ -457,6 +510,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -478,6 +538,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" @@ -492,13 +559,6 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-member-expression-to-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - "@babel/helper-member-expression-to-functions@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" @@ -506,6 +566,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" @@ -541,6 +608,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" @@ -568,20 +642,6 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" - integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - "@babel/helper-module-transforms@^7.15.4": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" @@ -596,6 +656,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.6" +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/helper-module-transforms@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" @@ -630,6 +704,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" @@ -652,6 +733,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + "@babel/helper-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" @@ -707,6 +793,17 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" @@ -732,13 +829,6 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== - dependencies: - "@babel/types" "^7.14.8" - "@babel/helper-simple-access@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" @@ -746,6 +836,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -768,6 +865,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-split-export-declaration@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" @@ -789,6 +893,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -806,16 +917,16 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== -"@babel/helper-validator-identifier@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" - integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== - "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": version "7.15.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -826,6 +937,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + "@babel/helper-wrap-function@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" @@ -864,14 +980,14 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helpers@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== +"@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" "@babel/helpers@^7.9.0": version "7.15.4" @@ -909,6 +1025,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -918,10 +1043,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" - integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" + integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== "@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": version "7.9.6" @@ -988,7 +1113,15 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.7.0": +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-properties@^7.12.13", "@babel/plugin-proposal-class-properties@^7.14.5", "@babel/plugin-proposal-class-properties@^7.7.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== @@ -1070,7 +1203,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13", "@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== @@ -1141,7 +1282,16 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.1.0", "@babel/plugin-proposal-optional-chaining@^7.12.17", "@babel/plugin-proposal-optional-chaining@^7.14.5": +"@babel/plugin-proposal-optional-chaining@^7.1.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.12.17", "@babel/plugin-proposal-optional-chaining@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== @@ -1247,12 +1397,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" - integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" + integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-flow@^7.2.0", "@babel/plugin-syntax-flow@^7.8.3": version "7.8.3" @@ -1276,11 +1426,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" + integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-jsx@^7.10.4": version "7.10.4" @@ -1366,6 +1516,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-typescript@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" + integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" @@ -1396,7 +1553,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-remap-async-to-generator" "^7.14.5" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.12.13", "@babel/plugin-transform-block-scoped-functions@^7.14.5": +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoped-functions@^7.12.13", "@babel/plugin-transform-block-scoped-functions@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== @@ -1540,13 +1704,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz#0dc9c1d11dcdc873417903d6df4bed019ef0f85e" - integrity sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== +"@babel/plugin-transform-flow-strip-types@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" + integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-flow" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-flow" "^7.16.7" "@babel/plugin-transform-for-of@^7.0.0": version "7.9.0" @@ -1599,7 +1763,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.12.13", "@babel/plugin-transform-member-expression-literals@^7.14.5": +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.12.13", "@babel/plugin-transform-member-expression-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== @@ -1625,14 +1796,14 @@ "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.1.0", "@babel/plugin-transform-modules-commonjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" + integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.12.13": @@ -1645,6 +1816,16 @@ "@babel/helper-simple-access" "^7.15.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" + integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== + dependencies: + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.12.13": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" @@ -1710,7 +1891,15 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.12.13", "@babel/plugin-transform-object-super@^7.14.5": +"@babel/plugin-transform-object-super@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.12.13", "@babel/plugin-transform-object-super@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== @@ -1740,7 +1929,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.12.13", "@babel/plugin-transform-property-literals@^7.14.5": +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.12.13", "@babel/plugin-transform-property-literals@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== @@ -1901,14 +2097,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript" "^7.14.5" -"@babel/plugin-transform-typescript@^7.14.5": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" - integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== +"@babel/plugin-transform-typescript@^7.16.7": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.6" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-typescript" "^7.16.7" "@babel/plugin-transform-typescript@^7.5.0": version "7.9.6" @@ -2094,13 +2290,13 @@ semver "^5.5.0" "@babel/preset-flow@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.14.5.tgz#a1810b0780c8b48ab0bece8e7ab8d0d37712751c" - integrity sha512-pP5QEb4qRUSVGzzKx9xqRuHUrM/jEzMqdrZpdMA+oUCRgd5zM1qGr5y5+ZgAL/1tVv1H0dyk5t4SKJntqyiVtg== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd" + integrity sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-flow-strip-types" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-flow-strip-types" "^7.16.7" "@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.4": version "0.1.4" @@ -2114,13 +2310,13 @@ esutils "^2.0.2" "@babel/preset-typescript@^7.1.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz#aa98de119cf9852b79511f19e7f44a2d379bcce0" - integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" + integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.16.7" "@babel/preset-typescript@~7.12.13": version "7.12.17" @@ -2132,14 +2328,14 @@ "@babel/plugin-transform-typescript" "^7.12.17" "@babel/register@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.14.5.tgz#d0eac615065d9c2f1995842f85d6e56c345f3233" - integrity sha512-TjJpGz/aDjFGWsItRBQMOFTrmTI9tr79CHOK+KIvLeCkbxuOAk2M5QHjvruIMGoo9OuccMh5euplPzc5FjAKGg== + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" + integrity sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.0" + pirates "^4.0.5" source-map-support "^0.5.16" "@babel/runtime-corejs3@^7.10.2": @@ -2236,18 +2432,28 @@ "@babel/parser" "^7.15.4" "@babel/types" "^7.15.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" - integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.8" - "@babel/types" "^7.14.8" + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" @@ -2360,12 +2566,12 @@ "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" -"@babel/types@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" - integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: - "@babel/helper-validator-identifier" "^7.14.8" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -2734,9 +2940,9 @@ xmlbuilder "^14.0.0" "@hapi/hoek@^9.0.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" - integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== + version "9.2.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== "@hapi/topo@^5.0.0": version "5.1.0" @@ -2840,11 +3046,11 @@ strip-ansi "^6.0.0" "@jest/create-cache-key-function@^27.0.2": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.0.6.tgz#28d2058b0f8553a59c95a712ca77394b299eeb28" - integrity sha512-lDksBmA5/VkfVGs+GqF8DSM3HbJLmF5l57BqETj1CAceOVZTZI3FZQEegVNTDDnJ9bl8I0TFdc6fv1QjycQprA== + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== dependencies: - "@jest/types" "^27.0.6" + "@jest/types" "^27.5.1" "@jest/environment@^27.0.6": version "27.0.6" @@ -3047,6 +3253,17 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@jimp/bmp@^0.16.1": version "0.16.1" resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.1.tgz#6e2da655b2ba22e721df0795423f34e92ef13768" @@ -3337,6 +3554,24 @@ "@babel/runtime" "^7.7.2" regenerator-runtime "^0.13.3" +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -3412,6 +3647,11 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@react-native-clipboard/clipboard@^1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@react-native-clipboard/clipboard/-/clipboard-1.8.5.tgz#b11276e38ef288b0fd70c0a38506e2deecc5fa5a" + integrity sha512-o2RPDwP9JMnLece1Qq6a3Fsz/VxfA9auLckkGOor7WcI82DWaWiJ6Uiyu7H1xpaUyqWc+ypVKRX680GYS36HjA== + "@react-native-community/art@^1.1.2", "@react-native-community/art@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@react-native-community/art/-/art-1.2.0.tgz#386d95393f6042d9006f9d4bc6063fb898794460" @@ -3475,9 +3715,9 @@ xmldoc "^1.1.2" "@react-native-community/cli-platform-ios@^5.0.1-alpha.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.1.tgz#efa9c9b3bba0978d0a26d6442eefeffb5006a196" - integrity sha512-Nr/edBEYJfElgBNvjDevs2BuDicsvQaM8nYkTGgp33pyuCZRBxsYxQqfsNmnLalTzcYaebjWj6AnjUSxzQBWqg== + version "5.0.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.2.tgz#62485534053c0dad28a67de188248de177f4b0fb" + integrity sha512-IAJ2B3j2BTsQUJZ4R6cVvnTbPq0Vza7+dOgP81ISz2BKRtQ0VqNFv+VOALH2jLaDzf4t7NFlskzIXFqWqy2BLg== dependencies: "@react-native-community/cli-tools" "^5.0.1" chalk "^3.0.0" @@ -3773,10 +4013,10 @@ resolved "https://registry.yarnpkg.com/@rocket.chat/ui-kit/-/ui-kit-0.13.0.tgz#0b4d43584f931d5e8af22a29a4c741d5f7314bb8" integrity sha512-xY8xc98KGshyOJM2GCLnYE9TTevViO7bVeY1HVRB2anDutgHRFgt6qFW1eiaB8s+6J+5I6VTE3k0jzQeaRsAeg== -"@sideway/address@^4.1.0": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" - integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -4937,7 +5177,15 @@ absolute-path@^0.0.0: resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= -accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.7, accepts@~1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -5218,9 +5466,9 @@ app-root-dir@^1.0.2: integrity sha1-OBh+wt6nV3//Az/8sSFyaS/24Rg= appdirsjs@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.5.tgz#c9888c8a0a908014533d5176ec56f1d5a8fd3700" - integrity sha512-UyaAyzj+7XLoKhbXJi4zoAw8IDXCiLNCKfQEiuCsCCTkDmiG1vpCliQn/MoUvO3DZqCN1i6gOahokcFtNSIrVA== + version "1.2.6" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.6.tgz#fccf9ee543315492867cacfcfd4a2b32257d30ac" + integrity sha512-D8wJNkqMCeQs3kLasatELsddox/Xqkhp+J07iXGyL54fVN7oc+nmNfYzGuCs1IEP6uBw+TfpuO3JKwc+lECy4w== aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" @@ -5973,6 +6221,11 @@ batch-processor@1.0.0: resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= +big-integer@1.6.x: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + big-integer@^1.6.44, big-integer@^1.6.9: version "1.6.48" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" @@ -6087,6 +6340,13 @@ bplist-creator@0.0.8: dependencies: stream-buffers "~2.2.0" +bplist-creator@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" + integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== + dependencies: + stream-buffers "2.2.x" + bplist-parser@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" @@ -6094,6 +6354,13 @@ bplist-parser@0.2.0: dependencies: big-integer "^1.6.44" +bplist-parser@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.0.tgz#ba50666370f61bbf94881636cd9f7d23c5286090" + integrity sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA== + dependencies: + big-integer "1.6.x" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -6249,6 +6516,17 @@ browserslist@^4.17.3: node-releases "^1.1.77" picocolors "^0.2.1" +browserslist@^4.17.5: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -6496,6 +6774,11 @@ caniuse-lite@^1.0.30001264: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== +caniuse-lite@^1.0.30001317: + version "1.0.30001322" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" + integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -6717,9 +7000,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.0.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table3@0.5.1: version "0.5.1" @@ -6874,7 +7157,12 @@ color@^3.1.0, color@^3.1.3: color-convert "^1.9.1" color-string "^1.5.4" -colorette@^1.0.7, colorette@^1.2.1, colorette@^1.2.2: +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colorette@^1.2.1, colorette@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== @@ -7434,9 +7722,9 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" dayjs@^1.8.15: - version "1.10.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63" - integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805" + integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -7605,6 +7893,11 @@ denodeify@^1.2.1: resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" integrity sha1-OjYof1A05pnnV3kBBSwubJQlFjE= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -7623,6 +7916,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -7915,6 +8213,11 @@ electron-to-chromium@^1.3.857: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.862.tgz#c1c5d4382449e2c9b0e67fe1652f4fc451d6d8c0" integrity sha512-o+FMbCD+hAUJ9S8bfz/FaqA0gE8OpCCm58KhhGogOEqiA1BLFSoVYLi+tW+S/ZavnqBn++n0XZm7HQiBVPs8Jg== +electron-to-chromium@^1.4.84: + version "1.4.101" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.101.tgz#71f3a10065146d7445ba5d4c06ba2cc063b0817a" + integrity sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw== + element-resize-detector@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.2.2.tgz#bf7c3ff915957e4e62e86241ed2f9c86b078892b" @@ -9070,9 +9373,9 @@ flatted@^3.1.0: integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== flow-parser@0.*: - version "0.156.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.156.0.tgz#5b463ea4923fe8ca34e38eb367497060d9707d0b" - integrity sha512-OCE3oIixhOttaV4ahIGtxf9XfaDdxujiTnXuHu+0dvDVVDiSDJlQpgCWdDKqP0OHfFnxQKrjMamArDAXtrBtZw== + version "0.174.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.174.1.tgz#bb81e17fe45a1e64d9752090e819a6744a539fa0" + integrity sha512-nDMOvlFR+4doLpB3OJpseHZ7uEr3ENptlF6qMas/kzQmNcLzMwfQeFX0gGJ/+em7UdldB/nGsk55tDTOvjbCuw== flow-parser@^0.121.0: version "0.121.0" @@ -9266,12 +9569,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -9579,7 +9877,12 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graceful-fs@^4.1.3, graceful-fs@^4.2.2: +graceful-fs@^4.1.3: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +graceful-fs@^4.2.2: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -9840,6 +10143,17 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -11327,13 +11641,13 @@ jimp@^0.16.1: regenerator-runtime "^0.13.3" joi@^17.2.1: - version "17.4.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.1.tgz#15d2f23c8cbe4d1baded2dd190c58f8dbe11cca0" - integrity sha512-gDPOwQ5sr+BUxXuPDGrC1pSNcVR/yGGcTI0aCnjYxZEa3za60K/iCQ+OFIkEHWZGVCUcUlXlFKvMmrlmxrG6UQ== + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -11872,7 +12186,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.20, lodash@^4.17.5, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.5, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -11882,7 +12196,7 @@ lodash@^4.0.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.13, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -12432,10 +12746,10 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.37.0: version "1.37.0" @@ -12449,12 +12763,12 @@ mime-types@^2.1.12, mime-types@~2.1.24: dependencies: mime-db "1.44.0" -mime-types@^2.1.27: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== +mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.48.0" + mime-db "1.52.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" @@ -12462,9 +12776,9 @@ mime@1.6.0, mime@^1.3.4: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^2.4.4: version "2.4.5" @@ -12726,6 +13040,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" @@ -12756,7 +13075,7 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch@2.6.1, node-fetch@^2.2.0, node-fetch@^2.6.1: +node-fetch@2.6.1, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -12769,6 +13088,13 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.2.0: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" @@ -12828,10 +13154,15 @@ node-releases@^1.1.77: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== + node-stream-zip@^1.9.1: - version "1.13.6" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.13.6.tgz#8abdfdbc4bc96ee11e9438d94cc8c93c7df28959" - integrity sha512-c7tRSVkLNOHvasWgmZ2d86cDgTWEygnkuuHNOY9c0mR3yLZtQTTrGvMaJ/fPs6+LOJn3240y30l5sjLaXFtcvw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== node-version@^1.0.0: version "1.2.0" @@ -13085,6 +13416,13 @@ omggif@^1.0.10, omggif@^1.0.9: resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -13559,6 +13897,11 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -13596,13 +13939,18 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" +pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + pixelmatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" @@ -13654,6 +14002,14 @@ plist@^3.0.1: xmlbuilder "^9.0.7" xmldom "^0.5.0" +plist@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" + integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^9.0.7" + pngjs@^3.0.0, pngjs@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" @@ -13966,9 +14322,9 @@ prompts@^2.0.1: sisteransi "^1.0.4" prompts@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" - integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" @@ -14228,9 +14584,9 @@ react-dev-utils@^9.0.0: text-table "0.2.0" react-devtools-core@^4.6.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.14.0.tgz#4b9dc50937ed4cf4c04fa293430cac62d829fa8b" - integrity sha512-cE7tkSUkGCDxTA79pntDGJCBgzNN/XxA3kgPdXujdfSfEfVhzrItQIEsN0kCN/hJJACDvH2Q8p5+tJb/K4B3qA== + version "4.24.3" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.3.tgz#371fef3f5c639db0dc59eeef334dd5e10ac61661" + integrity sha512-+htKZxLxDN14jhRG3+IXRiJqNSGHUiPYrMtv9e7qlZxcbKeJjVs+C/hd8kZF5rydp3faBwFN6ZpTaZnLA3/ZGA== dependencies: shell-quote "^1.6.1" ws "^7" @@ -14669,8 +15025,8 @@ react-native-webview@10.3.2: invariant "2.2.4" react-native@RocketChat/react-native#0.64.2: - version "0.64.2" - resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/eefc7ead3d343d5514118d79ff5e0ac7fc1761ec" + version "0.64.2-rocket" + resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/4ad9cbc7e7aed429ba63cb7a78962d24d47f8e28" dependencies: "@jest/create-cache-key-function" "^27.0.2" "@react-native-community/cli" "^5.0.1-alpha.1" @@ -14953,9 +15309,9 @@ realpath-native@^1.1.0: util.promisify "^1.0.0" recast@^0.20.3: - version "0.20.4" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" - integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== + version "0.20.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" @@ -15527,6 +15883,25 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-error@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" @@ -15569,7 +15944,7 @@ serve-favicon@^2.5.0: parseurl "~1.3.2" safe-buffer "5.1.1" -serve-static@1.14.1, serve-static@^1.13.1: +serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== @@ -15579,6 +15954,16 @@ serve-static@1.14.1, serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -15604,6 +15989,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -15672,12 +16062,17 @@ shell-quote@1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -shell-quote@1.7.2, shell-quote@^1.6.1, shell-quote@^1.7.2: +shell-quote@1.7.2, shell-quote@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.8.3, shelljs@^0.8.4: +shell-quote@^1.6.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +shelljs@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== @@ -15686,6 +16081,15 @@ shelljs@^0.8.3, shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" +shelljs@^0.8.4: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + side-channel@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" @@ -15708,7 +16112,16 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -simple-plist@^1.0.0, simple-plist@^1.1.0: +simple-plist@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.0.tgz#f451997663eafd8ea6bad353a01caf49ef186d43" + integrity sha512-uYWpeGFtZtVt2NhG4AHgpwx323zxD85x42heMJBan1qAiqqozIlaGrwrEt6kRjXWRWIXsuV1VLCvVmZan2B5dg== + dependencies: + bplist-creator "0.1.0" + bplist-parser "0.3.0" + plist "^3.0.4" + +simple-plist@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.1.tgz#54367ca28bc5996a982c325c1c4a4c1a05f4047c" integrity sha512-pKMCVKvZbZTsqYR6RKgLfBHkh2cV89GXcA/0CVPje3sOiNOnXA8+rp/ciAMZ7JRaUdLzlEM6JFfUn+fS6Nt3hg== @@ -15861,7 +16274,15 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.16: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -16023,6 +16444,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -16041,7 +16467,7 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-buffers@~2.2.0: +stream-buffers@2.2.x, stream-buffers@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= @@ -16717,6 +17143,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + topo@2.x.x: version "2.0.2" resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" @@ -16740,6 +17171,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" @@ -16787,7 +17223,12 @@ tslib@^1.8.1, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.0.3: +tslib@^2.0.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tslib@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== @@ -17352,6 +17793,11 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -17471,6 +17917,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.6.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.6.0.tgz#27c0205a4902084b872aecb97cf0f2a7a3011f4c" @@ -17643,9 +18097,9 @@ ws@^6.1.4: async-limiter "~1.0.0" ws@^7: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@^7.0.0: version "7.3.1"