{"version":3,"file":"index.js","names":["formatAdminURL","React","useCallback","useRef","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","baseClass","SaveDraftButton","props","config","routes","api","id","collectionSlug","globalSlug","setUnpublishedVersionCount","uploadStatus","modified","code","locale","ref","editDepth","t","submit","operation","disabled","saveDraft","search","action","method","apiRoute","path","overrides","_status","skipValidation","count","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click","_jsx","buttonId","buttonStyle","className","onClick","size","type"],"sources":["../../../src/elements/SaveDraftButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SaveDraftButtonClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'save-draft'\n\nexport function SaveDraftButton(props: SaveDraftButtonClientProps) {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { id, collectionSlug, globalSlug, setUnpublishedVersionCount, uploadStatus } =\n useDocumentInfo()\n\n const modified = useFormModified()\n const { code: locale } = useLocale()\n const ref = useRef(null)\n const editDepth = useEditDepth()\n const { t } = useTranslation()\n const { submit } = useForm()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${locale}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${id ? `/${id}` : ''}${search}`,\n })\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = formatAdminURL({\n apiRoute: api,\n path: `/globals/${globalSlug}${search}`,\n })\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n\n setUnpublishedVersionCount((count) => count + 1)\n }, [submit, collectionSlug, globalSlug, api, locale, id, disabled, setUnpublishedVersionCount])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return (\n {\n return void saveDraft()\n }}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {t('version:saveDraft')}\n \n )\n}\n"],"mappings":"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","ignoreList":[]}