interface BuildVditorOptionsInput { value: string isMobile: boolean onInput: (value: string) => void uploadHandler: (files: File[]) => Promise } const DESKTOP_TOOLBAR: ReadonlyArray = [ 'emoji', 'headings', 'bold', 'italic', 'strike', '|', 'line', 'list', 'ordered-list', 'check', 'quote', '|', 'code', 'inline-code', 'insert-before', 'insert-after', '|', 'upload', 'link', 'table', '|', 'undo', 'redo', '|', 'fullscreen', 'edit-mode', ] const MOBILE_TOOLBAR: ReadonlyArray = [ 'bold', 'italic', 'headings', '|', 'list', 'ordered-list', '|', 'link', 'upload', 'code', '|', 'preview', ] export function buildPostBodyMarkdownEditorVditorOptions(input: BuildVditorOptionsInput): Record { return { value: input.value, cache: { enable: false }, mode: input.isMobile ? 'ir' : 'sv', toolbar: input.isMobile ? MOBILE_TOOLBAR : DESKTOP_TOOLBAR, upload: { accept: 'image/*', handler: input.uploadHandler, }, input(value: string) { input.onInput(value) }, } } export const postBodyMarkdownEditorToolbarPresets = { desktop: DESKTOP_TOOLBAR, mobile: MOBILE_TOOLBAR, }