|
|
|
|
|
|
|
function addChuanhuButton(botElement) { |
|
var rawMessage = botElement.querySelector('.raw-message'); |
|
var mdMessage = botElement.querySelector('.md-message'); |
|
|
|
if (!rawMessage) { |
|
var buttons = botElement.querySelectorAll('button.chuanhu-btn'); |
|
for (var i = 0; i < buttons.length; i++) { |
|
buttons[i].parentNode.removeChild(buttons[i]); |
|
} |
|
return; |
|
} |
|
botElement.querySelectorAll('button.copy-bot-btn, button.toggle-md-btn').forEach(btn => btn.remove()); |
|
|
|
|
|
var copyButton = document.createElement('button'); |
|
copyButton.classList.add('chuanhu-btn'); |
|
copyButton.classList.add('copy-bot-btn'); |
|
copyButton.setAttribute('aria-label', 'Copy'); |
|
copyButton.innerHTML = copyIcon; |
|
|
|
copyButton.addEventListener('click', async () => { |
|
const textToCopy = rawMessage.innerText; |
|
try { |
|
if ("clipboard" in navigator) { |
|
await navigator.clipboard.writeText(textToCopy); |
|
copyButton.innerHTML = copiedIcon; |
|
setTimeout(() => { |
|
copyButton.innerHTML = copyIcon; |
|
}, 1500); |
|
} else { |
|
const textArea = document.createElement("textarea"); |
|
textArea.value = textToCopy; |
|
document.body.appendChild(textArea); |
|
textArea.select(); |
|
try { |
|
document.execCommand('copy'); |
|
copyButton.innerHTML = copiedIcon; |
|
setTimeout(() => { |
|
copyButton.innerHTML = copyIcon; |
|
}, 1500); |
|
} catch (error) { |
|
console.error("Copy failed: ", error); |
|
} |
|
document.body.removeChild(textArea); |
|
} |
|
} catch (error) { |
|
console.error("Copy failed: ", error); |
|
} |
|
}); |
|
botElement.appendChild(copyButton); |
|
|
|
|
|
var toggleButton = document.createElement('button'); |
|
toggleButton.classList.add('chuanhu-btn'); |
|
toggleButton.classList.add('toggle-md-btn'); |
|
toggleButton.setAttribute('aria-label', 'Toggle'); |
|
var renderMarkdown = mdMessage.classList.contains('hideM'); |
|
toggleButton.innerHTML = renderMarkdown ? mdIcon : rawIcon; |
|
toggleButton.addEventListener('click', () => { |
|
renderMarkdown = mdMessage.classList.contains('hideM'); |
|
if (renderMarkdown) { |
|
renderMarkdownText(botElement); |
|
toggleButton.innerHTML=rawIcon; |
|
} else { |
|
removeMarkdownText(botElement); |
|
toggleButton.innerHTML=mdIcon; |
|
} |
|
chatbotContentChanged(1); |
|
}); |
|
botElement.insertBefore(toggleButton, copyButton); |
|
|
|
function renderMarkdownText(message) { |
|
var mdDiv = message.querySelector('.md-message'); |
|
if (mdDiv) mdDiv.classList.remove('hideM'); |
|
var rawDiv = message.querySelector('.raw-message'); |
|
if (rawDiv) rawDiv.classList.add('hideM'); |
|
} |
|
function removeMarkdownText(message) { |
|
var rawDiv = message.querySelector('.raw-message'); |
|
if (rawDiv) { |
|
rawDiv.innerHTML = rawDiv.querySelector('pre')?.innerHTML || rawDiv.innerHTML; |
|
rawDiv.classList.remove('hideM'); |
|
} |
|
var mdDiv = message.querySelector('.md-message'); |
|
if (mdDiv) mdDiv.classList.add('hideM'); |
|
} |
|
} |
|
|
|
|
|
|