diff --git a/app/src/protyle/wysiwyg/move.ts b/app/src/protyle/wysiwyg/move.ts
index 62da64076..cfcb62f8f 100644
--- a/app/src/protyle/wysiwyg/move.ts
+++ b/app/src/protyle/wysiwyg/move.ts
@@ -6,8 +6,9 @@ import {preventScroll} from "../scroll/preventScroll";
import {scrollCenter} from "../../util/highlightById";
import {focusByWbr} from "../util/selection";
-export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range) => {
+export const moveToUp = (protyle: IProtyle, nodeElement: HTMLElement, range: Range) => {
let previousElement: Element;
+ let oldListHTML = "";
let sourceElements = Array.from(protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"));
if (sourceElements.length === 0) {
let sourceElement = getTopAloneElement(nodeElement);
@@ -27,8 +28,14 @@ export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range
sourceElements[0].parentElement.previousElementSibling?.previousElementSibling?.classList.contains("protyle-action")) {
if (sourceElements[0].parentElement.parentElement.previousElementSibling?.classList.contains("li")) {
previousElement = sourceElements[0].parentElement.parentElement.previousElementSibling.querySelector(".list");
- }
- if (!previousElement) {
+ range.insertNode(document.createElement("wbr"));
+ oldListHTML = sourceElements[0].parentElement.parentElement.parentElement.outerHTML;
+ if (!previousElement) {
+ const newId = Lute.NewNodeID();
+ sourceElements[0].parentElement.parentElement.previousElementSibling.lastElementChild.insertAdjacentHTML("beforebegin", `
`);
+ previousElement = sourceElements[0].parentElement.parentElement.previousElementSibling.querySelector(".list")
+ }
+ } else {
return;
}
}
@@ -36,16 +43,20 @@ export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range
sourceElements[0].previousElementSibling?.previousElementSibling?.classList.contains("protyle-action")) {
if (sourceElements[0].parentElement.previousElementSibling?.classList.contains("li")) {
previousElement = sourceElements[0].parentElement.previousElementSibling.querySelector(".list");
- }
- if (!previousElement) {
+ range.insertNode(document.createElement("wbr"));
+ oldListHTML = sourceElements[0].parentElement.parentElement.outerHTML;
+ if (!previousElement) {
+ const newId = Lute.NewNodeID();
+ sourceElements[0].parentElement.previousElementSibling.lastElementChild.insertAdjacentHTML("beforebegin", ``);
+ previousElement = sourceElements[0].parentElement.previousElementSibling.querySelector(".list")
+ }
+ } else {
return;
}
}
if (previousElement) {
previousElement = previousElement.lastElementChild.previousElementSibling;
const sourceParentElement = sourceElements[0].classList.contains("list") ? sourceElements[0] : sourceElements[0].parentElement;
- range.insertNode(document.createElement("wbr"));
- const html = previousElement.parentElement.parentElement.parentElement.outerHTML;
sourceElements.reverse().forEach(item => {
if (item.classList.contains("list")) {
previousElement.after(item.firstElementChild);
@@ -53,6 +64,10 @@ export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range
previousElement.after(item);
}
});
+ if (previousElement.id === "moveTempLi") {
+ previousElement = previousElement.nextElementSibling;
+ previousElement.previousElementSibling.remove();
+ }
if (sourceParentElement.childElementCount === 1) {
sourceParentElement.remove();
} else if (sourceParentElement.getAttribute("data-subtype") === "o" && sourceParentElement.classList.contains("list")) {
@@ -61,8 +76,7 @@ export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range
if (previousElement.getAttribute("data-subtype") === "o") {
updateListOrder(previousElement.parentElement);
}
-
- updateTransaction(protyle, previousElement.parentElement.parentElement.parentElement.getAttribute("data-node-id"), previousElement.parentElement.parentElement.parentElement.outerHTML, html);
+ updateTransaction(protyle, previousElement.parentElement.parentElement.parentElement.getAttribute("data-node-id"), previousElement.parentElement.parentElement.parentElement.outerHTML, oldListHTML);
preventScroll(protyle);
scrollCenter(protyle);
focusByWbr(previousElement.parentElement, range);
@@ -95,8 +109,9 @@ export const moveToUp = (protyle:IProtyle, nodeElement:HTMLElement, range:Range
scrollCenter(protyle);
};
-export const moveToDown = (protyle:IProtyle, nodeElement:HTMLElement, range:Range) => {
+export const moveToDown = (protyle: IProtyle, nodeElement: HTMLElement, range: Range) => {
let nextElement: Element;
+ let oldListHTML = "";
let sourceElements = Array.from(protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select"));
if (sourceElements.length === 0) {
let sourceElement = getTopAloneElement(nodeElement);
@@ -116,24 +131,34 @@ export const moveToDown = (protyle:IProtyle, nodeElement:HTMLElement, range:Ran
sourceElements[0].parentElement.parentElement?.classList.contains("li")) {
if (sourceElements[0].parentElement.parentElement.nextElementSibling?.classList.contains("li")) {
nextElement = sourceElements[0].parentElement.parentElement.nextElementSibling.querySelector(".list > .li");
- }
- if (!nextElement) {
- return;
+ range.insertNode(document.createElement("wbr"));
+ oldListHTML = sourceElements[0].parentElement.parentElement.parentElement.outerHTML;
+ if (!nextElement) {
+ const newId = Lute.NewNodeID();
+ sourceElements[0].parentElement.parentElement.nextElementSibling.lastElementChild.insertAdjacentHTML("beforebegin", ``);
+ nextElement = sourceElements[0].parentElement.parentElement.nextElementSibling.querySelector(".list > div")
+ }
+ } else {
+ return
}
}
if (type === "NodeList" && sourceElements[sourceElements.length - 1].nextElementSibling.classList.contains("protyle-attr") &&
sourceElements[0].parentElement?.classList.contains("li")) {
if (sourceElements[0].parentElement.nextElementSibling?.classList.contains("li")) {
nextElement = sourceElements[0].parentElement.nextElementSibling.querySelector(".list > .li");
- }
- if (!nextElement) {
+ range.insertNode(document.createElement("wbr"));
+ oldListHTML = sourceElements[0].parentElement.parentElement.outerHTML;
+ if (!nextElement) {
+ const newId = Lute.NewNodeID();
+ sourceElements[0].parentElement.nextElementSibling.lastElementChild.insertAdjacentHTML("beforebegin", ``);
+ nextElement = sourceElements[0].parentElement.nextElementSibling.querySelector(".list > div");
+ }
+ } else {
return;
}
}
if (nextElement) {
const sourceParentElement = sourceElements[0].classList.contains("list") ? sourceElements[0] : sourceElements[0].parentElement;
- range.insertNode(document.createElement("wbr"));
- const html = nextElement.parentElement.parentElement.parentElement.outerHTML;
sourceElements.forEach(item => {
if (item.classList.contains("list")) {
nextElement.before(item.firstElementChild);
@@ -149,7 +174,7 @@ export const moveToDown = (protyle:IProtyle, nodeElement:HTMLElement, range:Ran
if (nextElement.getAttribute("data-subtype") === "o") {
updateListOrder(nextElement.parentElement, 1);
}
- updateTransaction(protyle, nextElement.parentElement.parentElement.parentElement.getAttribute("data-node-id"), nextElement.parentElement.parentElement.parentElement.outerHTML, html);
+ updateTransaction(protyle, nextElement.parentElement.parentElement.parentElement.getAttribute("data-node-id"), nextElement.parentElement.parentElement.parentElement.outerHTML, oldListHTML);
preventScroll(protyle);
scrollCenter(protyle);
focusByWbr(nextElement.parentElement, range);