'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';
export * from './types.js';
import { useConfig } from '../../providers/Config/index.js';
import { useEditDepth } from '../../providers/EditDepth/index.js';
import { Drawer, DrawerToggler } from '../Drawer/index.js';
import { ListDrawerContent } from './DrawerContent.js';
export const baseClass = 'list-drawer';
export const formatListDrawerSlug = ({
depth,
uuid
}) => `list-drawer_${depth}_${uuid}`;
export const ListDrawerToggler = ({
children,
className,
disabled,
drawerSlug,
onClick,
...rest
}) => {
return /*#__PURE__*/_jsx(DrawerToggler, {
className: [className, `${baseClass}__toggler`].filter(Boolean).join(' '),
disabled: disabled,
onClick: onClick,
slug: drawerSlug,
...rest,
children: children
});
};
export const ListDrawer = props => {
const {
drawerSlug
} = props;
return /*#__PURE__*/_jsx(Drawer, {
className: baseClass,
gutter: false,
Header: null,
slug: drawerSlug,
children: /*#__PURE__*/_jsx(ListDrawerContent, {
...props
})
});
};
/**
* Returns an array containing the ListDrawer component, the ListDrawerToggler component, and an object with state and methods for controlling the drawer.
* @example
* import { useListDrawer } from '@payloadcms/ui'
*
* // inside a React component
* const [ListDrawer, ListDrawerToggler, { closeDrawer, openDrawer }] = useListDrawer({
* collectionSlugs: ['users'],
* selectedCollection: 'users',
* })
*
* // inside the return statement
* return (
* <>
*
* Open List Drawer
* >
* )
*/
export const useListDrawer = t0 => {
const $ = _c(42);
const {
collectionSlugs: collectionSlugsFromProps,
filterOptions,
selectedCollection,
uploads
} = t0;
const {
config: t1
} = useConfig();
const {
collections
} = t1;
const drawerDepth = useEditDepth();
const uuid = useId();
const {
closeModal,
modalState,
openModal,
toggleModal
} = useModal();
const [isOpen, setIsOpen] = useState(false);
const [collectionSlugs, setCollectionSlugs] = useState(collectionSlugsFromProps);
let t2;
if ($[0] !== drawerDepth || $[1] !== uuid) {
t2 = formatListDrawerSlug({
depth: drawerDepth,
uuid
});
$[0] = drawerDepth;
$[1] = uuid;
$[2] = t2;
} else {
t2 = $[2];
}
const drawerSlug = t2;
let t3;
let t4;
if ($[3] !== drawerSlug || $[4] !== modalState) {
t3 = () => {
setIsOpen(Boolean(modalState[drawerSlug]?.isOpen));
};
t4 = [modalState, drawerSlug];
$[3] = drawerSlug;
$[4] = modalState;
$[5] = t3;
$[6] = t4;
} else {
t3 = $[5];
t4 = $[6];
}
useEffect(t3, t4);
let t5;
let t6;
if ($[7] !== collectionSlugs || $[8] !== collections || $[9] !== uploads) {
t5 = () => {
if (!collectionSlugs || collectionSlugs.length === 0) {
const filteredCollectionSlugs = collections.filter(t7 => {
const {
upload
} = t7;
if (uploads) {
return Boolean(upload) === true;
}
return true;
});
setCollectionSlugs(filteredCollectionSlugs.map(_temp));
}
};
t6 = [collectionSlugs, uploads, collections];
$[7] = collectionSlugs;
$[8] = collections;
$[9] = uploads;
$[10] = t5;
$[11] = t6;
} else {
t5 = $[10];
t6 = $[11];
}
useEffect(t5, t6);
let t7;
if ($[12] !== drawerSlug || $[13] !== toggleModal) {
t7 = () => {
toggleModal(drawerSlug);
};
$[12] = drawerSlug;
$[13] = toggleModal;
$[14] = t7;
} else {
t7 = $[14];
}
const toggleDrawer = t7;
let t8;
if ($[15] !== closeModal || $[16] !== drawerSlug) {
t8 = () => {
closeModal(drawerSlug);
};
$[15] = closeModal;
$[16] = drawerSlug;
$[17] = t8;
} else {
t8 = $[17];
}
const closeDrawer = t8;
let t9;
if ($[18] !== drawerSlug || $[19] !== openModal) {
t9 = () => {
openModal(drawerSlug);
};
$[18] = drawerSlug;
$[19] = openModal;
$[20] = t9;
} else {
t9 = $[20];
}
const openDrawer = t9;
let t10;
if ($[21] !== closeDrawer || $[22] !== collectionSlugs || $[23] !== drawerSlug || $[24] !== filterOptions || $[25] !== selectedCollection || $[26] !== uploads) {
t10 = props => _createElement(ListDrawer, {
...props,
closeDrawer,
collectionSlugs,
drawerSlug,
filterOptions,
key: drawerSlug,
selectedCollection,
uploads
});
$[21] = closeDrawer;
$[22] = collectionSlugs;
$[23] = drawerSlug;
$[24] = filterOptions;
$[25] = selectedCollection;
$[26] = uploads;
$[27] = t10;
} else {
t10 = $[27];
}
const MemoizedDrawer = t10;
let t11;
if ($[28] !== drawerSlug) {
t11 = props_0 => _jsx(ListDrawerToggler, {
...props_0,
drawerSlug
});
$[28] = drawerSlug;
$[29] = t11;
} else {
t11 = $[29];
}
const MemoizedDrawerToggler = t11;
let t12;
if ($[30] !== closeDrawer || $[31] !== collectionSlugs || $[32] !== drawerDepth || $[33] !== drawerSlug || $[34] !== isOpen || $[35] !== openDrawer || $[36] !== toggleDrawer) {
t12 = {
closeDrawer,
collectionSlugs,
drawerDepth,
drawerSlug,
isDrawerOpen: isOpen,
openDrawer,
setCollectionSlugs,
toggleDrawer
};
$[30] = closeDrawer;
$[31] = collectionSlugs;
$[32] = drawerDepth;
$[33] = drawerSlug;
$[34] = isOpen;
$[35] = openDrawer;
$[36] = toggleDrawer;
$[37] = t12;
} else {
t12 = $[37];
}
const MemoizedDrawerState = t12;
let t13;
if ($[38] !== MemoizedDrawer || $[39] !== MemoizedDrawerState || $[40] !== MemoizedDrawerToggler) {
t13 = [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState];
$[38] = MemoizedDrawer;
$[39] = MemoizedDrawerState;
$[40] = MemoizedDrawerToggler;
$[41] = t13;
} else {
t13 = $[41];
}
return t13;
};
function _temp(t0) {
const {
slug
} = t0;
return slug;
}
//# sourceMappingURL=index.js.map