HEX
Server: LiteSpeed
System: Linux server315.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: globfdxw (6114)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/globfdxw/public_html/wp-content/plugins/sermone/src/quickview-modal.js
/**
 * Sermone quickview modal 
 */

import { NavMediaContentRender } from './helpers'

! ( ( w, $ ) => {
  'use strict'

  let Modal = null
  let Cache = {}
  let UrlLoadedInit = w.location.href
  let TitleLoadInit = $( 'title' ).text()

  const ModalOpenHandle = ( ID ) => {
    Modal.trigger( '__open:sermone' ) // Open modal 
    Modal.trigger( '__loading:sermone', [ true ] ) // Enable loading effect

    Modal.trigger( '__loadContent:sermone', [ ID, ( data ) => {
      Modal.trigger( '__loading:sermone', [ false ] ) // Disable loading effect 
      Modal.trigger( '__pushContent:sermone', [ data.content ] )
      
      $( '.sermone--media-content-type:not(.__is-render)' ).each( function() {
        NavMediaContentRender( $( this ) )
      } )

      /**
       * Update browser url
       */
      UpdateBrowserUrl( { 
        ID: data.meta_data.post_id, 
        Title: data.meta_data.post_title, 
        Url: data.meta_data.post_url 
      } )

    } ] )
  }

  const UpdateBrowserUrl = ( { ID, Title, Url } ) => {
    window.history.pushState( { SermoneID: ID }, Title, Url );
  }

  w.onpopstate = ( event ) => {
    let SermoneID = event.state ? event.state.SermoneID : 0

    if( ! SermoneID || SermoneID == 0 || SermoneID == undefined ) {
      Modal.trigger( '__close:sermone' )

      /**
       * Update browser url
       */
      UpdateBrowserUrl( { 
        ID: 0,
        Title: TitleLoadInit, 
        Url: UrlLoadedInit
      } )

      return;
    }

    ModalOpenHandle( SermoneID )
  }

  /**
   * Quick view modal func 
   */
  const QuickviewModalFunc = () => {
    
    /**
     * Add custom trigger event
     */
    Modal.on( {
      '__open:sermone' ( e, post_id ) {
        $( 'body' ).addClass( '__sermone-quickview-modal-open' )
      },
      '__close:sermone' ( e ) {
        $( 'body' ).removeClass( '__sermone-quickview-modal-open' )

        // Remove content
        $( this ).trigger( '__pushContent:sermone', [ '' ] )
      },
      '__loading:sermone' ( e, status = false ) {
        if( status == true ) {
          Modal.addClass( '__is-loading' )
        } else {
          Modal.removeClass( '__is-loading' )
        }
      },
      '__loadContent:sermone' ( e, post_id, callback ) {

        if( Cache[ post_id ] ) {
          callback.call( '', Cache[ post_id ] )
          return
        }

        $.ajax( {
          type: 'POST',
          url: PHP_DATA.ajax_url,
          data: { action: 'sermone_ajax_quickview_template', post_id  },
          success ( res ) {
            
            callback ? callback.call( '', res ) : ''

            if( res.success == true )  
              Cache[ post_id ] = res
          },
          error ( err ) {
            console.log( err )
          }
        } )
      },
      '__pushContent:sermone' ( e, content ) {
        Modal.find( '.sermone-modal-content' ).html( content )
      }
    } )

    $( 'body' ).on( 'click', '[data-sermone-quickview]', function( e ) {
      e.preventDefault();
      let ID = $( this ).data( 'sermone-quickview' )

      // Modal open handle
      ModalOpenHandle( ID )
    } )

    $( 'body' ).on( 'click', function( e ) {
      if( $( e.target ).hasClass( 'sermone-modal-container' ) ) {
        Modal.trigger( '__close:sermone' )

        /**
         * Update browser url
         */
        UpdateBrowserUrl( { 
          ID: 0,
          Title: TitleLoadInit, 
          Url: UrlLoadedInit
        } )
      }
    } )
  }

  /**
   * DOM Ready
   */
  $( () => {
    Modal = $( '#sermone-modal' )
    QuickviewModalFunc() 
  } )

} ) ( window, jQuery )

module.exports = {}