import React from 'react'; import { StyleSheet, View } from 'react-native'; import { NavigationContainer } from '@react-navigation/native'; import NewMarkdownComponent from '.'; import { colors, themes } from '../../../lib/constants'; import { longText } from '../../../../.storybook/utils'; import { ThemeContext } from '../../../theme'; const theme = 'light'; export default { title: 'NewMarkdown', decorators: [ (Story: any) => ( ) ] }; const styles = StyleSheet.create({ container: { marginHorizontal: 15, backgroundColor: themes[theme].backgroundColor, marginVertical: 50 } }); const getCustomEmoji = (content: string) => { const customEmoji = { marioparty: { name: content, extension: 'gif' }, nyan_rocket: { name: content, extension: 'png' } }[content]; return customEmoji; }; const NewMarkdown = ({ ...props }) => ; const simpleTextMsg = [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'This is Rocket.Chat' } ] } ]; const longTextMsg = [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: longText } ] } ]; const lineBreakMsg = [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'a' }, { type: 'PLAIN_TEXT', value: 'b' }, { type: 'PLAIN_TEXT', value: 'c' }, { type: 'PLAIN_TEXT', value: '' }, { type: 'PLAIN_TEXT', value: 'd' }, { type: 'PLAIN_TEXT', value: '' }, { type: 'PLAIN_TEXT', value: '' }, { type: 'PLAIN_TEXT', value: 'e' } ] } ]; const sequentialEmptySpacesMsg = [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'a b c' } ] } ]; export const Text = () => ( ); const allMentionTokens = [ { type: 'PARAGRAPH', value: [ { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'rocket.cat' } } ] } ]; const multipleMentionTokens = [ { type: 'PARAGRAPH', value: [ { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'name' } }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'rocket.cat' } }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'not_a_user' } }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'here' } }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'all' } } ] } ]; const allMentions = [ { _id: 'rocket.cat', username: 'rocket.cat' } ]; const multipleMentions = [ { _id: 'name', username: 'name' }, { _id: 'rocket.cat', username: 'rocket.cat' }, { _id: 'here', username: 'here' }, { _id: 'all', username: 'all' } ]; export const Mentions = () => ( {}} style={[]} /> {}} style={[]} /> ); const channelTokens = [ { type: 'PARAGRAPH', value: [ { type: 'MENTION_CHANNEL', value: { type: 'PLAIN_TEXT', value: 'text_channel' } }, { type: 'PLAIN_TEXT', value: ' and ' }, { type: 'MENTION_CHANNEL', value: { type: 'PLAIN_TEXT', value: 'not_a_channel' } } ] } ]; const channelMention = [ { _id: 'text_channel', name: 'text_channel' } ]; export const Hashtag = () => ( {}} /> ); const bigEmojiTokens = [ { type: 'BIG_EMOJI', value: [ { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'green_heart' } }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'joy' } }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'grin' } } ] } ]; const emojiTokens = [ { type: 'PARAGRAPH', value: [ { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'rocket' } }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'facepalm' } }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'nyan_rocket' } }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'marioparty' } } ] } ]; export const Emoji = () => ( ); const blockQuoteTokens = [ { type: 'QUOTE', value: [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'Rocket.Chat to the moon' } ] } ] }, { type: 'QUOTE', value: [ { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: longText } ] } ] } ]; export const BlockQuote = () => ( ); const markdownLink = [ { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://rocket.chat' }, label: { type: 'PLAIN_TEXT', value: 'Markdown link' } } } ] } ]; const markdownLinkWithEmphasis = [ { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://rocket.chat/' }, label: [ { type: 'PLAIN_TEXT', value: 'Normal Link - ' }, { type: 'BOLD', value: [ { type: 'PLAIN_TEXT', value: 'Bold' } ] }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'STRIKE', value: [ { type: 'PLAIN_TEXT', value: 'strike' } ] }, { type: 'PLAIN_TEXT', value: ' and ' }, { type: 'ITALIC', value: [ { type: 'PLAIN_TEXT', value: 'Italic' } ] }, { type: 'PLAIN_TEXT', value: ' Styles' } ] } } ] } ]; export const Links = () => ( ); export const Headers = () => ( ); const inlineCodeToken = [ { type: 'PARAGRAPH', value: [ { type: 'INLINE_CODE', value: { type: 'PLAIN_TEXT', value: 'inline code' } } ] } ]; const multilineCodeToken = [ { type: 'CODE', language: 'none', value: [ { type: 'CODE_LINE', value: { type: 'PLAIN_TEXT', value: 'Multi \nLine \nCode' } } ] } ]; export const Code = () => ( ); const items = [ [ { type: 'PLAIN_TEXT', value: 'Plain text ' }, { type: 'EMOJI', value: { type: 'PLAIN_TEXT', value: 'bulb' } }, { type: 'ITALIC', value: [ { type: 'PLAIN_TEXT', value: ' italic ' } ] }, { type: 'BOLD', value: [ { type: 'PLAIN_TEXT', value: ' bold ' } ] }, { type: 'STRIKE', value: [ { type: 'PLAIN_TEXT', value: ' strike ' } ] }, { type: 'MENTION_CHANNEL', value: { type: 'PLAIN_TEXT', value: 'general' } }, { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://google.com' }, label: { type: 'PLAIN_TEXT', value: ' link ' } } }, { type: 'MENTION_USER', value: { type: 'PLAIN_TEXT', value: 'rocket.cat' } }, { type: 'INLINE_CODE', value: { type: 'PLAIN_TEXT', value: ' inline code' } } ], [ { type: 'PLAIN_TEXT', value: longText } ] ]; const listItems = [ { type: 'LIST_ITEM', value: items[0] }, { type: 'LIST_ITEM', value: items[1] } ]; const unorederedListToken = [ { type: 'UNORDERED_LIST', value: listItems } ]; const orderedListToken = [ { type: 'ORDERED_LIST', value: listItems } ]; const listMentions = [ { _id: 'rocket.cat', username: 'rocket.cat' } ]; const listChannels = [ { _id: 'general', name: 'general' } ]; const tasks = [ { type: 'TASKS', value: [ { type: 'TASK', status: true, value: items[0] }, { type: 'TASK', status: false, value: items[1] } ] } ]; export const Lists = () => ( ); const katex = [ { type: 'KATEX', value: ' f(x) = \\int_{-\\infty}^\\infty \\hat f(\\xi)\\,e^{2 \\pi i \\xi x} \\,d\\xi ' } ]; const inlineKatex = [ { type: 'PARAGRAPH', value: [ { type: 'INLINE_KATEX', value: 'This text includes math notations and should be wrapped correctly for $\\alpha$ and $\\beta$ within the view.' }, { type: 'INLINE_KATEX', value: "The following formula shouldn't be inline:$$x_{1,2} = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}$$" }, { type: 'INLINE_KATEX', value: 'However the following formula should be inline with the text: \\( a^2 + b^2 = c^2 \\)' } ] } ]; export const Katex = () => ( ); export const InlineKatex = () => ( ); const messageQuote = { /** # Hello head 1 [ ](https://google.com) */ headAndLink: [ { type: 'HEADING', level: 1, value: [{ type: 'PLAIN_TEXT', value: 'Hello head 1' }] }, { type: 'LINE_BREAK' }, { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://google.com' }, label: { type: 'PLAIN_TEXT', value: ' ' } } } ] } ], /** # Head 1 as the first line then line break and after paragraph bla bla bla bla bla bla bla bla bla bla bla bla [ ](https://google.com) */ headTextAndLink: [ { type: 'HEADING', level: 1, value: [{ type: 'PLAIN_TEXT', value: 'Head 1 as the first line then line break and after paragraph' }] }, { type: 'LINE_BREAK' }, { type: 'PARAGRAPH', value: [{ type: 'PLAIN_TEXT', value: 'bla bla bla bla bla bla ' }] }, { type: 'PARAGRAPH', value: [{ type: 'PLAIN_TEXT', value: 'bla bla bla bla bla bla ' }] }, { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://google.com' }, label: { type: 'PLAIN_TEXT', value: ' ' } } } ] } ], /** [ ](permalink from message)\n# Head 1 after a forced line break asdas asd asd asd */ headTextAndQuote: [ { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://open.rocket.chat/direct/subaru123?msg=QB42gWcaO6BgqtLTo' }, label: { type: 'PLAIN_TEXT', value: ' ' } } }, { type: 'PLAIN_TEXT', value: ' ' } ] }, { type: 'HEADING', level: 1, value: [{ type: 'PLAIN_TEXT', value: 'Head 1 after a forced line break' }] }, { type: 'LINE_BREAK' }, { type: 'PARAGRAPH', value: [{ type: 'PLAIN_TEXT', value: 'Description' }] } ], /** [ ](https://google.com) *There is a link before this bold separated by single space* */ linkAndBoldText: [ { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://google.com' }, label: { type: 'PLAIN_TEXT', value: ' ' } } }, { type: 'PLAIN_TEXT', value: ' ' }, { type: 'BOLD', value: [{ type: 'PLAIN_TEXT', value: 'There is a link before this bold separated by single space' }] } ] } ], simpleQuote: [ { type: 'PARAGRAPH', value: [ { type: 'LINK', value: { src: { type: 'PLAIN_TEXT', value: 'https://open.rocket.chat/group/quoteeee9798789?msg=ZZp6t2dCRX4TqExht' }, // format of label for servers greater or equal than 6.0 label: [ { type: 'PLAIN_TEXT', value: ' ' } ] } } ] }, { type: 'PARAGRAPH', value: [ { type: 'PLAIN_TEXT', value: 'Quoting a message wrote before' } ] } ] }; export const MessageQuote = () => ( );