UNPKG

@wordpress/block-editor

Version:
83 lines (69 loc) 1.74 kB
/** * WordPress dependencies */ import { __, _x } from '@wordpress/i18n'; export const INSERTER_PATTERN_TYPES = { user: 'user', theme: 'theme', directory: 'directory', }; export const INSERTER_SYNC_TYPES = { full: 'fully', unsynced: 'unsynced', }; export const allPatternsCategory = { name: 'allPatterns', label: _x( 'All', 'patterns' ), }; export const myPatternsCategory = { name: 'myPatterns', label: __( 'My patterns' ), }; export const starterPatternsCategory = { name: 'core/starter-content', label: __( 'Starter content' ), }; export function isPatternFiltered( pattern, sourceFilter, syncFilter ) { const isUserPattern = pattern.name.startsWith( 'core/block' ); const isDirectoryPattern = pattern.source === 'core' || pattern.source?.startsWith( 'pattern-directory' ); // If theme source selected, filter out user created patterns and those from // the core patterns directory. if ( sourceFilter === INSERTER_PATTERN_TYPES.theme && ( isUserPattern || isDirectoryPattern ) ) { return true; } // If the directory source is selected, filter out user created patterns // and those bundled with the theme. if ( sourceFilter === INSERTER_PATTERN_TYPES.directory && ( isUserPattern || ! isDirectoryPattern ) ) { return true; } // If user source selected, filter out theme patterns. if ( sourceFilter === INSERTER_PATTERN_TYPES.user && pattern.type !== INSERTER_PATTERN_TYPES.user ) { return true; } // Filter by sync status. if ( syncFilter === INSERTER_SYNC_TYPES.full && pattern.syncStatus !== '' ) { return true; } if ( syncFilter === INSERTER_SYNC_TYPES.unsynced && pattern.syncStatus !== 'unsynced' && isUserPattern ) { return true; } return false; }