'use client';
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
import { useModal } from '@faceless-ui/modal';
import { getTranslation } from '@payloadcms/translations';
import { useRouter } from 'next/navigation.js';
import { formatAdminURL } from 'payload/shared';
import * as qs from 'qs-esm';
import React, { Fragment, useCallback } from 'react';
import { toast } from 'sonner';
import { useConfig } from '../../providers/Config/index.js';
import { useDocumentTitle } from '../../providers/DocumentTitle/index.js';
import { useRouteTransition } from '../../providers/RouteTransition/index.js';
import { useTranslation } from '../../providers/Translation/index.js';
import { requests } from '../../utilities/api.js';
import { Button } from '../Button/index.js';
import { ConfirmationModal } from '../ConfirmationModal/index.js';
import { Translation } from '../Translation/index.js';
export const PermanentlyDeleteButton = (props)=>{
    const { id, buttonId, collectionSlug, onDelete, redirectAfterDelete = true, singularLabel, title: titleFromProps } = props;
    const { config: { routes: { admin: adminRoute, api }, serverURL }, getEntityConfig } = useConfig();
    const collectionConfig = getEntityConfig({
        collectionSlug
    });
    const router = useRouter();
    const { i18n, t } = useTranslation();
    const { title } = useDocumentTitle();
    const { startRouteTransition } = useRouteTransition();
    const { openModal } = useModal();
    const modalSlug = `perma-delete-${id}`;
    const addDefaultError = useCallback(()=>{
        toast.error(t('error:deletingTitle', {
            title
        }));
    }, [
        t,
        title
    ]);
    const handleDelete = useCallback(async ()=>{
        try {
            const url = formatAdminURL({
                apiRoute: api,
                path: `/${collectionSlug}${qs.stringify({
                    trash: true,
                    where: {
                        and: [
                            {
                                id: {
                                    equals: id
                                }
                            },
                            {
                                deletedAt: {
                                    exists: true
                                }
                            }
                        ]
                    }
                }, {
                    addQueryPrefix: true
                })}`
            });
            const res = await requests.delete(url, {
                headers: {
                    'Accept-Language': i18n.language,
                    'Content-Type': 'application/json'
                }
            });
            const json = await res.json();
            if (res.status < 400) {
                toast.success(t('general:titleDeleted', {
                    label: getTranslation(singularLabel, i18n),
                    title
                }) || json.message);
                if (redirectAfterDelete) {
                    return startRouteTransition(()=>router.push(formatAdminURL({
                            adminRoute,
                            path: `/collections/${collectionSlug}/trash`,
                            serverURL
                        })));
                }
                if (typeof onDelete === 'function') {
                    await onDelete({
                        id,
                        collectionConfig
                    });
                }
                return;
            }
            if (json.errors) {
                json.errors.forEach((error)=>toast.error(error.message));
            } else {
                addDefaultError();
            }
        } catch (_err) {
            addDefaultError();
        }
    }, [
        serverURL,
        api,
        collectionSlug,
        id,
        t,
        singularLabel,
        addDefaultError,
        i18n,
        title,
        router,
        adminRoute,
        redirectAfterDelete,
        onDelete,
        collectionConfig,
        startRouteTransition
    ]);
    if (id) {
        return /*#__PURE__*/ _jsxDEV(Fragment, {
            children: [
                /*#__PURE__*/ _jsxDEV(Button, {
                    buttonStyle: "secondary",
                    id: buttonId,
                    onClick: ()=>{
                        openModal(modalSlug);
                    },
                    children: t('general:permanentlyDelete')
                }, void 0, false, {
                    fileName: "src/elements/PermanentlyDeleteButton/index.tsx",
                    lineNumber: 148,
                    columnNumber: 9
                }, this),
                /*#__PURE__*/ _jsxDEV(ConfirmationModal, {
                    body: /*#__PURE__*/ _jsxDEV(Translation, {
                        elements: {
                            '1': ({ children })=>/*#__PURE__*/ _jsxDEV("strong", {
                                    children: children
                                }, void 0, false, {
                                    fileName: "src/elements/PermanentlyDeleteButton/index.tsx",
                                    lineNumber: 161,
                                    columnNumber: 40
                                }, void 0)
                        },
                        i18nKey: "general:aboutToPermanentlyDelete",
                        t: t,
                        variables: {
                            label: getTranslation(singularLabel, i18n),
                            title: titleFromProps || title || id
                        }
                    }, void 0, false, {
                        fileName: "src/elements/PermanentlyDeleteButton/index.tsx",
                        lineNumber: 159,
                        columnNumber: 13
                    }, void 0),
                    confirmingLabel: t('general:deleting'),
                    heading: t('general:confirmDeletion'),
                    modalSlug: modalSlug,
                    onConfirm: handleDelete
                }, void 0, false, {
                    fileName: "src/elements/PermanentlyDeleteButton/index.tsx",
                    lineNumber: 157,
                    columnNumber: 9
                }, this)
            ]
        }, void 0, true, {
            fileName: "src/elements/PermanentlyDeleteButton/index.tsx",
            lineNumber: 147,
            columnNumber: 7
        }, this);
    }
    return null;
};

//# sourceMappingURL=index.js.map