- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
122 lines
2.8 KiB
JavaScript
Executable File
122 lines
2.8 KiB
JavaScript
Executable File
import {tveOuterHeight, getPreviewLink} from './utils';
|
|
import {__} from '@wordpress/i18n';
|
|
import {PanelBody, PanelRow} from '@wordpress/components';
|
|
import {InspectorControls} from '@wordpress/block-editor';
|
|
|
|
const createElement = wp.element.createElement;
|
|
const previewBlock = ( props ) => {
|
|
let previewLink = props.attributes.previewLink;
|
|
const selectedPost = props.posts ? props.posts.find(
|
|
( post ) =>
|
|
Number( post.id ) === Number( props.attributes.selectedBlock )
|
|
) : 0;
|
|
if ( selectedPost ) {
|
|
props.setAttributes( {
|
|
previewLink: selectedPost.link,
|
|
editLink: selectedPost.edit_url,
|
|
} );
|
|
}
|
|
|
|
const editLink = props.attributes.editLink;
|
|
if ( previewLink ) {
|
|
previewLink = getPreviewLink( previewLink );
|
|
}
|
|
|
|
return [
|
|
createElement(
|
|
InspectorControls,
|
|
null,
|
|
|
|
createElement(
|
|
PanelBody,
|
|
{
|
|
title: __( 'Block settings', 'thrive-cb' ),
|
|
initialOpen: true,
|
|
},
|
|
createElement(
|
|
PanelRow,
|
|
{},
|
|
|
|
createElement(
|
|
'a',
|
|
{
|
|
class:
|
|
'thrive-architect-edit-link tcb-enable-editor',
|
|
'data-id': props.attributes.selectedBlock,
|
|
href: editLink,
|
|
target: '_blank',
|
|
},
|
|
createElement(
|
|
'div',
|
|
{
|
|
class: 'thrive-architect-admin-icon-holder',
|
|
},
|
|
createElement( 'div', {
|
|
class: 'thrive-architect-admin-icon',
|
|
} )
|
|
),
|
|
createElement(
|
|
'div',
|
|
{
|
|
class:
|
|
'thrive-architect-admin-text tve-block-edit',
|
|
},
|
|
__( 'Edit block with Architect', 'thrive-cb' )
|
|
)
|
|
)
|
|
)
|
|
)
|
|
),
|
|
createElement( 'iframe', {
|
|
src: previewLink,
|
|
id: `architect-block-${props.attributes.selectedBlock}`,
|
|
class: `${props.attributes.className} architect-block-preview architect-block-${props.attributes.selectedBlock}`,
|
|
scrolling: 'no',
|
|
onLoad() {
|
|
const iframes = document.getElementsByClassName(
|
|
`architect-block-${props.attributes.selectedBlock}`
|
|
);
|
|
|
|
/**
|
|
* in case of duplicate / copy-paste
|
|
*/
|
|
Array.prototype.forEach.call( iframes, ( iframe ) => {
|
|
const iframeDocument = iframe.contentDocument,
|
|
setHeight = () => {
|
|
const height = tveOuterHeight( iframeDocument.body );
|
|
|
|
iframe.style.setProperty(
|
|
'height',
|
|
`${height}px`
|
|
);
|
|
iframe.parentNode.style.setProperty(
|
|
'height',
|
|
`${height}px`
|
|
);
|
|
};
|
|
|
|
iframe.style.setProperty(
|
|
'pointer-events',
|
|
'none'
|
|
);
|
|
|
|
setHeight();
|
|
/**
|
|
* in case there is content loaded via ajax calls
|
|
*/
|
|
setTimeout( () => {
|
|
setHeight();
|
|
}, 3000 );
|
|
|
|
if ( iframe.contentWindow.TVE_Dash ) {
|
|
iframe.contentWindow.TVE_Dash.forceImageLoad( iframeDocument );
|
|
}
|
|
} );
|
|
},
|
|
}
|
|
),
|
|
];
|
|
};
|
|
|
|
export default previewBlock;
|