mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-18 14:35:27 +01:00
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import {ToolbarItem} from "./ToolbarItem";
|
|
import {hasClosestBlock, hasClosestByAttribute} from "../util/hasClosest";
|
|
|
|
export class InlineMemo extends ToolbarItem {
|
|
public element: HTMLElement;
|
|
|
|
constructor(protyle: IProtyle, menuItem: IMenuItem) {
|
|
super(protyle, menuItem);
|
|
this.element.addEventListener("click", async (event: MouseEvent & { changedTouches: MouseEvent[] }) => {
|
|
protyle.toolbar.element.classList.add("fn__none");
|
|
event.stopPropagation();
|
|
|
|
const range = protyle.toolbar.range;
|
|
const nodeElement = hasClosestBlock(range.startContainer);
|
|
if (!nodeElement) {
|
|
return;
|
|
}
|
|
const memoElement = hasClosestByAttribute(range.startContainer, "data-type", "inline-memo");
|
|
if (memoElement && memoElement.textContent === range.toString()) {
|
|
// https://github.com/siyuan-note/siyuan/issues/6569
|
|
protyle.toolbar.showRender(protyle, memoElement);
|
|
return;
|
|
}
|
|
|
|
if (range.toString() === "") {
|
|
return;
|
|
}
|
|
|
|
protyle.toolbar.setInlineMark(protyle, "inline-memo", "range", {
|
|
type: "inline-memo",
|
|
});
|
|
});
|
|
}
|
|
}
|