mirror of
https://github.com/LingChair/LingChair-V0.git
synced 2025-12-08 01:55:50 +08:00
feat: Markdown Code Dialog
This commit is contained in:
@@ -53,9 +53,11 @@ ChatMsgAdapter.initMsgElementEvents()
|
|||||||
|
|
||||||
ChatMsgAdapter.initInputResizer()
|
ChatMsgAdapter.initInputResizer()
|
||||||
|
|
||||||
const showLinkDialog = (link) => mdui.alert(decodeURI(link) + "<br/>如果你确认此链接是安全的, 那么请<a class=\"mdui-text-color-theme-accent\" href=\"" + link + "\">点我</a>", '链接', () => { }, { confirmText: "关闭" })
|
const showLinkDialog = (link) => mdui.alert(decodeURIComponent(link) + "<br/>如果你确认此链接是安全的, 那么请<a class=\"mdui-text-color-theme-accent\" href=\"" + link + "\">点我</a>", '链接', () => { }, { confirmText: "关闭" })
|
||||||
|
|
||||||
const showImageDialog = (link, id, alt) => mdui.alert(`此图片链接来源未知: ${decodeURI(link)}<br/>如果你希望加载, 请<a class="mdui-text-color-theme-accent" mdui-dialog-close onclick="$('#${id}').html('<img src=\\'${link}\\' alt=\\'${decodeURI(alt)}\\'></img>')">点我</a>`, '外部图片', () => { }, { confirmText: "关闭" })
|
const showImageDialog = (link, id, alt) => mdui.alert(`此图片链接来源未知: ${decodeURIComponent(link)}<br/>如果你希望加载, 请<a class="mdui-text-color-theme-accent" mdui-dialog-close onclick="$('#${id}').html('<img src=\\'${link}\\' alt=\\'${decodeURIComponent(alt)}\\'></img>')">点我</a>`, '外部图片', () => { }, { confirmText: "关闭" })
|
||||||
|
|
||||||
|
const showCodeDialog = (code) => mdui.alert(`<pre><code>${decodeURIComponent(code)}</code></pre>`, '代码块', () => { }, { confirmText: "关闭" })
|
||||||
|
|
||||||
const renderer = {
|
const renderer = {
|
||||||
heading(text, level) {
|
heading(text, level) {
|
||||||
@@ -68,15 +70,18 @@ const renderer = {
|
|||||||
return text
|
return text
|
||||||
},
|
},
|
||||||
link(href, title, text) {
|
link(href, title, text) {
|
||||||
return `<a class="mdui-text-color-theme-accent" onclick="showLinkDialog('${encodeURI(href)}')">${text}</a>`
|
return `<a class="mdui-text-color-theme-accent" onclick="showLinkDialog('${encodeURIComponent(href)}')">[链接] ${text}</a>`
|
||||||
},
|
},
|
||||||
image(href, title, text) {
|
image(href, title, text) {
|
||||||
let h = Hash.sha256(href)
|
let h = Hash.sha256(href)
|
||||||
if (new URL(href).hostname === new URL(location.href))
|
if (new URL(href).hostname === new URL(location.href))
|
||||||
return `<img src="${encodeURI(href)}" alt="${text}"></img>`
|
return `<img src="${encodeURIComponent(href)}" alt="${text}"></img>`
|
||||||
else
|
else
|
||||||
return `<div id="${h}"><a class="mdui-text-color-theme-accent" onclick="showImageDialog('${encodeURI(href)}', '${h}', '${encodeURI(text)}')">[外部图片] ${text}</a></div>`
|
return `<div id="${h}"><a class="mdui-text-color-theme-accent" onclick="showImageDialog('${encodeURIComponent(href)}', '${h}', '${encodeURIComponent(text)}')">[外部图片] ${text}</a></div>`
|
||||||
}
|
},
|
||||||
|
code(src) {
|
||||||
|
return `<a class="mdui-text-color-theme-accent" onclick="showCodeDialog(\`${encodeURIComponent(src)}\`)">[代码块]</a>`
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
marked.use({
|
marked.use({
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ class ChatMsgAdapter {
|
|||||||
temp = `<div class="chat-message-right">
|
temp = `<div class="chat-message-right">
|
||||||
<div class="message-content-with-nickname-right">
|
<div class="message-content-with-nickname-right">
|
||||||
<span class="nickname">` + nick + `</span>
|
<span class="nickname">` + nick + `</span>
|
||||||
<div class="message-content mdui-card" id="msgid_` + msgid + `">
|
<div class="message-content mdui-card" tag="msg-card" id="msgid_` + msgid + `">
|
||||||
<span id="msg-content">` + msg + `</span>
|
<span id="msg-content">` + msg + `</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -417,7 +417,7 @@ class ChatMsgAdapter {
|
|||||||
<img class="avatar" src="` + CurrentUser.getUserHeadUrl(name) + `" onerror="this.src='res/default_head.png'" />
|
<img class="avatar" src="` + CurrentUser.getUserHeadUrl(name) + `" onerror="this.src='res/default_head.png'" />
|
||||||
<div class="message-content-with-nickname-left">
|
<div class="message-content-with-nickname-left">
|
||||||
<span class="nickname">` + nick + `</span>
|
<span class="nickname">` + nick + `</span>
|
||||||
<div class="message-content mdui-card" id="msgid_` + msgid + `">
|
<div class="message-content mdui-card" tag="msg-card" id="msgid_` + msgid + `">
|
||||||
<span id="msg-content">` + msg + `</span>
|
<span id="msg-content">` + msg + `</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -440,7 +440,7 @@ class ChatMsgAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.bbn = new Date(t).getMinutes()
|
this.bbn = new Date(t).getMinutes()
|
||||||
|
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -493,10 +493,11 @@ class ChatMsgAdapter {
|
|||||||
let menu
|
let menu
|
||||||
let callback = (e) => {
|
let callback = (e) => {
|
||||||
if (menu) menu.close()
|
if (menu) menu.close()
|
||||||
// 从 span 切到 div
|
// 切到 div.message-content
|
||||||
if (e.get(0).tagName.toLowerCase() != "div") e = $(e.get(0).parentNode)
|
let ele = e.get(0)
|
||||||
// 从 消息框 切到 更上层
|
while ($(ele).attr("tag") != "msg-card")
|
||||||
e = $(e.get(0).parentNode)
|
ele = ele.parentNode
|
||||||
|
e = $(ele)
|
||||||
let menuHtml = $.parseHTML(`<ul class="mdui-menu menu-on-message">
|
let menuHtml = $.parseHTML(`<ul class="mdui-menu menu-on-message">
|
||||||
<li class="mdui-menu-item">
|
<li class="mdui-menu-item">
|
||||||
<a onclick="copyText(\`` + e.find("#msg-content").text() + `\`)" class="mdui-ripple">复制</a>
|
<a onclick="copyText(\`` + e.find("#msg-content").text() + `\`)" class="mdui-ripple">复制</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user