import {hasClosestBlock, hasClosestByAttribute, hasClosestByClassName} from "../../util/hasClosest"; import {transaction} from "../../wysiwyg/transaction"; import {Menu} from "../../../plugin/API"; import {getIconByType} from "./render"; export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => { const blockElement = hasClosestBlock(event.target) const addElement = hasClosestByAttribute(event.target, "data-type", "av-header-add") if (addElement && blockElement) { const menu = new Menu("av-header-add") menu.addItem({ icon: "iconAlignLeft", label: window.siyuan.languages.text, click() { const id = Lute.NewNodeID() transaction(protyle, [{ action: "addAttrViewCol", name: "Text", parentID: blockElement.getAttribute("data-av-id"), type: "text", id }], [{ action: "removeAttrViewCol", id, parentID: blockElement.getAttribute("data-av-type"), }]); } }) const addRect = addElement.getBoundingClientRect() menu.open({ x: addRect.left, y: addRect.bottom, h: addRect.height }) event.preventDefault(); event.stopPropagation(); return true } const cellElement = hasClosestByClassName(event.target, "av__cell") if (cellElement && blockElement) { const type = cellElement.getAttribute("data-dtype") const menu = new Menu("av-header-cell") menu.addItem({ icon: getIconByType(type), label: ``, bind() { } }) if (type !== "block") { menu.addItem({ icon: "iconEdit", label: window.siyuan.languages.edit, click() { } }) } menu.addSeparator() menu.addItem({ icon: "iconUp", label: window.siyuan.languages.fileNameNatASC, click() { } }) menu.addItem({ icon: "iconDown", label: window.siyuan.languages.fileNameNatDESC, click() { } }) menu.addItem({ icon: "iconFilter", label: window.siyuan.languages.filter, click() { } }) menu.addSeparator() if (type !== "block") { menu.addItem({ icon: "iconEyeoff", label: window.siyuan.languages.hide, click() { } }) menu.addItem({ icon: "iconCopy", label: window.siyuan.languages.duplicate, click() { } }) menu.addItem({ icon: "iconTrashcan", label: window.siyuan.languages.delete, click() { } }) menu.addSeparator() } menu.addItem({ label: `
${window.siyuan.languages.wrap}
`, click() { } }) const cellRect = cellElement.getBoundingClientRect() menu.open({ x: cellRect.left, y: cellRect.bottom, h: cellRect.height }) event.preventDefault(); event.stopPropagation(); return true } return false }