@defra/interactive-map 0.0.44-alpha → 0.0.46-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/templates/add-polygons.njk +6 -6
- package/assets/templates/select-feature.njk +72 -15
- package/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/docs/examples/add-marker-with-panel.mdx +4 -0
- package/docs/examples/add-polygons.mdx +16 -12
- package/docs/examples/add-symbols.mdx +4 -0
- package/docs/examples/basic-map.mdx +4 -0
- package/docs/examples/button-map.mdx +4 -0
- package/docs/examples/draw-tools.mdx +4 -0
- package/docs/examples/place-marker.mdx +4 -0
- package/docs/examples/search-control.mdx +4 -0
- package/docs/examples/select-feature.mdx +4 -0
- package/docs/examples/style-switcher.mdx +36 -44
- package/docs/examples/toggle-marker-label.mdx +4 -0
- package/package.json +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/src/components/Form/Form.jsx +3 -3
- package/plugins/search/src/components/Suggestions/Suggestions.jsx +2 -2
- package/plugins/search/src/components/Suggestions/Suggestions.test.jsx +1 -1
- package/providers/beta/esri/dist/esm/im-esri-provider.js +1 -1
- package/providers/beta/esri/src/utils/spatial.js +15 -13
- package/providers/beta/openlayers/dist/esm/im-openlayers-provider.js +1 -1
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js +1 -1
- package/providers/beta/openlayers/src/utils/spatial.js +16 -14
- package/providers/beta/openlayers/src/utils/spatial.test.js +10 -6
- 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/maplibreProvider.js +1 -1
- package/providers/maplibre/src/utils/labels.js +3 -3
- package/providers/maplibre/src/utils/labels.test.js +2 -2
- package/providers/maplibre/src/utils/spatial.js +19 -17
- package/providers/maplibre/src/utils/spatial.test.js +8 -5
- package/src/App/components/Panel/Panel.module.scss +4 -0
- package/src/config/appConfig.js +1 -1
- package/src/scss/tools/_govuk-content.scss +29 -0
- package/src/scss/tools/_index.scss +2 -1
- package/src/types.js +2 -2
|
@@ -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],{808(t,e,r){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 o(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,a(n.key),n)}}function a(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+""}r.r(e),r.d(e,{default:()=>Vt});var i=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},(e=[{key:"isBaseMapReady",value:function(){throw new Error(this.name+" must implement isBaseMapReady()")}}])&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),u=400,l=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];function c(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({preventScroll:!0})})}function s(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 f=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 h(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 p(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,u=t.getResolution,l=[],c=[],s=function(){var t=a();return{center:o(),bounds:i(),resolution:u(),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),l.push(["load",y]),e.once("idle",function(){return p(r.MAP_FIRST_IDLE,s())});var d=function(){return p(r.MAP_MOVE_START)};e.on("movestart",d),l.push(["movestart",d]);var v=f(function(){p(r.MAP_MOVE_END,s())},500);e.on("moveend",v),l.push(["moveend",v]);var g,m,b=(g=function(){p(r.MAP_MOVE,s())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,g.apply(void 0,arguments))});e.on("zoom",b),l.push(["zoom",b]);var M=function(){return p(r.MAP_RENDER)};e.on("render",M),l.push(["render",M]);var w=f(function(){p(r.MAP_DATA_CHANGE,s())},500),S=function(t){t.isSourceLoaded&&w()};e.on("styledata",w),e.on("sourcedata",S),l.push(["styledata",w],["sourcedata",S]);var P=function(){return p(r.MAP_STYLE_CHANGE)};e.on("style.load",P),l.push(["style.load",P]);var O=function(t){return p(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",O),l.push(["click",O]),c.push(v,b,w),{remove:function(){c.forEach(function(t){return t.cancel()}),l.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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(r,n)||function(t,e){if(t){if("string"==typeof t)return h(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)?h(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 y(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 d=" ";class v{static get separator(){return d}static set separator(t){d=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+"°"+v.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+"°"+v.separator+a+"′"+v.separator+i+"″"}return n}static toLat(t,e,r){const n=v.toDms(v.wrap90(t),e,r);return null===n?"–":n.slice(1)+v.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=v.toDms(v.wrap180(t),e,r);return null===n?"–":n+v.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=v.toDms(v.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=v.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 g=v,m=Math.PI;class b{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=g.wrap90(Number(t)),this._lon=g.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?g.wrap90(g.parse(t)):g.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?g.wrap90(g.parse(t)):g.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)?g.wrap180(g.parse(t)):g.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?g.wrap180(g.parse(t)):g.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?g.wrap180(g.parse(t)):g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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 b(e,r)}distanceTo(t,e=6371e3){if(t instanceof b||(t=b.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 b||(t=b.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 g.wrap360(i)}finalBearingTo(t){t instanceof b||(t=b.parse(t));const e=t.initialBearingTo(this)+180;return g.wrap360(e)}midpointTo(t){t instanceof b||(t=b.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)),c=r+Math.atan2(u.y,u.x),s=l.toDegrees(),f=c.toDegrees();return new b(s,f)}intermediatePointTo(t,e){if(t instanceof b||(t=b.parse(t)),this.equals(t))return new b(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),c=2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)),s=Math.sin((1-e)*c)/Math.sin(c),f=Math.sin(e*c)/Math.sin(c),h=s*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),p=s*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),y=s*Math.sin(r)+f*Math.sin(o),d=Math.atan2(y,Math.sqrt(h*h+p*p)),v=Math.atan2(p,h),g=d.toDegrees(),m=v.toDegrees();return new b(g,m)}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),c=Math.sin(o)*Math.sin(n)*Math.cos(a),s=Math.cos(n)-Math.sin(a)*u,f=i+Math.atan2(c,s),h=l.toDegrees(),p=f.toDegrees();return new b(h,p)}static intersection(t,e,r,n){if(t instanceof b||(t=b.parse(t)),r instanceof b||(r=b.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(),c=Number(n).toRadians(),s=i-o,f=u-a,h=2*Math.asin(Math.sqrt(Math.sin(s/2)*Math.sin(s/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new b(t.lat,t.lon);const p=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),y=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),d=Math.acos(Math.min(Math.max(p,-1),1)),v=Math.acos(Math.min(Math.max(y,-1),1)),g=l-(Math.sin(u-a)>0?d:2*m-d),M=(Math.sin(u-a)>0?2*m-v:v)-c;if(0==Math.sin(g)&&0==Math.sin(M))return null;if(Math.sin(g)*Math.sin(M)<0)return null;const w=-Math.cos(g)*Math.cos(M)+Math.sin(g)*Math.sin(M)*Math.cos(h),S=Math.atan2(Math.sin(h)*Math.sin(g)*Math.sin(M),Math.cos(M)+Math.cos(g)*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)),O=a+Math.atan2(Math.sin(l)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),x=P.toDegrees(),E=O.toDegrees();return new b(x,E)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof b||(t=b.parse(t)),e instanceof b||(e=b.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 b||(t=b.parse(t)),e instanceof b||(e=b.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),c=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(u)-Math.cos(o)*Math.sin(i)*Math.cos(n),s=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(u);if(s*s>l*l+c*c)return null;const f=Math.atan2(-c,l),h=Math.acos(s/Math.sqrt(l*l+c*c)),p=a+f+h,y=(a+f-h).toDegrees(),d=p.toDegrees();return{lon1:g.wrap180(y),lon2:g.wrap180(d)}}rhumbDistanceTo(t,e=6371e3){t instanceof b||(t=b.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)>m&&(i=i>0?-(2*m-i):2*m+i);const u=Math.log(Math.tan(o/2+m/4)/Math.tan(n/2+m/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 b||(t=b.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)>m&&(n=n>0?-(2*m-n):2*m+n);const o=Math.log(Math.tan(r/2+m/4)/Math.tan(e/2+m/4)),a=Math.atan2(n,o).toDegrees();return g.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)>m/2&&(l=l>0?m-l:-m-l);const c=Math.log(Math.tan(l/2+m/4)/Math.tan(n/2+m/4)),s=Math.abs(c)>1e-11?u/c:Math.cos(n),f=o+i*Math.sin(a)/s,h=l.toDegrees(),p=f.toDegrees();return new b(h,p)}rhumbMidpointTo(t){t instanceof b||(t=b.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)>m&&(r+=2*m);const a=(e+n)/2,i=Math.tan(m/4+e/2),u=Math.tan(m/4+n/2),l=Math.tan(m/4+a/2);let c=((o-r)*Math.log(l)+r*Math.log(u)-o*Math.log(i))/Math.log(u/i);isFinite(c)||(c=(r+o)/2);const s=a.toDegrees(),f=c.toDegrees();return new b(s,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*m);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof b||(t=b.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)}`):`${g.toLat(this.lat,t,e)}, ${g.toLon(this.lon,t,e)}`}}function M(t,e,r){if(null!==t)for(var n,o,a,i,u,l,c,s,f=0,h=0,p=t.type,y="FeatureCollection"===p,d="Feature"===p,v=y?t.features.length:1,g=0;g<v;g++){u=(s=!!(c=y?t.features[g].geometry:d?t.geometry:t)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var m=0;m<u;m++){var b=0,w=0;if(null!==(i=s?c.geometries[m]:c)){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,g,b,w))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<l.length;n++){if(!1===e(l[n],h,g,b,w))return!1;h++,"MultiPoint"===S&&b++}"LineString"===S&&b++;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,g,b,w))return!1;h++}"MultiLineString"===S&&b++,"Polygon"===S&&w++}"Polygon"===S&&b++;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,g,b,w))return!1;h++}w++}b++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===M(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var w=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return M(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 S(t){return function(t){if(Array.isArray(t))return x(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||O(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 P(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||O(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 O(t,e){if(t){if("string"==typeof t)return x(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)?x(t,e):void 0}}function x(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 E=function(t,e){var r=P(t,2),n=r[0],o=r[1],a=P(e,2),i=a[0],u=a[1],l=new b(o,n),c=new b(u,i);return l.distanceTo(c)},j=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")},N=function(t){return w(t)};function A(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return T(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)?T(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 T(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 I(t){return I="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},I(t)}function L(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 k(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?L(Object(r),!0).forEach(function(e){R(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function R(t,e,r){return(e=function(t){var e=function(t){if("object"!=I(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==I(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(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 C="highlighted-label";function D(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=A(n,2),l=u[0],c=u[1],s=A(o,2),f=s[0],h=s[1];return e<=l?c:e>=f?h:c+(e-l)/(f-l)*(h-c)}(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 _(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)?_(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=_(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],c=a[i+2],s=a[i+3];if(e<=u)return l;if(e<=c)return l+(e-u)/(c-u)*(s-l)}return a[a.length-1]}function F(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function B(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){F(t,r);var u=e.feature,l=e.layer;r.highlightLayerId="highlight-".concat(l.id);var c=u.id,s=u.type,f=u.properties,h=u.geometry;t.getSource(C).setData({id:c,type:s,properties:f,geometry:h}),r.highlightedExpr=l.layout["text-size"];var p=t.getZoom(),y=(o=l,a=1.5*D(r.highlightedExpr,p),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:C,layout:k(k({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:k(k({},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 G(t){t.getSource(C)||t.addSource(C,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function $(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 z(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},B(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")}return $(t),G(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){$(t),G(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=D(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=function(t,e){return t[0]===e[0]&&t[1]===e[1]},o=e.filter(function(e){var o=Math.abs(e[0]-t[0]),a=Math.abs(e[1]-t[1]);return("ArrowUp"===r?e[1]<=t[1]&&a>=o:"ArrowDown"===r?e[1]>t[1]&&a>=o:"ArrowLeft"===r?e[0]<=t[0]&&a<o:"ArrowRight"!==r||e[0]>t[0]&&a<o)&&!n(e,t)});o.length||o.push(t);var a=function(e){return Math.hypot(t[0]-e[0],t[1]-e[1])},i=o.reduce(function(t,e){return a(e)<a(t)?e:t},o[0]);return e.findIndex(function(t){return n(t,i)})}([e.currentPixel.x,e.currentPixel.y],n,t);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},B(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return F(t,o)}}}var W=function(t){return t.endsWith(".cold")?"".concat(t.slice(0,-5),".hot"):t.endsWith(".hot")?"".concat(t.slice(0,-4),".cold"):null};function q(t){return q="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},q(t)}function Z(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||H(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 H(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}}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 V(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 Y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?V(Object(r),!0).forEach(function(e){J(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function J(t,e,r){return(e=function(t){var e=function(t){if("object"!=q(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=q(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var K="icon-image",X="active-highlight",Q="active-highlight-inner",tt="selected-highlight",et=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},rt=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},nt=function(t,e,r,n){var o=n.featureId,a=n.idProperty,i=n.geometry,u=t.getLayer(r);u&&(e[r]||(e[r]={ids:new Set,fillIds:new Set,idProperty:a,sourceId:u.source,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(e[r].hasFillGeometry=!0,e[r].fillIds.add(o)),e[r].ids.add(o))},ot=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",""])})}})},at=function(t,e){var r="_".concat(e.replaceAll("-",""),"Sources");ot(t,t[r]||new Set,new Set,e),t[r]=new Set},it=function(t,e,r,n,o,a,i){!!t.getLayer(e)||t.addLayer(Y(Y({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n=Z(r,2),o=n[0],a=n[1];t.setPaintProperty(e,o,a)}),t.setFilter(e,i),t.moveLayer(e)},ut=function(t,e,r,n,o,a,i){var u,l=t.getLayoutProperty(o,"icon-offset");t.getLayer(e)||t.addLayer(Y(Y({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:Y(Y(J(J({},K,a),"icon-anchor",null!==(u=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==u?u:"center"),void 0!==l&&{"icon-offset":l}),{},{"icon-allow-overlap":!0})})),t.setLayoutProperty(e,K,a),void 0!==l&&t.setLayoutProperty(e,"icon-offset",l),t.setFilter(e,i),t.moveLayer(e)},lt=function(t,e,r,n,o){var a=function(t,e){var r={};return null==e||e.forEach(function(e){nt(t,r,e.layerId,e);var n=W(e.layerId);n&&nt(t,r,n,e)}),r}(t,e),i=new Set(Object.keys(a)),u="_".concat(n.replaceAll("-",""),"Sources"),l=t[u]||new Set;return ot(t,l,i,n),t[u]=i,i.forEach(function(e){return function(t,e,r,n,o,a){var i,u=r[e],l=u.ids,c=u.fillIds,s=u.idProperty,f=u.sourceId,h=u.hasFillGeometry,p=t.getLayer(e),y=null!==(i=n[e])&&void 0!==i?i:n[W(e)];if(p&&y){var d=p.sourceLayer,v=h?"fill":p.type,g="".concat(o,"-").concat(e),m=y.fill,b=o===tt,M=function(t){return t===tt||t===Q}(o),w=function(t,e){return{lineColor:e?t.selectionStroke:t.stroke,lineWidth:e?t.strokeWidth:t.activeStrokeWidth}}(y,M),S=w.lineColor,P=w.lineWidth,O=s?["get",s]:["id"],x=["in",O,["literal",Array.from(l)]];if("fill-extrusion"!==p.type)switch(v){case"fill":!function(t,e,r,n,o){var a=o.idExpression,i=o.fill,u=o.lineColor,l=o.lineWidth,c=o.filter;if(o.isSelected){var s=[];o.fillIds.forEach(function(t){return s.push(t)});var f=["in",a,["literal",s]];it(t,"".concat(e,"-fill"),"fill",r,n,{"fill-color":i},f)}it(t,"".concat(e,"-line"),"line",r,n,{"line-color":u,"line-width":l},c)}(t,g,f,d,{isSelected:b,idExpression:O,fillIds:c,fill:m,lineColor:S,lineWidth:P,filter:x});break;case"line":!function(t,e,r,n,o,a,i){t.getLayer("".concat(e,"-fill"))&&t.setFilter("".concat(e,"-fill"),["==","id",""]),it(t,"".concat(e,"-line"),"line",r,n,{"line-color":o,"line-width":a},i)}(t,g,f,d,S,P,x);break;case"symbol":!function(t,e,r,n,o,a,i){var u=t.getLayoutProperty(o,K);if(Array.isArray(u)){var l=i===et?"user_symbolActiveImageId":"user_symbolSelectedImageId";ut(t,"".concat(e,"-symbol"),r,n,o,["get",l],a)}else{var c=i(t,u);c&&ut(t,"".concat(e,"-symbol"),r,n,o,c,a)}}(t,g,f,d,e,x,a)}else!function(t,e,r,n){var o=n.lineColor,a=n.lineWidth,i=n.idExpression,u=[];n.ids.forEach(function(t){return u.push(t)});var l=["in",i,["literal",u]],c=t.getLayer(r),s=c.source,f=c.sourceLayer;it(t,"".concat(e,"-line"),"line",s,f,{"line-color":o,"line-width":a},l)}(t,g,e,{ids:l,lineColor:S,lineWidth:P,idExpression:O})}}(t,e,a,r,n,o)}),a};function ct(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return st(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)?st(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 st(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 ft=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 ht(t,e){if(t){if("string"==typeof t)return pt(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)?pt(t,e):void 0}}function pt(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 yt=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=function(t){var e,r=new Set(t);return t.forEach(function(t){var e=W(t);e&&r.add(e)}),function(t){if(Array.isArray(t))return pt(t)}(e=r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||ht(e)||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.")}()}(e).filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=ht(t))){e&&(t=e);var r=0,n=function(){};return{s:n,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:n}}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 o,a=!0,i=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){i=!0,o=t},f:function(){try{a||null==e.return||e.return()}finally{if(i)throw o}}}}(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,c=l.x,s=l.y,f=[[c-10,s-10],[c+10,s+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 dt(){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,c=Object.create(l.prototype);return vt(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(vt(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,vt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,vt(f,"constructor",c),vt(c,"constructor",l),l.displayName="GeneratorFunction",vt(c,o,"GeneratorFunction"),vt(f),vt(f,o,"Generator"),vt(f,n,function(){return this}),vt(f,"toString",function(){return"[object Generator]"}),(dt=function(){return{w:a,m:h}})()}function vt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}vt=function(t,e,r,n){function a(e,r){vt(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))},vt(t,e,r,n)}function gt(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 mt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){gt(a,n,o,i,u,"next",t)}function u(t){gt(a,n,o,i,u,"throw",t)}i(void 0)})}}var bt=function(){var t=mt(dt().m(function t(e,r,n,o){var a,i,u,l=arguments;return dt().w(function(t){for(;;)switch(t.n){case 0:if(u=l.length>4&&void 0!==l[4]?l[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return null!==(a=e._activeSymbolImageMap)&&void 0!==a||(e._activeSymbolImageMap={}),null!==(i=e._selectedSymbolImageMap)&&void 0!==i||(e._selectedSymbolImageMap={}),t.n=2,Promise.all(r.flatMap(function(t){var r=o.getSymbolImageId(t,n,!1,u),a=o.getSymbolImageId(t,n,!0,u);return r&&a&&(e._activeSymbolImageMap[r]=a),["normal","active","selected"].map(function(){var i=mt(dt().m(function i(l){var c,s;return dt().w(function(i){for(;;)switch(i.n){case 0:if(c="active"===l?a:r,"selected"===l||c&&!e.hasImage(c)){i.n=1;break}return i.a(2);case 1:return i.n=2,o.rasteriseSymbolImage(t,n,l,u);case 2:(s=i.v)&&("selected"===l&&r&&(e._selectedSymbolImageMap[r]=s.imageId),e.hasImage(s.imageId)||e.addImage(s.imageId,s.imageData,{pixelRatio:u}));case 3:return i.a(2)}},i)}));return function(t){return i.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),Mt=function(t){return Math.max(2,2*t)},wt=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")};function St(t){return St="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},St(t)}var Pt=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===St(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null},Ot=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 xt(){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,c=Object.create(l.prototype);return Et(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(Et(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,Et(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,Et(f,"constructor",c),Et(c,"constructor",l),l.displayName="GeneratorFunction",Et(c,o,"GeneratorFunction"),Et(f),Et(f,o,"Generator"),Et(f,n,function(){return this}),Et(f,"toString",function(){return"[object Generator]"}),(xt=function(){return{w:a,m:h}})()}function Et(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Et=function(t,e,r,n){function a(e,r){Et(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))},Et(t,e,r,n)}function jt(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 Nt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){jt(a,n,o,i,u,"next",t)}function u(t){jt(a,n,o,i,u,"throw",t)}i(void 0)})}}var At=new Map,Tt=function(){var t=Nt(xt().m(function t(e,r,n,o){var a,i,u,l,c,s,f,h,p,y;return xt().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=At.get(i)){t.n=4;break}return l=Pt(e.fillPatternForegroundColor,r)||"black",c=Pt(e.fillPatternBackgroundColor,r)||"transparent",s=wt(a,l,c),f='<rect width="16" height="16" fill="'.concat(c,'"/>'),h=Mt(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(s,"</svg>"),t.n=3,Ot(y,p,p);case 3:u=t.v,At.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)}}(),It=function(){var t=Nt(xt().m(function t(e,r,n,o,a){var i,u;return xt().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return i=Mt(a),u=r.reduce(function(t,r){var u=o.getPatternImageId(r,n,a);return!u||t[u]||e.hasImage(u)||(t[u]=Nt(xt().m(function t(){var u;return xt().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,Tt(r,n,o,a);case 1:(u=t.v)&&!e.hasImage(u.imageId)&&e.addImage(u.imageId,u.imageData,{pixelRatio:i});case 2:return t.a(2)}},t)}))),t},{}),t.n=2,Promise.all(Object.values(u).map(function(t){return t()}));case 2:return t.a(2)}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}();function Lt(t){return Lt="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},Lt(t)}var kt=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function Rt(){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,c=Object.create(l.prototype);return _t(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(_t(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,_t(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,_t(f,"constructor",c),_t(c,"constructor",l),l.displayName="GeneratorFunction",_t(c,o,"GeneratorFunction"),_t(f),_t(f,o,"Generator"),_t(f,n,function(){return this}),_t(f,"toString",function(){return"[object Generator]"}),(Rt=function(){return{w:a,m:h}})()}function _t(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}_t=function(t,e,r,n){function a(e,r){_t(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))},_t(t,e,r,n)}function Ct(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 Dt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ct(Object(r),!0).forEach(function(e){Ft(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ct(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Ft(t,e,r){return(e=Wt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Bt(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 Gt(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){Gt(a,n,o,i,u,"next",t)}function u(t){Gt(a,n,o,i,u,"throw",t)}i(void 0)})}}function zt(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,Wt(n.key),n)}}function Wt(t){var e=function(t){if("object"!=Lt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=Lt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Lt(e)?e:e+""}function qt(t,e,r){return e=Ht(e),function(t,e){if(e&&("object"==Lt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,Zt()?Reflect.construct(e,r||[],Ht(t).constructor):e.apply(t,r))}function Zt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(Zt=function(){return!!t})()}function Ht(t){return Ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ht(t)}function Ut(t,e){return Ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ut(t,e)}var Vt=function(t){function e(t){var r,n=t.mapFramework,o=t.mapProviderConfig,a=void 0===o?{}:o,i=t.events,u=t.eventBus;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(r=qt(this,e)).maplibreModule=n,r.events=i,r.eventBus=u,r.capabilities={supportedShortcuts:l,supportsMapSizes:!0},Object.assign(r,a),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ut(t,e)}(e,t),r=e,n=[{key:"name",get:function(){return"MapLibreProvider"}},{key:"initMap",value:(i=$t(Rt().m(function t(e){var r,n,o,a,i,u,l,f,h,d,v,g,m,b=this;return Rt().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,a=e.mapSize,i=e.center,u=e.zoom,l=e.bounds,f=e.pixelRatio,h=Bt(e,kt),this.mapStyleId=null==o?void 0:o.id,this.mapSize=a,d=this.maplibreModule.Map,v=this.events,g=this.eventBus,(m=new d(Dt(Dt({},h),{},{container:r,style:null==o?void 0:o.url,pixelRatio:f,padding:n,center:i,zoom:u,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),l&&m.fitBounds(l,{duration:0}),s(m),c(m),p({map:m,events:v,eventBus:g,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),y({mapProvider:this,map:m,events:v,eventBus:g}),m.on("load",function(){b.labelNavigator=z(m,null==o?void 0:o.mapColorScheme,v,g)}),this.eventBus.emit(v.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 i.apply(this,arguments)})},{key:"isBaseMapReady",value:function(){var t;return Boolean(null===(t=this.map)||void 0===t?void 0:t.getStyle())}},{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=yt(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()?u:0})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:u})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:u})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:u})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:N(t),r=this.map.isStyleLoaded()?u: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?(lt(r,o,a,X,et),lt(r,o,a,Q,rt)):(at(r,X),at(r,Q));var i={};null!=n&&n.length?i=lt(r,n,a,tt,rt):at(r,tt);var u=[];return Object.entries(i).forEach(function(t){var e=Z(t,2),n=e[0],o=e[1],a=o.ids,i=o.idProperty;u.push.apply(u,function(t){return function(t){if(Array.isArray(t))return U(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||H(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.")}()}(r.queryRenderedFeatures({layers:[n]}).filter(function(t){var e;return a.has(i?null===(e=t.properties)||void 0===e?void 0:e[i]: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,c=[],s=a.length-1;s>=0;s--){var f,h=a[s],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),c.push(h))}var d=t.unproject(e),v=[d.lng,d.lat],g=c.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=ct(t,2),n=r[0],o=r[1],a=!1,i=0,u=e.length-1;i<e.length;u=i,i++){var l=ct(e[i],2),c=l[0],s=l[1],f=ct(e[u],2),h=f[0],p=f[1];s>o!=p>o&&n<(h-c)*(o-s)/(p-s)+c&&(a=!a)}return a}(v,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 g.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=ft(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:(a=$t(Rt().m(function t(e,r,n){var o;return Rt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,bt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return a.apply(this,arguments)})},{key:"addPatternsToMap",value:(o=$t(Rt().m(function t(e,r,n){var o;return Rt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,It(this.map,e,r,n,o))},t,this)})),function(t,e,r){return o.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=P(t,2),i=P(a[0],2);e=i[0],r=i[1];var u=P(a[1],2);n=u[0],o=u[1]}var l=E([e,r],[n,r]),c=E([e,r],[e,o]),s=j(l),f=j(c);return"".concat(f," by ").concat(s)}((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=P(t,2),n=r[0],o=r[1],a=P(e,2),i=a[0],u=a[1],l=u-o,c=i-n,s=[];if(Math.abs(l)>1e-4){var f=Math.round(E([n,o],[n,u]));s.push("".concat(l>0?"north":"south"," ").concat(j(f)))}if(Math.abs(c)>1e-4){var h=Math.round(E([n,o],[i,o]));s.push("".concat(c>0?"east":"west"," ").concat(j(h)))}return s.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=P(N(t),4),a=o[0],i=o[1],u=o[2],l=o[3],c=[r.project([a,i]),r.project([a,l]),r.project([u,i]),r.project([u,l])],s=Math.min.apply(Math,S(c.map(function(t){return t.x}))),f=Math.max.apply(Math,S(c.map(function(t){return t.x}))),h=Math.min.apply(Math,S(c.map(function(t){return t.y}))),p=Math.max.apply(Math,S(c.map(function(t){return t.y}))),y=e.left-n.left,d=e.top-n.top,v=e.right-n.left,g=e.bottom-n.top;return s<v&&f>y&&h<g&&p>d}(t,e,this.map)}}],n&&zt(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o,a,i}(i)}}]);
|
|
2
|
+
"use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[772],{808(t,e,r){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 o(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,a(n.key),n)}}function a(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+""}r.r(e),r.d(e,{default:()=>Vt});var i=function(){return t=function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)},(e=[{key:"isBaseMapReady",value:function(){throw new Error(this.name+" must implement isBaseMapReady()")}}])&&o(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}(),u=400,l=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];function c(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({preventScroll:!0})})}function s(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 f=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 h(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 p(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,u=t.getResolution,l=[],c=[],s=function(){var t=a();return{center:o(),bounds:i(),resolution:u(),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),l.push(["load",y]),e.once("idle",function(){return p(r.MAP_FIRST_IDLE,s())});var d=function(){return p(r.MAP_MOVE_START)};e.on("movestart",d),l.push(["movestart",d]);var v=f(function(){p(r.MAP_MOVE_END,s())},500);e.on("moveend",v),l.push(["moveend",v]);var g,m,b=(g=function(){p(r.MAP_MOVE,s())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,g.apply(void 0,arguments))});e.on("zoom",b),l.push(["zoom",b]);var M=function(){return p(r.MAP_RENDER)};e.on("render",M),l.push(["render",M]);var w=f(function(){p(r.MAP_DATA_CHANGE,s())},500),S=function(t){t.isSourceLoaded&&w()};e.on("styledata",w),e.on("sourcedata",S),l.push(["styledata",w],["sourcedata",S]);var P=function(){return p(r.MAP_STYLE_CHANGE)};e.on("style.load",P),l.push(["style.load",P]);var O=function(t){return p(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",O),l.push(["click",O]),c.push(v,b,w),{remove:function(){c.forEach(function(t){return t.cancel()}),l.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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(r,n)||function(t,e){if(t){if("string"==typeof t)return h(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)?h(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 y(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 d=" ";class v{static get separator(){return d}static set separator(t){d=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+"°"+v.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+"°"+v.separator+a+"′"+v.separator+i+"″"}return n}static toLat(t,e,r){const n=v.toDms(v.wrap90(t),e,r);return null===n?"–":n.slice(1)+v.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=v.toDms(v.wrap180(t),e,r);return null===n?"–":n+v.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=v.toDms(v.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=v.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 g=v,m=Math.PI;class b{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=g.wrap90(Number(t)),this._lon=g.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?g.wrap90(g.parse(t)):g.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?g.wrap90(g.parse(t)):g.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)?g.wrap180(g.parse(t)):g.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?g.wrap180(g.parse(t)):g.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?g.wrap180(g.parse(t)):g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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=g.wrap90(g.parse(e)),r=g.wrap180(g.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 b(e,r)}distanceTo(t,e=6371e3){if(t instanceof b||(t=b.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 b||(t=b.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 g.wrap360(i)}finalBearingTo(t){t instanceof b||(t=b.parse(t));const e=t.initialBearingTo(this)+180;return g.wrap360(e)}midpointTo(t){t instanceof b||(t=b.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)),c=r+Math.atan2(u.y,u.x),s=l.toDegrees(),f=c.toDegrees();return new b(s,f)}intermediatePointTo(t,e){if(t instanceof b||(t=b.parse(t)),this.equals(t))return new b(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),c=2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)),s=Math.sin((1-e)*c)/Math.sin(c),f=Math.sin(e*c)/Math.sin(c),h=s*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),p=s*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),y=s*Math.sin(r)+f*Math.sin(o),d=Math.atan2(y,Math.sqrt(h*h+p*p)),v=Math.atan2(p,h),g=d.toDegrees(),m=v.toDegrees();return new b(g,m)}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),c=Math.sin(o)*Math.sin(n)*Math.cos(a),s=Math.cos(n)-Math.sin(a)*u,f=i+Math.atan2(c,s),h=l.toDegrees(),p=f.toDegrees();return new b(h,p)}static intersection(t,e,r,n){if(t instanceof b||(t=b.parse(t)),r instanceof b||(r=b.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(),c=Number(n).toRadians(),s=i-o,f=u-a,h=2*Math.asin(Math.sqrt(Math.sin(s/2)*Math.sin(s/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new b(t.lat,t.lon);const p=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),y=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),d=Math.acos(Math.min(Math.max(p,-1),1)),v=Math.acos(Math.min(Math.max(y,-1),1)),g=l-(Math.sin(u-a)>0?d:2*m-d),M=(Math.sin(u-a)>0?2*m-v:v)-c;if(0==Math.sin(g)&&0==Math.sin(M))return null;if(Math.sin(g)*Math.sin(M)<0)return null;const w=-Math.cos(g)*Math.cos(M)+Math.sin(g)*Math.sin(M)*Math.cos(h),S=Math.atan2(Math.sin(h)*Math.sin(g)*Math.sin(M),Math.cos(M)+Math.cos(g)*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)),O=a+Math.atan2(Math.sin(l)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),x=P.toDegrees(),E=O.toDegrees();return new b(x,E)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof b||(t=b.parse(t)),e instanceof b||(e=b.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 b||(t=b.parse(t)),e instanceof b||(e=b.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),c=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(u)-Math.cos(o)*Math.sin(i)*Math.cos(n),s=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(u);if(s*s>l*l+c*c)return null;const f=Math.atan2(-c,l),h=Math.acos(s/Math.sqrt(l*l+c*c)),p=a+f+h,y=(a+f-h).toDegrees(),d=p.toDegrees();return{lon1:g.wrap180(y),lon2:g.wrap180(d)}}rhumbDistanceTo(t,e=6371e3){t instanceof b||(t=b.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)>m&&(i=i>0?-(2*m-i):2*m+i);const u=Math.log(Math.tan(o/2+m/4)/Math.tan(n/2+m/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 b||(t=b.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)>m&&(n=n>0?-(2*m-n):2*m+n);const o=Math.log(Math.tan(r/2+m/4)/Math.tan(e/2+m/4)),a=Math.atan2(n,o).toDegrees();return g.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)>m/2&&(l=l>0?m-l:-m-l);const c=Math.log(Math.tan(l/2+m/4)/Math.tan(n/2+m/4)),s=Math.abs(c)>1e-11?u/c:Math.cos(n),f=o+i*Math.sin(a)/s,h=l.toDegrees(),p=f.toDegrees();return new b(h,p)}rhumbMidpointTo(t){t instanceof b||(t=b.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)>m&&(r+=2*m);const a=(e+n)/2,i=Math.tan(m/4+e/2),u=Math.tan(m/4+n/2),l=Math.tan(m/4+a/2);let c=((o-r)*Math.log(l)+r*Math.log(u)-o*Math.log(i))/Math.log(u/i);isFinite(c)||(c=(r+o)/2);const s=a.toDegrees(),f=c.toDegrees();return new b(s,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*m);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof b||(t=b.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)}`):`${g.toLat(this.lat,t,e)}, ${g.toLon(this.lon,t,e)}`}}function M(t,e,r){if(null!==t)for(var n,o,a,i,u,l,c,s,f=0,h=0,p=t.type,y="FeatureCollection"===p,d="Feature"===p,v=y?t.features.length:1,g=0;g<v;g++){u=(s=!!(c=y?t.features[g].geometry:d?t.geometry:t)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var m=0;m<u;m++){var b=0,w=0;if(null!==(i=s?c.geometries[m]:c)){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,g,b,w))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<l.length;n++){if(!1===e(l[n],h,g,b,w))return!1;h++,"MultiPoint"===S&&b++}"LineString"===S&&b++;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,g,b,w))return!1;h++}"MultiLineString"===S&&b++,"Polygon"===S&&w++}"Polygon"===S&&b++;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,g,b,w))return!1;h++}w++}b++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===M(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var w=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return M(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 S(t){return function(t){if(Array.isArray(t))return x(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||O(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 P(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||O(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 O(t,e){if(t){if("string"==typeof t)return x(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)?x(t,e):void 0}}function x(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 E=function(t,e){var r=P(t,2),n=r[0],o=r[1],a=P(e,2),i=a[0],u=a[1],l=new b(o,n),c=new b(u,i);return l.distanceTo(c)},j=function(t){var e=t/1609.344;if(e<.5){var r=Math.round(t),n=1===r?"metre":"metres";return"".concat(r," ").concat(n)}if(e<10){var o=Number.parseFloat(e.toFixed(1)),a=1===o?"mile":"miles";return"".concat(o," ").concat(a)}var i=Math.round(e);return"".concat(i," miles")},N=function(t){return w(t)};function A(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return T(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)?T(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 T(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 I(t){return I="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},I(t)}function L(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 k(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?L(Object(r),!0).forEach(function(e){R(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):L(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function R(t,e,r){return(e=function(t){var e=function(t){if("object"!=I(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=I(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==I(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function _(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 C="highlighted-label";function D(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=A(n,2),l=u[0],c=u[1],s=A(o,2),f=s[0],h=s[1];return e<=l?c:e>=f?h:c+(e-l)/(f-l)*(h-c)}(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 _(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)?_(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=_(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],c=a[i+2],s=a[i+3];if(e<=u)return l;if(e<=c)return l+(e-u)/(c-u)*(s-l)}return a[a.length-1]}function F(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function B(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){F(t,r);var u=e.feature,l=e.layer;r.highlightLayerId="highlight-".concat(l.id);var c=u.id,s=u.type,f=u.properties,h=u.geometry;t.getSource(C).setData({id:c,type:s,properties:f,geometry:h}),r.highlightedExpr=l.layout["text-size"];var p=t.getZoom(),y=(o=l,a=1.5*D(r.highlightedExpr,p),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:C,layout:k(k({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:k(k({},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 G(t){t.getSource(C)||t.addSource(C,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function $(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 z(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},B(t,r,o),r.text}return $(t),G(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){$(t),G(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=D(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=function(t,e){return t[0]===e[0]&&t[1]===e[1]},o=e.filter(function(e){var o=Math.abs(e[0]-t[0]),a=Math.abs(e[1]-t[1]);return("ArrowUp"===r?e[1]<=t[1]&&a>=o:"ArrowDown"===r?e[1]>t[1]&&a>=o:"ArrowLeft"===r?e[0]<=t[0]&&a<o:"ArrowRight"!==r||e[0]>t[0]&&a<o)&&!n(e,t)});o.length||o.push(t);var a=function(e){return Math.hypot(t[0]-e[0],t[1]-e[1])},i=o.reduce(function(t,e){return a(e)<a(t)?e:t},o[0]);return e.findIndex(function(t){return n(t,i)})}([e.currentPixel.x,e.currentPixel.y],n,t);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},B(t,r,o),r.text):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return F(t,o)}}}var W=function(t){return t.endsWith(".cold")?"".concat(t.slice(0,-5),".hot"):t.endsWith(".hot")?"".concat(t.slice(0,-4),".cold"):null};function q(t){return q="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},q(t)}function Z(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||H(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 H(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}}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 V(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 Y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?V(Object(r),!0).forEach(function(e){J(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):V(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function J(t,e,r){return(e=function(t){var e=function(t){if("object"!=q(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=q(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==q(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var K="icon-image",X="active-highlight",Q="active-highlight-inner",tt="selected-highlight",et=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},rt=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},nt=function(t,e,r,n){var o=n.featureId,a=n.idProperty,i=n.geometry,u=t.getLayer(r);u&&(e[r]||(e[r]={ids:new Set,fillIds:new Set,idProperty:a,sourceId:u.source,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(e[r].hasFillGeometry=!0,e[r].fillIds.add(o)),e[r].ids.add(o))},ot=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",""])})}})},at=function(t,e){var r="_".concat(e.replaceAll("-",""),"Sources");ot(t,t[r]||new Set,new Set,e),t[r]=new Set},it=function(t,e,r,n,o,a,i){!!t.getLayer(e)||t.addLayer(Y(Y({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n=Z(r,2),o=n[0],a=n[1];t.setPaintProperty(e,o,a)}),t.setFilter(e,i),t.moveLayer(e)},ut=function(t,e,r,n,o,a,i){var u,l=t.getLayoutProperty(o,"icon-offset");t.getLayer(e)||t.addLayer(Y(Y({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:Y(Y(J(J({},K,a),"icon-anchor",null!==(u=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==u?u:"center"),void 0!==l&&{"icon-offset":l}),{},{"icon-allow-overlap":!0})})),t.setLayoutProperty(e,K,a),void 0!==l&&t.setLayoutProperty(e,"icon-offset",l),t.setFilter(e,i),t.moveLayer(e)},lt=function(t,e,r,n,o){var a=function(t,e){var r={};return null==e||e.forEach(function(e){nt(t,r,e.layerId,e);var n=W(e.layerId);n&&nt(t,r,n,e)}),r}(t,e),i=new Set(Object.keys(a)),u="_".concat(n.replaceAll("-",""),"Sources"),l=t[u]||new Set;return ot(t,l,i,n),t[u]=i,i.forEach(function(e){return function(t,e,r,n,o,a){var i,u=r[e],l=u.ids,c=u.fillIds,s=u.idProperty,f=u.sourceId,h=u.hasFillGeometry,p=t.getLayer(e),y=null!==(i=n[e])&&void 0!==i?i:n[W(e)];if(p&&y){var d=p.sourceLayer,v=h?"fill":p.type,g="".concat(o,"-").concat(e),m=y.fill,b=o===tt,M=function(t){return t===tt||t===Q}(o),w=function(t,e){return{lineColor:e?t.selectionStroke:t.stroke,lineWidth:e?t.strokeWidth:t.activeStrokeWidth}}(y,M),S=w.lineColor,P=w.lineWidth,O=s?["get",s]:["id"],x=["in",O,["literal",Array.from(l)]];if("fill-extrusion"!==p.type)switch(v){case"fill":!function(t,e,r,n,o){var a=o.idExpression,i=o.fill,u=o.lineColor,l=o.lineWidth,c=o.filter;if(o.isSelected){var s=[];o.fillIds.forEach(function(t){return s.push(t)});var f=["in",a,["literal",s]];it(t,"".concat(e,"-fill"),"fill",r,n,{"fill-color":i},f)}it(t,"".concat(e,"-line"),"line",r,n,{"line-color":u,"line-width":l},c)}(t,g,f,d,{isSelected:b,idExpression:O,fillIds:c,fill:m,lineColor:S,lineWidth:P,filter:x});break;case"line":!function(t,e,r,n,o,a,i){t.getLayer("".concat(e,"-fill"))&&t.setFilter("".concat(e,"-fill"),["==","id",""]),it(t,"".concat(e,"-line"),"line",r,n,{"line-color":o,"line-width":a},i)}(t,g,f,d,S,P,x);break;case"symbol":!function(t,e,r,n,o,a,i){var u=t.getLayoutProperty(o,K);if(Array.isArray(u)){var l=i===et?"user_symbolActiveImageId":"user_symbolSelectedImageId";ut(t,"".concat(e,"-symbol"),r,n,o,["get",l],a)}else{var c=i(t,u);c&&ut(t,"".concat(e,"-symbol"),r,n,o,c,a)}}(t,g,f,d,e,x,a)}else!function(t,e,r,n){var o=n.lineColor,a=n.lineWidth,i=n.idExpression,u=[];n.ids.forEach(function(t){return u.push(t)});var l=["in",i,["literal",u]],c=t.getLayer(r),s=c.source,f=c.sourceLayer;it(t,"".concat(e,"-line"),"line",s,f,{"line-color":o,"line-width":a},l)}(t,g,e,{ids:l,lineColor:S,lineWidth:P,idExpression:O})}}(t,e,a,r,n,o)}),a};function ct(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,c=!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){c=!0,o=t}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return st(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)?st(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 st(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 ft=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 ht(t,e){if(t){if("string"==typeof t)return pt(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)?pt(t,e):void 0}}function pt(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 yt=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=function(t){var e,r=new Set(t);return t.forEach(function(t){var e=W(t);e&&r.add(e)}),function(t){if(Array.isArray(t))return pt(t)}(e=r)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||ht(e)||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.")}()}(e).filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=ht(t))){e&&(t=e);var r=0,n=function(){};return{s:n,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:n}}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 o,a=!0,i=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return a=t.done,t},e:function(t){i=!0,o=t},f:function(){try{a||null==e.return||e.return()}finally{if(i)throw o}}}}(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,c=l.x,s=l.y,f=[[c-10,s-10],[c+10,s+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 dt(){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,c=Object.create(l.prototype);return vt(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(vt(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,vt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,vt(f,"constructor",c),vt(c,"constructor",l),l.displayName="GeneratorFunction",vt(c,o,"GeneratorFunction"),vt(f),vt(f,o,"Generator"),vt(f,n,function(){return this}),vt(f,"toString",function(){return"[object Generator]"}),(dt=function(){return{w:a,m:h}})()}function vt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}vt=function(t,e,r,n){function a(e,r){vt(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))},vt(t,e,r,n)}function gt(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 mt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){gt(a,n,o,i,u,"next",t)}function u(t){gt(a,n,o,i,u,"throw",t)}i(void 0)})}}var bt=function(){var t=mt(dt().m(function t(e,r,n,o){var a,i,u,l=arguments;return dt().w(function(t){for(;;)switch(t.n){case 0:if(u=l.length>4&&void 0!==l[4]?l[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return null!==(a=e._activeSymbolImageMap)&&void 0!==a||(e._activeSymbolImageMap={}),null!==(i=e._selectedSymbolImageMap)&&void 0!==i||(e._selectedSymbolImageMap={}),t.n=2,Promise.all(r.flatMap(function(t){var r=o.getSymbolImageId(t,n,!1,u),a=o.getSymbolImageId(t,n,!0,u);return r&&a&&(e._activeSymbolImageMap[r]=a),["normal","active","selected"].map(function(){var i=mt(dt().m(function i(l){var c,s;return dt().w(function(i){for(;;)switch(i.n){case 0:if(c="active"===l?a:r,"selected"===l||c&&!e.hasImage(c)){i.n=1;break}return i.a(2);case 1:return i.n=2,o.rasteriseSymbolImage(t,n,l,u);case 2:(s=i.v)&&("selected"===l&&r&&(e._selectedSymbolImageMap[r]=s.imageId),e.hasImage(s.imageId)||e.addImage(s.imageId,s.imageData,{pixelRatio:u}));case 3:return i.a(2)}},i)}));return function(t){return i.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),Mt=function(t){return Math.max(2,2*t)},wt=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")};function St(t){return St="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},St(t)}var Pt=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===St(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null},Ot=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 xt(){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,c=Object.create(l.prototype);return Et(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(Et(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,Et(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,Et(f,"constructor",c),Et(c,"constructor",l),l.displayName="GeneratorFunction",Et(c,o,"GeneratorFunction"),Et(f),Et(f,o,"Generator"),Et(f,n,function(){return this}),Et(f,"toString",function(){return"[object Generator]"}),(xt=function(){return{w:a,m:h}})()}function Et(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Et=function(t,e,r,n){function a(e,r){Et(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))},Et(t,e,r,n)}function jt(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 Nt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){jt(a,n,o,i,u,"next",t)}function u(t){jt(a,n,o,i,u,"throw",t)}i(void 0)})}}var At=new Map,Tt=function(){var t=Nt(xt().m(function t(e,r,n,o){var a,i,u,l,c,s,f,h,p,y;return xt().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=At.get(i)){t.n=4;break}return l=Pt(e.fillPatternForegroundColor,r)||"black",c=Pt(e.fillPatternBackgroundColor,r)||"transparent",s=wt(a,l,c),f='<rect width="16" height="16" fill="'.concat(c,'"/>'),h=Mt(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(s,"</svg>"),t.n=3,Ot(y,p,p);case 3:u=t.v,At.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)}}(),It=function(){var t=Nt(xt().m(function t(e,r,n,o,a){var i,u;return xt().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return i=Mt(a),u=r.reduce(function(t,r){var u=o.getPatternImageId(r,n,a);return!u||t[u]||e.hasImage(u)||(t[u]=Nt(xt().m(function t(){var u;return xt().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,Tt(r,n,o,a);case 1:(u=t.v)&&!e.hasImage(u.imageId)&&e.addImage(u.imageId,u.imageData,{pixelRatio:i});case 2:return t.a(2)}},t)}))),t},{}),t.n=2,Promise.all(Object.values(u).map(function(t){return t()}));case 2:return t.a(2)}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}();function Lt(t){return Lt="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},Lt(t)}var kt=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function Rt(){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,c=Object.create(l.prototype);return _t(c,"_invoke",function(r,n,o){var a,u,l,c=0,s=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&&c&&!o&&e<s.length;e++){var o,a=s[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,s,y){if(c>1)throw TypeError("Generator is already running");for(f&&1===s&&p(s,y),u=s,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(c=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{c=1}}return{value:e,done:f}}}(r,o,a),!0),c}var i={};function u(){}function l(){}function c(){}e=Object.getPrototypeOf;var s=[][n]?e(e([][n]())):(_t(e={},n,function(){return this}),e),f=c.prototype=u.prototype=Object.create(s);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,c):(t.__proto__=c,_t(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return l.prototype=c,_t(f,"constructor",c),_t(c,"constructor",l),l.displayName="GeneratorFunction",_t(c,o,"GeneratorFunction"),_t(f),_t(f,o,"Generator"),_t(f,n,function(){return this}),_t(f,"toString",function(){return"[object Generator]"}),(Rt=function(){return{w:a,m:h}})()}function _t(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}_t=function(t,e,r,n){function a(e,r){_t(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))},_t(t,e,r,n)}function Ct(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 Dt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ct(Object(r),!0).forEach(function(e){Ft(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ct(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Ft(t,e,r){return(e=Wt(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Bt(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 Gt(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){Gt(a,n,o,i,u,"next",t)}function u(t){Gt(a,n,o,i,u,"throw",t)}i(void 0)})}}function zt(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,Wt(n.key),n)}}function Wt(t){var e=function(t){if("object"!=Lt(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=Lt(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Lt(e)?e:e+""}function qt(t,e,r){return e=Ht(e),function(t,e){if(e&&("object"==Lt(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,Zt()?Reflect.construct(e,r||[],Ht(t).constructor):e.apply(t,r))}function Zt(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(Zt=function(){return!!t})()}function Ht(t){return Ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ht(t)}function Ut(t,e){return Ut=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Ut(t,e)}var Vt=function(t){function e(t){var r,n=t.mapFramework,o=t.mapProviderConfig,a=void 0===o?{}:o,i=t.events,u=t.eventBus;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(r=qt(this,e)).maplibreModule=n,r.events=i,r.eventBus=u,r.capabilities={supportedShortcuts:l,supportsMapSizes:!0},Object.assign(r,a),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Ut(t,e)}(e,t),r=e,n=[{key:"name",get:function(){return"MapLibreProvider"}},{key:"initMap",value:(i=$t(Rt().m(function t(e){var r,n,o,a,i,u,l,f,h,d,v,g,m,b=this;return Rt().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,a=e.mapSize,i=e.center,u=e.zoom,l=e.bounds,f=e.pixelRatio,h=Bt(e,kt),this.mapStyleId=null==o?void 0:o.id,this.mapSize=a,d=this.maplibreModule.Map,v=this.events,g=this.eventBus,(m=new d(Dt(Dt({},h),{},{container:r,style:null==o?void 0:o.url,pixelRatio:f,padding:n,center:i,zoom:u,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),l&&m.fitBounds(l,{duration:0}),s(m),c(m),p({map:m,events:v,eventBus:g,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),y({mapProvider:this,map:m,events:v,eventBus:g}),m.on("load",function(){b.labelNavigator=z(m,null==o?void 0:o.mapColorScheme,v,g)}),this.eventBus.emit(v.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 i.apply(this,arguments)})},{key:"isBaseMapReady",value:function(){var t;return Boolean(null===(t=this.map)||void 0===t?void 0:t.getStyle())}},{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=yt(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()?u:0})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:u})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:u})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:u})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:N(t),r=this.map.isStyleLoaded()?u: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?(lt(r,o,a,X,et),lt(r,o,a,Q,rt)):(at(r,X),at(r,Q));var i={};null!=n&&n.length?i=lt(r,n,a,tt,rt):at(r,tt);var u=[];return Object.entries(i).forEach(function(t){var e=Z(t,2),n=e[0],o=e[1],a=o.ids,i=o.idProperty;u.push.apply(u,function(t){return function(t){if(Array.isArray(t))return U(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||H(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.")}()}(r.queryRenderedFeatures({layers:[n]}).filter(function(t){var e;return a.has(i?null===(e=t.properties)||void 0===e?void 0:e[i]: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,c=[],s=a.length-1;s>=0;s--){var f,h=a[s],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),c.push(h))}var d=t.unproject(e),v=[d.lng,d.lat],g=c.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=ct(t,2),n=r[0],o=r[1],a=!1,i=0,u=e.length-1;i<e.length;u=i,i++){var l=ct(e[i],2),c=l[0],s=l[1],f=ct(e[u],2),h=f[0],p=f[1];s>o!=p>o&&n<(h-c)*(o-s)/(p-s)+c&&(a=!a)}return a}(v,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 g.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=ft(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:(a=$t(Rt().m(function t(e,r,n){var o;return Rt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,bt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return a.apply(this,arguments)})},{key:"addPatternsToMap",value:(o=$t(Rt().m(function t(e,r,n){var o;return Rt().w(function(t){for(;;)if(0===t.n)return o=this.map.getPixelRatio()||1,t.a(2,It(this.map,e,r,n,o))},t,this)})),function(t,e,r){return o.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=P(t,2),i=P(a[0],2);e=i[0],r=i[1];var u=P(a[1],2);n=u[0],o=u[1]}var l=E([e,r],[n,r]),c=E([e,r],[e,o]),s=j(l),f=j(c);return"".concat(f," by ").concat(s)}((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=P(t,2),n=r[0],o=r[1],a=P(e,2),i=a[0],u=a[1],l=u-o,c=i-n,s=[];if(Math.abs(l)>1e-4){var f=Math.round(E([n,o],[n,u]));s.push("".concat(l>0?"north":"south"," ").concat(j(f)))}if(Math.abs(c)>1e-4){var h=Math.round(E([n,o],[i,o]));s.push("".concat(c>0?"east":"west"," ").concat(j(h)))}return s.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=P(N(t),4),a=o[0],i=o[1],u=o[2],l=o[3],c=[r.project([a,i]),r.project([a,l]),r.project([u,i]),r.project([u,l])],s=Math.min.apply(Math,S(c.map(function(t){return t.x}))),f=Math.max.apply(Math,S(c.map(function(t){return t.x}))),h=Math.min.apply(Math,S(c.map(function(t){return t.y}))),p=Math.max.apply(Math,S(c.map(function(t){return t.y}))),y=e.left-n.left,d=e.top-n.top,v=e.right-n.left,g=e.bottom-n.top;return s<v&&f>y&&h<g&&p>d}(t,e,this.map)}}],n&&zt(r.prototype,n),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,n,o,a,i}(i)}}]);
|
|
@@ -47,7 +47,7 @@ export function evalInterpolate (expr, zoom) {
|
|
|
47
47
|
return v0 + (v1 - v0) * ((zoom - z0) / (z1 - z0))
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
return stops[stops.length - 1]
|
|
50
|
+
return stops[stops.length - 1] // NOSONAR array.at() would exclude pre Chrome 92
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export function getHighlightColors (isDarkStyle) {
|
|
@@ -235,7 +235,7 @@ export function createMapLabelNavigator (map, mapColorScheme, events, eventBus)
|
|
|
235
235
|
const closest = findClosestLabel(state.labels, centerPoint)
|
|
236
236
|
state.currentPixel = { x: closest.x, y: closest.y }
|
|
237
237
|
applyHighlight(map, closest, state)
|
|
238
|
-
return
|
|
238
|
+
return closest.text
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
function highlightNext (direction) {
|
|
@@ -252,7 +252,7 @@ export function createMapLabelNavigator (map, mapColorScheme, events, eventBus)
|
|
|
252
252
|
}
|
|
253
253
|
state.currentPixel = { x: labelData.x, y: labelData.y }
|
|
254
254
|
applyHighlight(map, labelData, state)
|
|
255
|
-
return
|
|
255
|
+
return labelData.text
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
setSymbolTextOpacity(map)
|
|
@@ -191,7 +191,7 @@ describe('labels utils', () => {
|
|
|
191
191
|
// One feat: highlightNext without currentPixel falls back to highlightCenter (lines 249-251)
|
|
192
192
|
const feat1 = { layer: { id: 's2' }, properties: { name: 'City1' }, geometry: { type: 'Point', coordinates: [1, 2] } }
|
|
193
193
|
map.queryRenderedFeatures.mockReturnValue([feat1])
|
|
194
|
-
expect(nav.highlightNextLabel('ArrowRight')).
|
|
194
|
+
expect(nav.highlightNextLabel('ArrowRight')).toBe('City1')
|
|
195
195
|
|
|
196
196
|
// Single label at currentPixel → navigateToNextLabel → null (lines 253-255)
|
|
197
197
|
expect(nav.highlightNextLabel('ArrowRight')).toBeNull()
|
|
@@ -205,7 +205,7 @@ describe('labels utils', () => {
|
|
|
205
205
|
const feat2 = { layer: { id: 's2' }, properties: { name: 'City2' }, geometry: { type: 'Point', coordinates: [3, 4] } }
|
|
206
206
|
map.queryRenderedFeatures.mockReturnValue([feat1, feat2])
|
|
207
207
|
spatialNavigate.mockReturnValue(0)
|
|
208
|
-
expect(nav.highlightNextLabel('ArrowRight')).
|
|
208
|
+
expect(nav.highlightNextLabel('ArrowRight')).toBe('City2')
|
|
209
209
|
|
|
210
210
|
// clearHighlightedLabel removes layer
|
|
211
211
|
map.getLayer.mockReturnValue(true)
|
|
@@ -7,7 +7,7 @@ import turfBbox from '@turf/bbox'
|
|
|
7
7
|
// -----------------------------------------------------------------------------
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Calculate distance in
|
|
10
|
+
* Calculate distance in metres between two [lng, lat] coordinates
|
|
11
11
|
*/
|
|
12
12
|
const getDistance = (from, to) => {
|
|
13
13
|
const [lng1, lat1] = from
|
|
@@ -16,22 +16,24 @@ const getDistance = (from, to) => {
|
|
|
16
16
|
const fromLatLon = new LatLon(lat1, lng1)
|
|
17
17
|
const toLatLon = new LatLon(lat2, lng2)
|
|
18
18
|
|
|
19
|
-
return fromLatLon.distanceTo(toLatLon) //
|
|
19
|
+
return fromLatLon.distanceTo(toLatLon) // metres
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Format dimension,
|
|
23
|
+
* Format dimension, metres if less than 0.5 miles, otherwise miles
|
|
24
24
|
*/
|
|
25
|
-
const formatDimension = (
|
|
25
|
+
const formatDimension = (metres) => {
|
|
26
26
|
const WHOLE_MILE_THRESHOLD = 10
|
|
27
27
|
const MILE_THRESHOLD = 0.5
|
|
28
|
-
const
|
|
28
|
+
const METRES_PER_MILE = 1609.344
|
|
29
29
|
|
|
30
|
-
const miles =
|
|
30
|
+
const miles = metres / METRES_PER_MILE
|
|
31
31
|
|
|
32
32
|
// Check if we are under the half-mile threshold
|
|
33
33
|
if (miles < MILE_THRESHOLD) {
|
|
34
|
-
|
|
34
|
+
const roundedMetres = Math.round(metres)
|
|
35
|
+
const units = roundedMetres === 1 ? 'metre' : 'metres'
|
|
36
|
+
return `${roundedMetres} ${units}`
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
if (miles < WHOLE_MILE_THRESHOLD) {
|
|
@@ -50,7 +52,7 @@ const formatDimension = (meters) => {
|
|
|
50
52
|
|
|
51
53
|
/**
|
|
52
54
|
* bounds: [[west, south], [east, north]]
|
|
53
|
-
* Returns: "
|
|
55
|
+
* Returns: "400 metres by 1.4 miles"
|
|
54
56
|
*/
|
|
55
57
|
const getAreaDimensions = (bounds) => {
|
|
56
58
|
let west, south, east, north
|
|
@@ -69,12 +71,12 @@ const getAreaDimensions = (bounds) => {
|
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
// Width: west <-> east at the southern latitude
|
|
72
|
-
const
|
|
74
|
+
const widthMetres = getDistance([west, south], [east, south])
|
|
73
75
|
// Height: south <-> north at the western longitude
|
|
74
|
-
const
|
|
76
|
+
const heightMetres = getDistance([west, south], [west, north])
|
|
75
77
|
|
|
76
|
-
const widthLabel = formatDimension(
|
|
77
|
-
const heightLabel = formatDimension(
|
|
78
|
+
const widthLabel = formatDimension(widthMetres)
|
|
79
|
+
const heightLabel = formatDimension(heightMetres)
|
|
78
80
|
|
|
79
81
|
return `${heightLabel} by ${widthLabel}`
|
|
80
82
|
}
|
|
@@ -82,7 +84,7 @@ const getAreaDimensions = (bounds) => {
|
|
|
82
84
|
/**
|
|
83
85
|
* Generate a cardinal direction move description.
|
|
84
86
|
* Only non-zero moves are announced.
|
|
85
|
-
* Example: "north
|
|
87
|
+
* Example: "north 400 metres", "east 750 metres", or "south 400 metres, west 750 metres"
|
|
86
88
|
*/
|
|
87
89
|
const getCardinalMove = (from, to) => {
|
|
88
90
|
const [lng1, lat1] = from
|
|
@@ -94,13 +96,13 @@ const getCardinalMove = (from, to) => {
|
|
|
94
96
|
const moves = []
|
|
95
97
|
|
|
96
98
|
if (Math.abs(dLat) > 0.0001) { // threshold to ignore tiny movement
|
|
97
|
-
const
|
|
98
|
-
moves.push(`${dLat > 0 ? 'north' : 'south'} ${formatDimension(
|
|
99
|
+
const metres = Math.round(getDistance([lng1, lat1], [lng1, lat2]))
|
|
100
|
+
moves.push(`${dLat > 0 ? 'north' : 'south'} ${formatDimension(metres)}`)
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
if (Math.abs(dLng) > 0.0001) {
|
|
102
|
-
const
|
|
103
|
-
moves.push(`${dLng > 0 ? 'east' : 'west'} ${formatDimension(
|
|
104
|
+
const metres = Math.round(getDistance([lng1, lat1], [lng2, lat1]))
|
|
105
|
+
moves.push(`${dLng > 0 ? 'east' : 'west'} ${formatDimension(metres)}`)
|
|
104
106
|
}
|
|
105
107
|
|
|
106
108
|
return moves.join(', ')
|
|
@@ -12,18 +12,21 @@ jest.mock('@turf/bbox', () => jest.fn(() => [-1, 50, 1, 52]))
|
|
|
12
12
|
describe('spatial utils', () => {
|
|
13
13
|
test('formatDimension hits all branches', () => {
|
|
14
14
|
// < 0.5 miles
|
|
15
|
-
expect(spatial.formatDimension(500)).toMatch(/
|
|
15
|
+
expect(spatial.formatDimension(500)).toMatch(/metres?$/)
|
|
16
|
+
|
|
17
|
+
// Singular metre (exactly 1) - hits roundedMetres === 1 branch
|
|
18
|
+
expect(spatial.formatDimension(1)).toBe('1 metre')
|
|
16
19
|
|
|
17
20
|
// Singular mile (exactly 1.0) - hits value === 1 branch
|
|
18
21
|
expect(spatial.formatDimension(1609.344)).toBe('1 mile')
|
|
19
22
|
|
|
20
23
|
// 5 miles
|
|
21
|
-
const
|
|
22
|
-
expect(spatial.formatDimension(
|
|
24
|
+
const metresSmallMiles = 5 * 1609.344
|
|
25
|
+
expect(spatial.formatDimension(metresSmallMiles)).toMatch(/^5\s*miles$/)
|
|
23
26
|
|
|
24
27
|
// >= WHOLE_MILE_THRESHOLD
|
|
25
|
-
const
|
|
26
|
-
expect(spatial.formatDimension(
|
|
28
|
+
const metresLarge = 15 * 1609.344
|
|
29
|
+
expect(spatial.formatDimension(metresLarge)).toBe('15 miles')
|
|
27
30
|
})
|
|
28
31
|
|
|
29
32
|
test('array bounds triggers all branches', () => {
|
|
@@ -71,6 +71,10 @@
|
|
|
71
71
|
// plain block child would.
|
|
72
72
|
display: flex;
|
|
73
73
|
flex-direction: column;
|
|
74
|
+
|
|
75
|
+
// A panel's `html` config (see Panel.jsx) commonly uses GOV.UK Frontend classes, which set
|
|
76
|
+
// colour explicitly rather than inheriting it — see tools/_govuk-content.scss.
|
|
77
|
+
@include tools.govuk-content-fallback-colors;
|
|
74
78
|
}
|
|
75
79
|
|
|
76
80
|
// The tabpanel (see Tabs.module.scss) is its own scroll/focus region nested inside this
|
package/src/config/appConfig.js
CHANGED
|
@@ -53,7 +53,7 @@ export const defaultAppConfig = {
|
|
|
53
53
|
desktop: journeyContinueSlots
|
|
54
54
|
}, {
|
|
55
55
|
id: 'exit',
|
|
56
|
-
label: '
|
|
56
|
+
label: 'Close map view',
|
|
57
57
|
iconId: 'close',
|
|
58
58
|
onClick: (_e, { services }) => services.closeApp(),
|
|
59
59
|
excludeWhen: ({ appConfig, appState }) => !appConfig.hasExitButton || !appState.isFullscreen,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// ===================================================
|
|
2
|
+
// Tool: govuk-content-fallback-colors
|
|
3
|
+
// ===================================================
|
|
4
|
+
// Resets GOV.UK Frontend's own text-colour classes back onto our theme tokens, since they set
|
|
5
|
+
// colour explicitly rather than inheriting it. !important wins against a third-party stylesheet
|
|
6
|
+
// whose specificity and load order we don't control. Deliberately-coloured components (tags,
|
|
7
|
+
// error/warning text, buttons, .govuk-link--inverse/--text-colour/--muted) are left untouched so
|
|
8
|
+
// their built-in contrast pairing isn't broken.
|
|
9
|
+
// stylelint-disable declaration-no-important -- resetting a third-party stylesheet's own colours, see comment above
|
|
10
|
+
@mixin govuk-content-fallback-colors {
|
|
11
|
+
:is(
|
|
12
|
+
.govuk-body, .govuk-body-l, .govuk-body-m, .govuk-body-s, .govuk-body-xs,
|
|
13
|
+
.govuk-heading-xl, .govuk-heading-l, .govuk-heading-m, .govuk-heading-s,
|
|
14
|
+
.govuk-list, .govuk-label, .govuk-fieldset__legend,
|
|
15
|
+
.govuk-table, .govuk-table__cell, .govuk-table__header
|
|
16
|
+
) {
|
|
17
|
+
color: var(--foreground-color) !important;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// GOV.UK Frontend renders these as its muted grey, matching our --secondary-text-color.
|
|
21
|
+
:is(.govuk-hint, .govuk-caption-xl, .govuk-caption-l, .govuk-caption-m, .govuk-caption-s) {
|
|
22
|
+
color: var(--secondary-text-color) !important;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.govuk-link:is(:link, :visited) {
|
|
26
|
+
color: var(--content-link-color) !important;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// stylelint-enable declaration-no-important
|
package/src/types.js
CHANGED
|
@@ -306,10 +306,10 @@
|
|
|
306
306
|
* Get the dimensions of the visible map area as a formatted string (e.g., '400m by 750m').
|
|
307
307
|
*
|
|
308
308
|
* @property {(from: [number, number], to: [number, number]) => string} getCardinalMove
|
|
309
|
-
* Get cardinal direction and distance between two coordinates ([lng, lat] or [easting, northing] depending on the crs of the map provider). Returns a formatted string (e.g., 'north
|
|
309
|
+
* Get cardinal direction and distance between two coordinates ([lng, lat] or [easting, northing] depending on the crs of the map provider). Returns a formatted string (e.g., 'north 400 metres' or 'south 400 metres, west 750 metres').
|
|
310
310
|
*
|
|
311
311
|
* @property {() => number} getResolution
|
|
312
|
-
* Get map resolution in
|
|
312
|
+
* Get map resolution in metres per pixel.
|
|
313
313
|
*
|
|
314
314
|
* @property {(coords: [number, number]) => { x: number, y: number }} mapToScreen
|
|
315
315
|
* Convert map coordinates ([lng, lat] or [easting, northing] depending on the crs of the map provider) to screen pixel position (x from left edge, y from top edge of viewport).
|