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 ? [
,
] : []),
{isManaged && <>
,
]
}
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