|
@@ -2,6 +2,7 @@ import {scrollCenter} from "../util/editorCommonEvent";
|
|
|
import {hasClosestByAttribute} from "../util/hasClosest";
|
|
|
import {getSelectPosition, setRangeByWbr} from "../util/selection";
|
|
|
import {getSideByType, processAfterRender, processSpinVditorSVDOM} from "./process";
|
|
|
+import { combineFootnote } from "../util/combineFootnote"
|
|
|
|
|
|
export const inputEvent = (vditor: IVditor, event?: InputEvent) => {
|
|
|
const range = getSelection().getRangeAt(0).cloneRange();
|
|
@@ -140,24 +141,24 @@ export const inputEvent = (vditor: IVditor, event?: InputEvent) => {
|
|
|
html = blockElement.previousElementSibling.textContent + html;
|
|
|
blockElement.previousElementSibling.remove();
|
|
|
}
|
|
|
- if (!blockElement.innerText.startsWith("```")) {
|
|
|
- // 添加链接引用
|
|
|
- vditor.sv.element.querySelectorAll("[data-type='link-ref-defs-block']").forEach((item, index) => {
|
|
|
- if (index === 0 && item && !(blockElement as HTMLElement).isEqualNode(item.parentElement)) {
|
|
|
- html += "\n" + item.parentElement.textContent;
|
|
|
- item.parentElement.remove();
|
|
|
- }
|
|
|
- });
|
|
|
+ // 添加链接引用
|
|
|
+ let footnotes = ""
|
|
|
|
|
|
- // 添加脚注
|
|
|
- vditor.sv.element.querySelectorAll("[data-type='footnotes-link']").forEach((item, index) => {
|
|
|
- // 加入所有脚注便于渲染引用
|
|
|
- if (item && !(blockElement as HTMLElement).isEqualNode(item.parentElement)) {
|
|
|
- html += "\n" + item.parentElement.textContent;
|
|
|
- item.parentElement.remove();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ vditor.sv.element.querySelectorAll("[data-type='link-ref-defs-block']").forEach((item, index) => {
|
|
|
+ if (item && !(blockElement as HTMLElement).isEqualNode(item.parentElement)) {
|
|
|
+ footnotes += item.parentElement.textContent + "\n";
|
|
|
+ item.parentElement.remove();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 添加脚注到文章头,便于lute处理
|
|
|
+ vditor.sv.element.querySelectorAll("[data-type='footnotes-link']").forEach((item, index) => {
|
|
|
+ if (item && !(blockElement as HTMLElement).isEqualNode(item.parentElement)) {
|
|
|
+ footnotes += item.parentElement.textContent + "\n";
|
|
|
+ item.parentElement.remove();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ html = footnotes + html;
|
|
|
}
|
|
|
html = processSpinVditorSVDOM(html, vditor);
|
|
|
if (isSVElement) {
|
|
@@ -166,26 +167,14 @@ export const inputEvent = (vditor: IVditor, event?: InputEvent) => {
|
|
|
blockElement.outerHTML = html;
|
|
|
}
|
|
|
|
|
|
- let firstLinkRefDefElement: Element;
|
|
|
- const allLinkRefDefsElement = vditor.sv.element.querySelectorAll("[data-type='link-ref-defs-block']");
|
|
|
- allLinkRefDefsElement.forEach((item, index) => {
|
|
|
- if (index === 0) {
|
|
|
- firstLinkRefDefElement = item.parentElement;
|
|
|
- } else {
|
|
|
- firstLinkRefDefElement.lastElementChild.remove();
|
|
|
- firstLinkRefDefElement.insertAdjacentHTML("beforeend", `${item.parentElement.innerHTML}`);
|
|
|
- item.parentElement.remove();
|
|
|
- }
|
|
|
- });
|
|
|
- if (allLinkRefDefsElement.length > 0) {
|
|
|
- vditor.sv.element.insertAdjacentElement("beforeend", firstLinkRefDefElement);
|
|
|
- }
|
|
|
+ vditor.sv.element.querySelectorAll("[data-type='link-ref-defs-block']").forEach((item) => {
|
|
|
+ vditor.sv.element.insertAdjacentElement("beforeend", item.parentElement)
|
|
|
+ })
|
|
|
|
|
|
- // 脚注合并后添加的末尾
|
|
|
- vditor.sv.element.querySelectorAll("[data-type='footnotes-link']")
|
|
|
- .forEach((item, index) => {
|
|
|
- vditor.sv.element.insertAdjacentElement("beforeend", item.parentElement)
|
|
|
- });
|
|
|
+ // 合并脚注
|
|
|
+ combineFootnote(vditor.sv.element, (root: HTMLElement) => {
|
|
|
+ vditor.sv.element.insertAdjacentElement("beforeend", root)
|
|
|
+ })
|
|
|
|
|
|
setRangeByWbr(vditor.sv.element, range);
|
|
|
|