import { codegenNativeCommands, codegenNativeComponent, type HostComponent, type ViewProps, } from 'react-native' import { type DirectEventHandler, type Double, type Int32, } from 'react-native/Libraries/Types/CodegenTypes' export interface MarkdownEditorViewNativeProps extends ViewProps { autoCapitalize?: string autoCorrect?: boolean autoFocus?: boolean contentInsetBottom?: Double contentInsetLeft?: Double contentInsetRight?: Double contentInsetTop?: Double cursorColor?: string customTags?: ReadonlyArray defaultValue?: string editable?: boolean mentionTriggers?: ReadonlyArray multiline?: boolean onChangeMarkdown?: DirectEventHandler> onChangeSelection?: DirectEventHandler< Readonly<{ start: Double; end: Double }> > onChangeState?: DirectEventHandler< Readonly<{ bold: boolean italic: boolean strikethrough: boolean code: boolean spoiler: boolean linkUrl: string heading: Int32 list: string }> > // Events onChangeText?: DirectEventHandler> onEditorBlur?: DirectEventHandler> onEditorFocus?: DirectEventHandler> onLinkDetected?: DirectEventHandler> onMentionChange?: DirectEventHandler< Readonly<{ trigger: string; query: string }> > onMentionEnd?: DirectEventHandler> onMentionStart?: DirectEventHandler> placeholder?: string placeholderTextColor?: string scrollEnabled?: boolean selectionColor?: string styles?: string // JSON-serialized MarkdownStyle } type MarkdownEditorViewComponent = HostComponent interface NativeCommands { blur: (viewRef: React.ElementRef) => void focus: (viewRef: React.ElementRef) => void insertCustomTag: ( viewRef: React.ElementRef, tag: string, propsJson: string, ) => void insertLink: ( viewRef: React.ElementRef, url: string, text: string, ) => void insertMention: ( viewRef: React.ElementRef, trigger: string, label: string, propsJson: string, ) => void insertSpoiler: ( viewRef: React.ElementRef, ) => void removeLink: (viewRef: React.ElementRef) => void setSelection: ( viewRef: React.ElementRef, start: Int32, end: Int32, ) => void setValue: ( viewRef: React.ElementRef, value: string, ) => void toggleBold: (viewRef: React.ElementRef) => void toggleCode: (viewRef: React.ElementRef) => void toggleHeading: ( viewRef: React.ElementRef, level: Int32, ) => void toggleItalic: (viewRef: React.ElementRef) => void toggleOrderedList: ( viewRef: React.ElementRef, ) => void toggleSpoiler: ( viewRef: React.ElementRef, ) => void toggleStrikethrough: ( viewRef: React.ElementRef, ) => void toggleUnorderedList: ( viewRef: React.ElementRef, ) => void } export const Commands = codegenNativeCommands({ supportedCommands: [ 'focus', 'blur', 'setValue', 'setSelection', 'toggleBold', 'toggleItalic', 'toggleStrikethrough', 'toggleCode', 'toggleHeading', 'toggleOrderedList', 'toggleSpoiler', 'toggleUnorderedList', 'insertLink', 'removeLink', 'insertMention', 'insertSpoiler', 'insertCustomTag', ], }) export default codegenNativeComponent( 'MarkdownEditorView', ) as MarkdownEditorViewComponent