4 Commits

Author SHA1 Message Date
Muse
492051cef0 feat(editor): 图片右键换精简专用菜单(docs/31)
用户要求去掉多余菜单。右键命中图片时只出:超链接…/调整图片
大小…/上传到 S3(未上传图才有)/剪切/复制/粘贴;加粗、斜体、
删除线、行内代码等文本格式项与全选、源码模式对图片没意义,
不再出现(文本右键菜单不变)。配套:右键图片先把它设为节点
选区,描边/手柄随之出现,剪切/复制/Delete 都作用在这张图上。
vitest 153+2、构建通过。
2026-11-15 13:49:19 +08:00
Muse
1c0dd00088 fix(editor): 图片超链接弹窗带出图片地址(docs/31 更正)
上一笔把图片「超链接」做成预填包裹链接,用户指出「没有带出来
这张图片的 url」——要的是图片自己的地址出现在弹窗里。改版
ImageLinkModal:主字段「图片地址」打开即带出该图 src(本地相对
路径或网络地址),可查看可改;包裹链接降为第二字段「点击时打开
的链接(可空)」。提交时一条事务同时处理 src 与 link 标记,
没改动则不发事务。新增弹窗预填与 src patch 测试。
2026-11-15 10:06:47 +08:00
Muse
0c09d94501 feat(editor): 图片可拖拽手柄缩放(docs/31 补)
上一笔只有弹窗输数值,用户追问为何不能拖边缘。NodeView 改包装
结构 span.img-wrap > img + 右下角手柄:图片选中时手柄出现,拖动
实时预览(只改 CSS),松手提交 width 属性(px,夹取 20..段落宽)。
两个坑:手柄的 mouse 事件须吞掉防 PM 按点击位置捣乱;setNodeMarkup
提交后 PM 会回读 DOM 选区把 NodeSelection 塌成文本光标,提交事务
须同带 setSelection 保住选区(updateImageAtElement 同修)。
无头 Chrome 真实拖拽实测:240→+80=320→−30=290,选区全程不丢;
vitest 148+2、构建通过。
2026-11-15 09:48:54 +08:00
Muse
5f4a80fa01 feat(editor): 图片可选中换行、可调大小、右键链接针对图片(docs/31)
用户反馈三件:图片选不中没法在后面打字、右键不能改大小、图片的
超链接是空的。无头 Chrome 真实点击复现根因:点击能形成节点选区
但无任何视觉提示;图片选中时按 Enter 走 splitBlock,新段落插到
图片前面且选区仍停在图片上,接着打字会把图片替换掉。
- Enter 修复:捕获阶段 keydown 只接管图片选区,在图片所在文本块后
  插空段落并移入光标(createParagraphNear 对行内节点无效,自己写);
  选中图片加主题色描边。
- 大小:图片节点加 width 属性,带尺寸时序列化为 <img … width>、
  否则标准语法;remark 插件把孤立 <img> 解析回图片节点(实体解码、
  块级包段落),往返逐字一致;右键「调整图片大小…」弹窗 px/% 可调。
- 链接:右键图片的「超链接…」改为图片模式,预填包裹链接、提交对
  图片节点挂/摘 link 标记([![alt](src)](href) 可往返)。
验证:vitest 148+2(新增 image-size/image-enter 共 12 例)、构建通过、
无头 Chrome 实测点击/Enter/打字全流程。
2026-11-15 09:41:24 +08:00