Skip to content

Commit

Permalink
Revert "输入[`{"']自动包裹对应字符 (#1418)"
Browse files Browse the repository at this point in the history
This reverts commit 9f84027.
  • Loading branch information
Vanessa219 authored Jun 20, 2023
1 parent 9f84027 commit 3fc8bbc
Show file tree
Hide file tree
Showing 8 changed files with 8 additions and 47 deletions.
1 change: 0 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,6 @@ class Vditor extends VditorMethod {
this.vditor = {
currentMode: mergedOptions.mode,
element: id,
oldSelectContent: '',
hint: new Hint(mergedOptions.hint.extend),
lute: undefined,
options: mergedOptions,
Expand Down
4 changes: 1 addition & 3 deletions src/ts/ir/input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
import {hasClosestByTag} from "../util/hasClosestByHeadings";
import {log} from "../util/log";
import {processCodeRender} from "../util/processCode";
import {getSelectPosition, setRangeByWbr, setSelectionParcel} from "../util/selection";
import {getSelectPosition, setRangeByWbr} from "../util/selection";
import {renderToc} from "../util/toc";
import {processAfterRender} from "./process";
import {getMarkdown} from "../markdown/getMarkdown";
Expand Down Expand Up @@ -79,8 +79,6 @@ export const input = (vditor: IVditor, range: Range, ignoreSpace = false, event?
item.classList.remove("vditor-ir__node--expand");
});

setSelectionParcel(vditor, range, event);

if (!blockElement) {
// 使用顶级块元素,应使用 innerHTML
blockElement = vditor.ir.element;
Expand Down
2 changes: 1 addition & 1 deletion src/ts/sv/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import {processAfterRender} from "./process";
class Editor {
public range: Range;
public element: HTMLPreElement;
public composingLock = false;
public composingLock: boolean = false;
public processTimeoutId: number;
public hlToolbarTimeoutId: number;
public preventInput: boolean;
Expand Down
3 changes: 1 addition & 2 deletions src/ts/sv/inputEvent.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {scrollCenter} from "../util/editorCommonEvent";
import {hasClosestByAttribute} from "../util/hasClosest";
import {getSelectPosition, setRangeByWbr, setSelectionParcel} from "../util/selection";
import {getSelectPosition, setRangeByWbr} from "../util/selection";
import {getSideByType, processAfterRender, processSpinVditorSVDOM} from "./process";

export const inputEvent = (vditor: IVditor, event?: InputEvent) => {
Expand All @@ -10,7 +10,6 @@ export const inputEvent = (vditor: IVditor, event?: InputEvent) => {
startContainer = range.startContainer.childNodes[range.startOffset - 1];
}
let blockElement = hasClosestByAttribute(startContainer, "data-block", "0");
setSelectionParcel(vditor, range, event);
// 不调用 lute 解析
if (blockElement && event && (event.inputType === "deleteContentBackward" || event.data === " ")) {
// 开始可以输入空格
Expand Down
21 changes: 4 additions & 17 deletions src/ts/util/editorCommonEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,19 +124,10 @@ export const hotkeyEvent = (vditor: IVditor, editorElement: HTMLElement) => {
}

// 重置 comment
if((event.key === "Backspace" || matchHotKey("⌘X", event)) &&
vditor.options.comment.enable && vditor.currentMode === "wysiwyg") {
if (vditor.options.comment.enable && vditor.currentMode === "wysiwyg" &&
(event.key === "Backspace" || matchHotKey("⌘X", event))) {
vditor.wysiwyg.getComments(vditor);
}
//重置选中内容
if(event.key === 'Backspace' || event.key === "Delete" || matchHotKey("⌘X", event) || matchHotKey("⌘v", event)) {
vditor.oldSelectContent = '';
}
//如果通过键盘选中内容,获取oldSelectContent
const selectText = getSelectText(vditor[vditor.currentMode].element);
if(selectText.trim()) {
vditor.oldSelectContent = selectText
}

if (vditor.currentMode === "sv") {
if (mdProcessKeydown(vditor, event)) {
Expand Down Expand Up @@ -244,8 +235,7 @@ export const hotkeyEvent = (vditor: IVditor, editorElement: HTMLElement) => {

export const selectEvent = (vditor: IVditor, editorElement: HTMLElement) => {
editorElement.addEventListener("selectstart", (event: Event & { target: HTMLElement }) => {
const mouseup = (e: Event)=> {
e.stopPropagation(); //阻止冒泡
editorElement.onmouseup = () => {
setTimeout(() => { // 鼠标放开后 range 没有即时更新
const selectText = getSelectText(vditor[vditor.currentMode].element);
if (selectText.trim()) {
Expand All @@ -265,10 +255,7 @@ export const selectEvent = (vditor: IVditor, editorElement: HTMLElement) => {
vditor.wysiwyg.hideComment();
}
}
vditor.oldSelectContent = selectText.trim();
});
}
editorElement.onmouseup = mouseup
document.onmouseup = mouseup
};
});
};
19 changes: 0 additions & 19 deletions src/ts/util/selection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -235,25 +235,6 @@ export const setRangeByWbr = (element: HTMLElement, range: Range) => {
setSelectionFocus(range);
};

// 设置包裹范围字符
export const setSelectionParcel = (vditor: IVditor, range: Range, event: InputEvent) => {
const char = event ? event.data : '';
const oldSelectContent = vditor.oldSelectContent;
const charMaps = ["'", '"', '`', '{'];
let charIndex = -1;
if((charIndex = charMaps.indexOf(char)) > -1) {
let token = charMaps[charIndex];
if(token === '`') token = `\``;
else if(token === '{') token = `}`;
const textNode = document.createTextNode(oldSelectContent ? `${oldSelectContent}${token}` : `${token}`)
if(oldSelectContent) {
range.deleteContents();
range.insertNode(textNode);
vditor.oldSelectContent = '';
}
}
}

export const insertHTML = (html: string, vditor: IVditor) => {
// 使用 lute 方法会添加 p 元素,只有一个 p 元素的时候进行删除
const tempElement = document.createElement("div");
Expand Down
4 changes: 1 addition & 3 deletions src/ts/wysiwyg/input.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import { hasClosestByTag} from "../util/hasClosestByHeadings";
import {log} from "../util/log";
import {processCodeRender} from "../util/processCode";
import {setRangeByWbr, setSelectionParcel} from "../util/selection";
import {setRangeByWbr} from "../util/selection";
import {renderToc} from "../util/toc";
import {afterRenderEvent} from "./afterRenderEvent";
import {previoueIsEmptyA} from "./inlineTag";
Expand All @@ -18,8 +18,6 @@ export const input = (vditor: IVditor, range: Range, event?: InputEvent) => {
blockElement = vditor.wysiwyg.element;
}

setSelectionParcel(vditor, range, event);

if (event && event.inputType !== "formatItalic"
&& event.inputType !== "deleteByDrag"
&& event.inputType !== "insertFromDrop"
Expand Down
1 change: 0 additions & 1 deletion types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -754,7 +754,6 @@ interface IVditor {
element: HTMLElement;
options: IOptions;
originalInnerHTML: string;
oldSelectContent: string;
lute: Lute;
currentMode: "sv" | "wysiwyg" | "ir";
devtools?: {
Expand Down

0 comments on commit 3fc8bbc

Please sign in to comment.