import { TagName } from '@native-html/transient-render-engine'; import { ComponentType } from 'react'; import IMGElement from '../elements/IMGElement'; import OLElement from '../elements/OLElement'; import ULElement from '../elements/ULElement'; import { useAElementProps } from '../renderers/ARenderer'; import { useIMGElementProps } from '../renderers/IMGRenderer'; import { useOLElementProps } from '../renderers/OLRenderer'; import { useULElementProps } from '../renderers/ULRenderer'; import { InternalRendererProps, TDefaultRendererProps } from '../shared-types'; declare const specialRenderersConfig: { img: { hook: typeof useIMGElementProps; Element: typeof IMGElement; }; ol: { hook: typeof useOLElementProps; Element: typeof OLElement; }; ul: { hook: typeof useULElementProps; Element: typeof ULElement; }; a: { hook: typeof useAElementProps; Element: undefined; }; }; export type InternalSpecialRenderedTag = keyof typeof specialRenderersConfig; export interface InternalRendererConfig
{ Renderer: ComponentType
;
rendererProps: P;
}
/**
* Resuse internal renderers logic for infinite customization!
*
* @remarks `tagName` must be invariant, i.e. it cannot change. You would
* otherwise break the rules of hooks.
*
* @param tagName - **Invariant** The tag name to extend.
* @param props - The props passed to the custom renderer.
* @typeParam T - The name of the tag to target.
* @returns An object with two fields: `Renderer` (the internal react
* component) and `rendererProps`, the internal component props.
*
* @public
*/
export default function useInternalRenderer