UNPKG

react-elegant-ui

Version:

Elegant UI components, made by BEM best practices for react

83 lines (82 loc) 2.61 kB
import React, { ReactNode, FC, ComponentType } from 'react'; export type RegistryContext = Record<string, Registry>; export declare const registryContext: React.Context<RegistryContext>; export declare function withRegistry(...registries: Registry[]): <P>(Component: ComponentType<P>) => FC<P>; export interface IRegistryConsumerProps { id: string; children: (registry: any) => ReactNode; } export declare const RegistryConsumer: FC<IRegistryConsumerProps>; /** * @deprecated consider using 'RegistryConsumer' instead */ export declare const ComponentRegistryConsumer: React.FC<IRegistryConsumerProps>; export declare const useRegistries: () => RegistryContext; export declare const useRegistry: <T extends {}>(id: string) => T; /** * @deprecated consider using 'useRegistry' instead */ export declare const useComponentRegistry: <T extends {}>(id: string) => T; export interface IRegistryOptions { id: string; overridable?: boolean; } declare const registryOverloadMark = "RegistryOverloadHMark"; type SimpleOverload<T> = (Base: T) => T; interface IRegistryEntityOverload<T> { $symbol: typeof registryOverloadMark; overload: SimpleOverload<T>; } type IRegistryEntity<T = any> = T | IRegistryEntityOverload<T>; export type IRegistryEntities = Record<string, IRegistryEntity>; export declare class Registry { id: string; overridable: boolean; private entities; constructor({ id, overridable }: IRegistryOptions); /** * Set registry entry by id. * * @param id entry id * @param entity valid registry entity */ set<T>(id: string, entity: T): this; /** * Set extender for registry entry by id. * * @param id entry id * @param overload valid registry entity extender */ extends<T>(id: string, overload: SimpleOverload<T>): this; /** * Set react entities in registry via object literal. * * @param entitiesSet set of valid registry entities */ fill(entitiesSet: IRegistryEntities): this; /** * Get entry from registry by id. * * @param id entry id */ get<T>(id: string): IRegistryEntity<T>; /** * Returns raw entities from registry. */ snapshot<RT>(): RT; /** * Override entities by external registry. * @internal * * @param otherRegistry external registry */ merge(otherRegistry?: Registry): Registry; /** * Returns extended or replaced entity * * @param base base implementation * @param overrides overridden implementation */ private mergeEntities; } export {};