UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

61 lines (54 loc) 1.73 kB
import { getClassName } from 'scrivito_sdk/app_support/get_class_name'; import { throwInvalidArgumentsError } from 'scrivito_sdk/common'; import { registerLayoutComponentForAppClass } from 'scrivito_sdk/react/component_registry'; import { connectAndMemoize } from 'scrivito_sdk/react/connect_and_memoize'; import { ComponentType, ProvidedComponentOptions, isComponentMissingName, } from 'scrivito_sdk/react/provide_component'; import { AttributeDefinitions, Obj, ObjClass, isObjClass, } from 'scrivito_sdk/realm'; interface LayoutComponentProps< AttrDefs extends AttributeDefinitions = AttributeDefinitions > { page: Obj<AttrDefs>; } /** @public */ export function provideLayoutComponent< AttrDefs extends AttributeDefinitions = AttributeDefinitions >( objClass: ObjClass<AttrDefs>, component: ComponentType<LayoutComponentProps<AttrDefs>>, options?: ProvidedComponentOptions<LayoutComponentProps<AttrDefs>> ): void; /** @public */ export function provideLayoutComponent( objClass: ObjClass, component: ComponentType, options?: ProvidedComponentOptions<LayoutComponentProps> ): void; /** @internal */ export function provideLayoutComponent( objClass: ObjClass, component: ComponentType, options?: { loading?: typeof component } ): void { if (!isObjClass(objClass)) { throwInvalidArgumentsError( 'provideLayoutComponent', 'A layout component must be provided only for Objs', { docPermalink: 'js-sdk/provideLayoutComponent' } ); } const className = getClassName(objClass); if (isComponentMissingName(component)) component.displayName = className; registerLayoutComponentForAppClass( className, connectAndMemoize(component, options) ); }