This commit is contained in:
Vanessa 2022-09-09 19:46:54 +08:00
parent 8811f329f9
commit 14be58e0ee
2 changed files with 39 additions and 3 deletions

View file

@ -303,6 +303,34 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, focus: b
updateRef(protyle, operation.id);
return;
}
if (operation.action === "updateAttrs") { // 调用接口才推送
protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.id}"]`).forEach(item => {
const data = operation.data as any
Object.keys(data.old).forEach(key => {
item.removeAttribute(key)
})
let nodeAttrHTML = ""
Object.keys(data.new).forEach(key => {
item.setAttribute(key, data.new[key]);
const escapeHTML = data.new[key]
if (key === "bookmark") {
nodeAttrHTML += `<div class="protyle-attr--bookmark">${escapeHTML}</div>`;
} else if (key === "name") {
nodeAttrHTML += `<div class="protyle-attr--name"><svg><use xlink:href="#iconN"></use></svg>${escapeHTML}</div>`;
} else if (key === "alias") {
nodeAttrHTML += `<div class="protyle-attr--alias"><svg><use xlink:href="#iconA"></use></svg>${escapeHTML}</div>`;
} else if (key === "memo") {
nodeAttrHTML += `<div class="protyle-attr--memo b3-tooltips b3-tooltips__sw" aria-label="${escapeHTML}"><svg><use xlink:href="#iconM"></use></svg></div>`;
}
})
const refElement = item.lastElementChild.querySelector(".protyle-attr--refcount");
if (refElement) {
nodeAttrHTML += refElement.outerHTML;
}
item.lastElementChild.innerHTML = nodeAttrHTML + Constants.ZWSP;
});
return;
}
if (operation.action === "move") {
let cloneRange;
let range;

View file

@ -4,7 +4,15 @@ type TDockType = "file" | "outline" | "bookmark" | "tag" | "graph" | "globalGrap
type TDockPosition = "Left" | "Right" | "Top" | "Bottom"
type TWS = "main" | "filetree" | "protyle"
type TEditorMode = "preview" | "wysiwyg"
type TOperation = "insert" | "update" | "delete" | "move" | "foldHeading" | "unfoldHeading" | "setAttrs" | "append"
type TOperation = "insert"
| "update"
| "delete"
| "move"
| "foldHeading"
| "unfoldHeading"
| "setAttrs"
| "updateAttrs"
| "append"
type TBazaarType = "templates" | "icons" | "widgets" | "themes"
declare module "blueimp-md5"
@ -140,7 +148,7 @@ interface IScrollAttr {
interface IOperation {
action: TOperation, // move delete 不需要传 data
id: string,
data?: string,
data?: string, // updateAttr 时为 { old: IObject, new: IObject }
parentID?: string
previousID?: string
retData?: any