UNPKG

@dark-engine/platform-server

Version:
32 lines (31 loc) 941 B
import { component, useMemo, useLayoutEffect, __useCursor as useCursor } from '@dark-engine/core'; import { illegal, removeContent } from '../utils'; const $$portal = Symbol('portal'); function createPortal(slot, container, key) { if (process.env.NODE_ENV !== 'production') { if (!(container instanceof Element)) { illegal(`The createPortal only gets a valid element as container!`); } } return Portal({ key, container, slot }); } const Portal = component( props => { const cursor = useCursor(); const el = props.container; const scope = useMemo(() => { removeContent(el); return { el }; }, []); useLayoutEffect(() => { return () => removeContent(scope.el); }, []); cursor.hook.setIsPortal(true); cursor.el = el; scope.el = el; return props.slot; }, { token: $$portal, displayName: 'Portal' }, ); export { createPortal }; //# sourceMappingURL=portal.js.map