@defra/interactive-map 0.0.45-alpha → 0.0.46-fmp-1

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.
Files changed (39) hide show
  1. package/dist/css/index.css +1 -1
  2. package/dist/esm/im-core.js +1 -1
  3. package/dist/umd/im-core.js +1 -1
  4. package/docs/api/map-style-config.md +7 -0
  5. package/docs/assets/images/select-feature.jpg +0 -0
  6. package/govuk-prototype-kit.config.json +1 -0
  7. package/package.json +1 -1
  8. package/plugins/draw/dist/esm/im-draw-ol-adapter.js +1 -1
  9. package/plugins/draw/dist/umd/im-draw-ol-adapter.js +1 -1
  10. package/plugins/draw/dist/umd/im-draw-plugin.js +1 -1
  11. package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.js +5 -0
  12. package/plugins/draw/src/adapters/openlayers/snap/snapEngine.js +10 -5
  13. package/plugins/draw/src/adapters/openlayers/snap/snapEngine.test.js +1 -0
  14. package/providers/beta/openlayers/dist/esm/im-openlayers-provider.js +1 -1
  15. package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js +1 -1
  16. package/providers/beta/openlayers/src/openlayersProvider.js +1 -1
  17. package/providers/beta/openlayers/src/openlayersProvider.test.js +22 -0
  18. package/providers/beta/openlayers/src/utils/highlightFeatures.js +23 -11
  19. package/providers/beta/openlayers/src/utils/highlightFeatures.test.js +2 -0
  20. package/providers/beta/openlayers/src/utils/hoverCursor.js +6 -5
  21. package/providers/beta/openlayers/src/utils/hoverCursor.test.js +2 -1
  22. package/providers/beta/openlayers/src/utils/queryFeatures.js +9 -6
  23. package/providers/beta/openlayers/src/utils/queryFeatures.test.js +6 -3
  24. package/providers/beta/openlayers/src/utils/spatial.js +6 -15
  25. package/providers/beta/openlayers/src/utils/spatial.test.js +3 -9
  26. package/providers/beta/openlayers/src/utils/tileLayers.js +5 -0
  27. package/providers/beta/openlayers/src/utils/tileLayers.test.js +1 -1
  28. package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
  29. package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
  30. package/providers/maplibre/src/utils/labels.js +3 -3
  31. package/providers/maplibre/src/utils/labels.test.js +2 -2
  32. package/src/App/components/Attributions/Attributions.jsx +3 -1
  33. package/src/App/components/Attributions/Attributions.module.scss +7 -3
  34. package/src/App/components/Attributions/Attributions.test.jsx +8 -0
  35. package/src/App/hooks/useLayoutMeasurements.js +94 -29
  36. package/src/App/hooks/useLayoutMeasurements.test.js +55 -10
  37. package/src/App/layout/Layout.jsx +7 -3
  38. package/src/App/layout/layout.module.scss +30 -1
  39. package/src/types.js +5 -0
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see im-maplibre-provider.js.LICENSE.txt */
2
- "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[772],{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),"".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 `${closest.text} (${closest.layer.id})`
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 `${labelData.text} (${labelData.layer.id})`
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')).toContain('City1')
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')).toContain('City2')
208
+ expect(nav.highlightNextLabel('ArrowRight')).toBe('City2')
209
209
 
210
210
  // clearHighlightedLabel removes layer
211
211
  map.getLayer.mockReturnValue(true)
@@ -12,8 +12,10 @@ export const Attributions = () => {
12
12
  return null
13
13
  }
14
14
 
15
+ const isMobile = breakpoint === 'mobile'
16
+
15
17
  return (
16
- breakpoint !== 'mobile' && (
18
+ (!isMobile || mapStyle.showAttributionOnMobile) && (
17
19
  <div className='im-c-attributions' dangerouslySetInnerHTML={{ __html: mapStyle.attribution }} />
18
20
  )
19
21
  )
@@ -5,9 +5,13 @@
5
5
  background-color: var(--attributions-background-color);
6
6
  padding: var(--attributions-padding);
7
7
  font-size: var(--attributions-font-size);
8
- white-space: nowrap;
9
- overflow: hidden;
10
- text-overflow: ellipsis;
8
+ // Wraps rather than truncating so the text stays fully readable, capped to whatever
9
+ // width .im-o-app__attributions (layout.module.scss) currently gives it — the space
10
+ // beside the logo when docked, or the full row (--attributions--stacked) when it doesn't fit there.
11
+ max-width: 100%;
12
+ white-space: normal;
13
+ overflow-wrap: break-word;
14
+ text-align: right;
11
15
  pointer-events: auto;
12
16
  }
13
17
 
@@ -42,4 +42,12 @@ describe('Attributions', () => {
42
42
  const { container } = render(<Attributions />)
43
43
  expect(container.firstChild).toBeNull()
44
44
  })
45
+
46
+ it('renders on mobile when the style opts in via showAttributionOnMobile', () => {
47
+ useApp.mockReturnValue({ breakpoint: 'mobile' })
48
+ useMap.mockReturnValue({ mapStyle: { attribution: '<span>© Test</span>', showAttributionOnMobile: true } })
49
+
50
+ render(<Attributions />)
51
+ expect(screen.getByText('© Test')).toBeInTheDocument()
52
+ })
45
53
  })
@@ -6,6 +6,7 @@ import { getSafeZoneInset } from '../../utils/getSafeZoneInset.js'
6
6
 
7
7
  const BANNER_DOCKED_CLASS = 'im-o-app__banner--docked'
8
8
  const BANNER_PANEL_SELECTOR = '.im-c-panel--banner'
9
+ const ATTRIBUTIONS_STACKED_CLASS = 'im-o-app__attributions--stacked'
9
10
 
10
11
  const buttonHeight = (ref) => ref?.current?.offsetHeight ?? 0
11
12
  const buttonWidth = (ref) => ref?.current?.offsetWidth ?? 0
@@ -19,12 +20,16 @@ const subSlotMaxHeight = (columnHeight, siblingButtons, gap) => columnHeight - (
19
20
  const rightOffsetBottom = (containerPad, bottomRightHeight, attributionsHeight, gap) =>
20
21
  containerPad + (bottomRightHeight > 0 ? bottomRightHeight + gap : attributionsHeight)
21
22
 
22
- // Mobile's actions bar sits in flow (already reflected in baseBottom); tablet/desktop's floats, so this clears it too.
23
+ // Clears the bottom row's own TOP edge (not just its trailing gap below), so the hint
24
+ // never overlaps the logo/attribution row itself, plus a gap above it. That trivially
25
+ // also clears anything after the row in flow — mobile's in-flow actions bar included.
26
+ // Tablet/desktop's floating actions bar can sit independently higher than the row, so
27
+ // still needs its own explicit clearance, hence the Math.max with actionsOffset below.
23
28
  const hintBottom = (main, bottom, actionsEl, gap) => {
24
- const baseBottom = main.offsetHeight - bottom.offsetTop - bottom.offsetHeight
29
+ const clearsBottomRow = main.offsetHeight - bottom.offsetTop + gap
25
30
  const actionsHeight = actionsEl?.offsetHeight ?? 0
26
31
  const actionsOffset = actionsHeight > 0 ? main.offsetHeight - actionsEl.offsetTop : 0
27
- return Math.max(baseBottom, actionsOffset + gap)
32
+ return Math.max(clearsBottomRow, actionsOffset + gap)
28
33
  }
29
34
 
30
35
  // Space between .im-o-app__left/.im-o-app__right for the banner to dock in.
@@ -49,6 +54,81 @@ const clearBannerPanelWidths = (bannerEl) => {
49
54
  const bannerInset = (isDocked, primaryGap, sideColWidth, gap) =>
50
55
  isDocked ? primaryGap + sideColWidth + gap : primaryGap
51
56
 
57
+ // Natural (unwrapped) width of the attribution text, measured by forcing nowrap just long
58
+ // enough to read scrollWidth, then restoring — same "mutate, measure, restore" approach as
59
+ // clearBannerPanelWidths/bannerConfiguredWidth above. Needed because once wrapping is
60
+ // allowed, scrollWidth alone can't tell us how wide the text *would* be on one line.
61
+ const attributionsNaturalWidth = (attributionsEl) => {
62
+ const textEl = attributionsEl?.firstElementChild
63
+ if (!textEl) {
64
+ return 0
65
+ }
66
+ const previousWhiteSpace = textEl.style.whiteSpace
67
+ textEl.style.whiteSpace = 'nowrap'
68
+ const width = textEl.scrollWidth
69
+ textEl.style.whiteSpace = previousWhiteSpace
70
+ return width
71
+ }
72
+
73
+ // Stacks (drops to its own full-width row below the logo) once the attribution text no
74
+ // longer fits, at its natural width, in the space beside the logo column.
75
+ const isAttributionsStacked = (naturalWidth, availableWidth) => naturalWidth > availableWidth
76
+
77
+ // Docked, attributions bleeds primaryGap below the row's bottom edge then grows upward from
78
+ // there by its own height — once that height exceeds primaryGap, it creeps back up into the
79
+ // row itself, where .im-o-app__bottom-right shares the same horizontal space. This is how far
80
+ // that needs pushing up to stay clear. Stacked already has its own clearance (the stacked
81
+ // rule's margin-top), so none is needed there.
82
+ const attributionsBottomRightClearance = (isStacked, attributionsHeight, dividerGap, primaryGap) =>
83
+ isStacked ? 0 : Math.max(0, attributionsHeight + dividerGap - primaryGap)
84
+
85
+ // Docks centred between the side columns when there's room, otherwise stacks full-width
86
+ // (mobile always stacks). Sets the banner's own CSS vars and returns what the side-column
87
+ // offset calc below needs.
88
+ function applyBannerLayout ({ appContainer, root, top, bannerRef, leftRef, rightRef, isMobile, dividerGap, primaryGap }) {
89
+ const banner = bannerRef?.current
90
+ if (isMobile) {
91
+ clearBannerPanelWidths(banner)
92
+ }
93
+ const bannerHeight = buttonHeight(bannerRef)
94
+ const hasBanner = bannerHeight > 0
95
+ const bannerSideColWidth = symmetricWidth(buttonWidth(leftRef), buttonWidth(rightRef))
96
+ const defaultPreferredWidth = Number.parseInt(getComputedStyle(root).getPropertyValue('--banner-preferred-width'), 10)
97
+ const preferredWidth = bannerConfiguredWidth(banner) ?? defaultPreferredWidth
98
+ appContainer.style.setProperty('--banner-preferred-width', `${preferredWidth}px`)
99
+ const gutterWidth = bannerGutterWidth(top.offsetWidth, bannerSideColWidth, dividerGap)
100
+ const isDocked = !isMobile && isBannerDocked(gutterWidth, preferredWidth)
101
+ banner?.classList.toggle(BANNER_DOCKED_CLASS, isDocked)
102
+
103
+ const bannerSideInset = `${bannerInset(isDocked, primaryGap, bannerSideColWidth, dividerGap)}px`
104
+ appContainer.style.setProperty('--banner-left', bannerSideInset)
105
+ appContainer.style.setProperty('--banner-right', bannerSideInset)
106
+
107
+ // Sits at the top row's bottom edge; top.offsetHeight already includes a trailing gap.
108
+ const isBannerStacked = hasBanner && !isDocked
109
+ const bannerTop = hasBanner ? top.offsetTop + top.offsetHeight : 0
110
+ appContainer.style.setProperty('--banner-top', `${bannerTop}px`)
111
+
112
+ return { isBannerStacked, bannerTop, bannerHeight }
113
+ }
114
+
115
+ // Docks attributions beside the logo when its natural width fits there, otherwise stacks it
116
+ // onto its own full-width row below (im-o-app__attributions--stacked, in layout.module.scss),
117
+ // genuinely growing .im-o-app__bottom and pushing the logo and bottom-right buttons up. Must
118
+ // run before the offsets below, since toggling the stacked class changes
119
+ // bottom.offsetTop/offsetHeight that they read.
120
+ function applyAttributionsLayout ({ appContainer, bottom, attributions, dividerGap, primaryGap }) {
121
+ const attributionsCol = bottom.children[1] // the bottom-right column, a DOM sibling of attributions
122
+ const isStacked = isAttributionsStacked(attributionsNaturalWidth(attributions), attributionsCol?.offsetWidth ?? 0)
123
+ attributions.classList.toggle(ATTRIBUTIONS_STACKED_CLASS, isStacked)
124
+ // getBoundingClientRect, not offset math, because .im-o-app__bottom's `justify-content:
125
+ // space-between` gap between the two columns isn't a fixed value (unlike `gap`) to reconstruct.
126
+ const left = attributionsCol ? Math.round(attributionsCol.getBoundingClientRect().left - bottom.getBoundingClientRect().left) : 0
127
+ appContainer.style.setProperty('--attributions-left', `${left}px`)
128
+ const clearance = attributionsBottomRightClearance(isStacked, attributions.offsetHeight, dividerGap, primaryGap)
129
+ appContainer.style.setProperty('--bottom-right-clearance', `${clearance}px`)
130
+ }
131
+
52
132
  /**
53
133
  * Computes layout CSS vars for the map overlay and dispatches the safe zone inset used
54
134
  * for `fitBounds`/`setView`. Waits for `arePluginsEvaluated` so the inset reflects final
@@ -68,7 +148,6 @@ function calculateLayout (layoutRefs, breakpoint) {
68
148
  const topRightCol = topRightColRef.current
69
149
  const bottom = bottomRef.current
70
150
  const attributions = attributionsRef.current
71
- const banner = bannerRef?.current
72
151
 
73
152
  if ([main, top, bottom].some(r => !r)) {
74
153
  return
@@ -82,30 +161,12 @@ function calculateLayout (layoutRefs, breakpoint) {
82
161
  const topColWidthPx = symmetricWidth(topLeftCol.offsetWidth, topRightCol.offsetWidth)
83
162
  appContainer.style.setProperty('--top-col-width', `${topColWidthPx}px`)
84
163
 
85
- // === Banner: docks centred between the side columns when there's room, otherwise
86
- // stacks full-width. Mobile always stacks. ===
164
+ // Banner: docks centred between the side columns when there's room, otherwise stacks
165
+ // full-width. Mobile always stacks.
87
166
  const isMobile = breakpoint === 'mobile'
88
- if (isMobile) {
89
- clearBannerPanelWidths(banner)
90
- }
91
- const bannerHeight = buttonHeight(bannerRef)
92
- const hasBanner = bannerHeight > 0
93
- const bannerSideColWidth = symmetricWidth(buttonWidth(leftRef), buttonWidth(rightRef))
94
- const defaultPreferredWidth = Number.parseInt(getComputedStyle(root).getPropertyValue('--banner-preferred-width'), 10)
95
- const preferredWidth = bannerConfiguredWidth(banner) ?? defaultPreferredWidth
96
- appContainer.style.setProperty('--banner-preferred-width', `${preferredWidth}px`)
97
- const gutterWidth = bannerGutterWidth(top.offsetWidth, bannerSideColWidth, dividerGap)
98
- const isDocked = !isMobile && isBannerDocked(gutterWidth, preferredWidth)
99
- banner?.classList.toggle(BANNER_DOCKED_CLASS, isDocked)
100
-
101
- const bannerSideInset = `${bannerInset(isDocked, primaryGap, bannerSideColWidth, dividerGap)}px`
102
- appContainer.style.setProperty('--banner-left', bannerSideInset)
103
- appContainer.style.setProperty('--banner-right', bannerSideInset)
104
-
105
- // Sits at the top row's bottom edge; top.offsetHeight already includes a trailing gap.
106
- const isBannerStacked = hasBanner && !isDocked
107
- const bannerTop = hasBanner ? top.offsetTop + top.offsetHeight : 0
108
- appContainer.style.setProperty('--banner-top', `${bannerTop}px`)
167
+ const { isBannerStacked, bannerTop, bannerHeight } = applyBannerLayout({
168
+ appContainer, root, top, bannerRef, leftRef, rightRef, isMobile, dividerGap, primaryGap
169
+ })
109
170
 
110
171
  // Stacked pushes the side columns below the banner plus a trailing gap — added here, not
111
172
  // via a CSS last-child margin, since closed consumer HTML panels stay in the DOM (display:none).
@@ -113,6 +174,8 @@ function calculateLayout (layoutRefs, breakpoint) {
113
174
  ? bannerTop + bannerHeight + dividerGap
114
175
  : colHeight + top.offsetTop
115
176
 
177
+ applyAttributionsLayout({ appContainer, bottom, attributions, dividerGap, primaryGap })
178
+
116
179
  // === Left container offsets ===
117
180
  const leftOffsetTop = sideOffsetTop(topLeftCol.offsetHeight)
118
181
  const leftColumnHeight = bottom.offsetTop - leftOffsetTop - dividerGap
@@ -144,7 +207,7 @@ export function useLayoutMeasurements () {
144
207
  const { dispatch, breakpoint, layoutRefs, arePluginsEvaluated, appVisible, isFullscreen } = useApp()
145
208
  const { mapSize, isMapReady } = useMap()
146
209
 
147
- const { bannerRef, mainRef, headerRef, topRef, topLeftColRef, topRightColRef, bottomRef, bottomRightRef, leftTopRef, leftBottomRef, rightTopRef, rightBottomRef, drawerRef, actionsRef, leftRef, rightRef } = layoutRefs
210
+ const { bannerRef, mainRef, headerRef, topRef, topLeftColRef, topRightColRef, bottomRef, bottomRightRef, attributionsRef, leftTopRef, leftBottomRef, rightTopRef, rightBottomRef, drawerRef, actionsRef, leftRef, rightRef } = layoutRefs
148
211
 
149
212
  // 1. Clear the evaluated flag on structural changes, gating the safe zone until re-evaluated.
150
213
  useLayoutEffect(() => {
@@ -168,7 +231,9 @@ export function useLayoutMeasurements () {
168
231
  // 3. Recalculate CSS vars on resize; safe zone dispatch stays Effect 2's job.
169
232
  // Memoized so useResizeObserver doesn't re-run (and cancel its RAF) on every render.
170
233
  const observedRefs = useMemo(
171
- () => [bannerRef, mainRef, headerRef, topRef, topLeftColRef, topRightColRef, actionsRef, bottomRef, bottomRightRef, leftTopRef, leftBottomRef, rightTopRef, rightBottomRef, drawerRef, leftRef, rightRef],
234
+ // attributionsRef included so its height (now variable, since attribution text can wrap
235
+ // onto multiple lines) recalculates --right-offset-bottom when the wrap changes.
236
+ () => [bannerRef, mainRef, headerRef, topRef, topLeftColRef, topRightColRef, actionsRef, bottomRef, bottomRightRef, attributionsRef, leftTopRef, leftBottomRef, rightTopRef, rightBottomRef, drawerRef, leftRef, rightRef],
172
237
  []
173
238
  )
174
239