HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/lipovac/wp-content/plugins/the-events-calendar/common/src/modules/hoc/with-selected.js
/**
 * External dependencies
 */
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {
	noop,
} from 'lodash';

/**
 * Higher order component that executes two functions:
 *
 * - `onBlockFocus` when the block is selected
 * - `onBlockBlur` when the block losses focus after being selected
 *
 * @returns {function} Return a new HOC
 */
export default () => ( WrappedComponent ) => {
	class WithSelected extends Component {
		static defaultProps = {
			isSelected: false,
			onBlockFocus: noop,
			onBlockBlur: noop,
		};

		static propTypes = {
			onBlockFocus: PropTypes.func,
			onBlockBlur: PropTypes.func,
			isSelected: PropTypes.bool,
		};

		componentDidMount() {
			const { isSelected, onBlockFocus, onBlockBlur } = this.props;
			if ( isSelected ) {
				onBlockFocus();
			} else {
				onBlockBlur();
			}
		}

		componentDidUpdate( prevProps ) {
			const { isSelected, onBlockFocus, onBlockBlur } = this.props;

			if ( prevProps.isSelected === isSelected ) {
				return;
			}

			if ( isSelected ) {
				onBlockFocus();
			} else {
				onBlockBlur();
			}
		}

		render() {
			return <WrappedComponent { ...this.props } />;
		}
	}

	WithSelected.displayName = `WithIsSelected( ${ WrappedComponent.displayName || WrappedComponent.name || 'Component ' }`;

	return WithSelected;
};