/** * WordPress Dependencies */ import { __ } from '@wordpress/i18n'; import { InspectorControls, BlockControls } from '@wordpress/block-editor'; import { PanelBody, PanelRow, TextControl, ToggleControl, ToolbarButton, ToolbarGroup, } from '@wordpress/components'; import { createHigherOrderComponent } from '@wordpress/compose'; import { addFilter } from '@wordpress/hooks'; /** * External dependencies */ import getBlockMarkerAttribute from './helpers/getBlockMarkerAttribute'; /** * Internal dependencies */ import BlockAttributesCheck from './check'; /** * Add BeyondWords controls to Gutenberg Blocks. * * @param {Function} BlockEdit Block edit component. * * @return {Function} BlockEdit Modified block edit component. */ const withBeyondwordsBlockControls = createHigherOrderComponent( ( BlockEdit ) => { return ( props ) => { const { attributes, setAttributes } = props; const { beyondwordsAudio, beyondwordsMarker } = attributes; const icon = !! beyondwordsAudio ? 'controls-volumeon' : 'controls-volumeoff'; const buttonLabel = !! beyondwordsAudio ? __( 'Disable audio processing', 'speechkit' ) : __( 'Enable audio processing', 'speechkit' ); const toggleLabel = !! beyondwordsAudio ? __( 'Audio processing enabled', 'speechkit' ) : __( 'Audio processing disabled', 'speechkit' ); const toggleBeyondwordsAudio = () => setAttributes( { beyondwordsAudio: ! beyondwordsAudio } ); const assignMarkerOnLoad = () => { const marker = getBlockMarkerAttribute( attributes ); setAttributes( { beyondwordsMarker: marker } ); }; return ( <> { /* Onload hack fires when block is rendered */ } { /* https://wordpress.stackexchange.com/a/333125 */ } { !! beyondwordsAudio && ( ) } ); }; }, 'withBeyondwordsBlockControls' ); addFilter( 'editor.BlockEdit', 'beyondwords/block-controls', withBeyondwordsBlockControls );