'use client'; import { c as _c } from "react/compiler-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; import { createElement as _createElement } from "react"; import { useModal } from '@faceless-ui/modal'; import React, { useCallback, useEffect, useId, useMemo, useState } from 'react'; import { useRelatedCollections } from '../../hooks/useRelatedCollections.js'; import { useEditDepth } from '../../providers/EditDepth/index.js'; import { useTranslation } from '../../providers/Translation/index.js'; import { Drawer, DrawerToggler } from '../Drawer/index.js'; import { DocumentDrawerContent } from './DrawerContent.js'; import './index.scss'; export const documentDrawerBaseClass = 'doc-drawer'; const formatDocumentDrawerSlug = ({ id, collectionSlug, depth, uuid }) => `doc-drawer_${collectionSlug}_${depth}${id ? `_${id}` : ''}_${uuid}`; export const DocumentDrawerToggler = t0 => { const $ = _c(2); const { children, className, collectionSlug, disabled, drawerSlug, onClick, operation, ...rest } = t0; const { t } = useTranslation(); const [collectionConfig] = useRelatedCollections(collectionSlug); const t1 = t(operation === "create" ? "fields:addNewLabel" : "general:editLabel", { label: collectionConfig?.labels.singular }); let t2; if ($[0] !== className) { t2 = [className, `${documentDrawerBaseClass}__toggler`].filter(Boolean); $[0] = className; $[1] = t2; } else { t2 = $[1]; } return _jsx(DrawerToggler, { "aria-label": t1, className: t2.join(" "), disabled, onClick, slug: drawerSlug, ...rest, children }); }; export const DocumentDrawer = props => { const { drawerSlug } = props; return /*#__PURE__*/_jsx(Drawer, { className: documentDrawerBaseClass, gutter: false, Header: null, slug: drawerSlug, children: /*#__PURE__*/_jsx(DocumentDrawerContent, { ...props }) }); }; /** * A hook to manage documents from a drawer modal. * It provides the components and methods needed to open, close, and interact with the drawer. * @example * const [DocumentDrawer, DocumentDrawerToggler, { openDrawer, closeDrawer }] = useDocumentDrawer({ * collectionSlug: 'posts', * id: postId, // optional, if not provided, it will render the "create new" view * }) * * // ... * * return ( *
* * Edit Post * * *
*/ export const useDocumentDrawer = t0 => { const $ = _c(38); const { id, collectionSlug, overrideEntityVisibility } = t0; const editDepth = useEditDepth(); const uuid = useId(); const { closeModal, modalState, openModal, toggleModal } = useModal(); const [isOpen, setIsOpen] = useState(false); let t1; if ($[0] !== collectionSlug || $[1] !== editDepth || $[2] !== id || $[3] !== uuid) { t1 = formatDocumentDrawerSlug({ id, collectionSlug, depth: editDepth, uuid }); $[0] = collectionSlug; $[1] = editDepth; $[2] = id; $[3] = uuid; $[4] = t1; } else { t1 = $[4]; } const drawerSlug = t1; let t2; let t3; if ($[5] !== drawerSlug || $[6] !== modalState) { t2 = () => { setIsOpen(Boolean(modalState[drawerSlug]?.isOpen)); }; t3 = [modalState, drawerSlug]; $[5] = drawerSlug; $[6] = modalState; $[7] = t2; $[8] = t3; } else { t2 = $[7]; t3 = $[8]; } useEffect(t2, t3); let t4; if ($[9] !== drawerSlug || $[10] !== toggleModal) { t4 = () => { toggleModal(drawerSlug); }; $[9] = drawerSlug; $[10] = toggleModal; $[11] = t4; } else { t4 = $[11]; } const toggleDrawer = t4; let t5; if ($[12] !== closeModal || $[13] !== drawerSlug) { t5 = () => { closeModal(drawerSlug); }; $[12] = closeModal; $[13] = drawerSlug; $[14] = t5; } else { t5 = $[14]; } const closeDrawer = t5; let t6; if ($[15] !== drawerSlug || $[16] !== openModal) { t6 = () => { openModal(drawerSlug); }; $[15] = drawerSlug; $[16] = openModal; $[17] = t6; } else { t6 = $[17]; } const openDrawer = t6; let t7; if ($[18] !== collectionSlug || $[19] !== drawerSlug || $[20] !== id || $[21] !== overrideEntityVisibility) { t7 = props => _createElement(DocumentDrawer, { ...props, collectionSlug, drawerSlug, id, key: drawerSlug, overrideEntityVisibility }); $[18] = collectionSlug; $[19] = drawerSlug; $[20] = id; $[21] = overrideEntityVisibility; $[22] = t7; } else { t7 = $[22]; } const MemoizedDrawer = t7; let t8; if ($[23] !== collectionSlug || $[24] !== drawerSlug || $[25] !== id) { t8 = props_0 => _jsx(DocumentDrawerToggler, { ...props_0, collectionSlug, drawerSlug, operation: !id ? "create" : "update" }); $[23] = collectionSlug; $[24] = drawerSlug; $[25] = id; $[26] = t8; } else { t8 = $[26]; } const MemoizedDrawerToggler = t8; let t9; if ($[27] !== closeDrawer || $[28] !== drawerSlug || $[29] !== editDepth || $[30] !== isOpen || $[31] !== openDrawer || $[32] !== toggleDrawer) { t9 = { closeDrawer, drawerDepth: editDepth, drawerSlug, isDrawerOpen: isOpen, openDrawer, toggleDrawer }; $[27] = closeDrawer; $[28] = drawerSlug; $[29] = editDepth; $[30] = isOpen; $[31] = openDrawer; $[32] = toggleDrawer; $[33] = t9; } else { t9 = $[33]; } const MemoizedDrawerState = t9; let t10; if ($[34] !== MemoizedDrawer || $[35] !== MemoizedDrawerState || $[36] !== MemoizedDrawerToggler) { t10 = [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]; $[34] = MemoizedDrawer; $[35] = MemoizedDrawerState; $[36] = MemoizedDrawerToggler; $[37] = t10; } else { t10 = $[37]; } return t10; }; //# sourceMappingURL=index.js.map