@dark-engine/platform-server
Version:
Dark renderer for server
35 lines (34 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.createPortal = void 0;
const core_1 = require('@dark-engine/core');
const utils_1 = require('../utils');
const $$portal = Symbol('portal');
function createPortal(slot, container, key) {
if (process.env.NODE_ENV !== 'production') {
if (!(container instanceof Element)) {
(0, utils_1.illegal)(`The createPortal only gets a valid element as container!`);
}
}
return Portal({ key, container, slot });
}
exports.createPortal = createPortal;
const Portal = (0, core_1.component)(
props => {
const cursor = (0, core_1.__useCursor)();
const el = props.container;
const scope = (0, core_1.useMemo)(() => {
(0, utils_1.removeContent)(el);
return { el };
}, []);
(0, core_1.useLayoutEffect)(() => {
return () => (0, utils_1.removeContent)(scope.el);
}, []);
cursor.hook.setIsPortal(true);
cursor.el = el;
scope.el = el;
return props.slot;
},
{ token: $$portal, displayName: 'Portal' },
);
//# sourceMappingURL=portal.js.map