'use client'; import type { CSSProperties, ReactNode } from 'react'; import type { PPTTextElement } from '@openmaic/dsl'; import { useElementShadow } from '../shared/useElementShadow'; import { ElementOutline } from '../shared/ElementOutline'; import { preservesPlainTextLineBreaks } from '../../utils/richText'; export interface BaseTextElementProps { elementInfo: PPTTextElement; target?: string; renderContent?: (element: PPTTextElement, defaultContent: ReactNode) => ReactNode; } export function BaseTextElement({ elementInfo, target, renderContent }: BaseTextElementProps) { const { shadowStyle } = useElementShadow(elementInfo.shadow); const vAlign = elementInfo.vAlign ?? 'top'; const justifyContent = vAlign === 'middle' ? 'center' : vAlign === 'bottom' ? 'flex-end' : 'flex-start'; const defaultContent = (
); return (
{renderContent?.(elementInfo, defaultContent) ?? defaultContent}
); }