From 0e705d6a0bdb0922efd5c47edd8ca9eba9964199 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Wed, 3 Jul 2024 20:17:32 +0800 Subject: [PATCH] fix: custom override method removes support for asynchronous #672 --- docs/en/guide/override.md | 8 ++++---- docs/guide/override.md | 8 ++++---- src/editor/core/event/handlers/copy.ts | 5 ++--- src/editor/core/event/handlers/drop.ts | 5 ++--- src/editor/core/event/handlers/paste.ts | 9 +++------ src/editor/core/override/Override.ts | 14 +++----------- src/editor/utils/index.ts | 4 ---- 7 files changed, 18 insertions(+), 35 deletions(-) diff --git a/docs/en/guide/override.md b/docs/en/guide/override.md index 05bc8e8..61e653c 100644 --- a/docs/en/guide/override.md +++ b/docs/en/guide/override.md @@ -7,7 +7,7 @@ import Editor from "@hufe921/canvas-editor" const instance = new Editor(container, data, options) -instance.override.overrideFunction = () => void | Promise | IOverrideResult | Promise +instance.override.overrideFunction = () => unknown | IOverrideResult ``` ```typescript @@ -23,7 +23,7 @@ Feature: Override internal paste function Usage: ```javascript -instance.override.paste = (evt?: ClipboardEvent) => void | Promise | IOverrideResult | Promise +instance.override.paste = (evt?: ClipboardEvent) => unknown | IOverrideResult ``` ## copy @@ -33,7 +33,7 @@ Feature: Override internal copy function Usage: ```javascript -instance.override.copy = () => void | Promise | IOverrideResult | Promise +instance.override.copy = () => unknown | IOverrideResult ``` ## drop @@ -43,5 +43,5 @@ Feature: Override internal drop function Usage: ```javascript -instance.override.drop = (evt: DragEvent) => void | Promise | IOverrideResult | Promise +instance.override.drop = (evt: DragEvent) => unknown | IOverrideResult ``` diff --git a/docs/guide/override.md b/docs/guide/override.md index a1c53d2..b48958b 100644 --- a/docs/guide/override.md +++ b/docs/guide/override.md @@ -7,7 +7,7 @@ import Editor from "@hufe921/canvas-editor" const instance = new Editor(container, data, options) -instance.override.overrideFunction = () => void | Promise | IOverrideResult | Promise +instance.override.overrideFunction = () => unknown | IOverrideResult ``` ```typescript @@ -23,7 +23,7 @@ interface IOverrideResult { 用法: ```javascript -instance.override.paste = (evt?: ClipboardEvent) => void | Promise | IOverrideResult | Promise +instance.override.paste = (evt?: ClipboardEvent) => unknown | IOverrideResult ``` ## copy @@ -33,7 +33,7 @@ instance.override.paste = (evt?: ClipboardEvent) => void | Promise | IOver 用法: ```javascript -instance.override.copy = () => void | Promise | IOverrideResult | Promise +instance.override.copy = () => unknown | IOverrideResult ``` ## drop @@ -43,5 +43,5 @@ instance.override.copy = () => void | Promise | IOverrideResult | Promise< 用法: ```javascript -instance.override.drop = (evt: DragEvent) => void | Promise | IOverrideResult | Promise +instance.override.drop = (evt: DragEvent) => unknown | IOverrideResult ``` diff --git a/src/editor/core/event/handlers/copy.ts b/src/editor/core/event/handlers/copy.ts index d063d4b..412539f 100644 --- a/src/editor/core/event/handlers/copy.ts +++ b/src/editor/core/event/handlers/copy.ts @@ -1,18 +1,17 @@ import { ElementType } from '../../../dataset/enum/Element' import { IElement } from '../../../interface/Element' import { ITr } from '../../../interface/table/Tr' -import { isPromiseFunction } from '../../../utils' import { writeElementList } from '../../../utils/clipboard' import { zipElementList } from '../../../utils/element' import { IOverrideResult } from '../../override/Override' import { CanvasEvent } from '../CanvasEvent' -export async function copy(host: CanvasEvent) { +export function copy(host: CanvasEvent) { const draw = host.getDraw() // 自定义粘贴事件 const { copy } = draw.getOverride() if (copy) { - const overrideResult = isPromiseFunction(copy) ? await copy() : copy() + const overrideResult = copy() // 默认阻止默认事件 if ((overrideResult)?.preventDefault !== false) return } diff --git a/src/editor/core/event/handlers/drop.ts b/src/editor/core/event/handlers/drop.ts index b235a55..bda83f5 100644 --- a/src/editor/core/event/handlers/drop.ts +++ b/src/editor/core/event/handlers/drop.ts @@ -1,14 +1,13 @@ -import { isPromiseFunction } from '../../../utils' import { IOverrideResult } from '../../override/Override' import { CanvasEvent } from '../CanvasEvent' import { pasteImage } from './paste' -export async function drop(evt: DragEvent, host: CanvasEvent) { +export function drop(evt: DragEvent, host: CanvasEvent) { const draw = host.getDraw() // 自定义拖放事件 const { drop } = draw.getOverride() if (drop) { - const overrideResult = isPromiseFunction(drop) ? await drop(evt) : drop(evt) + const overrideResult = drop(evt) // 默认阻止默认事件 if ((overrideResult)?.preventDefault !== false) return } diff --git a/src/editor/core/event/handlers/paste.ts b/src/editor/core/event/handlers/paste.ts index 76de1a9..0480eb1 100644 --- a/src/editor/core/event/handlers/paste.ts +++ b/src/editor/core/event/handlers/paste.ts @@ -13,7 +13,6 @@ import { getElementListByHTML } from '../../../utils/element' import { CanvasEvent } from '../CanvasEvent' -import { isPromiseFunction } from '../../../utils' import { IOverrideResult } from '../../override/Override' export function pasteElement(host: CanvasEvent, elementList: IElement[]) { @@ -98,7 +97,7 @@ export function pasteImage(host: CanvasEvent, file: File | Blob) { } } -export async function pasteByEvent(host: CanvasEvent, evt: ClipboardEvent) { +export function pasteByEvent(host: CanvasEvent, evt: ClipboardEvent) { const draw = host.getDraw() const isReadonly = draw.isReadonly() if (isReadonly) return @@ -107,9 +106,7 @@ export async function pasteByEvent(host: CanvasEvent, evt: ClipboardEvent) { // 自定义粘贴事件 const { paste } = draw.getOverride() if (paste) { - const overrideResult = isPromiseFunction(paste) - ? await paste(evt) - : paste(evt) + const overrideResult = paste(evt) // 默认阻止默认事件 if ((overrideResult)?.preventDefault !== false) return } @@ -165,7 +162,7 @@ export async function pasteByApi(host: CanvasEvent, options?: IPasteOption) { // 自定义粘贴事件 const { paste } = draw.getOverride() if (paste) { - const overrideResult = isPromiseFunction(paste) ? await paste() : paste() + const overrideResult = paste() // 默认阻止默认事件 if ((overrideResult)?.preventDefault !== false) return } diff --git a/src/editor/core/override/Override.ts b/src/editor/core/override/Override.ts index 9053fbf..93825ac 100644 --- a/src/editor/core/override/Override.ts +++ b/src/editor/core/override/Override.ts @@ -4,16 +4,8 @@ export interface IOverrideResult { export class Override { public paste: - | (( - evt?: ClipboardEvent - ) => void | Promise | IOverrideResult | Promise) - | undefined - public copy: - | (() => void | Promise | IOverrideResult | Promise) - | undefined - public drop: - | (( - evt: DragEvent - ) => void | Promise | IOverrideResult | Promise) + | ((evt?: ClipboardEvent) => unknown | IOverrideResult) | undefined + public copy: (() => unknown | IOverrideResult) | undefined + public drop: ((evt: DragEvent) => unknown | IOverrideResult) | undefined } diff --git a/src/editor/utils/index.ts b/src/editor/utils/index.ts index b00a783..60c8a27 100644 --- a/src/editor/utils/index.ts +++ b/src/editor/utils/index.ts @@ -326,7 +326,3 @@ export function isObjectEqual(obj1: unknown, obj2: unknown): boolean { } return !obj1Keys.some(key => obj2[key] !== obj1[key]) } - -export function isPromiseFunction(fn: Function): boolean { - return fn?.constructor?.name === 'AsyncFunction' -}