import { Box2d, TLDefaultColorStyle, TLDefaultFillStyle, TLDefaultFontStyle, TLDefaultHorizontalAlignStyle, TLDefaultSizeStyle, TLDefaultVerticalAlignStyle, TLShape, stopEventPropagation, } from '@bigbluebutton/editor' import React from 'react' import { useDefaultColorTheme } from './ShapeFill' import { TextHelpers } from './TextHelpers' import { LABEL_FONT_SIZES, TEXT_PROPS } from './default-shape-constants' import { isLegacyAlign } from './legacyProps' import { useEditableText } from './useEditableText' export const TextLabel = React.memo(function TextLabel< T extends Extract >({ id, type, text, size, labelColor, font, align, verticalAlign, wrap, bounds, }: { id: T['id'] type: T['type'] size: TLDefaultSizeStyle font: TLDefaultFontStyle fill?: TLDefaultFillStyle align: TLDefaultHorizontalAlignStyle verticalAlign: TLDefaultVerticalAlignStyle wrap?: boolean text: string labelColor: TLDefaultColorStyle bounds?: Box2d }) { const { rInput, isEmpty, isEditing, handleFocus, handleChange, handleKeyDown, handleBlur, handleInputPointerDown, handleDoubleClick, } = useEditableText(id, type, text) const finalText = TextHelpers.normalizeTextForDom(text) const hasText = finalText.length > 0 const legacyAlign = isLegacyAlign(align) const theme = useDefaultColorTheme() if (!isEditing && !hasText) { return null } return (
{finalText}
{isEditing && (