import ImagePreview from '@lume/shared/preview/image'; import VideoPreview from '@lume/shared/preview/video'; import YoutubePreview from '@lume/shared/preview/youtube'; import reactStringReplace from 'react-string-replace'; export const messageParser = (noteContent: any) => { let parsedContent = noteContent.trim(); // handle urls parsedContent = reactStringReplace(parsedContent, /(https?:\/\/\S+)/g, (match, i) => { if (match.match(/\.(jpg|jpeg|gif|png|webp)$/i)) { // image url return ; } else if (match.match(/(http:|https:)?(\/\/)?(www\.)?(youtube.com|youtu.be)\/(watch|embed)?(\?v=|\/)?(\S+)?/)) { // youtube return ; } else if (match.match(/\.(mp4|webm)$/i)) { // video return ; } else { return ( {match} ); } }); // handle #-hashtags parsedContent = reactStringReplace(parsedContent, /#(\w+)/g, (match, i) => ( #{match} )); return parsedContent; };