import { ArrowRightSmallPlusIcon } from '@blocksuite/icons/rc';
import { Slot } from '@radix-ui/react-slot';
import { type MouseEvent, useCallback, useEffect, useId, useMemo } from 'react';
import type { MenuSubProps } from '../menu.types';
import { useMenuItem } from '../use-menu-item';
import { useMobileSubMenuHelper } from './context';
export const MobileMenuSub = ({
title,
children: propsChildren,
items,
triggerOptions,
subContentOptions: contentOptions = {},
}: MenuSubProps & { title?: string }) => {
const {
className,
children,
otherProps: { onClick, ...otherTriggerOptions },
} = useMenuItem({
children: propsChildren,
suffixIcon: ,
...triggerOptions,
});
return (
{children}
);
};
export const MobileMenuSubRaw = ({
title,
onClick,
children,
items,
subOptions,
subContentOptions: contentOptions = {},
}: MenuSubProps & {
onClick?: (e: MouseEvent) => void;
title?: string;
}) => {
const id = useId();
const { addSubMenu } = useMobileSubMenuHelper();
const subMenuContent = useMemo(
() => ({ items, contentOptions, options: subOptions, title, id }),
[items, contentOptions, subOptions, title, id]
);
const doAddSubMenu = useCallback(() => {
addSubMenu(subMenuContent);
}, [addSubMenu, subMenuContent]);
const onItemClick = useCallback(
(e: MouseEvent) => {
onClick?.(e);
doAddSubMenu();
},
[doAddSubMenu, onClick]
);
useEffect(() => {
if (subOptions?.open) {
doAddSubMenu();
}
}, [doAddSubMenu, subOptions]);
return {children};
};