import { __, sprintf } from '@wordpress/i18n' import { createInterpolateElement } from '@wordpress/element' import React, { useState } from 'react' import classnames from 'classnames' import { WithRestAPIContext } from '../../../hooks/useRestAPI' import { WithSnippetsAPIContext } from '../../../hooks/useSnippetsAPI' import { WithSnippetsListContext } from '../../../hooks/useSnippetsList' import { SNIPPET_TYPES } from '../../../types/Snippet' import { isLicensed } from '../../../utils/screen' import { SNIPPET_TYPE_LABELS, getSnippetEditUrl, isProType } from '../../../utils/snippets/snippets' import { buildUrl } from '../../../utils/urls' import { Badge } from '../../common/Badge' import { Button } from '../../common/Button' import { Notice } from '../../common/Notice' import { UpsellDialog } from '../../common/UpsellDialog' import { WithSnippetsTableFilters, useSnippetsFilters } from './WithSnippetsTableFilters' import { WithFilteredSnippetsContext } from './WithFilteredSnippetsContext' import { SnippetsListTable } from './SnippetsListTable' import type { SnippetType } from '../../../types/Snippet' interface SnippetTypeTabProps { type?: SnippetType setIsUpgradeDialogOpen: (isOpen: boolean) => void } const SnippetTypeTab: React.FC = ({ type, setIsUpgradeDialogOpen }) => { const { currentType, setCurrentType } = useSnippetsFilters() const tabName = type ?? 'all' return ( { event.preventDefault() if (type && !isLicensed() && isProType(type)) { setIsUpgradeDialogOpen(true) } else { setCurrentType(type) } }} > {type ? SNIPPET_TYPE_LABELS[type] : __('All Snippets', 'code-snippets')} {type && } ) } const PageHeading = () => { const { searchQueryText, searchLineNumber, currentTag, setSearchQuery, setCurrentTag } = useSnippetsFilters() return ( <> {__('Create new snippet', 'code-snippets')}

{__('Manage Code Snippets', 'code-snippets')} {searchQueryText || currentTag ? {__('Search results', 'code-snippets')} {/* translators: %s: search query. */} {searchQueryText && sprintf(__(' for “%s”', 'code-snippets'), searchQueryText)} {/* translators: %d: code line number. */} {searchLineNumber && sprintf(__(' on line “%d”', 'code-snippets'), searchLineNumber)} {/* translators: %s: tag name. */} {currentTag && sprintf(__(' in tag “%s”', 'code-snippets'), currentTag)} {' '} : null}


) } const SafeModeNotice = () => window.CODE_SNIPPETS_MANAGE?.isSafeModeActive ?

{__('Warning:', 'code-snippets')}{'\n'} {__('Safe mode is active and snippets will not execute!', 'code-snippets')}{'\n'} {createInterpolateElement( __('Remove the CODE_SNIPPETS_SAFE_MODE constant from wp-config.php file to turn off safe mode.', 'code-snippets'), { code: } )}{'\n'} {__('Read more', 'code-snippets')}

: null const SnippetsTableInner = () => { const [isUpgradeDialogOpen, setIsUpgradeDialogOpen] = useState(false) return ( <> ) } export const SnippetsTable: React.FC = () =>