Keldos commited on
Commit
6d13763
·
1 Parent(s): 445b831

fix: preserve line breaks when copy in md message

Browse files

ref: https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLElement/innerText

modules/utils.py CHANGED
@@ -265,7 +265,7 @@ def clip_rawtext(chat_message, need_escape=True):
265
  return final_message
266
 
267
 
268
- def convert_bot_before_marked(chat_message): # deprecated after gradio 4.0
269
  """
270
  注意不能给输出加缩进, 否则会被marked解析成代码块
271
  """
@@ -303,6 +303,7 @@ def escape_markdown(text):
303
  """
304
  escape_chars = {
305
  # ' ': ' ',
 
306
  "_": "_",
307
  "*": "*",
308
  "[": "[",
 
265
  return final_message
266
 
267
 
268
+ def convert_bot_before_marked(chat_message):
269
  """
270
  注意不能给输出加缩进, 否则会被marked解析成代码块
271
  """
 
303
  """
304
  escape_chars = {
305
  # ' ': ' ',
306
+ '"': """,
307
  "_": "_",
308
  "*": "*",
309
  "[": "[",
web_assets/javascript/message-button.js CHANGED
@@ -57,6 +57,7 @@ function addChuanhuButton(botElement) {
57
  var isLatestMessage = botElement.classList.contains('latest');
58
 
59
  var gradioButtonMsg = botElement.querySelector('button[data-testid="bot"]');
 
60
  var rawMessage = botElement.querySelector('.raw-message');
61
  var mdMessage = botElement.querySelector('.md-message');
62
 
@@ -98,10 +99,17 @@ function addChuanhuButton(botElement) {
98
  copyButton.innerHTML = copyIcon;
99
 
100
  copyButton.addEventListener('click', async () => {
101
- const textToCopy = rawMessage.innerText;
 
 
 
 
 
 
102
  try {
103
  if ("clipboard" in navigator) {
104
  await navigator.clipboard.writeText(textToCopy);
 
105
  copyButton.innerHTML = copiedIcon;
106
  setTimeout(() => {
107
  copyButton.innerHTML = copyIcon;
 
57
  var isLatestMessage = botElement.classList.contains('latest');
58
 
59
  var gradioButtonMsg = botElement.querySelector('button[data-testid="bot"]');
60
+
61
  var rawMessage = botElement.querySelector('.raw-message');
62
  var mdMessage = botElement.querySelector('.md-message');
63
 
 
99
  copyButton.innerHTML = copyIcon;
100
 
101
  copyButton.addEventListener('click', async () => {
102
+
103
+ let textToCopyHTML = rawMessage.innerHTML;
104
+ let textToCopyTMP = textToCopyHTML.replace(/<br\s*\/?>/gi, '\n');
105
+ let textToCopyDOM = document.createElement('div');
106
+ textToCopyDOM.innerHTML = textToCopyTMP;
107
+ let textToCopy = textToCopyDOM.textContent;
108
+
109
  try {
110
  if ("clipboard" in navigator) {
111
  await navigator.clipboard.writeText(textToCopy);
112
+ // console.log("Copied to clipboard: \n", textToCopy);
113
  copyButton.innerHTML = copiedIcon;
114
  setTimeout(() => {
115
  copyButton.innerHTML = copyIcon;