1( function( $ ) { 2 3 "use strict"; 4 5 var JetEngine = { 6 7 currentMonth: null, 8 currentRequest: {}, 9 stores: {}, 10 registeredStores: {}, 11 activeCalendarDay: null, 12 13 init: function() { 14 15 var widgets = { 16 'jet-listing-dynamic-field.default' : JetEngine.widgetDynamicField, 17 'jet-listing-grid.default': JetEngine.widgetListingGrid, 18 }; 19 20 $.each( widgets, function( widget, callback ) { 21 window.elementorFrontend.hooks.addAction( 'frontend/element_ready/' + widget, callback ); 22 }); 23 24 $( document ) 25 .on( 'click.JetEngine', '.jet-calendar-nav__link', JetEngine.switchCalendarMonth ) 26 .on( 'click.JetEngine', '.jet-calendar-week__day-mobile-overlay', JetEngine.showCalendarEvent ) 27 .on( 'click.JetEngine', '.jet-listing-dynamic-link__link[data-delete-link="1"]', JetEngine.showConfirmDeleteDialog ) 28 .on( 'jet-filter-content-rendered', JetEngine.maybeReinitSlider ) 29 .on( 'click.JetEngine', '.jet-add-to-store', JetEngine.addToStore ) 30 .on( 'click.JetEngine', '.jet-remove-from-store', JetEngine.removeFromStore ) 31 .on( 'click.JetEngine', '.jet-engine-listing-overlay-wrap', JetEngine.handleListingItemClick ); 32 33 $( window ).on( 'jet-popup/render-content/ajax/success', JetEngine.initStores ); 34 35 JetEngine.initStores(); 36 37 window.elementorFrontend.hooks.addFilter( 38 'jet-popup/widget-extensions/popup-data', 39 JetEngine.prepareJetPopup 40 ); 41 42 JetEngine.customUrlActions.init(); 43 44 }, 45 46 initStores: function() { 47 48 $( '.jet-add-to-store.is-front-store' ).each( function() { 49 50 var $this = $( this ), 51 args = $this.data( 'args' ), 52 store = JetEngine.stores[ args.store.type ], 53 count = 0; 54 55 if ( ! store ) { 56 return; 57 } 58 59 if ( store.inStore( args.store.slug, '' + args.post_id ) ) { 60 JetEngine.switchDataStoreStatus( $this ); 61 } 62 63 } ); 64 65 $( '.jet-remove-from-store.is-front-store' ).each( function() { 66 67 var $this = $( this ), 68 args = $this.data( 'args' ), 69 store = JetEngine.stores[ args.store.type ], 70 count = 0; 71 72 if ( ! store ) { 73 return; 74 } 75 76 if ( ! store.inStore( args.store.slug, '' + args.post_id ) ) { 77 $this.addClass( 'is-hidden' ); 78 } else { 79 $this.removeClass( 'is-hidden' ); 80 } 81 82 } ); 83 84 $.each( JetEngine.registeredStores, function( storeSlug, storeType ) { 85 86 var store = JetEngine.stores[ storeType ], 87 storeData = null, 88 count = 0; 89 90 if ( ! store ) { 91 return; 92 } 93 94 storeData = store.getStore( storeSlug ); 95 96 if ( storeData && storeData.length ) { 97 count = storeData.length; 98 } 99 100 $( 'span.jet-engine-data-store-count[data-store="' + storeSlug + '"]' ).text( count ); 101 102 } ); 103 104 $( '.jet-listing-not-found.jet-listing-grid__items' ).each( function() { 105 106 var $this = $( this ), 107 nav = $this.data( 'nav' ), 108 query = nav.query; 109 110 if ( query.post__in && query.post__in.length && 0 >= query.post__in.indexOf( 'is-front' ) ) { 111 112 var storeType = query.post__in[1], 113 storeSlug = query.post__in[2], 114 store = JetEngine.stores[ storeType ], 115 posts = [], 116 $container = $this.closest( '.elementor-widget-container' ); 117 118 if ( ! store ) { 119 return; 120 } 121 122 posts = store.getStore( storeSlug ); 123 124 if ( ! posts.length ) { 125 return; 126 } 127 128 query.post__in = posts; 129 130 JetEngine.ajaxGetListing( { 131 handler: 'get_listing', 132 container: $container, 133 masonry: false, 134 slider: false, 135 append: false, 136 query: query, 137 widgetSettings: nav.widget_settings, 138 }, function( response ) { 139 JetEngine.widgetListingGrid( $container ); 140 } ); 141 142 } 143 144 } ); 145 146 }, 147 148 removeFromStore: function( event ) { 149 150 event.preventDefault(); 151 152 var $this = $( this ), 153 args = $this.data( 'args' ); 154 155 if ( args.store.is_front ) { 156 157 var store = JetEngine.stores[ args.store.type ], 158 count = 0; 159 160 if ( ! store ) { 161 return; 162 } 163 164 if ( ! store.inStore( args.store.slug, '' + args.post_id ) ) { 165 var storePosts = store.getStore( args.store.slug ); 166 count = storePosts.length; 167 } else { 168 count = store.remove( args.store.slug, args.post_id ); 169 } 170 171 $( '.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).each( function() { 172 JetEngine.switchDataStoreStatus( $( this ), true ); 173 } ); 174 175 $( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( count ); 176 177 if ( args.remove_from_listing ) { 178 $this.closest( '.jet-listing-dynamic-post-' + args.post_id ).remove(); 179 } 180 181 return; 182 183 } 184 185 $this.css( 'opacity', 0.3 ); 186 187 $.ajax({ 188 url: JetEngineSettings.ajaxurl, 189 type: 'POST', 190 dataType: 'json', 191 data: { 192 action: 'jet_engine_remove_from_store_' + args.store.slug, 193 store: args.store.slug, 194 post_id: args.post_id, 195 }, 196 }).done( function( response ) { 197 198 $this.css( 'opacity', 1 ); 199 200 if ( response.success ) { 201 202 $this.addClass( 'is-hidden' ); 203 204 $( '.jet-add-to-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).each( function() { 205 JetEngine.switchDataStoreStatus( $( this ), true ); 206 } ); 207 208 if ( args.remove_from_listing ) { 209 $this.closest( '.jet-listing-grid__item[data-post="' + args.post_id + '"]' ).remove(); 210 } 211 212 if ( response.data.fragments ) { 213 $.each( response.data.fragments, function( selector, value ) { 214 $( selector ).html( value ); 215 } ); 216 } 217 218 } else { 219 alert( response.data.message ); 220 } 221 222 return response; 223 224 } ).done( function( response ) { 225 226 if ( args.remove_from_listing ) { 227 $this.closest( '.jet-listing-grid__item' ).remove(); 228 } 229 230 if ( response.success ) { 231 $( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( response.data.count ); 232 } 233 234 } ).fail( function( jqXHR, textStatus, errorThrown ) { 235 $this.css( 'opacity', 1 ); 236 alert( errorThrown ); 237 } ); 238 239 }, 240 241 triggerPopup: function( popupID, isJetEngine, postID ) { 242 243 if ( ! popupID ) { 244 return; 245 } 246 247 var popupData = { 248 popupId: 'jet-popup-' + popupID, 249 }; 250 251 if ( isJetEngine ) { 252 popupData.isJetEngine = true; 253 popupData.postId = postID; 254 } 255 256 $( window ).trigger( { 257 type: 'jet-popup-open-trigger', 258 popupData: popupData 259 } ); 260 261 }, 262 263 addToStore: function( event ) { 264 265 event.preventDefault(); 266 267 var $this = $( this ), 268 args = $this.data( 'args' ); 269 270 if ( $this.hasClass( 'in-store' ) ) { 271 if ( args.popup ) { 272 JetEngine.triggerPopup( args.popup, args.isJetEngine, args.post_id ); 273 } else { 274 window.location = $this.attr( 'href' ); 275 } 276 return; 277 } 278 279 if ( args.store.is_front ) { 280 281 var store = JetEngine.stores[ args.store.type ], 282 count = 0; 283 284 if ( ! store ) { 285 return; 286 } 287 288 if ( store.inStore( args.store.slug, '' + args.post_id ) ) { 289 var storePosts = store.getStore( args.store.slug ); 290 count = storePosts.length; 291 } else { 292 293 count = store.addToStore( args.store.slug, args.post_id, args.store.size ); 294 295 if ( false === count ) { 296 return; 297 } 298 299 } 300 301 if ( args.popup ) { 302 JetEngine.triggerPopup( args.popup, args.isJetEngine, args.post_id ); 303 } 304 305 JetEngine.switchDataStoreStatus( $this ); 306 $( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( count ); 307 $( '.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).removeClass( 'is-hidden' ); 308 309 return; 310 } 311 312 $this.css( 'opacity', 0.3 ); 313 314 $.ajax({ 315 url: JetEngineSettings.ajaxurl, 316 type: 'POST', 317 dataType: 'json', 318 data: { 319 action: 'jet_engine_add_to_store_' + args.store.slug, 320 store: args.store.slug, 321 post_id: args.post_id, 322 }, 323 }).done( function( response ) { 324 325 $this.css( 'opacity', 1 ); 326 327 if ( response.success ) { 328 329 JetEngine.switchDataStoreStatus( $this ); 330 $( '.jet-remove-from-store[data-store="' + args.store.slug + '"][data-post="' + args.post_id + '"]' ).removeClass( 'is-hidden' ); 331 332 if ( response.data.fragments ) { 333 $.each( response.data.fragments, function( selector, value ) { 334 $( selector ).html( value ); 335 } ); 336 } 337 338 if ( args.synch_id ) { 339 340 var $container = $( '#' + args.synch_id ), 341 $items = $container.find( '.jet-listing-grid__items' ), 342 nav = $items.data( 'nav' ), 343 query = nav.query; 344 345 JetEngine.ajaxGetListing( { 346 handler: 'get_listing', 347 container: $container, 348 masonry: false, 349 slider: false, 350 append: false, 351 query: query, 352 widgetSettings: nav.widget_settings,
353 postID: window.elementorFrontendConfig.post.id, 354 elementID: $container.data( 'id' ), 355 }, function( response ) { 356 JetEngine.widgetListingGrid( $container ); 357 } ); 358 359 } 360 361 if ( args.popup ) { 362 JetEngine.triggerPopup( args.popup, args.isJetEngine, args.post_id ); 363 } 364 365 } else { 366 alert( response.data.message ); 367 } 368 369 return response; 370 371 } ).done( function( response ) { 372 373 if ( response.success ) { 374 $( 'span.jet-engine-data-store-count[data-store="' + args.store.slug + '"]' ).text( response.data.count ); 375 } 376 377 } ).fail( function( jqXHR, textStatus, errorThrown ) { 378 $this.css( 'opacity', 1 ); 379 alert( errorThrown ); 380 } ); 381 382 }, 383 384 switchDataStoreStatus: function( $item, toInitial ) { 385 386 var $label = $item.find( '.jet-listing-dynamic-link__label' ), 387 $icon = $item.find( '.jet-listing-dynamic-link__icon' ), 388 args = $item.data( 'args' ), 389 replaceLabel, 390 replaceURL, 391 replaceIcon; 392 393 toInitial = toInitial || false; 394 395 if ( toInitial ) { 396 replaceLabel = args.label; 397 replaceIcon = args.icon; 398 replaceURL = '#'; 399 } else { 400 replaceLabel = args.added_label; 401 replaceIcon = args.added_icon; 402 replaceURL = args.added_url; 403 } 404 405 if ( $label.length ) { 406 $label.replaceWith( replaceLabel ); 407 } else { 408 $item.append( replaceLabel ); 409 } 410 411 if ( $icon.length ) { 412 $icon.replaceWith( replaceIcon ); 413 } else { 414 $item.prepend( replaceIcon ); 415 } 416 417 $item.attr( 'href', replaceURL ); 418 419 if ( toInitial ) { 420 $item.removeClass( 'in-store' ); 421 } else if ( ! $item.hasClass( 'in-store' ) ) { 422 $item.addClass( 'in-store' ); 423 } 424 425 426 }, 427 428 showConfirmDeleteDialog: function( event ) { 429 event.preventDefault(); 430 431 var $this = $( this ); 432 433 if ( window.confirm( $this.data( 'delete-message' ) ) ) { 434 window.location = $this.attr( 'href' ); 435 } 436 437 }, 438 439 handleListingItemClick: function( event ) { 440 441 var url = $( this ).data( 'url' ), 442 target = $( this ).data( 'target' ) || false; 443 444 if ( url ) { 445 446 event.preventDefault(); 447 448 if ( window.elementorFrontend && window.elementorFrontend.isEditMode() ) { 449 return; 450 } 451 452 if ( -1 !== url.indexOf( 'action=open_map_listing_popup' ) ) { 453 454 JetEngine.customUrlActions.runAction( url ); 455 456 } else { 457 458 if ( '_blank' === target ) { 459 window.open( url ); 460 return; 461 } 462 463 window.location = url; 464 } 465 } 466 467 }, 468 469 customUrlActions: { 470 selector: 'a[href^="#jet-engine-action"]', 471 472 init: function() { 473 $( document ).on( 'click.JetEngine', this.selector, this.actionHandler.bind( this ) ); 474 }, 475 476 actions: { 477 'open_map_listing_popup': function( settings ) { 478 479 if ( ! window.google || ! window.JetEngineMaps ) { 480 return; 481 } 482 483 if ( ! settings.id ) { 484 return; 485 } 486 487 var popupID = settings.id; 488 489 if ( undefined === JetEngineMaps.markersData[ popupID ] ) { 490 return; 491 } 492 493 for ( var i = 0; i < JetEngineMaps.markersData[ popupID ].length; i++ ) { 494 495 var marker = JetEngineMaps.markersData[ popupID ][i].marker, 496 map = marker.getMap(); 497 498 if ( !map ) { 499 // A marker inside a cluster 500 var clustererIndex = JetEngineMaps.markersData[ popupID ][i].clustererIndex, 501 markersClusterer = JetEngineMaps.clusterersData[ clustererIndex ], 502 cluster = JetEngineMaps.findClusterByMarker( markersClusterer, marker ), 503 clusterMarkers, 504 bounds; 505 506 if ( !cluster ) { 507 return; 508 } 509 510 clusterMarkers = cluster.getMarkers(); 511 bounds = new google.maps.LatLngBounds(); 512 513 map = markersClusterer.getMap(); 514 515 for ( var j = 0; j < clusterMarkers.length; j++ ) { 516 bounds.extend( clusterMarkers[j].position ); 517 } 518 519 map.fitBounds( bounds ); 520 } 521 522 google.maps.event.trigger( marker, 'click' ); 523 } 524 } 525 }, 526 527 actionHandler: function( event ) { 528 event.preventDefault(); 529 530 var url = $( event.currentTarget ).attr( 'href' ); 531 532 this.runAction( url ); 533 }, 534 535 runAction: function( url ) { 536 var queryParts = url.split( '&' ), 537 settings = {}; 538
539 queryParts.forEach( function( item ) { 540 if ( -1 !== item.indexOf( '=' ) ) { 541 var pair = item.split( '=' ); 542 543 settings[ pair[0] ] = decodeURIComponent( pair[1] ); 544 } 545 } ); 546 547 if ( ! settings.action ) { 548 return; 549 } 550 551 var actionCb = this.actions[ settings.action ]; 552 553 if ( ! actionCb ) { 554 return; 555 } 556 557 actionCb( settings ); 558 } 559 }, 560 561 prepareJetPopup: function( popupData, widgetData, $scope ) { 562 563 var postId = null; 564 565 if ( widgetData['is-jet-engine'] ) { 566 popupData['isJetEngine'] = true; 567 568 var $gridItems = $scope.closest( '.jet-listing-grid__items' ), 569 $gridItem = $scope.closest( '.jet-listing-grid__item' ), 570 $calendarItem = $scope.closest( '.jet-calendar-week__day-event' ); 571 572 if ( $gridItems.length ) { 573 popupData['listingSource'] = $gridItems.data( 'listing-source' ); 574 } 575 576 if ( $gridItem.length ) { 577 popupData['postId'] = $gridItem.data( 'post-id' ); 578 } else if ( $calendarItem.length ) { 579 popupData['postId'] = $calendarItem.data( 'post-id' ); 580 } else if ( window.elementorFrontendConfig && window.elementorFrontendConfig.post ) { 581 popupData['postId'] = window.elementorFrontendConfig.post.id; 582 } 583 584 if ( window.JetEngineFormsEditor && window.JetEngineFormsEditor.hasEditor ) { 585 popupData['hasEditor'] = true; 586 } 587 588 } 589 590 return popupData; 591 592 }, 593 594 showCalendarEvent: function( event ) { 595 596 var $this = $( this ), 597 $day = $this.closest( '.jet-calendar-week__day' ), 598 $week = $day.closest( '.jet-calendar-week' ), 599 $events = $day.find( '.jet-calendar-week__day-content' ), 600 activeClass = 'calendar-event-active'; 601 602 if ( $day.hasClass( activeClass ) ) { 603 $day.removeClass( activeClass ); 604 JetEngine.activeCalendarDay.remove(); 605 JetEngine.activeCalendarDay = null; 606 return; 607 } 608 609 if ( JetEngine.activeCalendarDay ) { 610 JetEngine.activeCalendarDay.remove(); 611 $( '.' + activeClass ).removeClass( activeClass ); 612 JetEngine.activeCalendarDay = null; 613 } 614 615 $day.addClass( 'calendar-event-active' ); 616 617 JetEngine.activeCalendarDay = $( '<tr class="jet-calendar-week"><td colspan="7" class="jet-calendar-week__day jet-calendar-week__day-mobile"><div class="jet-calendar-week__day-mobile-event">' + $events.html() + '</div></td></tr>' ); 618 619 JetEngine.activeCalendarDay.insertAfter( $week ); 620 621 }, 622 623 widgetListingGrid: function( $scope ) { 624 var $listing = $scope.find( '.jet-listing-grid__items' ).first(), 625 $slider = $listing.parent( '.jet-listing-grid__slider' ), 626 $masonry = $listing.hasClass( 'jet-listing-grid__masonry' ) ? $listing : false, 627 navSettings = $listing.data( 'nav' ), 628 masonryGrid = false; 629 630 if ( $slider.length ) { 631 JetEngine.initSlider( $slider ); 632 } 633 634 if ( $masonry && $masonry.length ) { 635 636 JetEngine.initMasonry( $masonry ); 637 638 $( window ).on( 'load resize', function() { 639 JetEngine.runMasonry( $masonry ); 640 } ); 641 } 642 643 if ( navSettings && navSettings.enabled ) { 644 645 var $button = $( navSettings.more_el ), 646 page = parseInt( $listing.data( 'page' ), 10 ), 647 pages = parseInt( $listing.data( 'pages' ), 10 ); 648 649 if ( $button.length ) { 650 651 if ( page === pages && ! window.elementor ) { 652 $button.css( 'display', 'none' ); 653 } else { 654 $button.removeAttr( 'style' ); 655 } 656 657 $( document ).off( 'click', navSettings.more_el ).on( 'click', navSettings.more_el, JetEngine.handleMore.bind( { 658 container: $listing, 659 button: $button, 660 settings: navSettings, 661 pages: pages, 662 masonry: $masonry, 663 slider: $slider, 664 } ) ); 665 666 } 667 } 668 669 }, 670 671 initMasonry: function( $masonry ) { 672 imagesLoaded( $masonry, function() { 673 JetEngine.runMasonry( $masonry ); 674 } ); 675 }, 676 677 runMasonry: function( $masonry ) { 678 var $items = $( '> .jet-listing-grid__item', $masonry ), 679 options = $masonry.data( 'masonry-grid-options' ), 680 deviceMode = window.elementorFrontend.getCurrentDeviceMode(), 681 columnsCount = options.columns[ deviceMode ]; 682 683 // Reset masonry 684 $items.css( { 685 marginTop: '' 686 } ); 687 688 if ( columnsCount < 2 ) { 689 return; 690 } 691 692 var masonryInstance = new window.elementorModules.utils.Masonry( { 693 container: $masonry, 694 items: $items, 695 columnsCount: columnsCount, 696 verticalSpaceBetween: 0 697 } ); 698 699 masonryInstance.run(); 700 }, 701
702 ajaxGetListing: function( options, doneCallback, failCallback ) { 703 704 var container = options.container || false, 705 handler = options.handler || false, 706 masonry = options.masonry || false, 707 slider = options.slider || false, 708 append = options.append || false, 709 query = options.query || {}, 710 widgetSettings = options.widgetSettings || {}, 711 postID = options.postID || false, 712 elementID = options.elementID || false, 713 page = options.page || 1; 714 715 doneCallback = doneCallback || function( response ) {}; 716 717 if ( ! container|| ! handler ) { 718 return; 719 } 720 721 container.css({ 722 pointerEvents: 'none', 723 opacity: '0.5', 724 cursor: 'default', 725 }); 726 727 $.ajax({ 728 url: JetEngineSettings.ajaxurl, 729 type: 'POST', 730 dataType: 'json', 731 data: { 732 action: 'jet_engine_ajax', 733 handler: handler, 734 query: query, 735 widget_settings: widgetSettings, 736 post_id: postID, 737 element_id: elementID, 738 page: page 739 }, 740 }).done( function( response ) { 741 742 container.removeAttr( 'style' ); 743 744 if ( response.success ) { 745 746 container.data( 'page', page ); 747 748 var $html = $( response.data.html ); 749 750 $html.find( '[data-element_type]' ).each( function() { 751 var $this = $( this ), 752 elementType = $this.data( 'element_type' ); 753 754 if( 'widget' === elementType ){ 755 elementType = $this.data( 'widget_type' ); 756 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/widget', $this, $ ); 757 } 758 759 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/global', $this, $ ); 760 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/' + elementType, $this, $ ); 761 762 }); 763 764 if ( slider && slider.length ) { 765 766 var $slider = slider.find( '> .jet-listing-grid__items' ); 767 768 if ( ! $slider.hasClass( 'slick-initialized' ) ) { 769 770 if ( append ) { 771 container.append( $html ); 772 } else { 773 container.html( $html ); 774 } 775 776 var itemsCount = container.find( '> .jet-listing-grid__item' ).length; 777 778 slider.addClass( 'jet-listing-grid__slider' ); 779 JetEngine.initSlider( slider, { itemsCount: itemsCount } ); 780 781 } else { 782 $html.each( function( index, el ) { 783 $slider.slick( 'slickAdd', el ); 784 }); 785 } 786 787 } else { 788 789 if ( append ) { 790 container.append( $html ); 791 } else { 792 container.html( $html ); 793 } 794 795 if ( masonry && masonry.length ) { 796 JetEngine.initMasonry( masonry ); 797 } 798 799 } 800 801 } 802 803 } ).done( doneCallback ).fail( function() { 804 container.removeAttr( 'style' ); 805 if ( failCallback ) { 806 failCallback.call(); 807 } 808 809 } ); 810 811 }, 812 813 handleMore: function( event ) { 814 815 event.preventDefault(); 816 817 var self = this, 818 page = parseInt( self.container.data( 'page' ), 10 ); 819 820 page++; 821 822 self.button.css({ 823 pointerEvents: 'none', 824 opacity: '0.5', 825 cursor: 'default', 826 }); 827 828 JetEngine.ajaxGetListing( { 829 handler: 'listing_load_more', 830 container: self.container, 831 masonry: self.masonry, 832 slider: self.slider, 833 append: true, 834 query: self.settings.query, 835 widgetSettings: self.settings.widget_settings, 836 page: page, 837 }, function( response ) { 838 839 self.button.removeAttr( 'style' ); 840 841 if ( response.success && page === self.pages ) { 842 self.button.css( 'display', 'none' ); 843 } 844 845 }, function() { 846 self.button.removeAttr( 'style' ); 847 } ); 848 849 }, 850 851 initSlider: function( $slider, customOptions ) { 852 var options = $slider.data( 'slider_options' ), 853 windowWidth = $( window ).width(), 854 tabletBP = 1025, 855 mobileBP = 768, 856 tabletSlides, mobileSlides, defaultOptions, slickOptions; 857 858 customOptions = customOptions || {}; 859 860 options = $.extend( {}, options, customOptions ); 861 862 if ( options.itemsCount <= options.slidesToShow.desktop && windowWidth >= tabletBP ) { // 1025 - ... 863 $slider.removeClass( 'jet-listing-grid__slider' ); 864 return; 865 } else if ( options.itemsCount <= options.slidesToShow.tablet && tabletBP > windowWidth && windowWidth >= mobileBP ) { // 768 - 1024 866 $slider.removeClass( 'jet-listing-grid__slider' ); 867 return; 868 } else if ( options.itemsCount <= options.slidesToShow.mobile && windowWidth < mobileBP ) { // 0 - 767 869 $slider.removeClass( 'jet-listing-grid__slider' ); 870 return; 871 } 872 873 if ( options.slidesToShow.tablet ) { 874 tabletSlides = options.slidesToShow.tablet; 875 } else { 876 tabletSlides = 1 === options.slidesToShow.desktop ? 1 : 2; 877 } 878 879 if ( options.slidesToShow.mobile ) { 880 mobileSlides = options.slidesToShow.mobile; 881 } else { 882 mobileSlides = 1; 883 } 884 885 options.slidesToShow = options.slidesToShow.desktop; 886 887 defaultOptions = { 888 customPaging: function( slider, i ) { 889 return $( '<span />' ).text( i + 1 ); 890 }, 891 slide: '.jet-listing-grid__item', 892 dotsClass: 'jet-slick-dots', 893 responsive: [ 894 { 895 breakpoint: 1025, 896 settings: { 897 slidesToShow: tabletSlides, 898 } 899 }, 900 { 901 breakpoint: 768, 902 settings: { 903 slidesToShow: mobileSlides, 904 slidesToScroll: 1 905 } 906 } 907 ] 908 }; 909 910 slickOptions = $.extend( {}, defaultOptions, options ); 911 912 var $sliderItems = $slider.find( '> .jet-listing-grid__items' ); 913 914 if ( slickOptions.infinite ) { 915 $sliderItems.on( 'init', function() { 916 var $items = $( this ), 917 $clonedSlides = $( '.slick-cloned', $items ); 918 919 if ( !$clonedSlides.length ) { 920 return; 921 } 922 923 $clonedSlides.find( 'div[data-element_type]' ).each( function() { 924 var $this = $( this ), 925 elementType = $this.data( 'element_type' ); 926 927 if ( !elementType ) { 928 return; 929 } 930 931 if ( 'widget' === elementType ) { 932 elementType = $this.data( 'widget_type' ); 933 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/widget', $this, $ ); 934 } 935 936 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/' + elementType, $this, $ ); 937 938 } ); 939 } ); 940 } 941 942 if ( $sliderItems.hasClass( 'slick-initialized' ) ) { 943 $sliderItems.slick( 'refresh', true ); 944 return; 945 } 946 947 $sliderItems.slick( slickOptions ); 948 }, 949 950 maybeReinitSlider: function( event, $scope ) { 951 var $slider = $scope.find( '.jet-listing-grid__slider' ); 952 953 if ( $slider.length ) { 954 $slider.each( function() { 955 JetEngine.initSlider( $( this ) ); 956 } ); 957 } 958 }, 959 960 widgetDynamicField: function( $scope ) { 961 962 var $slider = $scope.find( '.jet-engine-gallery-slider' ); 963 964 if ( $slider.length ) { 965 if ( $.isFunction( $.fn.imagesLoaded ) ) {
966 $slider.imagesLoaded().always( function( instance ) { 967 $slider.slick( $slider.data( 'atts' ) ); 968 } ); 969 } 970 } 971 972 }, 973 974 switchCalendarMonth: function( $event ) { 975 976 var $this = $( this ), 977 $calendar = $this.closest( '.jet-calendar' ), 978 $widget = $calendar.closest( '.elementor-widget-container' ), 979 settings = $calendar.data( 'settings' ), 980 post = $calendar.data( 'post' ), 981 month = $this.data( 'month' ); 982 983 $calendar.addClass( 'jet-calendar-loading' ); 984 985 JetEngine.currentRequest = { 986 action: 'jet_engine_calendar_get_month', 987 month: month, 988 settings: settings, 989 post: post, 990 }; 991 992 $( document ).trigger( 'jet-engine-request-calendar' ); 993 994 $.ajax({ 995 url: JetEngineSettings.ajaxurl, 996 type: 'POST', 997 dataType: 'json', 998 data: JetEngine.currentRequest, 999 }).done( function( response ) { 1000 if ( response.success ) { 1001 $widget.html( response.data.content ); 1002 } 1003 $calendar.removeClass( 'jet-calendar-loading' ); 1004 } ); 1005 1006 1007 }, 1008 1009 filters: ( function() { 1010 1011 var callbacks = {}; 1012 1013 return { 1014 1015 addFilter: function( name, callback ) { 1016 1017 if ( ! callbacks.hasOwnProperty( name ) ) { 1018 callbacks[name] = []; 1019 } 1020 1021 callbacks[name].push(callback); 1022 1023 }, 1024 1025 applyFilters: function( name, value, args ) { 1026 1027 if ( ! callbacks.hasOwnProperty( name ) ) { 1028 return value; 1029 } 1030 1031 if ( args === undefined ) { 1032 args = []; 1033 } 1034 1035 var container = callbacks[ name ]; 1036 var cbLen = container.length; 1037 1038 for (var i = 0; i < cbLen; i++) { 1039 if (typeof container[i] === 'function') { 1040 value = container[i](value, args); 1041 } 1042 } 1043 1044 return value; 1045 } 1046 1047 }; 1048 1049 })() 1050 1051 }; 1052 1053 $( window ).on( 'elementor/frontend/init', JetEngine.init ); 1054 1055 window.JetEngine = JetEngine; 1056 1057}( jQuery ) );
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.