@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 3.15 kB
Source Map (JSON)
{"version":3,"file":"factory.mjs","sources":["../../../src/core/factory/factory.ts"],"sourcesContent":["import { forwardRef } from 'react';\nimport type { MantineThemeComponent } from '../MantineProvider';\nimport type { ClassNames, PartialVarsResolver, Styles } from '../styles-api';\n\nexport type DataAttributes = Record<`data-${string}`, any>;\n\nexport interface FactoryPayload {\n props: Record<string, any>;\n ctx?: any;\n ref?: any;\n stylesNames?: string;\n vars?: any;\n variant?: string;\n staticComponents?: Record<string, any>;\n // Compound components cannot have classNames, styles and vars on MantineProvider\n compound?: boolean;\n}\n\nexport interface ExtendCompoundComponent<Payload extends FactoryPayload> {\n defaultProps?: Partial<Payload['props']> & DataAttributes;\n}\n\nexport interface ExtendsRootComponent<Payload extends FactoryPayload> {\n defaultProps?: Partial<Payload['props']> & DataAttributes;\n classNames?: ClassNames<Payload>;\n styles?: Styles<Payload>;\n vars?: PartialVarsResolver<Payload>;\n}\n\nexport type ExtendComponent<Payload extends FactoryPayload> = Payload['compound'] extends true\n ? ExtendCompoundComponent<Payload>\n : ExtendsRootComponent<Payload>;\n\nexport type StaticComponents<Input> = Input extends Record<string, any>\n ? Input\n : Record<string, never>;\n\nexport interface ThemeExtend<Payload extends FactoryPayload> {\n extend: (input: ExtendComponent<Payload>) => MantineThemeComponent;\n}\n\nexport type ComponentClasses<Payload extends FactoryPayload> = {\n classes: Payload['stylesNames'] extends string ? Record<string, string> : never;\n};\n\nexport type MantineComponentStaticProperties<Payload extends FactoryPayload> =\n ThemeExtend<Payload> & ComponentClasses<Payload> & StaticComponents<Payload['staticComponents']>;\n\nexport type MantineComponent<Payload extends FactoryPayload> = React.ForwardRefExoticComponent<\n Payload['props'] &\n React.RefAttributes<Payload['ref']> & {\n component?: any;\n renderRoot?: (props: Record<string, any>) => React.ReactNode;\n }\n> &\n MantineComponentStaticProperties<Payload>;\n\nexport function identity<T>(value: T): T {\n return value;\n}\n\nexport function factory<Payload extends FactoryPayload>(\n ui: React.ForwardRefRenderFunction<Payload['ref'], Payload['props']>\n) {\n const Component = forwardRef(ui) as MantineComponent<Payload>;\n\n Component.extend = identity as any;\n\n return Component as MantineComponent<Payload>;\n}\n"],"names":[],"mappings":";;;AAEO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA;AAChC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,KAAK,CAAC;AACf,CAAC;AACM,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;AAC5B,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;;"}