useContentRenderer Composable
File: src/composables/useContentRenderer.ts
Overview
Exports
- ContentRenderOptions - interface export
- ContentRenderResult - interface export
- useContentRenderer - function export
Functions
findEmojiByName(name: string)
No description available.
Parameters:
name: string
Returns: Unknown
const findEmojiByName = (name: string) =>normalizeContent(rawContent: any)
No description available.
Parameters:
rawContent: any
Returns: MessagePart[]
const normalizeContent = (rawContent: any): MessagePart[] =>formatMentionDisplay(mention: MessagePart)
No description available.
Parameters:
mention: MessagePart
Returns: string
const formatMentionDisplay = (mention: MessagePart): string =>isImageUrl(url: string)
No description available.
Parameters:
url: string
Returns: boolean
const isImageUrl = (url: string): boolean =>isVideoUrl(url: string)
No description available.
Parameters:
url: string
Returns: boolean
const isVideoUrl = (url: string): boolean =>isAudioUrl(url: string)
No description available.
Parameters:
url: string
Returns: boolean
const isAudioUrl = (url: string): boolean =>truncateContent(parts: MessagePart[], maxLength: number)
No description available.
Parameters:
parts: MessagePart[]maxLength: number
Returns: MessagePart[]
const truncateContent = (parts: MessagePart[], maxLength: number): MessagePart[] =>handleMentionClick(userId: string, event: Event)
No description available.
Parameters:
userId: stringevent: Event
Returns: Unknown
const handleMentionClick = (userId: string, event: Event) =>handleHashtagClick(tag: string)
No description available.
Parameters:
tag: string
Returns: Unknown
const handleHashtagClick = (tag: string) =>handleLinkClick(url: string, event: Event)
No description available.
Parameters:
url: stringevent: Event
Returns: Unknown
const handleLinkClick = (url: string, event: Event) =>formatFileSize(bytes: number)
No description available.
Parameters:
bytes: number
Returns: string
const formatFileSize = (bytes: number): string =>Interfaces
ContentRenderOptions
No description available.
interface ContentRenderOptions {
mode?: 'display' | 'preview' | 'edit';
showImages?: boolean;
showVideos?: boolean;
maxPreviewLength?: number;
singleLine?: boolean;
enableMarkdown?: boolean;
enableClickHandlers?: boolean;
}ContentRenderResult
No description available.
interface ContentRenderResult {
// For Vue template rendering
renderableContent: Ref<MessagePart[]>;
// For HTML string rendering (like MonyContent)
formattedHTML: Ref<string>;
// Helper functions
isSingleEmoji: Ref<boolean>;
findEmojiByName: (name: string) => any;
formatMentionDisplay: (mention: MessagePart) => string;
isImageUrl: (url: string) => boolean;
isVideoUrl: (url: string) => boolean;
isAudioUrl: (url: string) => boolean;
// Event handlers
handleMentionClick: (userId: string, event
// ...
}Source Code Insights
File Size: 17728 characters Lines of Code: 482 Imports: 7
Usage Example
import { ContentRenderOptions, ContentRenderResult, useContentRenderer } from '@/composables/useContentRenderer'
// Example usage
findEmojiByName()This documentation was automatically generated from the source code.
