File "tpag-deactive.php"

Full Path: /home/digimqhe/flashdigi.uk/comment-content/plugins/the-plus-addons-for-block-editor/classes/extras/tpag-deactive.php
File size: 32.9 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * TPGB Deactive Popup
 *
 * @since 3.2.8
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

if ( ! class_exists( 'Tpgb_Deactive' ) ) {

	class Tpgb_Deactive {


        /**
		 * Member Variable
		 */
		private static $instance;

		/**
		 *  Initiator
		 */
		public static function get_instance() {
			if ( ! isset( self::$instance ) ) {
				self::$instance = new self;
			}
			return self::$instance;
		}

		/**
		 *  Constructor
		 */
		public function __construct() {
            
            add_action( 'current_screen', function () {
                if ( ! in_array( get_current_screen()->id, [ 'plugins', 'plugins-network' ] ) ) {
                    return;
                }
    
                add_action( 'admin_footer', array( $this, 'tpgb_deactive_popup' ) );
            } );
			
            add_action( 'wp_ajax_tpgb_deactive_plugin', array( $this, 'tpgb_deactive_plugin' ) );
            add_action( 'wp_ajax_tpgb_skip_deactivate', array( $this, 'tpgb_skip_deactivate' ) );
		}

        public function tpgb_check_white_label(){
            if(defined('TPGBP_VERSION')){
                $label_options = get_option( 'tpgb_white_label' );	
                
                if( !empty($label_options) && is_array($label_options)){
                    foreach($label_options as $key => $val){
                        if(!empty($val) && $val!='hidden'){
                            return false;
                        }
                    }
                }
            }
            return true;
        }

        /**
		 *  Popup Html Css Js
         * 
		 */
        public function tpgb_deactive_popup() {
            global $pagenow;
            if ( !empty($pagenow) && $pagenow == 'plugins.php' && $this->tpgb_check_white_label() ) {
                $this->tpgb_deact_popup_html();

                $this->tpgb_deact_popup_css();
                $this->tpgb_deact_popup_js();
            }
        }

        /**
		 *  Popup Html Code
         * 
		 */
        public function tpgb_deact_popup_html() {  
            
			$security = wp_create_nonce( 'tpgb-deactivate-feedback' );
            ?>
            <div class="tpgb-modal" id="tpgb-deactive-modal">
                <div class="tpgb-modal-wrap">

                    <div class="tpgb-modal-body">
                        <h3 class="tpgb-feed-caption"><?php echo esc_html__( "Deactivation Reason", 'the-plus-addons-for-block-editor' ); ?></h3>
                        <form class="tpgb-feedback-dialog-form" method="post">

                            <input type="hidden" name="nonce" value="<?php echo esc_attr( $security ); ?>" />
                            <div class="tpgb-modal-input">
                                <?php 
                                    $resonData = array(
                                        array(
                                            'reason'  	    => __( "Just Debugging.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><g stroke="#1717CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.667" clip-path="url(#a)"><path d="M10 18.333a8.333 8.333 0 1 0 0-16.666 8.333 8.333 0 0 0 0 16.666ZM8.333 12.5v-5M11.667 12.5v-5"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h20v20H0z"/></clipPath></defs></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Plugin Issue.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M10.179 2.771a3.601 3.601 0 0 1 3.42 3.596l.113.007a.9.9 0 0 1 .273.08l2.73-1.745.08-.046a.9.9 0 0 1 .89 1.562L14.97 7.961c.244.623.391 1.283.428 1.956l.002.05h2.7l.092.004a.9.9 0 0 1 0 1.791l-.092.005h-2.7v.9l-.006.268a5.405 5.405 0 0 1-.172 1.103l2.44 1.457.076.05a.9.9 0 0 1-.918 1.537l-.082-.042-2.264-1.353a5.402 5.402 0 0 1-8.95.001L3.261 17.04l-.461-.773-.462-.772 2.44-1.457a5.403 5.403 0 0 1-.178-1.372v-.899H1.9a.901.901 0 0 1 0-1.8h2.7v-.05l.038-.42a6.301 6.301 0 0 1 .391-1.536L2.314 6.225l-.075-.054a.9.9 0 0 1 1.045-1.463l2.73 1.747a.9.9 0 0 1 .274-.081l.111-.007A3.602 3.602 0 0 1 10 2.767l.179.004ZM3.26 17.04a.9.9 0 0 1-.923-1.545l.923 1.545Zm3.652-8.873a4.499 4.499 0 0 0-.514 1.837v2.662a3.602 3.602 0 0 0 2.7 3.486v-4.385a.9.9 0 0 1 1.8 0v4.385a3.602 3.602 0 0 0 2.697-3.307l.004-.179V9.995a4.496 4.496 0 0 0-.514-1.829H6.913ZM10 4.566a1.802 1.802 0 0 0-1.8 1.8h3.6l-.009-.178a1.8 1.8 0 0 0-1.613-1.613L10 4.566Z"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Slow Performance.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M2.8 10.931c0 1.99.806 3.79 2.109 5.091l-1.272 1.272A8.972 8.972 0 0 1 1 10.931a9 9 0 0 1 9-9 9 9 0 0 1 6.364 15.364l-1.273-1.273A7.2 7.2 0 1 0 2.8 10.932Zm4.236-4.236 4.05 4.05-1.272 1.272-4.05-4.05 1.272-1.272Z"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Switched to Alternative.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M5.532 9.195a.809.809 0 0 1 0 1.61l-.083.003H3.252a5.58 5.58 0 0 0 6.222 2.772l.352-.097a5.562 5.562 0 0 0 3.681-3.716.81.81 0 0 1 1.55.465 7.181 7.181 0 0 1-1.265 2.415l4.97 4.972.056.061a.81.81 0 0 1-1.137 1.14l-.062-.056-4.972-4.973a7.183 7.183 0 0 1-2.794 1.361v.001a7.199 7.199 0 0 1-7.236-2.406v.893a.808.808 0 1 1-1.617 0V10l.004-.083a.809.809 0 0 1 .805-.726h3.64l.083.004ZM6.506 1.2a7.199 7.199 0 0 1 7.235 2.406V2.72a.81.81 0 0 1 1.619 0v3.64a.81.81 0 0 1-.81.809h-3.64a.81.81 0 0 1 0-1.617h2.201a5.583 5.583 0 0 0-6.226-2.78h-.002a5.565 5.565 0 0 0-3.919 3.474l-.115.346a.81.81 0 0 1-1.551-.463l.071-.225a7.18 7.18 0 0 1 5.137-4.705v.001Z"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "No Longer Needed.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M16.566 1.914a2.7 2.7 0 0 1 1.643 4.595c-.287.287-.633.5-1.009.633v8.259a2.701 2.701 0 0 1-2.7 2.7h-9a2.704 2.704 0 0 1-2.688-2.433L2.8 15.4V7.143a2.7 2.7 0 0 1-1.01-.634 2.701 2.701 0 0 1-.777-1.641L.999 4.6a2.702 2.702 0 0 1 2.7-2.7h12.6l.267.014ZM4.6 15.4l.004.089a.903.903 0 0 0 .896.811h9a.903.903 0 0 0 .9-.9V7.3H4.6v8.1Zm7.292-6.296a.9.9 0 0 1 0 1.791l-.092.005H8.2a.9.9 0 0 1 0-1.8h3.6l.092.004ZM3.699 3.701a.9.9 0 0 0-.9.9l.005.088a.902.902 0 0 0 .895.811h12.6l.09-.004A.901.901 0 0 0 17.2 4.6a.9.9 0 0 0-.811-.895l-.09-.004H3.7Z"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Compatibility Issue.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" fill-rule="evenodd" d="M19 10a9 9 0 0 1-9 9 9 9 0 0 1-9-9 9 9 0 0 1 9-9 9 9 0 0 1 9 9Zm-9 7.2a7.2 7.2 0 1 0 0-14.4 7.2 7.2 0 0 0 0 14.4Z" clip-rule="evenodd"/><path fill="#1717CC" fill-rule="evenodd" d="M16.036 4.414a.9.9 0 0 1 0 1.272l-10.35 10.35a.9.9 0 0 1-1.272-1.272l10.35-10.35a.9.9 0 0 1 1.272 0Z" clip-rule="evenodd"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Missing Feature.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M17.363 10a1.154 1.154 0 0 0-.263-.734l-.075-.084-1.377-1.376a1.636 1.636 0 0 1 .774-2.749l.157-.048a1.23 1.23 0 0 0 .408-.26l.11-.12a1.23 1.23 0 0 0-.093-1.633 1.228 1.228 0 0 0-2.012.426l-.049.155a1.638 1.638 0 0 1-2.585.919l-.164-.143-1.376-1.377a1.157 1.157 0 0 0-1.551-.077l-.085.077-1.378 1.376h.001l.184.05A2.864 2.864 0 1 1 4.404 7.99l-.051-.184-1.378 1.377a1.158 1.158 0 0 0-.338.818l.006.114a1.157 1.157 0 0 0 .331.703h.001l1.377 1.377.144.163a1.636 1.636 0 0 1-.92 2.585h.001a1.228 1.228 0 0 0-.024 2.381 1.228 1.228 0 0 0 1.504-.9 1.637 1.637 0 0 1 2.748-.775l1.377 1.376.085.077a1.16 1.16 0 0 0 .733.262l.113-.005a1.16 1.16 0 0 0 .705-.334l1.377-1.376a2.864 2.864 0 1 1 3.401-3.637l.05.183v.001h.002l1.377-1.377.075-.084a1.156 1.156 0 0 0 .263-.734ZM19 10a2.793 2.793 0 0 1-.634 1.771l-.185.204-1.377 1.375.001.001a1.638 1.638 0 0 1-2.75-.775v-.001a1.227 1.227 0 1 0-1.479 1.482l.207.064a1.637 1.637 0 0 1 .712 2.52l-.143.165-1.377 1.375a2.794 2.794 0 0 1-1.7.805l-.275.013a2.793 2.793 0 0 1-1.772-.633l-.203-.184-1.377-1.377v-.001a2.864 2.864 0 1 1-3.636-3.402l.184-.05-1.377-1.376v-.001a2.793 2.793 0 0 1-.805-1.701L1 10a2.793 2.793 0 0 1 .82-1.975l1.376-1.377a1.638 1.638 0 0 1 2.337.023c.202.21.344.47.412.753l.047.155a1.228 1.228 0 0 0 2.326-.776 1.227 1.227 0 0 0-.739-.81l-.155-.05a1.636 1.636 0 0 1-.776-2.748l1.377-1.376.203-.184a2.793 2.793 0 0 1 3.747.184l1.377 1.377.051-.185a2.861 2.861 0 0 1 4.759-1.171 2.864 2.864 0 0 1 .092 3.952l-.134.137a2.863 2.863 0 0 1-1.132.67l-.184.05 1.377 1.376.185.203A2.796 2.796 0 0 1 19 10Z"/></svg>'
                                        ),
                                        array(
                                            'reason'        	=> __( "Other Reasons.", 'the-plus-addons-for-block-editor' ),
                                            'svg'=>'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="#1717CC" d="M10 1a9 9 0 0 1 9 9 9 9 0 0 1-9 9 9 9 0 0 1-9-9 9 9 0 0 1 9-9Zm0 1.8a7.2 7.2 0 1 0 0 14.4 7.2 7.2 0 0 0 0-14.4Zm0 10.8a.9.9 0 1 1 0 1.8.9.9 0 0 1 0-1.8Zm0-8.55a3.263 3.263 0 0 1 1.213 6.291.72.72 0 0 0-.274.18c-.04.046-.046.103-.045.163l.006.116a.9.9 0 0 1-1.794.105L9.1 11.8v-.225c0-1.038.837-1.66 1.444-1.904a1.463 1.463 0 1 0-2.007-1.358.9.9 0 1 1-1.8 0A3.262 3.262 0 0 1 10 5.05Z"/></svg>'
                                        ),
                                    );
                                    foreach ( $resonData as $key => $value) { ?>
                                        <div class="nxt-reason-item" tabindex="0" >
                                            <label class="tpgb-relist">
                                                <span class="nxt-reason-svg">
                                                    <?php if( !empty($value['svg']) ){ echo $value['svg']; } ?>
                                                </span>
                                                <div class="tpgb-reason-text"><?php echo esc_html($value['reason']); ?></div>
                                                
                                            </label>
                                        </div>
                                <?php } ?>
                            </div>
                            <textarea name="tpgb-reason-txt" placeholder="<?php echo esc_html__('Please share more details', 'the-plus-addons-for-block-editor') ?>" class="tpgb-reason-deails" rows="3"></textarea>
                            <div class="tpgb-help-link">                                 
                                <span><?php echo esc_html__( "If you require any help, please" , 'the-plus-addons-for-block-editor'); ?></span>                                 
                                <span> <a href="<?php if(defined('TPGBP_VERSION')) { echo esc_url('https://store.posimyth.com/helpdesk/?utm_source=wpbackend&utm_medium=admin&utm_campaign=links'); } else { echo esc_url('https://wordpress.org/support/plugin/the-plus-addons-for-block-editor/'); }  ?>" target="_blank" rel="noopener noreferrer" > <?php echo esc_html__( 'Create A Ticket.', 'the-plus-addons-for-block-editor') ?> </a> <?php echo esc_html__ ( 'We reply within 24 working hours.', 'the-plus-addons-for-block-editor' ); ?></span>                                 
                                <span> <?php echo esc_html__( 'Looking for instant solutions? Read our ', 'the-plus-addons-for-block-editor') ?><a href="<?php echo esc_url('https://nexterwp.com/docs/?utm_source=wpbackend&utm_medium=admin&utm_campaign=pluginpage') ?>" target="_blank" rel="noopener noreferrer" ><?php echo esc_html__( 'Documentation', 'the-plus-addons-for-block-editor') ?></a><?php echo esc_html__( ' or ', 'the-plus-addons-for-block-editor') ?><a href="<?php echo esc_url('https://nexterwp.com/chat/?utm_source=wpbackend&utm_medium=admin&utm_campaign=pluginpage') ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html__( 'Ask AI', 'the-plus-addons-for-block-editor') ?></a>. </span>                              
                            </div>
                            <div class="nxt-contact-item">
                                <label class="tpgb-relist">
                                    <input type="checkbox" class="nxt-contact-checkbox" name="nxt-contact-consent" value="1"/>
                                    <span class="tpgb-reason-text"> <?php echo esc_html__('I agree to be contacted via email for support with this plugin.', 'the-plus-addons-for-block-editor') ?> </span>
                                </label>
                            </div>
                        </form>
                    </div>

                    <div class="tpgb-modal-footer">
                        <a class="tpgb-modal-deactive" href="#"><?php echo esc_html__( "Skip & Deactivate", 'the-plus-addons-for-block-editor' ); ?></a>
                        <a class="tpgb-modal-submit tpgb-btn tpgb-btn-primary" href="#"><?php echo esc_html__( "Submit & Deactivate", 'the-plus-addons-for-block-editor' ); ?></a>
                    </div>
                        
                    
                </div>
            </div>
        <?php }

        /**
		 *  Popup Css  Code
         * 
		 */
        public function tpgb_deact_popup_css() { ?>
            <style type="text/css">
                .tpgb-relist .nxt-contact-checkbox + .tpgb-reason-text{
                    font-size: 12px;
                }
                .tpgb-relist .nxt-contact-checkbox {
                    margin-top: 1px;
                    position: relative;
                }

                .nxt-contact-checkbox::after {
                    content: "";
                    position: absolute;
                    top: 40%;
                    left: 50%;
                    border: solid #fff;
                    border-width: 0 2px 2px 0;
                    width: calc(20px - 100%);
                    height: calc(20px - 75%);
                    transform: translate(-50%,-50%) rotate(45deg) scale(0);
                    opacity: 0;
                    transition: transform .3s cubic-bezier(.12,.4,.29,1.46),opacity .3s ease
                }

                .nxt-contact-checkbox:checked::after {
                    transform: translate(-50%,-50%) rotate(45deg) scale(1);
                    opacity: 1
                }

                .nxt-contact-checkbox:focus {
                    outline-width: 0;
                    outline-style: none
                }

                .nxt-contact-checkbox:checked:focus,.nxt-contact-checkbox:checked:hover,.nxt-contact-checkbox:checked {
                    background-color: #162d9e;
                    background-image: none;
                    outline-width: 0;
                    outline-style: none;
                    border: none;
                }

                .nxt-contact-checkbox:not(:checked)::after {
                    transform: translate(-50%,-50%) rotate(45deg) scale(0);
                    opacity: 0;
                    transition: none
                }
                .tpgb-relist .nxt-contact-checkbox:checked::before {
                    content: "";
                }
                .tpgb-reason-txt{
                    border: 1px solid #72727266;
                    border-radius: 5px;
                }
                .nxt-reason-svg{
                    background-color: #F5F7FE;
                    padding: 5px 5px 0px 5px;
                    border-radius: 2.67px;
                    
                }
                .nxt-reason-item,.nxt-contact-item {
                    border: 1.5px solid #72727266; 
                    flex: 0 0 44%;
                    padding: 10px;
                    border-radius: 5px;
                    transition: border-color 0.3s;
                }

                .nxt-reason-item:focus,.nxt-reason-item:active,.nxt-reason-item.active {
                    border-color: #1717CC;
                }
                .tpgb-modal {
                    position: fixed;
                    z-index: 99999;
                    top: 0;
                    right: 0;
                    bottom: 0;
                    left: 0;
                    backdrop-filter: blur(4px);
                    display: none;
                    box-sizing: border-box;
                    overflow: scroll;
                    opacity: 0;
                    visibility: hidden;
                    transition: opacity .3s,visibility .3s,backdrop-filter .3s
                }

                .tpgb-modal.modal-active {
                    display: block;
                    opacity: 1;
                    visibility: visible
                }

                .tpgb-modal-wrap {
                    width: 100%;
                    position: relative;
                    top: 50%;
                    left: 50%;
                    transform: translate(-50%,-50%);
                    background: #fff;
                    max-width: 550px;
                    border-radius: 5px;
                    overflow: hidden;
                    transition: transform .3s ease-in-out;
                    transform-origin: center
                }

                .tpgb-reason-deails {
                    display: block;
                    width: 100%;
                    margin-top: 20px;
                    padding: 9px 15px;
                }

                #tpgb-deactive-modal {
                    background: rgb(0 0 0/33%);
                    overflow: hidden
                }

                #tpgb-deactive-modal .tpgb-feed-caption {
                    font-weight: 700;
                    font-size: 14px;
                    line-height: 17px;
                }
               .tpgb-help-link{
                    padding: 20px 5px;
                    display:block;
                }
                #tpgb-deactive-modal .tpgb-modal-body
                 {
                    padding: 20px 30px;
                    display: flex;
                    flex-direction: column
                }

                .tpgb-feedback-dialog-form {
                    padding-top: 25px
                }

                #tpgb-deactive-modal .tpgb-modal-body h3 {
                    padding: 0;
                    margin: 0;
                    line-height: 20px;
                    font-size: 16px;
                    text-align: center;
                }

                #tpgb-deactive-modal .tpgb-modal-body ul {
                    margin: 25px 0 10px
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li {
                    display: flex;
                    margin-bottom: 10px;
                    color: #807d7d
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li:last-child {
                    margin-bottom: 0
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li label {
                    align-items: center;
                    width: 100%
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li label input {
                    padding: 0!important;
                    margin: 0;
                    display: inline-block
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li label textarea {
                    margin-top: 8px;
                    width: 350px
                }

                #tpgb-deactive-modal .tpgb-modal-body ul li label .tpgb-reason-text {
                    margin-left: 8px;
                    display: inline-block
                }

                #tpgb-deactive-modal .tpgb-modal-footer {
                    padding: 0px 30px 30px 30px;
                    display: flex;
                    align-items: center;
                    justify-content: space-between;
                    flex-wrap: wrap
                }

                #tpgb-deactive-modal .tpgb-modal-footer .tpgb-modal-deactive,#tpgb-deactive-modal .tpgb-modal-footer .tpgb-modal-submit {
                    cursor: pointer;
                    font-size: 14px;
                    font-weight: 500;
                    padding: 10px 15px;
                    outline: 0;
                    border: 0;
                    border-radius: 3px;
                    transition: all .3s;
                    text-decoration: none;
                    text-align: center;
                    line-height: 20px;
                }

                #tpgb-deactive-modal .tpgb-modal-footer .tpgb-modal-submit {
                    background-color: #1717CC;
                    color: #fff;
                    width: 150px
                }

                #tpgb-deactive-modal .tpgb-modal-footer .tpgb-modal-deactive {
                    color: #1717CC
                }

                .tpgb-modal-input {
                    display: flex;
                    flex-wrap: wrap;
                    align-items: flex-start;
                    justify-content: center;
                    gap:10px;
                }

                .tpgb-relist {
                    display: flex;
                    gap:8px;
                    align-items: anchor-center;
                }

                .tpgb-reason-text {
                    display: inline-block;
                    font-weight: 400;
                    color: #1A1A1A;
                    font-Size: 14px;
                    line-height: 18px;
                }

                .tpgb-modal-deactive:focus,.tpgb-modal-submit:focus {
                    border-color: #1717CC!important;
                    box-shadow: none!important
                }

                .tpgb-help-link span {
                    font-size: 12px;
                    color : #666666;
                    font-weight: 400
                }

                .tpgb-help-link span>a {
                    color: #1717CC;
                    text-decoration: none;
                    line-height: 1.8
                }
                @keyframes tp-rotation{
                    0%{
                        transform:rotate(0deg)
                    }
                    100%{
                        transform:rotate(359deg)
                    }
                }
                #tpgb-deactive-modal .tpgb-modal-submit.tpgb-loading:before{
                    display: flex;
                    justify-content: center;
                    align-items: center;
                    content: "\f463";
                    font: 18px dashicons;
                    animation: tp-rotation 2s infinite linear;
                }
            </style>
        <?php }
        
        /**
		 *  Popup Js Code
         * 
		 */
         public function tpgb_deact_popup_js() { ?>
            <script type="text/javascript">
                document.addEventListener('DOMContentLoaded', function() {
                    'use strict';

                    // Modal Cancel Click Action
                    document.addEventListener('click', function(e) {
                        var modal = document.getElementById('tpgb-deactive-modal');
                        if (e.target === modal) {
                            modal.classList.remove('modal-active');
                        }
                    });

                    document.addEventListener('keydown', function(e) {
                        var modal = document.getElementById('tpgb-deactive-modal');
                        if (e.keyCode === 27) {
                            modal.classList.remove('modal-active');
                        }
                    });

                    // Deactivate Button Click Action
                    let element = document.getElementById('deactivate-nexter-blocks') || document.getElementById('deactivate-the-plus-addons-for-block-editor');

                    if(element !== null){
                        element.addEventListener('click', function(e) {
                            e.preventDefault();
                            var modal = document.getElementById('tpgb-deactive-modal');
                            modal.classList.add('modal-active');
                            var href = this.getAttribute('href');
                            document.querySelector('.tpgb-modal-deactive').setAttribute('href', href);
                            document.querySelector('.tpgb-modal-submit').setAttribute('href', href);
                            
                            // Initially disable the submit button when modal opens
                            updateSubmitButtonState();
                            
                            // Initially hide textarea and help text
                            toggleFeedbackElements(false);
                        });
                    }

                    let selectedReasonValue = "";
                    
                    // Function to toggle textarea and help text visibility
                    const toggleFeedbackElements = (show) => {
                        const textarea = document.querySelector('.tpgb-reason-deails');
                        
                        if (textarea) {
                            if (show) {
                                textarea.style.display = 'block';
                            } else {
                                textarea.style.display = 'none';
                            }
                        }
                    }
                    
                    // Function to update submit button state
                    const updateSubmitButtonState = () => {
                        const submitButton = document.querySelector('.tpgb-modal-submit');
                        if (selectedReasonValue === "") {
                            // No reason selected, disable button
                            submitButton.classList.add('tpgb-submit-disabled');
                            submitButton.style.opacity = "0.5"; 
                            submitButton.style.cursor = "not-allowed";
                        } else {
                            // Reason selected, enable button
                            submitButton.classList.remove('tpgb-submit-disabled');
                            submitButton.style.opacity = "1";
                            submitButton.style.cursor = "pointer";
                        }
                    }
                    
                    document.querySelectorAll('.nxt-reason-item').forEach(item => {
                        item.addEventListener('click', function() {
                            document.querySelectorAll('.nxt-reason-item').forEach(el => el.classList.remove('active'));
                            this.classList.add('active');
                            selectedReasonValue = this.querySelector('.tpgb-reason-text').textContent;
                            
                            // Update button state when a reason is selected
                            updateSubmitButtonState();
                            
                            // Show textarea and help text when a reason is selected
                            toggleFeedbackElements(true);
                        })
                    });

                    // Submit to Remote Server
                    document.addEventListener('click', function(e) {
                        if (e.target.classList.contains('tpgb-modal-submit')) {
                            e.preventDefault();
                            
                            // Check if button is disabled
                            if (e.target.classList.contains('tpgb-submit-disabled')) {
                                return; // Do nothing if disabled
                            }
                            
                            var submitButton = e.target;
                            var url = submitButton.getAttribute('href');
                            submitButton.textContent = '';
                            submitButton.classList.add('tpgb-loading');

                            var formObj = document.getElementById('tpgb-deactive-modal').querySelector('form.tpgb-feedback-dialog-form');
                            var formData = new FormData(formObj);  
                             var checkbox = formObj.querySelector('.nxt-contact-checkbox');
                            var checkboxValue = checkbox && checkbox.checked ? '1' : '0';                          
                            var ajaxData = 'action=tpgb_deactive_plugin' +
                                '&nonce=' + formData.get('nonce') +
                                '&deactreson=' + selectedReasonValue+'&nxt-contact-consent=' + encodeURIComponent(checkboxValue);


                            if (formData.get('tpgb-reason-txt') && formData.get('tpgb-reason-txt') !== '') {
                                ajaxData += '&tprestxt=' + formData.get('tpgb-reason-txt');
                            }
                            

                            var request = new XMLHttpRequest();
                            request.open('POST', "<?php echo esc_url(admin_url('admin-ajax.php')); ?>", true);
                            request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');
                            request.onload = function () {
                                if (request.status >= 200 && request.status < 400) {
                                    document.getElementById('tpgb-deactive-modal').classList.remove('modal-active');
                                    window.location.href = url;
                                }
                            };
                            request.send(ajaxData);
                        }
                    });

                });
		    </script>
        <?php }

         /**
		 *  Deactive Plugin API Call
         * 
		 */
        public function tpgb_deactive_plugin(){
           
            $nonce = ! empty( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';

			if ( ! isset( $nonce ) || empty( $nonce ) || ! wp_verify_nonce( $nonce, 'tpgb-deactivate-feedback' ) ) {
				die( 'Security checked!' );
			}

            if ( ! current_user_can( 'activate_plugins' ) ) {
                wp_send_json_error( 'Permission denied' );
            }

            $deavtive_url = 'https://api.posimyth.com/wp-json/tpag/v2/tpgb_deactivate_user_data';

			$deactreson = ! empty( $_POST['deactreson'] ) ? sanitize_text_field( wp_unslash( $_POST['deactreson'] ) ) : '';
			$tprestxt =  isset( $_POST['tprestxt'] ) && !empty( $_POST['tprestxt'] ) ? sanitize_text_field( wp_unslash( $_POST['tprestxt'] ) ) : '';
            $ncc =  $_POST['nxt-contact-consent'];
            error_log("ncc = ".$ncc);
            
            // Get User Email
            $admin_user = wp_get_current_user();
            $admin_email =  $ncc ? $admin_user->user_email : ''; 
            $nxt_install_data = get_option( 'nexter-installed-data' );

			$api_params = array(
				// 'site_url'    => esc_url( home_url() ),
				'reason_key'  => $deactreson,
				'reason_text' => $tprestxt,
                // 'tpgb_version' => TPGB_VERSION,
                'admin_email'=>$admin_email,
			);

            if( !empty( $nxt_install_data ) ){
                $api_params = array_merge($api_params , $nxt_install_data);
            }

			$response = wp_remote_post( 
                $deavtive_url,
				array(
					'timeout'   => 30,
					'sslverify' => false,
					'body'      => $api_params,
				)
            );
            
            if (is_wp_error($response)) {
				wp_send_json([ 'deactivated' => false ]);
			} else {
				wp_send_json([ 'deactivated' => true ]);
			}

			wp_die();
        }
    }

    Tpgb_Deactive::get_instance();
}