// eslint-disable-next-line import/no-extraneous-dependencies import { ReactElement } from 'react'; // eslint-disable-next-line import/no-extraneous-dependencies import { addFilter } from '@wordpress/hooks'; // eslint-disable-next-line import/no-extraneous-dependencies import { createHigherOrderComponent } from '@wordpress/compose'; import EmbedEdit, { EmbedEditProps } from './forked-components/EmbedEdit'; import EmbedEditControls from './forked-components/EmbedEditControls'; type BlockEditType = (props: EmbedEditProps) => ReactElement; const lazyLoadVideosBlockEdit = createHigherOrderComponent( (BlockEdit: BlockEditType) => (props: EmbedEditProps) => { const { attributes, name } = props; const loadYoutube = attributes?.providerNameSlug === 'youtube' && window.llvConfig?.youtube; const loadVimeo = attributes?.providerNameSlug === 'vimeo' && window.llvConfig?.vimeo; if (name === 'core/embed' && (loadYoutube || loadVimeo)) { // Custom styling and loading return [ , props.isSelected && , ]; } // Default embed handling return ; }, 'lazyLoadVideos', ); // Priority must be above 10 so that this filter runs before the // "core/editor/align/with-toolbar-controls" filter // https://github.com/WordPress/gutenberg/blob/10871217bc48c4f5ded3e13a9088f6ff91da3518/packages/block-editor/src/hooks/align.js#L241 addFilter('editor.BlockEdit', 'kw/lazy-load-videos', lazyLoadVideosBlockEdit, 5);