jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
19 lines • 726 B
JavaScript
import { AppendNodeEvent } from 'jjb-lc-designable/core';
import { useDesigner } from 'jjb-lc-designable/react';
import { matchComponent, matchChildComponent } from '../shared';
export const useDropTemplate = (name, getChildren) => {
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;
}
});
});
};