@dark-engine/core
Version:
The lightweight and powerful UI rendering engine without dependencies and written in TypeScript (Browser, Node.js, Android, iOS, Windows, Linux, macOS)
27 lines (26 loc) • 857 B
JavaScript
import { __useCursor as useCursor, __useSSR as useSSR } from '../internal';
import { useLayoutEffect } from '../use-layout-effect';
import { detectIsTagVirtualNode } from '../view';
import { collectElements } from '../walk';
import { component } from '../component';
import { platform } from '../platform';
const $$shadow = Symbol('shadow');
const Shadow = component(
({ isOpen, slot }) => {
const { isSSR } = useSSR();
const cursor = useCursor();
useLayoutEffect(() => {
if (isSSR) return;
const fibers = collectElements(cursor, x => x);
for (const fiber of fibers) {
if (detectIsTagVirtualNode(fiber.inst)) {
platform.toggle(fiber.el, isOpen);
}
}
}, [isOpen]);
return slot;
},
{ token: $$shadow, displayName: 'Shadow' },
);
export { Shadow };
//# sourceMappingURL=shadow.js.map