@defra/interactive-map 0.0.18-alpha → 0.0.20-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +1 -1
  2. package/dist/css/index.css +1 -1
  3. package/dist/esm/im-core.js +1 -1
  4. package/dist/esm/im-shell.js +1 -1
  5. package/dist/umd/im-core.js +1 -1
  6. package/dist/umd/index.js +1 -1
  7. package/docs/api/button-definition.md +22 -5
  8. package/docs/api/map-style-config.md +2 -11
  9. package/docs/api/marker-config.md +19 -5
  10. package/docs/api/panel-definition.md +16 -0
  11. package/docs/api.md +101 -48
  12. package/docs/architecture.md +0 -2
  13. package/docs/assets/css/docusaurus.css +205 -0
  14. package/docs/assets/images/basic-map.jpg +0 -0
  15. package/docs/assets/images/button-first.jpg +0 -0
  16. package/{assets → docs/assets}/images/hero.png +0 -0
  17. package/docs/assets/images/marker-panel.jpg +0 -0
  18. package/docs/examples/add-marker-with-panel.mdx +123 -0
  19. package/docs/examples/basic-map.mdx +53 -0
  20. package/docs/examples/button-map.mdx +53 -0
  21. package/docs/examples/index.mdx +49 -0
  22. package/docs/getting-started.md +80 -53
  23. package/docs/index.mdx +1 -1
  24. package/docs/plugins/interact.md +32 -1
  25. package/docs/plugins.md +1 -1
  26. package/docusaurus.config.cjs +14 -5
  27. package/package.json +3 -3
  28. package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
  29. package/plugins/beta/datasets/dist/umd/im-datasets-plugin.js +1 -1
  30. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
  31. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  32. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  33. package/plugins/beta/scale-bar/dist/css/index.css +1 -1
  34. package/plugins/beta/scale-bar/src/scaleBar.scss +1 -0
  35. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  36. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  37. package/plugins/interact/dist/umd/index.js +1 -1
  38. package/plugins/interact/src/InteractInit.jsx +5 -3
  39. package/plugins/interact/src/api/clear.js +1 -1
  40. package/plugins/interact/src/api/selectMarker.js +14 -0
  41. package/plugins/interact/src/api/selectMarker.test.js +25 -0
  42. package/plugins/interact/src/api/unselectMarker.js +14 -0
  43. package/plugins/interact/src/api/unselectMarker.test.js +14 -0
  44. package/plugins/interact/src/events.js +18 -30
  45. package/plugins/interact/src/events.test.js +113 -108
  46. package/plugins/interact/src/manifest.js +10 -2
  47. package/plugins/interact/src/reducer.js +36 -1
  48. package/plugins/interact/src/reducer.test.js +40 -1
  49. package/plugins/interact/src/utils/interactionModes.js +12 -0
  50. package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
  51. package/providers/maplibre/dist/umd/im-maplibre-framework.js +1 -1
  52. package/providers/maplibre/dist/umd/im-maplibre-framework.js.LICENSE.txt +1 -1
  53. package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
  54. package/providers/maplibre/src/maplibreProvider.js +3 -2
  55. package/providers/maplibre/src/maplibreProvider.test.js +22 -0
  56. package/src/App/components/Panel/Panel.jsx +6 -6
  57. package/src/App/components/Panel/Panel.test.jsx +37 -0
  58. package/src/App/components/Viewport/Viewport.jsx +5 -15
  59. package/src/App/components/Viewport/Viewport.module.scss +2 -0
  60. package/src/App/components/Viewport/Viewport.test.jsx +16 -33
  61. package/src/App/hooks/useInterfaceAPI.js +7 -7
  62. package/src/App/hooks/useInterfaceAPI.test.js +15 -9
  63. package/src/App/hooks/useLayoutMeasurements.js +64 -72
  64. package/src/App/layout/Layout.jsx +1 -1
  65. package/src/App/layout/layout.module.scss +1 -8
  66. package/src/App/renderer/HtmlElementHost.jsx +10 -5
  67. package/src/App/renderer/mapPanels.js +2 -1
  68. package/src/App/store/appActionsMap.js +4 -4
  69. package/src/App/store/appActionsMap.test.js +10 -0
  70. package/src/InteractiveMap/InteractiveMap.js +61 -13
  71. package/src/InteractiveMap/InteractiveMap.test.js +130 -8
  72. package/src/InteractiveMap/domStateManager.js +18 -6
  73. package/src/InteractiveMap/domStateManager.test.js +21 -0
  74. package/src/InteractiveMap/historyManager.js +28 -16
  75. package/src/InteractiveMap/historyManager.test.js +17 -0
  76. package/src/config/appConfig.js +2 -1
  77. package/src/config/appConfig.test.js +3 -13
  78. package/src/config/defaults.js +2 -1
  79. package/src/config/events.js +20 -21
  80. package/src/services/closeApp.js +1 -10
  81. package/src/services/closeApp.test.js +3 -43
  82. package/src/services/eventBus.js +61 -0
  83. package/src/services/eventBus.test.js +70 -0
  84. package/src/types.js +6 -1
  85. package/src/utils/mapStateSync.js +48 -10
  86. package/src/utils/mapStateSync.test.js +29 -9
  87. package/assets/css/docusaurus.css +0 -104
  88. package/docs/examples.mdx +0 -70
  89. /package/docs/assets/{screens-blue.jpg → images/screens-blue.jpg} +0 -0
  90. /package/docs/assets/{screens-white.jpg → images/screens-white.jpg} +0 -0
  91. /package/{assets → docs/assets}/images/slot-map.svg +0 -0
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * MapLibre GL JS
3
- * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.21.1/LICENSE.txt
3
+ * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.23.0/LICENSE.txt
4
4
  */
@@ -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],{335(t,e,r){r.r(e),r.d(e,{default:()=>Ut});var n=400,o=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];r(738);new Set,new Set,r(287);function a(t){return a="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},a(t)}function i(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 l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach(function(e){u(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function u(t,e,r){return(e=function(t){var e=function(t){if("object"!=a(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==a(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s={slot:"middle",open:!1,dismissible:!0,modal:!0},c=(l({},s),l(l({},s),{},{width:"500px"}),l(l({},s),{},{width:"500px"}),{small:1,medium:1.5,large:2});function f(t){var e=t.getCanvas();e.removeAttribute("role"),e.setAttribute("tabindex",-1),e.removeAttribute("aria-label"),e.style.display="block"}function h(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 y=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 p(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 d(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,l=t.getResolution,u=[],s=[],c=function(){var t=a();return{center:o(),bounds:i(),resolution:l(),zoom:t,isAtMaxZoom:e.getMaxZoom()<=t,isAtMinZoom:e.getMinZoom()>=t}},f=function(t,e){return n.emit(t,e)},h=function(){return f(r.MAP_LOADED)};e.on("load",h),u.push(["load",h]),e.once("idle",function(){return f(r.MAP_FIRST_IDLE,c())});var d=function(){return f(r.MAP_MOVE_START)};e.on("movestart",d),u.push(["movestart",d]);var v=y(function(){f(r.MAP_MOVE_END,c())},500);e.on("moveend",v),u.push(["moveend",v]),s.push(v);var g,m,b=(g=function(){f(r.MAP_MOVE,c())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,g.apply(void 0,arguments))});e.on("zoom",b),u.push(["zoom",b]),s.push(b);var M=function(){return f(r.MAP_RENDER)};e.on("render",M),u.push(["render",M]);var w=y(function(){f(r.MAP_DATA_CHANGE,c())},500);e.on("styledata",w),u.push(["styledata",w]),s.push(w);var S=function(){return f(r.MAP_STYLE_CHANGE)};e.on("style.load",S),u.push(["style.load",S]);var P=function(t){return f(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",P),u.push(["click",P]),{remove:function(){s.forEach(function(t){return t.cancel()}),u.forEach(function(t){var r,n,o=(n=2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,n)||function(t,e){if(t){if("string"==typeof t)return p(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)?p(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 v(t){var e=t.mapProvider,r=t.map,n=t.events,o=t.eventBus,a=function(t){r.once("style.load",function(){o.emit(n.MAP_STYLE_CHANGE,{mapStyleId:t.id})}),r.setStyle(t.url,{diff:!1})},i=function(t){r.setPixelRatio(t)},l=function(t){var r=t.mapSize;e.mapSize=r};return o.on(n.MAP_SET_STYLE,a),o.on(n.MAP_SET_PIXEL_RATIO,i),o.on(n.MAP_SIZE_CHANGE,l),{remove:function(){o.off(n.MAP_SET_STYLE,a),o.off(n.MAP_SET_PIXEL_RATIO,i),o.off(n.MAP_SIZE_CHANGE,l)}}}let g=" ";class m{static get separator(){return g}static set separator(t){g=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+"°"+m.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+"°"+m.separator+a+"′"+m.separator+i+"″"}return n}static toLat(t,e,r){const n=m.toDms(m.wrap90(t),e,r);return null===n?"–":n.slice(1)+m.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=m.toDms(m.wrap180(t),e,r);return null===n?"–":n+m.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=m.toDms(m.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=m.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 b=m,M=Math.PI;class w{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=b.wrap90(Number(t)),this._lon=b.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?b.wrap90(b.parse(t)):b.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?b.wrap90(b.parse(t)):b.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)?b.wrap180(b.parse(t)):b.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?b.wrap180(b.parse(t)):b.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?b.wrap180(b.parse(t)):b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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 w(e,r)}distanceTo(t,e=6371e3){if(t instanceof w||(t=w.parse(t)),isNaN(e))throw new TypeError(`invalid radius ‘${e}’`);const r=e,n=this.lat.toRadians(),o=this.lon.toRadians(),a=t.lat.toRadians(),i=a-n,l=t.lon.toRadians()-o,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(a)*Math.sin(l/2)*Math.sin(l/2);return r*(2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)))}initialBearingTo(t){if(t instanceof w||(t=w.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 b.wrap360(i)}finalBearingTo(t){t instanceof w||(t=w.parse(t));const e=t.initialBearingTo(this)+180;return b.wrap360(e)}midpointTo(t){t instanceof w||(t=w.parse(t));const e=this.lat.toRadians(),r=this.lon.toRadians(),n=t.lat.toRadians(),o=(t.lon-this.lon).toRadians(),a=Math.cos(e),i=Math.sin(e),l={x:a+Math.cos(n)*Math.cos(o),y:0+Math.cos(n)*Math.sin(o),z:i+Math.sin(n)},u=Math.atan2(l.z,Math.sqrt(l.x*l.x+l.y*l.y)),s=r+Math.atan2(l.y,l.x),c=u.toDegrees(),f=s.toDegrees();return new w(c,f)}intermediatePointTo(t,e){if(t instanceof w||(t=w.parse(t)),this.equals(t))return new w(this.lat,this.lon);const r=this.lat.toRadians(),n=this.lon.toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=o-r,l=a-n,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(r)*Math.cos(o)*Math.sin(l/2)*Math.sin(l/2),s=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)),c=Math.sin((1-e)*s)/Math.sin(s),f=Math.sin(e*s)/Math.sin(s),h=c*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),y=c*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),p=c*Math.sin(r)+f*Math.sin(o),d=Math.atan2(p,Math.sqrt(h*h+y*y)),v=Math.atan2(y,h),g=d.toDegrees(),m=v.toDegrees();return new w(g,m)}destinationPoint(t,e,r=6371e3){const n=t/r,o=Number(e).toRadians(),a=this.lat.toRadians(),i=this.lon.toRadians(),l=Math.sin(a)*Math.cos(n)+Math.cos(a)*Math.sin(n)*Math.cos(o),u=Math.asin(l),s=Math.sin(o)*Math.sin(n)*Math.cos(a),c=Math.cos(n)-Math.sin(a)*l,f=i+Math.atan2(s,c),h=u.toDegrees(),y=f.toDegrees();return new w(h,y)}static intersection(t,e,r,n){if(t instanceof w||(t=w.parse(t)),r instanceof w||(r=w.parse(r)),isNaN(e))throw new TypeError(`invalid brng1 ‘${e}’`);if(isNaN(n))throw new TypeError(`invalid brng2 ‘${n}’`);const o=t.lat.toRadians(),a=t.lon.toRadians(),i=r.lat.toRadians(),l=r.lon.toRadians(),u=Number(e).toRadians(),s=Number(n).toRadians(),c=i-o,f=l-a,h=2*Math.asin(Math.sqrt(Math.sin(c/2)*Math.sin(c/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new w(t.lat,t.lon);const y=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),p=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),d=Math.acos(Math.min(Math.max(y,-1),1)),v=Math.acos(Math.min(Math.max(p,-1),1)),g=u-(Math.sin(l-a)>0?d:2*M-d),m=(Math.sin(l-a)>0?2*M-v:v)-s;if(0==Math.sin(g)&&0==Math.sin(m))return null;if(Math.sin(g)*Math.sin(m)<0)return null;const b=-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)*b),P=Math.asin(Math.min(Math.max(Math.sin(o)*Math.cos(S)+Math.cos(o)*Math.sin(S)*Math.cos(u),-1),1)),O=a+Math.atan2(Math.sin(u)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),x=P.toDegrees(),j=O.toDegrees();return new w(x,j)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof w||(t=w.parse(t)),e instanceof w||(e=w.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 w||(t=w.parse(t)),e instanceof w||(e=w.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians(),l=Math.asin(Math.sin(o)*Math.sin(a-i));return Math.acos(Math.cos(o)/Math.abs(Math.cos(l)))*Math.sign(Math.cos(i-a))*n}maxLatitude(t){const e=Number(t).toRadians(),r=this.lat.toRadians();return Math.acos(Math.abs(Math.sin(e)*Math.cos(r))).toDegrees()}static crossingParallels(t,e,r){if(t.equals(e))return null;const n=Number(r).toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=e.lat.toRadians(),l=e.lon.toRadians()-a,u=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.sin(l),s=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(l)-Math.cos(o)*Math.sin(i)*Math.cos(n),c=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(l);if(c*c>u*u+s*s)return null;const f=Math.atan2(-s,u),h=Math.acos(c/Math.sqrt(u*u+s*s)),y=a+f+h,p=(a+f-h).toDegrees(),d=y.toDegrees();return{lon1:b.wrap180(p),lon2:b.wrap180(d)}}rhumbDistanceTo(t,e=6371e3){t instanceof w||(t=w.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 l=Math.log(Math.tan(o/2+M/4)/Math.tan(n/2+M/4)),u=Math.abs(l)>1e-11?a/l:Math.cos(n);return Math.sqrt(a*a+u*u*i*i)*r}rhumbBearingTo(t){if(t instanceof w||(t=w.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 b.wrap360(a)}rhumbDestinationPoint(t,e,r=6371e3){const n=this.lat.toRadians(),o=this.lon.toRadians(),a=Number(e).toRadians(),i=t/r,l=i*Math.cos(a);let u=n+l;Math.abs(u)>M/2&&(u=u>0?M-u:-M-u);const s=Math.log(Math.tan(u/2+M/4)/Math.tan(n/2+M/4)),c=Math.abs(s)>1e-11?l/s:Math.cos(n),f=o+i*Math.sin(a)/c,h=u.toDegrees(),y=f.toDegrees();return new w(h,y)}rhumbMidpointTo(t){t instanceof w||(t=w.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),l=Math.tan(M/4+n/2),u=Math.tan(M/4+a/2);let s=((o-r)*Math.log(u)+r*Math.log(l)-o*Math.log(i))/Math.log(l/i);isFinite(s)||(s=(r+o)/2);const c=a.toDegrees(),f=s.toDegrees();return new w(c,f)}static areaOf(t,e=6371e3){const r=e,n=t[0].equals(t[t.length-1]);n||t.push(t[0]);const o=t.length-1;let a=0;for(let e=0;e<o;e++){const r=t[e].lat.toRadians(),n=t[e+1].lat.toRadians(),o=(t[e+1].lon-t[e].lon).toRadians();a+=2*Math.atan2(Math.tan(o/2)*(Math.tan(r/2)+Math.tan(n/2)),1+Math.tan(r/2)*Math.tan(n/2))}(function(t){let e=0,r=t[0].initialBearingTo(t[1]);for(let n=0;n<t.length-1;n++){const o=t[n].initialBearingTo(t[n+1]),a=t[n].finalBearingTo(t[n+1]);e+=(o-r+540)%360-180,e+=(a-o+540)%360-180,r=a}return e+=(t[0].initialBearingTo(t[1])-r+540)%360-180,Math.abs(e)<90})(t)&&(a=Math.abs(a)-2*M);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof w||(t=w.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)}`):`${b.toLat(this.lat,t,e)}, ${b.toLon(this.lon,t,e)}`}}function S(t,e,r){if(null!==t)for(var n,o,a,i,l,u,s,c,f=0,h=0,y=t.type,p="FeatureCollection"===y,d="Feature"===y,v=p?t.features.length:1,g=0;g<v;g++){l=(c=!!(s=p?t.features[g].geometry:d?t.geometry:t)&&"GeometryCollection"===s.type)?s.geometries.length:1;for(var m=0;m<l;m++){var b=0,M=0;if(null!==(i=c?s.geometries[m]:s)){u=i.coordinates;var w=i.type;switch(f=!r||"Polygon"!==w&&"MultiPolygon"!==w?0:1,w){case null:break;case"Point":if(!1===e(u,h,g,b,M))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===e(u[n],h,g,b,M))return!1;h++,"MultiPoint"===w&&b++}"LineString"===w&&b++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(o=0;o<u[n].length-f;o++){if(!1===e(u[n][o],h,g,b,M))return!1;h++}"MultiLineString"===w&&b++,"Polygon"===w&&M++}"Polygon"===w&&b++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for(M=0,o=0;o<u[n].length;o++){for(a=0;a<u[n][o].length-f;a++){if(!1===e(u[n][o][a],h,g,b,M))return!1;h++}M++}b++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===S(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var P=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return S(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 O(t){return function(t){if(Array.isArray(t))return E(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||j(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 x(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||j(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 j(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var A=function(t,e){var r=x(t,2),n=r[0],o=r[1],a=x(e,2),i=a[0],l=a[1],u=new w(o,n),s=new w(l,i);return u.distanceTo(s)},N=function(t){var e=t/1609.344;if(e<.5)return"".concat(Math.round(t),"m");if(e<10){var r=Number.parseFloat(e.toFixed(1)),n=1===r?"mile":"miles";return"".concat(r," ").concat(n)}var o=Math.round(e);return"".concat(o," miles")},T=function(t){return P(t)};function L(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return k(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)?k(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 k(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 R(t){return R="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},R(t)}function I(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 _(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?I(Object(r),!0).forEach(function(e){C(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function C(t,e,r){return(e=function(t){var e=function(t){if("object"!=R(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=R(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==R(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function D(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 F="highlighted-label";function B(t,e){if("number"==typeof t)return t;if(!Array.isArray(t)||"interpolate"!==t[0])return function(t,e){var r=t.stops;if(r.length<2)return r.length>0?r[0][1]:0;for(var n=r[0],o=r[r.length-1],a=1;a<r.length;a++){var i=r[a];if(i[0]>e){o=i,n=r[a-1];break}n=r[a-1],o=i}var l=L(n,2),u=l[0],s=l[1],c=L(o,2),f=c[0],h=c[1];return e<=u?s:e>=f?h:s+(e-u)/(f-u)*(h-s)}(t,e);var r,n=function(t){if(Array.isArray(t))return t}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return D(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)?D(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=D(n).slice(3);if("zoom"!==o[0])throw new Error("Only zoom-based expressions supported");for(var i=0;i<a.length-2;i+=2){var l=a[i],u=a[i+1],s=a[i+2],c=a[i+3];if(e<=l)return u;if(e<=s)return u+(e-l)/(s-l)*(c-u)}return a[a.length-1]}function G(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function $(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){G(t,r);var l=e.feature,u=e.layer;r.highlightLayerId="highlight-".concat(u.id);var s=l.id,c=l.type,f=l.properties,h=l.geometry;t.getSource(F).setData({id:s,type:c,properties:f,geometry:h}),r.highlightedExpr=u.layout["text-size"];var y=t.getZoom(),p=(o=u,a=1.5*B(r.highlightedExpr,y),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:F,layout:_(_({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:_(_({},o.paint),{},{"text-color":i.text,"text-halo-color":i.halo,"text-halo-width":3,"text-halo-blur":1,"text-opacity":1})});t.addLayer(p),t.moveLayer(r.highlightLayerId)}}function z(t){t.getSource(F)||t.addSource(F,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function q(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,l="string"==typeof(o=null===(n=e.layout)||void 0===n?void 0:n["text-field"])?null===(a=/^{(.+)}$/.exec(o))||void 0===a?void 0:a[1]:Array.isArray(o)?null===(i=o.find(function(t){return Array.isArray(t)&&"get"===t[0]}))||void 0===i?void 0:i[1]:null;return l?r.filter(function(t){var r;return t.layer.id===e.id&&(null===(r=t.properties)||void 0===r?void 0:r[l])}).map(function(r){return function(t,e,r,n){var o=function(t){var e=t.type,r=t.coordinates;if("Point"===e)return r;if("MultiPoint"===e)return r[0];if(e.includes("LineString")){var n="LineString"===e?r:r[0];return[(n[0][0]+n[n.length-1][0])/2,(n[0][1]+n[n.length-1][1])/2]}if(e.includes("Polygon")){var o="Polygon"===e?r[0]:r[0][0],a=o.reduce(function(t,e){return[t[0]+e[0],t[1]+e[1]]},[0,0]);return[a[0]/o.length,a[1]/o.length]}return null}(t.geometry);if(!o)return null;var a=n.project({lng:o[0],lat:o[1]});return{text:t.properties[r],x:a.x,y:a.y,feature:t,layer:e}}(r,e,l,t)}).filter(Boolean):[]})}(t,e,r)}function i(){if(a(),!o.labels.length)return null;var e=t.project(t.getCenter()),r=function(t,e){var r;return null===(r=t.reduce(function(t,r){var n=Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2);return!t||n<t.dist?{label:r,dist:n}:t},null))||void 0===r?void 0:r.label}(o.labels,e);return o.currentPixel={x:r.x,y:r.y},$(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")}return q(t),z(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){q(t),z(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=B(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=x(e,2),o=n[0],a=n[1],i=r.filter(function(e){var r=x(e,2),n=r[0],i=r[1];return(n!==o||i!==a)&&function(t,e,r){switch(t){case"ArrowUp":return r<0&&Math.abs(r)>=Math.abs(e);case"ArrowDown":return r>0&&Math.abs(r)>=Math.abs(e);case"ArrowLeft":return e<0&&Math.abs(e)>Math.abs(r);case"ArrowRight":return e>0&&Math.abs(e)>Math.abs(r);default:return!1}}(t,n-o,i-a)});if(!i.length)return r.findIndex(function(t){return t[0]===o&&t[1]===a});var l=-1,u=1/0;return i.forEach(function(t){var e=t[0]-o,n=t[1]-a,i=e*e+n*n;i<u&&(u=i,l=r.indexOf(t))}),l}(t,[e.currentPixel.x,e.currentPixel.y],n);return(null==o||o<0||o>=r.length)&&(o=0),e.labels[r[o].index]}(e,o);return r?(o.currentPixel={x:r.x,y:r.y},$(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return G(t,o)}}}function W(t){return W="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},W(t)}function U(t){return function(t){if(Array.isArray(t))return V(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.")}()}function H(t,e){if(t){if("string"==typeof t)return V(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)?V(t,e):void 0}}function V(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 Y(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 J(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Y(Object(r),!0).forEach(function(e){K(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function K(t,e,r){return(e=function(t){var e=function(t){if("object"!=W(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=W(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==W(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var X=function(t,e,r,n,o,a,i){t.getLayer(e)||t.addLayer(J(J({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n,o,a=(o=2,function(t){if(Array.isArray(t))return t}(n=r)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(n,o)||H(n,o)||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.")}()),i=a[0],l=a[1];t.setPaintProperty(e,i,l)}),t.setFilter(e,i),t.moveLayer(e)};function Q(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return tt(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)?tt(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 tt(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 et=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 rt(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 nt=function(t,e,r){var n=t.getCanvas();if(r&&t.off("mousemove",r),null==e||!e.length)return n.style.cursor="",null;var o=function(r){var o=e.filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return rt(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)?rt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}(e);try{for(a.s();!(r=a.n()).done;){var i=r.value;if("line"===t.getLayer(i).type){var l=i.endsWith("-stroke")?i.slice(0,-7):null;null!==l&&e.includes(l)||n.push(i)}else o.push(i)}}catch(t){a.e(t)}finally{a.f()}return{lineLayers:n,otherLayers:o}}(t,o),i=a.lineLayers,l=a.otherLayers,u=r.point,s=u.x,c=u.y,f=[[s-10,c-10],[s+10,c+10]],h=i.length>0&&t.queryRenderedFeatures(f,{layers:i}).length>0,y=l.length>0&&t.queryRenderedFeatures(r.point,{layers:l}).length>0;n.style.cursor=h||y?"pointer":""}else n.style.cursor=""};return t.on("mousemove",o),o},ot=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),at=function(t,e){return t.symbolSvgContent?{svg:t.symbolSvgContent}:t.symbol?e.get(t.symbol):void 0},it=function(t){if(!function(t){return!(!t.symbol&&!t.symbolSvgContent)}(t))return{};var e={};return ot.forEach(function(r){if(null!=t[r]){var n=r.charAt(6).toLowerCase()+r.slice(7);e[n]=t[r]}}),e},lt=function(t,e){var r;return t.symbolViewBox?t.symbolViewBox:null!==(r=null==e?void 0:e.viewBox)&&void 0!==r?r:"0 0 38 38"},ut=function(t,e,r){return new Promise(function(n,o){var a=new Blob([t],{type:"image/svg+xml"}),i=URL.createObjectURL(a),l=new Image(e,r);l.onload=function(){var t=document.createElement("canvas");t.width=e,t.height=r;var o=t.getContext("2d");o.drawImage(l,0,0,e,r),URL.revokeObjectURL(i),n(o.getImageData(0,0,e,r))},l.onerror=function(){URL.revokeObjectURL(i),o(new Error("Failed to rasterise SVG: ".concat(t.slice(0,80))))},l.src=i})};function st(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return ct(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(ct(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,ct(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,ct(f,"constructor",s),ct(s,"constructor",u),u.displayName="GeneratorFunction",ct(s,o,"GeneratorFunction"),ct(f),ct(f,o,"Generator"),ct(f,n,function(){return this}),ct(f,"toString",function(){return"[object Generator]"}),(st=function(){return{w:a,m:h}})()}function ct(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}ct=function(t,e,r,n){function a(e,r){ct(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},ct(t,e,r,n)}function ft(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function ht(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){ft(a,n,o,i,l,"next",t)}function l(t){ft(a,n,o,i,l,"throw",t)}i(void 0)})}}function yt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||pt(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 pt(t,e){if(t){if("string"==typeof t)return dt(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)?dt(t,e):void 0}}function dt(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 vt=function(t){var e,r=0,n=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=pt(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}}}}(t);try{for(n.s();!(e=n.n()).done;){var o=e.value;r=Math.trunc((r<<5)-r+o.codePointAt(0))}}catch(t){n.e(t)}finally{n.f()}return Math.abs(r).toString(36)},gt=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,a=at(t,r);if(!a)return null;var i=it(t),l=n?r.resolveSelected(a,i,e):r.resolve(a,i,e);return"symbol-".concat(n?"sel-":"").concat(vt(l),"-").concat(o,"x")},mt=new Map,bt=function(){var t=ht(st().m(function t(e,r,n,o,a){var i,l,u,s,c,f,h,y,p,d,v;return st().w(function(t){for(;;)switch(t.n){case 0:if(i=at(e,n)){t.n=1;break}return t.a(2,null);case 1:if(l=it(e),u=o?n.resolveSelected(i,l,r):n.resolve(i,l,r),s="symbol-".concat(o?"sel-":"").concat(vt(u),"-").concat(a,"x"),c=mt.get(s)){t.n=3;break}return f=lt(e,i),h=f.split(" ").map(Number),y=yt(h,4),p=y[2],d=y[3],v='<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(p*a,'" height="').concat(d*a,'" viewBox="').concat(f,'">').concat(u,"</svg>"),t.n=2,ut(v,p*a,d*a);case 2:c=t.v,mt.set(s,c);case 3:return t.a(2,{imageId:s,imageData:c})}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}(),Mt=function(){var t=ht(st().m(function t(e,r,n,o){var a,i=arguments;return st().w(function(t){for(;;)switch(t.n){case 0:if(a=i.length>4&&void 0!==i[4]?i[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return e._symbolImageMap={},t.n=2,Promise.all(r.flatMap(function(t){var r=gt(t,n,o,!1,a),i=gt(t,n,o,!0,a);return r&&i&&(e._symbolImageMap[r]=i),[!1,!0].map(function(){var l=ht(st().m(function l(u){var s,c;return st().w(function(l){for(;;)switch(l.n){case 0:if((s=u?i:r)&&!e.hasImage(s)){l.n=1;break}return l.a(2);case 1:return l.n=2,bt(t,n,o,u,a);case 2:(c=l.v)&&!e.hasImage(c.imageId)&&e.addImage(c.imageId,c.imageData,{pixelRatio:a});case 3:return l.a(2)}},l)}));return function(t){return l.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}();function wt(t){return wt="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},wt(t)}var St=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===wt(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null};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 Ot=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")},xt=function(t,e){return t.fillPatternSvgContent?t.fillPatternSvgContent:t.fillPattern&&null!==(r=null==e||null===(n=e.get(t.fillPattern))||void 0===n?void 0:n.svgContent)&&void 0!==r?r:null;var r,n},jt=function(t,e,r){var n=xt(t,r);if(!n)return null;var o=St(t.fillPatternForegroundColor,e)||"black",a=St(t.fillPatternBackgroundColor,e)||"transparent";return"pattern-".concat(function(t){var e,r=0,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return 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}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}(t);try{for(n.s();!(e=n.n()).done;)r=(r<<5)-r+e.value.codePointAt(0),r&=r}catch(t){n.e(t)}finally{n.f()}return Math.abs(r).toString(36)}(n+o+a))};function Et(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return At(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(At(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,At(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,At(f,"constructor",s),At(s,"constructor",u),u.displayName="GeneratorFunction",At(s,o,"GeneratorFunction"),At(f),At(f,o,"Generator"),At(f,n,function(){return this}),At(f,"toString",function(){return"[object Generator]"}),(Et=function(){return{w:a,m:h}})()}function At(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}At=function(t,e,r,n){function a(e,r){At(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},At(t,e,r,n)}function Nt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function Tt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){Nt(a,n,o,i,l,"next",t)}function l(t){Nt(a,n,o,i,l,"throw",t)}i(void 0)})}}var Lt=new Map,kt=function(){var t=Tt(Et().m(function t(e,r,n){var o,a,i,l,u,s,c,f;return Et().w(function(t){for(;;)switch(t.n){case 0:if(o=xt(e,n)){t.n=1;break}return t.a(2,null);case 1:if(a=jt(e,r,n)){t.n=2;break}return t.a(2,null);case 2:if(i=Lt.get(a)){t.n=4;break}return l=St(e.fillPatternForegroundColor,r)||"black",u=St(e.fillPatternBackgroundColor,r)||"transparent",s=Ot(o,l,u),c='<rect width="16" height="16" fill="'.concat(u,'"/>'),f='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">'.concat(c).concat(s,"</svg>"),t.n=3,ut(f,16,16);case 3:i=t.v,Lt.set(a,i);case 4:return t.a(2,{imageId:a,imageData:i})}},t)}));return function(e,r,n){return t.apply(this,arguments)}}(),Rt=function(){var t=Tt(Et().m(function t(e,r,n,o){return Et().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return t.n=2,Promise.all(r.map(function(){var t=Tt(Et().m(function t(r){var a,i;return Et().w(function(t){for(;;)switch(t.n){case 0:if((a=jt(r,n,o))&&!e.hasImage(a)){t.n=1;break}return t.a(2);case 1:return t.n=2,kt(r,n,o);case 2:(i=t.v)&&e.addImage(i.imageId,i.imageData,{pixelRatio:2});case 3:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}()));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),It=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function _t(t){return _t="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},_t(t)}function Ct(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return Dt(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(Dt(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,Dt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,Dt(f,"constructor",s),Dt(s,"constructor",u),u.displayName="GeneratorFunction",Dt(s,o,"GeneratorFunction"),Dt(f),Dt(f,o,"Generator"),Dt(f,n,function(){return this}),Dt(f,"toString",function(){return"[object Generator]"}),(Ct=function(){return{w:a,m:h}})()}function Dt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Dt=function(t,e,r,n){function a(e,r){Dt(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))},Dt(t,e,r,n)}function Ft(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 Bt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ft(Object(r),!0).forEach(function(e){Gt(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ft(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Gt(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 $t(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 zt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function qt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){zt(a,n,o,i,l,"next",t)}function l(t){zt(a,n,o,i,l,"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"!=_t(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=_t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_t(e)?e:e+""}var Ut=function(){return t=function t(e){var r=e.mapFramework,n=e.mapProviderConfig,a=void 0===n?{}:n,i=e.events,l=e.eventBus;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maplibreModule=r,this.events=i,this.eventBus=l,this.capabilities={supportedShortcuts:o,supportsMapSizes:!0},Object.assign(this,a)},e=[{key:"initMap",value:(i=qt(Ct().m(function t(e){var r,n,o,a,i,l,u,s,c,y,p,g,m,b=this;return Ct().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,a=e.mapSize,i=e.center,l=e.zoom,u=e.bounds,s=e.pixelRatio,c=$t(e,It),this.mapStyleId=null==o?void 0:o.id,this.mapSize=a,y=this.maplibreModule.Map,p=this.events,g=this.eventBus,(m=new y(Bt(Bt({},c),{},{container:r,style:null==o?void 0:o.url,pixelRatio:s,padding:n,center:i,zoom:l,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),u&&m.fitBounds(u,{duration:0}),h(m),f(m),d({map:m,events:p,eventBus:g,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),v({mapProvider:this,map:m,events:p,eventBus:g}),m.on("load",function(){b.labelNavigator=Z(m,null==o?void 0:o.mapColorScheme,p,g)}),this.eventBus.emit(p.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:"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=nt(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:n})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:n})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:n})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:n})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:T(t);this.map.fitBounds(e,{duration:n})}},{key:"setPadding",value:function(t){this.map.setPadding(t)}},{key:"updateHighlightedFeatures",value:function(t,e){return function(t){var e=t.LngLatBounds,r=t.map,n=t.selectedFeatures,o=t.stylesMap;if(!r)return null;var a=function(t,e){var r={};return null==e||e.forEach(function(e){var n=e.featureId,o=e.layerId,a=e.idProperty,i=e.geometry,l=t.getLayer(o);if(l){var u=l.source;r[u]||(r[u]={ids:new Set,fillIds:new Set,idProperty:a,layerId:o,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(r[u].hasFillGeometry=!0,r[u].fillIds.add(n)),r[u].ids.add(n)}}),r}(r,n),i=[],l=new Set(Object.keys(a)),u=r._highlightedSources||new Set;return function(t,e,r){e.forEach(function(e){if(!r.has(e)){var n="highlight-".concat(e);["".concat(n,"-fill"),"".concat(n,"-line"),"".concat(n,"-symbol")].forEach(function(e){t.getLayer(e)&&t.setFilter(e,["==","id",""])})}})}(r,u,l),r._highlightedSources=l,l.forEach(function(t){var e=a[t],n=e.ids,l=e.fillIds,u=e.idProperty,s=e.layerId,c=e.hasFillGeometry,f=r.getLayer(s),h=f.sourceLayer,y=c?"fill":f.type,p="highlight-".concat(t),d=u?["get",u]:["id"],v=["in",d,["literal",U(n)]];if("fill"===y){var g=o[s],m=g.stroke,b=g.strokeWidth,M=g.fill,w=["in",d,["literal",U(l)]],S={"line-color":m,"line-width":b};X(r,"".concat(p,"-fill"),"fill",t,h,{"fill-color":M},w),X(r,"".concat(p,"-line"),"line",t,h,S,v)}if("line"===y){var P=o[s],O={"line-color":P.stroke,"line-width":P.strokeWidth};r.getLayer("".concat(p,"-fill"))&&r.setFilter("".concat(p,"-fill"),["==","id",""]),X(r,"".concat(p,"-line"),"line",t,h,O,v)}if("symbol"===y){var x=r.getLayoutProperty(s,"icon-image"),j=function(t,e){var r,n;return null!==(r=null===(n=t._symbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null}(r,x);j&&function(t,e,r,n,o,a,i){var l;t.getLayer(e)||t.addLayer(J(J({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:{"icon-image":a,"icon-anchor":null!==(l=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==l?l:"center","icon-allow-overlap":!0}})),t.setLayoutProperty(e,"icon-image",a),t.setFilter(e,i),t.moveLayer(e)}(r,"".concat(p,"-symbol"),t,h,s,j,v)}i.push.apply(i,U(r.queryRenderedFeatures({layers:[s]}).filter(function(t){var e;return n.has(u?null===(e=t.properties)||void 0===e?void 0:e[u]: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,i)}({LngLatBounds:this.maplibreModule.LngLatBounds,map:this.map,selectedFeatures:t,stylesMap:e})}},{key:"highlightNextLabel",value:function(t){var e;return(null===(e=this.labelNavigator)||void 0===e?void 0:e.highlightNextLabel(t))||null}},{key:"highlightLabelAtCenter",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.highlightLabelAtCenter())||null}},{key:"clearHighlightedLabel",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.clearHighlightedLabel())||null}},{key:"getCenter",value:function(){var t=this.map.getCenter();return[Number(t.lng.toFixed(7)),Number(t.lat.toFixed(7))]}},{key:"getZoom",value:function(){return Number(this.map.getZoom().toFixed(7))}},{key:"getBounds",value:function(){return this.map.getBounds().toArray().flat(1)}},{key:"getFeaturesAtPoint",value:function(t,e){return function(t,e){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).radius,n=void 0===r?10:r,o=[[e.x-n,e.y-n],[e.x+n,e.y+n]],a=t.queryRenderedFeatures(o);if(0===a.length)return[];var i=new Set(t.queryRenderedFeatures([e.x,e.y]).map(function(t){var e,r=void 0===t.id?JSON.stringify(t.properties):t.id;return"".concat(null===(e=t.layer)||void 0===e?void 0:e.source,":").concat(r)})),l=[];a.forEach(function(t){!1===l.includes(t.layer.id)&&l.push(t.layer.id)});for(var u=new Set,s=[],c=a.length-1;c>=0;c--){var f,h=a[c],y=void 0===h.id?JSON.stringify(h.properties):h.id,p="".concat(null===(f=h.layer)||void 0===f?void 0:f.source,":").concat(y);!1===u.has(p)&&(u.add(p),s.push(h))}var d=t.unproject(e),v=[d.lng,d.lat],g=s.filter(function(t){var e=t.geometry.type;if(e.includes("Polygon"))return("Polygon"===e?[t.geometry.coordinates]:t.geometry.coordinates).some(function(t){return function(t,e){for(var r=Q(t,2),n=r[0],o=r[1],a=!1,i=0,l=e.length-1;i<e.length;l=i,i++){var u=Q(e[i],2),s=u[0],c=u[1],f=Q(e[l],2),h=f[0],y=f[1];c>o!=y>o&&n<(h-s)*(o-c)/(y-c)+s&&(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)},l=function(t){for(var r=0;r<t.length-1;r++){var n=et(e,i(t[r]),i(t[r+1]));n<a&&(a=n)}};if("Point"===o){var u=i(n);a=Math.pow(e.x-u.x,2)+Math.pow(e.y-u.y,2)}else"LineString"===o||"MultiPoint"===o?"LineString"===o?l(n):n.forEach(function(t){var r=i(t),n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);n<a&&(a=n)}):"Polygon"===o||"MultiLineString"===o?n.forEach(l):"MultiPolygon"===o&&n.forEach(function(t){return t.forEach(l)});return a}(t,e,r.geometry);return n+=1e6*l.indexOf(r.layer.id),o.includes("Polygon")&&(n-=5e5),{f:r,score:n+=a}}).sort(function(t,e){return t.score-e.score}).map(function(t){return t.f})}(this.map,t,e)}},{key:"registerSymbols",value:(a=qt(Ct().m(function t(e,r,n){var o;return Ct().w(function(t){for(;;)if(0===t.n)return o=(this.map.getPixelRatio()||1)*(c[this.mapSize]||1),t.a(2,Mt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return a.apply(this,arguments)})},{key:"registerPatterns",value:(r=qt(Ct().m(function t(e,r,n){return Ct().w(function(t){for(;;)if(0===t.n)return t.a(2,Rt(this.map,e,r,n))},t,this)})),function(t,e,n){return r.apply(this,arguments)})},{key:"getAreaDimensions",value:function(){return function(t){var e,r,n,o;if(t&&"function"==typeof t.getWest)e=t.getWest(),r=t.getSouth(),n=t.getEast(),o=t.getNorth();else{if(!Array.isArray(t)||2!==t.length)return"";var a=x(t,2),i=x(a[0],2);e=i[0],r=i[1];var l=x(a[1],2);n=l[0],o=l[1]}var u=A([e,r],[n,r]),s=A([e,r],[e,o]),c=N(u),f=N(s);return"".concat(f," by ").concat(c)}((t=this.maplibreModule.LngLatBounds,e=this.map,r=e.getContainer().getBoundingClientRect(),n=r.width,o=r.height,a=e.getPadding(),i=[a.left,o-a.bottom],l=[n-a.right,a.top],new t(e.unproject(i),e.unproject(l))));var t,e,r,n,o,a,i,l}},{key:"getCardinalMove",value:function(t,e){return function(t,e){var r=x(t,2),n=r[0],o=r[1],a=x(e,2),i=a[0],l=a[1],u=l-o,s=i-n,c=[];if(Math.abs(u)>1e-4){var f=Math.round(A([n,o],[n,l]));c.push("".concat(u>0?"north":"south"," ").concat(N(f)))}if(Math.abs(s)>1e-4){var h=Math.round(A([n,o],[i,o]));c.push("".concat(s>0?"east":"west"," ").concat(N(h)))}return c.join(", ")}(t,e)}},{key:"getResolution",value:function(){return t=this.map.getCenter(),e=this.map.getZoom(),r=t.lat,n=Math.pow(2,e),40075016.686*Math.cos(r*Math.PI/180)/(512*n);var t,e,r,n}},{key:"mapToScreen",value:function(t){return this.map.project(t)}},{key:"screenToMap",value:function(t){var e=this.map.unproject([t.x,t.y]);return[e.lng,e.lat]}},{key:"isGeometryObscured",value:function(t,e){return function(t,e,r){var n=r.getContainer().getBoundingClientRect(),o=x(T(t),4),a=o[0],i=o[1],l=o[2],u=o[3],s=[r.project([a,i]),r.project([a,u]),r.project([l,i]),r.project([l,u])],c=Math.min.apply(Math,O(s.map(function(t){return t.x}))),f=Math.max.apply(Math,O(s.map(function(t){return t.x}))),h=Math.min.apply(Math,O(s.map(function(t){return t.y}))),y=Math.max.apply(Math,O(s.map(function(t){return t.y}))),p=e.left-n.left,d=e.top-n.top,v=e.right-n.left,g=e.bottom-n.top;return c<v&&f>p&&h<g&&y>d}(t,e,this.map)}}],e&&Zt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,a,i}()}}]);
2
+ "use strict";(this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[]).push([[772],{335(t,e,r){r.r(e),r.d(e,{default:()=>Ut});var n=400,o=["showKeyboardHelp","selectControl","moveLarge","nudgeMap","zoomLarge","nudgeZoom","highlightLabelAtCenter","highlightNextLabel"];r(738);new Set,new Set,r(287);function a(t){return a="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},a(t)}function i(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 l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?i(Object(r),!0).forEach(function(e){u(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function u(t,e,r){return(e=function(t){var e=function(t){if("object"!=a(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=a(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==a(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s={slot:"middle",open:!1,dismissible:!0,modal:!0},c=(l({},s),l(l({},s),{},{width:"500px"}),l(l({},s),{},{width:"500px"}),{small:1,medium:1.5,large:2});function f(t){var e=t.getCanvas();e.removeAttribute("role"),e.setAttribute("tabindex",-1),e.removeAttribute("aria-label"),e.style.display="block"}function h(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 y=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 p(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 d(t){var e=t.map,r=t.events,n=t.eventBus,o=t.getCenter,a=t.getZoom,i=t.getBounds,l=t.getResolution,u=[],s=[],c=function(){var t=a();return{center:o(),bounds:i(),resolution:l(),zoom:t,isAtMaxZoom:e.getMaxZoom()<=t,isAtMinZoom:e.getMinZoom()>=t}},f=function(t,e){return n.emit(t,e)},h=function(){return f(r.MAP_LOADED)};e.on("load",h),u.push(["load",h]),e.once("idle",function(){return f(r.MAP_FIRST_IDLE,c())});var d=function(){return f(r.MAP_MOVE_START)};e.on("movestart",d),u.push(["movestart",d]);var v=y(function(){f(r.MAP_MOVE_END,c())},500);e.on("moveend",v),u.push(["moveend",v]),s.push(v);var g,m,b=(g=function(){f(r.MAP_MOVE,c())},m=0,function(){var t=Date.now();t-m>=10&&(m=t,g.apply(void 0,arguments))});e.on("zoom",b),u.push(["zoom",b]),s.push(b);var M=function(){return f(r.MAP_RENDER)};e.on("render",M),u.push(["render",M]);var w=y(function(){f(r.MAP_DATA_CHANGE,c())},500);e.on("styledata",w),u.push(["styledata",w]),s.push(w);var S=function(){return f(r.MAP_STYLE_CHANGE)};e.on("style.load",S),u.push(["style.load",S]);var P=function(t){return f(r.MAP_CLICK,{point:t.point,coords:[t.lngLat.lng,t.lngLat.lat]})};return e.on("click",P),u.push(["click",P]),{remove:function(){s.forEach(function(t){return t.cancel()}),u.forEach(function(t){var r,n,o=(n=2,function(t){if(Array.isArray(t))return t}(r=t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(r,n)||function(t,e){if(t){if("string"==typeof t)return p(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)?p(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 v(t){var e=t.mapProvider,r=t.map,n=t.events,o=t.eventBus,a=function(t){r.once("style.load",function(){o.emit(n.MAP_STYLE_CHANGE,{mapStyleId:t.id})}),r.setStyle(t.url,{diff:!1})},i=function(t){r.setPixelRatio(t)},l=function(t){var r=t.mapSize;e.mapSize=r};return o.on(n.MAP_SET_STYLE,a),o.on(n.MAP_SET_PIXEL_RATIO,i),o.on(n.MAP_SIZE_CHANGE,l),{remove:function(){o.off(n.MAP_SET_STYLE,a),o.off(n.MAP_SET_PIXEL_RATIO,i),o.off(n.MAP_SIZE_CHANGE,l)}}}let g=" ";class m{static get separator(){return g}static set separator(t){g=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+"°"+m.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+"°"+m.separator+a+"′"+m.separator+i+"″"}return n}static toLat(t,e,r){const n=m.toDms(m.wrap90(t),e,r);return null===n?"–":n.slice(1)+m.separator+(t<0?"S":"N")}static toLon(t,e,r){const n=m.toDms(m.wrap180(t),e,r);return null===n?"–":n+m.separator+(t<0?"W":"E")}static toBrng(t,e,r){const n=m.toDms(m.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=m.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 b=m,M=Math.PI;class w{constructor(t,e){if(isNaN(t))throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e))throw new TypeError(`invalid lon ‘${e}’`);this._lat=b.wrap90(Number(t)),this._lon=b.wrap180(Number(e))}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?b.wrap90(b.parse(t)):b.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?b.wrap90(b.parse(t)):b.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)?b.wrap180(b.parse(t)):b.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?b.wrap180(b.parse(t)):b.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?b.wrap180(b.parse(t)):b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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=b.wrap90(b.parse(e)),r=b.wrap180(b.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 w(e,r)}distanceTo(t,e=6371e3){if(t instanceof w||(t=w.parse(t)),isNaN(e))throw new TypeError(`invalid radius ‘${e}’`);const r=e,n=this.lat.toRadians(),o=this.lon.toRadians(),a=t.lat.toRadians(),i=a-n,l=t.lon.toRadians()-o,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(a)*Math.sin(l/2)*Math.sin(l/2);return r*(2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)))}initialBearingTo(t){if(t instanceof w||(t=w.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 b.wrap360(i)}finalBearingTo(t){t instanceof w||(t=w.parse(t));const e=t.initialBearingTo(this)+180;return b.wrap360(e)}midpointTo(t){t instanceof w||(t=w.parse(t));const e=this.lat.toRadians(),r=this.lon.toRadians(),n=t.lat.toRadians(),o=(t.lon-this.lon).toRadians(),a=Math.cos(e),i=Math.sin(e),l={x:a+Math.cos(n)*Math.cos(o),y:0+Math.cos(n)*Math.sin(o),z:i+Math.sin(n)},u=Math.atan2(l.z,Math.sqrt(l.x*l.x+l.y*l.y)),s=r+Math.atan2(l.y,l.x),c=u.toDegrees(),f=s.toDegrees();return new w(c,f)}intermediatePointTo(t,e){if(t instanceof w||(t=w.parse(t)),this.equals(t))return new w(this.lat,this.lon);const r=this.lat.toRadians(),n=this.lon.toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=o-r,l=a-n,u=Math.sin(i/2)*Math.sin(i/2)+Math.cos(r)*Math.cos(o)*Math.sin(l/2)*Math.sin(l/2),s=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u)),c=Math.sin((1-e)*s)/Math.sin(s),f=Math.sin(e*s)/Math.sin(s),h=c*Math.cos(r)*Math.cos(n)+f*Math.cos(o)*Math.cos(a),y=c*Math.cos(r)*Math.sin(n)+f*Math.cos(o)*Math.sin(a),p=c*Math.sin(r)+f*Math.sin(o),d=Math.atan2(p,Math.sqrt(h*h+y*y)),v=Math.atan2(y,h),g=d.toDegrees(),m=v.toDegrees();return new w(g,m)}destinationPoint(t,e,r=6371e3){const n=t/r,o=Number(e).toRadians(),a=this.lat.toRadians(),i=this.lon.toRadians(),l=Math.sin(a)*Math.cos(n)+Math.cos(a)*Math.sin(n)*Math.cos(o),u=Math.asin(l),s=Math.sin(o)*Math.sin(n)*Math.cos(a),c=Math.cos(n)-Math.sin(a)*l,f=i+Math.atan2(s,c),h=u.toDegrees(),y=f.toDegrees();return new w(h,y)}static intersection(t,e,r,n){if(t instanceof w||(t=w.parse(t)),r instanceof w||(r=w.parse(r)),isNaN(e))throw new TypeError(`invalid brng1 ‘${e}’`);if(isNaN(n))throw new TypeError(`invalid brng2 ‘${n}’`);const o=t.lat.toRadians(),a=t.lon.toRadians(),i=r.lat.toRadians(),l=r.lon.toRadians(),u=Number(e).toRadians(),s=Number(n).toRadians(),c=i-o,f=l-a,h=2*Math.asin(Math.sqrt(Math.sin(c/2)*Math.sin(c/2)+Math.cos(o)*Math.cos(i)*Math.sin(f/2)*Math.sin(f/2)));if(Math.abs(h)<Number.EPSILON)return new w(t.lat,t.lon);const y=(Math.sin(i)-Math.sin(o)*Math.cos(h))/(Math.sin(h)*Math.cos(o)),p=(Math.sin(o)-Math.sin(i)*Math.cos(h))/(Math.sin(h)*Math.cos(i)),d=Math.acos(Math.min(Math.max(y,-1),1)),v=Math.acos(Math.min(Math.max(p,-1),1)),g=u-(Math.sin(l-a)>0?d:2*M-d),m=(Math.sin(l-a)>0?2*M-v:v)-s;if(0==Math.sin(g)&&0==Math.sin(m))return null;if(Math.sin(g)*Math.sin(m)<0)return null;const b=-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)*b),P=Math.asin(Math.min(Math.max(Math.sin(o)*Math.cos(S)+Math.cos(o)*Math.sin(S)*Math.cos(u),-1),1)),O=a+Math.atan2(Math.sin(u)*Math.sin(S)*Math.cos(o),Math.cos(S)-Math.sin(o)*Math.sin(P)),x=P.toDegrees(),j=O.toDegrees();return new w(x,j)}crossTrackDistanceTo(t,e,r=6371e3){t instanceof w||(t=w.parse(t)),e instanceof w||(e=w.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 w||(t=w.parse(t)),e instanceof w||(e=w.parse(e));const n=r;if(this.equals(t))return 0;const o=t.distanceTo(this,n)/n,a=t.initialBearingTo(this).toRadians(),i=t.initialBearingTo(e).toRadians(),l=Math.asin(Math.sin(o)*Math.sin(a-i));return Math.acos(Math.cos(o)/Math.abs(Math.cos(l)))*Math.sign(Math.cos(i-a))*n}maxLatitude(t){const e=Number(t).toRadians(),r=this.lat.toRadians();return Math.acos(Math.abs(Math.sin(e)*Math.cos(r))).toDegrees()}static crossingParallels(t,e,r){if(t.equals(e))return null;const n=Number(r).toRadians(),o=t.lat.toRadians(),a=t.lon.toRadians(),i=e.lat.toRadians(),l=e.lon.toRadians()-a,u=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.sin(l),s=Math.sin(o)*Math.cos(i)*Math.cos(n)*Math.cos(l)-Math.cos(o)*Math.sin(i)*Math.cos(n),c=Math.cos(o)*Math.cos(i)*Math.sin(n)*Math.sin(l);if(c*c>u*u+s*s)return null;const f=Math.atan2(-s,u),h=Math.acos(c/Math.sqrt(u*u+s*s)),y=a+f+h,p=(a+f-h).toDegrees(),d=y.toDegrees();return{lon1:b.wrap180(p),lon2:b.wrap180(d)}}rhumbDistanceTo(t,e=6371e3){t instanceof w||(t=w.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 l=Math.log(Math.tan(o/2+M/4)/Math.tan(n/2+M/4)),u=Math.abs(l)>1e-11?a/l:Math.cos(n);return Math.sqrt(a*a+u*u*i*i)*r}rhumbBearingTo(t){if(t instanceof w||(t=w.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 b.wrap360(a)}rhumbDestinationPoint(t,e,r=6371e3){const n=this.lat.toRadians(),o=this.lon.toRadians(),a=Number(e).toRadians(),i=t/r,l=i*Math.cos(a);let u=n+l;Math.abs(u)>M/2&&(u=u>0?M-u:-M-u);const s=Math.log(Math.tan(u/2+M/4)/Math.tan(n/2+M/4)),c=Math.abs(s)>1e-11?l/s:Math.cos(n),f=o+i*Math.sin(a)/c,h=u.toDegrees(),y=f.toDegrees();return new w(h,y)}rhumbMidpointTo(t){t instanceof w||(t=w.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),l=Math.tan(M/4+n/2),u=Math.tan(M/4+a/2);let s=((o-r)*Math.log(u)+r*Math.log(l)-o*Math.log(i))/Math.log(l/i);isFinite(s)||(s=(r+o)/2);const c=a.toDegrees(),f=s.toDegrees();return new w(c,f)}static areaOf(t,e=6371e3){const r=e,n=t[0].equals(t[t.length-1]);n||t.push(t[0]);const o=t.length-1;let a=0;for(let e=0;e<o;e++){const r=t[e].lat.toRadians(),n=t[e+1].lat.toRadians(),o=(t[e+1].lon-t[e].lon).toRadians();a+=2*Math.atan2(Math.tan(o/2)*(Math.tan(r/2)+Math.tan(n/2)),1+Math.tan(r/2)*Math.tan(n/2))}(function(t){let e=0,r=t[0].initialBearingTo(t[1]);for(let n=0;n<t.length-1;n++){const o=t[n].initialBearingTo(t[n+1]),a=t[n].finalBearingTo(t[n+1]);e+=(o-r+540)%360-180,e+=(a-o+540)%360-180,r=a}return e+=(t[0].initialBearingTo(t[1])-r+540)%360-180,Math.abs(e)<90})(t)&&(a=Math.abs(a)-2*M);const i=Math.abs(a*r*r);return n||t.pop(),i}equals(t){return t instanceof w||(t=w.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)}`):`${b.toLat(this.lat,t,e)}, ${b.toLon(this.lon,t,e)}`}}function S(t,e,r){if(null!==t)for(var n,o,a,i,l,u,s,c,f=0,h=0,y=t.type,p="FeatureCollection"===y,d="Feature"===y,v=p?t.features.length:1,g=0;g<v;g++){l=(c=!!(s=p?t.features[g].geometry:d?t.geometry:t)&&"GeometryCollection"===s.type)?s.geometries.length:1;for(var m=0;m<l;m++){var b=0,M=0;if(null!==(i=c?s.geometries[m]:s)){u=i.coordinates;var w=i.type;switch(f=!r||"Polygon"!==w&&"MultiPolygon"!==w?0:1,w){case null:break;case"Point":if(!1===e(u,h,g,b,M))return!1;h++,b++;break;case"LineString":case"MultiPoint":for(n=0;n<u.length;n++){if(!1===e(u[n],h,g,b,M))return!1;h++,"MultiPoint"===w&&b++}"LineString"===w&&b++;break;case"Polygon":case"MultiLineString":for(n=0;n<u.length;n++){for(o=0;o<u[n].length-f;o++){if(!1===e(u[n][o],h,g,b,M))return!1;h++}"MultiLineString"===w&&b++,"Polygon"===w&&M++}"Polygon"===w&&b++;break;case"MultiPolygon":for(n=0;n<u.length;n++){for(M=0,o=0;o<u[n].length;o++){for(a=0;a<u[n][o].length-f;a++){if(!1===e(u[n][o][a],h,g,b,M))return!1;h++}M++}b++}break;case"GeometryCollection":for(n=0;n<i.geometries.length;n++)if(!1===S(i.geometries[n],e,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}var P=function(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const r=[1/0,1/0,-1/0,-1/0];return S(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 O(t){return function(t){if(Array.isArray(t))return E(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||j(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 x(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||j(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 j(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var A=function(t,e){var r=x(t,2),n=r[0],o=r[1],a=x(e,2),i=a[0],l=a[1],u=new w(o,n),s=new w(l,i);return u.distanceTo(s)},N=function(t){var e=t/1609.344;if(e<.5)return"".concat(Math.round(t),"m");if(e<10){var r=Number.parseFloat(e.toFixed(1)),n=1===r?"mile":"miles";return"".concat(r," ").concat(n)}var o=Math.round(e);return"".concat(o," miles")},T=function(t){return P(t)};function L(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return k(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)?k(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 k(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 R(t){return R="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},R(t)}function I(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 _(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?I(Object(r),!0).forEach(function(e){C(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function C(t,e,r){return(e=function(t){var e=function(t){if("object"!=R(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=R(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==R(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function D(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 F="highlighted-label";function B(t,e){if("number"==typeof t)return t;if(!Array.isArray(t)||"interpolate"!==t[0])return function(t,e){var r=t.stops;if(r.length<2)return r.length>0?r[0][1]:0;for(var n=r[0],o=r[r.length-1],a=1;a<r.length;a++){var i=r[a];if(i[0]>e){o=i,n=r[a-1];break}n=r[a-1],o=i}var l=L(n,2),u=l[0],s=l[1],c=L(o,2),f=c[0],h=c[1];return e<=u?s:e>=f?h:s+(e-u)/(f-u)*(h-s)}(t,e);var r,n=function(t){if(Array.isArray(t))return t}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return D(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)?D(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=D(n).slice(3);if("zoom"!==o[0])throw new Error("Only zoom-based expressions supported");for(var i=0;i<a.length-2;i+=2){var l=a[i],u=a[i+1],s=a[i+2],c=a[i+3];if(e<=l)return u;if(e<=s)return u+(e-l)/(s-l)*(c-u)}return a[a.length-1]}function G(t,e){if(e.highlightLayerId&&t.getLayer(e.highlightLayerId)){try{t.removeLayer(e.highlightLayerId)}catch(t){}e.highlightLayerId=null,e.highlightedExpr=null}}function $(t,e,r){var n,o,a,i;if(null!=e&&null!==(n=e.feature)&&void 0!==n&&n.layer){G(t,r);var l=e.feature,u=e.layer;r.highlightLayerId="highlight-".concat(u.id);var s=l.id,c=l.type,f=l.properties,h=l.geometry;t.getSource(F).setData({id:s,type:c,properties:f,geometry:h}),r.highlightedExpr=u.layout["text-size"];var y=t.getZoom(),p=(o=u,a=1.5*B(r.highlightedExpr,y),i=r.isDarkStyle?{text:"#ffffff",halo:"#000000"}:{text:"#000000",halo:"#ffffff"},{id:"highlight-".concat(o.id),type:o.type,source:F,layout:_(_({},o.layout),{},{"text-size":a,"text-allow-overlap":!0,"text-ignore-placement":!0,"text-max-angle":90}),paint:_(_({},o.paint),{},{"text-color":i.text,"text-halo-color":i.halo,"text-halo-width":3,"text-halo-blur":1,"text-opacity":1})});t.addLayer(p),t.moveLayer(r.highlightLayerId)}}function z(t){t.getSource(F)||t.addSource(F,{type:"geojson",data:{type:"FeatureCollection",features:[]}})}function q(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,l="string"==typeof(o=null===(n=e.layout)||void 0===n?void 0:n["text-field"])?null===(a=/^{(.+)}$/.exec(o))||void 0===a?void 0:a[1]:Array.isArray(o)?null===(i=o.find(function(t){return Array.isArray(t)&&"get"===t[0]}))||void 0===i?void 0:i[1]:null;return l?r.filter(function(t){var r;return t.layer.id===e.id&&(null===(r=t.properties)||void 0===r?void 0:r[l])}).map(function(r){return function(t,e,r,n){var o=function(t){var e=t.type,r=t.coordinates;if("Point"===e)return r;if("MultiPoint"===e)return r[0];if(e.includes("LineString")){var n="LineString"===e?r:r[0];return[(n[0][0]+n[n.length-1][0])/2,(n[0][1]+n[n.length-1][1])/2]}if(e.includes("Polygon")){var o="Polygon"===e?r[0]:r[0][0],a=o.reduce(function(t,e){return[t[0]+e[0],t[1]+e[1]]},[0,0]);return[a[0]/o.length,a[1]/o.length]}return null}(t.geometry);if(!o)return null;var a=n.project({lng:o[0],lat:o[1]});return{text:t.properties[r],x:a.x,y:a.y,feature:t,layer:e}}(r,e,l,t)}).filter(Boolean):[]})}(t,e,r)}function i(){if(a(),!o.labels.length)return null;var e=t.project(t.getCenter()),r=function(t,e){var r;return null===(r=t.reduce(function(t,r){var n=Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2);return!t||n<t.dist?{label:r,dist:n}:t},null))||void 0===r?void 0:r.label}(o.labels,e);return o.currentPixel={x:r.x,y:r.y},$(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")}return q(t),z(t),null==n||n.on(r.MAP_SET_STYLE,function(e){t.once("styledata",function(){return t.once("idle",function(){q(t),z(t),o.isDarkStyle="dark"===(null==e?void 0:e.mapColorScheme)})})}),t.on("zoom",function(){if(o.highlightLayerId&&o.highlightedExpr){var e=B(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=x(e,2),o=n[0],a=n[1],i=r.filter(function(e){var r=x(e,2),n=r[0],i=r[1];return(n!==o||i!==a)&&function(t,e,r){switch(t){case"ArrowUp":return r<0&&Math.abs(r)>=Math.abs(e);case"ArrowDown":return r>0&&Math.abs(r)>=Math.abs(e);case"ArrowLeft":return e<0&&Math.abs(e)>Math.abs(r);case"ArrowRight":return e>0&&Math.abs(e)>Math.abs(r);default:return!1}}(t,n-o,i-a)});if(!i.length)return r.findIndex(function(t){return t[0]===o&&t[1]===a});var l=-1,u=1/0;return i.forEach(function(t){var e=t[0]-o,n=t[1]-a,i=e*e+n*n;i<u&&(u=i,l=r.indexOf(t))}),l}(t,[e.currentPixel.x,e.currentPixel.y],n);return(null==o||o<0||o>=r.length)&&(o=0),e.labels[r[o].index]}(e,o);return r?(o.currentPixel={x:r.x,y:r.y},$(t,r,o),"".concat(r.text," (").concat(r.layer.id,")")):null},highlightLabelAtCenter:i,clearHighlightedLabel:function(){return G(t,o)}}}function W(t){return W="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},W(t)}function U(t){return function(t){if(Array.isArray(t))return V(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.")}()}function H(t,e){if(t){if("string"==typeof t)return V(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)?V(t,e):void 0}}function V(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 Y(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 J(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Y(Object(r),!0).forEach(function(e){K(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Y(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function K(t,e,r){return(e=function(t){var e=function(t){if("object"!=W(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=W(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==W(e)?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var X=function(t,e,r,n,o,a,i){t.getLayer(e)||t.addLayer(J(J({id:e,type:r,source:n},o&&{"source-layer":o}),{},{paint:a})),Object.entries(a).forEach(function(r){var n,o,a=(o=2,function(t){if(Array.isArray(t))return t}(n=r)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(n,o)||H(n,o)||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.")}()),i=a[0],l=a[1];t.setPaintProperty(e,i,l)}),t.setFilter(e,i),t.moveLayer(e)};function Q(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return tt(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)?tt(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 tt(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 et=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 rt(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 nt=function(t,e,r){var n=t.getCanvas();if(r&&t.off("mousemove",r),null==e||!e.length)return n.style.cursor="",null;var o=function(r){var o=e.filter(function(e){return t.getLayer(e)});if(0!==o.length){var a=function(t,e){var r,n=[],o=[],a=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return rt(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)?rt(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}(e);try{for(a.s();!(r=a.n()).done;){var i=r.value;if("line"===t.getLayer(i).type){var l=i.endsWith("-stroke")?i.slice(0,-7):null;null!==l&&e.includes(l)||n.push(i)}else o.push(i)}}catch(t){a.e(t)}finally{a.f()}return{lineLayers:n,otherLayers:o}}(t,o),i=a.lineLayers,l=a.otherLayers,u=r.point,s=u.x,c=u.y,f=[[s-10,c-10],[s+10,c+10]],h=i.length>0&&t.queryRenderedFeatures(f,{layers:i}).length>0,y=l.length>0&&t.queryRenderedFeatures(r.point,{layers:l}).length>0;n.style.cursor=h||y?"pointer":""}else n.style.cursor=""};return t.on("mousemove",o),o},ot=new Set(["symbolBackgroundColor","symbolForegroundColor","symbolHaloWidth","symbolGraphic"]),at=function(t,e){return t.symbolSvgContent?{svg:t.symbolSvgContent}:t.symbol?e.get(t.symbol):void 0},it=function(t){if(!function(t){return!(!t.symbol&&!t.symbolSvgContent)}(t))return{};var e={};return ot.forEach(function(r){if(null!=t[r]){var n=r.charAt(6).toLowerCase()+r.slice(7);e[n]=t[r]}}),e},lt=function(t,e){var r;return t.symbolViewBox?t.symbolViewBox:null!==(r=null==e?void 0:e.viewBox)&&void 0!==r?r:"0 0 38 38"},ut=function(t,e,r){return new Promise(function(n,o){var a=new Blob([t],{type:"image/svg+xml"}),i=URL.createObjectURL(a),l=new Image(e,r);l.onload=function(){var t=document.createElement("canvas");t.width=e,t.height=r;var o=t.getContext("2d");o.drawImage(l,0,0,e,r),URL.revokeObjectURL(i),n(o.getImageData(0,0,e,r))},l.onerror=function(){URL.revokeObjectURL(i),o(new Error("Failed to rasterise SVG: ".concat(t.slice(0,80))))},l.src=i})};function st(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return ct(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(ct(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,ct(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,ct(f,"constructor",s),ct(s,"constructor",u),u.displayName="GeneratorFunction",ct(s,o,"GeneratorFunction"),ct(f),ct(f,o,"Generator"),ct(f,n,function(){return this}),ct(f,"toString",function(){return"[object Generator]"}),(st=function(){return{w:a,m:h}})()}function ct(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}ct=function(t,e,r,n){function a(e,r){ct(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},ct(t,e,r,n)}function ft(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function ht(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){ft(a,n,o,i,l,"next",t)}function l(t){ft(a,n,o,i,l,"throw",t)}i(void 0)})}}function yt(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,i,l=[],u=!0,s=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(t){s=!0,o=t}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(t,e)||pt(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 pt(t,e){if(t){if("string"==typeof t)return dt(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)?dt(t,e):void 0}}function dt(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 vt=function(t){var e,r=0,n=function(t){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=pt(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}}}}(t);try{for(n.s();!(e=n.n()).done;){var o=e.value;r=Math.trunc((r<<5)-r+o.codePointAt(0))}}catch(t){n.e(t)}finally{n.f()}return Math.abs(r).toString(36)},gt=function(t,e,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,a=at(t,r);if(!a)return null;var i=it(t),l=n?r.resolveSelected(a,i,e):r.resolve(a,i,e);return"symbol-".concat(n?"sel-":"").concat(vt(l),"-").concat(o,"x")},mt=new Map,bt=function(){var t=ht(st().m(function t(e,r,n,o,a){var i,l,u,s,c,f,h,y,p,d,v;return st().w(function(t){for(;;)switch(t.n){case 0:if(i=at(e,n)){t.n=1;break}return t.a(2,null);case 1:if(l=it(e),u=o?n.resolveSelected(i,l,r):n.resolve(i,l,r),s="symbol-".concat(o?"sel-":"").concat(vt(u),"-").concat(a,"x"),c=mt.get(s)){t.n=3;break}return f=lt(e,i),h=f.split(" ").map(Number),y=yt(h,4),p=y[2],d=y[3],v='<svg xmlns="http://www.w3.org/2000/svg" width="'.concat(p*a,'" height="').concat(d*a,'" viewBox="').concat(f,'">').concat(u,"</svg>"),t.n=2,ut(v,p*a,d*a);case 2:c=t.v,mt.set(s,c);case 3:return t.a(2,{imageId:s,imageData:c})}},t)}));return function(e,r,n,o,a){return t.apply(this,arguments)}}(),Mt=function(){var t=ht(st().m(function t(e,r,n,o){var a,i=arguments;return st().w(function(t){for(;;)switch(t.n){case 0:if(a=i.length>4&&void 0!==i[4]?i[4]:2,r.length){t.n=1;break}return t.a(2);case 1:return e._symbolImageMap={},t.n=2,Promise.all(r.flatMap(function(t){var r=gt(t,n,o,!1,a),i=gt(t,n,o,!0,a);return r&&i&&(e._symbolImageMap[r]=i),[!1,!0].map(function(){var l=ht(st().m(function l(u){var s,c;return st().w(function(l){for(;;)switch(l.n){case 0:if((s=u?i:r)&&!e.hasImage(s)){l.n=1;break}return l.a(2);case 1:return l.n=2,bt(t,n,o,u,a);case 2:(c=l.v)&&!e.hasImage(c.imageId)&&e.addImage(c.imageId,c.imageData,{pixelRatio:a});case 3:return l.a(2)}},l)}));return function(t){return l.apply(this,arguments)}}())}));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}();function wt(t){return wt="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},wt(t)}var St=function(t,e){if(!t)return null;if("string"==typeof t)return t.trim();if("object"===wt(t)){if(e&&t[e])return t[e];var r=Object.values(t)[0];return null!=r?r:null}return null};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 Ot=function(t,e,r){return t.replace(/\{\{foregroundColor\}\}/g,e||"black").replace(/\{\{backgroundColor\}\}/g,r||"transparent")},xt=function(t,e){return t.fillPatternSvgContent?t.fillPatternSvgContent:t.fillPattern&&null!==(r=null==e||null===(n=e.get(t.fillPattern))||void 0===n?void 0:n.svgContent)&&void 0!==r?r:null;var r,n},jt=function(t,e,r){var n=xt(t,r);if(!n)return null;var o=St(t.fillPatternForegroundColor,e)||"black",a=St(t.fillPatternBackgroundColor,e)||"transparent";return"pattern-".concat(function(t){var e,r=0,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return 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}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){l=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(l)throw a}}}}(t);try{for(n.s();!(e=n.n()).done;)r=(r<<5)-r+e.value.codePointAt(0),r&=r}catch(t){n.e(t)}finally{n.f()}return Math.abs(r).toString(36)}(n+o+a))};function Et(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return At(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(At(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,At(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,At(f,"constructor",s),At(s,"constructor",u),u.displayName="GeneratorFunction",At(s,o,"GeneratorFunction"),At(f),At(f,o,"Generator"),At(f,n,function(){return this}),At(f,"toString",function(){return"[object Generator]"}),(Et=function(){return{w:a,m:h}})()}function At(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}At=function(t,e,r,n){function a(e,r){At(t,e,function(t){return this._invoke(e,r,t)})}e?o?o(t,e,{value:r,enumerable:!n,configurable:!n,writable:!n}):t[e]=r:(a("next",0),a("throw",1),a("return",2))},At(t,e,r,n)}function Nt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function Tt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){Nt(a,n,o,i,l,"next",t)}function l(t){Nt(a,n,o,i,l,"throw",t)}i(void 0)})}}var Lt=new Map,kt=function(){var t=Tt(Et().m(function t(e,r,n){var o,a,i,l,u,s,c,f;return Et().w(function(t){for(;;)switch(t.n){case 0:if(o=xt(e,n)){t.n=1;break}return t.a(2,null);case 1:if(a=jt(e,r,n)){t.n=2;break}return t.a(2,null);case 2:if(i=Lt.get(a)){t.n=4;break}return l=St(e.fillPatternForegroundColor,r)||"black",u=St(e.fillPatternBackgroundColor,r)||"transparent",s=Ot(o,l,u),c='<rect width="16" height="16" fill="'.concat(u,'"/>'),f='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">'.concat(c).concat(s,"</svg>"),t.n=3,ut(f,16,16);case 3:i=t.v,Lt.set(a,i);case 4:return t.a(2,{imageId:a,imageData:i})}},t)}));return function(e,r,n){return t.apply(this,arguments)}}(),Rt=function(){var t=Tt(Et().m(function t(e,r,n,o){return Et().w(function(t){for(;;)switch(t.n){case 0:if(r.length){t.n=1;break}return t.a(2);case 1:return t.n=2,Promise.all(r.map(function(){var t=Tt(Et().m(function t(r){var a,i;return Et().w(function(t){for(;;)switch(t.n){case 0:if((a=jt(r,n,o))&&!e.hasImage(a)){t.n=1;break}return t.a(2);case 1:return t.n=2,kt(r,n,o);case 2:(i=t.v)&&e.addImage(i.imageId,i.imageData,{pixelRatio:2});case 3:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}()));case 2:return t.a(2)}},t)}));return function(e,r,n,o){return t.apply(this,arguments)}}(),It=["container","padding","mapStyle","mapSize","center","zoom","bounds","pixelRatio"];function _t(t){return _t="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},_t(t)}function Ct(){var t,e,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var u=n&&n.prototype instanceof l?n:l,s=Object.create(u.prototype);return Dt(s,"_invoke",function(r,n,o){var a,l,u,s=0,c=o||[],f=!1,h={p:0,n:0,v:t,a:y,f:y.bind(t,4),d:function(e,r){return a=e,l=0,u=t,h.n=r,i}};function y(r,n){for(l=r,u=n,e=0;!f&&s&&!o&&e<c.length;e++){var o,a=c[e],y=h.p,p=a[2];r>3?(o=p===n)&&(u=a[(l=a[4])?5:(l=3,3)],a[4]=a[5]=t):a[0]<=y&&((o=r<2&&y<a[1])?(l=0,h.v=n,h.n=a[1]):y<p&&(o=r<3||a[0]>n||n>p)&&(a[4]=r,a[5]=n,h.n=p,l=0))}if(o||r>1)return i;throw f=!0,n}return function(o,c,p){if(s>1)throw TypeError("Generator is already running");for(f&&1===c&&y(c,p),l=c,u=p;(e=l<2?t:u)||!f;){a||(l?l<3?(l>1&&(h.n=-1),y(l,u)):h.n=u:h.v=u);try{if(s=2,a){if(l||(o="next"),e=a[o]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,l<2&&(l=0)}else 1===l&&(e=a.return)&&e.call(a),l<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),l=1);a=t}else if((e=(f=h.n<0)?u:r.call(n,h))!==i)break}catch(e){a=t,l=1,u=e}finally{s=1}}return{value:e,done:f}}}(r,o,a),!0),s}var i={};function l(){}function u(){}function s(){}e=Object.getPrototypeOf;var c=[][n]?e(e([][n]())):(Dt(e={},n,function(){return this}),e),f=s.prototype=l.prototype=Object.create(c);function h(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,s):(t.__proto__=s,Dt(t,o,"GeneratorFunction")),t.prototype=Object.create(f),t}return u.prototype=s,Dt(f,"constructor",s),Dt(s,"constructor",u),u.displayName="GeneratorFunction",Dt(s,o,"GeneratorFunction"),Dt(f),Dt(f,o,"Generator"),Dt(f,n,function(){return this}),Dt(f,"toString",function(){return"[object Generator]"}),(Ct=function(){return{w:a,m:h}})()}function Dt(t,e,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}Dt=function(t,e,r,n){function a(e,r){Dt(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))},Dt(t,e,r,n)}function Ft(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 Bt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?Ft(Object(r),!0).forEach(function(e){Gt(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ft(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Gt(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 $t(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 zt(t,e,r,n,o,a,i){try{var l=t[a](i),u=l.value}catch(t){return void r(t)}l.done?e(u):Promise.resolve(u).then(n,o)}function qt(t){return function(){var e=this,r=arguments;return new Promise(function(n,o){var a=t.apply(e,r);function i(t){zt(a,n,o,i,l,"next",t)}function l(t){zt(a,n,o,i,l,"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"!=_t(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=_t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==_t(e)?e:e+""}var Ut=function(){return t=function t(e){var r=e.mapFramework,n=e.mapProviderConfig,a=void 0===n?{}:n,i=e.events,l=e.eventBus;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.maplibreModule=r,this.events=i,this.eventBus=l,this.capabilities={supportedShortcuts:o,supportsMapSizes:!0},Object.assign(this,a)},e=[{key:"initMap",value:(i=qt(Ct().m(function t(e){var r,n,o,a,i,l,u,s,c,y,p,g,m,b=this;return Ct().w(function(t){for(;;)switch(t.n){case 0:r=e.container,n=e.padding,o=e.mapStyle,a=e.mapSize,i=e.center,l=e.zoom,u=e.bounds,s=e.pixelRatio,c=$t(e,It),this.mapStyleId=null==o?void 0:o.id,this.mapSize=a,y=this.maplibreModule.Map,p=this.events,g=this.eventBus,(m=new y(Bt(Bt({},c),{},{container:r,style:null==o?void 0:o.url,pixelRatio:s,padding:n,center:i,zoom:l,fadeDuration:0,attributionControl:!1,dragRotate:!1,doubleClickZoom:!1}))).touchZoomRotate.disableRotation(),this.map=m,this.map.setPadding(n),u&&m.fitBounds(u,{duration:0}),h(m),f(m),d({map:m,events:p,eventBus:g,getCenter:this.getCenter.bind(this),getZoom:this.getZoom.bind(this),getBounds:this.getBounds.bind(this),getResolution:this.getResolution.bind(this)}),v({mapProvider:this,map:m,events:p,eventBus:g}),m.on("load",function(){b.labelNavigator=Z(m,null==o?void 0:o.mapColorScheme,p,g)}),this.eventBus.emit(p.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:"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=nt(this.map,t,this._onHoverMove))}},{key:"setView",value:function(t){var e=t.center,r=t.zoom;this.map.flyTo({center:e||this.getCenter(),zoom:r||this.getZoom(),duration:this.map.isStyleLoaded()?n:0})}},{key:"zoomIn",value:function(t){this.map.easeTo({zoom:this.getZoom()+t,duration:n})}},{key:"zoomOut",value:function(t){this.map.easeTo({zoom:this.getZoom()-t,duration:n})}},{key:"panBy",value:function(t){this.map.panBy(t,{duration:n})}},{key:"fitToBounds",value:function(t){var e=Array.isArray(t)?t:T(t),r=this.map.isStyleLoaded()?n:0;this.map.fitBounds(e,{duration:r})}},{key:"setPadding",value:function(t){this.map.setPadding(t)}},{key:"updateHighlightedFeatures",value:function(t,e){return function(t){var e=t.LngLatBounds,r=t.map,n=t.selectedFeatures,o=t.stylesMap;if(!r)return null;var a=function(t,e){var r={};return null==e||e.forEach(function(e){var n=e.featureId,o=e.layerId,a=e.idProperty,i=e.geometry,l=t.getLayer(o);if(l){var u=l.source;r[u]||(r[u]={ids:new Set,fillIds:new Set,idProperty:a,layerId:o,hasFillGeometry:!1}),!i||"Polygon"!==i.type&&"MultiPolygon"!==i.type||(r[u].hasFillGeometry=!0,r[u].fillIds.add(n)),r[u].ids.add(n)}}),r}(r,n),i=[],l=new Set(Object.keys(a)),u=r._highlightedSources||new Set;return function(t,e,r){e.forEach(function(e){if(!r.has(e)){var n="highlight-".concat(e);["".concat(n,"-fill"),"".concat(n,"-line"),"".concat(n,"-symbol")].forEach(function(e){t.getLayer(e)&&t.setFilter(e,["==","id",""])})}})}(r,u,l),r._highlightedSources=l,l.forEach(function(t){var e=a[t],n=e.ids,l=e.fillIds,u=e.idProperty,s=e.layerId,c=e.hasFillGeometry,f=r.getLayer(s),h=f.sourceLayer,y=c?"fill":f.type,p="highlight-".concat(t),d=u?["get",u]:["id"],v=["in",d,["literal",U(n)]];if("fill"===y){var g=o[s],m=g.stroke,b=g.strokeWidth,M=g.fill,w=["in",d,["literal",U(l)]],S={"line-color":m,"line-width":b};X(r,"".concat(p,"-fill"),"fill",t,h,{"fill-color":M},w),X(r,"".concat(p,"-line"),"line",t,h,S,v)}if("line"===y){var P=o[s],O={"line-color":P.stroke,"line-width":P.strokeWidth};r.getLayer("".concat(p,"-fill"))&&r.setFilter("".concat(p,"-fill"),["==","id",""]),X(r,"".concat(p,"-line"),"line",t,h,O,v)}if("symbol"===y){var x=r.getLayoutProperty(s,"icon-image"),j=function(t,e){var r,n;return null!==(r=null===(n=t._symbolImageMap)||void 0===n?void 0:n[e])&&void 0!==r?r:null}(r,x);j&&function(t,e,r,n,o,a,i){var l;t.getLayer(e)||t.addLayer(J(J({id:e,type:"symbol",source:r},n&&{"source-layer":n}),{},{layout:{"icon-image":a,"icon-anchor":null!==(l=t.getLayoutProperty(o,"icon-anchor"))&&void 0!==l?l:"center","icon-allow-overlap":!0}})),t.setLayoutProperty(e,"icon-image",a),t.setFilter(e,i),t.moveLayer(e)}(r,"".concat(p,"-symbol"),t,h,s,j,v)}i.push.apply(i,U(r.queryRenderedFeatures({layers:[s]}).filter(function(t){var e;return n.has(u?null===(e=t.properties)||void 0===e?void 0:e[u]: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,i)}({LngLatBounds:this.maplibreModule.LngLatBounds,map:this.map,selectedFeatures:t,stylesMap:e})}},{key:"highlightNextLabel",value:function(t){var e;return(null===(e=this.labelNavigator)||void 0===e?void 0:e.highlightNextLabel(t))||null}},{key:"highlightLabelAtCenter",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.highlightLabelAtCenter())||null}},{key:"clearHighlightedLabel",value:function(){var t;return(null===(t=this.labelNavigator)||void 0===t?void 0:t.clearHighlightedLabel())||null}},{key:"getCenter",value:function(){var t=this.map.getCenter();return[Number(t.lng.toFixed(7)),Number(t.lat.toFixed(7))]}},{key:"getZoom",value:function(){return Number(this.map.getZoom().toFixed(7))}},{key:"getBounds",value:function(){return this.map.getBounds().toArray().flat(1)}},{key:"getFeaturesAtPoint",value:function(t,e){return function(t,e){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).radius,n=void 0===r?10:r,o=[[e.x-n,e.y-n],[e.x+n,e.y+n]],a=t.queryRenderedFeatures(o);if(0===a.length)return[];var i=new Set(t.queryRenderedFeatures([e.x,e.y]).map(function(t){var e,r=void 0===t.id?JSON.stringify(t.properties):t.id;return"".concat(null===(e=t.layer)||void 0===e?void 0:e.source,":").concat(r)})),l=[];a.forEach(function(t){!1===l.includes(t.layer.id)&&l.push(t.layer.id)});for(var u=new Set,s=[],c=a.length-1;c>=0;c--){var f,h=a[c],y=void 0===h.id?JSON.stringify(h.properties):h.id,p="".concat(null===(f=h.layer)||void 0===f?void 0:f.source,":").concat(y);!1===u.has(p)&&(u.add(p),s.push(h))}var d=t.unproject(e),v=[d.lng,d.lat],g=s.filter(function(t){var e=t.geometry.type;if(e.includes("Polygon"))return("Polygon"===e?[t.geometry.coordinates]:t.geometry.coordinates).some(function(t){return function(t,e){for(var r=Q(t,2),n=r[0],o=r[1],a=!1,i=0,l=e.length-1;i<e.length;l=i,i++){var u=Q(e[i],2),s=u[0],c=u[1],f=Q(e[l],2),h=f[0],y=f[1];c>o!=y>o&&n<(h-s)*(o-c)/(y-c)+s&&(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)},l=function(t){for(var r=0;r<t.length-1;r++){var n=et(e,i(t[r]),i(t[r+1]));n<a&&(a=n)}};if("Point"===o){var u=i(n);a=Math.pow(e.x-u.x,2)+Math.pow(e.y-u.y,2)}else"LineString"===o||"MultiPoint"===o?"LineString"===o?l(n):n.forEach(function(t){var r=i(t),n=Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2);n<a&&(a=n)}):"Polygon"===o||"MultiLineString"===o?n.forEach(l):"MultiPolygon"===o&&n.forEach(function(t){return t.forEach(l)});return a}(t,e,r.geometry);return n+=1e6*l.indexOf(r.layer.id),o.includes("Polygon")&&(n-=5e5),{f:r,score:n+=a}}).sort(function(t,e){return t.score-e.score}).map(function(t){return t.f})}(this.map,t,e)}},{key:"registerSymbols",value:(a=qt(Ct().m(function t(e,r,n){var o;return Ct().w(function(t){for(;;)if(0===t.n)return o=(this.map.getPixelRatio()||1)*(c[this.mapSize]||1),t.a(2,Mt(this.map,e,r,n,o))},t,this)})),function(t,e,r){return a.apply(this,arguments)})},{key:"registerPatterns",value:(r=qt(Ct().m(function t(e,r,n){return Ct().w(function(t){for(;;)if(0===t.n)return t.a(2,Rt(this.map,e,r,n))},t,this)})),function(t,e,n){return r.apply(this,arguments)})},{key:"getAreaDimensions",value:function(){return function(t){var e,r,n,o;if(t&&"function"==typeof t.getWest)e=t.getWest(),r=t.getSouth(),n=t.getEast(),o=t.getNorth();else{if(!Array.isArray(t)||2!==t.length)return"";var a=x(t,2),i=x(a[0],2);e=i[0],r=i[1];var l=x(a[1],2);n=l[0],o=l[1]}var u=A([e,r],[n,r]),s=A([e,r],[e,o]),c=N(u),f=N(s);return"".concat(f," by ").concat(c)}((t=this.maplibreModule.LngLatBounds,e=this.map,r=e.getContainer().getBoundingClientRect(),n=r.width,o=r.height,a=e.getPadding(),i=[a.left,o-a.bottom],l=[n-a.right,a.top],new t(e.unproject(i),e.unproject(l))));var t,e,r,n,o,a,i,l}},{key:"getCardinalMove",value:function(t,e){return function(t,e){var r=x(t,2),n=r[0],o=r[1],a=x(e,2),i=a[0],l=a[1],u=l-o,s=i-n,c=[];if(Math.abs(u)>1e-4){var f=Math.round(A([n,o],[n,l]));c.push("".concat(u>0?"north":"south"," ").concat(N(f)))}if(Math.abs(s)>1e-4){var h=Math.round(A([n,o],[i,o]));c.push("".concat(s>0?"east":"west"," ").concat(N(h)))}return c.join(", ")}(t,e)}},{key:"getResolution",value:function(){return t=this.map.getCenter(),e=this.map.getZoom(),r=t.lat,n=Math.pow(2,e),40075016.686*Math.cos(r*Math.PI/180)/(512*n);var t,e,r,n}},{key:"mapToScreen",value:function(t){return this.map.project(t)}},{key:"screenToMap",value:function(t){var e=this.map.unproject([t.x,t.y]);return[e.lng,e.lat]}},{key:"isGeometryObscured",value:function(t,e){return function(t,e,r){var n=r.getContainer().getBoundingClientRect(),o=x(T(t),4),a=o[0],i=o[1],l=o[2],u=o[3],s=[r.project([a,i]),r.project([a,u]),r.project([l,i]),r.project([l,u])],c=Math.min.apply(Math,O(s.map(function(t){return t.x}))),f=Math.max.apply(Math,O(s.map(function(t){return t.x}))),h=Math.min.apply(Math,O(s.map(function(t){return t.y}))),y=Math.max.apply(Math,O(s.map(function(t){return t.y}))),p=e.left-n.left,d=e.top-n.top,v=e.right-n.left,g=e.bottom-n.top;return c<v&&f>p&&h<g&&y>d}(t,e,this.map)}}],e&&Zt(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e,r,a,i}()}}]);
@@ -155,7 +155,7 @@ export default class MapLibreProvider {
155
155
  this.map.flyTo({
156
156
  center: center || this.getCenter(),
157
157
  zoom: zoom || this.getZoom(),
158
- duration: DEFAULTS.animationDuration
158
+ duration: this.map.isStyleLoaded() ? DEFAULTS.animationDuration : 0
159
159
  })
160
160
  }
161
161
 
@@ -199,7 +199,8 @@ export default class MapLibreProvider {
199
199
  */
200
200
  fitToBounds (bounds) {
201
201
  const bbox = Array.isArray(bounds) ? bounds : getBboxFromGeoJSON(bounds)
202
- this.map.fitBounds(bbox, { duration: DEFAULTS.animationDuration })
202
+ const duration = this.map.isStyleLoaded() ? DEFAULTS.animationDuration : 0
203
+ this.map.fitBounds(bbox, { duration })
203
204
  }
204
205
 
205
206
  /**
@@ -46,10 +46,12 @@ describe('MapLibreProvider', () => {
46
46
  map = {
47
47
  touchZoomRotate: { disableRotation: jest.fn() },
48
48
  on: jest.fn((e, fn) => { if (e === 'load') loadCallback = fn }),
49
+ once: jest.fn(),
49
50
  off: jest.fn(),
50
51
  remove: jest.fn(),
51
52
  setPadding: jest.fn(),
52
53
  fitBounds: jest.fn(),
54
+ isStyleLoaded: jest.fn(() => true),
53
55
  flyTo: jest.fn(),
54
56
  easeTo: jest.fn(),
55
57
  panBy: jest.fn(),
@@ -156,6 +158,16 @@ describe('MapLibreProvider', () => {
156
158
  expect(call.duration).toBe(400)
157
159
  })
158
160
 
161
+ test('setView uses duration 0 when style is not yet loaded', async () => {
162
+ const p = makeProvider()
163
+ await doInitMap(p)
164
+ map.isStyleLoaded.mockReturnValue(false)
165
+
166
+ p.setView({ center: [1, 2], zoom: 8 })
167
+
168
+ expect(map.flyTo).toHaveBeenCalledWith({ center: [1, 2], zoom: 8, duration: 0 })
169
+ })
170
+
159
171
  test('zoomIn, zoomOut, panBy, fitToBounds, setPadding delegate to map', async () => {
160
172
  const p = makeProvider()
161
173
  await doInitMap(p)
@@ -171,6 +183,16 @@ describe('MapLibreProvider', () => {
171
183
  expect(map.setPadding).toHaveBeenCalledWith({ top: 5 })
172
184
  })
173
185
 
186
+ test('fitToBounds uses duration 0 when style is not yet loaded', async () => {
187
+ const p = makeProvider()
188
+ await doInitMap(p)
189
+ map.isStyleLoaded.mockReturnValue(false)
190
+
191
+ p.fitToBounds([[0, 0], [1, 1]])
192
+
193
+ expect(map.fitBounds).toHaveBeenCalledWith([[0, 0], [1, 1]], { duration: 0 })
194
+ })
195
+
174
196
  test('fitToBounds accepts GeoJSON: computes bbox via getBboxFromGeoJSON', async () => {
175
197
  const { getBboxFromGeoJSON } = require('./utils/spatial.js')
176
198
  const p = makeProvider()
@@ -6,12 +6,12 @@ import { useModalPanelBehaviour } from '../../hooks/useModalPanelBehaviour.js'
6
6
  import { useIsScrollable } from '../../hooks/useIsScrollable.js'
7
7
  import { Icon } from '../Icon/Icon'
8
8
 
9
- const computePanelState = (bpConfig, triggeringElement) => {
9
+ const computePanelState = (bpConfig, triggeringElement, focus, focusOnOpen) => {
10
10
  const isAside = bpConfig.slot === 'side' && bpConfig.open && !bpConfig.modal
11
11
  const isDialog = !isAside && bpConfig.dismissible
12
12
  const isModal = bpConfig.modal === true
13
13
  const isDismissible = bpConfig.dismissible !== false
14
- const shouldFocus = Boolean(isModal || triggeringElement)
14
+ const shouldFocus = isModal || (focusOnOpen !== false && (focusOnOpen === true || focus === true || Boolean(triggeringElement)))
15
15
  const buttonContainerEl = bpConfig.slot.endsWith('button') ? triggeringElement?.parentNode : undefined
16
16
  return { isAside, isDialog, isModal, isDismissible, shouldFocus, buttonContainerEl }
17
17
  }
@@ -58,15 +58,15 @@ const buildBodyProps = ({ bodyRef, panelBodyClass, isBodyScrollable, elementId }
58
58
 
59
59
  // eslint-disable-next-line camelcase, react/jsx-pascal-case
60
60
  // sonarjs/disable-next-line function-name
61
- export const Panel = ({ panelId, panelConfig, props, WrappedChild, label, html, children, isOpen = true, rootRef }) => {
61
+ export const Panel = ({ panelId, panelConfig, props, focusOnOpen, WrappedChild, label, html, children, isOpen = true, rootRef }) => {
62
62
  const { id } = useConfig()
63
- const { dispatch, breakpoint, layoutRefs } = useApp()
63
+ const { dispatch, breakpoint, layoutRefs, interfaceType } = useApp()
64
64
 
65
65
  const rootEl = document.getElementById(`${id}-im-app`)
66
66
  const bpConfig = panelConfig[breakpoint]
67
67
  const elementId = `${id}-panel-${stringToKebab(panelId)}`
68
68
 
69
- const { isAside, isDialog, isModal, isDismissible, shouldFocus, buttonContainerEl } = computePanelState(bpConfig, props?.triggeringElement)
69
+ const { isAside, isDialog, isModal, isDismissible, shouldFocus, buttonContainerEl } = computePanelState(bpConfig, props?.triggeringElement, panelConfig.focus, focusOnOpen) // nosonar
70
70
 
71
71
  // For persistent panels, gate modal behaviour on open state
72
72
  const isModalActive = isModal && isOpen
@@ -81,7 +81,7 @@ export const Panel = ({ panelId, panelConfig, props, WrappedChild, label, html,
81
81
  const panelRef = rootRef || internalPanelRef
82
82
 
83
83
  const handleClose = () => {
84
- requestAnimationFrame(() => { (props?.triggeringElement || layoutRefs.viewportRef.current).focus?.() })
84
+ requestAnimationFrame(() => { (props?.triggeringElement || layoutRefs.viewportRef.current).focus?.({ preventScroll: interfaceType !== 'keyboard' }) })
85
85
  dispatch({ type: 'CLOSE_PANEL', payload: panelId })
86
86
  }
87
87
 
@@ -104,6 +104,43 @@ describe('Panel', () => {
104
104
  })
105
105
  })
106
106
 
107
+ describe('focus behaviour', () => {
108
+ it('focuses panel on mount when focus: true', () => {
109
+ const { container } = renderPanel({ focus: true })
110
+ const panel = container.firstChild
111
+ expect(panel).toHaveAttribute('tabIndex', '-1')
112
+ expect(document.activeElement).toBe(panel)
113
+ })
114
+
115
+ it('does not focus panel on mount when focus: false and no triggering element or modal', () => {
116
+ const { container } = renderPanel({ focus: false })
117
+ const panel = container.firstChild
118
+ expect(panel).not.toHaveAttribute('tabIndex')
119
+ expect(document.activeElement).not.toBe(panel)
120
+ })
121
+
122
+ it('focuses panel on mount when modal even if focus: false', () => {
123
+ const { container } = renderPanel({ focus: false, desktop: { slot: 'overlay', dismissible: true, modal: true } })
124
+ const panel = container.firstChild
125
+ expect(panel).toHaveAttribute('tabIndex', '-1')
126
+ expect(document.activeElement).toBe(panel)
127
+ })
128
+
129
+ it('focuses panel when focusOnOpen is true regardless of panelConfig.focus', () => {
130
+ const { container } = renderPanel({ focus: false }, { focusOnOpen: true })
131
+ const panel = container.firstChild
132
+ expect(panel).toHaveAttribute('tabIndex', '-1')
133
+ expect(document.activeElement).toBe(panel)
134
+ })
135
+
136
+ it('does not focus panel when focusOnOpen is false even if panelConfig.focus is true', () => {
137
+ const { container } = renderPanel({ focus: true }, { focusOnOpen: false })
138
+ const panel = container.firstChild
139
+ expect(panel).not.toHaveAttribute('tabIndex')
140
+ expect(document.activeElement).not.toBe(panel)
141
+ })
142
+ })
143
+
107
144
  describe('close functionality', () => {
108
145
  it('focuses triggeringElement on close for button slots', () => {
109
146
  const focusMock = jest.fn()
@@ -2,6 +2,7 @@ import React, { useRef, useEffect, useState } from 'react'
2
2
  import { EVENTS as events } from '../../../config/events.js'
3
3
  import { createPortal } from 'react-dom'
4
4
  import { useConfig } from '../../store/configContext.js'
5
+
5
6
  import { useApp } from '../../store/appContext.js'
6
7
  import { useMap } from '../../store/mapContext.js'
7
8
  import { MapController } from './MapController.jsx'
@@ -14,9 +15,10 @@ import { Markers } from '../Markers/Markers'
14
15
 
15
16
  // eslint-disable-next-line camelcase, react/jsx-pascal-case
16
17
  // sonarjs/disable-next-line function-name
17
- export const Viewport = ({ keyboardHintPortalRef }) => {
18
+ export const Viewport = () => {
18
19
  const { id, mapProvider, mapLabel, keyboardHintText } = useConfig()
19
20
  const { interfaceType, mode, previousMode, layoutRefs, safeZoneInset } = useApp()
21
+ const { mainRef } = layoutRefs
20
22
  const { mapSize } = useMap()
21
23
 
22
24
  const mapContainerRef = useRef(null)
@@ -49,18 +51,6 @@ export const Viewport = ({ keyboardHintPortalRef }) => {
49
51
  }
50
52
  }, [mode])
51
53
 
52
- // Toggle external class based on keyboard hint
53
- useEffect(() => {
54
- const mainEl = layoutRefs.mainRef?.current
55
- if (!mainEl) {
56
- return undefined
57
- }
58
-
59
- mainEl.classList.toggle('im-o-app__main--keyboard-hint-visible', showHint)
60
-
61
- return () => mainEl?.classList.remove('im-o-app__main--keyboard-hint-visible')
62
- }, [showHint])
63
-
64
54
  return (
65
55
  <>
66
56
  <MapController mapContainerRef={mapContainerRef} />
@@ -74,14 +64,14 @@ export const Viewport = ({ keyboardHintPortalRef }) => {
74
64
  onBlur={handleBlur}
75
65
  ref={layoutRefs.viewportRef}
76
66
  >
77
- {showHint && keyboardHintPortalRef?.current && createPortal(
67
+ {showHint && mainRef?.current && createPortal(
78
68
  <div
79
69
  className='im-c-viewport__keyboard-hint'
80
70
  aria-hidden='true'
81
71
  ref={keyboardHintRef}
82
72
  dangerouslySetInnerHTML={{ __html: keyboardHintText }}
83
73
  />,
84
- keyboardHintPortalRef.current
74
+ mainRef.current
85
75
  )}
86
76
  <div className='im-c-viewport__map-container' ref={mapContainerRef} />
87
77
  <div className='im-c-viewport__features' />
@@ -31,8 +31,10 @@
31
31
 
32
32
  .im-c-viewport__keyboard-hint {
33
33
  position: absolute;
34
+ bottom: var(--keyboard-hint-bottom, var(--primary-gap));
34
35
  left: 50%;
35
36
  transform: translateX(-50%);
37
+ z-index: 1001;
36
38
  text-wrap: nowrap;
37
39
 
38
40
  color: var(--tooltip-foreground-color);