PageSourceSearch

https://morgancompany.com/wp-content/plugins/jet-engine/includes/m…/assets/js/frontend-maps.js?ver=3.8.2.1

js morgancompany.com collected 2026-10-10 02:44:53 UTC 21,682 bytes, 847 lines download raw bytes

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.