// Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import * as React from 'react'; import { text } from '@storybook/addon-knobs'; import { setupI18n } from '../../util/setupI18n'; import enMessages from '../../../_locales/en/messages.json'; import type { Props } from './MessageBodyHighlight'; import { MessageBodyHighlight } from './MessageBodyHighlight'; const i18n = setupI18n('en', enMessages); export default { title: 'Components/MessageBodyHighlight', }; const createProps = (overrideProps: Partial = {}): Props => ({ bodyRanges: overrideProps.bodyRanges || [], i18n, text: text('text', overrideProps.text || ''), }); export function Basic(): JSX.Element { const props = createProps({ text: 'This is before <>Inside<> This is after.', }); return ; } export function NoReplacement(): JSX.Element { const props = createProps({ text: 'All\nplain\ntext šŸ”„ http://somewhere.com', }); return ; } export function TwoReplacements(): JSX.Element { const props = createProps({ text: 'Begin <>Inside #1<> This is between the two <>Inside #2<> End.', }); return ; } export function TwoReplacementsWithAnMention(): JSX.Element { const props = createProps({ bodyRanges: [ { length: 1, mentionUuid: '0ca40892-7b1a-11eb-9439-0242ac130002', replacementText: 'Jin Sakai', conversationID: 'x', start: 33, }, ], text: 'Begin <>Inside #1<> \uFFFC This is between the two <>Inside #2<> End.', }); return ; } TwoReplacementsWithAnMention.story = { name: 'Two Replacements with an @mention', }; export function EmojiNewlinesUrLs(): JSX.Element { const props = createProps({ text: '\nhttp://somewhere.com\n\nšŸ”„ Before -- <>A šŸ”„ inside<> -- After šŸ”„', }); return ; } EmojiNewlinesUrLs.story = { name: 'Emoji + Newlines + URLs', }; export function NoJumbomoji(): JSX.Element { const props = createProps({ text: 'šŸ”„', }); return ; }