UNPKG

siegel

Version:

Web application development ecosystem

20 lines (19 loc) 1.34 kB
import React from 'react'; import type { CoreUIComponent, CoreUIComponentWithDefaults } from './_internals/types'; type NewProps<_Props extends Obj, _NewDefaults extends Partial<_Props>> = { [K in keyof _Props & keyof _NewDefaults]?: _NewDefaults[K] extends object ? _NewDefaults[K] extends Extract<_NewDefaults[K], AnyFunc> ? _Props[K] : NonNullable<_Props[K]> extends object ? NonNullable<_Props[K]> extends Extract<NonNullable<_Props[K]>, AnyFunc> ? _Props[K] : NewProps<NonNullable<_Props[K]>, _NewDefaults[K]> : _Props[K] : _Props[K]; } & Omit<_Props, keyof _NewDefaults>; /** * Applies default props to a given Siegel component function, * so you don't need to apply them every time you use the component * * @param Component - Siegel component function * @param newDefaults - default props to apply * @returns Siegel component function with applied default props */ declare function withDefaults<_ComponentWithDefaults extends CoreUIComponentWithDefaults<CoreUIComponent<any, any>>, _Props extends Parameters<_ComponentWithDefaults>[0], _NewDefaults extends DeepPartial<_Props>>(Component: _ComponentWithDefaults, newDefaults: _NewDefaults): { (props: NewProps<_Props, _NewDefaults>): React.JSX.Element; ID: string; defaults: _ComponentWithDefaults["defaults"] & _NewDefaults; }; export default withDefaults;