import { Button, RangeControl, ButtonGroup } from '@wordpress/components'; import {useState} from '@wordpress/element'; import React from "react"; const LetterSpacingControl = ({attributes, setAttributes}) => { const unitOptions = ['px', 'em']; const getLetterSpacingUnit = () => { const letterSpacing = attributes.letter_spacing; if (letterSpacing) { const match = letterSpacing.match(/[a-zA-Z%]+$/); return match ? match[0] : 'px'; } return 'px'; }; const [unit, setUnit] = useState(getLetterSpacingUnit()); const getLetterSpacingValue = () => { if (attributes.letter_spacing) { return parseFloat(attributes.letter_spacing); } return ""; }; const handleLetterSpacingChange = (newSize) => { if (!newSize) { setAttributes({letter_spacing: ''}); return; } setAttributes({letter_spacing: `${newSize}${unit}`}); }; const handleUnitChange = (newUnit) => { setUnit(newUnit); const currentSize = parseFloat(attributes.letter_spacing); setAttributes({letter_spacing: `${currentSize}${newUnit}`}); }; return ( <div className="letter-spacing-control"> <div className="latepoint-block-header"> <label className="latepoint-control-label">Letter Spacing</label> <div className="latepoint-block-header-actions"> <Button className="latepoint-block-reset" onClick={() => handleLetterSpacingChange("")} isSmall disabled={attributes.letter_spacing === ''} icon="dashicon dashicons dashicons-image-rotate" /> <ButtonGroup className="latepoint-unit-selector"> {unitOptions.map((option) => ( <Button key={option} isPrimary={unit === option} onClick={() => handleUnitChange(option)}> {option} </Button> ))} </ButtonGroup> </div> </div> <RangeControl value={getLetterSpacingValue()} onChange={handleLetterSpacingChange} min="0" max="20" step="0.01" /> </div> ) }; export default LetterSpacingControl;