🎨 为空数学公式关闭,光标位置错误

This commit is contained in:
Vanessa 2022-09-20 20:49:40 +08:00
parent d4c8376bb5
commit c35a9fde6b
2 changed files with 26 additions and 14 deletions

View file

@ -4,7 +4,7 @@ import {updateTransaction} from "../wysiwyg/transaction";
import {hasClosestBlock, hasClosestByAttribute} from "../util/hasClosest";
import {hasNextSibling, hasPreviousSibling} from "../wysiwyg/getBlock";
import {mathRender} from "../markdown/mathRender";
import {fixTableRange} from "../util/selection";
import {fixTableRange, focusByRange} from "../util/selection";
export class InlineMath extends ToolbarItem {
public element: HTMLElement;
@ -50,11 +50,15 @@ export class InlineMath extends ToolbarItem {
range.insertNode(newElement);
mathRender(newElement);
if (rangeString.trim() === "") {
protyle.toolbar.showRender(protyle, newElement);
protyle.toolbar.showRender(protyle, newElement, undefined, html);
} else {
range.setStartAfter(newElement);
range.collapse(true);
focusByRange(range)
nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
updateTransaction(protyle, nodeElement.getAttribute("data-node-id"), nodeElement.outerHTML, html);
wbrElement.remove();
}
nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
updateTransaction(protyle, nodeElement.getAttribute("data-node-id"), nodeElement.outerHTML, html);
wbrElement.remove();
});
}
}

View file

@ -876,7 +876,7 @@ export class Toolbar {
if (!renderElement.parentElement) {
return;
}
let inlineMemoLastNode: Element;
let inlineLastNode: Element;
if (types.includes("NodeHTMLBlock")) {
renderElement.querySelector("protyle-html").setAttribute("data-content", Lute.EscapeHTMLStr(textElement.value));
} else if (isInlineMemo) {
@ -903,12 +903,22 @@ export class Toolbar {
item.removeAttribute("data-inline-memo-content");
}
if (index === inlineMemoElements.length - 1) {
inlineMemoLastNode = item;
inlineLastNode = item;
}
} else {
item.setAttribute("data-inline-memo-content", Lute.EscapeHTMLStr(textElement.value));
}
});
} else if (types.includes("inline-math")) {
// 行内数学公式不允许换行 https://github.com/siyuan-note/siyuan/issues/2187
if (textElement.value) {
renderElement.setAttribute("data-content", Lute.EscapeHTMLStr(textElement.value.replace(/\n/g, "")));
renderElement.removeAttribute("data-render");
processRender(renderElement);
} else {
inlineLastNode = renderElement;
renderElement.outerHTML = "<wbr>"
}
} else {
renderElement.setAttribute("data-content", Lute.EscapeHTMLStr(textElement.value));
renderElement.removeAttribute("data-render");
@ -919,10 +929,11 @@ export class Toolbar {
}
}
// 光标定位
if (renderElement.tagName === "SPAN") {
if (inlineMemoLastNode) {
if (inlineMemoLastNode.parentElement) {
this.range.setStartAfter(inlineMemoLastNode);
if (inlineLastNode) {
if (inlineLastNode.parentElement) {
this.range.setStartAfter(inlineLastNode);
this.range.collapse(true);
focusByRange(this.range);
} else {
@ -936,10 +947,7 @@ export class Toolbar {
} else {
focusSideBlock(renderElement);
}
if (types.includes("inline-math")) {
// 行内数学公式不允许换行 https://github.com/siyuan-note/siyuan/issues/2187
renderElement.setAttribute("data-content", renderElement.getAttribute("data-content").replace(/\n/g, ""));
}
nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
const newHTML = protyle.lute.SpinBlockDOM(nodeElement.outerHTML);
// HTML 块中包含多个 <pre> 时只能保存第一个 https://github.com/siyuan-note/siyuan/issues/5732