Skip to content

imRichClipboardPlain

带 WORD JOINER(\u2060)元数据的 plain 剪贴板格式,与 wire HTML 互转,粘贴回编辑器可还原 @ / 图 / 文件 chip。

函数签名

typescript
const IM_CLIPBOARD_PLAIN_SEP = '\u2060'

function formatImMentionClipboardPlainToken(userId: string, label: string): string
function formatImImageClipboardPlainToken(
  url: string,
  alt?: string,
  width?: number,
  height?: number,
): string
function formatImFileClipboardPlainToken(path: string, label: string): string
function hasImRichClipboardPlainMarkers(text: string): boolean
function parseImRichClipboardPlainText(text: string): ImRichContentSegment[]
function materializeImRichHtmlToRestorablePlainText(
  content: string,
  options?: MaterializeImRichHtmlOptions,
): string

ImRichContentSegmentMaterializeImRichHtmlOptionsimRichContentHtml

参数

参数名类型必填说明
userId / labelstring@ chip plain token 的用户 id 与展示名
urlstring图片 HTTPS 或 data URL
altstring图片 alt,默认 图片
width / heightnumber图片尺寸,写入 plain 元数据
pathstring文件路径
textstring待检测或解析的 plain 文本
contentstringwire HTML 正文
optionsMaterializeImRichHtmlOptions@ 展示名解析回调(同 HTML 模块)

返回值

函数类型说明
formatIm*ClipboardPlainTokenstring\u2060 分隔的可还原 plain 片段
hasImRichClipboardPlainMarkersboolean是否含 @ / 图 / 文件 plain 元数据
parseImRichClipboardPlainTextImRichContentSegment[]解析为结构化片段
materializeImRichHtmlToRestorablePlainTextstringHTML → 可粘贴回编辑器的 plain

Plain token 格式

类型格式示例
@ 提及@昵称\u2060userId\u2060
图片[图片]\u2060url\u2060alt\u2060(可选 width\u2060height\u2060
文件[文件] 文件名\u2060path\u2060

工作原理

  1. 写出formatIm*ClipboardPlainToken 在可见文案后附加 \u2060 分隔的元数据,跨应用重启仍常保留。
  2. 检测hasImRichClipboardPlainMarkers 要求文本含分隔符且匹配 @ / 图 / 文件任一模式。
  3. 读入parseImRichClipboardPlainText 按正则提取 chip,其余为 text 片段。
  4. HTML 降级materializeImRichHtmlToRestorablePlainTextparseImRichContentHtml,再逐段转为 plain token(emoji 保留 glyph)。