packages/react/src/hooks/useDesigner.ts (18 lines of code) (raw):
import { useContext, useEffect } from 'react'
import { Engine } from '@designable/core'
import { DesignerEngineContext } from '../context'
import { isFn, globalThisPolyfill } from '@designable/shared'
export interface IEffects {
(engine: Engine): void
}
export const useDesigner = (effects?: IEffects): Engine => {
const designer: Engine =
globalThisPolyfill['__DESIGNABLE_ENGINE__'] ||
useContext(DesignerEngineContext)
useEffect(() => {
if (isFn(effects)) {
return effects(designer)
}
}, [])
return designer
}