import { __, _x, sprintf } from '@wordpress/i18n' import React, { Fragment, useId, useMemo } from 'react' import { useRestAPI } from '../../../hooks/useRestAPI' import { useSnippetsList } from '../../../hooks/useSnippetsList' import { handleUnknownError } from '../../../utils/errors' import { REST_BASES } from '../../../utils/restAPI' import { buildUrl } from '../../../utils/urls' import { SubmitButton } from '../../common/SubmitButton' import { SearchArea } from './SnippetsTableSearch' import { useFilteredSnippets } from './WithFilteredSnippetsContext' import { INDEX_STATUS, useSnippetsFilters } from './WithSnippetsTableFilters' import type { Snippet } from '../../../types/Snippet' import type { SnippetStatus } from './WithSnippetsTableFilters' const STATUS_LABELS: [SnippetStatus, string][] = [ ['all', __('All', 'code-snippets')], ['active', __('Active', 'code-snippets')], ['inactive', __('Inactive', 'code-snippets')], ['recently_active', __('Recently Active', 'code-snippets')], ['locked', __('Locked', 'code-snippets')], ['unlocked', __('Unlocked', 'code-snippets')], ['trashed', __('Trashed', 'code-snippets')] ] const SnippetStatusCounts = () => { const { currentStatus, setCurrentStatus } = useSnippetsFilters() const { snippetsByStatus } = useFilteredSnippets() const visibleStatuses = STATUS_LABELS.filter(([status]) => snippetsByStatus.has(status) && ('unlocked' !== status || snippetsByStatus.has('locked'))) return ( ) } const ClearRecentlyActiveButton: React.FC = () => { const { api } = useRestAPI() const { refreshSnippetsList } = useSnippetsList() const { currentStatus } = useSnippetsFilters() return 'recently_active' === currentStatus ?
{ event.preventDefault() api.del(REST_BASES.recentlyActive) .then(refreshSnippetsList) .catch(handleUnknownError) }} />
: null } interface FilterByTagControlProps { visibleSnippets: Snippet[] } const FilterByTagControl: React.FC = ({ visibleSnippets }) => { const { currentTag, setCurrentTag } = useSnippetsFilters() const tagFilterId = useId() const tagsList: Set = useMemo( () => visibleSnippets.reduce((tags, snippet) => { snippet.tags.forEach(tag => tags.add(tag)) return tags }, new Set()), [visibleSnippets]) return 0 < tagsList.size ?
: null } export interface SnippetsTableNavigationProps { which: 'top' | 'bottom' visibleSnippets: Snippet[] } export const SnippetsTableNavigation: React.FC = ({ which, visibleSnippets }) => <> {'top' === which && } {'top' === which && } export const SnippetsTableToolbar = () =>