import { ComponentType, FC } from 'react'; import { ComponentInstance } from '@uniformdev/canvas'; import { ComponentProps } from '@/types/cskTypes'; import { getSlotComponents } from '@/utils/getSlotComponents'; export const withSlotsDataValue = , T>( WrappedComponent: ComponentType< TProps & { slotData?: Record; } >, withSlotData?: string[] ): ComponentType => { const ComponentWithContainer: FC = props => { const slotData = withSlotData?.reduce>((acc, slotName) => { const slot = props.slots[slotName]; if (slot) { return { ...acc, [slotName]: getSlotComponents(slot, props.context).filter(i => i !== null), }; } return acc; }, {}); return ; }; ComponentWithContainer.displayName = `withSlotsDataValue(${ WrappedComponent.displayName || WrappedComponent.name || 'Component' })`; return ComponentWithContainer; };