@defra/interactive-map 0.0.23-alpha → 0.0.24-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/light-raster-thumb.jpg +0 -0
- package/assets/images/outdoor-raster-thumb.jpg +0 -0
- package/assets/images/road-raster-thumb.jpg +0 -0
- package/docs/plugins/search.md +70 -0
- package/package.json +16 -2
- package/plugins/beta/draw-ml/dist/css/index.css +1 -21
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/src/api/editFeature.js +9 -4
- package/plugins/beta/draw-ml/src/modes/createDrawMode.js +11 -3
- package/plugins/interact/src/hooks/useAttachEvents.test.js +3 -0
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/esm/index.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/index.js +1 -1
- package/plugins/search/src/Search.jsx +2 -1
- package/plugins/search/src/components/Form/Form.jsx +11 -7
- package/plugins/search/src/components/Form/Form.test.jsx +23 -1
- package/plugins/search/src/datasets.js +2 -2
- package/plugins/search/src/datasets.test.js +1 -1
- package/plugins/search/src/defaults.js +7 -1
- package/plugins/search/src/events/fetchSuggestions.js +13 -10
- package/plugins/search/src/events/fetchSuggestions.test.js +14 -1
- package/plugins/search/src/events/formHandlers.js +2 -4
- package/plugins/search/src/events/formHandlers.test.js +3 -3
- package/plugins/search/src/events/inputHandlers.js +1 -1
- package/plugins/search/src/events/inputHandlers.test.js +1 -1
- package/plugins/search/src/events/suggestionHandlers.js +2 -1
- package/plugins/search/src/events/suggestionHandlers.test.js +7 -1
- package/plugins/search/src/index.js +3 -7
- package/plugins/search/src/reducer.js +10 -5
- package/plugins/search/src/reducer.test.js +2 -1
- package/plugins/search/src/utils/parseOsNamesResults.js +3 -3
- package/providers/beta/openlayers/dist/esm/im-openlayers-provider.js +1 -0
- package/providers/beta/openlayers/dist/esm/index.js +1 -0
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js +2 -0
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js.LICENSE.txt +1 -0
- package/providers/beta/openlayers/dist/umd/index.js +2 -0
- package/providers/beta/openlayers/dist/umd/index.js.LICENSE.txt +1 -0
- package/providers/beta/openlayers/src/appEvents.js +50 -0
- package/providers/beta/openlayers/src/appEvents.test.js +140 -0
- package/providers/beta/openlayers/src/defaults.js +36 -0
- package/providers/beta/openlayers/src/index.js +21 -0
- package/providers/beta/openlayers/src/mapEvents.js +132 -0
- package/providers/beta/openlayers/src/mapEvents.test.js +197 -0
- package/providers/beta/openlayers/src/openlayersProvider.js +234 -0
- package/providers/beta/openlayers/src/openlayersProvider.test.js +331 -0
- package/providers/beta/openlayers/src/utils/spatial.js +142 -0
- package/providers/beta/openlayers/src/utils/spatial.test.js +117 -0
- package/providers/beta/openlayers/src/utils/zoom.js +26 -0
- package/providers/beta/openlayers/src/utils/zoom.test.js +23 -0
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/src/utils/highlightFeatures.js +17 -7
- package/providers/maplibre/src/utils/highlightFeatures.test.js +17 -0
- package/providers/maplibre/src/utils/patternImages.js +14 -9
- package/providers/maplibre/src/utils/patternImages.test.js +2 -1
- package/rollup.esm.mjs +14 -3
- package/src/App/hooks/useFeatureItems.test.js +1 -0
- package/src/App/hooks/useLayoutMeasurements.test.js +0 -1
- package/src/App/hooks/useMarkersAPI.test.js +1 -0
- package/src/App/hooks/useModalPanelBehaviour.test.js +2 -1
- package/src/App/store/AppProvider.test.jsx +5 -0
- package/src/App/store/MapProvider.test.jsx +8 -1
- package/src/services/announcer.test.js +5 -7
- package/webpack.dev.mjs +6 -1
- package/webpack.umd.mjs +1 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see im-maplibre-provider.js.LICENSE.txt */
|
|
2
|
-
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[772],{419(t,e,r){r.r(e),r.d(e,{default:()=>Ft});var n=400,o=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];function a(t){var e=t.getCanvas();e.removeAttribute("role"),e.setAttribute("tabindex",-1),e.removeAttribute("aria-label"),e.style.display="block",e.addEventListener("focus",function(t){e.blur(),t.relatedTarget&&t.relatedTarget.focus()})}function i(t){var e=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){if(("touchmove"===this.type||"touchstart"===this.type)&&!this.cancelable){var r=t.getCanvas();if(r&&(this.target===r||r.contains(this.target)))return}e.call(this)}}var u=function(t,e){var r=null,n=function(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];clearTimeout(r),r=setTimeout(function(){t.apply(void 0,o)},e)};return n.cancel=function(){r&&(clearTimeout(r),r=null)},n};function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,s=t.getResolution,c=[],f=[],h=function(){var t=a();return{center:o(),bounds:i(),resolution:s(),zoom:t,isAtMaxZoom:e.getMaxZoom()<=t,isAtMinZoom:e.getMinZoom()>=t}},p=function(t,e){return n.emit(t,e)},y=function(){return p(r.MAP_LOADED)};e.on("load",y),c.push(["load",y]),e.once("idle",function(){return p(r.MAP_FIRST_IDLE,h())});var d=function(){return p(r.MAP_MOVE_START)};e.on("movestart",d),c.push(["movestart",d]);var g=u(function(){p(r.MAP_MOVE_END,h())},500);e.on("moveend",g),c.push(["moveend",g]);var v,m,b=(v=function(){p(r.MAP_MOVE,h())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,v.apply(void 0,arguments))});e.on("zoom",b),c.push(["zoom",b]);var M=function(){return p(r.MAP_RENDER)};e.on("render",M),c.push(["render",M]);var w=u(function(){p(r.MAP_DATA_CHANGE,h())},500),S=function(t){t.isSourceLoaded&&w()};e.on("styledata",w),e.on("sourcedata",S),c.push(["styledata",w],["sourcedata",S]);var P=function(){return p(r.MAP_STYLE_CHANGE)};e.on("style.load",P),c.push(["style.load",P]);var x=function(t){return p(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",x),c.push(["click",x]),f.push(g,b,w),{remove:function(){f.forEach(function(t){return t.cancel()}),c.forEach(function(t){var r,n,o=(n=2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,u=[],l=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return u}}(r,n)||function(t,e){if(t){if("string"==typeof t)return l(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(t,e):void 0}}(r,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],i=o[1];return e.off(a,i)})}}}function c(t){var e=t.mapProvider,r=t.map,n=t.events,o=t.eventBus,a=function(t){r.once("style.load",function(){o.emit(n.MAP_STYLE_CHANGE,{mapStyleId:t.id})}),r.setStyle(t.url,{diff:!1})},i=function(t){r.setPixelRatio(t)},u=function(t){var r=t.mapSize;e.mapSize=r};return o.on(n.MAP_SET_STYLE,a),o.on(n.MAP_SET_PIXEL_RATIO,i),o.on(n.MAP_SIZE_CHANGE,u),{remove:function(){o.off(n.MAP_SET_STYLE,a),o.off(n.MAP_SET_PIXEL_RATIO,i),o.off(n.MAP_SIZE_CHANGE,u)}}}let f=" ";class h{static get separator(){return f}static set separator(t){f=t}static parse(t){if(!isNaN(parseFloat(t))&&isFinite(t))return Number(t);const e=String(t).trim().replace(/^-/,"").replace(/[NSEW]$/i,"").split(/[^0-9.,]+/);if(""==e[e.length-1]&&e.splice(e.length-1),""==e)return NaN;let r=null;switch(e.length){case 3:r=e[0]/1+e[1]/60+e[2]/3600;break;case 2:r=e[0]/1+e[1]/60;break;case 1:r=e[0];break;default:return NaN}return/^-|[WS]$/i.test(t.trim())&&(r=-r),Number(r)}static toDms(t,e="d",r=void 0){if(isNaN(t))return null;if("string"==typeof t&&""==t.trim())return null;if("boolean"==typeof t)return null;if(t==1/0)return null;if(null==t)return null;if(void 0===r)switch(e){case"d":case"deg":r=4;break;case"dm":case"deg+min":r=2;break;case"dms":case"deg+min+sec":r=0;break;default:e="d",r=4}t=Math.abs(t);let n=null,o=null,a=null,i=null;switch(e){default:case"d":case"deg":o=t.toFixed(r),o<100&&(o="0"+o),o<10&&(o="0"+o),n=o+"°";break;case"dm":case"deg+min":o=Math.floor(t),a=(60*t%60).toFixed(r),60==a&&(a=(0).toFixed(r),o++),o=("000"+o).slice(-3),a<10&&(a="0"+a),n=o+"°"+h.separator+a+"′";break;case"dms":case"deg+min+sec":o=Math.floor(t),a=Math.floor(3600*t/60)%60,i=(3600*t%60).toFixed(r),60==i&&(i=(0).toFixed(r),a++),60==a&&(a=0,o++),o=("000"+o).slice(-3),a=("00"+a).slice(-2),i<10&&(i="0"+i),n=o+"°"+h.separator+a+"′"+h.separator+i+"″"}return n}static toLat(t,e,r){const n=h.toDms(h.wrap90(t),e,r);return null===n?"–":n.slice(1)+h.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=h.toDms(h.wrap180(t),e,r);return null===n?"–":n+h.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=h.toDms(h.wrap360(t),e,r);return null===n?"–":n.replace("360","0")}static fromLocale(t){const e=123456.789.toLocaleString(),r={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(r.thousands,"⁜").replace(r.decimal,".").replace("⁜",",")}static toLocale(t){const e=123456.789.toLocaleString(),r={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(/,([0-9])/,"⁜$1").replace(".",r.decimal).replace("⁜",r.thousands)}static compassPoint(t,e=3){if(![1,2,3].includes(Number(e)))throw new RangeError(`invalid precision ‘${e}’`);t=h.wrap360(t);const r=4*2**(e-1);return["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.round(t*r/360)%r*16/r]}static wrap90(t){if(-90<=t&&t<=90)return t;const e=t;return 1*Math.abs(((e-90)%360+360)%360-180)-90}static wrap180(t){if(-180<=t&&t<=180)return t;const e=360;return((360*t/e-180)%e+e)%e-180}static wrap360(t){if(0<=t&&t<360)return t;const e=360;return(360*t/e%e+e)%e}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const p=h,y=Math.PI;class d{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=p.wrap90(Number(t)),this._lon=p.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?p.wrap90(p.parse(t)):p.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?p.wrap90(p.parse(t)):p.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid latitude ‘${t}’`)}get lon(){return this._lon}get lng(){return this._lon}get longitude(){return this._lon}set lon(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid longitude ‘${t}’`)}static get metresToKm(){return.001}static get metresToMiles(){return 1/1609.344}static get metresToNauticalMiles(){return 1/1852}static parse(...t){if(0==t.length)throw new TypeError("invalid (empty) point");if(null===t[0]||null===t[1])throw new TypeError("invalid (null) point");let e,r;if(2==t.length&&([e,r]=t,e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r)),isNaN(e)||isNaN(r)))throw new TypeError(`invalid point ‘${t.toString()}’`);if(1==t.length&&"string"==typeof t[0]&&([e,r]=t[0].split(","),e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r)),isNaN(e)||isNaN(r)))throw new TypeError(`invalid point ‘${t[0]}’`);if(1==t.length&&"object"==typeof t[0]){const n=t[0];if("Point"==n.type&&Array.isArray(n.coordinates)?[r,e]=n.coordinates:(null!=n.latitude&&(e=n.latitude),null!=n.lat&&(e=n.lat),null!=n.longitude&&(r=n.longitude),null!=n.lng&&(r=n.lng),null!=n.lon&&(r=n.lon),e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r))),isNaN(e)||isNaN(r))throw new TypeError(`invalid point ‘${JSON.stringify(t[0])}’`)}if(isNaN(e)||isNaN(r))throw new TypeError(`invalid point ‘${t.toString()}’`);return new d(e,r)}distanceTo(t,e=6371e3){if(t instanceof d||(t=d.parse(t)),isNaN(e))throw new TypeError(`invalid radius ‘${e}’`);const r=e,n=this.lat.toRadians(),o=this.lon.toRadians(),a=t.lat.toRadians(),i=a-n,u=t.lon.toRadians()-o,l=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(a)*Math.sin(u/2)*Math.sin(u/2);return r*(2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)))}initialBearingTo(t){if(t instanceof d||(t=d.parse(t)),this.equals(t))return NaN;const e=this.lat.toRadians(),r=t.lat.toRadians(),n=(t.lon-this.lon).toRadians(),o=Math.cos(e)*Math.sin(r)-Math.sin(e)*Math.cos(r)*Math.cos(n),a=Math.sin(n)*Math.cos(r),i=Math.atan2(a,o).toDegrees();return p.wrap360(i)}finalBearingTo(t){t instanceof d||(t=d.parse(t));const e=t.initialBearingTo(this)+180;return p.wrap360(e)}midpointTo(t){t instanceof d||(t=d.parse(t));const e=this.lat.toRadians(),r=this.lon.toRadians(),n=t.lat.toRadians(),o=(t.lon-this.lon).toRadians(),a=Math.cos(e),i=Math.sin(e),u={x:a+Math.cos(n)*Math.cos(o),y:0+Math.cos(n)*Math.sin(o),z:i+Math.sin(n)},l=Math.atan2(u.z,Math.sqrt(u.x*u.x+u.y*u.y)),s=r+Math.atan2(u.y,u.x),c=l.toDegrees(),f=s.toDegrees();return new d(c,f)}intermediatePointTo(t,e){if(t instanceof d||(t=d.parse(t)),this.equals(t))return new d(this.lat,this.lon);const r=this.lat.toRadians(),n=this.lon.toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=o-r,u=a-n,l=Math.sin(i/2)*Math.sin(i/2)+Math.cos(r)*Math.cos(o)*Math.sin(u/2)*Math.sin(u/2),s=2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)),c=Math.sin((1-e)*s)/Math.sin(s),f=Math.sin(e*s)/Math.sin(s),h=c*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),p=c*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),y=c*Math.sin(r)+f*Math.sin(o),g=Math.atan2(y,Math.sqrt(h*h+p*p)),v=Math.atan2(p,h),m=g.toDegrees(),b=v.toDegrees();return new d(m,b)}destinationPoint(t,e,r=6371e3){const n=t/r,o=Number(e).toRadians(),a=this.lat.toRadians(),i=this.lon.toRadians(),u=Math.sin(a)*Math.cos(n)+Math.cos(a)*Math.sin(n)*Math.cos(o),l=Math.asin(u),s=Math.sin(o)*Math.sin(n)*Math.cos(a),c=Math.cos(n)-Math.sin(a)*u,f=i+Math.atan2(s,c),h=l.toDegrees(),p=f.toDegrees();return new d(h,p)}static intersection(t,e,r,n){if(t instanceof d||(t=d.parse(t)),r instanceof d||(r=d.parse(r)),isNaN(e))throw new TypeError(`invalid brng1 ‘${e}’`);if(isNaN(n))throw new TypeError(`invalid brng2 ‘${n}’`);const o=t.lat.toRadians(),a=t.lon.toRadians(),i=r.lat.toRadians(),u=r.lon.toRadians(),l=Number(e).toRadians(),s=Number(n).toRadians(),c=i-o,f=u-a,h=2*Math.asin(Math.sqrt(Math.sin(c/2)*Math.sin(c/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new d(t.lat,t.lon);const p=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),g=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),v=Math.acos(Math.min(Math.max(p,-1),1)),m=Math.acos(Math.min(Math.max(g,-1),1)),b=l-(Math.sin(u-a)>0?v:2*y-v),M=(Math.sin(u-a)>0?2*y-m:m)-s;if(0==Math.sin(b)&&0==Math.sin(M))return null;if(Math.sin(b)*Math.sin(M)<0)return null;const w=-Math.cos(b)*Math.cos(M)+Math.sin(b)*Math.sin(M)*Math.cos(h),S=Math.atan2(Math.sin(h)*Math.sin(b)*Math.sin(M),Math.cos(M)+Math.cos(b)*w),P=Math.asin(Math.min(Math.max(Math.sin(o)*Math.cos(S)+Math.cos(o)*Math.sin(S)*Math.cos(l),-1),1)),x=a+Math.atan2(Math.sin(l)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),O=P.toDegrees(),E=x.toDegrees();return new d(O,E)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof d||(t=d.parse(t)),e instanceof d||(e=d.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians();return Math.asin(Math.sin(o)*Math.sin(a-i))*n}alongTrackDistanceTo(t,e,r=6371e3){t instanceof d||(t=d.parse(t)),e instanceof d||(e=d.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians(),u=Math.asin(Math.sin(o)*Math.sin(a-i));return Math.acos(Math.cos(o)/Math.abs(Math.cos(u)))*Math.sign(Math.cos(i-a))*n}maxLatitude(t){const e=Number(t).toRadians(),r=this.lat.toRadians();return Math.acos(Math.abs(Math.sin(e)*Math.cos(r))).toDegrees()}static crossingParallels(t,e,r){if(t.equals(e))return null;const n=Number(r).toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=e.lat.toRadians(),u=e.lon.toRadians()-a,l=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.sin(u),s=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(u)-Math.cos(o)*Math.sin(i)*Math.cos(n),c=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(u);if(c*c>l*l+s*s)return null;const f=Math.atan2(-s,l),h=Math.acos(c/Math.sqrt(l*l+s*s)),y=a+f+h,d=(a+f-h).toDegrees(),g=y.toDegrees();return{lon1:p.wrap180(d),lon2:p.wrap180(g)}}rhumbDistanceTo(t,e=6371e3){t instanceof d||(t=d.parse(t));const r=e,n=this.lat.toRadians(),o=t.lat.toRadians(),a=o-n;let i=Math.abs(t.lon-this.lon).toRadians();Math.abs(i)>y&&(i=i>0?-(2*y-i):2*y+i);const u=Math.log(Math.tan(o/2+y/4)/Math.tan(n/2+y/4)),l=Math.abs(u)>1e-11?a/u:Math.cos(n);return Math.sqrt(a*a+l*l*i*i)*r}rhumbBearingTo(t){if(t instanceof d||(t=d.parse(t)),this.equals(t))return NaN;const e=this.lat.toRadians(),r=t.lat.toRadians();let n=(t.lon-this.lon).toRadians();Math.abs(n)>y&&(n=n>0?-(2*y-n):2*y+n);const o=Math.log(Math.tan(r/2+y/4)/Math.tan(e/2+y/4)),a=Math.atan2(n,o).toDegrees();return p.wrap360(a)}rhumbDestinationPoint(t,e,r=6371e3){const n=this.lat.toRadians(),o=this.lon.toRadians(),a=Number(e).toRadians(),i=t/r,u=i*Math.cos(a);let l=n+u;Math.abs(l)>y/2&&(l=l>0?y-l:-y-l);const s=Math.log(Math.tan(l/2+y/4)/Math.tan(n/2+y/4)),c=Math.abs(s)>1e-11?u/s:Math.cos(n),f=o+i*Math.sin(a)/c,h=l.toDegrees(),p=f.toDegrees();return new d(h,p)}rhumbMidpointTo(t){t instanceof d||(t=d.parse(t));const e=this.lat.toRadians();let r=this.lon.toRadians();const n=t.lat.toRadians(),o=t.lon.toRadians();Math.abs(o-r)>y&&(r+=2*y);const a=(e+n)/2,i=Math.tan(y/4+e/2),u=Math.tan(y/4+n/2),l=Math.tan(y/4+a/2);let s=((o-r)*Math.log(l)+r*Math.log(u)-o*Math.log(i))/Math.log(u/i);isFinite(s)||(s=(r+o)/2);const c=a.toDegrees(),f=s.toDegrees();return new d(c,f)}static areaOf(t,e=6371e3){const r=e,n=t[0].equals(t[t.length-1]);n||t.push(t[0]);const o=t.length-1;let a=0;for(let e=0;e<o;e++){const r=t[e].lat.toRadians(),n=t[e+1].lat.toRadians(),o=(t[e+1].lon-t[e].lon).toRadians();a+=2*Math.atan2(Math.tan(o/2)*(Math.tan(r/2)+Math.tan(n/2)),1+Math.tan(r/2)*Math.tan(n/2))}(function(t){let e=0,r=t[0].initialBearingTo(t[1]);for(let n=0;n<t.length-1;n++){const o=t[n].initialBearingTo(t[n+1]),a=t[n].finalBearingTo(t[n+1]);e+=(o-r+540)%360-180,e+=(a-o+540)%360-180,r=a}return e+=(t[0].initialBearingTo(t[1])-r+540)%360-180,Math.abs(e)<90})(t)&&(a=Math.abs(a)-2*y);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof d||(t=d.parse(t)),!(Math.abs(this.lat-t.lat)>Number.EPSILON||Math.abs(this.lon-t.lon)>Number.EPSILON)}toGeoJSON(){return{type:"Point",coordinates:[this.lon,this.lat]}}toString(t="d",e=void 0){if(!["d","dm","dms","n"].includes(t))throw new RangeError(`invalid format ‘${t}’`);return"n"==t?(null==e&&(e=4),`${this.lat.toFixed(e)},${this.lon.toFixed(e)}`):`${p.toLat(this.lat,t,e)}, ${p.toLon(this.lon,t,e)}`}}function g(t,e,r){if(null!==t)for(var n,o,a,i,u,l,s,c,f=0,h=0,p=t.type,y="FeatureCollection"===p,d="Feature"===p,v=y?t.features.length:1,m=0;m<v;m++){u=(c=!!(s=y?t.features[m].geometry:d?t.geometry:t)&&"GeometryCollection"===s.type)?s.geometries.length:1;for(var b=0;b<u;b++){var M=0,w=0;if(null!==(i=c?s.geometries[b]:s)){l=i.coordinates;var S=i.type;switch(f=!r||"Polygon"!==S&&"MultiPolygon"!==S?0:1,S){case null:break;case"Point":if(!1===e(l,h,m,M,w))return!1;h++,M++;break;case"LineString":case"MultiPoint":for(n=0;n<l.length;n++){if(!1===e(l[n],h,m,M,w))return!1;h++,"MultiPoint"===S&&M++}"LineString"===S&&M++;break;case"Polygon":case"MultiLineString":for(n=0;n<l.length;n++){for(o=0;o<l[n].length-f;o++){if(!1===e(l[n][o],h,m,M,w))return!1;h++}"MultiLineString"===S&&M++,"Polygon"===S&&w++}"Polygon"===S&&M++;break;case"MultiPolygon":for(n=0;n<l.length;n++){for(w=0,o=0;o<l[n].length;o++){for(a=0;a<l[n][o].length-f;a++){if(!1===e(l[n][o][a],h,m,M,w))return!1;h++}w++}M++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===g(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var v=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return g(t,t=>{r[0]>t[0]&&(r[0]=t[0]),r[1]>t[1]&&(r[1]=t[1]),r[2]<t[0]&&(r[2]=t[0]),r[3]<t[1]&&(r[3]=t[1])}),r};function m(t){return function(t){if(Array.isArray(t))return w(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||M(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,u=[],l=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return u}}(t,e)||M(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(t,e){if(t){if("string"==typeof t)return w(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(t,e):void 0}}function w(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var S=function(t,e){var r=b(t,2),n=r[0],o=r[1],a=b(e,2),i=a[0],u=a[1],l=new d(o,n),s=new d(u,i);return l.distanceTo(s)},P=function(t){var e=t/1609.344;if(e<.5)return"".concat(Math.round(t),"m");if(e<10){var r=Number.parseFloat(e.toFixed(1)),n=1===r?"mile":"miles";return"".concat(r," ").concat(n)}var o=Math.round(e);return"".concat(o," miles")},x=function(t){return v(t)};function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,u=[],l=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function N(t){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},N(t)}function j(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function A(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?j(Object(r),!0).forEach(function(e){T(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function T(t,e,r){return(e=function(t){var e=function(t){if("object"!=N(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=N(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==N(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function L(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var I="highlighted-label";function k(t,e){if("number"==typeof t)return t;if(!Array.isArray(t)||"interpolate"!==t[0])return function(t,e){var r=t.stops;if(r.length<2)return r.length>0?r[0][1]:0;for(var n=r[0],o=r[r.length-1],a=1;a<r.length;a++){var i=r[a];if(i[0]>e){o=i,n=r[a-1];break}n=r[a-1],o=i}var u=O(n,2),l=u[0],s=u[1],c=O(o,2),f=c[0],h=c[1];return e<=l?s:e>=f?h:s+(e-l)/(f-l)*(h-s)}(t,e);var r,n=function(t){if(Array.isArray(t))return t}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return L(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?L(t,e):void 0}}(r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),o=n[2],a=L(n).slice(3);if("zoom"!==o[0])throw new Error("Only zoom-based expressions supported");for(var i=0;i<a.length-2;i+=2){var u=a[i],l=a[i+1],s=a[i+2],c=a[i+3];if(e<=u)return l;if(e<=s)return l+(e-u)/(s-u)*(c-l)}return a[a.length-1]}function R(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function _(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){R(t,r);var u=e.feature,l=e.layer;r.highlightLayerId="highlight-".concat(l.id);var s=u.id,c=u.type,f=u.properties,h=u.geometry;t.getSource(I).setData({id:s,type:c,properties:f,geometry:h}),r.highlightedExpr=l.layout["text-size"];var p=t.getZoom(),y=(o=l,a=1.5*k(r.highlightedExpr,p),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:I,layout:A(A({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:A(A({},o.paint),{},{"text-color":i.text,"text-halo-color":i.halo,"text-halo-width":3,"text-halo-blur":1,"text-opacity":1})});t.addLayer(y),t.moveLayer(r.highlightLayerId)}}function D(t){t.getSource(I)||t.addSource(I,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function C(t){t.getStyle().layers.filter(function(t){var e;return"line"===(null===(e=t.layout)||void 0===e?void 0:e["symbol-placement"])}).forEach(function(e){return t.setLayoutProperty(e.id,"symbol-placement","line-center")})}function F(t,e,r,n){var o={isDarkStyle:"dark"===e,labels:[],currentPixel:null,highlightLayerId:null,highlightedExpr:null};function a(){var e=t.getStyle().layers.filter(function(t){return"symbol"===t.type}),r=t.queryRenderedFeatures({layers:e.map(function(t){return t.id})});o.labels=function(t,e,r){return e.flatMap(function(e){var n,o,a,i,u="string"==typeof(o=null===(n=e.layout)||void 0===n?void 0:n["text-field"])?null===(a=/^{(.+)}$/.exec(o))||void 0===a?void 0:a[1]:Array.isArray(o)?null===(i=o.find(function(t){return Array.isArray(t)&&"get"===t[0]}))||void 0===i?void 0:i[1]:null;return u?r.filter(function(t){var r;return t.layer.id===e.id&&(null===(r=t.properties)||void 0===r?void 0:r[u])}).map(function(r){return function(t,e,r,n){var o=function(t){var e=t.type,r=t.coordinates;if("Point"===e)return r;if("MultiPoint"===e)return r[0];if(e.includes("LineString")){var n="LineString"===e?r:r[0];return[(n[0][0]+n[n.length-1][0])/2,(n[0][1]+n[n.length-1][1])/2]}if(e.includes("Polygon")){var o="Polygon"===e?r[0]:r[0][0],a=o.reduce(function(t,e){return[t[0]+e[0],t[1]+e[1]]},[0,0]);return[a[0]/o.length,a[1]/o.length]}return null}(t.geometry);if(!o)return null;var a=n.project({lng:o[0],lat:o[1]});return{text:t.properties[r],x:a.x,y:a.y,feature:t,layer:e}}(r,e,u,t)}).filter(Boolean):[]})}(t,e,r)}function i(){if(a(),!o.labels.length)return null;var e=t.project(t.getCenter()),r=function(t,e){var r;return null===(r=t.reduce(function(t,r){var n=Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2);return!t||n<t.dist?{label:r,dist:n}:t},null))||void 0===r?void 0:r.label}(o.labels,e);return o.currentPixel={x:r.x,y:r.y},_(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")}return C(t),D(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){C(t),D(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=k(o.highlightedExpr,t.getZoom());t.setLayoutProperty(o.highlightLayerId,"text-size",1.5*e)}}),function(t){t.getStyle().layers.filter(function(t){return"symbol"===t.type}).forEach(function(e){t.setPaintProperty(e.id,"text-opacity",["case",["boolean",["feature-state","highlighted"],!1],0,1])})}(t),{refreshLabels:a,highlightNextLabel:function(e){if(a(),!o.labels.length)return null;if(!o.currentPixel)return i();var r=function(t,e){if(!e.currentPixel)return null;var r=e.labels.map(function(t,e){return{pixel:[t.x,t.y],index:e}}).filter(function(t){return t.pixel[0]!==e.currentPixel.x||t.pixel[1]!==e.currentPixel.y});if(!r.length)return null;var n=r.map(function(t){return t.pixel}),o=function(t,e,r){var n=b(e,2),o=n[0],a=n[1],i=r.filter(function(e){var r=b(e,2),n=r[0],i=r[1];return(n!==o||i!==a)&&function(t,e,r){switch(t){case"ArrowUp":return r<0&&Math.abs(r)>=Math.abs(e);case"ArrowDown":return r>0&&Math.abs(r)>=Math.abs(e);case"ArrowLeft":return e<0&&Math.abs(e)>Math.abs(r);case"ArrowRight":return e>0&&Math.abs(e)>Math.abs(r);default:return!1}}(t,n-o,i-a)});if(!i.length)return r.findIndex(function(t){return t[0]===o&&t[1]===a});var u=-1,l=1/0;return i.forEach(function(t){var e=t[0]-o,n=t[1]-a,i=e*e+n*n;i<l&&(l=i,u=r.indexOf(t))}),u}(t,[e.currentPixel.x,e.currentPixel.y],n);return(null==o||o<0||o>=r.length)&&(o=0),e.labels[r[o].index]}(e,o);return r?(o.currentPixel={x:r.x,y:r.y},_(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return R(t,o)}}}function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function G(t){return function(t){if(Array.isArray(t))return q(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||z(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,u=[],l=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return u}}(t,e)||z(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(t,e){if(t){if("string"==typeof t)return q(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(t,e):void 0}}function q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function Z(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function W(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Z(Object(r),!0).forEach(function(e){H(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Z(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function H(t,e,r){return(e=function(t){var e=function(t){if("object"!=B(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=B(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var U="icon-image",V="active-highlight",Y="active-highlight-inner",J="selected-highlight",K=function(t,e){var r,n;return null!==(r=null===(n=t._activeSymbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null},X=function(t,e){var r,n;return null!==(r=null===(n=t._selectedSymbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null},Q=function(t,e,r,n){e.forEach(function(e){if(!r.has(e)){var o="".concat(n,"-").concat(e);["".concat(o,"-fill"),"".concat(o,"-line"),"".concat(o,"-symbol")].forEach(function(e){t.getLayer(e)&&t.setFilter(e,["==","id",""])})}})},tt=function(t,e){var r="_".concat(e.replaceAll("-",""),"Sources");Q(t,t[r]||new Set,new Set,e),t[r]=new Set},et=function(t,e,r,n,o,a,i){t.getLayer(e)||t.addLayer(W(W({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n=$(r,2),o=n[0],a=n[1];t.setPaintProperty(e,o,a)}),t.setFilter(e,i),t.moveLayer(e)},rt=function(t,e,r,n,o,a){var i=r[e],u=i.ids,l=i.fillIds,s=i.idProperty,c=i.layerId,f=i.hasFillGeometry,h=t.getLayer(c),p=h.sourceLayer,y=f?"fill":h.type,d="".concat(o,"-").concat(e),g=n[c],v=g.stroke,m=g.selectionStroke,b=g.strokeWidth,M=g.activeStrokeWidth,w=g.fill,S=o===J,P=function(t){return t===J||t===Y}(o),x=P?m:v,O=P?b:M,E=s?["get",s]:["id"],N=["in",E,["literal",G(u)]];if("fill"===y){if(S){var j=["in",E,["literal",G(l)]];et(t,"".concat(d,"-fill"),"fill",e,p,{"fill-color":w},j)}et(t,"".concat(d,"-line"),"line",e,p,{"line-color":x,"line-width":O},N)}"line"===y&&(t.getLayer("".concat(d,"-fill"))&&t.setFilter("".concat(d,"-fill"),["==","id",""]),et(t,"".concat(d,"-line"),"line",e,p,{"line-color":x,"line-width":O},N)),"symbol"===y&&function(t,e,r,n,o,a,i){var u=t.getLayoutProperty(o,U),l=i(t,u);l&&function(t,e,r,n,o,a,i){var u;t.getLayer(e)||t.addLayer(W(W({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:H(H(H({},U,a),"icon-anchor",null!==(u=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==u?u:"center"),"icon-allow-overlap",!0)})),t.setLayoutProperty(e,U,a),t.setFilter(e,i),t.moveLayer(e)}(t,"".concat(e,"-symbol"),r,n,o,l,a)}(t,d,e,p,c,N,a)},nt=function(t,e,r,n,o){var a=function(t,e){var r={};return null==e||e.forEach(function(e){var n=e.featureId,o=e.layerId,a=e.idProperty,i=e.geometry,u=t.getLayer(o);if(u){var l=u.source;r[l]||(r[l]={ids:new Set,fillIds:new Set,idProperty:a,layerId:o,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(r[l].hasFillGeometry=!0,r[l].fillIds.add(n)),r[l].ids.add(n)}}),r}(t,e),i=new Set(Object.keys(a)),u="_".concat(n.replaceAll("-",""),"Sources"),l=t[u]||new Set;return Q(t,l,i,n),t[u]=i,i.forEach(function(e){return rt(t,e,a,r,n,o)}),a};function ot(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,u=[],l=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(u.push(n.value),u.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return at(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?at(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function at(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var it=function(t,e,r){var n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);if(0===n)return Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2);var o=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return o=Math.max(0,Math.min(1,o)),Math.pow(t.x-(e.x+o*(r.x-e.x)),2)+Math.pow(t.y-(e.y+o*(r.y-e.y)),2)};function ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var lt=function(t,e,r){var n=t.getCanvas();if(r&&t.off("mousemove",r),null==e||!e.length)return n.style.cursor="",null;var o=function(r){var o=e.filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return ut(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ut(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}(e);try{for(a.s();!(r=a.n()).done;){var i=r.value;if("line"===t.getLayer(i).type){var u=i.endsWith("-stroke")?i.slice(0,-7):null;null!==u&&e.includes(u)||n.push(i)}else o.push(i)}}catch(t){a.e(t)}finally{a.f()}return{lineLayers:n,otherLayers:o}}(t,o),i=a.lineLayers,u=a.otherLayers,l=r.point,s=l.x,c=l.y,f=[[s-10,c-10],[s+10,c+10]],h=i.length>0&&t.queryRenderedFeatures(f,{layers:i}).length>0,p=u.length>0&&t.queryRenderedFeatures(r.point,{layers:u}).length>0;n.style.cursor=h||p?"pointer":""}else n.style.cursor=""};return t.on("mousemove",o),o};function st(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var l=n&&n.prototype instanceof u?n:u,s=Object.create(l.prototype);return ct(s,"_invoke",function(r,n,o){var a,u,l,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,u=0,l=t,h.n=r,i}};function p(r,n){for(u=r,l=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(l=a[(u=a[4])?5:(u=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(u=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,u=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),u=c,l=y;(e=u<2?t:l)||!f;){a||(u?u<3?(u>1&&(h.n=-1),p(u,l)):h.n=l:h.v=l);try{if(s=2,a){if(u||(o="next"),e=a[o]){if(!(e=e.call(a,l)))throw TypeError("iterator result is not an object");if(!e.done)return e;l=e.value,u<2&&(u=0)}else 1===u&&(e=a.return)&&e.call(a),u<2&&(l=TypeError("The iterator does not provide a '"+o+"' method"),u=1);a=t}else if((e=(f=h.n<0)?l:r.call(n,h))!==i)break}catch(e){a=t,u=1,l=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function u(){}function l(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(ct(e={},n,function(){return this}),e),f=s.prototype=u.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,ct(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=s,ct(f,"constructor",s),ct(s,"constructor",l),l.displayName="GeneratorFunction",ct(s,o,"GeneratorFunction"),ct(f),ct(f,o,"Generator"),ct(f,n,function(){return this}),ct(f,"toString",function(){return"[object Generator]"}),(st=function(){return{w:a,m:h}})()}function ct(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}ct=function(t,e,r,n){function a(e,r){ct(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},ct(t,e,r,n)}function ft(t,e,r,n,o,a,i){try{var u=t[a](i),l=u.value}catch(t){return void r(t)}u.done?e(l):Promise.resolve(l).then(n,o)}function ht(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){ft(a,n,o,i,u,"next",t)}function u(t){ft(a,n,o,i,u,"throw",t)}i(void 0)})}}var pt=function(){var t=ht(st().m(function t(e,r,n,o){var a,i=arguments;return st().w(function(t){for(;;)switch(t.n){case 0:if(a=i.length>4&&void 0!==i[4]?i[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return e._activeSymbolImageMap={},e._selectedSymbolImageMap={},t.n=2,Promise.all(r.flatMap(function(t){var r=o.getSymbolImageId(t,n,!1,a),i=o.getSymbolImageId(t,n,!0,a);return r&&i&&(e._activeSymbolImageMap[r]=i),["normal","active","selected"].map(function(){var u=ht(st().m(function u(l){var s,c;return st().w(function(u){for(;;)switch(u.n){case 0:if(s="active"===l?i:r,"selected"===l||s&&!e.hasImage(s)){u.n=1;break}return u.a(2);case 1:return u.n=2,o.rasteriseSymbolImage(t,n,l,a);case 2:(c=u.v)&&("selected"===l&&r&&(e._selectedSymbolImageMap[r]=c.imageId),e.hasImage(c.imageId)||e.addImage(c.imageId,c.imageData,{pixelRatio:a}));case 3:return u.a(2)}},u)}));return function(t){return u.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),yt=function(t){return Math.max(2,2*t)},dt=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")};function gt(t){return gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gt(t)}var vt=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===gt(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null},mt=function(t,e,r){return new Promise(function(n,o){var a="data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(t)),i=new Image(e,r);i.onload=function(){var t=document.createElement("canvas");t.width=e,t.height=r;var o=t.getContext("2d");o.drawImage(i,0,0,e,r),n(o.getImageData(0,0,e,r))},i.onerror=function(){o(new Error("Failed to rasterise SVG: ".concat(t.slice(0,80))))},i.src=a})};function bt(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var l=n&&n.prototype instanceof u?n:u,s=Object.create(l.prototype);return Mt(s,"_invoke",function(r,n,o){var a,u,l,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,u=0,l=t,h.n=r,i}};function p(r,n){for(u=r,l=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(l=a[(u=a[4])?5:(u=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(u=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,u=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),u=c,l=y;(e=u<2?t:l)||!f;){a||(u?u<3?(u>1&&(h.n=-1),p(u,l)):h.n=l:h.v=l);try{if(s=2,a){if(u||(o="next"),e=a[o]){if(!(e=e.call(a,l)))throw TypeError("iterator result is not an object");if(!e.done)return e;l=e.value,u<2&&(u=0)}else 1===u&&(e=a.return)&&e.call(a),u<2&&(l=TypeError("The iterator does not provide a '"+o+"' method"),u=1);a=t}else if((e=(f=h.n<0)?l:r.call(n,h))!==i)break}catch(e){a=t,u=1,l=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function u(){}function l(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(Mt(e={},n,function(){return this}),e),f=s.prototype=u.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,Mt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=s,Mt(f,"constructor",s),Mt(s,"constructor",l),l.displayName="GeneratorFunction",Mt(s,o,"GeneratorFunction"),Mt(f),Mt(f,o,"Generator"),Mt(f,n,function(){return this}),Mt(f,"toString",function(){return"[object Generator]"}),(bt=function(){return{w:a,m:h}})()}function Mt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Mt=function(t,e,r,n){function a(e,r){Mt(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},Mt(t,e,r,n)}function wt(t,e,r,n,o,a,i){try{var u=t[a](i),l=u.value}catch(t){return void r(t)}u.done?e(l):Promise.resolve(l).then(n,o)}function St(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){wt(a,n,o,i,u,"next",t)}function u(t){wt(a,n,o,i,u,"throw",t)}i(void 0)})}}var Pt=new Map,xt=function(){var t=St(bt().m(function t(e,r,n,o){var a,i,u,l,s,c,f,h,p,y;return bt().w(function(t){for(;;)switch(t.n){case 0:if(a=n.getPatternInnerContent(e)){t.n=1;break}return t.a(2,null);case 1:if(i=n.getPatternImageId(e,r,o)){t.n=2;break}return t.a(2,null);case 2:if(u=Pt.get(i)){t.n=4;break}return l=vt(e.fillPatternForegroundColor,r)||"black",s=vt(e.fillPatternBackgroundColor,r)||"transparent",c=dt(a,l,s),f='<rect width="16" height="16" fill="'.concat(s,'"/>'),h=yt(o),p=Math.round(8*h),y='<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(p,'" height="').concat(p,'" viewBox="0 0 16 16">').concat(f).concat(c,"</svg>"),t.n=3,mt(y,p,p);case 3:u=t.v,Pt.set(i,u);case 4:return t.a(2,{imageId:i,imageData:u})}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),Ot=function(){var t=St(bt().m(function t(e,r,n,o,a){var i;return bt().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return i=yt(a),t.n=2,Promise.all(r.map(function(){var t=St(bt().m(function t(r){var u,l;return bt().w(function(t){for(;;)switch(t.n){case 0:if((u=o.getPatternImageId(r,n,a))&&!e.hasImage(u)){t.n=1;break}return t.a(2);case 1:return t.n=2,xt(r,n,o,a);case 2:(l=t.v)&&e.addImage(l.imageId,l.imageData,{pixelRatio:i});case 3:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}()));case 2:return t.a(2)}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}(),Et=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function Nt(t){return Nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Nt(t)}function jt(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var l=n&&n.prototype instanceof u?n:u,s=Object.create(l.prototype);return At(s,"_invoke",function(r,n,o){var a,u,l,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,u=0,l=t,h.n=r,i}};function p(r,n){for(u=r,l=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(l=a[(u=a[4])?5:(u=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(u=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,u=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),u=c,l=y;(e=u<2?t:l)||!f;){a||(u?u<3?(u>1&&(h.n=-1),p(u,l)):h.n=l:h.v=l);try{if(s=2,a){if(u||(o="next"),e=a[o]){if(!(e=e.call(a,l)))throw TypeError("iterator result is not an object");if(!e.done)return e;l=e.value,u<2&&(u=0)}else 1===u&&(e=a.return)&&e.call(a),u<2&&(l=TypeError("The iterator does not provide a '"+o+"' method"),u=1);a=t}else if((e=(f=h.n<0)?l:r.call(n,h))!==i)break}catch(e){a=t,u=1,l=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function u(){}function l(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(At(e={},n,function(){return this}),e),f=s.prototype=u.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,At(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=s,At(f,"constructor",s),At(s,"constructor",l),l.displayName="GeneratorFunction",At(s,o,"GeneratorFunction"),At(f),At(f,o,"Generator"),At(f,n,function(){return this}),At(f,"toString",function(){return"[object Generator]"}),(jt=function(){return{w:a,m:h}})()}function At(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}At=function(t,e,r,n){function a(e,r){At(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},At(t,e,r,n)}function Tt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Lt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Tt(Object(r),!0).forEach(function(e){It(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Tt(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function It(t,e,r){return(e=Ct(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function kt(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Rt(t,e,r,n,o,a,i){try{var u=t[a](i),l=u.value}catch(t){return void r(t)}u.done?e(l):Promise.resolve(l).then(n,o)}function _t(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){Rt(a,n,o,i,u,"next",t)}function u(t){Rt(a,n,o,i,u,"throw",t)}i(void 0)})}}function Dt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ct(n.key),n)}}function Ct(t){var e=function(t){if("object"!=Nt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=Nt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Nt(e)?e:e+""}var Ft=function(){return t=function t(e){var r=e.mapFramework,n=e.mapProviderConfig,a=void 0===n?{}:n,i=e.events,u=e.eventBus;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maplibreModule=r,this.events=i,this.eventBus=u,this.capabilities={supportedShortcuts:o,supportsMapSizes:!0},Object.assign(this,a)},e=[{key:"initMap",value:(l=_t(jt().m(function t(e){var r,n,o,u,l,f,h,p,y,d,g,v,m,b=this;return jt().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,u=e.mapSize,l=e.center,f=e.zoom,h=e.bounds,p=e.pixelRatio,y=kt(e,Et),this.mapStyleId=null==o?void 0:o.id,this.mapSize=u,d=this.maplibreModule.Map,g=this.events,v=this.eventBus,(m=new d(Lt(Lt({},y),{},{container:r,style:null==o?void 0:o.url,pixelRatio:p,padding:n,center:l,zoom:f,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),h&&m.fitBounds(h,{duration:0}),i(m),a(m),s({map:m,events:g,eventBus:v,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),c({mapProvider:this,map:m,events:g,eventBus:v}),m.on("load",function(){b.labelNavigator=F(m,null==o?void 0:o.mapColorScheme,g,v)}),this.eventBus.emit(g.MAP_READY,{map:this.map,mapStyleId:this.mapStyleId,mapSize:this.mapSize,crs:this.crs});case 1:return t.a(2)}},t,this)})),function(t){return l.apply(this,arguments)})},{key:"destroyMap",value:function(){var t,e;this.setHoverCursor([]),null===(t=this.mapEvents)||void 0===t||t.remove(),null===(e=this.appEvents)||void 0===e||e.remove(),this.mapEvents=null,this.appEvents=null,this.map.remove()}},{key:"setHoverCursor",value:function(t){this.map&&(this._onHoverMove=lt(this.map,t,this._onHoverMove))}},{key:"setView",value:function(t){var e=t.center,r=t.zoom;this.map.flyTo({center:e||this.getCenter(),zoom:r||this.getZoom(),duration:this.map.isStyleLoaded()?n:0})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:n})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:n})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:n})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:x(t),r=this.map.isStyleLoaded()?n:0;this.map.fitBounds(e,{duration:r})}},{key:"setPadding",value:function(t){this.map.setPadding(t)}},{key:"updateHighlightedFeatures",value:function(t,e,r){return function(t){var e=t.LngLatBounds,r=t.map,n=t.selectedFeatures,o=t.activeFeatures,a=t.stylesMap;if(!r)return null;null!=o&&o.length?(nt(r,o,a,V,K),nt(r,o,a,Y,X)):(tt(r,V),tt(r,Y));var i={};null!=n&&n.length?i=nt(r,n,a,J,X):tt(r,J);var u=[];return Object.entries(i).forEach(function(t){var e=$(t,2)[1],n=e.ids,o=e.idProperty,a=e.layerId;u.push.apply(u,G(r.queryRenderedFeatures({layers:[a]}).filter(function(t){var e;return n.has(o?null===(e=t.properties)||void 0===e?void 0:e[o]:t.id)})))}),function(t,e){if(!e.length)return null;var r=new t;return e.forEach(function(t){var e=function(t){return"number"==typeof t[0]?r.extend(t):t.forEach(e)};e(t.geometry.coordinates)}),[r.getWest(),r.getSouth(),r.getEast(),r.getNorth()]}(e,u)}({LngLatBounds:this.maplibreModule.LngLatBounds,map:this.map,selectedFeatures:t,activeFeatures:e,stylesMap:r})}},{key:"highlightNextLabel",value:function(t){var e;return(null===(e=this.labelNavigator)||void 0===e?void 0:e.highlightNextLabel(t))||null}},{key:"highlightLabelAtCenter",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.highlightLabelAtCenter())||null}},{key:"clearHighlightedLabel",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.clearHighlightedLabel())||null}},{key:"getCenter",value:function(){var t=this.map.getCenter();return[Number(t.lng.toFixed(7)),Number(t.lat.toFixed(7))]}},{key:"getZoom",value:function(){return Number(this.map.getZoom().toFixed(7))}},{key:"getBounds",value:function(){return this.map.getBounds().toArray().flat(1)}},{key:"getFeaturesAtPoint",value:function(t,e){return function(t,e){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).radius,n=void 0===r?10:r,o=[[e.x-n,e.y-n],[e.x+n,e.y+n]],a=t.queryRenderedFeatures(o);if(0===a.length)return[];var i=new Set(t.queryRenderedFeatures([e.x,e.y]).map(function(t){var e,r=void 0===t.id?JSON.stringify(t.properties):t.id;return"".concat(null===(e=t.layer)||void 0===e?void 0:e.source,":").concat(r)})),u=[];a.forEach(function(t){!1===u.includes(t.layer.id)&&u.push(t.layer.id)});for(var l=new Set,s=[],c=a.length-1;c>=0;c--){var f,h=a[c],p=void 0===h.id?JSON.stringify(h.properties):h.id,y="".concat(null===(f=h.layer)||void 0===f?void 0:f.source,":").concat(p);!1===l.has(y)&&(l.add(y),s.push(h))}var d=t.unproject(e),g=[d.lng,d.lat],v=s.filter(function(t){var e=t.geometry.type;if(e.includes("Polygon"))return("Polygon"===e?[t.geometry.coordinates]:t.geometry.coordinates).some(function(t){return function(t,e){for(var r=ot(t,2),n=r[0],o=r[1],a=!1,i=0,u=e.length-1;i<e.length;u=i,i++){var l=ot(e[i],2),s=l[0],c=l[1],f=ot(e[u],2),h=f[0],p=f[1];c>o!=p>o&&n<(h-s)*(o-c)/(p-c)+s&&(a=!a)}return a}(g,t[0])});if("Point"===e||"MultiPoint"===e){var r,n=void 0===t.id?JSON.stringify(t.properties):t.id;return i.has("".concat(null===(r=t.layer)||void 0===r?void 0:r.source,":").concat(n))}return!0});return v.map(function(r){var n=0,o=r.geometry.type,a=function(t,e,r){var n=r.coordinates,o=r.type,a=1/0,i=function(e){return t.project(e)},u=function(t){for(var r=0;r<t.length-1;r++){var n=it(e,i(t[r]),i(t[r+1]));n<a&&(a=n)}};if("Point"===o){var l=i(n);a=Math.pow(e.x-l.x,2)+Math.pow(e.y-l.y,2)}else"LineString"===o||"MultiPoint"===o?"LineString"===o?u(n):n.forEach(function(t){var r=i(t),n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);n<a&&(a=n)}):"Polygon"===o||"MultiLineString"===o?n.forEach(u):"MultiPolygon"===o&&n.forEach(function(t){return t.forEach(u)});return a}(t,e,r.geometry);return n+=1e6*u.indexOf(r.layer.id),o.includes("Polygon")&&(n-=5e5),{f:r,score:n+=a}}).sort(function(t,e){return t.score-e.score}).map(function(t){return t.f})}(this.map,t,e)}},{key:"getVisibleFeatures",value:function(t){var e=this,r=t.filter(function(t){return e.map.getLayer(t)});return r.length?this.map.queryRenderedFeatures(void 0,{layers:r}):[]}},{key:"addSymbolsToMap",value:(u=_t(jt().m(function t(e,r,n){var o;return jt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,pt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return u.apply(this,arguments)})},{key:"addPatternsToMap",value:(r=_t(jt().m(function t(e,r,n){var o;return jt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,Ot(this.map,e,r,n,o))},t,this)})),function(t,e,n){return r.apply(this,arguments)})},{key:"getAreaDimensions",value:function(){return function(t){var e,r,n,o;if(t&&"function"==typeof t.getWest)e=t.getWest(),r=t.getSouth(),n=t.getEast(),o=t.getNorth();else{if(!Array.isArray(t)||2!==t.length)return"";var a=b(t,2),i=b(a[0],2);e=i[0],r=i[1];var u=b(a[1],2);n=u[0],o=u[1]}var l=S([e,r],[n,r]),s=S([e,r],[e,o]),c=P(l),f=P(s);return"".concat(f," by ").concat(c)}((t=this.maplibreModule.LngLatBounds,e=this.map,r=e.getContainer().getBoundingClientRect(),n=r.width,o=r.height,a=e.getPadding(),i=[a.left,o-a.bottom],u=[n-a.right,a.top],new t(e.unproject(i),e.unproject(u))));var t,e,r,n,o,a,i,u}},{key:"getCardinalMove",value:function(t,e){return function(t,e){var r=b(t,2),n=r[0],o=r[1],a=b(e,2),i=a[0],u=a[1],l=u-o,s=i-n,c=[];if(Math.abs(l)>1e-4){var f=Math.round(S([n,o],[n,u]));c.push("".concat(l>0?"north":"south"," ").concat(P(f)))}if(Math.abs(s)>1e-4){var h=Math.round(S([n,o],[i,o]));c.push("".concat(s>0?"east":"west"," ").concat(P(h)))}return c.join(", ")}(t,e)}},{key:"getResolution",value:function(){return t=this.map.getCenter(),e=this.map.getZoom(),r=t.lat,n=Math.pow(2,e),40075016.686*Math.cos(r*Math.PI/180)/(512*n);var t,e,r,n}},{key:"mapToScreen",value:function(t){return this.map.project(t)}},{key:"screenToMap",value:function(t){var e=this.map.unproject([t.x,t.y]);return[e.lng,e.lat]}},{key:"isGeometryObscured",value:function(t,e){return function(t,e,r){var n=r.getContainer().getBoundingClientRect(),o=b(x(t),4),a=o[0],i=o[1],u=o[2],l=o[3],s=[r.project([a,i]),r.project([a,l]),r.project([u,i]),r.project([u,l])],c=Math.min.apply(Math,m(s.map(function(t){return t.x}))),f=Math.max.apply(Math,m(s.map(function(t){return t.x}))),h=Math.min.apply(Math,m(s.map(function(t){return t.y}))),p=Math.max.apply(Math,m(s.map(function(t){return t.y}))),y=e.left-n.left,d=e.top-n.top,g=e.right-n.left,v=e.bottom-n.top;return c<g&&f>y&&h<v&&p>d}(t,e,this.map)}}],e&&Dt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,u,l}()}}]);
|
|
2
|
+
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[772],{419(t,e,r){r.r(e),r.d(e,{default:()=>Ft});var n=400,o=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];function a(t){var e=t.getCanvas();e.removeAttribute("role"),e.setAttribute("tabindex",-1),e.removeAttribute("aria-label"),e.style.display="block",e.addEventListener("focus",function(t){e.blur(),t.relatedTarget&&t.relatedTarget.focus()})}function i(t){var e=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){if(("touchmove"===this.type||"touchstart"===this.type)&&!this.cancelable){var r=t.getCanvas();if(r&&(this.target===r||r.contains(this.target)))return}e.call(this)}}var l=function(t,e){var r=null,n=function(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];clearTimeout(r),r=setTimeout(function(){t.apply(void 0,o)},e)};return n.cancel=function(){r&&(clearTimeout(r),r=null)},n};function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function s(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,s=t.getResolution,c=[],f=[],h=function(){var t=a();return{center:o(),bounds:i(),resolution:s(),zoom:t,isAtMaxZoom:e.getMaxZoom()<=t,isAtMinZoom:e.getMinZoom()>=t}},p=function(t,e){return n.emit(t,e)},y=function(){return p(r.MAP_LOADED)};e.on("load",y),c.push(["load",y]),e.once("idle",function(){return p(r.MAP_FIRST_IDLE,h())});var d=function(){return p(r.MAP_MOVE_START)};e.on("movestart",d),c.push(["movestart",d]);var g=l(function(){p(r.MAP_MOVE_END,h())},500);e.on("moveend",g),c.push(["moveend",g]);var v,m,b=(v=function(){p(r.MAP_MOVE,h())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,v.apply(void 0,arguments))});e.on("zoom",b),c.push(["zoom",b]);var M=function(){return p(r.MAP_RENDER)};e.on("render",M),c.push(["render",M]);var w=l(function(){p(r.MAP_DATA_CHANGE,h())},500),S=function(t){t.isSourceLoaded&&w()};e.on("styledata",w),e.on("sourcedata",S),c.push(["styledata",w],["sourcedata",S]);var P=function(){return p(r.MAP_STYLE_CHANGE)};e.on("style.load",P),c.push(["style.load",P]);var x=function(t){return p(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",x),c.push(["click",x]),f.push(g,b,w),{remove:function(){f.forEach(function(t){return t.cancel()}),c.forEach(function(t){var r,n,o=(n=2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,n)||function(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(r,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),a=o[0],i=o[1];return e.off(a,i)})}}}function c(t){var e=t.mapProvider,r=t.map,n=t.events,o=t.eventBus,a=function(t){r.once("style.load",function(){o.emit(n.MAP_STYLE_CHANGE,{mapStyleId:t.id})}),r.setStyle(t.url,{diff:!1})},i=function(t){r.setPixelRatio(t)},l=function(t){var r=t.mapSize;e.mapSize=r};return o.on(n.MAP_SET_STYLE,a),o.on(n.MAP_SET_PIXEL_RATIO,i),o.on(n.MAP_SIZE_CHANGE,l),{remove:function(){o.off(n.MAP_SET_STYLE,a),o.off(n.MAP_SET_PIXEL_RATIO,i),o.off(n.MAP_SIZE_CHANGE,l)}}}let f=" ";class h{static get separator(){return f}static set separator(t){f=t}static parse(t){if(!isNaN(parseFloat(t))&&isFinite(t))return Number(t);const e=String(t).trim().replace(/^-/,"").replace(/[NSEW]$/i,"").split(/[^0-9.,]+/);if(""==e[e.length-1]&&e.splice(e.length-1),""==e)return NaN;let r=null;switch(e.length){case 3:r=e[0]/1+e[1]/60+e[2]/3600;break;case 2:r=e[0]/1+e[1]/60;break;case 1:r=e[0];break;default:return NaN}return/^-|[WS]$/i.test(t.trim())&&(r=-r),Number(r)}static toDms(t,e="d",r=void 0){if(isNaN(t))return null;if("string"==typeof t&&""==t.trim())return null;if("boolean"==typeof t)return null;if(t==1/0)return null;if(null==t)return null;if(void 0===r)switch(e){case"d":case"deg":r=4;break;case"dm":case"deg+min":r=2;break;case"dms":case"deg+min+sec":r=0;break;default:e="d",r=4}t=Math.abs(t);let n=null,o=null,a=null,i=null;switch(e){default:case"d":case"deg":o=t.toFixed(r),o<100&&(o="0"+o),o<10&&(o="0"+o),n=o+"°";break;case"dm":case"deg+min":o=Math.floor(t),a=(60*t%60).toFixed(r),60==a&&(a=(0).toFixed(r),o++),o=("000"+o).slice(-3),a<10&&(a="0"+a),n=o+"°"+h.separator+a+"′";break;case"dms":case"deg+min+sec":o=Math.floor(t),a=Math.floor(3600*t/60)%60,i=(3600*t%60).toFixed(r),60==i&&(i=(0).toFixed(r),a++),60==a&&(a=0,o++),o=("000"+o).slice(-3),a=("00"+a).slice(-2),i<10&&(i="0"+i),n=o+"°"+h.separator+a+"′"+h.separator+i+"″"}return n}static toLat(t,e,r){const n=h.toDms(h.wrap90(t),e,r);return null===n?"–":n.slice(1)+h.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=h.toDms(h.wrap180(t),e,r);return null===n?"–":n+h.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=h.toDms(h.wrap360(t),e,r);return null===n?"–":n.replace("360","0")}static fromLocale(t){const e=123456.789.toLocaleString(),r={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(r.thousands,"⁜").replace(r.decimal,".").replace("⁜",",")}static toLocale(t){const e=123456.789.toLocaleString(),r={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(/,([0-9])/,"⁜$1").replace(".",r.decimal).replace("⁜",r.thousands)}static compassPoint(t,e=3){if(![1,2,3].includes(Number(e)))throw new RangeError(`invalid precision ‘${e}’`);t=h.wrap360(t);const r=4*2**(e-1);return["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.round(t*r/360)%r*16/r]}static wrap90(t){if(-90<=t&&t<=90)return t;const e=t;return 1*Math.abs(((e-90)%360+360)%360-180)-90}static wrap180(t){if(-180<=t&&t<=180)return t;const e=360;return((360*t/e-180)%e+e)%e-180}static wrap360(t){if(0<=t&&t<360)return t;const e=360;return(360*t/e%e+e)%e}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const p=h,y=Math.PI;class d{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=p.wrap90(Number(t)),this._lon=p.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?p.wrap90(p.parse(t)):p.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?p.wrap90(p.parse(t)):p.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid latitude ‘${t}’`)}get lon(){return this._lon}get lng(){return this._lon}get longitude(){return this._lon}set lon(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?p.wrap180(p.parse(t)):p.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid longitude ‘${t}’`)}static get metresToKm(){return.001}static get metresToMiles(){return 1/1609.344}static get metresToNauticalMiles(){return 1/1852}static parse(...t){if(0==t.length)throw new TypeError("invalid (empty) point");if(null===t[0]||null===t[1])throw new TypeError("invalid (null) point");let e,r;if(2==t.length&&([e,r]=t,e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r)),isNaN(e)||isNaN(r)))throw new TypeError(`invalid point ‘${t.toString()}’`);if(1==t.length&&"string"==typeof t[0]&&([e,r]=t[0].split(","),e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r)),isNaN(e)||isNaN(r)))throw new TypeError(`invalid point ‘${t[0]}’`);if(1==t.length&&"object"==typeof t[0]){const n=t[0];if("Point"==n.type&&Array.isArray(n.coordinates)?[r,e]=n.coordinates:(null!=n.latitude&&(e=n.latitude),null!=n.lat&&(e=n.lat),null!=n.longitude&&(r=n.longitude),null!=n.lng&&(r=n.lng),null!=n.lon&&(r=n.lon),e=p.wrap90(p.parse(e)),r=p.wrap180(p.parse(r))),isNaN(e)||isNaN(r))throw new TypeError(`invalid point ‘${JSON.stringify(t[0])}’`)}if(isNaN(e)||isNaN(r))throw new TypeError(`invalid point ‘${t.toString()}’`);return new d(e,r)}distanceTo(t,e=6371e3){if(t instanceof d||(t=d.parse(t)),isNaN(e))throw new TypeError(`invalid radius ‘${e}’`);const r=e,n=this.lat.toRadians(),o=this.lon.toRadians(),a=t.lat.toRadians(),i=a-n,l=t.lon.toRadians()-o,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(a)*Math.sin(l/2)*Math.sin(l/2);return r*(2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)))}initialBearingTo(t){if(t instanceof d||(t=d.parse(t)),this.equals(t))return NaN;const e=this.lat.toRadians(),r=t.lat.toRadians(),n=(t.lon-this.lon).toRadians(),o=Math.cos(e)*Math.sin(r)-Math.sin(e)*Math.cos(r)*Math.cos(n),a=Math.sin(n)*Math.cos(r),i=Math.atan2(a,o).toDegrees();return p.wrap360(i)}finalBearingTo(t){t instanceof d||(t=d.parse(t));const e=t.initialBearingTo(this)+180;return p.wrap360(e)}midpointTo(t){t instanceof d||(t=d.parse(t));const e=this.lat.toRadians(),r=this.lon.toRadians(),n=t.lat.toRadians(),o=(t.lon-this.lon).toRadians(),a=Math.cos(e),i=Math.sin(e),l={x:a+Math.cos(n)*Math.cos(o),y:0+Math.cos(n)*Math.sin(o),z:i+Math.sin(n)},u=Math.atan2(l.z,Math.sqrt(l.x*l.x+l.y*l.y)),s=r+Math.atan2(l.y,l.x),c=u.toDegrees(),f=s.toDegrees();return new d(c,f)}intermediatePointTo(t,e){if(t instanceof d||(t=d.parse(t)),this.equals(t))return new d(this.lat,this.lon);const r=this.lat.toRadians(),n=this.lon.toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=o-r,l=a-n,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(r)*Math.cos(o)*Math.sin(l/2)*Math.sin(l/2),s=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)),c=Math.sin((1-e)*s)/Math.sin(s),f=Math.sin(e*s)/Math.sin(s),h=c*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),p=c*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),y=c*Math.sin(r)+f*Math.sin(o),g=Math.atan2(y,Math.sqrt(h*h+p*p)),v=Math.atan2(p,h),m=g.toDegrees(),b=v.toDegrees();return new d(m,b)}destinationPoint(t,e,r=6371e3){const n=t/r,o=Number(e).toRadians(),a=this.lat.toRadians(),i=this.lon.toRadians(),l=Math.sin(a)*Math.cos(n)+Math.cos(a)*Math.sin(n)*Math.cos(o),u=Math.asin(l),s=Math.sin(o)*Math.sin(n)*Math.cos(a),c=Math.cos(n)-Math.sin(a)*l,f=i+Math.atan2(s,c),h=u.toDegrees(),p=f.toDegrees();return new d(h,p)}static intersection(t,e,r,n){if(t instanceof d||(t=d.parse(t)),r instanceof d||(r=d.parse(r)),isNaN(e))throw new TypeError(`invalid brng1 ‘${e}’`);if(isNaN(n))throw new TypeError(`invalid brng2 ‘${n}’`);const o=t.lat.toRadians(),a=t.lon.toRadians(),i=r.lat.toRadians(),l=r.lon.toRadians(),u=Number(e).toRadians(),s=Number(n).toRadians(),c=i-o,f=l-a,h=2*Math.asin(Math.sqrt(Math.sin(c/2)*Math.sin(c/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new d(t.lat,t.lon);const p=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),g=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),v=Math.acos(Math.min(Math.max(p,-1),1)),m=Math.acos(Math.min(Math.max(g,-1),1)),b=u-(Math.sin(l-a)>0?v:2*y-v),M=(Math.sin(l-a)>0?2*y-m:m)-s;if(0==Math.sin(b)&&0==Math.sin(M))return null;if(Math.sin(b)*Math.sin(M)<0)return null;const w=-Math.cos(b)*Math.cos(M)+Math.sin(b)*Math.sin(M)*Math.cos(h),S=Math.atan2(Math.sin(h)*Math.sin(b)*Math.sin(M),Math.cos(M)+Math.cos(b)*w),P=Math.asin(Math.min(Math.max(Math.sin(o)*Math.cos(S)+Math.cos(o)*Math.sin(S)*Math.cos(u),-1),1)),x=a+Math.atan2(Math.sin(u)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),O=P.toDegrees(),E=x.toDegrees();return new d(O,E)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof d||(t=d.parse(t)),e instanceof d||(e=d.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians();return Math.asin(Math.sin(o)*Math.sin(a-i))*n}alongTrackDistanceTo(t,e,r=6371e3){t instanceof d||(t=d.parse(t)),e instanceof d||(e=d.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians(),l=Math.asin(Math.sin(o)*Math.sin(a-i));return Math.acos(Math.cos(o)/Math.abs(Math.cos(l)))*Math.sign(Math.cos(i-a))*n}maxLatitude(t){const e=Number(t).toRadians(),r=this.lat.toRadians();return Math.acos(Math.abs(Math.sin(e)*Math.cos(r))).toDegrees()}static crossingParallels(t,e,r){if(t.equals(e))return null;const n=Number(r).toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=e.lat.toRadians(),l=e.lon.toRadians()-a,u=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.sin(l),s=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(l)-Math.cos(o)*Math.sin(i)*Math.cos(n),c=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(l);if(c*c>u*u+s*s)return null;const f=Math.atan2(-s,u),h=Math.acos(c/Math.sqrt(u*u+s*s)),y=a+f+h,d=(a+f-h).toDegrees(),g=y.toDegrees();return{lon1:p.wrap180(d),lon2:p.wrap180(g)}}rhumbDistanceTo(t,e=6371e3){t instanceof d||(t=d.parse(t));const r=e,n=this.lat.toRadians(),o=t.lat.toRadians(),a=o-n;let i=Math.abs(t.lon-this.lon).toRadians();Math.abs(i)>y&&(i=i>0?-(2*y-i):2*y+i);const l=Math.log(Math.tan(o/2+y/4)/Math.tan(n/2+y/4)),u=Math.abs(l)>1e-11?a/l:Math.cos(n);return Math.sqrt(a*a+u*u*i*i)*r}rhumbBearingTo(t){if(t instanceof d||(t=d.parse(t)),this.equals(t))return NaN;const e=this.lat.toRadians(),r=t.lat.toRadians();let n=(t.lon-this.lon).toRadians();Math.abs(n)>y&&(n=n>0?-(2*y-n):2*y+n);const o=Math.log(Math.tan(r/2+y/4)/Math.tan(e/2+y/4)),a=Math.atan2(n,o).toDegrees();return p.wrap360(a)}rhumbDestinationPoint(t,e,r=6371e3){const n=this.lat.toRadians(),o=this.lon.toRadians(),a=Number(e).toRadians(),i=t/r,l=i*Math.cos(a);let u=n+l;Math.abs(u)>y/2&&(u=u>0?y-u:-y-u);const s=Math.log(Math.tan(u/2+y/4)/Math.tan(n/2+y/4)),c=Math.abs(s)>1e-11?l/s:Math.cos(n),f=o+i*Math.sin(a)/c,h=u.toDegrees(),p=f.toDegrees();return new d(h,p)}rhumbMidpointTo(t){t instanceof d||(t=d.parse(t));const e=this.lat.toRadians();let r=this.lon.toRadians();const n=t.lat.toRadians(),o=t.lon.toRadians();Math.abs(o-r)>y&&(r+=2*y);const a=(e+n)/2,i=Math.tan(y/4+e/2),l=Math.tan(y/4+n/2),u=Math.tan(y/4+a/2);let s=((o-r)*Math.log(u)+r*Math.log(l)-o*Math.log(i))/Math.log(l/i);isFinite(s)||(s=(r+o)/2);const c=a.toDegrees(),f=s.toDegrees();return new d(c,f)}static areaOf(t,e=6371e3){const r=e,n=t[0].equals(t[t.length-1]);n||t.push(t[0]);const o=t.length-1;let a=0;for(let e=0;e<o;e++){const r=t[e].lat.toRadians(),n=t[e+1].lat.toRadians(),o=(t[e+1].lon-t[e].lon).toRadians();a+=2*Math.atan2(Math.tan(o/2)*(Math.tan(r/2)+Math.tan(n/2)),1+Math.tan(r/2)*Math.tan(n/2))}(function(t){let e=0,r=t[0].initialBearingTo(t[1]);for(let n=0;n<t.length-1;n++){const o=t[n].initialBearingTo(t[n+1]),a=t[n].finalBearingTo(t[n+1]);e+=(o-r+540)%360-180,e+=(a-o+540)%360-180,r=a}return e+=(t[0].initialBearingTo(t[1])-r+540)%360-180,Math.abs(e)<90})(t)&&(a=Math.abs(a)-2*y);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof d||(t=d.parse(t)),!(Math.abs(this.lat-t.lat)>Number.EPSILON||Math.abs(this.lon-t.lon)>Number.EPSILON)}toGeoJSON(){return{type:"Point",coordinates:[this.lon,this.lat]}}toString(t="d",e=void 0){if(!["d","dm","dms","n"].includes(t))throw new RangeError(`invalid format ‘${t}’`);return"n"==t?(null==e&&(e=4),`${this.lat.toFixed(e)},${this.lon.toFixed(e)}`):`${p.toLat(this.lat,t,e)}, ${p.toLon(this.lon,t,e)}`}}function g(t,e,r){if(null!==t)for(var n,o,a,i,l,u,s,c,f=0,h=0,p=t.type,y="FeatureCollection"===p,d="Feature"===p,v=y?t.features.length:1,m=0;m<v;m++){l=(c=!!(s=y?t.features[m].geometry:d?t.geometry:t)&&"GeometryCollection"===s.type)?s.geometries.length:1;for(var b=0;b<l;b++){var M=0,w=0;if(null!==(i=c?s.geometries[b]:s)){u=i.coordinates;var S=i.type;switch(f=!r||"Polygon"!==S&&"MultiPolygon"!==S?0:1,S){case null:break;case"Point":if(!1===e(u,h,m,M,w))return!1;h++,M++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===e(u[n],h,m,M,w))return!1;h++,"MultiPoint"===S&&M++}"LineString"===S&&M++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(o=0;o<u[n].length-f;o++){if(!1===e(u[n][o],h,m,M,w))return!1;h++}"MultiLineString"===S&&M++,"Polygon"===S&&w++}"Polygon"===S&&M++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for(w=0,o=0;o<u[n].length;o++){for(a=0;a<u[n][o].length-f;a++){if(!1===e(u[n][o][a],h,m,M,w))return!1;h++}w++}M++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===g(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var v=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return g(t,t=>{r[0]>t[0]&&(r[0]=t[0]),r[1]>t[1]&&(r[1]=t[1]),r[2]<t[0]&&(r[2]=t[0]),r[3]<t[1]&&(r[3]=t[1])}),r};function m(t){return function(t){if(Array.isArray(t))return w(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||M(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||M(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(t,e){if(t){if("string"==typeof t)return w(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(t,e):void 0}}function w(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var S=function(t,e){var r=b(t,2),n=r[0],o=r[1],a=b(e,2),i=a[0],l=a[1],u=new d(o,n),s=new d(l,i);return u.distanceTo(s)},P=function(t){var e=t/1609.344;if(e<.5)return"".concat(Math.round(t),"m");if(e<10){var r=Number.parseFloat(e.toFixed(1)),n=1===r?"mile":"miles";return"".concat(r," ").concat(n)}var o=Math.round(e);return"".concat(o," miles")},x=function(t){return v(t)};function O(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function N(t){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},N(t)}function j(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function A(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?j(Object(r),!0).forEach(function(e){T(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function T(t,e,r){return(e=function(t){var e=function(t){if("object"!=N(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=N(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==N(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function I(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var L="highlighted-label";function k(t,e){if("number"==typeof t)return t;if(!Array.isArray(t)||"interpolate"!==t[0])return function(t,e){var r=t.stops;if(r.length<2)return r.length>0?r[0][1]:0;for(var n=r[0],o=r[r.length-1],a=1;a<r.length;a++){var i=r[a];if(i[0]>e){o=i,n=r[a-1];break}n=r[a-1],o=i}var l=O(n,2),u=l[0],s=l[1],c=O(o,2),f=c[0],h=c[1];return e<=u?s:e>=f?h:s+(e-u)/(f-u)*(h-s)}(t,e);var r,n=function(t){if(Array.isArray(t))return t}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return I(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(t,e):void 0}}(r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),o=n[2],a=I(n).slice(3);if("zoom"!==o[0])throw new Error("Only zoom-based expressions supported");for(var i=0;i<a.length-2;i+=2){var l=a[i],u=a[i+1],s=a[i+2],c=a[i+3];if(e<=l)return u;if(e<=s)return u+(e-l)/(s-l)*(c-u)}return a[a.length-1]}function R(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function _(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){R(t,r);var l=e.feature,u=e.layer;r.highlightLayerId="highlight-".concat(u.id);var s=l.id,c=l.type,f=l.properties,h=l.geometry;t.getSource(L).setData({id:s,type:c,properties:f,geometry:h}),r.highlightedExpr=u.layout["text-size"];var p=t.getZoom(),y=(o=u,a=1.5*k(r.highlightedExpr,p),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:L,layout:A(A({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:A(A({},o.paint),{},{"text-color":i.text,"text-halo-color":i.halo,"text-halo-width":3,"text-halo-blur":1,"text-opacity":1})});t.addLayer(y),t.moveLayer(r.highlightLayerId)}}function D(t){t.getSource(L)||t.addSource(L,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function C(t){t.getStyle().layers.filter(function(t){var e;return"line"===(null===(e=t.layout)||void 0===e?void 0:e["symbol-placement"])}).forEach(function(e){return t.setLayoutProperty(e.id,"symbol-placement","line-center")})}function F(t,e,r,n){var o={isDarkStyle:"dark"===e,labels:[],currentPixel:null,highlightLayerId:null,highlightedExpr:null};function a(){var e=t.getStyle().layers.filter(function(t){return"symbol"===t.type}),r=t.queryRenderedFeatures({layers:e.map(function(t){return t.id})});o.labels=function(t,e,r){return e.flatMap(function(e){var n,o,a,i,l="string"==typeof(o=null===(n=e.layout)||void 0===n?void 0:n["text-field"])?null===(a=/^{(.+)}$/.exec(o))||void 0===a?void 0:a[1]:Array.isArray(o)?null===(i=o.find(function(t){return Array.isArray(t)&&"get"===t[0]}))||void 0===i?void 0:i[1]:null;return l?r.filter(function(t){var r;return t.layer.id===e.id&&(null===(r=t.properties)||void 0===r?void 0:r[l])}).map(function(r){return function(t,e,r,n){var o=function(t){var e=t.type,r=t.coordinates;if("Point"===e)return r;if("MultiPoint"===e)return r[0];if(e.includes("LineString")){var n="LineString"===e?r:r[0];return[(n[0][0]+n[n.length-1][0])/2,(n[0][1]+n[n.length-1][1])/2]}if(e.includes("Polygon")){var o="Polygon"===e?r[0]:r[0][0],a=o.reduce(function(t,e){return[t[0]+e[0],t[1]+e[1]]},[0,0]);return[a[0]/o.length,a[1]/o.length]}return null}(t.geometry);if(!o)return null;var a=n.project({lng:o[0],lat:o[1]});return{text:t.properties[r],x:a.x,y:a.y,feature:t,layer:e}}(r,e,l,t)}).filter(Boolean):[]})}(t,e,r)}function i(){if(a(),!o.labels.length)return null;var e=t.project(t.getCenter()),r=function(t,e){var r;return null===(r=t.reduce(function(t,r){var n=Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2);return!t||n<t.dist?{label:r,dist:n}:t},null))||void 0===r?void 0:r.label}(o.labels,e);return o.currentPixel={x:r.x,y:r.y},_(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")}return C(t),D(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){C(t),D(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=k(o.highlightedExpr,t.getZoom());t.setLayoutProperty(o.highlightLayerId,"text-size",1.5*e)}}),function(t){t.getStyle().layers.filter(function(t){return"symbol"===t.type}).forEach(function(e){t.setPaintProperty(e.id,"text-opacity",["case",["boolean",["feature-state","highlighted"],!1],0,1])})}(t),{refreshLabels:a,highlightNextLabel:function(e){if(a(),!o.labels.length)return null;if(!o.currentPixel)return i();var r=function(t,e){if(!e.currentPixel)return null;var r=e.labels.map(function(t,e){return{pixel:[t.x,t.y],index:e}}).filter(function(t){return t.pixel[0]!==e.currentPixel.x||t.pixel[1]!==e.currentPixel.y});if(!r.length)return null;var n=r.map(function(t){return t.pixel}),o=function(t,e,r){var n=b(e,2),o=n[0],a=n[1],i=r.filter(function(e){var r=b(e,2),n=r[0],i=r[1];return(n!==o||i!==a)&&function(t,e,r){switch(t){case"ArrowUp":return r<0&&Math.abs(r)>=Math.abs(e);case"ArrowDown":return r>0&&Math.abs(r)>=Math.abs(e);case"ArrowLeft":return e<0&&Math.abs(e)>Math.abs(r);case"ArrowRight":return e>0&&Math.abs(e)>Math.abs(r);default:return!1}}(t,n-o,i-a)});if(!i.length)return r.findIndex(function(t){return t[0]===o&&t[1]===a});var l=-1,u=1/0;return i.forEach(function(t){var e=t[0]-o,n=t[1]-a,i=e*e+n*n;i<u&&(u=i,l=r.indexOf(t))}),l}(t,[e.currentPixel.x,e.currentPixel.y],n);return(null==o||o<0||o>=r.length)&&(o=0),e.labels[r[o].index]}(e,o);return r?(o.currentPixel={x:r.x,y:r.y},_(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return R(t,o)}}}function B(t){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B(t)}function G(t){return function(t){if(Array.isArray(t))return q(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||z(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||z(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(t,e){if(t){if("string"==typeof t)return q(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(t,e):void 0}}function q(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function W(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function Z(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?W(Object(r),!0).forEach(function(e){H(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function H(t,e,r){return(e=function(t){var e=function(t){if("object"!=B(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=B(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==B(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var U="icon-image",V="active-highlight",Y="active-highlight-inner",J="selected-highlight",K=function(t,e){var r,n;return null!==(r=null===(n=t._activeSymbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null},X=function(t,e){var r,n;return null!==(r=null===(n=t._selectedSymbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null},Q=function(t,e,r,n){e.forEach(function(e){if(!r.has(e)){var o="".concat(n,"-").concat(e);["".concat(o,"-fill"),"".concat(o,"-line"),"".concat(o,"-symbol")].forEach(function(e){t.getLayer(e)&&t.setFilter(e,["==","id",""])})}})},tt=function(t,e){var r="_".concat(e.replaceAll("-",""),"Sources");Q(t,t[r]||new Set,new Set,e),t[r]=new Set},et=function(t,e,r,n,o,a,i){t.getLayer(e)||t.addLayer(Z(Z({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n=$(r,2),o=n[0],a=n[1];t.setPaintProperty(e,o,a)}),t.setFilter(e,i),t.moveLayer(e)},rt=function(t,e,r,n,o,a){var i=r[e],l=i.ids,u=i.fillIds,s=i.idProperty,c=i.layerId,f=i.hasFillGeometry,h=t.getLayer(c),p=h.sourceLayer,y=f?"fill":h.type,d="".concat(o,"-").concat(e),g=n[c];if(g){var v=g.stroke,m=g.selectionStroke,b=g.strokeWidth,M=g.activeStrokeWidth,w=g.fill,S=o===J,P=function(t){return t===J||t===Y}(o),x=P?m:v,O=P?b:M,E=s?["get",s]:["id"],N=["in",E,["literal",G(l)]];"fill"===y&&function(t,e,r,n,o){var a=o.fill,i=o.lineColor,l=o.lineWidth,u=o.filter;if(o.isSelected){var s=["in",o.idExpression,["literal",G(o.fillIds)]];et(t,"".concat(e,"-fill"),"fill",r,n,{"fill-color":a},s)}et(t,"".concat(e,"-line"),"line",r,n,{"line-color":i,"line-width":l},u)}(t,d,e,p,{isSelected:S,idExpression:E,fillIds:u,fill:w,lineColor:x,lineWidth:O,filter:N}),"line"===y&&(t.getLayer("".concat(d,"-fill"))&&t.setFilter("".concat(d,"-fill"),["==","id",""]),et(t,"".concat(d,"-line"),"line",e,p,{"line-color":x,"line-width":O},N)),"symbol"===y&&function(t,e,r,n,o,a,i){var l=t.getLayoutProperty(o,U),u=i(t,l);u&&function(t,e,r,n,o,a,i){var l;t.getLayer(e)||t.addLayer(Z(Z({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:H(H(H({},U,a),"icon-anchor",null!==(l=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==l?l:"center"),"icon-allow-overlap",!0)})),t.setLayoutProperty(e,U,a),t.setFilter(e,i),t.moveLayer(e)}(t,"".concat(e,"-symbol"),r,n,o,u,a)}(t,d,e,p,c,N,a)}},nt=function(t,e,r,n,o){var a=function(t,e){var r={};return null==e||e.forEach(function(e){var n=e.featureId,o=e.layerId,a=e.idProperty,i=e.geometry,l=t.getLayer(o);if(l){var u=l.source;r[u]||(r[u]={ids:new Set,fillIds:new Set,idProperty:a,layerId:o,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(r[u].hasFillGeometry=!0,r[u].fillIds.add(n)),r[u].ids.add(n)}}),r}(t,e),i=new Set(Object.keys(a)),l="_".concat(n.replaceAll("-",""),"Sources"),u=t[l]||new Set;return Q(t,u,i,n),t[l]=i,i.forEach(function(e){return rt(t,e,a,r,n,o)}),a};function ot(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return at(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?at(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function at(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var it=function(t,e,r){var n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);if(0===n)return Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2);var o=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return o=Math.max(0,Math.min(1,o)),Math.pow(t.x-(e.x+o*(r.x-e.x)),2)+Math.pow(t.y-(e.y+o*(r.y-e.y)),2)};function lt(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var ut=function(t,e,r){var n=t.getCanvas();if(r&&t.off("mousemove",r),null==e||!e.length)return n.style.cursor="",null;var o=function(r){var o=e.filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return lt(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?lt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}(e);try{for(a.s();!(r=a.n()).done;){var i=r.value;if("line"===t.getLayer(i).type){var l=i.endsWith("-stroke")?i.slice(0,-7):null;null!==l&&e.includes(l)||n.push(i)}else o.push(i)}}catch(t){a.e(t)}finally{a.f()}return{lineLayers:n,otherLayers:o}}(t,o),i=a.lineLayers,l=a.otherLayers,u=r.point,s=u.x,c=u.y,f=[[s-10,c-10],[s+10,c+10]],h=i.length>0&&t.queryRenderedFeatures(f,{layers:i}).length>0,p=l.length>0&&t.queryRenderedFeatures(r.point,{layers:l}).length>0;n.style.cursor=h||p?"pointer":""}else n.style.cursor=""};return t.on("mousemove",o),o};function st(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return ct(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function p(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(l=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),l=c,u=y;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),p(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(ct(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,ct(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,ct(f,"constructor",s),ct(s,"constructor",u),u.displayName="GeneratorFunction",ct(s,o,"GeneratorFunction"),ct(f),ct(f,o,"Generator"),ct(f,n,function(){return this}),ct(f,"toString",function(){return"[object Generator]"}),(st=function(){return{w:a,m:h}})()}function ct(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}ct=function(t,e,r,n){function a(e,r){ct(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},ct(t,e,r,n)}function ft(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function ht(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){ft(a,n,o,i,l,"next",t)}function l(t){ft(a,n,o,i,l,"throw",t)}i(void 0)})}}var pt=function(){var t=ht(st().m(function t(e,r,n,o){var a,i=arguments;return st().w(function(t){for(;;)switch(t.n){case 0:if(a=i.length>4&&void 0!==i[4]?i[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return e._activeSymbolImageMap={},e._selectedSymbolImageMap={},t.n=2,Promise.all(r.flatMap(function(t){var r=o.getSymbolImageId(t,n,!1,a),i=o.getSymbolImageId(t,n,!0,a);return r&&i&&(e._activeSymbolImageMap[r]=i),["normal","active","selected"].map(function(){var l=ht(st().m(function l(u){var s,c;return st().w(function(l){for(;;)switch(l.n){case 0:if(s="active"===u?i:r,"selected"===u||s&&!e.hasImage(s)){l.n=1;break}return l.a(2);case 1:return l.n=2,o.rasteriseSymbolImage(t,n,u,a);case 2:(c=l.v)&&("selected"===u&&r&&(e._selectedSymbolImageMap[r]=c.imageId),e.hasImage(c.imageId)||e.addImage(c.imageId,c.imageData,{pixelRatio:a}));case 3:return l.a(2)}},l)}));return function(t){return l.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),yt=function(t){return Math.max(2,2*t)},dt=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")};function gt(t){return gt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gt(t)}var vt=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===gt(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null},mt=function(t,e,r){return new Promise(function(n,o){var a="data:image/svg+xml;charset=utf-8,".concat(encodeURIComponent(t)),i=new Image(e,r);i.onload=function(){var t=document.createElement("canvas");t.width=e,t.height=r;var o=t.getContext("2d");o.drawImage(i,0,0,e,r),n(o.getImageData(0,0,e,r))},i.onerror=function(){o(new Error("Failed to rasterise SVG: ".concat(t.slice(0,80))))},i.src=a})};function bt(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return Mt(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function p(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(l=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),l=c,u=y;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),p(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(Mt(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,Mt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,Mt(f,"constructor",s),Mt(s,"constructor",u),u.displayName="GeneratorFunction",Mt(s,o,"GeneratorFunction"),Mt(f),Mt(f,o,"Generator"),Mt(f,n,function(){return this}),Mt(f,"toString",function(){return"[object Generator]"}),(bt=function(){return{w:a,m:h}})()}function Mt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Mt=function(t,e,r,n){function a(e,r){Mt(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},Mt(t,e,r,n)}function wt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function St(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){wt(a,n,o,i,l,"next",t)}function l(t){wt(a,n,o,i,l,"throw",t)}i(void 0)})}}var Pt=new Map,xt=function(){var t=St(bt().m(function t(e,r,n,o){var a,i,l,u,s,c,f,h,p,y;return bt().w(function(t){for(;;)switch(t.n){case 0:if(a=n.getPatternInnerContent(e)){t.n=1;break}return t.a(2,null);case 1:if(i=n.getPatternImageId(e,r,o)){t.n=2;break}return t.a(2,null);case 2:if(l=Pt.get(i)){t.n=4;break}return u=vt(e.fillPatternForegroundColor,r)||"black",s=vt(e.fillPatternBackgroundColor,r)||"transparent",c=dt(a,u,s),f='<rect width="16" height="16" fill="'.concat(s,'"/>'),h=yt(o),p=Math.round(8*h),y='<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(p,'" height="').concat(p,'" viewBox="0 0 16 16">').concat(f).concat(c,"</svg>"),t.n=3,mt(y,p,p);case 3:l=t.v,Pt.set(i,l);case 4:return t.a(2,{imageId:i,imageData:l})}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),Ot=function(){var t=St(bt().m(function t(e,r,n,o,a){var i,l;return bt().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return i=yt(a),l=r.reduce(function(t,r){var l=o.getPatternImageId(r,n,a);return!l||t[l]||e.hasImage(l)||(t[l]=St(bt().m(function t(){var l;return bt().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,xt(r,n,o,a);case 1:(l=t.v)&&e.addImage(l.imageId,l.imageData,{pixelRatio:i});case 2:return t.a(2)}},t)}))),t},{}),t.n=2,Promise.all(Object.values(l).map(function(t){return t()}));case 2:return t.a(2)}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}(),Et=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function Nt(t){return Nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Nt(t)}function jt(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return At(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:p,f:p.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function p(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],p=h.p,y=a[2];r>3?(o=y===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=p&&((o=r<2&&p<a[1])?(l=0,h.v=n,h.n=a[1]):p<y&&(o=r<3||a[0]>n||n>y)&&(a[4]=r,a[5]=n,h.n=y,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,y){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&p(c,y),l=c,u=y;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),p(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(At(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,At(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,At(f,"constructor",s),At(s,"constructor",u),u.displayName="GeneratorFunction",At(s,o,"GeneratorFunction"),At(f),At(f,o,"Generator"),At(f,n,function(){return this}),At(f,"toString",function(){return"[object Generator]"}),(jt=function(){return{w:a,m:h}})()}function At(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}At=function(t,e,r,n){function a(e,r){At(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},At(t,e,r,n)}function Tt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function It(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Tt(Object(r),!0).forEach(function(e){Lt(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Tt(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Lt(t,e,r){return(e=Ct(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function kt(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(-1!==e.indexOf(n))continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],-1===e.indexOf(r)&&{}.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Rt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function _t(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){Rt(a,n,o,i,l,"next",t)}function l(t){Rt(a,n,o,i,l,"throw",t)}i(void 0)})}}function Dt(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Ct(n.key),n)}}function Ct(t){var e=function(t){if("object"!=Nt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=Nt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Nt(e)?e:e+""}var Ft=function(){return t=function t(e){var r=e.mapFramework,n=e.mapProviderConfig,a=void 0===n?{}:n,i=e.events,l=e.eventBus;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maplibreModule=r,this.events=i,this.eventBus=l,this.capabilities={supportedShortcuts:o,supportsMapSizes:!0},Object.assign(this,a)},e=[{key:"initMap",value:(u=_t(jt().m(function t(e){var r,n,o,l,u,f,h,p,y,d,g,v,m,b=this;return jt().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,l=e.mapSize,u=e.center,f=e.zoom,h=e.bounds,p=e.pixelRatio,y=kt(e,Et),this.mapStyleId=null==o?void 0:o.id,this.mapSize=l,d=this.maplibreModule.Map,g=this.events,v=this.eventBus,(m=new d(It(It({},y),{},{container:r,style:null==o?void 0:o.url,pixelRatio:p,padding:n,center:u,zoom:f,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),h&&m.fitBounds(h,{duration:0}),i(m),a(m),s({map:m,events:g,eventBus:v,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),c({mapProvider:this,map:m,events:g,eventBus:v}),m.on("load",function(){b.labelNavigator=F(m,null==o?void 0:o.mapColorScheme,g,v)}),this.eventBus.emit(g.MAP_READY,{map:this.map,mapStyleId:this.mapStyleId,mapSize:this.mapSize,crs:this.crs});case 1:return t.a(2)}},t,this)})),function(t){return u.apply(this,arguments)})},{key:"destroyMap",value:function(){var t,e;this.setHoverCursor([]),null===(t=this.mapEvents)||void 0===t||t.remove(),null===(e=this.appEvents)||void 0===e||e.remove(),this.mapEvents=null,this.appEvents=null,this.map.remove()}},{key:"setHoverCursor",value:function(t){this.map&&(this._onHoverMove=ut(this.map,t,this._onHoverMove))}},{key:"setView",value:function(t){var e=t.center,r=t.zoom;this.map.flyTo({center:e||this.getCenter(),zoom:r||this.getZoom(),duration:this.map.isStyleLoaded()?n:0})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:n})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:n})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:n})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:x(t),r=this.map.isStyleLoaded()?n:0;this.map.fitBounds(e,{duration:r})}},{key:"setPadding",value:function(t){this.map.setPadding(t)}},{key:"updateHighlightedFeatures",value:function(t,e,r){return function(t){var e=t.LngLatBounds,r=t.map,n=t.selectedFeatures,o=t.activeFeatures,a=t.stylesMap;if(!r)return null;null!=o&&o.length?(nt(r,o,a,V,K),nt(r,o,a,Y,X)):(tt(r,V),tt(r,Y));var i={};null!=n&&n.length?i=nt(r,n,a,J,X):tt(r,J);var l=[];return Object.entries(i).forEach(function(t){var e=$(t,2)[1],n=e.ids,o=e.idProperty,a=e.layerId;l.push.apply(l,G(r.queryRenderedFeatures({layers:[a]}).filter(function(t){var e;return n.has(o?null===(e=t.properties)||void 0===e?void 0:e[o]:t.id)})))}),function(t,e){if(!e.length)return null;var r=new t;return e.forEach(function(t){var e=function(t){return"number"==typeof t[0]?r.extend(t):t.forEach(e)};e(t.geometry.coordinates)}),[r.getWest(),r.getSouth(),r.getEast(),r.getNorth()]}(e,l)}({LngLatBounds:this.maplibreModule.LngLatBounds,map:this.map,selectedFeatures:t,activeFeatures:e,stylesMap:r})}},{key:"highlightNextLabel",value:function(t){var e;return(null===(e=this.labelNavigator)||void 0===e?void 0:e.highlightNextLabel(t))||null}},{key:"highlightLabelAtCenter",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.highlightLabelAtCenter())||null}},{key:"clearHighlightedLabel",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.clearHighlightedLabel())||null}},{key:"getCenter",value:function(){var t=this.map.getCenter();return[Number(t.lng.toFixed(7)),Number(t.lat.toFixed(7))]}},{key:"getZoom",value:function(){return Number(this.map.getZoom().toFixed(7))}},{key:"getBounds",value:function(){return this.map.getBounds().toArray().flat(1)}},{key:"getFeaturesAtPoint",value:function(t,e){return function(t,e){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).radius,n=void 0===r?10:r,o=[[e.x-n,e.y-n],[e.x+n,e.y+n]],a=t.queryRenderedFeatures(o);if(0===a.length)return[];var i=new Set(t.queryRenderedFeatures([e.x,e.y]).map(function(t){var e,r=void 0===t.id?JSON.stringify(t.properties):t.id;return"".concat(null===(e=t.layer)||void 0===e?void 0:e.source,":").concat(r)})),l=[];a.forEach(function(t){!1===l.includes(t.layer.id)&&l.push(t.layer.id)});for(var u=new Set,s=[],c=a.length-1;c>=0;c--){var f,h=a[c],p=void 0===h.id?JSON.stringify(h.properties):h.id,y="".concat(null===(f=h.layer)||void 0===f?void 0:f.source,":").concat(p);!1===u.has(y)&&(u.add(y),s.push(h))}var d=t.unproject(e),g=[d.lng,d.lat],v=s.filter(function(t){var e=t.geometry.type;if(e.includes("Polygon"))return("Polygon"===e?[t.geometry.coordinates]:t.geometry.coordinates).some(function(t){return function(t,e){for(var r=ot(t,2),n=r[0],o=r[1],a=!1,i=0,l=e.length-1;i<e.length;l=i,i++){var u=ot(e[i],2),s=u[0],c=u[1],f=ot(e[l],2),h=f[0],p=f[1];c>o!=p>o&&n<(h-s)*(o-c)/(p-c)+s&&(a=!a)}return a}(g,t[0])});if("Point"===e||"MultiPoint"===e){var r,n=void 0===t.id?JSON.stringify(t.properties):t.id;return i.has("".concat(null===(r=t.layer)||void 0===r?void 0:r.source,":").concat(n))}return!0});return v.map(function(r){var n=0,o=r.geometry.type,a=function(t,e,r){var n=r.coordinates,o=r.type,a=1/0,i=function(e){return t.project(e)},l=function(t){for(var r=0;r<t.length-1;r++){var n=it(e,i(t[r]),i(t[r+1]));n<a&&(a=n)}};if("Point"===o){var u=i(n);a=Math.pow(e.x-u.x,2)+Math.pow(e.y-u.y,2)}else"LineString"===o||"MultiPoint"===o?"LineString"===o?l(n):n.forEach(function(t){var r=i(t),n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);n<a&&(a=n)}):"Polygon"===o||"MultiLineString"===o?n.forEach(l):"MultiPolygon"===o&&n.forEach(function(t){return t.forEach(l)});return a}(t,e,r.geometry);return n+=1e6*l.indexOf(r.layer.id),o.includes("Polygon")&&(n-=5e5),{f:r,score:n+=a}}).sort(function(t,e){return t.score-e.score}).map(function(t){return t.f})}(this.map,t,e)}},{key:"getVisibleFeatures",value:function(t){var e=this,r=t.filter(function(t){return e.map.getLayer(t)});return r.length?this.map.queryRenderedFeatures(void 0,{layers:r}):[]}},{key:"addSymbolsToMap",value:(l=_t(jt().m(function t(e,r,n){var o;return jt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,pt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return l.apply(this,arguments)})},{key:"addPatternsToMap",value:(r=_t(jt().m(function t(e,r,n){var o;return jt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,Ot(this.map,e,r,n,o))},t,this)})),function(t,e,n){return r.apply(this,arguments)})},{key:"getAreaDimensions",value:function(){return function(t){var e,r,n,o;if(t&&"function"==typeof t.getWest)e=t.getWest(),r=t.getSouth(),n=t.getEast(),o=t.getNorth();else{if(!Array.isArray(t)||2!==t.length)return"";var a=b(t,2),i=b(a[0],2);e=i[0],r=i[1];var l=b(a[1],2);n=l[0],o=l[1]}var u=S([e,r],[n,r]),s=S([e,r],[e,o]),c=P(u),f=P(s);return"".concat(f," by ").concat(c)}((t=this.maplibreModule.LngLatBounds,e=this.map,r=e.getContainer().getBoundingClientRect(),n=r.width,o=r.height,a=e.getPadding(),i=[a.left,o-a.bottom],l=[n-a.right,a.top],new t(e.unproject(i),e.unproject(l))));var t,e,r,n,o,a,i,l}},{key:"getCardinalMove",value:function(t,e){return function(t,e){var r=b(t,2),n=r[0],o=r[1],a=b(e,2),i=a[0],l=a[1],u=l-o,s=i-n,c=[];if(Math.abs(u)>1e-4){var f=Math.round(S([n,o],[n,l]));c.push("".concat(u>0?"north":"south"," ").concat(P(f)))}if(Math.abs(s)>1e-4){var h=Math.round(S([n,o],[i,o]));c.push("".concat(s>0?"east":"west"," ").concat(P(h)))}return c.join(", ")}(t,e)}},{key:"getResolution",value:function(){return t=this.map.getCenter(),e=this.map.getZoom(),r=t.lat,n=Math.pow(2,e),40075016.686*Math.cos(r*Math.PI/180)/(512*n);var t,e,r,n}},{key:"mapToScreen",value:function(t){return this.map.project(t)}},{key:"screenToMap",value:function(t){var e=this.map.unproject([t.x,t.y]);return[e.lng,e.lat]}},{key:"isGeometryObscured",value:function(t,e){return function(t,e,r){var n=r.getContainer().getBoundingClientRect(),o=b(x(t),4),a=o[0],i=o[1],l=o[2],u=o[3],s=[r.project([a,i]),r.project([a,u]),r.project([l,i]),r.project([l,u])],c=Math.min.apply(Math,m(s.map(function(t){return t.x}))),f=Math.max.apply(Math,m(s.map(function(t){return t.x}))),h=Math.min.apply(Math,m(s.map(function(t){return t.y}))),p=Math.max.apply(Math,m(s.map(function(t){return t.y}))),y=e.left-n.left,d=e.top-n.top,g=e.right-n.left,v=e.bottom-n.top;return c<g&&f>y&&h<v&&p>d}(t,e,this.map)}}],e&&Dt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,l,u}()}}]);
|
|
@@ -122,13 +122,28 @@ const applySymbolGeomHighlight = (map, base, sourceId, srcLayer, layerId, filter
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
const applyFillGeomHighlight = (map, base, sourceId, srcLayer, { isSelected, idExpression, fillIds, fill, lineColor, lineWidth, filter }) => {
|
|
126
|
+
if (isSelected) {
|
|
127
|
+
const fillFilter = ['in', idExpression, ['literal', [...fillIds]]]
|
|
128
|
+
// Only apply fill highlight to polygon features, not to any co-selected line features
|
|
129
|
+
applyHighlightLayer(map, `${base}-fill`, 'fill', sourceId, srcLayer, { 'fill-color': fill }, fillFilter)
|
|
130
|
+
}
|
|
131
|
+
applyHighlightLayer(map, `${base}-line`, 'line', sourceId, srcLayer, { 'line-color': lineColor, 'line-width': lineWidth }, filter)
|
|
132
|
+
}
|
|
133
|
+
|
|
125
134
|
const applySourceHighlight = (map, sourceId, featuresBySource, stylesMap, prefix, getSymbolImageId) => {
|
|
126
135
|
const { ids, fillIds, idProperty, layerId, hasFillGeometry } = featuresBySource[sourceId]
|
|
127
136
|
const baseLayer = map.getLayer(layerId)
|
|
128
137
|
const srcLayer = baseLayer.sourceLayer
|
|
129
138
|
const geom = hasFillGeometry ? 'fill' : baseLayer.type
|
|
130
139
|
const base = `${prefix}-${sourceId}`
|
|
131
|
-
const
|
|
140
|
+
const style = stylesMap[layerId]
|
|
141
|
+
|
|
142
|
+
if (!style) {
|
|
143
|
+
return
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const { stroke, selectionStroke, strokeWidth, activeStrokeWidth, fill } = style
|
|
132
147
|
const isSelected = prefix === SELECTED_PREFIX
|
|
133
148
|
const selectedStyle = usesSelectedStyle(prefix)
|
|
134
149
|
const lineColor = selectedStyle ? selectionStroke : stroke
|
|
@@ -137,12 +152,7 @@ const applySourceHighlight = (map, sourceId, featuresBySource, stylesMap, prefix
|
|
|
137
152
|
const filter = ['in', idExpression, ['literal', [...ids]]]
|
|
138
153
|
|
|
139
154
|
if (geom === 'fill') {
|
|
140
|
-
|
|
141
|
-
const fillFilter = ['in', idExpression, ['literal', [...fillIds]]]
|
|
142
|
-
// Only apply fill highlight to polygon features, not to any co-selected line features
|
|
143
|
-
applyHighlightLayer(map, `${base}-fill`, 'fill', sourceId, srcLayer, { 'fill-color': fill }, fillFilter)
|
|
144
|
-
}
|
|
145
|
-
applyHighlightLayer(map, `${base}-line`, 'line', sourceId, srcLayer, { 'line-color': lineColor, 'line-width': lineWidth }, filter)
|
|
155
|
+
applyFillGeomHighlight(map, base, sourceId, srcLayer, { isSelected, idExpression, fillIds, fill, lineColor, lineWidth, filter })
|
|
146
156
|
}
|
|
147
157
|
|
|
148
158
|
if (geom === 'line') {
|
|
@@ -299,3 +299,20 @@ describe('Highlighting Utils — symbol layers (committed selection)', () => {
|
|
|
299
299
|
expect(map.addLayer).not.toHaveBeenCalled()
|
|
300
300
|
})
|
|
301
301
|
})
|
|
302
|
+
|
|
303
|
+
describe('Highlighting Utils — missing style entry', () => {
|
|
304
|
+
test('skips highlight when feature layerId has no entry in stylesMap', () => {
|
|
305
|
+
const map = makeMap()
|
|
306
|
+
map.getLayer.mockImplementation(id => id === 'l1' ? { source: 's1', type: 'line' } : null) // NOSONAR
|
|
307
|
+
|
|
308
|
+
updateHighlightedFeatures({
|
|
309
|
+
LngLatBounds,
|
|
310
|
+
map,
|
|
311
|
+
selectedFeatures: [{ featureId: 1, layerId: 'l1' }],
|
|
312
|
+
stylesMap: {}
|
|
313
|
+
})
|
|
314
|
+
|
|
315
|
+
expect(map.addLayer).not.toHaveBeenCalled()
|
|
316
|
+
expect(map.setFilter).not.toHaveBeenCalled()
|
|
317
|
+
})
|
|
318
|
+
})
|
|
@@ -61,14 +61,19 @@ export const addPatternsToMap = async (map, styleArray, mapStyleId, patternRegis
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
const effectiveRatio = getEffectivePixelRatio(pixelRatio)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
// Build a unique set of imagesToAdd callbacks to avoid redundant rasterisation and map.addImage calls
|
|
65
|
+
const addImages = styleArray.reduce((imagesToAdd, style) => {
|
|
66
|
+
const imageId = patternRegistry.getPatternImageId(style, mapStyleId, pixelRatio)
|
|
67
|
+
if (imageId && !imagesToAdd[imageId] && !map.hasImage(imageId)) {
|
|
68
|
+
imagesToAdd[imageId] = async () => {
|
|
69
|
+
const result = await rasterisePattern(style, mapStyleId, patternRegistry, pixelRatio)
|
|
70
|
+
if (result) {
|
|
71
|
+
map.addImage(result.imageId, result.imageData, { pixelRatio: effectiveRatio })
|
|
72
|
+
}
|
|
73
|
+
}
|
|
68
74
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}))
|
|
75
|
+
return imagesToAdd
|
|
76
|
+
}, {})
|
|
77
|
+
// Execute the unique set of addImage callbacks in parallel
|
|
78
|
+
await Promise.all(Object.values(addImages).map(addImage => addImage()))
|
|
74
79
|
}
|
|
@@ -76,7 +76,8 @@ describe('addPatternsToMap', () => {
|
|
|
76
76
|
|
|
77
77
|
it('processes multiple configs in parallel', async () => {
|
|
78
78
|
const map = makeMap()
|
|
79
|
-
patternRegistry.register('dots',
|
|
79
|
+
patternRegistry.register('dots', "fillPatternForegroundColor: '#aabbcc', fillPatternBackgroundColor: '#112233'")
|
|
80
|
+
console.log('patternRegistry.list', patternRegistry.list())
|
|
80
81
|
await addPatternsToMap(map, [{ fillPattern: 'stripes' }, { fillPattern: 'dots' }], OUTDOOR, patternRegistry)
|
|
81
82
|
expect(map.addImage).toHaveBeenCalledTimes(2)
|
|
82
83
|
})
|
package/rollup.esm.mjs
CHANGED
|
@@ -82,7 +82,7 @@ const PREACT_EXTERNALS = [
|
|
|
82
82
|
// dependency so it auto-installs for consumers and is resolved transparently.
|
|
83
83
|
const BABEL_RUNTIME_EXTERNAL = /@babel\/runtime/
|
|
84
84
|
|
|
85
|
-
const createESMConfig = (entryPath, outDir, isCore = false, manualChunks = null) => {
|
|
85
|
+
const createESMConfig = (entryPath, outDir, isCore = false, manualChunks = null, extraExternals = []) => {
|
|
86
86
|
const esmDir = path.resolve(__dirname, outDir)
|
|
87
87
|
// Use the parent dir as output.dir so CSS can be emitted to css/index.css
|
|
88
88
|
// (a sibling subdir) without Rollup 4's ban on ".." in emitted file names.
|
|
@@ -108,7 +108,8 @@ const createESMConfig = (entryPath, outDir, isCore = false, manualChunks = null)
|
|
|
108
108
|
// instance from their own node_modules rather than a 1 MB copy bundled
|
|
109
109
|
// into the provider. (UMD keeps it bundled — no bundler available there.)
|
|
110
110
|
'maplibre-gl',
|
|
111
|
-
/^@arcgis\/core
|
|
111
|
+
/^@arcgis\/core/,
|
|
112
|
+
...extraExternals
|
|
112
113
|
],
|
|
113
114
|
|
|
114
115
|
plugins: [
|
|
@@ -228,6 +229,16 @@ const ALL_BUILDS = [
|
|
|
228
229
|
outDir: 'providers/beta/esri/dist/esm',
|
|
229
230
|
manualChunks: (id) => { if (id.includes('/esriProvider')) return 'im-esri-provider' }
|
|
230
231
|
},
|
|
232
|
+
{
|
|
233
|
+
entryPath: './providers/beta/openlayers/src/index.js',
|
|
234
|
+
outDir: 'providers/beta/openlayers/dist/esm',
|
|
235
|
+
extraExternals: [/^ol\//, 'proj4'],
|
|
236
|
+
manualChunks: (id) => {
|
|
237
|
+
if (id.includes('/openlayersProvider')) {
|
|
238
|
+
return 'im-openlayers-provider'
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
231
242
|
|
|
232
243
|
// Plugins — each lazy-loads ./manifest.js; manualChunks names that split chunk
|
|
233
244
|
{
|
|
@@ -293,5 +304,5 @@ const buildsToRun = BUILD_TARGET
|
|
|
293
304
|
: ALL_BUILDS
|
|
294
305
|
|
|
295
306
|
export default buildsToRun.map(b =>
|
|
296
|
-
createESMConfig(b.entryPath, b.outDir, b.isCore || false, b.manualChunks || null)
|
|
307
|
+
createESMConfig(b.entryPath, b.outDir, b.isCore || false, b.manualChunks || null, b.extraExternals || [])
|
|
297
308
|
)
|
|
@@ -47,6 +47,7 @@ describe('useFeatureItems — event subscription', () => {
|
|
|
47
47
|
it('does not subscribe when eventBus is undefined', () => {
|
|
48
48
|
const spy = jest.spyOn(console, 'error').mockImplementation(() => {})
|
|
49
49
|
renderHook(() => useFeatureItems(undefined))
|
|
50
|
+
expect(spy).not.toHaveBeenCalled()
|
|
50
51
|
spy.mockRestore()
|
|
51
52
|
})
|
|
52
53
|
})
|
|
@@ -201,7 +201,6 @@ describe('useLayoutMeasurements', () => {
|
|
|
201
201
|
const { dispatch } = setup({ app: { arePluginsEvaluated: false } })
|
|
202
202
|
renderHook(() => useLayoutMeasurements())
|
|
203
203
|
expect(dispatch).not.toHaveBeenCalledWith(expect.objectContaining({ type: 'SET_SAFE_ZONE_INSET' }))
|
|
204
|
-
expect(layoutRefs => layoutRefs).toBeDefined() // no layout calculation
|
|
205
204
|
})
|
|
206
205
|
|
|
207
206
|
test('re-dispatches safe zone when arePluginsEvaluated becomes true', () => {
|
|
@@ -117,6 +117,7 @@ describe('useMarkers — markerRef and positioning', () => {
|
|
|
117
117
|
act(() => result.current.markerRef('m1')(ctx.mockElement))
|
|
118
118
|
const renderCallback = ctx.mockEventBus.on.mock.calls.find(call => call[0] === 'map:render')?.[1]
|
|
119
119
|
if (renderCallback) act(() => renderCallback())
|
|
120
|
+
expect(ctx.mockElement.style.transform).toBeUndefined()
|
|
120
121
|
})
|
|
121
122
|
|
|
122
123
|
it('updates positions on mapSize change', () => {
|
|
@@ -256,9 +256,10 @@ describe('useModalPanelBehaviour', () => {
|
|
|
256
256
|
})
|
|
257
257
|
|
|
258
258
|
it('handles null focus targets gracefully', () => {
|
|
259
|
+
refs.panel.current.focus = jest.fn()
|
|
259
260
|
render(<TestComponent />)
|
|
260
261
|
dispatchFocusIn(null)
|
|
261
|
-
expect(
|
|
262
|
+
expect(refs.panel.current.focus).not.toHaveBeenCalled()
|
|
262
263
|
})
|
|
263
264
|
})
|
|
264
265
|
|
|
@@ -82,6 +82,9 @@ describe('AppProvider', () => {
|
|
|
82
82
|
breakpointCb('sm')
|
|
83
83
|
interfaceCb('mobile')
|
|
84
84
|
})
|
|
85
|
+
|
|
86
|
+
expect(mockBreakpointDetector.subscribe).toHaveBeenCalledWith(expect.any(Function))
|
|
87
|
+
expect(detectInterface.subscribeToInterfaceChanges).toHaveBeenCalledWith(expect.any(Function))
|
|
85
88
|
})
|
|
86
89
|
|
|
87
90
|
test('handles eventBus setmode and revertmode', () => {
|
|
@@ -94,6 +97,8 @@ describe('AppProvider', () => {
|
|
|
94
97
|
mockOptions.eventBus.off('app:setmode', capturedSetMode)
|
|
95
98
|
mockOptions.eventBus.off('app:revertmode', capturedRevertMode)
|
|
96
99
|
})
|
|
100
|
+
expect(mockOptions.eventBus.on).toHaveBeenCalledWith('app:setmode', capturedSetMode)
|
|
101
|
+
expect(mockOptions.eventBus.on).toHaveBeenCalledWith('app:revertmode', capturedRevertMode)
|
|
97
102
|
})
|
|
98
103
|
|
|
99
104
|
test('provides state, dispatch, and layoutRefs via context', () => {
|
|
@@ -186,9 +186,14 @@ describe('MapProvider', () => {
|
|
|
186
186
|
})
|
|
187
187
|
|
|
188
188
|
test('handles dispatch actions correctly', () => {
|
|
189
|
+
let contextValue
|
|
190
|
+
const Child = () => {
|
|
191
|
+
contextValue = React.useContext(MapContext)
|
|
192
|
+
return null
|
|
193
|
+
}
|
|
189
194
|
render(
|
|
190
195
|
<MapProvider options={{ id: 'map1', mapSize: '100x100', eventBus: mockEventBus }}>
|
|
191
|
-
<
|
|
196
|
+
<Child />
|
|
192
197
|
</MapProvider>
|
|
193
198
|
)
|
|
194
199
|
|
|
@@ -197,5 +202,7 @@ describe('MapProvider', () => {
|
|
|
197
202
|
capturedHandlers['map:setstyle']({ id: 'style2' })
|
|
198
203
|
capturedHandlers['map:setsize']('400x400')
|
|
199
204
|
})
|
|
205
|
+
|
|
206
|
+
expect(contextValue.isMapReady).toBe(true)
|
|
200
207
|
})
|
|
201
208
|
})
|
|
@@ -24,21 +24,19 @@ describe('createAnnouncer', () => {
|
|
|
24
24
|
|
|
25
25
|
it('does nothing if mapStatusRef.current is null', () => {
|
|
26
26
|
const announceWithNull = createAnnouncer({ current: null })
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
expect(() => {
|
|
28
|
+
announceWithNull('Hello')
|
|
29
|
+
jest.advanceTimersByTime(1000)
|
|
30
|
+
}).not.toThrow()
|
|
30
31
|
})
|
|
31
32
|
|
|
32
33
|
it('returns early if mapStatusRef.current becomes null during setTimeout', () => {
|
|
33
34
|
announce('Test message', 'plugin')
|
|
34
35
|
expect(mapStatusRef.current.textContent).toBe('') // cleared immediately
|
|
35
36
|
|
|
36
|
-
// Set current to null before setTimeout fires
|
|
37
37
|
mapStatusRef.current = null
|
|
38
38
|
|
|
39
|
-
jest.advanceTimersByTime(100)
|
|
40
|
-
// Should not throw, just return early
|
|
41
|
-
expect(true).toBe(true)
|
|
39
|
+
expect(() => jest.advanceTimersByTime(100)).not.toThrow()
|
|
42
40
|
})
|
|
43
41
|
|
|
44
42
|
it('sets textContent for a plugin message immediately', () => {
|
package/webpack.dev.mjs
CHANGED
|
@@ -20,7 +20,8 @@ export default {
|
|
|
20
20
|
index: path.join(__dirname, 'demo/js/index.js'),
|
|
21
21
|
draw: path.join(__dirname, 'demo/js/draw.js'),
|
|
22
22
|
farming: path.join(__dirname, 'demo/js/farming.js'),
|
|
23
|
-
planning: path.join(__dirname, 'demo/js/planning.js')
|
|
23
|
+
planning: path.join(__dirname, 'demo/js/planning.js'),
|
|
24
|
+
gep: path.join(__dirname, 'demo/js/gep.js')
|
|
24
25
|
},
|
|
25
26
|
output: {
|
|
26
27
|
path: path.resolve(__dirname, 'public'),
|
|
@@ -70,6 +71,10 @@ export default {
|
|
|
70
71
|
VTS_BLACK_AND_WHITE_URL_27700: JSON.stringify(process.env.VTS_BLACK_AND_WHITE_URL_27700),
|
|
71
72
|
// Aerial photography
|
|
72
73
|
AERIAL_URL: JSON.stringify(process.env.AERIAL_URL),
|
|
74
|
+
// OS Maps API (27700 raster)
|
|
75
|
+
MAPS_OUTDOOR_URL: JSON.stringify(process.env.MAPS_OUTDOOR_URL),
|
|
76
|
+
MAPS_ROAD_URL: JSON.stringify(process.env.MAPS_ROAD_URL),
|
|
77
|
+
MAPS_LIGHT_URL: JSON.stringify(process.env.MAPS_LIGHT_URL),
|
|
73
78
|
// OS Auth
|
|
74
79
|
OS_CLIENT_ID: JSON.stringify(process.env.OS_CLIENT_ID),
|
|
75
80
|
OS_CLIENT_SECRET: JSON.stringify(process.env.OS_CLIENT_SECRET),
|
package/webpack.umd.mjs
CHANGED
|
@@ -137,6 +137,7 @@ const ALL_BUILDS = [
|
|
|
137
137
|
// Providers
|
|
138
138
|
{ entryPath: './providers/maplibre/src/index.js', libraryPath: 'maplibreProvider', outDir: 'providers/maplibre/dist/umd' },
|
|
139
139
|
{ entryPath: './providers/beta/open-names/src/index.js', libraryPath: 'openNamesProvider', outDir: 'providers/beta/open-names/dist/umd' },
|
|
140
|
+
{ entryPath: './providers/beta/openlayers/src/index.js', libraryPath: 'openLayersProvider', outDir: 'providers/beta/openlayers/dist/umd' },
|
|
140
141
|
|
|
141
142
|
// Plugins
|
|
142
143
|
{ entryPath: './plugins/beta/scale-bar/src/index.js', libraryPath: 'scaleBarPlugin', outDir: 'plugins/beta/scale-bar/dist/umd' },
|