Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanessa219 authored and stevapple committed Apr 8, 2020
1 parent 9b49f7c commit 9c2db2f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
31 changes: 29 additions & 2 deletions src/ts/ir/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import {uploadFiles} from "../upload";
import {setHeaders} from "../upload/setHeaders";
import {isCtrl} from "../util/compatibility";
import {focusEvent, hotkeyEvent, selectEvent} from "../util/editorCommenEvent";
import {hasClosestByMatchTag} from "../util/hasClosest";
import {hasClosestByClassName, hasClosestByMatchTag} from "../util/hasClosest";
import {processPasteCode} from "../util/processPasteCode";
import {getSelectPosition, insertHTML, setSelectionByPosition} from "../util/selection";
import {getSelectPosition, insertHTML, setSelectionByPosition, setSelectionFocus} from "../util/selection";
import {expandMarker} from "./expandMarker";
import {input} from "./input";
import {processAfterRender, processCodeRender} from "./process";
Expand Down Expand Up @@ -185,6 +185,19 @@ class IR {
}

expandMarker(getSelection().getRangeAt(0), vditor);

// 点击后光标落于预览区
const range = getSelection().getRangeAt(0);
let previewElement = hasClosestByClassName(event.target, "vditor-ir__preview");
if (!previewElement) {
previewElement = hasClosestByClassName(
range.startContainer, "vditor-ir__preview");
}
if (previewElement) {
range.selectNodeContents(previewElement.previousElementSibling.firstElementChild);
range.collapse(true);
setSelectionFocus(range);
}
});

this.element.addEventListener("keyup", (event) => {
Expand All @@ -199,9 +212,23 @@ class IR {
vditor.ir.element.innerHTML = "";
return;
}

if (event.key.indexOf("Arrow") > -1) {
expandMarker(getSelection().getRangeAt(0), vditor);
}

const range = getSelection().getRangeAt(0);
const previewRenderElement = hasClosestByClassName(range.startContainer, "vditor-ir__preview");
if (previewRenderElement && event.key.indexOf("Arrow") > -1) {
if (event.key === "ArrowDown" || event.key === "ArrowRight") {
range.selectNodeContents(previewRenderElement.parentElement.querySelector('[data-type="code-block-close-marker-zwsp"]'));
} else {
range.selectNodeContents(previewRenderElement.previousElementSibling.firstElementChild);
}
range.collapse(false);
event.preventDefault();
return true;
}
});
}
}
Expand Down
5 changes: 2 additions & 3 deletions src/ts/ir/processKeydown.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {Constants} from "../constants";
import {isCtrl} from "../util/compatibility";
import {scrollCenter} from "../util/editorCommenEvent";
import {hasClosestByAttribute, hasClosestByMatchTag, hasClosestByTag} from "../util/hasClosest";
import {hasClosestByAttribute, hasClosestByClassName, hasClosestByMatchTag} from "../util/hasClosest";
import {getSelectPosition, setRangeByWbr} from "../util/selection";
import {processAfterRender} from "./process";

Expand Down Expand Up @@ -43,8 +43,7 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => {
}

const pElement = hasClosestByMatchTag(startContainer, "P");

const preRenderElement = hasClosestByTag(startContainer, "PRE");
const preRenderElement = hasClosestByClassName(startContainer, "vditor-ir__marker--pre");
if (preRenderElement) {
const codeRenderElement = preRenderElement.firstChild as HTMLElement;

Expand Down

0 comments on commit 9c2db2f

Please sign in to comment.