import React, { useCallback, FC, } from 'react'; import { pagePathUtils } from '@growi/core/dist/utils'; import { NotAvailableForGuest } from '~/components/NotAvailableForGuest'; import { NotAvailableForReadOnlyUser } from '~/components/NotAvailableForReadOnlyUser'; import { IPageForItem } from '~/interfaces/page'; import { usePageTreeDescCountMap } from '~/stores/ui'; import { ItemNode } from './ItemNode'; type StateHandlersType = { isOpen: boolean, setIsOpen: React.Dispatch>, isCreating: boolean, setCreating: React.Dispatch>, }; export type NewPageCreateButtonProps = { page: IPageForItem, currentChildren: ItemNode[], stateHandlers: StateHandlersType, isNewPageInputShown?: boolean, setNewPageInputShown: React.Dispatch>, }; export const NewPageCreateButton: FC = (props) => { const { page, currentChildren, stateHandlers, setNewPageInputShown, } = props; const { setIsOpen } = stateHandlers; // descendantCount const { getDescCount } = usePageTreeDescCountMap(); const descendantCount = getDescCount(page._id) || page.descendantCount || 0; const isChildrenLoaded = currentChildren?.length > 0; const hasDescendants = descendantCount > 0 || isChildrenLoaded; const onClickPlusButton = useCallback(() => { setNewPageInputShown(true); if (hasDescendants) { setIsOpen(true); } }, [hasDescendants, setIsOpen]); const test = pagePathUtils; console.dir(test); return ( <> {!pagePathUtils.isUsersTopPage(page.path ?? '') && ( )} ); };