import * as React from 'react' import {__, _x} from '@wordpress/i18n' import { useContext, useState, } from '@wordpress/element' import { DropdownMenu, MenuGroup, MenuItem, Fill, __experimentalNavigatorScreen as NavigatorScreen, } from '@wordpress/components' import { starFilled as starIcon, brush as brushIcon, create as createIcon, } from '@wordpress/icons' import { Panel, PanelHeader, PanelBody, InspectorControlsContext, } from '../../../tailwind/inspector-controls' import { useSkaBlocksDispatch, } from '../../../tailwind/reducer' import { CreatePreset, PresetsModal, PresetEdit, PresetsList, useBlockPresets, } from '..' import type { TailwindValue, } from '../../tailwind' const PresetsInspectorControls: React.FC = () => { const { attributes, setAttributes, features, } = useContext(InspectorControlsContext) const { skaBlocks = {}, skaBlocksSelectors = {}, skaBlocksVariables = {}, } = attributes const { p = [], } = skaBlocks as TailwindValue const allBlockPresets = useBlockPresets(p) // Includes missing presets const blockPresets = allBlockPresets.filter(({ref}) => ref !== '404') const dispatch = useSkaBlocksDispatch(attributes, setAttributes) const [createPresetModalOpen, setCreatePresetModalOpen] = useState(false) const [presetsModalOpen, setPresetsModalOpen] = useState(false) const canCreatePreset = ( Object.keys(skaBlocksSelectors).length > 0 || Object.keys(skaBlocksVariables).length > 0 || features.filter(({hasValue}) => hasValue).length > 0 ) return <> {({onClose}) => ( { setPresetsModalOpen(true) onClose() }} /> {canCreatePreset && ( { setCreatePresetModalOpen(true) onClose() }} /> )} )} {allBlockPresets.length > 0 && ( )} {blockPresets.map(({id}) => ( ))} {createPresetModalOpen && ( setCreatePresetModalOpen(false)} /> )} {presetsModalOpen && ( dispatch.addPreset(slug)} onRemovePreset={slug => dispatch.removePreset(slug)} onRequestClose={() => setPresetsModalOpen(false)} /> )} } export default PresetsInspectorControls