mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-09 14:12:34 +01:00
This commit is contained in:
parent
327c3aaabb
commit
f8d1d1958b
4 changed files with 46 additions and 8 deletions
|
|
@ -9,7 +9,7 @@ import {lineNumberRender} from "../render/highlightRender";
|
|||
import {hideMessage, showMessage} from "../../dialog/message";
|
||||
import {genUUID} from "../../util/genID";
|
||||
import {getContenteditableElement, getLastBlock} from "../wysiwyg/getBlock";
|
||||
import {genEmptyElement} from "../../block/util";
|
||||
import {genEmptyElement, genHeadingElement} from "../../block/util";
|
||||
import {transaction} from "../wysiwyg/transaction";
|
||||
import {focusByRange} from "../util/selection";
|
||||
/// #if !MOBILE
|
||||
|
|
@ -137,16 +137,22 @@ export const initUI = (protyle: IProtyle) => {
|
|||
return;
|
||||
}
|
||||
}
|
||||
const lastRect = protyle.wysiwyg.element.lastElementChild.getBoundingClientRect();
|
||||
const lastElement = protyle.wysiwyg.element.lastElementChild;
|
||||
const lastRect = lastElement.getBoundingClientRect();
|
||||
const range = document.createRange();
|
||||
if (event.y > lastRect.bottom) {
|
||||
const lastEditElement = getContenteditableElement(getLastBlock(protyle.wysiwyg.element.lastElementChild));
|
||||
const lastEditElement = getContenteditableElement(getLastBlock(lastElement));
|
||||
if (!protyle.options.click.preventInsetEmptyBlock && (
|
||||
!lastEditElement ||
|
||||
(protyle.wysiwyg.element.lastElementChild.getAttribute("data-type") !== "NodeParagraph" && protyle.wysiwyg.element.getAttribute("data-doc-type") !== "NodeListItem") ||
|
||||
(protyle.wysiwyg.element.lastElementChild.getAttribute("data-type") === "NodeParagraph" && getContenteditableElement(lastEditElement).innerHTML !== ""))
|
||||
(lastElement.getAttribute("data-type") !== "NodeParagraph" && protyle.wysiwyg.element.getAttribute("data-doc-type") !== "NodeListItem") ||
|
||||
(lastElement.getAttribute("data-type") === "NodeParagraph" && getContenteditableElement(lastEditElement).innerHTML !== ""))
|
||||
) {
|
||||
const emptyElement = genEmptyElement(false, false);
|
||||
let emptyElement:Element;
|
||||
if (lastElement.getAttribute("data-type") === "NodeHeading" && lastElement.getAttribute("fold") === "1") {
|
||||
emptyElement = genHeadingElement(lastElement) as Element;
|
||||
} else {
|
||||
emptyElement = genEmptyElement(false, false);
|
||||
}
|
||||
protyle.wysiwyg.element.insertAdjacentElement("beforeend", emptyElement);
|
||||
transaction(protyle, [{
|
||||
action: "insert",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {genEmptyElement, insertEmptyBlock} from "../../block/util";
|
||||
import {genEmptyElement, genHeadingElement, insertEmptyBlock} from "../../block/util";
|
||||
import {focusByRange, focusByWbr, getSelectionOffset, setLastNodeRange} from "../util/selection";
|
||||
import {
|
||||
getContenteditableElement,
|
||||
|
|
@ -220,7 +220,11 @@ export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle
|
|||
}
|
||||
const id = blockElement.getAttribute("data-node-id");
|
||||
const newElement = document.createElement("div");
|
||||
newElement.appendChild(genEmptyElement(false, false));
|
||||
if (blockElement.getAttribute("data-type") === "NodeHeading" && blockElement.getAttribute("fold") === "1") {
|
||||
newElement.innerHTML = genHeadingElement(blockElement, true) as string;
|
||||
} else {
|
||||
newElement.appendChild(genEmptyElement(false, false));
|
||||
}
|
||||
const newEditableElement = newElement.querySelector('[contenteditable="true"]');
|
||||
newEditableElement.appendChild(range.extractContents());
|
||||
const selectWbrElement = newEditableElement.querySelector("wbr");
|
||||
|
|
|
|||
|
|
@ -300,6 +300,14 @@ export const removeBlock = async (protyle: IProtyle, blockElement: Element, rang
|
|||
return;
|
||||
}
|
||||
if (blockType === "NodeHeading") {
|
||||
if ((blockElement.previousElementSibling &&
|
||||
blockElement.previousElementSibling.getAttribute("data-type") === "NodeHeading" &&
|
||||
blockElement.previousElementSibling.getAttribute("fold") === "1") ||
|
||||
(blockElement.getAttribute("data-type") === "NodeHeading" &&
|
||||
blockElement.getAttribute("fold") === "1")) {
|
||||
focusBlock(blockElement.previousElementSibling, undefined, false);
|
||||
return;
|
||||
}
|
||||
turnsIntoTransaction({
|
||||
protyle: protyle,
|
||||
selectsElement: [blockElement],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue