1( function( $ ) { 2 3 "use strict"; 4 5 var mapProvider = new window.JetEngineMapsProvider(); 6 7 var JetEngineMaps = { 8 9 markersData: {}, 10 clusterersData: {}, 11 mapProvider: mapProvider, 12 13 preventPanToMarker: false, 14 15 init: function() { 16 17 var widgets = { 18 'jet-engine-maps-listing.default' : JetEngineMaps.widgetMap, 19 }; 20 21 $.each( widgets, function( widget, callback ) { 22 window.elementorFrontend?.hooks?.addAction( 'frontend/element_ready/' + widget, callback ); 23 }); 24 25 window.addEventListener( 26 'jet-engine/maps/google/info-box-open', 27 JetEngineMaps.initHandlersOnEvent 28 ); 29 30 elementorFrontend.elements.$window.on( 31 'elementor/nested-tabs/activate', 32 JetEngineMaps.nestedWidgetsReInit 33 ); 34 }, 35 36 initBlocks: function( $scope ) { 37 38 $scope = $scope || $( 'body' ); 39 40 window.JetPlugins.init( $scope, [ 41 { 42 block: 'jet-engine/maps-listing', 43 callback: JetEngineMaps.widgetMap 44 } 45 ] ); 46 47 }, 48 49 initBricks: function( $scope ) { 50 51 $scope = $scope || $( 'body' ); 52 53 window.JetPlugins.init( $scope, [ 54 { 55 block: 'jet-engine/bricks-maps-listing', 56 callback: JetEngineMaps.bricksWidgetMap 57 } 58 ] ); 59 60 }, 61 62 commonInit: function() { 63 // Register URL Action. 64 if ( undefined === window.JetEngine ) { 65 $( window ).on( 'jet-engine/frontend/loaded', JetEngineMaps.registerUrlAction ); 66 } else { 67 JetEngineMaps.registerUrlAction(); 68 } 69 }, 70 71 bricksWidgetMap: function( $scope ) { 72 73 if (JetEngineMaps.isBricksHiddenWrap($scope)) { 74 JetEngineMaps.initMapAfterDisplayingWidgets($scope[0]); 75 return; 76 } 77 78 JetEngineMaps.widgetMap($scope); 79 }, 80 81 nestedWidgetsReInit: function( e, content ) { 82 if ( mapProvider.getId() !== 'mapbox' ) { 83 return; 84 } 85 86 const mapWidgets = $( content ).find( '[data-widget_type="jet-engine-maps-listing.default"]:not(.nested-reinited)' ); 87 88 mapWidgets.each( ( i, el ) => { 89 const $mapContainer = $( el ).find( '.jet-map-listing' ); 90 const $mapWidget = $( el ); 91 92 $mapContainer.attr( 'id', '' ); 93 JetEngineMaps.widgetMap( $mapWidget ); 94 $mapWidget.addClass( 'nested-reinited' ); 95 } ); 96 }, 97 98 widgetMap: function( $scope ) { 99 100 var $container = $scope.find( '.jet-map-listing' ), 101 mapID = $scope.data( 'id' ), 102 map, 103 init, 104 markers, 105 bounds, 106 general, 107 gmMarkers = [], 108 activeInfoWindow, 109 width, 110 offset, 111 mapSettings, 112 autoCenter, 113 customCenter, 114 markerCluster; 115 116 if ( ! $container.length || $container.attr( 'id' ) ) { 117 return; 118 } 119 120 $container.attr( 'id', 'map_' + mapID + '_' + Math.floor( Math.random() * Math.floor( 999 ) ) ); 121 122 var initMarker = function( markerData ) { 123 var marker, 124 infowindow, 125 popup, 126 popupOpenOn = undefined !== general.popupOpenOn ? general.popupOpenOn : 'click', 127 pinData = { 128 position: { lat: markerData.latLang.lat, lng: markerData.latLang.lng }, 129 map: map, 130 shadow: false, 131 }; 132 133 if ( markerData.custom_marker ) { 134 pinData.content = markerData.custom_marker; 135 } else if ( general.marker && 'image' === general.marker.type ) { 136 pinData.content = '<img src="' + general.marker.url + '" class="jet-map-marker-image" alt="" style="cursor: pointer;">'; 137 } else if ( general.marker && 'text' === general.marker.type ) { 138 pinData.content = general.marker.html.replace( '_marker_label_', markerData.label ); 139 } else if ( general.marker && 'icon' === general.marker.type ) { 140 pinData.content = general.marker.html; 141 } 142 143 pinData.markerClustering = markerData.markerClustering; 144 145 marker = mapProvider.addMarker( pinData ); 146 147 gmMarkers.push( marker ); 148 149 JetEngineMaps.addMarkerData( markerData.id, marker, mapID ); 150 151 if ( bounds && marker ) { 152 bounds.extend( mapProvider.getMarkerPosition( marker ) ); 153 } 154 155 infowindow = mapProvider.addPopup( { 156 position: { lat: markerData.latLang.lat, lng: markerData.latLang.lng }, 157 width: width, 158 offset: offset, 159 map: map, 160 } ); 161 162 mapProvider.closePopup( infowindow, function() { 163 if ( activeInfoWindow?.map ) { 164 activeInfoWindow.map.isInternalInteraction = false;
165 } 166 167 activeInfoWindow = false; 168 169 map.jetPlugins.isOpeningPopup = false; 170 }, map ); 171 172 mapProvider.openPopup( marker, function( event ) { 173 // Prevent clicking on a point of interest under listing marker 174 if ( event && event.stopPropagation ) { 175 event.stopPropagation(); 176 } 177 178 map.jetPlugins.isOpeningPopup = true; 179 clearTimeout( map.jetPlugins?.isOpeningPopupTimer ); 180 181 if ( infowindow.contentIsSet() ) { 182 183 if ( activeInfoWindow === infowindow ) { 184 return; 185 } 186 187 if ( activeInfoWindow ) { 188 activeInfoWindow.close(); 189 } 190 191 setCenterByMarker( marker ); 192 193 infowindow.setMap( map ); 194 infowindow.draw(); 195 infowindow.open( map, marker ); 196 197 JetEngineMaps.initHandlers( $container.find( '.jet-map-box' ) ); 198 199 activeInfoWindow = infowindow; 200 201 map.jetPlugins.isOpeningPopupTimer = setTimeout( 202 () => map.jetPlugins.isOpeningPopup = false, 203 +( JetEngineSettings?.mapSyncFilter?.debounceTime ?? 500 ) + 10 204 ); 205 206 return; 207 208 } else if ( general.popupPreloader ) { 209 210 if ( activeInfoWindow ) { 211 activeInfoWindow.close(); 212 activeInfoWindow = false; 213 } 214 215 infowindow.setMap( map ); 216 infowindow.draw(); 217 218 infowindow.setContent( '<div class="jet-map-preloader is-active"><div class="jet-map-loader"></div></div>', false ); 219 220 infowindow.open( map, marker ); 221 222 } 223 224 var querySeparator = general.querySeparator || '?'; 225 var api = general.api + 226 querySeparator + 227 'listing_id=' + general.listingID + 228 '&post_id=' + 229 markerData.id + 230 '&source=' + general.source + 231 '&geo_query_distance=' + markerData.geo_query_distance; 232 var queriedID = $container.data( 'queried-id' ); 233 234 if ( queriedID ) { 235 api += '&queried_id=' + queriedID; 236 } 237 238 if ( mapID ) { 239 api += '&element_id=' + mapID; 240 } 241 242 if ( window.JetSmartFilters?.filterGroups ) { 243 const filterGroups = window.JetSmartFilters.filterGroups; 244 245 for ( const groupName in filterGroups ) { 246 if ( ! groupName.includes( 'jet-engine-maps/' ) ) { 247 continue; 248 } 249 250 if ( filterGroups[ groupName ]?.$provider?.[0] === $container[0] ) { 251 const filtersUrl = filterGroups[ groupName ].getUrl( true ); 252 253 if ( filtersUrl ) { 254 api += '&jsf=' + filtersUrl.replace( '?jsf=', '' ); 255 } 256 257 break; 258 } 259 } 260 } 261 262 jQuery.ajax({ 263 url: api, 264 type: 'GET', 265 dataType: 'json', 266 beforeSend: function( jqXHR ) { 267 var nonce = window.JetEngineSettings ? window.JetEngineSettings.restNonce : general.restNonce; 268 jqXHR.setRequestHeader( 'X-WP-Nonce', nonce ); 269 }, 270 }).done( function( response ) { 271 272 if ( activeInfoWindow ) { 273 activeInfoWindow.close(); 274 } 275 276 infowindow.setMap( map ); 277 infowindow.draw(); 278 279 infowindow.setContent( response.html, false ); 280 281 infowindow.open( map, marker ); 282 283 JetEngineMaps.initHandlers( $container.find( '.jet-map-box' ) ); 284 285 activeInfoWindow = infowindow; 286 287 map.jetPlugins.isOpeningPopupTimer = setTimeout( 288 () => map.jetPlugins.isOpeningPopup = false, 289 +( JetEngineSettings?.mapSyncFilter?.debounceTime ?? 500 ) + 10 290 ); 291 292 // Re-init Bricks scripts 293 JetEngineMaps.reinitBricksScripts( mapID ); 294 295 }).fail( function( error ) { 296 297 if ( activeInfoWindow ) { 298 activeInfoWindow.close(); 299 } 300 301 infowindow.setContent( error, true ); 302 infowindow.open( map, marker ); 303 304 activeInfoWindow = infowindow; 305 306 map.jetPlugins.isOpeningPopupTimer = setTimeout( 307 () => map.jetPlugins.isOpeningPopup = false, 308 +( JetEngineSettings?.mapSyncFilter?.debounceTime ?? 500 ) + 10 309 ); 310 311 }); 312 313 setCenterByMarker( marker ); 314 315 }, infowindow, map, popupOpenOn ); 316 317 }; 318 319 var setCenterByMarker = function( marker ) { 320 321 if ( ! general.centeringOnOpen ) { 322 return; 323 } 324 325 if ( JetEngineMaps.preventPanToMarker ) { 326 return; 327 } 328 329 if ( map.jetPlugins.autoCenterBlock ) { 330 return; 331 } 332 333 mapProvider.panTo( { 334 map: map, 335 position: mapProvider.getMarkerPosition( marker ),
336 zoom: general.zoomOnOpen ? +general.zoomOnOpen : false, 337 } ); 338 339 map.isInternalInteraction = false; 340 }; 341 342 var setAutoCenter = function() { 343 344 if ( ! bounds ) { 345 return; 346 } 347 348 if ( bounds.isEmpty && bounds.isEmpty() ) { 349 return; 350 } 351 352 mapProvider.setAutoCenter( { 353 map: map, 354 settings: general, 355 bounds: bounds, 356 } ); 357 358 }; 359 360 init = $container.data( 'init' ); 361 markers = $container.data( 'markers' ); 362 general = $container.data( 'general' ); 363 autoCenter = general.autoCenter; 364 365 if ( ! autoCenter ) { 366 customCenter = general.customCenter; 367 } 368 369 mapSettings = { 370 zoomControl: true, 371 fullscreenControl: true, 372 streetViewControl: true, 373 mapTypeControl: true, 374 }; 375 376 mapSettings = $.extend( {}, mapSettings, init ); 377 378 if ( ! autoCenter && customCenter ) { 379 mapSettings.center = customCenter; 380 mapSettings.zoom = general.customZoom; 381 } 382 383 if ( general.maxZoom ) { 384 mapSettings.maxZoom = general.maxZoom; 385 } 386 387 if ( general.minZoom ) { 388 mapSettings.minZoom = general.minZoom; 389 } 390 391 if ( general.styles ) { 392 mapSettings.styles = general.styles; 393 } 394 395 if ( general.advanced ) { 396 397 if ( general.advanced.zoom_control ) { 398 mapSettings.gestureHandling = general.advanced.zoom_control; 399 } else { 400 mapSettings.scrollwheel = false; 401 } 402 403 if ( undefined !== general.advanced.scrollwheel ) { 404 mapSettings.scrollwheel = general.advanced.scrollwheel; 405 } 406 407 } 408 409 map = mapProvider.initMap( $container[0], mapSettings ); 410 411 map.jetPlugins ??= {}; 412 413 bounds = mapProvider.initBounds(); 414 width = parseInt( general.width, 10 ); 415 offset = parseInt( general.offset, 10 ); 416 417 $container.data( 'mapInstance', map ); 418 419 if ( general.user_location_enabled && navigator.geolocation ) { 420 421 navigator.geolocation.watchPosition( 422 ( position ) => { 423 424 const userMarker = general.user_location_marker; 425 426 if ( ! userMarker ) { 427 return; 428 } 429 430 if ( map.jetPlugins.userLocationMarker ) { 431 mapProvider.removeMarker( map.jetPlugins.userLocationMarker ); 432 } 433 434 let content = 'Your Location'; 435 let coords = { lat: position.coords.latitude, lng: position.coords.longitude }; 436 437 switch ( userMarker.type ) { 438 case 'image': 439 content = '<img src="' + userMarker.url + '" class="jet-map-user-location-marker-image '+ ( userMarker.additional_classes || '' ) +'" alt="" style="cursor: pointer;">'; 440 break; 441 case 'text': 442 content = userMarker.html.replace( '_marker_label_', general.user_location_label ); 443 break; 444 case 'icon': 445 content = userMarker.html; 446 } 447 448 map.jetPlugins.userLocationMarker = mapProvider.addMarker( 449 { 450 content: content.replace( 'cursor: pointer;', 'cursor: default;' ), 451 position: coords, 452 map: map, 453 shadow: false, 454 } 455 ); 456 457 $( window ).trigger( 'jet-engine/frontend-maps/user-position/update', [ $container, coords, mapProvider ] ); 458 }, 459 ( error ) => { 460 $( window ).trigger( 'jet-engine/frontend-maps/user-position/error', [ error, $container ] ); 461 }, 462 { 463 enableHighAccuracy: true, 464 maximumAge: 30, 465 timeout: Infinity 466 } 467 ); 468 } 469 470 if ( markers ) { 471 $.each( markers, function( index, markerData ) { 472 markerData.markerClustering = general.markerClustering; 473 initMarker( markerData ); 474 }); 475 } 476 477 if ( autoCenter || ! customCenter ) { 478 setAutoCenter(); 479 } 480 481 if ( general.markerClustering ) { 482 483 markerCluster = mapProvider.getMarkerCluster( { 484 map: map, 485 markers: gmMarkers, 486 clustererImg: general.clustererImg, 487 customClusterImg: general.customClusterImg || [], 488 clusterMaxZoom: general.clusterMaxZoom, 489 clusterRadius: general.clusterRadius, 490 } ); 491 492 JetEngineMaps.clusterersData[ mapID ] = markerCluster; 493 } 494 495 var filterContentRender = function( event, response ) { 496 map.jetPlugins.JetSmartFilters ??= {}; 497 map.jetPlugins.JetSmartFilters.markers = response.markers; 498 499 redrawMarkers( response.markers ?? [] ); 500 }; 501 502 $scope.on( 'jet-filter-custom-content-render', filterContentRender ); 503 504 var redrawMarkers = function( makersData ) { 505 506 if ( activeInfoWindow ) { 507 activeInfoWindow.close(); 508 } 509 510 if ( markerCluster ) { 511 mapProvider.removeMarkers( markerCluster, gmMarkers ); 512 } 513
514 gmMarkers.forEach( function( marker ) { 515 mapProvider.removeMarker( marker ); 516 } ); 517 518 gmMarkers.splice( 0, gmMarkers.length ); 519 JetEngineMaps.restoreMarkerData(); 520 521 bounds = mapProvider.initBounds(); 522 523 let general = $container.data( 'general' ); 524 525 if ( makersData?.length ) { 526 527 for ( var i = 0; i < makersData.length; i++ ) { 528 let marker = makersData[ i ]; 529 marker.markerClustering = general.markerClustering; 530 initMarker( marker ); 531 } 532 533 if ( general.markerClustering && markerCluster ) { 534 mapProvider.addMarkers( markerCluster, gmMarkers ); 535 } 536 537 } 538 539 if ( ! map.jetPlugins.autoCenterBlock && ( autoCenter || ! customCenter ) ) { 540 setAutoCenter(); 541 } 542 543 map.jetPlugins.autoCenterBlock = false; 544 545 }; 546 547 var toggleMarkerClustering = function() { 548 let general = $container.data( 'general' ); 549 let markersToDraw = map?.jetPlugins?.JetSmartFilters?.markers || markers; 550 551 general.markerClustering = ! general.markerClustering; 552 $container.data( 'general', general ); 553 map.jetPlugins.autoCenterBlock = true; 554 redrawMarkers( markersToDraw ); 555 }; 556 557 $scope.on( 'jet-engine/frontend-maps/toggle-marker-clustering', toggleMarkerClustering ); 558 }, 559 560 addMarkerData: function( id, marker, mapID ) { 561 562 if ( ! this.markersData[id] ) { 563 this.markersData[id] = []; 564 } 565 566 this.markersData[id].push( { 567 marker: marker, 568 clustererIndex: mapID 569 } ); 570 }, 571 restoreMarkerData: function() { 572 this.markersData = {}; 573 }, 574 575 registerUrlAction: function() { 576 window.JetEngine.customUrlActions.addAction( 577 'open_map_listing_popup', 578 JetEngineMaps.openMapListingPopup 579 ); 580 581 window.JetEngine.customUrlActions.addAction( 582 'toggle_marker_clustering', 583 JetEngineMaps.toggleMarkerClustering 584 ); 585 }, 586 587 toggleMarkerClustering: function( settings ) { 588 if ( ! settings.map_id ) { 589 return; 590 } 591 let $mapListing = $( `#${settings.map_id}` ); 592 593 if ( ! $mapListing.length ) { 594 return; 595 } 596 597 let mapContainer = $mapListing.find( '.jet-map-listing' )[0] || false; 598 599 if ( ! mapContainer ) { 600 return; 601 } 602 603 $( mapContainer ).trigger( 'jet-engine/frontend-maps/toggle-marker-clustering' ); 604 }, 605 606 openMapListingPopup: function( settings ) { 607 608 if ( ! settings.id ) { 609 return; 610 } 611 612 var popupID = settings.id, 613 zoom = settings.zoom ? +settings.zoom : false; 614 615 if ( undefined === JetEngineMaps.markersData[ popupID ] ) { 616 return; 617 } 618 619 if ( zoom ) { 620 JetEngineMaps.preventPanToMarker = true; 621 } 622 623 for ( var i = 0; i < JetEngineMaps.markersData[ popupID ].length; i++ ) { 624 625 var marker = JetEngineMaps.markersData[ popupID ][i].marker, 626 map = mapProvider.getMarkerMap( marker ), 627 clustererIndex = JetEngineMaps.markersData[ popupID ][i].clustererIndex || false, 628 markersClusterer = JetEngineMaps.clusterersData[ clustererIndex ] || false; 629 630 if ( !map || mapProvider?.isMarkerClusterOpen?.( marker, markersClusterer ) ) { 631 // A marker inside a cluster 632 mapProvider.fitMapToMarker( marker, markersClusterer, zoom ); 633 } else { 634 // Centering the map 635 mapProvider.panTo( { 636 map: map, 637 position: mapProvider.getMarkerPosition( marker ), 638 zoom: zoom, 639 } ); 640 } 641 642 mapProvider.triggerOpenPopup( marker ); 643 644 if ( settings.scroll_to_map ) { 645 const container = mapProvider.getContainer( map ); 646 const offset = $( container ).offset(); 647 648 $( 'html, body' ).animate( { scrollTop: ( offset.top - 30 ) } ); 649 } 650 } 651 652 JetEngineMaps.preventPanToMarker = false;
653 }, 654 655 customInitMapBySelector: function( $selector ) { 656 var $mapBlock = $selector.closest( '[data-is-block="jet-engine/maps-listing"]' ), 657 $mapBricks = $selector.closest( '[data-is-block="jet-engine/bricks-maps-listing"]' ), 658 $mapElWidget = $selector.closest( '.elementor-widget-jet-engine-maps-listing' ); 659 660 if ( $mapBlock.length ) { 661 JetEngineMaps.widgetMap( $mapBlock ); 662 } 663 664 if ( $mapBricks.length ) { 665 JetEngineMaps.bricksWidgetMap( $mapBricks ); 666 } 667 668 if ( $mapElWidget.length ) { 669 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/widget', $mapElWidget, $ ); 670 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/global', $mapElWidget, $ ); 671 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/' + $mapElWidget.data( 'widget_type' ), $mapElWidget, $ ); 672 } 673 }, 674 675 initHandlers: function( $selector ) { 676 677 // Actual init 678 window.JetPlugins.init( $selector ); 679 680 // Legacy Elementor-only init 681 // 682 // added check for window.elementorFrontend.hooks to prevent JS error if Elementor Listing Item is used in Block editor Map Listing 683 // https://github.com/Crocoblock/issues-tracker/issues/13998 684 if ( window?.elementorFrontend?.hooks ) { 685 $selector.find( '[data-element_type]' ).each( function() { 686 var $this = $( this ), 687 elementType = $this.data( 'element_type' ); 688 689 if ( !elementType ) { 690 return; 691 } 692 693 if ( 'widget' === elementType ) { 694 elementType = $this.data( 'widget_type' ); 695 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/widget', $this, $ ); 696 } 697 698 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/global', $this, $ ); 699 window.elementorFrontend.hooks.doAction( 'frontend/element_ready/' + elementType, $this, $ ); 700 701 } ); 702 } 703 704 if ( window.JetPopupFrontend && window.JetPopupFrontend.initAttachedPopups ) { 705 window.JetPopupFrontend.initAttachedPopups( $selector ); 706 } 707 708 // Reinit the common events for a map popup. 709 // Only for Google provider as event propagation is disabled. 710 if ( window.JetEngine && mapProvider.getId && 'google' === mapProvider.getId() ) { 711 JetEngine.commonEvents( $selector ); 712 } 713 714 }, 715 716 initHandlersOnEvent: function( event ) { 717 if ( ! event.detail || ! event.detail.container ) { 718 return; 719 } 720 721 JetEngineMaps.initHandlers( $( event.detail.container ) ); 722 }, 723 724 // Restart the map when it is displayed 725 initMapAfterDisplayingWidgets: function( node ) { 726 const observer = new IntersectionObserver((entries, observer) => { 727 entries.forEach(entry => { 728 if (entry.isIntersecting) { 729 observer.unobserve(entry.target); 730 731 JetEngineMaps.widgetMap($(entry.target)); 732 } 733 }); 734 }); 735 736 observer.observe(node); 737 }, 738 739 // Check the Bricks parent node. Is it hidden or not? 740 // The problem was the accordion and tabs 741 isBricksHiddenWrap: function( $scope ) { 742 const generalWrapper = $scope[0].closest('.brxe-accordion-nested, .brxe-tabs-nested'); 743 const wrapHidden = $scope[0].closest('.listening, .tab-pane'); 744 745 if (generalWrapper && wrapHidden && !wrapHidden.classList.contains('brx-open')) { 746 return true; 747 } 748 749 return false; 750 }, 751 752 //map - map instance
753 //bounds - an object containing 'south', 'west', 'north', 'east' coordinates 754 dispatchMapSyncEvent: function( map, bounds ) { 755 756 const mapDiv = mapProvider.getContainer( map ); 757 //debounce event dispatch to prevent unnecessary filter requests on zoom/pan change 758 clearTimeout( mapDiv?.JetEngineMapDebounceTimer ); 759 760 let debounceTime = + ( JetEngineSettings?.mapSyncFilter?.debounceTime ?? 500 ); 761 762 if ( ! isFinite( debounceTime ) ) { 763 debounceTime = 1000; 764 } 765 766 mapDiv.JetEngineMapDebounceTimer = setTimeout( 767 JetEngineMaps.dispatchMapSyncEventImmediate, 768 debounceTime, 769 mapDiv, 770 bounds, 771 map 772 ); 773 }, 774 775 dispatchMapSyncEventImmediate: function( mapDiv, bounds, map ) { 776 if ( map.isInternalInteraction ) { 777 map.isInternalInteraction = false; 778 return; 779 } 780 781 if ( map.jetPlugins.isOpeningPopup ) { 782 return; 783 } 784 785 const event = new CustomEvent( 786 "jet-engine/maps/update-sync-bounds", 787 { 788 detail: { 789 div: mapDiv, 790 bounds: bounds, 791 map: map, 792 mapProvider 793 }, 794 } 795 ); 796 797 document.dispatchEvent( event ); 798 }, 799 800 dispatchMapSyncInitEvent: function( map ) { 801 const event = new CustomEvent( 802 "jet-engine/maps/init-sync-bounds", 803 { 804 detail: { 805 map: map, 806 div: mapProvider.getContainer( map ), 807 mapProvider 808 }, 809 } 810 ); 811 812 document.dispatchEvent( event ); 813 }, 814 815 reinitBricksScripts: function (elementId) { 816 if (!window.bricksIsFrontend) { 817 return; 818 } 819 820 document.dispatchEvent( 821 new CustomEvent("bricks/ajax/query_result/displayed", { 822 detail: { 823 queryId: elementId || null 824 } 825 }) 826 ); 827 } 828 }; 829 830 $( window ).on( 'elementor/frontend/init', JetEngineMaps.init ); 831 832 window.addEventListener( 'DOMContentLoaded', function() { 833 JetEngineMaps.initBlocks(); 834 JetEngineMaps.initBricks(); 835 } ); 836 837 window.jetEngineMapsBricks = function() { 838 JetEngineMaps.initBricks(); 839 } 840 841 window.JetEngineMaps = JetEngineMaps; 842 843 JetEngineMaps.commonInit(); 844 845 $( window ).trigger( 'jet-engine/frontend-maps/loaded' ); 846 847}( 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.