@defra/interactive-map 0.0.35-alpha → 0.0.36-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 (53) hide show
  1. package/dist/css/index.css +1 -1
  2. package/dist/esm/im-core.js +1 -1
  3. package/dist/esm/im-shell.js +1 -1
  4. package/dist/umd/im-core.js +1 -1
  5. package/dist/umd/index.js +1 -1
  6. package/docs/api.md +15 -1
  7. package/package.json +1 -1
  8. package/plugins/beta/map-styles/dist/esm/im-map-styles-plugin.js +1 -1
  9. package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
  10. package/plugins/beta/map-styles/dist/umd/index.js +1 -1
  11. package/plugins/datasets/dist/css/index.css +1 -1
  12. package/plugins/datasets/dist/esm/esriLayerAdapter.js +1 -1
  13. package/plugins/datasets/dist/esm/im-datasets-plugin.js +1 -1
  14. package/plugins/datasets/dist/umd/im-datasets-esri-adapter.js +1 -1
  15. package/plugins/datasets/dist/umd/im-datasets-plugin.js +1 -1
  16. package/plugins/datasets/src/adapters/esri/esriLayerAdapter.js +7 -1
  17. package/plugins/datasets/src/adapters/esri/esriLayerAdapter.test.js +1 -0
  18. package/plugins/datasets/src/components/LayersMenu/Layers.module.scss +3 -0
  19. package/plugins/datasets/src/components/LayersMenu/LayersMenuGroupWrapper.jsx +3 -1
  20. package/plugins/datasets/src/components/LayersMenu/LayersRadioGroupWrapper.jsx +3 -1
  21. package/plugins/datasets/src/initialise/initialiseDatasets.js +2 -2
  22. package/plugins/datasets/src/reducers/pluginState.js +2 -0
  23. package/plugins/datasets/src/registry/datasetRegistry.js +1 -1
  24. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  25. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  26. package/plugins/interact/dist/umd/index.js +1 -1
  27. package/plugins/interact/src/hooks/useMapItemList.js +2 -2
  28. package/providers/beta/openlayers/src/utils/tileLayers.test.js +1 -1
  29. package/providers/maplibre/src/utils/queryFeatures.test.js +6 -6
  30. package/src/App/components/Actions/Actions.jsx +2 -2
  31. package/src/App/components/MoveControl/MoveControl.jsx +113 -0
  32. package/src/App/components/MoveControl/MoveControl.module.scss +121 -0
  33. package/src/App/components/MoveControl/MoveControl.test.jsx +196 -0
  34. package/src/App/components/Tabs/Tabs.jsx +1 -0
  35. package/src/App/components/Tabs/Tabs.test.jsx +11 -34
  36. package/src/App/controls/keyboardActions.js +4 -2
  37. package/src/App/hooks/useMarkersAPI.test.js +1 -1
  38. package/src/App/registry/pluginRegistry.test.js +2 -2
  39. package/src/App/renderer/mapButtons.test.js +8 -8
  40. package/src/App/renderer/mapControls.js +6 -1
  41. package/src/App/renderer/mapControls.test.js +24 -0
  42. package/src/App/renderer/slots.js +1 -0
  43. package/src/App/store/appActionsMap.js +8 -0
  44. package/src/App/store/appActionsMap.test.js +12 -0
  45. package/src/App/store/appReducer.js +1 -0
  46. package/src/App/store/appReducer.test.js +1 -0
  47. package/src/config/appConfig.js +41 -2
  48. package/src/config/appConfig.test.js +45 -4
  49. package/src/config/defaults.js +1 -0
  50. package/src/scss/main.scss +1 -0
  51. package/src/types.js +9 -1
  52. package/src/utils/resolveNudgeStep.js +2 -0
  53. package/src/utils/resolveNudgeStep.test.js +11 -0
@@ -1 +1 @@
1
- import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/objectWithoutProperties";var i=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=window.location)||void 0===t?void 0:t.search;return new URLSearchParams(r).get(e)},n=e=>{var{behaviour:t,hybridWidth:r,maxMobileWidth:i}=e;if("hybrid"!==t)return!1;var n=null!=r?r:i;return window.matchMedia("(max-width: ".concat(n,"px)")).matches},o=e=>{var{behaviour:t}=e;return["mapOnly","buttonFirst"].includes(t)||n(e)};function a(){s.forEach(e=>{!function(e,t){var r;if(!1!==e.config.manageHistoryState){e._isClosingViaBack=!1;var i=e.id===t,o="hybrid"===e.config.behaviour&&!n(e.config),a=null===(r=e.rootEl)||void 0===r?void 0:r.children.length;!i||a&&!e._isHidden?i||!a||o||function(e){var t,r;e.config.preserveStateOnClose?null===(t=e.hideApp)||void 0===t||t.call(e):null===(r=e.removeApp)||void 0===r||r.call(e)}(e):function(e){var t,r;e._isHidden?null===(t=e.showApp)||void 0===t||t.call(e):null===(r=e.loadApp)||void 0===r||r.call(e)}(e)}}(e,i(e.config.mapViewQueryParam))})}var s=new Map,l=!1;var c={register:function(e){l||(globalThis.addEventListener("popstate",a),l=!0),s.set(e.id,e)},unregister:function(e){s.delete(e.id),0===s.size&&(globalThis.removeEventListener("popstate",a),l=!1)}};function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function d(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function p(e){var r=function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?u(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):u(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({},null==e?void 0:e.dataset),i={};for(var n of Object.keys(r))i[n]=d(r[n]);return i}function h(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var v=(e,t,r,i)=>e!==t&&!(null!=r&&r.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&i.contains(e);function m(e){var t,{containerEl:r,isFullscreen:i,boundaryEl:n=document.body}=e,o=Array.from(n.querySelectorAll("[data-fm-inert]"));if(r&&(o=o.filter(e=>!r.contains(e))),o.forEach(e=>{e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),i){null===(t=document.activeElement)||void 0===t||t.blur();for(var a=r;null!==(s=a)&&void 0!==s&&s.parentNode&&a!==n&&a!==document.body;){var s,l=a.parentNode;for(var c of l.children)v(c,a,r,n)&&(c.setAttribute("aria-hidden","true"),c.dataset.fmInert="");a=l}}}function f(e){var{isFullscreen:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{config:r,rootEl:o}=e,{pageTitle:a,behaviour:s,containerHeight:l}=r,c=null!=t?t:function(e){var{id:t,behaviour:r,manageHistoryState:o}=e;return"mapOnly"===r||("buttonFirst"===r?!1===o||i(e.mapViewQueryParam)===t:n(e)&&i(e.mapViewQueryParam)===t)}(r);["mapOnly","buttonFirst","hybrid"].includes(s)&&(m({containerEl:o,isFullscreen:c}),document.documentElement.classList.toggle("im-is-fullscreen",c),o.classList.toggle("im-is-fullscreen",c)),["buttonFirst","hybrid"].includes(s)&&function(e){var{pageTitle:t,isFullscreen:r}=e,i=document.title.split(": "),n=i[i.length-1];document.title=r?"".concat(t,": ").concat(n):n}({pageTitle:a,isFullscreen:c});var u=c||"buttonFirst"!==s&&!n(r)?l:"auto";return o.style.height=c?"100%":u,{isFullscreen:c}}function b(){document.body.classList.remove("im-is-loading")}var _="[interactive-map]",P={warn:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.warn(_,...t)},error:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.error(_,...t)}};var y={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"};function E(e){var{id:t,behaviour:r}=e,o=i(e.mapViewQueryParam)===t;return["mapOnly","inline"].includes(r)||"hybrid"===r&&!n(e)||o}var g={appColorScheme:"light",autoColorScheme:!1,backgroundColor:"var(--background-color)",behaviour:"buttonFirst",buttonClass:"im-c-open-map-button",buttonText:"Map view",containerHeight:"600px",deviceNotSupportedText:"Your device is not supported. A map is available with a more up-to-date browser or device.",enableFullscreen:!1,enableZoomControls:!0,genericErrorText:"There was a problem loading the map. Please try again later.",hasExitButton:!1,backAndContinue:null,hybridWidth:null,keyboardHintText:'<span class="im-u-visually-hidden">Press </span><kbd>Shift</kbd> + <span class="im-u-visually-hidden">Question mark</span><kbd aria-hidden="true">?</kbd> <span class="im-u-visually-hidden">to view </span>keyboard shortcuts',mapLabel:"Interactive map application",mapProvider:null,mapSize:"small",manageHistoryState:!0,mapViewQueryParam:"mv",urlPosition:"sync",maxMobileWidth:640,minDesktopWidth:835,nudgePanDelta:5,nudgeZoomDelta:.1,panDelta:100,pageTitle:"Map view",preserveStateOnClose:!1,readMapText:!1,reverseGeocodeProvider:null,zoomDelta:1},A=["mapViewParamKey"];function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function O(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?w(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):w(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function T(e){var t,{maxMobileWidth:r,minDesktopWidth:i,containerEl:n}=e,o="unknown",a=new Set,s=e=>{e!==o&&(o=e,requestAnimationFrame(()=>{o===e&&a.forEach(t=>t(e))}))};if(n){var l=function(e,t,r){e.style.containerType="inline-size";var i=e.getBoundingClientRect().width,n=t(i);e.dataset.breakpoint=n;var o=new window.ResizeObserver(i=>{var n,o,a=(null===(n=i[0])||void 0===n||null===(n=n.borderBoxSize)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.inlineSize)||(null===(o=i[0])||void 0===o?void 0:o.contentRect.width),s=t(a);e.dataset.breakpoint=s,r(s)});return o.observe(e),{initialType:n,cleanup:()=>{o.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(n,e=>function(e,t,r){return e<=t?"mobile":e>=r?"desktop":"tablet"}(e,r,i),s);o=l.initialType,s(l.initialType),t=l.cleanup}else{var c=function(e,t,r){var i={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},n=()=>{var e="tablet";i.mobile.matches?e="mobile":i.desktop.matches&&(e="desktop"),r(e)};return i.mobile.addEventListener("change",n),i.desktop.addEventListener("change",n),n(),{cleanup:()=>{i.mobile.removeEventListener("change",n),i.desktop.removeEventListener("change",n)}}}(r,i,s);t=c.cleanup}return{subscribe:e=>(a.add(e),()=>a.delete(e)),getBreakpoint:()=>o,destroy:()=>{var e;null===(e=t)||void 0===e||e(),a.clear()}}}var D=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",k=new Set,S=new Set;function B(e){D!==e&&(D=e,S.forEach(t=>t(e)),k.forEach(t=>t(e)))}function M(){return"unknown"===D?(D="mouse","mouse"):D}function L(e){return k.add(e),()=>{k.delete(e)}}var x=null;function C(){return null!==x}function R(e,t){if(!x)throw new Error("ReverseGeocode not initialised");return x(e,t)}class j{constructor(){this.events={},this._queued={}}on(e,t){if(this.events[e]||(this.events[e]=[]),this.events[e].push(t),void 0!==this._queued[e]){try{t(...this._queued[e])}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}delete this._queued[e]}return this}once(e,t){var r=this,i=function(){r.off(e,i),t(...arguments)};return this.on(e,i)}off(e,t){return this.events[e]?(this.events[e]=t?this.events[e].filter(e=>e!==t):[],this):this}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return this.events[e]?(this.events[e].forEach(t=>{try{t(...r)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}emitWhenReady(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return this.events[e]&&0!==this.events[e].length?this.emit(e,...r):(this._queued[e]=r,this)}destroy(){this.events={},this._queued={}}}if("undefined"!=typeof crypto&&!crypto.randomUUID){var N=0;crypto.randomUUID=()=>(N=Math.max(Date.now(),N+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var r=t<12?Number.parseInt(N.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}))}var F=!Object.hasOwn;F&&(Object.hasOwn=(e,t)=>Object.prototype.hasOwnProperty.call(e,t));var I="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;I&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}});if((I||F)&&"undefined"!=typeof URL&&URL.createObjectURL){var U="text/javascript",V=["if(!Object.hasOwn){Object.hasOwn=function(o,k){return Object.prototype.hasOwnProperty.call(o,k)}}\n",I?'if(typeof AbortController!=="undefined"){var _p=Object.getPrototypeOf(new AbortController().signal);if(!_p.throwIfAborted){_p.throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");e.name="AbortError";throw e}}}}\n':""].join(""),H=URL.createObjectURL.bind(URL);if(URL.createObjectURL=e=>(e instanceof Blob&&e.type===U&&(e=new Blob([V,e],{type:U})),H(e)),"undefined"!=typeof Worker){var W=Worker;Worker=function(e,t){if("string"==typeof e&&!e.startsWith("blob:")){var r=new Blob(["".concat(V,"importScripts(").concat(JSON.stringify(e),")")],{type:U});e=H(r)}return new W(e,t)},Worker.prototype=W.prototype}}function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function z(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?G(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):G(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}class K{constructor(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t(this,"_openButton",null),t(this,"_root",null),t(this,"_breakpointDetector",null),t(this,"_interfaceDetectorCleanup",null),t(this,"_hybridBehaviourCleanup",null),t(this,"_isHidden",!1),t(this,"_isClosingViaBack",!1),t(this,"_isLoading",!1),this.id=e,this.rootEl=document.getElementById(e),!this.rootEl)throw new Error('Element with id "'.concat(e,'" not found'));this.eventBus=new j,this.config=this._buildConfig(r),function(e,t){var{mapProvider:r,deviceNotSupportedText:i}=t,n=null==r?void 0:r.checkDeviceCapabilities();return r?!(null==n||!n.isSupported)||(h(e,i),b(),P.warn(null==n?void 0:n.error),!1):(P.warn("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&c.register(this),this._breakpointDetector=T({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=function(){var e=window.matchMedia("(pointer: coarse)"),t=e=>{B(e.matches?"touch":"mouse")};e.addEventListener("change",t);var r=e=>{var t,r="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";r!==D&&(D=r,S.forEach(e=>e(r)),setTimeout(()=>{k.forEach(e=>e(r))},150))},i=e=>{"Tab"===e.key&&B("keyboard")};return window.addEventListener("pointerdown",r,{passive:!0}),window.addEventListener("keydown",i,{passive:!0}),()=>{e.removeEventListener("change",t),window.removeEventListener("pointerdown",r),window.removeEventListener("keydown",i)}}(),this._initialize())}_buildConfig(e){var t=p(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{mapViewParamKey:t}=e,i=r(e,A),n=O(O({},g),i);return void 0!==t&&(console.warn("[InteractiveMap] mapViewParamKey is deprecated — use mapViewQueryParam instead."),n.mapViewQueryParam=t),n}(z(z({id:this.id,title:document.title},t),e))}_initialize(){["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(e,t,r){var{id:i,buttonText:n,buttonClass:o}=e,a='\n <a class="'.concat(o,"\" role=\"button\">\n <svg focusable='false' aria-hidden='true' width='16' height='20' viewBox='0 0 16 20' fillRule='evenodd'>\n <path d='M15 7.5c.009 3.778-4.229 9.665-7.5 12.5C4.229 17.165-.009 11.278 0 7.5a7.5 7.5 0 1 1 15 0z'/>\n <path d='M7.5 12.961a5.46 5.46 0 1 0 0-10.922 5.46 5.46 0 1 0 0 10.922z' fill='#fff'/>\n </svg>\n <span>").concat(n,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");t.insertAdjacentHTML("beforebegin",a);var s=t.previousElementSibling,l=new URL(window.location.href);return l.searchParams.set(e.mapViewQueryParam,i),s.setAttribute("href",l.toString()),s.addEventListener("click",e=>{e.preventDefault(),r(e)}),s}(this.config,this.rootEl,e=>{this._handleButtonClick(e)})),this._hybridBehaviourCleanup=function(e){var{behaviour:t,hybridWidth:r,maxMobileWidth:i}=e.config;if("buttonFirst"===t&&e._breakpointDetector.subscribe(()=>{E(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var n=null!=r?r:i,o=window.matchMedia("(max-width: ".concat(n,"px)")),a=()=>{if(E(e.config))if(e._isHidden)e.showApp();else if(null==e._root)e.loadApp();else{var{isFullscreen:t}=f(e);e.eventBus.emit(y.APP_FULLSCREEN_CHANGE,{isFullscreen:t})}else e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),E(this.config)?this.loadApp():b()}_handleButtonClick(e){this._isHidden?(this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this.showApp()):this._root||(this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this.loadApp())}_removeMapParamFromUrl(e,t){var r=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return r.test(e)?e.replace(r,(e,t)=>"&"===t?"?":"").replace(/\?$/,""):e}_handleExitClick(){var e;if(this.config.manageHistoryState)if(null!==(e=history.state)&&void 0!==e&&e.isBack){if(this._isClosingViaBack)return;this._isClosingViaBack=!0,history.back(),setTimeout(()=>{this._isClosingViaBack=!1},1e3)}else{this.config.preserveStateOnClose?this.hideApp():this.removeApp();var t=this.config.mapViewQueryParam,r=this._removeMapParamFromUrl(location.href,t);history.replaceState(history.state,"",r)}else this.config.preserveStateOnClose?this.hideApp():this.removeApp()}loadApp(){var t=this;return e(function*(){if(!t._root&&!t._isLoading){t._isLoading=!0,t._openButton&&(t._openButton.style.display="none");try{var{initialiseApp:r}=yield import(/* webpackChunkName: "im-core" */ "./im-core.js"),{MapProvider:i,mapFramework:n,mapProviderConfig:o}=yield t.config.mapProvider.load();t.config.reverseGeocodeProvider&&function(t,r){var{url:i,transformRequest:n,load:o}=t;x=function(){var t=e(function*(e,t){return(yield o())(i,n,r,e,t)});return function(e,r){return t.apply(this,arguments)}}()}(t.config.reverseGeocodeProvider,o.crs);var a=yield r(t.rootEl,z(z({id:t.id,initialBreakpoint:t._breakpointDetector.getBreakpoint(),initialInterfaceType:M()},t.config),{},{MapProvider:i,mapProviderConfig:o,mapFramework:n,eventBus:t.eventBus,breakpointDetector:t._breakpointDetector,handleExitClick:t._handleExitClick.bind(t)}));t._root=a._root,delete a._root;var s=new Set(["on","off","emit"]);Object.keys(a).forEach(e=>{s.has(e)||(t[e]=a[e])});var{isFullscreen:l}=f(t);t.eventBus.emit(y.APP_OPENED,{statePreserved:!1,isFullscreen:l})}catch(e){var c;throw null===(c=t._openButton)||void 0===c||c.removeAttribute("style"),h(t.rootEl,t.config.genericErrorText),console.error(e),e}finally{t._isLoading=!1}}})()}removeApp(){this._root&&"function"==typeof this.unmount&&(this.unmount(),this._root=null),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),f(this,{isFullscreen:!1}),this.eventBus.emit(y.APP_CLOSED,{statePreserved:!1}),this.eventBus.emit(y.MAP_DESTROY,{mapId:this.id})}hideApp(){this._isHidden=!0,this.rootEl.style.display="none",m({containerEl:this.rootEl,isFullscreen:!1}),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),document.documentElement.classList.remove("im-is-fullscreen"),this.rootEl.classList.remove("im-is-fullscreen");var e=document.title.split(": ");e.length>1&&(document.title=e.at(-1)),this.eventBus.emit(y.APP_CLOSED,{statePreserved:!0})}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none");var{isFullscreen:e}=f(this);this.eventBus.emit(y.APP_OPENED,{statePreserved:!0,isFullscreen:e})}destroy(){var e,t,r;this.removeApp(),null===(e=this._breakpointDetector)||void 0===e||e.destroy(),null===(t=this._interfaceDetectorCleanup)||void 0===t||t.call(this),null===(r=this._hybridBehaviourCleanup)||void 0===r||r.call(this),c.unregister(this),this.eventBus.destroy()}on(){this.eventBus.on(...arguments)}off(){this.eventBus.off(...arguments)}emit(){this.eventBus.emit(...arguments)}addMarker(e,t,r){this.eventBus.emit(y.APP_ADD_MARKER,{id:e,coords:t,options:r})}updateMarker(e,t){this.eventBus.emit(y.APP_UPDATE_MARKER,{id:e,options:t})}removeMarker(e){this.eventBus.emit(y.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(y.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(y.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,r){this.eventBus.emit(y.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:r})}setContinueEnabled(e){this.toggleButtonState("journeyContinue","disabled",!e)}addPanel(e,t){this.eventBus.emit(y.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(y.APP_REMOVE_PANEL,e)}showPanel(e){var{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.eventBus.emit(y.APP_SHOW_PANEL,{id:e,focus:t})}hidePanel(e){this.eventBus.emit(y.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(y.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emitWhenReady(y.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emitWhenReady(y.MAP_SET_VIEW,e)}open(){this._isHidden?this.showApp():this._root||this.loadApp()}close(){this._handleExitClick()}}export{y as E,K as I,M as a,b,o as g,C as h,P as l,R as r,L as s,m as t};
1
+ import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/objectWithoutProperties";var i=function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=window.location)||void 0===t?void 0:t.search;return new URLSearchParams(r).get(e)},n=e=>{var{behaviour:t,hybridWidth:r,maxMobileWidth:i}=e;if("hybrid"!==t)return!1;var n=null!=r?r:i;return window.matchMedia("(max-width: ".concat(n,"px)")).matches},o=e=>{var{behaviour:t}=e;return["mapOnly","buttonFirst"].includes(t)||n(e)};function a(){s.forEach(e=>{!function(e,t){var r;if(!1!==e.config.manageHistoryState){e._isClosingViaBack=!1;var i=e.id===t,o="hybrid"===e.config.behaviour&&!n(e.config),a=null===(r=e.rootEl)||void 0===r?void 0:r.children.length;!i||a&&!e._isHidden?i||!a||o||function(e){var t,r;e.config.preserveStateOnClose?null===(t=e.hideApp)||void 0===t||t.call(e):null===(r=e.removeApp)||void 0===r||r.call(e)}(e):function(e){var t,r;e._isHidden?null===(t=e.showApp)||void 0===t||t.call(e):null===(r=e.loadApp)||void 0===r||r.call(e)}(e)}}(e,i(e.config.mapViewQueryParam))})}var s=new Map,l=!1;var c={register:function(e){l||(globalThis.addEventListener("popstate",a),l=!0),s.set(e.id,e)},unregister:function(e){s.delete(e.id),0===s.size&&(globalThis.removeEventListener("popstate",a),l=!1)}};function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function d(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function p(e){var r=function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?u(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):u(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({},null==e?void 0:e.dataset),i={};for(var n of Object.keys(r))i[n]=d(r[n]);return i}function h(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var v=(e,t,r,i)=>e!==t&&!(null!=r&&r.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&i.contains(e);function m(e){var t,{containerEl:r,isFullscreen:i,boundaryEl:n=document.body}=e,o=Array.from(n.querySelectorAll("[data-fm-inert]"));if(r&&(o=o.filter(e=>!r.contains(e))),o.forEach(e=>{e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),i){null===(t=document.activeElement)||void 0===t||t.blur();for(var a=r;null!==(s=a)&&void 0!==s&&s.parentNode&&a!==n&&a!==document.body;){var s,l=a.parentNode;for(var c of l.children)v(c,a,r,n)&&(c.setAttribute("aria-hidden","true"),c.dataset.fmInert="");a=l}}}function f(e){var{isFullscreen:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{config:r,rootEl:o}=e,{pageTitle:a,behaviour:s,containerHeight:l}=r,c=null!=t?t:function(e){var{id:t,behaviour:r,manageHistoryState:o}=e;return"mapOnly"===r||("buttonFirst"===r?!1===o||i(e.mapViewQueryParam)===t:n(e)&&i(e.mapViewQueryParam)===t)}(r);["mapOnly","buttonFirst","hybrid"].includes(s)&&(m({containerEl:o,isFullscreen:c}),document.documentElement.classList.toggle("im-is-fullscreen",c),o.classList.toggle("im-is-fullscreen",c)),["buttonFirst","hybrid"].includes(s)&&function(e){var{pageTitle:t,isFullscreen:r}=e,i=document.title.split(": "),n=i[i.length-1];document.title=r?"".concat(t,": ").concat(n):n}({pageTitle:a,isFullscreen:c});var u=c||"buttonFirst"!==s&&!n(r)?l:"auto";return o.style.height=c?"100%":u,{isFullscreen:c}}function b(){document.body.classList.remove("im-is-loading")}var _="[interactive-map]",P={warn:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.warn(_,...t)},error:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return console.error(_,...t)}};var y={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"};function E(e){var{id:t,behaviour:r}=e,o=i(e.mapViewQueryParam)===t;return["mapOnly","inline"].includes(r)||"hybrid"===r&&!n(e)||o}var g={appColorScheme:"light",autoColorScheme:!1,backgroundColor:"var(--background-color)",behaviour:"buttonFirst",buttonClass:"im-c-open-map-button",buttonText:"Map view",containerHeight:"600px",deviceNotSupportedText:"Your device is not supported. A map is available with a more up-to-date browser or device.",enableFullscreen:!1,enableMoveControl:!0,enableZoomControls:!0,genericErrorText:"There was a problem loading the map. Please try again later.",hasExitButton:!1,backAndContinue:null,hybridWidth:null,keyboardHintText:'<span class="im-u-visually-hidden">Press </span><kbd>Shift</kbd> + <span class="im-u-visually-hidden">Question mark</span><kbd aria-hidden="true">?</kbd> <span class="im-u-visually-hidden">to view </span>keyboard shortcuts',mapLabel:"Interactive map application",mapProvider:null,mapSize:"small",manageHistoryState:!0,mapViewQueryParam:"mv",urlPosition:"sync",maxMobileWidth:640,minDesktopWidth:835,nudgePanDelta:5,nudgeZoomDelta:.1,panDelta:100,pageTitle:"Map view",preserveStateOnClose:!1,readMapText:!1,reverseGeocodeProvider:null,zoomDelta:1},A=["mapViewParamKey"];function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function O(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?w(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):w(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function T(e){var t,{maxMobileWidth:r,minDesktopWidth:i,containerEl:n}=e,o="unknown",a=new Set,s=e=>{e!==o&&(o=e,requestAnimationFrame(()=>{o===e&&a.forEach(t=>t(e))}))};if(n){var l=function(e,t,r){e.style.containerType="inline-size";var i=e.getBoundingClientRect().width,n=t(i);e.dataset.breakpoint=n;var o=new window.ResizeObserver(i=>{var n,o,a=(null===(n=i[0])||void 0===n||null===(n=n.borderBoxSize)||void 0===n||null===(n=n[0])||void 0===n?void 0:n.inlineSize)||(null===(o=i[0])||void 0===o?void 0:o.contentRect.width),s=t(a);e.dataset.breakpoint=s,r(s)});return o.observe(e),{initialType:n,cleanup:()=>{o.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(n,e=>function(e,t,r){return e<=t?"mobile":e>=r?"desktop":"tablet"}(e,r,i),s);o=l.initialType,s(l.initialType),t=l.cleanup}else{var c=function(e,t,r){var i={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},n=()=>{var e="tablet";i.mobile.matches?e="mobile":i.desktop.matches&&(e="desktop"),r(e)};return i.mobile.addEventListener("change",n),i.desktop.addEventListener("change",n),n(),{cleanup:()=>{i.mobile.removeEventListener("change",n),i.desktop.removeEventListener("change",n)}}}(r,i,s);t=c.cleanup}return{subscribe:e=>(a.add(e),()=>a.delete(e)),getBreakpoint:()=>o,destroy:()=>{var e;null===(e=t)||void 0===e||e(),a.clear()}}}var D=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",k=new Set,S=new Set;function M(e){D!==e&&(D=e,S.forEach(t=>t(e)),k.forEach(t=>t(e)))}function B(){return"unknown"===D?(D="mouse","mouse"):D}function L(e){return k.add(e),()=>{k.delete(e)}}var x=null;function C(){return null!==x}function R(e,t){if(!x)throw new Error("ReverseGeocode not initialised");return x(e,t)}class j{constructor(){this.events={},this._queued={}}on(e,t){if(this.events[e]||(this.events[e]=[]),this.events[e].push(t),void 0!==this._queued[e]){try{t(...this._queued[e])}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}delete this._queued[e]}return this}once(e,t){var r=this,i=function(){r.off(e,i),t(...arguments)};return this.on(e,i)}off(e,t){return this.events[e]?(this.events[e]=t?this.events[e].filter(e=>e!==t):[],this):this}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return this.events[e]?(this.events[e].forEach(t=>{try{t(...r)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}emitWhenReady(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];return this.events[e]&&0!==this.events[e].length?this.emit(e,...r):(this._queued[e]=r,this)}destroy(){this.events={},this._queued={}}}if("undefined"!=typeof crypto&&!crypto.randomUUID){var N=0;crypto.randomUUID=()=>(N=Math.max(Date.now(),N+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var r=t<12?Number.parseInt(N.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}))}var F=!Object.hasOwn;F&&(Object.hasOwn=(e,t)=>Object.prototype.hasOwnProperty.call(e,t));var I="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;I&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}});if((I||F)&&"undefined"!=typeof URL&&URL.createObjectURL){var U="text/javascript",V=["if(!Object.hasOwn){Object.hasOwn=function(o,k){return Object.prototype.hasOwnProperty.call(o,k)}}\n",I?'if(typeof AbortController!=="undefined"){var _p=Object.getPrototypeOf(new AbortController().signal);if(!_p.throwIfAborted){_p.throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");e.name="AbortError";throw e}}}}\n':""].join(""),H=URL.createObjectURL.bind(URL);if(URL.createObjectURL=e=>(e instanceof Blob&&e.type===U&&(e=new Blob([V,e],{type:U})),H(e)),"undefined"!=typeof Worker){var W=Worker;Worker=function(e,t){if("string"==typeof e&&!e.startsWith("blob:")){var r=new Blob(["".concat(V,"importScripts(").concat(JSON.stringify(e),")")],{type:U});e=H(r)}return new W(e,t)},Worker.prototype=W.prototype}}function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function z(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?G(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):G(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}class K{constructor(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t(this,"_openButton",null),t(this,"_root",null),t(this,"_breakpointDetector",null),t(this,"_interfaceDetectorCleanup",null),t(this,"_hybridBehaviourCleanup",null),t(this,"_isHidden",!1),t(this,"_isClosingViaBack",!1),t(this,"_isLoading",!1),this.id=e,this.rootEl=document.getElementById(e),!this.rootEl)throw new Error('Element with id "'.concat(e,'" not found'));this.eventBus=new j,this.config=this._buildConfig(r),function(e,t){var{mapProvider:r,deviceNotSupportedText:i}=t,n=null==r?void 0:r.checkDeviceCapabilities();return r?!(null==n||!n.isSupported)||(h(e,i),b(),P.warn(null==n?void 0:n.error),!1):(P.warn("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&c.register(this),this._breakpointDetector=T({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=function(){var e=window.matchMedia("(pointer: coarse)"),t=e=>{M(e.matches?"touch":"mouse")};e.addEventListener("change",t);var r=e=>{var t,r="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";r!==D&&(D=r,S.forEach(e=>e(r)),setTimeout(()=>{k.forEach(e=>e(r))},150))},i=e=>{"Tab"===e.key&&M("keyboard")};return window.addEventListener("pointerdown",r,{passive:!0}),window.addEventListener("keydown",i,{passive:!0}),()=>{e.removeEventListener("change",t),window.removeEventListener("pointerdown",r),window.removeEventListener("keydown",i)}}(),this._initialize())}_buildConfig(e){var t=p(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{mapViewParamKey:t}=e,i=r(e,A),n=O(O({},g),i);return void 0!==t&&(console.warn("[InteractiveMap] mapViewParamKey is deprecated — use mapViewQueryParam instead."),n.mapViewQueryParam=t),n}(z(z({id:this.id,title:document.title},t),e))}_initialize(){["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(e,t,r){var{id:i,buttonText:n,buttonClass:o}=e,a='\n <a class="'.concat(o,"\" role=\"button\">\n <svg focusable='false' aria-hidden='true' width='16' height='20' viewBox='0 0 16 20' fillRule='evenodd'>\n <path d='M15 7.5c.009 3.778-4.229 9.665-7.5 12.5C4.229 17.165-.009 11.278 0 7.5a7.5 7.5 0 1 1 15 0z'/>\n <path d='M7.5 12.961a5.46 5.46 0 1 0 0-10.922 5.46 5.46 0 1 0 0 10.922z' fill='#fff'/>\n </svg>\n <span>").concat(n,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");t.insertAdjacentHTML("beforebegin",a);var s=t.previousElementSibling,l=new URL(window.location.href);return l.searchParams.set(e.mapViewQueryParam,i),s.setAttribute("href",l.toString()),s.addEventListener("click",e=>{e.preventDefault(),r(e)}),s}(this.config,this.rootEl,e=>{this._handleButtonClick(e)})),this._hybridBehaviourCleanup=function(e){var{behaviour:t,hybridWidth:r,maxMobileWidth:i}=e.config;if("buttonFirst"===t&&e._breakpointDetector.subscribe(()=>{E(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var n=null!=r?r:i,o=window.matchMedia("(max-width: ".concat(n,"px)")),a=()=>{if(E(e.config))if(e._isHidden)e.showApp();else if(null==e._root)e.loadApp();else{var{isFullscreen:t}=f(e);e.eventBus.emit(y.APP_FULLSCREEN_CHANGE,{isFullscreen:t})}else e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),E(this.config)?this.loadApp():b()}_handleButtonClick(e){this._isHidden?(this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this.showApp()):this._root||(this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this.loadApp())}_removeMapParamFromUrl(e,t){var r=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return r.test(e)?e.replace(r,(e,t)=>"&"===t?"?":"").replace(/\?$/,""):e}_handleExitClick(){var e;if(this.config.manageHistoryState)if(null!==(e=history.state)&&void 0!==e&&e.isBack){if(this._isClosingViaBack)return;this._isClosingViaBack=!0,history.back(),setTimeout(()=>{this._isClosingViaBack=!1},1e3)}else{this.config.preserveStateOnClose?this.hideApp():this.removeApp();var t=this.config.mapViewQueryParam,r=this._removeMapParamFromUrl(location.href,t);history.replaceState(history.state,"",r)}else this.config.preserveStateOnClose?this.hideApp():this.removeApp()}loadApp(){var t=this;return e(function*(){if(!t._root&&!t._isLoading){t._isLoading=!0,t._openButton&&(t._openButton.style.display="none");try{var{initialiseApp:r}=yield import(/* webpackChunkName: "im-core" */ "./im-core.js"),{MapProvider:i,mapFramework:n,mapProviderConfig:o}=yield t.config.mapProvider.load();t.config.reverseGeocodeProvider&&function(t,r){var{url:i,transformRequest:n,load:o}=t;x=function(){var t=e(function*(e,t){return(yield o())(i,n,r,e,t)});return function(e,r){return t.apply(this,arguments)}}()}(t.config.reverseGeocodeProvider,o.crs);var a=yield r(t.rootEl,z(z({id:t.id,initialBreakpoint:t._breakpointDetector.getBreakpoint(),initialInterfaceType:B()},t.config),{},{MapProvider:i,mapProviderConfig:o,mapFramework:n,eventBus:t.eventBus,breakpointDetector:t._breakpointDetector,handleExitClick:t._handleExitClick.bind(t)}));t._root=a._root,delete a._root;var s=new Set(["on","off","emit"]);Object.keys(a).forEach(e=>{s.has(e)||(t[e]=a[e])});var{isFullscreen:l}=f(t);t.eventBus.emit(y.APP_OPENED,{statePreserved:!1,isFullscreen:l})}catch(e){var c;throw null===(c=t._openButton)||void 0===c||c.removeAttribute("style"),h(t.rootEl,t.config.genericErrorText),console.error(e),e}finally{t._isLoading=!1}}})()}removeApp(){this._root&&"function"==typeof this.unmount&&(this.unmount(),this._root=null),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),f(this,{isFullscreen:!1}),this.eventBus.emit(y.APP_CLOSED,{statePreserved:!1}),this.eventBus.emit(y.MAP_DESTROY,{mapId:this.id})}hideApp(){this._isHidden=!0,this.rootEl.style.display="none",m({containerEl:this.rootEl,isFullscreen:!1}),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),document.documentElement.classList.remove("im-is-fullscreen"),this.rootEl.classList.remove("im-is-fullscreen");var e=document.title.split(": ");e.length>1&&(document.title=e.at(-1)),this.eventBus.emit(y.APP_CLOSED,{statePreserved:!0})}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none");var{isFullscreen:e}=f(this);this.eventBus.emit(y.APP_OPENED,{statePreserved:!0,isFullscreen:e})}destroy(){var e,t,r;this.removeApp(),null===(e=this._breakpointDetector)||void 0===e||e.destroy(),null===(t=this._interfaceDetectorCleanup)||void 0===t||t.call(this),null===(r=this._hybridBehaviourCleanup)||void 0===r||r.call(this),c.unregister(this),this.eventBus.destroy()}on(){this.eventBus.on(...arguments)}off(){this.eventBus.off(...arguments)}emit(){this.eventBus.emit(...arguments)}addMarker(e,t,r){this.eventBus.emit(y.APP_ADD_MARKER,{id:e,coords:t,options:r})}updateMarker(e,t){this.eventBus.emit(y.APP_UPDATE_MARKER,{id:e,options:t})}removeMarker(e){this.eventBus.emit(y.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(y.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(y.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,r){this.eventBus.emit(y.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:r})}setContinueEnabled(e){this.toggleButtonState("journeyContinue","disabled",!e)}addPanel(e,t){this.eventBus.emit(y.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(y.APP_REMOVE_PANEL,e)}showPanel(e){var{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.eventBus.emit(y.APP_SHOW_PANEL,{id:e,focus:t})}hidePanel(e){this.eventBus.emit(y.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(y.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emitWhenReady(y.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emitWhenReady(y.MAP_SET_VIEW,e)}open(){this._isHidden?this.showApp():this._root||this.loadApp()}close(){this._handleExitClick()}}export{y as E,K as I,B as a,b,o as g,C as h,P as l,R as r,L as s,m as t};