mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-03 07:18:49 +01:00
This commit is contained in:
parent
9fdda726e1
commit
a0e1d8e2e9
2 changed files with 23 additions and 26 deletions
|
|
@ -70,7 +70,7 @@ export class Toolbar {
|
|||
|
||||
public render(protyle: IProtyle, range: Range, event?: KeyboardEvent) {
|
||||
this.range = range;
|
||||
const nodeElement = hasClosestBlock(range.startContainer);
|
||||
let nodeElement = hasClosestBlock(range.startContainer);
|
||||
if (!nodeElement || protyle.disabled) {
|
||||
this.element.classList.add("fn__none");
|
||||
return;
|
||||
|
|
@ -100,8 +100,17 @@ export class Toolbar {
|
|||
if (event) { // 在 keyup 中使用 shift+方向键选中
|
||||
if (event.key === "ArrowLeft") {
|
||||
this.range = setLastNodeRange(getContenteditableElement(startElement), range, false);
|
||||
} else {
|
||||
} else if (event.key === "ArrowRight") {
|
||||
this.range = setFirstNodeRange(getContenteditableElement(endElement), range);
|
||||
this.range.collapse(false);
|
||||
} else if (event.key === "ArrowUp") {
|
||||
this.range = setFirstNodeRange(getContenteditableElement(endElement), range);
|
||||
nodeElement = hasClosestBlock(endElement)
|
||||
if (!nodeElement) {
|
||||
return;
|
||||
}
|
||||
} else if (event.key === "ArrowDown") {
|
||||
this.range = setLastNodeRange(getContenteditableElement(startElement), range, false);
|
||||
}
|
||||
} else {
|
||||
this.range = setLastNodeRange(getContenteditableElement(nodeElement), range, false);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
import {matchHotKey} from "../util/hotKey";
|
||||
import {fetchPost} from "../../util/fetch";
|
||||
import {writeText} from "../util/compatibility";
|
||||
import {focusByOffset, getSelectionOffset, setFirstNodeRange, setLastNodeRange} from "../util/selection";
|
||||
import {
|
||||
focusByOffset,
|
||||
getSelectionOffset,
|
||||
setFirstNodeRange,
|
||||
} from "../util/selection";
|
||||
import {fullscreen, netImg2LocalAssets} from "../breadcrumb/action";
|
||||
import {setPadding} from "../ui/initUI";
|
||||
/// #if !MOBILE
|
||||
|
|
@ -86,8 +90,7 @@ export const upSelect = (options: {
|
|||
options.event.stopPropagation();
|
||||
options.event.preventDefault();
|
||||
} else {
|
||||
const start = getSelectionOffset(options.nodeElement, options.editorElement, options.range).start;
|
||||
if (start !== 0) {
|
||||
if (getSelectionOffset(options.nodeElement, options.editorElement, options.range).start !== 0) {
|
||||
const editElement = getContenteditableElement(options.nodeElement);
|
||||
if (editElement.tagName === "TABLE") {
|
||||
const cellElement = hasClosestByMatchTag(options.range.startContainer, "TH") || hasClosestByMatchTag(options.range.startContainer, "TD") || editElement.querySelector("th, td");
|
||||
|
|
@ -97,16 +100,9 @@ export const upSelect = (options: {
|
|||
options.event.preventDefault();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
const firstIndex = editElement.textContent.indexOf("\n");
|
||||
if (firstIndex === -1 || start <= firstIndex || start === editElement.textContent.replace("\n", " ").indexOf("\n")) {
|
||||
setFirstNodeRange(editElement, options.range);
|
||||
options.event.stopPropagation();
|
||||
options.event.preventDefault();
|
||||
return;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
} else{
|
||||
// 选中上一个节点的处理在 toolbar/index.ts 中 `shift+方向键或三击选中`
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -139,17 +135,9 @@ export const downSelect = (options: {
|
|||
options.event.stopPropagation();
|
||||
options.event.preventDefault();
|
||||
} else {
|
||||
const editElement = getContenteditableElement(options.nodeElement);
|
||||
const end = getSelectionOffset(options.nodeElement, options.editorElement, options.range).end;
|
||||
if (end < editElement.textContent.length) {
|
||||
if (end > editElement.textContent.lastIndexOf("\n")) {
|
||||
setLastNodeRange(editElement, options.range, false);
|
||||
options.event.stopPropagation();
|
||||
options.event.preventDefault();
|
||||
return;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
if (getSelectionOffset(options.nodeElement, options.editorElement, options.range).end < getContenteditableElement(options.nodeElement).textContent.length) {
|
||||
// 选中下一个节点的处理在 toolbar/index.ts 中 `shift+方向键或三击选中`
|
||||
return;
|
||||
}
|
||||
}
|
||||
options.range.collapse(false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue