Project Icon

verbum

灵活易用的React富文本编辑器

Verbum是一款基于Lexical框架的React富文本编辑器。它具有高度的灵活性,提供自定义字体、颜色和多媒体插入等丰富功能。通过插件扩展,Verbum可实现提及、表情和代码高亮等特性。该编辑器支持国际化,并具备自动保存功能,为开发者提供了功能强大且易于使用的文本编辑工具。

Verbum

Verbum - 用于 React 的灵活文本编辑器

Verbum 是一个基于 lexical-playgroundlexical 框架的全面灵活的富文本编辑器。

⚠️ 由于 Lexical 框架目前处于早期开发阶段,该组件库也可能会经常发生变化

安装

npm install verbum --save

演示

演示 在线演示即将推出...

使用

import { FC } from 'react';
import {
  EditorComposer,
  Editor,
  ToolbarPlugin,
  AlignDropdown,
  BackgroundColorPicker,
  BoldButton,
  CodeFormatButton,
  FloatingLinkEditor,
  FontFamilyDropdown,
  FontSizeDropdown,
  InsertDropdown,
  InsertLinkButton,
  ItalicButton,
  TextColorPicker,
  TextFormatDropdown,
  UnderlineButton,
  Divider,
} from 'verbum';

const NoteViewer: FC = () => {
  return (
    <EditorComposer>
      <Editor hashtagsEnabled={true}>
        <ToolbarPlugin defaultFontSize="20px">
          <FontFamilyDropdown />
          <FontSizeDropdown />
          <Divider />
          <BoldButton />
          <ItalicButton />
          <UnderlineButton />
          <CodeFormatButton />
          <InsertLinkButton />
          <TextColorPicker />
          <BackgroundColorPicker />
          <TextFormatDropdown />
          <Divider />
          <InsertDropdown enablePoll={true} />
          <Divider />
          <AlignDropdown />
        </ToolbarPlugin>
      </Editor>
    </EditorComposer>
  );
};

export default NoteViewer;

API

<EditorComposer />

属性类型是否必需描述
childrenReactNode必需嵌套的子组件,即编辑器本身
initialEditorStateInitialEditorStateType可选编辑器的初始状态

<Editor />

属性类型是否必需描述
childrenReactNode可选嵌套的子组件,如 ToolbarPlugin
hashtagsEnabledboolean可选启用自动标签高亮,默认为 false
autoLinkEnabledboolean可选启用自动链接高亮,默认为 false
emojisEnabledboolean可选将表情符号组合替换为对应的符号,默认为 false
emojiPickerEnabledboolean可选使用 : 搜索和粘贴表情符号,默认为 false
actionsEnabledboolean可选启用操作工具栏,默认为 false
placeholderstring可选编辑器首次加载时的默认内容
listMaxIndentnumber可选列表元素的最大缩进能力,默认为 7
isEditableboolean可选为编辑器启用只读模式,默认为 false
initialEditorStatestring可选用于初始化编辑器初始内容的 JSON 字符串
onChange(editorState: string, editorInstance?: LexicalEditor) => void可选访问当前编辑器状态和活动编辑器实例
locale'en', 'fr', 'ptBr', 'ru', null;可选启用所选语言的本地化,默认为 en。可用语言有 enfrptBrru

自动浏览器语言检测支持

如果未提供 locale,Verbum 默认支持自动浏览器语言检测。如果浏览器语言设置为 fr,编辑器将自动本地化为法语。如果浏览器语言设置为 en,编辑器将自动本地化为英语。如果浏览器语言设置为任何其他语言,编辑器将自动本地化为英语。


插件

<ToolbarPlugin />

属性类型是否必需描述
childrenReact.ReactElement[]可选嵌套的子组件,如 InsertDropdown
defaultFontSizestring可选编辑器首次加载时选择的默认字体大小,默认值为 15px
defaultFontColorstring可选编辑器首次加载时选择的默认字体颜色,默认值为 #000
defaultBgColorstring可选编辑器首次加载时选择的默认文本背景颜色,默认值为 #fff
defaultFontFamilystring可选编辑器首次加载时选择的默认字体系列,默认值为 Arial

工具栏组件

<FontFamilyDropdown />

添加您自己的字体系列。

属性类型是否必需描述
fontOptionsFontOptions = [string, string][]可选字体列表

<FontSizeDropdown />

添加您自己的字体大小。

属性类型是否必需描述
fontSizeOptionsFontOptions = [string, string][]可选字体大小列表

<InsertDropdown />

属性类型必选性描述
enableTableboolean可选启用插入表格功能
enableYoutubeboolean可选启用插入YouTube视频功能
enableTwitterboolean可选启用插入推文功能
enablePollboolean可选启用插入投票功能
enableImage{ enable: boolean; maxWidth: number };可选启用插入图片功能,设置最大宽度
enableEquationsboolean可选启用插入方程式功能
enableExcalidrawboolean可选启用插入图表功能
enableHorizontalRuleboolean可选启用插入水平分割线功能以进行布局
enableStickyNoteboolean可选启用插入便签功能以进行布局

<MentionsPlugin />

属性类型必选性描述
searchDataSearchData<A>必需使用输入字符串搜索数据
getTypeaheadValuesGetTypeaheadValues<A>必需搜索数据转换

GetTypeaheadValues<A>

属性类型必选性描述
urlstring必需URL地址
valuestring必需提及菜单选项值
pictureJSX.Element必需提及菜单选项图片
popoverCardPopoverCard<A>可选当鼠标悬停在用户名上时显示弹出卡片

PopoverCard<A>

属性类型必选性描述
card(data: A) => JSX.Element必需弹出卡片,取决于 <A> 类型
offsetOffsetCard必需卡片偏移量(左,上)

插件支持

插件名称工作状态描述来源
ActionsPlugin:white_check_mark:右下角的动作菜单Editor.tsx
AutoLinkPlugin:white_check_mark:自动高亮链接Editor.tsx
CharacterStylesPopupPlugin:white_check_mark:选中文本的模态样式编辑器独立
ClickableLinkPlugin:white_check_mark:允许在新标签页中打开链接独立
CodeHighlightPlugin:white_check_mark:支持不同语言的代码块独立
CommentPlugin:x:CharacterStylesPopupPlugin
EmojisPlugin:white_check_mark:少量表情符号Editor.tsx
EmojiPickerPlugin:white_check_mark:表情选择器(emoji-list.ts)Editor.tsx
EquationsPlugin:scissors:Katex,太重(已剪除)InsertDropdown.tsx
ExcalidrawPlugin:scissors:Excalidraw(已剪除)InsertDropdown.tsx
HorizontalRulePlugin:white_check_mark:水平分隔线InsertDropdown.tsx
ImagesPlugin:x:仅插入文件(不支持URL)InsertDropdown.tsx
KeywordsPlugin:x:独立
ListMaxIndentLevelPlugin:white_check_mark:最大缩进级别(项目符号、数字)独立
MarkdownShortcutPlugin:white_check_mark:转换为Markdown格式ActionsPlugin
MentionsPlugin:white_check_mark:提及功能,以 @ 开始独立
PollPlugin:x:投票,需要测试多次投票InsertDropdown.tsx
SpeechToTextPlugin:white_check_mark:语音识别转文字ActionsPlugin
StickyPlugin:x:黄色便签,文本样式存在bugInsertDropdown.tsx
TabFocusPlugin
TableActionMenuPlugin:white_check_mark:创建表格InsertDropdown.tsx
TestRecorderPlugin
TreeViewPlugin
TwitterPlugin:white_check_mark:插入推文InsertDropdown.tsx
TypingPerfPlugin
YouTubePlugin:white_check_mark:插入YouTube视频InsertDropdown.tsx

开发

开发时使用:

$ npm install(如果出错,请运行 `npm install --legacy-peer-deps`)
$ npm start

你也可以使用Storybook在本地进行测试:

$ npm run storybook

未来计划

  • 测试覆盖
  • 以JSON格式编程访问编辑器输入
  • 本地化
  • 具有不同选项的现成模板(MUI、Bootstrap等)
  • 深色/浅色模式
  • 自定义样式灵活性
  • 将工具栏全部拆解,使其能作为嵌套组件使用,提高灵活性
  • 使能够通过编程方式调整编辑器设置,如只读模式等

许可证

基于MIT许可证授权。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号