import { getLayoutStyles, CustomItem as TCustomItem } from '@cntrl-site/sdk'; import { FC, useState } from 'react'; import { useCntrlContext } from '../../../provider/useCntrlContext'; import { ItemProps } from '../Item'; import JSXStyle from 'styled-jsx/style'; import { useRegisterResize } from '../../../common/useRegisterResize'; import { useItemAngle } from '../useItemAngle'; import { useItemGeometry } from '../../../ItemGeometry/useItemGeometry'; export const CustomItem: FC> = ({ item, onResize, sectionId, interactionCtrl }) => { const sdk = useCntrlContext(); const { layouts } = useCntrlContext(); const itemAngle = useItemAngle(item, sectionId); const component = sdk.customItems.get(item.commonParams.name); const layoutValues: Record[] = [item.area]; const [ref, setRef] = useState(null); useRegisterResize(ref, onResize); useItemGeometry(item.id, ref); const stateParams = interactionCtrl?.getState(['angle']); const angle = stateParams?.styles?.angle ?? itemAngle; if (!component) return null; return ( <>
{component({})}
{`${getLayoutStyles(layouts, layoutValues, ([area]) => { return (` .custom-component-${item.id} { transform: rotate(${area.angle}deg); height: 100%; width: 100%; position: absolute; left: 0; top: 0; } `); })}`} ); };