@defra/interactive-map 0.0.22-alpha → 0.0.24-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/images/light-raster-thumb.jpg +0 -0
- package/assets/images/outdoor-raster-thumb.jpg +0 -0
- package/assets/images/road-raster-thumb.jpg +0 -0
- package/dist/css/index.css +1 -1
- package/dist/esm/im-core.js +1 -1
- package/dist/esm/im-shell.js +1 -1
- package/dist/umd/im-core.js +1 -1
- package/dist/umd/index.js +1 -1
- package/docs/api/button-definition.md +39 -0
- package/docs/api/context.md +4 -4
- package/docs/api/map-style-config.md +11 -2
- package/docs/api/marker-config.md +38 -7
- package/docs/api/panel-definition.md +7 -3
- package/docs/api/symbol-config.md +10 -26
- package/docs/api/symbol-registry.md +28 -13
- package/docs/api.md +24 -2
- package/docs/assets/css/{docusaurus.css → docusaurus.scss} +18 -12
- package/docs/assets/images/toggle-marker-label.jpg +0 -0
- package/docs/examples/index.mdx +12 -0
- package/docs/examples/toggle-marker-label.mdx +89 -0
- package/docs/plugins/interact.md +4 -11
- package/docs/plugins/search.md +70 -0
- package/docusaurus.config.cjs +2 -1
- package/package.json +23 -9
- package/plugins/beta/datasets/dist/adapters/maplibre/esm/im-datasets-ml-adapter.js +1 -1
- package/plugins/beta/datasets/dist/css/index.css +2 -2
- package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/im-datasets-maplibre-adapter.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/maplibre/index.js +1 -1
- package/plugins/beta/datasets/src/adapters/maplibre/layerBuilders.js +5 -5
- package/plugins/beta/datasets/src/adapters/maplibre/maplibreLayerAdapter.js +24 -29
- package/plugins/beta/datasets/src/adapters/maplibre/patternImages.js +2 -2
- package/plugins/beta/datasets/src/adapters/maplibre/symbolImages.js +3 -3
- package/plugins/beta/datasets/src/components/KeySvg.jsx +2 -2
- package/plugins/beta/datasets/src/components/KeySvgPattern.jsx +1 -2
- package/plugins/beta/datasets/src/components/svgProperties.js +2 -2
- package/plugins/beta/datasets/src/panels/Key.module.scss +2 -2
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/css/index.css +1 -21
- package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
- package/plugins/beta/draw-ml/src/api/editFeature.js +9 -4
- package/plugins/beta/draw-ml/src/modes/createDrawMode.js +11 -3
- package/plugins/beta/map-styles/dist/esm/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/im-map-styles-plugin.js +1 -1
- package/plugins/beta/map-styles/dist/umd/index.js +1 -1
- package/plugins/beta/use-location/dist/esm/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/dist/umd/im-use-location-plugin.js +1 -1
- package/plugins/beta/use-location/src/manifest.js +1 -0
- package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
- package/plugins/interact/dist/umd/index.js +1 -1
- package/plugins/interact/src/InteractInit.jsx +23 -55
- package/plugins/interact/src/InteractInit.test.js +58 -80
- package/plugins/interact/src/defaults.js +1 -3
- package/plugins/interact/src/hooks/useAttachEvents.js +46 -0
- package/plugins/interact/src/hooks/useAttachEvents.test.js +68 -0
- package/plugins/interact/src/hooks/useCrossHairVisibility.js +47 -0
- package/plugins/interact/src/hooks/useCrossHairVisibility.test.js +54 -0
- package/plugins/interact/src/hooks/useHighlightSync.js +30 -8
- package/plugins/interact/src/hooks/useHighlightSync.test.js +127 -80
- package/plugins/interact/src/hooks/useInteractionHandlers.js +18 -17
- package/plugins/interact/src/hooks/useInteractionHandlers.test.js +22 -61
- package/plugins/interact/src/hooks/useMapItemList.js +187 -0
- package/plugins/interact/src/hooks/useMapItemList.test.js +584 -0
- package/plugins/interact/src/index.js +0 -2
- package/plugins/interact/src/index.test.js +0 -2
- package/plugins/interact/src/manifest.js +37 -6
- package/plugins/interact/src/reducer.js +8 -4
- package/plugins/interact/src/reducer.test.js +18 -3
- package/plugins/interact/src/utils/buildStylesMap.js +21 -10
- package/plugins/interact/src/utils/buildStylesMap.test.js +29 -29
- package/plugins/interact/src/utils/spatial.js +0 -15
- package/plugins/interact/src/utils/spatial.test.js +1 -13
- package/plugins/search/dist/css/index.css +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/esm/index.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/index.js +1 -1
- package/plugins/search/src/Search.jsx +2 -1
- package/plugins/search/src/components/CloseButton/CloseButton.module.scss +2 -0
- package/plugins/search/src/components/Form/Form.jsx +11 -7
- package/plugins/search/src/components/Form/Form.test.jsx +23 -1
- package/plugins/search/src/components/OpenButton/OpenButton.jsx +1 -1
- package/plugins/search/src/components/OpenButton/OpenButton.module.scss +3 -0
- package/plugins/search/src/datasets.js +2 -2
- package/plugins/search/src/datasets.test.js +1 -1
- package/plugins/search/src/defaults.js +7 -1
- package/plugins/search/src/events/fetchSuggestions.js +13 -10
- package/plugins/search/src/events/fetchSuggestions.test.js +14 -1
- package/plugins/search/src/events/formHandlers.js +2 -4
- package/plugins/search/src/events/formHandlers.test.js +3 -3
- package/plugins/search/src/events/inputHandlers.js +1 -1
- package/plugins/search/src/events/inputHandlers.test.js +1 -1
- package/plugins/search/src/events/suggestionHandlers.js +2 -1
- package/plugins/search/src/events/suggestionHandlers.test.js +7 -1
- package/plugins/search/src/index.js +3 -7
- package/plugins/search/src/reducer.js +10 -5
- package/plugins/search/src/reducer.test.js +2 -1
- package/plugins/search/src/search.scss +1 -0
- package/plugins/search/src/utils/parseOsNamesResults.js +3 -3
- package/providers/beta/esri/dist/esm/im-esri-provider.js +1 -1
- package/providers/beta/esri/src/esriProvider.js +4 -0
- package/providers/beta/openlayers/dist/esm/im-openlayers-provider.js +1 -0
- package/providers/beta/openlayers/dist/esm/index.js +1 -0
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js +2 -0
- package/providers/beta/openlayers/dist/umd/im-openlayers-provider.js.LICENSE.txt +1 -0
- package/providers/beta/openlayers/dist/umd/index.js +2 -0
- package/providers/beta/openlayers/dist/umd/index.js.LICENSE.txt +1 -0
- package/providers/beta/openlayers/src/appEvents.js +50 -0
- package/providers/beta/openlayers/src/appEvents.test.js +140 -0
- package/providers/beta/openlayers/src/defaults.js +36 -0
- package/providers/beta/openlayers/src/index.js +21 -0
- package/providers/beta/openlayers/src/mapEvents.js +132 -0
- package/providers/beta/openlayers/src/mapEvents.test.js +197 -0
- package/providers/beta/openlayers/src/openlayersProvider.js +234 -0
- package/providers/beta/openlayers/src/openlayersProvider.test.js +331 -0
- package/providers/beta/openlayers/src/utils/spatial.js +142 -0
- package/providers/beta/openlayers/src/utils/spatial.test.js +117 -0
- package/providers/beta/openlayers/src/utils/zoom.js +26 -0
- package/providers/beta/openlayers/src/utils/zoom.test.js +23 -0
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/esm/index.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/index.js +1 -1
- package/providers/maplibre/src/index.js +1 -1
- package/providers/maplibre/src/index.test.js +9 -14
- package/providers/maplibre/src/mapEvents.js +11 -5
- package/providers/maplibre/src/mapEvents.test.js +14 -3
- package/providers/maplibre/src/maplibreProvider.js +18 -11
- package/providers/maplibre/src/maplibreProvider.test.js +43 -36
- package/providers/maplibre/src/utils/highlightFeatures.js +112 -57
- package/providers/maplibre/src/utils/highlightFeatures.test.js +179 -51
- package/providers/maplibre/src/utils/maplibreFixes.js +10 -0
- package/providers/maplibre/src/utils/maplibreFixes.test.js +31 -0
- package/providers/maplibre/src/utils/patternImages.js +22 -19
- package/providers/maplibre/src/utils/patternImages.test.js +146 -167
- package/providers/maplibre/src/utils/rasteriseToImageData.js +1 -4
- package/providers/maplibre/src/utils/rasteriseToImageData.test.js +23 -24
- package/providers/maplibre/src/utils/symbolImages.js +23 -86
- package/providers/maplibre/src/utils/symbolImages.test.js +60 -105
- package/rollup.esm.mjs +14 -3
- package/src/App/components/Actions/Actions.module.scss +1 -0
- package/src/App/components/Actions/Actions.test.jsx +17 -4
- package/src/App/components/Hints/Hints.jsx +52 -0
- package/src/App/components/Hints/Hints.module.scss +37 -0
- package/src/App/components/Hints/Hints.test.jsx +104 -0
- package/src/App/components/KeyboardHelp/KeyboardHelp.jsx +57 -19
- package/src/App/components/KeyboardHelp/KeyboardHelp.module.scss +10 -0
- package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +140 -31
- package/src/App/components/Markers/LabelMarker.jsx +14 -0
- package/src/App/components/Markers/LabelMarker.test.jsx +36 -0
- package/src/App/components/Markers/Markers.jsx +44 -75
- package/src/App/components/Markers/Markers.module.scss +58 -0
- package/src/App/components/Markers/Markers.test.jsx +90 -113
- package/src/App/components/Markers/SymbolLabelMarker.jsx +43 -0
- package/src/App/components/Markers/SymbolLabelMarker.test.jsx +56 -0
- package/src/App/components/Markers/SymbolMarker.jsx +31 -0
- package/src/App/components/Markers/SymbolMarker.test.jsx +72 -0
- package/src/App/components/Panel/Panel.jsx +1 -1
- package/src/App/components/Panel/Panel.module.scss +1 -0
- package/src/App/components/PopupMenu/PopupMenu.test.jsx +117 -1
- package/src/App/components/PopupMenu/usePopupMenu.js +132 -85
- package/src/App/components/Tabs/Tabs.jsx +68 -0
- package/src/App/components/Tabs/Tabs.module.scss +57 -0
- package/src/App/components/Tabs/Tabs.test.jsx +121 -0
- package/src/App/components/Tooltip/Tooltip.module.scss +1 -1
- package/src/App/components/Viewport/Features.jsx +35 -0
- package/src/App/components/Viewport/Features.module.scss +31 -0
- package/src/App/components/Viewport/Features.test.jsx +124 -0
- package/src/App/components/Viewport/MapStatus.jsx +0 -4
- package/src/App/components/Viewport/Viewport.jsx +35 -29
- package/src/App/components/Viewport/Viewport.module.scss +7 -21
- package/src/App/components/Viewport/Viewport.test.jsx +108 -65
- package/src/App/controls/keyboardActions.js +9 -3
- package/src/App/controls/keyboardActions.test.js +122 -87
- package/src/App/controls/keyboardShortcuts.js +1 -14
- package/src/App/hooks/useFeatureFocus.js +199 -0
- package/src/App/hooks/useFeatureFocus.test.js +635 -0
- package/src/App/hooks/useFeatureItems.js +30 -0
- package/src/App/hooks/useFeatureItems.test.js +98 -0
- package/src/App/hooks/useFocusVisible.js +4 -7
- package/src/App/hooks/useFocusVisible.test.js +6 -6
- package/src/App/hooks/useKeyboardHint.js +9 -34
- package/src/App/hooks/useKeyboardHint.test.js +34 -84
- package/src/App/hooks/useKeyboardShortcuts.js +8 -5
- package/src/App/hooks/useKeyboardShortcuts.test.js +16 -12
- package/src/App/hooks/useLayoutMeasurements.js +10 -4
- package/src/App/hooks/useLayoutMeasurements.test.js +30 -1
- package/src/App/hooks/useMarkerCursor.js +33 -0
- package/src/App/hooks/useMarkerCursor.test.js +87 -0
- package/src/App/hooks/useMarkersAPI.js +32 -9
- package/src/App/hooks/useMarkersAPI.test.js +163 -94
- package/src/App/hooks/useModalPanelBehaviour.test.js +2 -1
- package/src/App/layout/Layout.jsx +2 -0
- package/src/App/layout/Layout.test.jsx +3 -0
- package/src/App/registry/keyboardShortcutRegistry.js +3 -2
- package/src/App/registry/keyboardShortcutRegistry.test.js +6 -8
- package/src/App/renderer/mapButtons.js +5 -1
- package/src/App/renderer/mapButtons.test.js +37 -1
- package/src/App/store/AppProvider.test.jsx +5 -0
- package/src/App/store/MapProvider.test.jsx +8 -1
- package/src/App/store/ServiceProvider.jsx +4 -1
- package/src/App/store/ServiceProvider.test.jsx +11 -0
- package/src/App/store/appActionsMap.js +5 -1
- package/src/App/store/appActionsMap.test.js +13 -0
- package/src/App/store/appReducer.js +1 -0
- package/src/App/store/mapActionsMap.js +2 -1
- package/src/InteractiveMap/InteractiveMap.js +12 -0
- package/src/InteractiveMap/InteractiveMap.test.js +2 -0
- package/src/config/appConfig.js +3 -1
- package/src/config/appConfig.test.js +4 -0
- package/src/config/defaults.js +1 -1
- package/src/config/events.js +8 -0
- package/src/config/mapTheme.js +8 -4
- package/src/config/symbolConfig.js +23 -16
- package/src/scss/main.scss +3 -0
- package/src/scss/tools/_border-focus.scss +0 -1
- package/src/services/announcer.test.js +5 -7
- package/src/services/eventBus.js +15 -0
- package/src/services/eventBus.test.js +11 -0
- package/src/services/hints.js +47 -0
- package/src/services/hints.test.js +110 -0
- package/src/services/patternRegistry.js +69 -1
- package/src/services/patternRegistry.test.js +112 -1
- package/src/services/reverseGeocode.js +4 -0
- package/src/services/reverseGeocode.test.js +11 -1
- package/src/services/symbolRegistry.js +152 -17
- package/src/services/symbolRegistry.test.js +141 -31
- package/src/types.js +71 -14
- package/src/utils/constrainKeyboardFocus.js +5 -5
- package/src/utils/detectInterfaceType.js +27 -5
- package/src/utils/detectInterfaceType.test.js +29 -3
- package/src/utils/patternUtils.js +4 -67
- package/src/utils/patternUtils.test.js +1 -123
- package/src/utils/symbolUtils.js +11 -13
- package/src/utils/symbolUtils.test.js +18 -26
- package/webpack.dev.mjs +6 -1
- package/webpack.umd.mjs +1 -0
- package/plugins/interact/dist/css/index.css +0 -1
- package/plugins/interact/src/interact.scss +0 -24
package/dist/esm/im-shell.js
CHANGED
|
@@ -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){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)}};function d(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 u(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?d(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):d(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]=u(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 d=c||"buttonFirst"!==s&&!n(r)?l:"auto";o.style.height=c?"100%":d}function b(){document.body.classList.remove("im-is-loading")}function P(e){var{id:t,behaviour:r}=e,o=i(e.mapViewQueryParam)===t;return["mapOnly","inline"].includes(r)||"hybrid"===r&&!n(e)||o}var _={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,hybridWidth:null,keyboardHintText:'<span class="im-u-visually-hidden">Press </span><kbd>Alt</kbd> + <kbd>K</kbd> <span class="im-u-visually-hidden">to view </span>keyboard shortcuts',mapLabel:"Interactive map",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},y=["mapViewParamKey"];function E(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 g(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?E(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):E(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function A(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 w=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",O=new Set;function D(e){w!==e&&(w=e,O.forEach(t=>{t(e)}))}function T(e){return O.add(e),()=>{O.delete(e)}}var x=null;function M(e,t){if(!x)throw new Error("ReverseGeocode not initialised");return x(e,t)}var S={APP_ADD_MARKER:"app:addmarker",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_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",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"};class k{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}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 B=0;crypto.randomUUID=()=>(B=Math.max(Date.now(),B+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var r=t<12?Number.parseInt(B.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}))}var L="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;L&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}});if(L&&"undefined"!=typeof URL&&URL.createObjectURL){var j=URL.createObjectURL.bind(URL);URL.createObjectURL=e=>{if(e instanceof Blob&&"text/javascript"===e.type){e=new Blob(['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',e],{type:"text/javascript"})}return j(e)}}function C(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 R(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?C(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):C(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}class N{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),this.id=e,this.rootEl=document.getElementById(e),!this.rootEl)throw new Error('Element with id "'.concat(e,'" not found'));this.eventBus=new k,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(),console.log(null==n?void 0:n.error),!1):(console.log("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&c.register(this),this._breakpointDetector=A({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=function(){var e=window.matchMedia("(pointer: coarse)"),t=e=>{D(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";setTimeout(()=>D(r),150)},i=e=>{"Tab"===e.key&&D("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,y),n=g(g({},_),i);return void 0!==t&&(console.warn("[InteractiveMap] mapViewParamKey is deprecated — use mapViewQueryParam instead."),n.mapViewQueryParam=t),n}(R(R({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(()=>{P(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var n=null!=r?r:i,o=window.matchMedia("(max-width: ".concat(n,"px)")),a=()=>{P(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():f(e):e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),P(this.config)?this.loadApp():b()}_handleButtonClick(e){this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():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.preserveStateOnClose?this.hideApp():this.removeApp(),this.config.manageHistoryState)if(null!==(e=history.state)&&void 0!==e&&e.isBack)history.back();else{var t=this.config.mapViewQueryParam,r=this._removeMapParamFromUrl(location.href,t);history.replaceState(history.state,"",r)}}loadApp(){var t=this;return e(function*(){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,R(R({id:t.id,initialBreakpoint:t._breakpointDetector.getBreakpoint(),initialInterfaceType:"unknown"===w?(w="mouse","mouse"):w},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])}),f(t),t.eventBus.emit(S.APP_OPENED,{statePreserved:!1})}catch(e){throw h(t.rootEl,t.config.genericErrorText),console.error(e),e}})()}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(S.APP_CLOSED,{statePreserved:!1}),this.eventBus.emit(S.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(S.APP_CLOSED,{statePreserved:!0})}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),f(this),this.eventBus.emit(S.APP_OPENED,{statePreserved:!0})}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(S.APP_ADD_MARKER,{id:e,coords:t,options:r})}removeMarker(e){this.eventBus.emit(S.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(S.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(S.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,r){this.eventBus.emit(S.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:r})}addPanel(e,t){this.eventBus.emit(S.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(S.APP_REMOVE_PANEL,e)}showPanel(e){var{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.eventBus.emit(S.APP_SHOW_PANEL,{id:e,focus:t})}hidePanel(e){this.eventBus.emit(S.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(S.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emitWhenReady(S.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emitWhenReady(S.MAP_SET_VIEW,e)}open(){this._isHidden?this.showApp():this._root||this.loadApp()}close(){this._handleExitClick()}}export{S as E,N as I,b as a,o as g,M as r,T 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){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)}};function d(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 u(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?d(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):d(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]=u(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 d=c||"buttonFirst"!==s&&!n(r)?l:"auto";o.style.height=c?"100%":d}function b(){document.body.classList.remove("im-is-loading")}function P(e){var{id:t,behaviour:r}=e,o=i(e.mapViewQueryParam)===t;return["mapOnly","inline"].includes(r)||"hybrid"===r&&!n(e)||o}var _={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,hybridWidth:null,keyboardHintText:'<span class="im-u-visually-hidden">Press </span><kbd>Alt</kbd> + <kbd>K</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},E=["mapViewParamKey"];function y(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 A(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?y(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):y(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function g(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 w=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",O=new Set,T=new Set;function D(e){w!==e&&(w=e,T.forEach(t=>t(e)),O.forEach(t=>t(e)))}function M(){return"unknown"===w?(w="mouse","mouse"):w}function S(e){return O.add(e),()=>{O.delete(e)}}var x=null;function k(){return null!==x}function B(e,t){if(!x)throw new Error("ReverseGeocode not initialised");return x(e,t)}var L={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_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"};class R{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 C=0;crypto.randomUUID=()=>(C=Math.max(Date.now(),C+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var r=t<12?Number.parseInt(C.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}))}var j="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;j&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}});if(j&&"undefined"!=typeof URL&&URL.createObjectURL){var N=URL.createObjectURL.bind(URL);URL.createObjectURL=e=>{if(e instanceof Blob&&"text/javascript"===e.type){e=new Blob(['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',e],{type:"text/javascript"})}return N(e)}}function I(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 F(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?I(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):I(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}class U{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),this.id=e,this.rootEl=document.getElementById(e),!this.rootEl)throw new Error('Element with id "'.concat(e,'" not found'));this.eventBus=new R,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(),console.log(null==n?void 0:n.error),!1):(console.log("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&c.register(this),this._breakpointDetector=g({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=function(){var e=window.matchMedia("(pointer: coarse)"),t=e=>{D(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!==w&&(w=r,T.forEach(e=>e(r)),setTimeout(()=>{O.forEach(e=>e(r))},150))},i=e=>{"Tab"===e.key&&D("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,E),n=A(A({},_),i);return void 0!==t&&(console.warn("[InteractiveMap] mapViewParamKey is deprecated — use mapViewQueryParam instead."),n.mapViewQueryParam=t),n}(F(F({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(()=>{P(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var n=null!=r?r:i,o=window.matchMedia("(max-width: ".concat(n,"px)")),a=()=>{P(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():f(e):e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),P(this.config)?this.loadApp():b()}_handleButtonClick(e){this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():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.preserveStateOnClose?this.hideApp():this.removeApp(),this.config.manageHistoryState)if(null!==(e=history.state)&&void 0!==e&&e.isBack)history.back();else{var t=this.config.mapViewQueryParam,r=this._removeMapParamFromUrl(location.href,t);history.replaceState(history.state,"",r)}}loadApp(){var t=this;return e(function*(){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,F(F({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])}),f(t),t.eventBus.emit(L.APP_OPENED,{statePreserved:!1})}catch(e){throw h(t.rootEl,t.config.genericErrorText),console.error(e),e}})()}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(L.APP_CLOSED,{statePreserved:!1}),this.eventBus.emit(L.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(L.APP_CLOSED,{statePreserved:!0})}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),f(this),this.eventBus.emit(L.APP_OPENED,{statePreserved:!0})}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(L.APP_ADD_MARKER,{id:e,coords:t,options:r})}updateMarker(e,t){this.eventBus.emit(L.APP_UPDATE_MARKER,{id:e,options:t})}removeMarker(e){this.eventBus.emit(L.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(L.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(L.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,r){this.eventBus.emit(L.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:r})}addPanel(e,t){this.eventBus.emit(L.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(L.APP_REMOVE_PANEL,e)}showPanel(e){var{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.eventBus.emit(L.APP_SHOW_PANEL,{id:e,focus:t})}hidePanel(e){this.eventBus.emit(L.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(L.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emitWhenReady(L.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emitWhenReady(L.MAP_SET_VIEW,e)}open(){this._isHidden?this.showApp():this._root||this.loadApp()}close(){this._handleExitClick()}}export{L as E,U as I,M as a,b,o as g,k as h,B as r,S as s,m as t};
|