From 2e342593897bc8c86108eb3f023419cb561040ec Mon Sep 17 00:00:00 2001 From: Vanessa Date: Tue, 20 Jun 2023 22:01:49 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E8=BE=93=E5=85=A5[`{"']=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=8C=85=E8=A3=B9=E5=AF=B9=E5=BA=94=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=20=20(#1418)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 9f84027def0704b7c92f3e0c0d21343ce85fa75f. --- src/index.ts | 1 - src/ts/ir/input.ts | 4 +--- src/ts/sv/index.ts | 2 +- src/ts/sv/inputEvent.ts | 3 +-- src/ts/util/editorCommonEvent.ts | 21 ++++----------------- src/ts/util/selection.ts | 19 ------------------- src/ts/wysiwyg/input.ts | 4 +--- types/index.d.ts | 1 - 8 files changed, 8 insertions(+), 47 deletions(-) diff --git a/src/index.ts b/src/index.ts index df85fad80..c8ec3c5e3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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, diff --git a/src/ts/ir/input.ts b/src/ts/ir/input.ts index 9c724ca17..a2b7e9629 100644 --- a/src/ts/ir/input.ts +++ b/src/ts/ir/input.ts @@ -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"; @@ -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; diff --git a/src/ts/sv/index.ts b/src/ts/sv/index.ts index ac67b3352..a029fbe6b 100644 --- a/src/ts/sv/index.ts +++ b/src/ts/sv/index.ts @@ -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; diff --git a/src/ts/sv/inputEvent.ts b/src/ts/sv/inputEvent.ts index 4d4612216..b4fb8a541 100644 --- a/src/ts/sv/inputEvent.ts +++ b/src/ts/sv/inputEvent.ts @@ -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) => { @@ -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 === " ")) { // 开始可以输入空格 diff --git a/src/ts/util/editorCommonEvent.ts b/src/ts/util/editorCommonEvent.ts index 1c813c4ef..a51096f06 100644 --- a/src/ts/util/editorCommonEvent.ts +++ b/src/ts/util/editorCommonEvent.ts @@ -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)) { @@ -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()) { @@ -265,10 +255,7 @@ export const selectEvent = (vditor: IVditor, editorElement: HTMLElement) => { vditor.wysiwyg.hideComment(); } } - vditor.oldSelectContent = selectText.trim(); }); - } - editorElement.onmouseup = mouseup - document.onmouseup = mouseup + }; }); }; diff --git a/src/ts/util/selection.ts b/src/ts/util/selection.ts index f227dcc02..e38784cd1 100644 --- a/src/ts/util/selection.ts +++ b/src/ts/util/selection.ts @@ -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"); diff --git a/src/ts/wysiwyg/input.ts b/src/ts/wysiwyg/input.ts index be2512d66..a0f448fd7 100644 --- a/src/ts/wysiwyg/input.ts +++ b/src/ts/wysiwyg/input.ts @@ -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"; @@ -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" diff --git a/types/index.d.ts b/types/index.d.ts index a4c2e6c4b..5945bc0a7 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -754,7 +754,6 @@ interface IVditor { element: HTMLElement; options: IOptions; originalInnerHTML: string; - oldSelectContent: string; lute: Lute; currentMode: "sv" | "wysiwyg" | "ir"; devtools?: {