jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
36 lines (34 loc) • 934 B
text/typescript
import { Engine } from '../models'
import { ICustomEvent } from 'jjb-lc-designable/shared'
import { IEngineContext } from '../types'
import { SelectNodeEvent } from '../events'
export const useWorkspaceEffect = (engine: Engine) => {
engine.subscribeWith<ICustomEvent<any, IEngineContext>>(
[
'append:node',
'insert:after',
'insert:before',
'insert:children',
'drag:node',
'drop:node',
'prepend:node',
'remove:node',
'select:node',
'update:children',
'wrap:node',
'update:node:props',
],
(event) => {
if (event.context?.workbench) {
engine.workbench.setActiveWorkspace(event.context.workspace)
}
}
)
engine.subscribeTo(SelectNodeEvent, (event) => {
engine.workbench.eachWorkspace((workspace) => {
if (workspace !== event.context.workspace) {
workspace.operation.selection.clear()
}
})
})
}