@polymorphic-factory/solid
Advanced tools
Comparing version 0.0.0-rc-20230401140823 to 0.0.0-rc-20230401170648
@@ -1,2 +0,2 @@ | ||
import { ComponentProps, ValidComponent, JSX, Component } from 'solid-js'; | ||
import { ComponentProps, JSX, Component } from 'solid-js'; | ||
@@ -16,3 +16,3 @@ type DOMElements = keyof JSX.IntrinsicElements; | ||
type Assign<A, B> = DistributiveOmit<A, keyof B> & B; | ||
type MergeWithAs<Default extends ValidComponent, Component extends ValidComponent, PermanentProps extends Record<never, never>, DefaultProps extends Record<never, never>, ComponentProps extends Record<never, never>> = | ||
type MergeWithAs<Default extends ElementType, Component extends ElementType, PermanentProps extends Record<never, never>, DefaultProps extends Record<never, never>, ComponentProps extends Record<never, never>> = | ||
/** | ||
@@ -28,8 +28,8 @@ * The following code is copied from the library react-polymorphed by nasheomirro. | ||
any extends Component ? Assign<DefaultProps, PermanentProps & { | ||
as?: Default; | ||
as?: Default | ElementType; | ||
}> | Assign<ComponentProps, PermanentProps & { | ||
as?: Component; | ||
}> : never; | ||
type ComponentWithAs<Component extends ValidComponent, Props extends Record<never, never> = Record<never, never>> = { | ||
<AsComponent extends ValidComponent = Component>(props: MergeWithAs<Component, AsComponent, Props, ComponentProps<Component>, ComponentProps<AsComponent>>): JSX.Element; | ||
type ComponentWithAs<Component extends ElementType, Props extends Record<never, never> = Record<never, never>> = { | ||
<AsComponent extends ElementType = Component>(props: MergeWithAs<Component, AsComponent, Props, ComponentProps<Component>, ComponentProps<AsComponent>>): JSX.Element; | ||
}; | ||
@@ -39,9 +39,9 @@ type HTMLPolymorphicComponents<Props extends Record<never, never> = Record<never, never>> = { | ||
}; | ||
type HTMLPolymorphicProps<T extends ValidComponent> = Omit<ComponentProps<T>, 'ref'> & { | ||
as?: ValidComponent; | ||
type HTMLPolymorphicProps<T extends ElementType> = Omit<ComponentProps<T>, 'ref'> & { | ||
as?: ElementType; | ||
}; | ||
type PolymorphFactory<Props extends Record<never, never> = Record<never, never>, Options = never> = { | ||
<T extends ValidComponent, P extends Record<never, never> = Props>(component: T, option?: Options): ComponentWithAs<T, P>; | ||
<T extends ElementType, P extends Record<never, never> = Props>(component: T, option?: Options): ComponentWithAs<T, P>; | ||
}; | ||
interface PolyFactoryParam<Component extends ValidComponent, Props extends Record<never, never>, Options> { | ||
interface PolyFactoryParam<Component extends ElementType, Props extends Record<never, never>, Options> { | ||
styled?: (component: Component, options?: Options) => ComponentWithAs<Component, Props>; | ||
@@ -58,4 +58,4 @@ } | ||
*/ | ||
declare function polymorphicFactory<Props extends Record<never, never>, Options = never, Component extends ValidComponent = ValidComponent>({ styled }?: PolyFactoryParam<Component, Props, Options>): PolymorphFactory<Props, Options> & HTMLPolymorphicComponents<Props>; | ||
declare function polymorphicFactory<Props extends Record<never, never>, Options = never, Component extends ElementType = ElementType>({ styled }?: PolyFactoryParam<Component, Props, Options>): PolymorphFactory<Props, Options> & HTMLPolymorphicComponents<Props>; | ||
export { Assign, ComponentWithAs, HTMLPolymorphicComponents, HTMLPolymorphicProps, PropsOf, polymorphicFactory }; |
{ | ||
"name": "@polymorphic-factory/solid", | ||
"version": "0.0.0-rc-20230401140823", | ||
"version": "0.0.0-rc-20230401170648", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12338