/* eslint-disable @woocommerce/dependency-group */ /* eslint-disable @typescript-eslint/ban-ts-comment */ /** * External dependencies */ import { __ } from '@wordpress/i18n'; import { useCallback, createInterpolateElement, useContext, useEffect, useMemo, } from '@wordpress/element'; import { Link } from '@woocommerce/components'; import { Spinner } from '@wordpress/components'; // @ts-ignore No types for this exist yet. import { __experimentalBlockPatternsList as BlockPatternList } from '@wordpress/block-editor'; /** * Internal dependencies */ import { SidebarNavigationScreen } from './sidebar-navigation-screen'; import { ADMIN_URL } from '~/utils/admin-settings'; import { usePatternsByCategory } from '../hooks/use-patterns'; import { useEditorBlocks } from '../hooks/use-editor-blocks'; import { HighlightedBlockContext } from '../context/highlighted-block-context'; import { useEditorScroll } from '../hooks/use-editor-scroll'; const SUPPORTED_HEADER_PATTERNS = [ 'woocommerce-blocks/header-essential', 'woocommerce-blocks/header-minimal', 'woocommerce-blocks/header-large', 'woocommerce-blocks/header-centered-menu-with-search', ]; export const SidebarNavigationScreenHeader = () => { useEditorScroll( { editorSelector: '.interface-navigable-region.interface-interface-skeleton__content', scrollDirection: 'top', } ); const { isLoading, patterns } = usePatternsByCategory( 'woo-commerce' ); const [ blocks, , onChange ] = useEditorBlocks(); const { setHighlightedBlockIndex, resetHighlightedBlockIndex } = useContext( HighlightedBlockContext ); useEffect( () => { setHighlightedBlockIndex( 0 ); }, [ setHighlightedBlockIndex ] ); const headerPatterns = useMemo( () => patterns .filter( ( pattern ) => SUPPORTED_HEADER_PATTERNS.includes( pattern.name ) ) .sort( ( a, b ) => SUPPORTED_HEADER_PATTERNS.indexOf( a.name ) - SUPPORTED_HEADER_PATTERNS.indexOf( b.name ) ), [ patterns ] ); const onClickHeaderPattern = useCallback( ( _pattern, selectedBlocks ) => { onChange( [ selectedBlocks[ 0 ], ...blocks.slice( 1 ) ], { selection: {}, } ); }, [ blocks, onChange ] ); return ( Editor.", 'woocommerce' ), { EditorLink: ( ), } ) } content={ <>
{ isLoading && ( ) } { ! isLoading && ( ) }
} /> ); };