jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
30 lines (28 loc) • 1 kB
text/typescript
import { Engine } from '../models'
import { ViewportResizeEvent, ViewportScrollEvent } from '../events'
export const useViewportEffect = (engine: Engine) => {
engine.subscribeTo(ViewportResizeEvent, (event) => {
const currentWorkspace = event?.context?.workspace
if (!currentWorkspace) return
const viewport = currentWorkspace.viewport
const outline = currentWorkspace.outline
if (viewport.matchViewport(event.data.target)) {
viewport.digestViewport()
}
if (outline.matchViewport(event.data.target)) {
outline.digestViewport()
}
})
engine.subscribeTo(ViewportScrollEvent, (event) => {
const currentWorkspace = event?.context?.workspace
if (!currentWorkspace) return
const viewport = currentWorkspace.viewport
const outline = currentWorkspace.outline
if (viewport.matchViewport(event.data.target)) {
viewport.digestViewport()
}
if (outline.matchViewport(event.data.target)) {
outline.digestViewport()
}
})
}