vditor
Version:
♏ 易于使用的 Markdown 编辑器,为适配不同的应用场景而生
28 lines (26 loc) • 849 B
text/typescript
// NOTE: 减少 method.ts 打包,故从 hasClosest.ts 中拆分
export const hasClosestByTag = (element: Node, nodeName: string) => {
if (!element) {
return false;
}
if (element.nodeType === 3) {
element = element.parentElement;
}
let e = element as HTMLElement;
let isClosest = false;
while (e && !isClosest && !e.classList.contains("vditor-reset")) {
if (e.nodeName.indexOf(nodeName) === 0) {
isClosest = true;
} else {
e = e.parentElement;
}
}
return isClosest && e;
};
export const hasClosestByHeadings = (element: Node) => {
const headingElement = hasClosestByTag(element, "H");
if (headingElement && headingElement.tagName.length === 2 && headingElement.tagName !== "HR") {
return headingElement;
}
return false;
};