19 lines
926 B
TypeScript
19 lines
926 B
TypeScript
/**
|
|
* 把要打进会话输入框的正文收成一次「粘贴 + 回车」。
|
|
*
|
|
* 编辑器往终端写字时,会把所有换行改成回车字符。会话收到一大段字时,
|
|
* 不会把这些回车当成「发送」,而是整段放进输入框。框里只要还留着这种回车,
|
|
* 第一次按回车只是把它们清掉,消息不会发出去,人得再按一次。
|
|
*
|
|
* 粘贴括号里的回车会被还原成换行。括号结束之后紧跟的那个回车才是发送,
|
|
* 而且必须和正文在同一次写入里:分开写的话,长正文还没写完,回车可能插进正文中间。
|
|
* 正文里的转义字符要去掉,否则会把粘贴提前截断。
|
|
*/
|
|
const PASTE_START = '\u001B[200~'
|
|
const PASTE_END = '\u001B[201~'
|
|
|
|
export function buildSessionSubmitPayload(text: string): string {
|
|
const body = text.replaceAll('\u001B', '')
|
|
return `${PASTE_START}${body}${PASTE_END}\r`
|
|
}
|