@ffsm/factory
Version:
A powerful component factory for React that simplifies creation of reusable components with built-in support for composition patterns, conditional rendering, prop management, and TypeScript integration.
30 lines (29 loc) • 1.5 kB
TypeScript
import { ComponentPropsWithRef, ComponentType, ElementType, PropsWithoutRef, ReactNode } from 'react';
import { FactoryOptions, FactoryProps, InitialChildren, InitialProps, ObjectProps } from './types';
/**
* Creates a shallow copy of props object or returns empty object if undefined
* @internal
*/
export declare function cloneProps<Props extends ObjectProps>(props: Props | undefined): Props;
/**
* Retrieves and removes a property from an object
* @internal
*/
export declare function getAndDeleteProp<Result>(props: Record<string, unknown>, key: string, defaultValue?: unknown): Result;
/**
* Extracts and processes component props from init config and user props
* @internal
*/
export declare function extractProps<Element extends ElementType, AdditionalProps extends ObjectProps>(init: InitialProps<Element, AdditionalProps> | undefined, props: PropsWithoutRef<FactoryProps<ElementType, AdditionalProps>>): {
Component: ComponentType<ComponentPropsWithRef<Element>>;
initProps: InitialProps<Element, AdditionalProps>;
asSlot: boolean;
outlet: InitialChildren<Element, AdditionalProps>;
children: ReactNode;
merged: ComponentPropsWithRef<Element>;
};
/**
* Filters props based on provided options
* @internal
*/
export declare function filterProps<Element extends ElementType, AdditionalProps extends ObjectProps>(props: FactoryProps<Element, AdditionalProps>, options?: FactoryOptions<Element, AdditionalProps>): FactoryProps<Element, AdditionalProps>;