UNPKG

@gechiui/block-editor

Version:
59 lines (55 loc) 1.53 kB
/** * GeChiUI dependencies */ import { store as blocksStore } from '@gechiui/blocks'; import { useMemo, useCallback } from '@gechiui/element'; import { __ } from '@gechiui/i18n'; import { SelectControl } from '@gechiui/components'; import { useSelect } from '@gechiui/data'; /** * Internal dependencies */ import { store as blockEditorStore } from '../../store'; export default function DefaultStylePicker( { blockName } ) { const { preferredStyle, onUpdatePreferredStyleVariations, styles, } = useSelect( ( select ) => { const settings = select( blockEditorStore ).getSettings(); const preferredStyleVariations = settings.__experimentalPreferredStyleVariations; return { preferredStyle: preferredStyleVariations?.value?.[ blockName ], onUpdatePreferredStyleVariations: preferredStyleVariations?.onChange ?? null, styles: select( blocksStore ).getBlockStyles( blockName ), }; }, [ blockName ] ); const selectOptions = useMemo( () => [ { label: __( '未设置' ), value: '' }, ...styles.map( ( { label, name } ) => ( { label, value: name } ) ), ], [ styles ] ); const selectOnChange = useCallback( ( blockStyle ) => { onUpdatePreferredStyleVariations( blockName, blockStyle ); }, [ blockName, onUpdatePreferredStyleVariations ] ); return ( onUpdatePreferredStyleVariations && ( <SelectControl options={ selectOptions } value={ preferredStyle || '' } label={ __( '默认样式' ) } onChange={ selectOnChange } /> ) ); }