UNPKG

sanity

Version:

Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches

40 lines (32 loc) 1.3 kB
import {ClipboardIcon} from '@sanity/icons' import {useCallback} from 'react' import {defineDocumentFieldAction} from '../../../config/document/fieldActions/define' import {useTranslation} from '../../../i18n' import {useCopyPaste} from '../../../studio' import {useGetFormValue} from '../../contexts/GetFormValue' import {type FormDocumentValue} from '../../types/formDocumentValue' import {defineActionItem} from './define' export const pasteAction = defineDocumentFieldAction({ name: 'pasteField', useAction({path}) { const {t} = useTranslation('copy-paste') const getFormValue = useGetFormValue() const isDocument = path.length === 0 const documentTitle = t('copy-paste.field-action-paste-button.document.title') const fieldTitle = t('copy-paste.field-action-paste-button.field.title') const title = isDocument ? documentTitle : fieldTitle const {onPaste} = useCopyPaste() const onAction = useCallback(() => { const value = getFormValue([]) as FormDocumentValue onPaste(path, value, { context: {source: isDocument ? 'documentFieldAction' : 'fieldAction'}, }) }, [getFormValue, onPaste, path, isDocument]) return defineActionItem({ type: 'action', icon: ClipboardIcon, onAction, title, }) }, })