fix: custom override method removes support for asynchronous #672
This commit is contained in:
@@ -7,7 +7,7 @@ import Editor from "@hufe921/canvas-editor"
|
|||||||
|
|
||||||
const instance = new Editor(container, <IElement[]>data, options)
|
const instance = new Editor(container, <IElement[]>data, options)
|
||||||
|
|
||||||
instance.override.overrideFunction = () => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.overrideFunction = () => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
@@ -23,7 +23,7 @@ Feature: Override internal paste function
|
|||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.paste = (evt?: ClipboardEvent) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.paste = (evt?: ClipboardEvent) => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
## copy
|
## copy
|
||||||
@@ -33,7 +33,7 @@ Feature: Override internal copy function
|
|||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.copy = () => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.copy = () => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
## drop
|
## drop
|
||||||
@@ -43,5 +43,5 @@ Feature: Override internal drop function
|
|||||||
Usage:
|
Usage:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.drop = (evt: DragEvent) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.drop = (evt: DragEvent) => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import Editor from "@hufe921/canvas-editor"
|
|||||||
|
|
||||||
const instance = new Editor(container, <IElement[]>data, options)
|
const instance = new Editor(container, <IElement[]>data, options)
|
||||||
|
|
||||||
instance.override.overrideFunction = () => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.overrideFunction = () => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
@@ -23,7 +23,7 @@ interface IOverrideResult {
|
|||||||
用法:
|
用法:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.paste = (evt?: ClipboardEvent) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.paste = (evt?: ClipboardEvent) => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
## copy
|
## copy
|
||||||
@@ -33,7 +33,7 @@ instance.override.paste = (evt?: ClipboardEvent) => void | Promise<void> | IOver
|
|||||||
用法:
|
用法:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.copy = () => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.copy = () => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|
||||||
## drop
|
## drop
|
||||||
@@ -43,5 +43,5 @@ instance.override.copy = () => void | Promise<void> | IOverrideResult | Promise<
|
|||||||
用法:
|
用法:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
instance.override.drop = (evt: DragEvent) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>
|
instance.override.drop = (evt: DragEvent) => unknown | IOverrideResult
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
import { ElementType } from '../../../dataset/enum/Element'
|
import { ElementType } from '../../../dataset/enum/Element'
|
||||||
import { IElement } from '../../../interface/Element'
|
import { IElement } from '../../../interface/Element'
|
||||||
import { ITr } from '../../../interface/table/Tr'
|
import { ITr } from '../../../interface/table/Tr'
|
||||||
import { isPromiseFunction } from '../../../utils'
|
|
||||||
import { writeElementList } from '../../../utils/clipboard'
|
import { writeElementList } from '../../../utils/clipboard'
|
||||||
import { zipElementList } from '../../../utils/element'
|
import { zipElementList } from '../../../utils/element'
|
||||||
import { IOverrideResult } from '../../override/Override'
|
import { IOverrideResult } from '../../override/Override'
|
||||||
import { CanvasEvent } from '../CanvasEvent'
|
import { CanvasEvent } from '../CanvasEvent'
|
||||||
|
|
||||||
export async function copy(host: CanvasEvent) {
|
export function copy(host: CanvasEvent) {
|
||||||
const draw = host.getDraw()
|
const draw = host.getDraw()
|
||||||
// 自定义粘贴事件
|
// 自定义粘贴事件
|
||||||
const { copy } = draw.getOverride()
|
const { copy } = draw.getOverride()
|
||||||
if (copy) {
|
if (copy) {
|
||||||
const overrideResult = isPromiseFunction(copy) ? await copy() : copy()
|
const overrideResult = copy()
|
||||||
// 默认阻止默认事件
|
// 默认阻止默认事件
|
||||||
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import { isPromiseFunction } from '../../../utils'
|
|
||||||
import { IOverrideResult } from '../../override/Override'
|
import { IOverrideResult } from '../../override/Override'
|
||||||
import { CanvasEvent } from '../CanvasEvent'
|
import { CanvasEvent } from '../CanvasEvent'
|
||||||
import { pasteImage } from './paste'
|
import { pasteImage } from './paste'
|
||||||
|
|
||||||
export async function drop(evt: DragEvent, host: CanvasEvent) {
|
export function drop(evt: DragEvent, host: CanvasEvent) {
|
||||||
const draw = host.getDraw()
|
const draw = host.getDraw()
|
||||||
// 自定义拖放事件
|
// 自定义拖放事件
|
||||||
const { drop } = draw.getOverride()
|
const { drop } = draw.getOverride()
|
||||||
if (drop) {
|
if (drop) {
|
||||||
const overrideResult = isPromiseFunction(drop) ? await drop(evt) : drop(evt)
|
const overrideResult = drop(evt)
|
||||||
// 默认阻止默认事件
|
// 默认阻止默认事件
|
||||||
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import {
|
|||||||
getElementListByHTML
|
getElementListByHTML
|
||||||
} from '../../../utils/element'
|
} from '../../../utils/element'
|
||||||
import { CanvasEvent } from '../CanvasEvent'
|
import { CanvasEvent } from '../CanvasEvent'
|
||||||
import { isPromiseFunction } from '../../../utils'
|
|
||||||
import { IOverrideResult } from '../../override/Override'
|
import { IOverrideResult } from '../../override/Override'
|
||||||
|
|
||||||
export function pasteElement(host: CanvasEvent, elementList: IElement[]) {
|
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 draw = host.getDraw()
|
||||||
const isReadonly = draw.isReadonly()
|
const isReadonly = draw.isReadonly()
|
||||||
if (isReadonly) return
|
if (isReadonly) return
|
||||||
@@ -107,9 +106,7 @@ export async function pasteByEvent(host: CanvasEvent, evt: ClipboardEvent) {
|
|||||||
// 自定义粘贴事件
|
// 自定义粘贴事件
|
||||||
const { paste } = draw.getOverride()
|
const { paste } = draw.getOverride()
|
||||||
if (paste) {
|
if (paste) {
|
||||||
const overrideResult = isPromiseFunction(paste)
|
const overrideResult = paste(evt)
|
||||||
? await paste(evt)
|
|
||||||
: paste(evt)
|
|
||||||
// 默认阻止默认事件
|
// 默认阻止默认事件
|
||||||
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
||||||
}
|
}
|
||||||
@@ -165,7 +162,7 @@ export async function pasteByApi(host: CanvasEvent, options?: IPasteOption) {
|
|||||||
// 自定义粘贴事件
|
// 自定义粘贴事件
|
||||||
const { paste } = draw.getOverride()
|
const { paste } = draw.getOverride()
|
||||||
if (paste) {
|
if (paste) {
|
||||||
const overrideResult = isPromiseFunction(paste) ? await paste() : paste()
|
const overrideResult = paste()
|
||||||
// 默认阻止默认事件
|
// 默认阻止默认事件
|
||||||
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
if ((<IOverrideResult>overrideResult)?.preventDefault !== false) return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,16 +4,8 @@ export interface IOverrideResult {
|
|||||||
|
|
||||||
export class Override {
|
export class Override {
|
||||||
public paste:
|
public paste:
|
||||||
| ((
|
| ((evt?: ClipboardEvent) => unknown | IOverrideResult)
|
||||||
evt?: ClipboardEvent
|
|
||||||
) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>)
|
|
||||||
| undefined
|
|
||||||
public copy:
|
|
||||||
| (() => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>)
|
|
||||||
| undefined
|
|
||||||
public drop:
|
|
||||||
| ((
|
|
||||||
evt: DragEvent
|
|
||||||
) => void | Promise<void> | IOverrideResult | Promise<IOverrideResult>)
|
|
||||||
| undefined
|
| undefined
|
||||||
|
public copy: (() => unknown | IOverrideResult) | undefined
|
||||||
|
public drop: ((evt: DragEvent) => unknown | IOverrideResult) | undefined
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -326,7 +326,3 @@ export function isObjectEqual(obj1: unknown, obj2: unknown): boolean {
|
|||||||
}
|
}
|
||||||
return !obj1Keys.some(key => obj2[key] !== obj1[key])
|
return !obj1Keys.some(key => obj2[key] !== obj1[key])
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isPromiseFunction(fn: Function): boolean {
|
|
||||||
return fn?.constructor?.name === 'AsyncFunction'
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user