import { flat, isNode } from "@daybrush/utils"; import { Component } from "./base/Component"; import { ComponentProvider } from "./base/ComponentProvider"; import { Provider } from "./base/Provider"; import { CompatElement } from "./types"; export function findDOMNode(comp: Component | Node | null): Node | null { if (!comp || isNode(comp)) { return comp as Node | null; } const providers = comp.$_p._ps; if (!providers.length) { return null; } return findDOMNode(providers[0].b); } export function findNodeProvider(provider: Provider): Provider | null { if (!provider) { return; } if (provider.b && isNode(provider.b)) { return provider as Provider; } const providers = provider._ps; if (!providers.length) { return null; } return findNodeProvider(providers[0]); } export function createElement( type: any, props: any, ...children: any[] ): CompatElement { const { key, ref, ...otherProps } = props || {}; return { type, key, ref, props: { ...otherProps, children: flat(children).filter(child => child != null && child !== false) }, }; }