Vanessa 2024-06-29 11:06:38 +08:00
parent f7549b978e
commit a1fa1d16bb
3 changed files with 16 additions and 6 deletions

View file

@ -13,6 +13,7 @@ import {hasClosestByAttribute, hasClosestByClassName} from "../util/hasClosest";
import {fetchPost, fetchSyncPost} from "../../util/fetch";
import {headingTurnIntoList, turnIntoTaskList} from "./turnIntoList";
import {updateAVName} from "../render/av/action";
import {setFold} from "../../menus/protyle";
export const input = async (protyle: IProtyle, blockElement: HTMLElement, range: Range, needRender = true, event?: InputEvent) => {
if (!blockElement.parentElement) {
@ -155,6 +156,12 @@ export const input = async (protyle: IProtyle, blockElement: HTMLElement, range:
) {
log("SpinBlockDOM", blockElement.outerHTML, "argument", protyle.options.debugger);
log("SpinBlockDOM", html, "result", protyle.options.debugger);
if (blockElement.getAttribute("data-type") === "NodeHeading" && blockElement.getAttribute("fold") === "1" &&
tempElement.content.firstElementChild.getAttribute("data-subtype") !== blockElement.dataset.subtype) {
setFold(protyle, blockElement, undefined, undefined, false);
html = html.replace(' fold="1"', "");
protyle.wysiwyg.lastHTMLs[id] = blockElement.outerHTML;
}
let scrollLeft: number;
if (blockElement.classList.contains("table")) {
scrollLeft = blockElement.firstElementChild.scrollLeft;

View file

@ -883,7 +883,7 @@ export const turnsIntoTransaction = (options: {
selectsElement.forEach((item, index) => {
if ((options.type === "Blocks2Ps" || options.type === "Blocks2Hs") &&
item.getAttribute("data-type") === "NodeHeading" && item.getAttribute("fold") === "1") {
setFold(options.protyle, item);
setFold(options.protyle, item, undefined, undefined, false);
}
item.classList.remove("protyle-wysiwyg--select");
item.removeAttribute("select-start");
@ -1105,18 +1105,20 @@ export const transaction = (protyle: IProtyle, doOperations: IOperation[], undoO
protyle.model.headElement.classList.remove("item--unupdate");
}
protyle.updated = true;
if (needDebounce) {
protyle.undo.replace(doOperations, protyle);
} else {
protyle.undo.add(doOperations, undoOperations, protyle);
}
}
window.clearTimeout(transactionsTimeout);
// 加速折叠 https://github.com/siyuan-note/siyuan/issues/11828
if (doOperations.length === 1 && (
doOperations[0].action === "unfoldHeading" ||
(doOperations[0].action === "setAttrs" && doOperations[0].data.startsWith('{"fold":'))
)) {
// 防止 needDebounce 为 true
protyle.transactionTime = time + Constants.TIMEOUT_INPUT * 2;
fetchPost("/api/transactions", {
session: protyle.id,
app: Constants.SIYUAN_APPID,
@ -1157,7 +1159,6 @@ export const transaction = (protyle: IProtyle, doOperations: IOperation[], undoO
});
}
protyle.transactionTime = time;
window.clearTimeout(transactionsTimeout);
transactionsTimeout = window.setTimeout(() => {
promiseTransaction();
}, Constants.TIMEOUT_INPUT * 2);