import { createElement, useCallback } from '@wordpress/element' import { __ } from 'ct-i18n' import { Spinner } from '@wordpress/components' import useDynamicPreview from '../../hooks/useDynamicPreview' import { colors } from './colors' const OVERWRITE_ATTRIBUTES = { contacts_icons_size: 20, contacts_items_spacing: '', contacts_icon_shape: 'rounded', contacts_icon_fill_type: 'outline', contact_link_target: 'no', contact_text: '', contacts_items_direction: 'column', link_icons: 'no', ...colors, } const Preview = ({ attributes }) => { const { contacts_icons_size = 20, contacts_items_spacing = '', contacts_icon_shape = 'rounded', contacts_icon_fill_type = 'outline', contact_link_target = 'no', contacts_items_direction = 'column', } = attributes const formatContent = useCallback( (content) => { const virtualContainer = document.createElement('div') virtualContainer.innerHTML = content const socialIcons = virtualContainer.querySelector( '.ct-contact-info-block ul' ) const links = virtualContainer.querySelectorAll('a') if (links) { links.forEach((link) => { link.target = contact_link_target === 'yes' ? '_blank' : '_self' }) } return socialIcons.innerHTML }, [ contacts_icons_size, contacts_icon_shape, contacts_icon_fill_type, contact_link_target, contacts_items_direction, contacts_items_spacing, ] ) const { isLoading, preview } = useDynamicPreview( 'contact-info', { ...attributes, ...OVERWRITE_ATTRIBUTES, }, formatContent ) if (isLoading) { return } return (