PageSourceSearch

https://www.museumofsex.com/wp-content/plugins/ooohboi-steroids-fo…/js/ooohboi-steroids.js?ver=2.1.607072022

js museumofsex.com collected 2026-10-01 12:09:22 UTC 19,366 bytes, 381 lines download raw bytes

1/* Elementor hooks - editor - frontend */
2
3'use strict';
4
5( function ( $, w ) {
6    
7    var $window = $( w );
8
9    $window.on( 'elementor/frontend/init', function() {
10
11        var SectionExtends = elementorModules.frontend.handlers.Base.extend( {
12
13            onInit: function onInit() {
14
15                elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
16                this.initSectionExtends();
17
18            },
19            isBreakingBad: function() {
20
21                return this.$element.hasClass( 'ob-is-breaking-bad' );
22
23            },
24            /* needed for Inner Section stickyness */
25            isInnerSection: function() {
26                return this.$element.hasClass( 'elementor-inner-section' );
27            }, 
28            onElementChange: function( changedProp ) {
29
30                // Breaking Bad
31                if( changedProp === '_ob_bbad_use_it' ) {
32                    if( 'yes' === this.getElementSettings( '_ob_bbad_use_it' ) ) {
33                        this.$element.addClass( 'ob-is-breaking-bad' );
34                        if( this.isInnerSection() ) this.$element.addClass( 'ob-bb-inner' );
35                    }
36                    else {
37                        this.$element.removeClass( 'ob-is-breaking-bad' ); 
38                        if( this.isInnerSection() ) this.$element.removeClass( 'ob-bb-inner' );
39                    }
40                }
41                // Inner Section
42                if( changedProp === '_ob_bbad_sssic_use' && this.isInnerSection() ) {
43                    if( 'yes' === this.getElementSettings( '_ob_bbad_sssic_use' ) ) this.$element.addClass( 'ob-is-sticky-inner-section' );
44                    else this.$element.removeClass( 'ob-is-sticky-inner-section' );
45                }
46                
47            },
48
49            initSectionExtends: function() {
50            
51                if( this.isEdit ) {
52                    // Breaking Bad
53                    if( 'yes' === this.getElementSettings( '_ob_bbad_use_it' ) && ! this.isBreakingBad() ) {
54                        this.$element.addClass( 'ob-is-breaking-bad' ); 
55                        if( this.isInnerSection() ) this.$element.addClass( 'ob-bb-inner' ); 
56                    }
57                }
58                // Sticky Inner Section - identical for both front-and-back-end
59                if( 'yes' === this.getElementSettings( '_ob_bbad_sssic_use' ) && this.isInnerSection() ) {
60                    if( this.isEdit ) this.$element.addClass( 'ob-is-sticky-inner-section' );
61                    // find first wrapping element; must match some class name(s)
62                    var parent_wrapper = this.$element.closest( '.elementor-widget-wrap' );
63                    if( parent_wrapper.length ) parent_wrapper.addClass( 'ob-sssic-wrapper' );
64                }
65            }, 
66
67        } );
68
69        var ColumnExtends = elementorModules.frontend.handlers.Base.extend( {
70
71            onInit: function onInit() {
72
73                elementorModules.frontend.handlers.Base.prototype.onInit.apply( this, arguments );
74                // is E3.0 column?
75                if( ! this.$element.find( '.elementor-column-wrap' ).first().length ) this.$element.addClass( 'ob-is-e3' );
76                // Teleporter issue with Chrome
77                var ua = navigator.userAgent.toLowerCase();
78                if( ua.indexOf( 'chrome' ) > -1 ) this.teleporterChromeResize();
79                // columns...
80                this.initColumnExtends();
81
82            },
83            teleporterChromeResize: function() {
84
85                if( ! this.isTeleporter() ) return;
86
87                var dis = this;
88                var myID = this.$element.attr( 'data-id' ); 
89                $window.on( 'resize', function() { 
90                    dis.$element.closest( '.ob-is-teleporter' ).addClass( 'ob-chrome-resize' );
91                    clearTimeout( myID );   
92                    myID = setTimeout( function() { 
93                        var column_height = parseInt( dis.$element.closest( '.ob-is-teleporter' ).css( 'height' ) );
94                        var col_wrap = dis.$element.find( '.elementor-column-wrap' ).first();
95                        if( col_wrap.length ) col_wrap.css( { 'height': column_height } );
96                        else {
97                            dis.$element.find( '.elementor-widget-wrap' ).first().css( { 'height': column_height } );
98                        }
99                        dis.$element.closest( '.ob-is-teleporter' ).removeClass( 'ob-chrome-resize' ); 
100                    }, 500 );
101                } ); 
102                $window.trigger( 'resize' );
103                
104            },
105            /* Teleporter */
106            isTeleporter: function() {
107                return this.$element.hasClass( 'ob-is-teleporter' );
108            }, 
109            /* Widget Stalker */
110            isWidgetStalkerCol: function() {
111                return this.$element.hasClass( 'ob-is-stalker' );
112            },
113            initColumnExtends: function() {
114                /* breaking bad */
115                if( ! this.isEdit ) {
116                    var bb_settings = {};
117                    try {
118                        bb_settings = JSON.parse( this.$element.attr( 'data-settings' ) );
119                    } catch ( error ) {
120                        return;
121                    }
122                    // handle links
123                    if( undefined !== bb_settings._ob_bbad_link ) { 
124
125                        var bb_link = bb_settings._ob_bbad_link;
126                        if( '' === bb_link.url ) { 
127                            this.$element.removeClass( 'bb-column-link' );
128                            return;
129                        } else {
130                            this.$element.addClass( 'bb-column-link' );
131                        }
132
133                        this.$element.off( 'click.bb' );
134                        this.$element.on( 'click.bb', function() {
135                            if( bb_link.is_external ) window.open( bb_link.url ); 
136                            else location.href = bb_link.url;
137                        } );
138
139                    }
140                }
141                /* Teleporter */
142                if( this.isEdit && 'use-teleporter' === this.getElementSettings( '_ob_teleporter_use' ) ) { 
143                    this.$element.addClass( 'ob-is-teleporter' ); 
144                    this.$element.find( '.elementor-widget-wrap' ).first().addClass( 'ob-tele-midget' ); 
145                    this.doTeleporterEditor(); 
146                } 
147                if( ! this.isEdit && this.isTeleporter() ) {
148                    this.$element.find( '.elementor-widget-wrap' ).first().addClass( 'ob-tele-midget' ); 
149                    this.doTeleporter(); 
150                }
151                /* Widget Stalker */
152                if( this.isEdit && 'yes' === this.getElementSettings( '_ob_bbad_is_stalker' ) ) {
153                    this.$element.addClass( 'ob-is-stalker' ); 
154                }
155            }, 
156            onElementChange: function( changedProp ) {
157                
158                if( changedProp === '_ob_teleporter_overlay_color' ) {
159                    this.$element.find( 'div[class*="ob-teleporter-"] > .ob-tele-overlay' ).css( 'background-color', this.getElementSettings( '_ob_teleporter_overlay_color' ) );
160                } else if( changedProp === '_ob_teleporter_no_pass_tablet' ) {
161                    if( 'no-tablet' === this.getElementSettings( '_ob_teleporter_no_pass_tablet' ) ) 
162                        this.$element.addClass( 'ob-tele-no-tablet' );
163                    else 
164                        this.$element.removeClass( 'ob-tele-no-tablet' );
165                } else if( changedProp === '_ob_teleporter_no_pass_mobile' ) {
166                    if( 'no-mobile' === this.getElementSettings( '_ob_teleporter_no_pass_mobile' ) ) 
167                        this.$element.addClass( 'ob-tele-no-mobile' ); 
168                    else 
169                        this.$element.removeClass( 'ob-tele-no-mobile' ); 
170                }
171                /* Widget Stalker */
172                if( changedProp === '_ob_bbad_is_stalker' ) {
173                    this.routeWidgetStalkerCol();
174                }
175            },
176            /* Widget Stalker */
177            routeWidgetStalkerCol: function() {
178                if( ! this.isWidgetStalkerCol() && 'yes' === this.getElementSettings( '_ob_bbad_is_stalker' ) ) this.$element.addClass( 'ob-is-stalker' ); 
179                else this.$element.removeClass( 'ob-is-stalker' );
180            },
181            /* Teleporter */
182            doTeleporterEditor: function() {
183
184                if( 'use-teleporter' !== this.getElementSettings( '_ob_teleporter_use' ) ) return; // bail
185
186                // E3.0+ wrap the children of .elementor-widget-wrap for the animation purpose
187                var widgets_wrapper = this.$element.find( '.elementor-widget-wrap' ).first();
188                if( widgets_wrapper.length ) {
189                    widgets_wrapper.wrapInner( '<div class="widget-wrap-children" />' );
190                    if( widgets_wrapper.find( '.elementor-background-overlay' ).first().length ) {
191                        widgets_wrapper.find( '.elementor-background-overlay' ).first().insertBefore( widgets_wrapper.find( '.elementor-background-overlay' ).first().parent() );
192                    }
193                }
194
195                if( 'do-pass' !== this.getElementSettings( '_ob_teleporter_pass' ) ) return; // bail too    
196
197                var this_ob = this;
198                var myself  = this.$element;
199                var my_id   = this.$element.attr( 'data-id' ); 
200
201                // default classes
202                if( 'no-tablet' === this.getElementSettings( '_ob_teleporter_no_pass_tablet' ) ) 
203                    this.$element.addClass( 'ob-tele-no-tablet' );
204                if( 'no-mobile' === this.getElementSettings( '_ob_teleporter_no_pass_mobile' ) ) 
205                    this.$element.addClass( 'ob-tele-no-mobile' ); 
206
207                // this column's parent section
208                var parent_section = ( 'section' === this.getElementSettings( '_ob_teleporter_pass_element' ) ) ? this.$element.closest( '.elementor-section' ) : this.$element.closest( '.elementor-container' ); 
209                if( ! parent_section.length ) return; // bail
210
211                // parent overflow
212                parent_section.css( 'overflow', 'hidden' ); 
213
214                // new element & effect
215                var hover_effect  = this.getElementSettings( '_ob_teleporter_pass_effect' );
216                var hover_element = '<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + this.getElementSettings( '_ob_teleporter_overlay_color' ) + ';"></div></div>';
217
218                if( ! $( '.ob-teleporter-' + my_id ).length ) this.$element.prepe
218nd( hover_element );
219
220                this.$element.off( 'mouseenter mouseleave' );
221                this.$element.on( 'mouseenter mouseleave', function( ev ) {
222
223                    if( 'mouseenter' === ev.type ) {
224
225                        if( 'no-tablet' === this_ob.getElementSettings( '_ob_teleporter_no_pass_tablet' ) && 
226                        'tablet' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
227                        if( 'no-mobile' === this_ob.getElementSettings( '_ob_teleporter_no_pass_mobile' ) && 
228                            'mobile' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
229                        if( 'do-pass' !== this_ob.getElementSettings( '_ob_teleporter_pass' ) ) return;
230
231                        var tele_css = { 
232                            'background-color': $( '.ob-teleporter-' + my_id ).css( 'background-color' ),
233                            'background-image': $( '.ob-teleporter-' + my_id ).css( 'background-image' ),
234                            'background-position': $( '.ob-teleporter-' + my_id ).css( 'background-position' ),
235                            'background-size': $( '.ob-teleporter-' + my_id ).css( 'background-size' ),
236                            'background-repeat': $( '.ob-teleporter-' + my_id ).css( 'background-repeat' )
237                        };
238                        
239                        if( 'section' === this_ob.getElementSettings( '_ob_teleporter_pass_element' ) ) {
240                            var all_children = parent_section.children().not( '.elementor-container' ).detach();
241                            parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
242                            parent_section.prepend( all_children );
243                        } else { 
244                            parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
245                        }
246                        
247                        $( '.ob-teleporter-' + my_id ).css( tele_css ).hide();
248                        $( '.ob-teleporter-' + my_id ).addClass(  'ob-teleporter-hover' ).show(); 
249
250                    } else {
251
252                        parent_section.removeClass( 'ob-tele-mom-hover' );
253                        setTimeout( function() {
254                            $( '.ob-teleporter-' + my_id ).removeAttr( 'style' ).removeClass( 'ob-teleporter-hover' );
255                            myself.prepend( $( '.ob-teleporter-' + my_id ) ); 
256                        }, 100 );
257
258                    }
259
260                } );
261            
262            }, 
263            doTeleporter: function() {
264
265                var teleporter_settings = {};
266                try {
267                    teleporter_settings = JSON.parse( this.$element.attr( 'data-settings' ) );
268                } catch ( error ) {
269                    return;
270                }
271
272                if( 'use-teleporter' !== teleporter_settings._ob_teleporter_use ) return; // bail
273
274                // E3.0+ wrap the children of .elementor-widget-wrap for the animation purpose
275                var widgets_wrapper = this.$element.find( '.elementor-widget-wrap' ).first();
276                if( widgets_wrapper.length ) {
277                    widgets_wrapper.wrapInner( '<div class="widget-wrap-children" />' );
278                    if( widgets_wrapper.find( '.elementor-background-overlay' ).first().length ) {
279                        widgets_wrapper.find( '.elementor-background-overlay' ).first().insertBefore( widgets_wrapper.find( '.elementor-background-overlay' ).first().parent() );
280                    }
281                }
282
283                var myself = this.$element;
284                var my_id  = this.$element.attr( 'data-id' ); 
285
286                // default classes
287                if( 'no-tablet' === teleporter_settings._ob_teleporter_no_pass_tablet ) 
288                    this.$element.addClass( 'ob-tele-no-tablet' );
289                if( 'no-mobile' === teleporter_settings._ob_teleporter_no_pass_mobile ) 
290                    this.$element.addClass( 'ob-tele-no-mobile' ); 
291
292                // handle links
293                if( undefined !== teleporter_settings._ob_teleporter_link ) { 
294
295                    var tele_link = teleporter_settings._ob_teleporter_link;
296                    if( '' === tele_link.url ) return;
297
298                    this.$element.off( 'click.obTeleporter' );
299                    this.$element.on( 'click.obTeleporter', function() {
300                        if( tele_link.is_external ) window.open( tele_link.url ); 
301                        else location.href = tele_link.url;
302                    } );
303
304                }
305
306                if( 'do-pass' !== teleporter_settings._ob_teleporter_pass ) return; // bail too
307
308                // this column's parent section
309                var parent_section = ( 'section' === teleporter_settings._ob_teleporter_pass_element ) ? this.$element.closest( '.elementor-section' ) : this.$element.closest( '.elementor-container' ); 
310                if( ! parent_section.length ) return; // bail
311
312                // parent overflow
313                parent_section.css( 'overflow', 'hidden' );
314
315                // new element
316                var hover_effect  = teleporter_settings._ob_teleporter_pass_effect;
317                var hover_element = '<div class="ob-teleporter-' + my_id + ' ob-tele-eff-' + hover_effect + '" data-id-teleporter="' + my_id + '"><div class="ob-tele-overlay" style="background-color: ' + teleporter_settings._ob_teleporter_overlay_color + ';"></div>';
318
319                if( ! $( '.ob-teleporter-' + my_id ).length ) this.$element.prepe
319nd( hover_element );
320
321                this.$element.off( 'mouseenter mouseleave' );
322                this.$element.on( 'mouseenter', function() { 
323
324                    if( 'no-tablet' === teleporter_settings._ob_teleporter_no_pass_tablet && 
325                        'tablet' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
326                    if( 'no-mobile' === teleporter_settings._ob_teleporter_no_pass_mobile && 
327                        'mobile' === elementorFrontend.getCurrentDeviceMode() ) return; // bail
328
329                    var tele_css = { 
330                        'background-color': $( '.ob-teleporter-' + my_id ).css( 'background-color' ),
331                        'background-image': $( '.ob-teleporter-' + my_id ).css( 'background-image' ),
332                        'background-position': $( '.ob-teleporter-' + my_id ).css( 'background-position' ),
333                        'background-size': $( '.ob-teleporter-' + my_id ).css( 'background-size' ),
334                        'background-repeat': $( '.ob-teleporter-' + my_id ).css( 'background-repeat' )
335                    };
336                    
337                    if( 'section' === teleporter_settings._ob_teleporter_pass_element ) {
338                        var all_children = parent_section.children().not( '.elementor-container' ).detach();
339                        parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
340                        parent_section.prepend( all_children );
341                    } else parent_section.addClass( 'ob-tele-mom-hover' ).prepend( $( '.ob-teleporter-' + my_id ) );
342                    
343                    $( '.ob-teleporter-' + my_id ).css( tele_css ).hide();
344                    $( '.ob-teleporter-' + my_id ).show().addClass( 'ob-teleporter-hover' );
345                    
346                } );
347                
348                this.$element.on( 'mouseleave', function() {
349                    
350                    parent_section.removeClass( 'ob-tele-mom-hover' );
351                    setTimeout( function() {
352                        $( '.ob-teleporter-' + my_id ).removeAttr( 'style' ).removeClass( 'ob-teleporter-hover' );
353                        myself.prepend( $( '.ob-teleporter-' + my_id ) );
354                    }, 100 );
355
356                } );
357 
358            }, 
359
360        } );
361
362        var handlersList = {
363
364            'section': SectionExtends, 
365            'column': ColumnExtends, 
366
367        };
368
369        $.each( handlersList, function( widgetName, handlerClass ) {
370
371            elementorFrontend.hooks.addAction( 'frontend/element_ready/' + widgetName, function( $scope ) {
372                
373                elementorFrontend.elementsHandler.addHandler( handlerClass, { $element: $scope } );
374
375            } );
376
377        } );
378
379    } ); 
380
381} ( jQuery, window ) );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.