{"version":3,"file":"polymorphic-factory.cjs","sources":["../../../src/core/factory/polymorphic-factory.tsx"],"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 type PolymorphicComponentWithProps<Payload extends PolymorphicFactoryPayload> = {\n  withProps: <C = Payload['defaultComponent']>(\n    fixedProps: PolymorphicComponentProps<C, Payload['props']>\n  ) => <L = C>(props: PolymorphicComponentProps<L, Payload['props']>) => React.ReactElement;\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    PolymorphicComponentWithProps<Payload> &\n    StaticComponents<Payload['staticComponents']>;\n\n  const Component = forwardRef(ui) as unknown as PolymorphicComponent;\n  Component.withProps = (fixedProps: any) => {\n    const Extended = forwardRef((props, ref) => (\n      <Component {...fixedProps} {...props} ref={ref as any} />\n    )) as any;\n    Extended.extend = Component.extend;\n    Extended.displayName = `WithProps(${Component.displayName})`;\n    return Extended;\n  };\n\n  Component.extend = identity as any;\n\n  return Component as PolymorphicComponent;\n}\n"],"names":["forwardRef","jsx","identity"],"mappings":";;;;;;;AAqBO,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,EACd,CAAA,CACA,CAAA,CAAA,CAAA;AAgBA,CAAA,CAAM,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAYA,iBAAW,EAAE,CAAA,CAAA;AAC/B,CAAA,CAAU,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAA,CAAA,CAAC,UAAoB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAClC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,SAAW,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAA,CAAA,CAAA,CAAA,CAAG,KAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAA,CACxD,CAAA,CAAA;AACD,CAAA,CAAA,CAAA,CAAA,QAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAc,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA;AACzD,CAAA,CAAA,CAAA,CAAO,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACT,CAAA,CAAA,CAAA;AAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEnB,CAAA,CAAO,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAA;;"}