# promirror-test **Repository Path**: cchenchen/promirror-test ## Basic Information - **Project Name**: promirror-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-03-28 - **Last Updated**: 2025-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README examplate这个目录是自己看源码时的一些理解 useprosemirror是具体实践的项目 项目启动 ```bash npm i npm start ``` 其他目录是自己单独拿出来看源码的,会比较乱 ## decorations 装饰器 widget 添加一个元素 inline 给文本加属性 node 给节点添加属性 ## step 操作相关 原子变化 Slice 切片 Step getMap():StepMap 获取新旧位置的映射 map(mapping: Mappable) 传入一个实现了 Mappable 接口的对象,根据这个对象,可以将当前的 Step 转为一个新的 Step 应用场景是什么?比如针对一个 doc 创建了一个 Step 之后,在它被应用之前,又有另外一个 Step 被先应用了,那直接应用当前的 Step 位置可能就会是错误的,所以需要重新获取到正确的 from,to,更新当前的 Step StepMap 实现了Mappable 接口,[开始位置,旧内容大小,新内容大小] Mappable 包含map和mapResult StepResult 表示应用step后的结果,成功还是失败 理解 step -> stepmap -> mappable ## mapping 多个原子变化 Mappable 包含map和mapResult map 返回一个变更后位置的数字 MapResult 返回更具体 mirror属性 其实就是在一个位置遇到了一个 stepMap,后续如果有它的反转操作,他们两个 step 都应用的话相当于没应用,所以要用 mirror 保存那些出现反转的 step,与正常的 step 做映射,方便查找 StepMap 实现了Mappable 接口 map 返回一个变更后位置的数字 MapResult 返回更具体 ivnert 反转 Mapping 多个stepmap 实现了Mappable 接口 map 按顺序调用每个stepmap,最后返回返回一个变更后位置的数字 MapResult 同上 ivnert 也是反转,逆序调用每个stepmap的ivnert 飞书参考地址 https://baas.feishu.cn/wiki/SLgewtdy1i7Jc6khixtcXPrGn8b npm i sax 流式解析 https://github.com/yjs/y-websocket/tree/master y-websocket客户端 https://github.com/yjs/y-websocket-server/blob/main/src/server.js y-websocket服务端或者称为y-websocket-server 之前客户端和服务端这两部分的代码是在同一个仓库的,导致你看示例,示例里面的代码还是旧的 https://github.com/yjs/y-monaco/blob/master/demo/monaco-demo.js 协同Monaco的示例代码 https://github.com/yjs/yjs-demos/blob/main/demo-server/demo-server.js 里面的代码已经过时,最新的直接看 y-websocket-server https://github.com/bytedance/syllepsis/blob/master/packages/plugin-basic/src/index.ts