MapPress Easy Google Maps - Version 2.75

Version Description

  • Changed: completed removal of obsolete Algolia geocoder
  • Changed: updated JavaScript: map editor, POI editor, POI list, directions, map menu, map picker and settings
  • Changed: clustering libraries sourced from CDN
Download this release

Release Info

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

Code changes from version 2.74.3 to 2.75

build/index_mappress.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={117:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappAutocomplete:()=>u});var n=i(326);const s=wp.element.createElement,{Fragment:o,useCallback:a,useEffect:l,useLayoutEffect:p,useMemo:r,useRef:c,useState:h}=wp.element;function u(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]=h({isOpen:!1,value:""});function p(e){a((t=>({...t,...e})))}(0,n.O)(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.N)((t=>{e.onFetch&&e.onFetch(t)}),e.delay);function u(){let t;p({isOpen:!1}),e.suggestions&&(t=null==o.selected?e.suggestions[0]:e.suggestions[o.selected]),e.onSelect({suggestion:t,value:m})}const m=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":u();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:m}),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:()=>u()},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){const[t,i]=p({saddr:e.saddr?e.saddr:"",daddr:e.daddr?e.daddr:""});function s(e){i((t=>({...t,...e})))}function o(i,n){switch(i){case"close":e.onClose&&e.onClose();break;case"get-directions":a();break;case"keydown":13==n?o("get-directions"):27==n&&o("close");break;case"swap":s({saddr:t.daddr,daddr:t.saddr})}}function a(){let e=mappl10n.options.directionsServer;const i=t.saddr.trim(),n=t.daddr.trim();e="https://maps.google.com"==e?"https://www.google.com":e,-1==e.toLowerCase().indexOf("http")&&(e="https://"+e),e+="/maps/dir/?api=1&origin="+encodeURIComponent(i)+"&destination="+encodeURIComponent(n),window.open(e),o("close")}return"google"==mappl10n.options.directions?(a(),null):n("div",{className:"mapp-directions-component"},n("div",{className:"mapp-close",onClick:()=>o("close")}),n("div",null,n("input",{className:"mapp-dir-saddr",onChange:e=>s({saddr:e.target.value}),onKeyPress:e=>o("keydown",e.which),tabIndex:"1",placeholder:__("My location"),value:t.saddr}),n("div",{className:"mapp-dir-arrows",onClick:()=>o("swap")})),n("div",null,n("input",{className:"mapp-dir-daddr",onChange:e=>s({daddr:e.target.value}),onKeyPress:e=>o("keydown",e.which),tabIndex:"2",value:t.daddr})),n("div",{className:"mapp-dir-toolbar"},n("div",{className:"mapp-submit-button",onClick:()=>o("get-directions")},__("Get Directions"))))}},817:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappFilters:()=>h});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,h=e=>{e={onFilterChange:null,otype:"post",poiCount:0,...e};const t=(0,s.N)(e.onFilterChange,500),i=r(null),[a,p]=c({filters:null,formData:{},isBusy:!0,isOpen:!1});function h(e){p((t=>({...t,...e})))}function u(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],h({formData:o}),t(o)}function m(){h({formData:{}}),t()}function d(e){h({isOpen:e=void 0!==e?e:!a.isOpen})}function g(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=>u(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=>u(e,t.target.value),type:e.format,value:t.value}),t.iconid&&o("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),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=>u(e,t.target.value),type:e.format,value:t.value}),t.iconid&&o("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(t.iconid)}),t.label)));case"select":return t.unshift({value:"",label:""}),o("select",{value:i[0],onChange:t=>u(e,t.target.value)},_.map(t,(e=>o("option",{key:e.value,value:e.value},e.label))))}}(e)))}return(0,s.O)(i,(()=>{a.isOpen&&d(!1)})),l((()=>{h({isBusy:!0}),n.mappLib.ajax({data:{action:"mapp_filters_get",nonce:mappl10n.options.nonce,otype:e.otype},callback:e=>{h({isBusy:!1}),e&&"OK"==e.status?h({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||d()}},__("Filter"))}(),a.isOpen&&null!==a.filters&&o("div",{className:"mapp-filters-wrapper"},o("div",{className:"mapp-filters-list"},_.map(a.filters,(e=>g(e)))),function(){const t=sprintf((i="%s Result",n="%s Results",s=e.poiCount,wp.i18n._n(i,n,s,"mappress-google-maps-for-wordpress")),e.poiCount);var i,n,s;return o("div",{className:"mapp-filters-toolbar"},o("div",{className:"mapp-link-button",onClick:m},__("Reset")),o("div",{className:"mapp-filters-count"},t),o("div",{className:"mapp-submit-button",onClick:()=>d(!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.d(t,{N:()=>c,O:()=>h});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 h(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=mappl10n.options.templates?mappl10n.options.template[e]: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)}}},443:(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.page,e.page,e.isBusy||e.page<=1?"mapp-paginate-button mapp-disabled":"mapp-paginate-button"),o=e.isBusy||e.page>=i?"mapp-paginate-button mapp-disabled":"mapp-paginate-button";return n("div",{className:"mapp-paginate"},n("div",{className:s,onClick:()=>t("first")},"«"),n("div",{className:s,onClick:()=>t("prev")},"‹"),n("div",{className:"mapp-paginate-count"},sprintf((a="%d of %d",wp.i18n.__(a,"mappress-google-maps-for-wordpress")),e.page,i)),n("div",{className:o,onClick:()=>t("next")},"›"),n("div",{className:o,onClick:()=>t("last")},"»"));var a}()}},818:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPlaces:()=>u});var n=i(117),s=i(10);const o=wp.element.createElement,{Fragment:a,useCallback:l,useEffect:p,useLayoutEffect:r,useRef:c,useState:h}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function u(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]=h({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")})}},293:(e,t,i)=>{"use strict";i.r(t);var n=i(715),s=i(817),o=i(939),a=i(818);const l=wp.element.createElement,p=wp.element.createPortal,{Fragment:r,useEffect:c,useLayoutEffect:h,useRef:u,useState:m}=wp.element;function d(e){e={onClose:null,poi:null,...e};const[t,i]=m({isBusy:!1,html:null});function n(e){i((t=>({...t,...e})))}const s=React.createRef();function a(t){27==t.keyCode&&e.onClose()}return c((()=>(document.body.classList.add("mapp-modal-noscroll"),()=>document.body.classList.remove("mapp-modal-noscroll"))),[]),c((()=>{e.poi.postid&&(n({isBusy:!0}),o.mappLib.ajax({data:{action:"mapp_get_post",postid:e.poi.postid,nonce:mappl10n.options.nonce},dataType:"HTML",type:"GET",success:e=>{n({isBusy:!1,html:e})}}))}),[e.poi.postid]),c((()=>{s.current&&s.current.focus(),console.log("focus"+document.activeElement)}),[s.current]),p(l("div",{className:"mapp-modal"},l("div",{className:"mapp-modal-backdrop",onClick:e.onClose,onKeyDown:a},l("div",{className:"mapp-modal-close",onClick:e.onClose},"×")),l("div",{className:"mapp-modal-content-wrapper",ref:s,onKeyDown:a,tabIndex:0},l("div",{className:"mapp-modal-content"},t.isBusy&&l("div",{className:"mapp-modal-spinner"}),!t.isBusy&&l("div",{dangerouslySetInnerHTML:{__html:t.html}}),l("div",{className:"mapp-modal-close",onClick:e.onClose},"X")))),document.body)}var g=i(10);window.mapp=window.mapp||{};const f=wp.element.createElement,v=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");wp.i18n._n;var y;y=jQuery,mapp.Map=function(e,t){this.defaults={alignment:null,center:null,classname:null,editable:null,embed:null,height:null,initialOpenInfo:null,layers:null,layout:null,lines:null,mapid:null,mapTypeId:null,metaKey:null,mapOpts:null,name: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.dirty=!1,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,g.useGeocoding)({withBusinesses:this.editable});if(this.render(),!this.div||!this.div.layout)return;if(this.sanity(),this.editable?this.templates={loop:"edit-loop",item:"edit-item",popup:"edit-popup"}:this.query?this.templates={loop:"map-loop",item:"mashup-item",popup:"mashup-popup"}:this.templates={loop:"map-loop",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();const t=y(".mapp-search-container",this.div.layout);t.length&&wp.element.render(f(a.MappPlaces,{buttonLabel:this.editable?v("Add to map"):f("img",{src:mappl10n.options.baseurl+"/images/search.png"}),focus:this.editable,includeBusinesses:this.editable,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=>{if(this.div.list&&this.div.list.length&&y.contains(this.div.list.get(0),e.target))return;const t=y(e.currentTarget),i=t.attr("data-mapp-action"),n=t.attr("data-mapp-"+i);e.preventDefault(),this.onAction(i,n,t)})),this.div.list.on("click","[data-mapp-action]",(e=>{const t=y(e.currentTarget),i=t.attr("data-mapp-action"),n=t.attr("data-mapp-"+i);this.onAction(i,n,t)})),new ResizeObserver(((e,t)=>{this.toggleView("mini"),this.resize()})).observe(this.div.layout.get(0)),mapp.event.addListener(this.map_,"maptypeid_changed baselayerchange",(()=>{this.set({dirty:!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()}}),this.div.list.on("mouseenter","[data-mapp-poi]",(e=>{var t=y(e.currentTarget).attr("data-mapp-poi");this.poiHover(this.pois_[t])})),this.div.list.on("mouseleave","[data-mapp-poi]",(e=>{this.poiHover(null)}))},initCenter:function(){setTimeout((()=>{this.recenter(),this.renderList(),this.isSearchable&&!this.editable&&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.editable&&this.poiOpen(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=y(".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=y.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(){y("body").on("click",(e=>{var t=y(e.target),i=t.attr("data-mapp-action");t==this.div.menu||"menu-toggle"==i||t.closest(this.div.menu).length||this.toggleView("menu",!1)}))},addPopup:function(){var e=this.editable?"mapp-iw-edit":"mapp-iw";this.editable||(e+=" mapp-"+this.templates.popup),this.div.iw=y('<div class="'+e+'">').appendTo(this.div.canvas),this.iw=new mapp.Infobox(this.map_,{className:this.editable?"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,g.useGeocoding)({withBusinesses:this.editable});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.editable){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",filters:this.filters,list:!!this.div.list.length,query:this.query,url:{href:window.location.href,search:window.location.search},debug:mappl10n.options.debug};this.xhr_&&this.xhr_.abort("cancel"),this.spinner(!0),this.xhr_=mapp.lib.ajax({data:i,callback:(i,n)=>{this.spinner(!1),i&&"OK"==i.status&&(this.setPois(i.data.pois),this.renderList(),mappl10n.options.debug&&mapp.lib.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.editable&&this.query},isSearchable:function(){return!!this.editable},onAction:function(e,t,i){switch(e){case"center":this.toggleView("menu",!1),this.poiClose(),this.recenter();break;case"dir":this.renderDirections({isOpen:!0,from:null,to:this.opened});break;case"dir-from":this.renderDirections({isOpen:!0,from:this.opened,to:null});break;case"geolocate":const{geolocate:e}=(0,g.useGeocoding)({withBusinesses:this.editable});e((e=>{e&&e.geometry&&e.geometry.location&&this.setView(e.geometry.location,parseInt(mappl10n.options.poiZoom))}),!1);break;case"layer":this.toggleLayer(t),this.toggleView("menu",!1);break;case"menu-toggle":this.toggleView("menu");break;case"open":var n=i.attr("data-mapp-poi");this.poiClick(this.pois_[n]);break;case"page":var s=parseInt(i.attr("data-mapp-page"));this.pagination.page=s,this.renderList();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){if(this.poiHighlight(e,!0),this.query&&e.postid&&e.url&&!this.editable)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(f(d,{onClose:()=>{wp.element.unmountComponentAtNode(t),t.remove()},poi:e}),t)}this.poiOpen(e)},poiClose:function(){this.opened&&this.poiHighlight(this.opened,!1),this.opened=null,this.iw.close(),this.renderDirections({isOpen:!1}),y(this).triggerHandler("mapp.close")},poiHighlight:function(e,t){if("icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.editable)return;const i=y.inArray(e,this.pois_),n=y('[data-mapp-poi="'+i+'"]',this.div.list);t?(n.addClass("mapp-selected"),e.highlight(!0)):(n.removeClass("mapp-selected"),e.highlight(!1))},poiHover:function(e){e&&this.opened==e||(this.hovered&&this.hovered!=this.opened&&this.poiHighlight(this.hovered,!1),e?(this.hovered=e,this.poiHighlight(this.hovered,!0),mappl10n.options.tooltips&&!this.editable?(this.poiClose(),this.poiOpen(e,null,"popup")):this.poiHighlight(e,!0)):this.hovered=null)},poiInsert:function(e){this.pois_.unshift(e),e.setMap(this),this.renderList(),this.set({dirty:!0})},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),y(this).triggerHandler("mapp.open",e)},poiRemove:function(e){var t=y.inArray(e,this.pois_);-1!=t&&(this.pois_[t].setMap(null),this.pois_.splice(t,1),this.renderList()),this.set({dirty:!0})},popupClose:function(){"icon"==mappl10n.options.highlight&&"leaflet"==mappl10n.options.engine&&this.editable||(this.iw.close(),this.renderDirections({isOpen:!1}),y(this).triggerHandler("mapp.close"))},popupOpen:function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"popup",n=null;this.popupClose(),t&&t.featureData?n=t.featureData:t&&t.propagatedFrom&&t.propagatedFrom.feature&&t.propagatedFrom.feature.properties&&(n=t.propagatedFrom.feature.properties),this.div.iw.html(e.render(i,n)),this.div.iw.toggleClass(" mapp-thumb-"+mappl10n.options.thumbsPopup,!!e.thumbnail);var s=this.clusterGetLatLng(e),o=s||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 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:y(window.frameElement).parent().parent().addClass(i)}}var n=mapp.lib.template("map",{map:this,layout:i});if(this.sel){if(this.div.layout=y(this.sel),this.div.layout.html(n),this.div.layout.addClass(t),this.div.layout.attr("id",e),!this.div.layout.length)return mapp.lib.log("MapPress: Missing map name or container for map: "+this.name)}else{let i=y('<div id="'+e+'" class="'+t+'">');i.html(n);let s=y("#"+this.name+"-layout");if(!s.length)return mapp.lib.log("MapPress: Missing map name or container for map: "+this.name);s.replaceWith(i),this.div.layout=i}y.each(["canvas","content","controls","directions","filters","header","list","menu","search","sidebar","wrapper"],((e,t)=>{this.div[t]=y(".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(f(n.MappDirections,{saddr:t,daddr: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(f(s.MappFilters,{onFilterChange:e=>{this.filters=e,this.fetchPois()},poiCount:this.pagination.count}),this.div.filters.get(0))},renderList:function(){var e=this.getBounds(),t=0;if(this.editable)return void this.div.layout.trigger("mapp.render");if(!this.poiList)return;let i=parseInt(mappl10n.options.poiListPageSize);i=isNaN(i)?20:i;const n=i*(this.pagination.page-1),s=n+i;if(!this.editable)for(var o=0;o<this.pois_.length;o++){let i=this.pois_[o];i.visible=!1,this.isSearchable()?e&&e.contains(i.getPosition())&&(i.visible=!0,t++):(i.visible=!0,t++),i.visible=t>=n&&t<=s&&i.visible}this.pagination.count=t,this.div.list.html(mapp.lib.template(this.templates.loop,{map:this,pois:this.pois_,pageSize:i,pagination:this.pagination})),this.renderFilters(),mappl10n.options.thumbsList&&this.div.list.addClass(" mapp-thumb-"+mappl10n.options.thumbsList)},renderMenu:function(){for(var e in this.layers_)y('[data-mapp-layer="'+e+'"]',this.div.layout).toggleClass("mapp-active",null!=this.layers_[e].getMap())},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'>"+v("MapPress Settings")+"</a>",t="<a href ='http://mappresspro.com/mappress-faq' target='_blank'>"+v("MapPress FAQ")+"</a>",i="<a href='http://mappresspro.com/chris-contact', target='_blank'>"+v("contact support")+"</a>",n="<br/>"+sprintf(v("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>",v("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:v("Leaflet library not loaded"),text:v("A theme or plugin is preventing the Leaflet library from loading.")+n},{condition:"google"==mappl10n.options.engine&&"undefined"==typeof google,title:v("Google Maps API not loaded"),text:v("A theme or plugin is preventing Google Maps from loading.")+n},{condition:"google"==mappl10n.options.engine&&!mappl10n.options.apikey,title:v("Google Maps API key required"),text:sprintf(v("Please enter a Google Maps API key in the %s, or switch to Leaflet maps."),e)+s},{condition:y('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1,title:v("Google Maps API loaded multiple times"),text:v("A theme or plugin has loaded Google Maps twice")+n},{condition:"undefined"==typeof _,title:v("Underscore library not loaded"),text:v("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(v("Map error")+": "+e.title+" - "+t)}}))},sanityOutput(e){if(!y(".mapp-errors-overlay",this.div.content).length){let e="<div class='mapp-errors-overlay'></div><div class='mapp-errors'><div class='mapp-errors-header'>"+v("Oops! Something went wrong.")+"</div><div class='mapp-errors-list'></div></div>";this.div.content.prepend(e)}y(".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"dirty":this.dirty=t;break;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.id=this.pois_.length-1,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")?(y(window.frameElement).parent().parent().css(i),y(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=y.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){mapp.lib.log("Invalid JSON in map style")}this.map_.setOptions({styles:t||null})}else this.map_.setOptions({styles:null})},setLines:function(){if(this.editable||this.pois_.length<2||!this.lines&&!mappl10n.options.lines)return;const e={...mappl10n.options.lineOpts},t=[];if(_.map(this.pois_,(e=>{t.push(e.getPosition())})),"leaflet"==mappl10n.options.engine)this.polyline&&this.polyline.remove(),this.polyline=new L.Polyline(t,e).addTo(this.map_);else{this.polyline&&this.polyline.setMap(null);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(),y.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(),"menu"==e&&t&&this.renderMenu(),"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)},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"}),this.wrapper.css({width:this.node.outerWidth(),height:this.node.outerHeight()}),"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={ajax:function(t){var i=this,n={callback:null,data:null,dataType:"json",silent:!1,type:"GET",url:mappl10n.options.ajaxurl,success:function(e,n,s){"json"==t.dataType&&t.url==mappl10n.options.ajaxurl&&"OK"!=e.status&&i.alert(e.status),"json"==t.dataType&&e.output?i.alert("AJAX Invalid Output\r\n"+e.output):t.callback&&t.callback(e,s)},error:function(e,n,s){"cancel"!=n&&(void 0!==s&&""!=s&&i.alert("AJAX ERROR\r\nTextStatus="+n+"\r\nError="+s+"\r\nResponseText="+e.responseText),t.callback&&t.callback(null))}};return t=e.extend(n,t),e.ajax(t)},alert:function(e){mappl10n.options.admin||mappl10n.options.debug?alert(e):window.console&&console.error(e)},jqVersionCheck:function(t){if(void 0===e||void 0===t)return!1;t=t.split("."),v=e.fn.jquery.split(".");for(var i=0;i<t.length;i++){var n=parseInt(t[i]),s=void 0!==v[i]?parseInt(v[i]):0;if(s!=n)return s>n}return!0},log:function(e){window.console&&console.error(e)},scrollTo:function(e,t,i){if(e&&t&&e.length&&t.length){var n=e.height(),s=t.outerHeight(!0),o=e.scrollTop(),a=o+t.position().top,l=a+s;a=a-n/2-s/2,i&&(a-=i.outerHeight(!0)),(a<o||l>o+n)&&e.scrollTop(a)}},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)},uniqid:function(){return void 0===mapp.lib.uniqidCounter?mapp.lib.uniqidCounter=0:mapp.lib.uniqidCounter++,mapp.lib.uniqidCounter}},mapp.lib.jqVersionCheck("1.7")||mapp.lib.alert("jQuery version is too old: "+e.fn.jquery),jQuery,"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}),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)}}},692:()=>{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()},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,s=i(939);window.mapp=window.mapp||{},n=jQuery,mapp.Poi=function(e){if(this.defaults={address:null,body:null,html:null,iconid:null,kml:null,map:null,overlay:null,postid:null,props:null,title:"",url:null,type:null,viewport:null},n.extend(this,this.defaults,e),e&&e.correctedAddress&&(this.address=e.correctedAddress),"leaflet"==mappl10n.options.engine&&this.isPoly()&&(this.type=null),e.viewport&&e.viewport.sw&&e.viewport.ne&&e.viewport.sw.lat){var t=e.viewport.sw,i=e.viewport.ne;"leaflet"==mappl10n.options.engine?this.viewport=new L.LatLngBounds(L.latLng(t.lat,t.lng),L.latLng(i.lat,i.lng)):this.viewport=new google.maps.LatLngBounds(new google.maps.LatLng(t.lat,t.lng),new google.maps.LatLng(i.lat,i.lng))}var s=[],o=[];if(!e.overlay)switch(this.type){case"polygon":if(e.poly&&e.poly.paths)for(var a=0;a<e.poly.paths.length;a++){s=[];for(var l=0;l<e.poly.paths[a].length;l++)s.push(new google.maps.LatLng(e.poly.paths[a][l].lat,e.poly.paths[a][l].lng));o.push(new google.maps.MVCArray(s))}this.overlay=new google.maps.Polygon({paths:new google.maps.MVCArray(o)}),this.setColors(e.poly);break;case"polyline":if(e.poly&&e.poly.path)for(a=0;a<e.poly.path.length;a++)s.push(new google.maps.LatLng(e.poly.path[a].lat,e.poly.path[a].lng));this.overlay=new google.maps.Polyline({path:new google.maps.MVCArray(s)}),this.setColors(e.poly);break;case"circle":var p=new google.maps.LatLng(e.point.lat,e.point.lng);this.overlay=new google.maps.Circle({center:p,radius:parseFloat(e.poly.radius)}),this.setColors(e.poly);break;case"rectangle":this.overlay=new google.maps.Rectangle({bounds:this.viewport}),this.setColors(e.poly);break;case"kml":var r=e.kml&&e.kml.url?e.kml.url:"";this.overlay="leaflet"==mappl10n.options.engine?omnivore.kml(r):new google.maps.KmlLayer({url:r,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)})}e.type||this.set({iconid:e.iconid})},mapp.Poi.prototype={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())||this.viewport;break;default:return 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?this.overlay.getLatLng():this.overlay.getPosition();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)},getTemplateColors:function(){var e=this.getColors();return"polyline"==this.type?{color:e.strokeColor,opacity:e.strokeOpacity,weight:e.strokeWeight}:{color:e.fillColor,opacity:e.fillOpacity,weight:e.strokeWeight}},highlight:function(e){if(!this.type){var t="leaflet"==mappl10n.options.engine?n(this.overlay._icon):this.overlay.getDiv();if(t){switch(this.editable?"circle":mappl10n.options.highlight){case"circle":t.toggleClass("mapp-marker-circle",e);break;case"icon":var i=e?s.mappLib.getIcon(mappl10n.options.highlightIcon):s.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(){this.map.poiClick(this)},open:function(e){this.map.poiOpen(this,e)},render:function(e,t){var i={};return i=_.extend(i,this,{icon:s.mappLib.getIconUrl(this.iconid)}),t&&(i.body=t.description,i.title=t.name),i.thumbnail=mappl10n.options.thumbsPopup&&"popup"==e||mappl10n.options.thumbsList&&"item"==e?i.thumbnail:null,mapp.lib.template(this.map.templates[e],{poi:i,colors:this.getTemplateColors()})},set:function(e){for(var t in e){var i=e[t];switch(t){case"dirty":this.map.set({dirty:i});break;case"iconid":this.type||(this.iconid=i,this.overlay.setIcon(s.mappLib.getIcon(i)));break;default:this[t]=i}}this.map&&"undefined"!=typeof dirty&&this.map.set({dirty})},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){var t=this;"kml"!=this.type&&("leaflet"==mappl10n.options.engine?this.overlay.options.draggable=e:this.overlay.setDraggable(e),this.isPoly()&&this.overlay.setEditable(e),mapp.event.clearListeners(this.overlay,"rightclick"),mapp.event.clearListeners(this.overlay,"dragstart"),e&&(mapp.event.addListener(this.overlay,"dragstart",(function(){t.viewport=null,t.map.poiClose()})),mapp.event.addListener(this.overlay,"dragend",(function(){t.map.set({dirty:!0})})),"polygon"!=this.type&&"polyline"!=this.type||"leaflet"!=mappl10n.options.engine&&(mapp.event.addListener(this.overlay,"rightclick",(function(e){null!=e.vertex&&t.overlay.getPath().getLength()>2&&t.overlay.getPath().removeAt(e.vertex)})),mapp.event.clearListeners(this.overlay.getPath(),"insert_at remove_at set_at"),mapp.event.addListener(this.overlay.getPath(),"insert_at remove_at set_at",(function(){t.map.set({dirty:!0})})))))},setMap:function(e){var t=this;this.map=e,mapp.event.clearInstanceListeners(this.overlay),null!=e?("kml"==this.type&&("leaflet"==mappl10n.options.engine?(mapp.event.addListenerOnce(this.overlay,"ready",(()=>{this.viewport=this.overlay.getBounds()})),mapp.event.addListenerOnce(this.overlay,"error",(()=>{alert(mappl10n.kml_error+" : "+this.kml.url)}))):(mapp.event.addListener(this.overlay,"defaultviewport_changed",(()=>{this.viewport=this.overlay.getDefaultViewport()})),mapp.event.addListener(this.overlay,"status_changed",(()=>{"OK"!=this.overlay.getStatus()&&alert(mappl10n.kml_error+" : "+this.kml.url)})))),this.setEditable(this.map.editable),!this.type&&this.map.clusterer||("leaflet"==mappl10n.options.engine?this.overlay.addTo(e.getMap()):this.overlay.setMap(e.getMap())),mapp.event.addListener(this.overlay,"click",(function(e){t.onClick(e)})),mapp.event.addListener(this.overlay,"mouseover",(function(e){t.map.poiHover(t)})),mapp.event.addListener(this.overlay,"mouseout",(function(e){t.map.poiHover(null)}))):"leaflet"==mappl10n.options.engine?this.overlay.remove():this.overlay.setMap(null)},setTemplateColors:function(e){let{color:t,opacity:i,weight:n}=e;var s="polyline"==this.type?{strokeColor:t,strokeOpacity:i,strokeWeight:n}:{fillColor:t,fillOpacity:i,strokeColor:t,strokeWeight:n,strokeOpacity:1};this.setColors(s)},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,point:null,poly:null,title:this.title,type:this.type,viewport:null},t=this.getPosition();e.point=t.toJSON();var i=this.viewport?this.viewport:this.getBounds();if(i){var n=i.toJSON();e.viewport={sw:{lat:n.south,lng:n.west},ne:{lat:n.north,lng:n.east}}}if("kml"==this.type&&(e.kml=this.kml),this.isPoly())switch(e.poly=this.getColors(),this.type){case"circle":e.poly.radius=this.overlay.getRadius();break;case"polyline":e.poly.path=[],this.overlay.getPath().forEach((function(t){e.poly.path.push(t.toJSON())}));break;case"polygon":e.poly.paths=[],this.overlay.getPaths().forEach((function(t){var i=[];t.forEach((function(e){i.push(e.toJSON())})),e.poly.paths.push(i)}));break;case"rectangle":var s=this.overlay.getBounds();e.viewport={sw:s.getSouthWest().toJSON(),ne:s.getNorthEast().toJSON()}}return e}}}},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(939),i(443),i(818),i(628),i(293),i(689),i(436),i(548),i(692)})();
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:h}=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]=h({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:u})}const u=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:u}),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:()=>h});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,h=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 h(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],h({formData:o}),t(o)}function u(){h({formData:{}}),t()}function g(e){h({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)}),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)}),t.label)));case"select":return t.unshift({value:"",label:""}),o("select",{value:i[0],onChange:t=>m(e,t.target.value)},_.map(t,(e=>o("option",{key:e.value,value:e.value},e.label))))}}(e)))}return(0,s.useClickOutside)(i,(()=>{a.isOpen&&g(!1)})),l((()=>{h({isBusy:!0}),n.mappLib.ajax({data:{action:"mapp_filters_get",nonce:mappl10n.options.nonce,otype:e.otype},callback:e=>{h({isBusy:!1}),e&&"OK"==e.status?h({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(){const t=sprintf((i="%s Result",n="%s Results",s=e.poiCount,wp.i18n._n(i,n,s,"mappress-google-maps-for-wordpress")),e.poiCount);var i,n,s;return o("div",{className:"mapp-filters-toolbar"},o("div",{className:"mapp-link-button",onClick:u},__("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:()=>h});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 h(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=mappl10n.options.templates?mappl10n.options.template[e]: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})},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";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="%d of %d",wp.i18n.__(p,"mappress-google-maps-for-wordpress")),e.page,i)),n("div",{className:l,onClick:()=>{o||t("next")}},"›"),n("div",{className:l,onClick:()=>{o||t("last")}},"»"));var p}()}},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:h}=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]=h({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")})}},615:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPoiList:()=>m});var n=i(939),s=i(27);const o=wp.element.createElement,{Fragment:a,useEffect:l,useLayoutEffect:p,useMemo:r,useRef:c,useState:h}=wp.element,sprintf=wp.i18n.sprintf;const m=wp.element.memo((function(e){e={bounds:null,className:null,hoveredPoi:null,isDraggable:!1,isPaged:!1,itemTemplate:null,onClick:null,onDragDrop:null,onHover:null,onPage:null,openPoi:null,page:1,pageSize:mappl10n.options.poiListPageSize?parseInt(mappl10n.options.poiListPageSize):20,pois:null,...e};const[t,i]=h({dragging:null,dragover:null});function l(e){i((t=>({...t,...e})))}return o("div",{className:e.className},e.isPaged&&o("div",{className:"mapp-list-header"},o("div",{className:"mapp-list-count"},sprintf((p="%s Result",r="%s Results",c=e.pois.length,wp.i18n._n(p,r,c,"mappress-google-maps-for-wordpress")),e.pois.length))),o("div",{className:"mapp-items"},_.map(e.pois,((i,s)=>function(i){let s,p,r="mapp-item";if(e.openPoi!=i.id&&e.hoveredPoi!=i.id||(r+=" mapp-selected"),r+=t.dragover==i.id?" mapp-dragover":"",r+=mappl10n.options.thumbsList?" mapp-thumb-"+mappl10n.options.thumbsList:"",e.itemTemplate){const t={...i,icon:n.mappLib.getIconUrl(i.iconid),thumbnail:mappl10n.options.thumbsList?i.thumbnail:null};s=n.mappLib.template(e.itemTemplate,{poi:t})}else p=o(a,null,o("img",{className:"mapp-icon",src:n.mappLib.getIconUrl(i.iconid)}),o("div",{className:"mapp-title"},i.title));return o("div",{className:r,dangerouslySetInnerHTML:s?{__html:s}:null,draggable:e.isDraggable,key:i.id,onClick:()=>e.onClick(i.id),onDragOver:e=>e.preventDefault(),onDragStart:e=>l({dragging:i.id}),onDragEnter:e=>l({dragover:i.id}),onDragEnd:e=>l({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)}},p)}(i)))),e.isPaged&&(e.pois.length<=e.pageSize?null:o("div",{className:"mapp-list-footer"},o(s.MappPaginate,{count:e.pois.length,onChange:t=>e.onPage(t),page:e.page,pageSize:e.pageSize}))));var p,r,c}))},892:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MappPopupModal:()=>h});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 h(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",{dangerouslySetInnerHTML:{__html:t.html}}),s("div",{className:"mapp-modal-close",onClick:e.onClose},"X")))),document.body)}},283:(e,t,i)=>{"use strict";i.r(t);var n=i(715),s=i(817),o=i(939),a=i(326);const l=wp.element.createElement,{Fragment:p,useEffect:r,useLayoutEffect:c,useRef:h,useState:m}=wp.element,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function u(e){e={layer:null,map:null,onCenter:null,...e};const[t,i]=m({activeLayer:e.layer?e.layer:null,layers:null,isOpen:!1}),n=h(null);function s(e){i((t=>({...t,...e})))}function o(){s({isOpen:!t.isOpen})}return(0,a.useClickOutside)(n,(()=>{t.isOpen&&o()})),r((()=>{if("google"==mappl10n.options.engine){s({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")}}})}}),[]),l("div",{ref:n},l("div",{className:"mapp-menu-toggle",onClick:()=>o()}),t.isOpen&&function(){const i=_.map(t.layers,((i,n)=>{const o=t.activeLayer==n?"mapp-menu-item mapp-active":"mapp-menu-item";return l("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()),s({activeLayer:i==t.activeLayer?null:i,isOpen:!1})}(n)},i.label)}));return l("div",{className:"mapp-menu-component",style:{display:"flex"}},l("div",{className:"mapp-menu-item",onClick:()=>(s({isOpen:!1}),void e.onCenter())},__("Center map")),"google"==mappl10n.options.engine&&l(p,null,l("div",{className:"mapp-menu-separator"}),i),l("div",{className:"mapp-menu-footer"},l("a",{className:"mapp-menu-help-link",href:"https://mappresspro.com/mappress-documentation",target:"_blank"},l("span",null,__("Help")))))}())}var g=i(818),d=i(615),f=i(892),v=i(10);window.mapp=window.mapp||{};const y=wp.element.createElement,w=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");wp.i18n._n;var b;b=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,v.useGeocoding)({withBusinesses:this.isEditable});if(this.render(),!this.div||!this.div.layout)return;if(this.sanity(),this.query?this.templates={loop:"map-loop",item:"mashup-item",popup:"mashup-popup"}:this.templates={loop:"map-loop",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=b(".mapp-search-container",this.div.layout);t.length&&wp.element.render(y(g.MappPlaces,{buttonLabel:this.isEditable?w("Add to map"):y("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=b(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=b(".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=b.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(y(u,{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=b('<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,v.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",filters:this.filters,query:this.query,url:{href:window.location.href,search:window.location.search},debug:mappl10n.options.debug};this.xhr_&&this.xhr_.abort("cancel"),this.spinner(!0),this.pagination.page=1,this.xhr_=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"dir":this.renderDirections({isOpen:!0,from:null,to:this.opened});break;case"dir-from":this.renderDirections({isOpen:!0,from:this.opened,to:null});break;case"geolocate":const{geolocate:e}=(0,v.useGeocoding)({withBusinesses:this.isEditable});e((e=>{e&&e.geometry&&e.geometry.location&&this.setView(e.geometry.location,parseInt(mappl10n.options.poiZoom))}),!1);break;case"open":var n=i.attr("data-mapp-poi");this.poiClick(this.pois_[n]);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){if(this.poiHighlight(e,!0),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(y(f.MappPopupModal,{onClose:()=>{wp.element.unmountComponentAtNode(t),t.remove()},poi:e}),t)}this.poiOpen(e)},poiClose:function(){this.opened&&this.poiHighlight(this.opened,!1),this.opened=null,this.iw.close(),this.renderDirections({isOpen:!1}),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),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.hovered=null)},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=b.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}),b(this).triggerHandler("mapp.close"))},popupOpen:function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"popup",n=null;this.popupClose(),t&&t.featureData?n=t.featureData:t&&t.propagatedFrom&&t.propagatedFrom.feature&&t.propagatedFrom.feature.properties&&(n=t.propagatedFrom.feature.properties),this.isEditable||(this.div.iw.html(e.render(i,n)),this.div.iw.toggleClass(" mapp-thumb-"+mappl10n.options.thumbsPopup,!!e.thumbnail));var s=this.clusterGetLatLng(e),o=s||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 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:b(window.frameElement).parent().parent().addClass(i)}}var n=o.mappLib.template("map",{map:this,layout:i});if(this.sel){if(this.div.layout=b(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=b('<div id="'+e+'" class="'+t+'">');i.html(n);let s=b("#"+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}b.each(["canvas","content","controls","directions","filters","header","list","menu","search","sidebar","wrapper"],((e,t)=>{this.div[t]=b(".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(y(n.MappDirections,{saddr:t,daddr: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(y(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(this.isEditable)e=this.pois_;else{let t=this.getBounds();t&&_.map(this.pois_,((i,n)=>{t.contains(i.point)&&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(y(d.MappPoiList,{bounds:this.getBounds(),className:t,hoveredPoi:this.hovered,isDraggable:!!this.isEditable,isPaged:!!this.query,itemTemplate:this.isEditable?null:this.templates.item,map:this,onClick:e=>this.poiOpen(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,page:this.pagination.page,pageSize:20,pois:e}),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'>"+w("MapPress Settings")+"</a>",t="<a href ='http://mappresspro.com/mappress-faq' target='_blank'>"+w("MapPress FAQ")+"</a>",i="<a href='http://mappresspro.com/chris-contact', target='_blank'>"+w("contact support")+"</a>",n="<br/>"+sprintf(w("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>",w("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:w("Leaflet library not loaded"),text:w("A theme or plugin is preventing the Leaflet library from loading.")+n},{condition:"google"==mappl10n.options.engine&&"undefined"==typeof google,title:w("Google Maps API not loaded"),text:w("A theme or plugin is preventing Google Maps from loading.")+n},{condition:"google"==mappl10n.options.engine&&!mappl10n.options.apikey,title:w("Google Maps API key required"),text:sprintf(w("Please enter a Google Maps API key in the %s, or switch to Leaflet maps."),e)+s},{condition:b('script[src*="https://maps.googleapis.com/maps/api/js?v=3"]').length>1,title:w("Google Maps API loaded multiple times"),text:w("A theme or plugin has loaded Google Maps twice")+n},{condition:"undefined"==typeof _,title:w("Underscore library not loaded"),text:w("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(w("Map error")+": "+e.title+" - "+t)}}))},sanityOutput(e){if(!b(".mapp-errors-overlay",this.div.content).length){let e="<div class='mapp-errors-overlay'></div><div class='mapp-errors'><div class='mapp-errors-header'>"+w("Oops! Something went wrong.")+"</div><div class='mapp-errors-list'></div></div>";this.div.content.prepend(e)}b(".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")?(b(window.frameElement).parent().parent().css(i),b(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=b.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.isEditable||this.pois_.length<2||!this.lines&&!mappl10n.options.lines)return;const e={...mappl10n.options.lineOpts},t=[];if(_.map(this.pois_,(e=>{t.push(e.getPosition())})),"leaflet"==mappl10n.options.engine)this.polyline&&this.polyline.remove(),this.polyline=new L.Polyline(t,e).addTo(this.map_);else{this.polyline&&this.polyline.setMap(null);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(),b.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"}),this.wrapper.css({width:this.node.outerWidth(),height:this.node.outerHeight()}),"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)}}},692:()=>{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()},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,s=i(939);window.mapp=window.mapp||{},n=jQuery,mapp.Poi=function(e){if(this.defaults={address:null,body:null,html:null,iconid:null,id:null,kml:null,map:null,overlay:null,postid:null,poly:null,props:null,title:"",url:null,type:null,viewport:null},n.extend(this,this.defaults,e),this.id=s.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.open(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.point)return"leaflet"==mappl10n.options.engine?L.latLng(this.point):new google.maps.LatLng(this.point);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?n(this.overlay._icon):this.overlay.getDiv();if(t){switch(this.map.isEditable?"circle":mappl10n.options.highlight){case"circle":t.toggleClass("mapp-marker-circle",e);break;case"icon":var i=e?s.mappLib.getIcon(mappl10n.options.highlightIcon):s.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(){this.map.poiClick(this)},open:function(e){this.map.poiOpen(this,e)},render:function(e,t){var i={};return i=_.extend(i,this,{icon:s.mappLib.getIconUrl(this.iconid)}),t&&(i.body=t.description,i.title=t.name),i.thumbnail=mappl10n.options.thumbsPopup&&"popup"==e||mappl10n.options.thumbsList&&"item"==e?i.thumbnail:null,s.mappLib.template(this.map.templates[e],{poi:i})},set:function(e){for(var t in e){var i=e[t];"iconid"===t?this.type||(this.iconid=i,this.overlay.setIcon(s.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,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.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}},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){if(google){const t=e instanceof google.maps.Polyline?{strokeColor:e.strokeColor,strokeOpacity:e.strokeOpacity,stokeWeight:e.strokeWeight}:{fillColor:e.fillColor,fillOpacity:e.fillOpacity,strokeColor:e.strokeColor,strokeOpacity:1,stokeWeight:e.strokeWeight};if(e instanceof google.maps.Circle)return{point:e.getCenter().toJSON(),poly:{radius:e.getRadius(),...t}};if(e instanceof google.maps.Rectangle)return{viewport:mapp.poi.boundsToViewport(e.getBounds()),poly:{...t}};if(e instanceof google.maps.Polyline){const i=[];return e.getPath().forEach((function(e){i.push(e.toJSON())})),{poly:{path:i,...t}}}if(e instanceof google.maps.Polygon){const t={fillColor:e.fillColor,fillOpacity:e.fillOpacity,strokeColor:e.strokeColor,strokeOpacity:1,stokeWeight:e.strokeWeight},i=[];return e.getPaths().forEach((function(e){var t=[];e.forEach((function(e){t.push(e.toJSON())})),i.push(t)})),{poly:{paths:i,...t}}}}return{point:"leaflet"==mappl10n.options.engine?e.getLatLng().toJSON():e.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(27),i(818),i(615),i(892),i(628),i(283),i(689),i(436),i(548),i(692)})();
build/index_mappress_admin.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e={939:(e,t,a)=>{"use strict";a.d(t,{mappLib:()=>c});wp.element.createElement;const{Fragment:o,useCallback:i,useEffect:n,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=mappl10n.options.templates?mappl10n.options.template[e]: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)}}},844:()=>{const e=wp.element.createElement,{Fragment:t,useEffect:a,useLayoutEffect:o,useRef:i,useState:n}=wp.element,{Button:s,Modal:l}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function r(t){const[o,i]=n({isOpen:!1,reason:"",reasonText:"",redirectUrl:null});function r(e){i((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=jQuery("#deactivate-mappress-google-maps-for-wordpress");e.length&&(e.off("click.mapp"),e.on("click.mapp",(function(){return function(e){const t=e?jQuery(e).attr("href"):null;t&&r({isOpen:!0,redirectUrl:t})}(this),!1})))}),[]),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'm just having a bad day")},{value:"notworking",label:__("The plugin isn't working"),placeholder:__("What didn't work? Was there an error message?")},{value:"toohard",label:__("Too hard to use"),placeholder:__("How can I make it easier?")},{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}jQuery(document).ready((function(){const t=jQuery("<div></div>").appendTo("body").get(0);wp.element.render(e(r),t)}))},215:(e,t,a)=>{"use strict";a.r(t);var o=a(123),i=a(805);window.mapp=window.mapp||{};const n=wp.element.createElement;var s;s=jQuery,mapp.Editor=function(e){this.drawingManager=null,this.map=e,this.poiEditor=null;var t=this;this.initialize=function(){this.map.display(),this.poiEditor=new mapp.PoiEditor(this.map),this.initDrawingManager(),this.map.onSearch=e=>{this.insert(e)}},this.insert=function(e){if(e)if(this.drawingManager&&this.drawingManager.setDrawingMode(null),this.map.poiClose(),e.geometry){var 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,i=new mapp.Poi({address:a,body:o,iconid:this.poiEditor.lastIcon,point:e.geometry.location,title:e.name,viewport:e.geometry.viewport?e.geometry.viewport:null});this.map.poiInsert(i),i.center()}else e.overlay?(this.map.poiHover(null),"marker"==e.type?(i=new mapp.Poi({body:"",iconid:null,overlay:null,point:e.overlay.getPosition().toJSON(),title:e.overlay.getPosition().toUrlValue(6),type:null}),e.overlay.setMap(null)):i=new mapp.Poi({body:"",iconid:null,overlay:e.overlay,title:mappl10n.shape,type:e.type}),this.map.poiInsert(i)):"string"==typeof e&&"http"==e.substring(0,4)&&(i=new mapp.Poi({iconid:this.poiEditor.lastIcon,kml:{url:e},title:"KML",type:"kml"}),t.map.poiInsert(i),mapp.event.addListenerOnce(i.overlay,"ready defaultviewport_changed",(function(){i.center()})))},this.initDrawingManager=function(){var e={fillColor:"#0000FF",fillOpacity:.4,strokeColor:"#0000FF",strokeOpacity:1,strokeWeight:2};"leaflet"==mappl10n.options.engine||google.maps.drawing&&(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.getMap()),mapp.event.addListener(this.drawingManager,"overlaycomplete",(function(e){t.drawingManager.get("drawingMode")&&t.insert(e)})))},this.initialize.apply(this)},mapp.PoiEditor=function(e){this.map=e,this.poi=null,this.sel=null,this.lastIcon=null;var t=this;this.initialize=function(){this.sel=s(this.map.iw.getContent()),s(this.map).on("mapp.open",(function(e,a){t.render(a)})),s(this.map).on("mapp.close",(function(){t.mce(!1)})),this.sel.on("click","[data-mapp-poi]",(function(e){e.preventDefault();var a=s(this).attr("data-mapp-poi");t[a]()})),this.sel.on("click",".mapp-poi-visual, .mapp-poi-html",(function(e){var a=s(this).hasClass("mapp-poi-visual");t.mce(a)})),this.sel.on("keydown",(function(e){13==e.which&&"mapp-poi-body"!=e.target.id&&(e.preventDefault(),t.save())}))},this.cancel=function(){this.map.poiClose()},this.initMCE=function(){if("undefined"!=typeof tinyMCE&&void 0!==tinyMCE.init){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),this.mce(!0)}},this.mce=function(e){var a=e?"mceAddEditor":"mceRemoveEditor";"undefined"!=typeof tinyMCE&&tinyMCE.execCommand(a,!1,"mapp-poi-body"),s(".mapp-poi-visual, .mapp-poi-html",t.sel).removeClass("mapp-active"),e?s(".mapp-poi-visual",t.sel).addClass("mapp-active"):s(".mapp-poi-html",t.sel).addClass("mapp-active")},this.remove=function(){confirm(mappl10n.delete_prompt)&&(this.map.poiClose(),this.map.poiRemove(this.poi))},this.render=function(e){this.poi=e,this.renderColorPicker(this.poi),this.renderIconPicker(this.poi),this.initMCE()},this.renderColorPicker=function(e){document.getElementById("mapp-poi-colorpicker")&&wp.element.render(n(o.MappColorPicker,{...e.getTemplateColors(),isExtended:!0,onChange:t=>{e.set({dirty:!0}),e.setTemplateColors(t),this.map.renderList(),this.renderColorPicker(e)}}),document.getElementById("mapp-poi-colorpicker"))},this.renderIconPicker=function(e){document.getElementById("mapp-poi-iconpicker")&&wp.element.render(n(i.MappIconPicker,{iconid:e.iconid,onChange:t=>{e.set({dirty:!0,iconid:t}),this.lastIcon=t,this.map.renderList(),this.renderIconPicker(e)}}),document.getElementById("mapp-poi-iconpicker"))},this.save=function(){"undefined"!=typeof tinyMCE&&tinyMCE.get("mapp-poi-body")&&tinyMCE.get("mapp-poi-body").save(),this.poi.set({dirty:!0,title:s(".mapp-poi-title").val(),body:s(".mapp-poi-body").val()}),this.map.renderList(),this.map.poiClose()},this.initialize.apply(this)}},713:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>m});const o=wp.element.createElement,{addQueryArgs:i}=wp.url,{useCallback:n,useEffect:s,useState:l}=wp.element,{Button:r,Dropdown:p,Spinner:c,TextControl:d}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function m(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:i("/wp/v2/search",{search:t.search,per_page:20})}).then((e=>{r({results:e,isFetching:!1})})))}),[t.search,t.isOpen]);const m=n(_.debounce((function(e){r({search:e})}),1e3),[]);function u(a,i){return o("div",{className:"mapp-attach-control"},o("div",{className:"mapp-attach-control-toolbar"},o(d,{autoComplete:"false",value:t.searchTerm,onChange:e=>{r({searchTerm:e}),m(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()}}))}},371:(e,t,a)=>{"use strict";a.r(t);var o=a(477);window.mapp=window.mapp||{};const i=wp.element.createElement,{Fragment:n,useEffect:s,useLayoutEffect:l,useRef:r,useState:p}=wp.element,{Button:c,Dashicon:d,Modal:m}=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(e,t){switch(e){case"pick-close":s({isOpen:!1,mapid:null});break;case"pick-insert":s({isOpen:!1});var a='[mappress mapid="'+t+'"]';"undefined"==typeof wpActiveEditor?__("Please select the post content to insert the map into."):send_to_editor(a);break;case"open":s({isOpen:!0,mapid:r()})}}function r(){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,i=-1;for(let e=t.anchorOffset-1;e>=0;e--){let t=o[e];if("["==t){i=e;break}if("]"==t||"<"==t||">"==t)break}return i>=0&&(a=wp.shortcode.next("mappress",o,i),a)?a.shortcode.attrs.named.mapid:null}return i(n,null,i("button",{className:"button",type:"button",onClick:e=>{e.preventDefault(),l("open")}},i(d,{className:"wp-media-buttons-icon",icon:"location"}),__("MapPress")),t.isOpen&&i(o.default,{context:"mce",mapid:t.mapid,onAction:l}))}jQuery(document).on("click",".mapp-mce-button",(e=>{const t=e.currentTarget.parentElement;wp.element.render(i(u),t)}))},123:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappColorPicker:()=>M});var o=a(824);const i=wp.element.createElement,{Fragment:n,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:d}=wp.data,{withState:m}=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:S,Spinner:N,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,weight:e.weight});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((()=>{}),[]),i(n,null,i("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}))),n=_.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 i(v,{title:__("Select a color"),className:"mapp-colors-modal",onRequestClose:()=>r()},i("div",{className:"mapp-colors"},i("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)=>i("div",{key:a},_.map(t,(t=>i("span",{className:"mapp-color"+(t==e.color?" mapp-selected":""),key:t,onClick:()=>{l({isCustomOpen:!1}),p(t)},style:{backgroundColor:t},title:t}))))))),t.isCustomOpen&&i(g,{color:e.color,onChangeComplete:e=>p(e.hex),disableAlpha:!0}),e.isExtended&&i(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&&i(o.Select,{label:__("Stroke"),options:n,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}}),i("div",{className:"mapp-colors-toolbar"},i(u,{isPrimary:!0,onClick:()=>r()},__("Done")),i(u,{onClick:()=>l({isCustomOpen:!t.isCustomOpen})},__("Custom color")))))}())}},521:(e,t,a)=>{"use strict";a.r(t);var o=a(477);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:i,useLayoutEffect:n,useRef:s,useState:l}=wp.element,{Button:r,Spinner:p}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),[c,d]=l({isFetchingItems:!0,isPickerOpen:!1,items:null,pickerMapid:null,pickerMode:"list"});function m(e){d((t=>({...t,...e})))}function u(e,t){switch(e){case"open-library":m({isPickerOpen:!0,pickerMode:"list"});break;case"edit":m({isPickerOpen:!0,pickerMapid:t,pickerMode:"edit"});break;case"pick-close":m({isPickerOpen:!1,pickerMapid:null});break;case"pick-insert":const e=wp.blocks.createBlock("mappress/map",{mapid:t});wp.data.dispatch("core/block-editor").insertBlock(e,0),m({isPickerOpen:!1,pickerMapid:null})}}function h(e){let a=e.map_title?e.map_title:__("Untitled");return t("div",{className:"mapp-document-item",key:e.mapid+e.postid},t("a",{className:"mapp-document-col-map_title",href:"#",onClick:t=>u("edit",e.mapid)},a),t("div",{className:"mapp-document-col-mapid"},e.mapid))}return i((()=>{const e=e=>{m({isFetchingItems:e.isFetchingItems,isSavingMap:e.isSavingMap,items:e.items})};return mapp.store.subscribe(e),()=>mapp.store.unsubscribe(e)})),i((()=>{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-map_title"},__("Map title")),t("div",{className:"mapp-document-col-mapid"},null,__("Map ID"))),_.map(e,h)):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:()=>u("open-library")},__("Open map library")),function(){if(c.isPickerOpen)return t(o.default,{mapid:c.pickerMapid,mode:c.pickerMode,onAction:u,type:"post"})}())},icon:null})},999:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var o=a(939),i=a(429),n=a(710);window.mapp=window.mapp||{};const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:d}=wp.element,{Button:m,Dropdown:u,Modal:h,Panel:g,PanelBody:f,Popover:b,Spinner:y,TextControl:v}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function k(e){const[t,a]=d({dragging:null,dragover:null,isFetchingMap:!!e.mapid,isPoiListOpen:!0,isSavingMap:!1,map:null,mapdata:null}),l=c(null);function p(e){a((t=>({...t,...e})))}function u(e){p({map:t.map})}function h(a,o){switch(a){case"change-settings":t.map.set(o),p({map:t.map});break;case"change-title":t.map.set({title:o}),p({map:t.map});break;case"close":e.onAction("edit-close");break;case"trash":confirm(mappl10n.delete_map_prompt)&&(mapp.store.trashMap({mapid:e.mapid}),e.onAction("edit-trash"));break;case"save":mapp.store.saveMap({mapdata:t.map.toJSON(),success:t=>{e.onAction("edit-save",t.mapid)}})}}return r((()=>{t.map&&(jQuery(t.map.div.layout).off("mapp.render",u),jQuery(t.map.div.layout).on("mapp.render",(e=>u())))}),[t.map]),r((()=>{const t=t=>{p({isFetchingMap:t.isFetchingMap,isSavingMap:t.isSavingMap,mapdata:t.maps[e.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),r((()=>{e.mapid&&mapp.store.fetchMap({mapid:e.mapid})}),[e.mapid]),r((()=>{if(t.isFetchingMap)return;let a={editable:!0,embed:!0,layout:"left",mapOpts:{streetViewControl:!1},menu:!1,name:"media-map",poiList:!1,sel:jQuery(l.current)};"map"!=e.context&&"mashup"!=e.context||(a.center=null,a.zoom=null);const o=new mapp.Map(t.mapdata,a);new mapp.Editor(o);p({map:o})}),[t.mapdata]),r((()=>{t.map&&setTimeout((()=>t.map.resize()),100)}),[t.isPoiListOpen]),s("div",{className:"mapp-edit"},function(){let e=t.map&&!t.isFetchingMap&&t.map.title?t.map.title:"",a=t.map&&!t.isFetchingMap?__("Untitled"):"";return s("div",{className:"mapp-gt-modal-header"},s(v,{className:"mapp-edit-title",placeholder:a,value:e,onChange:e=>h("change-title",e)}))}(),s("div",{className:"mapp-edit-main"},s("div",{className:"mapp-sidebar"+(t.isPoiListOpen?" mapp-sidebar-open":"")},s("div",{className:"mapp-sidebar-toggle",onClick:()=>p({isPoiListOpen:!t.isPoiListOpen})}),s("div",{className:"mapp-list mapp-edit-list"},s("div",{className:"mapp-edit-list-wrapper"},function(){if("mce"!=e.context&&"library"!=e.context)return null;if(!t.map)return null;const{center:a,height:o,poiList:n,search:l,width:r,zoom:p}=t.map;return s("div",{className:"mapp-gt-inspector"},s(i.MappSettings,{map:t.map,context:e.context,onAction:h,center:a,height:o,poiList:n,search:l,width:r,zoom:p}))}(),function(){if(!t.map)return;const e=function(e,a){let o=t.dragging,i=a;t.map.pois_.splice(i,0,t.map.pois_.splice(o,1)[0]),p({map:t.map,dragover:null})};return s("div",{className:"mapp-items"},_.map(t.map.pois_,((a,i)=>s("div",{className:t.dragover==i?"mapp-item mapp-edit-dragover":"mapp-item",draggable:!0,key:i,onClick:()=>t.map.poiOpen(t.map.pois_[i]),onDragOver:e=>e.preventDefault(),onDragStart:e=>p({dragging:i}),onDragEnter:e=>p({dragover:i}),onDragEnd:e=>p({dragging:null,dragover:null}),onDrop:t=>e(t,i)},s("img",{className:"mapp-icon",src:o.mappLib.getIconUrl(a.iconid)}),s("div",{className:"mapp-title"},a.title)))))}()))),s("div",{className:"mapp-edit-map",key:e.mapid,ref:l,onKeyDown:e=>e.stopPropagation(),tabIndex:-1}),l.current&&t.map?s(n.m,{map:t.map,selected:t.map.mapTypeId,onChange:e=>h("change-settings",{mapTypeId:e})}):null),s("div",{className:"mapp-edit-toolbar",tabIndex:-1,onKeyDown:e=>e.stopPropagation()},s(m,{isPrimary:!0,isBusy:t.isSavingMap,onClick:()=>h("save")},__("Save")),s(m,{disabled:t.isSavingMap,onClick:()=>h("close")},__("Cancel")),s(m,{disabled:!e.mapid||t.isSavingMap,isDestructive:!0,className:"mapp-edit-delete",onClick:()=>h("trash")},__("Trash"))))}},805:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappIconPicker:()=>M});var o=a(939),i=a(123),n=a(824);const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useCallback:c,useRef:d,useState:m}=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:S}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress"),N=[{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]=m({defaultIcon:mappl10n.options.defaultIcon,filename:null,filter:"",glyph:"",glyphColor:"white",glyphFont:O[0],glyphSize:20,isOpen:!1,mode:"list",shape:"circle",shapeColor:"gray",shapeFont:N[0],toDelete:[],userIcons:mappl10n.options.userIcons});function p(e){a((t=>({...t,...e})))}function c(a,o){switch(a){case"bulk-select":let a=[...t.toDelete],i=t.toDelete.indexOf(o.iconid);i>=0?a.splice(i,1):a.push(o.iconid),p({toDelete:a});break;case"close":p({isOpen:!1});break;case"delete":confirm(mappl10n.delete_prompt)&&mapp.lib.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 i=document.createElement("canvas");i.width=a*o,i.height=a*o,i.style.imageRendering="pixelated";let n=i.getContext("2d");n.font=a*o+"px "+t.shapeFont.fontFamily,n.fillStyle=t.shapeColor,n.textBaseline="bottom",n.fillText(t.shape,0,a*o),n.strokeStyle="white",n.strokeText(t.shape,1,a*o);const s=_.findWhere(t.shapeFont.glyphs,{name:t.shape});if(t.glyph&&s.center){n.imageSmoothingEnabled=!1,n.font=t.glyphSize*o+"px "+t.glyphFont.fontFamily,n.fillStyle=t.glyphColor;const e=[s.center[0]*o,s.center[1]*o];n.fillText(t.glyph,e[0]-t.glyphSize,e[1]+t.glyphSize)}"undefined"!=typeof debug?document.getElementById("mapp-edit-debug").append(i):i.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)}(o);break;case"list-select":e.onChange&&e.onChange(o),c("close");break;case"mode":p("bulk"==o?{mode:o,toDelete:[]}:{mode:o});break;case"open":p({isOpen:!0})}}function d(a){const i="user"==a?mappl10n.options.userIcons:mappl10n.options.standardIcons;return _.map(i,(i=>{if("standard"==a&&function(e){return mappl10n.options.userIcons.indexOf(e)>=0}(i+".png"))return"";let n="mapp-icon-wrapper";return"bulk"==t.mode&&t.toDelete.indexOf(i)>=0?n+=" mapp-bulk-selected":"list"!=t.mode||e.iconid!=i&&e.iconid+".png"!=i||(n+=" mapp-selected"),s("div",{alt:i,className:n,key:i,onClick:()=>{"list"==t.mode?c("list-select",i):"user"==a&&c("bulk-select",{iconid:i,type:a})}},s("img",{className:"mapp-icon",src:o.mappLib.getIconUrl(i),title:i}))}))}function u(t){t.append("action","mapp_icon_save"),t.append("nonce",mappl10n.options.nonce),mapp.lib.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"},d("user")),mappl10n.options.userIcons.length>0&&s("div",{className:"mapp-icons-list-title"},__("Standard icons")),s("div",{className:"mapp-icons-standard"},d("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"},d("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(n.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(i.MappColorPicker,{color:t.shapeColor,isExtended:!1,onChange:e=>p({shapeColor:e.color})}),s("span",null,__("Fill")),s(i.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(n.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(n.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")))))))}},24:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappImport:()=>y});var o=a(939),i=a(824);const n=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useCallback:p,useRef:c,useState:d}=wp.element,{useSelect:m}=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]=d({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 m=t.isBusy||"file"==t.tab&&!t.file||"sheet"==t.tab&&0==t.url.trim().length;return n("div",{className:"mapp-import"},n("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)}()}},n(s,null,n("h2",null,__("Source")),n(i.MappTabs,{tabs:[{name:"sheet",label:__("Google Sheets")},{name:"file",label:__("File")}],initialTab:t.tab,onRender:e=>"sheet"==e?function(){const e=n("div",{className:"mapp-import-help"},__("Google sheets must be shared before importing:"),n("ol",null,n("li",null,__("File -> Share -> Publish to web")),n("li",null,__("Select 'Entire Document' and 'Comma-Separated Values (.csv)")),n("li",null,__("Copy the URL and paste it here"))));return n("div",{className:"mapp-import-tab-sheet"},n("label",{className:"mapp-import-sheet-name"},n("span",null,"URL"),n("input",{onChange:e=>{p({url:e.target.value})},type:"text",value:t.url})),e)}():"file"==e?function(){const e=n("div",{className:"mapp-import-help"},__("File must be in CSV format:"),n("ol",null,n("li",null,__("Excel: File -> Save As -> 'CSV' or 'CSV UTF-8' (for special characters)'")),n("li",null,__("Google sheets: File -> Download -> Comma Separated Values (.csv)"))));return n("div",{className:"mapp-import-tab-file"},n("div",{className:"mapp-import-file-name"},n(g,{accept:"text/csv",isSecondary:!0,multiple:!1,onChange:e=>{p({file:e.target.files[0]})}},__("Select file")),n("input",{disabled:!0,type:"text",value:t.file?t.file.name:""})),e)}():void 0,onSelect:e=>p({tab:e})})),n(b,{checked:t.overwrite,label:__("Use map IDs from file"),onChange:e=>p({overwrite:e})}),t.overwrite&&n("div",{className:"mapp-import-overwrite-warning"},__("WARNING: this will overwrite any existing maps with the same IDs")),n(h,{disabled:m,isBusy:t.isBusy,isPrimary:!0,type:"submit"},__("Import"))),function(){if(t.response&&t.response.results)return n("div",{className:"mapp-import-log"},n("h2",null,__("Results")),_.map(t.response.results,((e,a)=>n("div",{key:a},function(e){let a=t.response.headers;return n("div",{className:"mapp-import-table"},n("div",{className:"mapp-import-table-header"},n("div",{key:"line",className:"mapp-import-cell"},__("Line")),_.map(a,((e,t)=>n("div",{key:t,className:"mapp-import-cell"},e))),n("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"),n("div",{className:"mapp-import-row",key:t},n("div",{key:"col_rowid",className:"mapp-import-cell"},e.rowid),_.map(a,((t,a)=>n("div",{key:a,className:"mapp-import-cell"},e[t]?e[t]:" "))),n("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 n("div",{className:o,key:a},e.msg,e.mapid&&n(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&&n(f,{title:__("Map")+" "+t.mapid,onRequestClose:()=>p({isMapModalOpen:!1})},n("div",{className:"mapp-import-map"},n("div",{ref:r}))))}document.getElementById("mapp-import-container")&&wp.element.render(n(y,null),document.getElementById("mapp-import-container"))},816:(e,t,a)=>{"use strict";a.r(t);var o=a(429),i=a(477);window.mapp=window.mapp||{};const n=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 d(e){const{BaseControl:t,Button:a,ButtonGroup:r,CheckboxControl:d,Dropdown:m,Modal:u,Panel:_,PanelBody:h,PanelRow:g,Placeholder:f,RadioControl:b,SelectControl:y,TextControl:v,ToggleControl:k,Toolbar:w,ToolbarButton:C,ToolbarGroup:x}=wp.components,{BlockControls:S,InspectorControls:N}=wp.blockEditor,[O,M]=c({isOpen:!1,map:null,mapdata:void 0,pickerMode:"list",pickerMapid:null}),P=p(null);function I(e){M((t=>({...t,...e})))}function E(t,a){switch(t){case"add":I({isOpen:!0,pickerMapid:null,pickerMode:"edit"}),e.setAttributes({center:void 0,zoom:void 0});break;case"change-settings":e.setAttributes(a);break;case"edit":I({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"edit"});break;case"edit-close":case"pick-close":I({isOpen:!1});break;case"pick-trash":e.setAttributes({mapid:void 0,center:void 0,zoom:void 0,width:void 0,height:void 0}),I({isOpen:!1});break;case"pick-insert":case"pick-duplicate":a!=e.attributes.mapid&&e.setAttributes({center:void 0,mapid:a,zoom:void 0}),I({isOpen:!1});break;case"open":I({isOpen:!0,pickerMapid:e.attributes.mapid,pickerMode:"list"})}}function z(){return n(S,null,n(void 0!==x?x:w,null,e.attributes.mapid&&n(C,{icon:"edit",label:__("Edit map"),onClick:()=>E("edit")}),n(C,{icon:"portfolio",label:__("Map Library"),onClick:()=>E("open")})))}function T(){if(O.isOpen)return n(i.default,{mapid:O.pickerMapid,mode:O.pickerMode,onAction:E,type:"post"})}return l((()=>{const t=t=>{I({mapdata:t.maps[e.attributes.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),l((()=>{e.attributes.mapid&&mapp.store.fetchMap({mapid:e.attributes.mapid})}),[e.attributes.mapid]),l((()=>{e.attributes.mapid&&P.current&&O.mapdata&&function(){let t=new mapp.Map(O.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(P.current),width:e.attributes.width,zoom:e.attributes.zoom});t.display(),I({map:t})}()}),[O.mapdata,e.attributes.search]),l((()=>{"wide"!=e.attributes.align&&"full"!=e.attributes.align||(e.setAttributes({width:"100%"}),O.map&&O.map.setSize({width:"100%"}))}),[e.attributes.align]),e.attributes.preview?n("img",{className:"mapp-gt-preview",src:mappl10n.options.baseurl+"/images/preview.png",width:"100%"}):e.attributes.mapid&&null!==O.mapdata?n(s,null,z(),function(){if(!O.map)return null;const{align:t,center:a,height:i,poiList:s,search:l,width:r,zoom:p}=e.attributes;return n(N,null,n("div",{className:"mapp-gt-inspector"},n(o.MappSettings,{map:O.map,alignment:t,context:"map",onAction:E,center:a,height:i,poiList:s,search:l,width:r,zoom:p})))}(),n("div",{className:"mapp-gt",ref:P}),T()):n(s,null,n(s,null,z(),n(f,{className:"mapp-gt-placeholder",icon:"location",label:__("MapPress Map"),instructions:__("Use the map library to create a new map or insert an existing map.")},n(a,{icon:"portfolio",isSecondary:!0,onClick:()=>E("open")},__("Map Library")))),T())}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 n(d,e)},save:function(e){return e},example:{attributes:{preview:!0}}})},378:(e,t,a)=>{"use strict";a.r(t);a(429),a(670),a(308);window.mapp=window.mapp||{};wp.element.createElement;const{Fragment:o,useEffect:i,useLayoutEffect:n,useRef:s,useState:l}=wp.element,{BaseControl:r,Button:p,ButtonGroup:c,Card:d,CardBody:m,CardFooter:u,CardHeader:_,CheckboxControl:h,ExternalLink:g,HorizontalRule:f,Panel:b,PanelBody:y,PanelRow:v,Placeholder:k,RadioControl:w,SelectControl:C,TabPanel:x,TextControl:S,TextareaControl:N,ToggleControl:O,Toolbar:M}=wp.components,{useSelect:P}=wp.data},670:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappMultiSelect:()=>b});const o=wp.element.createElement,{Fragment:i,useEffect:n,useLayoutEffect:s,useRef:l,useState:r}=wp.element,{BaseControl:p,Button:c,CheckboxControl:d,Panel:m,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),[i,s]=r({isOpen:!1,filter:"",filteredOptions:[]});function c(e){s((t=>({...t,...e})))}function m(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(),i=o.indexOf(t);(a=void 0!==a?a:-1==i)?o.push(t):o.splice(i,1),e.onChange(o)}function g(){return i.isOpen?o("div",{className:"mapp-select-dropdown-wrapper"},o("div",{className:"mapp-select-dropdown"},!i.isOpen||!e.options||e.options.length<10?null:o("div",{className:"mapp-select-filter",ref:a},o(f,{autoComplete:"off",placeholder:__("Search"),value:i.filter,onChange:e=>c({filter:e})})),o("div",{className:"mapp-select-dropdown-list"},function(){const e=u();if(0==i.filteredOptions.length)return o("div",{className:"mapp-select-dropdown-item"},__("No results"));return i.filteredOptions.map((t=>o(d,{className:"mapp-select-dropdown-item",checked:e.includes(t.value),key:t.value,onChange:e=>h(t.value,e),label:t.label})))}()))):null}return n((()=>{if(e.options)if(i.filter){let t=i.filter.toUpperCase();c({filteredOptions:e.options.filter((e=>0==e.label.toUpperCase().indexOf(t)))})}else c({filteredOptions:e.options})}),[e.options,i.filter]),n((()=>{i.isOpen&&a.current&&(jQuery("input",jQuery(a.current)).focus(),c({filter:""}))}),[i.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=>m(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:!i.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)}},m(e))))),o("span",{className:"dashicons "+(i.isOpen?"dashicons-arrow-up-alt2":"dashicons-arrow-down-alt2")}))}(),g()))}},218:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>v});var o=a(824),i=a(123),n=a(805),s=a(710);const l=wp.element.createElement,{Fragment:r,useEffect:p,useLayoutEffect:c,useCallback:d,useRef:m,useState:u}=wp.element,{useSelect:h}=wp.data,{Button:g,Dashicon:f,FormTokenField:b,Modal:y}=wp.components,{sprintf}=wp.i18n,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function v(e){const[t,a]=u({...e,isCheckingLicense:!1,isSaving:!1}),c=m(null);function d(e){a((t=>({...t,...e})))}function y(e){return _.map(e,((e,t)=>({value:t,label:e})))}function v(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 k(e,a){switch(e){case"license-check":d({isCheckingLicense:!0}),mapp.lib.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}),mapp.lib.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=v(e.filters,!1),e.metaKeys=v(e.metaKeys,!0),e.sizes=v(e.sizes,!0),e.autoicons&&e.autoicons.values&&(e.autoicons.values=v(e.autoicons.values,!0)),d({isSaving:!0}),mapp.lib.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 p((()=>{if(c.current){new mapp.Map(t.helpers.demo_map,{sel:jQuery(c.current)}).display()}}),[]),p((()=>{mappl10n.options.engine!=t.engine&&k("save")}),[t.engine]),l("div",{className:"mapp-options"},l("form",{onSubmit:e=>{e.preventDefault(),k("save")}},l(o.Section,{title:__("Sample Map"),className:"mapp-demo-section"},l("div",{className:"mapp-options-demo",ref:c})),mappl10n.options.pro&&(!t.helpers.is_multisite||t.helpers.is_super_admin||t.helpers.is_main_site)&&l(o.Section,{title:__("License")},l(o.Option,{title:__("MapPress license key"),className:"mapp-option-license"},l(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=l(g,{isSecondary:!0,href:"https://mappresspro.com/mappress"},__("Get license")),o=l(g,{isBusy:t.isCheckingLicense,isSecondary:!0,onClick:()=>k("license-check")},__("Check now")),i=l(g,{isLink:!0,target:"_blank",href:"https://mappresspro.com/account"},__("Your account"));return t.license?"active"==e?l("span",{className:"mapp-license-status"},l(f,{icon:"yes"}),__("Active")):l(r,null,o,i,e&&!t.isCheckingLicense&&l("div",null,l(f,{icon:"no"}),"inactive"==e?__("License is invalid or expired"):e)):a}()),l(o.Option,{title:__("Beta versions")},l(o.Checkbox,{label:__("Enable updates for beta versions"),checked:t.betas,onChange:e=>d({betas:e})}))),l(o.Section,{title:__("Basic Settings")},l(o.Option,{title:__("Mapping API")},l(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,hide:!!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",l(o.Option,{title:__("Geocoder")},l(o.Radios,{options:e,checked:t.geocoder,onChange:e=>d({geocoder:e}),help:a}))}(),"leaflet"==t.engine&&function(){const e=l(g,{isSecondary:!0,href:"https://account.mapbox.com/access-tokens/",target:"_blank"},__("Get an Access Token"));return l(o.Option,{title:__("Mapbox access token")},l("div",{className:"mapp-option-mapbox"},l(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),l("div",{className:"mapp-help-text"},__("Mapbox makes Leaflet maps look great and provides an excellent geocoder.")))}(),function(){const e=l(g,{isSecondary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key",target:"_blank"},__("Get an API Key"));return l(o.Option,{title:__("Google API key"),className:"mapp-option-apikey"},l(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)}()),l(o.Section,{title:__("Map Settings")},l(o.Option,{title:__("Automatic display")},l(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})})),l(o.Option,{title:__("Map alignment")},l(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})})),l(o.Option,{title:__("Directions")},l(o.Radios,{checked:t.directions,options:[{value:"google",label:"Google"},{value:"inline",label:__("Inline")}],onChange:e=>d({directions:e})})),l(o.Option,{title:__("Mini width")},l(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&&l(o.Option,{title:__("Scroll wheel zoom")},l(o.Checkbox,{checked:t.scrollWheel,label:__("Enable map zoom with mouse scroll wheel"),onChange:e=>d({scrollWheel:e})}))),l(o.Section,{title:__("POIs")},l(o.Option,{title:__("Default zoom")},l(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})})),l(o.Option,{title:__("Hover")},l(o.Checkbox,{checked:t.tooltips,label:__("Open POIs on hover"),onChange:e=>d({tooltips:e})})),l(o.Option,{title:__("Open first POI")},l(o.Checkbox,{checked:t.initialOpenInfo,onChange:e=>d({initialOpenInfo:e}),label:__("Open first POI when a map is displayed")})),l(o.Option,{title:__("Travel lines")},l(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,n=l(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=l(o.Checkbox,{label:__("Geodesic (curved) lines"),checked:!!a.geodesic,onChange:t=>e({geodesic:t})}),r=l(o.Checkbox,{label:__("Animate icon"),checked:!!a.animate,onChange:t=>e({animate:t})});return l(o.Option,{title:__("Travel line options"),className:"mapp-option-line-options"},l(o.Control,{labelRight:__("Color")},l(i.MappColorPicker,{color:a.color,weight:a.weight,opacity:a.opacity,isExtended:!0,onChange:t=>e(t)})),"google"==t.engine&&s,"google"==t.engine&&n,"google"==t.engine&&r)}()),l(o.Section,{title:__("POI List")},l(o.Option,{title:__("Display")},l(o.Checkbox,{checked:t.poiList,label:__("Show a list of POIs with each map"),onChange:e=>d({poiList:e})})),l(o.Option,{title:__("Position")},l("div",{className:"mapp-option-poilist-radios"},l(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&&l(o.Option,{title:__("Initial open")},l("div",{className:"mapp-option-poilist-open"},l(o.Checkbox,{checked:t.poiListOpen,label:__("Open list when map is displayed"),onChange:e=>d({poiListOpen:e})}))),l(o.Option,{title:__("Paging")},l("div",{className:"mapp-option-poilist-page-size"},l(o.Input,{labelRight:__("POIs per page"),max:999,min:1,onChange:e=>d({poiListPageSize:e}),size:3,type:"number",value:t.poiListPageSize}))),l(o.Option,{title:__("Sort")},l(o.Checkbox,{checked:t.sort,label:__("Sort POI list by title"),onChange:e=>d({sort:e})}))),l(o.Section,{title:__("Styled Maps")},l(o.Option,{title:__("Default style")},l("div",{className:"mapp-option-style"},l(s.m,{selected:t.style,onChange:e=>{d({style:e}),mappl10n.options.style=e}}),l("div",null,__('Replace the default "roadmap" or "streets" style'))))),mappl10n.options.pro&&l(o.Section,{title:__("Icons")},l(o.Option,{title:__("Default icon")},l(n.MappIconPicker,{iconid:t.defaultIcon,onChange:e=>{mappl10n.options.defaultIcon=e,d({defaultIcon:e})}})),l(o.Option,{title:__("Icon directory")},l("code",null,t.helpers.icon_directory)),l(o.Option,{title:__("Highlight selected POI")},l(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&&l(n.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 l(o.Option,{title:__("Icon size")},l(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]:""}),l("span",null," X "),l(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]:""}),l("span",null," (px) "))}(),function(){let e=y(t.helpers.taxonomies);e.unshift({value:"post_type",label:__("Post type")});const a=h((e=>{if("post_type"==t.autoicons.key)return y(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 l(o.Option,{title:__("Automatic icons")},l(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:""}),l(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})}}))}()),l(o.Section,{title:__("Clustering")},l(o.Option,{title:__("Clustering")},l(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",i=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return l("div",{className:"mapp-option-clustering-options"},l(o.Option,{title:__("Max zoom")},l(o.Select,{help:{href:t},label:l(r,null,__("Disable clustering at zoom"),l("code",null,"maxZoom")),onChange:e=>a("maxZoom",e),options:_.map(i,(e=>({value:e,label:e}))),placeholder:__("None"),value:e.maxZoom})))}{const t="https://github.com/Leaflet/Leaflet.markercluster#all-options",i=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];return l("div",{className:"mapp-option-clustering-options"},l(o.Option,{title:__("Max zoom")},l(o.Select,{help:{href:t},label:l(r,null,__("Disable clustering at zoom"),l("code",null,"disableClusteringAtZoom")),onChange:e=>a("disableClusteringAtZoom",e),options:_.map(i,(e=>({value:e,label:e}))),placeholder:__("Auto"),value:e.disableClusteringAtZoom})),l(o.Option,{title:__("Spiderfy")},l(o.Checkbox,{checked:e.spiderfyOnMaxZoom,help:{href:t},label:l(r,null,__("Spiderfy"),l("code",null,"spiderfyOnMaxZoom")),onChange:e=>a("spiderfyOnMaxZoom",e)})))}}()),mappl10n.options.pro&&l(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 l(o.Option,{title:__("Marker click")},l(o.Radios,{checked:t.mashupClick,options:e,onChange:e=>d({mashupClick:e})}))}(),l(o.Option,{title:__("Popup content")},l(o.Radios,{checked:t.mashupBody,options:[{value:"poi",label:__("POI title + POI body")},{value:"post",label:__("Post title + post excerpt")}],onChange:e=>d({mashupBody:e})})),l(o.Option,{title:__("KMLs")},l(o.Checkbox,{checked:t.mashupKml,label:__("Include KML POIs in mashups"),onChange:e=>d({mashupKml:e})}))),mappl10n.options.pro&&l(o.Section,{title:__("Search")},l(o.Option,{title:__("Search")},l(o.Checkbox,{checked:t.search,label:__("Enable search for mashups"),onChange:e=>d({search:e})})),l(o.Option,{title:__("Search radius")},l(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})})),l(o.Option,{title:__("Search country")},l(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?l(o.Option,{title:__("User location")},l(o.Checkbox,{checked:t.userLocation,label:__("Show user location on map"),onChange:e=>d({userLocation:e})})):null,function(){if("google"!=t.engine)return l(o.Option,{title:__("Bounding box")},l(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&&l(o.Section,{title:__("Filter")},l(o.Option,{title:__("Filters position")},l(o.Radios,{options:[{value:"top",label:__("Top")},{value:"list",label:__("POI list")}],checked:t.filtersPos,onChange:e=>d({filtersPos:e})})),l(o.Option,{className:"mapp-option-filters",title:__("Filters")},l(o.MappCrudList,{data:t.filters,isDraggable:!0,onChangeData:e=>{d({filters:e})},onRender:e=>function(e){let{row:a,rowId:i,onChange:n,onDelete:s,...r}=e,p=y(t.helpers.taxonomies);const c=[{label:__("Post type"),value:"post"},{label:__("Text search"),value:"text"},{label:"──────────",value:"",disabled:!0},...p],d=function(e){const t=_.findWhere(c,{value:e.key});return t?t.label:__("New filter")},m="text"==a.key?[{value:"input",label:__("Input")}]:[{value:"checkbox",label:__("Checkboxes")},{value:"radio",label:__("Radio buttons")},{value:"select",label:__("Select")}];return l(o.MappExpand,{actions:l("div",null,l(g,{icon:"trash",onClick:()=>s(),title:__("Delete")})),className:"mapp-option-filter",initialOpen:!a.key,showToggle:!0,title:d(a)},l("div",{className:"mapp-option-filter-row"},l(o.Select,{labelTop:__("Filter type"),value:a.key,options:c,onChange:e=>n({key:e,format:"text"==e?"input":"checkbox"}),placeholder:""}),l(o.Select,{labelTop:__("Format"),value:a.format,options:m,placeholder:"",onChange:e=>n({format:e})}),l(o.Input,{labelTop:__("Label"),placeholder:d(a),value:a.label,onChange:e=>n({label:e})}),"post"!=a.key&&"meta"!=a.key&&"text"!=a.key&&l(o.Select,{labelTop:__("Sort"),value:a.sort,options:[{value:"name",label:__("Name")},{value:"slug",label:__("Slug")}],onChange:e=>n({sort:e})})),a.key&&"meta"!=a.key&&"text"!=a.key&&l("div",{className:"mapp-option-filter-row mapp-option-filter-tokens"},l(b,{label:__("Include"),value:a.include,onChange:e=>n({include:e}),__experimentalShowHowTo:!1}),l(b,{label:__("Exclude"),value:a.exclude,onChange:e=>n({exclude:e})})))}(e)}))),mappl10n.options.pro&&l(o.Section,{title:__("Generate Maps from Custom Fields")},l(o.Option,{title:__("Post types")},l(o.Checkboxes,{values:t.postTypes,options:y(t.helpers.post_types),onChange:e=>d({postTypes:e})})),l(o.Option,{title:__("Custom fields")},l(o.MappGrid,{cols:[{id:"key",label:__("Map field"),type:"select",options:y(t.helpers.meta_fields)},{id:"value",label:__("Custom field"),type:"combobox",options:y(t.helpers.meta_keys)}],data:t.metaKeys,onChange:e=>{d({metaKeys:e})}})),l(o.Option,{title:__("Overwrite")},l(o.Checkbox,{label:__("Overwrite maps when posts are saved"),checked:t.metaSyncSave,onChange:e=>{d({metaSyncSave:e})}})),"google"==t.engine&&l(o.Option,{title:__("Google Server API key")},l(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"}})),function(){let e=__("No errors found");return t.helpers.geocoding_errors&&t.helpers.geocoding_errors.length>0&&(e=_.map(t.helpers.geocoding_errors,(e=>l("div",{key:e.ID},l("a",{href:mappl10n.options.editurl+"?post="+e.ID+"&action=edit"},e.post_title),l("span",null," : "+e.error))))),l(o.Option,{title:__("Geocoding errors")},e)}()),mappl10n.options.pro&&mappl10n.options.acfActive&&l(o.Section,{title:__("Frontend Forms")},l(o.Option,{title:__("Advanced Custom Fields")},l(o.Input,{className:"mapp-option-acf",name:"acf",value:t.acf,onChange:e=>{d({acf:e})},placeholder:__("ACF field"),size:20}),__("ACF map field to include on MapPress mashups"),l(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"}))),mappl10n.options.pro&&l(o.Section,{title:__("Templates")},l(o.Option,{title:__("Custom templates")},l(o.MappTemplateEditor)),l(o.Option,{title:__("Mashup thumbnails")},l(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}),l(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})),l(o.Option,{title:__("Thumbnail size")},l(o.Select,{onChange:e=>d({thumbSize:e}),options:y(t.helpers.thumbnail_sizes),value:t.thumbSize}),l("span",null," "+__("or")+" "),l(o.Input,{value:t.thumbWidth,onChange:e=>d({thumbWidth:e}),type:"number",min:0,max:9999}),l("span",null," X "),l(o.Input,{value:t.thumbHeight,onChange:e=>d({thumbHeight:e}),type:"number",min:0,max:9999}),l("span",null," (px) "))),l(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 l(o.Option,{title:__("Language")},l(o.Select,{value:t.language,options:y(t.helpers.languages),onChange:e=>d({language:e}),help:{href:e,text:__("Language for searches and Google map controls")}}))}(),l(o.Option,{title:__("Directions server")},l(o.Input,{value:t.directionsServer,onChange:e=>d({directionsServer:e}),size:25}))),l(o.Section,{title:__("Miscellaneous")},l(o.Option,{title:__("Map sizes")},l(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:l(o.Option,{title:__("Scripts")},l(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")}})),l(o.Option,{title:"WPML"},l(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"}})),l(o.Option,{title:__("Compatibility")},l("div",null,l(o.Checkbox,{checked:t.deregister,label:__("Prevent loading Google Maps multiple times"),onChange:e=>d({deregister:e})})),l("div",null,l(o.Checkbox,{checked:t.iframes,label:__("Output maps in iframes to prevent compatibility issues"),onChange:e=>d({iframes:e})})))),l("div",{className:"mapp-options-toolbar"},l(g,{isBusy:t.isSaving,className:"mapp-options-save",type:"submit",isPrimary:!0},__("Save")),l(g,{isBusy:t.isSaving,isSecondary:!0,onClick:()=>k("reset")},__("Reset Defaults")))))}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-options-settings")&&wp.element.render(l(v,mappress_options_state),document.getElementById("mapp-options-settings"))}))},824:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Control:()=>f,Help:()=>b,Checkbox:()=>y,Checkboxes:()=>v,Datalist:()=>k,Input:()=>w,Radios:()=>x,Select:()=>S,Textarea:()=>N,Section:()=>O,Option:()=>M,MappGrid:()=>P,MappCrudList:()=>I,MappExpand:()=>E,MappTabs:()=>z,MappTemplateEditor:()=>T});var o=a(805);a(939);const i=wp.element.createElement,{Fragment:n,useEffect:s,useLayoutEffect:l,useCallback:r,useRef:p,useState:c}=wp.element,{useSelect:d}=wp.data,{Button:m,Dashicon:u,Modal:h,TabPanel:g}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function f(e){let{className:t,help:a,type:o,...s}=e;const l=Array.isArray(s.children)?n:"label";let r="mapp-control";return o&&(r+=" mapp-control-"+o),t&&(r+=" "+t),i("div",{className:r},s.labelTop&&i("div",{className:"mapp-label-top"},s.labelTop),i(l,null,s.labelLeft&&i("span",null,s.labelLeft),s.children,(s.label||s.labelRight)&&i("span",null,s.label||s.labelRight)),a&&i(b,a))}function b(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(n,null,a&&i("a",{className:"mapp-help-link",href:a,target:"_blank"},i(u,{icon:"editor-help"})),e.text&&i("div",{className:t},e.text))}function y(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(f,{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 v(e){let{label:t,onChange:a,options:o,values:n,...s}=e;return i(f,{type:"checkboxes",...s},_.map(o,((e,t)=>{let o=n?n.indexOf(e.value):-1;return i(y,{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 k(e){let{className:t,list:a,onChange:o,options:n,value:s,...l}=e;return i(f,{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 w(e){let{autoFocus:t,disabled:a,max:o,min:n,name:s,onChange:l,placeholder:r,size:p,trim:c,type:d,value:m,...u}=e;return i(f,{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:d||"text",value:null!==m?m:""}))}const C=function(e){let{checked:t,className:a,disabled:o,onChange:n,value:s,...l}=e;return i(f,{type:"radio",...l},i("input",{checked:t,className:a,disabled:o,onChange:e=>n(e.target.value),type:"radio",value:s}))};function x(e){let{checked:t,label:a,onChange:o,options:n,...s}=e;return i(f,{type:"radios",...s},_.map(n,((e,a)=>{if(!e.hide)return i(C,{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(f,{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 N(e){let{className:t,onChange:a,...o}=e;return i(f,{type:"textarea",...o},i("textarea",{className:t,onChange:e=>a(e.target.value)}))}function O(e){let t=e.className?" "+e.className:"";return i("div",{className:"mapp-option-section"+t},i("h2",null,e.title),e.children)}function M(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]=c({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(y,{value:o,checked:e.selected==o,disabled:n,onChange:e=>{s("select",e?o:null)}})):i("div",{className:"mapp-grid-cell"},i(C,{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(k,{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(w,{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(m,{icon:"trash",onClick:()=>s("delete",e)}))}(l))}(a,l))))),i("div",{className:"mapp-grid-toolbar"},i(m,{isSecondary:!0,onClick:()=>s("add")},__("Add"))))}function I(e){let{data:t,isDraggable:a,onAdd:o,onChangeData:n,onRender:l,...r}=e;const[p,d]=c({dragging:null,dragover:null,isDraggable:!1});function u(e){d((t=>({...t,...e})))}function h(e,a,i){let s=[...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),u({dragover:null})}}return s((()=>{}),[]),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=>u({dragging:t}),onDragEnter:e=>u({dragover:t}),onDragEnd:e=>u({dragging:null,dragover:null}),onDrop:e=>h("sort",t)},l({row:e,rowId:t,onChange:e=>h("change",e,t),onDelete:()=>h("delete",t)})))),i("div",{className:"mapp-crud-toolbar"},i(m,{isSecondary:!0,onClick:()=>h("add")},__("Add"))))}function E(e){let{actions:t,initialOpen:a,showToggle:o,subTitle:n,title:s,...l}=e;const[r,p]=c({isOpen:!o||a});function d(e,t){if("toggle"===e)o&&(a={isOpen:!r.isOpen},p((e=>({...e,...a}))));var a}let m="mapp-expand";return m+=r.isOpen?"":" mapp-expand-closed",m+=l.className?" "+l.className:"",i("div",{className:m},i("div",{className:"mapp-expand-header",onClick:()=>d("toggle")},i("div",null,s,n),o&&i("div",null,i(u,{icon:r.isOpen?"arrow-up":"arrow-down"}))),i("div",{className:"mapp-expand-body"},l.children),t&&i("div",{className:"mapp-expand-footer"},t))}function z(e){e={onRender:null,onSelect:null,initialTab:null,tabs:[],...e};const[t,a]=c({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]=c({codeEditor:null,isOpen:!1,name:null,tab:"editor",template:null,tokens:null});function o(e){a((t=>({...t,...e})))}const s=r((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})}}),[]);function l(e,a){switch(e){case"close":o({isOpen:!1});break;case"delete":confirm(mappl10n.delete_prompt)&&(mapp.lib.ajax({type:"POST",data:{action:"mapp_tpl_delete",name:t.template.name,nonce:mappl10n.options.nonce}}),o({isOpen:!1}));break;case"insert":let e=t.codeEditor.codemirror.getDoc(),i=e.getCursor();e.replaceRange("{{{poi."+a+"}}}",i);break;case"open":mapp.lib.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})}});break;case"save":let n="editor"==t.tab?t.codeEditor.codemirror.getValue():t.template.content;mapp.lib.ajax({type:"POST",data:{action:"mapp_tpl_save",content:n,name:t.template.name,nonce:mappl10n.options.nonce},callback:function(e){e&&"OK"==e.status&&o({isOpen:!1,template:null,tokens:null})}});break;case"tab-select":if("editor"!=a){let e={...t.template};e.content=t.codeEditor.codemirror.getValue(),o({template:e})}o({tab:a})}}function p(){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=>{t.preventDefault(),l("open",e.name)}},e.label))))}(),t.isOpen&&t.template?i(h,{title:p(),className:"mapp-templates-modal",onRequestClose:()=>l("close"),shouldCloseOnClickOutside:!1},i(g,{className:"mapp-templates-tabs",onSelect:e=>l("tab-select",e),tabs:[{name:"editor",title:__("Editor")},{name:"standard",title:__("Default")}]},(e=>function(){const e=i("div",{className:"mapp-templates-tokens"},_.map(t.tokens,((e,t)=>i("code",{onClick:()=>l("insert",e.token),key:t,title:e.label},e.label)))),a=i("div",{className:"mapp-templates-path"},t.template.path);return i(n,null,"editor"==t.tab&&a,"editor"==t.tab&&e,i("div",{className:"editor"==t.tab?"mapp-templates-editor":"mapp-templates-standard"},i("textarea",{ref:s,defaultValue:"editor"==t.tab?t.template.content:t.template.standard})))}())),i("div",{className:"mapp-templates-toolbar"},i(m,{isPrimary:!0,onClick:()=>l("save")},__("Save")),i(m,{isSecondary:!0,onClick:()=>l("close")},__("Cancel")),t.template.exists&&i("a",{onClick:e=>{e.preventDefault(),l("delete")}},__("Delete")))):null)}},149:(e,t,a)=>{"use strict";a.d(t,{S:()=>b});const o=wp.element.createElement,{select:i}=wp.data,{Fragment:n,useEffect:s,useLayoutEffect:l,useRef:r,useState:p}=wp.element,{BaseControl:c,Button:d,Dashicon:m,Modal:u,PanelBody:_,RadioControl:h,Spinner:g,TextControl:f}=wp.components,{sprintf}=wp.i18n;function b(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.onChange(e.page+1);break;case"prev":e.onChange(e.page-1)}}return function(){const a=Math.ceil(e.count/e.pageSize),i=e.page<=1,n=e.page>=a;return o("div",{className:"mapp-paginate"},o(d,{disabled:i,onClick:()=>t("first"),isSecondary:!0},"«"),o(d,{disabled:i,onClick:()=>t("prev"),isSecondary:!0},"‹"),o("div",{className:"mapp-paginate-count"},sprintf((s="%d of %d",wp.i18n.__(s,"mappress-google-maps-for-wordpress")),e.page,a)),o(d,{disabled:n,onClick:()=>t("next"),isSecondary:!0},"›"),o(d,{disabled:n,onClick:()=>t("last"),isSecondary:!0},"»"));var s}()}},477:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>C});var o=a(713),i=a(999),n=a(149),s=a(677);window.mapp=window.mapp||{};const l=wp.element.createElement,{select:r}=wp.data,{Fragment:p,useEffect:c,useLayoutEffect:d,useRef:m,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){const[t,a]=u({counts:{all:null,trashed:null,post: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:d}=(0,s.D)(),h=m(null),v=m(null),C=m(null);function x(e){a((t=>({...t,...e})))}function S(a,o){switch(a){case"attach":mapp.store.mutateMap(o.mapid,o.mapdata);break;case"add-new":x({mode:"edit",mapid:null});break;case"close":e.onAction("pick-close");break;case"destroy":confirm(mappl10n.delete_map_prompt)&&(mapp.store.destroyMap(o),p(__("Map deleted"))),v.current&&v.current.focus();break;case"detach":mapp.store.mutateMap(o,{postid:0});break;case"duplicate":mapp.store.duplicateMap({mapid:o,success:e=>{p(__("Map copied")),x({mapid:e.mapid}),h.current&&(h.current.scrollTop=0)}});break;case"edit":if("trash"==t.filter)return;x({mode:"edit",mapid:o});break;case"edit-close":"edit"==e.mode?e.onAction("pick-close"):x({mode:"list"});break;case"edit-save":"edit"==e.mode?e.onAction("pick-close",o):(x({mode:"list",mapid:o}),p(sprintf(__("Map %d saved"),o)));break;case"filter":x({filter:o});break;case"insert":e.onAction("pick-insert",o);break;case"page":x({page:o}),h.current&&(h.current.scrollTop=0);break;case"restore":mapp.store.mutateMap(o,{status:"",postid:0}),p(__("Map restored"));break;case"shortcode":let a=jQuery("<input>");jQuery("body").append(a),a.val('[mappress mapid="'+o+'"]').select(),document.execCommand("copy"),a.remove(),p(__("Shortcode copied"));break;case"sort":mapp.store.setSort({sortBy:o,sortAsc:mapp.store.state.sortBy!=o||!mapp.store.state.sortAsc});break;case"trash":case"edit-trash":mapp.store.mutateMap(o,{status:"trashed"}),p(__("Map moved to trash")),t.mapid&&o==t.mapid&&e.onAction("pick-trash",o)}}function N(a){let i,n=a.mapid==t.mapid;i=a.map_title?a.map_title:__("Untitled");let s,p=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="trash"==t.filter?[{action:"restore",label:__("Restore")},{action:"destroy",label:__("Delete Permanently"),isDestructive:!0}]:[{action:"edit",label:__("Edit")},{action:"insert",label:__("Insert into post"),hide:"library"==e.context},{action:"duplicate",label:__("Copy")},{action:"trash",label:__("Trash")}],s=l("div",{className:"mapp-pick-actions"},s.map((e=>!e.hide&&l("a",{className:e.isDestructive?"mapp-destructive":"",href:"#",key:e.action,onClick:t=>{t.stopPropagation(),t.preventDefault(),S(e.action,a.mapid)}},e.label))));let c=null;return c=a.postid>0?l("a",{href:"#",onClick:()=>S("detach",a.mapid)},__("Detach")):"library"==e.context?l(o.default,{onChange:(e,t)=>S("attach",{mapid:a.mapid,mapdata:{postid:e,post_title:t}})},__("Attach")):l("a",{href:"#",onClick:()=>S("attach",{mapid:a.mapid,mapdata:{postid:mappl10n.options.postid,post_title:null}})},__("Attach")),l("div",{className:"mapp-pick-item"+(n?" mapp-selected":""),key:a.mapid+"|"+a.postid,ref:n?C:null},l("div",{className:"mapp-pick-col-mapid",onClick:e=>S("edit",a.mapid)},a.mapid),l("div",{className:"mapp-pick-col-map_title",onClick:e=>S("edit",a.mapid)},l("div",null,i),l("div",null,s)),l("div",{className:"mapp-pick-col-post_title"},p,l("div",null,c)),"library"==e.context&&l("div",{className:"mapp-pick-col-shortcode"},l(g,{isSmall:!0,isSecondary:!0,onClick:e=>{e.stopPropagation(),e.preventDefault(),S("shortcode",a.mapid)}},__("Copy"))))}c((()=>{const e=e=>{if(!e.isFetchingItems){let t={all:0,post:0,trash:0};_.map(e.items,(e=>{"trashed"==e.status?t.trash++:(t.all++,e.postid==mappl10n.options.postid&&t.post++)})),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()}),[]),c((()=>{x({page:1})}),[t.filter,t.search]),c((()=>{"list"==t.mode&&v.current&&v.current.focus()}),[t.mode]);const O=_.filter(t.items,(function(a){if("trash"==t.filter)return"trashed"==a.status;if("trashed"==a.status)return!1;if("post"==t.filter&&a.postid!=mappl10n.options.postid)return!1;if("current"==t.filter&&a.mapid!=e.mapid)return!1;var o=t.search.toLowerCase();return!o||(a.mapid.indexOf(o)>=0||(!!(a.post_title&&a.post_title.toLowerCase().indexOf(o)>=0)||!!(a.map_title&&a.map_title.toLowerCase().indexOf(o)>=0)))}));let M=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:()=>S("add-new")},__("Add New"))),l(g,{onClick:()=>S("close"),icon:"no-alt"})),function(){let a=[{label:__("All"),value:"all"},{label:__("Attached to post"),value:"post",hide:"library"==e.context},{label:__("Selected"),value:"current",hide:"library"==e.context||!e.mapid},{label:__("Trash"),value:"trash"}];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":""),i="current"!=e.value?t.counts[e.value]:null;if(!e.hide)return l("div",{className:o,href:"#",key:a,onClick:()=>S("filter",e.value)},e.label,null!=i&&l("span",{className:"mapp-pick-filter-count"},i))}))),function(){if("trash"!=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,N):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",label:__("ID"),sortable:!0},{id:"map_title",label:__("Map title"),sortable:!0},{id:"post_title",label:__("Attached to"),sortable:!0}];"library"==e.context&&t.push({id:"shortcode",label:__("Shortcode"),sortable:!1});return l("div",{className:"mapp-pick-items-header"},_.map(t,(e=>l("div",{className:"mapp-pick-col-"+e.id,onClick:()=>S("sort",e.id),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))}(O),function(e){return l("div",{className:"mapp-pick-toolbar"},function(e){return e&&e.length?l(n.S,{count:e?e.length:0,onChange:e=>S("page",e),page:t.page,pageSize:20}):null}(e))}(O)),P=null;if("edit"==t.mode){let a=l("div",{className:"mapp-edit-panel"},l(i.default,{context:e.context,mapid:t.mapid,onAction:S}));P="library"==e.context?l(y,{className:"mapp-gt-modal",isDismissible:!1},a):a}const I="mapp-pick mapp-mode-"+t.mode+" mapp-context-"+e.context;return"library"==e.context?l("div",{className:I},M,P,d()):l(y,{className:"mapp-gt-modal "+I,isDismissible:"list"==t.mode,onRequestClose:()=>S("close"),shouldCloseOnEsc:"list"==t.mode,shouldCloseOnClickOutside:"list"==t.mode},M,P,d())}window.addEventListener("DOMContentLoaded",(e=>{document.getElementById("mapp-library")&&(mappl10n.options.postid=0,wp.element.render(l(C,{context:"library"}),document.getElementById("mapp-library")))}))},429:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappSettings:()=>y});var o=a(710),i=a(677),n=a(824);window.mapp=window.mapp||{};const s=wp.element.createElement,{Fragment:l,useEffect:r,useLayoutEffect:p,useRef:c,useState:d}=wp.element,{BaseControl:m,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){const[t,a]=d({});const{addSnackbar:r,renderSnackbar:p}=(0,i.D)();function c(e){if(!e||"string"!=typeof e)return e;const t={px:2048,vw:100,vh:100,"%":100};let a=parseInt(e),o=2048,i="";for(var n in t)e.includes(n)&&(i=n,o=t[n]);return a>o?o+i:e}function m(t,a){let o=null;switch(t){case"poiList":e.map.set({poiList:a}),o={poiList:a};break;case"search":e.map.set({search:a}),o={search:a};break;case"size":a.hasOwnProperty("height")&&(a.height=c(a.height)),a.hasOwnProperty("width")&&(a.width=c(a.width)),e.map.setSize(a),o=a;break;case"style-set-maptypeid":e.map&&e.map.set({mapTypeId:a}),o={mapTypeId:a};break;case"viewport-reset":e.map.center=e.map.zoom=null,e.map.recenter(),o={center:void 0,zoom:void 0},r(__("Viewport automatic"));break;case"viewport-set":let t=e.map.getCenter().toJSON();e.map.center=t,e.map.zoom=e.map.getZoom(),o={center:t.lat+","+t.lng,zoom:e.map.getZoom()},r(__("Viewport set"))}o&&e.onAction("change-settings",o)}const h="mce"!=e.context&&"library"!=e.context;return s("div",{className:"mapp-settings"},s(b,{title:__("Map settings"),initialOpen:h},"map"==e.context&&function(){const t=e.map.title?e.map.title:__("Untitled");return s("div",{className:"mapp-settings-row mapp-settings-title"},s(n.Control,{labelTop:__("Title")},t),s(n.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:e=>m("style-set-maptypeid",e)}))}(),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(n.Select,{className:"mapp-settings-dims-select",help:"",labelTop:__("Size"),value:a,options:t,onChange:e=>m("size",{width:t[e].width,height:t[e].height})})),s("div",{className:"mapp-settings-row"},s(n.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vw")},labelTop:__("Width"),onChange:e=>m("size",{width:e}),value:e.width?e.width:""}),s(n.Input,{className:"mapp-settings-dims-custom",help:{text:__("px, %, vh")},labelTop:__("Height"),onChange:e=>m("size",{height:e}),value:e.height?e.height:""})))}(),s("div",{className:"mapp-settings-row"},s(n.Control,{className:"mapp-settings-viewport",labelTop:__("Center/Zoom")},s(_,{label:__("Center/Zoom")},s(u,{onClick:()=>m("viewport-reset"),isPressed:!e.center,isSmall:!0},__("Automatic")),s(u,{onClick:()=>m("viewport-set"),isPressed:e.center,isSmall:!0},__("Set"))))),void 0,p()))}},677:(e,t,a)=>{"use strict";a.d(t,{D:()=>l});const{useEffect:o,useState:i}=wp.element,{createContext:n}=React,s=wp.element.createElement,l=()=>{const[e,t]=i({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))))}}},787:()=>{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){mapp.lib.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(){let{mapid:e,success:t=(()=>{}),failure:a=(()=>{})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.state.isSavingMap=!0,this.publish(),mapp.lib.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(a)}else a();this.state.isSavingMap=!1,this.publish()}})},fetchMap:function(e){let{mapid:t,success:a=(()=>{}),failure:o=(()=>{})}=e;if(void 0!==this.state.maps[t])return this.publish(),void a(this.state.maps[t]);this.state.isFetchingMap=!0,this.publish(),mapp.lib.ajax({type:"GET",data:{action:"mapp_get",mapid:t,nonce:mappl10n.options.nonce},callback:e=>{e&&"OK"==e.status?(this.state.maps[t]=e.data,a(e.data)):this.state.maps[t]=null,this.state.isFetchingMap=!1,this.publish()}})},mutateMap:function(e,t){this.state.isSavingMap=!0,this.saveItem(e,t),this.publish(),mapp.lib.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(){let{mapdata:e,success:t=(()=>{}),failure:a=(()=>{})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.state.isSavingMap=!0,this.publish(),mapp.lib.ajax({type:"POST",data:{action:"mapp_save",mapdata:JSON.stringify(e),nonce:mappl10n.options.nonce},callback:o=>{if(o&&"OK"==o.status){const a=o.data;e.mapid=a,this.state.maps[a]=e,this.saveItem(a,e),t(e)}else a();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(){let{success:e=(()=>{}),failure:t=(()=>{})}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.state.itemsFetched)return e(this.state.items),void this.publish();this.state.isFetchingItems=!0,this.publish(),mapp.lib.ajax({type:"GET",data:{action:"mapp_find",nonce:mappl10n.options.nonce},callback:a=>{a&&"OK"==a.status?(this.state.items=a.data,this.sort(),e(this.state.items),this.state.itemsFetched=!0):t(),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,map_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,i){if(i=i?1:-1,"mapid"==o)return i*(Number(e.mapid)-Number(t.mapid));let n=e[o]?e[o]:a,s=t[o]?t[o]:a,l=i*n.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},710:(e,t,a)=>{"use strict";a.d(t,{m:()=>k});var o=a(824),i=a(149);const n=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useRef:p,useState:c}=wp.element,{Button:d,Dashicon:m,ExternalLink:u,Icon:h,Modal:g,Panel:f,PanelBody:b,PanelRow:y,Spinner:v}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function k(e){const[t,a]=c({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 l(e){a((t=>({...t,...e})))}function r(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?"))||(l({isBusy:!0}),mapp.lib.ajax({type:"POST",data:{action:"mapp_style_save",style:a,nonce:mappl10n.options.nonce},callback:t=>{l({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,l({mode:"pick",userStyles:t.data}),e.onChange(a.id))}}))}function p(e){l({isSearching:!0,snazzyStyles:null}),mapp.lib.ajax({type:"GET",data:{sort:"popular",page:e,pageSize:20,text:t.snazzySearch,key:t.apiKey},url:"https://snazzymaps.com/explore.json",callback:function(e){if(l({isSearching:!1,snazzyPagination:e&&e.pagination?e.pagination:null}),e&&e.styles){l({snazzyStyles:_.map(e.styles,((e,t)=>(e.id=e.id+"",e)))})}else alert("Error: unable to fetch styles")}})}function m(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 n("img",{src:a,title:e.name})}function f(a,o){switch(a){case"close":case"pick-cancel":l({isOpen:!1});break;case"json-add":l({mode:"json-add"});break;case"json-cancel":case"mapbox-cancel":case"snazzy-cancel":l({mode:"pick"});break;case"json-edit":e.onChange(o.id),l({mode:"json-edit"});break;case"json-save":r(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 i=e.split("/");2==i.length&&(t=i[0],a=i[1]),l({mapboxUrl:o,mapboxUser:t,mapboxId:a});break}case"mapbox-edit":e.onChange(o.id),l({mode:"mapbox",mapboxId:o.mapboxid,mapboxName:o.name,mapboxUrl:o.url,mapboxUser:o.user});break;case"mapbox-save":t.mapboxName&&t.mapboxUser&&r({id:t.mapboxId,name:t.mapboxName,mapboxid:t.mapboxId,provider:"mapbox",url:t.mapboxUrl,user:t.mapboxUser});break;case"mode":l({mode:o});break;case"open":"leaflet"!=mappl10n.options.engine||mappl10n.options.mapbox?l({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?mapp.lib.alert("Invalid delete"):(l({isBusy:!0}),mapp.lib.ajax({type:"POST",data:{action:"mapp_style_delete",id:i,nonce:mappl10n.options.nonce},callback:t=>{l({isBusy:!1}),t&&"OK"==t.status&&(mappl10n.options.userStyles=t.data,l({userStyles:t.data}),e.selected==i&&e.onChange(null))}})));break;case"pick-select":e.onChange(o),l({isOpen:!1});break;case"snazzy-save":{let e=_.findWhere(t.snazzyStyles,{id:o});e&&r({id:o,imageUrl:e.imageUrl,json:e.json,name:e.name});break}case"snazzy-search":p()}var i}function b(){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),n(w,{style:a,onSave:e=>f("json-save",e),onCancel:()=>f("json-cancel")})}function y(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=n("div",{className:"mapp-style-actions"},n("a",{onClick:()=>t.onEdit(e)},__("Edit")),n(h,{icon:"trash",onClick:()=>t.onDelete(e.id)})));return n("div",{className:o,key:e.id},n("div",{className:"mapp-style-image",onClick:()=>t.onSelect(e.id)},m(e)),n("div",{className:"mapp-style-details"},n("div",{className:"mapp-style-title"},e.name),a))}(t,e))):t.isSearching?"":n("div",{className:"mapp-style-list-msg"},__("No results")),n("div",{className:"mapp-style-list-wrapper"},n("div",{className:"mapp-style-list-header"},e.title),n("div",{className:"mapp-style-list"},a))}return n(s,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,i=_.findWhere(a,{id:o});return i=i||t.standardStyles[0],n(d,{className:"mapp-style-toggle",icon:m(i),iconSize:75,isSecondary:!0,onClick:()=>f("open",null),title:i.name})}(),"edit"==t.mode&&t.isOpen&&renderEdit(),"json-add"==t.mode&&t.isOpen&&b(),"json-edit"==t.mode&&t.isOpen&&b(),"mapbox"==t.mode&&t.isOpen&&function(){let e=t.mapboxUser&&t.mapboxId?m({user:t.mapboxUser,mapboxid:t.mapboxId,name:t.mapboxName},"large"):null;const a=!t.mapboxUser||!t.mapboxId||!t.mapboxName;return n(g,{title:__("Add style"),className:"mapp-style-modal",onRequestClose:()=>f("mapbox-cancel"),shouldCloseOnClickOutside:!0},n("div",{className:"mapp-style-mapbox-title"},__("Enter style from Mapbox Studio"),n(u,{href:"https://studio.mapbox.com"})),n("form",{className:"mapp-style-mapbox-form",onSubmit:e=>{e.stopPropagation(),e.preventDefault(),f("mapbox-save")}},n("label",null,n(o.Input,{autoFocus:!0,className:"mapp-style-mapbox-url",labelTop:n(s,null,__("MapBox Share URL"),n(o.Help,{href:"#toc-mapbox-studio-styles"})),onChange:e=>f("mapbox-change-url",e),value:t.mapboxUrl})),n("label",null,n("div",{className:"mapp-style-mapbox-label"},__("Style name")),n(o.Input,{className:"mapp-style-mapbox-name",value:t.mapboxName,onChange:e=>l({mapboxName:e})})),n("div",{className:"mapp-style-mapbox-preview"},e),n("div",{className:"mapp-style-toolbar"},n("div",null,n(d,{isBusy:t.isBusy,isPrimary:!0,disabled:a,type:"submit"},__("Save")),n(d,{isBusy:t.isBusy,onClick:()=>f("mapbox-cancel")},__("Cancel"))))))}(),"pick"==t.mode&&t.isOpen&&function(){let a="";return t.userStyles&&t.userStyles.length&&(a=y({selected:e.selected,onEdit:e=>"leaflet"==mappl10n.options.engine?f("mapbox-edit"):f("json-edit",e),onDelete:e=>f("pick-delete",e),onSelect:e=>f("pick-select",e),styles:t.userStyles,title:__("Custom styles")})),n(g,{title:n("div",{className:"mapp-style-header"},__("Select a style")),className:"mapp-style-modal",onRequestClose:()=>f("close")},n("div",{className:"mapp-style-list-wrapper"},y({onSelect:e=>f("pick-select",e),selected:e.selected,styles:t.standardStyles,title:__("Standard styles")}),a),n("div",{className:"mapp-style-toolbar"},n("div",null,n(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>"leaflet"==mappl10n.options.engine?f("mapbox-add"):f("json-add")},__("New style")),"google"==mappl10n.options.engine&&n(d,{isBusy:t.isBusy,isSecondary:!0,onClick:()=>f("snazzy-add")},__("Download style")),n(d,{isBusy:t.isBusy,onClick:()=>f("pick-cancel")},__("Cancel")))))}(),"snazzy"==t.mode&&t.isOpen&&(t.snazzySelected,n(g,{title:__("Download style"),className:"mapp-style-modal mapp-style-modal-snazzy",onRequestClose:()=>f("snazzy-cancel"),shouldCloseOnClickOutside:!0},n("form",{className:"mapp-style-snazzy-form",onSubmit:e=>{f("snazzy-search"),e.preventDefault()}},n(o.Input,{className:"mapp-style-snazzy-search",value:t.search,placeholder:__("Search"),onChange:e=>l({snazzySearch:e})}),t.isSearching&&n(v,null),!t.isSearching&&n(d,{isPrimary:!0,icon:"search",onClick:()=>f("snazzy-search")})),y({selected:t.snazzySelected,styles:t.snazzyStyles,onSelect:e=>l({snazzySelected:e})}),n("div",{className:"mapp-style-toolbar"},n("div",null,n(d,{isBusy:t.isBusy,isPrimary:!0,onClick:()=>f("snazzy-save",t.snazzySelected)},__("Save")),n(d,{isBusy:t.isBusy,onClick:()=>f("snazzy-cancel")},__("Cancel"))),function(){const e=t.snazzyPagination;return e&&t.snazzyStyles&&t.snazzyStyles.length?n(i.S,{count:e.totalItems,onChange:e=>p(e),page:e.currentPage,pageSize:e.pageSize}):null}()))))}function w(e){const[t,a]=c((()=>{let t={...e.style},a="";try{a=JSON.stringify(JSON.parse(t.json),null,2)}catch(e){}return t.json=a,{style:t}}));function i(e){a((t=>({...t,...e})))}function s(a,o){let n={...t.style};switch(a){case"cancel":e.onCancel();break;case"change-json":n.json=o,i({style:n});break;case"change-name":n.name=o,i({style:n});break;case"save":n.json=n.json?JSON.stringify(JSON.parse(n.json)):"",e.onSave(n)}}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 n(g,{title:n(o.Input,{value:t.style.name,onChange:e=>s("change-name",e),placeholder:__("Enter style name")}),className:"mapp-style-modal mapp-json-modal",onRequestClose:()=>s("cancel"),shouldCloseOnClickOutside:!0},n("div",null,__("JSON")),n("div",{className:r},n("textarea",{value:t.style.json,spellCheck:!1,onChange:e=>s("change-json",e.target.value)})),n("div",{className:"mapp-json-error"},l||""),n("div",{className:"mapp-json-toolbar"},n("div",null,n(d,{disabled:l,isBusy:t.isBusy,isPrimary:!0,onClick:()=>s("save")},__("Save")),n(d,{isBusy:t.isBusy,onClick:()=>s("cancel")},__("Cancel")))))}},214:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappCard:()=>g});a(824);const o=wp.element.createElement,{Fragment:i,useEffect:n,useLayoutEffect:s,useCallback:l,useRef:r,useState:p}=wp.element,{useSelect:c}=wp.data,{Button:d,Dashicon:m,ExternalLink:u,Guide:_,Modal:h}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function g(e){let{icon:t,title:a,...i}=e;return o("div",{className:"mapp-support-card"},a&&o("div",{className:"mapp-support-card-title"},o("h3",null,t&&o(m,{icon:t}),a)),o("div",{className:"mapp-support-card-content"},i.children))}document.getElementById("mapp-support-page")&&wp.element.render(o((function(e){const[t,a]=p({engine:e.engine?e.engine:"leaflet",isOpen:e.isOpen,apiKey:e.apiKey,mapbox:e.mapbox});function s(e){a((t=>({...t,...e})))}function l(e){return o("div",{className:"mapp-guide-engine"+(e.selected?" mapp-selected":""),onClick:()=>e.onClick()},o("h2",{className:"mapp-guide-engine-title"},e.title),o("div",{className:"mapp-guide-engine-content"},e.content))}return r(null),n((()=>{}),[]),o("div",{className:"mapp-support"},o(i,null,o("div",{className:"mapp-support-section"},o("div",{className:"mapp-support-header"},o("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),o("h1",null,__("MapPress Support")),o("i",null,__("Build amazing maps with the easiest and most powerful mapping plugin available")),o("div",null,o(d,{className:"mapp-support-guide-toggle",isPrimary:!0,onClick:()=>s({isOpen:!0})},__("Open Setup Wizard"))))),o("div",{className:"mapp-support-section"},o("div",{className:"mapp-support-cards"},o(g,{icon:"book",title:__("Documentation")},o("p",null,__("Detailed plugin documentation:")),o(u,{href:"https://mappresspro.com/mappress-documentation/"},__("Documentation")),o(u,{href:"https://mappresspro.com/whats-new/"},__("What's new")),o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Creating your first map"))),o(g,{icon:"warning",title:__("Troubleshooting")},o("p",null,o("b",null,__("Check for a plugin or theme conflict:"))),o("ol",null,o("li",null,__("Deactivate ALL other plugins")),o("li",null,__("Switch to a standard WordPress theme")),o("li",null,__("If the maps are working, reactivate one by one to find the conflict."))),o("p",null,__("For more info:")),o(u,{href:"https://mappresspro.com/mappress-faq/"},__("MapPress FAQ"))),o(g,{icon:"megaphone",title:__("Support")},o("p",null,__("Need some help?")),o(u,{href:"https://mappresspro.com/forums/forum/mappress-support/"},__("Support forum")),o(u,{href:"https://mappresspro.com/chris-contact/"},__("Contact")))))),function(){if(t.isOpen)return o(_,{className:"mapp-guide",onFinish:()=>function(e,a){if("save"===e){let e;s({isOpen:!1}),e="google"==t.engine?"google":t.mapbox?"mapbox":"nominatim",mapp.lib.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:o("div",{className:"mapp-guide-page mapp-guide-engines"},o("h1",null,__("Please Choose a Mapping API")),o("p",null,__("MapPress supports both Leaflet and Google mapping APIs."),o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-picking-a-mapping-api"},__("Learn more"))),o("div",{className:"mapp-guide-engines"},l({onClick:()=>s({engine:"leaflet"}),selected:"leaflet"==t.engine,title:"Leaflet",content:o("ul",null,o("li",null,__("No API key")),o("li",null,__("Free unlimited usage")),o("li",null,__("Good functionality")),o("li",null,__("Best for high traffic sites")))}),l({onClick:()=>s({engine:"google"}),selected:"google"==t.engine,title:"Google",content:o("ul",null,o("li",null,__("API key required")),o("li",null,__("Limited free usage")),o("li",null,__("Excellent functionality")),o("li",null,__("Best for low traffic sites")))}))),image:o("div",{className:"mapp-guide-header mapp-guide-image-small"},o("img",{src:mappl10n.options.baseurl+"/images/icon-128x128.png"}),o("h1",null,__("Welcome to MapPress!")))},{content:"google"==t.engine?o("div",{className:"mapp-guide-page mapp-guide-apikey"},o("h1",null,__("Google API Key")),o("p",null,__("Google requires an API key to use Google Maps. Please enter your key below.")),o(d,{isPrimary:!0,href:"https://mappresspro.com/how-to-get-a-google-maps-api-key/",target:"_blank"},__("Get an API Key")),o("input",{className:"mapp-guide-apikey",onChange:e=>s({apiKey:e.target.value}),placeholder:__("Enter your API key here"),value:t.apiKey})):o("div",{className:"mapp-guide-page mapp-guide-apikey"},o("h1",null,__("Sign up with Mapbox")),o("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."),o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-using-mapbox-with-leaflet"},__("Learn more"))),o(d,{isPrimary:!0,href:"https://account.mapbox.com/auth/signup/",target:"_blank"},__("Get Mapbox Access Token")),o("input",{className:"mapp-guide-apikey",onChange:e=>s({mapbox:e.target.value}),placeholder:__("Enter your access token here"),value:t.mapbox})),image:o("div",{className:"mapp-guide-header mapp-guide-image-small"},"google"==t.engine&&o("img",{src:mappl10n.options.baseurl+"/images/google_logo.png"}),"leaflet"==t.engine&&o("img",{src:mappl10n.options.baseurl+"/images/mapbox_logo_white.png"}))},{content:o("div",{className:"mapp-guide-page mapp-guide-gutenberg"},o("h1",null,__("Maps in the Block Editor")),o("p",null,__("MapPress provides custom block types for the Gutenberg editor.")),o("p",null,__("Just insert a MapPress Map block to get started."),o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-gutenberg-block-editor"},__("Learn more")))),image:o("div",{className:"mapp-guide-header"},o("img",{src:mappl10n.options.baseurl+"/images/gutenberg_map_block.gif"}))},{content:o("div",{className:"mapp-guide-page mapp-guide-classic"},o("h1",null,__("Maps in the Classic Editor")),o("p",null,__('MapPress also supports the "classic" editor. Just click the MapPress button to open the map library.')),o("p",null,o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-create-a-map-with-the-classic-editor"},__("Learn more")))),image:o("div",{className:"mapp-guide-header"},o("img",{src:mappl10n.options.baseurl+"/images/classic_map.gif"}))},{content:o("div",{className:"mapp-guide-page mapp-guide-library"},o("h1",null,__("Map Library")),o("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.")),o("p",null,o(u,{href:"https://mappresspro.com/mappress-documentation/#toc-map-library-and-map-editors"},__("Learn more")))),image:o("div",{className:"mapp-guide-header"},o("img",{src:mappl10n.options.baseurl+"/images/library_menu.gif"}))},{content:o("div",{className:"mapp-guide-page mapp-guide-end"},o("h1",null,__("Happy Mapping")),o("p",null,__("Enjoy the plugin! Replay this guide any time from the MapPress support menu."))),image:o("div",{className:"mapp-guide-header"},o("img",{src:mappl10n.options.baseurl+"/images/icon-128x128"}))}]})}())}),mappress_support_state),document.getElementById("mapp-support-page"))},308:(e,t,a)=>{"use strict";e.exports=function(e,t){var o=String(e).replace(/^&/,"").replace(/&$/,"").split("&"),i=o.length,n=void 0,s=void 0,l=void 0,r=void 0,p=void 0,c=void 0,d=void 0,m=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),n=0;n<i&&(u=b((m=o[n].split("="))[0]),_=m.length<2?"":b(m[1]),!(u.includes("__proto__")||u.includes("constructor")||u.includes("prototype")));n++){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&&(" "!==(d=g[0].charAt(s))&&"."!==d&&"["!==d||(g[0]=g[0].substr(0,s)+"_"+g[0].substr(s+1)),"["!==d);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 i=t[o];if(void 0!==i)return i.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,a),n.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(371),a(787),a(844),a(215),a(713),a(123),a(521),a(999),a(805),a(24),a(816),a(378),a(670),a(218),a(824),a(477),a(429),a(214)})();
1
+ (()=>{var e={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=mappl10n.options.templates?mappl10n.options.template[e]: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";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="%d of %d",wp.i18n.__(r,"mappress-google-maps-for-wordpress")),e.page,a)),o("div",{className:l,onClick:()=>{i||t("next")}},"›"),o("div",{className:l,onClick:()=>{i||t("last")}},"»"));var r}()}},844:()=>{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=jQuery("#deactivate-mappress-google-maps-for-wordpress");e.length&&(e.off("click.mapp"),e.on("click.mapp",(function(){return function(e){const t=e?jQuery(e).attr("href"):null;t&&r({isOpen:!0,redirectUrl:t})}(this),!1})))}),[]),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'm just having a bad day")},{value:"notworking",label:__("The plugin isn't working"),placeholder:__("What didn't work? Was there an error message?")},{value:"toohard",label:__("Too hard to use"),placeholder:__("How can I make it easier?")},{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}jQuery(document).ready((function(){const t=jQuery("<div></div>").appendTo("body").get(0);wp.element.render(e(r),t)}))},215:(e,t,a)=>{"use strict";a.r(t);var o=a(123),n=a(805);window.mapp=window.mapp||{};const i=wp.element.createElement;var s;s=jQuery,mapp.Editor=function(e){this.drawingManager=null,this.map=e,this.poiEditor=null;var t=this;this.initialize=function(){this.map.display(),this.poiEditor=new mapp.PoiEditor(this.map),this.initDrawingManager(),this.map.onSearch=e=>{this.insert(e)}},this.insert=function(e){if(e)if(this.drawingManager&&this.drawingManager.setDrawingMode(null),this.map.poiClose(),e.geometry){var 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({address:a,body:o,iconid:this.poiEditor.lastIcon,point:e.geometry.location,title:e.name,viewport:e.geometry.viewport?e.geometry.viewport:null});this.map.poiInsert(n),n.center()}else e.overlay?(this.map.poiHover(null),"marker"==e.type?(n=new mapp.Poi({body:"",iconid:null,overlay:null,point:e.overlay.getPosition().toJSON(),title:e.overlay.getPosition().toUrlValue(6),type:null}),e.overlay.setMap(null)):n=new mapp.Poi({body:"",iconid:null,overlay:e.overlay,title:mappl10n.shape,type:e.type}),this.map.poiInsert(n)):"string"==typeof e&&"http"==e.substring(0,4)&&(n=new mapp.Poi({iconid:this.poiEditor.lastIcon,kml:{url:e},title:"KML",type:"kml"}),t.map.poiInsert(n),mapp.event.addListenerOnce(n.overlay,"ready defaultviewport_changed",(function(){n.center()})))},this.initDrawingManager=function(){var e={fillColor:"#0000FF",fillOpacity:.4,strokeColor:"#0000FF",strokeOpacity:1,strokeWeight:2};"leaflet"==mappl10n.options.engine||google.maps.drawing&&(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.getMap()),mapp.event.addListener(this.drawingManager,"overlaycomplete",(function(e){t.drawingManager.get("drawingMode")&&t.insert(e)})))},this.initialize.apply(this)},mapp.PoiEditor=function(e){this.map=e,this.poi=null,this.sel=null,this.lastIcon=null;var t=this;this.initialize=function(){this.sel=s(this.map.iw.getContent()),s(this.map).on("mapp.open",(function(e,a){t.render(a)})),s(this.map).on("mapp.close",(function(){t.mce(!1)})),this.sel.on("click","[data-mapp-poi]",(function(e){e.preventDefault();var a=s(this).attr("data-mapp-poi");t[a]()})),this.sel.on("click",".mapp-poi-visual, .mapp-poi-html",(function(e){var a=s(this).hasClass("mapp-poi-visual");t.mce(a)})),this.sel.on("keydown",(function(e){13==e.which&&"mapp-poi-body"!=e.target.id&&(e.preventDefault(),t.save())}))},this.cancel=function(){this.map.poiClose()},this.initMCE=function(){if("undefined"!=typeof tinyMCE&&void 0!==tinyMCE.init){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),this.mce(!0)}},this.mce=function(e){var a=e?"mceAddEditor":"mceRemoveEditor";"undefined"!=typeof tinyMCE&&tinyMCE.execCommand(a,!1,"mapp-poi-body"),s(".mapp-poi-visual, .mapp-poi-html",t.sel).removeClass("mapp-active"),e?s(".mapp-poi-visual",t.sel).addClass("mapp-active"):s(".mapp-poi-html",t.sel).addClass("mapp-active")},this.remove=function(){confirm(mappl10n.delete_prompt)&&(this.map.poiClose(),this.map.poiRemove(this.poi))},this.render=function(e){this.poi=e,this.renderColorPicker(this.poi),this.renderIconPicker(this.poi),this.initMCE()},this.renderColorPicker=function(e){document.getElementById("mapp-poi-colorpicker")&&wp.element.render(i(o.MappColorPicker,{...e.getTemplateColors(),isExtended:!0,onChange:t=>{e.set({dirty:!0}),e.setTemplateColors(t),this.map.renderList(),this.renderColorPicker(e)}}),document.getElementById("mapp-poi-colorpicker"))},this.renderIconPicker=function(e){document.getElementById("mapp-poi-iconpicker")&&wp.element.render(i(n.MappIconPicker,{iconid:e.iconid,onChange:t=>{e.set({dirty:!0,iconid:t}),this.lastIcon=t,this.map.renderList(),this.renderIconPicker(e)}}),document.getElementById("mapp-poi-iconpicker"))},this.save=function(){"undefined"!=typeof tinyMCE&&tinyMCE.get("mapp-poi-body")&&tinyMCE.get("mapp-poi-body").save(),this.poi.set({dirty:!0,title:s(".mapp-poi-title").val(),body:s(".mapp-poi-body").val()}),this.map.renderList(),this.map.poiClose()},this.initialize.apply(this)}},713:(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()}}))}},371:(e,t,a)=>{"use strict";a.r(t);var o=a(477);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)}))},123:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappColorPicker:()=>M});var o=a(824);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")))))}())}},521:(e,t,a)=>{"use strict";a.r(t);var o=a(477);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(){const e=wp.blocks.createBlock("mappress/map",{mapid:val});wp.data.dispatch("core/block-editor").insertBlock(e,0),d({isPickerOpen:!1,pickerMapid:null})}()})}())},icon:null})},191:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappEdit:()=>z});var o=a(123),n=a(805);window.mapp=window.mapp||{};const i=wp.element.createElement,{Fragment:s,useEffect:l,useLayoutEffect:r,useRef:p,useState:c}=wp.element,{Button:m,TextControl:d}=wp.components,__=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function u(e){e={poi:null,onChange:null,onClose:null,onDelete:null,onSave:null,...e};const t="mapp-poi-body",a=p(null),[r,d]=c({kml:null,title:e.poi.title,isVisual:!0});function u(e){d((t=>({...t,...e})))}function _(e){e?tinyMCE.execCommand("mceAddEditor",!1,t):tinyMCE.execCommand("mceRemoveEditor",!1,t)}function h(){return["circle","polyline","polygon","rectangle"].includes(e.poi.type)}function g(){e.onChange({body:tinymce&&tinymce.get(t)?tinymce.get(t).getContent():a.current.value,kml:r.kml,title:r.title}),e.onClose()}return l((()=>(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)}(),()=>{_(!1)})),[]),l((()=>{r.isVisual?_(!0):_(!1)}),[r.isVisual]),i(s,null,i("div",{className:"mapp-poi-header"},i("input",{className:"mapp-poi-title",value:r.title,onChange:e=>{u({title:e.target.value})},onKeyDown:e=>function(e){13==e.keyCode&&(g(),e.stopPropagation(),e.preventDefault())}(e)}),h(r.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 h(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}()),"kml"==r.type&&i("div",{className:"mapp-poi-kml"},i("input",{className:"mapp-poi-url",value:null===(f=r.kml)||void 0===f?void 0:f.url,onChange:e=>{u({kml:{kml:{url:e.target.vallue}}})}})),function(){const o="mapp-mce-visual"+(r.isVisual?" mapp-active":""),n="mapp-mce-html"+(r.isVisual?"":" mapp-active");return i(s,null,i("div",{className:"mapp-mce-toolbar"},i("div",{className:"mapp-mce-tabs"},i("a",{className:o,onClick:()=>u({isVisual:!0})},__("Visual"))," | ",i("a",{className:n,onClick:()=>u({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%"}})))}(),i("div",{className:"mapp-poi-toolbar"},i("div",null,i(m,{isPrimary:!0,onClick:()=>g()},__("Save")),i(m,{isSecondary:!0,onClick:()=>e.onClose()},__("Cancel"))),i(m,{isDestructive:!0,onClick:()=>e.onDelete()},__("Delete"))));var f}var _=a(939),h=a(429),g=a(710);window.mapp=window.mapp||{};const f=wp.element.createElement,{Fragment:b,useEffect:y,useLayoutEffect:v,useRef:k,useState:w}=wp.element,{Button:C,Dropdown:x,Modal:N,Panel:S,PanelBody:O,Popover:M,Spinner:I,TextControl:P}=wp.components,E=e=>wp.i18n.__(e,"mappress-google-maps-for-wordpress");function z(e){e={context:null,mapid:null,onClose:null,onSave:null,...e};const[t,a]=w({isBusy:!1,map:null,mapdata:null,poi:null}),o=k(null);function n(e){a((t=>({...t,...e})))}function i(e){n({map:t.map})}function s(e){let a={...mapp.poi.parseOverlay(e.overlay),body:"",iconid:t.lastIcon,type:"marker"==e.type?null:e.type,title:"marker"==e.type?e.overlay.position.toUrlValue():mappl10n.shape},o=new mapp.Poi(a);e.overlay.setMap(null),t.map.poiInsert(o)}function l(e){t.poi.set(e),t.map.renderList(),e.iconid&&n({lastIcon:e.iconid}),n({poi:t.poi})}function r(){v(),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=>{v(),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:_.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),mappEvent.addListenerOnce(a.overlay,"ready defaultviewport_changed",(function(){a.center()}))}}function b(e){t.map.set(e),n({map:t.map})}function v(){if(t.map){const e=t.map.iw.getContent();wp.element.unmountComponentAtNode(e)}}return y((()=>{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(f(u,{onClose:()=>t.map.poiClose(),onDelete:p,onChange:l,poi:t.poi}),e)}}()})),y((()=>{t.map&&(jQuery(t.map.div.layout).off("mapp.render",i),jQuery(t.map.div.layout).on("mapp.render",(e=>i())))}),[t.map]),y((()=>{const t=t=>{n({isBusy:t.isSavingMap,mapdata:t.maps[e.mapid]})};return mapp.store.subscribe(t),()=>mapp.store.unsubscribe(t)})),y((()=>{!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(f(h.MappSettings,{map:t.map,context:e.context,onChange:e=>b(e),center:a,height:o,poiList:n,search:i,width:s,zoom:l}),r)}()})),y((()=>{e.mapid?mapp.store.fetchMap(e.mapid):n({mapdata:{}})}),[e.mapid]),y((()=>{if(!t.mapdata)return;let a={embed:!0,isEditable:!0,layout:"left",mapOpts:{streetViewControl:!1},menu:!1,name:"media-map",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]),f("div",{className:"mapp-edit"},function(){let e=t.map&&t.map.title?t.map.title:"",a=t.map&&!t.isFetchingMap?E("Untitled"):"";return f("div",{className:"mapp-gt-modal-header"},f(P,{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)}))}(),f("div",{className:"mapp-edit-main"},f("div",{className:"mapp-edit-map",key:e.mapid,ref:o,onKeyDown:e=>e.stopPropagation(),tabIndex:-1}),o.current&&t.map?f(g.m,{map:t.map,selected:t.map.mapTypeId,onChange:e=>b({mapTypeId:e})}):null),f("div",{className:"mapp-edit-toolbar",tabIndex:-1,onKeyDown:e=>e.stopPropagation()},f(C,{isPrimary:!0,isBusy:t.isBusy,onClick:()=>m()},E("Save")),f(C,{isSecondary:!0,disabled:t.isBusy,onClick:()=>(v(),void e.onClose())},E("Cancel"))))}},805:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappIconPicker:()=>M});var o=a(939),n=a(123),i=a(824);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")))))))}},24:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappImport:()=>y});var o=a(939),n=a(824);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"))},816:(e,t,a)=>{"use strict";a.r(t);var o=a(429),n=a(477);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}}})},378:(e,t,a)=>{"use strict";a.r(t);a(429),a(670),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},670:(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()))}},218:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var o=a(824),n=a(123),i=a(805),s=a(939),l=(a(535),a(710));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,{label:__("Enable updates for beta versions"),checked:t.betas,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 + POI body")},{value:"post",label:__("Post title + post excerpt")}],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:__("Mashup 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:__("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})},placeholder:__("ACF field"),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"))}))},824:(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:()=>T,MappTemplateEditor:()=>L});var o=a(805),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 T(e){e={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 L(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})}}),[]);function r(e,a){switch(e){case"close":o({isOpen:!1});break;case"delete":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}));break;case"insert":let e=t.codeEditor.codemirror.getDoc(),i=e.getCursor();e.replaceRange("{{{poi."+a+"}}}",i);break;case"open":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})}});break;case"save":let s="editor"==t.tab?t.codeEditor.codemirror.getValue():t.template.content;n.mappLib.ajax({type:"POST",data:{action:"mapp_tpl_save",content:s,name:t.template.name,nonce:mappl10n.options.nonce},callback:function(e){e&&"OK"==e.status&&o({isOpen:!1,template:null,tokens:null})}});break;case"tab-select":if("editor"!=a){let e={...t.template};e.content=t.codeEditor.codemirror.getValue(),o({template:e})}o({tab:a})}}function c(){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=>{t.preventDefault(),r("open",e.name)}},e.label))))}(),t.isOpen&&t.template?i(g,{title:c(),className:"mapp-templates-modal",onRequestClose:()=>r("close"),shouldCloseOnClickOutside:!1},i(f,{className:"mapp-templates-tabs",onSelect:e=>r("tab-select",e),tabs:[{name:"editor",title:__("Editor")},{name:"standard",title:__("Default")}]},(e=>function(){const e=i("div",{className:"mapp-templates-tokens"},_.map(t.tokens,((e,t)=>i("code",{onClick:()=>r("insert",e.token),key:t,title:e.label},e.label)))),a=i("div",{className:"mapp-templates-path"},t.template.path);return i(s,null,"editor"==t.tab&&a,"editor"==t.tab&&e,i("div",{className:"editor"==t.tab?"mapp-templates-editor":"mapp-templates-standard"},i("textarea",{ref:l,defaultValue:"editor"==t.tab?t.template.content:t.template.standard})))}())),t.error&&i("div",{className:"mapp-templates-error"},t.error),i("div",{className:"mapp-templates-toolbar"},i(u,{isPrimary:!0,onClick:()=>r("save")},__("Save")),i(u,{isSecondary:!0,onClick:()=>r("close")},__("Cancel")),t.template.exists&&i("a",{onClick:e=>{e.preventDefault(),r("delete")}},__("Delete")))):null)}},535:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappOptionsMeta:()=>f});var o=a(824),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:[],isBusy:!1,isDone:!1,logs:[],otype:null,start:0});c(null);function r(e){a((t=>({...t,...e})))}function p(a){if(a)return i("div",{className:"mapp-option-geocode-log"},_.map(t.logs,(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&&("post"==t.otype?r({isDone:!1,start:1,otype:"user"}):r({isBusy:!1}))}),[t.start,t.isDone]),l((()=>{t.start>0&&!t.isDone&&(t.otype,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,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:1})}},__("Geocode now")),h,i("div",{style:{fontStyle:"italic"}},__("New posts will be geocoded when they are published."),__("Use an online geocoding service for bulk geocoding (>100 items).")),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))}())}},477:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>C});var o=a(713),n=a(191),i=(a(939),a(27)),s=a(677);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 T="mapp-pick mapp-mode-"+t.mode+" mapp-context-"+e.context;return"library"==e.context?l("div",{className:T},E,z,m()):l(y,{className:"mapp-gt-modal "+T,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")))}))},429:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappSettings:()=>y});var o=a(710),n=a(677),i=a(824);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()))}},677:(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))))}}},787:(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},710:(e,t,a)=>{"use strict";a.d(t,{m:()=>w});var o=a(824),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")))))}},214:(e,t,a)=>{"use strict";a.r(t),a.d(t,{MappCard:()=>f});var o=a(939);a(824);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"))},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(371),a(787),a(844),a(215),a(713),a(123),a(521),a(191),a(805),a(24),a(816),a(378),a(670),a(218),a(824),a(535),a(477),a(429),a(214)})();
css/mappress.css CHANGED
@@ -4,13 +4,6 @@
4
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5
  */
6
 
7
- /*
8
- -----------------------------------------------------------------------------------
9
- Map layout - table containing map, directions, poi list
10
- Font size and family can be removed to make map match your theme
11
- -----------------------------------------------------------------------------------
12
- */
13
-
14
  .mapp-layout {
15
  border: 1px solid lightgray;
16
  color: black;
@@ -266,9 +259,13 @@ only screen and (min-device-pixel-ratio: 2) {
266
 
267
  .mapp-list {
268
  display: flex;
269
- flex: 1;
270
- flex-direction: column;
271
  overflow: hidden;
 
 
 
 
 
 
272
  position: relative;
273
  }
274
 
@@ -345,18 +342,13 @@ only screen and (min-device-pixel-ratio: 2) {
345
 
346
  .mapp-paginate {}
347
 
348
- /* Backend buttons are button elements */
349
- .mapp-paginate button {
350
- font-size: 16px;
351
- margin: 0 5px;
352
- }
353
-
354
  /* Frontend buttons are divs to prevent theme interference w/styling */
355
  .mapp-paginate-button {
356
  align-items: center;
357
  background-color: #eee;
358
  border: 1px solid lightgray;
359
  border-radius: 5px;
 
360
  display: inline-flex;
361
  font-size: 16px;
362
  height: 25px;
@@ -1233,21 +1225,22 @@ only screen and (min-device-pixel-ratio: 2) {
1233
  box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px;
1234
  color: #777;
1235
  cursor: pointer;
1236
- height: 29px;
1237
  outline: none;
1238
  outline: none; /* Prevent focus outline */
1239
  position: absolute;
1240
  top: 10px; left: 10px; bottom: 0; right: 0;
1241
- width: 32px;
1242
  z-index: 1000;
1243
  }
1244
 
1245
- .mapp-menu {
1246
  background-color: white;
1247
  border: 1px solid lightgray;
1248
  color: #606060;
1249
  cursor: default;
1250
- display: none;
 
1251
  overflow: auto;
1252
  padding: 5px 0 5px 0;
1253
  position: absolute;
4
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5
  */
6
 
 
 
 
 
 
 
 
7
  .mapp-layout {
8
  border: 1px solid lightgray;
9
  color: black;
259
 
260
  .mapp-list {
261
  display: flex;
 
 
262
  overflow: hidden;
263
+ }
264
+
265
+ .mapp-list-component {
266
+ display: flex;
267
+ flex-direction: column;
268
+ flex: 1;
269
  position: relative;
270
  }
271
 
342
 
343
  .mapp-paginate {}
344
 
 
 
 
 
 
 
345
  /* Frontend buttons are divs to prevent theme interference w/styling */
346
  .mapp-paginate-button {
347
  align-items: center;
348
  background-color: #eee;
349
  border: 1px solid lightgray;
350
  border-radius: 5px;
351
+ cursor: pointer;
352
  display: inline-flex;
353
  font-size: 16px;
354
  height: 25px;
1225
  box-shadow: rgba(0, 0, 0, 0.298039) 0px 1px 4px -1px;
1226
  color: #777;
1227
  cursor: pointer;
1228
+ height: 40px;
1229
  outline: none;
1230
  outline: none; /* Prevent focus outline */
1231
  position: absolute;
1232
  top: 10px; left: 10px; bottom: 0; right: 0;
1233
+ width: 40px;
1234
  z-index: 1000;
1235
  }
1236
 
1237
+ .mapp-menu-component {
1238
  background-color: white;
1239
  border: 1px solid lightgray;
1240
  color: #606060;
1241
  cursor: default;
1242
+ display: flex;
1243
+ flex-direction: column;
1244
  overflow: auto;
1245
  padding: 5px 0 5px 0;
1246
  position: absolute;
css/mappress_admin.css CHANGED
@@ -56,15 +56,15 @@
56
 
57
  /*
58
  -----------------------------------------------------------------------------------
59
- Map MCE
60
  -----------------------------------------------------------------------------------
61
  */
62
 
63
- .mapp-mce {
64
  display: inline-block;
65
  }
66
 
67
- .mapp-mce button.mapp-mce-button {
68
  display: flex;
69
  align-items: center;
70
  }
@@ -328,25 +328,25 @@
328
  background-color: #ededed;
329
  }
330
 
331
- .mapp-pick-col-map_title, .mapp-pick-col-post_title, .mapp-pick-col-mapid {
332
  cursor: pointer;
333
  overflow: hidden;
334
  text-overflow: ellipsis;
335
  white-space: nowrap;
336
  }
337
 
338
- .mapp-pick-col-map_title > div {
339
  overflow: hidden;
340
  padding-right: 10px;
341
  text-overflow: ellipsis;
342
  }
343
 
344
- .mapp-pick-col-map_title {
345
  cursor: pointer;
346
  flex: 1;
347
  }
348
 
349
- .mapp-pick-col-post_title {
350
  width: 25%;
351
  }
352
 
@@ -359,6 +359,7 @@
359
  }
360
 
361
  .mapp-pick-actions {
 
362
  margin-top: 5px;
363
  }
364
 
@@ -466,6 +467,11 @@
466
  width: 300px;
467
  }
468
 
 
 
 
 
 
469
 
470
  /*
471
  -----------------------------------------------------------------------------------
@@ -634,7 +640,7 @@ button.mapp-query-refresh {
634
  .mapp-document-list { max-height: 200px; overflow: auto; margin-bottom: 10px; }
635
  .mapp-document-header { display: flex; padding-bottom: 5px; }
636
  .mapp-document-item { display: flex; padding-bottom: 5px; }
637
- .mapp-document-col-map_title { flex: 1; margin-right: 5px; }
638
  .mapp-document-col-mapid { width: 50px; }
639
 
640
  /*
@@ -643,26 +649,20 @@ button.mapp-query-refresh {
643
  -----------------------------------------------------------------------------------
644
  */
645
 
646
- /* Go for a large dialog, IB will restrict as needed */
647
- .mapp-ib-wrapper.mapp-ib-edit {
648
- max-height: 80%;
649
  max-width: 80%;
 
650
  }
651
 
652
- .mapp-ib-wrapper.mapp-ib-edit .mapp-ib-content {
653
- width: 600px;
654
- height: 400px;
655
- }
656
-
657
- .mapp-ib-wrapper.mapp-ib-edit .mapp-ib {
658
- height: 100%;
659
  }
660
 
661
- .mapp-iw-edit {
662
- display: flex;
663
  flex: 1;
664
- flex-direction: column;
665
- overflow: auto;
666
  padding: 10px;
667
  }
668
 
@@ -671,10 +671,12 @@ button.mapp-query-refresh {
671
  align-items: center;
672
  }
673
 
674
- .mapp-poi-header .mapp-poi-title {
 
675
  flex: 1;
676
  font-weight: bold;
677
  min-width: 0;
 
678
  }
679
 
680
  /* Set fixed icon size, otherwise Leaflet will incorrectly position the popup */
@@ -687,42 +689,64 @@ button.mapp-query-refresh {
687
  width: 100%;
688
  }
689
 
690
- .mapp-poi-editor-toolbar {
691
  align-items: center;
692
  display: flex;
693
  justify-content: space-between;
694
- padding: 3px 0;
695
  }
696
 
697
  .mapp-poi-toolbar button {
698
  margin-right: 5px;
699
  }
700
 
701
- .mapp-poi-visual, .mapp-poi-html {
 
702
  cursor: pointer;
703
  }
704
 
705
- .mapp-poi-visual.mapp-active, .mapp-poi-html.mapp-active {
706
- font-weight: bold;
 
 
 
 
 
 
 
 
707
  }
708
 
709
- .mapp-poi-main {
 
 
 
 
 
710
  display: flex;
 
 
 
 
 
 
 
711
  flex: 1;
 
712
  overflow-wrap: break-word;
713
  }
714
 
715
- .mapp-poi-main textarea {
716
  width: 100%;
717
  }
718
 
719
  /* TinyMCE by default sizes width 100% which obscures right edge */
720
- .mapp-poi-main .mce-tinymce {
721
  border: 1px solid lightgray;
722
  /* width: auto !important;*/
723
  }
724
 
725
- .mapp-poi-main .mce-tinymce, .mapp-poi-main .mce-stack-layout, .mapp-poi-main .mce-edit-area{
726
  display: flex;
727
  flex-direction: column;
728
  flex: 1;
@@ -730,22 +754,6 @@ button.mapp-query-refresh {
730
  width: auto !important;
731
  }
732
 
733
- .mapp-poi-toolbar {
734
- align-items: center;
735
- display: flex;
736
- margin-top: 5px;
737
- }
738
-
739
- .mapp-poi-toolbar button {
740
- margin-right: 3px !important;
741
- }
742
-
743
- /* Leaflet sets cursor for all img tags in popups, so override */
744
- #mapp-poi-iconpicker .mapp-icon {
745
- cursor: pointer;
746
- }
747
-
748
-
749
  /*
750
  -----------------------------------------------------------------------------------
751
  GT Multiselect
@@ -1217,6 +1225,21 @@ button.mapp-option-geocode {
1217
  margin-right: 10px;
1218
  }
1219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1220
  /*
1221
  -----------------------------------------------------------------------------------
1222
  Support page
@@ -2226,6 +2249,27 @@ a.mapp-templates-item {
2226
  cursor: pointer;
2227
  }
2228
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2229
  /*
2230
  -----------------------------------------------------------------------------------
2231
  Importer
56
 
57
  /*
58
  -----------------------------------------------------------------------------------
59
+ Classic Editor button
60
  -----------------------------------------------------------------------------------
61
  */
62
 
63
+ .mapp-classic {
64
  display: inline-block;
65
  }
66
 
67
+ .mapp-classic button.mapp-classic-button {
68
  display: flex;
69
  align-items: center;
70
  }
328
  background-color: #ededed;
329
  }
330
 
331
+ .mapp-pick-col-title, .mapp-pick-col-post-title, .mapp-pick-col-mapid {
332
  cursor: pointer;
333
  overflow: hidden;
334
  text-overflow: ellipsis;
335
  white-space: nowrap;
336
  }
337
 
338
+ .mapp-pick-col-title > div {
339
  overflow: hidden;
340
  padding-right: 10px;
341
  text-overflow: ellipsis;
342
  }
343
 
344
+ .mapp-pick-col-title {
345
  cursor: pointer;
346
  flex: 1;
347
  }
348
 
349
+ .mapp-pick-col-post-title {
350
  width: 25%;
351
  }
352
 
359
  }
360
 
361
  .mapp-pick-actions {
362
+ display: inline-block; /* Required for click to bubble up to edit on same row */
363
  margin-top: 5px;
364
  }
365
 
467
  width: 300px;
468
  }
469
 
470
+ .mapp-edit .mapp-list .mapp-item.mapp-dragover {
471
+ border: 1px solid black;
472
+ }
473
+
474
+
475
 
476
  /*
477
  -----------------------------------------------------------------------------------
640
  .mapp-document-list { max-height: 200px; overflow: auto; margin-bottom: 10px; }
641
  .mapp-document-header { display: flex; padding-bottom: 5px; }
642
  .mapp-document-item { display: flex; padding-bottom: 5px; }
643
+ .mapp-document-col-title { flex: 1; margin-right: 5px; }
644
  .mapp-document-col-mapid { width: 50px; }
645
 
646
  /*
649
  -----------------------------------------------------------------------------------
650
  */
651
 
652
+ .mapp-edit .mapp-ib-wrapper {
653
+ height: 400px !important;
654
+ max-height: calc(100% - 80px);
655
  max-width: 80%;
656
+ width: 600px !important;
657
  }
658
 
659
+ .mapp-edit .mapp-ib-content {
660
+ flex: 1;
 
 
 
 
 
661
  }
662
 
663
+ .mapp-edit .mapp-ib {
 
664
  flex: 1;
665
+ overflow: hidden;
 
666
  padding: 10px;
667
  }
668
 
671
  align-items: center;
672
  }
673
 
674
+ .mapp-poi-title {
675
+ display: flex;
676
  flex: 1;
677
  font-weight: bold;
678
  min-width: 0;
679
+ padding: 8px;
680
  }
681
 
682
  /* Set fixed icon size, otherwise Leaflet will incorrectly position the popup */
689
  width: 100%;
690
  }
691
 
692
+ .mapp-poi-toolbar {
693
  align-items: center;
694
  display: flex;
695
  justify-content: space-between;
696
+ margin-top: 5px;
697
  }
698
 
699
  .mapp-poi-toolbar button {
700
  margin-right: 5px;
701
  }
702
 
703
+ /* Leaflet sets cursor for all img tags in popups, so override */
704
+ #mapp-poi-iconpicker .mapp-icon {
705
  cursor: pointer;
706
  }
707
 
708
+ /*
709
+ -----------------------------------------------------------------------------------
710
+ POI editor MCE Control
711
+ -----------------------------------------------------------------------------------
712
+ */
713
+
714
+ .mapp-mce-visual, .mapp-mce-html {
715
+ cursor: pointer;
716
+ display: inline-block;
717
+ padding: 5px !important;
718
  }
719
 
720
+ .mapp-mce-visual.mapp-active, .mapp-mce-html.mapp-active {
721
+ border-bottom: 2px solid black !important;
722
+ }
723
+
724
+ .mapp-mce-toolbar {
725
+ align-items: center;
726
  display: flex;
727
+ justify-content: space-between;
728
+ margin-bottom: 2px;
729
+ }
730
+
731
+ .mapp-mce-main {
732
+ display: flex;
733
+ flex-direction: column;
734
  flex: 1;
735
+ overflow: hidden;
736
  overflow-wrap: break-word;
737
  }
738
 
739
+ .mapp-mce-main textarea {
740
  width: 100%;
741
  }
742
 
743
  /* TinyMCE by default sizes width 100% which obscures right edge */
744
+ .mapp-mce-main .mce-tinymce {
745
  border: 1px solid lightgray;
746
  /* width: auto !important;*/
747
  }
748
 
749
+ .mapp-mce-main .mce-tinymce, .mapp-mce-main .mce-stack-layout, .mapp-mce-main .mce-edit-area{
750
  display: flex;
751
  flex-direction: column;
752
  flex: 1;
754
  width: auto !important;
755
  }
756
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
757
  /*
758
  -----------------------------------------------------------------------------------
759
  GT Multiselect
1225
  margin-right: 10px;
1226
  }
1227
 
1228
+ .mapp-option-geocode-log {
1229
+ max-height: 200px;
1230
+ overflow: auto;
1231
+ padding-right: 40px;
1232
+ }
1233
+
1234
+ .mapp-option-geocode-log-row {
1235
+ display: table-row;
1236
+ }
1237
+
1238
+ .mapp-option-geocode-log-row > div {
1239
+ display: table-cell;
1240
+ padding: 5px 15px;
1241
+ }
1242
+
1243
  /*
1244
  -----------------------------------------------------------------------------------
1245
  Support page
2249
  cursor: pointer;
2250
  }
2251
 
2252
+ /*
2253
+ -----------------------------------------------------------------------------------
2254
+ DB Upgrader
2255
+ -----------------------------------------------------------------------------------
2256
+ */
2257
+ .mapp-upgrade-warning, .mapp-upgrade-error {
2258
+ background-color: pink;
2259
+ border: 1px solid red;
2260
+ font-weight: 600;
2261
+ margin: 10px 0;
2262
+ padding: 10px;
2263
+ }
2264
+
2265
+ .mapp-upgrade-success {
2266
+ background-color: lightgreen;
2267
+ border: 1px solid green;
2268
+ font-weight: 600;
2269
+ margin-top: 10px;
2270
+ padding: 10px;
2271
+ }
2272
+
2273
  /*
2274
  -----------------------------------------------------------------------------------
2275
  Importer
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.74.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-04-03T17:20: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
 
@@ -178,116 +178,115 @@ msgid "Hybrid"
178
  msgstr ""
179
 
180
  #: mappress.php:762
181
- #: mappress_settings.php:426
182
- #: mappress_settings.php:457
183
  #: build/index_mappress_admin.js:1
184
  msgid "What's new"
185
  msgstr ""
186
 
187
- #: mappress.php:1075
188
  msgid "Version"
189
  msgstr ""
190
 
191
- #: mappress_map.php:89
192
- #: mappress_settings.php:421
193
- #: mappress_settings.php:452
194
- #: build/index_mappress_admin.js:1
195
- msgid "MapPress"
 
196
  msgstr ""
197
 
198
- #: mappress_map.php:98
199
  #: build/index_mappress_admin.js:1
200
  msgid "Untitled"
201
  msgstr ""
202
 
203
- #: mappress_map.php:99
204
  msgid "Copy of %s"
205
  msgstr ""
206
 
207
- #: mappress_map.php:201
208
- msgid "Map not found"
 
 
 
209
  msgstr ""
210
 
211
- #: mappress_map.php:244
212
- msgid "Post not found"
213
  msgstr ""
214
 
215
- #: mappress_settings.php:257
216
  #: build/index_mappress_admin.js:1
217
  msgid "Default"
218
  msgstr ""
219
 
220
- #: mappress_settings.php:293
221
- msgid "Maps for WordPress"
222
- msgstr ""
223
-
224
- #: mappress_settings.php:313
225
  msgid "Address line "
226
  msgstr ""
227
 
228
- #: mappress_settings.php:314
229
  msgid "Latitude"
230
  msgstr ""
231
 
232
- #: mappress_settings.php:314
233
  msgid "Longitude"
234
  msgstr ""
235
 
236
- #: mappress_settings.php:314
237
  #: mappress_template.php:37
238
  #: build/index_mappress_admin.js:1
239
  msgid "Title"
240
  msgstr ""
241
 
242
- #: mappress_settings.php:314
243
  #: mappress_template.php:34
244
  msgid "Body"
245
  msgstr ""
246
 
247
- #: mappress_settings.php:314
248
  #: mappress_template.php:35
249
  #: build/index_mappress_admin.js:1
250
  msgid "Icon"
251
  msgstr ""
252
 
253
- #: mappress_settings.php:314
254
  msgid "Zoom"
255
  msgstr ""
256
 
257
- #: mappress_settings.php:403
258
  msgid "OK, you deserve it!"
259
  msgstr ""
260
 
261
- #: mappress_settings.php:404
262
  msgid "Nope, maybe later"
263
  msgstr ""
264
 
265
- #: mappress_settings.php:405
266
  msgid "I need help using the plugin"
267
  msgstr ""
268
 
269
- #: mappress_settings.php:407
270
  msgid "Help Spread the Word"
271
  msgstr ""
272
 
273
- #: mappress_settings.php:408
274
  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!"
275
  msgstr ""
276
 
277
- #: mappress_settings.php:425
278
- #: mappress_settings.php:456
279
- #: templates/map.php:64
280
  msgid "Get help"
281
  msgstr ""
282
 
283
- #: mappress_settings.php:428
284
- #: mappress_settings.php:459
285
  #: build/index_mappress_admin.js:1
286
  msgid "Your account"
287
  msgstr ""
288
 
289
- #: mappress_settings.php:430
290
- #: mappress_settings.php:461
291
  msgid "Upgrade to MapPress Pro"
292
  msgstr ""
293
 
@@ -326,31 +325,11 @@ msgstr ""
326
  msgid "Your Location"
327
  msgstr ""
328
 
329
- #: templates/map.php:55
330
- msgid "Menu"
331
- msgstr ""
332
-
333
- #: templates/map.php:57
334
- msgid "Center map"
335
- msgstr ""
336
-
337
- #: templates/map.php:60
338
- msgid "Traffic"
339
- msgstr ""
340
-
341
- #: templates/map.php:61
342
- msgid "Bicycling"
343
- msgstr ""
344
-
345
- #: templates/map.php:62
346
- msgid "Transit"
347
- msgstr ""
348
-
349
- #: templates/map.php:73
350
  msgid "List"
351
  msgstr ""
352
 
353
- #: templates/map.php:74
354
  #: build/index_mappress_admin.js:1
355
  msgid "Map"
356
  msgstr ""
@@ -373,14 +352,17 @@ msgid " Tagged "
373
  msgstr ""
374
 
375
  #: templates_admin/editor.php:19
 
376
  msgid "Visual"
377
  msgstr ""
378
 
379
  #: templates_admin/editor.php:19
 
380
  msgid "HTML"
381
  msgstr ""
382
 
383
  #: templates_admin/editor.php:21
 
384
  msgid "Add Media"
385
  msgstr ""
386
 
@@ -409,7 +391,6 @@ msgid "All"
409
  msgstr ""
410
 
411
  #: build/index_mappress.js:1
412
- #: build/index_mappress_admin.js:1
413
  msgid "Filter"
414
  msgstr ""
415
 
@@ -431,6 +412,26 @@ msgstr ""
431
  msgid "Enter an address, place, KML file URL, or lat,lng"
432
  msgstr ""
433
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  #: build/index_mappress_admin.js:1
435
  msgid "Feedback"
436
  msgstr ""
@@ -535,10 +536,6 @@ msgstr ""
535
  msgid "Open map library"
536
  msgstr ""
537
 
538
- #: build/index_mappress_admin.js:1
539
- msgid "Trash"
540
- msgstr ""
541
-
542
  #: build/index_mappress_admin.js:1
543
  msgid "Select icon"
544
  msgstr ""
@@ -679,6 +676,10 @@ msgstr ""
679
  msgid "Insert a map"
680
  msgstr ""
681
 
 
 
 
 
682
  #: build/index_mappress_admin.js:1
683
  msgid "Sample Map"
684
  msgstr ""
@@ -1095,6 +1096,10 @@ msgstr ""
1095
  msgid "Restrict searches to a bounding box (optional)"
1096
  msgstr ""
1097
 
 
 
 
 
1098
  #: build/index_mappress_admin.js:1
1099
  msgid "Filters position"
1100
  msgstr ""
@@ -1164,111 +1169,103 @@ msgid "Exclude"
1164
  msgstr ""
1165
 
1166
  #: build/index_mappress_admin.js:1
1167
- msgid "Generate Maps from Custom Fields"
1168
- msgstr ""
1169
-
1170
- #: build/index_mappress_admin.js:1
1171
- msgid "Post types"
1172
- msgstr ""
1173
-
1174
- #: build/index_mappress_admin.js:1
1175
- msgid "Custom fields"
1176
  msgstr ""
1177
 
1178
  #: build/index_mappress_admin.js:1
1179
- msgid "Map field"
1180
  msgstr ""
1181
 
1182
  #: build/index_mappress_admin.js:1
1183
- msgid "Custom field"
1184
  msgstr ""
1185
 
1186
  #: build/index_mappress_admin.js:1
1187
- msgid "Overwrite"
1188
  msgstr ""
1189
 
1190
  #: build/index_mappress_admin.js:1
1191
- msgid "Overwrite maps when posts are saved"
1192
  msgstr ""
1193
 
1194
  #: build/index_mappress_admin.js:1
1195
- msgid "Google Server API key"
1196
  msgstr ""
1197
 
1198
  #: build/index_mappress_admin.js:1
1199
- msgid "Server API key for geocoding. Only required if client key is restricted by referrer."
1200
  msgstr ""
1201
 
1202
  #: build/index_mappress_admin.js:1
1203
- msgid "No errors found"
1204
  msgstr ""
1205
 
1206
  #: build/index_mappress_admin.js:1
1207
- msgid "Geocoding errors"
1208
  msgstr ""
1209
 
1210
  #: build/index_mappress_admin.js:1
1211
- msgid "Frontend Forms"
1212
  msgstr ""
1213
 
1214
  #: build/index_mappress_admin.js:1
1215
- msgid "Advanced Custom Fields"
1216
  msgstr ""
1217
 
1218
  #: build/index_mappress_admin.js:1
1219
- msgid "ACF field"
1220
  msgstr ""
1221
 
1222
  #: build/index_mappress_admin.js:1
1223
- msgid "ACF map field to include on MapPress mashups"
1224
  msgstr ""
1225
 
1226
  #: build/index_mappress_admin.js:1
1227
- msgid "To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section"
1228
  msgstr ""
1229
 
1230
  #: build/index_mappress_admin.js:1
1231
- msgid "Templates"
1232
  msgstr ""
1233
 
1234
  #: build/index_mappress_admin.js:1
1235
- msgid "Custom templates"
1236
  msgstr ""
1237
 
1238
  #: build/index_mappress_admin.js:1
1239
- msgid "Mashup thumbnails"
1240
  msgstr ""
1241
 
1242
  #: build/index_mappress_admin.js:1
1243
- msgid "Popups"
1244
  msgstr ""
1245
 
1246
  #: build/index_mappress_admin.js:1
1247
- msgid "POI lists"
1248
  msgstr ""
1249
 
1250
  #: build/index_mappress_admin.js:1
1251
- msgid "Thumbnail size"
1252
  msgstr ""
1253
 
1254
  #: build/index_mappress_admin.js:1
1255
- msgid "or"
1256
  msgstr ""
1257
 
1258
  #: build/index_mappress_admin.js:1
1259
- msgid "Localization"
1260
  msgstr ""
1261
 
1262
  #: build/index_mappress_admin.js:1
1263
- msgid "Language"
1264
  msgstr ""
1265
 
1266
  #: build/index_mappress_admin.js:1
1267
- msgid "Language for searches and Google map controls"
1268
  msgstr ""
1269
 
1270
  #: build/index_mappress_admin.js:1
1271
- msgid "Directions server"
1272
  msgstr ""
1273
 
1274
  #: build/index_mappress_admin.js:1
@@ -1352,27 +1349,27 @@ msgid "Editor"
1352
  msgstr ""
1353
 
1354
  #: build/index_mappress_admin.js:1
1355
- msgid "Map deleted"
1356
  msgstr ""
1357
 
1358
  #: build/index_mappress_admin.js:1
1359
- msgid "Map copied"
1360
  msgstr ""
1361
 
1362
  #: build/index_mappress_admin.js:1
1363
- msgid "Map %d saved"
1364
  msgstr ""
1365
 
1366
  #: build/index_mappress_admin.js:1
1367
- msgid "Map restored"
1368
  msgstr ""
1369
 
1370
  #: build/index_mappress_admin.js:1
1371
- msgid "Shortcode copied"
1372
  msgstr ""
1373
 
1374
  #: build/index_mappress_admin.js:1
1375
- msgid "Map moved to trash"
1376
  msgstr ""
1377
 
1378
  #: build/index_mappress_admin.js:1
@@ -1387,10 +1384,18 @@ msgstr ""
1387
  msgid "Unattached"
1388
  msgstr ""
1389
 
 
 
 
 
1390
  #: build/index_mappress_admin.js:1
1391
  msgid "Restore"
1392
  msgstr ""
1393
 
 
 
 
 
1394
  #: build/index_mappress_admin.js:1
1395
  msgid "Delete Permanently"
1396
  msgstr ""
@@ -1403,24 +1408,36 @@ msgstr ""
1403
  msgid "Insert into post"
1404
  msgstr ""
1405
 
 
 
 
 
1406
  #: build/index_mappress_admin.js:1
1407
  msgid "Copy"
1408
  msgstr ""
1409
 
 
 
 
 
 
 
 
 
1410
  #: build/index_mappress_admin.js:1
1411
  msgid "Detach"
1412
  msgstr ""
1413
 
1414
  #: build/index_mappress_admin.js:1
1415
- msgid "Add New"
1416
  msgstr ""
1417
 
1418
  #: build/index_mappress_admin.js:1
1419
- msgid "Attached to post"
1420
  msgstr ""
1421
 
1422
  #: build/index_mappress_admin.js:1
1423
- msgid "Selected"
1424
  msgstr ""
1425
 
1426
  #: build/index_mappress_admin.js:1
@@ -1440,11 +1457,7 @@ msgid "Shortcode"
1440
  msgstr ""
1441
 
1442
  #: build/index_mappress_admin.js:1
1443
- msgid "Viewport automatic"
1444
- msgstr ""
1445
-
1446
- #: build/index_mappress_admin.js:1
1447
- msgid "Viewport set"
1448
  msgstr ""
1449
 
1450
  #: build/index_mappress_admin.js:1
@@ -1471,10 +1484,18 @@ msgstr ""
1471
  msgid "Center/Zoom"
1472
  msgstr ""
1473
 
 
 
 
 
1474
  #: build/index_mappress_admin.js:1
1475
  msgid "Automatic"
1476
  msgstr ""
1477
 
 
 
 
 
1478
  #: build/index_mappress_admin.js:1
1479
  msgid "Set"
1480
  msgstr ""
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.75\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-04-08T23:25:16+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
 
178
  msgstr ""
179
 
180
  #: mappress.php:762
181
+ #: mappress_settings.php:509
182
+ #: mappress_settings.php:540
183
  #: build/index_mappress_admin.js:1
184
  msgid "What's new"
185
  msgstr ""
186
 
187
+ #: mappress.php:1094
188
  msgid "Version"
189
  msgstr ""
190
 
191
+ #: mappress_map.php:139
192
+ msgid "Map not found"
193
+ msgstr ""
194
+
195
+ #: mappress_map.php:153
196
+ msgid "Post not found"
197
  msgstr ""
198
 
199
+ #: mappress_map.php:367
200
  #: build/index_mappress_admin.js:1
201
  msgid "Untitled"
202
  msgstr ""
203
 
204
+ #: mappress_map.php:368
205
  msgid "Copy of %s"
206
  msgstr ""
207
 
208
+ #: mappress_map.php:464
209
+ #: mappress_settings.php:504
210
+ #: mappress_settings.php:535
211
+ #: build/index_mappress_admin.js:1
212
+ msgid "MapPress"
213
  msgstr ""
214
 
215
+ #: mappress_poi.php:43
216
+ msgid "Invalid lat/lng coordinate: %s,%s"
217
  msgstr ""
218
 
219
+ #: mappress_settings.php:308
220
  #: build/index_mappress_admin.js:1
221
  msgid "Default"
222
  msgstr ""
223
 
224
+ #: mappress_settings.php:377
 
 
 
 
225
  msgid "Address line "
226
  msgstr ""
227
 
228
+ #: mappress_settings.php:378
229
  msgid "Latitude"
230
  msgstr ""
231
 
232
+ #: mappress_settings.php:378
233
  msgid "Longitude"
234
  msgstr ""
235
 
236
+ #: mappress_settings.php:378
237
  #: mappress_template.php:37
238
  #: build/index_mappress_admin.js:1
239
  msgid "Title"
240
  msgstr ""
241
 
242
+ #: mappress_settings.php:378
243
  #: mappress_template.php:34
244
  msgid "Body"
245
  msgstr ""
246
 
247
+ #: mappress_settings.php:378
248
  #: mappress_template.php:35
249
  #: build/index_mappress_admin.js:1
250
  msgid "Icon"
251
  msgstr ""
252
 
253
+ #: mappress_settings.php:378
254
  msgid "Zoom"
255
  msgstr ""
256
 
257
+ #: mappress_settings.php:486
258
  msgid "OK, you deserve it!"
259
  msgstr ""
260
 
261
+ #: mappress_settings.php:487
262
  msgid "Nope, maybe later"
263
  msgstr ""
264
 
265
+ #: mappress_settings.php:488
266
  msgid "I need help using the plugin"
267
  msgstr ""
268
 
269
+ #: mappress_settings.php:490
270
  msgid "Help Spread the Word"
271
  msgstr ""
272
 
273
+ #: mappress_settings.php:491
274
  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!"
275
  msgstr ""
276
 
277
+ #: mappress_settings.php:508
278
+ #: mappress_settings.php:539
 
279
  msgid "Get help"
280
  msgstr ""
281
 
282
+ #: mappress_settings.php:511
283
+ #: mappress_settings.php:542
284
  #: build/index_mappress_admin.js:1
285
  msgid "Your account"
286
  msgstr ""
287
 
288
+ #: mappress_settings.php:513
289
+ #: mappress_settings.php:544
290
  msgid "Upgrade to MapPress Pro"
291
  msgstr ""
292
 
325
  msgid "Your Location"
326
  msgstr ""
327
 
328
+ #: templates/map.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  msgid "List"
330
  msgstr ""
331
 
332
+ #: templates/map.php:57
333
  #: build/index_mappress_admin.js:1
334
  msgid "Map"
335
  msgstr ""
352
  msgstr ""
353
 
354
  #: templates_admin/editor.php:19
355
+ #: build/index_mappress_admin.js:1
356
  msgid "Visual"
357
  msgstr ""
358
 
359
  #: templates_admin/editor.php:19
360
+ #: build/index_mappress_admin.js:1
361
  msgid "HTML"
362
  msgstr ""
363
 
364
  #: templates_admin/editor.php:21
365
+ #: build/index_mappress_admin.js:1
366
  msgid "Add Media"
367
  msgstr ""
368
 
391
  msgstr ""
392
 
393
  #: build/index_mappress.js:1
 
394
  msgid "Filter"
395
  msgstr ""
396
 
412
  msgid "Enter an address, place, KML file URL, or lat,lng"
413
  msgstr ""
414
 
415
+ #: build/index_mappress.js:1
416
+ msgid "Traffic"
417
+ msgstr ""
418
+
419
+ #: build/index_mappress.js:1
420
+ msgid "Bicycling"
421
+ msgstr ""
422
+
423
+ #: build/index_mappress.js:1
424
+ msgid "Transit"
425
+ msgstr ""
426
+
427
+ #: build/index_mappress.js:1
428
+ msgid "Center map"
429
+ msgstr ""
430
+
431
+ #: build/index_mappress.js:1
432
+ msgid "Help"
433
+ msgstr ""
434
+
435
  #: build/index_mappress_admin.js:1
436
  msgid "Feedback"
437
  msgstr ""
536
  msgid "Open map library"
537
  msgstr ""
538
 
 
 
 
 
539
  #: build/index_mappress_admin.js:1
540
  msgid "Select icon"
541
  msgstr ""
676
  msgid "Insert a map"
677
  msgstr ""
678
 
679
+ #: build/index_mappress_admin.js:1
680
+ msgid "Maps for WordPress"
681
+ msgstr ""
682
+
683
  #: build/index_mappress_admin.js:1
684
  msgid "Sample Map"
685
  msgstr ""
1096
  msgid "Restrict searches to a bounding box (optional)"
1097
  msgstr ""
1098
 
1099
+ #: build/index_mappress_admin.js:1
1100
+ msgid "Mashup filters"
1101
+ msgstr ""
1102
+
1103
  #: build/index_mappress_admin.js:1
1104
  msgid "Filters position"
1105
  msgstr ""
1169
  msgstr ""
1170
 
1171
  #: build/index_mappress_admin.js:1
1172
+ msgid "Templates"
 
 
 
 
 
 
 
 
1173
  msgstr ""
1174
 
1175
  #: build/index_mappress_admin.js:1
1176
+ msgid "Custom templates"
1177
  msgstr ""
1178
 
1179
  #: build/index_mappress_admin.js:1
1180
+ msgid "Mashup thumbnails"
1181
  msgstr ""
1182
 
1183
  #: build/index_mappress_admin.js:1
1184
+ msgid "Popups"
1185
  msgstr ""
1186
 
1187
  #: build/index_mappress_admin.js:1
1188
+ msgid "POI lists"
1189
  msgstr ""
1190
 
1191
  #: build/index_mappress_admin.js:1
1192
+ msgid "Thumbnail size"
1193
  msgstr ""
1194
 
1195
  #: build/index_mappress_admin.js:1
1196
+ msgid "or"
1197
  msgstr ""
1198
 
1199
  #: build/index_mappress_admin.js:1
1200
+ msgid "Localization"
1201
  msgstr ""
1202
 
1203
  #: build/index_mappress_admin.js:1
1204
+ msgid "Language"
1205
  msgstr ""
1206
 
1207
  #: build/index_mappress_admin.js:1
1208
+ msgid "Language for searches and Google map controls"
1209
  msgstr ""
1210
 
1211
  #: build/index_mappress_admin.js:1
1212
+ msgid "Directions server"
1213
  msgstr ""
1214
 
1215
  #: build/index_mappress_admin.js:1
1216
+ msgid "Generate Maps from Custom Fields"
1217
  msgstr ""
1218
 
1219
  #: build/index_mappress_admin.js:1
1220
+ msgid "Custom fields"
1221
  msgstr ""
1222
 
1223
  #: build/index_mappress_admin.js:1
1224
+ msgid "Map field"
1225
  msgstr ""
1226
 
1227
  #: build/index_mappress_admin.js:1
1228
+ msgid "Custom field"
1229
  msgstr ""
1230
 
1231
  #: build/index_mappress_admin.js:1
1232
+ msgid "Post types"
1233
  msgstr ""
1234
 
1235
  #: build/index_mappress_admin.js:1
1236
+ msgid "Overwrite"
1237
  msgstr ""
1238
 
1239
  #: build/index_mappress_admin.js:1
1240
+ msgid "Overwrite maps when posts are saved"
1241
  msgstr ""
1242
 
1243
  #: build/index_mappress_admin.js:1
1244
+ msgid "Google Server API key"
1245
  msgstr ""
1246
 
1247
  #: build/index_mappress_admin.js:1
1248
+ msgid "Server API key for geocoding. Only required if client key is restricted by referrer."
1249
  msgstr ""
1250
 
1251
  #: build/index_mappress_admin.js:1
1252
+ msgid "Frontend Forms"
1253
  msgstr ""
1254
 
1255
  #: build/index_mappress_admin.js:1
1256
+ msgid "Advanced Custom Fields"
1257
  msgstr ""
1258
 
1259
  #: build/index_mappress_admin.js:1
1260
+ msgid "ACF field"
1261
  msgstr ""
1262
 
1263
  #: build/index_mappress_admin.js:1
1264
+ msgid "ACF map field to include on MapPress mashups"
1265
  msgstr ""
1266
 
1267
  #: build/index_mappress_admin.js:1
1268
+ msgid "To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section"
1269
  msgstr ""
1270
 
1271
  #: build/index_mappress_admin.js:1
1349
  msgstr ""
1350
 
1351
  #: build/index_mappress_admin.js:1
1352
+ msgid "Geocoding"
1353
  msgstr ""
1354
 
1355
  #: build/index_mappress_admin.js:1
1356
+ msgid "Geocode now"
1357
  msgstr ""
1358
 
1359
  #: build/index_mappress_admin.js:1
1360
+ msgid "New posts will be geocoded when they are published."
1361
  msgstr ""
1362
 
1363
  #: build/index_mappress_admin.js:1
1364
+ msgid "Use an online geocoding service for bulk geocoding (>100 items)."
1365
  msgstr ""
1366
 
1367
  #: build/index_mappress_admin.js:1
1368
+ msgid "No errors"
1369
  msgstr ""
1370
 
1371
  #: build/index_mappress_admin.js:1
1372
+ msgid "Geocoding errors"
1373
  msgstr ""
1374
 
1375
  #: build/index_mappress_admin.js:1
1384
  msgid "Unattached"
1385
  msgstr ""
1386
 
1387
+ #: build/index_mappress_admin.js:1
1388
+ msgid "Map restored"
1389
+ msgstr ""
1390
+
1391
  #: build/index_mappress_admin.js:1
1392
  msgid "Restore"
1393
  msgstr ""
1394
 
1395
+ #: build/index_mappress_admin.js:1
1396
+ msgid "Map deleted"
1397
+ msgstr ""
1398
+
1399
  #: build/index_mappress_admin.js:1
1400
  msgid "Delete Permanently"
1401
  msgstr ""
1408
  msgid "Insert into post"
1409
  msgstr ""
1410
 
1411
+ #: build/index_mappress_admin.js:1
1412
+ msgid "Map copied"
1413
+ msgstr ""
1414
+
1415
  #: build/index_mappress_admin.js:1
1416
  msgid "Copy"
1417
  msgstr ""
1418
 
1419
+ #: build/index_mappress_admin.js:1
1420
+ msgid "Map moved to trash"
1421
+ msgstr ""
1422
+
1423
+ #: build/index_mappress_admin.js:1
1424
+ msgid "Trash"
1425
+ msgstr ""
1426
+
1427
  #: build/index_mappress_admin.js:1
1428
  msgid "Detach"
1429
  msgstr ""
1430
 
1431
  #: build/index_mappress_admin.js:1
1432
+ msgid "Shortcode copied"
1433
  msgstr ""
1434
 
1435
  #: build/index_mappress_admin.js:1
1436
+ msgid "Add New"
1437
  msgstr ""
1438
 
1439
  #: build/index_mappress_admin.js:1
1440
+ msgid "Attached to post"
1441
  msgstr ""
1442
 
1443
  #: build/index_mappress_admin.js:1
1457
  msgstr ""
1458
 
1459
  #: build/index_mappress_admin.js:1
1460
+ msgid "Map %d saved"
 
 
 
 
1461
  msgstr ""
1462
 
1463
  #: build/index_mappress_admin.js:1
1484
  msgid "Center/Zoom"
1485
  msgstr ""
1486
 
1487
+ #: build/index_mappress_admin.js:1
1488
+ msgid "Viewport automatic"
1489
+ msgstr ""
1490
+
1491
  #: build/index_mappress_admin.js:1
1492
  msgid "Automatic"
1493
  msgstr ""
1494
 
1495
+ #: build/index_mappress_admin.js:1
1496
+ msgid "Viewport set"
1497
+ msgstr ""
1498
+
1499
  #: build/index_mappress_admin.js:1
1500
  msgid "Set"
1501
  msgstr ""
languages/texts.php CHANGED
@@ -39,13 +39,13 @@ __("Terrain");
39
  __("Hybrid");
40
  __("What's new");
41
  __("Version");
42
- __("MapPress");
43
- __("Untitled");
44
- __("Copy of %s");
45
  __("Map not found");
46
  __("Post not found");
 
 
 
 
47
  __("Default");
48
- __("Maps for WordPress");
49
  __("Address line ");
50
  __("Latitude");
51
  __("Longitude");
@@ -69,11 +69,6 @@ __("Results");
69
  __("%d of %d");
70
  __("Get Directions");
71
  __("Your Location");
72
- __("Menu");
73
- __("Center map");
74
- __("Traffic");
75
- __("Bicycling");
76
- __("Transit");
77
  __("List");
78
  __("Map");
79
  __("Continue reading");
@@ -93,6 +88,11 @@ __("Reset");
93
  __("Done");
94
  __("Search");
95
  __("Enter an address, place, KML file URL, or lat,lng");
 
 
 
 
 
96
  __("Feedback");
97
  __("contact me");
98
  __("Sorry to see you go! Need help?");
@@ -119,7 +119,6 @@ __("Map title");
119
  __("Map ID");
120
  __("No maps found");
121
  __("Open map library");
122
- __("Trash");
123
  __("Select icon");
124
  __("New icon");
125
  __("Custom icons");
@@ -155,6 +154,7 @@ __("Map Library");
155
  __("MapPress Map");
156
  __("Use the map library to create a new map or insert an existing map.");
157
  __("Insert a map");
 
158
  __("Sample Map");
159
  __("License");
160
  __("MapPress license key");
@@ -259,6 +259,7 @@ __("User location");
259
  __("Show user location on map");
260
  __("Bounding box");
261
  __("Restrict searches to a bounding box (optional)");
 
262
  __("Filters position");
263
  __("Top");
264
  __("POI list");
@@ -276,33 +277,31 @@ __("Name");
276
  __("Slug");
277
  __("Include");
278
  __("Exclude");
 
 
 
 
 
 
 
 
 
 
 
279
  __("Generate Maps from Custom Fields");
280
- __("Post types");
281
  __("Custom fields");
282
  __("Map field");
283
  __("Custom field");
 
284
  __("Overwrite");
285
  __("Overwrite maps when posts are saved");
286
  __("Google Server API key");
287
  __("Server API key for geocoding. Only required if client key is restricted by referrer.");
288
- __("No errors found");
289
- __("Geocoding errors");
290
  __("Frontend Forms");
291
  __("Advanced Custom Fields");
292
  __("ACF field");
293
  __("ACF map field to include on MapPress mashups");
294
  __("To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section");
295
- __("Templates");
296
- __("Custom templates");
297
- __("Mashup thumbnails");
298
- __("Popups");
299
- __("POI lists");
300
- __("Thumbnail size");
301
- __("or");
302
- __("Localization");
303
- __("Language");
304
- __("Language for searches and Google map controls");
305
- __("Directions server");
306
  __("Miscellaneous");
307
  __("Map sizes");
308
  __("Width");
@@ -323,37 +322,43 @@ __("Map list item");
323
  __("Mashup popup");
324
  __("Mashup list item");
325
  __("Editor");
326
- __("Map deleted");
327
- __("Map copied");
328
- __("Map %d saved");
329
- __("Map restored");
330
- __("Shortcode copied");
331
- __("Map moved to trash");
332
  __("Current post");
333
  __("Edit post");
334
  __("Unattached");
 
335
  __("Restore");
 
336
  __("Delete Permanently");
337
  __("Edit");
338
  __("Insert into post");
 
339
  __("Copy");
 
 
340
  __("Detach");
 
341
  __("Add New");
342
  __("Attached to post");
343
- __("Selected");
344
  __("post title, map title, or map id");
345
  __("ID");
346
  __("Attached to");
347
  __("Shortcode");
348
- __("Viewport automatic");
349
- __("Viewport set");
350
  __("Map settings");
351
  __("Style");
352
  __("Size");
353
  __("px, %, vw");
354
  __("px, %, vh");
355
  __("Center/Zoom");
 
356
  __("Automatic");
 
357
  __("Set");
358
  __("Style already exists, overwrite?");
359
  __("Please upgrade to MapPress Pro to use custom styles");
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 ");
50
  __("Latitude");
51
  __("Longitude");
69
  __("%d of %d");
70
  __("Get Directions");
71
  __("Your Location");
 
 
 
 
 
72
  __("List");
73
  __("Map");
74
  __("Continue reading");
88
  __("Done");
89
  __("Search");
90
  __("Enter an address, place, KML file URL, or lat,lng");
91
+ __("Traffic");
92
+ __("Bicycling");
93
+ __("Transit");
94
+ __("Center map");
95
+ __("Help");
96
  __("Feedback");
97
  __("contact me");
98
  __("Sorry to see you go! Need help?");
119
  __("Map ID");
120
  __("No maps found");
121
  __("Open map library");
 
122
  __("Select icon");
123
  __("New icon");
124
  __("Custom icons");
154
  __("MapPress Map");
155
  __("Use the map library to create a new map or insert an existing map.");
156
  __("Insert a map");
157
+ __("Maps for WordPress");
158
  __("Sample Map");
159
  __("License");
160
  __("MapPress license key");
259
  __("Show user location on map");
260
  __("Bounding box");
261
  __("Restrict searches to a bounding box (optional)");
262
+ __("Mashup filters");
263
  __("Filters position");
264
  __("Top");
265
  __("POI list");
277
  __("Slug");
278
  __("Include");
279
  __("Exclude");
280
+ __("Templates");
281
+ __("Custom templates");
282
+ __("Mashup thumbnails");
283
+ __("Popups");
284
+ __("POI lists");
285
+ __("Thumbnail size");
286
+ __("or");
287
+ __("Localization");
288
+ __("Language");
289
+ __("Language for searches and Google map controls");
290
+ __("Directions server");
291
  __("Generate Maps from Custom Fields");
 
292
  __("Custom fields");
293
  __("Map field");
294
  __("Custom field");
295
+ __("Post types");
296
  __("Overwrite");
297
  __("Overwrite maps when posts are saved");
298
  __("Google Server API key");
299
  __("Server API key for geocoding. Only required if client key is restricted by referrer.");
 
 
300
  __("Frontend Forms");
301
  __("Advanced Custom Fields");
302
  __("ACF field");
303
  __("ACF map field to include on MapPress mashups");
304
  __("To generate MapPress maps from ACF fields, leave this blank and use the Geocoding section");
 
 
 
 
 
 
 
 
 
 
 
305
  __("Miscellaneous");
306
  __("Map sizes");
307
  __("Width");
322
  __("Mashup popup");
323
  __("Mashup list item");
324
  __("Editor");
325
+ __("Geocoding");
326
+ __("Geocode now");
327
+ __("New posts will be geocoded when they are published.");
328
+ __("Use an online geocoding service for bulk geocoding (>100 items).");
329
+ __("No errors");
330
+ __("Geocoding errors");
331
  __("Current post");
332
  __("Edit post");
333
  __("Unattached");
334
+ __("Map restored");
335
  __("Restore");
336
+ __("Map deleted");
337
  __("Delete Permanently");
338
  __("Edit");
339
  __("Insert into post");
340
+ __("Map copied");
341
  __("Copy");
342
+ __("Map moved to trash");
343
+ __("Trash");
344
  __("Detach");
345
+ __("Shortcode copied");
346
  __("Add New");
347
  __("Attached to post");
 
348
  __("post title, map title, or map id");
349
  __("ID");
350
  __("Attached to");
351
  __("Shortcode");
352
+ __("Map %d saved");
 
353
  __("Map settings");
354
  __("Style");
355
  __("Size");
356
  __("px, %, vw");
357
  __("px, %, vh");
358
  __("Center/Zoom");
359
+ __("Viewport automatic");
360
  __("Automatic");
361
+ __("Viewport set");
362
  __("Set");
363
  __("Style already exists, overwrite?");
364
  __("Please upgrade to MapPress Pro to use custom styles");
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.74.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
@@ -37,7 +37,7 @@ if (is_dir(dirname( __FILE__ ) . '/pro')) {
37
  }
38
 
39
  class Mappress {
40
- const VERSION = '2.74.3';
41
 
42
  static
43
  $baseurl,
@@ -164,7 +164,7 @@ class Mappress {
164
 
165
  if ($hook) {
166
  self::styles_enqueue('backend');
167
- if ($hook == $pages['main']) {
168
  self::scripts_enqueue('settings');
169
  } else if (in_array($hook, $pages) || in_array($hook, $admin_pages)) {
170
  self::scripts_enqueue('backend');
@@ -523,7 +523,7 @@ class Mappress {
523
  }
524
  }
525
 
526
- // Add a type to all filters
527
  if ($current_version && $current_version < '2.73') {
528
  foreach(self::$options->filters as &$filter) {
529
  if (empty($filter['type']))
@@ -718,20 +718,20 @@ class Mappress {
718
  $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/build" : self::$baseurl . '/build';
719
 
720
  // Leaflet
721
- wp_register_script("mappress-leaflet", 'https://unpkg.com/leaflet@1.7.1/dist/leaflet.js', null, '1.7.1', $footer);
722
- wp_register_script("mappress-omnivore", $lib . "/leaflet-omnivore.min.js", null, '0.3.1', $footer);
723
 
724
  // Google
725
  wp_register_script("mappress-google", self::scripts_google_tag(), null, null, $footer);
726
 
727
  // Clustering ( https://github.com/googlemaps/js-markerclustererplus | https://github.com/Leaflet/Leaflet.markercluster )
728
- wp_register_script('mappress-markerclustererplus', "https://unpkg.com/@googlemaps/markerclustererplus/dist/index.min.js", null, '1.2.0', $footer);
729
- wp_register_script('mappress-leaflet-markercluster', $lib . "/Leaflet.markercluster/leaflet.markercluster.js", null, '1.4.1', $footer);
730
 
731
  // Dependencies
732
  $deps = array('jquery', 'underscore', 'wp-element', 'wp-i18n');
733
  if (self::$options->engine == 'leaflet')
734
- $deps = array_merge(array('mappress-leaflet', 'mappress-omnivore'), $deps);
735
  if (self::$options->engine != 'leaflet' || self::$options->geocoder == 'google')
736
  $deps[] = 'mappress-google';
737
  if (self::$options->clustering)
@@ -952,7 +952,7 @@ class Mappress {
952
  $transient = (isset($atts['transient'])) ? $atts['transient'] : null;
953
 
954
  // URL booleans are string integers, e.g. "0" so correct them
955
- foreach(array('clustering', 'editable', 'embed', 'initialOpenDirections', 'initialOpenInfo', 'poiList') as $key) {
956
  if (isset($atts[$key]))
957
  $atts[$key] = ($atts[$key] == "1") ? true : false;
958
  }
@@ -1059,6 +1059,25 @@ class Mappress {
1059
  return $content . $shortcodes;
1060
  }
1061
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1062
  /**
1063
  * Scripts & styles for frontend
1064
  * CSS is loaded from: child theme, theme, or plugin directory
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.75
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
37
  }
38
 
39
  class Mappress {
40
+ const VERSION = '2.75';
41
 
42
  static
43
  $baseurl,
164
 
165
  if ($hook) {
166
  self::styles_enqueue('backend');
167
+ if (isset($pages['main']) && $hook == $pages['main']) {
168
  self::scripts_enqueue('settings');
169
  } else if (in_array($hook, $pages) || in_array($hook, $admin_pages)) {
170
  self::scripts_enqueue('backend');
523
  }
524
  }
525
 
526
+ // 2.73 Add a type to all filters
527
  if ($current_version && $current_version < '2.73') {
528
  foreach(self::$options->filters as &$filter) {
529
  if (empty($filter['type']))
718
  $js = ($dev) ? "http://localhost/$dev/wp-content/plugins/mappress-google-maps-for-wordpress/build" : self::$baseurl . '/build';
719
 
720
  // Leaflet
721
+ wp_register_script("mappress-leaflet", self::unpkg('leaflet', 'leaflet.js'), null, null, $footer);
722
+ wp_register_script("mappress-leaflet-omnivore", self::unpkg('leaflet-omnivore', 'leaflet-omnivore.min.js'), null, null, $footer);
723
 
724
  // Google
725
  wp_register_script("mappress-google", self::scripts_google_tag(), null, null, $footer);
726
 
727
  // Clustering ( https://github.com/googlemaps/js-markerclustererplus | https://github.com/Leaflet/Leaflet.markercluster )
728
+ wp_register_script('mappress-markerclustererplus', self::unpkg('markerclustererplus', 'index.min.js'), null, null, $footer);
729
+ wp_register_script('mappress-leaflet-markercluster', self::unpkg('leaflet.markercluster', 'leaflet.markercluster.js'), null, null, $footer);
730
 
731
  // Dependencies
732
  $deps = array('jquery', 'underscore', 'wp-element', 'wp-i18n');
733
  if (self::$options->engine == 'leaflet')
734
+ $deps = array_merge(array('mappress-leaflet', 'mappress-leaflet-omnivore'), $deps);
735
  if (self::$options->engine != 'leaflet' || self::$options->geocoder == 'google')
736
  $deps[] = 'mappress-google';
737
  if (self::$options->clustering)
952
  $transient = (isset($atts['transient'])) ? $atts['transient'] : null;
953
 
954
  // URL booleans are string integers, e.g. "0" so correct them
955
+ foreach(array('clustering', 'embed', 'initialOpenDirections', 'initialOpenInfo', 'poiList') as $key) {
956
  if (isset($atts[$key]))
957
  $atts[$key] = ($atts[$key] == "1") ? true : false;
958
  }
1059
  return $content . $shortcodes;
1060
  }
1061
 
1062
+ static function unpkg($package, $filename) {
1063
+ $urls = array(
1064
+ 'leaflet' => 'https://unpkg.com/leaflet@%s/dist',
1065
+ 'markerclustererplus' => 'https://unpkg.com/@googlemaps/markerclustererplus@%s/dist',
1066
+ 'leaflet.markercluster' => 'https://unpkg.com/leaflet.markercluster@%s/dist',
1067
+ 'leaflet-omnivore' => 'https://unpkg.com/leaflet-omnivore@%s'
1068
+ );
1069
+ $versions = array(
1070
+ 'leaflet' => '1.7.1',
1071
+ 'markerclustererplus' => '1.2.10',
1072
+ 'leaflet.markercluster' => '1.5.3',
1073
+ 'leaflet-omnivore' => '0.3.4'
1074
+ );
1075
+
1076
+ $url = $urls[$package];
1077
+ $version = $versions[$package];
1078
+ return sprintf($url, $version) . "/$filename";
1079
+ }
1080
+
1081
  /**
1082
  * Scripts & styles for frontend
1083
  * CSS is loaded from: child theme, theme, or plugin directory
mappress_map.php CHANGED
@@ -3,7 +3,6 @@ class Mappress_Map extends Mappress_Obj {
3
  var $alignment,
4
  $center,
5
  $classname,
6
- $editable,
7
  $embed,
8
  $height,
9
  $hideEmpty,
@@ -39,7 +38,7 @@ class Mappress_Map extends Mappress_Obj {
39
 
40
  // Convert POIs from arrays to objects if needed
41
  foreach((array)$this->pois as $index => $poi) {
42
- if (is_array($poi))
43
  $this->pois[$index] = new Mappress_Poi($poi);
44
  }
45
  }
@@ -48,6 +47,7 @@ class Mappress_Map extends Mappress_Obj {
48
  global $wpdb;
49
 
50
  add_action('deleted_post', array(__CLASS__, 'deleted_post'));
 
51
  add_action('wp_ajax_mapp_delete', array(__CLASS__, 'ajax_delete'));
52
  add_action('wp_ajax_mapp_duplicate', array(__CLASS__, 'ajax_duplicate'));
53
  add_action('wp_ajax_mapp_find', array(__CLASS__, 'ajax_find'));
@@ -56,7 +56,6 @@ class Mappress_Map extends Mappress_Obj {
56
  add_action('wp_ajax_nopriv_mapp_get_post', array(__CLASS__, 'ajax_get_post'));
57
  add_action('wp_ajax_mapp_mutate', array(__CLASS__, 'ajax_mutate'));
58
  add_action('wp_ajax_mapp_save', array(__CLASS__, 'ajax_save'));
59
-
60
  add_action('media_buttons', array(__CLASS__, 'media_buttons'));
61
 
62
  // Tables
@@ -85,25 +84,21 @@ class Mappress_Map extends Mappress_Obj {
85
  $wpdb->show_errors(false);
86
  }
87
 
88
- static function media_buttons($editor_id) {
89
- $button = sprintf("<button type='button' class='button wp-media-buttons-icon mapp-mce-button'><span class='dashicons dashicons-location'></span>%s</button>", __('MapPress', 'mappress-google-maps-for-wordpress'));
90
- echo "<div class='mapp-mce'>$button</div>";
91
- }
92
 
93
- static function duplicate($mapid, $postid) {
94
- $map = self::get($mapid);
95
- if (!$map)
96
- return null;
97
 
98
- $title = ($map->title) ? $map->title : __('Untitled', 'mappress-google-maps-for-wordpress');
99
- $map->title = sprintf(__('Copy of %s', 'mappress-google-maps-for-wordpress'), $title);
 
100
 
101
- $map->postid = $postid;
102
- $map->mapid = null;
103
- $map->metaKey = null; // Map is no longer automatic
104
 
105
- $result = $map->save();
106
- return ($result) ? $map : null;
107
  }
108
 
109
  static function ajax_duplicate() {
@@ -113,7 +108,6 @@ class Mappress_Map extends Mappress_Obj {
113
  if (!current_user_can('edit_posts'))
114
  Mappress::ajax_response('Not authorized');
115
 
116
-
117
  $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
118
  $postid = (isset($_POST['postid'])) ? $_POST['postid'] : null;
119
 
@@ -127,41 +121,6 @@ class Mappress_Map extends Mappress_Obj {
127
  Mappress::ajax_response('Internal error when copying');
128
  }
129
 
130
- static function find($args) {
131
- global $wpdb;
132
-
133
- $maps_table = $wpdb->prefix . 'mappress_maps';
134
- $posts_table = $wpdb->prefix . 'mappress_posts';
135
-
136
- $sql = "SELECT SQL_CALC_FOUND_ROWS $maps_table.mapid, $maps_table.obj, $posts_table.postid, $wpdb->posts.post_status, $wpdb->posts.post_title "
137
- . " FROM $maps_table "
138
- . " INNER JOIN $posts_table ON ($posts_table.mapid = $maps_table.mapid)"
139
- . " LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID = $posts_table.postid)"
140
- ;
141
- $results = $wpdb->get_results($sql);
142
-
143
- $items = array();
144
- foreach($results as $result) {
145
- // Only check if map is attached to a post (postid > 0)
146
- if ($result->postid) {
147
- if (!current_user_can('edit_post', $result->postid))
148
- continue;
149
- if (in_array($result->post_status, array('auto-draft', 'inherit')))
150
- continue;
151
- }
152
-
153
- $mapdata = unserialize($result->obj);
154
- $items[] = array(
155
- 'mapid' => $result->mapid,
156
- 'map_title' => $mapdata->title,
157
- 'postid' => $result->postid,
158
- 'post_title' => $result->post_title,
159
- 'status' => $mapdata->status
160
- );
161
- }
162
- return $items;
163
- }
164
-
165
  static function ajax_find() {
166
  check_ajax_referer('mappress', 'nonce');
167
  ob_start();
@@ -171,27 +130,6 @@ class Mappress_Map extends Mappress_Obj {
171
  Mappress::ajax_response('OK', self::find($_GET));
172
  }
173
 
174
- /**
175
- * Get a map. Output is 'raw' or 'object'
176
- */
177
- static function get($mapid) {
178
- global $wpdb;
179
- $maps_table = $wpdb->prefix . 'mappress_maps';
180
- $posts_table = $wpdb->prefix . 'mappress_posts';
181
-
182
- $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";
183
- $result = $wpdb->get_row($wpdb->prepare($sql, $mapid));
184
-
185
- if (!$result)
186
- return false;
187
-
188
- // Read the map data and construct a new map from it
189
- $mapdata = unserialize($result->obj);
190
- $mapdata->postid = $result->postid;
191
- $mapdata->mapid = $result->mapid;
192
- return new Mappress_Map($mapdata);
193
- }
194
-
195
  static function ajax_get() {
196
  check_ajax_referer('mappress', 'nonce');
197
  ob_start();
@@ -203,35 +141,6 @@ class Mappress_Map extends Mappress_Obj {
203
  Mappress::ajax_response('OK', $map);
204
  }
205
 
206
- /**
207
- * Get list of mapids for a post or all maps
208
- *
209
- * @return array of mapids | empty array
210
- *
211
- */
212
- static function get_list($postid = null, $output = 'objects') {
213
- global $wpdb;
214
- $posts_table = $wpdb->prefix . 'mappress_posts';
215
-
216
- $where = ($postid) ? $wpdb->prepare("WHERE postid = %d", $postid) : '';
217
-
218
- $mapids = $wpdb->get_col("SELECT mapid FROM $posts_table $where");
219
- if (!$mapids)
220
- return array();
221
-
222
- if ($output == 'ids') {
223
- return $mapids;
224
- } else {
225
- $maps = array();
226
- foreach($mapids as $mapid) {
227
- $map = Mappress_Map::get($mapid);
228
- if ($map)
229
- $maps[] = $map;
230
- }
231
- return $maps;
232
- }
233
- }
234
-
235
  static function ajax_get_post() {
236
  global $post;
237
 
@@ -248,45 +157,26 @@ class Mappress_Map extends Mappress_Obj {
248
  die($html);
249
  }
250
 
251
- function save() {
252
  global $wpdb;
253
- $maps_table = $wpdb->prefix . 'mappress_maps';
254
  $posts_table = $wpdb->prefix . 'mappress_posts';
255
 
256
- // Apply wpautop to POI bodies
257
- foreach($this->pois as &$poi)
258
- $poi->body = wpautop($poi->body);
259
-
260
- // Make sure there's a postid
261
- if (is_null($this->postid))
262
- return false;
263
-
264
- $map = serialize($this);
265
-
266
- // Update map
267
- if (!$this->mapid) {
268
- // If no ID then autonumber
269
- $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (obj) VALUES(%s)", $map));
270
- $this->mapid = $wpdb->get_var("SELECT LAST_INSERT_ID()");
271
- } else {
272
- // Id provided, so insert or update
273
- $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (mapid, obj) VALUES(%d, '%s') ON DUPLICATE KEY UPDATE obj = %s", $this->mapid, $map, $map));
274
- }
275
 
276
- if ($result === false || !$this->mapid)
277
- return false;
278
 
279
- // Delete any existing post assignment to prevent multiple attachment
280
- $wpdb->query($wpdb->prepare("DELETE FROM $posts_table WHERE mapid = %d", $this->mapid));
281
 
282
- $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,
283
- $this->postid, $this->mapid));
284
 
285
- if ($result === false)
286
- return false;
 
287
 
288
- $wpdb->query("COMMIT");
289
- return true;
290
  }
291
 
292
  static function ajax_save() {
@@ -313,6 +203,59 @@ class Mappress_Map extends Mappress_Obj {
313
  Mappress::ajax_response('OK', $map->mapid);
314
  }
315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  /**
317
  * Delete a map and all of its post assignments
318
  *
@@ -328,67 +271,10 @@ class Mappress_Map extends Mappress_Obj {
328
  if ($result === false)
329
  return false;
330
 
331
- // Don't delete the actual map data
332
- // $result = $wpdb->query($wpdb->prepare("DELETE FROM $maps_table WHERE mapid = %d", $mapid));
333
- // if ($result === false)
334
- // return false;
335
-
336
  $wpdb->query("COMMIT");
337
  return true;
338
  }
339
 
340
- static function ajax_delete() {
341
- check_ajax_referer('mappress', 'nonce');
342
-
343
- if (!current_user_can('edit_posts'))
344
- Mappress::ajax_response('Not authorized');
345
-
346
- ob_start();
347
- $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
348
- $result = Mappress_Map::delete($mapid);
349
-
350
- if (!$result)
351
- Mappress::ajax_response("Internal error when deleting map ID '$mapid'!");
352
-
353
- do_action('mappress_map_delete', $mapid); // Use for your own developments
354
- Mappress::ajax_response('OK');
355
- }
356
-
357
- static function mutate($mapid, $mapdata) {
358
- if (!$mapid || !$mapdata)
359
- return false;
360
-
361
- $map = self::get($mapid, true);
362
- if (!$map)
363
- return false;
364
-
365
- $map->update($mapdata);
366
- $result = $map->save();
367
- return ($result) ? true : false;
368
- }
369
-
370
- static function ajax_mutate() {
371
- global $wpdb;
372
- $posts_table = $wpdb->prefix . 'mappress_posts';
373
-
374
- check_ajax_referer('mappress', 'nonce');
375
-
376
- if (!current_user_can('edit_posts'))
377
- Mappress::ajax_response('Not authorized');
378
-
379
- ob_start();
380
-
381
- $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
382
- $mapdata = (isset($_POST['mapdata'])) ? $_POST['mapdata'] : null;
383
-
384
- $result = self::mutate($mapid, $mapdata);
385
- if (!$result)
386
- Mappress::ajax_response('Internal error when mutating, your data was not saved!');
387
-
388
- // Return updated map
389
- Mappress::ajax_response('OK', $result);
390
- }
391
-
392
  /**
393
  * When a post is deleted, trash attached maps
394
  */
@@ -473,6 +359,125 @@ class Mappress_Map extends Mappress_Obj {
473
  return $html;
474
  }
475
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
476
  /**
477
  * Prepare map for output
478
  *
@@ -503,67 +508,69 @@ class Mappress_Map extends Mappress_Obj {
503
  $this->autoicons();
504
  }
505
 
506
- /**
507
- * Autoicons
508
- */
509
- function autoicons() {
510
- global $post;
511
-
512
- // Only 1 rule allowed
513
- $rule = (object) wp_parse_args(Mappress::$options->autoicons, array('key' => null, 'values' => array()));
514
 
515
- foreach($rule->values as $value => $iconid) {
516
- // Get all post IDs that match the current key & value
517
- if ($rule->key == 'post_type') {
518
- $wpq = new WP_Query(array('post_type' => $value, 'fields' => 'ids', 'posts_per_page' => -1));
519
- $postids = $wpq->posts;
520
- } else {
521
- $term = get_term_by('slug', $value, $rule->key);
522
- if (!is_object($term))
523
- continue;
524
 
525
- $objects = get_objects_in_term($term->term_id, $rule->key);
526
- if (!is_array($objects))
527
- continue;
528
 
529
- $postids = array_keys(array_flip($objects));
530
- }
531
 
532
- // Check each post ID to see if it's in the map's POIs, if so set iconid
533
- $current_post = ($post) ? $post->ID : null;
534
- foreach($this->pois as &$poi) {
535
- $postid = ($poi->postid) ? $poi->postid : $current_post;
536
- if (in_array($postid, $postids))
537
- $poi->iconid = $iconid;
538
- }
 
539
  }
540
 
541
- // Filter
542
- foreach($this->pois as &$poi)
543
- $poi->iconid = apply_filters('mappress_poi_iconid', $poi->iconid, $poi);
 
 
 
 
 
 
 
 
 
 
 
544
  }
545
 
546
  /**
547
  * Default action to sort the map
 
548
  *
549
  * @param mixed $map
550
  */
551
  function sort_pois() {
552
- usort($this->pois, array(__CLASS__, 'compare_title'));
 
 
553
  do_action('mappress_sort_pois', $this);
554
  }
555
 
556
  /**
557
- * Compare two POIs by title
558
- * HTML tags are stripped - until URL is separated from title this is the only way to
559
- * sort titles with HTML
560
- *
561
- * @param mixed $a
562
- * @param mixed $b
563
- * @return mixed
564
  */
565
- static function compare_title($a, $b) {
566
- return strcasecmp(strip_tags($a->title), strip_tags($b->title));
 
 
 
 
567
  }
568
  }
569
  ?>
3
  var $alignment,
4
  $center,
5
  $classname,
 
6
  $embed,
7
  $height,
8
  $hideEmpty,
38
 
39
  // Convert POIs from arrays to objects if needed
40
  foreach((array)$this->pois as $index => $poi) {
41
+ if (!$poi instanceof Mappress_Poi)
42
  $this->pois[$index] = new Mappress_Poi($poi);
43
  }
44
  }
47
  global $wpdb;
48
 
49
  add_action('deleted_post', array(__CLASS__, 'deleted_post'));
50
+ add_action('trashed_post', array(__CLASS__, 'trashed_post'));
51
  add_action('wp_ajax_mapp_delete', array(__CLASS__, 'ajax_delete'));
52
  add_action('wp_ajax_mapp_duplicate', array(__CLASS__, 'ajax_duplicate'));
53
  add_action('wp_ajax_mapp_find', array(__CLASS__, 'ajax_find'));
56
  add_action('wp_ajax_nopriv_mapp_get_post', array(__CLASS__, 'ajax_get_post'));
57
  add_action('wp_ajax_mapp_mutate', array(__CLASS__, 'ajax_mutate'));
58
  add_action('wp_ajax_mapp_save', array(__CLASS__, 'ajax_save'));
 
59
  add_action('media_buttons', array(__CLASS__, 'media_buttons'));
60
 
61
  // Tables
84
  $wpdb->show_errors(false);
85
  }
86
 
87
+ static function ajax_delete() {
88
+ check_ajax_referer('mappress', 'nonce');
 
 
89
 
90
+ if (!current_user_can('edit_posts'))
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)
98
+ Mappress::ajax_response("Internal error when deleting map ID '$mapid'!");
 
99
 
100
+ do_action('mappress_map_delete', $mapid); // Use for your own developments
101
+ Mappress::ajax_response('OK');
102
  }
103
 
104
  static function ajax_duplicate() {
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
 
121
  Mappress::ajax_response('Internal error when copying');
122
  }
123
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  static function ajax_find() {
125
  check_ajax_referer('mappress', 'nonce');
126
  ob_start();
130
  Mappress::ajax_response('OK', self::find($_GET));
131
  }
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  static function ajax_get() {
134
  check_ajax_referer('mappress', 'nonce');
135
  ob_start();
141
  Mappress::ajax_response('OK', $map);
142
  }
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  static function ajax_get_post() {
145
  global $post;
146
 
157
  die($html);
158
  }
159
 
160
+ static function ajax_mutate() {
161
  global $wpdb;
 
162
  $posts_table = $wpdb->prefix . 'mappress_posts';
163
 
164
+ check_ajax_referer('mappress', 'nonce');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
+ if (!current_user_can('edit_posts'))
167
+ Mappress::ajax_response('Not authorized');
168
 
169
+ ob_start();
 
170
 
171
+ $mapid = (isset($_POST['mapid'])) ? $_POST['mapid'] : null;
172
+ $mapdata = (isset($_POST['mapdata'])) ? $_POST['mapdata'] : null;
173
 
174
+ $result = self::mutate($mapid, $mapdata);
175
+ if (!$result)
176
+ Mappress::ajax_response('Internal error when mutating, your data was not saved!');
177
 
178
+ // Return updated map
179
+ Mappress::ajax_response('OK', $result);
180
  }
181
 
182
  static function ajax_save() {
203
  Mappress::ajax_response('OK', $map->mapid);
204
  }
205
 
206
+ /**
207
+ * Autoicons
208
+ */
209
+ function autoicons() {
210
+ global $post;
211
+
212
+ // Only 1 rule allowed
213
+ $rule = (object) wp_parse_args(Mappress::$options->autoicons, array('key' => null, 'values' => array()));
214
+
215
+ foreach($rule->values as $value => $iconid) {
216
+ // Get all post IDs that match the current key & value
217
+ if ($rule->key == 'post_type') {
218
+ $wpq = new WP_Query(array('post_type' => $value, 'fields' => 'ids', 'posts_per_page' => -1));
219
+ $postids = $wpq->posts;
220
+ } else {
221
+ $term = get_term_by('slug', $value, $rule->key);
222
+ if (!is_object($term))
223
+ continue;
224
+
225
+ $objects = get_objects_in_term($term->term_id, $rule->key);
226
+ if (!is_array($objects))
227
+ continue;
228
+
229
+ $postids = array_keys(array_flip($objects));
230
+ }
231
+
232
+ // Check each post ID to see if it's in the map's POIs, if so set iconid
233
+ $current_post = ($post) ? $post->ID : null;
234
+ foreach($this->pois as &$poi) {
235
+ $postid = ($poi->postid) ? $poi->postid : $current_post;
236
+ if (in_array($postid, $postids))
237
+ $poi->iconid = $iconid;
238
+ }
239
+ }
240
+
241
+ // Filter
242
+ foreach($this->pois as &$poi)
243
+ $poi->iconid = apply_filters('mappress_poi_iconid', $poi->iconid, $poi);
244
+ }
245
+
246
+ /**
247
+ * Compare two POIs by title
248
+ * HTML tags are stripped - until URL is separated from title this is the only way to
249
+ * sort titles with HTML
250
+ *
251
+ * @param mixed $a
252
+ * @param mixed $b
253
+ * @return mixed
254
+ */
255
+ static function compare_title($a, $b) {
256
+ return strcasecmp(strip_tags($a->title), strip_tags($b->title));
257
+ }
258
+
259
  /**
260
  * Delete a map and all of its post assignments
261
  *
271
  if ($result === false)
272
  return false;
273
 
 
 
 
 
 
274
  $wpdb->query("COMMIT");
275
  return true;
276
  }
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  /**
279
  * When a post is deleted, trash attached maps
280
  */
359
  return $html;
360
  }
361
 
362
+ static function duplicate($mapid, $postid) {
363
+ $map = self::get($mapid);
364
+ if (!$map)
365
+ return null;
366
+
367
+ $title = ($map->title) ? $map->title : __('Untitled', 'mappress-google-maps-for-wordpress');
368
+ $map->title = sprintf(__('Copy of %s', 'mappress-google-maps-for-wordpress'), $title);
369
+
370
+ $map->postid = $postid;
371
+ $map->mapid = null;
372
+ $map->metaKey = null; // Map is no longer automatic
373
+
374
+ $result = $map->save();
375
+ return ($result) ? $map : null;
376
+ }
377
+
378
+ static function find($args) {
379
+ global $wpdb;
380
+
381
+ $maps_table = $wpdb->prefix . 'mappress_maps';
382
+ $posts_table = $wpdb->prefix . 'mappress_posts';
383
+
384
+ $sql = "SELECT SQL_CALC_FOUND_ROWS $maps_table.mapid, $maps_table.obj, $posts_table.postid, $wpdb->posts.post_status, $wpdb->posts.post_title "
385
+ . " FROM $maps_table "
386
+ . " INNER JOIN $posts_table ON ($posts_table.mapid = $maps_table.mapid)"
387
+ . " LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID = $posts_table.postid)"
388
+ ;
389
+ $results = $wpdb->get_results($sql);
390
+
391
+ $items = array();
392
+ foreach($results as $result) {
393
+ // Only check if map is attached to a post (postid > 0)
394
+ if ($result->postid) {
395
+ if (!current_user_can('edit_post', $result->postid))
396
+ continue;
397
+ if (in_array($result->post_status, array('auto-draft', 'inherit')))
398
+ continue;
399
+ }
400
+
401
+ $mapdata = unserialize($result->obj);
402
+ $items[] = array(
403
+ 'mapid' => $result->mapid,
404
+ 'title' => $mapdata->title,
405
+ 'postid' => $result->postid,
406
+ 'post_title' => $result->post_title,
407
+ 'status' => $mapdata->status
408
+ );
409
+ }
410
+ return $items;
411
+ }
412
+
413
+ /**
414
+ * Get a map. Output is 'raw' or 'object'
415
+ */
416
+ static function get($mapid) {
417
+ global $wpdb;
418
+ $maps_table = $wpdb->prefix . 'mappress_maps';
419
+ $posts_table = $wpdb->prefix . 'mappress_posts';
420
+
421
+ $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";
422
+ $result = $wpdb->get_row($wpdb->prepare($sql, $mapid));
423
+
424
+ if (!$result)
425
+ return false;
426
+
427
+ // Read the map data and construct a new map from it
428
+ $mapdata = unserialize($result->obj);
429
+ $mapdata->postid = $result->postid;
430
+ $mapdata->mapid = $result->mapid;
431
+ return new Mappress_Map($mapdata);
432
+ }
433
+
434
+ /**
435
+ * Get list of mapids for a post or all maps
436
+ *
437
+ * @return array of mapids | empty array
438
+ *
439
+ */
440
+ static function get_list($postid = null, $output = 'objects') {
441
+ global $wpdb;
442
+ $posts_table = $wpdb->prefix . 'mappress_posts';
443
+
444
+ $where = ($postid) ? $wpdb->prepare("WHERE postid = %d", $postid) : '';
445
+
446
+ $mapids = $wpdb->get_col("SELECT mapid FROM $posts_table $where");
447
+ if (!$mapids)
448
+ return array();
449
+
450
+ if ($output == 'ids') {
451
+ return $mapids;
452
+ } else {
453
+ $maps = array();
454
+ foreach($mapids as $mapid) {
455
+ $map = Mappress_Map::get($mapid);
456
+ if ($map)
457
+ $maps[] = $map;
458
+ }
459
+ return $maps;
460
+ }
461
+ }
462
+
463
+ static function media_buttons($editor_id) {
464
+ $button = sprintf("<button type='button' class='button wp-media-buttons-icon mapp-classic-button'><span class='dashicons dashicons-location'></span>%s</button>", __('MapPress', 'mappress-google-maps-for-wordpress'));
465
+ echo "<div class='mapp-classic'>$button</div>";
466
+ }
467
+
468
+ static function mutate($mapid, $mapdata) {
469
+ if (!$mapid || !$mapdata)
470
+ return false;
471
+
472
+ $map = self::get($mapid, true);
473
+ if (!$map)
474
+ return false;
475
+
476
+ $map->update($mapdata);
477
+ $result = $map->save();
478
+ return ($result) ? true : false;
479
+ }
480
+
481
  /**
482
  * Prepare map for output
483
  *
508
  $this->autoicons();
509
  }
510
 
511
+ function save() {
512
+ global $wpdb;
513
+ $maps_table = $wpdb->prefix . 'mappress_maps';
514
+ $posts_table = $wpdb->prefix . 'mappress_posts';
 
 
 
 
515
 
516
+ // Apply wpautop to POI bodies
517
+ foreach($this->pois as &$poi)
518
+ $poi->body = wpautop($poi->body);
 
 
 
 
 
 
519
 
520
+ // Make sure there's a postid
521
+ if (is_null($this->postid))
522
+ return false;
523
 
524
+ $map = serialize($this);
 
525
 
526
+ // Update map
527
+ if (!$this->mapid) {
528
+ // If no ID then autonumber
529
+ $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (obj) VALUES(%s)", $map));
530
+ $this->mapid = $wpdb->get_var("SELECT LAST_INSERT_ID()");
531
+ } else {
532
+ // Id provided, so insert or update
533
+ $result = $wpdb->query($wpdb->prepare("INSERT INTO $maps_table (mapid, obj) VALUES(%d, '%s') ON DUPLICATE KEY UPDATE obj = %s", $this->mapid, $map, $map));
534
  }
535
 
536
+ if ($result === false || !$this->mapid)
537
+ return false;
538
+
539
+ // Delete any existing post assignment to prevent multiple attachment
540
+ $wpdb->query($wpdb->prepare("DELETE FROM $posts_table WHERE mapid = %d", $this->mapid));
541
+
542
+ $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,
543
+ $this->postid, $this->mapid));
544
+
545
+ if ($result === false)
546
+ return false;
547
+
548
+ $wpdb->query("COMMIT");
549
+ return true;
550
  }
551
 
552
  /**
553
  * Default action to sort the map
554
+ * Titles are compared with HTML stripped
555
  *
556
  * @param mixed $map
557
  */
558
  function sort_pois() {
559
+ usort($this->pois, function($a, $b) {
560
+ return strcasecmp(strip_tags($a->title), strip_tags($b->title));
561
+ });
562
  do_action('mappress_sort_pois', $this);
563
  }
564
 
565
  /**
566
+ * When a post is trashed, trash attached maps
 
 
 
 
 
 
567
  */
568
+ static function trashed_post($postid) {
569
+ $mapids = self::get_list($postid, 'ids');
570
+ $result = true;
571
+ foreach($mapids as $mapid)
572
+ $result = $result && self::mutate($mapid, array('status' => 'trashed'));
573
+ return $result;
574
  }
575
  }
576
  ?>
mappress_poi.php CHANGED
@@ -4,11 +4,11 @@ class Mappress_Poi extends Mappress_Obj {
4
  $body = '',
5
  $correctedAddress,
6
  $iconid,
 
7
  $point = array('lat' => 0, 'lng' => 0),
8
  $poly,
9
  $postid,
10
  $props = array(),
11
- $kml,
12
  $thumbnail,
13
  $title = '',
14
  $type,
@@ -34,7 +34,14 @@ class Mappress_Poi extends Mappress_Obj {
34
  return new WP_Error('geocode', 'MapPress Pro required for geocoding');
35
 
36
  // If point has a lat/lng then no geocoding
37
- if (!empty($this->point['lat']) && !empty($this->point['lng'])) {
 
 
 
 
 
 
 
38
  $this->viewport = null;
39
  } else {
40
  $location = Mappress_Geocoder::geocode($this->address);
4
  $body = '',
5
  $correctedAddress,
6
  $iconid,
7
+ $kml,
8
  $point = array('lat' => 0, 'lng' => 0),
9
  $poly,
10
  $postid,
11
  $props = array(),
 
12
  $thumbnail,
13
  $title = '',
14
  $type,
34
  return new WP_Error('geocode', 'MapPress Pro required for geocoding');
35
 
36
  // If point has a lat/lng then no geocoding
37
+ $lat = $this->point['lat'];
38
+ $lng = $this->point['lng'];
39
+
40
+ if (!empty($lat) && !empty($lng)) {
41
+ // Confirm that lat/lng are numbers
42
+ if (!is_numeric($lat) || !is_numeric($lng))
43
+ return new WP_Error('latlng', sprintf(__('Invalid lat/lng coordinate: %s,%s', 'mappress-google-maps-for-wordpress'), $lat, $lng));
44
+ $this->address = "$lat, $lng";
45
  $this->viewport = null;
46
  } else {
47
  $location = Mappress_Geocoder::geocode($this->address);
mappress_settings.php CHANGED
@@ -102,6 +102,7 @@ class Mappress_Settings {
102
 
103
  static function register() {
104
  add_action('wp_ajax_mapp_license_check', array(__CLASS__, 'ajax_license_check'));
 
105
  add_action('wp_ajax_mapp_options_reset', array(__CLASS__, 'ajax_reset'));
106
  add_action('wp_ajax_mapp_option_save', array(__CLASS__, 'ajax_option_save'));
107
  add_action('wp_ajax_mapp_options_save', array(__CLASS__, 'ajax_options_save'));
@@ -110,6 +111,57 @@ class Mappress_Settings {
110
  add_action('load-toplevel_page_mappress', array(__CLASS__, 'review_admin_notice'));
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  static function ajax_license_check() {
114
  check_ajax_referer('mappress', 'nonce');
115
 
@@ -247,8 +299,7 @@ class Mappress_Settings {
247
 
248
  // Setup helpers
249
  $helpers = (object) array(
250
- 'demo_map' => self::demo_map(),
251
- 'geocoding_errors' => self::geocoding_errors(),
252
  'icon_directory' => (class_exists('Mappress_Icons')) ? Mappress_Icons::$icons_dir : null,
253
  'is_multisite' => is_multisite(),
254
  'is_super_admin' => is_super_admin(),
@@ -258,9 +309,11 @@ class Mappress_Settings {
258
  'license_status' => (Mappress::$pro && Mappress::$options->license) ? Mappress::$updater->get_status() : null,
259
  'meta_fields' => self::get_meta_fields(),
260
  'meta_keys' => self::get_meta_keys(),
 
261
  'post_types' => self::get_post_types(),
262
  'taxonomies' => self::get_taxonomies(),
263
- 'thumbnail_sizes' => self::get_thumbnail_sizes()
 
264
  );
265
  $state->helpers = $helpers;
266
  return json_encode($state);
@@ -289,22 +342,33 @@ class Mappress_Settings {
289
  $a = $result;
290
  }
291
 
292
- static function demo_map() {
293
- $poi = new Mappress_Poi(array('address' => 'San Francisco, CA', "title" => "MapPress", "body" => __("Maps for WordPress", 'mappress-google-maps-for-wordpress'), "point" => array('lat' => 37.774095, 'lng' => -122.418731)));
294
- $map = new Mappress_Map(array('alignment' => 'default', 'width' => '100%', 'height' => 300,'pois' => array($poi), 'zoom' => 8));
295
- return $map;
296
- }
297
-
298
- static function geocoding_errors() {
299
  $geocoding_errors = array();
300
- $query = new WP_Query(array('meta_key' => 'mappress_error', 'posts_per_page' => 20));
301
- foreach($query->posts as $post) {
302
- $geocoding_errors[] = array(
303
- 'ID' => $post->ID,
304
- 'post_title' => $post->post_title,
305
- 'error' => get_post_meta($post->ID, 'mappress_error', true)
306
- );
307
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  return $geocoding_errors;
309
  }
310
 
@@ -315,31 +379,15 @@ class Mappress_Settings {
315
  return $fields;
316
  }
317
 
318
- static function get_post_types() {
319
- $results = array();
320
- $post_types = get_post_types(array('show_ui' => true, 'public' => true), 'objects');
321
- unset($post_types['mappress_map'], $post_types['attachment']);
322
- foreach($post_types as $type => $obj)
323
- $results[$type] = $obj->label;
324
- return $results;
325
- }
326
-
327
-
328
- static function get_thumbnail_sizes() {
329
- // Note: WP doesn't return dimensions, just the size names - ticket is > 6 months old now: http://core.trac.wordpress.org/ticket/18947
330
- $sizes = get_intermediate_image_sizes();
331
- $sizes = array_combine(array_values($sizes), array_values($sizes));
332
- return $sizes;
333
- }
334
-
335
  static function get_meta_keys() {
336
  global $wpdb;
337
  $keys = $wpdb->get_col( "
338
  SELECT DISTINCT meta_key
339
  FROM $wpdb->postmeta
340
  WHERE meta_key NOT in ('_edit_last', '_edit_lock', '_encloseme', '_pingme', '_thumbnail_id')
341
- AND meta_key NOT LIKE ('\_wp%')"
342
- );
 
343
  $results = (is_array($keys) && !empty($keys)) ? array_combine($keys, $keys) : array();
344
  return $results;
345
  }
@@ -352,6 +400,16 @@ class Mappress_Settings {
352
  return $results;
353
  }
354
 
 
 
 
 
 
 
 
 
 
 
355
  static function get_taxonomies() {
356
  $results = array();
357
  $tax_objs = get_taxonomies(array('public' => true), 'objects');
@@ -361,6 +419,13 @@ class Mappress_Settings {
361
  return $results;
362
  }
363
 
 
 
 
 
 
 
 
364
  static function get_usage() {
365
  global $wpdb;
366
  $maps_table = $wpdb->prefix . 'mappress_maps';
@@ -379,12 +444,30 @@ class Mappress_Settings {
379
  $usage->mapbox = (Mappress::$options->mapbox) ? true : false;
380
  $usage->autoicons = Mappress::$options->autoicons && Mappress::$options->autoicons['key'];
381
  $usage->multisite = is_multisite();
382
-
383
- $usage->assignment1 = $wpdb->get_var("SELECT count(distinct(mapid)) FROM $posts_table GROUP BY mapid HAVING count(*) > 1");
384
  $usage->count1 = $wpdb->get_var("SELECT count(*) from $maps_table");
385
  return $usage;
386
  }
387
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
  static function review_admin_notice() {
389
  $first_time = get_option('mappress_review');
390
 
102
 
103
  static function register() {
104
  add_action('wp_ajax_mapp_license_check', array(__CLASS__, 'ajax_license_check'));
105
+ add_action('wp_ajax_mapp_geocode', array(__CLASS__, 'ajax_geocode'));
106
  add_action('wp_ajax_mapp_options_reset', array(__CLASS__, 'ajax_reset'));
107
  add_action('wp_ajax_mapp_option_save', array(__CLASS__, 'ajax_option_save'));
108
  add_action('wp_ajax_mapp_options_save', array(__CLASS__, 'ajax_options_save'));
111
  add_action('load-toplevel_page_mappress', array(__CLASS__, 'review_admin_notice'));
112
  }
113
 
114
+ static function ajax_geocode() {
115
+ global $wpdb;
116
+
117
+ check_ajax_referer('mappress', 'nonce');
118
+
119
+ if (!current_user_can('manage_options'))
120
+ Mappress::ajax_response('Not authorized');
121
+
122
+ $batch_size = (isset($_POST['batch_size'])) ? $_POST['batch_size'] : null;
123
+ $otype = (isset($_POST['otype'])) ? $_POST['otype'] : null;
124
+ $start = (isset($_POST['start'])) ? $_POST['start'] : null;
125
+ $skip = (isset($_POST['skip'])) ? $_POST['skip'] : null;
126
+
127
+ // Get keys for the object type. If no keys, nothing to do
128
+ $keys = Mappress::$options->metaKeys;
129
+ if (empty($keys))
130
+ Mappress::ajax_response('OK', array('logs' => array(), 'errors' => array()));
131
+
132
+ // Get all meta keys for otype, as a quoted, comma-separated list to be used in sql
133
+ $string_keys = array_map(function($key) { return "'$key'"; }, $keys);
134
+ $string_keys = join(',', $string_keys);
135
+ $meta_table = ($otype == 'post') ? $wpdb->postmeta : $wpdb->usermeta;
136
+
137
+ // Read all objects with at least ONE of the mapped keys
138
+ if ($otype == 'post')
139
+ $sql = "SELECT DISTINCT post_id AS oid, post_title AS title FROM $wpdb->postmeta INNER JOIN $wpdb->posts ON $wpdb->postmeta.post_id = $wpdb->posts.ID ";
140
+ else
141
+ $sql = "SELECT DISTINCT user_id AS oid, user_nicename AS title FROM $wpdb->usermeta INNER JOIN $wpdb->users ON $wpdb->usermeta.user_id = $wpdb->users.ID ";
142
+
143
+ $sql .= " WHERE meta_key IN ($string_keys)";
144
+ $sql .= sprintf(" LIMIT %d, %d", $start, $batch_size);
145
+
146
+ $results = $wpdb->get_results($sql);
147
+ $logs = array();
148
+
149
+ // Geocode each object
150
+ foreach($results as $result) {
151
+ $msg = Mappress_Meta::create_meta_map($result->oid);
152
+ $logs[] = array('otype' => $otype, 'oid' => $result->oid, 'title' => $result->title, 'msg' => $msg);
153
+ }
154
+
155
+ // Get errors only when finished
156
+ $errors = (count($logs) < $batch_size) ? self::get_geocoding_errors($otype) : array();
157
+
158
+ // For testing, mp_geocode=10 will stop after 10 rows processed
159
+ if (isset($_REQUEST['mp_geocode']) && $start > $_REQUEST['mp_geocode'])
160
+ Mappress::ajax_response('OK', array('logs' => array(), 'errors' => $errors));
161
+
162
+ Mappress::ajax_response('OK', array('logs' => $logs, 'errors' => $errors));
163
+ }
164
+
165
  static function ajax_license_check() {
166
  check_ajax_referer('mappress', 'nonce');
167
 
299
 
300
  // Setup helpers
301
  $helpers = (object) array(
302
+ 'geocoding_errors' => self::get_geocoding_errors(),
 
303
  'icon_directory' => (class_exists('Mappress_Icons')) ? Mappress_Icons::$icons_dir : null,
304
  'is_multisite' => is_multisite(),
305
  'is_super_admin' => is_super_admin(),
309
  'license_status' => (Mappress::$pro && Mappress::$options->license) ? Mappress::$updater->get_status() : null,
310
  'meta_fields' => self::get_meta_fields(),
311
  'meta_keys' => self::get_meta_keys(),
312
+ 'post_edit' => admin_url('post.php'),
313
  'post_types' => self::get_post_types(),
314
  'taxonomies' => self::get_taxonomies(),
315
+ 'thumbnail_sizes' => self::get_thumbnail_sizes(),
316
+ 'user_edit' => admin_url('user-edit.php')
317
  );
318
  $state->helpers = $helpers;
319
  return json_encode($state);
342
  $a = $result;
343
  }
344
 
345
+ static function get_geocoding_errors($otype = null) {
 
 
 
 
 
 
346
  $geocoding_errors = array();
347
+
348
+ if ($otype == 'post' || $otype == null) {
349
+ $query = new WP_Query(array('meta_key' => 'mappress_error', 'posts_per_page' => -1, 'orderby' => 'ID', 'order' => 'ASC'));
350
+ foreach($query->posts as $post) {
351
+ $geocoding_errors[] = array(
352
+ 'otype' => 'post',
353
+ 'oid' => $post->ID,
354
+ 'title' => $post->post_title,
355
+ 'msg' => get_metadata('post', $post->ID, 'mappress_error', true)
356
+ );
357
+ };
358
+ }
359
+
360
+ if ($otype == 'user' || $otype == null) {
361
+ $query = new WP_User_Query(array('meta_key' => 'mappress_error'));
362
+ foreach($query->results as $result) {
363
+ $geocoding_errors[] = array(
364
+ 'otype' => 'user',
365
+ 'oid' => $result->ID,
366
+ 'title' => $result->user_nicename,
367
+ 'msg' => get_metadata('user', $result->ID, 'mappress_error', true)
368
+ );
369
+ };
370
+ }
371
+
372
  return $geocoding_errors;
373
  }
374
 
379
  return $fields;
380
  }
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  static function get_meta_keys() {
383
  global $wpdb;
384
  $keys = $wpdb->get_col( "
385
  SELECT DISTINCT meta_key
386
  FROM $wpdb->postmeta
387
  WHERE meta_key NOT in ('_edit_last', '_edit_lock', '_encloseme', '_pingme', '_thumbnail_id')
388
+ AND meta_key NOT LIKE '\_wp%'
389
+ AND meta_key NOT LIKE '\_oembed%'
390
+ ");
391
  $results = (is_array($keys) && !empty($keys)) ? array_combine($keys, $keys) : array();
392
  return $results;
393
  }
400
  return $results;
401
  }
402
 
403
+ static function get_post_types() {
404
+ $results = array();
405
+ $post_types = get_post_types(array('show_ui' => true, 'public' => true), 'objects');
406
+ unset($post_types['mappress_map'], $post_types['attachment']);
407
+ foreach($post_types as $type => $obj)
408
+ $results[$type] = $obj->label;
409
+ return $results;
410
+ }
411
+
412
+
413
  static function get_taxonomies() {
414
  $results = array();
415
  $tax_objs = get_taxonomies(array('public' => true), 'objects');
419
  return $results;
420
  }
421
 
422
+ static function get_thumbnail_sizes() {
423
+ // Note: WP doesn't return dimensions, just the size names - ticket is > 6 months old now: http://core.trac.wordpress.org/ticket/18947
424
+ $sizes = get_intermediate_image_sizes();
425
+ $sizes = array_combine(array_values($sizes), array_values($sizes));
426
+ return $sizes;
427
+ }
428
+
429
  static function get_usage() {
430
  global $wpdb;
431
  $maps_table = $wpdb->prefix . 'mappress_maps';
444
  $usage->mapbox = (Mappress::$options->mapbox) ? true : false;
445
  $usage->autoicons = Mappress::$options->autoicons && Mappress::$options->autoicons['key'];
446
  $usage->multisite = is_multisite();
 
 
447
  $usage->count1 = $wpdb->get_var("SELECT count(*) from $maps_table");
448
  return $usage;
449
  }
450
 
451
+ static function get_user_meta_keys() {
452
+ global $wpdb;
453
+ $keys = $wpdb->get_col( "
454
+ SELECT DISTINCT meta_key
455
+ FROM $wpdb->usermeta
456
+ WHERE meta_key NOT IN ('first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'jabber', 'aim',
457
+ 'yim', 'default_password_nag', 'use_ssl', 'show_admin_bar_front', 'show_welcome_panel', 'dismissed_wp_pointers', 'nav_menu_recently_edited',
458
+ 'managenav-menuscolumnshidden', 'wp_capabilities', 'wp_user_level', 'wp_dashboard_quick_press_last_post_id', 'wp_user-settings', 'wp_user-settings-time',
459
+ 'locale', 'session_tokens', 'syntax_highlighting', 'enable_custom_fields', 'mappress_dismissed', 'wp_media_library_mode', 'edit_post_per_page'
460
+ )
461
+ AND meta_key NOT LIKE 'closedpostboxes%'
462
+ AND meta_key NOT LIKE 'metaboxhidden%'
463
+ AND meta_key NOT LIKE 'meta-box-order%'
464
+ AND meta_key NOT LIKE 'screen_layout%'
465
+ ");
466
+
467
+ $results = (is_array($keys) && !empty($keys)) ? array_combine($keys, $keys) : array();
468
+ return $results;
469
+ }
470
+
471
  static function review_admin_notice() {
472
  $first_time = get_option('mappress_review');
473
 
mappress_template.php CHANGED
@@ -65,14 +65,14 @@ class Mappress_Template extends Mappress_Obj {
65
  $name = (isset($_GET['name'])) ? $_GET['name'] : null;
66
  $filename = basename($name) . '.php';
67
  $filepath = get_stylesheet_directory() . '/' . $filename;
68
- $html = @file_get_contents($filepath);
69
 
70
  // Verify legitimate path
71
  $standard_path = realpath(Mappress::$basedir . "/templates/$filename");
72
  if (strpos($standard_path, realpath(Mappress::$basedir)) !== 0)
73
  Mappress::ajax_response('Invalid template path');
74
 
75
- $standard = @file_get_contents($standard_path);
76
 
77
  if (!$standard)
78
  Mappress::ajax_response('Invalid template');
@@ -90,10 +90,10 @@ class Mappress_Template extends Mappress_Obj {
90
 
91
  static function ajax_save() {
92
  check_ajax_referer('mappress', 'nonce');
93
-
94
  if (!current_user_can('manage_options'))
95
  Mappress::ajax_response('Not authorized');
96
-
97
  if ((defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT) || defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS)
98
  Mappress::ajax_response('Unable to save, DISALLOW_FILE_EDIT or DISALLOW_FILE_MODS has been set in wp-config');
99
 
65
  $name = (isset($_GET['name'])) ? $_GET['name'] : null;
66
  $filename = basename($name) . '.php';
67
  $filepath = get_stylesheet_directory() . '/' . $filename;
68
+ $html = (file_exists($filepath)) ? @file_get_contents($filepath) : null;
69
 
70
  // Verify legitimate path
71
  $standard_path = realpath(Mappress::$basedir . "/templates/$filename");
72
  if (strpos($standard_path, realpath(Mappress::$basedir)) !== 0)
73
  Mappress::ajax_response('Invalid template path');
74
 
75
+ $standard = (file_exists($standard_path)) ? file_get_contents($standard_path) : null;
76
 
77
  if (!$standard)
78
  Mappress::ajax_response('Invalid template');
90
 
91
  static function ajax_save() {
92
  check_ajax_referer('mappress', 'nonce');
93
+
94
  if (!current_user_can('manage_options'))
95
  Mappress::ajax_response('Not authorized');
96
+
97
  if ((defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT) || defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS)
98
  Mappress::ajax_response('Unable to save, DISALLOW_FILE_EDIT or DISALLOW_FILE_MODS has been set in wp-config');
99
 
mappress_wpml.php CHANGED
@@ -8,7 +8,6 @@ class Mappress_WPML {
8
  // WPML Duplicate
9
  // Note: icl_copy_from_original doesn't refresh the page, so is not suitable for maps
10
  static function icl_make_duplicate($src_postid, $lang, $post, $postid) {
11
- debugBreak();
12
  $updated = false;
13
 
14
  if (!$src_postid || !$postid)
8
  // WPML Duplicate
9
  // Note: icl_copy_from_original doesn't refresh the page, so is not suitable for maps
10
  static function icl_make_duplicate($src_postid, $lang, $post, $postid) {
 
11
  $updated = false;
12
 
13
  if (!$src_postid || !$postid)
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: 5.9
8
- Stable tag: 2.74.3
9
 
10
  == Description ==
11
  MapPress is the easiest way to add beautiful interactive Google and Leaflet maps to WordPress.
@@ -89,6 +89,11 @@ Please see the plugin documentation pages:
89
 
90
  == Changelog ==
91
 
 
 
 
 
 
92
  = 2.74.3 =
93
  * Fixed: removed import menu from free version
94
  * Fixed: removed french translation from plugin directory
5
  Requires at least: 5.3
6
  Requires PHP: 5.6
7
  Tested up to: 5.9
8
+ Stable tag: 2.75
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.75 =
93
+ * Changed: completed removal of obsolete Algolia geocoder
94
+ * Changed: updated JavaScript: map editor, POI editor, POI list, directions, map menu, map picker and settings
95
+ * Changed: clustering libraries sourced from CDN
96
+
97
  = 2.74.3 =
98
  * Fixed: removed import menu from free version
99
  * Fixed: removed french translation from plugin directory
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
- <# print(mapp.lib.template('map-menu', { map : map })); #>
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>
@@ -45,28 +45,11 @@
45
  <# if (map.isFilterable() && mappl10n.options.filtersPos == 'list') { #>
46
  <div class='mapp-filters'></div>
47
  <# } #>
 
48
  <div class='mapp-list'></div>
49
  </div>
50
  </script>
51
 
52
- <script type='text/template' id='mapp-tmpl-map-menu'>
53
- <# if (!map.editable && mappl10n.options.engine != 'leaflet') { #>
54
- <div class='mapp-controls'>
55
- <div class='mapp-menu-toggle' data-mapp-action='menu-toggle' title='<?php _e('Menu', 'mappress-google-maps-for-wordpress');?>'></div>
56
- <div class='mapp-menu'>
57
- <div class='mapp-menu-item' data-mapp-action='center'><?php _e('Center map', 'mappress-google-maps-for-wordpress');?></div>
58
- <?php if (Mappress::$options->engine != 'leaflet') { ?>
59
- <div class='mapp-menu-separator'></div>
60
- <div class='mapp-menu-item' data-mapp-action='layer' data-mapp-layer='traffic'><?php _e('Traffic', 'mappress-google-maps-for-wordpress');?></div>
61
- <div class='mapp-menu-item' data-mapp-action='layer' data-mapp-layer='bicycling'><?php _e('Bicycling', 'mappress-google-maps-for-wordpress');?></div>
62
- <div class='mapp-menu-item' data-mapp-action='layer' data-mapp-layer='transit'><?php _e('Transit', 'mappress-google-maps-for-wordpress');?></div>
63
- <?php } ?>
64
- <div class='mapp-menu-footer' title='<?php _e('Get help', 'mappress-google-maps-for-wordpress');?>'><a href='https://mappresspro.com/mappress-documentation' target='_blank'><div class='mapp-menu-help'>?</div></div></a>
65
- </div>
66
- </div>
67
- <# } #>
68
- </script>
69
-
70
  <script type='text/template' id='mapp-tmpl-map-footer'>
71
  <# if ( (map.poiList || mappl10n.options.poiList) && map.layout != 'inline') { #>
72
  <div class='mapp-footer'>
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>
45
  <# if (map.isFilterable() && mappl10n.options.filtersPos == 'list') { #>
46
  <div class='mapp-filters'></div>
47
  <# } #>
48
+ <div class='mapp-gt-inspector mapp-settings-container'></div>
49
  <div class='mapp-list'></div>
50
  </div>
51
  </script>
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  <script type='text/template' id='mapp-tmpl-map-footer'>
54
  <# if ( (map.poiList || mappl10n.options.poiList) && map.layout != 'inline') { #>
55
  <div class='mapp-footer'>