From 42e548ba1015c4c004d269b11d89f2c0dd2b349a Mon Sep 17 00:00:00 2001 From: kuznev Date: Mon, 11 Jul 2022 16:17:39 +0300 Subject: [PATCH 1/8] Fix deferring issues with Google Maps --- assets/js/common.js | 507 +++++++++++----------- includes/components/class-geolocation.php | 3 - 2 files changed, 246 insertions(+), 264 deletions(-) diff --git a/assets/js/common.js b/assets/js/common.js index fde5748..ee8ae33 100644 --- a/assets/js/common.js +++ b/assets/js/common.js @@ -1,327 +1,312 @@ (function($) { 'use strict'; - hivepress.initGeolocation = function(container = null) { - if (container === null) { - container = $('body'); - } + var container = $('body'); + + // Location + container.find(hivepress.getSelector('location')).each(function() { + var container = $(this), + form = container.closest('form'), + field = container.find('input[type=text]'), + latitudeField = form.find('input[data-coordinate=lat]'), + longitudeField = form.find('input[data-coordinate=lng]'), + regionField = form.find('input[data-region]'), + button = container.find('a'), + settings = {}; + + if (typeof mapboxData !== 'undefined') { + settings = { + accessToken: mapboxData.apiKey, + language: hivepressCoreData.language, + }; + + // Set countries + if (container.data('countries')) { + settings['countries'] = container.data('countries').join(','); + } - // Location - container.find(hivepress.getSelector('location')).each(function() { - var container = $(this), - form = container.closest('form'), - field = container.find('input[type=text]'), - latitudeField = form.find('input[data-coordinate=lat]'), - longitudeField = form.find('input[data-coordinate=lng]'), - regionField = form.find('input[data-region]'), - button = container.find('a'), - settings = {}; - - if (typeof mapboxData !== 'undefined') { - settings = { - accessToken: mapboxData.apiKey, - language: hivepressCoreData.language, - }; + // Set types + if (container.data('types')) { + settings['types'] = container.data('types').join(','); + } - // Set countries - if (container.data('countries')) { - settings['countries'] = container.data('countries').join(','); - } + // Create Geocoder + var geocoder = new MapboxGeocoder(settings); - // Set types - if (container.data('types')) { - settings['types'] = container.data('types').join(','); - } + geocoder.addTo(container.get(0)); - // Create Geocoder - var geocoder = new MapboxGeocoder(settings); + // Replace field + var mapboxContainer = container.children('.mapboxgl-ctrl'), + fieldAttributes = field.prop('attributes'); - geocoder.addTo(container.get(0)); + field.remove(); + field = mapboxContainer.find('input[type=text]'); - // Replace field - var mapboxContainer = container.children('.mapboxgl-ctrl'), - fieldAttributes = field.prop('attributes'); + $.each(fieldAttributes, function() { + field.attr(this.name, this.value); + }); - field.remove(); - field = mapboxContainer.find('input[type=text]'); + mapboxContainer.detach().prependTo(container); + + // Set location + geocoder.on('result', function(result) { + var types = [ + 'place', + 'district', + 'region', + 'country', + ]; + + // Set region + if (regionField.length) { + if (result.result.place_type.filter(value => types.includes(value)).length) { + regionField.val(result.result.id); + } else { + regionField.val(''); + } + } - $.each(fieldAttributes, function() { - field.attr(this.name, this.value); - }); + // Set coordinates + longitudeField.val(result.result.geometry.coordinates[0]); + latitudeField.val(result.result.geometry.coordinates[1]); + }); + } else { + settings = { + details: form, + detailsAttribute: 'data-coordinate', + }; + + // Set countries + if (container.data('countries')) { + settings['componentRestrictions'] = { + 'country': container.data('countries'), + }; + } + + // Set types + if (container.data('types')) { + settings['types'] = container.data('types'); + } - mapboxContainer.detach().prependTo(container); + // Initialize Geocomplete + field.geocomplete(settings); - // Set location - geocoder.on('result', function(result) { - var types = [ - 'place', - 'district', - 'region', + // Set location + field.bind('geocode:result', function(event, result) { + var parts = [], + types = [ + 'locality', + 'administrative_area_level_2', + 'administrative_area_level_1', 'country', ]; - // Set region - if (regionField.length) { - if (result.result.place_type.filter(value => types.includes(value)).length) { - regionField.val(result.result.id); - } else { - regionField.val(''); - } + // Set region + if (regionField.length) { + if (result.address_components[0].types.filter(value => types.includes(value)).length) { + regionField.val(result.place_id); + } else { + regionField.val(''); } + } - // Set coordinates - longitudeField.val(result.result.geometry.coordinates[0]); - latitudeField.val(result.result.geometry.coordinates[1]); - }); - } else { - settings = { - details: form, - detailsAttribute: 'data-coordinate', - }; + // Set address + if (container.data('scatter')) { + types.push('route'); - // Set countries - if (container.data('countries')) { - settings['componentRestrictions'] = { - 'country': container.data('countries'), - }; - } + $.each(result.address_components, function(index, component) { + if (component.types.filter(value => types.includes(value)).length) { + parts.push(component.long_name); + } + }); - // Set types - if (container.data('types')) { - settings['types'] = container.data('types'); + field.val(parts.join(', ')); } + }); + } - // Initialize Geocomplete - field.geocomplete(settings); - - // Set location - field.bind('geocode:result', function(event, result) { - var parts = [], - types = [ - 'locality', - 'administrative_area_level_2', - 'administrative_area_level_1', - 'country', - ]; - - // Set region - if (regionField.length) { - if (result.address_components[0].types.filter(value => types.includes(value)).length) { - regionField.val(result.place_id); - } else { - regionField.val(''); - } - } + // Clear location + field.on('input', function() { + if (!field.val()) { + form.find('input[data-coordinate]').val(''); + } + }); - // Set address - if (container.data('scatter')) { - types.push('route'); + // Detect location + if (navigator.geolocation) { + button.on('click', function(e) { + navigator.geolocation.getCurrentPosition(function(position) { + if (typeof mapboxData !== 'undefined') { + geocoder.options.reverseGeocode = true; + geocoder.options.limit = 1; - $.each(result.address_components, function(index, component) { - if (component.types.filter(value => types.includes(value)).length) { - parts.push(component.long_name); - } - }); + geocoder.query(position.coords.latitude + ',' + position.coords.longitude); - field.val(parts.join(', ')); + geocoder.options.reverseGeocode = false; + geocoder.options.limit = 5; + } else { + field.geocomplete('find', position.coords.latitude + ' ' + position.coords.longitude); } }); - } - // Clear location - field.on('input', function() { - if (!field.val()) { - form.find('input[data-coordinate]').val(''); - } + e.preventDefault(); }); + } else { + button.hide(); + } + }); - // Detect location - if (navigator.geolocation) { - button.on('click', function(e) { - navigator.geolocation.getCurrentPosition(function(position) { - if (typeof mapboxData !== 'undefined') { - geocoder.options.reverseGeocode = true; - geocoder.options.limit = 1; - - geocoder.query(position.coords.latitude + ',' + position.coords.longitude); - - geocoder.options.reverseGeocode = false; - geocoder.options.limit = 5; - } else { - field.geocomplete('find', position.coords.latitude + ' ' + position.coords.longitude); - } - }); + // Map + container.find(hivepress.getSelector('map')).each(function() { + var container = $(this), + height = container.width(), + maxZoom = container.data('max-zoom'); - e.preventDefault(); - }); - } else { - button.hide(); - } - }); + // Set height + if (container.is('[data-height]')) { + height = container.data('height'); + } - // Map - container.find(hivepress.getSelector('map')).each(function() { - var container = $(this), - height = container.width(), - maxZoom = container.data('max-zoom'); + container.height(height); - // Set height - if (container.is('[data-height]')) { - height = container.data('height'); - } + if (typeof mapboxData !== 'undefined') { - container.height(height); + // Set API key + mapboxgl.accessToken = mapboxData.apiKey; - if (typeof mapboxData !== 'undefined') { + // Create map + var bounds = new mapboxgl.LngLatBounds(), + map = new mapboxgl.Map({ + container: container.get(0), + style: 'mapbox://styles/mapbox/streets-v11', + center: [0, 0], + zoom: 1, + }); - // Set API key - mapboxgl.accessToken = mapboxData.apiKey; + map.addControl(new mapboxgl.NavigationControl()); + map.addControl(new mapboxgl.FullscreenControl()); - // Create map - var bounds = new mapboxgl.LngLatBounds(), - map = new mapboxgl.Map({ - container: container.get(0), - style: 'mapbox://styles/mapbox/streets-v11', - center: [0, 0], - zoom: 1, - }); + // Set language + map.addControl(new MapboxLanguage()); - map.addControl(new mapboxgl.NavigationControl()); - map.addControl(new mapboxgl.FullscreenControl()); + // Add markers + $.each(container.data('markers'), function(index, data) { + bounds.extend([data.longitude, data.latitude]); - // Set language - map.addControl(new MapboxLanguage()); + var marker = new mapboxgl.Marker() + .setLngLat([data.longitude, data.latitude]) + .setPopup(new mapboxgl.Popup().setHTML(data.content)) + .addTo(map); + }); - // Add markers - $.each(container.data('markers'), function(index, data) { - bounds.extend([data.longitude, data.latitude]); + // Fit bounds + map.fitBounds(bounds, { + maxZoom: maxZoom - 1, + padding: 50, + duration: 0, + }); - var marker = new mapboxgl.Marker() - .setLngLat([data.longitude, data.latitude]) - .setPopup(new mapboxgl.Popup().setHTML(data.content)) - .addTo(map); - }); + var observer = new ResizeObserver(function() { + map.resize(); - // Fit bounds map.fitBounds(bounds, { maxZoom: maxZoom - 1, padding: 50, duration: 0, }); - - var observer = new ResizeObserver(function() { - map.resize(); - - map.fitBounds(bounds, { - maxZoom: maxZoom - 1, - padding: 50, - duration: 0, - }); - }).observe(container.get(0)); - } else { - var prevWindow = false, - markers = [], - bounds = new google.maps.LatLngBounds(), - map = new google.maps.Map(container.get(0), { - zoom: 3, - minZoom: 2, - maxZoom: maxZoom, - mapTypeControl: false, - streetViewControl: false, - center: { - lat: 0, - lng: 0, - }, - styles: [{ - featureType: 'poi', - stylers: [{ - visibility: 'off', - }], + }).observe(container.get(0)); + } else { + var prevWindow = false, + markers = [], + bounds = new google.maps.LatLngBounds(), + map = new google.maps.Map(container.get(0), { + zoom: 3, + minZoom: 2, + maxZoom: maxZoom, + mapTypeControl: false, + streetViewControl: false, + center: { + lat: 0, + lng: 0, + }, + styles: [{ + featureType: 'poi', + stylers: [{ + visibility: 'off', }], + }], + }), + oms = new OverlappingMarkerSpiderfier(map, { + markersWontMove: true, + markersWontHide: true, + basicFormatEvents: true, + }), + iconSettings = { + path: google.maps.SymbolPath.CIRCLE, + fillColor: '#3a77ff', + fillOpacity: 0.25, + strokeColor: '#3a77ff', + strokeWeight: 1, + strokeOpacity: 0.75, + scale: 10, + }; + + // Add markers + $.each(container.data('markers'), function(index, data) { + var nextWindow = new google.maps.InfoWindow({ + content: data.content, }), - oms = new OverlappingMarkerSpiderfier(map, { - markersWontMove: true, - markersWontHide: true, - basicFormatEvents: true, - }), - iconSettings = { - path: google.maps.SymbolPath.CIRCLE, - fillColor: '#3a77ff', - fillOpacity: 0.25, - strokeColor: '#3a77ff', - strokeWeight: 1, - strokeOpacity: 0.75, - scale: 10, + markerSettings = { + title: data.title, + position: { + lat: data.latitude, + lng: data.longitude, + }, }; - // Add markers - $.each(container.data('markers'), function(index, data) { - var nextWindow = new google.maps.InfoWindow({ - content: data.content, - }), - markerSettings = { - title: data.title, - position: { - lat: data.latitude, - lng: data.longitude, - }, - }; - - if (container.data('scatter')) { - markerSettings['icon'] = iconSettings; - } + if (container.data('scatter')) { + markerSettings['icon'] = iconSettings; + } - var marker = new google.maps.Marker(markerSettings); + var marker = new google.maps.Marker(markerSettings); - marker.addListener('spider_click', function() { - if (prevWindow) { - prevWindow.close(); - } + marker.addListener('spider_click', function() { + if (prevWindow) { + prevWindow.close(); + } - prevWindow = nextWindow; - nextWindow.open(map, marker); - }); + prevWindow = nextWindow; + nextWindow.open(map, marker); + }); - markers.push(marker); - oms.addMarker(marker); + markers.push(marker); + oms.addMarker(marker); - bounds.extend(marker.getPosition()); - }); + bounds.extend(marker.getPosition()); + }); - // Fit bounds - map.fitBounds(bounds); + // Fit bounds + map.fitBounds(bounds); - var observer = new ResizeObserver(function() { - map.fitBounds(bounds); - }).observe(container.get(0)); + var observer = new ResizeObserver(function() { + map.fitBounds(bounds); + }).observe(container.get(0)); - // Cluster markers - var clusterer = new MarkerClusterer(map, markers, { - imagePath: hivepressGeolocationData.assetURL + '/images/markerclustererplus/m', - maxZoom: maxZoom - 1, - }); + // Cluster markers + var clusterer = new MarkerClusterer(map, markers, { + imagePath: hivepressGeolocationData.assetURL + '/images/markerclustererplus/m', + maxZoom: maxZoom - 1, + }); - if (container.data('scatter')) { - map.addListener('zoom_changed', function() { - iconSettings['scale'] = Math.pow(1.3125, map.getZoom()); + if (container.data('scatter')) { + map.addListener('zoom_changed', function() { + iconSettings['scale'] = Math.pow(1.3125, map.getZoom()); - $.each(markers, function(index, marker) { - markers[index].setIcon(iconSettings); - }); + $.each(markers, function(index, marker) { + markers[index].setIcon(iconSettings); }); - } + }); } - }); - } - - $(document).on('hivepress:init', function(event, container) { - if (!container.is('body')) { - hivepress.initGeolocation(container); } }); - - // Mapbox - if (typeof mapboxData !== 'undefined') { - hivepress.initGeolocation(); - } })(jQuery); diff --git a/includes/components/class-geolocation.php b/includes/components/class-geolocation.php index 19ee12b..e846d5e 100644 --- a/includes/components/class-geolocation.php +++ b/includes/components/class-geolocation.php @@ -251,9 +251,6 @@ public function enqueue_scripts() { null, true ); - - wp_script_add_data( 'google-maps', 'async', true ); - wp_script_add_data( 'google-maps', 'defer', true ); } } From 9ea9d47e5b398420261746ced9c6a6b6bcdb6156 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 11 Jul 2022 13:18:27 +0000 Subject: [PATCH 2/8] Compile assets --- assets/js/common.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/common.min.js b/assets/js/common.min.js index ba929fe..585ab94 100644 --- a/assets/js/common.min.js +++ b/assets/js/common.min.js @@ -1 +1 @@ -(function(a){"use strict";hivepress.initGeolocation=function(b=null){null===b&&(b=a("body")),b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){b.is("body")||hivepress.initGeolocation(b)}),"undefined"!=typeof mapboxData&&hivepress.initGeolocation()})(jQuery); \ No newline at end of file +(function(a){"use strict";var b=a("body");b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})})(jQuery); \ No newline at end of file From 23783aab989f0e3ae3483a5c9371cc9460c99626 Mon Sep 17 00:00:00 2001 From: kuznev Date: Fri, 15 Jul 2022 13:55:48 +0300 Subject: [PATCH 3/8] Minor fixes --- includes/components/class-geolocation.php | 1 - 1 file changed, 1 deletion(-) diff --git a/includes/components/class-geolocation.php b/includes/components/class-geolocation.php index e846d5e..b1c01ab 100644 --- a/includes/components/class-geolocation.php +++ b/includes/components/class-geolocation.php @@ -241,7 +241,6 @@ public function enqueue_scripts() { 'https://maps.googleapis.com/maps/api/js?' . http_build_query( [ 'libraries' => 'places', - 'callback' => 'hivepress.initGeolocation', 'key' => get_option( 'hp_gmaps_api_key' ), 'language' => hivepress()->translator->get_language(), 'region' => hivepress()->translator->get_region(), From 470af92f73f53ec1d9b265236abcfd6b06308ca8 Mon Sep 17 00:00:00 2001 From: ihor Date: Mon, 25 Jul 2022 01:45:42 +0300 Subject: [PATCH 4/8] Update version --- hivepress-geolocation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hivepress-geolocation.php b/hivepress-geolocation.php index 3424491..fdb9bc2 100644 --- a/hivepress-geolocation.php +++ b/hivepress-geolocation.php @@ -2,7 +2,7 @@ /** * Plugin Name: HivePress Geolocation * Description: Allow users to search listings by location. - * Version: 1.3.6 + * Version: 1.3.7 * Author: HivePress * Author URI: https://hivepress.io/ * Text Domain: hivepress-geolocation From 2581af117573438d6c355a027ef3c6e8b59e129c Mon Sep 17 00:00:00 2001 From: ihor Date: Mon, 25 Jul 2022 01:54:55 +0300 Subject: [PATCH 5/8] Fix formatting --- assets/js/common.js | 501 ++++++++++++++++++++++---------------------- 1 file changed, 253 insertions(+), 248 deletions(-) diff --git a/assets/js/common.js b/assets/js/common.js index ee8ae33..d5cece7 100644 --- a/assets/js/common.js +++ b/assets/js/common.js @@ -1,312 +1,317 @@ (function($) { 'use strict'; - var container = $('body'); - - // Location - container.find(hivepress.getSelector('location')).each(function() { - var container = $(this), - form = container.closest('form'), - field = container.find('input[type=text]'), - latitudeField = form.find('input[data-coordinate=lat]'), - longitudeField = form.find('input[data-coordinate=lng]'), - regionField = form.find('input[data-region]'), - button = container.find('a'), - settings = {}; - - if (typeof mapboxData !== 'undefined') { - settings = { - accessToken: mapboxData.apiKey, - language: hivepressCoreData.language, - }; - - // Set countries - if (container.data('countries')) { - settings['countries'] = container.data('countries').join(','); - } - - // Set types - if (container.data('types')) { - settings['types'] = container.data('types').join(','); - } - - // Create Geocoder - var geocoder = new MapboxGeocoder(settings); + hivepress.initGeolocation = function() { + + // Location + container.find(hivepress.getSelector('location')).each(function() { + var container = $(this), + form = container.closest('form'), + field = container.find('input[type=text]'), + latitudeField = form.find('input[data-coordinate=lat]'), + longitudeField = form.find('input[data-coordinate=lng]'), + regionField = form.find('input[data-region]'), + button = container.find('a'), + settings = {}; + + if (typeof mapboxData !== 'undefined') { + settings = { + accessToken: mapboxData.apiKey, + language: hivepressCoreData.language, + }; - geocoder.addTo(container.get(0)); + // Set countries + if (container.data('countries')) { + settings['countries'] = container.data('countries').join(','); + } - // Replace field - var mapboxContainer = container.children('.mapboxgl-ctrl'), - fieldAttributes = field.prop('attributes'); + // Set types + if (container.data('types')) { + settings['types'] = container.data('types').join(','); + } - field.remove(); - field = mapboxContainer.find('input[type=text]'); + // Create Geocoder + var geocoder = new MapboxGeocoder(settings); - $.each(fieldAttributes, function() { - field.attr(this.name, this.value); - }); + geocoder.addTo(container.get(0)); - mapboxContainer.detach().prependTo(container); - - // Set location - geocoder.on('result', function(result) { - var types = [ - 'place', - 'district', - 'region', - 'country', - ]; - - // Set region - if (regionField.length) { - if (result.result.place_type.filter(value => types.includes(value)).length) { - regionField.val(result.result.id); - } else { - regionField.val(''); - } - } + // Replace field + var mapboxContainer = container.children('.mapboxgl-ctrl'), + fieldAttributes = field.prop('attributes'); - // Set coordinates - longitudeField.val(result.result.geometry.coordinates[0]); - latitudeField.val(result.result.geometry.coordinates[1]); - }); - } else { - settings = { - details: form, - detailsAttribute: 'data-coordinate', - }; - - // Set countries - if (container.data('countries')) { - settings['componentRestrictions'] = { - 'country': container.data('countries'), - }; - } + field.remove(); + field = mapboxContainer.find('input[type=text]'); - // Set types - if (container.data('types')) { - settings['types'] = container.data('types'); - } + $.each(fieldAttributes, function() { + field.attr(this.name, this.value); + }); - // Initialize Geocomplete - field.geocomplete(settings); + mapboxContainer.detach().prependTo(container); - // Set location - field.bind('geocode:result', function(event, result) { - var parts = [], - types = [ - 'locality', - 'administrative_area_level_2', - 'administrative_area_level_1', + // Set location + geocoder.on('result', function(result) { + var types = [ + 'place', + 'district', + 'region', 'country', ]; - // Set region - if (regionField.length) { - if (result.address_components[0].types.filter(value => types.includes(value)).length) { - regionField.val(result.place_id); - } else { - regionField.val(''); + // Set region + if (regionField.length) { + if (result.result.place_type.filter(value => types.includes(value)).length) { + regionField.val(result.result.id); + } else { + regionField.val(''); + } } - } - // Set address - if (container.data('scatter')) { - types.push('route'); + // Set coordinates + longitudeField.val(result.result.geometry.coordinates[0]); + latitudeField.val(result.result.geometry.coordinates[1]); + }); + } else { + settings = { + details: form, + detailsAttribute: 'data-coordinate', + }; - $.each(result.address_components, function(index, component) { - if (component.types.filter(value => types.includes(value)).length) { - parts.push(component.long_name); - } - }); + // Set countries + if (container.data('countries')) { + settings['componentRestrictions'] = { + 'country': container.data('countries'), + }; + } - field.val(parts.join(', ')); + // Set types + if (container.data('types')) { + settings['types'] = container.data('types'); } - }); - } - // Clear location - field.on('input', function() { - if (!field.val()) { - form.find('input[data-coordinate]').val(''); - } - }); + // Initialize Geocomplete + field.geocomplete(settings); + + // Set location + field.bind('geocode:result', function(event, result) { + var parts = [], + types = [ + 'locality', + 'administrative_area_level_2', + 'administrative_area_level_1', + 'country', + ]; + + // Set region + if (regionField.length) { + if (result.address_components[0].types.filter(value => types.includes(value)).length) { + regionField.val(result.place_id); + } else { + regionField.val(''); + } + } - // Detect location - if (navigator.geolocation) { - button.on('click', function(e) { - navigator.geolocation.getCurrentPosition(function(position) { - if (typeof mapboxData !== 'undefined') { - geocoder.options.reverseGeocode = true; - geocoder.options.limit = 1; + // Set address + if (container.data('scatter')) { + types.push('route'); - geocoder.query(position.coords.latitude + ',' + position.coords.longitude); + $.each(result.address_components, function(index, component) { + if (component.types.filter(value => types.includes(value)).length) { + parts.push(component.long_name); + } + }); - geocoder.options.reverseGeocode = false; - geocoder.options.limit = 5; - } else { - field.geocomplete('find', position.coords.latitude + ' ' + position.coords.longitude); + field.val(parts.join(', ')); } }); + } - e.preventDefault(); + // Clear location + field.on('input', function() { + if (!field.val()) { + form.find('input[data-coordinate]').val(''); + } }); - } else { - button.hide(); - } - }); - // Map - container.find(hivepress.getSelector('map')).each(function() { - var container = $(this), - height = container.width(), - maxZoom = container.data('max-zoom'); + // Detect location + if (navigator.geolocation) { + button.on('click', function(e) { + navigator.geolocation.getCurrentPosition(function(position) { + if (typeof mapboxData !== 'undefined') { + geocoder.options.reverseGeocode = true; + geocoder.options.limit = 1; + + geocoder.query(position.coords.latitude + ',' + position.coords.longitude); + + geocoder.options.reverseGeocode = false; + geocoder.options.limit = 5; + } else { + field.geocomplete('find', position.coords.latitude + ' ' + position.coords.longitude); + } + }); - // Set height - if (container.is('[data-height]')) { - height = container.data('height'); - } + e.preventDefault(); + }); + } else { + button.hide(); + } + }); - container.height(height); + // Map + container.find(hivepress.getSelector('map')).each(function() { + var container = $(this), + height = container.width(), + maxZoom = container.data('max-zoom'); - if (typeof mapboxData !== 'undefined') { + // Set height + if (container.is('[data-height]')) { + height = container.data('height'); + } - // Set API key - mapboxgl.accessToken = mapboxData.apiKey; + container.height(height); - // Create map - var bounds = new mapboxgl.LngLatBounds(), - map = new mapboxgl.Map({ - container: container.get(0), - style: 'mapbox://styles/mapbox/streets-v11', - center: [0, 0], - zoom: 1, - }); + if (typeof mapboxData !== 'undefined') { - map.addControl(new mapboxgl.NavigationControl()); - map.addControl(new mapboxgl.FullscreenControl()); + // Set API key + mapboxgl.accessToken = mapboxData.apiKey; - // Set language - map.addControl(new MapboxLanguage()); + // Create map + var bounds = new mapboxgl.LngLatBounds(), + map = new mapboxgl.Map({ + container: container.get(0), + style: 'mapbox://styles/mapbox/streets-v11', + center: [0, 0], + zoom: 1, + }); - // Add markers - $.each(container.data('markers'), function(index, data) { - bounds.extend([data.longitude, data.latitude]); + map.addControl(new mapboxgl.NavigationControl()); + map.addControl(new mapboxgl.FullscreenControl()); - var marker = new mapboxgl.Marker() - .setLngLat([data.longitude, data.latitude]) - .setPopup(new mapboxgl.Popup().setHTML(data.content)) - .addTo(map); - }); + // Set language + map.addControl(new MapboxLanguage()); - // Fit bounds - map.fitBounds(bounds, { - maxZoom: maxZoom - 1, - padding: 50, - duration: 0, - }); + // Add markers + $.each(container.data('markers'), function(index, data) { + bounds.extend([data.longitude, data.latitude]); - var observer = new ResizeObserver(function() { - map.resize(); + var marker = new mapboxgl.Marker() + .setLngLat([data.longitude, data.latitude]) + .setPopup(new mapboxgl.Popup().setHTML(data.content)) + .addTo(map); + }); + // Fit bounds map.fitBounds(bounds, { maxZoom: maxZoom - 1, padding: 50, duration: 0, }); - }).observe(container.get(0)); - } else { - var prevWindow = false, - markers = [], - bounds = new google.maps.LatLngBounds(), - map = new google.maps.Map(container.get(0), { - zoom: 3, - minZoom: 2, - maxZoom: maxZoom, - mapTypeControl: false, - streetViewControl: false, - center: { - lat: 0, - lng: 0, - }, - styles: [{ - featureType: 'poi', - stylers: [{ - visibility: 'off', - }], - }], - }), - oms = new OverlappingMarkerSpiderfier(map, { - markersWontMove: true, - markersWontHide: true, - basicFormatEvents: true, - }), - iconSettings = { - path: google.maps.SymbolPath.CIRCLE, - fillColor: '#3a77ff', - fillOpacity: 0.25, - strokeColor: '#3a77ff', - strokeWeight: 1, - strokeOpacity: 0.75, - scale: 10, - }; - // Add markers - $.each(container.data('markers'), function(index, data) { - var nextWindow = new google.maps.InfoWindow({ - content: data.content, - }), - markerSettings = { - title: data.title, - position: { - lat: data.latitude, - lng: data.longitude, + var observer = new ResizeObserver(function() { + map.resize(); + + map.fitBounds(bounds, { + maxZoom: maxZoom - 1, + padding: 50, + duration: 0, + }); + }).observe(container.get(0)); + } else { + var prevWindow = false, + markers = [], + bounds = new google.maps.LatLngBounds(), + map = new google.maps.Map(container.get(0), { + zoom: 3, + minZoom: 2, + maxZoom: maxZoom, + mapTypeControl: false, + streetViewControl: false, + center: { + lat: 0, + lng: 0, }, + styles: [{ + featureType: 'poi', + stylers: [{ + visibility: 'off', + }], + }], + }), + oms = new OverlappingMarkerSpiderfier(map, { + markersWontMove: true, + markersWontHide: true, + basicFormatEvents: true, + }), + iconSettings = { + path: google.maps.SymbolPath.CIRCLE, + fillColor: '#3a77ff', + fillOpacity: 0.25, + strokeColor: '#3a77ff', + strokeWeight: 1, + strokeOpacity: 0.75, + scale: 10, }; - if (container.data('scatter')) { - markerSettings['icon'] = iconSettings; - } - - var marker = new google.maps.Marker(markerSettings); - - marker.addListener('spider_click', function() { - if (prevWindow) { - prevWindow.close(); + // Add markers + $.each(container.data('markers'), function(index, data) { + var nextWindow = new google.maps.InfoWindow({ + content: data.content, + }), + markerSettings = { + title: data.title, + position: { + lat: data.latitude, + lng: data.longitude, + }, + }; + + if (container.data('scatter')) { + markerSettings['icon'] = iconSettings; } - prevWindow = nextWindow; - nextWindow.open(map, marker); - }); + var marker = new google.maps.Marker(markerSettings); - markers.push(marker); - oms.addMarker(marker); + marker.addListener('spider_click', function() { + if (prevWindow) { + prevWindow.close(); + } - bounds.extend(marker.getPosition()); - }); + prevWindow = nextWindow; + nextWindow.open(map, marker); + }); - // Fit bounds - map.fitBounds(bounds); + markers.push(marker); + oms.addMarker(marker); + + bounds.extend(marker.getPosition()); + }); - var observer = new ResizeObserver(function() { + // Fit bounds map.fitBounds(bounds); - }).observe(container.get(0)); - // Cluster markers - var clusterer = new MarkerClusterer(map, markers, { - imagePath: hivepressGeolocationData.assetURL + '/images/markerclustererplus/m', - maxZoom: maxZoom - 1, - }); + var observer = new ResizeObserver(function() { + map.fitBounds(bounds); + }).observe(container.get(0)); - if (container.data('scatter')) { - map.addListener('zoom_changed', function() { - iconSettings['scale'] = Math.pow(1.3125, map.getZoom()); + // Cluster markers + var clusterer = new MarkerClusterer(map, markers, { + imagePath: hivepressGeolocationData.assetURL + '/images/markerclustererplus/m', + maxZoom: maxZoom - 1, + }); + + if (container.data('scatter')) { + map.addListener('zoom_changed', function() { + iconSettings['scale'] = Math.pow(1.3125, map.getZoom()); - $.each(markers, function(index, marker) { - markers[index].setIcon(iconSettings); + $.each(markers, function(index, marker) { + markers[index].setIcon(iconSettings); + }); }); - }); + } } - } + }); + } + + $(document).on('hivepress:init', function(event, container) { + hivepress.initGeolocation(container); }); })(jQuery); From 9dedb581672fcf4db6b4c01a9969b7f6fe86b8b3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Jul 2022 22:55:37 +0000 Subject: [PATCH 6/8] Compile assets --- assets/js/common.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/common.min.js b/assets/js/common.min.js index 585ab94..170c2d7 100644 --- a/assets/js/common.min.js +++ b/assets/js/common.min.js @@ -1 +1 @@ -(function(a){"use strict";var b=a("body");b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})})(jQuery); \ No newline at end of file +(function(a){"use strict";hivepress.initGeolocation=function(){container.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),container.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){hivepress.initGeolocation(b)})})(jQuery); \ No newline at end of file From f860d726b9bb151409e6be0a7ae7d9c5ee71aa64 Mon Sep 17 00:00:00 2001 From: ihor Date: Mon, 25 Jul 2022 02:11:34 +0300 Subject: [PATCH 7/8] Fix formatting --- assets/js/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/common.js b/assets/js/common.js index d5cece7..3505d04 100644 --- a/assets/js/common.js +++ b/assets/js/common.js @@ -1,7 +1,7 @@ (function($) { 'use strict'; - hivepress.initGeolocation = function() { + hivepress.initGeolocation = function(container) { // Location container.find(hivepress.getSelector('location')).each(function() { From 8941b2fd816e1735dded767e1a166ed292315e54 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 24 Jul 2022 23:12:22 +0000 Subject: [PATCH 8/8] Compile assets --- assets/js/common.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/common.min.js b/assets/js/common.min.js index 170c2d7..fef8326 100644 --- a/assets/js/common.min.js +++ b/assets/js/common.min.js @@ -1 +1 @@ -(function(a){"use strict";hivepress.initGeolocation=function(){container.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),container.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){hivepress.initGeolocation(b)})})(jQuery); \ No newline at end of file +(function(a){"use strict";hivepress.initGeolocation=function(b){b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){hivepress.initGeolocation(b)})})(jQuery); \ No newline at end of file