/home/preegmxb/gymnyou.com/wp-content/plugins/powerkit/modules/facebook/public/block/edit.jsx
/**
 * External dependencies
 */
import classnames from 'classnames';
import { debounce } from 'throttle-debounce';
/**
 * WordPress dependencies
 */
const { __ } = wp.i18n;
const {
	Component,
	Fragment,
	createRef,
} = wp.element;
const {
	Placeholder,
	Disabled,
} = wp.components;
/**
 * Component
 */
export default class FacebookFanpageBlockEdit extends Component {
	constructor() {
		super( ...arguments );
		this.fbRef = createRef();
        this.maybeInit = debounce( 300, this.maybeInit.bind( this ) );
    }
	componentDidMount() {
		this.maybeInit();
	}	
	componentDidUpdate() {
		this.maybeInit();
	}
	maybeInit() {
        const {
			href,
		} = this.props.attributes;
		if ( ! this.fbRef || ! this.fbRef.current ) {
			return;
		}
		if ( ! href || ! window.FB || ! window.FB.XFBML ) {
			return;
		}
		const $ref = this.fbRef.current;
        let {
			showCover,
			showFacepile,
			showPosts,
			smallHeader,
		} = this.props.attributes;
		const hideCover = showCover ? 'false' : 'true';
		showFacepile = showFacepile ? 'true' : 'false';
		showPosts = showPosts ? 'true' : 'false';
		smallHeader = smallHeader ? 'true' : 'false';
		// check if already rendered
		const $query = $ref.getAttribute( 'fb-iframe-plugin-query' );
		if ( $query ) {
			let queryObj = false;
			try {
				// thanks https://stackoverflow.com/questions/8648892/convert-url-parameters-to-a-javascript-object
				queryObj = JSON.parse('{"' + decodeURIComponent( $query ).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');
			} catch( e ) {
				queryObj = false;
			}
			if (
				queryObj &&
				queryObj.href === href &&
				queryObj.hide_cover === hideCover &&
				queryObj.show_facepile === showFacepile &&
				queryObj.show_posts === showPosts &&
				queryObj.small_header === smallHeader
			) {
				return;
			}
		}
		// try to re-render
		if ( $ref.attributes['fb-xfbml-state'] ) {
			$ref.attributes['fb-xfbml-state'] = 're-rendering';
		}
		FB.XFBML.parse( $ref.parentNode );
	}
	render() {
		const {
			setAttributes,
		} = this.props;
		let {
			className,
		} = this.props;
		
        const {
			href,
			showCover,
			showFacepile,
			showPosts,
			smallHeader,
			canvasClassName,
		} = this.props.attributes;
		className = classnames(
			'fb-page-wrapper',
			canvasClassName,
			className
		);
        return (
			<Fragment>
				{ href ? (
					<Disabled>
						<div
							className={ className }
						>
							<div className="fb-page"
								ref={ this.fbRef }
								data-href={ href }
								data-hide-cover={ showCover ? 'false' : 'true' }
								data-show-facepile={ showFacepile ? 'true' : 'false' }
								data-show-posts={ showPosts ? 'true' : 'false' }
								data-small-header={ smallHeader ? 'true' : 'false' }
								data-adapt-container-width="true"
							/>
						</div>
					</Disabled>
				) : (
					<Placeholder>
						{ __( 'Please, enter Facebook Fanpage URL.' ) }
					</Placeholder>
				) }
			</Fragment>
        );
    }
}