YJS项目中的Delta格式嵌套嵌入支持解析
2025-05-11 21:57:07作者:姚月梅Lane
YJS作为一款优秀的协同编辑框架,其核心能力之一是对富文本协同编辑的支持。在YJS的文本类型YText中,Delta格式作为底层操作表示形式发挥着重要作用。近期社区提出的Delta格式嵌套嵌入支持需求,反映了复杂富文本场景下的新挑战。
Delta格式的演进与嵌入支持
Delta格式最初由Quill编辑器定义,用于描述富文本内容的变化操作。传统Delta格式支持两种基本操作:
- 文本插入操作
- 属性格式化操作
随着富文本编辑复杂度的提升,Delta格式在5.0版本引入了registerEmbed()方法,实现了对嵌套Delta结构的支持。这种能力特别适用于表格等复杂结构,允许将整个Delta作为嵌入对象插入到父Delta中。
YJS的现有嵌入机制
YJS框架本身已经提供了基础的嵌入支持:
- 通过
ytext.insertEmbed(pos, embedObject)方法可直接插入任意JavaScript对象 - 现有的Delta格式转换器可以处理简单嵌入对象
然而,这种机制与新版Delta的嵌套Delta嵌入存在本质区别。简单嵌入对象被视为原子单元,而嵌套Delta嵌入则需要保持内部结构的可操作性。
技术实现挑战分析
实现完整的嵌套Delta嵌入支持需要考虑以下技术要点:
- 操作转换兼容性:需要确保嵌套Delta内部的OT操作能与外层操作正确转换
- 冲突解决策略:当内外层操作发生冲突时,需要明确定义优先级和解决规则
- 性能优化:深层嵌套结构可能带来性能挑战,需要设计高效的数据结构
- 序列化格式:需要扩展现有的序列化协议以支持嵌套Delta结构
应用场景展望
完整支持嵌套Delta嵌入后,YJS将能够更好地支持以下场景:
- 复杂表格编辑(单元格内包含完整富文本)
- 嵌套文档结构(如文档中的文档片段)
- 模块化富文本组件(可独立编辑的子组件)
实现建议路径
对于希望实现此功能的开发者,建议采用分阶段实现策略:
- 首先扩展YJS的Delta转换器,识别嵌套Delta结构
- 实现基础的操作转换逻辑,处理简单的嵌套场景
- 逐步完善冲突解决机制
- 最后优化性能并处理边界情况
这种渐进式实现方式可以降低开发风险,同时逐步验证设计假设。
结语
Delta格式的嵌套嵌入支持代表了富文本协同编辑领域的前沿需求。YJS作为领先的协同框架,对此功能的完整支持将进一步提升其在复杂场景下的适用性。开发者社区可以密切关注此功能的进展,以便在稳定后将其应用于实际项目中。
登录后查看全文
热门项目推荐
相关项目推荐
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00- DDeepSeek-V3.2-ExpDeepSeek-V3.2-Exp是DeepSeek推出的实验性模型,基于V3.1-Terminus架构,创新引入DeepSeek Sparse Attention稀疏注意力机制,在保持模型输出质量的同时,大幅提升长文本场景下的训练与推理效率。该模型在MMLU-Pro、GPQA-Diamond等多领域公开基准测试中表现与V3.1-Terminus相当,支持HuggingFace、SGLang、vLLM等多种本地运行方式,开源内核设计便于研究,采用MIT许可证。【此简介由AI生成】Python00
openPangu-Ultra-MoE-718B-V1.1昇腾原生的开源盘古 Ultra-MoE-718B-V1.1 语言模型Python00
HunyuanWorld-Mirror混元3D世界重建模型,支持多模态先验注入和多任务统一输出Python00
AI内容魔方AI内容专区,汇集全球AI开源项目,集结模块、可组合的内容,致力于分享、交流。03
Spark-Scilit-X1-13BFLYTEK Spark Scilit-X1-13B is based on the latest generation of iFLYTEK Foundation Model, and has been trained on multiple core tasks derived from scientific literature. As a large language model tailored for academic research scenarios, it has shown excellent performance in Paper Assisted Reading, Academic Translation, English Polishing, and Review Generation, aiming to provide efficient and accurate intelligent assistance for researchers, faculty members, and students.Python00
GOT-OCR-2.0-hf阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00- HHowToCook程序员在家做饭方法指南。Programmer's guide about how to cook at home (Chinese only).Dockerfile013
- PpathwayPathway is an open framework for high-throughput and low-latency real-time data processing.Python00
项目优选
收起
deepin linux kernel
C
23
6
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
237
2.36 K
仓颉编程语言运行时与标准库。
Cangjie
122
95
暂无简介
Dart
538
117
仓颉编译器源码及 cjdb 调试工具。
C++
114
83
React Native鸿蒙化仓库
JavaScript
216
291
Ascend Extension for PyTorch
Python
77
109
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
995
588
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
568
113
LLVM 项目是一个模块化、可复用的编译器及工具链技术的集合。此fork用于添加仓颉编译器的功能,并支持仓颉编译器项目。
C++
32
25