fix: 考虑兼容原来只处理4向的场景

This commit is contained in:
力皓 2021-01-25 14:15:12 +08:00
parent 95a8356803
commit e3fc9b4cea

View File

@ -98,6 +98,20 @@ export interface OldPropConfig {
liveTextEditing?: any; liveTextEditing?: any;
} }
type ResizeHandler = (dragment: any, triggerDirection: string) => boolean;
type ResizeCompositeHandler = { handle: ResizeHandler, availableDirects: string[] | undefined };
type CanResize =
| boolean
| ResizeHandler
| ResizeCompositeHandler;
function isResizeCompositeHandler(resize: CanResize): resize is ResizeCompositeHandler {
if ((resize as any).handle) {
return true;
}
return false;
}
// from vision 5.4 // from vision 5.4
export interface OldPrototypeConfig { export interface OldPrototypeConfig {
packageName: string; // => npm.package packageName: string; // => npm.package
@ -169,7 +183,7 @@ export interface OldPrototypeConfig {
subtreeModified?(this: Node): any; // => ? hooks subtreeModified?(this: Node): any; // => ? hooks
// => ? // => ?
canResizing?: ((dragment: any, triggerDirection: string) => boolean) | boolean; canResizing?: CanResize;
onResizeStart?: (e: MouseEvent, triggerDirection: string, dragment: Node) => void; onResizeStart?: (e: MouseEvent, triggerDirection: string, dragment: Node) => void;
onResize?: (e: MouseEvent, triggerDirection: string, dragment: Node, moveX: number, moveY: number) => void; onResize?: (e: MouseEvent, triggerDirection: string, dragment: Node, moveX: number, moveY: number) => void;
onResizeEnd?: (e: MouseEvent, triggerDirection: string, dragment: Node) => void; onResizeEnd?: (e: MouseEvent, triggerDirection: string, dragment: Node) => void;
@ -623,7 +637,6 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
didDropIn, // onNodeAdd didDropIn, // onNodeAdd
subtreeModified, // onSubtreeModified subtreeModified, // onSubtreeModified
canResizing, // resizing
onResizeStart, // onResizeStart onResizeStart, // onResizeStart
onResize, // onResize onResize, // onResize
onResizeEnd, // onResizeEnd onResizeEnd, // onResizeEnd
@ -631,6 +644,9 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
schema, schema,
isTopFixed, isTopFixed,
} = oldConfig; } = oldConfig;
let {
canResizing, // resizing
} = oldConfig;
const meta: any = { const meta: any = {
componentName, componentName,
@ -746,13 +762,16 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) {
experimental.transducers = transducers; experimental.transducers = transducers;
} }
if (canResizing) { if (canResizing) {
// TODO: enhance let availableDirects = ['n', 'e', 's', 'w'];
experimental.getResizingHandlers = (currentNode: any) => { if (isResizeCompositeHandler(canResizing)) {
const directs = ['n', 'e', 's', 'w', 'ne', 'nw', 'se', 'sw']; availableDirects = canResizing.availableDirects || availableDirects;
if (canResizing === true) { canResizing = canResizing.handle;
return directs;
} }
return directs.filter((d) => canResizing(currentNode, d)); experimental.getResizingHandlers = (currentNode: any) => {
if (canResizing === true) {
return availableDirects;
}
return availableDirects.filter((d) => (canResizing as any)(currentNode, d));
}; };
} }