UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 1.81 kB
{"version":3,"file":"polymorphic-factory.mjs","sources":["../../../src/core/factory/polymorphic-factory.ts"],"sourcesContent":["import { forwardRef } from 'react';\nimport { PolymorphicComponentProps } from './create-polymorphic-component';\nimport {\n ComponentClasses,\n FactoryPayload,\n identity,\n StaticComponents,\n ThemeExtend,\n} from './factory';\n\nexport interface PolymorphicFactoryPayload extends FactoryPayload {\n defaultComponent: any;\n defaultRef: any;\n}\n\nexport function polymorphicFactory<Payload extends PolymorphicFactoryPayload>(\n ui: React.ForwardRefRenderFunction<Payload['defaultRef'], Payload['props']>\n) {\n type ComponentProps<C> = PolymorphicComponentProps<C, Payload['props']>;\n\n type _PolymorphicComponent = <C = Payload['defaultComponent']>(\n props: ComponentProps<C>\n ) => React.ReactElement;\n\n type ComponentProperties = Omit<React.FunctionComponent<ComponentProps<any>>, never>;\n\n type PolymorphicComponent = _PolymorphicComponent &\n ComponentProperties &\n ThemeExtend<Payload> &\n ComponentClasses<Payload> &\n StaticComponents<Payload['staticComponents']>;\n\n const Component = forwardRef(ui) as unknown as PolymorphicComponent;\n\n Component.extend = identity as any;\n\n return Component as PolymorphicComponent;\n}\n"],"names":[],"mappings":";;;;AAKO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;AACvC,CAAA,CAAE,MAAM,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,UAAU,CAAC,CAAA,CAAE,CAAC,CAAC;AACnC,CAAA,CAAE,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,QAAQ,CAAC;AAC9B,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,SAAS,CAAC;AACnB,CAAA;;"}