import * as React from 'react' import {__, _x, sprintf} from '@wordpress/i18n' import { useState, } from '@wordpress/element' import { MenuGroup, MenuItem, DropdownMenu, Modal, } from '@wordpress/components' import { reset as resetIcon, moreVertical as moreVerticalIcon, code as codeIcon, trash as trashIcon, } from '@wordpress/icons' import { useDispatch, } from '@wordpress/data' import { store as noticesStore, } from '@wordpress/notices' import { Pre, } from '@ska/components' import { IS_DEBUG, parseJson, } from '@ska/utils' import { isManagedVariation, useVariation, useVariationOptionsEdit, type VariationSlug, } from '../..' import { managedVariations, } from '../../../../data' import type { tBlockAttributes, } from '@ska/shared' export const useVariationActions = (slug: VariationSlug): [ ({onClose}: {onClose: () => void}) => React.ReactNode[], React.ReactNode, ] => { const [showInspect, setShowInspect] = useState(false) const { createSuccessNotice, } = useDispatch(noticesStore) const [, dispatch] = useVariationOptionsEdit() const variation = useVariation(slug) const { title, variation: variationJson = '{}', } = variation || {} const attributes = parseJson(variationJson, `Variation: ${slug}`) as tBlockAttributes const isManaged = isManagedVariation(slug) const canDelete = !isManaged const original = managedVariations[slug] || {} const { variation: originalVariationJson = '', } = original const originalAttributes = parseJson(originalVariationJson, `Variation: ${slug}`) as tBlockAttributes const isDifferent = isManaged && variationJson !== originalVariationJson const actions = ({onClose}: {onClose: () => void}) => { return [ ...(IS_DEBUG ? [ { setShowInspect(true) onClose() }} /> , ] : []), {isManaged && <> { dispatch.updateVariation(slug, {variation: originalVariationJson}) createSuccessNotice(sprintf(__('Variation "%s" has been reset to default.'), title), {type: 'snackbar'}) onClose() }} /> } {canDelete && <> { dispatch.deleteVariation(slug) createSuccessNotice(sprintf(__('Variation "%s" deleted.'), title), {type: 'snackbar'}) onClose() }} /> } , ] } const components = <> {showInspect && ( setShowInspect(false)} >
			
		)}
	

	return [actions, components]
}


export interface VariationActionsProps {
	slug: VariationSlug
}

export const VariationActions: React.FC = ({slug}) => {

	const [actions, components] = useVariationActions(slug)

	return <>
		
			{({onClose}) => actions({onClose})}
		
		{components}
	
}

export default VariationActions