UNPKG

jjb-lc-designable

Version:

基于alibaba-designable源码二次封装的表单设计器。

29 lines (27 loc) 841 B
import { AppendNodeEvent, TreeNode } from 'jjb-lc-designable/core' import { useDesigner } from 'jjb-lc-designable/react' import { matchComponent, matchChildComponent } from '../shared' export const useDropTemplate = ( name: string, getChildren: (source: TreeNode[]) => TreeNode[] ) => { return useDesigner((designer) => { return designer.subscribeTo(AppendNodeEvent, (event) => { const { source, target } = event.data if (Array.isArray(target)) return if (!Array.isArray(source)) return if ( matchComponent( target, (key) => key === name && source.every((child) => !matchChildComponent(child, name)) ) && target.children.length === 0 ) { target.setChildren(...getChildren(source)) return false } }) }) }