UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 8.24 kB
{ "version": 3, "sources": ["../../../../src/components/inserter/block-patterns-tab/pattern-category-previews.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from '../hooks/use-patterns-state';\nimport BlockPatternsList from '../../block-patterns-list';\nimport usePatternsPaging from '../hooks/use-patterns-paging';\nimport { PatternsFilter } from './patterns-filter';\nimport { usePatternCategories } from './use-pattern-categories';\nimport {\n\tisPatternFiltered,\n\tallPatternsCategory,\n\tmyPatternsCategory,\n\tstarterPatternsCategory,\n\tINSERTER_PATTERN_TYPES,\n} from './utils';\n\nconst noop = () => {};\n\nexport function PatternCategoryPreviews( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId,\n\t\tcategory?.name\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tcategory.name === myPatternsCategory.name &&\n\t\t\t\t\tpattern.type === INSERTER_PATTERN_TYPES.user\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tcategory.name === starterPatternsCategory.name &&\n\t\t\t\t\tpattern.blockTypes?.includes( 'core/post-content' )\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === 'uncategorized' ) {\n\t\t\t\t\t// The uncategorized category should show all the patterns without any category...\n\t\t\t\t\tif ( ! pattern.categories ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// ...or with no available category.\n\t\t\t\t\treturn ! pattern.categories.some( ( catName ) =>\n\t\t\t\t\t\tavailableCategories.some( ( c ) => c.name === catName )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-title\"\n\t\t\t\t\t\t\tsize={ 13 }\n\t\t\t\t\t\t\tlevel={ 4 }\n\t\t\t\t\t\t\tas=\"div\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<PatternsFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tsize=\"12\"\n\t\t\t\t\t\tas=\"p\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__help-text\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Drag and drop patterns into the canvas.' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\t\tisDraggable\n\t\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"], "mappings": "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", "names": ["usePatternsState", "usePatternsPaging", "VStack", "HStack", "Heading", "Text", "BlockPatternsList"] }