File manager - Edit - /home/verseaumee/lauvia/wp-content/plugins/trx_addons/components/shortcodes/hscroll/hscroll.js
Back
/** * Shortcode HScroll * * @package ThemeREX Addons * @since v2.5.2 */ /* global jQuery, TRX_ADDONS_STORAGE */ jQuery( document ).on( 'action.init_hidden_elements', function() { "use strict"; // if ( screen.width < 768 ) return; var is_touch = trx_addons_browser_is_touch(), is_sticky = trx_addons_browser_is_support_css_sticky(), use_sticky = is_sticky && ! is_touch; // Safary on mobile return 'sticky', but really is don't support it var $window = jQuery( window ), $document = jQuery( document ), $body = jQuery( 'body' ); jQuery( '.sc_hscroll:not(.sc_hscroll_inited)' ).each( function(nth) { if ( nth === 0 && ! $body.hasClass( 'sc_stack_section_present' ) ) { $body.addClass( 'sc_stack_section_present' ); } var $self = jQuery( this ).addClass( 'sc_hscroll_inited' ), $wrap = $self.find( '.sc_hscroll_wrap' ), $scroller = $self.find( '.sc_hscroll_scroller' ), $sections = $self.find( '.sc_hscroll_section' ), $section = $sections.eq(0), $bullets = $self.find( '.sc_hscroll_bullets' ), $numbers = $self.find( '.sc_hscroll_numbers' ), $progress = $self.find( '.sc_hscroll_progress' ), $bg_layers = $self.find( '.sc_hscroll_background' ), $parent = $self.parent(), $spacer = $self.find( '.sc_hscroll_spacer' ), total = $self.data( 'total' ), reverse = $self.hasClass( 'sc_hscroll_reverse' ), parent_in = false; // Move sections with specified ids inside the scroller if type="section" and a sections are not moved on the server side if ( typeof elementorFrontend == 'undefined' || ! elementorFrontend.isEditMode() ) { $sections.each( function() { var $section = jQuery( this ), id = $section.data( 'section' ); if ( id && $section.html().length < 2 ) { $section.empty().append( jQuery( '#' + id ) ); } $section.addClass('sc_hscroll_section_inited'); } ); } // Watch to the parent come in/out to the viewport trx_addons_intersection_observer_add( $parent, function( item, enter, entry ) { parent_in = enter; } ); var scroller_width, parent_top, section_width, section_height, spacer_height, dx, dy; function trx_addons_sc_hscroller_calc() { scroller_width = $scroller.outerWidth(); parent_top = $parent.offset().top; section_width = $section.outerWidth(); section_height = $section.outerHeight(); spacer_height = $spacer.height(); dx = scroller_width - section_width; dy = spacer_height - section_height; //( total - 1 ) * section_height // Add data to compatibility with Parallax for blocks inside hscroll sections $section.siblings().each( function( idx ) { //jQuery( this ).data( 'hscroll-section-offset', ( reverse ? -1 : 1 ) * ( idx + 1 ) * section_height ); jQuery( this ).data( 'hscroll-section-offset', ( reverse ? -1 : 1 ) * ( idx + 1 ) * spacer_height / total ); } ); } trx_addons_sc_hscroller_calc(); //$window.on( 'resize', trx_addons_sc_hscroller_calc ); $document.on( 'action.resize_trx_addons', trx_addons_sc_hscroller_calc ); $document.on( 'action.sc_layouts_row_fixed_on action.sc_layouts_row_fixed_off', function() { parent_top = $parent.offset().top; section_height = $section.outerHeight(); dy = $spacer.height() - section_height; //( total - 1 ) * section_height } ); var first_run = true; function trx_addons_sc_hscroller_update() { if ( ! parent_in && ! first_run ) return; var duration = 0.3; var reset = true; var offset = Math.min( Math.max( parent_top - $window.scrollTop() - trx_addons_fixed_rows_height(), -dy ), 0 ); var offset2 = reverse ? -dy - offset : offset; var is_fixed = offset < 0 && offset > -dy; if ( first_run || is_fixed ) { $scroller // Way 1: Translate scroller via CSS (not smooth in Chrome) // .css( 'transform', 'translate3d(' + offset2 / dy * dx + 'px, 0, 0)' ) // Add data to compatibility with Parallax for blocks inside hscroll sections .data( { 'hscroll-offset': ( reverse ? -1 : 1 ) * offset2 } ); // Way 2: Translate scroller via TweenMax (more smooth in Chrome) TweenMax.to( $scroller, duration, { overwrite: true, ease: Power2.easeOut, x: offset2 / dy * dx + 'px' } ); if ( is_fixed && ! $scroller.data( 'animated' ) ) { $scroller.data( 'animated', true ); $self.addClass( 'sc_hscroll_animated' ); if ( ! use_sticky ) { $wrap.css( { 'position': 'fixed', 'bottom': 'unset', 'top': 'var(--fixed-rows-height)' } ); } } reset = first_run; } if ( reset ) { if ( offset >= 0 ) { offset2 = reverse ? dy : 0; if ( first_run || $scroller.data( 'animated' ) ) { $scroller // Way 1: Translate scroller via CSS (not smooth in Chrome) // .css( 'transform', 'translate3d(' + ( reverse ? -dx : 0 ) + 'px, 0, 0)' ) .data( 'animated', false ) // Add data to compatibility with Parallax for blocks inside hscroll sections .data( { 'hscroll-offset': ( reverse ? -1 : 1 ) * ( -offset2 ) } ); // Way 2: Translate scroller via TweenMax (more smooth in Chrome) TweenMax.to( $scroller, duration, { overwrite: true, ease: Power2.easeOut, x: (reverse ? -dx : 0) + 'px' } ); $self.removeClass( 'sc_hscroll_animated' ); if ( ! use_sticky ) { $wrap.css( { 'position': 'absolute', 'bottom': 'unset', 'top': '0' } ); } } } else { offset2 = reverse ? 0 : dy; if ( first_run || $scroller.data( 'animated' ) ) { $scroller // Way 1: Translate scroller via CSS (not smooth in Chrome) // .css( 'transform', 'translate3d(' + ( reverse ? 0 : -dx ) + 'px, 0, 0)' ) .data( 'animated', false ) // Add data to compatibility with Parallax for blocks inside hscroll sections .data( { 'hscroll-offset': ( reverse ? -1 : 1 ) * ( -offset2 ) } ); // Way 2: Translate scroller via TweenMax (more smooth in Chrome) TweenMax.to( $scroller, duration, { overwrite: true, ease: Power2.easeOut, x: (reverse ? 0 : -dx) + 'px' } ); $self.removeClass( 'sc_hscroll_animated' ); if ( ! use_sticky ) { $wrap.css( { 'position': 'absolute', 'bottom': '0', 'top': 'unset' } ); } } } } // Calc current page var coef = ( reverse ? dy - Math.abs( offset2 ) : Math.abs( offset2 ) ) / dy; var page = Math.round( coef * dx / section_width ) + 1; // Update progress if ( $progress.length ) { if ( $progress.hasClass( 'sc_hscroll_progress_position_top' ) || $progress.hasClass( 'sc_hscroll_progress_position_bottom' ) ) { $progress.find( '.sc_hscroll_progress_value' ).width( coef * 100 + '%' ); } else { $progress.find( '.sc_hscroll_progress_value' ).height( coef * 100 + '%' ); } } if ( $scroller.data( 'last-page' ) != page ) { $scroller.data( 'last-page', page ); // Update bullets if ( $bullets.length ) { $bullets .find( '.sc_hscroll_bullet' ) .removeClass( 'sc_hscroll_bullet_active' ) .eq( page - 1 ) .addClass( 'sc_hscroll_bullet_active' ); } // Update numbers if ( $numbers.length ) { $numbers.find( '.sc_hscroll_number_active' ).text( page ); } // Update bg layers if ( $bg_layers.length ) { var curr = -1, next = -1; $bg_layers.each( function( idx ) { if ( jQuery( this ).hasClass( 'sc_hscroll_background_active' ) ) { curr = idx; } if ( idx <= page - 1 ) { next = idx; } } ); if ( next == -1 ) { next = curr; } $bg_layers .removeClass( 'sc_hscroll_background_active' ) .eq(next).addClass( 'sc_hscroll_background_active' ); } } if ( first_run ) { first_run = false; $document.trigger( 'action.hscroll_inited', [$self] ); } } $window.on( 'scroll', trx_addons_sc_hscroller_update ); $document.on( 'action.resize_trx_addons', trx_addons_sc_hscroller_update ); // Click on bullets $bullets.on( 'click', '.sc_hscroll_bullet:not(.sc_hscroll_bullet_active)', function() { var page = jQuery( this ).index(); var offset = parent_top - trx_addons_fixed_rows_height() + page * section_height; trx_addons_document_animate_to( offset ); } ); } ); } );
| ver. 1.4 |
Github
|
.
| PHP 8.5.7 | Generation time: 0 |
proxy
|
phpinfo
|
Settings