import TermBox, {type Props as TermBoxProps} from '@/components/ui/TermBox' import {cn, getGroupByTermId} from '@/lib/utils' import {useGlobalContext} from '@/term-merger/context' import {ActionType} from '@/term-merger/reducer' import useGetTermsQuery from '@/term-merger/useGetTermsQuery' import type {Term} from '@/types' import {__} from '@wordpress/i18n' import {ReactNode} from 'react' export default function AllTermsList() { const { dispatch, state: { selected, terms, termOrders, }, } = useGlobalContext() useGetTermsQuery() return (
    0, 'sw-w-3/4': terms.size === 0, }, )} > {terms.size > 0 && termOrders.map((id) => { const term = terms.get(id) return term && (
  1. dispatch({ type: ActionType.SET_SELECTED, payload: { termId: term.term_id, value: true, }, })} onCollapse={() => dispatch({ type: ActionType.SET_SELECTED, payload: { termId: term.term_id, value: false, }, })} selected={selected.has(term.term_id)} term={term} />
  2. ) })} {terms.size === 0 && (
  3. {__('No terms found.', 'swpmu-term-merger')}

  4. )}
) } type InnerTermBoxProps = TermBoxProps & { term: Term onCollapse?: () => void } const InnerTermBox = (props: InnerTermBoxProps) => { const { dispatch, state: { assignIndex, groups, groupOrders, }, } = useGlobalContext() const { onCollapse, selected, term, ...restProps } = props const termInfo: [string, ReactNode][] = [ [ __('Term ID', 'swpmu-term-merger'), {term.term_id.toString()} , ], [__('Slug', 'swpmu-term-merger'), term.slug.toString()], [ __('Count', 'swpmu-term-merger'), term.count > 0 ? ( {term.count.toString()} ) : (term.count.toString()), ], ] const groupId = assignIndex.get(term.term_id) return (

{ if (selected) { onCollapse && onCollapse() e.stopPropagation() } }} > {term.name}

{!!groupId && ( #{groupId} )}
{selected && (
{termInfo.map(([label, value], index) => ( ))}
{label} {value}
{groups.size > 0 ? (
) : (

{__('Please create a group to assign this term.', 'swpmu-term-merger')}

)}

)}
) }