MapPress Easy Google Maps - Version 2.80.9

Version Description

  • Fixed: array not initiallized for custom props
Download this release

Release Info

Developer chrisvrichardson
Plugin Icon 128x128 MapPress Easy Google Maps
Version 2.80.9
Comparing to
See all releases

Code changes from version 2.77.3 to 2.80.9

build/index_mappress.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={117:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappAutocomplete:()=>m});var n=i(326);const s=wp.element.createElement,{Fragment:o,useCallback:a,useEffect:l,useLayoutEffect:p,useMemo:r,useRef:c,useState:u}=wp.element;function m(e){e={buttonLabel:null,className:"",delay:null,focus:!1,onFetch:null,onSelect:null,placeholder:"",selected:null,suggestions:[],title:"",...e};const t=c(null),i=c(null),[o,a]=u({isOpen:!1,value:""});function p(e){a((t=>({...t,...e})))}(0,n.useClickOutside)(t,(()=>{o.isOpen&&p({isOpen:!1})})),l((()=>{e.focus&&i.current&&i.current.focus()}),[i.current]),l((()=>{o.map&&setMapTypeId(e.mapTypeId)}),[e.mapTypeId,o.map]);const r=(0,n.useDebounce)((t=>{e.onFetch&&e.onFetch(t)}),e.delay);function m(){let t;p({isOpen:!1}),e.suggestions&&(t=null==o.selected?e.suggestions[0]:e.suggestions[o.selected]),e.onSelect({suggestion:t,value:h})}const h=o.selected>=0&&e.suggestions&&e.suggestions[o.selected]?e.suggestions[o.selected].value:o.value;return s("div",{className:"mapp-autocomplete",ref:t},s("div",{className:"mapp-autocomplete-wrapper"},s("input",{className:e.className,onChange:e=>{!function(e){p({value:e,selected:null}),r(e)}(e.target.value)},onKeyDownCapture:t=>function(t){switch(t.stopPropagation(),t.code){case"Backspace":p({isOpen:o.value.length>1});break;case"Enter":m();break;case"Escape":p({isOpen:!1});break;case"ArrowUp":if(t.preventDefault(),e.suggestions&&0!=o.selected){const t=null==o.selected?e.suggestions.length-1:o.selected-1;e.suggestions[t]&&p({isOpen:!0,selected:t})}else p({selected:null});break;case"ArrowDown":if(e.suggestions&&o.selected<e.suggestions.length-1){const t=null==o.selected?0:o.selected+1;e.suggestions[t]&&p({isOpen:!0,selected:t})}else p({selected:null});break;case"Tab":case"AltLeft":case"AltRight":case"ControlLeft":case"ControlRight":case"MetaLeft":case"MetaRight":break;default:p({isOpen:!0})}}(t),placeholder:e.placeholder,ref:i,title:e.title,type:"text",value:h}),o.isOpen&&s("div",{className:"mapp-autocomplete-list"},_.map(e.suggestions,((t,i)=>{const n="mapp-autocomplete-item"+(o.selected==i?" mapp-selected":"");return s("div",{className:n,key:i,onClick:()=>function(t,i){p({isOpen:!1,selected:i}),e.onSelect({suggestion:t})}(t,i)},t.value)})))),e.buttonLabel&&s("div",{className:"mapp-submit-button",onClick:()=>m()},e.buttonLabel))}},715:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappDirections:()=>r});const n=wp.element.createElement,{Fragment:s,useEffect:o,useLayoutEffect:a,useRef:l,useState:p}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function r(e){e={from:null,onClose:null,to:null,...e};const[t,i]=p({from:e.from?e.from:"",to:e.to?e.to:""});function s(e){i((t=>({...t,...e})))}function a(){e.onClose&&e.onClose()}function l(){const e=t.from.trim(),i=t.to.trim();let n=mappl10n.options.directionsServer;n="https://maps.google.com"==n?"https://www.google.com":n,-1==n.toLowerCase().indexOf("http")&&(n="https://"+n),n+="/maps/dir/?api=1&origin="+encodeURIComponent(e)+"&destination="+encodeURIComponent(i),window.open(n),a()}function r(e){13==e?l():27==e&&a()}return o((()=>{"google"==mappl10n.options.directions&&l()}),[]),"google"==mappl10n.options.directions?null:n("div",{className:"mapp-directions-component"},n("div",{className:"mapp-close",onClick:()=>a()}),n("div",null,n("input",{className:"mapp-dir-from",onChange:e=>s({from:e.target.value}),onKeyPress:e=>r(e.which),tabIndex:"1",placeholder:__("My location"),value:t.from}),n("div",{className:"mapp-dir-arrows",onClick:()=>{s({from:t.to,to:t.from})}})),n("div",null,n("input",{className:"mapp-dir-to",onChange:e=>s({to:e.target.value}),onKeyPress:e=>r(e.which),tabIndex:"2",value:t.to})),n("div",{className:"mapp-dir-toolbar"},n("div",{className:"mapp-submit-button",onClick:()=>l()},__("Get Directions"))))}},817:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappFilters:()=>u});var n=i(939),s=i(326);const o=wp.element.createElement,{Fragment:a,useEffect:l,useLayoutEffect:p,useRef:r,useState:c}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),sprintf=wp.i18n.sprintf,u=e=>{e={onFilterChange:null,otype:"post",poiCount:0,...e};const t=(0,s.useDebounce)(e.onFilterChange,500),i=r(null),[a,p]=c({filters:null,formData:{},isBusy:!0,isOpen:!1});function u(e){p((t=>({...t,...e})))}function m(e,i){let n=a.formData[e.key]?a.formData[e.key].values:null;if("checkbox"==e.format){var s;const e=null===(s=n)||void 0===s?void 0:s.indexOf(i);e>-1?n.splice(e,1):(n=n||[],n.push(i))}else n=i?[i]:[];let o={...a.formData};n.length?o[e.key]={key:e.key,values:n,meta_key:e.meta_key,meta_values:e.meta_values}:delete o[e.key],u({formData:o}),t(o)}function h(){u({formData:{}}),t()}function g(e){u({isOpen:e=void 0!==e?e:!a.isOpen})}function d(e){return o("div",{className:"mapp-filter",key:e.key},o("div",{className:"mapp-filter-label"},e.label),o("div",{className:"mapp-filter-values"},function(e){e.key;const t=[...e.values];let i=a.formData[e.key]?a.formData[e.key].values:"";switch(e.format){case"input":return o("input",{type:"text",value:i?i[0]:"",onChange:t=>m(e,t.target.value)});case"checkbox":return _.map(t,(t=>o("label",{key:t.value},o("input",{checked:null==i?void 0:i.includes(t.value),key:t.value,onChange:t=>m(e,t.target.value),type:e.format,value:t.value}),t.iconid&&o("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),o("span",{dangerouslySetInnerHTML:{__html:t.label}}))));case"radio":return"radio"==e.format&&t.unshift({value:"",label:__("All")}),_.map(t,(t=>o("label",{key:t.value},o("input",{checked:i==t.value||""==t.value&&!i,key:t.value,onChange:t=>m(e,t.target.value),type:e.format,value:t.value}),t.iconid&&o("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),o("span",{dangerouslySetInnerHTML:{__html:t.label}}))));case"select":t.unshift({value:"",label:""});const s=_.map(t,(e=>'<option value="'+e.value+'">'+e.label+"</option>"));return o("select",{value:i[0],dangerouslySetInnerHTML:{__html:s},onChange:t=>m(e,t.target.value)})}}(e)))}return(0,s.useClickOutside)(i,(()=>{a.isOpen&&g(!1)})),l((()=>{u({isBusy:!0}),n.mappLib.ajax({data:{action:"mapp_filters_get",nonce:mappl10n.options.nonce,otype:e.otype},callback:e=>{u({isBusy:!1}),e&&"OK"==e.status?u({filters:e.data}):console.error("MapPress: unable to fetch filter data")}})}),[]),o("div",{className:"mapp-filters-component",ref:i},function(){const e="mapp-button mapp-filters-toggle mapp-button-caret"+(a.isBusy?" mapp-button-disabled":"");return o("div",{className:e,onClick:()=>{a.isBusy||g()}},__("Filter"))}(),a.isOpen&&null!==a.filters&&o("div",{className:"mapp-filters-wrapper"},o("div",{className:"mapp-filters-list"},_.map(a.filters,(e=>d(e)))),function(){let t=e.poiCount>1?__("%d Results"):__("%d Result");return t=sprintf(t,e.poiCount),o("div",{className:"mapp-filters-toolbar"},o("div",{className:"mapp-link-button",onClick:h},__("Reset")),o("div",{className:"mapp-filters-count"},t),o("div",{className:"mapp-submit-button",onClick:()=>g(!1)},__("Done")))}()))}},10:(e,t,i)=>{"use strict";i.r(t),i.d(t,{useGeocoding:()=>c});wp.element.createElement;const{Fragment:n,useCallback:s,useEffect:o,useLayoutEffect:a,useRef:l,useState:p}=wp.element,r={google:function(){this.token=null;const e=document.createElement("div");this.placesService=new google.maps.places.PlacesService(e),this.autocompleteService=new google.maps.places.AutocompleteService}};r.google.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken,this.token=null;var n={fields:["formatted_address","name","geometry"],placeId:t.place_id,sessionToken:this.token};this.placesService.getDetails(n,(function(e,t){if("OK"==t&&e&&e.geometry){if(e.geometry.location&&(e.geometry.location=e.geometry.location.toJSON()),e.geometry.viewport){var n=e.geometry.viewport.toJSON();e.geometry.viewport={sw:{lat:n.south,lng:n.west},ne:{lat:n.north,lng:n.east}}}i(e)}else i(null)}))},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&Array.isArray(e)?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,includeBusinesses:n,callback:s}=e;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;var o=t?t.getBounds():null;"leaflet"==mappl10n.options.engine&&(o=new google.maps.LatLngBounds(new google.maps.LatLng(o.getSouthWest().lat,o.getSouthWest().lng),new google.maps.LatLng(o.getNorthEast().lat,o.getNorthEast().lng)));var a={input:i,bounds:o=o||new google.maps.LatLngBounds(new google.maps.LatLng(85,-180),new google.maps.LatLng(-85,180)),sessionToken:this.token,types:n?null:["geocode"]};this.autocompleteService.getPlacePredictions(a,(function(e,t){"OK"==t&&e&&e.length?(e=(e=e.map((e=>(e.value=e.description,e)))).filter((e=>e.place_id)),s(e)):(t==google.maps.places.PlacesServiceStatus.REQUEST_DENIED?alert("Google Maps API Key error: please enable the Places API in the Google Developer Console."):t==google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT&&alert("Google Maps API Key has exceeded its query limit"),s(null))}))}},r.mapbox=function(){},r.mapbox.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e,n=t.place_name,s=n.indexOf(","),o=n.indexOf(",",s+1);s>0&&(n=parseInt(n.substr(0,s))?n.substr(0,o).replace(",",""):n.substr(0,s));let a=t.bbox&&4==t.bbox.length?{sw:{lat:t.bbox[1],lng:t.bbox[0]},ne:{lat:t.bbox[3],lng:t.bbox[2]}}:null;i({formatted_address:t.place_name,name:n,geometry:{location:{lat:t.center[1],lng:t.center[0]},viewport:a}})},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&e.length?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,callback:n}=e;var s="https://api.mapbox.com/geocoding/v5/mapbox.places/"+i+".json?access_token="+mappl10n.options.mapbox;s=mappl10n.options.country?s+"&country="+mappl10n.options.country.toLowerCase():s,s=mappl10n.options.language?s+"&language="+mappl10n.options.language.toLowerCase():s;var o=t?t.getCenter():null;o&&(s+="&proximity="+o.lng+","+o.lat),mappl10n.options.searchBox&&(s+="&bbox="+mappl10n.options.searchBox),fetch(s).then((e=>e.json())).then((e=>{e&&e.features&&e.features.length>0?(e.features=e.features.map((e=>(e.value=e.label=e.place_name,e))),n(e.features)):n(null)}))}},r.nominatim=function(){},r.nominatim.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e,n=t.display_name,s=n.indexOf(","),o=n.indexOf(",",s+1);s>0&&(n=parseInt(n.substr(0,s))?n.substr(0,o).replace(",",""):n.substr(0,s));let a=t.boundingbox&&4==t.boundingbox.length?{sw:{lat:t.boundingbox[0],lng:t.boundingbox[2]},ne:{lat:t.boundingbox[1],lng:t.boundingbox[3]}}:null;i({formatted_address:t.display_name,name:n,geometry:{location:{lat:t.lat,lng:t.lon},viewport:a}})},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&e.length?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,callback:n}=e;var s="https://nominatim.openstreetmap.org/search?format=json&dedupe=1&limit=5&q="+encodeURIComponent(i);if(s=mappl10n.options.country?s+"&countrycodes="+mappl10n.options.country.toLowerCase():s,s=mappl10n.options.language?s+"&accept-language="+mappl10n.options.language.toLowerCase():s,mappl10n.options.searchBox)s+="&viewbox="+mappl10n.options.searchBox,s+="&bounded=1";else{var o=t?t.getMap().getBounds():null;if(o){let e=o.getSouthWest(),t=o.getNorthEast();s+="&viewbox="+e.lng+","+e.lat+","+t.lng+","+t.lat}}fetch(s).then((e=>e.json())).then((e=>{e&&e.length?(e=e.map((e=>(e.value=e.display_name,e))),n(e)):n(null)}))}};const c=e=>{let{includeBusinesses:t}=e;function i(){let e="";return e="leaflet"!=mappl10n.options.engine?"google":mappl10n.options.geocoder?mappl10n.options.geocoder:"nominatim",new r[e]}function n(e,t){navigator&&navigator.geolocation?navigator.geolocation.getCurrentPosition((function(t){var i={lat:t.coords.latitude,lng:t.coords.longitude};e({name:i.lat+", "+i.lng,geometry:{location:i}})}),(function(i){if(!t){var n=i&&i.message?" : "+i.message:"";alert(mappl10n.no_geolocate+n)}e(null)}),{timeout:15e3,enableHighAccuracy:!0,maximumAge:3e4}):alert(mappl10n.no_geolocate)}return{geocode:function(e){let{map:s,suggestion:o,value:a,callback:l}=e;const p=i();a="string"==typeof a?a.trim():a,o||a?function(e){let{map:t,value:i,callback:s}=e;if(!i)return void s(null);if("string"!=typeof i){const e=i.lat&&i.lng?{geometry:{location:{lat:i.lat,lng:i.lng}}}:null;return void s(e)}if("http"==i.substring(0,4))return void s(i);if("user"==i)return void n((function(e){s(e)}));const o=i.split(",");if(2==o.length){const e=parseFloat(o[0]),t=parseFloat(o[1]);if(!isNaN(e)&&!isNaN(t))return void s({name:e+", "+t,geometry:{location:{lat:e,lng:t}}})}s(null)}({map:s,value:a,callback:e=>{e?l(e):o?p.getDetails({suggestion:o,callback:l}):p.getFirstPrediction({map:s,value:a,includeBusinesses:t,callback:l})}}):l(null)},geolocate:n,getPredictions:function(e){let{map:t,value:n,callback:s}=e;i().getPredictions({map:t,value:n,callback:s})}}}},326:(e,t,i)=>{"use strict";i.r(t),i.d(t,{useDebounce:()=>c,useClickOutside:()=>u});wp.element.createElement;const{Fragment:n,useCallback:s,useEffect:o,useLayoutEffect:a,useMemo:l,useRef:p,useState:r}=wp.element;function c(e,t){const i=React.useRef(e);return React.useLayoutEffect((()=>{i.current=e})),React.useMemo((()=>_.debounce((function(){return i.current(...arguments)}),t)),[t])}function u(e,t){const i=i=>{e.current&&!e.current.contains(i.target)&&t()};return document.addEventListener("mousedown",i),document.addEventListener("touchstart",i),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i)}}},939:(e,t,i)=>{"use strict";i.r(t),i.d(t,{mappLib:()=>c});wp.element.createElement;const{Fragment:n,useCallback:s,useEffect:o,useLayoutEffect:a,useMemo:l,useRef:p,useState:r}=wp.element,c={ajax:function(e){const t={callback:null,data:null,dataType:"json",silent:!1,type:"GET",url:mappl10n.options.ajaxurl,success:function(t,i,n){"json"==e.dataType&&e.url==mappl10n.options.ajaxurl&&"OK"!=t.status&&c.alert(t.status),"json"==e.dataType&&t.output?c.alert("AJAX Invalid Output\r\n"+t.output):e.callback&&e.callback(t,n)},error:function(t,i,n){"cancel"!=i&&(void 0!==n&&""!=n&&c.alert("AJAX ERROR\r\nTextStatus="+i+"\r\nError="+n+"\r\nResponseText="+t.responseText),e.callback&&e.callback(null))}};return e={...t,...e},jQuery.ajax(e)},alert:function(e){mappl10n.options.admin||mappl10n.options.debug?alert(e):window.console&&console.error(e)},getIcon:function(e){{const t=this.getIconUrl(e);return"leaflet"==mappl10n.options.engine?L.icon({iconUrl:t,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:t}}},getIconUrl:function(e){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"},nanoid:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;const t="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let i="",n=e;for(;n--;)i+=t[64*Math.random()|0];return i},template:function(e,t){if(c.templates=c.templates?c.templates:{},!c.templates[e]){var i=document.getElementById("mapp-tmpl-"+e).innerHTML;if(!i)return"";c.templates[e]=_.template(i,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return c.templates[e](t)}};"leaflet"==mappl10n.options.engine&&"undefined"!=typeof L&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(1e6*this.lat)/1e6+", "+Math.round(1e6*this.lng)/1e6})},374:()=>{window.mapp=window.mapp||{},jQuery,mapp.load=function(){if("undefined"!=typeof mapp&&mapp.data)for(;mapp.data.length;){var e=mapp.data.pop();window[e.name]=new mapp.Map(e),window[e.name].display()}},mapp.load()},602:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappMenuControl:()=>c});var n=i(326);const s=wp.element.createElement,{Fragment:o,useEffect:a,useLayoutEffect:l,useRef:p,useState:r}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function c(e){e={layer:null,map:null,onCenter:null,...e};const[t,i]=r({activeLayer:e.layer?e.layer:null,layers:null,isOpen:!1}),l=p(null);function c(e){i((t=>({...t,...e})))}function u(){c({isOpen:!t.isOpen})}return(0,n.useClickOutside)(l,(()=>{t.isOpen&&u()})),a((()=>{if("google"==mappl10n.options.engine){c({layers:{traffic:{googleLayer:new google.maps.TrafficLayer,label:__("Traffic")},bicycling:{googleLayer:new google.maps.BicyclingLayer,label:__("Bicycling")},transit:{googleLayer:new google.maps.TransitLayer,label:__("Transit")}}})}}),[]),s("div",{ref:l},s("div",{className:"mapp-menu-toggle",onClick:()=>u()}),t.isOpen&&function(){const i=_.map(t.layers,((i,n)=>{const o=t.activeLayer==n?"mapp-menu-item mapp-active":"mapp-menu-item";return s("div",{className:o,key:n,onClick:()=>function(i){t.activeLayer&&t.layers[t.activeLayer].googleLayer.setMap(null),i!=t.activeLayer&&t.layers[i].googleLayer.setMap(e.map.getMap()),c({activeLayer:i==t.activeLayer?null:i,isOpen:!1})}(n)},i.label)}));return s("div",{className:"mapp-menu-component",style:{display:"flex"}},s("div",{className:"mapp-menu-item",onClick:()=>(c({isOpen:!1}),void e.onCenter())},__("Center map")),"google"==mappl10n.options.engine&&s(o,null,s("div",{className:"mapp-menu-separator"}),i),s("div",{className:"mapp-menu-footer"},s("a",{className:"mapp-menu-help-link",href:"https://mappresspro.com/mappress-documentation",target:"_blank"},s("span",null,__("Help")))))}())}},27:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPaginate:()=>r});const n=wp.element.createElement,{Fragment:s,useEffect:o,useLayoutEffect:a,useRef:l,useState:p}=wp.element,{sprintf}=wp.i18n;function r(e){function t(t,i){const n=Math.ceil(e.count/e.pageSize);switch(t){case"first":e.onChange(1);break;case"last":e.onChange(n);break;case"next":e.page<n&&e.onChange(e.page+1);break;case"prev":e.page>1&&e.onChange(e.page-1)}}return function(){const i=Math.ceil(e.count/e.pageSize),s=e.isBusy||e.page<=1,o=e.isBusy||e.page>=i,a=s?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",l=o?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",p=(r="%d of %d",wp.i18n.__(r,"mappress-google-maps-for-wordpress"));var r;return n("div",{className:"mapp-paginate"},n("div",{className:a,onClick:()=>{s||t("first")}},"«"),n("div",{className:a,onClick:()=>{s||t("prev")}},"‹"),n("div",{className:"mapp-paginate-count"},sprintf(p,e.page,i)),n("div",{className:l,onClick:()=>{o||t("next")}},"›"),n("div",{className:l,onClick:()=>{o||t("last")}},"»"))}()}},818:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPlaces:()=>m});var n=i(117),s=i(10);const o=wp.element.createElement,{Fragment:a,useCallback:l,useEffect:p,useLayoutEffect:r,useRef:c,useState:u}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function m(e){e={buttonLabel:null,focus:!1,includeBusinesses:!1,map:null,onSearch:null,...e};const{geocode:t,getPredictions:i}=(0,s.useGeocoding)({map:e.map,includeBusinesses:e.includeBusinesses}),[a,l]=u({suggestions:[]});return o(n.MappAutocomplete,{buttonLabel:e.buttonLabel,className:"mapp-places",debounce:"nominatim"===mappl10n.options.geocoder?500:300,delay:"nominatim"==mappl10n.options.geocoder?500:50,focus:e.focus,onFetch:function(t){i({map:e.map,value:t,callback:e=>{var t;t={suggestions:e},l((e=>({...e,...t})))}})},onSelect:function(i){let{suggestion:n,value:s}=i;t({map:e.map,suggestion:n,value:s,callback:t=>{t&&e.onSearch(t)}})},placeholder:__("Search"),suggestions:a.suggestions,title:__("Enter an address, place, KML file URL, or lat,lng")})}},50:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPoiContent:()=>u});var n=i(939);const s=wp.element.createElement,{Fragment:o,useEffect:a,useLayoutEffect:l,useMemo:p,useRef:r,useState:c}=wp.element;wp.i18n.sprintf;function u(e){e={context:null,feature:null,onDirectionsClick:null,poi:null,template:null,thumbs:null,...e};const[t,i]=c({imageNumber:0});function a(e){i((t=>({...t,...e})))}return s(o,null,function(){const i="list"!=e.context&&mappl10n.options.thumbWidth&&mappl10n.options.thumbHeight?{width:mappl10n.options.thumbWidth+"px",height:mappl10n.options.thumbHeight+"px"}:null,n=e.thumbs&&e.poi.images&&e.poi.images.length&&e.poi.images[t.imageNumber]?e.poi.images[t.imageNumber]:null;if(!n)return null;const o=function(e){switch(e.type){case"avatar":return s("div",{className:"mapp-avatar",dangerouslySetInnerHTML:{__html:e.html}});case"embed":return s("div",{className:"mapp-embed",dangerouslySetInnerHTML:{__html:e.html}});default:if("image"==e.type||!e.type)return s("img",{src:e.url})}}(n);return s("div",{className:"mapp-thumbnail",style:i},t.imageNumber>=1&&s("div",{className:"mapp-gallery-previous",onClick:e=>function(e){t.imageNumber>0&&(a({imageNumber:t.imageNumber-1}),e.stopPropagation())}(e)}),o,t.imageNumber<e.poi.images.length-1&&s("div",{className:"mapp-gallery-next",onClick:i=>function(i){t.imageNumber<e.poi.images.length-1&&(a({imageNumber:t.imageNumber+1}),i.stopPropagation())}(i)}))}(),s("div",{className:"mapp-info"},function(){let t={...e.poi};t.icon=n.mappLib.getIconUrl(e.poi.iconid),e.feature&&(t.body=e.feature.description,t.title=e.feature.name);const i=n.mappLib.template(e.template,{poi:t});return s("div",{className:"mapp-template",dangerouslySetInnerHTML:{__html:i}})}(),function(){if(mappl10n.options.directionsPopup&&("map-popup"==e.template||"mashup-popup"==e.template))return s("div",{className:"mapp-dir",onClick:()=>e.onDirectionsClick()},(t="Get Directions",wp.i18n.__(t,"mappress-google-maps-for-wordpress")));var t}()))}},615:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPoiList:()=>h});var n=i(939),s=i(27),o=i(50);const a=wp.element.createElement,{Fragment:l,useEffect:p,useLayoutEffect:r,useMemo:c,useRef:u,useState:m}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),sprintf=wp.i18n.sprintf;const h=wp.element.memo((function(e){e={bounds:null,className:null,hoveredPoi:null,isEditable:!1,isPaged:!1,onClick:null,onDragDrop:null,onHover:null,onPage:null,openPoi:null,page:1,pois:null,template:null,...e};const[t,i]=m({dragging:null,dragover:null,pageSize:mappl10n.options.poiListPageSize?parseInt(mappl10n.options.poiListPageSize):20});function p(e){i((t=>({...t,...e})))}function r(i){let s,r="mapp-item";return e.openPoi!=i.id&&e.hoveredPoi!=i.id||(r+=" mapp-selected"),r+=t.dragover==i.id?" mapp-dragover":"",s=e.isEditable?a(l,null,a("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(i.iconid)}),a("div",{className:"mapp-title"},i.title)):a(o.MappPoiContent,{context:"list",poi:i,template:e.template,thumbs:mappl10n.options.thumbsList}),a("div",{className:r,dangerouslySetInnerHTML:null,draggable:e.isEditable,key:i.id,onClick:()=>e.onClick(i.id),onDragOver:e=>e.preventDefault(),onDragStart:e=>p({dragging:i.id}),onDragEnter:e=>p({dragover:i.id}),onDragEnd:e=>p({dragging:null,dragover:null}),onDrop:n=>{return s=i.id,void(e.onDragDrop&&e.onDragDrop({from:t.dragging,to:s}));var s},onMouseEnter:t=>{e.onHover(i.id)},onMouseLeave:t=>{e.onHover(null)}},s)}return a("div",{className:e.className},e.isPaged&&function(){let t=1!=e.pois.length?__("%d Results"):__("%d Result");return t=sprintf(t,e.pois.length),a("div",{className:"mapp-list-header"},a("div",{className:"mapp-list-count"},t))}(),function(){const i=t.pageSize*(e.page-1),n=i+t.pageSize;return a("div",{className:"mapp-items"},_.map(e.pois,((e,t)=>{if(t>=i&&t<=n)return r(e)})))}(),e.isPaged&&(e.pois.length<=t.pageSize?null:a("div",{className:"mapp-list-footer"},a(s.MappPaginate,{count:e.pois.length,onChange:t=>e.onPage(t),page:e.page,pageSize:t.pageSize}))))}))},892:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPopupModal:()=>u});var n=i(939);const s=wp.element.createElement,o=wp.element.createPortal,{Fragment:a,useEffect:l,useLayoutEffect:p,useRef:r,useState:c}=wp.element;function u(e){e={onClose:null,poi:null,...e};const[t,i]=c({isBusy:!1,html:null});function a(e){i((t=>({...t,...e})))}const p=React.createRef();function r(t){27==t.keyCode&&e.onClose()}return l((()=>(document.body.classList.add("mapp-modal-noscroll"),()=>document.body.classList.remove("mapp-modal-noscroll"))),[]),l((()=>{e.poi.postid&&(a({isBusy:!0}),n.mappLib.ajax({data:{action:"mapp_get_post",postid:e.poi.postid,nonce:mappl10n.options.nonce},dataType:"HTML",type:"GET",success:e=>{a({isBusy:!1,html:e})}}))}),[e.poi.postid]),l((()=>{p.current&&p.current.focus(),console.log("focus"+document.activeElement)}),[p.current]),o(s("div",{className:"mapp-modal"},s("div",{className:"mapp-modal-backdrop",onClick:e.onClose,onKeyDown:r},s("div",{className:"mapp-modal-close",onClick:e.onClose},"×")),s("div",{className:"mapp-modal-content-wrapper",ref:p,onKeyDown:r,tabIndex:0},s("div",{className:"mapp-modal-content"},t.isBusy&&s("div",{className:"mapp-modal-spinner"}),!t.isBusy&&s("div",{className:"mapp-modal-template",dangerouslySetInnerHTML:{__html:t.html}}),s("div",{className:"mapp-modal-close",onClick:e.onClose},"X")))),document.body)}},854:(e,t,i)=>{"use strict";i.r(t);var n=i(715),s=i(817),o=i(939),a=i(602),l=i(818),p=i(50),r=i(615),c=i(892),u=i(10);window.mapp=window.mapp||{};const m=wp.element.createElement,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");wp.i18n._n;var h;h=jQuery,mapp.Map=function(e,t){this.defaults={alignment:null,center:null,classname:null,embed:null,height:null,initialOpenInfo:null,isEditable:null,layers:null,layout:null,lines:null,mapid:null,mapTypeId:null,metaKey:null,mapOpts:null,name:null,onDrawingEvent:null,onPoiClose:null,onPoiOpen:null,onSearch:null,poiList:null,poiListOpen:null,poiListPageSize:null,pois:null,postid:null,query:null,search:null,sel:null,title:null,width:null,zoom:null},this.drawingManager=null,this.filters=null,this.hovered=null,this.isFullscreen=!1,this.iw=null,this.mapdata=e,this.opened=null,this.pagination={count:0,page:1},this.polyline=null,this.settings=t||{},this.templates=null,this.clusterer=null,this.dir_=null,this.div={},this.layers_={},this.map_=null,this.pois_=[],this.user_=null,this.xhr_,_.extend(this,this.defaults,this.mapdata,this.settings),this.poiList=void 0!==this.poiList&&null!=this.poiList?this.poiList:mappl10n.options.poiList,this.layout=this.layout?this.layout:mappl10n.options.layout,this.postid=this.postid?this.postid:mappl10n.options.postid},mapp.Map.prototype={display:function(){const{geocode:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});if(this.render(),!this.div||!this.div.layout)return;if(this.sanity(),this.query?this.templates={item:"mashup-item",popup:"mashup-popup"}:this.templates={item:"map-item",popup:"map-popup"},"leaflet"==mappl10n.options.engine?this.mapOpts=_.extend({attribution:'Map data <a href="https://openstreetmap.org">OpenStreetMap</a>',minZoom:0,scrollWheelZoom:mappl10n.options.scrollWheel,worldCopyJump:!0,zoomControl:null},this.mapOpts):this.mapOpts=_.extend({backgroundColor:"transparent",clickableIcons:!1,fullscreenControl:!1,mapTypeControl:!1,minZoom:0,scaleControl:!0,streetViewControl:!this.query,streetViewControlOptions:{position:google.maps.ControlPosition.LEFT_BOTTOM}},this.mapOpts),this.mapOpts.minZoom=isNaN(parseInt(this.mapOpts.minZoom))?0:parseInt(this.mapOpts.minZoom),!this.div||!this.div.canvas)return;"leaflet"==mappl10n.options.engine?(this.map_=new L.Map(this.div.canvas.get(0),this.mapOpts),L.control.zoom({position:"bottomright",zoomInTitle:"",zoomOutTitle:""}).addTo(this.map_)):(this.map_=new google.maps.Map(this.div.canvas.get(0),{mapTypeId:"roadmap",zoom:1}),this.map_.setOptions(this.mapOpts),this.addLayers()),this.addGeolocateControl(),this.addMenu(),this.addPopup(),this.isFilterable()&&this.renderFilters(),this.setMapTypeId(this.mapTypeId),this.clustering(),this.addDrawingManager();const t=h(".mapp-search-container",this.div.layout);t.length&&wp.element.render(m(l.MappPlaces,{buttonLabel:this.isEditable?__("Add to map"):m("img",{src:mappl10n.options.baseurl+"/images/search.png"}),focus:this.isEditable,includeBusinesses:this.isEditable,map:this,onSearch:e=>{this.onSearch?this.onSearch(e):this.doSearch(e)}}),t.get(0)),this.addUserLocation(),this.addEvents("click dragstart zoom_changed zoomstart",(e=>{"leaflet"==mappl10n.options.engine&&"click"==e.type&&e.originalEvent&&!e.originalEvent.target.matches(".mapp-canvas")||this.poiClose()})),this.div.layout.on("click","[data-mapp-action]",(e=>{const t=h(e.currentTarget),i=t.attr("data-mapp-action"),n=t.attr("data-mapp-"+i);e.preventDefault(),this.onAction(i,n,t)})),new ResizeObserver(((e,t)=>{this.toggleView("mini"),this.resize()})).observe(this.div.layout.get(0)),e({map:null,value:this.center,callback:e=>{this.center=e&&e.geometry&&e.geometry.location?{lat:e.geometry.location.lat,lng:e.geometry.location.lng}:null,this.setPois(this.pois),this.initCenter()}})},initCenter:function(){setTimeout((()=>{this.recenter(),this.renderList(),this.isSearchable&&!this.isEditable&&this.addSearchMove(),"leaflet"==mappl10n.options.engine?this.initOpen():mapp.event.addListenerOnce(this.map_,"idle",(()=>this.initOpen()))}),100)},initOpen:function(){const e=this.pois_.length?this.pois_[0]:null,t=null!=this.initialOpenInfo?this.initialOpenInfo:mappl10n.options.initialOpenInfo;e&&t&&!this.isEditable&&this.poiOpen(e)},addDrawingManager:function(){if(this.isEditable&&"google"==mappl10n.options.engine&&google.maps.drawing){const e={fillColor:"#0000FF",fillOpacity:.4,strokeColor:"#0000FF",strokeOpacity:1,strokeWeight:2};this.drawingManager=new google.maps.drawing.DrawingManager({drawingControlOptions:{position:google.maps.ControlPosition.TOP_CENTER,drawingModes:[google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYGON,google.maps.drawing.OverlayType.POLYLINE,google.maps.drawing.OverlayType.RECTANGLE,google.maps.drawing.OverlayType.CIRCLE]},circleOptions:e,polygonOptions:e,polylineOptions:e,rectangleOptions:e}),this.drawingManager.setMap(this.map_),mapp.event.addListener(this.drawingManager,"overlaycomplete",(e=>{this.drawingManager.setDrawingMode(null),this.poiHover(null),this.onDrawingEvent&&this.onDrawingEvent(e)}))}},addEvents:function(e,t){e=e.split(" ");for(var i=0;i<e.length;i++)mapp.event.addListener(this.map_,e[i],t)},addGeolocateControl:function(){if(!mappl10n.options.ssl)return;const e=h(".mapp-geolocate-control-wrapper",this.div.layout).get(0);"google"==mappl10n.options.engine?this.map_.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(e):(L.Control.Geolocate=L.Control.extend({onAdd:t=>e,onRemove:()=>{}}),new L.Control.Geolocate({position:"bottomright"}).addTo(this.map_))},addLayers:function(){this.layers_={traffic:new google.maps.TrafficLayer,bicycling:new google.maps.BicyclingLayer,transit:new google.maps.TransitLayer};for(var e=h.makeArray(this.layers),t=0;t<e.length;t++){var i=e[t].trim(),n=i.split(".").pop();this.layers_[i]?this.toggleLayer(i):"kml"==n||"kmz"==n?this.layers_[i]=new google.maps.KmlLayer({map:this.map_,preserveViewport:!0,url:i}):"json"==n&&(this.layers_[i]=new google.maps.Data({map:this.map_}).loadGeoJson(i))}},addMenu:function(){this.isEditable||"leaflet"==mappl10n.options.engine||wp.element.render(m(a.MappMenuControl,{map:this,onCenter:()=>{this.poiClose(),this.recenter()}}),this.div.menu.get(0))},addPopup:function(){var e=this.isEditable?"mapp-iw-edit":"mapp-iw";this.isEditable||(e+=" mapp-"+this.templates.popup),this.div.iw=h('<div class="'+e+'">').appendTo(this.div.canvas),this.iw=new mapp.Infobox(this.map_,{className:this.isEditable?"mapp-ib-edit":""}),this.iw.setContent(this.div.iw.get(0)),this.div.iw.on("click",".mapp-close",(()=>{this.poiClose()}))},addSearchMove:function(){},addUserLocation:function(){const{geolocate:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});mappl10n.options.userLocation&&mappl10n.options.ssl&&e((e=>{if(e&&e.geometry&&e.geometry.location){const t=e.geometry.location,i=o.mappLib.getIcon("geolocation");"leaflet"==mappl10n.options.engine?this.user_=L.marker([t.lat,t.lng],{icon:i}).addTo(this.map_):(this.user_=new mapp.Marker({icon:i,position:new google.maps.LatLng(t.lat,t.lng)}),this.user_.setMap(this.map_))}}),!0)},clusterGetLatLng:function(e){if(this.clusterer){if("leaflet"==mappl10n.options.engine){var t=this.clusterer.getVisibleParent(e.overlay);return t?t.getLatLng():null}for(var i=this.clusterer.getClusters(),n=0;n<i.length;n++){var s=i[n].markers_;if(s.length>1)for(var o=0;o<s.length;o++)if(s[o]==e.overlay)return i[n].center_}}},clustering:function(){if(mappl10n.options.clustering&&!this.isEditable){let e=mappl10n.options.clusteringOptions?mappl10n.options.clusteringOptions:{};void 0!==e.disableClusteringAtZoom&&""==e.disableClusteringAtZoom&&(e.disableClusteringAtZoom=null),"leaflet"==mappl10n.options.engine?this.clusterer=L.markerClusterGroup(e):(e=_.extend(e,{imagePath:mappl10n.options.baseurl+"/lib/js-markerclustererplus-main/images/m"}),this.clusterer=new MarkerClusterer(this.map_,[],e))}},clustersReset:function(){this.clusterer&&("leaflet"==mappl10n.options.engine?this.clusterer.clearLayers():this.clusterer.clearMarkers())},clustersSet:function(){if(this.clusterer){var e=[];for(let t=0;t<this.pois_.length;t++)this.pois_[t].type||e.push(this.pois_[t].overlay);"leaflet"==mappl10n.options.engine?(this.clusterer.addLayers(e),this.map_.addLayer(this.clusterer)):this.clusterer.addMarkers(e)}},fetchPois:function(e){var t=new Date;this.poiClose();var i={action:"mapp_query",debug:mappl10n.options.debug,filters:this.filters,query:this.query,url:{href:window.location.href,search:window.location.search}};this.spinner(!0),this.pagination.page=1,o.mappLib.ajax({data:i,callback:(i,n)=>{this.spinner(!1),i&&"OK"==i.status&&(this.setPois(i.data.pois),this.renderList(),mappl10n.options.debug&&console.log("Results: "+i.data.pois.length+" ("+n.responseText.length/1e3+"K) AJAX: "+(new Date-t)+(i.data.timing?i.data.timing:"")),e&&e())}})},fitBounds:function(e){return this.map_.fitBounds(e)},getBounds:function(){try{return this.map_.getBounds()}catch(e){return null}},getCenter:function(){try{return this.map_.getCenter()}catch(e){return null}},getMap:function(){return this.map_},getPois:function(){return this.pois_},getZoom:function(){try{return this.map_.getZoom()}catch(e){return null}},isFilterable:function(){return mappl10n.options.pro&&mappl10n.options.filters&&mappl10n.options.filters.length>0&&!this.isEditable&&this.query},isSearchable:function(){return!!this.isEditable},onAction:function(e,t,i){switch(e){case"geolocate":const{geolocate:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});e((e=>{e&&e.geometry&&e.geometry.location&&this.setView(e.geometry.location,parseInt(mappl10n.options.poiZoom))}),!1);break;case"sidebar-toggle":this.toggleSidebar();break;case"view-map":this.toggleSidebar(!1);break;case"view-list":this.toggleSidebar(!0);break;default:return!0}},doSearch:function(e){if(e&&e.geometry){var t=e.geometry.location?e.geometry.location:null,i=e.geometry.viewport?e.geometry.viewport:null;if("leaflet"==mappl10n.options.engine)var n=new L.LatLng(t.lat,t.lng),s=i?new L.LatLngBounds(new L.LatLng(i.sw.lat,i.sw.lng),new L.LatLng(i.ne.lat,i.ne.lng)):n.toBounds(1e3*mappl10n.options.radius);else{var o=new google.maps.Circle({center:t,radius:1e3*mappl10n.options.radius});s=i?new google.maps.LatLngBounds(new google.maps.LatLng(i.sw.lat,i.sw.lng),new google.maps.LatLng(i.ne.lat,i.ne.lng)).union(o.getBounds()):o.getBounds()}s&&this.fitBounds(s),this.setView(t)}},poiClick:function(e,t){if(this.poiClose(),"poi"!=mappl10n.options.mashupClick&&this.query&&e.postid&&e.url&&!this.isEditable)switch(mappl10n.options.mashupClick){case"post":return void window.location.assign(e.url);case"postnew":return void window.open(e.url);case"postmodal":const t=document.createElement("div");return document.body.appendChild(t),wp.element.render(m(c.MappPopupModal,{onClose:()=>{wp.element.unmountComponentAtNode(t),t.remove()},poi:e}),t)}else this.poiOpen(e,t)},poiClose:function(){this.opened&&this.poiHighlight(this.opened,!1),this.opened=null,wp.element.unmountComponentAtNode(this.div.iw.get(0)),this.iw.close(),this.renderDirections({isOpen:!1}),this.renderList(),this.onPoiClose&&this.onPoiClose()},poiHighlight:function(e,t){"icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.isEditable||(t?e.highlight(!0):e.highlight(!1))},poiHover:function(e){e&&this.opened==e||(this.hovered&&this.hovered!=this.opened&&(this.poiHighlight(this.hovered,!1),this.hovered=null),e&&(this.hovered=e,this.poiHighlight(this.hovered,!0),mappl10n.options.tooltips&&!this.isEditable?(this.poiClose(),this.poiOpen(e,null,"popup")):this.poiHighlight(e,!0)),this.renderList())},poiInsert:function(e){this.pois_.unshift(e),e.setMap(this),this.renderList()},poiOpen:function(e,t){this.poiClose(),this.div.layout.hasClass("mapp-view-mini")&&this.toggleSidebar(!1),this.popupOpen(e,t,"popup"),this.poiHighlight(e,!0),this.onPoiOpen&&this.onPoiOpen(e)},poiRemove:function(e){var t=h.inArray(e,this.pois_);-1!=t&&(this.pois_[t].setMap(null),this.pois_.splice(t,1),this.renderList())},popupClose:function(){"icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.isEditable||(this.iw.close(),this.renderDirections({isOpen:!1}),h(this).triggerHandler("mapp.close"))},popupOpen:function(e,t){let i=null;this.popupClose(),t&&t.featureData?i=t.featureData:t&&t.propagatedFrom&&t.propagatedFrom.feature&&t.propagatedFrom.feature.properties&&(i=t.propagatedFrom.feature.properties),this.isEditable||(wp.element.render(m(p.MappPoiContent,{feature:i,onDirectionsClick:()=>this.renderDirections({isOpen:!0,from:null,to:e}),poi:e,template:this.templates.popup,thumbs:mappl10n.options.thumbsPopup}),this.div.iw.get(0)),e.images&&e.images.length&&this.div.iw.addClass(" mapp-thumb-"+mappl10n.options.thumbsPopup));var n=this.clusterGetLatLng(e),s=n||e.getPosition(t);this.iw.open({position:s,anchorPoint:e.getAnchorPoint(t)}),this.opened=e},recenter:function(){var e=this.center&&this.center.hasOwnProperty("lat")&&this.center.hasOwnProperty("lng")?this.center:null,t=this.zoom&&parseInt(this.zoom)?parseInt(this.zoom):null;if(e&&!t&&this.query)return void this.doSearch({geometry:{location:{lat:e.lat,lng:e.lng}}});if(e)return void this.setView(e,t||1);if(0==this.pois_.length)return void this.setView({lat:0,lng:0},t||1);if(1==this.pois_.length)return void this.pois_[0].center(t);let i="leaflet"==mappl10n.options.engine?new L.LatLngBounds:new google.maps.LatLngBounds;for(var n=0;n<this.pois_.length;n++){var s=this.pois_[n].getBounds(),o=this.pois_[n].getPosition();i=s?"leaflet"==mappl10n.options.engine?i.extend(s):i.union(s):i.extend(o)}t?this.setView(i.getCenter().toJSON(),t):this.fitBounds(i)},render:function(){let e=this.name?this.name+"-layout":"",t="mapp-layout",i=this.layout&&window.parent==window?this.layout:"left";if(t+="left"==i?" mapp-list-left":" mapp-inline",t+="leaflet"==mappl10n.options.engine?" mapp-leaflet ":" mapp-google ",t+=this.classname?" "+this.classname:"",!document.body.classList.contains("block-editor-page")){let e=this.alignment?this.alignment:mappl10n.options.alignment;if(e){let i=" align"+e+" mapp-align-"+e;window.parent==window?t+=i:h(window.frameElement).parent().parent().addClass(i)}}var n=o.mappLib.template("map",{map:this,layout:i});if(this.sel){if(this.div.layout=h(this.sel),this.div.layout.html(n),this.div.layout.addClass(t),this.div.layout.attr("id",e),!this.div.layout.length)return console.log("MapPress: Missing map name or container for map: "+this.name)}else{let i=h('<div id="'+e+'" class="'+t+'">');i.html(n);let s=h("#"+this.name+"-layout");if(!s.length)return console.log("MapPress: Missing map name or container for map: "+this.name);s.replaceWith(i),this.div.layout=i}h.each(["canvas","content","controls","directions","filters","header","list","menu","search","sidebar","wrapper"],((e,t)=>{this.div[t]=h(".mapp-"+t,this.div.layout)})),this.setSize({width:this.width,height:this.height}),this.set({poiList:this.poiList})},renderDirections:function(e){let{isOpen:t,from:i,to:s}=e;if(this.toggleView("directions",t),t){const e=s?s.getAddress():"",t=i?i.getAddress():"";wp.element.render(m(n.MappDirections,{from:t,to:e,onClose:()=>{wp.element.unmountComponentAtNode(this.div.directions.get(0)),this.toggleView("directions",!1)}}),this.div.directions.get(0))}else this.div.directions.length&&wp.element.unmountComponentAtNode(this.div.directions.get(0))},renderFilters:function(){this.div.filters&&this.div.filters.length&&wp.element.render(m(s.MappFilters,{onFilterChange:e=>{this.filters=e,this.fetchPois()},poiCount:this.pagination.count}),this.div.filters.get(0))},renderList:function(){let e=[];if(!this.poiList)return;if(e=this.pois_,this.isSearchable()&&!this.isEditable){e=[];let t=this.getBounds();t&&_.map(this.pois_,((i,n)=>{t.contains(i.getPosition())&&e.push(i)}))}this.pagination.count!=e.length&&(this.pagination.count=e.length,this.renderFilters());let t="mapp-list-component";!this.isEditable&&mappl10n.options.thumbsList&&(t+=" mapp-thumb-"+mappl10n.options.thumbsList);const i=e=>this.pois_.find((t=>t.id==e)),n=(e,t)=>{let i=_.findIndex(this.pois_,(t=>t.id==e)),n=_.findIndex(this.pois_,(e=>e.id==t));this.pois_.splice(n,0,this.pois_.splice(i,1)[0])};wp.element.render(m(r.MappPoiList,{bounds:this.getBounds(),className:t,hoveredPoi:this.hovered?this.hovered.id:null,isEditable:this.isEditable,isPaged:!0,map:this,onClick:e=>this.poiClick(i(e)),onDragDrop:e=>{let{from:t,to:i}=e;return n(t,i)},onHover:e=>this.poiHover(i(e)),onPage:e=>{this.pagination.page=e,this.renderList()},onSort:e=>{this.pois_=e,this.renderList()},openPoi:this.opened?this.opened.id:null,page:this.pagination.page,pois:e,template:this.isEditable?null:this.templates.item}),this.div.list.get(0))},resetPois:function(){for(var e=0;e<this.pois_.length;e++)this.pois_[e].setMap(null);this.pois_=[],this.clustersReset()},resize:function(){this.map_&&("leaflet"==mappl10n.options.engine?this.map_.invalidateSize():mapp.event.trigger(this.map_,"resize"),this.toggleView("mini"))},sanity:function(){const e="<a href='"+mappl10n.options.adminurl+"/admin.php?page=mappress'>"+__("MapPress Settings")+"</a>",t="<a href ='http://mappresspro.com/mappress-faq' target='_blank'>"+__("MapPress FAQ")+"</a>",i="<a href='http://mappresspro.com/chris-contact', target='_blank'>"+__("contact support")+"</a>",n="<br/>"+sprintf(__("Please see the %s for help, or %s and provide this error message."),t,i),s=sprintf("<div class='mapp-errors-toolbar'><div class='mapp-errors-apikey'>%s</a></div>",__("Get an API Key"));this.div.layout.on("click",".mapp-errors-apikey",(()=>{window.open("https://mappresspro.com/how-to-get-a-google-maps-api-key")}));let o=[{condition:"leaflet"==mappl10n.options.engine&&"undefined"==typeof L,title:__("Leaflet library not loaded"),text:__("A theme or plugin is preventing the Leaflet library from loading.")+n},{condition:"google"==mappl10n.options.engine&&"undefined"==typeof google,title:__("Google Maps API not loaded"),text:__("A theme or plugin is preventing Google Maps from loading.")+n},{condition:"google"==mappl10n.options.engine&&!mappl10n.options.apikey,title:__("Google Maps API key required"),text:sprintf(__("Please enter a Google Maps API key in the %s, or switch to Leaflet maps."),e)+s},{condition:h('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1,title:__("Google Maps API loaded multiple times"),text:__("A theme or plugin has loaded Google Maps twice")+n},{condition:"undefined"==typeof _,title:__("Underscore library not loaded"),text:__("A theme or plugin is preventing the underscore.js library from loading.")+n}];_.map(o,(e=>{if(e.condition){mappl10n.options.admin&&this.sanityOutput({title:e.title,text:e.text?e.text:""});let t=jQuery("<span>"+e.text.replace("<br/>","\n")+"</span>").text();console.error(__("Map error")+": "+e.title+" - "+t)}}))},sanityOutput(e){if(!h(".mapp-errors-overlay",this.div.content).length){let e="<div class='mapp-errors-overlay'></div><div class='mapp-errors'><div class='mapp-errors-header'>"+__("Oops! Something went wrong.")+"</div><div class='mapp-errors-list'></div></div>";this.div.content.prepend(e)}h(".mapp-errors-list",this.div.content).append("<div class='mapp-errors-title'>"+e.title+"</div><div class='mapp-errors-text'>"+e.text+"</div>")},set:function(e){for(let i in e){var t=e[i];switch(i){case"mapTypeId":this.mapTypeId=t,this.setMapTypeId(t);break;case"poiList":this.poiList=null==t?mappl10n.options.poiList:t,this.toggleSidebar(mappl10n.options.poiListOpen),this.toggleView("mini");break;case"search":this.search=t;break;case"style":this.setStyle(t);break;case"title":this.title=t;break;default:this[i]=t}}},setMapTypeId:function(e){const t=mappl10n.options.standardStyles.concat(mappl10n.options.userStyles),i=_.find(t,(t=>t.id==e));!mappl10n.options.style||"roadmap"!=e&&"streets"!=e&&i||(e=mappl10n.options.style);let n=_.find(t,(t=>t.id==e));n=n||t[0],this.setStyle(n)},setPois:function(e){if(this.resetPois(),e)for(var t=0;t<e.length;t++){var i=new mapp.Poi(e[t]);this.pois_.push(i),i.setMap(this)}this.clustersSet(),this.setLines()},setSize:function(e){var t=mappl10n.options.sizes[mappl10n.options.size]?mappl10n.options.sizes[mappl10n.options.size]:mappl10n.options.sizes[0];let i={},n={};if(e&&e.hasOwnProperty("width")&&(i={width:e.width?e.width:t.width}),e&&e.hasOwnProperty("height")){let i=e.height?e.height:t.height;n="string"==typeof i&&i.includes("%")?{"padding-bottom":i,height:"auto"}:{"padding-bottom":0,height:i}}window.frameElement&&window.frameElement.classList.contains("mapp-iframe")?(h(window.frameElement).parent().parent().css(i),h(window.frameElement).parent().css(n)):this.embed?(i={height:"100%"},n={"padding-bottom":0,height:"100%"}):(this.div.layout.css(i),this.div.wrapper.css(n)),this.resize()},setStyle:function(e){if("leaflet"==mappl10n.options.engine){let t={mapbox:{accessToken:mappl10n.options.mapbox,attribution:['<a href="https://www.mappresspro.com" target="_blank">MapPress</a>','<a href="https://www.mapbox.com/about/maps" target="_blank">&copy; Mapbox<a/>','<a href="https://www.openstreetmap.org/about/" target="_blank">&copy; OpenStreetMap</a>'],url:"https://api.mapbox.com/styles/v1/{user}/{mapboxid}/tiles/256/{z}/{x}/{y}{r}?access_token={accessToken}&fresh=true",zoomOffset:0},osm:{attribution:['<a href="https://www.mappresspro.com" target="_blank">MapPress</a>','<a href="https://openstreetmap.org" target="_blank">Map data (c) OpenStreetMap</a>'],url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}}[e.provider],i=h.extend({},t,e);L.tileLayer(t.url,i).addTo(this.map_)}else if(this.map_.setMapTypeId("standard"==e.type?e.id:"roadmap"),e.json){let t=null;try{t=JSON.parse(e.json)}catch(e){console.log("Invalid JSON in map style")}this.map_.setOptions({styles:t||null})}else this.map_.setOptions({styles:null})},setLines:function(){if(this.polyline&&("leaflet"==mappl10n.options.engine?this.polyline.remove():this.polyline.setMap(null),this.polyline=null),this.isEditable||!this.lines&&!mappl10n.options.lines||this.pois_.length<2)return;const e={...mappl10n.options.lineOpts},t=[];if(_.map(this.pois_,(e=>{t.push(e.getPosition())})),"leaflet"==mappl10n.options.engine)this.polyline=new L.Polyline(t,e).addTo(this.map_);else{const i={strokeColor:e.color,strokeWeight:e.weight,strokeOpacity:e.opacity};e.icons&&(_.map(e.icons,(e=>{e.icon.path=parseInt(e.icon.path)})),e.icons[0].repeat="50px"),this.polyline=new google.maps.Polyline({map:this.map_,path:t,...e,...i}),e.animate&&e.icons&&e.icons.length&&this.setLinesAnimation()}},setLinesAnimation:function(){let e=0;const t=this.polyline.get("icons");t[0].repeat.replace("%","").replace("px",""),window.setInterval((()=>{e+=1,t[0].offset=e+(t[0].repeat.indexOf("%")>=0?"%":"px"),this.polyline.set("icons",t)}),20)},setView:function(e,t,i){"leaflet"==mappl10n.options.engine?(null==t&&(t=this.map_.getZoom()?this.map_.getZoom():0),this.map_.setView(e,t,i)):(e=e&&!e.toJSON?{lat:parseFloat(e.lat),lng:parseFloat(e.lng)}:e,t=t?parseInt(t):null,e&&this.map_.setCenter(e),t&&this.map_.setZoom(t))},spinner:function(e){this.div.layout.toggleClass("mapp-busy",e)},toggleLayer:function(e,t){t=void 0!==t?t:null==this.layers_[e].getMap(),h.each(["traffic","bicycling","transit"],((e,t)=>{this.layers_[t].setMap(null)})),t&&this.layers_[e].setMap(this.map_)},toggleSidebar:function(e){this.div.layout.toggleClass("mapp-sidebar-open",e),this.isSidebarOpen=e,setTimeout((()=>this.resize()),100)},togglePois:function(e){e=!!e;for(var t=0;t<this.pois_.length;t++)this.pois_[t].setVisible(e)},toggleView:function(e,t){if("mini"==e){let e=this.div.layout.hasClass("mapp-view-mini"),t=!("inline"==this.layout||!this.poiList)&&this.div.layout.width()<mappl10n.options.mini;return this.div.layout.toggleClass("mapp-view-mini",t),void(t!=e&&this.toggleSidebar(!t))}t=void 0===t?!this.div.layout.hasClass("mapp-view-"+e):t,this.div.layout.toggleClass("mapp-view-"+e,t),"list"==e&&t&&this.renderList(),"directions"==e&&this.resize()},toJSON:function(){this.pois=[];for(var e=0;e<this.pois_.length;e++)this.pois.push(this.pois_[e].toJSON());return{center:this.center,height:this.height,mapid:this.mapid,mapTypeId:this.mapTypeId,metaKey:this.metaKey,pois:this.pois,postid:this.postid,search:this.search,title:this.title,width:this.width,zoom:this.zoom}}}},689:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.Infobox=function(t,i){this.map=t,this.anchorPoint=null,this.fudge=30,this.isOpen=!1,this.mapDiv="leaflet"==mappl10n.options.engine?t.getContainer():t.getDiv(),this.node=null,this.opts=_.extend({clip:!0,pan:!0},i),this.overlayView=null,this.position=null,this.size=null,this.wrapper=null,this.wrapper=e('<div class="mapp-ib-wrapper" tabindex="0"><div class="mapp-ib-content"><div class="mapp-ib" tabindex="0"></div><div class="mapp-ib-tip"></div></div></div>'),i&&i.className&&this.wrapper.addClass(i.className),this.node=e(".mapp-ib-content",this.wrapper),"leaflet"==mappl10n.options.engine?mapp.event.addListener(this.map,"move",(e=>{this.isOpen&&this.draw()})):(this.overlayView=new google.maps.OverlayView,this.overlayView.onAdd=function(){},this.overlayView.setMap(this.map),this.overlayView.draw=()=>{this.isOpen&&this.draw()}),this.node.get(0).addEventListener("load",(()=>{"leaflet"==mappl10n.options.engine?this.open({position:this.position,anchorPoint:this.anchorPoint}):mapp.event.addListenerOnce(this.map,"panend",(e=>{this.open({position:this.position,anchorPoint:this.anchorPoint})}))}),{capture:!0});var n="leaflet"==mappl10n.options.engine?this.map.getContainer():this.map.getDiv();this.wrapper.appendTo(n),"leaflet"==mappl10n.options.engine&&t.on("load",(()=>{L.DomEvent.disableClickPropagation(this.wrapper.get(0))}))},mapp.Infobox.prototype={close:function(){this.isOpen=!1,this.wrapper&&this.wrapper.removeClass("mapp-open")},draw:function(){if(document.fullscreenElement||this.map.isFullscreen)return;if(!this.position)return;let e,t,i;if(e=this.node.outerWidth(),t=this.node.outerHeight(),"leaflet"==mappl10n.options.engine)i=this.map.latLngToContainerPoint(this.position);else{const e=this.overlayView.getProjection();if(!e)return;i=e.fromLatLngToContainerPixel(this.position)}this.wrapper.css({left:i.x-e/2+this.anchorPoint.x,bottom:this.mapDiv.clientHeight-i.y-this.anchorPoint.y})},getContent:function(){return e(".mapp-ib",this.node).get(0)},open:function(e){this.position=e.position,this.anchorPoint=e.anchorPoint?e.anchorPoint:{x:0,y:0},this.wrapper.addClass("mapp-open"),this.wrapper.css({left:0,bottom:0,width:"auto",height:"auto"});const{width:t,height:i}=this.wrapper.get(0).getBoundingClientRect();this.wrapper.css({width:t,height:i}),"leaflet"==mappl10n.options.engine&&this.map.stop(),this.isOpen=!0,this.draw(),this.pan()},pan:function(){const t=this.node.outerWidth(),i=this.node.outerHeight(),n=e(this.mapDiv).width(),s=e(this.mapDiv).height();if("leaflet"==mappl10n.options.engine)var o=this.map.latLngToContainerPoint(this.position);else{var a=this.overlayView.getProjection();o=a?a.fromLatLngToContainerPixel(this.position):null}if(!o)return;var l={x:o.x,y:o.y};o.x+t/2+this.anchorPoint.x>n-this.fudge?l.x=Math.max(n-t/2-this.anchorPoint.x-this.fudge,n/2-this.anchorPoint.x):o.x-t/2+this.anchorPoint.x<this.fudge&&(l.x=Math.min(t/2+this.anchorPoint.x+this.fudge,n/2-this.anchorPoint.x)),o.y+this.anchorPoint.y-i<this.fudge&&(l.y=i-this.anchorPoint.y+this.fudge),l.y>=s&&(l.y=s-this.fudge);const p={x:o.x-l.x,y:o.y-l.y};p.x<=-1||p.x>=1||p.y<=-1||p.y>=1?"leaflet"==mappl10n.options.engine?this.map.panBy([p.x,p.y]):(mapp.event.addListenerOnce(this.map,"idle",(e=>{mapp.event.trigger(this.map,"panend")})),this.map.panBy(p.x,p.y)):mapp.event.trigger(this.map,"panend")},setContent:function(t){e(".mapp-ib",this.node).empty().append(t)}}},628:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.lib={template:function(t,i){if(mapp.lib.templates=mapp.lib.templates?mapp.lib.templates:{},!mapp.lib.templates[t]){var n=mappl10n.options.templates?mappl10n.options.template[t]:e("#mapp-tmpl-"+t).html();if(!n)return"";mapp.lib.templates[t]=_.template(n,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return mapp.lib.templates[t](i)}},jQuery,mapp.event={addListener:function(e,t,i){t=t.split(" ");for(var n=0;n<t.length;n++)"leaflet"==mappl10n.options.engine?e.on(t[n],i):google.maps.event.addListener(e,t[n],i)},addListenerOnce:function(e,t,i){t=t.split(" ");for(var n=0;n<t.length;n++)"leaflet"==mappl10n.options.engine?e.once(t[n],i):google.maps.event.addListenerOnce(e,t[n],i)},clearInstanceListeners:function(e){"leaflet"==mappl10n.options.engine?e.off():google.maps.event.clearInstanceListeners(e)},clearListeners:function(e,t){t=t.split(" ");for(var i=0;i<t.length;i++)"leaflet"==mappl10n.options.engine?e.off(t[i]):google.maps.event.clearListeners(e,t[i])},trigger:function(e,t,i){"leaflet"==mappl10n.options.engine?e.fire(t,i):google.maps.event.trigger(e,t,i)}}},436:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.Marker=function(e){this.anchorPoint=null,this.div=null,this.draggable=null,this.icon=null,this.map=null,this.position=null,this.visible=null,this.zIndex=0,this.setValues(e),this.overlayView=new google.maps.OverlayView,this.overlayView.draw=()=>this.draw(),this.overlayView.onAdd=()=>this.onAdd(),this.overlayView.onRemove=()=>this.onRemove()},mapp.Marker.prototype={draw:function(){if(!this.div||!this.icon)return;let t=this.overlayView.getProjection();if(t){let i=t.fromLatLngToDivPixel(this.position),n=this.icon.scaledSize?this.icon.scaledSize:{width:32,height:32};e(this.div).css({left:i.x-n.width/2,top:i.y-n.height})}},getDiv:function(){return this.div},getDraggable:function(){return this.draggable},getMap:function(){return this.map},getPosition:function(){return this.position},getVisible:function(){return this.visible},handleEvent:function(e){let t="on"+e.type[0].toUpperCase()+e.type.slice(1);this[t]&&this[t](e)},onAdd:function(){let t=this.overlayView.getPanes();t&&(this.div=e('<div class="mapp-marker">'),this.div.appendTo(t.overlayMouseTarget),this.icon&&this.setIcon(),google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.div.get(0)),this.div.get(0).addEventListener("click",(()=>{(!this.dragging||this.dragging&&!this.dragging.moved)&&mapp.event.trigger(this,"click"),this.dragging=null})),this.div.get(0).addEventListener("mouseenter",this),this.div.get(0).addEventListener("mouseleave",this),this.setDraggable(this.draggable))},onMouseenter:function(e){mapp.event.trigger(this,"mouseover")},onMouseleave:function(e){mapp.event.trigger(this,"mouseout")},onPointerdown:function(e){const t=this.map.getDiv().getBoundingClientRect(),i=this.overlayView.getProjection().fromLatLngToContainerPixel(this.position);this.dragging={moved:!1,startPixel:{x:e.clientX,y:e.clientY},offset:{x:i.x-(e.clientX-t.left),y:i.y-(e.clientY-t.top)}},this.toggleDragEvents(!0)},onPointermove:function(e){if(Math.abs(e.clientX-this.dragging.startPixel.x)+Math.abs(e.clientY-this.dragging.startPixel.y)<3)return;const t=this.map.getDiv().getBoundingClientRect();let i={x:e.clientX-t.left+this.dragging.offset.x,y:e.clientY-t.top+this.dragging.offset.y};this.setPosition(this.overlayView.getProjection().fromContainerPixelToLatLng(i)),this.draw(),this.dragging.moved=!0,mapp.event.trigger(this,"dragstart")},onPointercancel:function(e){this.onPointerup(e)},onPointerup:function(e){this.dragging&&this.dragging.moved&&mapp.event.trigger(this,"dragend"),this.toggleDragEvents(!1)},onRemove:function(){this.div&&(this.toggleDragEvents(!1),this.div.remove(),this.div=null)},set:function(e,t){let i="set"+e[0].toUpperCase()+e.slice(1);this[i]&&this[i](t)},setDraggable:function(e){this.draggable=e,this.map&&(this.div.get(0).removeEventListener("pointerdown",this,{passive:!0}),e&&this.div.get(0).addEventListener("pointerdown",this,{passive:!0}))},setIcon:function(e){if(void 0!==e&&(this.icon=e),this.icon&&this.div){let e='<img draggable="false" src="'+this.icon.url+'">';this.div.html(e);let t=this.icon.scaledSize?this.icon.scaledSize:{width:32,height:32};this.div.css({width:t.width,height:t.height}),this.setZIndex(),this.draw()}},setMap:function(e){this.map=e,this.overlayView.setMap(e)},setPosition:function(e){this.position=e},setValues:function(e){for(const t in e)this.set(t,e[t])},setVisible:function(e){this.visible=e,this.div&&this.div.css("visibility",e?"visible":"hidden")},setZIndex:function(e){this.zIndex=void 0!==e?e:this.zIndex,this.div&&this.div.css("z-index",e)},toggleDragEvents(e){document.removeEventListener("pointermove",this,{passive:!0}),document.removeEventListener("pointerup",this,{passive:!0}),document.removeEventListener("pointercancel",this,{passive:!0}),e&&(document.addEventListener("pointermove",this,{passive:!0}),document.addEventListener("pointerup",this,{passive:!0}),document.addEventListener("pointercancel",this,{passive:!0}))}}},548:(e,t,i)=>{"use strict";i.r(t);var n=i(939);window.mapp=window.mapp||{};var s;s=jQuery,mapp.Poi=function(e){if(this.defaults={address:null,body:null,html:null,iconid:null,id:null,images:null,kml:null,map:null,overlay:null,postid:null,poly:null,props:null,title:"",url:null,type:null,viewport:null},s.extend(this,this.defaults,e),this.id=n.mappLib.nanoid(),e&&e.correctedAddress&&(this.address=e.correctedAddress),"leaflet"==mappl10n.options.engine&&this.isPoly()&&(this.type=null),!e.overlay)switch(this.type){case"polygon":this.overlay=new google.maps.Polygon({paths:e.poly.paths}),this.setColors(e.poly);break;case"polyline":this.overlay=new google.maps.Polyline({path:e.poly.path}),this.setColors(e.poly);break;case"circle":var t=new google.maps.LatLng(e.point.lat,e.point.lng);this.overlay=new google.maps.Circle({center:t,radius:parseFloat(e.poly.radius)}),this.setColors(e.poly);break;case"rectangle":this.overlay=new google.maps.Rectangle({bounds:mapp.poi.viewportToBounds(this.viewport)}),this.setColors(e.poly);break;case"kml":var i=e.kml&&e.kml.url?e.kml.url:"";this.overlay="leaflet"==mappl10n.options.engine?omnivore.kml(i):new google.maps.KmlLayer({url:i,preserveViewport:!0,suppressInfoWindows:!0});break;default:"leaflet"==mappl10n.options.engine?this.overlay=L.marker([e.point.lat,e.point.lng]):this.overlay=new mapp.Marker({position:new google.maps.LatLng(e.point.lat,e.point.lng)}),this.set({iconid:e.iconid})}},mapp.Poi.prototype={addEvents:function(){mapp.event.clearInstanceListeners(this.overlay),mapp.event.addListener(this.overlay,"click",(e=>{this.onClick(e)})),mapp.event.addListener(this.overlay,"mouseover",(e=>{this.map.poiHover(this)})),mapp.event.addListener(this.overlay,"mouseout",(e=>{this.map.poiHover(null)})),"kml"==this.type&&this.addKmlEvents(),this.map.isEditable&&(this.addPolyEditEvents(!0),this.map.isEditable&&mapp.event.addListener(this.overlay,"dragstart",(()=>{this.viewport=null,this.addPolyEditEvents(!1)})),mapp.event.addListener(this.overlay,"dragend",(()=>{this.updateFromOverlay(),this.addPolyEditEvents(!0)})))},addKmlEvents:function(){"leaflet"==mappl10n.options.engine?(mapp.event.addListenerOnce(this.overlay,"ready",(()=>{this.updateFromOverlay()})),mapp.event.addListenerOnce(this.overlay,"error",(()=>{alert(mappl10n.kml_error+" : "+this.kml.url)}))):(mapp.event.addListener(this.overlay,"defaultviewport_changed",(()=>{this.updateFromOverlay()})),mapp.event.addListener(this.overlay,"status_changed",(()=>{"OK"!=this.overlay.getStatus()&&alert(mappl10n.kml_error+" : "+this.kml.url)})))},addPolyEditEvents(e){this.isPoly()&&"google"==mappl10n.options.engine&&("rectangle"==this.type&&(mapp.event.clearListeners(this.overlay,"bounds_changed"),e&&mapp.event.addListener(this.overlay,"bounds_changed",(()=>{this.updateFromOverlay()}))),"circle"==this.type&&(mapp.event.clearListeners(this.overlay,"center_changed radius_changed"),e&&mapp.event.addListener(this.overlay,"center_changed radius_changed",(()=>{this.updateFromOverlay()}))),"polygon"!=this.type&&"polyline"!=this.type||(mapp.event.clearListeners(this.overlay,"rightclick"),mapp.event.clearListeners(this.overlay.getPath(),"insert_at remove_at set_at"),e&&(mapp.event.addListener(this.overlay,"rightclick",(e=>{null!=e.vertex&&this.overlay.getPath().getLength()>2&&(this.overlay.getPath().removeAt(e.vertex),this.updateFromOverlay())})),mapp.event.addListener(this.overlay.getPath(),"insert_at remove_at set_at",(()=>{this.updateFromOverlay()})))))},center:function(e){var t=this.getBounds();if("number"!=typeof e)if(t){var i=t.getNorthEast().toJSON().lng-t.getSouthWest().toJSON().lng;i<0&&(i+=360),e=Math.round(Math.log(360*this.map.div.canvas.width()/i/256)/Math.LN2),this.map.setView(this.getPosition(),e,{animate:!1})}else this.map.setView(this.getPosition(),parseInt(mappl10n.options.poiZoom));else this.map.setView(this.getPosition(),e)},getAddress:function(){return this.address?this.address:this.getPosition().toUrlValue()},getAnchorPoint:function(e){switch(this.isPoly()?"poly":this.type){case"kml":return e&&e.pixelOffset?{x:e.pixelOffset.width,y:e.pixelOffset.height}:{x:0,y:0};case"poly":return{x:0,y:0};default:return mappl10n.options.iconScale&&mappl10n.options.iconScale[0]&&mappl10n.options.iconScale[1]?{x:0,y:0-mappl10n.options.iconScale[1]}:{x:0,y:-32}}},getBounds:function(){var e;switch(this.type){case"polyline":e=new google.maps.LatLngBounds,this.overlay.getPath().forEach((function(t){e.extend(t)}));break;case"polygon":e=new google.maps.LatLngBounds,this.overlay.getPaths().forEach((function(t){t.forEach((function(t){e.extend(t)}))}));break;case"rectangle":case"circle":e=this.overlay.getBounds();break;case"kml":e=(e="leaflet"==mappl10n.options.engine?this.overlay.getBounds().isValid()?this.overlay.getBounds():null:this.overlay.getDefaultViewport())||mapp.poi.viewportToBounds(this.viewport);break;default:return mapp.poi.viewportToBounds(this.viewport)}return e},getColors:function(){var e={};for(var t in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})void 0!==this.overlay[t]&&(e[t]=this.overlay[t]);return e},getPosition:function(e){if(!this.type)return"leaflet"==mappl10n.options.engine?L.latLng(this.point):new google.maps.LatLng(this.point.lat,this.point.lng);if("kml"==this.type&&e&&e.latLng)return e.latLng;const t=this.getBounds();return"leaflet"==mappl10n.options.engine?t&&t.isValid()?t.getCenter():new L.latLng(0,0):t?t.getCenter():new google.maps.LatLng(0,0)},highlight:function(e){if(!this.type){var t="leaflet"==mappl10n.options.engine?s(this.overlay._icon):this.overlay.getDiv();if(t){switch(this.map&&this.map.isEditable?"circle":mappl10n.options.highlight){case"circle":t.toggleClass("mapp-marker-circle",e);break;case"icon":var i=e?n.mappLib.getIcon(mappl10n.options.highlightIcon):n.mappLib.getIcon(this.iconid);if("leaflet"==mappl10n.options.engine&&this.overlay.getIcon().options.iconUrl==i.options.iconUrl)return;this.overlay.setIcon(i);break;case"scale":t.addClass("mapp-marker"),t.toggleClass("mapp-marker-scale",e)}this.setZIndex(e?1e4:0)}}},isPoly:function(){return-1!=jQuery.inArray(this.type,["polyline","polygon","circle","rectangle"])},onClick:function(e){this.map.poiClick(this,e)},set:function(e){for(var t in e){var i=e[t];"iconid"===t?this.type||(this.iconid=i,this.overlay.setIcon(n.mappLib.getIcon(i))):this[t]=i}},setColors:function(e){var t={};for(var i in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})e&&void 0!==e[i]&&(t[i]=e[i]);this.overlay.setOptions(t)},setEditable:function(e){"kml"!=this.type&&("leaflet"==mappl10n.options.engine?this.overlay.options.draggable=e:this.overlay.setDraggable(e),this.isPoly()&&this.overlay.setEditable(e))},setMap:function(e){this.map=e,null!=e?(this.setEditable(this.map.isEditable),this.addEvents(),!this.type&&this.map.clusterer||("leaflet"==mappl10n.options.engine?this.overlay.addTo(e.getMap()):this.overlay.setMap(e.getMap()))):"leaflet"==mappl10n.options.engine?this.overlay.remove():this.overlay.setMap(null)},setVisible:function(e){void 0!==this.overlay.setVisible&&this.overlay.setVisible(e)},setZIndex:function(e){"leaflet"==mappl10n.options.engine?this.type||this.overlay.setZIndexOffset(e):this.overlay.set("zIndex",e)},toJSON:function(){var e={address:this.address,body:this.body,iconid:this.iconid,images:this.images,point:this.point,title:this.title,type:this.type,viewport:this.viewport};return"kml"==this.type?e.kml=this.kml:this.isPoly()&&(e.poly=this.poly),e},updateFromOverlay(){_.extend(this,mapp.poi.parseOverlay(this.type,this.overlay))}},mapp.poi={boundsToViewport:function(e){return e?{sw:e.getSouthWest().toJSON(),ne:e.getNorthEast().toJSON()}:null},boundsCenterPoint:function(e){return e&&e.isValid()?e.getCenter().toJSON():{lat:0,lng:0}},pointToLatLng:function(e){return e?"leaflet"==mappl10n.options.engine?L.latLng(this.point):new google.maps.LatLng(e.lat,e.lng):null},viewportToBounds:function(e){return e&&e.sw&&e.ne?"leaflet"==mappl10n.options.engine?new L.LatLngBounds(L.latLng(e.sw.lat,e.sw.lng),L.latLng(e.ne.lat,e.ne.lng)):new google.maps.LatLngBounds(new google.maps.LatLng(e.sw.lat,e.sw.lng),new google.maps.LatLng(e.ne.lat,e.ne.lng)):null},parseOverlay:function(e,t){if("google"==mappl10n.options.engine){if("kml"==e){const e=t.getDefaultViewport();return{point:e?e.getCenter().toJSON():null,viewport:e?mapp.poi.boundsToViewport(e):null}}const i=t instanceof google.maps.Polyline?{strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,stokeWeight:t.strokeWeight}:{fillColor:t.fillColor,fillOpacity:t.fillOpacity,strokeColor:t.strokeColor,strokeOpacity:1,stokeWeight:t.strokeWeight};if("circle"==e)return{point:t.getCenter().toJSON(),poly:{radius:t.getRadius(),...i}};if("rectangle"==e)return{viewport:mapp.poi.boundsToViewport(t.getBounds()),poly:{...i}};if("polyline"==e){const e=[];return t.getPath().forEach((function(t){e.push(t.toJSON())})),{poly:{path:e,...i}}}if("polygon"==e){const e={fillColor:t.fillColor,fillOpacity:t.fillOpacity,strokeColor:t.strokeColor,strokeOpacity:1,stokeWeight:t.strokeWeight},i=[];return t.getPaths().forEach((function(e){var t=[];e.forEach((function(e){t.push(e.toJSON())})),i.push(t)})),{poly:{paths:i,...e}}}if(!e)return{point:t.getPosition().toJSON()}}else{if("kml"==e){const e=t.getBounds();return{point:e&&e.isValid()?e.getCenter().toJSON():null,viewport:e&&e.isValid()?mapp.poi.boundsToViewport(e):null}}if(!e)return{point:"leaflet"==mappl10n.options.engine?t.getLatLng().toJSON():t.getPosition().toJSON()}}}}}},t={};function i(n){var s=t[n];if(void 0!==s)return s.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,i),o.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i(117),i(715),i(817),i(10),i(326),i(939),i(602),i(27),i(818),i(50),i(615),i(892),i(628),i(854),i(689),i(436),i(548),i(374)})();
1
+ (()=>{var e={117:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappAutocomplete:()=>m});var n=i(326);const o=wp.element.createElement,{Fragment:s,useCallback:a,useEffect:l,useLayoutEffect:p,useMemo:r,useRef:c,useState:u}=wp.element;function m(e){e={buttonLabel:null,className:"",delay:null,focus:!1,onFetch:null,onSelect:null,placeholder:"",selected:null,suggestions:[],title:"",...e};const t=c(null),i=c(null),[s,a]=u({isOpen:!1,value:""});function p(e){a((t=>({...t,...e})))}(0,n.useClickOutside)(t,(()=>{s.isOpen&&p({isOpen:!1})})),l((()=>{e.focus&&i.current&&i.current.focus()}),[i.current]),l((()=>{s.map&&setMapTypeId(e.mapTypeId)}),[e.mapTypeId,s.map]);const r=(0,n.useDebounce)((t=>{e.onFetch&&e.onFetch(t)}),e.delay);function m(){let t;p({isOpen:!1}),e.suggestions&&(t=null==s.selected?e.suggestions[0]:e.suggestions[s.selected]),e.onSelect({suggestion:t,value:h})}const h=s.selected>=0&&e.suggestions&&e.suggestions[s.selected]?e.suggestions[s.selected].value:s.value;return o("div",{className:"mapp-autocomplete",ref:t},o("div",{className:"mapp-autocomplete-wrapper"},o("input",{className:e.className,onChange:e=>{!function(e){p({value:e,selected:null}),r(e)}(e.target.value)},onKeyDownCapture:t=>function(t){switch(t.stopPropagation(),t.code){case"Backspace":p({isOpen:s.value.length>1});break;case"Enter":m();break;case"Escape":p({isOpen:!1});break;case"ArrowUp":if(t.preventDefault(),e.suggestions&&0!=s.selected){const t=null==s.selected?e.suggestions.length-1:s.selected-1;e.suggestions[t]&&p({isOpen:!0,selected:t})}else p({selected:null});break;case"ArrowDown":if(e.suggestions&&s.selected<e.suggestions.length-1){const t=null==s.selected?0:s.selected+1;e.suggestions[t]&&p({isOpen:!0,selected:t})}else p({selected:null});break;case"Tab":case"AltLeft":case"AltRight":case"ControlLeft":case"ControlRight":case"MetaLeft":case"MetaRight":break;default:p({isOpen:!0})}}(t),placeholder:e.placeholder,ref:i,title:e.title,type:"text",value:h}),s.isOpen&&o("div",{className:"mapp-autocomplete-list"},_.map(e.suggestions,((t,i)=>{const n="mapp-autocomplete-item"+(s.selected==i?" mapp-selected":"");return o("div",{className:n,key:i,onClick:()=>function(t,i){p({isOpen:!1,selected:i}),e.onSelect({suggestion:t})}(t,i)},t.value)})))),e.buttonLabel&&o("div",{className:"mapp-submit-button",onClick:()=>m()},e.buttonLabel))}},715:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappDirections:()=>r});const n=wp.element.createElement,{Fragment:o,useEffect:s,useLayoutEffect:a,useRef:l,useState:p}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function r(e){e={from:null,onClose:null,to:null,...e};const[t,i]=p({from:e.from?e.from:"",to:e.to?e.to:""});function o(e){i((t=>({...t,...e})))}function a(){e.onClose&&e.onClose()}function l(){const e=t.from.trim(),i=t.to.trim();let n=mappl10n.options.directionsServer;n="https://maps.google.com"==n?"https://www.google.com":n,-1==n.toLowerCase().indexOf("http")&&(n="https://"+n),n+="/maps/dir/?api=1&origin="+encodeURIComponent(e)+"&destination="+encodeURIComponent(i),window.open(n),a()}function r(e){13==e?l():27==e&&a()}return s((()=>{"google"==mappl10n.options.directions&&l()}),[]),"google"==mappl10n.options.directions?null:n("div",{className:"mapp-directions-component"},n("div",{className:"mapp-close",onClick:()=>a()}),n("div",null,n("input",{className:"mapp-dir-from",onChange:e=>o({from:e.target.value}),onKeyPress:e=>r(e.which),tabIndex:"1",placeholder:__("My location"),value:t.from}),n("div",{className:"mapp-dir-arrows",onClick:()=>{o({from:t.to,to:t.from})}})),n("div",null,n("input",{className:"mapp-dir-to",onChange:e=>o({to:e.target.value}),onKeyPress:e=>r(e.which),tabIndex:"2",value:t.to})),n("div",{className:"mapp-dir-toolbar"},n("div",{className:"mapp-submit-button",onClick:()=>l()},__("Get Directions"))))}},817:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappFilters:()=>u});var n=i(939),o=i(326);const s=wp.element.createElement,{Fragment:a,useEffect:l,useLayoutEffect:p,useRef:r,useState:c}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),sprintf=wp.i18n.sprintf,u=e=>{e={onFilterChange:null,otype:"post",poiCount:0,...e};const t=(0,o.useDebounce)(e.onFilterChange,500),i=r(null),[a,p]=c({filters:null,formData:{},isBusy:!0,isOpen:!1});function u(e){p((t=>({...t,...e})))}function m(e,i){let n=a.formData[e.key]?a.formData[e.key].values:null;if("checkbox"==e.format){var o;const e=null===(o=n)||void 0===o?void 0:o.indexOf(i);e>-1?n.splice(e,1):(n=n||[],n.push(i))}else n=i?[i]:[];let s={...a.formData};n.length?s[e.key]={key:e.key,values:n,meta_key:e.meta_key,meta_values:e.meta_values}:delete s[e.key],u({formData:s}),t(s)}function h(){u({formData:{}}),t()}function g(e){u({isOpen:e=void 0!==e?e:!a.isOpen})}function d(e){return s("div",{className:"mapp-filter",key:e.key},s("div",{className:"mapp-filter-label"},e.label),s("div",{className:"mapp-filter-values"},function(e){e.key;const t=[...e.values];let i=a.formData[e.key]?a.formData[e.key].values:"";switch(e.format){case"input":return s("input",{type:"text",value:i?i[0]:"",onChange:t=>m(e,t.target.value)});case"checkbox":return _.map(t,(t=>s("label",{key:t.value},s("input",{checked:null==i?void 0:i.includes(t.value),key:t.value,onChange:t=>m(e,t.target.value),type:e.format,value:t.value}),t.iconid&&s("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),s("span",{dangerouslySetInnerHTML:{__html:t.label}}))));case"radio":return"radio"==e.format&&t.unshift({value:"",label:__("All")}),_.map(t,(t=>s("label",{key:t.value},s("input",{checked:i==t.value||""==t.value&&!i,key:t.value,onChange:t=>m(e,t.target.value),type:e.format,value:t.value}),t.iconid&&s("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),s("span",{dangerouslySetInnerHTML:{__html:t.label}}))));case"select":t.unshift({value:"",label:""});const o=_.map(t,(e=>'<option value="'+e.value+'">'+e.label+"</option>"));return s("select",{value:i[0],dangerouslySetInnerHTML:{__html:o},onChange:t=>m(e,t.target.value)})}}(e)))}return(0,o.useClickOutside)(i,(()=>{a.isOpen&&g(!1)})),l((()=>{u({isBusy:!0}),n.mappLib.ajax({method:"GET",data:{action:"mapp_filters_get",nonce:mappl10n.options.nonce,otype:e.otype},callback:e=>{u({isBusy:!1}),e&&"OK"==e.status?u({filters:e.data}):console.error("MapPress: unable to fetch filter data")}})}),[]),s("div",{className:"mapp-filters-component",ref:i},function(){const e="mapp-button mapp-filters-toggle mapp-button-caret"+(a.isBusy?" mapp-button-disabled":"");return s("div",{className:e,onClick:()=>{a.isBusy||g()}},__("Filter"))}(),function(){if(null!==a.filters)return s("div",{className:"mapp-filters-wrapper"+(a.isOpen?" mapp-filters-open":"")},s("div",{className:"mapp-filters-list"},_.map(a.filters,(e=>d(e)))),function(){let t=e.poiCount>1?__("%d Results"):__("%d Result");return t=sprintf(t,e.poiCount),s("div",{className:"mapp-filters-toolbar"},s("div",{className:"mapp-link-button",onClick:h},__("Reset")),s("div",{className:"mapp-filters-count"},t),s("div",{className:"mapp-submit-button",onClick:()=>g(!1)},__("Done")))}())}())}},10:(e,t,i)=>{"use strict";i.r(t),i.d(t,{useGeocoding:()=>c});wp.element.createElement;const{Fragment:n,useCallback:o,useEffect:s,useLayoutEffect:a,useRef:l,useState:p}=wp.element,r={google:function(){this.token=null;const e=document.createElement("div");this.placesService=new google.maps.places.PlacesService(e),this.autocompleteService=new google.maps.places.AutocompleteService}};r.google.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken,this.token=null;var n={fields:["formatted_address","name","geometry"],placeId:t.place_id,sessionToken:this.token};this.placesService.getDetails(n,(function(e,t){if("OK"==t&&e&&e.geometry){if(e.geometry.location&&(e.geometry.location=e.geometry.location.toJSON()),e.geometry.viewport){var n=e.geometry.viewport.toJSON();e.geometry.viewport={sw:{lat:n.south,lng:n.west},ne:{lat:n.north,lng:n.east}}}i(e)}else i(null)}))},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&Array.isArray(e)?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,includeBusinesses:n,callback:o}=e;this.token=this.token?this.token:new google.maps.places.AutocompleteSessionToken;var s=t?t.getBounds():null;"leaflet"==mappl10n.options.engine&&(s=new google.maps.LatLngBounds(new google.maps.LatLng(s.getSouthWest().lat,s.getSouthWest().lng),new google.maps.LatLng(s.getNorthEast().lat,s.getNorthEast().lng)));var a={input:i,bounds:s=s||new google.maps.LatLngBounds(new google.maps.LatLng(85,-180),new google.maps.LatLng(-85,180)),sessionToken:this.token,types:n?null:["geocode"]};this.autocompleteService.getPlacePredictions(a,(function(e,t){"OK"==t&&e&&e.length?(e=(e=e.map((e=>(e.value=e.description,e)))).filter((e=>e.place_id)),o(e)):(t==google.maps.places.PlacesServiceStatus.REQUEST_DENIED?alert("Google Maps API Key error: please enable the Places API in the Google Developer Console."):t==google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT&&alert("Google Maps API Key has exceeded its query limit"),o(null))}))}},r.mapbox=function(){},r.mapbox.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e,n=t.place_name,o=n.indexOf(","),s=n.indexOf(",",o+1);o>0&&(n=parseInt(n.substr(0,o))?n.substr(0,s).replace(",",""):n.substr(0,o));let a=t.bbox&&4==t.bbox.length?{sw:{lat:t.bbox[1],lng:t.bbox[0]},ne:{lat:t.bbox[3],lng:t.bbox[2]}}:null;i({formatted_address:t.place_name,name:n,geometry:{location:{lat:t.center[1],lng:t.center[0]},viewport:a}})},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&e.length?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,callback:n}=e;var o="https://api.mapbox.com/geocoding/v5/mapbox.places/"+i+".json?access_token="+mappl10n.options.mapbox;o=mappl10n.options.country?o+"&country="+mappl10n.options.country.toLowerCase():o,o=mappl10n.options.language?o+"&language="+mappl10n.options.language.toLowerCase():o;var s=t?t.getCenter():null;s&&(o+="&proximity="+s.lng+","+s.lat),mappl10n.options.searchBox&&(o+="&bbox="+mappl10n.options.searchBox),fetch(o).then((e=>e.json())).then((e=>{e&&e.features&&e.features.length>0?(e.features=e.features.map((e=>(e.value=e.label=e.place_name,e))),n(e.features)):n(null)}))}},r.nominatim=function(){},r.nominatim.prototype={getDetails:function(e){let{suggestion:t,callback:i}=e,n=t.display_name,o=n.indexOf(","),s=n.indexOf(",",o+1);o>0&&(n=parseInt(n.substr(0,o))?n.substr(0,s).replace(",",""):n.substr(0,o));let a=t.boundingbox&&4==t.boundingbox.length?{sw:{lat:t.boundingbox[0],lng:t.boundingbox[2]},ne:{lat:t.boundingbox[1],lng:t.boundingbox[3]}}:null;i({formatted_address:t.display_name,name:n,geometry:{location:{lat:t.lat,lng:t.lon},viewport:a}})},getFirstPrediction:function(e){let{map:t,value:i,callback:n}=e;this.getPredictions({map:t,value:i,callback:e=>{e&&e.length?this.getDetails({suggestion:e[0],callback:e=>n(e)}):n(null)}})},getPredictions:function(e){let{map:t,value:i,callback:n}=e;var o="https://nominatim.openstreetmap.org/search?format=json&dedupe=1&limit=5&q="+encodeURIComponent(i);if(o=mappl10n.options.country?o+"&countrycodes="+mappl10n.options.country.toLowerCase():o,o=mappl10n.options.language?o+"&accept-language="+mappl10n.options.language.toLowerCase():o,mappl10n.options.searchBox)o+="&viewbox="+mappl10n.options.searchBox,o+="&bounded=1";else{var s=t?t.getMap().getBounds():null;if(s){let e=s.getSouthWest(),t=s.getNorthEast();o+="&viewbox="+e.lng+","+e.lat+","+t.lng+","+t.lat}}fetch(o).then((e=>e.json())).then((e=>{e&&e.length?(e=e.map((e=>(e.value=e.display_name,e))),n(e)):n(null)}))}};const c=e=>{let{includeBusinesses:t}=e;function i(){let e="";return e="leaflet"!=mappl10n.options.engine?"google":mappl10n.options.geocoder?mappl10n.options.geocoder:"nominatim",new r[e]}function n(e,t){navigator&&navigator.geolocation?navigator.geolocation.getCurrentPosition((function(t){var i={lat:t.coords.latitude,lng:t.coords.longitude};e({name:i.lat+", "+i.lng,geometry:{location:i}})}),(function(i){if(!t){var n=i&&i.message?" : "+i.message:"";alert(mappl10n.no_geolocate+n)}e(null)}),{timeout:15e3,enableHighAccuracy:!0,maximumAge:3e4}):alert(mappl10n.no_geolocate)}return{geocode:function(e){let{map:o,suggestion:s,value:a,callback:l}=e;const p=i();a="string"==typeof a?a.trim():a,s||a?function(e){let{map:t,value:i,callback:o}=e;if(!i)return void o(null);if("string"!=typeof i){const e=i.lat&&i.lng?{geometry:{location:{lat:i.lat,lng:i.lng}}}:null;return void o(e)}if("http"==i.substring(0,4))return void o(i);if("user"==i)return void n((function(e){o(e)}));const s=i.split(",");if(2==s.length){const e=parseFloat(s[0]),t=parseFloat(s[1]);if(!isNaN(e)&&!isNaN(t))return void o({name:e+", "+t,geometry:{location:{lat:e,lng:t}}})}o(null)}({map:o,value:a,callback:e=>{e?l(e):s?p.getDetails({suggestion:s,callback:l}):p.getFirstPrediction({map:o,value:a,includeBusinesses:t,callback:l})}}):l(null)},geolocate:n,getPredictions:function(e){let{map:t,value:n,callback:o}=e;i().getPredictions({map:t,value:n,callback:o})}}}},326:(e,t,i)=>{"use strict";i.r(t),i.d(t,{useDebounce:()=>c,useClickOutside:()=>u});wp.element.createElement;const{Fragment:n,useCallback:o,useEffect:s,useLayoutEffect:a,useMemo:l,useRef:p,useState:r}=wp.element;function c(e,t){const i=React.useRef(e);return React.useLayoutEffect((()=>{i.current=e})),React.useMemo((()=>_.debounce((function(){return i.current(...arguments)}),t)),[t])}function u(e,t){const i=i=>{e.current&&!e.current.contains(i.target)&&t()};return document.addEventListener("mousedown",i),document.addEventListener("touchstart",i),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("touchstart",i)}}},939:(e,t,i)=>{"use strict";i.r(t),i.d(t,{mappLib:()=>n});const n={ajax:function(e){if("POST"==(e={cache:"no-cache",credentials:"same-origin",data:null,method:e.method?e.method:"GET",mode:"cors",redirect:"follow",referrerPolicy:"no-referrer",responseType:"json",url:e.url?e.url:mappl10n.options.ajaxurl,...e}).method)if(e.data instanceof FormData)e.body=e.data;else{const t=new FormData;t.append("action",e.data.action),t.append("nonce",e.data.nonce),t.append("data",JSON.stringify(e.data)),e.body=t}else"GET"==e.method&&(e.url+="?"+n.jQueryParam(e.data));fetch(e.url,e).then((t=>{if("html"==e.responseType)return t.text();if(t.ok)return t.json();throw Error("Request rejected with status ".concat(t.status))})).then((t=>{e.url!=mappl10n.options.ajaxurl||t&&"OK"==t.status||n.alert(t.status),t.output&&n.alert("MapPress: invalid output from a plugin or theme file. Deactivate plugins to find the problem. Output:\r\n"+t.output),e.callback&&e.callback(t)})).catch((t=>{if(e.error)return void e.error();const i=void 0!==t.message?t.message:t.statusText;n.alert("AJAX error -- "+i)}))},alert:function(e){mappl10n.options.admin||mappl10n.options.debug?alert(e):window.console&&console.error(e)},boundsToViewport:function(e){return e?{sw:e.getSouthWest().toJSON(),ne:e.getNorthEast().toJSON()}:null},getIcon:function(e){{const t=this.getIconUrl(e);return"leaflet"==mappl10n.options.engine?L.icon({iconUrl:t,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:t}}},getIconUrl:function(e){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"},jQueryParam:function(e){var t=[],i=function(e,i){i=null==(i="function"==typeof i?i():i)?"":i,t[t.length]=encodeURIComponent(e)+"="+encodeURIComponent(i)},n=function(e,o){var s,a,l;if(e)if(Array.isArray(o))for(s=0,a=o.length;s<a;s++)n(e+"["+("object"==typeof o[s]&&o[s]?s:"")+"]",o[s]);else if("[object Object]"===Object.prototype.toString.call(o))for(l in o)n(e+"["+l+"]",o[l]);else i(e,o);else if(Array.isArray(o))for(s=0,a=o.length;s<a;s++)i(o[s].name,o[s].value);else for(l in o)n(l,o[l]);return t};return n("",e).join("&")},nanoid:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;const t="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let i="",n=e;for(;n--;)i+=t[64*Math.random()|0];return i},pointToLatLng:function(e){return e?"leaflet"==mappl10n.options.engine?L.latLng(e):new google.maps.LatLng(e.lat,e.lng):null},template:function(e,t){if(n.templates=n.templates?n.templates:{},!n.templates[e]){var i=document.getElementById("mapp-tmpl-"+e).innerHTML;if(!i)return"";n.templates[e]=_.template(i,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return n.templates[e](t)}};"leaflet"==mappl10n.options.engine&&"undefined"!=typeof L&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(1e6*this.lat)/1e6+", "+Math.round(1e6*this.lng)/1e6})},374:()=>{window.mapp=window.mapp||{},jQuery,mapp.load=function(){if("undefined"!=typeof mapp&&mapp.data)for(;mapp.data.length;){var e=mapp.data.pop();window[e.name]=new mapp.Map(e),window[e.name].display()}},mapp.load()},602:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappMenuControl:()=>c});var n=i(326);const o=wp.element.createElement,{Fragment:s,useEffect:a,useLayoutEffect:l,useRef:p,useState:r}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function c(e){e={layer:null,map:null,onCenter:null,...e};const[t,i]=r({activeLayer:e.layer?e.layer:null,layers:null,isOpen:!1}),l=p(null);function c(e){i((t=>({...t,...e})))}function u(){c({isOpen:!t.isOpen})}return(0,n.useClickOutside)(l,(()=>{t.isOpen&&u()})),a((()=>{if("google"==mappl10n.options.engine){c({layers:{traffic:{googleLayer:new google.maps.TrafficLayer,label:__("Traffic")},bicycling:{googleLayer:new google.maps.BicyclingLayer,label:__("Bicycling")},transit:{googleLayer:new google.maps.TransitLayer,label:__("Transit")}}})}}),[]),o("div",{ref:l},o("div",{className:"mapp-menu-toggle",onClick:()=>u()}),t.isOpen&&function(){const i=_.map(t.layers,((i,n)=>{const s=t.activeLayer==n?"mapp-menu-item mapp-active":"mapp-menu-item";return o("div",{className:s,key:n,onClick:()=>function(i){t.activeLayer&&t.layers[t.activeLayer].googleLayer.setMap(null),i!=t.activeLayer&&t.layers[i].googleLayer.setMap(e.map),c({activeLayer:i==t.activeLayer?null:i,isOpen:!1})}(n)},i.label)}));return o("div",{className:"mapp-menu"},o("div",{className:"mapp-menu-items"},o("div",{className:"mapp-menu-item",onClick:()=>(c({isOpen:!1}),void e.onCenter())},__("Center map")),"google"==mappl10n.options.engine&&o(s,null,o("div",{className:"mapp-menu-separator"}),i)),o("div",{className:"mapp-menu-footer"},o("a",{className:"mapp-menu-help",href:"https://mappresspro.com/mappress-documentation",target:"_blank"},o("span",null,__("Help")))))}())}},27:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPaginate:()=>r});const n=wp.element.createElement,{Fragment:o,useEffect:s,useLayoutEffect:a,useRef:l,useState:p}=wp.element,{sprintf}=wp.i18n;function r(e){function t(t,i){const n=Math.ceil(e.count/e.pageSize);switch(t){case"first":e.onChange(1);break;case"last":e.onChange(n);break;case"next":e.page<n&&e.onChange(e.page+1);break;case"prev":e.page>1&&e.onChange(e.page-1)}}return function(){const i=Math.ceil(e.count/e.pageSize),o=e.isBusy||e.page<=1,s=e.isBusy||e.page>=i,a=o?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",l=s?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",p=(r="%d of %d",wp.i18n.__(r,"mappress-google-maps-for-wordpress"));var r;return n("div",{className:"mapp-paginate"},n("div",{className:a,onClick:()=>{o||t("first")}},"«"),n("div",{className:a,onClick:()=>{o||t("prev")}},"‹"),n("div",{className:"mapp-paginate-count"},sprintf(p,e.page,i)),n("div",{className:l,onClick:()=>{s||t("next")}},"›"),n("div",{className:l,onClick:()=>{s||t("last")}},"»"))}()}},818:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPlaces:()=>m});var n=i(117),o=i(10);const s=wp.element.createElement,{Fragment:a,useCallback:l,useEffect:p,useLayoutEffect:r,useRef:c,useState:u}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function m(e){e={buttonLabel:null,focus:!1,includeBusinesses:!1,map:null,onSearch:null,...e};const{geocode:t,getPredictions:i}=(0,o.useGeocoding)({map:e.map,includeBusinesses:e.includeBusinesses}),[a,l]=u({suggestions:[]});return s(n.MappAutocomplete,{buttonLabel:e.buttonLabel,className:"mapp-places",debounce:"nominatim"===mappl10n.options.geocoder?500:300,delay:"nominatim"==mappl10n.options.geocoder?500:50,focus:e.focus,onFetch:function(t){i({map:e.map,value:t,callback:e=>{var t;t={suggestions:e},l((e=>({...e,...t})))}})},onSelect:function(i){let{suggestion:n,value:o}=i;t({map:e.map,suggestion:n,value:o,callback:t=>{t&&e.onSearch(t)}})},placeholder:__("Search"),suggestions:a.suggestions,title:__("Enter an address, place, KML file URL, or lat,lng")})}},50:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPoiContent:()=>u});var n=i(939);const o=wp.element.createElement,{Fragment:s,useEffect:a,useLayoutEffect:l,useMemo:p,useRef:r,useState:c}=wp.element;wp.i18n.sprintf;function u(e){e={context:null,feature:null,onDirectionsClick:null,poi:null,template:null,thumbs:null,...e};const[t,i]=c({imageNumber:0});function a(e){i((t=>({...t,...e})))}return o(s,null,function(){const i="list"!=e.context&&mappl10n.options.thumbWidth&&mappl10n.options.thumbHeight?{width:mappl10n.options.thumbWidth+"px",height:mappl10n.options.thumbHeight+"px"}:null,n=e.thumbs&&e.poi.images&&e.poi.images.length&&e.poi.images[t.imageNumber]?e.poi.images[t.imageNumber]:null;if(!n)return null;const s=function(e){switch(e.type){case"avatar":return o("div",{className:"mapp-avatar",dangerouslySetInnerHTML:{__html:e.html}});case"embed":return o("div",{className:"mapp-embed",dangerouslySetInnerHTML:{__html:e.html}});default:if("image"==e.type||!e.type)return o("img",{src:e.url,width:e.size[0]+"px",height:e.size[1]+"px"})}}(n);return o("div",{className:"mapp-thumbnail",style:i},t.imageNumber>=1&&o("div",{className:"mapp-gallery-previous",onClick:e=>function(e){t.imageNumber>0&&(a({imageNumber:t.imageNumber-1}),e.stopPropagation())}(e)}),s,t.imageNumber<e.poi.images.length-1&&o("div",{className:"mapp-gallery-next",onClick:i=>function(i){t.imageNumber<e.poi.images.length-1&&(a({imageNumber:t.imageNumber+1}),i.stopPropagation())}(i)}))}(),o("div",{className:"mapp-info"},function(){let t={...e.poi};t.icon=n.mappLib.getIconUrl(e.poi.iconid),e.feature&&(t.body=e.feature.description,t.title=e.feature.name);const i=n.mappLib.template(e.template,{poi:t});return o("div",{className:"mapp-template",dangerouslySetInnerHTML:{__html:i}})}(),function(){var t;if(!(e.template.indexOf("user")>=0))return"popup"==e.context&&mappl10n.options.directionsPopup||"list"==e.context&&mappl10n.options.directionsList?o("div",null,o("span",{className:"mapp-dir",onClick:()=>e.onDirectionsClick()},(t="Get Directions",wp.i18n.__(t,"mappress-google-maps-for-wordpress")))):void 0}()))}},615:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPoiList:()=>h});var n=i(939),o=i(27),s=i(50);const a=wp.element.createElement,{Fragment:l,useEffect:p,useLayoutEffect:r,useMemo:c,useRef:u,useState:m}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),sprintf=wp.i18n.sprintf;const h=wp.element.memo((function(e){e={className:null,hovered:null,isEditable:!1,isPaged:!1,onClick:null,onDragDrop:null,onHover:null,onPage:null,opened:null,page:1,pois:null,template:null,...e};const[t,i]=m({dragging:null,dragover:null,pageSize:mappl10n.options.poiListPageSize?parseInt(mappl10n.options.poiListPageSize):20});function p(e){i((t=>({...t,...e})))}function r(i){let o,r="mapp-item";return e.opened!=i.id&&e.hovered!=i.id||(r+=" mapp-selected"),r+=t.dragover==i.id?" mapp-dragover":"",o=e.isEditable?a(l,null,a("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(i.iconid)}),a("div",{className:"mapp-title"},i.title)):a(s.MappPoiContent,{context:"list",onDirectionsClick:()=>e.onDirectionsClick(i.id),poi:i,template:e.template,thumbs:mappl10n.options.thumbsList}),a("div",{className:r,dangerouslySetInnerHTML:null,draggable:e.isEditable,key:i.id,onClick:()=>e.onClick(i.id),onDragOver:e=>e.preventDefault(),onDragStart:e=>p({dragging:i.id}),onDragEnter:e=>p({dragover:i.id}),onDragEnd:e=>p({dragging:null,dragover:null}),onDrop:n=>{return o=i.id,void(e.onDragDrop&&e.onDragDrop({from:t.dragging,to:o}));var o},onMouseEnter:t=>{e.onHover(i.id)},onMouseLeave:t=>{e.onHover(null)}},o)}return a("div",{className:e.className},e.isPaged&&function(){let t=1!=e.pois.length?__("%d Results"):__("%d Result");return t=sprintf(t,e.pois.length),a("div",{className:"mapp-list-header"},a("div",{className:"mapp-list-count"},t))}(),function(){const i=t.pageSize*(e.page-1),n=i+t.pageSize;return a("div",{className:"mapp-items"},_.map(e.pois,((e,t)=>{if(t>=i&&t<=n)return r(e)})))}(),e.isPaged&&(e.pois.length<=t.pageSize?null:a("div",{className:"mapp-list-footer"},a(o.MappPaginate,{count:e.pois.length,onChange:t=>e.onPage(t),page:e.page,pageSize:t.pageSize}))))}))},892:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPopupModal:()=>u});var n=i(939);const o=wp.element.createElement,s=wp.element.createPortal,{Fragment:a,useEffect:l,useLayoutEffect:p,useRef:r,useState:c}=wp.element;function u(e){e={onClose:null,poi:null,...e};const[t,i]=c({isBusy:!1,html:null});function a(e){i((t=>({...t,...e})))}const p=React.createRef();function r(t){27==t.keyCode&&e.onClose()}return l((()=>(document.body.classList.add("mapp-modal-noscroll"),()=>document.body.classList.remove("mapp-modal-noscroll"))),[]),l((()=>{e.poi.oid&&(a({isBusy:!0}),n.mappLib.ajax({method:"GET",data:{action:"mapp_get_post",oid:e.poi.oid,nonce:mappl10n.options.nonce},responseType:"html",callback:e=>{a({isBusy:!1,html:e})}}))}),[e.poi.oid]),l((()=>{p.current&&p.current.focus(),console.log("focus"+document.activeElement)}),[p.current]),s(o("div",{className:"mapp-modal"},o("div",{className:"mapp-modal-backdrop",onClick:e.onClose,onKeyDown:r},o("div",{className:"mapp-modal-close",onClick:e.onClose},"×")),o("div",{className:"mapp-modal-content-wrapper",ref:p,onKeyDown:r,tabIndex:0},o("div",{className:"mapp-modal-content"},t.isBusy&&o("div",{className:"mapp-modal-spinner"}),!t.isBusy&&o("div",{className:"mapp-modal-template",dangerouslySetInnerHTML:{__html:t.html}}),o("div",{className:"mapp-modal-close",onClick:e.onClose},"X")))),document.body)}},854:(e,t,i)=>{"use strict";i.r(t);var n=i(715),o=i(817),s=i(939),a=i(602),l=i(818),p=i(50),r=i(615),c=i(892),u=i(10);window.mapp=window.mapp||{};const m=wp.element.createElement,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");wp.i18n._n;var h;h=jQuery,mapp.Map=function(e,t){this.defaults={alignment:null,center:null,classname:null,embed:null,height:null,initialOpenInfo:null,isEditable:null,layers:null,layout:null,lines:null,mapid:null,mapTypeId:null,metaKey:null,mapOpts:null,name:null,onDrawingEvent:null,onPoiClose:null,onPoiOpen:null,onSearch:null,poiList:null,poiListOpen:null,poiListPageSize:null,pois:null,oid:null,otype:null,query:null,search:null,sel:null,title:null,width:null,zoom:null},this.drawingManager=null,this.filters=null,this.hovered=null,this.isFullscreen=!1,this.iw=null,this.mapdata=e,this.opened=null,this.pagination={count:0,page:1},this.polyline=null,this.settings=t||{},this.templates=null,this.clusterer=null,this.dir_=null,this.div={},this.layers_={},this.map_=null,this.pois_=[],this.user_=null,this.xhr_,_.extend(this,this.defaults,this.mapdata,this.settings),this.poiList=void 0!==this.poiList&&null!=this.poiList?this.poiList:mappl10n.options.poiList,this.layout=this.layout?this.layout:mappl10n.options.layout,this.otype=this.otype?this.otype:mappl10n.options.otype,this.oid=this.oid?this.oid:mappl10n.options.oid},mapp.Map.prototype={display:function(){const{geocode:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});if(this.render(),!this.div||!this.div.layout)return;if(this.sanity(),this.query?this.templates={item:"mashup-item",popup:"mashup-popup"}:this.templates={item:"map-item",popup:"map-popup"},"leaflet"==mappl10n.options.engine?this.mapOpts=_.extend({attribution:'Map data <a href="https://openstreetmap.org">OpenStreetMap</a>',minZoom:0,scrollWheelZoom:mappl10n.options.scrollWheel,worldCopyJump:!0,zoomControl:null},this.mapOpts):this.mapOpts=_.extend({backgroundColor:"transparent",clickableIcons:!1,fullscreenControl:!1,mapTypeControl:!1,minZoom:0,scaleControl:!0,streetViewControl:!this.query,streetViewControlOptions:{position:google.maps.ControlPosition.LEFT_BOTTOM}},this.mapOpts),this.mapOpts.minZoom=isNaN(parseInt(this.mapOpts.minZoom))?0:parseInt(this.mapOpts.minZoom),!this.div||!this.div.canvas)return;"leaflet"==mappl10n.options.engine?(this.map_=new L.Map(this.div.canvas.get(0),this.mapOpts),L.control.zoom({position:"bottomright",zoomInTitle:"",zoomOutTitle:""}).addTo(this.map_)):(this.map_=new google.maps.Map(this.div.canvas.get(0),{mapTypeId:"roadmap",zoom:1}),this.map_.setOptions(this.mapOpts),this.addLayers()),this.addGeolocateControl(),this.addMenu(),this.addPopup(),this.isFilterable()&&this.renderFilters(),this.setMapTypeId(this.mapTypeId),this.clustering(),this.addDrawingManager();const t=h(".mapp-search-container",this.div.layout);t.length&&wp.element.render(m(l.MappPlaces,{buttonLabel:this.isEditable?__("Add to map"):m("img",{src:mappl10n.options.baseurl+"/images/search.png"}),focus:this.isEditable,includeBusinesses:this.isEditable,map:this,onSearch:e=>{this.onSearch?this.onSearch(e):this.doSearch(e)}}),t.get(0)),this.addUserLocation(),this.addEvents("click dragstart zoom_changed zoomstart",(e=>{"leaflet"==mappl10n.options.engine&&"click"==e.type&&e.originalEvent&&!e.originalEvent.target.matches(".mapp-canvas")||this.poiClose()})),this.div.layout.on("click","[data-mapp-action]",(e=>{const t=h(e.currentTarget),i=t.attr("data-mapp-action"),n=t.attr("data-mapp-"+i);e.preventDefault(),this.onAction(i,n,t)})),new ResizeObserver(((e,t)=>{this.toggleView("mini"),this.resize()})).observe(this.div.layout.get(0)),e({map:null,value:this.center,callback:e=>{this.center=e&&e.geometry&&e.geometry.location?{lat:e.geometry.location.lat,lng:e.geometry.location.lng}:null,this.setPois(this.pois),this.initCenter()}})},initCenter:function(){setTimeout((()=>{this.recenter(),this.renderList(),this.isSearchable&&!this.isEditable&&this.addSearchMove(),"leaflet"==mappl10n.options.engine?this.initOpen():mapp.event.addListenerOnce(this.map_,"idle",(()=>this.initOpen()))}),100)},initOpen:function(){const e=this.pois_.length?this.pois_[0]:null,t=null!=this.initialOpenInfo?this.initialOpenInfo:mappl10n.options.initialOpenInfo;e&&t&&!this.isEditable&&this.poiOpen(e)},addDrawingManager:function(){if(this.isEditable&&"google"==mappl10n.options.engine&&google.maps.drawing){const e={fillColor:"#0000FF",fillOpacity:.4,strokeColor:"#0000FF",strokeOpacity:1,strokeWeight:2};this.drawingManager=new google.maps.drawing.DrawingManager({drawingControlOptions:{position:google.maps.ControlPosition.TOP_CENTER,drawingModes:[google.maps.drawing.OverlayType.MARKER,google.maps.drawing.OverlayType.POLYGON,google.maps.drawing.OverlayType.POLYLINE,google.maps.drawing.OverlayType.RECTANGLE,google.maps.drawing.OverlayType.CIRCLE]},circleOptions:e,polygonOptions:e,polylineOptions:e,rectangleOptions:e}),this.drawingManager.setMap(this.map_),mapp.event.addListener(this.drawingManager,"overlaycomplete",(e=>{this.drawingManager.setDrawingMode(null),this.poiHover(null),this.onDrawingEvent&&this.onDrawingEvent(e)}))}},addEvents:function(e,t){e=e.split(" ");for(var i=0;i<e.length;i++)mapp.event.addListener(this.map_,e[i],t)},addGeolocateControl:function(){if(!mappl10n.options.ssl)return;const e=h(".mapp-geolocate-control-wrapper",this.div.layout).get(0);"google"==mappl10n.options.engine?this.map_.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(e):(L.Control.Geolocate=L.Control.extend({onAdd:t=>e,onRemove:()=>{}}),new L.Control.Geolocate({position:"bottomright"}).addTo(this.map_))},addLayers:function(){this.layers_={traffic:new google.maps.TrafficLayer,bicycling:new google.maps.BicyclingLayer,transit:new google.maps.TransitLayer};for(var e=h.makeArray(this.layers),t=0;t<e.length;t++){var i=e[t].trim(),n=i.split(".").pop();this.layers_[i]?this.toggleLayer(i):"kml"==n||"kmz"==n?this.layers_[i]=new google.maps.KmlLayer({map:this.map_,preserveViewport:!0,url:i}):"json"==n&&(this.layers_[i]=new google.maps.Data({map:this.map_}).loadGeoJson(i))}},addMenu:function(){this.isEditable||"leaflet"==mappl10n.options.engine||wp.element.render(m(a.MappMenuControl,{map:this.getMap(),onCenter:()=>{this.poiClose(),this.recenter()}}),this.div["menu-component"].get(0))},addPopup:function(){var e=this.isEditable?"mapp-iw-edit":"mapp-iw";this.isEditable||(e+=" mapp-"+this.templates.popup),this.div.iw=h('<div class="'+e+'">').appendTo(this.div.canvas),this.iw=new mapp.Infobox(this.map_,{className:this.isEditable?"mapp-ib-edit":""}),this.iw.setContent(this.div.iw.get(0)),this.div.iw.on("click",".mapp-close",(()=>{this.poiClose()}))},addSearchMove:function(){},addUserLocation:function(){const{geolocate:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});mappl10n.options.userLocation&&mappl10n.options.ssl&&e((e=>{if(e&&e.geometry&&e.geometry.location){const t=e.geometry.location,i=s.mappLib.getIcon("geolocation");"leaflet"==mappl10n.options.engine?this.user_=L.marker([t.lat,t.lng],{icon:i}).addTo(this.map_):(this.user_=new mapp.Marker({icon:i,position:new google.maps.LatLng(t.lat,t.lng)}),this.user_.setMap(this.map_))}}),!0)},clusterGetLatLng:function(e){if(this.clusterer){if("leaflet"==mappl10n.options.engine){var t=this.clusterer.getVisibleParent(e.overlay);return t?t.getLatLng():null}for(var i=this.clusterer.getClusters(),n=0;n<i.length;n++){var o=i[n].markers_;if(o.length>1)for(var s=0;s<o.length;s++)if(o[s]==e.overlay)return i[n].center_}}},clustering:function(){if(mappl10n.options.clustering&&!this.isEditable){let e=mappl10n.options.clusteringOptions?mappl10n.options.clusteringOptions:{};void 0!==e.disableClusteringAtZoom&&""==e.disableClusteringAtZoom&&(e.disableClusteringAtZoom=null),"leaflet"==mappl10n.options.engine?this.clusterer=L.markerClusterGroup(e):(e=_.extend(e,{imagePath:mappl10n.options.baseurl+"/lib/js-markerclustererplus-main/images/m"}),this.clusterer=new MarkerClusterer(this.map_,[],e))}},clustersReset:function(){this.clusterer&&("leaflet"==mappl10n.options.engine?this.clusterer.clearLayers():this.clusterer.clearMarkers())},clustersSet:function(){if(this.clusterer){var e=[];for(let t=0;t<this.pois_.length;t++)this.pois_[t].type||e.push(this.pois_[t].overlay);"leaflet"==mappl10n.options.engine?(this.clusterer.addLayers(e),this.map_.addLayer(this.clusterer)):this.clusterer.addMarkers(e)}},fetchPois:function(e){var t=new Date;this.poiClose();var i={action:"mapp_query",debug:mappl10n.options.debug,filters:this.filters,query:this.query,url:{href:window.location.href,search:window.location.search}};this.spinner(!0),this.pagination.page=1,s.mappLib.ajax({data:i,callback:(i,n)=>{this.spinner(!1),i&&"OK"==i.status&&(this.setPois(i.data.pois),this.renderList(),mappl10n.options.debug&&console.log("Results: "+i.data.pois.length+" AJAX: "+(new Date-t)+(i.data.timing?i.data.timing:"")),e&&e())}})},fitBounds:function(e){return this.map_.fitBounds(e)},getBounds:function(){try{return this.map_.getBounds()}catch(e){return null}},getCenter:function(){try{return this.map_.getCenter()}catch(e){return null}},getMap:function(){return this.map_},getPois:function(){return this.pois_},getZoom:function(){try{return this.map_.getZoom()}catch(e){return null}},isFilterable:function(){const e=this.otype&&mappl10n.options.filters[this.otype]&&mappl10n.options.filters[this.otype].length>0;return mappl10n.options.pro&&e&&!this.isEditable&&!!this.query},isSearchable:function(){return!!this.isEditable},onAction:function(e,t,i){switch(e){case"geolocate":const{geolocate:e}=(0,u.useGeocoding)({withBusinesses:this.isEditable});e((e=>{e&&e.geometry&&e.geometry.location&&this.setView(e.geometry.location,parseInt(mappl10n.options.poiZoom))}),!1);break;case"sidebar-toggle":this.toggleSidebar();break;case"view-map":this.toggleSidebar(!1);break;case"view-list":this.toggleSidebar(!0);break;default:return!0}},doSearch:function(e){if(e&&e.geometry){var t=e.geometry.location?e.geometry.location:null,i=e.geometry.viewport?e.geometry.viewport:null;if("leaflet"==mappl10n.options.engine)var n=new L.LatLng(t.lat,t.lng),o=i?new L.LatLngBounds(new L.LatLng(i.sw.lat,i.sw.lng),new L.LatLng(i.ne.lat,i.ne.lng)):n.toBounds(1e3*mappl10n.options.radius);else{var s=new google.maps.Circle({center:t,radius:1e3*mappl10n.options.radius});o=i?new google.maps.LatLngBounds(new google.maps.LatLng(i.sw.lat,i.sw.lng),new google.maps.LatLng(i.ne.lat,i.ne.lng)).union(s.getBounds()):s.getBounds()}o&&this.fitBounds(o),this.setView(t)}},poiClick:function(e,t){if(this.poiClose(),"poi"!=mappl10n.options.mashupClick&&this.query&&"post"==this.otype&&e.oid&&e.url&&!this.isEditable)switch(mappl10n.options.mashupClick){case"post":return void window.location.assign(e.url);case"postnew":return void window.open(e.url);case"postmodal":const t=document.createElement("div");return document.body.appendChild(t),wp.element.render(m(c.MappPopupModal,{onClose:()=>{wp.element.unmountComponentAtNode(t),t.remove()},poi:e}),t)}else this.poiOpen(e,t)},poiClose:function(){this.opened&&this.poiHighlight(this.opened,!1),this.opened=null,wp.element.unmountComponentAtNode(this.div.iw.get(0)),this.iw.close(),this.renderDirections({isOpen:!1}),this.renderList(),this.onPoiClose&&this.onPoiClose()},poiHighlight:function(e,t){"icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.isEditable||(t?e.highlight(!0):e.highlight(!1))},poiHover:function(e){e&&this.opened==e||(this.hovered&&this.hovered!=this.opened&&(this.poiHighlight(this.hovered,!1),this.hovered=null),e&&(this.hovered=e,this.poiHighlight(this.hovered,!0),mappl10n.options.tooltips&&!this.isEditable?(this.poiClose(),this.poiOpen(e,null,"popup")):this.poiHighlight(e,!0)),this.renderList())},poiInsert:function(e){this.pois_.unshift(e),e.setMap(this),this.renderList()},poiOpen:function(e,t){this.poiClose(),this.div.layout.hasClass("mapp-view-mini")&&this.toggleSidebar(!1),this.popupOpen(e,t,"popup"),this.poiHighlight(e,!0),this.onPoiOpen&&this.onPoiOpen(e)},poiRemove:function(e){var t=h.inArray(e,this.pois_);-1!=t&&(this.pois_[t].setMap(null),this.pois_.splice(t,1),this.renderList())},popupClose:function(){"icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.isEditable||(this.iw.close(),this.renderDirections({isOpen:!1}),h(this).triggerHandler("mapp.close"))},popupOpen:function(e,t){let i=null;this.popupClose(),t&&t.featureData?i=t.featureData:t&&t.propagatedFrom&&t.propagatedFrom.feature&&t.propagatedFrom.feature.properties&&(i=t.propagatedFrom.feature.properties),this.isEditable||(wp.element.render(m(p.MappPoiContent,{context:"popup",feature:i,onDirectionsClick:()=>this.renderDirections({isOpen:!0,from:null,to:e}),poi:e,template:this.templates.popup,thumbs:mappl10n.options.thumbsPopup}),this.div.iw.get(0)),e.images&&e.images.length&&this.div.iw.addClass(" mapp-thumb-"+mappl10n.options.thumbsPopup));var n=this.clusterGetLatLng(e),o=n||e.getPosition(t);this.iw.open({position:o,anchorPoint:e.getAnchorPoint(t)}),this.opened=e},recenter:function(){var e=this.center&&this.center.hasOwnProperty("lat")&&this.center.hasOwnProperty("lng")?this.center:null,t=this.zoom&&parseInt(this.zoom)?parseInt(this.zoom):null;if(e&&!t&&this.query)return void this.doSearch({geometry:{location:{lat:e.lat,lng:e.lng}}});if(e)return void this.setView(e,t||1);if(0==this.pois_.length)return void this.setView({lat:0,lng:0},t||1);if(1==this.pois_.length)return void this.pois_[0].center(t);let i="leaflet"==mappl10n.options.engine?new L.LatLngBounds:new google.maps.LatLngBounds;for(var n=0;n<this.pois_.length;n++){var o=this.pois_[n].getBounds(),s=this.pois_[n].getPosition();i=o?"leaflet"==mappl10n.options.engine?i.extend(o):i.union(o):i.extend(s)}t?this.setView(i.getCenter().toJSON(),t):this.fitBounds(i)},render:function(){let e=this.name?this.name+"-layout":"",t="mapp-layout",i=this.layout&&window.parent==window?this.layout:"left";if(t+="left"==i?" mapp-list-left":" mapp-inline",t+="leaflet"==mappl10n.options.engine?" mapp-leaflet ":" mapp-google ",t+=this.classname?" "+this.classname:"",!document.body.classList.contains("block-editor-page")){let e=this.alignment?this.alignment:mappl10n.options.alignment;if(e){let i=" align"+e+" mapp-align-"+e;window.parent==window?t+=i:h(window.frameElement).parent().parent().addClass(i)}}var n=s.mappLib.template("map",{map:this,layout:i});if(this.sel){if(this.div.layout=h(this.sel),this.div.layout.html(n),this.div.layout.addClass(t),this.div.layout.attr("id",e),!this.div.layout.length)return console.log("MapPress: Missing map name or container for map: "+this.name)}else{let i=h('<div id="'+e+'" class="'+t+'">');i.html(n);let o=h("#"+this.name+"-layout");if(!o.length)return console.log("MapPress: Missing map name or container for map: "+this.name);o.replaceWith(i),this.div.layout=i}h.each(["canvas","content","controls","directions","filters","header","list","menu-component","search","sidebar","wrapper"],((e,t)=>{this.div[t]=h(".mapp-"+t,this.div.layout)})),this.setSize({width:this.width,height:this.height}),this.set({poiList:this.poiList})},renderDirections:function(e){let{isOpen:t,from:i,to:o}=e;if(this.toggleView("directions",t),t){const e=o?o.getAddress():"",t=i?i.getAddress():"";wp.element.render(m(n.MappDirections,{from:t,to:e,onClose:()=>{wp.element.unmountComponentAtNode(this.div.directions.get(0)),this.toggleView("directions",!1)}}),this.div.directions.get(0))}else this.div.directions.length&&wp.element.unmountComponentAtNode(this.div.directions.get(0))},renderFilters:function(){this.div.filters&&this.div.filters.length&&wp.element.render(m(o.MappFilters,{onFilterChange:e=>{this.filters=e,this.fetchPois()},poiCount:this.pagination.count}),this.div.filters.get(0))},renderList:function(){let e=[];if(!this.poiList)return;if(e=this.pois_,this.isSearchable()&&!this.isEditable){e=[];let t=this.getBounds();t&&_.map(this.pois_,((i,n)=>{t.contains(i.getPosition())&&e.push(i)}))}this.pagination.count!=e.length&&(this.pagination.count=e.length,this.renderFilters());let t="mapp-list-component";!this.isEditable&&mappl10n.options.thumbsList&&(t+=" mapp-thumb-"+mappl10n.options.thumbsList);const i=e=>this.pois_.find((t=>t.id==e)),n=(e,t)=>{let i=_.findIndex(this.pois_,(t=>t.id==e)),n=_.findIndex(this.pois_,(e=>e.id==t));this.pois_.splice(n,0,this.pois_.splice(i,1)[0])};wp.element.render(m(r.MappPoiList,{bounds:this.getBounds(),className:t,hovered:this.hovered?this.hovered.id:null,isEditable:this.isEditable,isPaged:!0,map:this,onClick:e=>this.poiClick(i(e)),onDirectionsClick:e=>this.renderDirections({isOpen:!0,from:null,to:i(e)}),onDragDrop:e=>{let{from:t,to:i}=e;return n(t,i)},onHover:e=>this.poiHover(i(e)),onPage:e=>{this.pagination.page=e,this.renderList()},onSort:e=>{this.pois_=e,this.renderList()},opened:this.opened?this.opened.id:null,page:this.pagination.page,pois:e,template:this.isEditable?null:this.templates.item}),this.div.list.get(0))},resetPois:function(){for(var e=0;e<this.pois_.length;e++)this.pois_[e].setMap(null);this.pois_=[],this.clustersReset()},resize:function(){this.map_&&("leaflet"==mappl10n.options.engine?this.map_.invalidateSize():mapp.event.trigger(this.map_,"resize"),this.toggleView("mini"))},sanity:function(){const e="<a href='"+mappl10n.options.adminurl+"/admin.php?page=mappress'>"+__("MapPress Settings")+"</a>",t="<a href ='http://mappresspro.com/mappress-faq' target='_blank'>"+__("MapPress FAQ")+"</a>",i="<a href='http://mappresspro.com/chris-contact', target='_blank'>"+__("contact support")+"</a>",n="<br/>"+sprintf(__("Please see the %s for help, or %s and provide this error message."),t,i),o=sprintf("<div class='mapp-errors-toolbar'><div class='mapp-errors-apikey'>%s</a></div>",__("Get an API Key"));this.div.layout.on("click",".mapp-errors-apikey",(()=>{window.open("https://mappresspro.com/how-to-get-a-google-maps-api-key")}));let s=[{condition:"leaflet"==mappl10n.options.engine&&"undefined"==typeof L,title:__("Leaflet library not loaded"),text:__("A theme or plugin is preventing the Leaflet library from loading.")+n},{condition:"google"==mappl10n.options.engine&&"undefined"==typeof google,title:__("Google Maps API not loaded"),text:__("A theme or plugin is preventing Google Maps from loading.")+n},{condition:"google"==mappl10n.options.engine&&!mappl10n.options.apikey,title:__("Google Maps API key required"),text:sprintf(__("Please enter a Google Maps API key in the %s, or switch to Leaflet maps."),e)+o},{condition:h('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1,title:__("Google Maps API loaded multiple times"),text:__("A theme or plugin has loaded Google Maps twice")+n},{condition:"undefined"==typeof _,title:__("Underscore library not loaded"),text:__("A theme or plugin is preventing the underscore.js library from loading.")+n}];_.map(s,(e=>{if(e.condition){mappl10n.options.admin&&this.sanityOutput({title:e.title,text:e.text?e.text:""});let t=jQuery("<span>"+e.text.replace("<br/>","\n")+"</span>").text();console.error(__("Map error")+": "+e.title+" - "+t)}}))},sanityOutput(e){if(!h(".mapp-errors-overlay",this.div.content).length){let e="<div class='mapp-errors-overlay'></div><div class='mapp-errors'><div class='mapp-errors-header'>"+__("Oops! Something went wrong.")+"</div><div class='mapp-errors-list'></div></div>";this.div.content.prepend(e)}h(".mapp-errors-list",this.div.content).append("<div class='mapp-errors-title'>"+e.title+"</div><div class='mapp-errors-text'>"+e.text+"</div>")},set:function(e){for(let i in e){var t=e[i];switch(i){case"mapTypeId":this.mapTypeId=t,this.setMapTypeId(t);break;case"poiList":this.poiList=null==t?mappl10n.options.poiList:t,this.toggleSidebar(mappl10n.options.poiListOpen),this.toggleView("mini");break;case"search":this.search=t;break;case"style":this.setStyle(t);break;case"title":this.title=t;break;default:this[i]=t}}},setMapTypeId:function(e){const t=mappl10n.options.standardStyles.concat(mappl10n.options.userStyles),i=_.find(t,(t=>t.id==e));!mappl10n.options.style||"roadmap"!=e&&"streets"!=e&&i||(e=mappl10n.options.style);let n=_.find(t,(t=>t.id==e));n=n||t[0],this.setStyle(n)},setPois:function(e){if(this.resetPois(),e)for(var t=0;t<e.length;t++){var i=new mapp.Poi(e[t]);this.pois_.push(i),i.setMap(this)}this.clustersSet(),this.setLines()},setSize:function(e){var t=mappl10n.options.sizes[mappl10n.options.size]?mappl10n.options.sizes[mappl10n.options.size]:mappl10n.options.sizes[0];let i={},n={};if(e&&e.hasOwnProperty("width")&&(i={width:e.width?e.width:t.width}),e&&e.hasOwnProperty("height")){let i=e.height?e.height:t.height;n="string"==typeof i&&i.includes("%")?{"padding-bottom":i,height:"auto"}:{"padding-bottom":0,height:i}}window.frameElement&&window.frameElement.classList.contains("mapp-iframe")?(h(window.frameElement).parent().parent().css(i),h(window.frameElement).parent().css(n)):this.embed?(i={height:"100%"},n={"padding-bottom":0,height:"100%"}):(this.div.layout.css(i),this.div.wrapper.css(n)),this.resize()},setStyle:function(e){if("leaflet"==mappl10n.options.engine){let t={mapbox:{accessToken:mappl10n.options.mapbox,attribution:['<a href="https://www.mappresspro.com" target="_blank">MapPress</a>','<a href="https://www.mapbox.com/about/maps" target="_blank">&copy; Mapbox<a/>','<a href="https://www.openstreetmap.org/about/" target="_blank">&copy; OpenStreetMap</a>'],url:"https://api.mapbox.com/styles/v1/{user}/{mapboxid}/tiles/256/{z}/{x}/{y}{r}?access_token={accessToken}&fresh=true",zoomOffset:0},osm:{attribution:['<a href="https://www.mappresspro.com" target="_blank">MapPress</a>','<a href="https://openstreetmap.org" target="_blank">Map data (c) OpenStreetMap</a>'],url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}}[e.provider],i=h.extend({},t,e);L.tileLayer(t.url,i).addTo(this.map_)}else if(this.map_.setMapTypeId("standard"==e.type?e.id:"roadmap"),e.json){let t=null;try{t=JSON.parse(e.json)}catch(e){console.log("Invalid JSON in map style")}this.map_.setOptions({styles:t||null})}else this.map_.setOptions({styles:null})},setLines:function(){if(this.polyline&&("leaflet"==mappl10n.options.engine?this.polyline.remove():this.polyline.setMap(null),this.polyline=null),this.isEditable||!this.lines&&!mappl10n.options.lines||this.pois_.length<2)return;const e={...mappl10n.options.lineOpts},t=[];if(_.map(this.pois_,(e=>{t.push(e.getPosition())})),"leaflet"==mappl10n.options.engine)this.polyline=new L.Polyline(t,e).addTo(this.map_);else{const i={strokeColor:e.color,strokeWeight:e.weight,strokeOpacity:e.opacity};e.icons&&(_.map(e.icons,(e=>{e.icon.path=parseInt(e.icon.path)})),e.icons[0].repeat="50px"),this.polyline=new google.maps.Polyline({map:this.map_,path:t,...e,...i}),e.animate&&e.icons&&e.icons.length&&this.setLinesAnimation()}},setLinesAnimation:function(){let e=0;const t=this.polyline.get("icons");t[0].repeat.replace("%","").replace("px",""),window.setInterval((()=>{e+=1,t[0].offset=e+(t[0].repeat.indexOf("%")>=0?"%":"px"),this.polyline.set("icons",t)}),20)},setView:function(e,t,i){"leaflet"==mappl10n.options.engine?(null==t&&(t=this.map_.getZoom()?this.map_.getZoom():0),this.map_.setView(e,t,i)):(e=e&&!e.toJSON?{lat:parseFloat(e.lat),lng:parseFloat(e.lng)}:e,t=t?parseInt(t):null,e&&this.map_.setCenter(e),t&&this.map_.setZoom(t))},spinner:function(e){this.div.layout.toggleClass("mapp-busy",e)},toggleLayer:function(e,t){t=void 0!==t?t:null==this.layers_[e].getMap(),h.each(["traffic","bicycling","transit"],((e,t)=>{this.layers_[t].setMap(null)})),t&&this.layers_[e].setMap(this.map_)},toggleSidebar:function(e){this.div.layout.toggleClass("mapp-sidebar-open",e),this.isSidebarOpen=e,setTimeout((()=>this.resize()),100)},togglePois:function(e){e=!!e;for(var t=0;t<this.pois_.length;t++)this.pois_[t].setVisible(e)},toggleView:function(e,t){if("mini"==e){let e=this.div.layout.hasClass("mapp-view-mini"),t=!("inline"==this.layout||!this.poiList)&&this.div.layout.width()<mappl10n.options.mini;return this.div.layout.toggleClass("mapp-view-mini",t),void(t!=e&&this.toggleSidebar(!t))}t=void 0===t?!this.div.layout.hasClass("mapp-view-"+e):t,this.div.layout.toggleClass("mapp-view-"+e,t),"list"==e&&t&&this.renderList(),"directions"==e&&this.resize()},toJSON:function(){this.pois=[];for(var e=0;e<this.pois_.length;e++)this.pois.push(this.pois_[e].toJSON());return{center:this.center,height:this.height,mapid:this.mapid,mapTypeId:this.mapTypeId,metaKey:this.metaKey,pois:this.pois,oid:this.oid,otype:this.otype,search:this.search,title:this.title,width:this.width,zoom:this.zoom}}}},689:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.Infobox=function(t,i){this.map=t,this.anchorPoint=null,this.fudge=30,this.isOpen=!1,this.mapDiv="leaflet"==mappl10n.options.engine?t.getContainer():t.getDiv(),this.node=null,this.opts=_.extend({clip:!0,pan:!0},i),this.overlayView=null,this.position=null,this.size=null,this.wrapper=null,this.wrapper=e('<div class="mapp-ib-wrapper" tabindex="0"><div class="mapp-ib-content"><div class="mapp-ib" tabindex="0"></div><div class="mapp-ib-tip"></div></div></div>'),i&&i.className&&this.wrapper.addClass(i.className),this.node=e(".mapp-ib-content",this.wrapper),"leaflet"==mappl10n.options.engine?mapp.event.addListener(this.map,"move",(e=>{this.isOpen&&this.draw()})):(this.overlayView=new google.maps.OverlayView,this.overlayView.onAdd=function(){},this.overlayView.setMap(this.map),this.overlayView.draw=()=>{this.isOpen&&this.draw()}),this.node.get(0).addEventListener("load",(()=>{"leaflet"==mappl10n.options.engine?this.open({position:this.position,anchorPoint:this.anchorPoint}):mapp.event.addListenerOnce(this.map,"panend",(e=>{this.open({position:this.position,anchorPoint:this.anchorPoint})}))}),{capture:!0});var n="leaflet"==mappl10n.options.engine?this.map.getContainer():this.map.getDiv();this.wrapper.appendTo(n),"leaflet"==mappl10n.options.engine&&t.on("load",(()=>{L.DomEvent.disableClickPropagation(this.wrapper.get(0))}))},mapp.Infobox.prototype={close:function(){this.isOpen=!1,this.wrapper&&this.wrapper.removeClass("mapp-open")},draw:function(){if(document.fullscreenElement||this.map.isFullscreen)return;if(!this.position)return;let e,t,i;if(e=this.node.outerWidth(),t=this.node.outerHeight(),"leaflet"==mappl10n.options.engine)i=this.map.latLngToContainerPoint(this.position);else{const e=this.overlayView.getProjection();if(!e)return;i=e.fromLatLngToContainerPixel(this.position)}this.wrapper.css({left:i.x-e/2+this.anchorPoint.x,bottom:this.mapDiv.clientHeight-i.y-this.anchorPoint.y})},getContent:function(){return e(".mapp-ib",this.node).get(0)},open:function(e){this.position=e.position,this.anchorPoint=e.anchorPoint?e.anchorPoint:{x:0,y:0},this.wrapper.addClass("mapp-open"),this.wrapper.css({left:0,bottom:0,width:"auto",height:"auto"});const{width:t,height:i}=this.wrapper.get(0).getBoundingClientRect();this.wrapper.css({width:t,height:i}),"leaflet"==mappl10n.options.engine&&this.map.stop(),this.isOpen=!0,this.draw(),this.pan()},pan:function(){const t=this.node.outerWidth(),i=this.node.outerHeight(),n=e(this.mapDiv).width(),o=e(this.mapDiv).height();if("leaflet"==mappl10n.options.engine)var s=this.map.latLngToContainerPoint(this.position);else{var a=this.overlayView.getProjection();s=a?a.fromLatLngToContainerPixel(this.position):null}if(!s)return;var l={x:s.x,y:s.y};s.x+t/2+this.anchorPoint.x>n-this.fudge?l.x=Math.max(n-t/2-this.anchorPoint.x-this.fudge,n/2-this.anchorPoint.x):s.x-t/2+this.anchorPoint.x<this.fudge&&(l.x=Math.min(t/2+this.anchorPoint.x+this.fudge,n/2-this.anchorPoint.x)),s.y+this.anchorPoint.y-i<this.fudge&&(l.y=i-this.anchorPoint.y+this.fudge),l.y>=o&&(l.y=o-this.fudge);const p={x:s.x-l.x,y:s.y-l.y};p.x<=-1||p.x>=1||p.y<=-1||p.y>=1?"leaflet"==mappl10n.options.engine?this.map.panBy([p.x,p.y]):(mapp.event.addListenerOnce(this.map,"idle",(e=>{mapp.event.trigger(this.map,"panend")})),this.map.panBy(p.x,p.y)):mapp.event.trigger(this.map,"panend")},setContent:function(t){e(".mapp-ib",this.node).empty().append(t)}}},628:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.lib={template:function(t,i){if(mapp.lib.templates=mapp.lib.templates?mapp.lib.templates:{},!mapp.lib.templates[t]){var n=mappl10n.options.templates?mappl10n.options.template[t]:e("#mapp-tmpl-"+t).html();if(!n)return"";mapp.lib.templates[t]=_.template(n,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return mapp.lib.templates[t](i)}},jQuery,mapp.event={addListener:function(e,t,i){t=t.split(" ");for(var n=0;n<t.length;n++)"leaflet"==mappl10n.options.engine?e.on(t[n],i):google.maps.event.addListener(e,t[n],i)},addListenerOnce:function(e,t,i){t=t.split(" ");for(var n=0;n<t.length;n++)"leaflet"==mappl10n.options.engine?e.once(t[n],i):google.maps.event.addListenerOnce(e,t[n],i)},clearInstanceListeners:function(e){"leaflet"==mappl10n.options.engine?e.off():google.maps.event.clearInstanceListeners(e)},clearListeners:function(e,t){t=t.split(" ");for(var i=0;i<t.length;i++)"leaflet"==mappl10n.options.engine?e.off(t[i]):google.maps.event.clearListeners(e,t[i])},trigger:function(e,t,i){"leaflet"==mappl10n.options.engine?e.fire(t,i):google.maps.event.trigger(e,t,i)}}},436:()=>{var e;window.mapp=window.mapp||{},e=jQuery,mapp.Marker=function(e){this.anchorPoint=null,this.div=null,this.draggable=null,this.icon=null,this.map=null,this.position=null,this.visible=null,this.zIndex=0,this.setValues(e),this.overlayView=new google.maps.OverlayView,this.overlayView.draw=()=>this.draw(),this.overlayView.onAdd=()=>this.onAdd(),this.overlayView.onRemove=()=>this.onRemove()},mapp.Marker.prototype={draw:function(){if(!this.div||!this.icon)return;let t=this.overlayView.getProjection();if(t){let i=t.fromLatLngToDivPixel(this.position),n=this.icon.scaledSize?this.icon.scaledSize:{width:32,height:32};e(this.div).css({left:i.x-n.width/2,top:i.y-n.height})}},getDiv:function(){return this.div},getDraggable:function(){return this.draggable},getMap:function(){return this.map},getPosition:function(){return this.position},getVisible:function(){return this.visible},handleEvent:function(e){let t="on"+e.type[0].toUpperCase()+e.type.slice(1);this[t]&&this[t](e)},onAdd:function(){let t=this.overlayView.getPanes();t&&(this.div=e('<div class="mapp-marker">'),this.div.appendTo(t.overlayMouseTarget),this.icon&&this.setIcon(),google.maps.OverlayView.preventMapHitsAndGesturesFrom(this.div.get(0)),this.div.get(0).addEventListener("click",(()=>{(!this.dragging||this.dragging&&!this.dragging.moved)&&mapp.event.trigger(this,"click"),this.dragging=null})),this.div.get(0).addEventListener("mouseenter",this),this.div.get(0).addEventListener("mouseleave",this),this.setDraggable(this.draggable))},onMouseenter:function(e){mapp.event.trigger(this,"mouseover")},onMouseleave:function(e){mapp.event.trigger(this,"mouseout")},onPointerdown:function(e){const t=this.map.getDiv().getBoundingClientRect(),i=this.overlayView.getProjection().fromLatLngToContainerPixel(this.position);this.dragging={moved:!1,startPixel:{x:e.clientX,y:e.clientY},offset:{x:i.x-(e.clientX-t.left),y:i.y-(e.clientY-t.top)}},this.toggleDragEvents(!0)},onPointermove:function(e){if(Math.abs(e.clientX-this.dragging.startPixel.x)+Math.abs(e.clientY-this.dragging.startPixel.y)<3)return;const t=this.map.getDiv().getBoundingClientRect();let i={x:e.clientX-t.left+this.dragging.offset.x,y:e.clientY-t.top+this.dragging.offset.y};this.setPosition(this.overlayView.getProjection().fromContainerPixelToLatLng(i)),this.draw(),this.dragging.moved=!0,mapp.event.trigger(this,"dragstart")},onPointercancel:function(e){this.onPointerup(e)},onPointerup:function(e){this.dragging&&this.dragging.moved&&mapp.event.trigger(this,"dragend"),this.toggleDragEvents(!1)},onRemove:function(){this.div&&(this.toggleDragEvents(!1),this.div.remove(),this.div=null)},set:function(e,t){let i="set"+e[0].toUpperCase()+e.slice(1);this[i]&&this[i](t)},setDraggable:function(e){this.draggable=e,this.map&&(this.div.get(0).removeEventListener("pointerdown",this,{passive:!0}),e&&this.div.get(0).addEventListener("pointerdown",this,{passive:!0}))},setIcon:function(e){if(void 0!==e&&(this.icon=e),this.icon&&this.div){let e='<img draggable="false" src="'+this.icon.url+'">';this.div.html(e);let t=this.icon.scaledSize?this.icon.scaledSize:{width:32,height:32};this.div.css({width:t.width,height:t.height}),this.setZIndex(),this.draw()}},setMap:function(e){this.map=e,this.overlayView.setMap(e)},setPosition:function(e){this.position=e},setValues:function(e){for(const t in e)this.set(t,e[t])},setVisible:function(e){this.visible=e,this.div&&this.div.css("visibility",e?"visible":"hidden")},setZIndex:function(e){this.zIndex=void 0!==e?e:this.zIndex,this.div&&this.div.css("z-index",e)},toggleDragEvents(e){document.removeEventListener("pointermove",this,{passive:!0}),document.removeEventListener("pointerup",this,{passive:!0}),document.removeEventListener("pointercancel",this,{passive:!0}),e&&(document.addEventListener("pointermove",this,{passive:!0}),document.addEventListener("pointerup",this,{passive:!0}),document.addEventListener("pointercancel",this,{passive:!0}))}}},548:(e,t,i)=>{"use strict";i.r(t);var n=i(939);window.mapp=window.mapp||{};var o;o=jQuery,mapp.Poi=function(e){if(this.defaults={address:null,body:null,html:null,iconid:null,id:null,images:null,kml:null,map:null,overlay:null,oid:null,otype:null,poly:null,props:null,title:"",url:null,type:null,viewport:null},o.extend(this,this.defaults,e),this.id=n.mappLib.nanoid(),e&&e.correctedAddress&&(this.address=e.correctedAddress),"leaflet"==mappl10n.options.engine&&this.isPoly()&&(this.type=null),!e.overlay)switch(this.type){case"polygon":this.overlay=new google.maps.Polygon({paths:e.poly.paths}),this.setColors(e.poly);break;case"polyline":this.overlay=new google.maps.Polyline({path:e.poly.path}),this.setColors(e.poly);break;case"circle":var t=new google.maps.LatLng(e.point.lat,e.point.lng);this.overlay=new google.maps.Circle({center:t,radius:parseFloat(e.poly.radius)}),this.setColors(e.poly);break;case"rectangle":this.overlay=new google.maps.Rectangle({bounds:mapp.poi.viewportToBounds(this.viewport)}),this.setColors(e.poly);break;case"kml":var i=e.kml&&e.kml.url?e.kml.url:"";this.overlay="leaflet"==mappl10n.options.engine?omnivore.kml(i):new google.maps.KmlLayer({url:i,preserveViewport:!0,suppressInfoWindows:!0});break;default:"leaflet"==mappl10n.options.engine?this.overlay=L.marker([e.point.lat,e.point.lng]):this.overlay=new mapp.Marker({position:new google.maps.LatLng(e.point.lat,e.point.lng)}),this.set({iconid:e.iconid})}},mapp.Poi.prototype={addEvents:function(){mapp.event.clearInstanceListeners(this.overlay),mapp.event.addListener(this.overlay,"click",(e=>{this.onClick(e)})),mapp.event.addListener(this.overlay,"mouseover",(e=>{this.map.poiHover(this)})),mapp.event.addListener(this.overlay,"mouseout",(e=>{this.map.poiHover(null)})),"kml"==this.type&&this.addKmlEvents(),this.map.isEditable&&(this.addPolyEditEvents(!0),this.map.isEditable&&mapp.event.addListener(this.overlay,"dragstart",(()=>{this.viewport=null,this.addPolyEditEvents(!1)})),mapp.event.addListener(this.overlay,"dragend",(()=>{this.updateFromOverlay(),this.addPolyEditEvents(!0)})))},addKmlEvents:function(){"leaflet"==mappl10n.options.engine?(mapp.event.addListenerOnce(this.overlay,"ready",(()=>{this.updateFromOverlay()})),mapp.event.addListenerOnce(this.overlay,"error",(()=>{alert(mappl10n.kml_error+" : "+this.kml.url)}))):(mapp.event.addListener(this.overlay,"defaultviewport_changed",(()=>{this.updateFromOverlay()})),mapp.event.addListener(this.overlay,"status_changed",(()=>{"OK"!=this.overlay.getStatus()&&alert(mappl10n.kml_error+" : "+this.kml.url)})))},addPolyEditEvents(e){this.isPoly()&&"google"==mappl10n.options.engine&&("rectangle"==this.type&&(mapp.event.clearListeners(this.overlay,"bounds_changed"),e&&mapp.event.addListener(this.overlay,"bounds_changed",(()=>{this.updateFromOverlay()}))),"circle"==this.type&&(mapp.event.clearListeners(this.overlay,"center_changed radius_changed"),e&&mapp.event.addListener(this.overlay,"center_changed radius_changed",(()=>{this.updateFromOverlay()}))),"polygon"!=this.type&&"polyline"!=this.type||(mapp.event.clearListeners(this.overlay,"rightclick"),mapp.event.clearListeners(this.overlay.getPath(),"insert_at remove_at set_at"),e&&(mapp.event.addListener(this.overlay,"rightclick",(e=>{null!=e.vertex&&this.overlay.getPath().getLength()>2&&(this.overlay.getPath().removeAt(e.vertex),this.updateFromOverlay())})),mapp.event.addListener(this.overlay.getPath(),"insert_at remove_at set_at",(()=>{this.updateFromOverlay()})))))},center:function(e){var t=this.getBounds();if("number"!=typeof e)if(t){var i=t.getNorthEast().toJSON().lng-t.getSouthWest().toJSON().lng;i<0&&(i+=360),e=Math.round(Math.log(360*this.map.div.canvas.width()/i/256)/Math.LN2),this.map.setView(this.getPosition(),e,{animate:!1})}else this.map.setView(this.getPosition(),parseInt(mappl10n.options.poiZoom));else this.map.setView(this.getPosition(),e)},getAddress:function(){return this.address?this.address:this.getPosition().toUrlValue()},getAnchorPoint:function(e){switch(this.isPoly()?"poly":this.type){case"kml":return e&&e.pixelOffset?{x:e.pixelOffset.width,y:e.pixelOffset.height}:{x:0,y:0};case"poly":return{x:0,y:0};default:return mappl10n.options.iconScale&&mappl10n.options.iconScale[0]&&mappl10n.options.iconScale[1]?{x:0,y:0-mappl10n.options.iconScale[1]}:{x:0,y:-32}}},getBounds:function(){var e;switch(this.type){case"polyline":e=new google.maps.LatLngBounds,this.overlay.getPath().forEach((function(t){e.extend(t)}));break;case"polygon":e=new google.maps.LatLngBounds,this.overlay.getPaths().forEach((function(t){t.forEach((function(t){e.extend(t)}))}));break;case"rectangle":case"circle":e=this.overlay.getBounds();break;case"kml":e=(e="leaflet"==mappl10n.options.engine?this.overlay.getBounds().isValid()?this.overlay.getBounds():null:this.overlay.getDefaultViewport())||mapp.poi.viewportToBounds(this.viewport);break;default:return mapp.poi.viewportToBounds(this.viewport)}return e},getColors:function(){var e={};for(var t in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})void 0!==this.overlay[t]&&(e[t]=this.overlay[t]);return e},getPosition:function(e){if(!this.type)return"leaflet"==mappl10n.options.engine?L.latLng(this.point):new google.maps.LatLng(this.point.lat,this.point.lng);if("kml"==this.type&&e&&e.latLng)return e.latLng;const t=this.getBounds();return"leaflet"==mappl10n.options.engine?t&&t.isValid()?t.getCenter():new L.latLng(0,0):t?t.getCenter():new google.maps.LatLng(0,0)},highlight:function(e){if(!this.type){var t="leaflet"==mappl10n.options.engine?o(this.overlay._icon):this.overlay.getDiv();if(t){switch(this.map&&this.map.isEditable?"circle":mappl10n.options.highlight){case"circle":t.toggleClass("mapp-marker-circle",e);break;case"icon":var i=e?n.mappLib.getIcon(mappl10n.options.highlightIcon):n.mappLib.getIcon(this.iconid);if("leaflet"==mappl10n.options.engine&&this.overlay.getIcon().options.iconUrl==i.options.iconUrl)return;this.overlay.setIcon(i);break;case"scale":t.addClass("mapp-marker"),t.toggleClass("mapp-marker-scale",e)}this.setZIndex(e?1e4:0)}}},isPoly:function(){return-1!=jQuery.inArray(this.type,["polyline","polygon","circle","rectangle"])},onClick:function(e){this.map.poiClick(this,e)},set:function(e){for(var t in e){var i=e[t];"iconid"===t?this.type||(this.iconid=i,this.overlay.setIcon(n.mappLib.getIcon(i))):this[t]=i}},setColors:function(e){var t={};for(var i in{strokeColor:"",strokeOpacity:"",strokeWeight:"",fillColor:"",fillOpacity:""})e&&void 0!==e[i]&&(t[i]=e[i]);this.overlay.setOptions(t)},setEditable:function(e){"kml"!=this.type&&("leaflet"==mappl10n.options.engine?this.overlay.options.draggable=e:this.overlay.setDraggable(e),this.isPoly()&&this.overlay.setEditable(e))},setMap:function(e){this.map=e,null!=e?(this.setEditable(this.map.isEditable),this.addEvents(),!this.type&&this.map.clusterer||("leaflet"==mappl10n.options.engine?this.overlay.addTo(e.getMap()):this.overlay.setMap(e.getMap()))):"leaflet"==mappl10n.options.engine?this.overlay.remove():this.overlay.setMap(null)},setVisible:function(e){void 0!==this.overlay.setVisible&&this.overlay.setVisible(e)},setZIndex:function(e){"leaflet"==mappl10n.options.engine?this.type||this.overlay.setZIndexOffset(e):this.overlay.set("zIndex",e)},toJSON:function(){var e={address:this.address,body:this.body,iconid:this.iconid,images:this.images,point:this.point,title:this.title,type:this.type,viewport:this.viewport};return"kml"==this.type?e.kml=this.kml:this.isPoly()&&(e.poly=this.poly),e},updateFromOverlay(){_.extend(this,mapp.poi.parseOverlay(this.type,this.overlay))}},mapp.poi={boundsToViewport:function(e){return e?{sw:e.getSouthWest().toJSON(),ne:e.getNorthEast().toJSON()}:null},boundsCenterPoint:function(e){return e&&e.isValid()?e.getCenter().toJSON():{lat:0,lng:0}},pointToLatLng:function(e){return e?"leaflet"==mappl10n.options.engine?L.latLng(this.point):new google.maps.LatLng(e.lat,e.lng):null},viewportToBounds:function(e){return e&&e.sw&&e.ne?"leaflet"==mappl10n.options.engine?new L.LatLngBounds(L.latLng(e.sw.lat,e.sw.lng),L.latLng(e.ne.lat,e.ne.lng)):new google.maps.LatLngBounds(new google.maps.LatLng(e.sw.lat,e.sw.lng),new google.maps.LatLng(e.ne.lat,e.ne.lng)):null},parseOverlay:function(e,t){if("google"==mappl10n.options.engine){if("kml"==e){const e=t.getDefaultViewport();return{point:e?e.getCenter().toJSON():null,viewport:e?mapp.poi.boundsToViewport(e):null}}const i=t instanceof google.maps.Polyline?{strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,stokeWeight:t.strokeWeight}:{fillColor:t.fillColor,fillOpacity:t.fillOpacity,strokeColor:t.strokeColor,strokeOpacity:1,stokeWeight:t.strokeWeight};if("circle"==e)return{point:t.getCenter().toJSON(),poly:{radius:t.getRadius(),...i}};if("rectangle"==e)return{viewport:mapp.poi.boundsToViewport(t.getBounds()),poly:{...i}};if("polyline"==e){const e=[];return t.getPath().forEach((function(t){e.push(t.toJSON())})),{poly:{path:e,...i}}}if("polygon"==e){const e={fillColor:t.fillColor,fillOpacity:t.fillOpacity,strokeColor:t.strokeColor,strokeOpacity:1,stokeWeight:t.strokeWeight},i=[];return t.getPaths().forEach((function(e){var t=[];e.forEach((function(e){t.push(e.toJSON())})),i.push(t)})),{poly:{paths:i,...e}}}if(!e)return{point:t.getPosition().toJSON()}}else{if("kml"==e){const e=t.getBounds();return{point:e&&e.isValid()?e.getCenter().toJSON():null,viewport:e&&e.isValid()?mapp.poi.boundsToViewport(e):null}}if(!e)return{point:"leaflet"==mappl10n.options.engine?t.getLatLng().toJSON():t.getPosition().toJSON()}}}}}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,i),s.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i(117),i(715),i(817),i(10),i(326),i(939),i(602),i(27),i(818),i(50),i(615),i(892),i(628),i(854),i(689),i(436),i(548),i(374)})();
build/index_mappress_admin.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={283:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappAttachControl:()=>d});const o=wp.element.createElement,{addQueryArgs:n}=wp.url,{useCallback:i,useEffect:s,useState:l}=wp.element,{Button:r,Dropdown:p,Spinner:c,TextControl:m}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function d(e){const[t,a]=l({isFetching:!1,results:[],search:"",searchTerm:""});function r(e){a((t=>({...t,...e})))}s((()=>{t.isOpen&&(r({isFetching:!0}),wp.apiFetch({path:n("/wp/v2/search",{search:t.search,per_page:20})}).then((e=>{r({results:e,isFetching:!1})})))}),[t.search,t.isOpen]);const d=i(_.debounce((function(e){r({search:e})}),1e3),[]);function u(a,n){return o("div",{className:"mapp-attach-control"},o("div",{className:"mapp-attach-control-toolbar"},o(m,{autoComplete:"false",value:t.searchTerm,onChange:e=>{r({searchTerm:e}),d(e)},placeholder:__("Search")})),function(){if(t.isFetching)return o(c,null);if(t.results)return t.results.length?o("div",{className:"mapp-attach-items"},t.results.map((t=>o("div",{key:t.id,className:"mapp-attach-item",onClick:()=>{e.onChange(t.id,t.title)}},o("div",{className:"mapp-attach-item-title"},t.title?t.title:__("Untitled")),o("div",{className:"mapp-attach-item-type"},t.subtype))))):o("div",{},__("No posts found"))}())}return o("div",{onClick:e=>e.stopPropagation()},o(p,{onToggle:e=>r({isOpen:e}),renderToggle:e=>{let{isOpen:t,onToggle:a}=e;return o("a",{href:"#",onClick:a},__("Attach"))},renderContent:e=>{let{isOpen:t,onToggle:a}=e;return u()}}))}},569:(e,t,a)=>{"use strict";a.r(t);var o=a(185);window.mapp=window.mapp||{};const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useRef:r,useState:p}=wp.element,{Button:c,Dashicon:m,Modal:d}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function u(e){const[t,a]=p({isOpen:!0,mapid:null});function s(e){a((t=>({...t,...e})))}function l(){const e="undefined"!=typeof tinyMCE&&tinyMCE?tinyMCE.get("content"):null,t=e&&e.selection?e.selection.getSel():null;if(!t||void 0===t.anchorOffset||!t.anchorNode||!t.anchorNode.data)return null;let a=null,o=t.anchorNode.data,n=-1;for(let e=t.anchorOffset-1;e>=0;e--){let t=o[e];if("["==t){n=e;break}if("]"==t||"<"==t||">"==t)break}return n>=0&&(a=wp.shortcode.next("mappress",o,n),a)?a.shortcode.attrs.named.mapid:null}return n(i,null,n("button",{className:"button",type:"button",onClick:e=>{e.preventDefault(),s({isOpen:!0,mapid:l()})}},n(m,{className:"wp-media-buttons-icon",icon:"location"}),__("MapPress")),t.isOpen&&n(o.default,{context:"mce",mapid:t.mapid,onClose:()=>{s({isOpen:!1,mapid:null})},onInsert:e=>function(e){s({isOpen:!1});var t='[mappress mapid="'+e+'"]';"undefined"==typeof wpActiveEditor?__("Please select the post content to insert the map into."):send_to_editor(t)}(e)}))}jQuery(document).on("click",".mapp-classic-button",(e=>{const t=e.currentTarget.parentElement;wp.element.render(n(u),t)}))},847:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappColorPicker:()=>M});var o=a(228);const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:m}=wp.data,{withState:d}=wp.compose,{Button:u,ColorPalette:h,ColorPicker:g,Dashicon:f,Dropdown:b,ExternalLink:y,Modal:v,Panel:k,PanelBody:w,PanelRow:C,Popover:x,RadioControl:N,Spinner:S,TabPanel:O}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function M(e){e={isExtended:null,onChange:null,color:null,opacity:null,weight:null,...e};const[t,a]=c({color:e.color,isCustomOpen:!1,isOpen:!1,opacity:e.opacity?e.opacity:1,weight:e.weight?e.weight:2});function l(e){a((t=>({...t,...e})))}function r(){l({isOpen:!1})}function p(a){l({color:a,isOpen:!1}),e.onChange({color:a,opacity:t.opacity,weight:t.weight})}return s((()=>{}),[]),n(i,null,n("span",{className:"mapp-colors-toggle",onClick:()=>{l({isOpen:!0})},style:{backgroundColor:e.color,border:e.isExtended?"1px solid "+e.color:"1px solid gray",opacity:e.isExtended&&e.opacity?e.opacity:1},tabIndex:0}),function(){if(!t.isOpen)return null;const a=_.map([1,.9,.8,.7,.6,.5,.4,.3,.2,.1,0],(e=>({label:100*e+"%",value:e}))),i=_.map([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],(e=>({label:e+"px",value:e})));return n(v,{title:__("Select a color"),className:"mapp-colors-modal",onRequestClose:()=>r()},n("div",{className:"mapp-colors"},n("div",{className:"mapp-colors-list"},_.map([["yellow","yellowgreen","green","seagreen","blue","cornflowerblue","darkslateblue","purple","firebrick","red","darkorange","orange","saddlebrown"],["lightyellow","greenyellow","lightgreen","darkseagreen","lightblue","skyblue","slateblue","orchid","plum","pink","sandybrown","goldenrod","peru"],["white","lightgray","gray","black"]],((t,a)=>n("div",{key:a},_.map(t,(t=>n("span",{className:"mapp-color"+(t==e.color?" mapp-selected":""),key:t,onClick:()=>{l({isCustomOpen:!1}),p(t)},style:{backgroundColor:t},title:t}))))))),t.isCustomOpen&&n(g,{color:e.color,onChangeComplete:e=>p(e.hex),disableAlpha:!0}),e.isExtended&&n(o.Select,{label:__("Opacity"),options:a,value:t.opacity,onChange:a=>{return l({opacity:o=a}),void e.onChange({color:t.color,opacity:o,weight:t.weight});var o}}),e.isExtended&&n(o.Select,{label:__("Stroke"),options:i,value:e.weight?e.weight:"",onChange:a=>{return l({weight:o=a}),void e.onChange({color:t.color,opacity:t.opacity,weight:o});var o}}),n("div",{className:"mapp-colors-toolbar"},n(u,{isPrimary:!0,onClick:()=>r()},__("Done")),n(u,{onClick:()=>l({isCustomOpen:!t.isCustomOpen})},__("Custom color")))))}())}},972:()=>{const e=wp.element.createElement,{Fragment:t,useEffect:a,useLayoutEffect:o,useRef:n,useState:i}=wp.element,{Button:s,Modal:l}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function r(t){const[o,n]=i({isOpen:!1,reason:"",reasonText:"",redirectUrl:null});function r(e){n((t=>({...t,...e})))}function p(e,t){switch(e){case"cancel":r({isOpen:!1});break;case"submit":r({isOpen:!1}),window.location.href=o.redirectUrl+"&mapp_reason="+o.reason+"&mapp_reason_text="+encodeURIComponent(o.reasonText.trim())}}return a((()=>{const e=document.getElementById("deactivate-mappress-google-maps-for-wordpress");if(!e)return;const t=e.addEventListener("click",(e=>{!function(e){const t=e?e.href:null;t&&r({isOpen:!0,redirectUrl:t})}(e.target),e.stopPropagation(),e.preventDefault()}));return()=>{e.removeEventListener("click",t)}}),[]),o.isOpen?e(l,{isDismissible:!0,onRequestClose:()=>p("cancel"),shouldCloseOnEsc:!0,shouldCloseOnClickOutside:!0,title:__("Feedback")},function(){const t=!o.reason||"other"==o.reason&&!o.reasonText;return sprintf("<a href='https://mappresspro.com/chris-contact' target='_blank'>%s</a>",__("contact me")),e("div",{className:"mapp-deactivate"},e("div",{className:"mapp-deactivate-content"},e("h2",null,__("Sorry to see you go! Need help?"),e(s,{className:"mapp-deactivate-help",isSecondary:!0,href:"https://mappresspro.com/chris-contact",target:"_blank"},__("Contact me"))),e("h2",null,__("If not, I'd really appreciate some feedback:")),function(){const t=[{value:"badday",label:__("I don't want to say")},{value:"noapikey",label:__("I didn't want to set up an API key")},{value:"nodisplay",label:__("The map didn't display")},{value:"noaddress",label:__("My address wasn't found")},{value:"uglymap",label:__("The map looked too plain")},{value:"toohard",label:__("Too hard to use"),placeholder:__("What was too hard?")},{value:"feature",label:__("Missing feature"),placeholder:__("What's missing?")},{value:"other",label:__("Other"),placeholder:__("Can you provide any details?")}];return e("div",{className:"mapp-deactivate-reasons"},_.map(t,(t=>{const a=t.value==o.reason;return e("div",{className:"mapp-deactivate-reason",key:t.value},e("label",null,e("input",{checked:a,onChange:e=>r({reason:e.target.value}),type:"radio",value:t.value}),t.label),a&&t.placeholder&&e("div",null,e("textarea",{onChange:e=>r({reasonText:e.target.value}),placeholder:t.placeholder,value:o.reasonText})))})))}()),e("div",{className:"mapp-deactivate-footer"},e(s,{isSecondary:!0,disabled:t,onClick:()=>p("submit")},__("Deactivate")),e(s,{isPrimary:!0,onClick:()=>p("cancel")},__("Cancel"))))}()):null}document.addEventListener("DOMContentLoaded",(()=>{const t=document.createElement("div");wp.element.render(e(r),t)}))},634:(e,t,a)=>{"use strict";a.r(t);var o=a(185);wp&&wp.plugins&&wp.plugins.registerPlugin&&wp.editPost&&wp.plugins.registerPlugin("mappress-document-settings-panel",{render:function(){const{PluginDocumentSettingPanel:e}=wp.editPost,t=wp.element.createElement,{Fragment:a,useEffect:n,useLayoutEffect:i,useRef:s,useState:l}=wp.element,{Button:r,Spinner:p}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),[c,m]=l({isFetchingItems:!0,isPickerOpen:!1,items:null,pickerMapid:null,pickerMode:"list"});function d(e){m((t=>({...t,...e})))}function u(e){let a=e.title?e.title:__("Untitled");return t("div",{className:"mapp-document-item",key:e.mapid+e.postid},t("a",{className:"mapp-document-col-title",href:"#",onClick:t=>{d({isPickerOpen:!0,pickerMapid:e.mapid,pickerMode:"edit"})}},a),t("div",{className:"mapp-document-col-mapid"},e.mapid))}return n((()=>{const e=e=>{d({isFetchingItems:e.isFetchingItems,isSavingMap:e.isSavingMap,items:e.items})};return mapp.store.subscribe(e),()=>mapp.store.unsubscribe(e)})),n((()=>{mapp.store.fetchItems()}),[]),t(e,{title:"MapPress",className:"mapp-document-panel"},function(){const e=_.filter(c.items,(e=>e.postid==mappl10n.options.postid));let o;return o=c.isFetchingItems?t(p,null):e.length?t(a,null,t("div",{className:"mapp-document-header"},t("div",{className:"mapp-document-col-title"},__("Map title")),t("div",{className:"mapp-document-col-mapid"},null,__("Map ID"))),_.map(e,u)):t("div",{className:"mapp-document-message"},__("No maps found")),t("div",null,t("div",{className:"mapp-document-list"},o))}(),t(r,{icon:"portfolio",isSecondary:!0,onClick:()=>{d({isPickerOpen:!0,pickerMode:"list"})}},__("Open map library")),function(){if(c.isPickerOpen)return t(o.default,{mapid:c.pickerMapid,mode:c.pickerMode,onClose:()=>{d({isPickerOpen:!1,pickerMapid:null})},onInsert:e=>function(e){const t=wp.blocks.createBlock("mappress/map",{mapid:e});wp.data.dispatch("core/block-editor").insertBlock(t,0),d({isPickerOpen:!1,pickerMapid:null})}(e)})}())},icon:null})},101:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappEdit:()=>F});var o=a(847),n=a(28);window.mapp=window.mapp||{};const i=wp.element.createElement,{Button:s,Dashicon:l,Icon:r,Spinner:p}=wp.components,{useSelect:c}=wp.data,{Fragment:m,useEffect:d,useLayoutEffect:u,useRef:h,useState:g}=wp.element,{MediaUpload:f}=wp.mediaUtils,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){e={poi:null,onChange:null,onClose:null,onDelete:null,onSave:null,...e};const t="mapp-poi-body",a=h(null),[l,r]=g({images:e.poi.images?e.poi.images:[],isBusy:!1,title:e.poi.title,isVisual:!0});function p(e){r((t=>({...t,...e})))}function c(e){e?tinyMCE.execCommand("mceAddEditor",!1,t):tinyMCE.execCommand("mceRemoveEditor",!1,t)}function u(){return["circle","polyline","polygon","rectangle"].includes(e.poi.type)}function b(){e.onChange({images:l.images,body:tinymce&&tinymce.get(t)?tinymce.get(t).getContent():a.current.value,title:l.title}),e.onClose()}function v(e){return i("div",{className:"mapp-poi-image",key:e.id?e.id:e.url},"embed"==e.type&&i(y,{url:e.url}),"embed"!=e.type&&i("img",{src:e.url}),i("div",{className:"mapp-poi-image-delete",onClick:()=>function(e){const t=l.images.findIndex((t=>t.url==e));t>=0&&(l.images.splice(t,1),p({images:l.images}))}(e.url)},"X"))}return d((()=>(function(){if("undefined"==typeof tinyMCE||void 0===tinyMCE.init)return;var e="en";if(void 0!==window.tinyMCEPreInit&&void 0!==window.tinyMCEPreInit.mceInit&&void 0!==window.tinyMCEPreInit.mceInit.content){var t=window.tinyMCEPreInit.mceInit.content;e=void 0!==t.language?t.language:"en"}var a={mode:"none",height:"100%",convert_urls:!1,language:e,menubar:!1,plugins:"image,paste,textcolor,wordpress,wpeditimage,wplink,wpview",relative_urls:!1,remove_script_host:!1,statusbar:!1,theme:"modern",toolbar1:"bold,italic,link",toolbar2:"",toolbar3:"",toolbar4:""};tinyMCE.init(a)}(),()=>{c(!1)})),[]),d((()=>{l.isVisual?c(!0):c(!1)}),[l.isVisual]),i(m,null,i("div",{className:"mapp-poi-header"},i("input",{className:"mapp-poi-title",value:l.title,onChange:e=>{p({title:e.target.value})},onKeyDown:e=>function(e){13==e.keyCode&&(b(),e.stopPropagation(),e.preventDefault())}(e)}),u(l.type)?null:i(n.MappIconPicker,{iconid:e.poi.iconid,onChange:t=>{e.onChange({iconid:t})}}),function(){var t,a,n,s,l,r;const p=e.poi;return u(p.type)?i(o.MappColorPicker,{color:"polyline"==p.type?null===(t=p.poly)||void 0===t?void 0:t.strokeColor:null===(a=p.poly)||void 0===a?void 0:a.fillColor,opacity:"polyline"==p.type?null===(n=p.poly)||void 0===n?void 0:n.strokeOpacity:null===(s=p.poly)||void 0===s?void 0:s.fillOpacity,weight:"polyline"==p.type?null===(l=p.poly)||void 0===l?void 0:l.strokeWeight:null===(r=p.poly)||void 0===r?void 0:r.strokeWeight,isExtended:!0,onChange:t=>{let{color:a,opacity:o,weight:n}=t;const i="polyline"==e.poi.type?{strokeColor:a,strokeOpacity:o,strokeWeight:n}:{fillColor:a,fillOpacity:o,strokeColor:a,strokeWeight:n,strokeOpacity:1};e.onChange({poly:{...e.poi.poly,...i}}),e.poi.setColors(i)}}):null}()),function(){const o="mapp-mce-visual"+(l.isVisual?" mapp-active":""),n="mapp-mce-html"+(l.isVisual?"":" mapp-active");return i(m,null,i("div",{className:"mapp-mce-toolbar"},i("div",{className:"mapp-mce-tabs"},i("a",{className:o,onClick:()=>p({isVisual:!0})},__("Visual"))," | ",i("a",{className:n,onClick:()=>p({isVisual:!1})},__("HTML"))),i("a",{href:"#",className:"insert-media add_media","data-editor":t},__("Add Media"))),i("div",{className:"mapp-mce-main"},i("textarea",{defaultValue:e.poi.body,id:t,ref:a,style:{height:"100%"}})))}(),"kml"==e.poi.type&&i("div",{className:"mapp-poi-kml"},i("span",null,__("KML")+" : "),i("a",{href:e.poi.kml.url,target:"_blank"},e.poi.kml.url)),l.images?i("div",{className:"mapp-poi-images"},l.images.map((e=>v(e)))):null,i("div",{className:"mapp-poi-toolbar"},i("div",null,i(s,{isPrimary:!0,onClick:()=>b()},__("Save")),i(s,{isSecondary:!0,onClick:()=>e.onClose()},__("Cancel"))),i("div",null,i(f,{allowedTypes:["image","video"],autoOpen:!0,gallery:!0,multiple:!0,onClose:()=>{p({images:l.images})},onSelect:e=>{return t=e,t=Array.isArray(t)?t:[t],void p({images:_.map(t,(e=>({id:e.id,url:e.url})))});var t},type:"image",value:l.images?l.images.map((e=>e.id)):[],render:e=>{let{open:t}=e;return i(s,{isSecondary:!0,onClick:t},__("Images"))}}),i(s,{isDestructive:!0,onClick:()=>e.onDelete()},__("Delete")))))}function y(e){e={url:null,...e};const{html:t}=c((t=>{const a=t("core").getEmbedPreview(e.url);return a?{html:a.html}:{html:null}}));return t?i("div",{className:"mapp-poi-embed",dangerouslySetInnerHTML:{__html:t}}):i("div",{className:"mapp-poi-embed"},i(p,null))}var v=a(939),k=a(885),w=a(614);window.mapp=window.mapp||{};const C=wp.element.createElement,{Fragment:x,useEffect:N,useLayoutEffect:S,useRef:O,useState:M}=wp.element,{Button:I,Dropdown:P,Modal:E,Panel:z,PanelBody:L,Popover:T,Spinner:B,TextControl:D}=wp.components,A=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function F(e){e={context:null,mapid:null,onClose:null,onSave:null,...e};const[t,a]=M({isBusy:!1,map:null,mapdata:null,poi:null}),o=O(null);function n(e){a((t=>({...t,...e})))}function i(e){n({map:t.map})}function s(e){const a="marker"==e.type?null:e.type;let o={...mapp.poi.parseOverlay(a,e.overlay),body:"",iconid:t.lastIcon,type:a,title:"marker"==e.type?e.overlay.position.toUrlValue():mappl10n.shape},n=new mapp.Poi(o);e.overlay.setMap(null),t.map.poiInsert(n)}function l(e){t.poi.set(e),t.map.renderList(),e.iconid&&n({lastIcon:e.iconid}),n({poi:t.poi})}function r(){_(),n({poi:null})}function p(){confirm(mappl10n.delete_prompt)&&(t.map.poiRemove(t.poi),t.map.poiClose(),n({poi:null}))}function c(e){n({poi:e})}function m(){mapp.store.saveMap(t.map.toJSON(),(t=>{_(),e.onSave(t)}))}function d(e){if(e.geometry){const a=e.formatted_address?e.formatted_address.replace(/, United States of America/i,"").replace(/, United States/i,"").replace(/, USA/i,""):null,o=e.name==a?"":a,n=new mapp.Poi({id:v.mappLib.nanoid(),address:a,body:o,iconid:t.lastIcon,point:e.geometry.location,title:e.name,viewport:e.geometry.viewport?e.geometry.viewport:null});t.map.poiInsert(n),n.center()}else if("string"==typeof e&&"http"==e.substring(0,4)){var a=new mapp.Poi({iconid:t.lastIcon,kml:{url:e},title:"KML",type:"kml"});t.map.poiInsert(a),mapp.event.addListener(a.overlay,"ready defaultviewport_changed",(e=>{a.center()}))}}function u(e){t.map.set(e),n({map:t.map})}function _(){if(t.map){const e=t.map.iw.getContent();wp.element.unmountComponentAtNode(e)}}return N((()=>{t.map&&(t.map.onDrawingEvent=s,t.map.onPoiOpen=c,t.map.onPoiClose=r,t.map.onSearch=d),function(){if(!t.map)return null;if(t.poi){const e=t.map.iw.getContent();wp.element.render(C(b,{onClose:()=>t.map.poiClose(),onDelete:p,onChange:l,poi:t.poi}),e)}}()})),N((()=>{t.map&&(jQuery(t.map.div.layout).off("mapp.render",i),jQuery(t.map.div.layout).on("mapp.render",(e=>i())))}),[t.map]),N((()=>{const t=t=>{n({isBusy:t.isSavingMap,mapdata:t.maps[e.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),N((()=>{!function(){if("mce"!=e.context&&"library"!=e.context)return null;if(!t.map)return null;const{center:a,height:o,poiList:n,search:i,width:s,zoom:l}=t.map,r=document.querySelector(".mapp-settings-container");wp.element.render(C(k.MappSettings,{map:t.map,context:e.context,onChange:e=>u(e),center:a,height:o,poiList:n,search:i,width:s,zoom:l}),r)}()})),N((()=>{e.mapid?mapp.store.fetchMap(e.mapid):n({mapdata:{}})}),[e.mapid]),N((()=>{if(!t.mapdata)return;let a={embed:!0,isEditable:!0,layout:"left",mapOpts:{streetViewControl:!1},menu:!1,name:"media-map",poiList:!0,sel:jQuery(o.current)};"map"!=e.context&&"mashup"!=e.context||(a.center=null,a.zoom=null);const i=new mapp.Map(t.mapdata,a);i.display(),n({map:i})}),[t.mapdata]),C("div",{className:"mapp-edit"},function(){let e=t.map&&t.map.title?t.map.title:"",a=t.map&&!t.isFetchingMap?A("Untitled"):"";return C("div",{className:"mapp-gt-modal-header"},C(D,{className:"mapp-edit-title",placeholder:a,value:e,onChange:e=>function(e){t.map.set({title:e}),n({map:t.map})}(e),onKeyDown:e=>function(e){13==e.keyCode&&(m(),e.stopPropagation(),e.preventDefault())}(e)}))}(),C("div",{className:"mapp-edit-main"},C("div",{className:"mapp-edit-map",key:e.mapid,ref:o,onKeyDown:e=>e.stopPropagation(),tabIndex:-1}),o.current&&t.map?C(w.m,{map:t.map,selected:t.map.mapTypeId,onChange:e=>u({mapTypeId:e})}):null),C("div",{className:"mapp-edit-toolbar",tabIndex:-1,onKeyDown:e=>e.stopPropagation()},C(I,{isPrimary:!0,isBusy:t.isBusy,onClick:()=>m()},A("Save")),C(I,{isSecondary:!0,disabled:t.isBusy,onClick:()=>(_(),void e.onClose())},A("Cancel"))))}},28:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappIconPicker:()=>M});var o=a(939),n=a(847),i=a(228);const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useCallback:c,useRef:m,useState:d}=wp.element,{useSelect:u}=wp.data,{withState:h}=wp.compose,{Button:g,ColorPicker:f,DropZone:b,DropZoneProvider:y,FormFileUpload:v,Modal:k,Popover:w,RangeControl:C,Spinner:x,TabPanel:N}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),S=[{id:"mapp-shapes",fontFamily:"Marker Shapes",glyphs:[{name:"circle",center:[16,16]},{name:"widepin",center:[16,14]},{name:"route",center:[16,16]},{name:"shield",center:[16,16]},{name:"squarepin",center:[16,15]},{name:"square",center:[16,16]},{name:"squarerounded",center:[16,16]},{name:"roundpin",center:[16,13]},{name:"pin",center:null},{name:"pindot",center:null}]}],O=[{id:"mapp-icons",className:"mapp-marker-icons",filePrefix:"mp",fontFamily:"Marker Icons",label:"Map icons",glyphs:["airport","amusement-park","aquarium","archery","art-gallery","assistive-listening","atm","audio-description","bakery","bank","bar","baseball","beauty-salon","bicycle-store","bicycling","boat-ramp","boat-tour","boating","book-store","bowling-alley","braille","bus-station","cafe","campground","canoe","car-dealer","car-rental","car-repair","car-wash","casino","cemetery","chairlift","church","city-hall","closed-captioning","clothing-store","compass","convenience-store","courthouse","cross-country-skiing","crosshairs","dentist","department-store","diving","doctor","electrician","electronics-store","embassy","expand","female","finance","fire-station","fish-cleaning","fishing-pier","fishing","florist","food","fullscreen","funeral-home","furniture-store","gas-station","contractor","golf","grocery","gym","hair-care","hang-gliding","hardware-store","health","hindu-temple","horse-riding","hospital","ice-fishing","ice-skating","inline-skating","insurance-agency","jet-skiing","jewelry-store","kayaking","laundry","lawyer","library","liquor-store","local-government","location-arrow","locksmith","lodging","low-vision-access","male","marina","mosque","motobike-trail","movie-rental","movie-theater","moving-company","museum","natural-feature","night-club","open-captioning","painter","park","parking","pet-store","pharmacy","physiotherapist","place-of-worship","playground","plumber","point-of-interest","police","political","post-box","post-office","rafting","real-estate-agency","restaurant","roofing-contractor","route","rv-park","sailing","school","scuba-diving","search","shopping-mall","sign-language","skateboarding","ski-jumping","skiing","sledding","snow-shoeing","snow","snowboarding","snowmobile","spa","stadium","storage","store","subway-station","surfing","swimming","synagogue","taxi-stand","tennis","toilet","trail-walking","train-station","transit-station","travel-agency","unisex","university","veterinary-care","viewing","volume-control-telephone","walking","waterskiing","whale-watching","wheelchair","wind-surfing","zoo"]},{id:"material-icons",className:"material-icons",filePrefix:"mi",fontFamily:"Material Icons",label:"Material Icons",glyphs:["ac_unit","access_alarm","access_alarms","access_time","access_time_filled","accessibility","accessibility_new","accessible","accessible_forward","account_balance","account_balance_wallet","account_box","account_circle","account_tree","ad_units","adb","add","add_a_photo","add_alarm","add_alert","add_box","add_business","add_chart","add_circle","add_circle_outline","add_comment","add_ic_call","add_link","add_location","add_location_alt","add_moderator","add_photo_alternate","add_reaction","add_road","add_shopping_cart","add_task","add_to_drive","add_to_home_screen","add_to_photos","add_to_queue","addchart","adjust","admin_panel_settings","ads_click","agriculture","air","airline_seat_flat","airline_seat_flat_angled","airline_seat_individual_suite","airline_seat_legroom_extra","airline_seat_legroom_normal","airline_seat_legroom_reduced","airline_seat_recline_extra","airline_seat_recline_normal","airplane_ticket","airplanemode_active","airplanemode_inactive","airplanemode_off","airplanemode_on","airplay","airport_shuttle","alarm","alarm_add","alarm_off","alarm_on","album","align_horizontal_center","align_horizontal_left","align_horizontal_right","align_vertical_bottom","align_vertical_center","align_vertical_top","all_inbox","all_inclusive","all_out","alt_route","alternate_email","amp_stories","analytics","anchor","android","animation","announcement","aod","apartment","api","app_blocking","app_registration","app_settings_alt","approval","apps","architecture","archive","area_chart","arrow_back","arrow_back_ios","arrow_back_ios_new","arrow_circle_down","arrow_circle_up","arrow_downward","arrow_drop_down","arrow_drop_down_circle","arrow_drop_up","arrow_forward","arrow_forward_ios","arrow_left","arrow_right","arrow_right_alt","arrow_upward","art_track","article","aspect_ratio","assessment","assignment","assignment_ind","assignment_late","assignment_return","assignment_returned","assignment_turned_in","assistant","assistant_direction","assistant_photo","atm","attach_email","attach_file","attach_money","attachment","attractions","attribution","audiotrack","auto_awesome","auto_awesome_mosaic","auto_awesome_motion","auto_delete","auto_fix_high","auto_fix_normal","auto_fix_off","auto_graph","auto_stories","autofps_select","autorenew","av_timer","baby_changing_station","back_hand","backpack","backspace","backup","backup_table","badge","bakery_dining","balcony","ballot","bar_chart","batch_prediction","bathroom","bathtub","battery_alert","battery_charging_full","battery_full","battery_saver","battery_std","battery_unknown","beach_access","bed","bedroom_baby","bedroom_child","bedroom_parent","bedtime","beenhere","bento","bike_scooter","biotech","blender","block","bloodtype","bluetooth","bluetooth_audio","bluetooth_connected","bluetooth_disabled","bluetooth_drive","bluetooth_searching","blur_circular","blur_linear","blur_off","blur_on","bolt","book","book_online","bookmark","bookmark_add","bookmark_added","bookmark_border","bookmark_outline","bookmark_remove","bookmarks","border_all","border_bottom","border_clear","border_color","border_horizontal","border_inner","border_left","border_outer","border_right","border_style","border_top","border_vertical","branding_watermark","breakfast_dining","brightness_1","brightness_2","brightness_3","brightness_4","brightness_5","brightness_6","brightness_7","brightness_auto","brightness_high","brightness_low","brightness_medium","broken_image","browser_not_supported","brunch_dining","brush","bubble_chart","bug_report","build","build_circle","bungalow","burst_mode","bus_alert","business","business_center","cabin","cable","cached","cake","calculate","calendar_today","calendar_view_day","calendar_view_month","calendar_view_week","call","call_end","call_made","call_merge","call_missed","call_missed_outgoing","call_received","call_split","call_to_action","camera","camera_alt","camera_enhance","camera_front","camera_indoor","camera_outdoor","camera_rear","camera_roll","cameraswitch","campaign","cancel","cancel_presentation","cancel_schedule_send","car_rental","car_repair","card_giftcard","card_membership","card_travel","carpenter","cases","casino","cast","cast_connected","cast_for_education","catching_pokemon","category","celebration","cell_wifi","center_focus_strong","center_focus_weak","chair","chair_alt","chalet","change_circle","change_history","charging_station","chat","chat_bubble","chat_bubble_outline","check","check_box","check_box_outline_blank","check_circle","check_circle_outline","checklist","checklist_rtl","checkroom","chevron_left","chevron_right","child_care","child_friendly","chrome_reader_mode","circle","circle_notifications","class","clean_hands","cleaning_services","clear","clear_all","close","close_fullscreen","closed_caption","closed_caption_disabled","closed_caption_off","cloud","cloud_circle","cloud_done","cloud_download","cloud_off","cloud_queue","cloud_upload","code","code_off","coffee","coffee_maker","collections","collections_bookmark","color_lens","colorize","comment","comment_bank","commute","compare","compare_arrows","compass_calibration","compost","compress","computer","confirmation_num","confirmation_number","connect_without_contact","connected_tv","construction","contact_mail","contact_page","contact_phone","contact_support","contactless","contacts","content_copy","content_cut","content_paste","content_paste_off","control_camera","control_point","control_point_duplicate","copy","copy_all","copyright","coronavirus","corporate_fare","cottage","countertops","create","create_new_folder","credit_card","credit_card_off","credit_score","crib","crop","crop_16_9","crop_3_2","crop_5_4","crop_7_5","crop_din","crop_free","crop_landscape","crop_original","crop_portrait","crop_rotate","crop_square","cruelty_free","cut","dangerous","dark_mode","dashboard","dashboard_customize","data_exploration","data_saver_off","data_saver_on","data_usage","date_range","deck","dehaze","delete","delete_forever","delete_outline","delete_sweep","delivery_dining","departure_board","description","design_services","desktop_access_disabled","desktop_mac","desktop_windows","details","developer_board","developer_board_off","developer_mode","device_hub","device_thermostat","device_unknown","devices","devices_other","dialer_sip","dialpad","dining","dinner_dining","directions","directions_bike","directions_boat","directions_boat_filled","directions_bus","directions_bus_filled","directions_car","directions_car_filled","directions_ferry","directions_off","directions_railway","directions_railway_filled","directions_run","directions_subway","directions_subway_filled","directions_train","directions_transit","directions_transit_filled","directions_walk","dirty_lens","disabled_by_default","disabled_visible","disc_full","dnd_forwardslash","dns","do_disturb","do_disturb_alt","do_disturb_off","do_disturb_on","do_not_disturb","do_not_disturb_alt","do_not_disturb_off","do_not_disturb_on","do_not_disturb_on_total_silence","do_not_step","do_not_touch","dock","document_scanner","domain","domain_disabled","domain_verification","done","done_all","done_outline","donut_large","donut_small","door_back","door_front","door_sliding","doorbell","double_arrow","downhill_skiing","download","download_done","download_for_offline","downloading","drafts","drag_handle","drag_indicator","draw","drive_eta","drive_file_move","drive_file_move_rtl","drive_file_rename_outline","drive_folder_upload","dry","dry_cleaning","duo","dvr","dynamic_feed","dynamic_form","e_mobiledata","earbuds","earbuds_battery","east","eco","edgesensor_high","edgesensor_low","edit","edit_attributes","edit_calendar","edit_location","edit_location_alt","edit_note","edit_notifications","edit_off","edit_road","eject","elderly","electric_bike","electric_car","electric_moped","electric_rickshaw","electric_scooter","electrical_services","elevator","email","emergency","emoji_emotions","emoji_events","emoji_flags","emoji_food_beverage","emoji_nature","emoji_objects","emoji_people","emoji_symbols","emoji_transportation","engineering","enhance_photo_translate","enhanced_encryption","equalizer","error","error_outline","escalator","escalator_warning","euro","euro_symbol","ev_station","event","event_available","event_busy","event_note","event_seat","exit_to_app","expand","expand_less","expand_more","explicit","explore","explore_off","exposure","exposure_minus_1","exposure_minus_2","exposure_neg_1","exposure_neg_2","exposure_plus_1","exposure_plus_2","exposure_zero","extension","extension_off","face","face_retouching_natural","face_retouching_off","face_unlock","facebook","fact_check","family_restroom","fast_forward","fast_rewind","fastfood","favorite","favorite_border","favorite_outline","featured_play_list","featured_video","feed","feedback","female","fence","festival","fiber_dvr","fiber_manual_record","fiber_new","fiber_pin","fiber_smart_record","file_copy","file_download","file_download_done","file_download_off","file_present","file_upload","filter","filter_1","filter_2","filter_3","filter_4","filter_5","filter_6","filter_7","filter_8","filter_9","filter_9_plus","filter_alt","filter_b_and_w","filter_center_focus","filter_drama","filter_frames","filter_hdr","filter_list","filter_none","filter_tilt_shift","filter_vintage","find_in_page","find_replace","fingerprint","fire_extinguisher","fireplace","first_page","fit_screen","fitness_center","flag","flaky","flare","flash_auto","flash_off","flash_on","flashlight_off","flashlight_on","flatware","flight","flight_land","flight_takeoff","flip","flip_camera_android","flip_camera_ios","flip_to_back","flip_to_front","flourescent","flutter_dash","fmd_bad","fmd_good","folder","folder_open","folder_shared","folder_special","follow_the_signs","font_download","font_download_off","food_bank","format_align_center","format_align_justify","format_align_left","format_align_right","format_bold","format_clear","format_color_fill","format_color_reset","format_color_text","format_indent_decrease","format_indent_increase","format_italic","format_line_spacing","format_list_bulleted","format_list_numbered","format_list_numbered_rtl","format_paint","format_quote","format_shapes","format_size","format_strikethrough","format_textdirection_l_to_r","format_textdirection_r_to_l","format_underline","format_underlined","forum","forward","forward_10","forward_30","forward_5","forward_to_inbox","foundation","free_breakfast","free_cancellation","front_hand","fullscreen","fullscreen_exit","functions","g_mobiledata","g_translate","gamepad","games","garage","gavel","generating_tokens","gesture","get_app","gif","gite","golf_course","gpp_bad","gpp_good","gpp_maybe","gps_fixed","gps_not_fixed","gps_off","grade","gradient","grading","grain","graphic_eq","grass","grid_3x3","grid_4x4","grid_goldenratio","grid_off","grid_on","grid_view","group","group_add","group_off","group_work","groups","h_mobiledata","h_plus_mobiledata","hail","handyman","hardware","hd","hdr_auto","hdr_auto_select","hdr_enhanced_select","hdr_off","hdr_off_select","hdr_on","hdr_on_select","hdr_plus","hdr_strong","hdr_weak","headphones","headphones_battery","headset","headset_mic","headset_off","healing","health_and_safety","hearing","hearing_disabled","height","help","help_center","help_outline","hevc","hide_image","hide_source","high_quality","highlight","highlight_alt","highlight_off","highlight_remove","hiking","history","history_edu","history_toggle_off","holiday_village","home","home_max","home_mini","home_repair_service","home_work","horizontal_distribute","horizontal_rule","horizontal_split","hot_tub","hotel","hotel_class","hourglass_bottom","hourglass_disabled","hourglass_empty","hourglass_full","hourglass_top","house","house_siding","houseboat","how_to_reg","how_to_vote","http","https","hvac","ice_skating","icecream","image","image_aspect_ratio","image_not_supported","image_search","imagesearch_roller","import_contacts","import_export","important_devices","inbox","incomplete_circle","indeterminate_check_box","info","input","insert_chart","insert_chart_outlined","insert_comment","insert_drive_file","insert_emoticon","insert_invitation","insert_link","insert_photo","insights","integration_instructions","inventory","inventory_2","invert_colors","invert_colors_off","invert_colors_on","ios_share","iron","iso","kayaking","keyboard","keyboard_alt","keyboard_arrow_down","keyboard_arrow_left","keyboard_arrow_right","keyboard_arrow_up","keyboard_backspace","keyboard_capslock","keyboard_control","keyboard_hide","keyboard_return","keyboard_tab","keyboard_voice","king_bed","kitchen","kitesurfing","label","label_important","label_off","landscape","language","laptop","laptop_chromebook","laptop_mac","laptop_windows","last_page","launch","layers","layers_clear","leaderboard","leak_add","leak_remove","leave_bags_at_home","legend_toggle","lens","lens_blur","library_add","library_add_check","library_books","library_music","light","light_mode","lightbulb","line_style","line_weight","linear_scale","link","link_off","linked_camera","liquor","list","list_alt","live_help","live_tv","living","local_activity","local_airport","local_atm","local_attraction","local_bar","local_cafe","local_car_wash","local_convenience_store","local_dining","local_drink","local_fire_department","local_florist","local_gas_station","local_grocery_store","local_hospital","local_hotel","local_laundry_service","local_library","local_mall","local_movies","local_offer","local_parking","local_pharmacy","local_phone","local_pizza","local_play","local_police","local_post_office","local_print_shop","local_printshop","local_restaurant","local_see","local_shipping","local_taxi","location_city","location_disabled","location_history","location_off","location_on","location_searching","lock","lock_clock","lock_open","login","logout","looks","looks_3","looks_4","looks_5","looks_6","looks_one","looks_two","loop","loupe","low_priority","loyalty","lte_mobiledata","lte_plus_mobiledata","luggage","lunch_dining","mail","mail_outline","male","manage_accounts","manage_search","map","maps_home_work","maps_ugc","margin","mark_as_unread","mark_chat_read","mark_chat_unread","mark_email_read","mark_email_unread","markunread","markunread_mailbox","masks","maximize","media_bluetooth_off","media_bluetooth_on","mediation","medical_services","medication","meeting_room","memory","menu","menu_book","menu_open","merge_type","message","messenger","messenger_outline","mic","mic_external_off","mic_external_on","mic_none","mic_off","microwave","military_tech","minimize","miscellaneous_services","missed_video_call","mms","mobile_friendly","mobile_off","mobile_screen_share","mobiledata_off","mode","mode_comment","mode_edit","mode_edit_outline","mode_night","mode_standby","model_training","monetization_on","money","money_off","money_off_csred","monitor","monitor_weight","monochrome_photos","mood","mood_bad","moped","more","more_horiz","more_time","more_vert","motion_photos_auto","motion_photos_off","motion_photos_on","motion_photos_pause","motion_photos_paused","motorcycle","mouse","move_to_inbox","movie","movie_creation","movie_filter","moving","mp","multiline_chart","multiple_stop","multitrack_audio","museum","music_note","music_off","music_video","my_library_add","my_library_books","my_library_music","my_location","nat","nature","nature_people","navigate_before","navigate_next","navigation","near_me","near_me_disabled","nearby_error","nearby_off","network_cell","network_check","network_locked","network_wifi","new_label","new_releases","next_plan","next_week","nfc","night_shelter","nightlife","nightlight","nightlight_round","nights_stay","no_accounts","no_backpack","no_cell","no_drinks","no_encryption","no_encryption_gmailerrorred","no_flash","no_food","no_luggage","no_meals","no_meeting_room","no_photography","no_sim","no_stroller","no_transfer","nordic_walking","north","north_east","north_west","not_accessible","not_interested","not_listed_location","not_started","note","note_add","note_alt","notes","notification_add","notification_important","notifications","notifications_active","notifications_none","notifications_off","notifications_on","notifications_paused","now_wallpaper","now_widgets","offline_bolt","offline_pin","offline_share","ondemand_video","online_prediction","opacity","open_in_browser","open_in_full","open_in_new","open_in_new_off","open_with","other_houses","outbond","outbound","outbox","outdoor_grill","outlet","outlined_flag","padding","pages","pageview","paid","palette","pan_tool","panorama","panorama_fish_eye","panorama_fisheye","panorama_horizontal","panorama_horizontal_select","panorama_photosphere","panorama_photosphere_select","panorama_vertical","panorama_vertical_select","panorama_wide_angle","panorama_wide_angle_select","paragliding","park","party_mode","password","paste","pattern","pause","pause_circle","pause_circle_filled","pause_circle_outline","pause_presentation","payment","payments","pedal_bike","pending","pending_actions","people","people_alt","people_outline","perm_camera_mic","perm_contact_cal","perm_contact_calendar","perm_data_setting","perm_device_info","perm_device_information","perm_identity","perm_media","perm_phone_msg","perm_scan_wifi","person","person_add","person_add_alt","person_add_alt_1","person_add_disabled","person_off","person_outline","person_pin","person_pin_circle","person_remove","person_remove_alt_1","person_search","personal_injury","personal_video","pest_control","pest_control_rodent","pets","phone","phone_android","phone_bluetooth_speaker","phone_callback","phone_disabled","phone_enabled","phone_forwarded","phone_in_talk","phone_iphone","phone_locked","phone_missed","phone_paused","phonelink","phonelink_erase","phonelink_lock","phonelink_off","phonelink_ring","phonelink_setup","photo","photo_album","photo_camera","photo_camera_back","photo_camera_front","photo_filter","photo_library","photo_size_select_actual","photo_size_select_large","photo_size_select_small","piano","piano_off","picture_as_pdf","picture_in_picture","picture_in_picture_alt","pie_chart","pie_chart_outline","pin","pin_drop","pin_end","pin_invoke","pivot_table_chart","place","plagiarism","play_arrow","play_circle","play_circle_fill","play_circle_filled","play_circle_outline","play_disabled","play_for_work","play_lesson","playlist_add","playlist_add_check","playlist_play","plumbing","plus_one","podcasts","point_of_sale","policy","poll","polymer","pool","portable_wifi_off","portrait","post_add","power","power_input","power_off","power_settings_new","precision_manufacturing","pregnant_woman","present_to_all","preview","price_change","price_check","print","print_disabled","priority_high","privacy_tip","private_connectivity","production_quantity_limits","psychology","public","public_off","publish","published_with_changes","push_pin","qr_code","qr_code_2","qr_code_scanner","query_builder","query_stats","question_answer","queue","queue_music","queue_play_next","quick_contacts_dialer","quick_contacts_mail","quickreply","quiz","r_mobiledata","radar","radio","radio_button_checked","radio_button_off","radio_button_on","radio_button_unchecked","railway_alert","ramen_dining","rate_review","raw_off","raw_on","read_more","real_estate_agent","receipt","receipt_long","recent_actors","recommend","record_voice_over","recycling","redeem","redo","reduce_capacity","refresh","remember_me","remove","remove_circle","remove_circle_outline","remove_done","remove_from_queue","remove_moderator","remove_red_eye","remove_shopping_cart","reorder","repeat","repeat_on","repeat_one","repeat_one_on","replay","replay_10","replay_30","replay_5","replay_circle_filled","reply","reply_all","report","report_gmailerrorred","report_off","report_problem","request_page","request_quote","reset_tv","restart_alt","restaurant","restaurant_menu","restore","restore_from_trash","restore_page","reviews","rice_bowl","ring_volume","roofing","room","room_preferences","room_service","rotate_90_degrees_ccw","rotate_left","rotate_right","rounded_corner","router","rowing","rss_feed","rsvp","rtt","rule","rule_folder","run_circle","running_with_errors","rv_hookup","safety_divider","sailing","sanitizer","satellite","save","save_alt","saved_search","savings","scanner","scatter_plot","schedule","schedule_send","schema","school","science","score","screen_lock_landscape","screen_lock_portrait","screen_lock_rotation","screen_rotation","screen_search_desktop","screen_share","screenshot","sd","sd_card","sd_card_alert","sd_storage","search","search_off","security","security_update","security_update_good","security_update_warning","segment","select_all","self_improvement","sell","send","send_and_archive","send_to_mobile","sensor_door","sensor_window","sensors","sensors_off","sentiment_dissatisfied","sentiment_neutral","sentiment_satisfied","sentiment_satisfied_alt","sentiment_very_dissatisfied","sentiment_very_satisfied","set_meal","settings","settings_accessibility","settings_applications","settings_backup_restore","settings_bluetooth","settings_brightness","settings_cell","settings_display","settings_ethernet","settings_input_antenna","settings_input_component","settings_input_composite","settings_input_hdmi","settings_input_svideo","settings_overscan","settings_phone","settings_power","settings_remote","settings_suggest","settings_system_daydream","settings_voice","share","share_arrival_time","share_location","shield","shop","shop_2","shop_two","shopping_bag","shopping_basket","shopping_cart","short_text","shortcut","show_chart","shower","shuffle","shuffle_on","shutter_speed","sick","signal_cellular_0_bar","signal_cellular_4_bar","signal_cellular_alt","signal_cellular_connected_no_internet_0_bar","signal_cellular_connected_no_internet_4_bar","signal_cellular_no_sim","signal_cellular_nodata","signal_cellular_null","signal_cellular_off","signal_wifi_0_bar","signal_wifi_4_bar","signal_wifi_4_bar_lock","signal_wifi_bad","signal_wifi_connected_no_internet_4","signal_wifi_off","signal_wifi_statusbar_4_bar","signal_wifi_statusbar_connected_no_internet_4","signal_wifi_statusbar_null","sim_card","sim_card_alert","sim_card_download","single_bed","sip","skateboarding","skip_next","skip_previous","sledding","slideshow","slow_motion_video","smart_button","smart_display","smart_screen","smart_toy","smartphone","smoke_free","smoking_rooms","sms","sms_failed","snippet_folder","snooze","snowboarding","snowmobile","snowshoeing","soap","social_distance","sort","sort_by_alpha","source","south","south_east","south_west","spa","space_bar","space_dashboard","speaker","speaker_group","speaker_notes","speaker_notes_off","speaker_phone","speed","spellcheck","splitscreen","sports","sports_bar","sports_baseball","sports_basketball","sports_cricket","sports_esports","sports_football","sports_golf","sports_handball","sports_hockey","sports_kabaddi","sports_mma","sports_motorsports","sports_rugby","sports_score","sports_soccer","sports_tennis","sports_volleyball","square_foot","stacked_bar_chart","stacked_line_chart","stairs","star","star_border","star_border_purple500","star_half","star_outline","star_purple500","star_rate","stars","stay_current_landscape","stay_current_portrait","stay_primary_landscape","stay_primary_portrait","sticky_note_2","stop","stop_circle","stop_screen_share","storage","store","store_mall_directory","storefront","storm","straighten","stream","streetview","strikethrough_s","stroller","style","subdirectory_arrow_left","subdirectory_arrow_right","subject","subscript","subscriptions","subtitles","subtitles_off","subway","summarize","superscript","supervised_user_circle","supervisor_account","support","support_agent","surfing","surround_sound","swap_calls","swap_horiz","swap_horizontal_circle","swap_vert","swap_vert_circle","swap_vertical_circle","swipe","switch_account","switch_camera","switch_left","switch_right","switch_video","sync","sync_alt","sync_disabled","sync_problem","system_security_update","system_security_update_good","system_security_update_warning","system_update","system_update_alt","system_update_tv","tab","tab_unselected","table_chart","table_rows","table_view","tablet","tablet_android","tablet_mac","tag","tag_faces","takeout_dining","tap_and_play","tapas","task","task_alt","taxi_alert","terrain","text_fields","text_format","text_rotate_up","text_rotate_vertical","text_rotation_angledown","text_rotation_angleup","text_rotation_down","text_rotation_none","text_snippet","textsms","texture","theater_comedy","theaters","thermostat","thermostat_auto","thumb_down","thumb_down_alt","thumb_down_off_alt","thumb_up","thumb_up_alt","thumb_up_off_alt","thumbs_up_down","time_to_leave","timelapse","timeline","timer","timer_10","timer_10_select","timer_3","timer_3_select","timer_off","tips_and_updates","title","toc","today","toggle_off","toggle_on","toll","tonality","topic","touch_app","tour","toys","track_changes","traffic","train","tram","transfer_within_a_station","transform","transgender","transit_enterexit","translate","travel_explore","trending_down","trending_flat","trending_neutral","trending_up","trip_origin","try","tty","tune","tungsten","turned_in","turned_in_not","tv","tv_off","two_wheeler","umbrella","unarchive","undo","unfold_less","unfold_more","unpublished","unsubscribe","upcoming","update","update_disabled","upgrade","upload","upload_file","usb","usb_off","verified","verified_user","vertical_align_bottom","vertical_align_center","vertical_align_top","vertical_distribute","vertical_split","vibration","video_call","video_camera_back","video_camera_front","video_collection","video_label","video_library","video_settings","video_stable","videocam","videocam_off","videogame_asset","videogame_asset_off","view_agenda","view_array","view_carousel","view_column","view_comfortable","view_comfy","view_compact","view_day","view_headline","view_in_ar","view_list","view_module","view_quilt","view_sidebar","view_stream","view_week","vignette","villa","visibility","visibility_off","voice_chat","voice_over_off","voicemail","volume_down","volume_mute","volume_off","volume_up","volunteer_activism","vpn_key","vpn_lock","vrpano","wallet_giftcard","wallet_membership","wallet_travel","wallpaper","warning","warning_amber","wash","watch","watch_later","water","water_damage","water_drop","waterfall_chart","waves","waving_hand","wb_auto","wb_cloudy","wb_incandescent","wb_iridescent","wb_shade","wb_sunny","wb_twilight","wc","web","web_asset","web_asset_off","weekend","west","whatshot","wheelchair_pickup","where_to_vote","widgets","wifi","wifi_calling","wifi_calling_3","wifi_lock","wifi_off","wifi_protected_setup","wifi_tethering","wifi_tethering_error_rounded","wifi_tethering_off","window","wine_bar","work","work_off","work_outline","workspaces","wrap_text","wrong_location","wysiwyg","yard","youtube_searched_for","zoom_in","zoom_out","zoom_out_map"]}];function M(e){const[t,a]=d({defaultIcon:mappl10n.options.defaultIcon,filename:null,filter:"",glyph:"",glyphColor:"white",glyphFont:O[0],glyphSize:20,isOpen:!1,mode:"list",shape:"circle",shapeColor:"gray",shapeFont:S[0],toDelete:[],userIcons:mappl10n.options.userIcons});function p(e){a((t=>({...t,...e})))}function c(a,n){switch(a){case"bulk-select":let a=[...t.toDelete],i=t.toDelete.indexOf(n.iconid);i>=0?a.splice(i,1):a.push(n.iconid),p({toDelete:a});break;case"close":p({isOpen:!1});break;case"delete":confirm(mappl10n.delete_prompt)&&o.mappLib.ajax({type:"POST",data:{action:"mapp_icon_delete",iconids:t.toDelete,nonce:mappl10n.options.nonce},callback:function(a){a&&"OK"==a.status?(t.toDelete.indexOf(e.iconid)>=0&&!function(e){if(!e)return!1;let t=e.replace(/.png|.gif|.jpg/gi,"").toLowerCase();return mappl10n.options.standardIcons.indexOf(t)>=0}(e.iconid)&&e.onChange(null),mappl10n.options.userIcons=a.data,p({toDelete:[],mode:"list",userIcons:mappl10n.options.userIcons})):alert("Delete error: "+a.status)}});break;case"edit-cancel":p({mode:"list"});break;case"edit-save":!function(e){const a=32,o=2;let n=document.createElement("canvas");n.width=a*o,n.height=a*o,n.style.imageRendering="pixelated";let i=n.getContext("2d");i.font=a*o+"px "+t.shapeFont.fontFamily,i.fillStyle=t.shapeColor,i.textBaseline="bottom",i.fillText(t.shape,0,a*o),i.strokeStyle="white",i.strokeText(t.shape,1,a*o);const s=_.findWhere(t.shapeFont.glyphs,{name:t.shape});if(t.glyph&&s.center){i.imageSmoothingEnabled=!1,i.font=t.glyphSize*o+"px "+t.glyphFont.fontFamily,i.fillStyle=t.glyphColor;const e=[s.center[0]*o,s.center[1]*o];i.fillText(t.glyph,e[0]-t.glyphSize,e[1]+t.glyphSize)}"undefined"!=typeof debug?document.getElementById("mapp-edit-debug").append(n):n.toBlob((e=>{let a=new FormData;a.append("image0",e,t.filename),u(a)}),"image/png",100)}();break;case"edit-upload":!function(e){let t=new FormData;_.map(e,((e,a)=>{e.type.match("image.*")?t.append("image"+a,e):alert("File "+e.name+" is not an image.")})),u(t)}(n);break;case"list-select":e.onChange&&e.onChange(n),c("close");break;case"mode":p("bulk"==n?{mode:n,toDelete:[]}:{mode:n});break;case"open":p({isOpen:!0})}}function m(a){const n="user"==a?mappl10n.options.userIcons:mappl10n.options.standardIcons;return _.map(n,(n=>{if("standard"==a&&function(e){return mappl10n.options.userIcons.indexOf(e)>=0}(n+".png"))return"";let i="mapp-icon-wrapper";return"bulk"==t.mode&&t.toDelete.indexOf(n)>=0?i+=" mapp-bulk-selected":"list"!=t.mode||e.iconid!=n&&e.iconid+".png"!=n||(i+=" mapp-selected"),s("div",{alt:n,className:i,key:n,onClick:()=>{"list"==t.mode?c("list-select",n):"user"==a&&c("bulk-select",{iconid:n,type:a})}},s("img",{className:"mapp-icon",src:o.mappLib.getIconUrl(n),title:n}))}))}function u(t){t.append("action","mapp_icon_save"),t.append("nonce",mappl10n.options.nonce),o.mappLib.ajax({type:"POST",contentType:!1,processData:!1,data:t,success:t=>{t&&"OK"==t.status?(mappl10n.options.userIcons=t.data.icons,p({userIcons:mappl10n.options.userIcons}),p({mode:"list"}),e.onChange&&e.onChange(t.data.filename)):alert("Upload error: "+t.status)}})}return r((()=>{let e=t.glyph?t.glyph:t.shape;e+=".png",p({filename:e})}),[t.shape,t.shapeColor,t.glyphFont,t.glyph,t.glyphColor,t.glyphSize]),s(l,null,s("img",{className:"mapp-icon",onClick:()=>c("open",null),src:o.mappLib.getIconUrl(e.iconid)}),"list"==t.mode&&t.isOpen&&s(k,{title:s("div",{className:"mapp-icons-title"},__("Select icon"),s(g,{disabled:"bulk"==t.mode,isPrimary:!0,onClick:()=>c("mode","edit")},__("New icon"))),className:"mapp-icons-modal",onRequestClose:()=>c("close")},s("div",{className:"mapp-icons"},s("div",{className:"mapp-icons-list"},mappl10n.options.userIcons.length>0&&s("div",{className:"mapp-icons-list-title"},__("Custom icons")),s("div",{className:"mapp-icons-user"},m("user")),mappl10n.options.userIcons.length>0&&s("div",{className:"mapp-icons-list-title"},__("Standard icons")),s("div",{className:"mapp-icons-standard"},m("standard"))),s("div",{className:"mapp-icons-toolbar"},s("div",null,s(g,{disabled:"bulk"==t.mode,isSecondary:!0,onClick:()=>c("list-select",null)},__("Use default icon")),mappl10n.options.userIcons.length>0&&s(g,{isTertiary:!0,onClick:()=>c("mode","bulk")},__("Edit list"))),s("div",{className:"mapp-icons-filename"},e.iconid?e.iconid:__("No icon selected"))))),"bulk"==t.mode&&t.isOpen&&s(k,{title:s("div",{className:"mapp-icons-title"},__("Select icons to delete")),className:"mapp-icons-modal",onRequestClose:()=>c("close")},s("div",{className:"mapp-icons"},s("div",{className:"mapp-icons-list"},s("div",{className:"mapp-icons-user"},m("user"))),s("div",{className:"mapp-icons-toolbar"},s("div",null,s(g,{isDestructive:!0,disabled:t.toDelete.length<1,onClick:()=>c("delete")},__("Delete")),s(g,{isSecondary:!0,onClick:()=>c("mode","list")},__("Cancel")))))),"edit"==t.mode&&s(k,{title:__("Create new icon"),className:"mapp-icons-edit-modal",onRequestClose:()=>c("edit-cancel"),shouldCloseOnClickOutside:!1},s("div",{className:"mapp-icons-edit"},s("div",{id:"mapp-edit-debug"}),s("section",null,s("h2",null,__("Shape")),s("span",{className:"mapp-icons-edit-shapes",style:{color:t.shapeColor,fontFamily:t.shapeFont.fontFamily}},_.map(t.shapeFont.glyphs,((e,a)=>{const o=t.shape==e.name;return s("span",{className:"mapp-icons-edit-shape-wrapper"+(o?" mapp-selected":""),key:e.name,onClick:()=>p({shape:e.name}),title:e.name},s("span",{className:"mapp-icons-edit-shape"},e.name,e.center&&t.glyph&&s("div",{className:"mapp-icons-edit-shape-glyph "+t.glyphFont.className,style:{left:e.center[0],top:e.center[1],color:t.glyphColor,fontSize:t.glyphSize,width:t.glyphSize}},t.glyph)))})))),s("section",{className:"mapp-icons-edit-font"},s("h2",null,__("Font")),s(i.Select,{value:t.glyphFont.id,options:_.map(O,(e=>({value:e.id,label:e.label}))),onChange:e=>p({glyphFont:_.findWhere(O,{id:e}),glyph:null})}),s("span",null,__("Font size")),s(C,{initialPosition:20,min:16,max:24,value:t.glyphSize,onChange:e=>p({glyphSize:e})})),s("section",null,s("h2",null,__("Color")),s("span",{className:"mapp-icons-edit-colors"},s(n.MappColorPicker,{color:t.shapeColor,isExtended:!1,onChange:e=>p({shapeColor:e.color})}),s("span",null,__("Fill")),s(n.MappColorPicker,{color:t.glyphColor,isExtended:!1,onChange:e=>p({glyphColor:e.color})}),s("span",null,__("Stroke")))),function(){const e=_.filter(t.glyphFont.glyphs,(e=>!t.filter||e.includes(t.filter)));return s("div",{className:"mapp-icons-edit-glyphs"},s("section",{className:"mapp-icons-edit-search"},s("h2",null,__("Search")),s(i.Input,{value:t.filter,onChange:e=>p({filter:e})})),s("div",{className:"mapp-icons-edit-glyph-list",style:{color:t.glyphColor}},_.map(e,((e,a)=>s("div",{tabIndex:0,className:"mapp-icons-edit-glyph-wrapper"+(t.glyph==e?" mapp-selected":""),key:a,onClick:()=>p({glyph:t.glyph==e?null:e})},s("span",{className:"mapp-icons-edit-glyph "+t.glyphFont.className},e),s("div",{className:"mapp-icons-edit-glyph-title"},e.replaceAll("_"," ")))))))}(),s("div",{className:"mapp-icons-edit-toolbar"},s("div",{className:"mapp-icons-edit-toolbar-left"},s(g,{isPrimary:!0,onClick:()=>c("edit-save")},__("Save")),s(g,{isSecondary:!0,onClick:()=>c("edit-cancel")},__("Cancel")),s(i.Input,{className:"mapp-icons-filename",value:t.filename,onChange:e=>p({filename:e})})),s("div",null,s(v,{accept:"image/*",icon:"upload",multiple:!0,onChange:e=>{c("edit-upload",e.target.files)}},__("Upload icons")))))))}},897:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappImport:()=>y});var o=a(939),n=a(228);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{useSelect:d}=wp.data,{withState:u}=wp.compose,{Button:h,FormFileUpload:g,Modal:f,ToggleControl:b}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function y(e){const[t,a]=m({isBusy:!1,isFetching:!1,file:null,isMapModalOpen:!1,mapid:null,mapdata:null,overwrite:!1,response:null,tab:"sheet",url:""}),r=c(null);function p(e){a((t=>({...t,...e})))}l((()=>{t.mapid&&(p({isFetching:!0,mapdata:null}),o.mappLib.ajax({type:"GET",data:{action:"mapp_get",mapid:t.mapid,nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status?p({mapdata:e.data}):alert(e.status),p({isFetching:!1})}}))}),[t.mapid]),l((()=>{if(t.isMapModalOpen&&!t.isFetching&&t.mapdata&&r.current){new mapp.Map(t.mapdata,{height:"50vh",mapOpts:{mapTypeControl:!1,streetViewControl:!1},poiList:!0,search:!1,sel:jQuery(r.current),width:"50vw"}).display()}}),[t.isMapModalOpen,t.isFetching,t.mapdata,r.current]);const d=t.isBusy||"file"==t.tab&&!t.file||"sheet"==t.tab&&0==t.url.trim().length;return i("div",{className:"mapp-import"},i("form",{onSubmit:e=>{e.preventDefault(),function(){p({isBusy:!0,response:null});let e={type:"POST",data:{url:t.url,action:"mapp_import",nonce:mappl10n.options.nonce,overwrite:t.overwrite},success:e=>{p({isBusy:!1}),e&&"OK"==e.status?p({response:e.data}):alert(e.status)},error:()=>{alert("Import error"),p({isBusy:!1})}};if("file"==t.tab){let a=new FormData;_.map(e.data,((e,t)=>a.append(t,e))),a.append("file",t.file),e={...e,data:a,contentType:!1,processData:!1}}o.mappLib.ajax(e)}()}},i(s,null,i("h2",null,__("Source")),i(n.MappTabs,{tabs:[{name:"sheet",label:__("Google Sheets")},{name:"file",label:__("File")}],initialTab:t.tab,onRender:e=>"sheet"==e?function(){const e=i("div",{className:"mapp-import-help"},__("Google sheets must be shared before importing:"),i("ol",null,i("li",null,__("File -> Share -> Publish to web")),i("li",null,__("Select 'Entire Document' and 'Comma-Separated Values (.csv)")),i("li",null,__("Copy the URL and paste it here"))));return i("div",{className:"mapp-import-tab-sheet"},i("label",{className:"mapp-import-sheet-name"},i("span",null,"URL"),i("input",{onChange:e=>function(e){p({url:e})}(e.target.value),type:"text",value:t.url})),e)}():"file"==e?function(){const e=i("div",{className:"mapp-import-help"},__("File must be in CSV format:"),i("ol",null,i("li",null,__("Excel: File -> Save As -> 'CSV' or 'CSV UTF-8' (for special characters)'")),i("li",null,__("Google sheets: File -> Download -> Comma Separated Values (.csv)"))));return i("div",{className:"mapp-import-tab-file"},i("div",{className:"mapp-import-file-name"},i(g,{accept:"text/csv",isSecondary:!0,multiple:!1,onChange:e=>{p({file:e.target.files[0]})}},__("Select file")),i("input",{disabled:!0,type:"text",value:t.file?t.file.name:""})),e)}():void 0,onSelect:e=>p({tab:e})})),i(b,{checked:t.overwrite,label:__("Use map IDs from file"),onChange:e=>p({overwrite:e})}),t.overwrite&&i("div",{className:"mapp-import-overwrite-warning"},__("WARNING: this will overwrite any existing maps with the same IDs")),i(h,{disabled:d,isBusy:t.isBusy,isPrimary:!0,type:"submit"},__("Import"))),function(){if(t.response&&t.response.results)return i("div",{className:"mapp-import-log"},i("h2",null,__("Results")),_.map(t.response.results,((e,a)=>i("div",{key:a},function(e){let a=t.response.headers;return i("div",{className:"mapp-import-table"},i("div",{className:"mapp-import-table-header"},i("div",{key:"line",className:"mapp-import-cell"},__("Line")),_.map(a,((e,t)=>i("div",{key:t,className:"mapp-import-cell"},e))),i("div",{key:"msg",className:"mapp-import-cell"},__("Result"))),_.map(e.logs,((e,t)=>{let o="mapp-import-cell";return e.msg&&(o+="e"==e.msg.msgtype?" mapp-import-cell-error":" mapp-import-cell-info"),i("div",{className:"mapp-import-row",key:t},i("div",{key:"col_rowid",className:"mapp-import-cell"},e.rowid),_.map(a,((t,a)=>i("div",{key:a,className:"mapp-import-cell"},e[t]?e[t]:" "))),i("div",{key:"error",className:o},e.msg.msg))})))}(e),function(e){return _.map(e.msgs,((e,a)=>{const o="e"==e.msgtype?"mapp-import-error":"mapp-import-info";return i("div",{className:o,key:a},e.msg,e.mapid&&i(h,{onClick:()=>{p({mapid:e.mapid,isMapModalOpen:!0})},disabled:t.isFetching||t.isMapModalOpen,isBusy:t.isFetching&&t.mapid==e.mapid,isSecondary:!0},__("Show map")))}))}(e)))))}(),t.isMapModalOpen&&!t.isFetching&&i(f,{title:__("Map")+" "+t.mapid,onRequestClose:()=>p({isMapModalOpen:!1})},i("div",{className:"mapp-import-map"},i("div",{ref:r}))))}document.getElementById("mapp-import-container")&&wp.element.render(i(y,null),document.getElementById("mapp-import-container"))},218:(e,t,a)=>{"use strict";a.r(t);var o=a(885),n=a(185);window.mapp=window.mapp||{};const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useRef:p,useState:c}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function m(e){const{Button:t,Placeholder:a,Toolbar:r,ToolbarButton:m,ToolbarGroup:d}=wp.components,{BlockControls:u,InspectorControls:_}=wp.blockEditor,[h,g]=c({isOpen:!1,map:null,mapdata:void 0,pickerMode:"list",pickerMapid:null}),f=p(null);function b(e){g((t=>({...t,...e})))}function y(){b({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"list"})}function v(){return i(u,null,i(void 0!==d?d:r,null,e.attributes.mapid&&i(m,{icon:"edit",label:__("Edit map"),onClick:()=>{b({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"edit"})}}),i(m,{icon:"portfolio",label:__("Map Library"),onClick:()=>y()})))}if(l((()=>{const t=t=>{b({mapdata:t.maps[e.attributes.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),l((()=>{e.attributes.mapid&&mapp.store.fetchMap(e.attributes.mapid)}),[e.attributes.mapid]),l((()=>{e.attributes.mapid&&f.current&&h.mapdata&&function(){let t=new mapp.Map(h.mapdata,{alignment:e.attributes.align,center:e.attributes.center,height:e.attributes.height,mapOpts:{mapTypeControl:!1,streetViewControl:!1},poiList:e.attributes.poiList,search:e.attributes.search,sel:jQuery(f.current),width:e.attributes.width,zoom:e.attributes.zoom});t.display(),b({map:t})}()}),[h.mapdata,e.attributes.search]),l((()=>{"wide"!=e.attributes.align&&"full"!=e.attributes.align||(e.setAttributes({width:"100%"}),h.map&&h.map.setSize({width:"100%"}))}),[e.attributes.align]),e.attributes.preview)return i("img",{className:"mapp-gt-preview",src:mappl10n.options.baseurl+"/images/preview.png",width:"100%"});let k;return k=e.attributes.mapid&&null!==h.mapdata?i(s,null,v(),function(){if(!h.map)return null;const{align:t,center:a,height:n,poiList:s,search:l,width:r,zoom:p}=e.attributes;return i(_,null,i("div",{className:"mapp-gt-inspector"},i(o.MappSettings,{map:h.map,alignment:t,context:"map",onChange:t=>{return a=t,void e.setAttributes(a);var a},center:a,height:n,poiList:s,search:l,width:r,zoom:p})))}(),i("div",{className:"mapp-gt",ref:f})):i(s,null,v(),i(a,{className:"mapp-gt-placeholder",icon:"location",label:__("MapPress Map"),instructions:__("Use the map library to create a new map or insert an existing map.")},i(t,{icon:"portfolio",isSecondary:!0,onClick:()=>y()},__("Map Library")))),i(s,null,k,function(){if(h.isOpen)return i(n.default,{mapid:h.pickerMapid,mode:h.pickerMode,onClose:()=>{b({isOpen:!1})},onInsert:t=>function(t){t!=e.attributes.mapid&&e.setAttributes({center:void 0,mapid:t,zoom:void 0}),b({isOpen:!1})}(t),onTrash:()=>{e.setAttributes({mapid:void 0,center:void 0,zoom:void 0,width:void 0,height:void 0})},type:"post"})}())}mappl10n.options.postid&&wp.blocks.registerBlockType("mappress/map",{title:__("MapPress Map"),icon:"location",description:__("Insert a map"),category:mappl10n.options.blockCategory,attributes:{center:{type:"string"},height:{type:"string",default:""},initialOpenDirections:{type:"boolean"},mapid:{type:"string"},mapOpts:{type:"object"},poiList:{type:"boolean"},preview:{type:"boolean",default:!1},search:{type:"boolean"},width:{type:"string",default:""},zoom:{type:"number"}},supports:{align:["full","wide","center","left","right"]},transforms:{from:[{type:"shortcode",tag:"mappress",attributes:{center:{type:"string",shortcode:e=>e.named.center},height:{type:"string",shortcode:e=>e.named.height},initialOpenDirections:{type:"boolean",shortcode:e=>"true"==e.named.initialOpenDirections||"true"==e.named.initialopendirections||void 0},mapid:{type:"string",shortcode:e=>e.named.mapid},poiList:{type:"boolean",shortcode:e=>"true"==e.named.poiList||"true"==e.named.poilist||void 0},search:{type:"boolean",shortcode:e=>"true"==e.named.search||"true"==e.named.search||void 0},width:{type:"string",shortcode:e=>e.named.width},zoom:{type:"number",shortcode:e=>parseInt(e.named.zoom)?parseInt(e.named.zoom):null}}},{type:"block",blocks:["core/shortcode"],isMatch:e=>{let{text:t}=e;var a=wp.shortcode.regexp("mappress");return a.lastIndex=0,a.test(t)},transform:e=>{let{text:t}=e;return wp.blocks.rawHandler({HTML:"<p>"+t+"</p>",mode:"BLOCKS"})}}]},edit:function(e){return i(m,e)},save:function(e){return e},example:{attributes:{preview:!0}}})},265:(e,t,a)=>{"use strict";a.r(t);a(885),a(109),a(308);window.mapp=window.mapp||{};wp.element.createElement;const{Fragment:o,useEffect:n,useLayoutEffect:i,useRef:s,useState:l}=wp.element,{BaseControl:r,Button:p,ButtonGroup:c,Card:m,CardBody:d,CardFooter:u,CardHeader:_,CheckboxControl:h,ExternalLink:g,HorizontalRule:f,Panel:b,PanelBody:y,PanelRow:v,Placeholder:k,RadioControl:w,SelectControl:C,TabPanel:x,TextControl:N,TextareaControl:S,ToggleControl:O,Toolbar:M}=wp.components,{useSelect:I}=wp.data},109:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappMultiSelect:()=>b});const o=wp.element.createElement,{Fragment:n,useEffect:i,useLayoutEffect:s,useRef:l,useState:r}=wp.element,{BaseControl:p,Button:c,CheckboxControl:m,Panel:d,PanelBody:u,PanelRow:h,Spinner:g,TextControl:f}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){const t=l(null),a=l(null),[n,s]=r({isOpen:!1,filter:"",filteredOptions:[]});function c(e){s((t=>({...t,...e})))}function d(t){let a=_.findWhere(e.options,{value:t});return a?a.label:t}function u(){let t;return e.values instanceof Array?t=[...e.values]:e.values&&(t=[e.values]),t||[]}function h(t,a){let o=u(),n=o.indexOf(t);(a=void 0!==a?a:-1==n)?o.push(t):o.splice(n,1),e.onChange(o)}function g(){return n.isOpen?o("div",{className:"mapp-select-dropdown-wrapper"},o("div",{className:"mapp-select-dropdown"},!n.isOpen||!e.options||e.options.length<10?null:o("div",{className:"mapp-select-filter",ref:a},o(f,{autoComplete:"off",placeholder:__("Search"),value:n.filter,onChange:e=>c({filter:e})})),o("div",{className:"mapp-select-dropdown-list"},function(){const e=u();if(0==n.filteredOptions.length)return o("div",{className:"mapp-select-dropdown-item"},__("No results"));return n.filteredOptions.map((t=>o(m,{className:"mapp-select-dropdown-item",checked:e.includes(t.value),key:t.value,onChange:e=>h(t.value,e),label:t.label})))}()))):null}return i((()=>{if(e.options)if(n.filter){let t=n.filter.toUpperCase();c({filteredOptions:e.options.filter((e=>0==e.label.toUpperCase().indexOf(t)))})}else c({filteredOptions:e.options})}),[e.options,n.filter]),i((()=>{n.isOpen&&a.current&&(jQuery("input",jQuery(a.current)).focus(),c({filter:""}))}),[n.isOpen]),o(p,{className:"mapp-select",label:e.label},o("div",{ref:t,tabIndex:0,onBlur:e=>function(e){event.relatedTarget||document.activeElement,t.current.contains(e.relatedTarget)||c({isOpen:!1})}(e)},function(){const t=u();return t instanceof Array&&t.map((e=>d(e))),void 0===e.options?o("div",{className:"mapp-select-input"},o("div",{className:"mapp-select-tokens"}),o("span",{className:"dashicons dashicons-arrow-down-alt2"})):o("div",{className:"mapp-select-input",onClick:()=>c({isOpen:!n.isOpen})},o("div",{className:"mapp-select-tokens"},t.map((e=>o("span",{className:"mapp-select-token",key:e,onClick:t=>{t.stopPropagation(),h(e,!1)}},d(e))))),o("span",{className:"dashicons "+(n.isOpen?"dashicons-arrow-up-alt2":"dashicons-arrow-down-alt2")}))}(),g()))}},146:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var o=a(228),n=a(847),i=a(28),s=a(939),l=(a(597),a(614));const r=wp.element.createElement,{Fragment:p,useEffect:c,useLayoutEffect:m,useCallback:d,useRef:u,useState:h}=wp.element,{useSelect:g}=wp.data,{Button:f,Dashicon:b,FormTokenField:y,Modal:v}=wp.components,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function k(e){const[t,a]=h({...e,isCheckingLicense:!1,isSaving:!1}),m=u(null);function d(e){a((t=>({...t,...e})))}function v(e){return _.map(e,((e,t)=>({value:t,label:e})))}function k(e,t){return e&&Array.isArray(e)&&e.length?(_.map(e,(e=>{for(let t in e)"string"==typeof e[t]&&(e[t]=e[t].trim())})),t?e.filter((e=>{for(let t in e)if(!e[t]||0==e[t].length)return!1;return!0})):e.filter((e=>!(!e.hasOwnProperty("key")||!e.key)))):[]}function w(e,a){switch(e){case"license-check":d({isCheckingLicense:!0}),s.mappLib.ajax({type:"POST",data:{action:"mapp_license_check",nonce:mappl10n.options.nonce,license:t.license},callback:e=>{if(d({isCheckingLicense:!1}),e&&"OK"==e.status){let a={...t.helpers};a.license_status=e.data,d({helpers:a})}}});break;case"reset":d({isSaving:!0}),s.mappLib.ajax({type:"POST",data:{action:"mapp_options_reset",nonce:mappl10n.options.nonce},callback:e=>{d({isSaving:!1}),e&&"OK"==e.status&&window.location.reload()}});break;case"save":let e={...t};delete e.helpers,e.filters=k(e.filters,!1),e.metaKeys=k(e.metaKeys,!0),e.sizes=k(e.sizes,!0),e.autoicons&&e.autoicons.values&&(e.autoicons.values=k(e.autoicons.values,!0)),d({isSaving:!0}),s.mappLib.ajax({type:"POST",data:{action:"mapp_options_save",nonce:mappl10n.options.nonce,settings:JSON.stringify(e)},callback:e=>{d({isSaving:!1}),e&&"OK"==e.status&&window.location.reload()}})}}return c((()=>{if(m.current){new mapp.Map({alignment:"default",width:"100%",height:300,pois:[{address:"San Francisco, CA",title:"MapPress",body:__("Maps for WordPress"),point:{lat:37.774095,lng:-122.418731}}],sel:jQuery(m.current),zoom:8}).display()}}),[]),c((()=>{mappl10n.options.engine!=t.engine&&w("save")}),[t.engine]),r("div",{className:"mapp-options"},r("form",{onSubmit:e=>{e.preventDefault(),w("save")}},r(o.Section,{title:__("Sample Map"),className:"mapp-demo-section"},r("div",{className:"mapp-options-demo",ref:m})),mappl10n.options.pro&&(!t.helpers.is_multisite||t.helpers.is_super_admin||t.helpers.is_main_site)&&r(o.Section,{title:__("License")},r(o.Option,{title:__("MapPress license key"),className:"mapp-option-license"},r(o.Input,{value:t.license,name:"license",onChange:e=>{let a={...t.helpers};a.license_status="",d({license:e,helpers:a})},size:37,placeholder:__("Enter license to enable automatic updates")}),function(){const e=t.helpers.license_status,a=r(f,{isSecondary:!0,href:"https://mappresspro.com/mappress"},__("Get license")),o=r(f,{isBusy:t.isCheckingLicense,isSecondary:!0,onClick:()=>w("license-check")},__("Check now")),n=r(f,{isLink:!0,target:"_blank",href:"https://mappresspro.com/account"},__("Your account"));return t.license?"active"==e?r("span",{className:"mapp-license-status"},r(b,{icon:"yes"}),__("Active")):r(p,null,o,n,e&&!t.isCheckingLicense&&r("div",null,r(b,{icon:"no"}),"inactive"==e?__("License is invalid or expired"):e)):a}()),r(o.Option,{title:__("Beta versions")},r(o.Checkbox,{checked:t.betas,label:__("Enable updates for beta versions"),onChange:e=>d({betas:e})}))),r(o.Section,{title:__("Basic Settings")},r(o.Option,{title:__("Mapping API")},r(o.Radios,{options:[{label:"Leaflet",value:"leaflet"},{label:"Google",value:"google"}],onChange:e=>{d({engine:e,geocoder:"google"==e?"google":""})},checked:t.engine,help:{href:"#toc-picking-a-mapping-api",text:__("Leaflet is free and requires no API key. Google requires an API key and has usage limits.")}})),"leaflet"==t.engine&&function(){const e=[{value:"nominatim",label:"Nominatim",disabled:t.mapbox},{value:"mapbox",label:"MapBox",disabled:!t.mapbox},{value:"google",label:"Google",disabled:!t.apiKey}];let a={};return"nominatim"==t.geocoder&&(a={text:__("Nominatim is free but inaccurate. Consider using Mapbox or Google instead."),type:"warning"}),a.href="#toc-picking-a-geocoder",r(o.Option,{title:__("Geocoder")},r(o.Radios,{options:e,checked:t.geocoder,onChange:e=>d({geocoder:e}),help:a}))}(),"leaflet"==t.engine&&function(){const e=r(f,{isSecondary:!0,href:"https://account.mapbox.com/access-tokens/",target:"_blank"},__("Get an Access Token"));return r(o.Option,{title:__("Mapbox access token")},r("div",{className:"mapp-option-mapbox"},r(o.Input,{name:"mapbox",value:t.mapbox,onChange:e=>{d({mapbox:e}),d({geocoder:e?"mapbox":"nominatim"})},placeholder:__("Enter token to use Mapbox"),size:50}),e),r("div",{className:"mapp-help-text"},__("Mapbox makes Leaflet maps look great and provides an excellent geocoder.")))}(),function(){const e=r(f,{isSecondary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key",target:"_blank"},__("Get an API Key"));return r(o.Option,{title:__("Google API key"),className:"mapp-option-apikey"},r(o.Input,{name:"apiKey",value:t.apiKey,onChange:e=>{d({apiKey:e})},placeholder:"google"==t.engine?__("Enter API key to use Google maps"):__("Enter API key to use Google geocoder"),size:50}),e)}()),r(o.Section,{title:__("Map Settings")},r(o.Option,{title:__("Automatic display")},r(o.Radios,{options:[{value:"",label:__("None")},{value:"top",label:__("Top of post")},{value:"bottom",label:__("Bottom of post")}],checked:t.autodisplay,onChange:e=>d({autodisplay:e})})),r(o.Option,{title:__("Map alignment")},r(o.Radios,{options:[{value:"",label:__("Default")},{value:"center",label:__("Center")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],checked:t.alignment,onChange:e=>d({alignment:e})})),r(o.Option,{title:__("Directions")},r(o.Radios,{checked:t.directions,options:[{value:"google",label:"Google"},{value:"inline",label:__("Inline")}],onChange:e=>d({directions:e})})),r(o.Option,{title:__("Mini width")},r(o.Input,{value:t.mini,onChange:e=>d({mini:e}),size:3,label:__("Width (px) to use map/list toggle buttons")})),"leaflet"==mappl10n.options.engine&&r(o.Option,{title:__("Scroll wheel zoom")},r(o.Checkbox,{checked:t.scrollWheel,label:__("Enable map zoom with mouse scroll wheel"),onChange:e=>d({scrollWheel:e})}))),r(o.Section,{title:__("POIs")},r(o.Option,{title:__("Default zoom")},r(o.Select,{label:__("Default zoom when displaying a single POI"),value:t.poiZoom,options:_.map([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],(e=>({value:e,label:e}))),onChange:e=>d({poiZoom:e})})),r(o.Option,{title:__("Hover")},r(o.Checkbox,{checked:t.tooltips,label:__("Open POIs on hover"),onChange:e=>d({tooltips:e})})),r(o.Option,{title:__("Open first POI")},r(o.Checkbox,{checked:t.initialOpenInfo,onChange:e=>d({initialOpenInfo:e}),label:__("Open first POI when a map is displayed")})),r(o.Option,{title:__("Travel lines")},r(o.Checkbox,{label:__("Connect POIs with lines"),checked:t.lines,onChange:e=>d({lines:e})})),function(){const e=e=>d({lineOpts:{...t.lineOpts,...e}}),a=t.lineOpts,i=r(o.Select,{label:__("Icon"),onChange:t=>{e(t?{icons:[{icon:{path:t}}]}:{icons:null})},options:[{value:0,label:__("Circle")},{value:1,label:__("Arrow")},{value:2,label:__("Open arrow")}],placeholder:__("None"),value:a.icons?a.icons[0].icon.path:null}),s=r(o.Checkbox,{label:__("Geodesic (curved) lines"),checked:!!a.geodesic,onChange:t=>e({geodesic:t})}),l=r(o.Checkbox,{label:__("Animate icon"),checked:!!a.animate,onChange:t=>e({animate:t})});return r(o.Option,{title:__("Travel line options"),className:"mapp-option-line-options"},r(o.Control,{labelRight:__("Color")},r(n.MappColorPicker,{color:a.color,weight:a.weight,opacity:a.opacity,isExtended:!0,onChange:t=>e(t)})),"google"==t.engine&&s,"google"==t.engine&&i,"google"==t.engine&&l)}()),r(o.Section,{title:__("POI List")},r(o.Option,{title:__("Display")},r(o.Checkbox,{checked:t.poiList,label:__("Show a list of POIs with each map"),onChange:e=>d({poiList:e})})),r(o.Option,{title:__("Position")},r("div",{className:"mapp-option-poilist-radios"},r(o.Radios,{checked:t.layout,options:[{value:"left",label:__("Left of map")},{value:"inline",label:__("Below map")}],onChange:e=>d({layout:e})}))),"left"==t.layout&&r(o.Option,{title:__("Initial open")},r("div",{className:"mapp-option-poilist-open"},r(o.Checkbox,{checked:t.poiListOpen,label:__("Open list when map is displayed"),onChange:e=>d({poiListOpen:e})}))),r(o.Option,{title:__("Paging")},r("div",{className:"mapp-option-poilist-page-size"},r(o.Input,{labelRight:__("POIs per page"),max:999,min:1,onChange:e=>d({poiListPageSize:e}),size:3,type:"number",value:t.poiListPageSize}))),r(o.Option,{title:__("Sort")},r(o.Checkbox,{checked:t.sort,label:__("Sort POI list by title"),onChange:e=>d({sort:e})}))),r(o.Section,{title:__("Styled Maps")},r(o.Option,{title:__("Default style")},r("div",{className:"mapp-option-style"},r(l.m,{selected:t.style,onChange:e=>{d({style:e}),mappl10n.options.style=e}}),r("div",null,__('Replace the default "roadmap" or "streets" style'))))),mappl10n.options.pro&&r(o.Section,{title:__("Icons")},r(o.Option,{title:__("Default icon")},r(i.MappIconPicker,{iconid:t.defaultIcon,onChange:e=>{mappl10n.options.defaultIcon=e,d({defaultIcon:e})}})),r(o.Option,{title:__("Icon directory")},r("code",null,t.helpers.icon_directory)),r(o.Option,{title:__("Highlight selected POI")},r(o.Radios,{checked:t.highlight,options:[{value:"",label:__("None")},{value:"circle",label:__("Circle")},{value:"scale",label:__("Scale")},{value:"icon",label:__("Icon")}],onChange:e=>d({highlight:e})}),"icon"==t.highlight&&r(i.MappIconPicker,{defaultIcon:t.defaultIcon,iconid:t.highlightIcon,onChange:e=>d({highlightIcon:e})})),function(){let e=t.iconScale&&Array.isArray(t.iconScale)?[...t.iconScale]:[0,0];return r(o.Option,{title:__("Icon size")},r(o.Input,{min:0,max:64,onChange:t=>{t<=64&&(e[0]=t>0?t:"",d({iconScale:e}))},size:3,type:"number",value:e[0]?e[0]:""}),r("span",null," X "),r(o.Input,{min:0,max:64,onChange:t=>{t<=64&&(e[1]=t>0?t:"",d({iconScale:e}))},size:3,type:"number",value:e[1]?e[1]:""}),r("span",null," (px) "))}(),function(){let e=v(t.helpers.taxonomies);e.unshift({value:"post_type",label:__("Post type")});const a=g((e=>{if("post_type"==t.autoicons.key)return v(t.helpers.post_types);const a=wp.data.select("core").getEntityRecords("taxonomy",t.autoicons.key,{per_page:-1,_fields:"id,name,slug"});return a?a.map((e=>({value:e.slug,label:e.name}))):[]}),[t.autoicons.key]);return r(o.Option,{title:__("Automatic icons")},r(o.Select,{label:__('Be sure to set "Show in REST API" for custom taxonomies'),value:t.autoicons?t.autoicons.key:null,options:e,onChange:e=>{let a=t.autoicons?{...t.autoicons}:[];a.key=e,a.values=[],d({autoicons:a})},placeholder:""}),r(o.MappGrid,{cols:[{id:"key",label:__("Key"),type:"select",options:a},{id:"value",label:__("Icon"),type:"icon"}],data:t.autoicons.values,onChange:e=>{let a=t.autoicons?{...t.autoicons}:[];a.values=e,d({autoicons:a})}}))}()),r(o.Section,{title:__("Clustering")},r(o.Option,{title:__("Clustering")},r(o.Checkbox,{checked:t.clustering,label:__("Enable marker clustering"),onChange:e=>d({clustering:e})})),function(){let e=t.clusteringOptions?t.clusteringOptions:{};const a=(t,a)=>{e[t]=a,d({clusteringOptions:e})};if("google"==t.engine){const t="https://github.com/googlemaps/v3-utility-library/blob/3fca406/packages/markerclustererplus/src/markerclusterer.ts",n=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return r("div",{className:"mapp-option-clustering-options"},r(o.Option,{title:__("Max zoom")},r(o.Select,{help:{href:t},label:r(p,null,__("Disable clustering at zoom"),r("code",null,"maxZoom")),onChange:e=>a("maxZoom",e),options:_.map(n,(e=>({value:e,label:e}))),placeholder:__("None"),value:e.maxZoom})))}{const t="https://github.com/Leaflet/Leaflet.markercluster#all-options",n=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return r("div",{className:"mapp-option-clustering-options"},r(o.Option,{title:__("Max zoom")},r(o.Select,{help:{href:t},label:r(p,null,__("Disable clustering at zoom"),r("code",null,"disableClusteringAtZoom")),onChange:e=>a("disableClusteringAtZoom",e),options:_.map(n,(e=>({value:e,label:e}))),placeholder:__("Auto"),value:e.disableClusteringAtZoom})),r(o.Option,{title:__("Spiderfy")},r(o.Checkbox,{checked:e.spiderfyOnMaxZoom,help:{href:t},label:r(p,null,__("Spiderfy"),r("code",null,"spiderfyOnMaxZoom")),onChange:e=>a("spiderfyOnMaxZoom",e)})))}}()),mappl10n.options.pro&&r(o.Section,{title:__("Mashups")},function(){const e=[{value:"poi",label:__("Open popup")},{value:"post",label:__("Open post")},{value:"postnew",label:__("Post in new tab")},{value:"postmodal",label:__("Post in modal")}];return r(o.Option,{title:__("Marker click")},r(o.Radios,{checked:t.mashupClick,options:e,onChange:e=>d({mashupClick:e})}))}(),r(o.Option,{title:__("Popup content")},r(o.Radios,{checked:t.mashupBody,options:[{value:"poi",label:__("POI title + body + images")},{value:"post",label:__("Post title + excerpt + featured image")}],onChange:e=>d({mashupBody:e})})),r(o.Option,{title:__("KMLs")},r(o.Checkbox,{checked:t.mashupKml,label:__("Include KML POIs in mashups"),onChange:e=>d({mashupKml:e})}))),mappl10n.options.pro&&r(o.Section,{title:__("Search")},r(o.Option,{title:__("Search")},r(o.Checkbox,{checked:t.search,label:__("Enable search for mashups"),onChange:e=>d({search:e})})),r(o.Option,{title:__("Search radius")},r(o.Select,{help:{href:"https://mappresspro.com/mappress-documentation/#toc-mashup-search"},label:__("Minimum search radius (km)"),value:t.radius,options:_.map([1,5,10,15,25,50,75,100,200,300],(e=>({value:e,label:e}))),onChange:e=>d({radius:e})})),r(o.Option,{title:__("Search country")},r(o.Select,{label:__("Country code for searches"),value:t.country,options:_.map(["","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CK","CR","HR","CU","CW","CY","CZ","CD","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","CI","JM","JP","JE","JO","KZ","KE","KI","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","KP","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","CG","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","VI","UG","UA","AE","GB","US","UM","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"],(e=>({value:e,label:e}))),onChange:e=>d({country:e}),help:{href:"https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements"}})),mappl10n.options.ssl?r(o.Option,{title:__("User location")},r(o.Checkbox,{checked:t.userLocation,label:__("Show user location on map"),onChange:e=>d({userLocation:e})})):null,function(){if("google"!=t.engine)return r(o.Option,{title:__("Bounding box")},r(o.Input,{onChange:e=>d({searchBox:e}),help:{text:__("Restrict searches to a bounding box (optional)"),href:"https://mappresspro.com/mappress-documentation/#toc-mashup-search"},placeholder:"SW lon, SW lat, NE lng, NE lat",size:45,value:t.searchBox}))}()),mappl10n.options.pro&&r(o.Section,{title:__("Mashup filters")},r(o.Option,{title:__("Filters position")},r(o.Radios,{options:[{value:"top",label:__("Top")},{value:"list",label:__("POI list")}],checked:t.filtersPos,onChange:e=>d({filtersPos:e})})),r(o.Option,{className:"mapp-option-filters",title:__("Filters")},r(o.MappCrudList,{data:t.filters,isDraggable:!0,onChangeData:e=>{d({filters:e})},onRender:e=>function(e){let{row:a,rowId:n,onChange:i,onDelete:s,...l}=e,p=v(t.helpers.taxonomies);const c=[{label:__("Post type"),value:"post"},{label:__("Text search"),value:"text"},{label:"──────────",value:"",disabled:!0},...p],m=function(e){const t=_.findWhere(c,{value:e.key});return t?t.label:__("New filter")},d="text"==a.key?[{value:"input",label:__("Input")}]:[{value:"checkbox",label:__("Checkboxes")},{value:"radio",label:__("Radio buttons")},{value:"select",label:__("Select")}];return r(o.MappExpand,{actions:r("div",null,r(f,{icon:"trash",onClick:()=>s(),title:__("Delete")})),className:"mapp-option-filter",initialOpen:!a.key,showToggle:!0,title:m(a)},r("div",{className:"mapp-option-filter-row"},r(o.Select,{labelTop:__("Filter type"),value:a.key,options:c,onChange:e=>i({key:e,format:"text"==e?"input":"checkbox"}),placeholder:""}),r(o.Select,{labelTop:__("Format"),value:a.format,options:d,placeholder:"",onChange:e=>i({format:e})}),r(o.Input,{labelTop:__("Label"),placeholder:m(a),value:a.label,onChange:e=>i({label:e})}),"post"!=a.key&&"meta"!=a.key&&"text"!=a.key&&r(o.Select,{labelTop:__("Sort"),value:a.sort,options:[{value:"name",label:__("Name")},{value:"slug",label:__("Slug")}],onChange:e=>i({sort:e})})),a.key&&"meta"!=a.key&&"text"!=a.key&&r("div",{className:"mapp-option-filter-row mapp-option-filter-tokens"},r(y,{label:__("Include"),value:a.include,onChange:e=>i({include:e}),__experimentalShowHowTo:!0}),r(y,{label:__("Exclude"),value:a.exclude,onChange:e=>i({exclude:e})})))}(e)}))),mappl10n.options.pro&&r(o.Section,{title:__("Templates")},r(o.Option,{title:__("Custom templates")},r(o.MappTemplateEditor)),r(o.Option,{title:__("Directions link")},r(o.Checkbox,{checked:t.directionsPopup,label:__("Show a directions link in popups"),onChange:e=>d({directionsPopup:e})})),r(o.Option,{title:__("Thumbnails")},r(o.Select,{label:__("Popups"),onChange:e=>d({thumbsPopup:e}),options:[{value:"",label:__("None")},{value:"top",label:__("Top")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],value:t.thumbsPopup}),r(o.Select,{label:__("POI lists"),onChange:e=>d({thumbsList:e}),options:[{value:"",label:__("None")},{value:"top",label:__("Top")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],value:t.thumbsList})),r(o.Option,{title:__("Popup thumbnail size")},r(o.Select,{onChange:e=>d({thumbSize:e}),options:v(t.helpers.thumbnail_sizes),value:t.thumbSize}),r("span",null," "+__("or")+" "),r(o.Input,{value:t.thumbWidth,onChange:e=>d({thumbWidth:e}),type:"number",min:0,max:9999}),r("span",null," X "),r(o.Input,{value:t.thumbHeight,onChange:e=>d({thumbHeight:e}),type:"number",min:0,max:9999}),r("span",null," (px) "))),r(o.Section,{title:__("Localization")},function(){const e="leaflet"==t.engine?"https://en.wikipedia.org/wiki/ISO_639-1":"http://code.google.com/apis/maps/faq.html#languagesupport";return r(o.Option,{title:__("Language")},r(o.Select,{value:t.language,options:v(t.helpers.languages),onChange:e=>d({language:e}),help:{href:e,text:__("Language for searches and Google map controls")}}))}(),r(o.Option,{title:__("Directions server")},r(o.Input,{value:t.directionsServer,onChange:e=>d({directionsServer:e}),size:25}))),mappl10n.options.pro&&r(o.Section,{title:__("Generate Maps from Custom Fields")},r(o.Option,{title:__("Custom fields")},r(o.MappGrid,{cols:[{id:"key",label:__("Map field"),type:"select",options:v(t.helpers.meta_fields)},{id:"value",label:__("Custom field"),type:"combobox",options:v(t.helpers.meta_keys)}],data:t.metaKeys,onChange:e=>{d({metaKeys:e})}})),r(o.Option,{title:__("Post types")},r(o.Checkboxes,{values:t.postTypes,options:v(t.helpers.post_types),onChange:e=>d({postTypes:e})})),r(o.Option,{title:__("Overwrite")},r(o.Checkbox,{label:__("Overwrite maps when posts are saved"),checked:t.metaSyncSave,onChange:e=>{d({metaSyncSave:e})}})),"google"==t.engine&&r(o.Option,{title:__("Google Server API key")},r(o.Input,{name:"apiKeyServer",value:t.apiKeyServer,onChange:e=>d({apiKeyServer:e}),size:50,help:{text:__("Server API key for geocoding. Only required if client key is restricted by referrer."),href:"https://mappresspro.com/mappress-documentation/#toc-google-api-keys"}}))),mappl10n.options.pro&&mappl10n.options.acfActive&&r(o.Section,{title:__("Frontend Forms")},r(o.Option,{title:__("Advanced Custom Fields")},r(o.Input,{className:"mapp-option-acf",name:"acf",value:t.acf,onChange:e=>{d({acf:e})},size:20}),__("ACF map field to include on MapPress mashups"),r(o.Help,{text:__("To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section"),href:"https://mappresspro.com/mappress-documentation/#toc-frontend-forms"}))),r(o.Section,{title:__("Miscellaneous")},r(o.Option,{title:__("Map sizes")},r(o.MappGrid,{cols:[{id:"width",label:__("Width")+" (px, %, vw)",size:4},{id:"height",label:__("Height")+" (px, %, vh)"}],data:t.sizes,onChange:(e,t)=>d({sizes:e,size:t}),selectionColumn:"rowid",selected:t.size})),t.helpers.jetpack?null:r(o.Option,{title:__("Scripts")},r(o.Checkbox,{checked:t.footer,label:__("Output scripts in footer"),onChange:e=>d({footer:e}),help:{text:__("Disable footer scripts if maps are output using AJAX")}})),r(o.Option,{title:"WPML"},r(o.Checkbox,{checked:t.wpml,label:__("Copy maps when overwriting a translation"),onChange:e=>d({wpml:e}),help:{href:"https://mappresspro.com/mappress-documentation#wpml"}})),r(o.Option,{title:__("Compatibility")},r("div",null,r(o.Checkbox,{checked:t.deregister,label:__("Prevent loading Google Maps multiple times"),onChange:e=>d({deregister:e})})),r("div",null,r(o.Checkbox,{checked:t.iframes,label:__("Output maps in iframes to prevent compatibility issues"),onChange:e=>d({iframes:e})})))),r("div",{className:"mapp-options-toolbar"},r(f,{isBusy:t.isSaving,className:"mapp-options-save",type:"submit",isPrimary:!0},__("Save")),r(f,{isBusy:t.isSaving,isSecondary:!0,onClick:()=>w("reset")},__("Reset Defaults")))))}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-options-settings")&&wp.element.render(r(k,mappress_options_state),document.getElementById("mapp-options-settings"))}))},228:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Control:()=>b,Help:()=>y,Checkbox:()=>v,Checkboxes:()=>k,Datalist:()=>w,Input:()=>C,Radios:()=>N,Select:()=>S,Textarea:()=>O,Section:()=>M,Option:()=>I,MappGrid:()=>P,MappCrudList:()=>E,MappExpand:()=>z,MappTabs:()=>L,MappTemplateEditor:()=>T});var o=a(28),n=a(939);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{useSelect:d}=wp.data,{Button:u,Dashicon:h,Modal:g,TabPanel:f}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){let{className:t,help:a,type:o,...n}=e;const l=Array.isArray(n.children)?s:"label";let r="mapp-control";return o&&(r+=" mapp-control-"+o),t&&(r+=" "+t),i("div",{className:r},n.labelTop&&i("div",{className:"mapp-label-top"},n.labelTop),i(l,null,n.labelLeft&&i("span",null,n.labelLeft),n.children,(n.label||n.labelRight)&&i("span",null,n.label||n.labelRight)),a&&i(y,a))}function y(e){let t="mapp-help-text";e.type&&(t+=" mapp-help-"+e.type);let a=null;return e.href&&(a="#"==e.href.substr(0,1)?"https://mappresspro.com/mappress-documentation/"+e.href:e.href),i(s,null,a&&i("a",{className:"mapp-help-link",href:a,target:"_blank"},i(h,{icon:"editor-help"})),e.text&&i("div",{className:t},e.text))}function v(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(b,{type:"checkbox",...l},i("input",{checked:void 0!==t&&t,className:a,disabled:o,onChange:e=>n(e.target.checked),type:"checkbox",value:s}))}function k(e){let{label:t,onChange:a,options:o,values:n,...s}=e;return i(b,{type:"checkboxes",...s},_.map(o,((e,t)=>{let o=n?n.indexOf(e.value):-1;return i(v,{key:t,label:e.label,value:e.value,checked:o>=0,disabled:e.disabled,onChange:t=>{let i=[...n];t&&-1==o&&a(i.concat(e.value)),!t&&o>=0&&(i.splice(o,1),a(i))}})})))}function w(e){let{className:t,list:a,onChange:o,options:n,value:s,...l}=e;return i(b,{type:"select",...l},i("span",{className:t},i("input",{list:a,value:null!=s?s:"",onChange:e=>o(e.target.value)}),i("datalist",{id:a},_.map(n,((e,t)=>i("option",{key:t,value:e.value,disabled:e.disabled},e.label))))))}function C(e){let{autoFocus:t,disabled:a,max:o,min:n,name:s,onChange:l,placeholder:r,size:p,trim:c,type:m,value:d,...u}=e;return i(b,{type:"input",...u},i("input",{autoFocus:t,disabled:a,max:o,min:n,name:s,onChange:e=>{if(l){const t=c?e.target.value.trim():e.target.value;l(t)}},placeholder:r,size:p,type:m||"text",value:null!==d?d:""}))}const x=function(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(b,{type:"radio",...l},i("input",{checked:t,className:a,disabled:o,onChange:e=>n(e.target.value),type:"radio",value:s}))};function N(e){let{checked:t,label:a,onChange:o,options:n,...s}=e;return i(b,{type:"radios",...s},_.map(n,((e,a)=>{if(!e.hide)return i(x,{key:a,value:e.value,checked:t==e.value||null==t&&""==e.value,onChange:e=>o(e),disabled:e.disabled,label:e.label})})))}function S(e){let{className:t,onChange:a,options:o,placeholder:n,value:s,...l}=e,r=[...o];return void 0!==n&&r.unshift({value:"",label:n}),i(b,{type:"select",...l},i("select",{className:t,value:null!=s?s:"",onChange:e=>a(e.target.value)},_.map(r,((e,t)=>i("option",{key:t,value:e.value,disabled:e.disabled},e.label)))))}function O(e){let{className:t,onChange:a,...o}=e;return i(b,{type:"textarea",...o},i("textarea",{className:t,onChange:e=>a(e.target.value)}))}function M(e){let t=e.className?" "+e.className:"";return i("div",{className:"mapp-option-section"+t},i("h2",null,e.title),e.children)}function I(e){const t=e.className?"mapp-option "+e.className:"mapp-option";return i("div",{className:t},i("div",{className:"mapp-option-title"},e.title),i("div",{className:"mapp-option-value"},e.children))}function P(e){const[t,a]=m({dragging:null,dragover:null});function n(e){a((t=>({...t,...e})))}function s(a,o){let i=[...e.data];switch(a){case"add":let a={};_.map(e.cols,(e=>{a[e.id]=""})),i.push(a),e.onChange(i,e.selected);break;case"change":i[o.i][o.id]=o.value,e.onChange(i,e.selected);break;case"delete":let s;i.splice(o,1),s=o==e.selected?null:o<e.selected?e.selected-1:e.selected,e.onChange(i,s);break;case"select":n({selected:o}),e.onChange(i,o);break;case"sort":let l=t.dragging,r=l<o?o-1:o;i.splice(r,0,i.splice(l,1)[0]),e.onChange(i,r),n({dragover:null})}}return i("div",{className:e.className?"mapp-grid "+e.className:"mapp-grid"},e.data&&!!e.data.length&&i("div",{className:"mapp-grid-table"},function(){const t=e.selectionColumn?i("div",{className:"mapp-grid-cell",key:"select"},__("Default")):null,a=i("div",{className:"mapp-grid-cell",key:"actions"},"");return i("div",{className:"mapp-grid-header"},i("div",{className:"mapp-grid-row"},t,_.map(e.cols,(e=>i("div",{className:"mapp-grid-cell",key:e.id},e.label))),a))}(),i("div",{className:"mapp-grid-body"},_.map(e.data,((a,l)=>function(a,l){return i("div",{className:"mapp-grid-row"+(t.dragover==l?" mapp-dragover":""),draggable:!0,key:l,onDragOver:e=>e.preventDefault(),onDragStart:e=>n({dragging:l}),onDragEnter:e=>n({dragover:l}),onDragEnd:e=>n({dragging:null,dragover:null}),onDrop:e=>s("sort",l)},function(t,a){if(!e.selectionColumn)return null;let o,n;return"rowid"==e.selectionColumn?o=a:t[e.selectionColumn]?o=t[e.selectionColumn]:n=!0,"checkbox"===e.selectionType?i("div",{className:"mapp-grid-cell"},i(v,{value:o,checked:e.selected==o,disabled:n,onChange:e=>{s("select",e?o:null)}})):i("div",{className:"mapp-grid-cell"},i(x,{checked:e.selected==o,onChange:()=>s("select",o)}))}(a,l),_.map(e.cols,((t,a)=>i("div",{className:"mapp-grid-cell mapp-grid-cell-"+t.id,key:l+"-"+a},function(t,a){if(a.onRender)return a.onRender({id:a.id,value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});switch(a.type){case"combobox":return i(w,{list:a.id+"_"+t,options:a.options,value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});case"icon":return i(o.MappIconPicker,{iconid:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});default:return i(C,{size:e.data[t][a.size],value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});case"select":return i(S,{value:e.data[t][a.id],options:a.options,onChange:e=>s("change",{i:t,id:a.id,value:e}),placeholder:""})}}(l,t)))),function(e){return i("div",{className:"mapp-grid-cell",key:"delete"},i(u,{icon:"trash",onClick:()=>s("delete",e)}))}(l))}(a,l))))),i("div",{className:"mapp-grid-toolbar"},i(u,{isSecondary:!0,onClick:()=>s("add")},__("Add"))))}function E(e){let{data:t,isDraggable:a,onAdd:o,onChangeData:n,onRender:s,...r}=e;const[p,c]=m({dragging:null,dragover:null,isDraggable:!1});function d(e){c((t=>({...t,...e})))}function h(e,a,i){let s=Array.isArray(t)?[...t]:[];switch(e){case"add":const e=o?o():{};s.push(e),n(s);break;case"change":s[i]={...t[i],...a},n(s);break;case"delete":confirm(mappl10n.delete_prompt)&&(s.splice(a,1),n(s));break;case"sort":let l=p.dragging,r=l<a?a-1:a;s.splice(r,0,s.splice(l,1)[0]),n(s),d({dragover:null})}}return l((()=>{}),[]),i("div",{className:"mapp-crud-list"},_.map(t,((e,t)=>i("div",{className:"mapp-crud-row"+(p.dragover==t?" mapp-dragover":""),draggable:a,key:t,onDragOver:e=>e.preventDefault(),onDragStart:e=>d({dragging:t}),onDragEnter:e=>d({dragover:t}),onDragEnd:e=>d({dragging:null,dragover:null}),onDrop:e=>h("sort",t)},s({row:e,rowId:t,onChange:e=>h("change",e,t),onDelete:()=>h("delete",t)})))),i("div",{className:"mapp-crud-toolbar"},i(u,{isSecondary:!0,onClick:()=>h("add")},__("Add"))))}function z(e){let{actions:t,initialOpen:a,showToggle:o,subTitle:n,title:s,...l}=e;const[r,p]=m({isOpen:!o||a});function c(e,t){if("toggle"===e)o&&(a={isOpen:!r.isOpen},p((e=>({...e,...a}))));var a}let d="mapp-expand";return d+=r.isOpen?"":" mapp-expand-closed",d+=l.className?" "+l.className:"",i("div",{className:d},i("div",{className:"mapp-expand-header",onClick:()=>c("toggle")},i("div",null,s,n),o&&i("div",null,i(h,{icon:r.isOpen?"arrow-up":"arrow-down"}))),i("div",{className:"mapp-expand-body"},l.children),t&&i("div",{className:"mapp-expand-footer"},t))}function L(e){e={className:null,onRender:null,onSelect:null,initialTab:null,tabs:[],...e};const[t,a]=m({tab:e.initialTab?e.initialTab:e.tabs[0].name});function o(t){var o;o={tab:t},a((e=>({...e,...o}))),e.onSelect&&e.onSelect(t)}const{className:n="",style:s={}}=e;return i("div",{className:"mapp-tabs "+n,style:s},i("div",{className:"mapp-tabs-nav"},_.map(e.tabs,(e=>i("div",{className:e.name==t.tab?"mapp-tab mapp-active":"mapp-tab",key:e.name,onClick:()=>o(e.name)},e.label)))),i("div",{className:"mapp-tab-content"},e.onRender(t.tab)))}function T(e){const[t,a]=m({codeEditor:null,isOpen:!1,name:null,tab:"editor",template:null,tokens:null});function o(e){a((t=>({...t,...e})))}const l=p((e=>{if(null!=e){let a=wp.codeEditor.initialize(e);a.codemirror.setSize("auto","auto"),a.codemirror.setOption("readOnly","editor"!=t.tab),o({codeEditor:a})}}),[t.tab]);function r(){o({isOpen:!1})}function c(e){return"editor"==e?function(){const e=i("div",{className:"mapp-templates-tokens"},_.map(t.tokens,((e,a)=>i("code",{onClick:()=>function(e){let a=t.codeEditor.codemirror.getDoc(),o=a.getCursor();a.replaceRange("{{{poi."+e.token+"}}}",o)}(e),key:e.token,title:e.label},e.label))));return i(s,null,i("div",{className:"mapp-templates-path"},t.template.path),e,i("div",{className:"mapp-templates-editor"},i("textarea",{ref:l,defaultValue:t.template.content})))}():i(s,null,i("div",{className:"mapp-templates-standard"},i("textarea",{ref:l,defaultValue:t.template.standard})))}function d(){const e=t.template.name+" ("+(t.template.exists?__("Custom"):__("New"))+")";return i("div",{className:"mapp-templates-name"},e)}return i("div",{className:"mapp-templates"},function(){const e=[{name:"map-popup",label:__("Map popup")},{name:"map-item",label:__("Map list item")},{name:"mashup-popup",label:__("Mashup popup")},{name:"mashup-item",label:__("Mashup list item")}];return i("div",{className:"mapp-templates-list"},_.map(e,((e,t)=>i("a",{href:"#",key:e.name,className:"mapp-templates-item",onClick:t=>{var a;t.preventDefault(),a=e.name,n.mappLib.ajax({type:"GET",data:{action:"mapp_tpl_get",name:a,nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status&&o({isOpen:!0,name:a,tab:"editor",template:e.data.template,tokens:e.data.tokens})}})}},e.label))))}(),t.isOpen&&t.template?i(g,{title:d(),className:"mapp-templates-modal",onRequestClose:()=>r(),shouldCloseOnClickOutside:!1},i(L,{className:"mapp-templates-tabs",onRender:e=>c(e),onSelect:e=>function(e){if("editor"!=e){let e={...t.template};e.content=t.codeEditor.codemirror.getValue(),o({template:e})}o({tab:e})}(e),tabs:[{name:"editor",label:__("Editor")},{name:"standard",label:__("Default")}]}),t.error&&i("div",{className:"mapp-templates-error"},t.error),i("div",{className:"mapp-templates-toolbar"},i("div",null,i(u,{isPrimary:!0,onClick:()=>function(){let e="editor"==t.tab?t.codeEditor.codemirror.getValue():t.template.content;n.mappLib.ajax({type:"POST",data:{action:"mapp_tpl_save",content:e,name:t.template.name,nonce:mappl10n.options.nonce},callback:function(e){e&&"OK"==e.status&&o({isOpen:!1,template:null,tokens:null})}})}()},__("Save")),i(u,{isSecondary:!0,onClick:()=>r()},__("Cancel"))),i("div",null,t.template.exists&&i(u,{isDestructive:!0,title:__("Reset template to default"),onClick:e=>{e.preventDefault(),confirm(mappl10n.delete_prompt)&&(n.mappLib.ajax({type:"POST",data:{action:"mapp_tpl_delete",name:t.template.name,nonce:mappl10n.options.nonce}}),o({isOpen:!1}))}},__("Reset"))))):null)}},597:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappOptionsMeta:()=>f});var o=a(228),n=a(939);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{Button:d,Dashicon:u,FormTokenField:h,Modal:g}=wp.components,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function f(e){e={errors:null,postEdit:null,userEdit:null,...e};const[t,a]=m({errors:e.errors?e.errors:[],isBusy:!1,isDone:!1,logs:[],otype:null,start:null});c(null);function r(e){a((t=>({...t,...e})))}function p(e){r({isDone:!1,isBusy:!0,errors:[],logs:[],otype:e,start:0})}function u(t){if(t)return i("div",{className:"mapp-option-geocode-log"},_.map(t,(t=>{let a="";return a="user"==t.otype?e.userEdit+"?user_id="+t.oid:e.postEdit+"?post="+t.oid+"&action=edit",i("div",{className:"mapp-option-geocode-log-row",key:t.oid},i("div",null,t.otype),i("div",null,t.oid),i("div",null,i("a",{href:a,target:"_blank"},t.title)),i("div",null,t.msg))})))}l((()=>{t.isDone&&r({isBusy:!1})}),[t.start,t.isDone]),l((()=>{null===t.start||t.isDone||n.mappLib.ajax({type:"POST",data:{action:"mapp_geocode",batch_size:5,nonce:mappl10n.options.nonce,otype:t.otype,start:t.start},callback:e=>{if(e&&"OK"==e.status){const a=e.data.logs.length<5;r({errors:e.data.errors,isBusy:!a,isDone:a,logs:t.logs.concat(e.data.logs),start:a?t.start:t.start+5})}}})}),[t.start,t.isDone]);const h=t.logs.length?t.logs.length:1;let g="";return t.isBusy?g=__("Geocoding... "+h):t.isDone&&(g=__("Done")),i(s,null,i(o.Option,{title:__("Geocoding")},i(d,{className:"mapp-option-geocode",disabled:t.isBusy,isBusy:t.isBusy,isSecondary:!0,onClick:()=>{t.isBusy||p("post")}},__("Geocode posts")),i(d,{className:"mapp-option-geocode",disabled:t.isBusy,isBusy:t.isBusy,isSecondary:!0,onClick:()=>{t.isBusy||p("user")}},__("Geocode users")),g,i("div",{style:{fontStyle:"italic"}},__("For bulk geocoding (>100 items) online geocoding services are faster and less expensive.")),u(t.logs)),function(){const e=t.errors.length>0?u(t.errors):__("No errors");return i(o.Option,{title:__("Geocoding errors")},i("div",{className:"mapp-option-geocode-errors"},e))}())}},185:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>C});var o=a(283),n=a(101),i=(a(939),a(27)),s=a(78);window.mapp=window.mapp||{};const l=wp.element.createElement,{select:r}=wp.data,{Fragment:p,useEffect:c,useLayoutEffect:m,useRef:d,useState:u}=wp.element,{BaseControl:h,Button:g,Dashicon:f,Icon:b,Modal:y,PanelBody:v,Spinner:k,TextControl:w}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function C(e){e={context:null,filter:null,mapid:null,mode:null,onClose:null,onInsert:null,onTrash:null,...e};const[t,a]=u({counts:{all:null,trashed:null,object:null},filter:"all",isFetchingItems:!0,items:null,mode:e.mode?e.mode:"list",mapid:e.mapid?e.mapid:null,page:1,search:""}),{addSnackbar:p,renderSnackbar:m}=(0,s.D)(),h=d(null),v=d(null),C=d(null);function x(e){a((t=>({...t,...e})))}function N(e,t,a){mapp.store.mutateMap(e,{postid:t,postTitle:a})}function S(){e.onClose()}function O(e){"trashed"!=t.filter&&x({mode:"edit",mapid:e})}function M(a){let n,i=a.mapid==t.mapid;n=a.title?a.title:__("Untitled");let s,c=function(t){let a;return a="map"==e.context||"mashup"==e.context&&t.postid==mappl10n.options.postid?r("core/editor").getEditedPostAttribute("title"):t.post_title,a=a||__("Untitled"),t.postid>0&&t.postid==mappl10n.options.postid&&(a=__("Current post")),t.postid>0?t.postid==mappl10n.options.postid?a:l("a",{href:mappl10n.options.editurl+"?post="+t.postid+"&action=edit",target:"_blank",title:__("Edit post")},a):__("Unattached")}(a);s="trashed"==t.filter?l("div",{className:"mapp-pick-actions",onClick:e=>e.stopPropagation()},l("a",{href:"#",key:"restore",onClick:()=>{return e=a.mapid,mapp.store.mutateMap(e,{status:""}),void p(__("Map restored"));var e}},__("Restore")),l("a",{href:"#",className:"mapp-destructive",key:"delete",onClick:()=>{return e=a.mapid,confirm(mappl10n.delete_map_prompt)&&(mapp.store.destroyMap(e),p(__("Map deleted"))),void(v.current&&v.current.focus());var e}},__("Delete Permanently"))):l("div",{className:"mapp-pick-actions",onClick:e=>e.stopPropagation()},l("a",{href:"#",key:"edit",onClick:e=>{e.stopPropagation(),O(a.mapid)}},__("Edit")),"library"!=e.context&&l("a",{href:"#",key:"insert",onClick:t=>{return o=a.mapid,void e.onInsert(o);var o}},__("Insert into post")),l("a",{href:"#",key:"duplicate",onClick:e=>{return t=a.mapid,void mapp.store.duplicateMap(t,(e=>{p(__("Map copied")),x({mapid:e.mapid}),h.current&&(h.current.scrollTop=0)}));var t}},__("Copy")),l("a",{href:"#",className:"mapp-destructive",key:"trashed",onClick:o=>{return n=a.mapid,mapp.store.mutateMap(n,{status:"trashed"}),p(__("Map moved to trash")),void(t.mapid&&n==t.mapid&&e.onTrash&&e.onTrash());var n}},__("Trash")));let m=null;return m=a.postid>0?l("a",{href:"#",onClick:()=>{return e=a.mapid,void mapp.store.mutateMap(e,{postid:0});var e}},__("Detach")):"library"==e.context?l(o.MappAttachControl,{onChange:(e,t)=>N(a.mapid,e,t)},__("Attach")):l("a",{href:"#",onClick:()=>N(a.mapid,mappl10n.options.postid,null)},__("Attach")),l("div",{className:"mapp-pick-item"+(i?" mapp-selected":""),key:a.mapid+"|"+a.postid,ref:i?C:null},l("div",{className:"mapp-pick-col-mapid",onClick:()=>O(a.mapid)},a.mapid),l("div",{className:"mapp-pick-col-title",onClick:()=>O(a.mapid)},l("div",null,n),l("div",null,s)),l("div",{className:"mapp-pick-col-post-title"},c,l("div",null,m)),"library"==e.context&&l("div",{className:"mapp-pick-col-shortcode"},l(g,{isSmall:!0,isSecondary:!0,onClick:e=>{e.stopPropagation(),e.preventDefault(),function(e){const t=document.createElement("input");document.body.appendChild(t),t.value='[mappress mapid="'+e+'"]',t.select(),document.execCommand("copy"),t.remove(),p(__("Shortcode copied"))}(a.mapid)}},__("Copy"))))}function I(e){return e&&e.length?l(i.MappPaginate,{count:e?e.length:0,onChange:e=>function(e){x({page:e}),h.current&&(h.current.scrollTop=0)}(e),page:t.page,pageSize:20}):null}c((()=>{const e=e=>{if(!e.isFetchingItems){let t={all:0,object:0,trashed:0};_.map(e.items,(e=>{"trashed"==e.status?t.trashed++:(t.all++,e.postid==mappl10n.options.postid&&t.object++)})),x({counts:t})}x({isFetchingItems:e.isFetchingItems,isSavingMap:e.isSavingMap,items:e.items})};return mapp.store.subscribe(e),()=>mapp.store.unsubscribe(e)})),c((()=>{mapp.store.fetchItems((t=>{const a=e.mapid?t.find((t=>t.mapid==e.mapid)):null;a&&("trashed"==a.status?x({filter:"trashed"}):a.postid==mappl10n.options.postid&&x({filter:"object"}))}))}),[]),c((()=>{x({page:1})}),[t.filter,t.search]),c((()=>{"list"==t.mode&&v.current&&v.current.focus()}),[t.mode]);const P=_.filter(t.items,(function(e){if("trashed"==t.filter)return"trashed"==e.status;if("trashed"==e.status)return!1;if("object"==t.filter&&e.postid!=mappl10n.options.postid)return!1;var a=t.search.toLowerCase();return!a||(e.mapid.indexOf(a)>=0||(!!(e.post_title&&e.post_title.toLowerCase().indexOf(a)>=0)||!!(e.title&&e.title.toLowerCase().indexOf(a)>=0)))}));let E=l("div",{className:"mapp-list-panel"},l("div",{className:"mapp-gt-modal-header"},l("div",{className:"mapp-gt-modal-header-title"},l("h1",null,__("Maps")),l(g,{isPrimary:!0,onClick:()=>{x({mode:"edit",mapid:null})}},__("Add New"))),l(g,{onClick:()=>S(),icon:"no-alt"})),function(){let a=[{label:__("All"),value:"all"},{label:__("Attached to post"),value:"object",hide:"library"==e.context},{label:__("Trash"),value:"trashed"}];return l("div",{className:"mapp-pick-filter-wrapper"},l("div",{className:"mapp-pick-filter-tabs"},_.map(a,((e,a)=>{const o="mapp-pick-filter-tab"+(t.filter==e.value?" mapp-active":""),n=t.counts[e.value];if(!e.hide)return l("div",{className:o,href:"#",key:a,onClick:()=>function(e){x({filter:e})}(e.value)},e.label,null!=n&&l("span",{className:"mapp-pick-filter-count"},n))}))),function(){if("trashed"!=t.filter)return l("div",{className:"mapp-pick-search-wrapper"},l(w,{ref:v,className:"mapp-pick-search",tabIndex:1,placeholder:__("post title, map title, or map id"),onChange:e=>x({search:e}),size:50,value:t.search}),l(b,{icon:"search"}),(t.isFetchingItems||t.isAttaching&&"library"!=e.context)&&l(k,null))}())}(),function(a){if(a){const e=20*(t.page-1),o=e+20;a=a.slice(e,o)}let o="";return o=t.isFetchingItems?null:a.length?_.map(a,M):l("div",{className:"mapp-pick-message"},__("No maps found")),l("div",{className:"mapp-pick-items-section"},l("div",{className:"mapp-pick-items",ref:h},function(){let t=[{id:"mapid",className:"mapp-pick-col-mapid",label:__("ID"),sortable:!0},{id:"title",className:"mapp-pick-col-title",label:__("Map title"),sortable:!0},{id:"post_title",className:"mapp-pick-col-post-title",label:__("Attached to"),sortable:!0}];"library"==e.context&&t.push({id:"shortcode",className:"mapp-pick-col-shortcode",label:__("Shortcode"),sortable:!1});return l("div",{className:"mapp-pick-items-header"},_.map(t,(e=>l("div",{className:e.className,onClick:()=>{return t=e.id,void mapp.store.setSort({sortBy:t,sortAsc:mapp.store.state.sortBy!=val||!mapp.store.state.sortAsc});var t},key:e.id},e.label,e.sortable&&mapp.store.state.sortBy==e.id&&l(f,{icon:mapp.store.state.sortAsc?"arrow-up":"arrow-down"}),e.sortable&&mapp.store.state.sortBy!=e.id&&l(f,{icon:"leftright"})))))}(),o))}(P),function(e){return l("div",{className:"mapp-pick-toolbar"},I(e))}(P)),z=null;if("edit"==t.mode){let a=l("div",{className:"mapp-edit-panel"},l(n.MappEdit,{context:e.context,mapid:t.mapid,onClose:()=>{"edit"==e.mode?e.onClose():x({mode:"list"})},onSave:t=>function(t){"edit"==e.mode?e.onClose(t.mapid):(x({mode:"list",mapid:t.mapid}),p(sprintf(__("Map %d saved"),t.mapid)))}(t)}));z="library"==e.context?l(y,{className:"mapp-gt-modal",isDismissible:!1},a):a}const L="mapp-pick mapp-mode-"+t.mode+" mapp-context-"+e.context;return"library"==e.context?l("div",{className:L},E,z,m()):l(y,{className:"mapp-gt-modal "+L,isDismissible:"list"==t.mode,onRequestClose:()=>S(),shouldCloseOnEsc:"list"==t.mode,shouldCloseOnClickOutside:"list"==t.mode},E,z,m())}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-library")&&(mappl10n.options.postid=0,wp.element.render(l(C,{context:"library"}),document.getElementById("mapp-library")))}))},885:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappSettings:()=>y});var o=a(614),n=a(78),i=a(228);window.mapp=window.mapp||{};const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:m}=wp.element,{BaseControl:d,Button:u,ButtonGroup:_,Dashicon:h,Dropdown:g,Panel:f,PanelBody:b}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function y(e){e={context:null,map:null,onChange:null,center:null,height:null,mapid:null,poiList:null,search:null,title:null,width:null,zoom:null,...e};const[t,a]=m({});const{addSnackbar:r,renderSnackbar:p}=(0,n.D)();function c(t,a){let o={};null!=a&&(o.height=a),null!=t&&(o.width=t),(o.width||o.height)&&(e.map.setSize(o),e.onChange(o))}const d="mce"!=e.context&&"library"!=e.context;return s("div",{className:"mapp-settings"},s(b,{title:__("Map settings"),initialOpen:d},"map"==e.context&&function(){const t=e.map.title?e.map.title:__("Untitled");return s("div",{className:"mapp-settings-row mapp-settings-title"},s(i.Control,{labelTop:__("Title")},t),s(i.Control,{labelTop:__("Map ID")},e.map.mapid))}(),function(){if("mashup"==e.context)return s("div",{className:"mapp-settings-row mapp-style-toggle"},s("div",null,__("Style")),s(o.m,{map:e.map,selected:e.map.mapTypeId,onChange:t=>function(t){e.map&&e.map.set({mapTypeId:t}),e.onChange({mapTypeId:t})}(t)}))}(),function(){mappl10n.options.sizes[mappl10n.options.size]?mappl10n.options.sizes[mappl10n.options.size]:mappl10n.options.sizes[0];var t=mappl10n.options.sizes.map(((e,t)=>({label:e.width+" X "+e.height,height:e.height,width:e.width,value:t+1})));t.unshift({height:"",label:__("Default"),value:0,width:""}),t.push({label:__("Custom"),value:"custom",disabled:!0});for(var a="custom",o=0;o<t.length-1;o++)t[o].width==e.width&&t[o].height==e.height&&(a=o);return s(l,null,s("div",{className:"mapp-settings-row"},s(i.Select,{className:"mapp-settings-dims-select",help:"",labelTop:__("Size"),value:a,options:t,onChange:e=>c(t[e].width,t[e].height)})),s("div",{className:"mapp-settings-row"},s(i.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vw")},labelTop:__("Width"),onChange:e=>c(e,null),value:e.width?e.width:""}),s(i.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vh")},labelTop:__("Height"),onChange:e=>c(null,e),value:e.height?e.height:""})))}(),s("div",{className:"mapp-settings-row"},s(i.Control,{className:"mapp-settings-viewport",labelTop:__("Center/Zoom")},s(_,{label:__("Center/Zoom")},s(u,{onClick:()=>(e.map.center=e.map.zoom=null,e.map.recenter(),r(__("Viewport automatic")),void e.onChange({center:void 0,zoom:void 0})),isPressed:!e.center,isSmall:!0},__("Automatic")),s(u,{onClick:()=>function(){let t=e.map.getCenter().toJSON();e.map.center=t,e.map.zoom=e.map.getZoom(),r(__("Viewport set")),e.onChange({center:t.lat+","+t.lng,zoom:e.map.getZoom()})}(),isPressed:e.center,isSmall:!0},__("Set"))))),void 0,p()))}},78:(e,t,a)=>{"use strict";a.d(t,{D:()=>l});const{useEffect:o,useState:n}=wp.element,{createContext:i}=React,s=wp.element.createElement,l=()=>{const[e,t]=n({snackbars:[]});function a(e){t((t=>({...t,...e})))}o((()=>{if(e.snackbars.length){const t=setTimeout((()=>{let t=[...e.snackbars];t.shift(),a({snackbars:t})}),5e3);return()=>clearTimeout(t)}}),[e.snackbars]);return{addSnackbar:t=>a({snackbars:[...e.snackbars,t]}),renderSnackbar:()=>s("div",{className:"mapp-snackbars"},e.snackbars.map(((e,t)=>s("div",{className:"mapp-snackbar mapp-snackbar-show",key:t},e))))}}},66:(e,t,a)=>{"use strict";a.r(t);var o=a(939);window.mapp=window.mapp||{};mapp.Store=function(){this.subs=new Set,this.state={isFetchingMap:!1,isFetchingItems:!1,isSavingMap:!1,itemsFetched:!1,sortBy:"mapid",sortAsc:!1,maps:{},items:[]}},mapp.Store.prototype={createMap:function(){let{success:e=(()=>{})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.state.isFetchingMap=!1,this.publish(),e()},destroyMap:function(e){o.mappLib.ajax({type:"POST",data:{action:"mapp_delete",mapid:e,nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status&&(delete this.state.maps[e],this.destroyItem(e)),this.publish()}})},duplicateMap:function(e,t){this.state.isSavingMap=!0,this.publish(),o.mappLib.ajax({type:"POST",data:{action:"mapp_duplicate",mapid:e,postid:mappl10n.options.postid,nonce:mappl10n.options.nonce},callback:e=>{if(e&&"OK"==e.status){let a=e.data,o=a.mapid;this.state.maps[o]=a,this.saveItem(o,a),t&&t(a)}this.state.isSavingMap=!1,this.publish()}})},fetchMap:function(e){void 0===this.state.maps[e]?(this.state.isFetchingMap=!0,this.publish(),o.mappLib.ajax({type:"GET",data:{action:"mapp_get",mapid:e,nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status?this.state.maps[e]=t.data:this.state.maps[e]=null,this.state.isFetchingMap=!1,this.publish()}})):this.publish()},mutateMap:function(e,t){this.state.isSavingMap=!0,this.saveItem(e,t),this.publish(),o.mappLib.ajax({type:"POST",data:{action:"mapp_mutate",mapid:e,mapdata:t,nonce:mappl10n.options.nonce},callback:e=>{this.state.isSavingMap=!1,this.publish()}})},saveMap:function(e,t){this.state.isSavingMap=!0,this.publish(),o.mappLib.ajax({type:"POST",data:{action:"mapp_save",mapdata:JSON.stringify(e),nonce:mappl10n.options.nonce},callback:a=>{if(a&&"OK"==a.status){const o=a.data;e.mapid=o,this.state.maps[o]=e,this.saveItem(o,e),t&&t(e)}this.state.isSavingMap=!1,this.publish()}})},destroyItem:function(e){let t=this.state.items?this.state.items:[],a=_.findIndex(t,{mapid:e});a>-1&&t.splice(a,1),this.state.items=[...t],this.publish()},fetchItems(e){if(this.state.itemsFetched)return this.publish(),void(e&&e(this.state.items));this.state.isFetchingItems=!0,this.publish(),o.mappLib.ajax({type:"GET",data:{action:"mapp_find",nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status&&(this.state.items=t.data,this.sort(),this.state.itemsFetched=!0,e&&e(this.state.items)),this.state.isFetchingItems=!1,this.sort(),this.publish()}})},saveItem:function(e,t){let a=this.state.items?this.state.items:[],o=_.findWhere(a,{mapid:e});o?(_.map(["mapid","title","postid","post_title","status"],(e=>{void 0!==t[e]&&(o[e]=t[e])})),o={...o}):(o={mapid:e,title:t.title,postid:mappl10n.options.postid,post_title:null},a.unshift(o))},setSort:function(e){e.sortBy&&(this.state.sortBy=e.sortBy),void 0!==e.sortAsc&&(this.state.sortAsc=e.sortAsc),this.sort(),this.publish()},sort:function(e,t){const a=(o="untitled",wp.i18n.__(o,"mappress-google-maps-for-wordpress"));var o;this.state.items.sort(((e,t)=>function(e,t,o,n){if(n=n?1:-1,"mapid"==o)return n*(Number(e.mapid)-Number(t.mapid));let i=e[o]?e[o]:a,s=t[o]?t[o]:a,l=n*i.localeCompare(s);return 0==l?Number(e.mapid)-Number(t.mapid):l}(e,t,this.state.sortBy,this.state.sortAsc)))},subscribe:function(e){this.subs.add(e)},unsubscribe:function(e){this.subs.delete(e)},publish:function(){let e=[...this.subs];for(let t of e)t(this.state)}},mapp.store=new mapp.Store},614:(e,t,a)=>{"use strict";a.d(t,{m:()=>w});var o=a(228),n=a(939),i=a(27);const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:m}=wp.element,{Button:d,Dashicon:u,ExternalLink:h,Icon:g,Modal:f,Panel:b,PanelBody:y,PanelRow:v,Spinner:k}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function w(e){const[t,a]=m({apiKey:"6a0cfe9e-3670-4598-a63e-f1627b5c9e56",isOpen:!1,isBusy:!1,isSearching:!1,mapboxError:"",mapboxId:"",mapboxName:"",mapboxUser:"",mapboxUrl:"",mapboxParsedUrl:"",mode:"pick",page:1,snazzyPagination:null,snazzySearch:"",snazzySelected:null,snazzyStyles:null,standardStyles:mappl10n.options.standardStyles,userStyles:mappl10n.options.userStyles});function r(e){a((t=>({...t,...e})))}function p(a){let o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=_.findIndex(t.userStyles,{id:a.id});i>=0&&!o&&!confirm(__("Style already exists, overwrite?"))||(r({isBusy:!0}),n.mappLib.ajax({type:"POST",data:{action:"mapp_style_save",style:a,nonce:mappl10n.options.nonce},callback:t=>{r({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,r({mode:"pick",userStyles:t.data}),e.onChange(a.id))}}))}function c(e){r({isSearching:!0,snazzyStyles:null}),n.mappLib.ajax({type:"GET",data:{sort:"popular",page:e,pageSize:50,text:t.snazzySearch,key:t.apiKey},url:"https://snazzymaps.com/explore.json",callback:function(e){if(r({isSearching:!1,snazzyPagination:e&&e.pagination?e.pagination:null}),e&&e.styles){r({snazzyStyles:_.map(e.styles,((e,t)=>(e.id=e.id+"",e)))})}else alert("Error: unable to fetch styles")}})}function u(e,t){t="large"==t||"small"==t?t:"small",t=800;let a=mappl10n.options.baseurl+"/images/json_style.png";if("leaflet"==mappl10n.options.engine?mappl10n.options.mapbox?e.user&&e.mapboxid&&(a="https://api.mapbox.com/styles/v1/"+e.user+"/"+e.mapboxid+"/static/-122.4194,37.7749,10,0/800x800?access_token="+mappl10n.options.mapbox):a=mappl10n.options.baseurl+"/images/osm.png":e.imageUrl&&(a=e.imageUrl),a)return s("img",{src:a,title:e.name})}function b(a,o){switch(a){case"close":case"pick-cancel":r({isOpen:!1});break;case"json-add":r({mode:"json-add"});break;case"json-cancel":case"mapbox-cancel":case"snazzy-cancel":r({mode:"pick"});break;case"json-edit":e.onChange(o.id),r({mode:"json-edit"});break;case"json-save":p(o,!0);break;case"mapbox-add":case"snazzy-add":alert(__("Please upgrade to MapPress Pro to use custom styles"));break;case"mapbox-change-url":{let e,t,a;e=o.trim().toLowerCase(),e=e.replace(".html","").replace("https://api.mapbox.com/styles/v1/","").replace("mapbox://styles/",""),e=e.split("?")[0];let n=e.split("/");2==n.length&&(t=n[0],a=n[1]),r({mapboxUrl:o,mapboxUser:t,mapboxId:a});break}case"mapbox-edit":e.onChange(o.id),r({mode:"mapbox",mapboxId:o.mapboxid,mapboxName:o.name,mapboxUrl:o.url,mapboxUser:o.user});break;case"mapbox-save":t.mapboxName&&t.mapboxUser&&p({id:t.mapboxId,name:t.mapboxName,mapboxid:t.mapboxId,provider:"mapbox",url:t.mapboxUrl,user:t.mapboxUser});break;case"mode":r({mode:o});break;case"open":"leaflet"!=mappl10n.options.engine||mappl10n.options.mapbox?r({isOpen:!0}):alert(__("Please enter a Mapbox access token in the MapPress settings screen to use styled maps."));break;case"pick-delete":confirm(mappl10n.delete_prompt)&&(i=o,_.findIndex(t.userStyles,{id:i})<0?n.mappLib.alert("Invalid delete"):(r({isBusy:!0}),n.mappLib.ajax({type:"POST",data:{action:"mapp_style_delete",id:i,nonce:mappl10n.options.nonce},callback:t=>{r({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,r({userStyles:t.data}),e.selected==i&&e.onChange(null))}})));break;case"pick-select":e.onChange(o),r({isOpen:!1});break;case"snazzy-save":{let e=_.findWhere(t.snazzyStyles,{id:o});e&&p({id:o,imageUrl:e.imageUrl,json:e.json,name:e.name});break}case"snazzy-search":c()}var i}function y(){let a;return"json-add"==t.mode?a={id:null,name:"",json:""}:"json-edit"==t.mode&&(a=e.selected?_.findWhere(t.userStyles,{id:e.selected}):null),s(C,{style:a,onSave:e=>b("json-save",e),onCancel:()=>b("json-cancel")})}function v(e){let a;return a=e.styles&&e.styles.length?_.map(e.styles,((t,a)=>function(e,t){let a,o="mapp-style"+(t.selected==e.id?" mapp-selected":"");(t.onEdit||t.onDelete)&&(a=s("div",{className:"mapp-style-actions"},s("a",{onClick:()=>t.onEdit(e)},__("Edit")),s(g,{icon:"trash",onClick:()=>t.onDelete(e.id)})));return s("div",{className:o,key:e.id},s("div",{className:"mapp-style-image",onClick:()=>t.onSelect(e.id)},u(e)),s("div",{className:"mapp-style-details"},s("div",{className:"mapp-style-title"},e.name),a))}(t,e))):t.isSearching?"":s("div",{className:"mapp-style-list-msg"},__("No results")),s("div",{className:"mapp-style-list-wrapper"},s("div",{className:"mapp-style-list-header"},e.title),s("div",{className:"mapp-style-list"},a))}return s(l,null,function(){const a=t.standardStyles.concat(t.userStyles);let o=!mappl10n.options.style||"roadmap"!=e.selected&&"streets"!=e.selected&&e.selected?e.selected:mappl10n.options.style,n=_.findWhere(a,{id:o});return n=n||t.standardStyles[0],s(d,{className:"mapp-style-toggle",icon:u(n),iconSize:75,isSecondary:!0,onClick:()=>b("open",null),title:n.name})}(),"edit"==t.mode&&t.isOpen&&renderEdit(),"json-add"==t.mode&&t.isOpen&&y(),"json-edit"==t.mode&&t.isOpen&&y(),"mapbox"==t.mode&&t.isOpen&&function(){let e=t.mapboxUser&&t.mapboxId?u({user:t.mapboxUser,mapboxid:t.mapboxId,name:t.mapboxName},"large"):null;const a=!t.mapboxUser||!t.mapboxId||!t.mapboxName;return s(f,{title:__("Add style"),className:"mapp-style-modal",onRequestClose:()=>b("mapbox-cancel"),shouldCloseOnClickOutside:!0},s("div",{className:"mapp-style-mapbox-title"},__("Enter style from Mapbox Studio"),s(h,{href:"https://studio.mapbox.com"})),s("form",{className:"mapp-style-mapbox-form",onSubmit:e=>{e.stopPropagation(),e.preventDefault(),b("mapbox-save")}},s("label",null,s(o.Input,{autoFocus:!0,className:"mapp-style-mapbox-url",labelTop:s(l,null,__("MapBox Share URL"),s(o.Help,{href:"#toc-mapbox-studio-styles"})),onChange:e=>b("mapbox-change-url",e),value:t.mapboxUrl})),s("label",null,s("div",{className:"mapp-style-mapbox-label"},__("Style name")),s(o.Input,{className:"mapp-style-mapbox-name",value:t.mapboxName,onChange:e=>r({mapboxName:e})})),s("div",{className:"mapp-style-mapbox-preview"},e),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,disabled:a,type:"submit"},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>b("mapbox-cancel")},__("Cancel"))))))}(),"pick"==t.mode&&t.isOpen&&function(){let a="";return t.userStyles&&t.userStyles.length&&(a=v({selected:e.selected,onEdit:e=>"leaflet"==mappl10n.options.engine?b("mapbox-edit"):b("json-edit",e),onDelete:e=>b("pick-delete",e),onSelect:e=>b("pick-select",e),styles:t.userStyles,title:__("Custom styles")})),s(f,{title:s("div",{className:"mapp-style-header"},__("Select a style")),className:"mapp-style-modal",onRequestClose:()=>b("close")},s("div",{className:"mapp-style-list-wrapper"},v({onSelect:e=>b("pick-select",e),selected:e.selected,styles:t.standardStyles,title:__("Standard styles")}),a),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>"leaflet"==mappl10n.options.engine?b("mapbox-add"):b("json-add")},__("New style")),"google"==mappl10n.options.engine&&s(d,{isBusy:t.isBusy,isSecondary:!0,onClick:()=>b("snazzy-add")},__("Download style")),s(d,{isBusy:t.isBusy,onClick:()=>b("pick-cancel")},__("Cancel")))))}(),"snazzy"==t.mode&&t.isOpen&&(t.snazzySelected,s(f,{title:__("Download style"),className:"mapp-style-modal mapp-style-modal-snazzy",onRequestClose:()=>b("snazzy-cancel"),shouldCloseOnClickOutside:!0},s("form",{className:"mapp-style-snazzy-form",onSubmit:e=>{b("snazzy-search"),e.preventDefault()}},s(o.Input,{className:"mapp-style-snazzy-search",value:t.search,placeholder:__("Search"),onChange:e=>r({snazzySearch:e})}),t.isSearching&&s(k,null),!t.isSearching&&s(d,{isPrimary:!0,icon:"search",onClick:()=>b("snazzy-search")})),v({selected:t.snazzySelected,styles:t.snazzyStyles,onSelect:e=>r({snazzySelected:e})}),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>b("snazzy-save",t.snazzySelected)},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>b("snazzy-cancel")},__("Cancel"))),function(){const e=t.snazzyPagination;return e&&t.snazzyStyles&&t.snazzyStyles.length?s(i.MappPaginate,{count:e.totalItems,onChange:e=>c(e),page:e.currentPage,pageSize:e.pageSize}):null}()))))}function C(e){const[t,a]=m((()=>{let t={...e.style},a="";try{a=JSON.stringify(JSON.parse(t.json),null,2)}catch(e){}return t.json=a,{style:t}}));function n(e){a((t=>({...t,...e})))}function i(a,o){let i={...t.style};switch(a){case"cancel":e.onCancel();break;case"change-json":i.json=o,n({style:i});break;case"change-name":i.name=o,n({style:i});break;case"save":i.json=i.json?JSON.stringify(JSON.parse(i.json)):"",e.onSave(i)}}let l;if(t.style.json)try{JSON.parse(t.style.json)}catch(e){l=e.toString()}let r=l?"mapp-json mapp-json-error":"mapp-json";return s(f,{title:s(o.Input,{value:t.style.name,onChange:e=>i("change-name",e),placeholder:__("Enter style name")}),className:"mapp-style-modal mapp-json-modal",onRequestClose:()=>i("cancel"),shouldCloseOnClickOutside:!0},s("div",null,__("JSON")),s("div",{className:r},s("textarea",{value:t.style.json,spellCheck:!1,onChange:e=>i("change-json",e.target.value)})),s("div",{className:"mapp-json-error"},l||""),s("div",{className:"mapp-json-toolbar"},s("div",null,s(d,{disabled:l,isBusy:t.isBusy,isPrimary:!0,onClick:()=>i("save")},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>i("cancel")},__("Cancel")))))}},573:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappCard:()=>f});var o=a(939);a(228);const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:m}=wp.data,{Button:d,Dashicon:u,ExternalLink:_,Guide:h,Modal:g}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function f(e){let{icon:t,title:a,...o}=e;return n("div",{className:"mapp-support-card"},a&&n("div",{className:"mapp-support-card-title"},n("h3",null,t&&n(u,{icon:t}),a)),n("div",{className:"mapp-support-card-content"},o.children))}document.getElementById("mapp-support-page")&&wp.element.render(n((function(e){const[t,a]=c({engine:e.engine?e.engine:"leaflet",isOpen:e.isOpen,apiKey:e.apiKey,mapbox:e.mapbox});function l(e){a((t=>({...t,...e})))}function r(e){return n("div",{className:"mapp-guide-engine"+(e.selected?" mapp-selected":""),onClick:()=>e.onClick()},n("h2",{className:"mapp-guide-engine-title"},e.title),n("div",{className:"mapp-guide-engine-content"},e.content))}return p(null),s((()=>{}),[]),n("div",{className:"mapp-support"},n(i,null,n("div",{className:"mapp-support-section"},n("div",{className:"mapp-support-header"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),n("h1",null,__("MapPress Support")),n("i",null,__("Build amazing maps with the easiest and most powerful mapping plugin available")),n("div",null,n(d,{className:"mapp-support-guide-toggle",isPrimary:!0,onClick:()=>l({isOpen:!0})},__("Open Setup Wizard"))))),n("div",{className:"mapp-support-section"},n("div",{className:"mapp-support-cards"},n(f,{icon:"book",title:__("Documentation")},n("p",null,__("Detailed plugin documentation:")),n(_,{href:"https://mappresspro.com/mappress-documentation/"},__("Documentation")),n(_,{href:"https://mappresspro.com/whats-new/"},__("What's new")),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Creating your first map"))),n(f,{icon:"warning",title:__("Troubleshooting")},n("p",null,n("b",null,__("Check for a plugin or theme conflict:"))),n("ol",null,n("li",null,__("Deactivate ALL other plugins")),n("li",null,__("Switch to a standard WordPress theme")),n("li",null,__("If the maps are working, reactivate one by one to find the conflict."))),n("p",null,__("For more info:")),n(_,{href:"https://mappresspro.com/mappress-faq/"},__("MapPress FAQ"))),n(f,{icon:"megaphone",title:__("Support")},n("p",null,__("Need some help?")),n(_,{href:"https://mappresspro.com/forums/forum/mappress-support/"},__("Support forum")),n(_,{href:"https://mappresspro.com/chris-contact/"},__("Contact")))))),function(){if(t.isOpen)return n(h,{className:"mapp-guide",onFinish:()=>function(e,a){if("save"===e){let e;l({isOpen:!1}),e="google"==t.engine?"google":t.mapbox?"mapbox":"nominatim",o.mappLib.ajax({type:"POST",data:{action:"mapp_option_save",nonce:mappl10n.options.nonce,settings:{engine:t.engine,apiKey:t.apiKey,mapbox:t.mapbox,geocoder:e}},callback:e=>{"OK"!=e.status&&alert("Unable to save settings. Please check the support troubleshooting guide.")}})}}("save"),pages:[{content:n("div",{className:"mapp-guide-page mapp-guide-engines"},n("h1",null,__("Please Choose a Mapping API")),n("p",null,__("MapPress supports both Leaflet and Google mapping APIs."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-picking-a-mapping-api"},__("Learn more"))),n("div",{className:"mapp-guide-engines"},r({onClick:()=>l({engine:"leaflet"}),selected:"leaflet"==t.engine,title:"Leaflet",content:n("ul",null,n("li",null,__("No API key")),n("li",null,__("Free unlimited usage")),n("li",null,__("Good functionality")),n("li",null,__("Best for high traffic sites")))}),r({onClick:()=>l({engine:"google"}),selected:"google"==t.engine,title:"Google",content:n("ul",null,n("li",null,__("API key required")),n("li",null,__("Limited free usage")),n("li",null,__("Excellent functionality")),n("li",null,__("Best for low traffic sites")))}))),image:n("div",{className:"mapp-guide-header mapp-guide-image-small"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),n("h1",null,__("Welcome to MapPress!")))},{content:"google"==t.engine?n("div",{className:"mapp-guide-page mapp-guide-apikey"},n("h1",null,__("Google API Key")),n("p",null,__("Google requires an API key to use Google Maps. Please enter your key below.")),n(d,{isPrimary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key/",target:"_blank"},__("Get an API Key")),n("input",{className:"mapp-guide-apikey",onChange:e=>l({apiKey:e.target.value}),placeholder:__("Enter your API key here"),value:t.apiKey})):n("div",{className:"mapp-guide-page mapp-guide-apikey"},n("h1",null,__("Sign up with Mapbox")),n("p",null,__("Mapbox makes Leaflet better with great-looking map tiles, styled maps, and a powerful geocoder.")," "+__("A generous free tier means it's free for most sites."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-using-mapbox-with-leaflet"},__("Learn more"))),n(d,{isPrimary:!0,href:"https://account.mapbox.com/auth/signup/",target:"_blank"},__("Get Mapbox Access Token")),n("input",{className:"mapp-guide-apikey",onChange:e=>l({mapbox:e.target.value}),placeholder:__("Enter your access token here"),value:t.mapbox})),image:n("div",{className:"mapp-guide-header mapp-guide-image-small"},"google"==t.engine&&n("img",{src:mappl10n.options.baseurl+"/images/google_logo.png"}),"leaflet"==t.engine&&n("img",{src:mappl10n.options.baseurl+"/images/mapbox_logo_white.png"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-gutenberg"},n("h1",null,__("Maps in the Block Editor")),n("p",null,__("MapPress provides custom block types for the Gutenberg editor.")),n("p",null,__("Just insert a MapPress Map block to get started."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-gutenberg-block-editor"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/gutenberg_map_block.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-classic"},n("h1",null,__("Maps in the Classic Editor")),n("p",null,__('MapPress also supports the "classic" editor. Just click the MapPress button to open the map library.')),n("p",null,n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-classic-editor"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/classic_map.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-library"},n("h1",null,__("Map Library")),n("p",null,__("The Map Library provides an easy way to see and edit all of your maps. The library can be opened in the post editor or from the MapPress menu.")),n("p",null,n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/library_menu.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-end"},n("h1",null,__("Happy Mapping")),n("p",null,__("Enjoy the plugin! Replay this guide any time from the MapPress support menu."))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128"}))}]})}())}),mappress_support_state),document.getElementById("mapp-support-page"))},939:(e,t,a)=>{"use strict";a.d(t,{mappLib:()=>c});wp.element.createElement;const{Fragment:o,useCallback:n,useEffect:i,useLayoutEffect:s,useMemo:l,useRef:r,useState:p}=wp.element,c={ajax:function(e){const t={callback:null,data:null,dataType:"json",silent:!1,type:"GET",url:mappl10n.options.ajaxurl,success:function(t,a,o){"json"==e.dataType&&e.url==mappl10n.options.ajaxurl&&"OK"!=t.status&&c.alert(t.status),"json"==e.dataType&&t.output?c.alert("AJAX Invalid Output\r\n"+t.output):e.callback&&e.callback(t,o)},error:function(t,a,o){"cancel"!=a&&(void 0!==o&&""!=o&&c.alert("AJAX ERROR\r\nTextStatus="+a+"\r\nError="+o+"\r\nResponseText="+t.responseText),e.callback&&e.callback(null))}};return e={...t,...e},jQuery.ajax(e)},alert:function(e){mappl10n.options.admin||mappl10n.options.debug?alert(e):window.console&&console.error(e)},getIcon:function(e){{const t=this.getIconUrl(e);return"leaflet"==mappl10n.options.engine?L.icon({iconUrl:t,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:t}}},getIconUrl:function(e){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"},nanoid:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;const t="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let a="",o=e;for(;o--;)a+=t[64*Math.random()|0];return a},template:function(e,t){if(c.templates=c.templates?c.templates:{},!c.templates[e]){var a=document.getElementById("mapp-tmpl-"+e).innerHTML;if(!a)return"";c.templates[e]=_.template(a,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return c.templates[e](t)}};"leaflet"==mappl10n.options.engine&&"undefined"!=typeof L&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(1e6*this.lat)/1e6+", "+Math.round(1e6*this.lng)/1e6})},27:(e,t,a)=>{"use strict";a.d(t,{MappPaginate:()=>p});const o=wp.element.createElement,{Fragment:n,useEffect:i,useLayoutEffect:s,useRef:l,useState:r}=wp.element,{sprintf}=wp.i18n;function p(e){function t(t,a){const o=Math.ceil(e.count/e.pageSize);switch(t){case"first":e.onChange(1);break;case"last":e.onChange(o);break;case"next":e.page<o&&e.onChange(e.page+1);break;case"prev":e.page>1&&e.onChange(e.page-1)}}return function(){const a=Math.ceil(e.count/e.pageSize),n=e.isBusy||e.page<=1,i=e.isBusy||e.page>=a,s=n?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",l=i?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",r=(p="%d of %d",wp.i18n.__(p,"mappress-google-maps-for-wordpress"));var p;return o("div",{className:"mapp-paginate"},o("div",{className:s,onClick:()=>{n||t("first")}},"«"),o("div",{className:s,onClick:()=>{n||t("prev")}},"‹"),o("div",{className:"mapp-paginate-count"},sprintf(r,e.page,a)),o("div",{className:l,onClick:()=>{i||t("next")}},"›"),o("div",{className:l,onClick:()=>{i||t("last")}},"»"))}()}},308:(e,t,a)=>{"use strict";e.exports=function(e,t){var o=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),n=o.length,i=void 0,s=void 0,l=void 0,r=void 0,p=void 0,c=void 0,m=void 0,d=void 0,u=void 0,_=void 0,h=void 0,g=void 0,f=void 0,b=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))},y="undefined"!=typeof window?window:a.g;y.$locutus=y.$locutus||{};var v=y.$locutus;for(v.php=v.php||{},t||(t=y),i=0;i<n&&(u=b((d=o[i].split("="))[0]),_=d.length<2?"":b(d[1]),!(u.includes("__proto__")||u.includes("constructor")||u.includes("prototype")));i++){for(;" "===u.charAt(0);)u=u.slice(1);if(u.indexOf("\0")>-1&&(u=u.slice(0,u.indexOf("\0"))),u&&"["!==u.charAt(0)){for(g=[],h=0,s=0;s<u.length;s++)if("["!==u.charAt(s)||h){if("]"===u.charAt(s)&&h&&(g.length||g.push(u.slice(0,h-1)),g.push(u.substr(h,s-h)),h=0,"["!==u.charAt(s+1)))break}else h=s+1;for(g.length||(g=[u]),s=0;s<g[0].length&&(" "!==(m=g[0].charAt(s))&&"."!==m&&"["!==m||(g[0]=g[0].substr(0,s)+"_"+g[0].substr(s+1)),"["!==m);s++);for(c=t,s=0,f=g.length;s<f;s++){if(p=c,(""===(u=g[s].replace(/^['"]/,"").replace(/['"]$/,""))||" "===u)&&0!==s){for(r in l=-1,c)c.hasOwnProperty(r)&&+r>l&&r.match(/^\d+$/g)&&(l=+r);u=l+1}Object(c[u])!==c[u]&&(c[u]={}),c=c[u]}p[u]=_}}}}},t={};function a(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a(569),a(66),a(972),a(283),a(847),a(634),a(101),a(28),a(897),a(218),a(265),a(109),a(146),a(228),a(597),a(185),a(885),a(573)})();
1
+ (()=>{var e={283:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappAttachControl:()=>d});const o=wp.element.createElement,{addQueryArgs:n}=wp.url,{useCallback:i,useEffect:s,useState:l}=wp.element,{Button:r,Dropdown:p,Spinner:c,TextControl:m}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function d(e){const[t,a]=l({isFetching:!1,results:[],search:"",searchTerm:""});function r(e){a((t=>({...t,...e})))}s((()=>{t.isOpen&&(r({isFetching:!0}),wp.apiFetch({path:n("/wp/v2/search",{search:t.search,per_page:20})}).then((e=>{r({results:e,isFetching:!1})})))}),[t.search,t.isOpen]);const d=i(_.debounce((function(e){r({search:e})}),1e3),[]);function u(a,n){return o("div",{className:"mapp-attach-control"},o("div",{className:"mapp-attach-control-toolbar"},o(m,{autoComplete:"false",value:t.searchTerm,onChange:e=>{r({searchTerm:e}),d(e)},placeholder:__("Search")})),function(){if(t.isFetching)return o(c,null);if(t.results)return t.results.length?o("div",{className:"mapp-attach-items"},t.results.map((t=>o("div",{key:t.id,className:"mapp-attach-item",onClick:()=>{e.onChange(t.id,t.title)}},o("div",{className:"mapp-attach-item-title"},t.title?t.title:__("Untitled")),o("div",{className:"mapp-attach-item-type"},t.subtype))))):o("div",{},__("No posts found"))}())}return o("div",{onClick:e=>e.stopPropagation()},o(p,{onToggle:e=>r({isOpen:e}),renderToggle:e=>{let{isOpen:t,onToggle:a}=e;return o("a",{href:"#",onClick:a},__("Attach"))},renderContent:e=>{let{isOpen:t,onToggle:a}=e;return u()}}))}},569:(e,t,a)=>{"use strict";a.r(t);var o=a(185);const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useRef:r,useState:p}=wp.element,{Button:c,Dashicon:m,Modal:d}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function u(e){const[t,a]=p({isOpen:!0,mapid:null});function s(e){a((t=>({...t,...e})))}function l(){const e="undefined"!=typeof tinyMCE&&tinyMCE?tinyMCE.get("content"):null,t=e&&e.selection?e.selection.getSel():null;if(!t||void 0===t.anchorOffset||!t.anchorNode||!t.anchorNode.data)return null;let a=null,o=t.anchorNode.data,n=-1;for(let e=t.anchorOffset-1;e>=0;e--){let t=o[e];if("["==t){n=e;break}if("]"==t||"<"==t||">"==t)break}return n>=0&&(a=wp.shortcode.next("mappress",o,n),a)?a.shortcode.attrs.named.mapid:null}return n(i,null,n("button",{className:"button",type:"button",onClick:e=>{e.preventDefault(),s({isOpen:!0,mapid:l()})}},n(m,{className:"wp-media-buttons-icon",icon:"location"}),__("MapPress")),t.isOpen&&n(o.MappPicker,{context:"mce",mapid:t.mapid,onClose:()=>{s({isOpen:!1,mapid:null})},onInsert:e=>function(e){s({isOpen:!1});var t='[mappress mapid="'+e+'"]';"undefined"==typeof wpActiveEditor?__("Please select the post content to insert the map into."):send_to_editor(t)}(e)}))}document.addEventListener("click",(e=>{e.target.classList.contains("mapp-classic-button")&&wp.element.render(n(u),e.target.parentElement)}))},847:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappColorPicker:()=>M});var o=a(228);const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:m}=wp.data,{withState:d}=wp.compose,{Button:u,ColorPalette:h,ColorPicker:g,Dashicon:f,Dropdown:b,ExternalLink:y,Modal:v,Panel:k,PanelBody:w,PanelRow:C,Popover:x,RadioControl:N,Spinner:S,TabPanel:O}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function M(e){e={isExtended:null,onChange:null,color:null,opacity:null,weight:null,...e};const[t,a]=c({color:e.color,isCustomOpen:!1,isOpen:!1,opacity:e.opacity?e.opacity:1,weight:e.weight?e.weight:2});function l(e){a((t=>({...t,...e})))}function r(){l({isOpen:!1})}function p(a){l({color:a,isOpen:!1}),e.onChange({color:a,opacity:t.opacity,weight:t.weight})}return s((()=>{}),[]),n(i,null,n("span",{className:"mapp-colors-toggle",onClick:()=>{l({isOpen:!0})},style:{backgroundColor:e.color,border:e.isExtended?"1px solid "+e.color:"1px solid gray",opacity:e.isExtended&&e.opacity?e.opacity:1},tabIndex:0}),function(){if(!t.isOpen)return null;const a=_.map([1,.9,.8,.7,.6,.5,.4,.3,.2,.1,0],(e=>({label:100*e+"%",value:e}))),i=_.map([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],(e=>({label:e+"px",value:e})));return n(v,{title:__("Select a color"),className:"mapp-colors-modal",onRequestClose:()=>r()},n("div",{className:"mapp-colors"},n("div",{className:"mapp-colors-list"},_.map([["yellow","yellowgreen","green","seagreen","blue","cornflowerblue","darkslateblue","purple","firebrick","red","darkorange","orange","saddlebrown"],["lightyellow","greenyellow","lightgreen","darkseagreen","lightblue","skyblue","slateblue","orchid","plum","pink","sandybrown","goldenrod","peru"],["white","lightgray","gray","black"]],((t,a)=>n("div",{key:a},_.map(t,(t=>n("span",{className:"mapp-color"+(t==e.color?" mapp-selected":""),key:t,onClick:()=>{l({isCustomOpen:!1}),p(t)},style:{backgroundColor:t},title:t}))))))),t.isCustomOpen&&n(g,{color:e.color,onChangeComplete:e=>p(e.hex),disableAlpha:!0}),e.isExtended&&n(o.Select,{label:__("Opacity"),options:a,value:t.opacity,onChange:a=>{return l({opacity:o=a}),void e.onChange({color:t.color,opacity:o,weight:t.weight});var o}}),e.isExtended&&n(o.Select,{label:__("Stroke"),options:i,value:e.weight?e.weight:"",onChange:a=>{return l({weight:o=a}),void e.onChange({color:t.color,opacity:t.opacity,weight:o});var o}}),n("div",{className:"mapp-colors-toolbar"},n(u,{isPrimary:!0,onClick:()=>r()},__("Done")),n(u,{onClick:()=>l({isCustomOpen:!t.isCustomOpen})},__("Custom color")))))}())}},946:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>d});a(228);var o=a(939);const{Button:n}=wp.components,i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function d(e){const[t,a]=m({error:"",isBusy:!1,isComplete:!1});function s(e){a((t=>({...t,...e})))}return i("div",{className:""},i(n,{isPrimary:!0,disabled:t.isComplete||t.isBusy,isBusy:t.isBusy,onClick:()=>{t.isBusy||(s({isBusy:!0}),o.mappLib.ajax({method:"POST",data:{action:"mapp_upgrade",nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status?s({isBusy:!1,isComplete:!0,error:null}):s({isBusy:!1,isComplete:!0,error:e.status})}}))}},__("Upgrade")),function(){if(t.isComplete)return t.error?i("div",{className:""},i("div",{className:"mapp-upgrade-error"},__("Error during update! Please contact support."),i("div",{className:""},t.error))):i("div",{className:"mapp-upgrade-success"},__("Success! Database updated."))}())}const u=document.getElementById("mapp-db-upgrade");u&&wp.element.render(i(d,null),u)},972:()=>{const e=wp.element.createElement,{Fragment:t,useEffect:a,useLayoutEffect:o,useRef:n,useState:i}=wp.element,{Button:s,Modal:l}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function r(t){const[o,n]=i({isOpen:!1,reason:"",reasonText:"",redirectUrl:null});function r(e){n((t=>({...t,...e})))}function p(e,t){switch(e){case"cancel":r({isOpen:!1});break;case"submit":r({isOpen:!1}),window.location.href=o.redirectUrl+"&mapp_reason="+o.reason+"&mapp_reason_text="+encodeURIComponent(o.reasonText.trim())}}return a((()=>{const e=document.getElementById("deactivate-mappress-google-maps-for-wordpress");if(!e)return;const t=e.addEventListener("click",(e=>{!function(e){const t=e?e.href:null;t&&r({isOpen:!0,redirectUrl:t})}(e.target),e.stopPropagation(),e.preventDefault()}));return()=>{e.removeEventListener("click",t)}}),[]),o.isOpen?e(l,{isDismissible:!0,onRequestClose:()=>p("cancel"),shouldCloseOnEsc:!0,shouldCloseOnClickOutside:!0,title:__("Feedback")},function(){const t=!o.reason||"other"==o.reason&&!o.reasonText;return sprintf("<a href='https://mappresspro.com/chris-contact' target='_blank'>%s</a>",__("contact me")),e("div",{className:"mapp-deactivate"},e("div",{className:"mapp-deactivate-content"},e("h2",null,__("Sorry to see you go! Need help?"),e(s,{className:"mapp-deactivate-help",isSecondary:!0,href:"https://mappresspro.com/chris-contact",target:"_blank"},__("Contact me"))),e("h2",null,__("If not, I'd really appreciate some feedback:")),function(){const t=[{value:"badday",label:__("I don't want to say")},{value:"noapikey",label:__("I didn't want to set up an API key")},{value:"nodisplay",label:__("The map didn't display")},{value:"noaddress",label:__("My address wasn't found")},{value:"uglymap",label:__("The map looked too plain")},{value:"toohard",label:__("Too hard to use"),placeholder:__("What was too hard?")},{value:"feature",label:__("Missing feature"),placeholder:__("What's missing?")},{value:"other",label:__("Other"),placeholder:__("Can you provide any details?")}];return e("div",{className:"mapp-deactivate-reasons"},_.map(t,(t=>{const a=t.value==o.reason;return e("div",{className:"mapp-deactivate-reason",key:t.value},e("label",null,e("input",{checked:a,onChange:e=>r({reason:e.target.value}),type:"radio",value:t.value}),t.label),a&&t.placeholder&&e("div",null,e("textarea",{onChange:e=>r({reasonText:e.target.value}),placeholder:t.placeholder,value:o.reasonText})))})))}()),e("div",{className:"mapp-deactivate-footer"},e(s,{isSecondary:!0,disabled:t,onClick:()=>p("submit")},__("Deactivate")),e(s,{isPrimary:!0,onClick:()=>p("cancel")},__("Cancel"))))}()):null}document.addEventListener("DOMContentLoaded",(()=>{const t=document.createElement("div");wp.element.render(e(r),t)}))},634:(e,t,a)=>{"use strict";a.r(t);var o=a(185);wp&&wp.plugins&&wp.plugins.registerPlugin&&wp.editPost&&wp.plugins.registerPlugin("mappress-document-settings-panel",{render:function(){const{PluginDocumentSettingPanel:e}=wp.editPost,t=wp.element.createElement,{Fragment:a,useEffect:n,useLayoutEffect:i,useRef:s,useState:l}=wp.element,{Button:r,Spinner:p}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),[c,m]=l({isFetchingItems:!0,isPickerOpen:!1,items:null,pickerMapid:null,pickerMode:"list"});function d(e){m((t=>({...t,...e})))}function u(e){let a=e.title?e.title:__("Untitled");return t("div",{className:"mapp-document-item",key:e.mapid+e.otype+e.oid},t("a",{className:"mapp-document-col-title",href:"#",onClick:t=>{d({isPickerOpen:!0,pickerMapid:e.mapid,pickerMode:"edit"})}},a),t("div",{className:"mapp-document-col-mapid"},e.mapid))}return n((()=>{const e=e=>{d({isFetchingItems:e.isFetchingItems,isSavingMap:e.isSavingMap,items:e.items})};return mapp.store.subscribe(e),()=>mapp.store.unsubscribe(e)})),n((()=>{mapp.store.fetchItems()}),[]),t(e,{title:"MapPress",className:"mapp-document-panel"},function(){const e=_.filter(c.items,(e=>"post"==e.otype&&e.oid==mappl10n.options.oid));let o;return o=c.isFetchingItems?t(p,null):e.length?t(a,null,t("div",{className:"mapp-document-header"},t("div",{className:"mapp-document-col-title"},__("Map title")),t("div",{className:"mapp-document-col-mapid"},null,__("Map ID"))),_.map(e,u)):t("div",{className:"mapp-document-message"},__("No maps found")),t("div",null,t("div",{className:"mapp-document-list"},o))}(),t(r,{icon:"portfolio",isSecondary:!0,onClick:()=>{d({isPickerOpen:!0,pickerMode:"list"})}},__("Open map library")),function(){if(c.isPickerOpen)return t(o.MappPicker,{mapid:c.pickerMapid,mode:c.pickerMode,onClose:()=>{d({isPickerOpen:!1,pickerMapid:null})},onInsert:e=>function(e){const t=wp.blocks.createBlock("mappress/map",{mapid:e});wp.data.dispatch("core/block-editor").insertBlock(t,0),d({isPickerOpen:!1,pickerMapid:null})}(e)})}())},icon:null})},101:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappEdit:()=>A});var o=a(847),n=a(28);const i=wp.element.createElement,{Button:s,Dashicon:l,Icon:r,Spinner:p}=wp.components,{useSelect:c}=wp.data,{Fragment:m,useEffect:d,useLayoutEffect:u,useRef:h,useState:g}=wp.element,{MediaUpload:f}=wp.mediaUtils,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){e={poi:null,onChange:null,onClose:null,onDelete:null,onSave:null,...e};const t="mapp-poi-body",a=h(null),[l,r]=g({images:e.poi.images?e.poi.images:[],isBusy:!1,title:e.poi.title,isVisual:!0});function p(e){r((t=>({...t,...e})))}function c(e){e?tinyMCE.execCommand("mceAddEditor",!1,t):tinyMCE.execCommand("mceRemoveEditor",!1,t)}function u(){return["circle","polyline","polygon","rectangle"].includes(e.poi.type)}function b(){e.onChange({images:l.images,body:tinymce&&tinymce.get(t)?tinymce.get(t).getContent():a.current.value,title:l.title}),e.onClose()}function v(e){return i("div",{className:"mapp-poi-image",key:e.id?e.id:e.url},"embed"==e.type&&i(y,{url:e.url}),"embed"!=e.type&&i("img",{src:e.url}),i("div",{className:"mapp-poi-image-delete",onClick:()=>function(e){const t=l.images.findIndex((t=>t.url==e));t>=0&&(l.images.splice(t,1),p({images:l.images}))}(e.url)},"X"))}return d((()=>(function(){if("undefined"==typeof tinyMCE||void 0===tinyMCE.init)return;var e="en";if(void 0!==window.tinyMCEPreInit&&void 0!==window.tinyMCEPreInit.mceInit&&void 0!==window.tinyMCEPreInit.mceInit.content){var t=window.tinyMCEPreInit.mceInit.content;e=void 0!==t.language?t.language:"en"}var a={mode:"none",height:"100%",convert_urls:!1,language:e,menubar:!1,plugins:"image,paste,textcolor,wordpress,wpeditimage,wplink,wpview",relative_urls:!1,remove_script_host:!1,statusbar:!1,theme:"modern",toolbar1:"bold,italic,link",toolbar2:"",toolbar3:"",toolbar4:""};tinyMCE.init(a)}(),()=>{c(!1)})),[]),d((()=>{l.isVisual?c(!0):c(!1)}),[l.isVisual]),i(m,null,i("div",{className:"mapp-poi-header"},i("input",{className:"mapp-poi-title",value:l.title,onChange:e=>{p({title:e.target.value})},onKeyDown:e=>function(e){13==e.keyCode&&(b(),e.stopPropagation(),e.preventDefault())}(e)}),u(l.type)?null:i(n.MappIconPicker,{iconid:e.poi.iconid,onChange:t=>{e.onChange({iconid:t})}}),function(){var t,a,n,s,l,r;const p=e.poi;return u(p.type)?i(o.MappColorPicker,{color:"polyline"==p.type?null===(t=p.poly)||void 0===t?void 0:t.strokeColor:null===(a=p.poly)||void 0===a?void 0:a.fillColor,opacity:"polyline"==p.type?null===(n=p.poly)||void 0===n?void 0:n.strokeOpacity:null===(s=p.poly)||void 0===s?void 0:s.fillOpacity,weight:"polyline"==p.type?null===(l=p.poly)||void 0===l?void 0:l.strokeWeight:null===(r=p.poly)||void 0===r?void 0:r.strokeWeight,isExtended:!0,onChange:t=>{let{color:a,opacity:o,weight:n}=t;const i="polyline"==e.poi.type?{strokeColor:a,strokeOpacity:o,strokeWeight:n}:{fillColor:a,fillOpacity:o,strokeColor:a,strokeWeight:n,strokeOpacity:1};e.onChange({poly:{...e.poi.poly,...i}}),e.poi.setColors(i)}}):null}()),function(){const o="mapp-mce-visual"+(l.isVisual?" mapp-active":""),n="mapp-mce-html"+(l.isVisual?"":" mapp-active");return i(m,null,i("div",{className:"mapp-mce-toolbar"},i("div",{className:"mapp-mce-tabs"},i("a",{className:o,onClick:()=>p({isVisual:!0})},__("Visual"))," | ",i("a",{className:n,onClick:()=>p({isVisual:!1})},__("HTML"))),i("a",{href:"#",className:"insert-media add_media","data-editor":t},__("Add Media"))),i("div",{className:"mapp-mce-main"},i("textarea",{defaultValue:e.poi.body,id:t,ref:a,style:{height:"100%"}})))}(),"kml"==e.poi.type&&i("div",{className:"mapp-poi-kml"},i("span",null,__("KML")+" : "),i("a",{href:e.poi.kml.url,target:"_blank"},e.poi.kml.url)),l.images?i("div",{className:"mapp-poi-images"},l.images.map((e=>v(e)))):null,i("div",{className:"mapp-poi-toolbar"},i("div",null,i(s,{isPrimary:!0,onClick:()=>b()},__("Save")),i(s,{isSecondary:!0,onClick:()=>e.onClose()},__("Cancel"))),i("div",null,i(f,{allowedTypes:["image","video"],autoOpen:!0,gallery:!0,multiple:!0,onClose:()=>{p({images:l.images})},onSelect:e=>{return t=e,t=Array.isArray(t)?t:[t],void p({images:_.map(t,(e=>({id:e.id,url:e.url})))});var t},type:"image",value:l.images?l.images.map((e=>e.id)):[],render:e=>{let{open:t}=e;return i(s,{isSecondary:!0,onClick:t},__("Images"))}}),i(s,{isDestructive:!0,onClick:()=>e.onDelete()},__("Delete")))))}function y(e){e={url:null,...e};const{html:t}=c((t=>{const a=t("core").getEmbedPreview(e.url);return a?{html:a.html}:{html:null}}));return t?i("div",{className:"mapp-poi-embed",dangerouslySetInnerHTML:{__html:t}}):i("div",{className:"mapp-poi-embed"},i(p,null))}var v=a(939),k=a(885),w=a(614);window.mapp=window.mapp||{};const C=wp.element.createElement,{Fragment:x,useEffect:N,useLayoutEffect:S,useRef:O,useState:M}=wp.element,{Button:P,Dropdown:I,Modal:E,Panel:z,PanelBody:L,Popover:T,Spinner:B,TextControl:D}=wp.components,F=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function A(e){e={context:null,mapid:null,onClose:null,onSave:null,...e};const[t,a]=M({isBusy:!1,map:null,mapdata:null,poi:null}),o=O(null);function n(e){a((t=>({...t,...e})))}function i(e){n({map:t.map})}function s(e){const a="marker"==e.type?null:e.type;let o={...mapp.poi.parseOverlay(a,e.overlay),body:"",iconid:t.lastIcon,type:a,title:"marker"==e.type?e.overlay.position.toUrlValue():mappl10n.shape},n=new mapp.Poi(o);e.overlay.setMap(null),t.map.poiInsert(n)}function l(e){t.poi.set(e),t.map.renderList(),e.iconid&&n({lastIcon:e.iconid}),n({poi:t.poi})}function r(){_(),n({poi:null})}function p(){confirm(mappl10n.delete_prompt)&&(t.map.poiRemove(t.poi),t.map.poiClose(),n({poi:null}))}function c(e){n({poi:e})}function m(){mapp.store.saveMap(t.map.toJSON(),(t=>{_(),e.onSave(t)}))}function d(e){if(e.geometry){const a=e.formatted_address?e.formatted_address.replace(/, United States of America/i,"").replace(/, United States/i,"").replace(/, USA/i,""):null,o=e.name==a?"":a,n=new mapp.Poi({id:v.mappLib.nanoid(),address:a,body:o,iconid:t.lastIcon,point:e.geometry.location,title:e.name,viewport:e.geometry.viewport?e.geometry.viewport:null});t.map.poiInsert(n),n.center()}else if("string"==typeof e&&"http"==e.substring(0,4)){var a=new mapp.Poi({iconid:t.lastIcon,kml:{url:e},title:"KML",type:"kml"});t.map.poiInsert(a),mapp.event.addListener(a.overlay,"ready defaultviewport_changed",(e=>{a.center()}))}}function u(e){t.map.set(e),n({map:t.map})}function _(){if(t.map){const e=t.map.iw.getContent();wp.element.unmountComponentAtNode(e)}}return N((()=>{t.map&&(t.map.onDrawingEvent=s,t.map.onPoiOpen=c,t.map.onPoiClose=r,t.map.onSearch=d),function(){if(!t.map)return null;if(t.poi){const e=t.map.iw.getContent();wp.element.render(C(b,{onClose:()=>t.map.poiClose(),onDelete:p,onChange:l,poi:t.poi}),e)}}()})),N((()=>{t.map&&(jQuery(t.map.div.layout).off("mapp.render",i),jQuery(t.map.div.layout).on("mapp.render",(e=>i())))}),[t.map]),N((()=>{const t=t=>{n({isBusy:t.isSavingMap,mapdata:t.maps[e.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),N((()=>{!function(){if("mce"!=e.context&&"library"!=e.context)return null;if(!t.map)return null;const{center:a,height:o,poiList:n,search:i,width:s,zoom:l}=t.map,r=document.querySelector(".mapp-settings-container");wp.element.render(C(k.MappSettings,{map:t.map,context:e.context,onChange:e=>u(e),center:a,height:o,poiList:n,search:i,width:s,zoom:l}),r)}()})),N((()=>{e.mapid?mapp.store.fetchMap(e.mapid):n({mapdata:{}})}),[e.mapid]),N((()=>{if(!t.mapdata)return;let a={embed:!0,isEditable:!0,layout:"left",mapOpts:{streetViewControl:!1},menu:!1,name:"media-map",poiList:!0,sel:jQuery(o.current)};"map"!=e.context&&"mashup"!=e.context||(a.center=null,a.zoom=null);const i=new mapp.Map(t.mapdata,a);i.display(),n({map:i})}),[t.mapdata]),C("div",{className:"mapp-edit"},function(){let e=t.map&&t.map.title?t.map.title:"",a=t.map&&!t.isFetchingMap?F("Untitled"):"";return C("div",{className:"mapp-gt-modal-header"},C(D,{className:"mapp-edit-title",placeholder:a,value:e,onChange:e=>function(e){t.map.set({title:e}),n({map:t.map})}(e),onKeyDown:e=>function(e){13==e.keyCode&&(m(),e.stopPropagation(),e.preventDefault())}(e)}))}(),C("div",{className:"mapp-edit-main"},C("div",{className:"mapp-edit-map",key:e.mapid,ref:o,onKeyDown:e=>e.stopPropagation(),tabIndex:-1}),o.current&&t.map?C(w.m,{map:t.map,selected:t.map.mapTypeId,onChange:e=>u({mapTypeId:e})}):null),C("div",{className:"mapp-edit-toolbar",tabIndex:-1,onKeyDown:e=>e.stopPropagation()},C(P,{isPrimary:!0,isBusy:t.isBusy,onClick:()=>m()},F("Save")),C(P,{isSecondary:!0,disabled:t.isBusy,onClick:()=>(_(),void e.onClose())},F("Cancel"))))}},28:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappIconPicker:()=>M});var o=a(939),n=a(847),i=a(228);const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useCallback:c,useRef:m,useState:d}=wp.element,{useSelect:u}=wp.data,{withState:h}=wp.compose,{Button:g,ColorPicker:f,DropZone:b,DropZoneProvider:y,FormFileUpload:v,Modal:k,Popover:w,RangeControl:C,Spinner:x,TabPanel:N}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),S=[{id:"mapp-shapes",fontFamily:"Marker Shapes",glyphs:[{name:"circle",center:[16,16]},{name:"widepin",center:[16,14]},{name:"route",center:[16,16]},{name:"shield",center:[16,16]},{name:"squarepin",center:[16,15]},{name:"square",center:[16,16]},{name:"squarerounded",center:[16,16]},{name:"roundpin",center:[16,13]},{name:"pin",center:null},{name:"pindot",center:null}]}],O=[{id:"mapp-icons",className:"mapp-marker-icons",filePrefix:"mp",fontFamily:"Marker Icons",label:"Map icons",glyphs:["airport","amusement-park","aquarium","archery","art-gallery","assistive-listening","atm","audio-description","bakery","bank","bar","baseball","beauty-salon","bicycle-store","bicycling","boat-ramp","boat-tour","boating","book-store","bowling-alley","braille","bus-station","cafe","campground","canoe","car-dealer","car-rental","car-repair","car-wash","casino","cemetery","chairlift","church","city-hall","closed-captioning","clothing-store","compass","convenience-store","courthouse","cross-country-skiing","crosshairs","dentist","department-store","diving","doctor","electrician","electronics-store","embassy","expand","female","finance","fire-station","fish-cleaning","fishing-pier","fishing","florist","food","fullscreen","funeral-home","furniture-store","gas-station","contractor","golf","grocery","gym","hair-care","hang-gliding","hardware-store","health","hindu-temple","horse-riding","hospital","ice-fishing","ice-skating","inline-skating","insurance-agency","jet-skiing","jewelry-store","kayaking","laundry","lawyer","library","liquor-store","local-government","location-arrow","locksmith","lodging","low-vision-access","male","marina","mosque","motobike-trail","movie-rental","movie-theater","moving-company","museum","natural-feature","night-club","open-captioning","painter","park","parking","pet-store","pharmacy","physiotherapist","place-of-worship","playground","plumber","point-of-interest","police","political","post-box","post-office","rafting","real-estate-agency","restaurant","roofing-contractor","route","rv-park","sailing","school","scuba-diving","search","shopping-mall","sign-language","skateboarding","ski-jumping","skiing","sledding","snow-shoeing","snow","snowboarding","snowmobile","spa","stadium","storage","store","subway-station","surfing","swimming","synagogue","taxi-stand","tennis","toilet","trail-walking","train-station","transit-station","travel-agency","unisex","university","veterinary-care","viewing","volume-control-telephone","walking","waterskiing","whale-watching","wheelchair","wind-surfing","zoo"]},{id:"material-icons",className:"material-icons",filePrefix:"mi",fontFamily:"Material Icons",label:"Material Icons",glyphs:["ac_unit","access_alarm","access_alarms","access_time","access_time_filled","accessibility","accessibility_new","accessible","accessible_forward","account_balance","account_balance_wallet","account_box","account_circle","account_tree","ad_units","adb","add","add_a_photo","add_alarm","add_alert","add_box","add_business","add_chart","add_circle","add_circle_outline","add_comment","add_ic_call","add_link","add_location","add_location_alt","add_moderator","add_photo_alternate","add_reaction","add_road","add_shopping_cart","add_task","add_to_drive","add_to_home_screen","add_to_photos","add_to_queue","addchart","adjust","admin_panel_settings","ads_click","agriculture","air","airline_seat_flat","airline_seat_flat_angled","airline_seat_individual_suite","airline_seat_legroom_extra","airline_seat_legroom_normal","airline_seat_legroom_reduced","airline_seat_recline_extra","airline_seat_recline_normal","airplane_ticket","airplanemode_active","airplanemode_inactive","airplanemode_off","airplanemode_on","airplay","airport_shuttle","alarm","alarm_add","alarm_off","alarm_on","album","align_horizontal_center","align_horizontal_left","align_horizontal_right","align_vertical_bottom","align_vertical_center","align_vertical_top","all_inbox","all_inclusive","all_out","alt_route","alternate_email","amp_stories","analytics","anchor","android","animation","announcement","aod","apartment","api","app_blocking","app_registration","app_settings_alt","approval","apps","architecture","archive","area_chart","arrow_back","arrow_back_ios","arrow_back_ios_new","arrow_circle_down","arrow_circle_up","arrow_downward","arrow_drop_down","arrow_drop_down_circle","arrow_drop_up","arrow_forward","arrow_forward_ios","arrow_left","arrow_right","arrow_right_alt","arrow_upward","art_track","article","aspect_ratio","assessment","assignment","assignment_ind","assignment_late","assignment_return","assignment_returned","assignment_turned_in","assistant","assistant_direction","assistant_photo","atm","attach_email","attach_file","attach_money","attachment","attractions","attribution","audiotrack","auto_awesome","auto_awesome_mosaic","auto_awesome_motion","auto_delete","auto_fix_high","auto_fix_normal","auto_fix_off","auto_graph","auto_stories","autofps_select","autorenew","av_timer","baby_changing_station","back_hand","backpack","backspace","backup","backup_table","badge","bakery_dining","balcony","ballot","bar_chart","batch_prediction","bathroom","bathtub","battery_alert","battery_charging_full","battery_full","battery_saver","battery_std","battery_unknown","beach_access","bed","bedroom_baby","bedroom_child","bedroom_parent","bedtime","beenhere","bento","bike_scooter","biotech","blender","block","bloodtype","bluetooth","bluetooth_audio","bluetooth_connected","bluetooth_disabled","bluetooth_drive","bluetooth_searching","blur_circular","blur_linear","blur_off","blur_on","bolt","book","book_online","bookmark","bookmark_add","bookmark_added","bookmark_border","bookmark_outline","bookmark_remove","bookmarks","border_all","border_bottom","border_clear","border_color","border_horizontal","border_inner","border_left","border_outer","border_right","border_style","border_top","border_vertical","branding_watermark","breakfast_dining","brightness_1","brightness_2","brightness_3","brightness_4","brightness_5","brightness_6","brightness_7","brightness_auto","brightness_high","brightness_low","brightness_medium","broken_image","browser_not_supported","brunch_dining","brush","bubble_chart","bug_report","build","build_circle","bungalow","burst_mode","bus_alert","business","business_center","cabin","cable","cached","cake","calculate","calendar_today","calendar_view_day","calendar_view_month","calendar_view_week","call","call_end","call_made","call_merge","call_missed","call_missed_outgoing","call_received","call_split","call_to_action","camera","camera_alt","camera_enhance","camera_front","camera_indoor","camera_outdoor","camera_rear","camera_roll","cameraswitch","campaign","cancel","cancel_presentation","cancel_schedule_send","car_rental","car_repair","card_giftcard","card_membership","card_travel","carpenter","cases","casino","cast","cast_connected","cast_for_education","catching_pokemon","category","celebration","cell_wifi","center_focus_strong","center_focus_weak","chair","chair_alt","chalet","change_circle","change_history","charging_station","chat","chat_bubble","chat_bubble_outline","check","check_box","check_box_outline_blank","check_circle","check_circle_outline","checklist","checklist_rtl","checkroom","chevron_left","chevron_right","child_care","child_friendly","chrome_reader_mode","circle","circle_notifications","class","clean_hands","cleaning_services","clear","clear_all","close","close_fullscreen","closed_caption","closed_caption_disabled","closed_caption_off","cloud","cloud_circle","cloud_done","cloud_download","cloud_off","cloud_queue","cloud_upload","code","code_off","coffee","coffee_maker","collections","collections_bookmark","color_lens","colorize","comment","comment_bank","commute","compare","compare_arrows","compass_calibration","compost","compress","computer","confirmation_num","confirmation_number","connect_without_contact","connected_tv","construction","contact_mail","contact_page","contact_phone","contact_support","contactless","contacts","content_copy","content_cut","content_paste","content_paste_off","control_camera","control_point","control_point_duplicate","copy","copy_all","copyright","coronavirus","corporate_fare","cottage","countertops","create","create_new_folder","credit_card","credit_card_off","credit_score","crib","crop","crop_16_9","crop_3_2","crop_5_4","crop_7_5","crop_din","crop_free","crop_landscape","crop_original","crop_portrait","crop_rotate","crop_square","cruelty_free","cut","dangerous","dark_mode","dashboard","dashboard_customize","data_exploration","data_saver_off","data_saver_on","data_usage","date_range","deck","dehaze","delete","delete_forever","delete_outline","delete_sweep","delivery_dining","departure_board","description","design_services","desktop_access_disabled","desktop_mac","desktop_windows","details","developer_board","developer_board_off","developer_mode","device_hub","device_thermostat","device_unknown","devices","devices_other","dialer_sip","dialpad","dining","dinner_dining","directions","directions_bike","directions_boat","directions_boat_filled","directions_bus","directions_bus_filled","directions_car","directions_car_filled","directions_ferry","directions_off","directions_railway","directions_railway_filled","directions_run","directions_subway","directions_subway_filled","directions_train","directions_transit","directions_transit_filled","directions_walk","dirty_lens","disabled_by_default","disabled_visible","disc_full","dnd_forwardslash","dns","do_disturb","do_disturb_alt","do_disturb_off","do_disturb_on","do_not_disturb","do_not_disturb_alt","do_not_disturb_off","do_not_disturb_on","do_not_disturb_on_total_silence","do_not_step","do_not_touch","dock","document_scanner","domain","domain_disabled","domain_verification","done","done_all","done_outline","donut_large","donut_small","door_back","door_front","door_sliding","doorbell","double_arrow","downhill_skiing","download","download_done","download_for_offline","downloading","drafts","drag_handle","drag_indicator","draw","drive_eta","drive_file_move","drive_file_move_rtl","drive_file_rename_outline","drive_folder_upload","dry","dry_cleaning","duo","dvr","dynamic_feed","dynamic_form","e_mobiledata","earbuds","earbuds_battery","east","eco","edgesensor_high","edgesensor_low","edit","edit_attributes","edit_calendar","edit_location","edit_location_alt","edit_note","edit_notifications","edit_off","edit_road","eject","elderly","electric_bike","electric_car","electric_moped","electric_rickshaw","electric_scooter","electrical_services","elevator","email","emergency","emoji_emotions","emoji_events","emoji_flags","emoji_food_beverage","emoji_nature","emoji_objects","emoji_people","emoji_symbols","emoji_transportation","engineering","enhance_photo_translate","enhanced_encryption","equalizer","error","error_outline","escalator","escalator_warning","euro","euro_symbol","ev_station","event","event_available","event_busy","event_note","event_seat","exit_to_app","expand","expand_less","expand_more","explicit","explore","explore_off","exposure","exposure_minus_1","exposure_minus_2","exposure_neg_1","exposure_neg_2","exposure_plus_1","exposure_plus_2","exposure_zero","extension","extension_off","face","face_retouching_natural","face_retouching_off","face_unlock","facebook","fact_check","family_restroom","fast_forward","fast_rewind","fastfood","favorite","favorite_border","favorite_outline","featured_play_list","featured_video","feed","feedback","female","fence","festival","fiber_dvr","fiber_manual_record","fiber_new","fiber_pin","fiber_smart_record","file_copy","file_download","file_download_done","file_download_off","file_present","file_upload","filter","filter_1","filter_2","filter_3","filter_4","filter_5","filter_6","filter_7","filter_8","filter_9","filter_9_plus","filter_alt","filter_b_and_w","filter_center_focus","filter_drama","filter_frames","filter_hdr","filter_list","filter_none","filter_tilt_shift","filter_vintage","find_in_page","find_replace","fingerprint","fire_extinguisher","fireplace","first_page","fit_screen","fitness_center","flag","flaky","flare","flash_auto","flash_off","flash_on","flashlight_off","flashlight_on","flatware","flight","flight_land","flight_takeoff","flip","flip_camera_android","flip_camera_ios","flip_to_back","flip_to_front","flourescent","flutter_dash","fmd_bad","fmd_good","folder","folder_open","folder_shared","folder_special","follow_the_signs","font_download","font_download_off","food_bank","format_align_center","format_align_justify","format_align_left","format_align_right","format_bold","format_clear","format_color_fill","format_color_reset","format_color_text","format_indent_decrease","format_indent_increase","format_italic","format_line_spacing","format_list_bulleted","format_list_numbered","format_list_numbered_rtl","format_paint","format_quote","format_shapes","format_size","format_strikethrough","format_textdirection_l_to_r","format_textdirection_r_to_l","format_underline","format_underlined","forum","forward","forward_10","forward_30","forward_5","forward_to_inbox","foundation","free_breakfast","free_cancellation","front_hand","fullscreen","fullscreen_exit","functions","g_mobiledata","g_translate","gamepad","games","garage","gavel","generating_tokens","gesture","get_app","gif","gite","golf_course","gpp_bad","gpp_good","gpp_maybe","gps_fixed","gps_not_fixed","gps_off","grade","gradient","grading","grain","graphic_eq","grass","grid_3x3","grid_4x4","grid_goldenratio","grid_off","grid_on","grid_view","group","group_add","group_off","group_work","groups","h_mobiledata","h_plus_mobiledata","hail","handyman","hardware","hd","hdr_auto","hdr_auto_select","hdr_enhanced_select","hdr_off","hdr_off_select","hdr_on","hdr_on_select","hdr_plus","hdr_strong","hdr_weak","headphones","headphones_battery","headset","headset_mic","headset_off","healing","health_and_safety","hearing","hearing_disabled","height","help","help_center","help_outline","hevc","hide_image","hide_source","high_quality","highlight","highlight_alt","highlight_off","highlight_remove","hiking","history","history_edu","history_toggle_off","holiday_village","home","home_max","home_mini","home_repair_service","home_work","horizontal_distribute","horizontal_rule","horizontal_split","hot_tub","hotel","hotel_class","hourglass_bottom","hourglass_disabled","hourglass_empty","hourglass_full","hourglass_top","house","house_siding","houseboat","how_to_reg","how_to_vote","http","https","hvac","ice_skating","icecream","image","image_aspect_ratio","image_not_supported","image_search","imagesearch_roller","import_contacts","import_export","important_devices","inbox","incomplete_circle","indeterminate_check_box","info","input","insert_chart","insert_chart_outlined","insert_comment","insert_drive_file","insert_emoticon","insert_invitation","insert_link","insert_photo","insights","integration_instructions","inventory","inventory_2","invert_colors","invert_colors_off","invert_colors_on","ios_share","iron","iso","kayaking","keyboard","keyboard_alt","keyboard_arrow_down","keyboard_arrow_left","keyboard_arrow_right","keyboard_arrow_up","keyboard_backspace","keyboard_capslock","keyboard_control","keyboard_hide","keyboard_return","keyboard_tab","keyboard_voice","king_bed","kitchen","kitesurfing","label","label_important","label_off","landscape","language","laptop","laptop_chromebook","laptop_mac","laptop_windows","last_page","launch","layers","layers_clear","leaderboard","leak_add","leak_remove","leave_bags_at_home","legend_toggle","lens","lens_blur","library_add","library_add_check","library_books","library_music","light","light_mode","lightbulb","line_style","line_weight","linear_scale","link","link_off","linked_camera","liquor","list","list_alt","live_help","live_tv","living","local_activity","local_airport","local_atm","local_attraction","local_bar","local_cafe","local_car_wash","local_convenience_store","local_dining","local_drink","local_fire_department","local_florist","local_gas_station","local_grocery_store","local_hospital","local_hotel","local_laundry_service","local_library","local_mall","local_movies","local_offer","local_parking","local_pharmacy","local_phone","local_pizza","local_play","local_police","local_post_office","local_print_shop","local_printshop","local_restaurant","local_see","local_shipping","local_taxi","location_city","location_disabled","location_history","location_off","location_on","location_searching","lock","lock_clock","lock_open","login","logout","looks","looks_3","looks_4","looks_5","looks_6","looks_one","looks_two","loop","loupe","low_priority","loyalty","lte_mobiledata","lte_plus_mobiledata","luggage","lunch_dining","mail","mail_outline","male","manage_accounts","manage_search","map","maps_home_work","maps_ugc","margin","mark_as_unread","mark_chat_read","mark_chat_unread","mark_email_read","mark_email_unread","markunread","markunread_mailbox","masks","maximize","media_bluetooth_off","media_bluetooth_on","mediation","medical_services","medication","meeting_room","memory","menu","menu_book","menu_open","merge_type","message","messenger","messenger_outline","mic","mic_external_off","mic_external_on","mic_none","mic_off","microwave","military_tech","minimize","miscellaneous_services","missed_video_call","mms","mobile_friendly","mobile_off","mobile_screen_share","mobiledata_off","mode","mode_comment","mode_edit","mode_edit_outline","mode_night","mode_standby","model_training","monetization_on","money","money_off","money_off_csred","monitor","monitor_weight","monochrome_photos","mood","mood_bad","moped","more","more_horiz","more_time","more_vert","motion_photos_auto","motion_photos_off","motion_photos_on","motion_photos_pause","motion_photos_paused","motorcycle","mouse","move_to_inbox","movie","movie_creation","movie_filter","moving","mp","multiline_chart","multiple_stop","multitrack_audio","museum","music_note","music_off","music_video","my_library_add","my_library_books","my_library_music","my_location","nat","nature","nature_people","navigate_before","navigate_next","navigation","near_me","near_me_disabled","nearby_error","nearby_off","network_cell","network_check","network_locked","network_wifi","new_label","new_releases","next_plan","next_week","nfc","night_shelter","nightlife","nightlight","nightlight_round","nights_stay","no_accounts","no_backpack","no_cell","no_drinks","no_encryption","no_encryption_gmailerrorred","no_flash","no_food","no_luggage","no_meals","no_meeting_room","no_photography","no_sim","no_stroller","no_transfer","nordic_walking","north","north_east","north_west","not_accessible","not_interested","not_listed_location","not_started","note","note_add","note_alt","notes","notification_add","notification_important","notifications","notifications_active","notifications_none","notifications_off","notifications_on","notifications_paused","now_wallpaper","now_widgets","offline_bolt","offline_pin","offline_share","ondemand_video","online_prediction","opacity","open_in_browser","open_in_full","open_in_new","open_in_new_off","open_with","other_houses","outbond","outbound","outbox","outdoor_grill","outlet","outlined_flag","padding","pages","pageview","paid","palette","pan_tool","panorama","panorama_fish_eye","panorama_fisheye","panorama_horizontal","panorama_horizontal_select","panorama_photosphere","panorama_photosphere_select","panorama_vertical","panorama_vertical_select","panorama_wide_angle","panorama_wide_angle_select","paragliding","park","party_mode","password","paste","pattern","pause","pause_circle","pause_circle_filled","pause_circle_outline","pause_presentation","payment","payments","pedal_bike","pending","pending_actions","people","people_alt","people_outline","perm_camera_mic","perm_contact_cal","perm_contact_calendar","perm_data_setting","perm_device_info","perm_device_information","perm_identity","perm_media","perm_phone_msg","perm_scan_wifi","person","person_add","person_add_alt","person_add_alt_1","person_add_disabled","person_off","person_outline","person_pin","person_pin_circle","person_remove","person_remove_alt_1","person_search","personal_injury","personal_video","pest_control","pest_control_rodent","pets","phone","phone_android","phone_bluetooth_speaker","phone_callback","phone_disabled","phone_enabled","phone_forwarded","phone_in_talk","phone_iphone","phone_locked","phone_missed","phone_paused","phonelink","phonelink_erase","phonelink_lock","phonelink_off","phonelink_ring","phonelink_setup","photo","photo_album","photo_camera","photo_camera_back","photo_camera_front","photo_filter","photo_library","photo_size_select_actual","photo_size_select_large","photo_size_select_small","piano","piano_off","picture_as_pdf","picture_in_picture","picture_in_picture_alt","pie_chart","pie_chart_outline","pin","pin_drop","pin_end","pin_invoke","pivot_table_chart","place","plagiarism","play_arrow","play_circle","play_circle_fill","play_circle_filled","play_circle_outline","play_disabled","play_for_work","play_lesson","playlist_add","playlist_add_check","playlist_play","plumbing","plus_one","podcasts","point_of_sale","policy","poll","polymer","pool","portable_wifi_off","portrait","post_add","power","power_input","power_off","power_settings_new","precision_manufacturing","pregnant_woman","present_to_all","preview","price_change","price_check","print","print_disabled","priority_high","privacy_tip","private_connectivity","production_quantity_limits","psychology","public","public_off","publish","published_with_changes","push_pin","qr_code","qr_code_2","qr_code_scanner","query_builder","query_stats","question_answer","queue","queue_music","queue_play_next","quick_contacts_dialer","quick_contacts_mail","quickreply","quiz","r_mobiledata","radar","radio","radio_button_checked","radio_button_off","radio_button_on","radio_button_unchecked","railway_alert","ramen_dining","rate_review","raw_off","raw_on","read_more","real_estate_agent","receipt","receipt_long","recent_actors","recommend","record_voice_over","recycling","redeem","redo","reduce_capacity","refresh","remember_me","remove","remove_circle","remove_circle_outline","remove_done","remove_from_queue","remove_moderator","remove_red_eye","remove_shopping_cart","reorder","repeat","repeat_on","repeat_one","repeat_one_on","replay","replay_10","replay_30","replay_5","replay_circle_filled","reply","reply_all","report","report_gmailerrorred","report_off","report_problem","request_page","request_quote","reset_tv","restart_alt","restaurant","restaurant_menu","restore","restore_from_trash","restore_page","reviews","rice_bowl","ring_volume","roofing","room","room_preferences","room_service","rotate_90_degrees_ccw","rotate_left","rotate_right","rounded_corner","router","rowing","rss_feed","rsvp","rtt","rule","rule_folder","run_circle","running_with_errors","rv_hookup","safety_divider","sailing","sanitizer","satellite","save","save_alt","saved_search","savings","scanner","scatter_plot","schedule","schedule_send","schema","school","science","score","screen_lock_landscape","screen_lock_portrait","screen_lock_rotation","screen_rotation","screen_search_desktop","screen_share","screenshot","sd","sd_card","sd_card_alert","sd_storage","search","search_off","security","security_update","security_update_good","security_update_warning","segment","select_all","self_improvement","sell","send","send_and_archive","send_to_mobile","sensor_door","sensor_window","sensors","sensors_off","sentiment_dissatisfied","sentiment_neutral","sentiment_satisfied","sentiment_satisfied_alt","sentiment_very_dissatisfied","sentiment_very_satisfied","set_meal","settings","settings_accessibility","settings_applications","settings_backup_restore","settings_bluetooth","settings_brightness","settings_cell","settings_display","settings_ethernet","settings_input_antenna","settings_input_component","settings_input_composite","settings_input_hdmi","settings_input_svideo","settings_overscan","settings_phone","settings_power","settings_remote","settings_suggest","settings_system_daydream","settings_voice","share","share_arrival_time","share_location","shield","shop","shop_2","shop_two","shopping_bag","shopping_basket","shopping_cart","short_text","shortcut","show_chart","shower","shuffle","shuffle_on","shutter_speed","sick","signal_cellular_0_bar","signal_cellular_4_bar","signal_cellular_alt","signal_cellular_connected_no_internet_0_bar","signal_cellular_connected_no_internet_4_bar","signal_cellular_no_sim","signal_cellular_nodata","signal_cellular_null","signal_cellular_off","signal_wifi_0_bar","signal_wifi_4_bar","signal_wifi_4_bar_lock","signal_wifi_bad","signal_wifi_connected_no_internet_4","signal_wifi_off","signal_wifi_statusbar_4_bar","signal_wifi_statusbar_connected_no_internet_4","signal_wifi_statusbar_null","sim_card","sim_card_alert","sim_card_download","single_bed","sip","skateboarding","skip_next","skip_previous","sledding","slideshow","slow_motion_video","smart_button","smart_display","smart_screen","smart_toy","smartphone","smoke_free","smoking_rooms","sms","sms_failed","snippet_folder","snooze","snowboarding","snowmobile","snowshoeing","soap","social_distance","sort","sort_by_alpha","source","south","south_east","south_west","spa","space_bar","space_dashboard","speaker","speaker_group","speaker_notes","speaker_notes_off","speaker_phone","speed","spellcheck","splitscreen","sports","sports_bar","sports_baseball","sports_basketball","sports_cricket","sports_esports","sports_football","sports_golf","sports_handball","sports_hockey","sports_kabaddi","sports_mma","sports_motorsports","sports_rugby","sports_score","sports_soccer","sports_tennis","sports_volleyball","square_foot","stacked_bar_chart","stacked_line_chart","stairs","star","star_border","star_border_purple500","star_half","star_outline","star_purple500","star_rate","stars","stay_current_landscape","stay_current_portrait","stay_primary_landscape","stay_primary_portrait","sticky_note_2","stop","stop_circle","stop_screen_share","storage","store","store_mall_directory","storefront","storm","straighten","stream","streetview","strikethrough_s","stroller","style","subdirectory_arrow_left","subdirectory_arrow_right","subject","subscript","subscriptions","subtitles","subtitles_off","subway","summarize","superscript","supervised_user_circle","supervisor_account","support","support_agent","surfing","surround_sound","swap_calls","swap_horiz","swap_horizontal_circle","swap_vert","swap_vert_circle","swap_vertical_circle","swipe","switch_account","switch_camera","switch_left","switch_right","switch_video","sync","sync_alt","sync_disabled","sync_problem","system_security_update","system_security_update_good","system_security_update_warning","system_update","system_update_alt","system_update_tv","tab","tab_unselected","table_chart","table_rows","table_view","tablet","tablet_android","tablet_mac","tag","tag_faces","takeout_dining","tap_and_play","tapas","task","task_alt","taxi_alert","terrain","text_fields","text_format","text_rotate_up","text_rotate_vertical","text_rotation_angledown","text_rotation_angleup","text_rotation_down","text_rotation_none","text_snippet","textsms","texture","theater_comedy","theaters","thermostat","thermostat_auto","thumb_down","thumb_down_alt","thumb_down_off_alt","thumb_up","thumb_up_alt","thumb_up_off_alt","thumbs_up_down","time_to_leave","timelapse","timeline","timer","timer_10","timer_10_select","timer_3","timer_3_select","timer_off","tips_and_updates","title","toc","today","toggle_off","toggle_on","toll","tonality","topic","touch_app","tour","toys","track_changes","traffic","train","tram","transfer_within_a_station","transform","transgender","transit_enterexit","translate","travel_explore","trending_down","trending_flat","trending_neutral","trending_up","trip_origin","try","tty","tune","tungsten","turned_in","turned_in_not","tv","tv_off","two_wheeler","umbrella","unarchive","undo","unfold_less","unfold_more","unpublished","unsubscribe","upcoming","update","update_disabled","upgrade","upload","upload_file","usb","usb_off","verified","verified_user","vertical_align_bottom","vertical_align_center","vertical_align_top","vertical_distribute","vertical_split","vibration","video_call","video_camera_back","video_camera_front","video_collection","video_label","video_library","video_settings","video_stable","videocam","videocam_off","videogame_asset","videogame_asset_off","view_agenda","view_array","view_carousel","view_column","view_comfortable","view_comfy","view_compact","view_day","view_headline","view_in_ar","view_list","view_module","view_quilt","view_sidebar","view_stream","view_week","vignette","villa","visibility","visibility_off","voice_chat","voice_over_off","voicemail","volume_down","volume_mute","volume_off","volume_up","volunteer_activism","vpn_key","vpn_lock","vrpano","wallet_giftcard","wallet_membership","wallet_travel","wallpaper","warning","warning_amber","wash","watch","watch_later","water","water_damage","water_drop","waterfall_chart","waves","waving_hand","wb_auto","wb_cloudy","wb_incandescent","wb_iridescent","wb_shade","wb_sunny","wb_twilight","wc","web","web_asset","web_asset_off","weekend","west","whatshot","wheelchair_pickup","where_to_vote","widgets","wifi","wifi_calling","wifi_calling_3","wifi_lock","wifi_off","wifi_protected_setup","wifi_tethering","wifi_tethering_error_rounded","wifi_tethering_off","window","wine_bar","work","work_off","work_outline","workspaces","wrap_text","wrong_location","wysiwyg","yard","youtube_searched_for","zoom_in","zoom_out","zoom_out_map"]}];function M(e){const[t,a]=d({defaultIcon:mappl10n.options.defaultIcon,filename:null,filter:"",glyph:"",glyphColor:"white",glyphFont:O[0],glyphSize:20,isOpen:!1,mode:"list",shape:"circle",shapeColor:"gray",shapeFont:S[0],toDelete:[],userIcons:mappl10n.options.userIcons});function p(e){a((t=>({...t,...e})))}function c(a,n){switch(a){case"bulk-select":let a=[...t.toDelete],i=t.toDelete.indexOf(n.iconid);i>=0?a.splice(i,1):a.push(n.iconid),p({toDelete:a});break;case"close":p({isOpen:!1});break;case"delete":confirm(mappl10n.delete_prompt)&&o.mappLib.ajax({method:"POST",data:{action:"mapp_icon_delete",iconids:t.toDelete,nonce:mappl10n.options.nonce},callback:function(a){a&&"OK"==a.status?(t.toDelete.indexOf(e.iconid)>=0&&!function(e){if(!e)return!1;let t=e.replace(/.png|.gif|.jpg/gi,"").toLowerCase();return mappl10n.options.standardIcons.indexOf(t)>=0}(e.iconid)&&e.onChange(null),mappl10n.options.userIcons=a.data,p({toDelete:[],mode:"list",userIcons:mappl10n.options.userIcons})):alert("Delete error: "+a.status)}});break;case"edit-cancel":p({mode:"list"});break;case"edit-save":!function(e){const a=32,o=2;let n=document.createElement("canvas");n.width=a*o,n.height=a*o,n.style.imageRendering="pixelated";let i=n.getContext("2d");i.font=a*o+"px "+t.shapeFont.fontFamily,i.fillStyle=t.shapeColor,i.textBaseline="bottom",i.fillText(t.shape,0,a*o),i.strokeStyle="white",i.strokeText(t.shape,1,a*o);const s=_.findWhere(t.shapeFont.glyphs,{name:t.shape});if(t.glyph&&s.center){i.imageSmoothingEnabled=!1,i.font=t.glyphSize*o+"px "+t.glyphFont.fontFamily,i.fillStyle=t.glyphColor;const e=[s.center[0]*o,s.center[1]*o];i.fillText(t.glyph,e[0]-t.glyphSize,e[1]+t.glyphSize)}"undefined"!=typeof debug?document.getElementById("mapp-edit-debug").append(n):n.toBlob((e=>{let a=new FormData;a.append("image0",e,t.filename),u(a)}),"image/png",100)}();break;case"edit-upload":!function(e){let t=new FormData;_.map(e,((e,a)=>{e.type.match("image.*")?t.append("image"+a,e):alert("File "+e.name+" is not an image.")})),u(t)}(n);break;case"list-select":e.onChange&&e.onChange(n),c("close");break;case"mode":p("bulk"==n?{mode:n,toDelete:[]}:{mode:n});break;case"open":p({isOpen:!0})}}function m(a){const n="user"==a?mappl10n.options.userIcons:mappl10n.options.standardIcons;return _.map(n,(n=>{if("standard"==a&&function(e){return mappl10n.options.userIcons.indexOf(e)>=0}(n+".png"))return"";let i="mapp-icon-wrapper";return"bulk"==t.mode&&t.toDelete.indexOf(n)>=0?i+=" mapp-bulk-selected":"list"!=t.mode||e.iconid!=n&&e.iconid+".png"!=n||(i+=" mapp-selected"),s("div",{alt:n,className:i,key:n,onClick:()=>{"list"==t.mode?c("list-select",n):"user"==a&&c("bulk-select",{iconid:n,type:a})}},s("img",{className:"mapp-icon",src:o.mappLib.getIconUrl(n),title:n}))}))}function u(t){t.append("action","mapp_icon_save"),t.append("nonce",mappl10n.options.nonce),o.mappLib.ajax({method:"POST",data:t,callback:t=>{t&&"OK"==t.status?(mappl10n.options.userIcons=t.data.icons,p({userIcons:mappl10n.options.userIcons}),p({mode:"list"}),e.onChange&&e.onChange(t.data.filename)):alert("Upload error: "+t.status)}})}return r((()=>{let e=t.glyph?t.glyph:t.shape;e+=".png",p({filename:e})}),[t.shape,t.shapeColor,t.glyphFont,t.glyph,t.glyphColor,t.glyphSize]),s(l,null,s("img",{className:"mapp-icon",onClick:()=>c("open",null),src:o.mappLib.getIconUrl(e.iconid)}),"list"==t.mode&&t.isOpen&&s(k,{title:s("div",{className:"mapp-icons-title"},__("Select icon"),s(g,{disabled:"bulk"==t.mode,isPrimary:!0,onClick:()=>c("mode","edit")},__("New icon"))),className:"mapp-icons-modal",onRequestClose:()=>c("close")},s("div",{className:"mapp-icons"},s("div",{className:"mapp-icons-list"},mappl10n.options.userIcons.length>0&&s("div",{className:"mapp-icons-list-title"},__("Custom icons")),s("div",{className:"mapp-icons-user"},m("user")),mappl10n.options.userIcons.length>0&&s("div",{className:"mapp-icons-list-title"},__("Standard icons")),s("div",{className:"mapp-icons-standard"},m("standard"))),s("div",{className:"mapp-icons-toolbar"},s("div",null,s(g,{disabled:"bulk"==t.mode,isSecondary:!0,onClick:()=>c("list-select",null)},__("Use default icon")),mappl10n.options.userIcons.length>0&&s(g,{isTertiary:!0,onClick:()=>c("mode","bulk")},__("Edit list"))),s("div",{className:"mapp-icons-filename"},e.iconid?e.iconid:__("No icon selected"))))),"bulk"==t.mode&&t.isOpen&&s(k,{title:s("div",{className:"mapp-icons-title"},__("Select icons to delete")),className:"mapp-icons-modal",onRequestClose:()=>c("close")},s("div",{className:"mapp-icons"},s("div",{className:"mapp-icons-list"},s("div",{className:"mapp-icons-user"},m("user"))),s("div",{className:"mapp-icons-toolbar"},s("div",null,s(g,{isDestructive:!0,disabled:t.toDelete.length<1,onClick:()=>c("delete")},__("Delete")),s(g,{isSecondary:!0,onClick:()=>c("mode","list")},__("Cancel")))))),"edit"==t.mode&&s(k,{title:__("Create new icon"),className:"mapp-icons-edit-modal",onRequestClose:()=>c("edit-cancel"),shouldCloseOnClickOutside:!1},s("div",{className:"mapp-icons-edit"},s("div",{id:"mapp-edit-debug"}),s("section",null,s("h2",null,__("Shape")),s("span",{className:"mapp-icons-edit-shapes",style:{color:t.shapeColor,fontFamily:t.shapeFont.fontFamily}},_.map(t.shapeFont.glyphs,((e,a)=>{const o=t.shape==e.name;return s("span",{className:"mapp-icons-edit-shape-wrapper"+(o?" mapp-selected":""),key:e.name,onClick:()=>p({shape:e.name}),title:e.name},s("span",{className:"mapp-icons-edit-shape"},e.name,e.center&&t.glyph&&s("div",{className:"mapp-icons-edit-shape-glyph "+t.glyphFont.className,style:{left:e.center[0],top:e.center[1],color:t.glyphColor,fontSize:t.glyphSize,width:t.glyphSize}},t.glyph)))})))),s("section",{className:"mapp-icons-edit-font"},s("h2",null,__("Font")),s(i.Select,{value:t.glyphFont.id,options:_.map(O,(e=>({value:e.id,label:e.label}))),onChange:e=>p({glyphFont:_.findWhere(O,{id:e}),glyph:null})}),s("span",null,__("Font size")),s(C,{initialPosition:20,min:16,max:24,value:t.glyphSize,onChange:e=>p({glyphSize:e})})),s("section",null,s("h2",null,__("Color")),s("span",{className:"mapp-icons-edit-colors"},s(n.MappColorPicker,{color:t.shapeColor,isExtended:!1,onChange:e=>p({shapeColor:e.color})}),s("span",null,__("Fill")),s(n.MappColorPicker,{color:t.glyphColor,isExtended:!1,onChange:e=>p({glyphColor:e.color})}),s("span",null,__("Stroke")))),function(){const e=_.filter(t.glyphFont.glyphs,(e=>!t.filter||e.includes(t.filter)));return s("div",{className:"mapp-icons-edit-glyphs"},s("section",{className:"mapp-icons-edit-search"},s("h2",null,__("Search")),s(i.Input,{value:t.filter,onChange:e=>p({filter:e})})),s("div",{className:"mapp-icons-edit-glyph-list",style:{color:t.glyphColor}},_.map(e,((e,a)=>s("div",{tabIndex:0,className:"mapp-icons-edit-glyph-wrapper"+(t.glyph==e?" mapp-selected":""),key:a,onClick:()=>p({glyph:t.glyph==e?null:e})},s("span",{className:"mapp-icons-edit-glyph "+t.glyphFont.className},e),s("div",{className:"mapp-icons-edit-glyph-title"},e.replaceAll("_"," ")))))))}(),s("div",{className:"mapp-icons-edit-toolbar"},s("div",{className:"mapp-icons-edit-toolbar-left"},s(g,{isPrimary:!0,onClick:()=>c("edit-save")},__("Save")),s(g,{isSecondary:!0,onClick:()=>c("edit-cancel")},__("Cancel")),s(i.Input,{className:"mapp-icons-filename",value:t.filename,onChange:e=>p({filename:e})})),s("div",null,s(v,{accept:"image/*",icon:"upload",multiple:!0,onChange:e=>{c("edit-upload",e.target.files)}},__("Upload icons")))))))}},897:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappImport:()=>y});var o=a(939),n=a(228);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{useSelect:d}=wp.data,{withState:u}=wp.compose,{Button:h,FormFileUpload:g,Modal:f,ToggleControl:b}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function y(e){const[t,a]=m({isBusy:!1,isFetching:!1,file:null,isMapModalOpen:!1,mapid:null,mapdata:null,overwrite:!1,response:null,tab:"sheet",url:""}),r=c(null);function p(e){a((t=>({...t,...e})))}l((()=>{t.mapid&&(p({isFetching:!0,mapdata:null}),o.mappLib.ajax({method:"GET",data:{action:"mapp_get",mapid:t.mapid,nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status?p({mapdata:e.data}):alert(e.status),p({isFetching:!1})}}))}),[t.mapid]),l((()=>{if(t.isMapModalOpen&&!t.isFetching&&t.mapdata&&r.current){new mapp.Map(t.mapdata,{height:"50vh",mapOpts:{mapTypeControl:!1,streetViewControl:!1},poiList:!0,search:!1,sel:jQuery(r.current),width:"50vw"}).display()}}),[t.isMapModalOpen,t.isFetching,t.mapdata,r.current]);const d=t.isBusy||"file"==t.tab&&!t.file||"sheet"==t.tab&&0==t.url.trim().length;return i("div",{className:"mapp-import"},i("form",{onSubmit:e=>{e.preventDefault(),function(){p({isBusy:!0,response:null});let e={method:"POST",data:{url:t.url,action:"mapp_import",nonce:mappl10n.options.nonce,overwrite:t.overwrite},callback:e=>{p({isBusy:!1}),e&&"OK"==e.status&&p({response:e.data})}};if("file"==t.tab){let a=new FormData;_.map(e.data,((e,t)=>a.append(t,e))),a.append("file",t.file),e={...e,data:a}}o.mappLib.ajax(e)}()}},i(s,null,i("h2",null,__("Source")),i(n.MappTabs,{tabs:[{name:"sheet",label:__("Google Sheets")},{name:"file",label:__("File")}],initialTab:t.tab,onRender:e=>"sheet"==e?function(){const e=i("div",{className:"mapp-import-help"},__("Google sheets must be shared before importing:"),i("ol",null,i("li",null,__("File -> Share -> Publish to web")),i("li",null,__("Select 'Entire Document' and 'Comma-Separated Values (.csv)")),i("li",null,__("Copy the URL and paste it here"))));return i("div",{className:"mapp-import-tab-sheet"},i("label",{className:"mapp-import-sheet-name"},i("span",null,"URL"),i("input",{onChange:e=>function(e){p({url:e})}(e.target.value),type:"text",value:t.url})),e)}():"file"==e?function(){const e=i("div",{className:"mapp-import-help"},__("File must be in CSV format:"),i("ol",null,i("li",null,__("Excel: File -> Save As -> 'CSV' or 'CSV UTF-8' (for special characters)'")),i("li",null,__("Google sheets: File -> Download -> Comma Separated Values (.csv)"))));return i("div",{className:"mapp-import-tab-file"},i("div",{className:"mapp-import-file-name"},i(g,{accept:"text/csv",isSecondary:!0,multiple:!1,onChange:e=>{p({file:e.target.files[0]})}},__("Select file")),i("input",{disabled:!0,type:"text",value:t.file?t.file.name:""})),e)}():void 0,onSelect:e=>p({tab:e})})),i(b,{checked:t.overwrite,label:__("Use map IDs from file"),onChange:e=>p({overwrite:e})}),t.overwrite&&i("div",{className:"mapp-import-overwrite-warning"},__("WARNING: this will overwrite any existing maps with the same IDs")),i(h,{disabled:d,isBusy:t.isBusy,isPrimary:!0,type:"submit"},__("Import"))),function(){if(t.response&&t.response.results)return i("div",{className:"mapp-import-log"},i("h2",null,__("Results")),_.map(t.response.results,((e,a)=>i("div",{key:a},function(e){let a=t.response.headers;return i("div",{className:"mapp-import-table"},i("div",{className:"mapp-import-table-header"},i("div",{key:"line",className:"mapp-import-cell"},__("Line")),_.map(a,((e,t)=>i("div",{key:t,className:"mapp-import-cell"},e))),i("div",{key:"msg",className:"mapp-import-cell"},__("Result"))),_.map(e.logs,((e,t)=>{let o="mapp-import-cell";return e.msg&&(o+="e"==e.msg.msgtype?" mapp-import-cell-error":" mapp-import-cell-info"),i("div",{className:"mapp-import-row",key:t},i("div",{key:"col_rowid",className:"mapp-import-cell"},e.rowid),_.map(a,((t,a)=>i("div",{key:a,className:"mapp-import-cell"},e[t]?e[t]:" "))),i("div",{key:"error",className:o},e.msg.msg))})))}(e),function(e){return _.map(e.msgs,((e,a)=>{const o="e"==e.msgtype?"mapp-import-error":"mapp-import-info";return i("div",{className:o,key:a},e.msg,e.mapid&&i(h,{onClick:()=>{p({mapid:e.mapid,isMapModalOpen:!0})},disabled:t.isFetching||t.isMapModalOpen,isBusy:t.isFetching&&t.mapid==e.mapid,isSecondary:!0},__("Show map")))}))}(e)))))}(),t.isMapModalOpen&&!t.isFetching&&i(f,{title:__("Map")+" "+t.mapid,onRequestClose:()=>p({isMapModalOpen:!1})},i("div",{className:"mapp-import-map"},i("div",{ref:r}))))}document.getElementById("mapp-import-container")&&wp.element.render(i(y,null),document.getElementById("mapp-import-container"))},218:(e,t,a)=>{"use strict";a.r(t);var o=a(885),n=a(185);window.mapp=window.mapp||{};const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useRef:p,useState:c}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function m(e){const{Button:t,Placeholder:a,Toolbar:r,ToolbarButton:m,ToolbarGroup:d}=wp.components,{BlockControls:u,InspectorControls:_}=wp.blockEditor,[h,g]=c({isOpen:!1,map:null,mapdata:void 0,pickerMode:"list",pickerMapid:null}),f=p(null);function b(e){g((t=>({...t,...e})))}function y(){b({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"list"})}function v(){return i(u,null,i(void 0!==d?d:r,null,e.attributes.mapid&&i(m,{icon:"edit",label:__("Edit map"),onClick:()=>{b({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"edit"})}}),i(m,{icon:"portfolio",label:__("Map Library"),onClick:()=>y()})))}if(l((()=>{const t=t=>{b({mapdata:t.maps[e.attributes.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),l((()=>{e.attributes.mapid&&mapp.store.fetchMap(e.attributes.mapid)}),[e.attributes.mapid]),l((()=>{e.attributes.mapid&&f.current&&h.mapdata&&function(){let t=new mapp.Map(h.mapdata,{alignment:e.attributes.align,center:e.attributes.center,height:e.attributes.height,mapOpts:{mapTypeControl:!1,streetViewControl:!1},poiList:e.attributes.poiList,search:e.attributes.search,sel:jQuery(f.current),width:e.attributes.width,zoom:e.attributes.zoom});t.display(),b({map:t})}()}),[h.mapdata,e.attributes.search]),l((()=>{"wide"!=e.attributes.align&&"full"!=e.attributes.align||(e.setAttributes({width:"100%"}),h.map&&h.map.setSize({width:"100%"}))}),[e.attributes.align]),e.attributes.preview)return i("img",{className:"mapp-gt-preview",src:mappl10n.options.baseurl+"/images/preview.png",width:"100%"});let k;return k=e.attributes.mapid&&null!==h.mapdata?i(s,null,v(),function(){if(!h.map)return null;const{align:t,center:a,height:n,poiList:s,search:l,width:r,zoom:p}=e.attributes;return i(_,null,i("div",{className:"mapp-gt-inspector"},i(o.MappSettings,{map:h.map,alignment:t,context:"map",onChange:t=>{return a=t,void e.setAttributes(a);var a},center:a,height:n,poiList:s,search:l,width:r,zoom:p})))}(),i("div",{className:"mapp-gt",ref:f})):i(s,null,v(),i(a,{className:"mapp-gt-placeholder",icon:"location",label:__("MapPress Map"),instructions:__("Use the map library to create a new map or insert an existing map.")},i(t,{icon:"portfolio",isSecondary:!0,onClick:()=>y()},__("Map Library")))),i(s,null,k,function(){if(h.isOpen)return i(n.MappPicker,{mapid:h.pickerMapid,mode:h.pickerMode,onClose:()=>{b({isOpen:!1})},onInsert:t=>function(t){t!=e.attributes.mapid&&e.setAttributes({center:void 0,mapid:t,zoom:void 0}),b({isOpen:!1})}(t),onTrash:()=>{e.setAttributes({mapid:void 0,center:void 0,zoom:void 0,width:void 0,height:void 0})},type:"post"})}())}"post"==mappl10n.options.otype&&mappl10n.options.oid&&wp.blocks.registerBlockType("mappress/map",{title:__("MapPress Map"),icon:"location",description:__("Insert a map"),category:mappl10n.options.blockCategory,attributes:{center:{type:"string"},height:{type:"string",default:""},initialOpenDirections:{type:"boolean"},mapid:{type:"string"},mapOpts:{type:"object"},poiList:{type:"boolean"},preview:{type:"boolean",default:!1},search:{type:"boolean"},width:{type:"string",default:""},zoom:{type:"number"}},supports:{align:["full","wide","center","left","right"]},transforms:{from:[{type:"shortcode",tag:"mappress",attributes:{center:{type:"string",shortcode:e=>e.named.center},height:{type:"string",shortcode:e=>e.named.height},initialOpenDirections:{type:"boolean",shortcode:e=>"true"==e.named.initialOpenDirections||"true"==e.named.initialopendirections||void 0},mapid:{type:"string",shortcode:e=>e.named.mapid},poiList:{type:"boolean",shortcode:e=>"true"==e.named.poiList||"true"==e.named.poilist||void 0},search:{type:"boolean",shortcode:e=>"true"==e.named.search||"true"==e.named.search||void 0},width:{type:"string",shortcode:e=>e.named.width},zoom:{type:"number",shortcode:e=>parseInt(e.named.zoom)?parseInt(e.named.zoom):null}}},{type:"block",blocks:["core/shortcode"],isMatch:e=>{let{text:t}=e;var a=wp.shortcode.regexp("mappress");return a.lastIndex=0,a.test(t)},transform:e=>{let{text:t}=e;return wp.blocks.rawHandler({HTML:"<p>"+t+"</p>",mode:"BLOCKS"})}}]},edit:function(e){return i(m,e)},save:function(e){return e},example:{attributes:{preview:!0}}})},265:(e,t,a)=>{"use strict";a.r(t);a(885),a(109),a(308);window.mapp=window.mapp||{};wp.element.createElement;const{Fragment:o,useEffect:n,useLayoutEffect:i,useRef:s,useState:l}=wp.element,{BaseControl:r,Button:p,ButtonGroup:c,Card:m,CardBody:d,CardFooter:u,CardHeader:_,CheckboxControl:h,ExternalLink:g,HorizontalRule:f,Panel:b,PanelBody:y,PanelRow:v,Placeholder:k,RadioControl:w,SelectControl:C,TabPanel:x,TextControl:N,TextareaControl:S,ToggleControl:O,Toolbar:M}=wp.components,{useSelect:P}=wp.data},109:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappMultiSelect:()=>b});const o=wp.element.createElement,{Fragment:n,useEffect:i,useLayoutEffect:s,useRef:l,useState:r}=wp.element,{BaseControl:p,Button:c,CheckboxControl:m,Panel:d,PanelBody:u,PanelRow:h,Spinner:g,TextControl:f}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){const t=l(null),a=l(null),[n,s]=r({isOpen:!1,filter:"",filteredOptions:[]});function c(e){s((t=>({...t,...e})))}function d(t){let a=_.findWhere(e.options,{value:t});return a?a.label:t}function u(){let t;return e.values instanceof Array?t=[...e.values]:e.values&&(t=[e.values]),t||[]}function h(t,a){let o=u(),n=o.indexOf(t);(a=void 0!==a?a:-1==n)?o.push(t):o.splice(n,1),e.onChange(o)}function g(){return n.isOpen?o("div",{className:"mapp-select-dropdown-wrapper"},o("div",{className:"mapp-select-dropdown"},!n.isOpen||!e.options||e.options.length<10?null:o("div",{className:"mapp-select-filter",ref:a},o(f,{autoComplete:"off",placeholder:__("Search"),value:n.filter,onChange:e=>c({filter:e})})),o("div",{className:"mapp-select-dropdown-list"},function(){const e=u();if(0==n.filteredOptions.length)return o("div",{className:"mapp-select-dropdown-item"},__("No results"));return n.filteredOptions.map((t=>o(m,{className:"mapp-select-dropdown-item",checked:e.includes(t.value),key:t.value,onChange:e=>h(t.value,e),label:t.label})))}()))):null}return i((()=>{if(e.options)if(n.filter){let t=n.filter.toUpperCase();c({filteredOptions:e.options.filter((e=>0==e.label.toUpperCase().indexOf(t)))})}else c({filteredOptions:e.options})}),[e.options,n.filter]),i((()=>{n.isOpen&&a.current&&(a.current.focus(),c({filter:""}))}),[n.isOpen]),o(p,{className:"mapp-select",label:e.label},o("div",{ref:t,tabIndex:0,onBlur:e=>function(e){event.relatedTarget||document.activeElement,t.current.contains(e.relatedTarget)||c({isOpen:!1})}(e)},function(){const t=u();return t instanceof Array&&t.map((e=>d(e))),void 0===e.options?o("div",{className:"mapp-select-input"},o("div",{className:"mapp-select-tokens"}),o("span",{className:"dashicons dashicons-arrow-down-alt2"})):o("div",{className:"mapp-select-input",onClick:()=>c({isOpen:!n.isOpen})},o("div",{className:"mapp-select-tokens"},t.map((e=>o("span",{className:"mapp-select-token",key:e,onClick:t=>{t.stopPropagation(),h(e,!1)}},d(e))))),o("span",{className:"dashicons "+(n.isOpen?"dashicons-arrow-up-alt2":"dashicons-arrow-down-alt2")}))}(),g()))}},146:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>w});var o=a(228),n=a(847),i=a(28),s=a(939),l=a(597),r=a(614);const p=wp.element.createElement,{Fragment:c,useEffect:m,useLayoutEffect:d,useCallback:u,useRef:h,useState:g}=wp.element,{useSelect:f}=wp.data,{Button:b,Dashicon:y,FormTokenField:v,Modal:k}=wp.components,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function w(e){const[t,a]=g({...e,isCheckingLicense:!1,isSaving:!1}),d=h(null);function u(e){a((t=>({...t,...e})))}function k(e){return _.map(e,((e,t)=>({value:t,label:e})))}function w(e,t){return e&&Array.isArray(e)&&e.length?(_.map(e,(e=>{for(let t in e)"string"==typeof e[t]&&(e[t]=e[t].trim())})),t?e.filter((e=>{for(let t in e)if(!e[t]||0==e[t].length)return!1;return!0})):e.filter((e=>!(!e.hasOwnProperty("key")||!e.key)))):[]}function C(e,a){switch(e){case"license-check":u({isCheckingLicense:!0}),s.mappLib.ajax({method:"POST",data:{action:"mapp_license_check",nonce:mappl10n.options.nonce,license:t.license},callback:e=>{if(u({isCheckingLicense:!1}),e&&"OK"==e.status){let a={...t.helpers};a.license_status=e.data,u({helpers:a})}}});break;case"reset":u({isSaving:!0}),s.mappLib.ajax({method:"POST",data:{action:"mapp_options_reset",nonce:mappl10n.options.nonce},callback:e=>{u({isSaving:!1}),e&&"OK"==e.status&&window.location.reload()}});break;case"save":let e={...t};delete e.helpers,e.filters.post=w(e.filters.post,!1),e.filters.user=w(e.filters.user,!1),e.metaKeys.post=w(e.metaKeys.post,!0),e.metaKeys.user=w(e.metaKeys.user,!0),e.sizes=w(e.sizes,!0),e.autoicons&&e.autoicons.values&&(e.autoicons.values=w(e.autoicons.values,!0)),u({isSaving:!0}),s.mappLib.ajax({method:"POST",data:{action:"mapp_options_save",nonce:mappl10n.options.nonce,settings:e},callback:e=>{u({isSaving:!1}),e&&"OK"==e.status&&window.location.reload()}})}}return m((()=>{if(d.current){new mapp.Map({alignment:"default",width:"100%",height:300,pois:[{address:"San Francisco, CA",title:"MapPress",body:__("Maps for WordPress"),point:{lat:37.774095,lng:-122.418731}}],sel:jQuery(d.current),zoom:8}).display()}}),[]),m((()=>{mappl10n.options.engine!=t.engine&&C("save")}),[t.engine]),p("div",{className:"mapp-options"},p("form",{onSubmit:e=>{e.preventDefault(),C("save")}},p(o.Section,{title:__("Sample Map"),className:"mapp-demo-section"},p("div",{className:"mapp-options-demo",ref:d})),mappl10n.options.pro&&(!t.helpers.is_multisite||t.helpers.is_super_admin||t.helpers.is_main_site)&&p(o.Section,{title:__("License")},p(o.Option,{title:__("MapPress license key"),className:"mapp-option-license"},p(o.Input,{value:t.license,name:"license",onChange:e=>{let a={...t.helpers};a.license_status="",u({license:e,helpers:a})},size:37,placeholder:__("Enter license to enable automatic updates")}),function(){const e=t.helpers.license_status,a=p(b,{isSecondary:!0,href:"https://mappresspro.com/mappress"},__("Get license")),o=p(b,{isBusy:t.isCheckingLicense,isSecondary:!0,onClick:()=>C("license-check")},__("Check now")),n=p(b,{isLink:!0,target:"_blank",href:"https://mappresspro.com/account"},__("Your account"));return t.license?"active"==e?p("span",{className:"mapp-license-status"},p(y,{icon:"yes"}),__("Active")):p(c,null,o,n,e&&!t.isCheckingLicense&&p("div",null,p(y,{icon:"no"}),"inactive"==e?__("License is invalid or expired"):e)):a}()),p(o.Option,{title:__("Beta versions")},p(o.Checkbox,{checked:t.betas,label:__("Enable updates for beta versions"),onChange:e=>u({betas:e})}))),p(o.Section,{title:__("Basic Settings")},p(o.Option,{title:__("Mapping API")},p(o.Radios,{options:[{label:"Leaflet",value:"leaflet"},{label:"Google",value:"google"}],onChange:e=>{u({engine:e,geocoder:"google"==e?"google":""})},checked:t.engine,help:{href:"#toc-picking-a-mapping-api",text:__("Leaflet is free and requires no API key. Google requires an API key and has usage limits.")}})),"leaflet"==t.engine&&function(){const e=[{value:"nominatim",label:"Nominatim",disabled:t.mapbox},{value:"mapbox",label:"MapBox",disabled:!t.mapbox},{value:"google",label:"Google",disabled:!t.apiKey}];let a={};return"nominatim"==t.geocoder&&(a={text:__("Nominatim is free but inaccurate. Consider using Mapbox or Google instead."),type:"warning"}),a.href="#toc-picking-a-geocoder",p(o.Option,{title:__("Geocoder")},p(o.Radios,{options:e,checked:t.geocoder,onChange:e=>u({geocoder:e}),help:a}))}(),"leaflet"==t.engine&&function(){const e=p(b,{isSecondary:!0,href:"https://account.mapbox.com/access-tokens/",target:"_blank"},__("Get an Access Token"));return p(o.Option,{title:__("Mapbox access token")},p("div",{className:"mapp-option-mapbox"},p(o.Input,{name:"mapbox",value:t.mapbox,onChange:e=>{u({mapbox:e}),u({geocoder:e?"mapbox":"nominatim"})},placeholder:__("Enter token to use Mapbox"),size:50}),e),p("div",{className:"mapp-help-text"},__("Mapbox makes Leaflet maps look great and provides an excellent geocoder.")))}(),function(){const e=p(b,{isSecondary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key",target:"_blank"},__("Get an API Key"));return p(o.Option,{title:__("Google API key"),className:"mapp-option-apikey"},p(o.Input,{name:"apiKey",value:t.apiKey,onChange:e=>{u({apiKey:e})},placeholder:"google"==t.engine?__("Enter API key to use Google maps"):__("Enter API key to use Google geocoder"),size:50}),e)}()),p(o.Section,{title:__("Map Settings")},p(o.Option,{title:__("Automatic display")},p(o.Radios,{options:[{value:"",label:__("None")},{value:"top",label:__("Top of post")},{value:"bottom",label:__("Bottom of post")}],checked:t.autodisplay,onChange:e=>u({autodisplay:e})})),p(o.Option,{title:__("Map alignment")},p(o.Radios,{options:[{value:"",label:__("Default")},{value:"center",label:__("Center")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],checked:t.alignment,onChange:e=>u({alignment:e})})),p(o.Option,{title:__("Directions")},p(o.Radios,{checked:t.directions,options:[{value:"google",label:"Google"},{value:"inline",label:__("Inline")}],onChange:e=>u({directions:e})})),p(o.Option,{title:__("Mini width")},p(o.Input,{value:t.mini,onChange:e=>u({mini:e}),size:3,label:__("Width (px) to use map/list toggle buttons")})),"leaflet"==mappl10n.options.engine&&p(o.Option,{title:__("Scroll wheel zoom")},p(o.Checkbox,{checked:t.scrollWheel,label:__("Enable map zoom with mouse scroll wheel"),onChange:e=>u({scrollWheel:e})}))),p(o.Section,{title:__("POIs")},p(o.Option,{title:__("Default zoom")},p(o.Select,{label:__("Default zoom when displaying a single POI"),value:t.poiZoom,options:_.map([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],(e=>({value:e,label:e}))),onChange:e=>u({poiZoom:e})})),p(o.Option,{title:__("Hover")},p(o.Checkbox,{checked:t.tooltips,label:__("Open POIs on hover"),onChange:e=>u({tooltips:e})})),p(o.Option,{title:__("Open first POI")},p(o.Checkbox,{checked:t.initialOpenInfo,onChange:e=>u({initialOpenInfo:e}),label:__("Open first POI when a map is displayed")})),p(o.Option,{title:__("Travel lines")},p(o.Checkbox,{label:__("Connect POIs with lines"),checked:t.lines,onChange:e=>u({lines:e})})),function(){const e=e=>u({lineOpts:{...t.lineOpts,...e}}),a=t.lineOpts,i=p(o.Select,{label:__("Icon"),onChange:t=>{e(t?{icons:[{icon:{path:t}}]}:{icons:null})},options:[{value:0,label:__("Circle")},{value:1,label:__("Arrow")},{value:2,label:__("Open arrow")}],placeholder:__("None"),value:a.icons?a.icons[0].icon.path:null}),s=p(o.Checkbox,{label:__("Geodesic (curved) lines"),checked:!!a.geodesic,onChange:t=>e({geodesic:t})}),l=p(o.Checkbox,{label:__("Animate icon"),checked:!!a.animate,onChange:t=>e({animate:t})});return p(o.Option,{title:__("Travel line options"),className:"mapp-option-line-options"},p(o.Control,{labelRight:__("Color")},p(n.MappColorPicker,{color:a.color,weight:a.weight,opacity:a.opacity,isExtended:!0,onChange:t=>e(t)})),"google"==t.engine&&s,"google"==t.engine&&i,"google"==t.engine&&l)}()),p(o.Section,{title:__("POI List")},p(o.Option,{title:__("Display")},p(o.Checkbox,{checked:t.poiList,label:__("Show a list of POIs with each map"),onChange:e=>u({poiList:e})})),p(o.Option,{title:__("Position")},p("div",{className:"mapp-option-poilist-radios"},p(o.Radios,{checked:t.layout,options:[{value:"left",label:__("Left of map")},{value:"inline",label:__("Below map")}],onChange:e=>u({layout:e})}))),"left"==t.layout&&p(o.Option,{title:__("Initial open")},p("div",{className:"mapp-option-poilist-open"},p(o.Checkbox,{checked:t.poiListOpen,label:__("Open list when map is displayed"),onChange:e=>u({poiListOpen:e})}))),p(o.Option,{title:__("Paging")},p("div",{className:"mapp-option-poilist-page-size"},p(o.Input,{labelRight:__("POIs per page"),max:999,min:1,onChange:e=>u({poiListPageSize:e}),size:3,type:"number",value:t.poiListPageSize}))),p(o.Option,{title:__("Sort")},p(o.Checkbox,{checked:t.sort,label:__("Sort POI list by title"),onChange:e=>u({sort:e})}))),p(o.Section,{title:__("Styled Maps")},p(o.Option,{title:__("Default style")},p("div",{className:"mapp-option-style"},p(r.m,{selected:t.style,onChange:e=>{u({style:e}),mappl10n.options.style=e}}),p("div",null,__('Replace the default "roadmap" or "streets" style'))))),mappl10n.options.pro&&p(o.Section,{title:__("Icons")},p(o.Option,{title:__("Default icon")},p(i.MappIconPicker,{iconid:t.defaultIcon,onChange:e=>{mappl10n.options.defaultIcon=e,u({defaultIcon:e})}})),p(o.Option,{title:__("Icon directory")},p("code",null,t.helpers.icon_directory)),p(o.Option,{title:__("Highlight selected POI")},p(o.Radios,{checked:t.highlight,options:[{value:"",label:__("None")},{value:"circle",label:__("Circle")},{value:"scale",label:__("Scale")},{value:"icon",label:__("Icon")}],onChange:e=>u({highlight:e})}),"icon"==t.highlight&&p(i.MappIconPicker,{defaultIcon:t.defaultIcon,iconid:t.highlightIcon,onChange:e=>u({highlightIcon:e})})),function(){let e=t.iconScale&&Array.isArray(t.iconScale)?[...t.iconScale]:[0,0];return p(o.Option,{title:__("Icon size")},p(o.Input,{min:0,max:64,onChange:t=>{t<=64&&(e[0]=t>0?t:"",u({iconScale:e}))},size:3,type:"number",value:e[0]?e[0]:""}),p("span",null," X "),p(o.Input,{min:0,max:64,onChange:t=>{t<=64&&(e[1]=t>0?t:"",u({iconScale:e}))},size:3,type:"number",value:e[1]?e[1]:""}),p("span",null," (px) "))}(),function(){let e=k(t.helpers.taxonomies);e.unshift({value:"post_type",label:__("Post type")});const a=f((e=>{if("post_type"==t.autoicons.key)return k(t.helpers.post_types);const a=wp.data.select("core").getEntityRecords("taxonomy",t.autoicons.key,{per_page:-1,_fields:"id,name,slug"});return a?a.map((e=>({value:e.slug,label:e.name}))):[]}),[t.autoicons.key]);return p(o.Option,{title:__("Automatic icons")},p(o.Select,{label:__('Be sure to set "Show in REST API" for custom taxonomies'),value:t.autoicons?t.autoicons.key:null,options:e,onChange:e=>{let a=t.autoicons?{...t.autoicons}:[];a.key=e,a.values=[],u({autoicons:a})},placeholder:""}),p(o.MappGrid,{cols:[{id:"key",label:__("Key"),type:"select",options:a},{id:"value",label:__("Icon"),type:"icon"}],data:t.autoicons.values,onChange:e=>{let a=t.autoicons?{...t.autoicons}:[];a.values=e,u({autoicons:a})}}))}()),p(o.Section,{title:__("Clustering")},p(o.Option,{title:__("Clustering")},p(o.Checkbox,{checked:t.clustering,label:__("Enable marker clustering"),onChange:e=>u({clustering:e})})),function(){let e=t.clusteringOptions?t.clusteringOptions:{};const a=(t,a)=>{e[t]=a,u({clusteringOptions:e})};if("google"==t.engine){const t="https://github.com/googlemaps/v3-utility-library/blob/3fca406/packages/markerclustererplus/src/markerclusterer.ts",n=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return p("div",{className:"mapp-option-clustering-options"},p(o.Option,{title:__("Max zoom")},p(o.Select,{help:{href:t},label:p(c,null,__("Disable clustering at zoom"),p("code",null,"maxZoom")),onChange:e=>a("maxZoom",e),options:_.map(n,(e=>({value:e,label:e}))),placeholder:__("None"),value:e.maxZoom})))}{const t="https://github.com/Leaflet/Leaflet.markercluster#all-options",n=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return p("div",{className:"mapp-option-clustering-options"},p(o.Option,{title:__("Max zoom")},p(o.Select,{help:{href:t},label:p(c,null,__("Disable clustering at zoom"),p("code",null,"disableClusteringAtZoom")),onChange:e=>a("disableClusteringAtZoom",e),options:_.map(n,(e=>({value:e,label:e}))),placeholder:__("Auto"),value:e.disableClusteringAtZoom})),p(o.Option,{title:__("Spiderfy")},p(o.Checkbox,{checked:e.spiderfyOnMaxZoom,help:{href:t},label:p(c,null,__("Spiderfy"),p("code",null,"spiderfyOnMaxZoom")),onChange:e=>a("spiderfyOnMaxZoom",e)})))}}()),mappl10n.options.pro&&p(o.Section,{title:__("Mashups")},function(){const e=[{value:"poi",label:__("Open popup")},{value:"post",label:__("Open post")},{value:"postnew",label:__("Post in new tab")},{value:"postmodal",label:__("Post in modal")}];return p(o.Option,{title:__("Marker click")},p(o.Radios,{checked:t.mashupClick,options:e,onChange:e=>u({mashupClick:e})}))}(),p(o.Option,{title:__("Popup content")},p(o.Radios,{checked:t.mashupBody,options:[{value:"poi",label:__("POI title + body + images")},{value:"post",label:__("Post title + excerpt + featured image")}],onChange:e=>u({mashupBody:e})})),p(o.Option,{title:__("KMLs")},p(o.Checkbox,{checked:t.mashupKml,label:__("Include KML POIs in mashups"),onChange:e=>u({mashupKml:e})}))),mappl10n.options.pro&&p(o.Section,{title:__("Search")},p(o.Option,{title:__("Search")},p(o.Checkbox,{checked:t.search,label:__("Enable search for mashups"),onChange:e=>u({search:e})})),p(o.Option,{title:__("Search radius")},p(o.Select,{help:{href:"https://mappresspro.com/mappress-documentation/#toc-mashup-search"},label:__("Minimum search radius (km)"),value:t.radius,options:_.map([1,5,10,15,25,50,75,100,200,300],(e=>({value:e,label:e}))),onChange:e=>u({radius:e})})),p(o.Option,{title:__("Search country")},p(o.Select,{label:__("Country code for searches"),value:t.country,options:_.map(["","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CK","CR","HR","CU","CW","CY","CZ","CD","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","CI","JM","JP","JE","JO","KZ","KE","KI","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","KP","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","CG","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","VI","UG","UA","AE","GB","US","UM","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"],(e=>({value:e,label:e}))),onChange:e=>u({country:e}),help:{href:"https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements"}})),mappl10n.options.ssl?p(o.Option,{title:__("User location")},p(o.Checkbox,{checked:t.userLocation,label:__("Show user location on map"),onChange:e=>u({userLocation:e})})):null,function(){if("google"!=t.engine)return p(o.Option,{title:__("Bounding box")},p(o.Input,{onChange:e=>u({searchBox:e}),help:{text:__("Restrict searches to a bounding box (optional)"),href:"https://mappresspro.com/mappress-documentation/#toc-mashup-search"},placeholder:"SW lon, SW lat, NE lng, NE lat",size:45,value:t.searchBox}))}()),mappl10n.options.pro&&p(o.Section,{title:__("Mashup filters")},p(o.Option,{title:__("Filters position")},p(o.Radios,{options:[{value:"top",label:__("Top")},{value:"list",label:__("POI list")}],checked:t.filtersPos,onChange:e=>u({filtersPos:e})})),function(){const e=[{name:"post",label:__("Posts")},{name:"user",label:__("Users")}];return p(o.Option,{className:"mapp-option-filters",title:__("Filters")},p(o.MappTabs,{tabs:e,onRender:e=>p(o.MappCrudList,{data:t.filters&&t.filters[e]?t.filters[e]:[],isDraggable:!0,onChangeData:a=>{let o={...t.filters};o[e]=a,u({filters:o})},onRender:a=>function(e){let a,{otype:n,row:i,rowId:s,onChange:l,onDelete:r,...c}=e,m=k(t.helpers.taxonomies);a="user"==n?[{label:__("Role"),value:"role"}]:[{label:__("Post type"),value:"post"},{label:__("Text search"),value:"text"},{label:"──────────",value:"",disabled:!0},...m];const d=function(e){const t=_.findWhere(a,{value:e.key});return t?t.label:__("New filter")},u="text"==i.key?[{value:"input",label:__("Input")}]:[{value:"checkbox",label:__("Checkboxes")},{value:"radio",label:__("Radio buttons")},{value:"select",label:__("Select")}];return p(o.MappExpand,{actions:p("div",null,p(b,{icon:"trash",onClick:()=>r(),title:__("Delete")})),className:"mapp-option-filter",initialOpen:!i.key,showToggle:!0,title:d(i)},p("div",{className:"mapp-option-filter-row"},p(o.Select,{labelTop:__("Filter type"),options:a,onChange:e=>l({key:e,format:"text"==e?"input":"checkbox"}),placeholder:"",value:i.key?i.key:""}),p(o.Select,{onChange:e=>l({format:e}),labelTop:__("Format"),options:u,placeholder:"",value:i.format?i.format:""}),p(o.Input,{labelTop:__("Label"),placeholder:d(i),value:i.label,onChange:e=>l({label:e})}),"post"!=i.key&&"meta"!=i.key&&"text"!=i.key&&p(o.Select,{labelTop:__("Sort"),value:i.sort,options:[{value:"name",label:__("Name")},{value:"slug",label:__("Slug")}],onChange:e=>l({sort:e})})),i.key&&"meta"!=i.key&&"text"!=i.key&&p("div",{className:"mapp-option-filter-row mapp-option-filter-tokens"},p(v,{label:__("Include term slugs"),value:i.include,onChange:e=>l({include:e}),__experimentalShowHowTo:!0}),p(v,{label:__("Exclude term slugs"),value:i.exclude,onChange:e=>l({exclude:e})})))}({otype:e,...a})})}))}()),mappl10n.options.pro&&p(o.Section,{title:__("Templates")},p(o.Option,{title:__("Custom templates")},p(o.MappTemplateEditor)),p(o.Option,{title:__("Directions link")},p(o.Checkbox,{checked:t.directionsPopup,label:__("Show in popup"),onChange:e=>u({directionsPopup:e})}),p(o.Checkbox,{checked:t.directionsList,label:__("Show in list"),onChange:e=>u({directionsList:e})})),p(o.Option,{title:__("Thumbnails")},p(o.Select,{label:__("Popups"),onChange:e=>u({thumbsPopup:e}),options:[{value:"",label:__("None")},{value:"top",label:__("Top")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],value:t.thumbsPopup}),p(o.Select,{label:__("POI lists"),onChange:e=>u({thumbsList:e}),options:[{value:"",label:__("None")},{value:"top",label:__("Top")},{value:"left",label:__("Left")},{value:"right",label:__("Right")}],value:t.thumbsList})),p(o.Option,{title:__("Popup thumbnail size")},p(o.Select,{onChange:e=>u({thumbSize:e}),options:k(t.helpers.thumbnail_sizes),value:t.thumbSize}),p("span",null," "+__("or")+" "),p(o.Input,{value:t.thumbWidth,onChange:e=>u({thumbWidth:e}),type:"number",min:0,max:9999}),p("span",null," X "),p(o.Input,{value:t.thumbHeight,onChange:e=>u({thumbHeight:e}),type:"number",min:0,max:9999}),p("span",null," (px) "))),p(o.Section,{title:__("Localization")},function(){const e="leaflet"==t.engine?"https://en.wikipedia.org/wiki/ISO_639-1":"http://code.google.com/apis/maps/faq.html#languagesupport";return p(o.Option,{title:__("Language")},p(o.Select,{value:t.language,options:k(t.helpers.languages),onChange:e=>u({language:e}),help:{href:e,text:__("Language for searches and Google map controls")}}))}(),p(o.Option,{title:__("Directions server")},p(o.Input,{value:t.directionsServer,onChange:e=>u({directionsServer:e}),size:25}))),mappl10n.options.pro&&p(o.Section,{title:__("Generate Maps from Custom Fields")},function(){const e=[{name:"post",label:__("Posts")},{name:"user",label:__("Users")}];return p(o.Option,{className:"mapp-option-metakeys",title:__("Field mapping")},p(o.MappTabs,{tabs:e,onRender:e=>p(o.MappGrid,{cols:[{id:"key",label:__("Map field"),type:"select",options:k(t.helpers.meta_fields)},{id:"value",label:__("post"==e?"Post custom field":"User custom field"),type:"combobox",options:k("post"==e?t.helpers.meta_keys:t.helpers.meta_keys_user)}],data:t.metaKeys[e],onChange:a=>{let o={...t.metakeys};o[e]=a,u({metaKeys:o})}})}))}(),p(o.Option,{title:__("Post types")},p(o.Checkboxes,{values:t.postTypes,options:k(t.helpers.post_types),onChange:e=>u({postTypes:e})})),p(o.Option,{title:__("Overwrite")},p(o.Checkbox,{label:__("Overwrite maps on publish/save"),checked:t.metaSyncSave,onChange:e=>{u({metaSyncSave:e})}})),"google"==t.engine&&p(o.Option,{title:__("Google Server API key")},p(o.Input,{name:"apiKeyServer",value:t.apiKeyServer,onChange:e=>u({apiKeyServer:e}),size:50,help:{text:__("Server API key for geocoding. Only required if client key is restricted by referrer."),href:"https://mappresspro.com/mappress-documentation/#toc-google-api-keys"}})),p(l.MappOptionsMeta,{errors:t.helpers.geocoding_errors,postEdit:t.helpers.post_edit,userEdit:t.helpers.user_edit})),mappl10n.options.pro&&mappl10n.options.acfActive&&p(o.Section,{title:__("Frontend Forms")},p(o.Option,{title:__("Advanced Custom Fields")},p(o.Input,{className:"mapp-option-acf",name:"acf",value:t.acf,onChange:e=>{u({acf:e})},size:20}),__("ACF map field to include on MapPress mashups"),p(o.Help,{text:__("To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section"),href:"https://mappresspro.com/mappress-documentation/#toc-frontend-forms"}))),p(o.Section,{title:__("Miscellaneous")},p(o.Option,{title:__("Map sizes")},p(o.MappGrid,{cols:[{id:"width",label:__("Width")+" (px, %, vw)",size:4},{id:"height",label:__("Height")+" (px, %, vh)"}],data:t.sizes,onChange:(e,t)=>u({sizes:e,size:t}),selectionColumn:"rowid",selected:t.size})),t.helpers.jetpack?null:p(o.Option,{title:__("Scripts")},p(o.Checkbox,{checked:t.footer,label:__("Output scripts in footer"),onChange:e=>u({footer:e}),help:{text:__("Disable footer scripts if maps are output using AJAX")}})),p(o.Option,{title:"WPML"},p(o.Checkbox,{checked:t.wpml,label:__("Copy maps when overwriting a translation"),onChange:e=>u({wpml:e}),help:{href:"https://mappresspro.com/mappress-documentation#wpml"}})),p(o.Option,{title:__("Compatibility")},p("div",null,p(o.Checkbox,{checked:t.deregister,label:__("Prevent loading Google Maps multiple times"),onChange:e=>u({deregister:e})})),p("div",null,p(o.Checkbox,{checked:t.iframes,label:__("Output maps in iframes for better compatibility"),onChange:e=>u({iframes:e})})))),p("div",{className:"mapp-options-toolbar"},p(b,{isBusy:t.isSaving,className:"mapp-options-save",type:"submit",isPrimary:!0},__("Save")),p(b,{isBusy:t.isSaving,isSecondary:!0,onClick:()=>C("reset")},__("Reset Defaults")))))}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-options-settings")&&wp.element.render(p(w,mappress_options_state),document.getElementById("mapp-options-settings"))}))},228:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Control:()=>b,Help:()=>y,Checkbox:()=>v,Checkboxes:()=>k,Datalist:()=>w,Input:()=>C,Radios:()=>N,Select:()=>S,Textarea:()=>O,Section:()=>M,Option:()=>P,MappGrid:()=>I,MappCrudList:()=>E,MappExpand:()=>z,MappTabs:()=>L,MappTemplateEditor:()=>T});var o=a(28),n=a(939);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{useSelect:d}=wp.data,{Button:u,Dashicon:h,Modal:g,TabPanel:f}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function b(e){let{className:t,help:a,type:o,...n}=e;const l=Array.isArray(n.children)?s:"label";let r="mapp-control";return o&&(r+=" mapp-control-"+o),t&&(r+=" "+t),i("div",{className:r},n.labelTop&&i("div",{className:"mapp-label-top"},n.labelTop),i(l,null,n.labelLeft&&i("span",null,n.labelLeft),n.children,(n.label||n.labelRight)&&i("span",null,n.label||n.labelRight)),a&&i(y,a))}function y(e){let t="mapp-help-text";e.type&&(t+=" mapp-help-"+e.type);let a=null;return e.href&&(a="#"==e.href.substr(0,1)?"https://mappresspro.com/mappress-documentation/"+e.href:e.href),i(s,null,a&&i("a",{className:"mapp-help-link",href:a,target:"_blank"},i(h,{icon:"editor-help"})),e.text&&i("div",{className:t},e.text))}function v(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(b,{type:"checkbox",...l},i("input",{checked:void 0!==t&&t,className:a,disabled:o,onChange:e=>n(e.target.checked),type:"checkbox",value:s}))}function k(e){let{label:t,onChange:a,options:o,values:n,...s}=e;return i(b,{type:"checkboxes",...s},_.map(o,((e,t)=>{let o=n?n.indexOf(e.value):-1;return i(v,{key:t,label:e.label,value:e.value,checked:o>=0,disabled:e.disabled,onChange:t=>{let i=[...n];t&&-1==o&&a(i.concat(e.value)),!t&&o>=0&&(i.splice(o,1),a(i))}})})))}function w(e){let{className:t,list:a,onChange:o,options:n,value:s,...l}=e;return i(b,{type:"select",...l},i("span",{className:t},i("input",{list:a,value:null!=s?s:"",onChange:e=>o(e.target.value)}),i("datalist",{id:a},_.map(n,((e,t)=>i("option",{key:t,value:e.value,disabled:e.disabled},e.label))))))}function C(e){let{autoFocus:t,disabled:a,max:o,min:n,name:s,onChange:l,placeholder:r,size:p,trim:c,type:m,value:d,...u}=e;return i(b,{type:"input",...u},i("input",{autoFocus:t,disabled:a,max:o,min:n,name:s,onChange:e=>{if(l){const t=c?e.target.value.trim():e.target.value;l(t)}},placeholder:r,size:p,type:m||"text",value:null!==d?d:""}))}const x=function(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(b,{type:"radio",...l},i("input",{checked:t,className:a,disabled:o,onChange:e=>n(e.target.value),type:"radio",value:s}))};function N(e){let{checked:t,label:a,onChange:o,options:n,...s}=e;return i(b,{type:"radios",...s},_.map(n,((e,a)=>{if(!e.hide)return i(x,{key:a,value:e.value,checked:t==e.value||null==t&&""==e.value,onChange:e=>o(e),disabled:e.disabled,label:e.label})})))}function S(e){let{className:t,onChange:a,options:o,placeholder:n,value:s,...l}=e,r=[...o];return void 0!==n&&r.unshift({value:"",label:n}),i(b,{type:"select",...l},i("select",{className:t,value:null!=s?s:"",onChange:e=>a(e.target.value)},_.map(r,((e,t)=>i("option",{key:t,value:e.value,disabled:e.disabled},e.label)))))}function O(e){let{className:t,onChange:a,...o}=e;return i(b,{type:"textarea",...o},i("textarea",{className:t,onChange:e=>a(e.target.value)}))}function M(e){let t=e.className?" "+e.className:"";return i("div",{className:"mapp-option-section"+t},i("h2",null,e.title),e.children)}function P(e){const t=e.className?"mapp-option "+e.className:"mapp-option";return i("div",{className:t},i("div",{className:"mapp-option-title"},e.title),i("div",{className:"mapp-option-value"},e.children))}function I(e){const[t,a]=m({dragging:null,dragover:null});function n(e){a((t=>({...t,...e})))}function s(a,o){let i=[...e.data];switch(a){case"add":let a={};_.map(e.cols,(e=>{a[e.id]=""})),i.push(a),e.onChange(i,e.selected);break;case"change":i[o.i][o.id]=o.value,e.onChange(i,e.selected);break;case"delete":let s;i.splice(o,1),s=o==e.selected?null:o<e.selected?e.selected-1:e.selected,e.onChange(i,s);break;case"select":n({selected:o}),e.onChange(i,o);break;case"sort":let l=t.dragging,r=l<o?o-1:o;i.splice(r,0,i.splice(l,1)[0]),e.onChange(i,r),n({dragover:null})}}return i("div",{className:e.className?"mapp-grid "+e.className:"mapp-grid"},e.data&&!!e.data.length&&i("div",{className:"mapp-grid-table"},function(){const t=e.selectionColumn?i("div",{className:"mapp-grid-cell",key:"select"},__("Default")):null,a=i("div",{className:"mapp-grid-cell",key:"actions"},"");return i("div",{className:"mapp-grid-header"},i("div",{className:"mapp-grid-row"},t,_.map(e.cols,(e=>i("div",{className:"mapp-grid-cell",key:e.id},e.label))),a))}(),i("div",{className:"mapp-grid-body"},_.map(e.data,((a,l)=>function(a,l){return i("div",{className:"mapp-grid-row"+(t.dragover==l?" mapp-dragover":""),draggable:!0,key:l,onDragOver:e=>e.preventDefault(),onDragStart:e=>n({dragging:l}),onDragEnter:e=>n({dragover:l}),onDragEnd:e=>n({dragging:null,dragover:null}),onDrop:e=>s("sort",l)},function(t,a){if(!e.selectionColumn)return null;let o,n;return"rowid"==e.selectionColumn?o=a:t[e.selectionColumn]?o=t[e.selectionColumn]:n=!0,"checkbox"===e.selectionType?i("div",{className:"mapp-grid-cell"},i(v,{value:o,checked:e.selected==o,disabled:n,onChange:e=>{s("select",e?o:null)}})):i("div",{className:"mapp-grid-cell"},i(x,{checked:e.selected==o,onChange:()=>s("select",o)}))}(a,l),_.map(e.cols,((t,a)=>i("div",{className:"mapp-grid-cell mapp-grid-cell-"+t.id,key:l+"-"+a},function(t,a){if(a.onRender)return a.onRender({id:a.id,value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});switch(a.type){case"combobox":return i(w,{list:a.id+"_"+t,options:a.options,value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});case"icon":return i(o.MappIconPicker,{iconid:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});default:return i(C,{size:e.data[t][a.size],value:e.data[t][a.id],onChange:e=>s("change",{i:t,id:a.id,value:e})});case"select":return i(S,{value:e.data[t][a.id],options:a.options,onChange:e=>s("change",{i:t,id:a.id,value:e}),placeholder:""})}}(l,t)))),function(e){return i("div",{className:"mapp-grid-cell",key:"delete"},i(u,{icon:"trash",onClick:()=>s("delete",e)}))}(l))}(a,l))))),i("div",{className:"mapp-grid-toolbar"},i(u,{isSecondary:!0,onClick:()=>s("add")},__("Add"))))}function E(e){let{data:t,isDraggable:a,onAdd:o,onChangeData:n,onRender:s,...r}=e;const[p,c]=m({dragging:null,dragover:null,isDraggable:!1});function d(e){c((t=>({...t,...e})))}function h(e,a,i){let s=Array.isArray(t)?[...t]:[];switch(e){case"add":const e=o?o():{};s.push(e),n(s);break;case"change":s[i]={...t[i],...a},n(s);break;case"delete":confirm(mappl10n.delete_prompt)&&(s.splice(a,1),n(s));break;case"sort":let l=p.dragging,r=l<a?a-1:a;s.splice(r,0,s.splice(l,1)[0]),n(s),d({dragover:null})}}return l((()=>{}),[]),i("div",{className:"mapp-crud-list"},_.map(t,((e,t)=>i("div",{className:"mapp-crud-row"+(p.dragover==t?" mapp-dragover":""),draggable:a,key:t,onDragOver:e=>e.preventDefault(),onDragStart:e=>d({dragging:t}),onDragEnter:e=>d({dragover:t}),onDragEnd:e=>d({dragging:null,dragover:null}),onDrop:e=>h("sort",t)},s({row:e,rowId:t,onChange:e=>h("change",e,t),onDelete:()=>h("delete",t)})))),i("div",{className:"mapp-crud-toolbar"},i(u,{isSecondary:!0,onClick:()=>h("add")},__("Add"))))}function z(e){let{actions:t,initialOpen:a,showToggle:o,subTitle:n,title:s,...l}=e;const[r,p]=m({isOpen:!o||a});function c(e,t){if("toggle"===e)o&&(a={isOpen:!r.isOpen},p((e=>({...e,...a}))));var a}let d="mapp-expand";return d+=r.isOpen?"":" mapp-expand-closed",d+=l.className?" "+l.className:"",i("div",{className:d},i("div",{className:"mapp-expand-header",onClick:()=>c("toggle")},i("div",null,s,n),o&&i("div",null,i(h,{icon:r.isOpen?"arrow-up":"arrow-down"}))),i("div",{className:"mapp-expand-body"},l.children),t&&i("div",{className:"mapp-expand-footer"},t))}function L(e){e={className:null,onRender:null,onSelect:null,initialTab:null,tabs:[],...e};const[t,a]=m({tab:e.initialTab?e.initialTab:e.tabs[0].name});function o(t){var o;o={tab:t},a((e=>({...e,...o}))),e.onSelect&&e.onSelect(t)}const{className:n="",style:s={}}=e;return i("div",{className:"mapp-tabs "+n,style:s},i("div",{className:"mapp-tabs-nav"},_.map(e.tabs,(e=>i("div",{className:e.name==t.tab?"mapp-tab mapp-active":"mapp-tab",key:e.name,onClick:()=>o(e.name)},e.label)))),i("div",{className:"mapp-tab-content"},e.onRender(t.tab)))}function T(e){const[t,a]=m({codeEditor:null,isOpen:!1,name:null,tab:"editor",template:null,tokens:null});function o(e){a((t=>({...t,...e})))}const l=p((e=>{if(null!=e){let a=wp.codeEditor.initialize(e);a.codemirror.setSize("auto","auto"),a.codemirror.setOption("readOnly","editor"!=t.tab),o({codeEditor:a})}}),[t.tab]);function r(){o({isOpen:!1})}function c(e){return"editor"==e?function(){const e=i("div",{className:"mapp-templates-tokens"},_.map(t.tokens,((e,a)=>i("code",{onClick:()=>function(e){let a=t.codeEditor.codemirror.getDoc(),o=a.getCursor();a.replaceRange("{{{poi."+e+"}}}",o)}(a),key:a,title:e},e))));return i(s,null,i("div",{className:"mapp-templates-path"},t.template.path),e,i("div",{className:"mapp-templates-editor"},i("textarea",{ref:l,defaultValue:t.template.content})))}():i(s,null,i("div",{className:"mapp-templates-standard"},i("textarea",{ref:l,defaultValue:t.template.standard})))}function d(){const e=t.template.name+" ("+(t.template.exists?__("Custom"):__("New"))+")";return i("div",{className:"mapp-templates-name"},e)}return i("div",{className:"mapp-templates"},function(){const e=[{name:"map-popup",label:__("Map popup")},{name:"map-item",label:__("Map list item")},{name:"mashup-popup",label:__("Mashup popup")},{name:"mashup-item",label:__("Mashup list item")},{name:"user-mashup-popup",label:__("User popup")},{name:"user-mashup-item",label:__("User list item")}];return i("div",{className:"mapp-templates-list"},_.map(e,((e,t)=>i("a",{href:"#",key:e.name,className:"mapp-templates-item",onClick:t=>{var a;t.preventDefault(),a=e.name,n.mappLib.ajax({method:"GET",data:{action:"mapp_tpl_get",name:a,nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status&&o({isOpen:!0,name:a,tab:"editor",template:e.data.template,tokens:e.data.tokens})}})}},e.label))))}(),t.isOpen&&t.template?i(g,{title:d(),className:"mapp-templates-modal",onRequestClose:()=>r(),shouldCloseOnClickOutside:!1},i(L,{className:"mapp-templates-tabs",onRender:e=>c(e),onSelect:e=>function(e){if("editor"!=e){let e={...t.template};e.content=t.codeEditor.codemirror.getValue(),o({template:e})}o({tab:e})}(e),tabs:[{name:"editor",label:__("Editor")},{name:"standard",label:__("Default")}]}),t.error&&i("div",{className:"mapp-templates-error"},t.error),i("div",{className:"mapp-templates-toolbar"},i("div",null,i(u,{isPrimary:!0,onClick:()=>function(){let e="editor"==t.tab?t.codeEditor.codemirror.getValue():t.template.content;n.mappLib.ajax({method:"POST",data:{action:"mapp_tpl_save",content:e,name:t.template.name,nonce:mappl10n.options.nonce},callback:function(e){e&&"OK"==e.status&&o({isOpen:!1,template:null,tokens:null})}})}()},__("Save")),i(u,{isSecondary:!0,onClick:()=>r()},__("Cancel"))),i("div",null,t.template.exists&&i(u,{isDestructive:!0,title:__("Reset template to default"),onClick:e=>{e.preventDefault(),confirm(mappl10n.delete_prompt)&&(n.mappLib.ajax({method:"POST",data:{action:"mapp_tpl_delete",name:t.template.name,nonce:mappl10n.options.nonce}}),o({isOpen:!1}))}},__("Reset"))))):null)}},597:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappOptionsMeta:()=>f});var o=a(228),n=a(939);const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:m}=wp.element,{Button:d,Dashicon:u,FormTokenField:h,Modal:g}=wp.components,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function f(e){e={errors:null,postEdit:null,userEdit:null,...e};const[t,a]=m({errors:e.errors?e.errors:[],isBusy:!1,isDone:!1,logs:[],otype:null,start:null});c(null);function r(e){a((t=>({...t,...e})))}function p(t){if(t)return i("div",{className:"mapp-option-geocode-log"},_.map(t,(t=>{let a="";return a="user"==t.otype?e.userEdit+"?user_id="+t.oid:e.postEdit+"?post="+t.oid+"&action=edit",i("div",{className:"mapp-option-geocode-log-row",key:t.oid},i("div",null,t.otype),i("div",null,t.oid),i("div",null,i("a",{href:a,target:"_blank"},t.title)),i("div",null,t.msg))})))}l((()=>{t.isDone&&r({isBusy:!1})}),[t.start,t.isDone]),l((()=>{null===t.start||t.isDone||n.mappLib.ajax({method:"POST",data:{action:"mapp_geocode",batch_size:5,nonce:mappl10n.options.nonce,otype:t.otype,start:t.start},callback:e=>{if(e&&"OK"==e.status){const a=e.data.logs.length<5;r({errors:e.data.errors,isBusy:!a,isDone:a,logs:t.logs.concat(e.data.logs),start:a?t.start:t.start+5})}}})}),[t.start,t.isDone]);const u=t.logs.length?t.logs.length:1;let h="";return t.isBusy?h=__("Geocoding... "+u):t.isDone&&(h=__("Done")),i(s,null,i(o.Option,{title:__("Geocoding")},i(d,{className:"mapp-option-geocode",disabled:t.isBusy,isBusy:t.isBusy,isSecondary:!0,onClick:()=>{t.isBusy||r({isDone:!1,isBusy:!0,errors:[],logs:[],otype:"post",start:0})}},__("Geocode posts")),h,i("div",{style:{fontStyle:"italic"}},__("For bulk geocoding (>100 items) online geocoding services are faster and less expensive.")),p(t.logs)),function(){const e=t.errors.length>0?p(t.errors):__("No errors");return i(o.Option,{title:__("Geocoding errors")},i("div",{className:"mapp-option-geocode-errors"},e))}())}},185:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappPicker:()=>C});var o=a(283),n=a(101),i=(a(939),a(27)),s=a(78);window.mapp=window.mapp||{};const l=wp.element.createElement,{select:r}=wp.data,{Fragment:p,useEffect:c,useLayoutEffect:m,useRef:d,useState:u}=wp.element,{BaseControl:h,Button:g,Dashicon:f,Icon:b,Modal:y,PanelBody:v,Spinner:k,TextControl:w}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function C(e){e={context:null,filter:null,mapid:null,mode:null,onClose:null,onInsert:null,onTrash:null,...e};const[t,a]=u({counts:{all:null,trashed:null,object:null},filter:"all",isFetchingItems:!0,items:null,mode:e.mode?e.mode:"list",mapid:e.mapid?e.mapid:null,page:1,search:""}),{addSnackbar:p,renderSnackbar:m}=(0,s.D)(),h=d(null),v=d(null),C=d(null);function x(e){a((t=>({...t,...e})))}function N(e,t,a){mapp.store.mutateMap(e,{otype:"post",oid:t,postTitle:a})}function S(){e.onClose()}function O(e){"trashed"!=t.filter&&x({mode:"edit",mapid:e})}function M(a){let n,i=a.mapid==t.mapid;n=a.title?a.title:__("Untitled");let s,c=function(t){let a;return a="map"==e.context||"mashup"==e.context&&"post"==t.otype&&t.oid==mappl10n.options.oid?r("core/editor").getEditedPostAttribute("title"):t.post_title,a=a||__("Untitled"),"post"==t.otype&&t.oid>0&&t.oid==mappl10n.options.oid&&(a=__("Current post")),"post"==t.otype&&t.oid>0?t.oid==mappl10n.options.oid?a:l("a",{href:mappl10n.options.editurl+"?post="+t.oid+"&action=edit",target:"_blank",title:__("Edit post")},a):__("Unattached")}(a);s="trashed"==t.filter?l("div",{className:"mapp-pick-actions",onClick:e=>e.stopPropagation()},l("a",{href:"#",key:"restore",onClick:()=>{return e=a.mapid,mapp.store.mutateMap(e,{status:""}),void p(__("Map restored"));var e}},__("Restore")),l("a",{href:"#",className:"mapp-destructive",key:"delete",onClick:()=>{return e=a.mapid,confirm(mappl10n.delete_map_prompt)&&(mapp.store.destroyMap(e),p(__("Map deleted"))),void(v.current&&v.current.focus());var e}},__("Delete Permanently"))):l("div",{className:"mapp-pick-actions",onClick:e=>e.stopPropagation()},l("a",{href:"#",key:"edit",onClick:e=>{e.stopPropagation(),O(a.mapid)}},__("Edit")),"library"!=e.context&&l("a",{href:"#",key:"insert",onClick:t=>{return o=a.mapid,void e.onInsert(o);var o}},__("Insert into post")),l("a",{href:"#",key:"duplicate",onClick:e=>{return t=a.mapid,void mapp.store.duplicateMap(t,(e=>{p(__("Map copied")),x({mapid:e.mapid}),h.current&&(h.current.scrollTop=0)}));var t}},__("Copy")),l("a",{href:"#",className:"mapp-destructive",key:"trashed",onClick:o=>{return n=a.mapid,mapp.store.mutateMap(n,{status:"trashed"}),p(__("Map moved to trash")),void(t.mapid&&n==t.mapid&&e.onTrash&&e.onTrash());var n}},__("Trash")));let m=null;return m="post"==a.otype&&a.oid>0?l("a",{href:"#",onClick:()=>{return e=a.mapid,void mapp.store.mutateMap(e,{oid:0});var e}},__("Detach")):"library"==e.context?l(o.MappAttachControl,{onChange:(e,t)=>N(a.mapid,e,t)},__("Attach")):l("a",{href:"#",onClick:()=>N(a.mapid,mappl10n.options.oid,null)},__("Attach")),l("div",{className:"mapp-pick-item"+(i?" mapp-selected":""),key:a.mapid+a.otype+a.oid,ref:i?C:null},l("div",{className:"mapp-pick-col-mapid",onClick:()=>O(a.mapid)},a.mapid),l("div",{className:"mapp-pick-col-title",onClick:()=>O(a.mapid)},l("div",null,n),l("div",null,s)),l("div",{className:"mapp-pick-col-post-title"},c,l("div",null,m)),"library"==e.context&&l("div",{className:"mapp-pick-col-shortcode"},l(g,{isSmall:!0,isSecondary:!0,onClick:e=>{e.stopPropagation(),e.preventDefault(),function(e){const t=document.createElement("input");document.body.appendChild(t),t.value='[mappress mapid="'+e+'"]',t.select(),document.execCommand("copy"),t.remove(),p(__("Shortcode copied"))}(a.mapid)}},__("Copy"))))}function P(e){return e&&e.length?l(i.MappPaginate,{count:e?e.length:0,onChange:e=>function(e){x({page:e}),h.current&&(h.current.scrollTop=0)}(e),page:t.page,pageSize:20}):null}c((()=>{const e=e=>{if(!e.isFetchingItems){let t={all:0,object:0,trashed:0};_.map(e.items,(e=>{"trashed"==e.status?t.trashed++:(t.all++,"post"==e.otype&&e.oid==mappl10n.options.oid&&t.object++)})),x({counts:t})}x({isFetchingItems:e.isFetchingItems,isSavingMap:e.isSavingMap,items:e.items})};return mapp.store.subscribe(e),()=>mapp.store.unsubscribe(e)})),c((()=>{mapp.store.fetchItems((t=>{const a=e.mapid?t.find((t=>t.mapid==e.mapid)):null;a&&("trashed"==a.status?x({filter:"trashed"}):"post"==a.otype&&a.oid==mappl10n.options.oid&&x({filter:"object"}))}))}),[]),c((()=>{x({page:1})}),[t.filter,t.search]),c((()=>{"list"==t.mode&&v.current&&v.current.focus()}),[t.mode]);const I=_.filter(t.items,(function(e){if("trashed"==t.filter)return"trashed"==e.status;if("trashed"==e.status)return!1;if("object"==t.filter&&("post"!=e.otype||e.oid!=mappl10n.options.oid))return!1;var a=t.search.toLowerCase();return!a||(e.mapid.indexOf(a)>=0||(!!(e.post_title&&e.post_title.toLowerCase().indexOf(a)>=0)||!!(e.title&&e.title.toLowerCase().indexOf(a)>=0)))}));let E=l("div",{className:"mapp-list-panel"},l("div",{className:"mapp-gt-modal-header"},l("div",{className:"mapp-gt-modal-header-title"},l("h1",null,__("Maps")),l(g,{isPrimary:!0,onClick:()=>{x({mode:"edit",mapid:null})}},__("Add New"))),l(g,{onClick:()=>S(),icon:"no-alt"})),function(){let a=[{label:__("All"),value:"all"},{label:__("Attached to post"),value:"object",hide:"library"==e.context},{label:__("Trash"),value:"trashed"}];return l("div",{className:"mapp-pick-filter-wrapper"},l("div",{className:"mapp-pick-filter-tabs"},_.map(a,((e,a)=>{const o="mapp-pick-filter-tab"+(t.filter==e.value?" mapp-active":""),n=t.counts[e.value];if(!e.hide)return l("div",{className:o,href:"#",key:a,onClick:()=>function(e){x({filter:e})}(e.value)},e.label,null!=n&&l("span",{className:"mapp-pick-filter-count"},n))}))),function(){if("trashed"!=t.filter)return l("div",{className:"mapp-pick-search-wrapper"},l(w,{ref:v,className:"mapp-pick-search",tabIndex:1,placeholder:__("post title, map title, or map id"),onChange:e=>x({search:e}),size:50,value:t.search}),l(b,{icon:"search"}),(t.isFetchingItems||t.isAttaching&&"library"!=e.context)&&l(k,null))}())}(),function(a){if(a){const e=20*(t.page-1),o=e+20;a=a.slice(e,o)}let o="";return o=t.isFetchingItems?null:a.length?_.map(a,M):l("div",{className:"mapp-pick-message"},__("No maps found")),l("div",{className:"mapp-pick-items-section"},l("div",{className:"mapp-pick-items",ref:h},function(){let t=[{id:"mapid",className:"mapp-pick-col-mapid",label:__("ID"),sortable:!0},{id:"title",className:"mapp-pick-col-title",label:__("Map title"),sortable:!0},{id:"post_title",className:"mapp-pick-col-post-title",label:__("Attached to"),sortable:!0}];"library"==e.context&&t.push({id:"shortcode",className:"mapp-pick-col-shortcode",label:__("Shortcode"),sortable:!1});return l("div",{className:"mapp-pick-items-header"},_.map(t,(e=>l("div",{className:e.className,onClick:()=>{return t=e.id,void mapp.store.setSort({sortBy:t,sortAsc:mapp.store.state.sortBy!=val||!mapp.store.state.sortAsc});var t},key:e.id},e.label,e.sortable&&mapp.store.state.sortBy==e.id&&l(f,{icon:mapp.store.state.sortAsc?"arrow-up":"arrow-down"}),e.sortable&&mapp.store.state.sortBy!=e.id&&l(f,{icon:"leftright"})))))}(),o))}(I),function(e){return l("div",{className:"mapp-pick-toolbar"},P(e))}(I)),z=null;if("edit"==t.mode){let a=l("div",{className:"mapp-edit-panel"},l(n.MappEdit,{context:e.context,mapid:t.mapid,onClose:()=>{"edit"==e.mode?e.onClose():x({mode:"list"})},onSave:t=>function(t){"edit"==e.mode?e.onClose(t.mapid):(x({mode:"list",mapid:t.mapid}),p(sprintf(__("Map %d saved"),t.mapid)))}(t)}));z="library"==e.context?l(y,{className:"mapp-gt-modal",isDismissible:!1},a):a}const L="mapp-pick mapp-mode-"+t.mode+" mapp-context-"+e.context;return"library"==e.context?l("div",{className:L},E,z,m()):l(y,{className:"mapp-gt-modal "+L,isDismissible:"list"==t.mode,onRequestClose:()=>S(),shouldCloseOnEsc:"list"==t.mode,shouldCloseOnClickOutside:"list"==t.mode},E,z,m())}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-library")&&(mappl10n.options.otype="post",mappl10n.options.oid=0,wp.element.render(l(C,{context:"library"}),document.getElementById("mapp-library")))}))},885:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappSettings:()=>y});var o=a(614),n=a(78),i=a(228);window.mapp=window.mapp||{};const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:m}=wp.element,{BaseControl:d,Button:u,ButtonGroup:_,Dashicon:h,Dropdown:g,Panel:f,PanelBody:b}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function y(e){e={context:null,map:null,onChange:null,center:null,height:null,mapid:null,poiList:null,search:null,title:null,width:null,zoom:null,...e};const[t,a]=m({});const{addSnackbar:r,renderSnackbar:p}=(0,n.D)();function c(t,a){let o={};null!=a&&(o.height=a),null!=t&&(o.width=t),(o.width||o.height)&&(e.map.setSize(o),e.onChange(o))}const d="mce"!=e.context&&"library"!=e.context;return s("div",{className:"mapp-settings"},s(b,{title:__("Map settings"),initialOpen:d},"map"==e.context&&function(){const t=e.map.title?e.map.title:__("Untitled");return s("div",{className:"mapp-settings-row mapp-settings-title"},s(i.Control,{labelTop:__("Title")},t),s(i.Control,{labelTop:__("Map ID")},e.map.mapid))}(),function(){if("mashup"==e.context)return s("div",{className:"mapp-settings-row mapp-style-toggle"},s("div",null,__("Style")),s(o.m,{map:e.map,selected:e.map.mapTypeId,onChange:t=>function(t){e.map&&e.map.set({mapTypeId:t}),e.onChange({mapTypeId:t})}(t)}))}(),function(){mappl10n.options.sizes[mappl10n.options.size]?mappl10n.options.sizes[mappl10n.options.size]:mappl10n.options.sizes[0];var t=mappl10n.options.sizes.map(((e,t)=>({label:e.width+" X "+e.height,height:e.height,width:e.width,value:t+1})));t.unshift({height:"",label:__("Default"),value:0,width:""}),t.push({label:__("Custom"),value:"custom",disabled:!0});for(var a="custom",o=0;o<t.length-1;o++)t[o].width==e.width&&t[o].height==e.height&&(a=o);return s(l,null,s("div",{className:"mapp-settings-row"},s(i.Select,{className:"mapp-settings-dims-select",help:"",labelTop:__("Size"),value:a,options:t,onChange:e=>c(t[e].width,t[e].height)})),s("div",{className:"mapp-settings-row"},s(i.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vw")},labelTop:__("Width"),onChange:e=>c(e,null),value:e.width?e.width:""}),s(i.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vh")},labelTop:__("Height"),onChange:e=>c(null,e),value:e.height?e.height:""})))}(),s("div",{className:"mapp-settings-row"},s(i.Control,{className:"mapp-settings-viewport",labelTop:__("Center/Zoom")},s(_,{label:__("Center/Zoom")},s(u,{onClick:()=>(e.map.center=e.map.zoom=null,e.map.recenter(),r(__("Viewport automatic")),void e.onChange({center:void 0,zoom:void 0})),isPressed:!e.center,isSmall:!0},__("Automatic")),s(u,{onClick:()=>function(){let t=e.map.getCenter().toJSON();e.map.center=t,e.map.zoom=e.map.getZoom(),r(__("Viewport set")),e.onChange({center:t.lat+","+t.lng,zoom:e.map.getZoom()})}(),isPressed:e.center,isSmall:!0},__("Set"))))),void 0,p()))}},78:(e,t,a)=>{"use strict";a.d(t,{D:()=>l});const{useEffect:o,useState:n}=wp.element,{createContext:i}=React,s=wp.element.createElement,l=()=>{const[e,t]=n({snackbars:[]});function a(e){t((t=>({...t,...e})))}o((()=>{if(e.snackbars.length){const t=setTimeout((()=>{let t=[...e.snackbars];t.shift(),a({snackbars:t})}),5e3);return()=>clearTimeout(t)}}),[e.snackbars]);return{addSnackbar:t=>a({snackbars:[...e.snackbars,t]}),renderSnackbar:()=>s("div",{className:"mapp-snackbars"},e.snackbars.map(((e,t)=>s("div",{className:"mapp-snackbar mapp-snackbar-show",key:t},e))))}}},66:(e,t,a)=>{"use strict";a.r(t);var o=a(939);window.mapp=window.mapp||{};mapp.Store=function(){this.subs=new Set,this.state={isFetchingMap:!1,isFetchingItems:!1,isSavingMap:!1,itemsFetched:!1,sortBy:"mapid",sortAsc:!1,maps:{},items:[]}},mapp.Store.prototype={createMap:function(){let{success:e=(()=>{})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.state.isFetchingMap=!1,this.publish(),e()},destroyMap:function(e){o.mappLib.ajax({method:"POST",data:{action:"mapp_delete",mapid:e,nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status&&(delete this.state.maps[e],this.destroyItem(e)),this.publish()}})},duplicateMap:function(e,t){this.state.isSavingMap=!0,this.publish(),o.mappLib.ajax({method:"POST",data:{action:"mapp_duplicate",mapid:e,otype:mappl10n.options.otype,oid:mappl10n.options.oid,nonce:mappl10n.options.nonce},callback:e=>{if(e&&"OK"==e.status){let a=e.data,o=a.mapid;this.state.maps[o]=a,this.saveItem(o,a),t&&t(a)}this.state.isSavingMap=!1,this.publish()}})},fetchMap:function(e){void 0===this.state.maps[e]?(this.state.isFetchingMap=!0,this.publish(),o.mappLib.ajax({method:"GET",data:{action:"mapp_get",mapid:e,nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status?(t.data.pois.map((e=>{e.id=o.mappLib.nanoid()})),this.state.maps[e]=t.data):this.state.maps[e]=null,this.state.isFetchingMap=!1,this.publish()}})):this.publish()},mutateMap:function(e,t){this.state.isSavingMap=!0,this.saveItem(e,t),this.publish(),o.mappLib.ajax({method:"POST",data:{action:"mapp_mutate",mapid:e,mapdata:t,nonce:mappl10n.options.nonce},callback:e=>{this.state.isSavingMap=!1,this.publish()}})},saveMap:function(e,t){this.state.isSavingMap=!0,this.publish(),o.mappLib.ajax({method:"POST",data:{action:"mapp_save",mapdata:e,nonce:mappl10n.options.nonce},callback:a=>{if(a&&"OK"==a.status){const o=a.data;e.mapid=o,this.state.maps[o]=e,this.saveItem(o,e),t&&t(e)}this.state.isSavingMap=!1,this.publish()}})},destroyItem:function(e){let t=this.state.items?this.state.items:[],a=_.findIndex(t,{mapid:e});a>-1&&t.splice(a,1),this.state.items=[...t],this.publish()},fetchItems(e){if(this.state.itemsFetched)return this.publish(),void(e&&e(this.state.items));this.state.isFetchingItems=!0,this.publish(),o.mappLib.ajax({method:"GET",data:{action:"mapp_find",nonce:mappl10n.options.nonce},callback:t=>{t&&"OK"==t.status&&(this.state.items=t.data,this.sort(),this.state.itemsFetched=!0,e&&e(this.state.items)),this.state.isFetchingItems=!1,this.sort(),this.publish()}})},saveItem:function(e,t){let a=this.state.items?this.state.items:[],o=_.findWhere(a,{mapid:e});o?(_.map(["otype","oid","title","post_title","status"],(e=>{void 0!==t[e]&&(o[e]=t[e])})),o={...o}):(o={mapid:e,title:t.title,otype:mappl10n.options.otype,oid:mappl10n.options.oid,post_title:null},a.unshift(o))},setSort:function(e){e.sortBy&&(this.state.sortBy=e.sortBy),void 0!==e.sortAsc&&(this.state.sortAsc=e.sortAsc),this.sort(),this.publish()},sort:function(e,t){const a=(o="untitled",wp.i18n.__(o,"mappress-google-maps-for-wordpress"));var o;this.state.items.sort(((e,t)=>function(e,t,o,n){if(n=n?1:-1,"mapid"==o)return n*(Number(e.mapid)-Number(t.mapid));let i=e[o]?e[o]:a,s=t[o]?t[o]:a,l=n*i.localeCompare(s);return 0==l?Number(e.mapid)-Number(t.mapid):l}(e,t,this.state.sortBy,this.state.sortAsc)))},subscribe:function(e){this.subs.add(e)},unsubscribe:function(e){this.subs.delete(e)},publish:function(){let e=[...this.subs];for(let t of e)t(this.state)}},mapp.store=new mapp.Store},614:(e,t,a)=>{"use strict";a.d(t,{m:()=>w});var o=a(228),n=a(939),i=a(27);const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:m}=wp.element,{Button:d,Dashicon:u,ExternalLink:h,Icon:g,Modal:f,Panel:b,PanelBody:y,PanelRow:v,Spinner:k}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function w(e){const[t,a]=m({apiKey:"6a0cfe9e-3670-4598-a63e-f1627b5c9e56",isOpen:!1,isBusy:!1,isSearching:!1,mapboxError:"",mapboxId:"",mapboxName:"",mapboxUser:"",mapboxUrl:"",mapboxParsedUrl:"",mode:"pick",page:1,snazzyPagination:null,snazzySearch:"",snazzySelected:null,snazzyStyles:null,standardStyles:mappl10n.options.standardStyles,userStyles:mappl10n.options.userStyles});function r(e){a((t=>({...t,...e})))}function p(a){let o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=_.findIndex(t.userStyles,{id:a.id});i>=0&&!o&&!confirm(__("Style already exists, overwrite?"))||(r({isBusy:!0}),n.mappLib.ajax({method:"POST",data:{action:"mapp_style_save",style:a,nonce:mappl10n.options.nonce},callback:t=>{r({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,r({mode:"pick",userStyles:t.data}),e.onChange(a.id))}}))}function c(e){r({isSearching:!0,snazzyStyles:null}),n.mappLib.ajax({method:"GET",data:{sort:"popular",page:e,pageSize:50,text:t.snazzySearch,key:t.apiKey},url:"https://snazzymaps.com/explore.json",callback:function(e){if(r({isSearching:!1,snazzyPagination:e&&e.pagination?e.pagination:null}),e&&e.styles){r({snazzyStyles:_.map(e.styles,((e,t)=>(e.id=e.id+"",e)))})}else alert("Error: unable to fetch styles")}})}function u(e,t){t="large"==t||"small"==t?t:"small",t=800;let a=mappl10n.options.baseurl+"/images/json_style.png";if("leaflet"==mappl10n.options.engine?mappl10n.options.mapbox?e.user&&e.mapboxid&&(a="https://api.mapbox.com/styles/v1/"+e.user+"/"+e.mapboxid+"/static/-122.4194,37.7749,10,0/800x800?access_token="+mappl10n.options.mapbox):a=mappl10n.options.baseurl+"/images/osm.png":e.imageUrl&&(a=e.imageUrl),a)return s("img",{src:a,title:e.name})}function b(a,o){switch(a){case"close":case"pick-cancel":r({isOpen:!1});break;case"json-add":r({mode:"json-add"});break;case"json-cancel":case"mapbox-cancel":case"snazzy-cancel":r({mode:"pick"});break;case"json-edit":e.onChange(o.id),r({mode:"json-edit"});break;case"json-save":p(o,!0);break;case"mapbox-add":case"snazzy-add":alert(__("Please upgrade to MapPress Pro to use custom styles"));break;case"mapbox-change-url":{let e,t,a;e=o.trim().toLowerCase(),e=e.replace(".html","").replace("https://api.mapbox.com/styles/v1/","").replace("mapbox://styles/",""),e=e.split("?")[0];let n=e.split("/");2==n.length&&(t=n[0],a=n[1]),r({mapboxUrl:o,mapboxUser:t,mapboxId:a});break}case"mapbox-edit":e.onChange(o.id),r({mode:"mapbox",mapboxId:o.mapboxid,mapboxName:o.name,mapboxUrl:o.url,mapboxUser:o.user});break;case"mapbox-save":t.mapboxName&&t.mapboxUser&&p({id:t.mapboxId,name:t.mapboxName,mapboxid:t.mapboxId,provider:"mapbox",url:t.mapboxUrl,user:t.mapboxUser});break;case"mode":r({mode:o});break;case"open":"leaflet"!=mappl10n.options.engine||mappl10n.options.mapbox?r({isOpen:!0}):alert(__("Please enter a Mapbox access token in the MapPress settings screen to use styled maps."));break;case"pick-delete":confirm(mappl10n.delete_prompt)&&(i=o,_.findIndex(t.userStyles,{id:i})<0?n.mappLib.alert("Invalid delete"):(r({isBusy:!0}),n.mappLib.ajax({method:"POST",data:{action:"mapp_style_delete",id:i,nonce:mappl10n.options.nonce},callback:t=>{r({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,r({userStyles:t.data}),e.selected==i&&e.onChange(null))}})));break;case"pick-select":e.onChange(o),r({isOpen:!1});break;case"snazzy-save":{let e=_.findWhere(t.snazzyStyles,{id:o});e&&p({id:o,imageUrl:e.imageUrl,json:e.json,name:e.name});break}case"snazzy-search":c()}var i}function y(){let a;return"json-add"==t.mode?a={id:null,name:"",json:""}:"json-edit"==t.mode&&(a=e.selected?_.findWhere(t.userStyles,{id:e.selected}):null),s(C,{style:a,onSave:e=>b("json-save",e),onCancel:()=>b("json-cancel")})}function v(e){let a;return a=e.styles&&e.styles.length?_.map(e.styles,((t,a)=>function(e,t){let a,o="mapp-style"+(t.selected==e.id?" mapp-selected":"");(t.onEdit||t.onDelete)&&(a=s("div",{className:"mapp-style-actions"},s("a",{onClick:()=>t.onEdit(e)},__("Edit")),s(g,{icon:"trash",onClick:()=>t.onDelete(e.id)})));return s("div",{className:o,key:e.id},s("div",{className:"mapp-style-image",onClick:()=>t.onSelect(e.id)},u(e)),s("div",{className:"mapp-style-details"},s("div",{className:"mapp-style-title"},e.name),a))}(t,e))):t.isSearching?"":s("div",{className:"mapp-style-list-msg"},__("No results")),s("div",{className:"mapp-style-list-wrapper"},s("div",{className:"mapp-style-list-header"},e.title),s("div",{className:"mapp-style-list"},a))}return s(l,null,function(){const a=t.standardStyles.concat(t.userStyles);let o=!mappl10n.options.style||"roadmap"!=e.selected&&"streets"!=e.selected&&e.selected?e.selected:mappl10n.options.style,n=_.findWhere(a,{id:o});return n=n||t.standardStyles[0],s(d,{className:"mapp-style-toggle",icon:u(n),iconSize:75,isSecondary:!0,onClick:()=>b("open",null),title:n.name})}(),"edit"==t.mode&&t.isOpen&&renderEdit(),"json-add"==t.mode&&t.isOpen&&y(),"json-edit"==t.mode&&t.isOpen&&y(),"mapbox"==t.mode&&t.isOpen&&function(){let e=t.mapboxUser&&t.mapboxId?u({user:t.mapboxUser,mapboxid:t.mapboxId,name:t.mapboxName},"large"):null;const a=!t.mapboxUser||!t.mapboxId||!t.mapboxName;return s(f,{title:__("Add style"),className:"mapp-style-modal",onRequestClose:()=>b("mapbox-cancel"),shouldCloseOnClickOutside:!0},s("div",{className:"mapp-style-mapbox-title"},__("Enter style from Mapbox Studio"),s(h,{href:"https://studio.mapbox.com"})),s("form",{className:"mapp-style-mapbox-form",onSubmit:e=>{e.stopPropagation(),e.preventDefault(),b("mapbox-save")}},s("label",null,s(o.Input,{autoFocus:!0,className:"mapp-style-mapbox-url",labelTop:s(l,null,__("MapBox Share URL"),s(o.Help,{href:"#toc-mapbox-studio-styles"})),onChange:e=>b("mapbox-change-url",e),value:t.mapboxUrl})),s("label",null,s("div",{className:"mapp-style-mapbox-label"},__("Style name")),s(o.Input,{className:"mapp-style-mapbox-name",value:t.mapboxName,onChange:e=>r({mapboxName:e})})),s("div",{className:"mapp-style-mapbox-preview"},e),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,disabled:a,type:"submit"},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>b("mapbox-cancel")},__("Cancel"))))))}(),"pick"==t.mode&&t.isOpen&&function(){let a="";return t.userStyles&&t.userStyles.length&&(a=v({selected:e.selected,onEdit:e=>"leaflet"==mappl10n.options.engine?b("mapbox-edit"):b("json-edit",e),onDelete:e=>b("pick-delete",e),onSelect:e=>b("pick-select",e),styles:t.userStyles,title:__("Custom styles")})),s(f,{title:s("div",{className:"mapp-style-header"},__("Select a style")),className:"mapp-style-modal",onRequestClose:()=>b("close")},s("div",{className:"mapp-style-list-wrapper"},v({onSelect:e=>b("pick-select",e),selected:e.selected,styles:t.standardStyles,title:__("Standard styles")}),a),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>"leaflet"==mappl10n.options.engine?b("mapbox-add"):b("json-add")},__("New style")),"google"==mappl10n.options.engine&&s(d,{isBusy:t.isBusy,isSecondary:!0,onClick:()=>b("snazzy-add")},__("Download style")),s(d,{isBusy:t.isBusy,onClick:()=>b("pick-cancel")},__("Cancel")))))}(),"snazzy"==t.mode&&t.isOpen&&(t.snazzySelected,s(f,{title:__("Download style"),className:"mapp-style-modal mapp-style-modal-snazzy",onRequestClose:()=>b("snazzy-cancel"),shouldCloseOnClickOutside:!0},s("form",{className:"mapp-style-snazzy-form",onSubmit:e=>{b("snazzy-search"),e.preventDefault()}},s(o.Input,{className:"mapp-style-snazzy-search",value:t.search,placeholder:__("Search"),onChange:e=>r({snazzySearch:e})}),t.isSearching&&s(k,null),!t.isSearching&&s(d,{isPrimary:!0,icon:"search",onClick:()=>b("snazzy-search")})),v({selected:t.snazzySelected,styles:t.snazzyStyles,onSelect:e=>r({snazzySelected:e})}),s("div",{className:"mapp-style-toolbar"},s("div",null,s(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>b("snazzy-save",t.snazzySelected)},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>b("snazzy-cancel")},__("Cancel"))),function(){const e=t.snazzyPagination;return e&&t.snazzyStyles&&t.snazzyStyles.length?s(i.MappPaginate,{count:e.totalItems,onChange:e=>c(e),page:e.currentPage,pageSize:e.pageSize}):null}()))))}function C(e){const[t,a]=m((()=>{let t={...e.style},a="";try{a=JSON.stringify(JSON.parse(t.json),null,2)}catch(e){}return t.json=a,{style:t}}));function n(e){a((t=>({...t,...e})))}function i(a,o){let i={...t.style};switch(a){case"cancel":e.onCancel();break;case"change-json":i.json=o,n({style:i});break;case"change-name":i.name=o,n({style:i});break;case"save":i.json=i.json?JSON.stringify(JSON.parse(i.json)):"",e.onSave(i)}}let l;if(t.style.json)try{JSON.parse(t.style.json)}catch(e){l=e.toString()}let r=l?"mapp-json mapp-json-error":"mapp-json";return s(f,{title:s(o.Input,{value:t.style.name,onChange:e=>i("change-name",e),placeholder:__("Enter style name")}),className:"mapp-style-modal mapp-json-modal",onRequestClose:()=>i("cancel"),shouldCloseOnClickOutside:!0},s("div",null,__("JSON")),s("div",{className:r},s("textarea",{value:t.style.json,spellCheck:!1,onChange:e=>i("change-json",e.target.value)})),s("div",{className:"mapp-json-error"},l||""),s("div",{className:"mapp-json-toolbar"},s("div",null,s(d,{disabled:l,isBusy:t.isBusy,isPrimary:!0,onClick:()=>i("save")},__("Save")),s(d,{isBusy:t.isBusy,onClick:()=>i("cancel")},__("Cancel")))))}},573:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappCard:()=>f});var o=a(939);a(228);const n=wp.element.createElement,{Fragment:i,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:m}=wp.data,{Button:d,Dashicon:u,ExternalLink:_,Guide:h,Modal:g}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function f(e){let{icon:t,title:a,...o}=e;return n("div",{className:"mapp-support-card"},a&&n("div",{className:"mapp-support-card-title"},n("h3",null,t&&n(u,{icon:t}),a)),n("div",{className:"mapp-support-card-content"},o.children))}document.getElementById("mapp-support-page")&&wp.element.render(n((function(e){const[t,a]=c({engine:e.engine?e.engine:"leaflet",isOpen:e.isOpen,apiKey:e.apiKey,mapbox:e.mapbox});function l(e){a((t=>({...t,...e})))}function r(e){return n("div",{className:"mapp-guide-engine"+(e.selected?" mapp-selected":""),onClick:()=>e.onClick()},n("h2",{className:"mapp-guide-engine-title"},e.title),n("div",{className:"mapp-guide-engine-content"},e.content))}return p(null),s((()=>{}),[]),n("div",{className:"mapp-support"},n(i,null,n("div",{className:"mapp-support-section"},n("div",{className:"mapp-support-header"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),n("h1",null,__("MapPress Support")),n("i",null,__("Build amazing maps with the easiest and most powerful mapping plugin available")),n("div",null,n(d,{className:"mapp-support-guide-toggle",isPrimary:!0,onClick:()=>l({isOpen:!0})},__("Open Setup Wizard"))))),n("div",{className:"mapp-support-section"},n("div",{className:"mapp-support-cards"},n(f,{icon:"book",title:__("Documentation")},n("p",null,__("Detailed plugin documentation:")),n(_,{href:"https://mappresspro.com/mappress-documentation/"},__("Documentation")),n(_,{href:"https://mappresspro.com/whats-new/"},__("What's new")),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Creating your first map"))),n(f,{icon:"warning",title:__("Troubleshooting")},n("p",null,n("b",null,__("Check for a plugin or theme conflict:"))),n("ol",null,n("li",null,__("Deactivate ALL other plugins")),n("li",null,__("Switch to a standard WordPress theme")),n("li",null,__("If the maps are working, reactivate one by one to find the conflict."))),n("p",null,__("For more info:")),n(_,{href:"https://mappresspro.com/mappress-faq/"},__("MapPress FAQ"))),n(f,{icon:"megaphone",title:__("Support")},n("p",null,__("Need some help?")),n(_,{href:"https://mappresspro.com/forums/forum/mappress-support/"},__("Support forum")),n(_,{href:"https://mappresspro.com/chris-contact/"},__("Contact")))))),function(){if(t.isOpen)return n(h,{className:"mapp-guide",onFinish:()=>function(e,a){if("save"===e){let e;l({isOpen:!1}),e="google"==t.engine?"google":t.mapbox?"mapbox":"nominatim",o.mappLib.ajax({method:"POST",data:{action:"mapp_option_save",nonce:mappl10n.options.nonce,settings:{engine:t.engine,apiKey:t.apiKey,mapbox:t.mapbox,geocoder:e}},callback:e=>{"OK"!=e.status&&alert("Unable to save settings. Please check the support troubleshooting guide.")}})}}("save"),pages:[{content:n("div",{className:"mapp-guide-page mapp-guide-engines"},n("h1",null,__("Please Choose a Mapping API")),n("p",null,__("MapPress supports both Leaflet and Google mapping APIs."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-picking-a-mapping-api"},__("Learn more"))),n("div",{className:"mapp-guide-engines"},r({onClick:()=>l({engine:"leaflet"}),selected:"leaflet"==t.engine,title:"Leaflet",content:n("ul",null,n("li",null,__("No API key")),n("li",null,__("Free unlimited usage")),n("li",null,__("Good functionality")),n("li",null,__("Best for high traffic sites")))}),r({onClick:()=>l({engine:"google"}),selected:"google"==t.engine,title:"Google",content:n("ul",null,n("li",null,__("API key required")),n("li",null,__("Limited free usage")),n("li",null,__("Excellent functionality")),n("li",null,__("Best for low traffic sites")))}))),image:n("div",{className:"mapp-guide-header mapp-guide-image-small"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),n("h1",null,__("Welcome to MapPress!")))},{content:"google"==t.engine?n("div",{className:"mapp-guide-page mapp-guide-apikey"},n("h1",null,__("Google API Key")),n("p",null,__("Google requires an API key to use Google Maps. Please enter your key below.")),n(d,{isPrimary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key/",target:"_blank"},__("Get an API Key")),n("input",{className:"mapp-guide-apikey",onChange:e=>l({apiKey:e.target.value}),placeholder:__("Enter your API key here"),value:t.apiKey})):n("div",{className:"mapp-guide-page mapp-guide-apikey"},n("h1",null,__("Sign up with Mapbox")),n("p",null,__("Mapbox makes Leaflet better, with great-looking map tiles, styled maps, and a powerful geocoder.")," "+__("A generous free tier means it's free for most sites."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-using-mapbox-with-leaflet"},__("Learn more"))),n(d,{isPrimary:!0,href:"https://account.mapbox.com/auth/signup/",target:"_blank"},__("Get Mapbox Access Token")),n("input",{className:"mapp-guide-apikey",onChange:e=>l({mapbox:e.target.value}),placeholder:__("Enter your access token here"),value:t.mapbox})),image:n("div",{className:"mapp-guide-header mapp-guide-image-small"},"google"==t.engine&&n("img",{src:mappl10n.options.baseurl+"/images/google_logo.png"}),"leaflet"==t.engine&&n("img",{src:mappl10n.options.baseurl+"/images/mapbox_logo_white.png"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-gutenberg"},n("h1",null,__("Maps in the Block Editor")),n("p",null,__("MapPress provides custom block types for the Gutenberg editor.")),n("p",null,__("Just insert a MapPress Map block to get started."),n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-gutenberg-block-editor"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/gutenberg_map_block.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-classic"},n("h1",null,__("Maps in the Classic Editor")),n("p",null,__('MapPress also supports the "classic" editor. Just click the MapPress button to open the map library.')),n("p",null,n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-classic-editor"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/classic_map.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-library"},n("h1",null,__("Map Library")),n("p",null,__("The Map Library provides an easy way to see and edit all of your maps. The library can be opened in the post editor or from the MapPress menu.")),n("p",null,n(_,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Learn more")))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/library_menu.gif"}))},{content:n("div",{className:"mapp-guide-page mapp-guide-end"},n("h1",null,__("Happy Mapping")),n("p",null,__("Enjoy the plugin! Replay this guide any time from the MapPress support menu."))),image:n("div",{className:"mapp-guide-header"},n("img",{src:mappl10n.options.baseurl+"/images/icon-128x128"}))}]})}())}),mappress_support_state),document.getElementById("mapp-support-page"))},939:(e,t,a)=>{"use strict";a.d(t,{mappLib:()=>o});const o={ajax:function(e){if("POST"==(e={cache:"no-cache",credentials:"same-origin",data:null,method:e.method?e.method:"GET",mode:"cors",redirect:"follow",referrerPolicy:"no-referrer",responseType:"json",url:e.url?e.url:mappl10n.options.ajaxurl,...e}).method)if(e.data instanceof FormData)e.body=e.data;else{const t=new FormData;t.append("action",e.data.action),t.append("nonce",e.data.nonce),t.append("data",JSON.stringify(e.data)),e.body=t}else"GET"==e.method&&(e.url+="?"+o.jQueryParam(e.data));fetch(e.url,e).then((t=>{if("html"==e.responseType)return t.text();if(t.ok)return t.json();throw Error("Request rejected with status ".concat(t.status))})).then((t=>{e.url!=mappl10n.options.ajaxurl||t&&"OK"==t.status||o.alert(t.status),t.output&&o.alert("MapPress: invalid output from a plugin or theme file. Deactivate plugins to find the problem. Output:\r\n"+t.output),e.callback&&e.callback(t)})).catch((t=>{if(e.error)return void e.error();const a=void 0!==t.message?t.message:t.statusText;o.alert("AJAX error -- "+a)}))},alert:function(e){mappl10n.options.admin||mappl10n.options.debug?alert(e):window.console&&console.error(e)},boundsToViewport:function(e){return e?{sw:e.getSouthWest().toJSON(),ne:e.getNorthEast().toJSON()}:null},getIcon:function(e){{const t=this.getIconUrl(e);return"leaflet"==mappl10n.options.engine?L.icon({iconUrl:t,iconAnchor:[16,32],iconSize:[32,32],popupAnchor:[0,-32]}):{url:t}}},getIconUrl:function(e){return"https://maps.google.com/intl/en_us/mapfiles/ms/micons/red-dot.png"},jQueryParam:function(e){var t=[],a=function(e,a){a=null==(a="function"==typeof a?a():a)?"":a,t[t.length]=encodeURIComponent(e)+"="+encodeURIComponent(a)},o=function(e,n){var i,s,l;if(e)if(Array.isArray(n))for(i=0,s=n.length;i<s;i++)o(e+"["+("object"==typeof n[i]&&n[i]?i:"")+"]",n[i]);else if("[object Object]"===Object.prototype.toString.call(n))for(l in n)o(e+"["+l+"]",n[l]);else a(e,n);else if(Array.isArray(n))for(i=0,s=n.length;i<s;i++)a(n[i].name,n[i].value);else for(l in n)o(l,n[l]);return t};return o("",e).join("&")},nanoid:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;const t="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let a="",o=e;for(;o--;)a+=t[64*Math.random()|0];return a},pointToLatLng:function(e){return e?"leaflet"==mappl10n.options.engine?L.latLng(e):new google.maps.LatLng(e.lat,e.lng):null},template:function(e,t){if(o.templates=o.templates?o.templates:{},!o.templates[e]){var a=document.getElementById("mapp-tmpl-"+e).innerHTML;if(!a)return"";o.templates[e]=_.template(a,{evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g})}return o.templates[e](t)}};"leaflet"==mappl10n.options.engine&&"undefined"!=typeof L&&(L.LatLng.prototype.toJSON=function(){return{lat:this.lat,lng:this.lng}},L.LatLngBounds.prototype.toJSON=function(){return{south:this.getSouth(),west:this.getWest(),north:this.getNorth(),east:this.getEast()}},L.LatLng.prototype.toUrlValue=function(){return Math.round(1e6*this.lat)/1e6+", "+Math.round(1e6*this.lng)/1e6})},27:(e,t,a)=>{"use strict";a.d(t,{MappPaginate:()=>p});const o=wp.element.createElement,{Fragment:n,useEffect:i,useLayoutEffect:s,useRef:l,useState:r}=wp.element,{sprintf}=wp.i18n;function p(e){function t(t,a){const o=Math.ceil(e.count/e.pageSize);switch(t){case"first":e.onChange(1);break;case"last":e.onChange(o);break;case"next":e.page<o&&e.onChange(e.page+1);break;case"prev":e.page>1&&e.onChange(e.page-1)}}return function(){const a=Math.ceil(e.count/e.pageSize),n=e.isBusy||e.page<=1,i=e.isBusy||e.page>=a,s=n?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",l=i?"mapp-paginate-button mapp-disabled":"mapp-paginate-button",r=(p="%d of %d",wp.i18n.__(p,"mappress-google-maps-for-wordpress"));var p;return o("div",{className:"mapp-paginate"},o("div",{className:s,onClick:()=>{n||t("first")}},"«"),o("div",{className:s,onClick:()=>{n||t("prev")}},"‹"),o("div",{className:"mapp-paginate-count"},sprintf(r,e.page,a)),o("div",{className:l,onClick:()=>{i||t("next")}},"›"),o("div",{className:l,onClick:()=>{i||t("last")}},"»"))}()}},308:(e,t,a)=>{"use strict";e.exports=function(e,t){var o=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),n=o.length,i=void 0,s=void 0,l=void 0,r=void 0,p=void 0,c=void 0,m=void 0,d=void 0,u=void 0,_=void 0,h=void 0,g=void 0,f=void 0,b=function(e){return decodeURIComponent(e.replace(/\+/g,"%20"))},y="undefined"!=typeof window?window:a.g;y.$locutus=y.$locutus||{};var v=y.$locutus;for(v.php=v.php||{},t||(t=y),i=0;i<n&&(u=b((d=o[i].split("="))[0]),_=d.length<2?"":b(d[1]),!(u.includes("__proto__")||u.includes("constructor")||u.includes("prototype")));i++){for(;" "===u.charAt(0);)u=u.slice(1);if(u.indexOf("\0")>-1&&(u=u.slice(0,u.indexOf("\0"))),u&&"["!==u.charAt(0)){for(g=[],h=0,s=0;s<u.length;s++)if("["!==u.charAt(s)||h){if("]"===u.charAt(s)&&h&&(g.length||g.push(u.slice(0,h-1)),g.push(u.substr(h,s-h)),h=0,"["!==u.charAt(s+1)))break}else h=s+1;for(g.length||(g=[u]),s=0;s<g[0].length&&(" "!==(m=g[0].charAt(s))&&"."!==m&&"["!==m||(g[0]=g[0].substr(0,s)+"_"+g[0].substr(s+1)),"["!==m);s++);for(c=t,s=0,f=g.length;s<f;s++){if(p=c,(""===(u=g[s].replace(/^['"]/,"").replace(/['"]$/,""))||" "===u)&&0!==s){for(r in l=-1,c)c.hasOwnProperty(r)&&+r>l&&r.match(/^\d+$/g)&&(l=+r);u=l+1}Object(c[u])!==c[u]&&(c[u]={}),c=c[u]}p[u]=_}}}}},t={};function a(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,a),i.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a(569),a(66),a(972),a(283),a(847),a(946),a(634),a(101),a(28),a(897),a(218),a(265),a(109),a(146),a(228),a(597),a(185),a(885),a(573)})();
css/mappress.css CHANGED
@@ -107,13 +107,6 @@ a.leaflet-control-zoom-in, .leaflet-control-zoom-out {
107
  text-decoration: none !important;
108
  }
109
 
110
- @media only screen and (min--moz-device-pixel-ratio: 2),
111
- only screen and (-o-min-device-pixel-ratio: 2/1),
112
- only screen and (-webkit-min-device-pixel-ratio: 2),
113
- only screen and (min-device-pixel-ratio: 2) {
114
- background-size: 640px 640px;
115
- }
116
-
117
  .mapp-layout .mapp-spinner-overlay {
118
  align-items: center;
119
  background-color: #c0c0c0;
@@ -300,16 +293,13 @@ only screen and (min-device-pixel-ratio: 2) {
300
  background-color: #eaeaea;
301
  }
302
 
303
- .mapp-list .mapp-item.mapp-selected .mapp-title {
304
- font-weight: bold;
305
- }
306
-
307
  .mapp-list .mapp-item:hover {
308
  background-color: #eaeaea;
309
  }
310
 
311
  .mapp-list .mapp-info {
312
  flex: 1;
 
313
  }
314
 
315
  .mapp-list .mapp-info .mapp-template {
@@ -319,13 +309,13 @@ only screen and (min-device-pixel-ratio: 2) {
319
 
320
  .mapp-list .mapp-title {
321
  flex: 1;
322
- padding: 10px;
323
  }
324
 
325
  .mapp-list .mapp-item .mapp-icon {
326
  border: none; /* 2011 */
327
  max-width: 32px !important; /* 2012 tries to override */
328
  max-height: 32px;
 
329
  padding: 0; /* 2011 */
330
  }
331
 
@@ -336,6 +326,12 @@ only screen and (min-device-pixel-ratio: 2) {
336
  padding: 10px;
337
  }
338
 
 
 
 
 
 
 
339
 
340
  /*
341
  -----------------------------------------------------------------------------------
@@ -496,7 +492,7 @@ only screen and (min-device-pixel-ratio: 2) {
496
 
497
  .mapp-filters-wrapper {
498
  background-color: white;
499
- display: flex;
500
  flex-direction: column;
501
  flex: 1;
502
  overflow: hidden;
@@ -504,6 +500,10 @@ only screen and (min-device-pixel-ratio: 2) {
504
  z-index: 10003;
505
  }
506
 
 
 
 
 
507
  .mapp-filters-list {
508
  overflow: auto;
509
  padding: 10px;
@@ -629,7 +629,6 @@ only screen and (min-device-pixel-ratio: 2) {
629
  }
630
 
631
  .mapp-sidebar .mapp-filters-wrapper {
632
- display: flex;
633
  position: absolute;
634
  top: 35px; bottom: 0; right: 0; left: 0;
635
  }
@@ -847,6 +846,7 @@ only screen and (min-device-pixel-ratio: 2) {
847
  flex-direction: column;
848
  min-height: 100px; /* Used when IB is very small and thumbnail is on top */
849
  overflow: hidden;
 
850
  }
851
 
852
  .mapp-iw .mapp-info .mapp-template {
@@ -856,21 +856,20 @@ only screen and (min-device-pixel-ratio: 2) {
856
 
857
  .mapp-iw .mapp-title {
858
  font-weight: bold;
859
- padding: 10px;
860
  }
861
 
862
  .mapp-iw .mapp-body {
863
  flex: 1;
864
  overflow: auto;
865
  overflow-wrap: break-word;
866
- padding: 0 10px;
867
  }
868
 
869
  /* Make directions look like a link */
870
  .mapp-iw .mapp-dir {
871
  color: #4272db;
872
  cursor: pointer;
873
- padding: 10px;
874
  white-space: nowrap;
875
  }
876
 
@@ -937,12 +936,6 @@ only screen and (min-device-pixel-ratio: 2) {
937
  -----------------------------------------------------------------------------------
938
  */
939
 
940
- /* Fill the .mapp-thumbnail container, where fixed dimensions are applied */
941
- .mapp-thumbnail img, .mapp-thumbnail .mapp-embed, .mapp-thumbnail iframe {
942
- height: 100%;
943
- width: 100%;
944
- }
945
-
946
  .mapp-iw.mapp-thumb-top .mapp-thumbnail {
947
  text-align: center;
948
  }
@@ -1004,10 +997,12 @@ only screen and (min-device-pixel-ratio: 2) {
1004
  }
1005
 
1006
  .mapp-list-component.mapp-thumb-left .mapp-info .mapp-template {
 
1007
  flex-direction: row-reverse;
1008
  }
1009
 
1010
  .mapp-list-component.mapp-thumb-right .mapp-item {
 
1011
  flex-direction: row-reverse;
1012
  }
1013
 
@@ -1072,10 +1067,6 @@ only screen and (min-device-pixel-ratio: 2) {
1072
  -----------------------------------------------------------------------------------
1073
  */
1074
 
1075
- .mapp-view-menu .mapp-menu {
1076
- display: block;
1077
- }
1078
-
1079
  .mapp-view-directions .mapp-directions {
1080
  display: block;
1081
  }
@@ -1279,6 +1270,11 @@ only screen and (min-device-pixel-ratio: 2) {
1279
  -----------------------------------------------------------------------------------
1280
  */
1281
 
 
 
 
 
 
1282
  .mapp-menu-toggle {
1283
  background: white url('../images/menu-2x.png') no-repeat center center;
1284
  background-size: 24px 24px;
@@ -1294,7 +1290,7 @@ only screen and (min-device-pixel-ratio: 2) {
1294
  z-index: 1000;
1295
  }
1296
 
1297
- .mapp-menu-component {
1298
  background-color: white;
1299
  border: 1px solid lightgray;
1300
  color: #606060;
@@ -1304,11 +1300,15 @@ only screen and (min-device-pixel-ratio: 2) {
1304
  overflow: auto;
1305
  padding: 5px 0 5px 0;
1306
  position: absolute;
1307
- top: 0; left: 0; bottom: 0;
1308
  width: 150px;
1309
  z-index: 1010;
1310
  }
1311
 
 
 
 
 
1312
  .mapp-menu-item {
1313
  cursor: pointer;
1314
  line-height: 20px;
@@ -1316,11 +1316,11 @@ only screen and (min-device-pixel-ratio: 2) {
1316
  }
1317
 
1318
  .mapp-menu-item:hover {
1319
- background-color: #f8f8f8;
1320
  color: black;
1321
  }
1322
  .mapp-menu-item.mapp-active {
1323
- background-color: #f6f6f6;
1324
  color: black;
1325
  font-weight: bold;
1326
  }
@@ -1330,27 +1330,9 @@ only screen and (min-device-pixel-ratio: 2) {
1330
  border-bottom: 1px solid lightgray;
1331
  }
1332
 
1333
- .mapp-menu-footer {
1334
- position: absolute;
1335
- bottom: 0;
1336
- right: 0;
1337
- }
1338
-
1339
- .mapp-menu-help {
1340
- justify-content: center;
1341
- background-color: #fafafa;
1342
- border-radius: 50%;
1343
- border: 1px solid lightgray;
1344
- font-size: 10px;
1345
- width: 15px;
1346
- height: 15px;
1347
- display: flex;
1348
- align-items: center;
1349
- line-height: 10px;
1350
- margin-right: 5px;
1351
- margin-bottom: 2px;
1352
- opacity: .7;
1353
- color: gray;
1354
  }
1355
 
1356
  .mapp-menu-help:hover {
107
  text-decoration: none !important;
108
  }
109
 
 
 
 
 
 
 
 
110
  .mapp-layout .mapp-spinner-overlay {
111
  align-items: center;
112
  background-color: #c0c0c0;
293
  background-color: #eaeaea;
294
  }
295
 
 
 
 
 
296
  .mapp-list .mapp-item:hover {
297
  background-color: #eaeaea;
298
  }
299
 
300
  .mapp-list .mapp-info {
301
  flex: 1;
302
+ padding: 10px;
303
  }
304
 
305
  .mapp-list .mapp-info .mapp-template {
309
 
310
  .mapp-list .mapp-title {
311
  flex: 1;
 
312
  }
313
 
314
  .mapp-list .mapp-item .mapp-icon {
315
  border: none; /* 2011 */
316
  max-width: 32px !important; /* 2012 tries to override */
317
  max-height: 32px;
318
+ margin: 0 5px;
319
  padding: 0; /* 2011 */
320
  }
321
 
326
  padding: 10px;
327
  }
328
 
329
+ /* Make directions look like a link */
330
+ .mapp-list .mapp-dir {
331
+ color: #4272db;
332
+ cursor: pointer;
333
+ white-space: nowrap;
334
+ }
335
 
336
  /*
337
  -----------------------------------------------------------------------------------
492
 
493
  .mapp-filters-wrapper {
494
  background-color: white;
495
+ display: none;
496
  flex-direction: column;
497
  flex: 1;
498
  overflow: hidden;
500
  z-index: 10003;
501
  }
502
 
503
+ .mapp-filters-wrapper.mapp-filters-open {
504
+ display: flex;
505
+ }
506
+
507
  .mapp-filters-list {
508
  overflow: auto;
509
  padding: 10px;
629
  }
630
 
631
  .mapp-sidebar .mapp-filters-wrapper {
 
632
  position: absolute;
633
  top: 35px; bottom: 0; right: 0; left: 0;
634
  }
846
  flex-direction: column;
847
  min-height: 100px; /* Used when IB is very small and thumbnail is on top */
848
  overflow: hidden;
849
+ padding: 10px;
850
  }
851
 
852
  .mapp-iw .mapp-info .mapp-template {
856
 
857
  .mapp-iw .mapp-title {
858
  font-weight: bold;
 
859
  }
860
 
861
  .mapp-iw .mapp-body {
862
  flex: 1;
863
  overflow: auto;
864
  overflow-wrap: break-word;
865
+ padding-top: 10px;
866
  }
867
 
868
  /* Make directions look like a link */
869
  .mapp-iw .mapp-dir {
870
  color: #4272db;
871
  cursor: pointer;
872
+ padding-top: 10px;
873
  white-space: nowrap;
874
  }
875
 
936
  -----------------------------------------------------------------------------------
937
  */
938
 
 
 
 
 
 
 
939
  .mapp-iw.mapp-thumb-top .mapp-thumbnail {
940
  text-align: center;
941
  }
997
  }
998
 
999
  .mapp-list-component.mapp-thumb-left .mapp-info .mapp-template {
1000
+ align-items: start;
1001
  flex-direction: row-reverse;
1002
  }
1003
 
1004
  .mapp-list-component.mapp-thumb-right .mapp-item {
1005
+ align-items: start;
1006
  flex-direction: row-reverse;
1007
  }
1008
 
1067
  -----------------------------------------------------------------------------------
1068
  */
1069
 
 
 
 
 
1070
  .mapp-view-directions .mapp-directions {
1071
  display: block;
1072
  }
1270
  -----------------------------------------------------------------------------------
1271
  */
1272
 
1273
+ .mapp-menu-component {
1274
+ position: absolute;
1275
+ top: 0; left: 0;
1276
+ }
1277
+
1278
  .mapp-menu-toggle {
1279
  background: white url('../images/menu-2x.png') no-repeat center center;
1280
  background-size: 24px 24px;
1290
  z-index: 1000;
1291
  }
1292
 
1293
+ .mapp-menu {
1294
  background-color: white;
1295
  border: 1px solid lightgray;
1296
  color: #606060;
1300
  overflow: auto;
1301
  padding: 5px 0 5px 0;
1302
  position: absolute;
1303
+ top: 50px; left: 10px;
1304
  width: 150px;
1305
  z-index: 1010;
1306
  }
1307
 
1308
+ .mapp-menu-items {
1309
+ flex: 1;
1310
+ }
1311
+
1312
  .mapp-menu-item {
1313
  cursor: pointer;
1314
  line-height: 20px;
1316
  }
1317
 
1318
  .mapp-menu-item:hover {
1319
+ background-color: #eaeaea;
1320
  color: black;
1321
  }
1322
  .mapp-menu-item.mapp-active {
1323
+ background-color: #eaeaea;
1324
  color: black;
1325
  font-weight: bold;
1326
  }
1330
  border-bottom: 1px solid lightgray;
1331
  }
1332
 
1333
+ .mapp-menu-footer{
1334
+ padding: 5px 10px;
1335
+ text-align: right;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1336
  }
1337
 
1338
  .mapp-menu-help:hover {
css/mappress_admin.css CHANGED
@@ -446,7 +446,7 @@
446
 
447
  .mapp-edit .mapp-wrapper {
448
  height: 100% !important;
449
- padding-bottom: 0px;
450
  }
451
 
452
  .mapp-edit-toolbar {
@@ -471,7 +471,9 @@
471
  border: 1px solid black;
472
  }
473
 
474
-
 
 
475
 
476
  /*
477
  -----------------------------------------------------------------------------------
@@ -1362,6 +1364,7 @@ button.mapp-option-geocode {
1362
  margin-right: 10px;
1363
  }
1364
 
 
1365
  /*
1366
  -----------------------------------------------------------------------------------
1367
  Welcome guide
@@ -1530,6 +1533,10 @@ button.mapp-option-geocode {
1530
  }
1531
  }
1532
 
 
 
 
 
1533
 
1534
 
1535
  /*
446
 
447
  .mapp-edit .mapp-wrapper {
448
  height: 100% !important;
449
+ padding-bottom: 0px !important;
450
  }
451
 
452
  .mapp-edit-toolbar {
471
  border: 1px solid black;
472
  }
473
 
474
+ .mapp-edit .mapp-iw {
475
+ flex: 1;
476
+ }
477
 
478
  /*
479
  -----------------------------------------------------------------------------------
1364
  margin-right: 10px;
1365
  }
1366
 
1367
+
1368
  /*
1369
  -----------------------------------------------------------------------------------
1370
  Welcome guide
1533
  }
1534
  }
1535
 
1536
+ /* WP positions the close tooltip incorrectly, so hide it */
1537
+ .mapp-guide .components-popover.components-tooltip {
1538
+ display: none;
1539
+ }
1540
 
1541
 
1542
  /*
languages/mappress-google-maps-for-wordpress.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the MapPress Maps for WordPress plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: MapPress Maps for WordPress 2.77.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mappress-google-maps-for-wordpress\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2022-05-29T02:52:09+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
 
@@ -30,283 +30,332 @@ msgstr ""
30
  msgid "Chris Richardson"
31
  msgstr ""
32
 
33
- #: mappress.php:178
34
- #: mappress.php:772
35
  msgid "Settings"
36
  msgstr ""
37
 
38
- #: mappress.php:179
39
  #: build/index_mappress_admin.js:1
40
  msgid "Maps"
41
  msgstr ""
42
 
43
- #: mappress.php:181
44
  #: build/index_mappress_admin.js:1
45
  msgid "Import"
46
  msgstr ""
47
 
48
- #: mappress.php:182
49
  #: build/index_mappress_admin.js:1
50
  msgid "Support"
51
  msgstr ""
52
 
53
- #: mappress.php:193
 
 
 
 
 
54
  msgid "MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this."
55
  msgstr ""
56
 
57
- #: mappress.php:198
58
  msgid "A Google Maps API key is required"
59
  msgstr ""
60
 
61
- #: mappress.php:198
62
  msgid "Please update your"
63
  msgstr ""
64
 
65
- #: mappress.php:198
66
  #: build/index_mappress.js:1
67
  msgid "MapPress Settings"
68
  msgstr ""
69
 
70
- #: mappress.php:474
 
 
 
 
 
 
 
 
71
  msgid "Renew your license"
72
  msgstr ""
73
 
74
- #: mappress.php:476
75
  msgid "Your MapPress license has expired. %s to get the latest updates and prevent errors."
76
  msgstr ""
77
 
78
- #: mappress.php:485
79
  msgid "Please enter your MapPress license key to enable plugin updates"
80
  msgstr ""
81
 
82
- #: mappress.php:488
83
  msgid "MapPress Gutenberg blocks require WordPress 5.3 or the latest Gutenberg Plugin. Please update if using the block editor."
84
  msgstr ""
85
 
86
- #: mappress.php:491
87
  msgid "MapPress has many new features! %s."
88
  msgstr ""
89
 
90
- #: mappress.php:491
91
- #: mappress.php:494
92
- #: mappress.php:500
93
- #: mappress.php:536
94
  #: build/index_mappress_admin.js:1
95
  msgid "Learn more"
96
  msgstr ""
97
 
98
- #: mappress.php:494
99
- #: mappress.php:536
100
  msgid "MapPress templates have changed! Please update custom templates to the new format. %s."
101
  msgstr ""
102
 
103
- #: mappress.php:500
104
  msgid "MapPress templates and filters have changed. Please update custom templates and filters. %s."
105
  msgstr ""
106
 
107
- #: mappress.php:589
108
  msgid "Are you sure you want to delete?"
109
  msgstr ""
110
 
111
- #: mappress.php:590
112
  msgid "Permanently delete this map?"
113
  msgstr ""
114
 
115
- #: mappress.php:591
116
  msgid "Error reading KML file"
117
  msgstr ""
118
 
119
- #: mappress.php:592
120
  msgid "URL for KML file"
121
  msgstr ""
122
 
123
- #: mappress.php:593
124
  msgid "Please select an editor to insert into."
125
  msgstr ""
126
 
127
- #: mappress.php:594
128
  msgid "Unable to get your location"
129
  msgstr ""
130
 
131
- #: mappress.php:595
132
  #: build/index_mappress_admin.js:1
133
  msgid "No results"
134
  msgstr ""
135
 
136
- #: mappress.php:596
137
  msgid "Save changes?"
138
  msgstr ""
139
 
140
- #: mappress.php:597
141
  #: build/index_mappress_admin.js:1
142
  msgid "Shape"
143
  msgstr ""
144
 
145
- #: mappress.php:629
146
- #: mappress.php:638
147
  msgid "Streets"
148
  msgstr ""
149
 
150
- #: mappress.php:630
151
  msgid "Outdoors"
152
  msgstr ""
153
 
154
- #: mappress.php:631
155
  msgid "Light"
156
  msgstr ""
157
 
158
- #: mappress.php:632
159
  msgid "Dark"
160
  msgstr ""
161
 
162
- #: mappress.php:633
163
- #: mappress.php:646
164
  msgid "Satellite"
165
  msgstr ""
166
 
167
- #: mappress.php:634
168
  msgid "Satellite Streets"
169
  msgstr ""
170
 
171
- #: mappress.php:644
172
  msgid "Roadmap"
173
  msgstr ""
174
 
175
- #: mappress.php:645
176
  msgid "Terrain"
177
  msgstr ""
178
 
179
- #: mappress.php:647
180
  msgid "Hybrid"
181
  msgstr ""
182
 
183
- #: mappress.php:773
184
- #: mappress_settings.php:510
185
- #: mappress_settings.php:541
186
  #: build/index_mappress_admin.js:1
187
  msgid "What's new"
188
  msgstr ""
189
 
190
- #: mappress.php:1105
191
  msgid "Version"
192
  msgstr ""
193
 
194
- #: mappress_map.php:146
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  msgid "Map not found"
196
  msgstr ""
197
 
198
- #: mappress_map.php:160
199
  msgid "Post not found"
200
  msgstr ""
201
 
202
- #: mappress_map.php:374
203
- #: build/index_mappress_admin.js:1
204
- msgid "Untitled"
205
  msgstr ""
206
 
207
- #: mappress_map.php:375
208
- msgid "Copy of %s"
209
  msgstr ""
210
 
211
- #: mappress_map.php:471
212
- #: mappress_settings.php:505
213
- #: mappress_settings.php:536
214
  #: build/index_mappress_admin.js:1
215
- msgid "MapPress"
216
  msgstr ""
217
 
218
- #: mappress_poi.php:44
 
 
 
 
219
  msgid "Invalid lat/lng coordinate: %s,%s"
220
  msgstr ""
221
 
222
- #: mappress_settings.php:309
223
  #: build/index_mappress_admin.js:1
224
  msgid "Default"
225
  msgstr ""
226
 
227
- #: mappress_settings.php:378
228
  msgid "Address line "
229
  msgstr ""
230
 
231
- #: mappress_settings.php:379
232
  msgid "Latitude"
233
  msgstr ""
234
 
235
- #: mappress_settings.php:379
236
  msgid "Longitude"
237
  msgstr ""
238
 
239
- #: mappress_settings.php:379
240
- #: mappress_template.php:37
241
  #: build/index_mappress_admin.js:1
242
  msgid "Title"
243
  msgstr ""
244
 
245
- #: mappress_settings.php:379
246
  #: mappress_template.php:34
247
  msgid "Body"
248
  msgstr ""
249
 
250
- #: mappress_settings.php:379
251
  #: mappress_template.php:35
 
252
  #: build/index_mappress_admin.js:1
253
  msgid "Icon"
254
  msgstr ""
255
 
256
- #: mappress_settings.php:379
257
  msgid "Zoom"
258
  msgstr ""
259
 
260
- #: mappress_settings.php:487
261
  msgid "OK, you deserve it!"
262
  msgstr ""
263
 
264
- #: mappress_settings.php:488
265
  msgid "Nope, maybe later"
266
  msgstr ""
267
 
268
- #: mappress_settings.php:489
269
  msgid "I need help using the plugin"
270
  msgstr ""
271
 
272
- #: mappress_settings.php:491
273
  msgid "Help Spread the Word"
274
  msgstr ""
275
 
276
- #: mappress_settings.php:492
277
  msgid "Hi, I hope you're enjoying MapPress. Would you mind taking a moment to write a brief review? It would mean a lot to me!"
278
  msgstr ""
279
 
280
- #: mappress_settings.php:509
281
- #: mappress_settings.php:540
282
  msgid "Get help"
283
  msgstr ""
284
 
285
- #: mappress_settings.php:512
286
- #: mappress_settings.php:543
287
  #: build/index_mappress_admin.js:1
288
  msgid "Your account"
289
  msgstr ""
290
 
291
- #: mappress_settings.php:514
292
- #: mappress_settings.php:545
293
  msgid "Upgrade to MapPress Pro"
294
  msgstr ""
295
 
296
  #: mappress_template.php:33
 
297
  msgid "Address"
298
  msgstr ""
299
 
300
- #: mappress_template.php:36
301
- msgid "Thumbnail"
302
  msgstr ""
303
 
304
  #: mappress_template.php:38
305
- msgid "Url"
 
306
  msgstr ""
307
 
308
- #: mappress_template.php:39
309
- msgid "Custom Field"
 
 
 
 
310
  msgstr ""
311
 
312
  #: templates/map.php:13
@@ -501,6 +550,14 @@ msgstr ""
501
  msgid "Custom color"
502
  msgstr ""
503
 
 
 
 
 
 
 
 
 
504
  #: build/index_mappress_admin.js:1
505
  msgid "Feedback"
506
  msgstr ""
@@ -1193,10 +1250,22 @@ msgstr ""
1193
  msgid "POI list"
1194
  msgstr ""
1195
 
 
 
 
 
 
 
 
 
1196
  #: build/index_mappress_admin.js:1
1197
  msgid "Filters"
1198
  msgstr ""
1199
 
 
 
 
 
1200
  #: build/index_mappress_admin.js:1
1201
  msgid "Text search"
1202
  msgstr ""
@@ -1242,11 +1311,11 @@ msgid "Slug"
1242
  msgstr ""
1243
 
1244
  #: build/index_mappress_admin.js:1
1245
- msgid "Include"
1246
  msgstr ""
1247
 
1248
  #: build/index_mappress_admin.js:1
1249
- msgid "Exclude"
1250
  msgstr ""
1251
 
1252
  #: build/index_mappress_admin.js:1
@@ -1262,7 +1331,11 @@ msgid "Directions link"
1262
  msgstr ""
1263
 
1264
  #: build/index_mappress_admin.js:1
1265
- msgid "Show a directions link in popups"
 
 
 
 
1266
  msgstr ""
1267
 
1268
  #: build/index_mappress_admin.js:1
@@ -1306,17 +1379,13 @@ msgid "Generate Maps from Custom Fields"
1306
  msgstr ""
1307
 
1308
  #: build/index_mappress_admin.js:1
1309
- msgid "Custom fields"
1310
  msgstr ""
1311
 
1312
  #: build/index_mappress_admin.js:1
1313
  msgid "Map field"
1314
  msgstr ""
1315
 
1316
- #: build/index_mappress_admin.js:1
1317
- msgid "Custom field"
1318
- msgstr ""
1319
-
1320
  #: build/index_mappress_admin.js:1
1321
  msgid "Post types"
1322
  msgstr ""
@@ -1326,7 +1395,7 @@ msgid "Overwrite"
1326
  msgstr ""
1327
 
1328
  #: build/index_mappress_admin.js:1
1329
- msgid "Overwrite maps when posts are saved"
1330
  msgstr ""
1331
 
1332
  #: build/index_mappress_admin.js:1
@@ -1394,7 +1463,7 @@ msgid "Prevent loading Google Maps multiple times"
1394
  msgstr ""
1395
 
1396
  #: build/index_mappress_admin.js:1
1397
- msgid "Output maps in iframes to prevent compatibility issues"
1398
  msgstr ""
1399
 
1400
  #: build/index_mappress_admin.js:1
@@ -1429,6 +1498,14 @@ msgstr ""
1429
  msgid "Mashup list item"
1430
  msgstr ""
1431
 
 
 
 
 
 
 
 
 
1432
  #: build/index_mappress_admin.js:1
1433
  msgid "Editor"
1434
  msgstr ""
@@ -1445,10 +1522,6 @@ msgstr ""
1445
  msgid "Geocode posts"
1446
  msgstr ""
1447
 
1448
- #: build/index_mappress_admin.js:1
1449
- msgid "Geocode users"
1450
- msgstr ""
1451
-
1452
  #: build/index_mappress_admin.js:1
1453
  msgid "For bulk geocoding (>100 items) online geocoding services are faster and less expensive."
1454
  msgstr ""
@@ -1766,7 +1839,7 @@ msgid "Sign up with Mapbox"
1766
  msgstr ""
1767
 
1768
  #: build/index_mappress_admin.js:1
1769
- msgid "Mapbox makes Leaflet better with great-looking map tiles, styled maps, and a powerful geocoder."
1770
  msgstr ""
1771
 
1772
  #: build/index_mappress_admin.js:1
2
  # This file is distributed under the same license as the MapPress Maps for WordPress plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: MapPress Maps for WordPress 2.80.9\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mappress-google-maps-for-wordpress\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2022-06-08T18:56:41+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
 
30
  msgid "Chris Richardson"
31
  msgstr ""
32
 
33
+ #: mappress.php:181
34
+ #: mappress.php:729
35
  msgid "Settings"
36
  msgstr ""
37
 
38
+ #: mappress.php:182
39
  #: build/index_mappress_admin.js:1
40
  msgid "Maps"
41
  msgstr ""
42
 
43
+ #: mappress.php:184
44
  #: build/index_mappress_admin.js:1
45
  msgid "Import"
46
  msgstr ""
47
 
48
+ #: mappress.php:185
49
  #: build/index_mappress_admin.js:1
50
  msgid "Support"
51
  msgstr ""
52
 
53
+ #: mappress.php:186
54
+ #: build/index_mappress_admin.js:1
55
+ msgid "Upgrade"
56
+ msgstr ""
57
+
58
+ #: mappress.php:199
59
  msgid "MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this."
60
  msgstr ""
61
 
62
+ #: mappress.php:204
63
  msgid "A Google Maps API key is required"
64
  msgstr ""
65
 
66
+ #: mappress.php:204
67
  msgid "Please update your"
68
  msgstr ""
69
 
70
+ #: mappress.php:204
71
  #: build/index_mappress.js:1
72
  msgid "MapPress Settings"
73
  msgstr ""
74
 
75
+ #: mappress.php:209
76
+ msgid "Upgrade Now"
77
+ msgstr ""
78
+
79
+ #: mappress.php:210
80
+ msgid "Your MapPress data must be upgraded! Please %s.</strong>"
81
+ msgstr ""
82
+
83
+ #: mappress.php:501
84
  msgid "Renew your license"
85
  msgstr ""
86
 
87
+ #: mappress.php:503
88
  msgid "Your MapPress license has expired. %s to get the latest updates and prevent errors."
89
  msgstr ""
90
 
91
+ #: mappress.php:512
92
  msgid "Please enter your MapPress license key to enable plugin updates"
93
  msgstr ""
94
 
95
+ #: mappress.php:515
96
  msgid "MapPress Gutenberg blocks require WordPress 5.3 or the latest Gutenberg Plugin. Please update if using the block editor."
97
  msgstr ""
98
 
99
+ #: mappress.php:518
100
  msgid "MapPress has many new features! %s."
101
  msgstr ""
102
 
103
+ #: mappress.php:518
104
+ #: mappress.php:521
105
+ #: mappress.php:527
106
+ #: mappress.php:563
107
  #: build/index_mappress_admin.js:1
108
  msgid "Learn more"
109
  msgstr ""
110
 
111
+ #: mappress.php:521
112
+ #: mappress.php:563
113
  msgid "MapPress templates have changed! Please update custom templates to the new format. %s."
114
  msgstr ""
115
 
116
+ #: mappress.php:527
117
  msgid "MapPress templates and filters have changed. Please update custom templates and filters. %s."
118
  msgstr ""
119
 
120
+ #: mappress.php:631
121
  msgid "Are you sure you want to delete?"
122
  msgstr ""
123
 
124
+ #: mappress.php:632
125
  msgid "Permanently delete this map?"
126
  msgstr ""
127
 
128
+ #: mappress.php:633
129
  msgid "Error reading KML file"
130
  msgstr ""
131
 
132
+ #: mappress.php:634
133
  msgid "URL for KML file"
134
  msgstr ""
135
 
136
+ #: mappress.php:635
137
  msgid "Please select an editor to insert into."
138
  msgstr ""
139
 
140
+ #: mappress.php:636
141
  msgid "Unable to get your location"
142
  msgstr ""
143
 
144
+ #: mappress.php:637
145
  #: build/index_mappress_admin.js:1
146
  msgid "No results"
147
  msgstr ""
148
 
149
+ #: mappress.php:638
150
  msgid "Save changes?"
151
  msgstr ""
152
 
153
+ #: mappress.php:639
154
  #: build/index_mappress_admin.js:1
155
  msgid "Shape"
156
  msgstr ""
157
 
158
+ #: mappress.php:672
159
+ #: mappress.php:681
160
  msgid "Streets"
161
  msgstr ""
162
 
163
+ #: mappress.php:673
164
  msgid "Outdoors"
165
  msgstr ""
166
 
167
+ #: mappress.php:674
168
  msgid "Light"
169
  msgstr ""
170
 
171
+ #: mappress.php:675
172
  msgid "Dark"
173
  msgstr ""
174
 
175
+ #: mappress.php:676
176
+ #: mappress.php:689
177
  msgid "Satellite"
178
  msgstr ""
179
 
180
+ #: mappress.php:677
181
  msgid "Satellite Streets"
182
  msgstr ""
183
 
184
+ #: mappress.php:687
185
  msgid "Roadmap"
186
  msgstr ""
187
 
188
+ #: mappress.php:688
189
  msgid "Terrain"
190
  msgstr ""
191
 
192
+ #: mappress.php:690
193
  msgid "Hybrid"
194
  msgstr ""
195
 
196
+ #: mappress.php:730
197
+ #: mappress_settings.php:516
198
+ #: mappress_settings.php:547
199
  #: build/index_mappress_admin.js:1
200
  msgid "What's new"
201
  msgstr ""
202
 
203
+ #: mappress.php:1160
204
  msgid "Version"
205
  msgstr ""
206
 
207
+ #: mappress_db.php:53
208
+ msgid "Success! Upgrade complete."
209
+ msgstr ""
210
+
211
+ #: mappress_db.php:148
212
+ #: mappress_map.php:518
213
+ #: mappress_settings.php:511
214
+ #: mappress_settings.php:542
215
+ #: build/index_mappress_admin.js:1
216
+ msgid "MapPress"
217
+ msgstr ""
218
+
219
+ #: mappress_db.php:154
220
+ msgid "Map data upgrade"
221
+ msgstr ""
222
+
223
+ #: mappress_db.php:155
224
+ msgid "Your map data needs to be upgraded."
225
+ msgstr ""
226
+
227
+ #: mappress_db.php:156
228
+ msgid "Please make a database backup now. Data will be permanently modified."
229
+ msgstr ""
230
+
231
+ #: mappress_db.php:159
232
+ msgid "Your map data is up to date."
233
+ msgstr ""
234
+
235
+ #: mappress_map.php:148
236
  msgid "Map not found"
237
  msgstr ""
238
 
239
+ #: mappress_map.php:162
240
  msgid "Post not found"
241
  msgstr ""
242
 
243
+ #: mappress_map.php:387
244
+ msgid "Geocoding error: %s"
 
245
  msgstr ""
246
 
247
+ #: mappress_map.php:393
248
+ msgid "Location"
249
  msgstr ""
250
 
251
+ #: mappress_map.php:412
 
 
252
  #: build/index_mappress_admin.js:1
253
+ msgid "Untitled"
254
  msgstr ""
255
 
256
+ #: mappress_map.php:413
257
+ msgid "Copy of %s"
258
+ msgstr ""
259
+
260
+ #: mappress_poi.php:56
261
  msgid "Invalid lat/lng coordinate: %s,%s"
262
  msgstr ""
263
 
264
+ #: mappress_settings.php:315
265
  #: build/index_mappress_admin.js:1
266
  msgid "Default"
267
  msgstr ""
268
 
269
+ #: mappress_settings.php:385
270
  msgid "Address line "
271
  msgstr ""
272
 
273
+ #: mappress_settings.php:386
274
  msgid "Latitude"
275
  msgstr ""
276
 
277
+ #: mappress_settings.php:386
278
  msgid "Longitude"
279
  msgstr ""
280
 
281
+ #: mappress_settings.php:386
282
+ #: mappress_template.php:36
283
  #: build/index_mappress_admin.js:1
284
  msgid "Title"
285
  msgstr ""
286
 
287
+ #: mappress_settings.php:386
288
  #: mappress_template.php:34
289
  msgid "Body"
290
  msgstr ""
291
 
292
+ #: mappress_settings.php:386
293
  #: mappress_template.php:35
294
+ #: mappress_template.php:45
295
  #: build/index_mappress_admin.js:1
296
  msgid "Icon"
297
  msgstr ""
298
 
299
+ #: mappress_settings.php:386
300
  msgid "Zoom"
301
  msgstr ""
302
 
303
+ #: mappress_settings.php:493
304
  msgid "OK, you deserve it!"
305
  msgstr ""
306
 
307
+ #: mappress_settings.php:494
308
  msgid "Nope, maybe later"
309
  msgstr ""
310
 
311
+ #: mappress_settings.php:495
312
  msgid "I need help using the plugin"
313
  msgstr ""
314
 
315
+ #: mappress_settings.php:497
316
  msgid "Help Spread the Word"
317
  msgstr ""
318
 
319
+ #: mappress_settings.php:498
320
  msgid "Hi, I hope you're enjoying MapPress. Would you mind taking a moment to write a brief review? It would mean a lot to me!"
321
  msgstr ""
322
 
323
+ #: mappress_settings.php:515
324
+ #: mappress_settings.php:546
325
  msgid "Get help"
326
  msgstr ""
327
 
328
+ #: mappress_settings.php:518
329
+ #: mappress_settings.php:549
330
  #: build/index_mappress_admin.js:1
331
  msgid "Your account"
332
  msgstr ""
333
 
334
+ #: mappress_settings.php:520
335
+ #: mappress_settings.php:551
336
  msgid "Upgrade to MapPress Pro"
337
  msgstr ""
338
 
339
  #: mappress_template.php:33
340
+ #: mappress_template.php:42
341
  msgid "Address"
342
  msgstr ""
343
 
344
+ #: mappress_template.php:37
345
+ msgid "URL"
346
  msgstr ""
347
 
348
  #: mappress_template.php:38
349
+ #: mappress_template.php:46
350
+ msgid "Custom Field"
351
  msgstr ""
352
 
353
+ #: mappress_template.php:43
354
+ msgid "Email"
355
+ msgstr ""
356
+
357
+ #: mappress_template.php:44
358
+ msgid "Display Name"
359
  msgstr ""
360
 
361
  #: templates/map.php:13
550
  msgid "Custom color"
551
  msgstr ""
552
 
553
+ #: build/index_mappress_admin.js:1
554
+ msgid "Error during update! Please contact support."
555
+ msgstr ""
556
+
557
+ #: build/index_mappress_admin.js:1
558
+ msgid "Success! Database updated."
559
+ msgstr ""
560
+
561
  #: build/index_mappress_admin.js:1
562
  msgid "Feedback"
563
  msgstr ""
1250
  msgid "POI list"
1251
  msgstr ""
1252
 
1253
+ #: build/index_mappress_admin.js:1
1254
+ msgid "Posts"
1255
+ msgstr ""
1256
+
1257
+ #: build/index_mappress_admin.js:1
1258
+ msgid "Users"
1259
+ msgstr ""
1260
+
1261
  #: build/index_mappress_admin.js:1
1262
  msgid "Filters"
1263
  msgstr ""
1264
 
1265
+ #: build/index_mappress_admin.js:1
1266
+ msgid "Role"
1267
+ msgstr ""
1268
+
1269
  #: build/index_mappress_admin.js:1
1270
  msgid "Text search"
1271
  msgstr ""
1311
  msgstr ""
1312
 
1313
  #: build/index_mappress_admin.js:1
1314
+ msgid "Include term slugs"
1315
  msgstr ""
1316
 
1317
  #: build/index_mappress_admin.js:1
1318
+ msgid "Exclude term slugs"
1319
  msgstr ""
1320
 
1321
  #: build/index_mappress_admin.js:1
1331
  msgstr ""
1332
 
1333
  #: build/index_mappress_admin.js:1
1334
+ msgid "Show in popup"
1335
+ msgstr ""
1336
+
1337
+ #: build/index_mappress_admin.js:1
1338
+ msgid "Show in list"
1339
  msgstr ""
1340
 
1341
  #: build/index_mappress_admin.js:1
1379
  msgstr ""
1380
 
1381
  #: build/index_mappress_admin.js:1
1382
+ msgid "Field mapping"
1383
  msgstr ""
1384
 
1385
  #: build/index_mappress_admin.js:1
1386
  msgid "Map field"
1387
  msgstr ""
1388
 
 
 
 
 
1389
  #: build/index_mappress_admin.js:1
1390
  msgid "Post types"
1391
  msgstr ""
1395
  msgstr ""
1396
 
1397
  #: build/index_mappress_admin.js:1
1398
+ msgid "Overwrite maps on publish/save"
1399
  msgstr ""
1400
 
1401
  #: build/index_mappress_admin.js:1
1463
  msgstr ""
1464
 
1465
  #: build/index_mappress_admin.js:1
1466
+ msgid "Output maps in iframes for better compatibility"
1467
  msgstr ""
1468
 
1469
  #: build/index_mappress_admin.js:1
1498
  msgid "Mashup list item"
1499
  msgstr ""
1500
 
1501
+ #: build/index_mappress_admin.js:1
1502
+ msgid "User popup"
1503
+ msgstr ""
1504
+
1505
+ #: build/index_mappress_admin.js:1
1506
+ msgid "User list item"
1507
+ msgstr ""
1508
+
1509
  #: build/index_mappress_admin.js:1
1510
  msgid "Editor"
1511
  msgstr ""
1522
  msgid "Geocode posts"
1523
  msgstr ""
1524
 
 
 
 
 
1525
  #: build/index_mappress_admin.js:1
1526
  msgid "For bulk geocoding (>100 items) online geocoding services are faster and less expensive."
1527
  msgstr ""
1839
  msgstr ""
1840
 
1841
  #: build/index_mappress_admin.js:1
1842
+ msgid "Mapbox makes Leaflet better, with great-looking map tiles, styled maps, and a powerful geocoder."
1843
  msgstr ""
1844
 
1845
  #: build/index_mappress_admin.js:1
languages/texts.php CHANGED
@@ -7,10 +7,13 @@ __("Settings");
7
  __("Maps");
8
  __("Import");
9
  __("Support");
 
10
  __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.");
11
  __("A Google Maps API key is required");
12
  __("Please update your");
13
  __("MapPress Settings");
 
 
14
  __("Renew your license");
15
  __("Your MapPress license has expired. %s to get the latest updates and prevent errors.");
16
  __("Please enter your MapPress license key to enable plugin updates");
@@ -39,11 +42,18 @@ __("Terrain");
39
  __("Hybrid");
40
  __("What's new");
41
  __("Version");
 
 
 
 
 
 
42
  __("Map not found");
43
  __("Post not found");
 
 
44
  __("Untitled");
45
  __("Copy of %s");
46
- __("MapPress");
47
  __("Invalid lat/lng coordinate: %s,%s");
48
  __("Default");
49
  __("Address line ");
@@ -62,9 +72,10 @@ __("Get help");
62
  __("Your account");
63
  __("Upgrade to MapPress Pro");
64
  __("Address");
65
- __("Thumbnail");
66
- __("Url");
67
  __("Custom Field");
 
 
68
  __("Your Location");
69
  __("List");
70
  __("Map");
@@ -111,6 +122,8 @@ __("Select a color");
111
  __("Opacity");
112
  __("Stroke");
113
  __("Custom color");
 
 
114
  __("Feedback");
115
  __("contact me");
116
  __("Sorry to see you go! Need help?");
@@ -284,7 +297,10 @@ __("Mashup filters");
284
  __("Filters position");
285
  __("Top");
286
  __("POI list");
 
 
287
  __("Filters");
 
288
  __("Text search");
289
  __("New filter");
290
  __("Input");
@@ -296,12 +312,13 @@ __("Format");
296
  __("Label");
297
  __("Name");
298
  __("Slug");
299
- __("Include");
300
- __("Exclude");
301
  __("Templates");
302
  __("Custom templates");
303
  __("Directions link");
304
- __("Show a directions link in popups");
 
305
  __("Thumbnails");
306
  __("Popups");
307
  __("POI lists");
@@ -312,12 +329,11 @@ __("Language");
312
  __("Language for searches and Google map controls");
313
  __("Directions server");
314
  __("Generate Maps from Custom Fields");
315
- __("Custom fields");
316
  __("Map field");
317
- __("Custom field");
318
  __("Post types");
319
  __("Overwrite");
320
- __("Overwrite maps when posts are saved");
321
  __("Google Server API key");
322
  __("Server API key for geocoding. Only required if client key is restricted by referrer.");
323
  __("Frontend Forms");
@@ -334,7 +350,7 @@ __("Disable footer scripts if maps are output using AJAX");
334
  __("Copy maps when overwriting a translation");
335
  __("Compatibility");
336
  __("Prevent loading Google Maps multiple times");
337
- __("Output maps in iframes to prevent compatibility issues");
338
  __("Reset Defaults");
339
  __("Add");
340
  __("Custom");
@@ -343,11 +359,12 @@ __("Map popup");
343
  __("Map list item");
344
  __("Mashup popup");
345
  __("Mashup list item");
 
 
346
  __("Editor");
347
  __("Reset template to default");
348
  __("Geocoding");
349
  __("Geocode posts");
350
- __("Geocode users");
351
  __("For bulk geocoding (>100 items) online geocoding services are faster and less expensive.");
352
  __("No errors");
353
  __("Geocoding errors");
@@ -427,7 +444,7 @@ __("Google API Key");
427
  __("Google requires an API key to use Google Maps. Please enter your key below.");
428
  __("Enter your API key here");
429
  __("Sign up with Mapbox");
430
- __("Mapbox makes Leaflet better with great-looking map tiles, styled maps, and a powerful geocoder.");
431
  __("A generous free tier means it's free for most sites.");
432
  __("Get Mapbox Access Token");
433
  __("Enter your access token here");
7
  __("Maps");
8
  __("Import");
9
  __("Support");
10
+ __("Upgrade");
11
  __("MapPress database tables are missing. Please deactivate the plugin and activate it again to fix this.");
12
  __("A Google Maps API key is required");
13
  __("Please update your");
14
  __("MapPress Settings");
15
+ __("Upgrade Now");
16
+ __("Your MapPress data must be upgraded! Please %s.</strong>");
17
  __("Renew your license");
18
  __("Your MapPress license has expired. %s to get the latest updates and prevent errors.");
19
  __("Please enter your MapPress license key to enable plugin updates");
42
  __("Hybrid");
43
  __("What's new");
44
  __("Version");
45
+ __("Success! Upgrade complete.");
46
+ __("MapPress");
47
+ __("Map data upgrade");
48
+ __("Your map data needs to be upgraded.");
49
+ __("Please make a database backup now. Data will be permanently modified.");
50
+ __("Your map data is up to date.");
51
  __("Map not found");
52
  __("Post not found");
53
+ __("Geocoding error: %s");
54
+ __("Location");
55
  __("Untitled");
56
  __("Copy of %s");
 
57
  __("Invalid lat/lng coordinate: %s,%s");
58
  __("Default");
59
  __("Address line ");
72
  __("Your account");
73
  __("Upgrade to MapPress Pro");
74
  __("Address");
75
+ __("URL");
 
76
  __("Custom Field");
77
+ __("Email");
78
+ __("Display Name");
79
  __("Your Location");
80
  __("List");
81
  __("Map");
122
  __("Opacity");
123
  __("Stroke");
124
  __("Custom color");
125
+ __("Error during update! Please contact support.");
126
+ __("Success! Database updated.");
127
  __("Feedback");
128
  __("contact me");
129
  __("Sorry to see you go! Need help?");
297
  __("Filters position");
298
  __("Top");
299
  __("POI list");
300
+ __("Posts");
301
+ __("Users");
302
  __("Filters");
303
+ __("Role");
304
  __("Text search");
305
  __("New filter");
306
  __("Input");
312
  __("Label");
313
  __("Name");
314
  __("Slug");
315
+ __("Include term slugs");
316
+ __("Exclude term slugs");
317
  __("Templates");
318
  __("Custom templates");
319
  __("Directions link");
320
+ __("Show in popup");
321
+ __("Show in list");
322
  __("Thumbnails");
323
  __("Popups");
324
  __("POI lists");
329
  __("Language for searches and Google map controls");
330
  __("Directions server");
331
  __("Generate Maps from Custom Fields");
332
+ __("Field mapping");
333
  __("Map field");
 
334
  __("Post types");
335
  __("Overwrite");
336
+ __("Overwrite maps on publish/save");
337
  __("Google Server API key");
338
  __("Server API key for geocoding. Only required if client key is restricted by referrer.");
339
  __("Frontend Forms");
350
  __("Copy maps when overwriting a translation");
351
  __("Compatibility");
352
  __("Prevent loading Google Maps multiple times");
353
+ __("Output maps in iframes for better compatibility");
354
  __("Reset Defaults");
355
  __("Add");
356
  __("Custom");
359
  __("Map list item");
360
  __("Mashup popup");
361
  __("Mashup list item");
362
+ __("User popup");
363
+ __("User list item");
364
  __("Editor");
365
  __("Reset template to default");
366
  __("Geocoding");
367
  __("Geocode posts");
 
368
  __("For bulk geocoding (>100 items) online geocoding services are faster and less expensive.");
369
  __("No errors");
370
  __("Geocoding errors");
444
  __("Google requires an API key to use Google Maps. Please enter your key below.");
445
  __("Enter your API key here");
446
  __("Sign up with Mapbox");
447
+ __("Mapbox makes Leaflet better, with great-looking map tiles, styled maps, and a powerful geocoder.");
448
  __("A generous free tier means it's free for most sites.");
449
  __("Get Mapbox Access Token");
450
  __("Enter your access token here");
mappress.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: MapPress Maps for WordPress
4
  Plugin URI: https://www.mappresspro.com
5
  Author URI: https://www.mappresspro.com
6
  Description: MapPress makes it easy to add Google and Leaflet Maps to WordPress
7
- Version: 2.77.3
8
  Author: Chris Richardson
9
  Text Domain: mappress-google-maps-for-wordpress
10
  Thanks to all the translators and to Scott DeJonge for his wonderful icons
@@ -16,6 +16,7 @@ Thanks to all the translators and to Scott DeJonge for his wonderful icons
16
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license.txt file for details.
17
  */
18
 
 
19
  require_once dirname( __FILE__ ) . '/mappress_obj.php';
20
  require_once dirname( __FILE__ ) . '/mappress_poi.php';
21
  require_once dirname( __FILE__ ) . '/mappress_map.php';
@@ -37,7 +38,7 @@ if (is_dir(dirname( __FILE__ ) . '/pro')) {
37
  }
38
 
39
  class Mappress {
40
- const VERSION = '2.77.3';
41
 
42
  static
43
  $baseurl,
@@ -66,7 +67,6 @@ class Mappress {
66
 
67
  self::debugging();
68
 
69
- // Pro updater
70
  if (self::$pro)
71
  self::$updater = new Mappress_Updater(self::$basename, 'mappress', self::VERSION, self::$options->license, self::$options->betas);
72
 
@@ -173,20 +173,26 @@ class Mappress {
173
  }
174
 
175
  static function admin_menu() {
176
- // Settings
 
 
 
177
  self::$pages['main'] = add_menu_page('MapPress', 'MapPress', 'manage_options', 'mappress', array('Mappress_Settings', 'options_page'), 'dashicons-location');
178
- self::$pages['settings'] = add_submenu_page('mappress', __('Settings', 'mappress-google-maps-for-wordpress'), __('Settings', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress', array('Mappress_Settings', 'options_page'));
179
- self::$pages['maps'] = add_submenu_page('mappress', __('Maps', 'mappress-google-maps-for-wordpress'), __('Maps', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_maps', array(__CLASS__, 'map_library'));
180
  if (self::$pro)
181
- self::$pages['import'] = add_submenu_page('mappress', __('Import', 'mappress-google-maps-for-wordpress'), __('Import', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_import', array('Mappress_Import', 'import_page'));
182
- self::$pages['support'] = add_submenu_page('mappress', __('Support', 'mappress-google-maps-for-wordpress'), __('Support', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_support', array('Mappress_Settings', 'support_page'));
 
183
  }
184
 
185
  static function admin_notices() {
186
  global $wpdb;
 
 
187
  $error = "<div class='notice notice-error'><p>%s</p></div>";
188
- $map_table = $wpdb->prefix . "mappress_maps";
189
- $exists = $wpdb->get_var("show tables like '$map_table'");
190
 
191
  // Non-dismissible notices
192
  if (!$exists) {
@@ -197,6 +203,13 @@ class Mappress {
197
  if (self::$options->engine != 'leaflet' && !self::get_api_keys()->browser)
198
  printf($error, sprintf("%s. %s <a href='%s'>%s</a>.", __("A Google Maps API key is required", 'mappress-google-maps-for-wordpress'), __("Please update your", 'mappress-google-maps-for-wordpress'), admin_url('admin.php?page=mappress'), __('MapPress Settings', 'mappress-google-maps-for-wordpress')));
199
 
 
 
 
 
 
 
 
200
  // Dismissibles
201
  if (is_super_admin()) {
202
  $content = "<div class='notice notice-%s is-dismissible' data-mapp-dismiss='%s'><p>%s</p></div>";
@@ -236,8 +249,8 @@ class Mappress {
236
  }
237
 
238
  static function ajax_dismiss() {
239
- $key = isset($_POST['key']) ? $_POST['key'] : null;
240
-
241
  if (!$key || sanitize_key( $key) != $key)
242
  wp_die( 0 );
243
  self::admin_notices_dismiss($key, true);
@@ -295,15 +308,27 @@ class Mappress {
295
  static function debugging() {
296
  global $wpdb;
297
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  if (isset($_GET['mp_info'])) {
299
  echo "<b>Plugin</b> " . self::$version;
300
- $posts_table = $wpdb->prefix . 'mappress_posts';
301
- $results = $wpdb->get_results("SELECT postid, mapid FROM $posts_table");
302
- echo "<br/>postid => mapid<br/>";
303
  foreach($results as $i => $result) {
304
  if ($i > 50)
305
  break;
306
- echo "<br/>$result->postid => $result->mapid";
307
  }
308
  $options = Mappress_Options::get();
309
  unset($options->mapbox, $options->license, $options->apiKey, $options->apiKeyServer);
@@ -363,6 +388,7 @@ class Mappress {
363
  global $wp_query;
364
 
365
  $mashup = new Mappress_Map($atts);
 
366
  $mashup->query = Mappress_Query::parse_query($atts);
367
 
368
  // If parameter test="true", output the query result (or global query) without using a map
@@ -391,6 +417,7 @@ class Mappress {
391
  *
392
  */
393
  static function init() {
 
394
  Mappress_Map::register();
395
  Mappress_Settings::register();
396
  Mappress_Template::register();
@@ -535,8 +562,19 @@ class Mappress {
535
  if (version_compare($current_version, '2.76', '<'))
536
  self::$notices['276_whats_new'] = array('warning', sprintf(__('MapPress templates have changed! Please update custom templates to the new format. %s.', 'mappress-google-maps-for-wordpress'), '<a target="_blank" href="https://mappresspro.com/whats-new">' . __("Learn more", 'mappress-google-maps-for-wordpress') . '</a>'));
537
 
538
- // 3.0 - downgrade for filters & meta
539
- if (version_compare($current_version, '3.0', '>=') && version_compare(self::VERSION, '3.0', '<')) {
 
 
 
 
 
 
 
 
 
 
 
540
  self::$options->filters = self::$options->filters['post'];
541
  self::$options->metaKeys = self::$options->metaKeys['post'];
542
  self::$options->save();
@@ -544,6 +582,10 @@ class Mappress {
544
  }
545
 
546
  update_option('mappress_version', self::VERSION);
 
 
 
 
547
  }
548
 
549
  // Prevent shortcodes on admin screens
@@ -612,7 +654,8 @@ class Mappress {
612
  'language' => self::get_language(),
613
  'mapbox' => self::get_api_keys()->mapbox,
614
  'nonce' => wp_create_nonce('mappress'),
615
- 'postid' => ($post) ? $post->ID : null, // Note: GT => numeric, classic => string
 
616
  'pro' => self::$pro,
617
  'ssl' => self::is_ssl(), // SSL is needed for 'your location' in directions
618
  'standardIcons' => (self::$pro) ? Mappress_Icons::$standard_icons : null,
@@ -650,8 +693,9 @@ class Mappress {
650
  $l10n['options']['standardStyles'] = $styles;
651
 
652
  // Global settings
653
- $options = array('alignment', 'clustering', 'clusteringOptions', 'country', 'defaultIcon', 'directions', 'directionsPopup', 'directionsServer',
654
- 'engine', 'filters', 'filtersPos', 'geocoder', 'highlight', 'highlightIcon', 'iconScale', 'initialOpenInfo', 'layout', 'lines', 'lineOpts',
 
655
  'mashupClick', 'mini', 'poiList', 'poiListOpen', 'poiListPageSize', 'poiZoom', 'radius', 'scrollWheel', 'search', 'searchBox', 'size', 'sizes', 'style', 'thumbHeight', 'thumbWidth', 'thumbs', 'thumbsList', 'thumbsPopup', 'tooltips', 'userLocation');
656
 
657
  foreach($options as $option) {
@@ -681,6 +725,25 @@ class Mappress {
681
  return $mimes;
682
  }
683
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
684
  static function script_loader_tag($tag, $handle, $src) {
685
  // Deregister
686
  if ( self::$options->deregister && self::$options->engine == 'google' && self::$loaded && ($handle != 'mappress-google' && (stripos($src, 'maps.googleapis.com') !== false || stripos($src, 'maps.google.com'))))
@@ -692,33 +755,36 @@ class Mappress {
692
  return $tag;
693
  }
694
 
695
- static function scripts_enqueue($type = 'frontend') {
696
  if (self::$loaded)
697
  return;
698
  else
699
  self::$loaded = true;
700
 
701
- wp_enqueue_script('mappress');
702
-
703
- // L10N - can't be done at register because $post global isn't set
704
- wp_localize_script('mappress', 'mappl10n', self::l10n());
 
 
705
 
706
- if ($type == 'backend' || $type == 'settings')
707
- wp_enqueue_script('mappress_admin');
708
 
709
- if ($type == 'settings') {
710
- if (function_exists('wp_enqueue_code_editor'))
711
- wp_enqueue_code_editor(array( 'type' => 'php' ));
 
712
  }
713
 
714
- // Templates
715
- $templates = array('map', 'map-item', 'map-popup', 'mashup-popup', 'mashup-item');
716
-
717
  foreach($templates as $template_name)
718
- Mappress_Template::enqueue_template($template_name, self::is_footer());
719
  }
720
 
721
- static function scripts_register() {
722
  $dev = self::is_dev();
723
  $footer = self::is_footer();
724
 
@@ -726,17 +792,6 @@ class Mappress {
726
  $lib = self::$baseurl . '/lib';
727
  $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/build" : self::$baseurl . '/build';
728
 
729
- // Leaflet
730
- wp_register_script("mappress-leaflet", self::unpkg('leaflet', 'leaflet.js'), null, null, $footer);
731
- wp_register_script("mappress-leaflet-omnivore", self::unpkg('leaflet-omnivore', 'leaflet-omnivore.min.js'), null, null, $footer);
732
-
733
- // Google
734
- wp_register_script("mappress-google", self::scripts_google_tag(), null, null, $footer);
735
-
736
- // Clustering ( https://github.com/googlemaps/js-markerclustererplus | https://github.com/Leaflet/Leaflet.markercluster )
737
- wp_register_script('mappress-markerclustererplus', self::unpkg('markerclustererplus', 'index.min.js'), null, null, $footer);
738
- wp_register_script('mappress-leaflet-markercluster', self::unpkg('leaflet.markercluster', 'leaflet.markercluster.js'), null, null, $footer);
739
-
740
  // Dependencies
741
  $deps = array('jquery', 'underscore', 'wp-element', 'wp-i18n');
742
  if (self::$options->engine == 'leaflet')
@@ -745,16 +800,36 @@ class Mappress {
745
  $deps[] = 'mappress-google';
746
  if (self::$options->clustering)
747
  $deps[] = (self::$options->engine == 'leaflet') ? 'mappress-leaflet-markercluster' : 'mappress-markerclustererplus';
 
748
 
749
- wp_register_script('mappress', $js . "/index_mappress.js", $deps, self::$version, $footer);
 
 
 
 
 
 
 
 
 
 
750
 
751
- $admin_deps = array('mappress', 'jquery-ui-position', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-element', 'wp-media-utils', 'wp-i18n', 'wp-notices', 'wp-url');
752
- wp_register_script('mappress_admin', $js . "/index_mappress_admin.js", $admin_deps, self::$version, $footer);
 
 
 
 
753
 
754
  // I18N
755
  if (function_exists('wp_set_script_translations')) {
756
- wp_set_script_translations('mappress', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
757
- wp_set_script_translations('mappress_admin', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
 
 
 
 
 
758
  }
759
  }
760
 
@@ -768,25 +843,6 @@ class Mappress {
768
  return "https://maps.googleapis.com/maps/api/js?{$apiversion}{$language}{$libs}{$apikey}";
769
  }
770
 
771
- static function plugin_action_links($links, $file) {
772
- $settings_link = "<a href='" . admin_url("admin.php?page=mappress") . "'>" . __('Settings', 'mappress-google-maps-for-wordpress') . "</a>";
773
- $whatsnew_link = "<a href='https://mappresspro.com/whats-new/' target='_blank'>" . __("What's new", 'mappress-google-maps-for-wordpress') . "</a>";
774
- array_unshift( $links, $whatsnew_link );
775
- array_unshift( $links, $settings_link);
776
- return $links;
777
- }
778
-
779
- static function plugins_loaded() {
780
- load_plugin_textdomain('mappress-google-maps-for-wordpress', false, dirname(self::$basename) . '/languages');
781
- }
782
-
783
- static function script($script, $ready = false) {
784
- $html = "\r\n<script type='text/javascript'>\r\n";
785
- $html .= ($ready) ? "jQuery(function() { $script });" : $script;
786
- $html .= "\r\n</script>";
787
- return $html;
788
- }
789
-
790
  static function script_template($template, $id = null) {
791
  $id = ($id) ? "id='mapp-tmpl-{$id}'" : '';
792
  $html = "\r\n<script type='text/template' $id>\r\n{$template}\r\n</script>\r\n";
@@ -820,17 +876,10 @@ class Mappress {
820
  }
821
  }
822
 
823
- // Explode layers
824
- if (isset($atts['layers'])) {
825
- $atts['layers'] = explode(',', $atts['layers']);
826
- foreach($atts['layers'] as &$layer)
827
- $layer = trim($layer);
828
- }
829
-
830
  // For center = 'post', use location of first poi in first map
831
  if (isset($atts['center']) && $atts['center'] == 'post') {
832
  global $post;
833
- $maps = Mappress_Map::get_list($post->ID, 'ids');
834
  $map = ($maps) ? Mappress_Map::get($maps[0]) : null;
835
  $atts['center'] = ($map && $map->pois) ? $map->pois[0]->point['lat'] . ',' . $map->pois[0]->point['lng'] : null;
836
  }
@@ -877,7 +926,7 @@ class Mappress {
877
  $map = Mappress_Map::get($mapid);
878
  } else {
879
  // Get the first map attached to the post
880
- $maps = Mappress_Map::get_list($post->ID);
881
  $map = (isset ($maps[0]) ? $maps[0] : false);
882
  }
883
 
@@ -910,50 +959,56 @@ class Mappress {
910
  foreach($data as &$datum)
911
  $datum = self::string_to_boolean($datum);
912
  }
913
-
914
  return $data;
915
  }
916
 
917
- static function styles_enqueue($type = 'frontend') {
918
- wp_enqueue_style('mappress-leaflet');
919
- wp_enqueue_style('mappress-leaflet-markercluster-default');
920
- wp_enqueue_style('mappress-leaflet-markercluster');
921
- wp_enqueue_style('mappress');
 
 
 
922
 
923
  if ($type == 'frontend')
924
- wp_enqueue_style('mappress-custom');
925
  else if ($type == 'backend' || $type == 'settings')
926
- wp_enqueue_style('mappress-admin');
927
  }
928
 
929
- static function styles_register() {
 
 
930
  $deps = array();
931
 
932
  // Leaflet CSS
933
  if (self::$options->engine == 'leaflet') {
934
- wp_register_style('mappress-leaflet', 'https://unpkg.com/leaflet@1.7.1/dist/leaflet.css', null, '1.7.1');
935
  $deps[] = 'mappress-leaflet';
936
  if (self::$options->clustering) {
937
- wp_register_style('mappress-leaflet-markercluster-default', self::$baseurl . "/lib/Leaflet.markercluster/MarkerCluster.Default.css", null, '1.4.1');
938
  $deps[] = 'mappress-leaflet-markercluster-default';
939
- wp_register_style('mappress-leaflet-markercluster', self::$baseurl . "/lib/Leaflet.markercluster/MarkerCluster.css", null, '1.4.1');
940
  $deps[] = 'mappress-leaflet-markercluster';
941
  }
942
  }
943
 
944
- // Mappress CSS from plugin directory
945
- wp_register_style('mappress', self::$baseurl . '/css/mappress.css', $deps, self::$version);
946
-
947
  // Mappress CSS from theme directory
948
  if ( @file_exists( get_stylesheet_directory() . '/mappress.css' ) )
949
  $file = get_stylesheet_directory_uri() . '/mappress.css';
950
  elseif ( @file_exists( get_template_directory() . '/mappress.css' ) )
951
  $file = get_template_directory_uri() . '/mappress.css';
952
- if (isset($file))
953
- wp_register_style('mappress-custom', $file, array('mappress'), self::$version);
 
 
 
 
 
954
 
955
  // Admin CSS
956
- wp_register_style('mappress-admin', self::$baseurl . '/css/mappress_admin.css', array('mappress', 'wp-edit-blocks'), self::$version);
957
  }
958
 
959
  static function template_redirect() {
@@ -1055,7 +1110,7 @@ class Mappress {
1055
  return $content;
1056
 
1057
  // Get maps associated with post
1058
- $mapids = Mappress_Map::get_list($post->ID, 'ids');
1059
  if (empty($mapids))
1060
  return $content;
1061
 
4
  Plugin URI: https://www.mappresspro.com
5
  Author URI: https://www.mappresspro.com
6
  Description: MapPress makes it easy to add Google and Leaflet Maps to WordPress
7
+ Version: 2.80.9
8
  Author: Chris Richardson
9
  Text Domain: mappress-google-maps-for-wordpress
10
  Thanks to all the translators and to Scott DeJonge for his wonderful icons
16
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license.txt file for details.
17
  */
18
 
19
+ require_once dirname( __FILE__ ) . '/mappress_db.php';
20
  require_once dirname( __FILE__ ) . '/mappress_obj.php';
21
  require_once dirname( __FILE__ ) . '/mappress_poi.php';
22
  require_once dirname( __FILE__ ) . '/mappress_map.php';
38
  }
39
 
40
  class Mappress {
41
+ const VERSION = '2.80.9';
42
 
43
  static
44
  $baseurl,
67
 
68
  self::debugging();
69
 
 
70
  if (self::$pro)
71
  self::$updater = new Mappress_Updater(self::$basename, 'mappress', self::VERSION, self::$options->license, self::$options->betas);
72
 
173
  }
174
 
175
  static function admin_menu() {
176
+ $upgrade = Mappress_Db::upgrade_check();
177
+ $parent = ($upgrade) ? null : 'mappress';
178
+ $upgrade_parent = ($upgrade) ? 'mappress' : null;
179
+
180
  self::$pages['main'] = add_menu_page('MapPress', 'MapPress', 'manage_options', 'mappress', array('Mappress_Settings', 'options_page'), 'dashicons-location');
181
+ self::$pages['settings'] = add_submenu_page($parent, __('Settings', 'mappress-google-maps-for-wordpress'), __('Settings', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress', array('Mappress_Settings', 'options_page'));
182
+ self::$pages['maps'] = add_submenu_page($parent, __('Maps', 'mappress-google-maps-for-wordpress'), __('Maps', 'mappress-google-maps-for-wordpress'), 'edit_posts', 'mappress_maps', array(__CLASS__, 'map_library'));
183
  if (self::$pro)
184
+ self::$pages['import'] = add_submenu_page($parent, __('Import', 'mappress-google-maps-for-wordpress'), __('Import', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_import', array('Mappress_Import', 'import_page'));
185
+ self::$pages['support'] = add_submenu_page($parent, __('Support', 'mappress-google-maps-for-wordpress'), __('Support', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_support', array('Mappress_Settings', 'support_page'));
186
+ self::$pages['upgrade'] = add_submenu_page($upgrade_parent, __('Upgrade', 'mappress-google-maps-for-wordpress'), __('Upgrade', 'mappress-google-maps-for-wordpress'), 'manage_options', 'mappress_db', array('Mappress_Db', 'upgrade_page'));
187
  }
188
 
189
  static function admin_notices() {
190
  global $wpdb;
191
+ $current_screen = get_current_screen();
192
+
193
  $error = "<div class='notice notice-error'><p>%s</p></div>";
194
+ $maps_table = $wpdb->prefix . "mapp_maps";
195
+ $exists = $wpdb->get_var("show tables like '$maps_table'");
196
 
197
  // Non-dismissible notices
198
  if (!$exists) {
203
  if (self::$options->engine != 'leaflet' && !self::get_api_keys()->browser)
204
  printf($error, sprintf("%s. %s <a href='%s'>%s</a>.", __("A Google Maps API key is required", 'mappress-google-maps-for-wordpress'), __("Please update your", 'mappress-google-maps-for-wordpress'), admin_url('admin.php?page=mappress'), __('MapPress Settings', 'mappress-google-maps-for-wordpress')));
205
 
206
+ // Notice to upgrade DB
207
+ if (Mappress_Db::upgrade_check() && (!$current_screen || $current_screen->id != self::$pages['upgrade'])) {
208
+ $url = admin_url('admin.php?page=mappress_db');
209
+ $link = sprintf('<a href="%s">%s</a>', $url, __("Upgrade Now", 'mappress-google-maps-for-wordpress'));
210
+ printf($error, sprintf('<strong>' . __('Your MapPress data must be upgraded! Please %s.' . '</strong>', 'mappress-google-maps-for-wordpress'), $link));
211
+ }
212
+
213
  // Dismissibles
214
  if (is_super_admin()) {
215
  $content = "<div class='notice notice-%s is-dismissible' data-mapp-dismiss='%s'><p>%s</p></div>";
249
  }
250
 
251
  static function ajax_dismiss() {
252
+ // Still sent via jQuery
253
+ $key = (isset($_POST['key'])) ? $_POST['key'] : null;
254
  if (!$key || sanitize_key( $key) != $key)
255
  wp_die( 0 );
256
  self::admin_notices_dismiss($key, true);
308
  static function debugging() {
309
  global $wpdb;
310
 
311
+ if (isset($_GET['mp_info_old'])) {
312
+ $maps_table = $wpdb->prefix . 'mappress_maps';
313
+ $posts_table = $wpdb->prefix . 'mappress_posts';
314
+ $results = $wpdb->get_results("SELECT * from $posts_table");
315
+ foreach($results as $result)
316
+ echo "<div>mapid: " . $result->mapid . " - postid: " . $result->postid . "</div>";
317
+ $results = $wpdb->get_results("SELECT * FROM $maps_table");
318
+ foreach($results as $result)
319
+ echo "<div>mapid: " . $result->mapid . " obj: " . esc_html($result->obj) . "</div><hr>";
320
+ die();
321
+ }
322
+
323
  if (isset($_GET['mp_info'])) {
324
  echo "<b>Plugin</b> " . self::$version;
325
+ $maps_table = $wpdb->prefix . 'mapp_maps';
326
+ $results = $wpdb->get_results("SELECT otype, oid, mapid FROM $maps_table");
327
+ echo "<br/>otype/oid => mapid<br/>";
328
  foreach($results as $i => $result) {
329
  if ($i > 50)
330
  break;
331
+ echo "<br/>$result->otype / $result->oid => $result->mapid";
332
  }
333
  $options = Mappress_Options::get();
334
  unset($options->mapbox, $options->license, $options->apiKey, $options->apiKeyServer);
388
  global $wp_query;
389
 
390
  $mashup = new Mappress_Map($atts);
391
+ $mashup->otype = (isset($atts['otype']) && $atts['otype'] == 'user') ? 'user' : 'post';
392
  $mashup->query = Mappress_Query::parse_query($atts);
393
 
394
  // If parameter test="true", output the query result (or global query) without using a map
417
  *
418
  */
419
  static function init() {
420
+ Mappress_Db::register();
421
  Mappress_Map::register();
422
  Mappress_Settings::register();
423
  Mappress_Template::register();
562
  if (version_compare($current_version, '2.76', '<'))
563
  self::$notices['276_whats_new'] = array('warning', sprintf(__('MapPress templates have changed! Please update custom templates to the new format. %s.', 'mappress-google-maps-for-wordpress'), '<a target="_blank" href="https://mappresspro.com/whats-new">' . __("Learn more", 'mappress-google-maps-for-wordpress') . '</a>'));
564
 
565
+ // 2.80 - DB upgrade setup, filters and meta
566
+ if (version_compare($current_version, '2.80', '<')) {
567
+ // Convert filters and meta to include users
568
+ self::$options->filters = array('post' => self::$options->filters, 'user' => array());
569
+ self::$options->metaKeys = array('post' => self::$options->metaKeys, 'user' => array());
570
+ self::$options->save();
571
+
572
+ // trigger DB ugprade by setting db_version lower than current version
573
+ update_option('mappress_db_version', '2.79');
574
+ }
575
+
576
+ // 2.80 - downgrade for filters & meta
577
+ if (version_compare($current_version, '2.80', '>=') && version_compare(self::VERSION, '2.80', '<')) {
578
  self::$options->filters = self::$options->filters['post'];
579
  self::$options->metaKeys = self::$options->metaKeys['post'];
580
  self::$options->save();
582
  }
583
 
584
  update_option('mappress_version', self::VERSION);
585
+
586
+ // 2.80 - trigger immediate DB upgrade once, after version update
587
+ if (version_compare($current_version, '2.81', '<'))
588
+ Mappress_Db::upgrade();
589
  }
590
 
591
  // Prevent shortcodes on admin screens
654
  'language' => self::get_language(),
655
  'mapbox' => self::get_api_keys()->mapbox,
656
  'nonce' => wp_create_nonce('mappress'),
657
+ 'oid' => ($post) ? $post->ID : null, // Note: GT => numeric, classic => string
658
+ 'otype' => ($post) ? 'post' : null, // Not for users yet
659
  'pro' => self::$pro,
660
  'ssl' => self::is_ssl(), // SSL is needed for 'your location' in directions
661
  'standardIcons' => (self::$pro) ? Mappress_Icons::$standard_icons : null,
693
  $l10n['options']['standardStyles'] = $styles;
694
 
695
  // Global settings
696
+ $options = array('alignment', 'clustering', 'clusteringOptions', 'country', 'defaultIcon', 'directions', 'directionsList',
697
+ 'directionsPopup', 'directionsServer', 'engine', 'filters', 'filtersPos', 'geocoder',
698
+ 'highlight', 'highlightIcon', 'iconScale', 'initialOpenInfo', 'layout', 'lines', 'lineOpts',
699
  'mashupClick', 'mini', 'poiList', 'poiListOpen', 'poiListPageSize', 'poiZoom', 'radius', 'scrollWheel', 'search', 'searchBox', 'size', 'sizes', 'style', 'thumbHeight', 'thumbWidth', 'thumbs', 'thumbsList', 'thumbsPopup', 'tooltips', 'userLocation');
700
 
701
  foreach($options as $option) {
725
  return $mimes;
726
  }
727
 
728
+ static function plugin_action_links($links, $file) {
729
+ $settings_link = "<a href='" . admin_url("admin.php?page=mappress") . "'>" . __('Settings', 'mappress-google-maps-for-wordpress') . "</a>";
730
+ $whatsnew_link = "<a href='https://mappresspro.com/whats-new/' target='_blank'>" . __("What's new", 'mappress-google-maps-for-wordpress') . "</a>";
731
+ array_unshift( $links, $whatsnew_link );
732
+ array_unshift( $links, $settings_link);
733
+ return $links;
734
+ }
735
+
736
+ static function plugins_loaded() {
737
+ load_plugin_textdomain('mappress-google-maps-for-wordpress', false, dirname(self::$basename) . '/languages');
738
+ }
739
+
740
+ static function script($script, $ready = false) {
741
+ $html = "\r\n<script type='text/javascript'>\r\n";
742
+ $html .= ($ready) ? "jQuery(function() { $script });" : $script;
743
+ $html .= "\r\n</script>";
744
+ return $html;
745
+ }
746
+
747
  static function script_loader_tag($tag, $handle, $src) {
748
  // Deregister
749
  if ( self::$options->deregister && self::$options->engine == 'google' && self::$loaded && ($handle != 'mappress-google' && (stripos($src, 'maps.googleapis.com') !== false || stripos($src, 'maps.google.com'))))
755
  return $tag;
756
  }
757
 
758
+ static function scripts_enqueue($type = 'frontend', $scripts = null) {
759
  if (self::$loaded)
760
  return;
761
  else
762
  self::$loaded = true;
763
 
764
+ if ($scripts) {
765
+ $scripts->enqueue('mappress');
766
+ $scripts->localize('mappress', 'mappl10n', self::l10n());
767
+ } else {
768
+ wp_enqueue_script('mappress');
769
+ wp_localize_script('mappress', 'mappl10n', self::l10n());
770
 
771
+ if ($type == 'backend' || $type == 'settings')
772
+ wp_enqueue_script('mappress_admin');
773
 
774
+ if ($type == 'settings') {
775
+ if (function_exists('wp_enqueue_code_editor'))
776
+ wp_enqueue_code_editor(array( 'type' => 'php' ));
777
+ }
778
  }
779
 
780
+ // Templates (iframes always queue in footer)
781
+ $footer = ($scripts) ? true : self::is_footer();
782
+ $templates = array('map', 'map-item', 'map-popup', 'mashup-popup', 'mashup-item', 'user-mashup-item', 'user-mashup-popup');
783
  foreach($templates as $template_name)
784
+ Mappress_Template::enqueue_template($template_name, $footer);
785
  }
786
 
787
+ static function scripts_register($scripts = null) {
788
  $dev = self::is_dev();
789
  $footer = self::is_footer();
790
 
792
  $lib = self::$baseurl . '/lib';
793
  $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/build" : self::$baseurl . '/build';
794
 
 
 
 
 
 
 
 
 
 
 
 
795
  // Dependencies
796
  $deps = array('jquery', 'underscore', 'wp-element', 'wp-i18n');
797
  if (self::$options->engine == 'leaflet')
800
  $deps[] = 'mappress-google';
801
  if (self::$options->clustering)
802
  $deps[] = (self::$options->engine == 'leaflet') ? 'mappress-leaflet-markercluster' : 'mappress-markerclustererplus';
803
+ $admin_deps = array('mappress', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-element', 'wp-media-utils', 'wp-i18n', 'wp-notices', 'wp-url');
804
 
805
+ // Clustering ( https://github.com/googlemaps/js-markerclustererplus | https://github.com/Leaflet/Leaflet.markercluster )
806
+ // Google's clusterer is still broken: https://github.com/googlemaps/js-markerclusterer/issues/220
807
+ $register = array(
808
+ array("mappress-leaflet", self::unpkg('leaflet', 'leaflet.js'), null, null, $footer),
809
+ array("mappress-leaflet-omnivore", self::unpkg('leaflet-omnivore', 'leaflet-omnivore.min.js'), null, null, $footer),
810
+ array("mappress-google", self::scripts_google_tag(), null, null, $footer),
811
+ array('mappress-markerclustererplus', self::unpkg('markerclustererplus', 'index.min.js'), null, null, $footer),
812
+ array('mappress-leaflet-markercluster', self::unpkg('leaflet.markercluster', 'leaflet.markercluster.js'), null, null, $footer),
813
+ array('mappress', $js . "/index_mappress.js", $deps, self::$version, $footer),
814
+ array('mappress_admin', $js . "/index_mappress_admin.js", $admin_deps, self::$version, $footer)
815
+ );
816
 
817
+ foreach($register as $script) {
818
+ if ($scripts)
819
+ $scripts->add($script[0], $script[1], $script[2], $script[3], $script[4]);
820
+ else
821
+ wp_register_script($script[0], $script[1], $script[2], $script[3], $script[4]);
822
+ }
823
 
824
  // I18N
825
  if (function_exists('wp_set_script_translations')) {
826
+ if ($scripts) {
827
+ $scripts->set_translations('mappress', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
828
+ $scripts->set_translations('mappress_admin', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
829
+ } else {
830
+ wp_set_script_translations('mappress', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
831
+ wp_set_script_translations('mappress_admin', 'mappress-google-maps-for-wordpress', self::$basedir . '/languages');
832
+ }
833
  }
834
  }
835
 
843
  return "https://maps.googleapis.com/maps/api/js?{$apiversion}{$language}{$libs}{$apikey}";
844
  }
845
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  static function script_template($template, $id = null) {
847
  $id = ($id) ? "id='mapp-tmpl-{$id}'" : '';
848
  $html = "\r\n<script type='text/template' $id>\r\n{$template}\r\n</script>\r\n";
876
  }
877
  }
878
 
 
 
 
 
 
 
 
879
  // For center = 'post', use location of first poi in first map
880
  if (isset($atts['center']) && $atts['center'] == 'post') {
881
  global $post;
882
+ $maps = Mappress_Map::get_list('post', $post->ID, 'ids');
883
  $map = ($maps) ? Mappress_Map::get($maps[0]) : null;
884
  $atts['center'] = ($map && $map->pois) ? $map->pois[0]->point['lat'] . ',' . $map->pois[0]->point['lng'] : null;
885
  }
926
  $map = Mappress_Map::get($mapid);
927
  } else {
928
  // Get the first map attached to the post
929
+ $maps = Mappress_Map::get_list('post', $post->ID);
930
  $map = (isset ($maps[0]) ? $maps[0] : false);
931
  }
932
 
959
  foreach($data as &$datum)
960
  $datum = self::string_to_boolean($datum);
961
  }
 
962
  return $data;
963
  }
964
 
965
+ static function styles_enqueue($type, $styles = null) {
966
+ global $wp_styles;
967
+ $styles = ($styles) ? $styles : $wp_styles;
968
+
969
+ $styles->enqueue('mappress-leaflet');
970
+ $styles->enqueue('mappress-leaflet-markercluster-default');
971
+ $styles->enqueue('mappress-leaflet-markercluster');
972
+ $styles->enqueue('mappress');
973
 
974
  if ($type == 'frontend')
975
+ $styles->enqueue('mappress-custom');
976
  else if ($type == 'backend' || $type == 'settings')
977
+ $styles->enqueue('mappress-admin');
978
  }
979
 
980
+ static function styles_register($styles = null) {
981
+ $styles = ($styles) ? $styles : wp_styles();
982
+
983
  $deps = array();
984
 
985
  // Leaflet CSS
986
  if (self::$options->engine == 'leaflet') {
987
+ $styles->add('mappress-leaflet', 'https://unpkg.com/leaflet@1.7.1/dist/leaflet.css', null, '1.7.1');
988
  $deps[] = 'mappress-leaflet';
989
  if (self::$options->clustering) {
990
+ $styles->add('mappress-leaflet-markercluster-default', self::$baseurl . "/lib/Leaflet.markercluster/MarkerCluster.Default.css", null, '1.4.1');
991
  $deps[] = 'mappress-leaflet-markercluster-default';
992
+ $styles->add('mappress-leaflet-markercluster', self::$baseurl . "/lib/Leaflet.markercluster/MarkerCluster.css", null, '1.4.1');
993
  $deps[] = 'mappress-leaflet-markercluster';
994
  }
995
  }
996
 
 
 
 
997
  // Mappress CSS from theme directory
998
  if ( @file_exists( get_stylesheet_directory() . '/mappress.css' ) )
999
  $file = get_stylesheet_directory_uri() . '/mappress.css';
1000
  elseif ( @file_exists( get_template_directory() . '/mappress.css' ) )
1001
  $file = get_template_directory_uri() . '/mappress.css';
1002
+ if (isset($file)) {
1003
+ $styles->add('mappress-custom', $file, array('mappress'), self::$version);
1004
+ $deps[] = 'mappress-custom';
1005
+ }
1006
+
1007
+ // Frontend
1008
+ $styles->add('mappress', self::$baseurl . '/css/mappress.css', $deps, self::$version);
1009
 
1010
  // Admin CSS
1011
+ $styles->add('mappress-admin', self::$baseurl . '/css/mappress_admin.css', array('mappress', 'wp-edit-blocks'), self::$version);
1012
  }
1013
 
1014
  static function template_redirect() {
1110
  return $content;
1111
 
1112
  // Get maps associated with post
1113
+ $mapids = Mappress_Map::get_list('post', $post->ID, 'ids');
1114
  if (empty($mapids))
1115
  return $content;
1116
 
mappress_db.php ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mappress_Db {
3
+ const DB_VERSION = '2.80';
4
+
5
+ static function register() {
6
+ self::create_db();
7
+ add_action('wp_ajax_mapp_upgrade', array(__CLASS__, 'ajax_upgrade'));
8
+ }
9
+
10
+ static function create_db() {
11
+ global $wpdb;
12
+ $maps_table = $wpdb->prefix . 'mapp_maps';
13
+
14
+ $exists = $wpdb->get_var("show tables like '$maps_table'");
15
+ if ($exists)
16
+ return;
17
+
18
+ $wpdb->show_errors(true);
19
+ $result = $wpdb->query("CREATE TABLE IF NOT EXISTS $maps_table (
20
+ mapid INT NOT NULL AUTO_INCREMENT,
21
+ otype VARCHAR(32),
22
+ oid INT,
23
+ status VARCHAR(64),
24
+ title VARCHAR(512),
25
+ obj LONGTEXT,
26
+ INDEX title_idx (title),
27
+ PRIMARY KEY (mapid),
28
+ UNIQUE KEY object_idx (otype, oid, mapid)
29
+ ) CHARACTER SET utf8;"
30
+ );
31
+ $wpdb->show_errors(false);
32
+ return $result;
33
+ }
34
+
35
+ static function ajax_upgrade() {
36
+ check_ajax_referer('mappress', 'nonce');
37
+
38
+ if (!current_user_can('manage_options'))
39
+ Mappress::ajax_response('Not authorized');
40
+
41
+ // Process each upgrade
42
+ $upgrades = array('2.80');
43
+ $current_version = get_option('mappress_db_version');
44
+
45
+ foreach($upgrades as $version) {
46
+ if ($current_version && version_compare($current_version, $version, '>='))
47
+ continue;
48
+
49
+ $result = self::upgrade();
50
+ if ($result !== true)
51
+ Mappress::ajax_response($result);
52
+ }
53
+ Mappress::ajax_response('OK', array('msgtype' => 'i', 'msg' => __('Success! Upgrade complete.', 'mappress-google-maps-for-wordpress')));
54
+ }
55
+
56
+ // Run all available upgrades, can be called immediately during plugin upgrade or from upgrade screen
57
+ static function upgrade() {
58
+ // Process each upgrade
59
+ $upgrades = array('2.80');
60
+ $current_version = get_option('mappress_db_version');
61
+
62
+ foreach($upgrades as $version) {
63
+ if ($current_version && version_compare($current_version, $version, '>='))
64
+ continue;
65
+
66
+ $fn = 'upgrade_' . str_replace('.', '_', $version);
67
+
68
+ if (!method_exists(__CLASS__, $fn))
69
+ return 'Upgrade function missing: ' . $fn;
70
+
71
+ $result = self::$fn();
72
+
73
+ if ($result !== true)
74
+ return $result;
75
+
76
+ update_option('mappress_db_version', $version);
77
+ $current_version = $version;
78
+ return true;
79
+ }
80
+ }
81
+
82
+ static function upgrade_2_80() {
83
+ global $wpdb;
84
+
85
+ $new_maps = $wpdb->prefix . 'mapp_maps';
86
+ $old_maps = $wpdb->prefix . 'mappress_maps';
87
+ $posts_table = $wpdb->prefix . 'mappress_posts';
88
+
89
+ // Create new maps table
90
+ $wpdb->query("DROP TABLE IF EXISTS $new_maps");
91
+ $result = self::create_db();
92
+ if ($result === false)
93
+ return $wpdb->last_error();
94
+
95
+ // Populate
96
+ $sql = "SELECT $posts_table.mapid, $posts_table.postid, $old_maps.obj "
97
+ . " FROM $old_maps "
98
+ . " INNER JOIN $posts_table ON ($posts_table.mapid = $old_maps.mapid)";
99
+ $rows = $wpdb->get_results($sql);
100
+
101
+ // Modify rows, can be rerun because most data is read from legacy posts table
102
+ foreach($rows as $row) {
103
+ $mapdata = unserialize($row->obj);
104
+ $mapdata->mapid = $row->mapid;
105
+ $mapdata->oid = $row->postid;
106
+ $mapdata->otype = 'post';
107
+ unset($mapdata->postid);
108
+
109
+ // Update POIs to remove correctedAddress
110
+ foreach($mapdata->pois as $poi) {
111
+ if ($poi->correctedAddress) {
112
+ $poi->address = $poi->correctedAddress;
113
+ unset ($poi->correctedAddress);
114
+ }
115
+ }
116
+
117
+ $map = new Mappress_Map($mapdata);
118
+ $result = $map->save();
119
+
120
+ if ($result === false)
121
+ return 'ERROR SAVING: ' . $wpdb->last_error;
122
+ }
123
+ $wpdb->query("COMMIT WORK");
124
+ return true;
125
+ }
126
+
127
+ static function upgrade_check() {
128
+ $current_version = get_option('mappress_db_version');
129
+
130
+ if (empty($current_version)) {
131
+ update_option('mappress_db_version', self::DB_VERSION);
132
+ return false;
133
+ }
134
+
135
+ return (version_compare($current_version, self::DB_VERSION, '<'));
136
+ }
137
+
138
+ static function upgrade_page() {
139
+ $state = array(
140
+ 'nonce' => wp_create_nonce('mappress'),
141
+ );
142
+
143
+ ?>
144
+ <script>var mappress_upgrade_state=<?php echo json_encode($state);?>;</script>
145
+ <div class="mapp-options">
146
+ <div class='mapp-options-header'>
147
+ <div class='mapp-options-header-version'>
148
+ <h1><?php _e('MapPress', 'mappress-google-maps-for-wordpress'); ?></h1>
149
+ <?php echo Mappress::$version; ?>
150
+ </div>
151
+ </div>
152
+ <div class='mapp-upgrade' action=''>
153
+ <?php if (self::upgrade_check()) { ?>
154
+ <h3><?php _e('Map data upgrade', 'mappress-google-maps-for-wordpress') ?></h3>
155
+ <div><?php _e('Your map data needs to be upgraded.', 'mappress-google-maps-for-wordpress');?></div>
156
+ <div class='mapp-upgrade-warning'><?php _e('Please make a database backup now. Data will be permanently modified.', 'mappress-google-maps-for-wordpress'); ?></div>
157
+ <div id="mapp-db-upgrade"></div>
158
+ <?php } else { ?>
159
+ <h2><?php _e('Your map data is up to date.', 'mappress-google-maps-for-wordpress');?></h2>
160
+ <?php } ?>
161
+ </div>
162
+ </div>
163
+ <?php
164
+ }
165
+ }
166
+ ?>
mappress_map.php CHANGED
@@ -17,8 +17,9 @@ class Mappress_Map extends Mappress_Obj {
17
  $mapTypeId,
18
  $metaKey,
19
  $name,
 
 
20
  $poiList,
21
- $postid,
22
  $query,
23
  $search,
24
  $status,
@@ -29,8 +30,26 @@ class Mappress_Map extends Mappress_Obj {
29
 
30
  var $pois = array();
31
 
32
- function __sleep() {
33
- return array('mapid', 'center', 'height', 'mapTypeId', 'metaKey', 'pois', 'search', 'status', 'title', 'width', 'zoom');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
 
36
  function __construct($atts = null) {
@@ -58,30 +77,9 @@ class Mappress_Map extends Mappress_Obj {
58
  add_action('wp_ajax_mapp_save', array(__CLASS__, 'ajax_save'));
59
  add_action('media_buttons', array(__CLASS__, 'media_buttons'));
60
 
61
- // Tables
62
- $maps_table = $wpdb->prefix . 'mappress_maps';
63
- $posts_table = $wpdb->prefix . 'mappress_posts';
64
-
65
- $wpdb->show_errors(true);
66
-
67
- $exists = $wpdb->get_var("show tables like '$maps_table'");
68
- if (!$exists) {
69
- $result = $wpdb->query ("CREATE TABLE $maps_table (
70
- mapid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
71
- obj LONGTEXT)
72
- CHARACTER SET utf8;");
73
- }
74
-
75
- $exists = $wpdb->get_var("show tables like '$posts_table'");
76
- if (!$exists) {
77
- $result = $wpdb->query ("CREATE TABLE $posts_table (
78
- postid INT,
79
- mapid INT,
80
- PRIMARY KEY (postid, mapid) )
81
- CHARACTER SET utf8;");
82
- }
83
-
84
- $wpdb->show_errors(false);
85
  }
86
 
87
  static function ajax_delete() {
@@ -91,7 +89,8 @@ class Mappress_Map extends Mappress_Obj {
91
  Mappress::ajax_response('Not authorized');
92
 
93
  ob_start();
94
- $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
 
95
  $result = Mappress_Map::delete($mapid);
96
 
97
  if (!$result)
@@ -108,13 +107,15 @@ class Mappress_Map extends Mappress_Obj {
108
  if (!current_user_can('edit_posts'))
109
  Mappress::ajax_response('Not authorized');
110
 
111
- $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
112
- $postid = (isset($_POST['postid'])) ? $_POST['postid'] : null;
 
 
113
 
114
  if (!$mapid)
115
  Mappress::ajax_response('Internal error, your data has not been saved!');
116
 
117
- $map = self::duplicate($mapid, $postid);
118
  if ($map)
119
  Mappress::ajax_response('OK', $map);
120
  else
@@ -127,6 +128,7 @@ class Mappress_Map extends Mappress_Obj {
127
 
128
  if (!current_user_can('edit_posts'))
129
  Mappress::ajax_response('Not authorized');
 
130
  Mappress::ajax_response('OK', self::find($_GET));
131
  }
132
 
@@ -153,11 +155,11 @@ class Mappress_Map extends Mappress_Obj {
153
 
154
  check_ajax_referer('mappress', 'nonce');
155
  ob_start();
156
- $postid = (isset($_GET['postid'])) ? $_GET['postid'] : null;
157
- $post = get_post( $postid );
158
 
159
  if (!$post)
160
- die(sprintf(__('Post not found', 'mappress-google-maps-for-wordpress'), $postid));
161
 
162
  setup_postdata($post);
163
  $html = Mappress_Template::get_template('mashup-modal');
@@ -166,7 +168,6 @@ class Mappress_Map extends Mappress_Obj {
166
 
167
  static function ajax_mutate() {
168
  global $wpdb;
169
- $posts_table = $wpdb->prefix . 'mappress_posts';
170
 
171
  check_ajax_referer('mappress', 'nonce');
172
 
@@ -174,9 +175,9 @@ class Mappress_Map extends Mappress_Obj {
174
  Mappress::ajax_response('Not authorized');
175
 
176
  ob_start();
177
-
178
- $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
179
- $mapdata = (isset($_POST['mapdata'])) ? $_POST['mapdata'] : null;
180
 
181
  $result = self::mutate($mapid, $mapdata);
182
  if (!$result)
@@ -193,7 +194,8 @@ class Mappress_Map extends Mappress_Obj {
193
  Mappress::ajax_response('Not authorized');
194
 
195
  ob_start();
196
- $mapdata = (isset($_POST['mapdata'])) ? json_decode(stripslashes($_POST['mapdata']), true) : null;
 
197
 
198
  if (!$mapdata)
199
  Mappress::ajax_response('Internal error, your data has not been saved!');
@@ -216,6 +218,10 @@ class Mappress_Map extends Mappress_Obj {
216
  function autoicons() {
217
  global $post;
218
 
 
 
 
 
219
  // Only 1 rule allowed
220
  $rule = (object) wp_parse_args(Mappress::$options->autoicons, array('key' => null, 'values' => array()));
221
 
@@ -239,7 +245,7 @@ class Mappress_Map extends Mappress_Obj {
239
  // Check each post ID to see if it's in the map's POIs, if so set iconid
240
  $current_post = ($post) ? $post->ID : null;
241
  foreach($this->pois as &$poi) {
242
- $postid = ($poi->postid) ? $poi->postid : $current_post;
243
  if (in_array($postid, $postids))
244
  $poi->iconid = $iconid;
245
  }
@@ -270,11 +276,9 @@ class Mappress_Map extends Mappress_Obj {
270
  */
271
  static function delete($mapid) {
272
  global $wpdb;
273
- $maps_table = $wpdb->prefix . 'mappress_maps';
274
- $posts_table = $wpdb->prefix . 'mappress_posts';
275
 
276
- // Delete from posts table
277
- $result = $wpdb->query($wpdb->prepare("DELETE FROM $posts_table WHERE mapid = %d", $mapid));
278
  if ($result === false)
279
  return false;
280
 
@@ -286,10 +290,21 @@ class Mappress_Map extends Mappress_Obj {
286
  * When a post is deleted, trash attached maps
287
  */
288
  static function deleted_post($postid) {
289
- $mapids = self::get_list($postid, 'ids');
290
  $result = true;
291
  foreach($mapids as $mapid)
292
- $result = $result && self::mutate($mapid, array('status' => 'trashed'));
 
 
 
 
 
 
 
 
 
 
 
293
  return $result;
294
  }
295
 
@@ -319,7 +334,7 @@ class Mappress_Map extends Mappress_Obj {
319
  // Last chance to alter map before display
320
  do_action('mappress_map_display', $this);
321
 
322
- // Container
323
  $id = $this->name . '-layout';
324
  $html = "<div class='mapp-layout' id='$id'></div>";
325
 
@@ -366,7 +381,30 @@ class Mappress_Map extends Mappress_Obj {
366
  return $html;
367
  }
368
 
369
- static function duplicate($mapid, $postid) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
370
  $map = self::get($mapid);
371
  if (!$map)
372
  return null;
@@ -374,7 +412,8 @@ class Mappress_Map extends Mappress_Obj {
374
  $title = ($map->title) ? $map->title : __('Untitled', 'mappress-google-maps-for-wordpress');
375
  $map->title = sprintf(__('Copy of %s', 'mappress-google-maps-for-wordpress'), $title);
376
 
377
- $map->postid = $postid;
 
378
  $map->mapid = null;
379
  $map->metaKey = null; // Map is no longer automatic
380
 
@@ -385,33 +424,32 @@ class Mappress_Map extends Mappress_Obj {
385
  static function find($args) {
386
  global $wpdb;
387
 
388
- $maps_table = $wpdb->prefix . 'mappress_maps';
389
- $posts_table = $wpdb->prefix . 'mappress_posts';
390
 
391
- $sql = "SELECT SQL_CALC_FOUND_ROWS $maps_table.mapid, $maps_table.obj, $posts_table.postid, $wpdb->posts.post_status, $wpdb->posts.post_title "
 
392
  . " FROM $maps_table "
393
- . " INNER JOIN $posts_table ON ($posts_table.mapid = $maps_table.mapid)"
394
- . " LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID = $posts_table.postid)"
395
  ;
396
  $results = $wpdb->get_results($sql);
397
 
398
  $items = array();
399
  foreach($results as $result) {
400
- // Only check if map is attached to a post (postid > 0)
401
- if ($result->postid) {
402
- if (!current_user_can('edit_post', $result->postid))
403
  continue;
404
  if (in_array($result->post_status, array('auto-draft', 'inherit')))
405
  continue;
406
  }
407
 
408
- $mapdata = unserialize($result->obj);
409
  $items[] = array(
410
  'mapid' => $result->mapid,
411
- 'title' => $mapdata->title,
412
- 'postid' => $result->postid,
 
413
  'post_title' => $result->post_title,
414
- 'status' => $mapdata->status
415
  );
416
  }
417
  return $items;
@@ -422,20 +460,26 @@ class Mappress_Map extends Mappress_Obj {
422
  */
423
  static function get($mapid) {
424
  global $wpdb;
425
- $maps_table = $wpdb->prefix . 'mappress_maps';
426
- $posts_table = $wpdb->prefix . 'mappress_posts';
427
 
428
- $sql = "SELECT $posts_table.postid, $maps_table.mapid, $maps_table.obj FROM $posts_table INNER JOIN $maps_table ON ($maps_table.mapid = $posts_table.mapid) WHERE $maps_table.mapid = %d";
429
- $result = $wpdb->get_row($wpdb->prepare($sql, $mapid));
430
 
431
  if (!$result)
432
  return false;
433
 
434
- // Read the map data and construct a new map from it
435
- $mapdata = unserialize($result->obj);
436
- $mapdata->postid = $result->postid;
 
437
  $mapdata->mapid = $result->mapid;
438
- return new Mappress_Map($mapdata);
 
 
 
 
 
 
439
  }
440
 
441
  /**
@@ -444,13 +488,16 @@ class Mappress_Map extends Mappress_Obj {
444
  * @return array of mapids | empty array
445
  *
446
  */
447
- static function get_list($postid = null, $output = 'objects') {
448
  global $wpdb;
449
- $posts_table = $wpdb->prefix . 'mappress_posts';
450
 
451
- $where = ($postid) ? $wpdb->prepare("WHERE postid = %d", $postid) : '';
 
 
 
452
 
453
- $mapids = $wpdb->get_col("SELECT mapid FROM $posts_table $where");
454
  if (!$mapids)
455
  return array();
456
 
@@ -476,7 +523,7 @@ class Mappress_Map extends Mappress_Obj {
476
  if (!$mapid || !$mapdata)
477
  return false;
478
 
479
- $map = self::get($mapid, true);
480
  if (!$map)
481
  return false;
482
 
@@ -492,27 +539,37 @@ class Mappress_Map extends Mappress_Obj {
492
  function prepare() {
493
  global $post, $wp_embed;
494
 
495
- // Sort the pois
496
- if (Mappress::$options->sort && !isset($this->query['orderby']))
497
- $this->sort_pois();
498
 
499
- // Set properties (mashups and maps)
500
  foreach($this->pois as $poi) {
501
- if ($poi->postid)
502
- $postid = $poi->postid;
503
- else
504
- $postid = ($post) ? $post->ID : null;
505
- $poi->props = apply_filters('mappress_poi_props', $poi->props, $postid, $poi);
506
 
507
- // Oembeds
508
- $poi->body = $wp_embed->autoembed($poi->body);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
509
 
510
  // Update image URLs
511
  $poi->update_images();
512
  }
513
 
514
  // Autoicons & sort
515
- $this->autoicons();
 
516
 
517
  if (Mappress::$options->sort && !isset($this->query['orderby']))
518
  $this->sort_pois();
@@ -520,41 +577,29 @@ class Mappress_Map extends Mappress_Obj {
520
 
521
  function save() {
522
  global $wpdb;
523
- $maps_table = $wpdb->prefix . 'mappress_maps';
524
- $posts_table = $wpdb->prefix . 'mappress_posts';
525
 
526
  // Apply wpautop to POI bodies
527
  foreach($this->pois as &$poi)
528
  $poi->body = wpautop($poi->body);
529
 
530
- // Make sure there's a postid
531
- if (is_null($this->postid))
532
- return false;
533
-
534
- $map = serialize($this);
535
 
536
- // Update map
537
  if (!$this->mapid) {
538
- // If no ID then autonumber
539
- $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (obj) VALUES(%s)", $map));
540
  $this->mapid = $wpdb->get_var("SELECT LAST_INSERT_ID()");
541
  } else {
542
- // Id provided, so insert or update
543
- $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (mapid, obj) VALUES(%d, '%s') ON DUPLICATE KEY UPDATE obj = %s", $this->mapid, $map, $map));
 
 
544
  }
545
 
546
  if ($result === false || !$this->mapid)
547
  return false;
548
 
549
- // Delete any existing post assignment to prevent multiple attachment
550
- $wpdb->query($wpdb->prepare("DELETE FROM $posts_table WHERE mapid = %d", $this->mapid));
551
-
552
- $result = $wpdb->query($wpdb->prepare("INSERT INTO $posts_table (postid, mapid) VALUES(%d, %d) ON DUPLICATE KEY UPDATE postid = %d, mapid = %d", $this->postid, $this->mapid,
553
- $this->postid, $this->mapid));
554
-
555
- if ($result === false)
556
- return false;
557
-
558
  $wpdb->query("COMMIT");
559
  return true;
560
  }
@@ -576,7 +621,7 @@ class Mappress_Map extends Mappress_Obj {
576
  * When a post is trashed, trash attached maps
577
  */
578
  static function trashed_post($postid) {
579
- $mapids = self::get_list($postid, 'ids');
580
  $result = true;
581
  foreach($mapids as $mapid)
582
  $result = $result && self::mutate($mapid, array('status' => 'trashed'));
17
  $mapTypeId,
18
  $metaKey,
19
  $name,
20
+ $oid,
21
+ $otype,
22
  $poiList,
 
23
  $query,
24
  $search,
25
  $status,
30
 
31
  var $pois = array();
32
 
33
+ function to_json() {
34
+ $json_pois = array();
35
+ foreach($this->pois as $poi)
36
+ $json_pois[] = $poi->to_json();
37
+
38
+ return json_encode(array(
39
+ 'mapid' => $this->mapid,
40
+ 'otype' => $this->otype,
41
+ 'oid' => $this->oid,
42
+ 'center' => $this->center,
43
+ 'height' => $this->height,
44
+ 'mapTypeId' => $this->mapTypeId,
45
+ 'metaKey' => $this->metaKey,
46
+ 'pois' => $json_pois,
47
+ 'search' => $this->search,
48
+ 'status' => $this->status,
49
+ 'title' => $this->title,
50
+ 'width' => $this->width,
51
+ 'zoom' => $this->zoom
52
+ ));
53
  }
54
 
55
  function __construct($atts = null) {
77
  add_action('wp_ajax_mapp_save', array(__CLASS__, 'ajax_save'));
78
  add_action('media_buttons', array(__CLASS__, 'media_buttons'));
79
 
80
+ add_action('show_user_profile', array(__CLASS__, 'display_user_map'));
81
+ add_action('edit_user_profile', array(__CLASS__, 'display_user_map'));
82
+ add_action('deleted_user', array(__CLASS__, 'deleted_user'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  }
84
 
85
  static function ajax_delete() {
89
  Mappress::ajax_response('Not authorized');
90
 
91
  ob_start();
92
+ $args = json_decode(wp_unslash($_POST['data']));
93
+ $mapid = $args->mapid;
94
  $result = Mappress_Map::delete($mapid);
95
 
96
  if (!$result)
107
  if (!current_user_can('edit_posts'))
108
  Mappress::ajax_response('Not authorized');
109
 
110
+ $args = json_decode(wp_unslash($_POST['data']));
111
+ $mapid = $args->mapid;
112
+ $otype = $args->otype;
113
+ $oid = $args->oid;
114
 
115
  if (!$mapid)
116
  Mappress::ajax_response('Internal error, your data has not been saved!');
117
 
118
+ $map = self::duplicate($mapid, $otype, $oid);
119
  if ($map)
120
  Mappress::ajax_response('OK', $map);
121
  else
128
 
129
  if (!current_user_can('edit_posts'))
130
  Mappress::ajax_response('Not authorized');
131
+
132
  Mappress::ajax_response('OK', self::find($_GET));
133
  }
134
 
155
 
156
  check_ajax_referer('mappress', 'nonce');
157
  ob_start();
158
+ $oid = (isset($_GET['oid'])) ? $_GET['oid'] : null;
159
+ $post = get_post( $oid );
160
 
161
  if (!$post)
162
+ die(sprintf(__('Post not found', 'mappress-google-maps-for-wordpress'), $oid));
163
 
164
  setup_postdata($post);
165
  $html = Mappress_Template::get_template('mashup-modal');
168
 
169
  static function ajax_mutate() {
170
  global $wpdb;
 
171
 
172
  check_ajax_referer('mappress', 'nonce');
173
 
175
  Mappress::ajax_response('Not authorized');
176
 
177
  ob_start();
178
+ $args = json_decode(wp_unslash($_POST['data']), true);
179
+ $mapid = (isset($args['mapid'])) ? $args['mapid'] : null;
180
+ $mapdata = (isset($args['mapdata'])) ? $args['mapdata'] : null;
181
 
182
  $result = self::mutate($mapid, $mapdata);
183
  if (!$result)
194
  Mappress::ajax_response('Not authorized');
195
 
196
  ob_start();
197
+ $args = json_decode(wp_unslash($_POST['data']), true);
198
+ $mapdata = (isset($args['mapdata'])) ? $args['mapdata'] : null;
199
 
200
  if (!$mapdata)
201
  Mappress::ajax_response('Internal error, your data has not been saved!');
218
  function autoicons() {
219
  global $post;
220
 
221
+ // Posts only
222
+ if ($this->otype != 'post')
223
+ return;
224
+
225
  // Only 1 rule allowed
226
  $rule = (object) wp_parse_args(Mappress::$options->autoicons, array('key' => null, 'values' => array()));
227
 
245
  // Check each post ID to see if it's in the map's POIs, if so set iconid
246
  $current_post = ($post) ? $post->ID : null;
247
  foreach($this->pois as &$poi) {
248
+ $postid = ($poi->oid) ? $poi->oid : $current_post;
249
  if (in_array($postid, $postids))
250
  $poi->iconid = $iconid;
251
  }
276
  */
277
  static function delete($mapid) {
278
  global $wpdb;
279
+ $maps_table = $wpdb->prefix . 'mapp_maps';
 
280
 
281
+ $result = $wpdb->query($wpdb->prepare("DELETE FROM $maps_table WHERE mapid = %d", $mapid));
 
282
  if ($result === false)
283
  return false;
284
 
290
  * When a post is deleted, trash attached maps
291
  */
292
  static function deleted_post($postid) {
293
+ $mapids = self::get_list('post', $postid, 'ids');
294
  $result = true;
295
  foreach($mapids as $mapid)
296
+ $result = $result && self::mutate($mapid, array('status' => 'trashed', 'oid' => 0));
297
+ return $result;
298
+ }
299
+
300
+ /**
301
+ * When a user is deleted, delete attached maps
302
+ */
303
+ static function deleted_user($userid) {
304
+ $mapids = self::get_list('user', $userid, 'ids');
305
+ $result = true;
306
+ foreach($mapids as $mapid)
307
+ $result = $result && self::delete($mapid);
308
  return $result;
309
  }
310
 
334
  // Last chance to alter map before display
335
  do_action('mappress_map_display', $this);
336
 
337
+ // Container and data
338
  $id = $this->name . '-layout';
339
  $html = "<div class='mapp-layout' id='$id'></div>";
340
 
381
  return $html;
382
  }
383
 
384
+ static function display_user_map($user) {
385
+ $error = get_user_meta($user->ID, 'mappress_error', true);
386
+ if ($error)
387
+ echo "<div class='mapp-help-error'>" . sprintf(__('Geocoding error: %s', 'mappress-google-maps-for-wordpress'), $error) . "</div>";
388
+
389
+ $maps = Mappress_Map::get_list('user', $user->ID);
390
+ if (empty($maps))
391
+ return;
392
+
393
+ echo "<h2>" . __('Location', 'mappress-google-maps-for-wordpress') . "</h2><table class='form-table'><tbody>";
394
+
395
+ foreach($maps as $map) {
396
+ if ($map->status == 'trashed')
397
+ continue;
398
+ $map->poiList = false;
399
+ $map->width = '80%';
400
+ $map->height = '350px';
401
+ echo "<tr><th></th><td>" . $map->display() . "</td></tr>";
402
+ }
403
+ echo "</tbody></table>";
404
+ }
405
+
406
+
407
+ static function duplicate($mapid, $otype, $oid) {
408
  $map = self::get($mapid);
409
  if (!$map)
410
  return null;
412
  $title = ($map->title) ? $map->title : __('Untitled', 'mappress-google-maps-for-wordpress');
413
  $map->title = sprintf(__('Copy of %s', 'mappress-google-maps-for-wordpress'), $title);
414
 
415
+ $map->otype = $otype;
416
+ $map->oid = $oid;
417
  $map->mapid = null;
418
  $map->metaKey = null; // Map is no longer automatic
419
 
424
  static function find($args) {
425
  global $wpdb;
426
 
427
+ $maps_table = $wpdb->prefix . 'mapp_maps';
 
428
 
429
+ $sql = "SELECT SQL_CALC_FOUND_ROWS $maps_table.mapid, $maps_table.obj, $maps_table.otype, $maps_table.oid, "
430
+ . " $maps_table.status, $maps_table.title, $wpdb->posts.post_status, $wpdb->posts.post_title "
431
  . " FROM $maps_table "
432
+ . " LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID = $maps_table.oid AND $maps_table.otype = 'post')"
 
433
  ;
434
  $results = $wpdb->get_results($sql);
435
 
436
  $items = array();
437
  foreach($results as $result) {
438
+ // Check post status & permissions (posts only)
439
+ if ($result->oid) {
440
+ if (!current_user_can('edit_post', $result->oid))
441
  continue;
442
  if (in_array($result->post_status, array('auto-draft', 'inherit')))
443
  continue;
444
  }
445
 
 
446
  $items[] = array(
447
  'mapid' => $result->mapid,
448
+ 'title' => $result->title,
449
+ 'oid' => $result->oid,
450
+ 'otype' => $result->otype,
451
  'post_title' => $result->post_title,
452
+ 'status' => $result->status
453
  );
454
  }
455
  return $items;
460
  */
461
  static function get($mapid) {
462
  global $wpdb;
463
+ $maps_table = $wpdb->prefix . 'mapp_maps';
 
464
 
465
+ $sql = $wpdb->prepare("SELECT * FROM $maps_table WHERE mapid=%d", $mapid);
466
+ $result = $wpdb->get_row($sql);
467
 
468
  if (!$result)
469
  return false;
470
 
471
+ $mapdata = json_decode($result->obj);
472
+ if (!$mapdata)
473
+ return false;
474
+
475
  $mapdata->mapid = $result->mapid;
476
+ $mapdata->otype = $result->otype;
477
+ $mapdata->oid = $result->oid;
478
+ $mapdata->status = $result->status;
479
+ $mapdata->title = $result->title;
480
+
481
+ $map = new Mappress_Map($mapdata);
482
+ return $map;
483
  }
484
 
485
  /**
488
  * @return array of mapids | empty array
489
  *
490
  */
491
+ static function get_list($otype, $oid = null, $output = 'objects') {
492
  global $wpdb;
493
+ $maps_table = $wpdb->prefix . 'mapp_maps';
494
 
495
+ $otype = ($otype) ? $otype : 'post';
496
+ $where = $wpdb->prepare("WHERE otype=%s", $otype);
497
+ if ($oid)
498
+ $where .= $wpdb->prepare(" AND oid=%d", $oid);
499
 
500
+ $mapids = $wpdb->get_col("SELECT mapid FROM $maps_table $where");
501
  if (!$mapids)
502
  return array();
503
 
523
  if (!$mapid || !$mapdata)
524
  return false;
525
 
526
+ $map = self::get($mapid);
527
  if (!$map)
528
  return false;
529
 
539
  function prepare() {
540
  global $post, $wp_embed;
541
 
542
+ // Parse custom tokens from templates
543
+ $custom_tokens = Mappress_Template::get_custom_tokens($this->otype);
 
544
 
 
545
  foreach($this->pois as $poi) {
 
 
 
 
 
546
 
547
+ // Add props
548
+ $oid = ($poi->oid) ? $poi->oid : $this->oid;
549
+ $poi->props = Mappress_Template::get_poi_props($poi, $this->otype, $oid, $custom_tokens);
550
+
551
+ // Populate user fields
552
+ if ($this->otype == 'user') {
553
+ $user = get_userdata($oid);
554
+ $poi->email = $user->data->user_email;
555
+ $poi->name = $user->data->display_name;
556
+ $poi->images = array( (object) array('id' => $user->ID, 'type' => 'avatar'));
557
+ $poi->url = get_author_posts_url($user->ID);
558
+ }
559
+
560
+ // Process oembeds and embed shortcodes ([embed], etc)
561
+ if ($poi->body) {
562
+ $poi->body = $wp_embed->autoembed($poi->body);
563
+ $poi->body = $wp_embed->run_shortcode($poi->body);
564
+ }
565
 
566
  // Update image URLs
567
  $poi->update_images();
568
  }
569
 
570
  // Autoicons & sort
571
+ if ($this->otype == 'post')
572
+ $this->autoicons();
573
 
574
  if (Mappress::$options->sort && !isset($this->query['orderby']))
575
  $this->sort_pois();
577
 
578
  function save() {
579
  global $wpdb;
580
+ $maps_table = $wpdb->prefix . 'mapp_maps';
 
581
 
582
  // Apply wpautop to POI bodies
583
  foreach($this->pois as &$poi)
584
  $poi->body = wpautop($poi->body);
585
 
586
+ $obj = $this->to_json();
 
 
 
 
587
 
588
+ // Insert if no ID, else update
589
  if (!$this->mapid) {
590
+ $sql = "INSERT INTO $maps_table (otype, oid, status, title, obj) VALUES(%s, %d, %s, %s, %s)";
591
+ $result = $wpdb->query($wpdb->prepare($sql, $this->otype, $this->oid, $this->status, $this->title, $obj));
592
  $this->mapid = $wpdb->get_var("SELECT LAST_INSERT_ID()");
593
  } else {
594
+ $sql = "INSERT INTO $maps_table (mapid, otype, oid, status, title, obj) VALUES(%d, %s, %d, %s, %s, %s) "
595
+ . " ON DUPLICATE KEY UPDATE mapid=%d, otype=%s, oid=%d, status=%s, title=%s, obj=%s ";
596
+ $result = $wpdb->query($wpdb->prepare($sql, $this->mapid, $this->otype, $this->oid, $this->status, $this->title, $obj,
597
+ $this->mapid, $this->otype, $this->oid, $this->status, $this->title, $obj));
598
  }
599
 
600
  if ($result === false || !$this->mapid)
601
  return false;
602
 
 
 
 
 
 
 
 
 
 
603
  $wpdb->query("COMMIT");
604
  return true;
605
  }
621
  * When a post is trashed, trash attached maps
622
  */
623
  static function trashed_post($postid) {
624
+ $mapids = self::get_list('post', $postid, 'ids');
625
  $result = true;
626
  foreach($mapids as $mapid)
627
  $result = $result && self::mutate($mapid, array('status' => 'trashed'));
mappress_poi.php CHANGED
@@ -2,22 +2,34 @@
2
  class Mappress_Poi extends Mappress_Obj {
3
  var $address,
4
  $body = '',
5
- $correctedAddress,
6
  $iconid,
7
  $images,
8
  $kml,
 
 
 
9
  $point = array('lat' => 0, 'lng' => 0),
10
  $poly,
11
- $postid,
12
  $props = array(),
13
- $thumbnail,
14
  $title = '',
15
  $type,
16
  $url,
17
  $viewport; // array('sw' => array('lat' => 0, 'lng' => 0), 'ne' => array('lat' => 0, 'lng' => 0))
18
 
19
- function __sleep() {
20
- return array('address', 'body', 'correctedAddress', 'iconid', 'images', 'point', 'poly', 'kml', 'title', 'type', 'viewport');
 
 
 
 
 
 
 
 
 
 
 
21
  }
22
 
23
  function __construct($atts = '') {
@@ -35,8 +47,8 @@ class Mappress_Poi extends Mappress_Obj {
35
  return new WP_Error('geocode', 'MapPress Pro required for geocoding');
36
 
37
  // If point has a lat/lng then no geocoding
38
- $lat = $this->point['lat'];
39
- $lng = $this->point['lng'];
40
 
41
  if (!empty($lat) && !empty($lng)) {
42
  // Confirm that lat/lng are numbers
2
  class Mappress_Poi extends Mappress_Obj {
3
  var $address,
4
  $body = '',
5
+ $email,
6
  $iconid,
7
  $images,
8
  $kml,
9
+ $name,
10
+ $oid,
11
+ $otype,
12
  $point = array('lat' => 0, 'lng' => 0),
13
  $poly,
 
14
  $props = array(),
 
15
  $title = '',
16
  $type,
17
  $url,
18
  $viewport; // array('sw' => array('lat' => 0, 'lng' => 0), 'ne' => array('lat' => 0, 'lng' => 0))
19
 
20
+ function to_json() {
21
+ return array(
22
+ 'address' => $this->address,
23
+ 'body' => $this->body,
24
+ 'iconid' => $this->iconid,
25
+ 'images' => $this->images,
26
+ 'kml' => $this-> kml,
27
+ 'point' => $this->point,
28
+ 'poly' => $this->poly,
29
+ 'title' => $this->title,
30
+ 'type' => $this->type,
31
+ 'viewport' => $this->viewport
32
+ );
33
  }
34
 
35
  function __construct($atts = '') {
47
  return new WP_Error('geocode', 'MapPress Pro required for geocoding');
48
 
49
  // If point has a lat/lng then no geocoding
50
+ $lat = (isset($this->point['lat'])) ? $this->point['lat'] : null;
51
+ $lng = (isset($this->point['lng'])) ? $this->point['lng'] : null;
52
 
53
  if (!empty($lat) && !empty($lng)) {
54
  // Confirm that lat/lng are numbers
mappress_settings.php CHANGED
@@ -17,11 +17,12 @@ class Mappress_Options extends Mappress_Obj {
17
  $defaultIcon,
18
  $deregister = true,
19
  $directions = 'google',
 
20
  $directionsPopup = true,
21
  $directionsServer = 'https://maps.google.com',
22
  $engine = 'leaflet',
23
  $filter, // deprecated
24
- $filters = array(),
25
  $filtersPos = 'top',
26
  $footer = true,
27
  $geocoder = 'nominatim',
@@ -40,7 +41,7 @@ class Mappress_Options extends Mappress_Obj {
40
  $mashupBody = 'poi',
41
  $mashupClick = 'poi',
42
  $mashupKml,
43
- $metaKeys = array(),
44
  $metaSyncSave = true,
45
  $mini = 500,
46
  $poiList = true,
@@ -120,13 +121,14 @@ class Mappress_Settings {
120
  if (!current_user_can('manage_options'))
121
  Mappress::ajax_response('Not authorized');
122
 
123
- $batch_size = (isset($_POST['batch_size'])) ? $_POST['batch_size'] : null;
124
- $otype = (isset($_POST['otype'])) ? $_POST['otype'] : null;
125
- $start = (isset($_POST['start'])) ? $_POST['start'] : null;
126
- $skip = (isset($_POST['skip'])) ? $_POST['skip'] : null;
 
127
 
128
  // Get keys for the object type. If no keys, nothing to do
129
- $keys = Mappress::$options->metaKeys;
130
  if (empty($keys))
131
  Mappress::ajax_response('OK', array('logs' => array(), 'errors' => array()));
132
 
@@ -149,7 +151,7 @@ class Mappress_Settings {
149
 
150
  // Geocode each object
151
  foreach($results as $result) {
152
- $msg = Mappress_Meta::create_meta_map($result->oid);
153
  $logs[] = array('otype' => $otype, 'oid' => $result->oid, 'title' => $result->title, 'msg' => $msg);
154
  }
155
 
@@ -169,7 +171,8 @@ class Mappress_Settings {
169
  if (!current_user_can('manage_options'))
170
  Mappress::ajax_response('Not authorized');
171
 
172
- $license = (isset($_POST['license'])) ? (object) $_POST['license'] : null;
 
173
  if (!$license)
174
  Mappress::ajax_response('Internal error, missing license!');
175
 
@@ -183,13 +186,13 @@ class Mappress_Settings {
183
  if (!current_user_can('manage_options'))
184
  Mappress::ajax_response('Not authorized');
185
 
186
- $id = (isset($_POST['id'])) ? $_POST['id'] : null;
187
- if (!$id)
188
  Mappress::ajax_response('Missing style ID');
189
 
190
  $options = Mappress_Options::get();
191
  $setting = ($options->engine == 'google') ? 'stylesGoogle' : 'stylesMapbox';
192
- $i = array_search($id, array_column($options->$setting, 'id'));
193
 
194
  //unset($options->$setting[$key]);
195
  array_splice($options->$setting, $i, 1);
@@ -203,19 +206,19 @@ class Mappress_Settings {
203
  if (!current_user_can('manage_options'))
204
  Mappress::ajax_response('Not authorized');
205
 
206
- $style = (isset($_POST['style'])) ? wp_unslash($_POST['style']) : null;
 
207
  if (!$style)
208
  Mappress::ajax_response('Missing style');
209
-
210
  $options = Mappress_Options::get();
211
  $setting = ($options->engine == 'google') ? 'stylesGoogle' : 'stylesMapbox';
212
 
213
  // Update if style has an ID, otherwise treat it as new. New Snazzy styles have an ID, otherwise assign uniqid
214
- $id = ($style['id']) ? $style['id'] : null;
215
  $i = ($id) ? array_search($id, array_column($options->$setting, 'id')) : false;
216
 
217
  if ($i === false) {
218
- $style['id'] = ($id) ? $id : uniqid();
219
  $options->{$setting}[] = $style;
220
  } else {
221
  $options->{$setting}[$i] = $style;
@@ -230,11 +233,11 @@ class Mappress_Settings {
230
  if (!current_user_can('manage_options'))
231
  Mappress::ajax_response('Not authorized');
232
 
233
-
234
- $settings = (isset($_POST['settings'])) ? (object) wp_unslash($_POST['settings']) : array();
235
  $options = Mappress_Options::get();
236
  foreach($settings as $setting => $value)
237
- $options->$setting = wp_unslash($value);
238
  $options->save();
239
  Mappress::ajax_response('OK');
240
  }
@@ -247,15 +250,17 @@ class Mappress_Settings {
247
 
248
  ob_start();
249
 
250
- $settings = (isset($_POST['settings'])) ? wp_unslash($_POST['settings']) : null;
251
- $settings = ($settings) ? (object) json_decode($settings, true) : null;
 
252
 
253
  if (!$settings)
254
  Mappress::ajax_response('Internal error, missing settings!');
255
 
256
  // Convert JS object arrays to PHP associative arrays
257
  self::assoc($settings->autoicons['values'], true);
258
- self::assoc($settings->metaKeys, true);
 
259
 
260
  // If license changed, clear cache so it re-checks on next load
261
  if ($settings->license && $settings->license != Mappress::$options->license)
@@ -296,7 +301,8 @@ class Mappress_Settings {
296
 
297
  // Convert PHP associative arrays to object arrays for JS
298
  self::assoc($state->autoicons['values'], false);
299
- self::assoc($state->metaKeys, false);
 
300
 
301
  // Setup helpers
302
  $helpers = (object) array(
@@ -310,6 +316,7 @@ class Mappress_Settings {
310
  'license_status' => (Mappress::$pro && Mappress::$options->license) ? Mappress::$updater->get_status() : null,
311
  'meta_fields' => self::get_meta_fields(),
312
  'meta_keys' => self::get_meta_keys(),
 
313
  'post_edit' => admin_url('post.php'),
314
  'post_types' => self::get_post_types(),
315
  'taxonomies' => self::get_taxonomies(),
@@ -393,6 +400,26 @@ class Mappress_Settings {
393
  return $results;
394
  }
395
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  static function get_meta_values($meta_key) {
397
  global $wpdb;
398
  $sql = "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value != '' ORDER BY meta_value";
@@ -421,7 +448,7 @@ class Mappress_Settings {
421
  }
422
 
423
  static function get_thumbnail_sizes() {
424
- // Note: WP doesn't return dimensions, just the size names - ticket is > 6 months old now: http://core.trac.wordpress.org/ticket/18947
425
  $sizes = get_intermediate_image_sizes();
426
  $sizes = array_combine(array_values($sizes), array_values($sizes));
427
  return $sizes;
@@ -429,8 +456,7 @@ class Mappress_Settings {
429
 
430
  static function get_usage() {
431
  global $wpdb;
432
- $maps_table = $wpdb->prefix . 'mappress_maps';
433
- $posts_table = $wpdb->prefix . 'mappress_posts';
434
 
435
  $usage = new stdClass();
436
  foreach(array('alignment', 'autodisplay', 'betas', 'engine', 'footer', 'geocoder', 'highlight', 'layout', 'language', 'poiList') as $key) {
@@ -449,26 +475,6 @@ class Mappress_Settings {
449
  return $usage;
450
  }
451
 
452
- static function get_user_meta_keys() {
453
- global $wpdb;
454
- $keys = $wpdb->get_col( "
455
- SELECT DISTINCT meta_key
456
- FROM $wpdb->usermeta
457
- WHERE meta_key NOT IN ('first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'jabber', 'aim',
458
- 'yim', 'default_password_nag', 'use_ssl', 'show_admin_bar_front', 'show_welcome_panel', 'dismissed_wp_pointers', 'nav_menu_recently_edited',
459
- 'managenav-menuscolumnshidden', 'wp_capabilities', 'wp_user_level', 'wp_dashboard_quick_press_last_post_id', 'wp_user-settings', 'wp_user-settings-time',
460
- 'locale', 'session_tokens', 'syntax_highlighting', 'enable_custom_fields', 'mappress_dismissed', 'wp_media_library_mode', 'edit_post_per_page'
461
- )
462
- AND meta_key NOT LIKE 'closedpostboxes%'
463
- AND meta_key NOT LIKE 'metaboxhidden%'
464
- AND meta_key NOT LIKE 'meta-box-order%'
465
- AND meta_key NOT LIKE 'screen_layout%'
466
- ");
467
-
468
- $results = (is_array($keys) && !empty($keys)) ? array_combine($keys, $keys) : array();
469
- return $results;
470
- }
471
-
472
  static function review_admin_notice() {
473
  $first_time = get_option('mappress_review');
474
 
@@ -480,7 +486,7 @@ class Mappress_Settings {
480
  if (time() <= $first_time + (60 * 60 * 24 * 10))
481
  return;
482
 
483
- $ids = Mappress_Map::get_list(null, 'ids');
484
  if (count($ids) < 1)
485
  return;
486
 
17
  $defaultIcon,
18
  $deregister = true,
19
  $directions = 'google',
20
+ $directionsList = false,
21
  $directionsPopup = true,
22
  $directionsServer = 'https://maps.google.com',
23
  $engine = 'leaflet',
24
  $filter, // deprecated
25
+ $filters = array('post' => array(), 'user' => array()),
26
  $filtersPos = 'top',
27
  $footer = true,
28
  $geocoder = 'nominatim',
41
  $mashupBody = 'poi',
42
  $mashupClick = 'poi',
43
  $mashupKml,
44
+ $metaKeys = array('post' => array(), 'user' => array()),
45
  $metaSyncSave = true,
46
  $mini = 500,
47
  $poiList = true,
121
  if (!current_user_can('manage_options'))
122
  Mappress::ajax_response('Not authorized');
123
 
124
+ $args = json_decode(wp_unslash($_POST['data']));
125
+ $batch_size = $args->batch_size;
126
+ $otype = $args->otype;
127
+ $start = $args->start;
128
+ $skip = $args->skip;
129
 
130
  // Get keys for the object type. If no keys, nothing to do
131
+ $keys = (Mappress::$options->metaKeys[$otype]) ? Mappress::$options->metaKeys[$otype] : array();
132
  if (empty($keys))
133
  Mappress::ajax_response('OK', array('logs' => array(), 'errors' => array()));
134
 
151
 
152
  // Geocode each object
153
  foreach($results as $result) {
154
+ $msg = Mappress_Meta::create_meta_map($otype, $result->oid);
155
  $logs[] = array('otype' => $otype, 'oid' => $result->oid, 'title' => $result->title, 'msg' => $msg);
156
  }
157
 
171
  if (!current_user_can('manage_options'))
172
  Mappress::ajax_response('Not authorized');
173
 
174
+ $args = json_decode(wp_unslash($_POST['data']));
175
+ $license = $args->license;
176
  if (!$license)
177
  Mappress::ajax_response('Internal error, missing license!');
178
 
186
  if (!current_user_can('manage_options'))
187
  Mappress::ajax_response('Not authorized');
188
 
189
+ $args = json_decode(wp_unslash($_POST['data']));
190
+ if (!$args->id)
191
  Mappress::ajax_response('Missing style ID');
192
 
193
  $options = Mappress_Options::get();
194
  $setting = ($options->engine == 'google') ? 'stylesGoogle' : 'stylesMapbox';
195
+ $i = array_search($args->id, array_column($options->$setting, 'id'));
196
 
197
  //unset($options->$setting[$key]);
198
  array_splice($options->$setting, $i, 1);
206
  if (!current_user_can('manage_options'))
207
  Mappress::ajax_response('Not authorized');
208
 
209
+ $args = json_decode(wp_unslash($_POST['data']));
210
+ $style = $args->style;
211
  if (!$style)
212
  Mappress::ajax_response('Missing style');
 
213
  $options = Mappress_Options::get();
214
  $setting = ($options->engine == 'google') ? 'stylesGoogle' : 'stylesMapbox';
215
 
216
  // Update if style has an ID, otherwise treat it as new. New Snazzy styles have an ID, otherwise assign uniqid
217
+ $id = ($style->id) ? $style->id : null;
218
  $i = ($id) ? array_search($id, array_column($options->$setting, 'id')) : false;
219
 
220
  if ($i === false) {
221
+ $style->id = ($id) ? $id : uniqid();
222
  $options->{$setting}[] = $style;
223
  } else {
224
  $options->{$setting}[$i] = $style;
233
  if (!current_user_can('manage_options'))
234
  Mappress::ajax_response('Not authorized');
235
 
236
+ $args = json_decode(wp_unslash($_POST['data']));
237
+ $settings = $args->settings;
238
  $options = Mappress_Options::get();
239
  foreach($settings as $setting => $value)
240
+ $options->$setting = $value;
241
  $options->save();
242
  Mappress::ajax_response('OK');
243
  }
250
 
251
  ob_start();
252
 
253
+ // Receive arrays, not objects
254
+ $args = json_decode(wp_unslash($_POST['data']), true);
255
+ $settings = (object) $args['settings'];
256
 
257
  if (!$settings)
258
  Mappress::ajax_response('Internal error, missing settings!');
259
 
260
  // Convert JS object arrays to PHP associative arrays
261
  self::assoc($settings->autoicons['values'], true);
262
+ self::assoc($settings->metaKeys['post'], true);
263
+ self::assoc($settings->metaKeys['user'], true);
264
 
265
  // If license changed, clear cache so it re-checks on next load
266
  if ($settings->license && $settings->license != Mappress::$options->license)
301
 
302
  // Convert PHP associative arrays to object arrays for JS
303
  self::assoc($state->autoicons['values'], false);
304
+ self::assoc($state->metaKeys['post'], false);
305
+ self::assoc($state->metaKeys['user'], false);
306
 
307
  // Setup helpers
308
  $helpers = (object) array(
316
  'license_status' => (Mappress::$pro && Mappress::$options->license) ? Mappress::$updater->get_status() : null,
317
  'meta_fields' => self::get_meta_fields(),
318
  'meta_keys' => self::get_meta_keys(),
319
+ 'meta_keys_user' => self::get_meta_keys_user(),
320
  'post_edit' => admin_url('post.php'),
321
  'post_types' => self::get_post_types(),
322
  'taxonomies' => self::get_taxonomies(),
400
  return $results;
401
  }
402
 
403
+ static function get_meta_keys_user() {
404
+ global $wpdb;
405
+ $keys = $wpdb->get_col( "
406
+ SELECT DISTINCT meta_key
407
+ FROM $wpdb->usermeta
408
+ WHERE meta_key NOT IN ('first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'jabber', 'aim',
409
+ 'yim', 'default_password_nag', 'use_ssl', 'show_admin_bar_front', 'show_welcome_panel', 'dismissed_wp_pointers', 'nav_menu_recently_edited',
410
+ 'managenav-menuscolumnshidden', 'wp_capabilities', 'wp_user_level', 'wp_dashboard_quick_press_last_post_id', 'wp_user-settings', 'wp_user-settings-time',
411
+ 'locale', 'session_tokens', 'syntax_highlighting', 'enable_custom_fields', 'mappress_dismissed', 'wp_media_library_mode', 'edit_post_per_page'
412
+ )
413
+ AND meta_key NOT LIKE 'closedpostboxes%'
414
+ AND meta_key NOT LIKE 'metaboxhidden%'
415
+ AND meta_key NOT LIKE 'meta-box-order%'
416
+ AND meta_key NOT LIKE 'screen_layout%'
417
+ ");
418
+
419
+ $results = (is_array($keys) && !empty($keys)) ? array_combine($keys, $keys) : array();
420
+ return $results;
421
+ }
422
+
423
  static function get_meta_values($meta_key) {
424
  global $wpdb;
425
  $sql = "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value != '' ORDER BY meta_value";
448
  }
449
 
450
  static function get_thumbnail_sizes() {
451
+ // Note: WP doesn't return dimensions http://core.trac.wordpress.org/ticket/18947
452
  $sizes = get_intermediate_image_sizes();
453
  $sizes = array_combine(array_values($sizes), array_values($sizes));
454
  return $sizes;
456
 
457
  static function get_usage() {
458
  global $wpdb;
459
+ $maps_table = $wpdb->prefix . 'mapp_maps';
 
460
 
461
  $usage = new stdClass();
462
  foreach(array('alignment', 'autodisplay', 'betas', 'engine', 'footer', 'geocoder', 'highlight', 'layout', 'language', 'poiList') as $key) {
475
  return $usage;
476
  }
477
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
478
  static function review_admin_notice() {
479
  $first_time = get_option('mappress_review');
480
 
486
  if (time() <= $first_time + (60 * 60 * 24 * 10))
487
  return;
488
 
489
+ $ids = Mappress_Map::get_list('post', null, 'ids');
490
  if (count($ids) < 1)
491
  return;
492
 
mappress_template.php CHANGED
@@ -10,6 +10,7 @@ class Mappress_Template extends Mappress_Obj {
10
  ;
11
 
12
  static $tokens;
 
13
  static $queue = array();
14
 
15
  function __construct($atts = null) {
@@ -20,7 +21,6 @@ class Mappress_Template extends Mappress_Obj {
20
  add_action('wp_ajax_mapp_tpl_get', array(__CLASS__, 'ajax_get'));
21
  add_action('wp_ajax_mapp_tpl_save', array(__CLASS__, 'ajax_save'));
22
  add_action('wp_ajax_mapp_tpl_delete', array(__CLASS__, 'ajax_delete'));
23
- add_filter('mappress_poi_props', array(__CLASS__, 'filter_poi_props'), 0, 3);
24
 
25
  // Print queued templates
26
  // wp_footer used instead of wp_footer_scripts because NGG reverses calling order of the two hooks
@@ -30,13 +30,20 @@ class Mappress_Template extends Mappress_Obj {
30
  add_action('admin_print_footer_scripts', array(__CLASS__, 'print_footer_templates'), -10);
31
 
32
  self::$tokens = array(
33
- 'address' => array('label' => __('Address', 'mappress-google-maps-for-wordpress'), 'token' => 'address'),
34
- 'body' => array('label' => __('Body', 'mappress-google-maps-for-wordpress'), 'token' => 'body'),
35
- 'icon' => array('label' => __('Icon', 'mappress-google-maps-for-wordpress'), 'token' => 'icon'),
36
- 'thumbnail' => array('label' => __('Thumbnail', 'mappress-google-maps-for-wordpress'), 'token' => 'thumbnail'),
37
- 'title' => array('label' => __('Title', 'mappress-google-maps-for-wordpress'), 'token' => 'title'),
38
- 'url' => array('label' => __('Url', 'mappress-google-maps-for-wordpress'), 'token' => 'url'),
39
- 'custom' => array('label' => __('Custom Field', 'mappress-google-maps-for-wordpress'), 'token' => 'props.myfield')
 
 
 
 
 
 
 
40
  );
41
  }
42
 
@@ -46,7 +53,8 @@ class Mappress_Template extends Mappress_Obj {
46
  if (!current_user_can('manage_options'))
47
  Mappress::ajax_response('Not authorized');
48
 
49
- $name = (isset($_POST['name'])) ? $_POST['name'] : null;
 
50
  $filepath = get_stylesheet_directory() . '/' . $name . '.php';
51
 
52
  $result = @unlink($filepath);
@@ -72,7 +80,6 @@ class Mappress_Template extends Mappress_Obj {
72
  if (strpos($standard_path, realpath(Mappress::$basedir)) !== 0)
73
  Mappress::ajax_response('Invalid template path');
74
 
75
- // Can require file instead of file_get_contents if eval is needed for i18n
76
  $standard = (file_exists($standard_path)) ? file_get_contents($standard_path) : null;
77
 
78
  if (!$standard)
@@ -86,7 +93,8 @@ class Mappress_Template extends Mappress_Obj {
86
  'exists' => ($html) ? true : false,
87
  ));
88
 
89
- Mappress::ajax_response('OK', array('template' => $template, 'tokens' => self::$tokens));
 
90
  }
91
 
92
  static function ajax_save() {
@@ -101,9 +109,9 @@ class Mappress_Template extends Mappress_Obj {
101
  if (!current_user_can('unfiltered_html'))
102
  Mappress::ajax_response('Not authorized: DISALLOW_UNFILTERED_HTML is set in wp-config.php');
103
 
104
- $name = (isset($_POST['name'])) ? basename($_POST['name']) : null;
105
-
106
- $content = (isset($_POST['content'])) ? stripslashes($_POST['content']) : null;
107
  $filepath = get_stylesheet_directory() . '/' . $name . '.php';
108
 
109
  $result = @file_put_contents($filepath, $content);
@@ -153,16 +161,18 @@ class Mappress_Template extends Mappress_Obj {
153
  }
154
  }
155
 
156
- static function filter_poi_props($props, $postid) {
157
- $tokens = self::get_custom_tokens();
158
  foreach($tokens as $token)
159
- $props[$token] = get_post_meta($postid, $token, true);
160
- return $props;
161
  }
162
 
163
- static function get_custom_tokens() {
164
  $tokens = array();
165
- foreach(array('map-popup', 'map-item', 'mashup-item', 'mashup-popup') as $name) {
 
 
166
  $template = self::get_template($name);
167
  // shortcode: preg_match_all("/\[([^\]]*)\]/", $template, $matches);
168
  preg_match_all("/{{([\s\S]+?)}}/", $template, $matches);
10
  ;
11
 
12
  static $tokens;
13
+ static $user_tokens;
14
  static $queue = array();
15
 
16
  function __construct($atts = null) {
21
  add_action('wp_ajax_mapp_tpl_get', array(__CLASS__, 'ajax_get'));
22
  add_action('wp_ajax_mapp_tpl_save', array(__CLASS__, 'ajax_save'));
23
  add_action('wp_ajax_mapp_tpl_delete', array(__CLASS__, 'ajax_delete'));
 
24
 
25
  // Print queued templates
26
  // wp_footer used instead of wp_footer_scripts because NGG reverses calling order of the two hooks
30
  add_action('admin_print_footer_scripts', array(__CLASS__, 'print_footer_templates'), -10);
31
 
32
  self::$tokens = array(
33
+ 'address' => __('Address', 'mappress-google-maps-for-wordpress'),
34
+ 'body' => __('Body', 'mappress-google-maps-for-wordpress'),
35
+ 'icon' => __('Icon', 'mappress-google-maps-for-wordpress'),
36
+ 'title' => __('Title', 'mappress-google-maps-for-wordpress'),
37
+ 'url' => __('URL', 'mappress-google-maps-for-wordpress'),
38
+ 'props.myfield' => __('Custom Field', 'mappress-google-maps-for-wordpress')
39
+ );
40
+
41
+ self::$user_tokens = array(
42
+ 'address' => __('Address', 'mappress-google-maps-for-wordpress'),
43
+ 'user_email' => __('Email', 'mappress-google-maps-for-wordpress'),
44
+ 'user_display_name' => __('Display Name', 'mappress-google-maps-for-wordpress'),
45
+ 'icon' => __('Icon', 'mappress-google-maps-for-wordpress'),
46
+ 'props.myfield' => __('Custom Field', 'mappress-google-maps-for-wordpress'),
47
  );
48
  }
49
 
53
  if (!current_user_can('manage_options'))
54
  Mappress::ajax_response('Not authorized');
55
 
56
+ $args = json_decode(wp_unslash($_POST['data']));
57
+ $name = $args->name;
58
  $filepath = get_stylesheet_directory() . '/' . $name . '.php';
59
 
60
  $result = @unlink($filepath);
80
  if (strpos($standard_path, realpath(Mappress::$basedir)) !== 0)
81
  Mappress::ajax_response('Invalid template path');
82
 
 
83
  $standard = (file_exists($standard_path)) ? file_get_contents($standard_path) : null;
84
 
85
  if (!$standard)
93
  'exists' => ($html) ? true : false,
94
  ));
95
 
96
+ $tokens = (substr($name, 0, 4) == 'user') ? self::$user_tokens : self::$tokens;
97
+ Mappress::ajax_response('OK', array('template' => $template, 'tokens' => $tokens));
98
  }
99
 
100
  static function ajax_save() {
109
  if (!current_user_can('unfiltered_html'))
110
  Mappress::ajax_response('Not authorized: DISALLOW_UNFILTERED_HTML is set in wp-config.php');
111
 
112
+ $args = json_decode(wp_unslash($_POST['data']));
113
+ $name = $args->name;
114
+ $content = $args->content;
115
  $filepath = get_stylesheet_directory() . '/' . $name . '.php';
116
 
117
  $result = @file_put_contents($filepath, $content);
161
  }
162
  }
163
 
164
+ static function get_poi_props($poi, $otype, $oid, $tokens) {
165
+ $props = array();
166
  foreach($tokens as $token)
167
+ $props[$token] = get_metadata($otype, $oid, $token, true);
168
+ return apply_filters('mappress_poi_props', $props, $oid, $poi, 'user');
169
  }
170
 
171
+ static function get_custom_tokens($otype) {
172
  $tokens = array();
173
+ $templates = ($otype == 'user') ? array('user-mashup-popup', 'user-mashup-item') : array('map-popup', 'map-item', 'mashup-item', 'mashup-popup');
174
+
175
+ foreach($templates as $name) {
176
  $template = self::get_template($name);
177
  // shortcode: preg_match_all("/\[([^\]]*)\]/", $template, $matches);
178
  preg_match_all("/{{([\s\S]+?)}}/", $template, $matches);
mappress_wpml.php CHANGED
@@ -30,7 +30,8 @@ class Mappress_WPML {
30
  foreach($maps as $map) {
31
  $src_mapid = $map->mapid;
32
  $map->mapid = null;
33
- $map->postid = $postid;
 
34
  $map->save();
35
  $converted[$src_mapid] = $map->mapid;
36
  }
30
  foreach($maps as $map) {
31
  $src_mapid = $map->mapid;
32
  $map->mapid = null;
33
+ $map->otype = 'post';
34
+ $map->oid = $postid;
35
  $map->save();
36
  $converted[$src_mapid] = $map->mapid;
37
  }
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: maps, google maps, map, map markers, google map, leaflet maps, leaflet map
5
  Requires at least: 5.3
6
  Requires PHP: 5.6
7
  Tested up to: 6.0
8
- Stable tag: 2.77.3
9
 
10
  == Description ==
11
  MapPress is the easiest way to add beautiful interactive Google and Leaflet maps to WordPress.
@@ -89,11 +89,48 @@ Please see the plugin documentation pages:
89
 
90
  == Changelog ==
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  = 2.77.3 =
93
  * Fixed: thumbnail not positioned properly in popup modal
94
  * Fixed: template 'default' tab showing current template instead
95
  * Fixed: POIs were being filtered by bounds even when search disabled
96
 
 
97
  = 2.77.2 =
98
  * Fixed: shapes not centering correctly when clicked
99
  * Fixed: not possible to enable POI hover and open POIs in a new tab or modal
5
  Requires at least: 5.3
6
  Requires PHP: 5.6
7
  Tested up to: 6.0
8
+ Stable tag: 2.80.9
9
 
10
  == Description ==
11
  MapPress is the easiest way to add beautiful interactive Google and Leaflet maps to WordPress.
89
 
90
  == Changelog ==
91
 
92
+ = 2.80.9 =
93
+ * Fixed: array not initiallized for custom props
94
+
95
+ = 2.80.8 =
96
+ * Fixed: missing token description in template editor
97
+ * Fixed: multiple custom fields not pulled into templates
98
+
99
+ = 2.80.7 =
100
+ * Fixed: settings not saved in setup wizard
101
+
102
+ = 2.80.6 =
103
+ * Added: trigger DB upgrade automatically
104
+
105
+ = 2.80.5 =
106
+ * Fixed: maps not displaying when scripts output in footer
107
+
108
+ = 2.80.4 =
109
+ * Added: enabled user maps
110
+
111
+ = 2.80.3 =
112
+ * Changed: authorization 'edit_posts' is now used instead of 'manage_options' for the 'maps' menu
113
+ * Changed: thumbnail images now specify size for better popup sizing
114
+
115
+ = 2.80.2 =
116
+ * Fixed: POI list not selecting open POI
117
+ * Fixed: mashup error when debugging enabled
118
+ * Fixed: error when dismissing notices
119
+
120
+ = 2.80.1 =
121
+ * Fixed: database upgrade check incorrect
122
+
123
+ = 2.80 =
124
+ * Added: settings added for directions links in POI list
125
+ * Changed: filters output even when closed, to allow custom CSS modification
126
+ * Fixed: POIs filtered by map bounds even when search disabled
127
+
128
  = 2.77.3 =
129
  * Fixed: thumbnail not positioned properly in popup modal
130
  * Fixed: template 'default' tab showing current template instead
131
  * Fixed: POIs were being filtered by bounds even when search disabled
132
 
133
+
134
  = 2.77.2 =
135
  * Fixed: shapes not centering correctly when clicked
136
  * Fixed: not possible to enable POI hover and open POIs in a new tab or modal
templates/map.php CHANGED
@@ -7,7 +7,7 @@
7
  <# if (layout != 'inline') { #><div class='mapp-directions'></div><# } #>
8
  <div class='mapp-canvas-panel'>
9
  <div class='mapp-canvas'></div>
10
- <div class='mapp-menu'></div>
11
  <# if (mappl10n.options.ssl) { #>
12
  <div class='mapp-geolocate-control-wrapper'>
13
  <div class='mapp-geolocate-control' data-mapp-action='geolocate' title='<?php _e('Your Location', 'mappress-google-maps-for-wordpress');?>'></div>
7
  <# if (layout != 'inline') { #><div class='mapp-directions'></div><# } #>
8
  <div class='mapp-canvas-panel'>
9
  <div class='mapp-canvas'></div>
10
+ <div class='mapp-menu-component'></div>
11
  <# if (mappl10n.options.ssl) { #>
12
  <div class='mapp-geolocate-control-wrapper'>
13
  <div class='mapp-geolocate-control' data-mapp-action='geolocate' title='<?php _e('Your Location', 'mappress-google-maps-for-wordpress');?>'></div>
templates/mashup-modal.php CHANGED
@@ -28,5 +28,4 @@
28
  <div><?php _e(' Tagged ' , 'mappress-google-maps-for-wordpress'); ?><?php the_tags( '', ', ', '' ); ?></div>
29
  </div>
30
  </div>
31
- </article>
32
-
28
  <div><?php _e(' Tagged ' , 'mappress-google-maps-for-wordpress'); ?><?php the_tags( '', ', ', '' ); ?></div>
29
  </div>
30
  </div>
31
+ </article>