32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
/**
|
|
* Programmatically set a React-controlled textarea's value.
|
|
* Uses the native setter so React's synthetic onChange fires.
|
|
*
|
|
* @param {HTMLTextAreaElement} textarea - The textarea element.
|
|
* @param {string} value - The new value.
|
|
*/
|
|
export function setTextareaValue( textarea, value ) {
|
|
const setter = Object.getOwnPropertyDescriptor(
|
|
window.HTMLTextAreaElement.prototype,
|
|
'value'
|
|
).set;
|
|
setter.call( textarea, value );
|
|
textarea.dispatchEvent( new Event( 'input', { bubbles: true } ) );
|
|
}
|
|
|
|
/**
|
|
* Accept a block suggestion: write text to the modal textarea and clear the store.
|
|
*
|
|
* @param {HTMLElement} blockModal - The block guideline modal element.
|
|
* @param {string} blockName - Block name key in the store.
|
|
* @param {string} suggestion - Suggestion text to write.
|
|
* @param {Function} clearSuggestion - Store action to clear the suggestion.
|
|
*/
|
|
export function acceptBlockSuggestion( blockModal, blockName, suggestion, clearSuggestion ) {
|
|
const textarea = blockModal?.querySelector( '.components-textarea-control__input' );
|
|
if ( textarea ) {
|
|
setTextareaValue( textarea, suggestion );
|
|
}
|
|
clearSuggestion( blockName );
|
|
}
|