@defra/interactive-map 0.0.16-alpha → 0.0.18-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/slot-map.svg +264 -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/context.md +53 -7
- package/docs/api/map-style-config.md +41 -2
- package/docs/api/marker-config.md +53 -11
- package/docs/api/slots.md +16 -15
- package/docs/api/symbol-config.md +160 -0
- package/docs/api/symbol-registry.md +115 -0
- package/docs/api.md +25 -22
- package/docs/getting-started.md +4 -1
- package/docs/plugins/datasets.md +657 -0
- package/docs/plugins/interact.md +68 -43
- package/docs/plugins/search.md +15 -3
- package/docs/plugins.md +1 -1
- package/package.json +2 -2
- package/plugins/beta/datasets/dist/css/index.css +103 -15
- package/plugins/beta/datasets/dist/esm/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/esm/index.js +1 -1
- package/plugins/beta/datasets/dist/umd/im-datasets-plugin.js +1 -1
- package/plugins/beta/datasets/dist/umd/index.js +1 -1
- package/plugins/beta/datasets/src/DatasetsInit.jsx +29 -9
- package/plugins/beta/datasets/src/adapters/maplibre/index.js +18 -0
- package/plugins/beta/datasets/src/adapters/maplibre/layerBuilders.js +159 -0
- package/plugins/beta/datasets/src/adapters/maplibre/layerIds.js +75 -0
- package/plugins/beta/datasets/src/adapters/maplibre/maplibreLayerAdapter.js +440 -0
- package/plugins/beta/datasets/src/adapters/maplibre/patternImages.js +27 -0
- package/plugins/beta/datasets/src/adapters/maplibre/symbolImages.js +31 -0
- package/plugins/beta/datasets/src/api/addDataset.js +2 -8
- package/plugins/beta/datasets/src/api/getOpacity.js +17 -0
- package/plugins/beta/datasets/src/api/getStyle.js +13 -0
- package/plugins/beta/datasets/src/api/removeDataset.js +2 -44
- package/plugins/beta/datasets/src/api/setData.js +10 -0
- package/plugins/beta/datasets/src/api/setDatasetVisibility.js +37 -0
- package/plugins/beta/datasets/src/api/setFeatureVisibility.js +22 -0
- package/plugins/beta/datasets/src/api/setOpacity.js +29 -0
- package/plugins/beta/datasets/src/api/setStyle.js +22 -0
- package/plugins/beta/datasets/src/components/EmptyKey.jsx +7 -0
- package/plugins/beta/datasets/src/components/EmptyKey.test.jsx +21 -0
- package/plugins/beta/datasets/src/components/KeySvg.jsx +24 -0
- package/plugins/beta/datasets/src/components/KeySvgLine.jsx +19 -0
- package/plugins/beta/datasets/src/components/KeySvgPattern.jsx +15 -0
- package/plugins/beta/datasets/src/components/KeySvgRect.jsx +22 -0
- package/plugins/beta/datasets/src/components/KeySvgSymbol.jsx +16 -0
- package/plugins/beta/datasets/src/components/svgProperties.js +20 -0
- package/plugins/beta/datasets/src/datasets.js +39 -56
- package/plugins/beta/datasets/src/defaults.js +44 -8
- package/plugins/beta/datasets/src/fetch/createDynamicSource.js +34 -25
- package/plugins/beta/datasets/src/fetch/fetchGeoJSON.js +2 -2
- package/plugins/beta/datasets/src/index.js +2 -1
- package/plugins/beta/datasets/src/manifest.js +25 -17
- package/plugins/beta/datasets/src/panels/Key.jsx +51 -51
- package/plugins/beta/datasets/src/panels/Key.module.scss +59 -9
- package/plugins/beta/datasets/src/panels/Layers.jsx +132 -29
- package/plugins/beta/datasets/src/panels/Layers.module.scss +56 -8
- package/plugins/beta/datasets/src/reducer.js +134 -9
- package/plugins/beta/datasets/src/reducers/keyReducer.js +34 -0
- package/plugins/beta/datasets/src/utils/bbox.js +7 -5
- package/plugins/beta/datasets/src/utils/filters.js +5 -2
- package/plugins/beta/datasets/src/utils/mergeSublayer.js +86 -0
- package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
- package/plugins/beta/draw-es/src/DrawInit.jsx +3 -2
- package/plugins/beta/draw-ml/dist/css/index.css +21 -1
- 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/dist/umd/index.js +1 -1
- package/plugins/beta/draw-ml/src/DrawInit.jsx +4 -3
- package/plugins/beta/draw-ml/src/draw.scss +0 -7
- package/plugins/beta/draw-ml/src/manifest.js +16 -16
- package/plugins/beta/frame/dist/esm/im-frame-plugin.js +1 -1
- package/plugins/beta/frame/dist/umd/im-frame-plugin.js +1 -1
- package/plugins/beta/frame/src/Frame.jsx +5 -5
- 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/map-styles/src/MapStyles.jsx +5 -4
- package/plugins/beta/map-styles/src/MapStylesInit.jsx +5 -4
- package/plugins/beta/map-styles/src/manifest.js +1 -1
- package/plugins/beta/scale-bar/dist/css/index.css +1 -1
- package/plugins/beta/scale-bar/dist/esm/im-scale-bar-plugin.js +1 -1
- package/plugins/beta/scale-bar/dist/umd/im-scale-bar-plugin.js +1 -1
- package/plugins/beta/scale-bar/src/index.test.js +3 -3
- package/plugins/beta/scale-bar/src/manifest.js +3 -3
- package/plugins/beta/scale-bar/src/scaleBar.scss +2 -1
- package/plugins/interact/dist/css/index.css +1 -1
- 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 +14 -5
- package/plugins/interact/src/InteractInit.test.js +26 -6
- package/plugins/interact/src/api/enable.test.js +7 -7
- package/plugins/interact/src/defaults.js +4 -6
- package/plugins/interact/src/events.js +9 -6
- package/plugins/interact/src/events.test.js +28 -4
- package/plugins/interact/src/hooks/useHighlightSync.js +3 -3
- package/plugins/interact/src/hooks/useHighlightSync.test.js +6 -6
- package/plugins/interact/src/hooks/useHoverCursor.js +10 -0
- package/plugins/interact/src/hooks/useHoverCursor.test.js +44 -0
- package/plugins/interact/src/hooks/useInteractionHandlers.js +111 -69
- package/plugins/interact/src/hooks/useInteractionHandlers.test.js +147 -32
- package/plugins/interact/src/interact.scss +0 -7
- package/plugins/interact/src/manifest.js +14 -18
- package/plugins/interact/src/manifest.test.js +3 -1
- package/plugins/interact/src/reducer.js +23 -4
- package/plugins/interact/src/reducer.test.js +60 -11
- package/plugins/interact/src/utils/buildStylesMap.js +17 -4
- package/plugins/interact/src/utils/buildStylesMap.test.js +16 -2
- package/plugins/interact/src/utils/featureQueries.js +11 -6
- package/plugins/interact/src/utils/featureQueries.test.js +8 -1
- package/plugins/search/dist/css/index.css +1 -1
- package/plugins/search/dist/esm/im-search-plugin.js +1 -1
- package/plugins/search/dist/umd/im-search-plugin.js +1 -1
- package/plugins/search/src/Search.jsx +3 -1
- package/plugins/search/src/components/Form/Form.module.scss +2 -1
- package/plugins/search/src/events/fetchSuggestions.js +6 -4
- package/plugins/search/src/events/fetchSuggestions.test.js +26 -4
- package/plugins/search/src/events/formHandlers.js +3 -3
- package/plugins/search/src/events/formHandlers.test.js +1 -1
- package/plugins/search/src/events/suggestionHandlers.js +2 -2
- package/plugins/search/src/events/suggestionHandlers.test.js +1 -1
- package/plugins/search/src/utils/updateMap.js +3 -3
- package/plugins/search/src/utils/updateMap.test.js +3 -3
- package/providers/maplibre/dist/esm/im-maplibre-provider.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-framework.js +1 -1
- package/providers/maplibre/dist/umd/im-maplibre-framework.js.LICENSE.txt +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/appEvents.js +7 -0
- package/providers/maplibre/src/appEvents.test.js +18 -4
- package/providers/maplibre/src/maplibreProvider.js +52 -0
- package/providers/maplibre/src/maplibreProvider.test.js +105 -1
- package/providers/maplibre/src/utils/highlightFeatures.js +37 -7
- package/providers/maplibre/src/utils/highlightFeatures.test.js +153 -95
- package/providers/maplibre/src/utils/hoverCursor.js +61 -0
- package/providers/maplibre/src/utils/hoverCursor.test.js +130 -0
- package/providers/maplibre/src/utils/patternImages.js +70 -0
- package/providers/maplibre/src/utils/patternImages.test.js +180 -0
- package/providers/maplibre/src/utils/queryFeatures.js +38 -16
- package/providers/maplibre/src/utils/queryFeatures.test.js +20 -3
- package/providers/maplibre/src/utils/rasteriseToImageData.js +30 -0
- package/providers/maplibre/src/utils/rasteriseToImageData.test.js +69 -0
- package/providers/maplibre/src/utils/symbolImages.js +147 -0
- package/providers/maplibre/src/utils/symbolImages.test.js +248 -0
- package/src/App/components/Actions/Actions.jsx +2 -2
- package/src/App/components/Actions/Actions.module.scss +0 -7
- package/src/App/components/Actions/Actions.test.jsx +1 -1
- package/src/App/components/Icon/Icon.jsx +3 -2
- package/src/App/components/Icon/Icon.module.scss +4 -0
- package/src/App/components/Icon/Icon.test.jsx +43 -4
- package/src/App/components/MapButton/MapButton.jsx +42 -17
- package/src/App/components/MapButton/MapButton.module.scss +4 -13
- package/src/App/components/MapButton/MapButton.test.jsx +27 -3
- package/src/App/components/Markers/Markers.jsx +122 -27
- package/src/App/components/Markers/Markers.module.scss +0 -10
- package/src/App/components/Markers/Markers.test.jsx +246 -0
- package/src/App/components/PopupMenu/PopupMenu.jsx +51 -274
- package/src/App/components/PopupMenu/PopupMenu.module.scss +14 -7
- package/src/App/components/PopupMenu/PopupMenu.test.jsx +70 -1
- package/src/App/components/PopupMenu/usePopupMenu.js +258 -0
- package/src/App/hooks/useButtonStateEvaluator.js +12 -2
- package/src/App/hooks/useButtonStateEvaluator.test.js +38 -4
- package/src/App/hooks/useInterfaceAPI.js +6 -0
- package/src/App/hooks/useInterfaceAPI.test.js +156 -0
- package/src/App/hooks/useLayoutMeasurements.js +84 -18
- package/src/App/hooks/useLayoutMeasurements.test.js +124 -17
- package/src/App/hooks/useMarkersAPI.js +2 -5
- package/src/App/hooks/useMarkersAPI.test.js +4 -4
- package/src/App/layout/Layout.jsx +14 -9
- package/src/App/layout/Layout.test.jsx +6 -4
- package/src/App/layout/layout.module.scss +67 -29
- package/src/App/registry/pluginRegistry.js +1 -1
- package/src/App/renderer/HtmlElementHost.jsx +2 -1
- package/src/App/renderer/HtmlElementHost.test.jsx +7 -7
- package/src/App/renderer/mapButtons.js +1 -1
- package/src/App/renderer/mapPanels.test.js +2 -2
- package/src/App/renderer/slotHelpers.js +2 -2
- package/src/App/renderer/slotHelpers.test.js +5 -5
- package/src/App/renderer/slots.js +9 -5
- package/src/App/store/AppProvider.jsx +3 -1
- package/src/App/store/AppProvider.test.jsx +1 -1
- package/src/App/store/ServiceProvider.jsx +8 -4
- package/src/App/store/appActionsMap.js +16 -0
- package/src/App/store/appActionsMap.test.js +27 -0
- package/src/App/store/appDispatchMiddleware.js +1 -1
- package/src/App/store/appDispatchMiddleware.test.js +2 -2
- package/src/App/store/appReducer.js +2 -0
- package/src/App/store/mapActionsMap.js +4 -6
- package/src/App/store/mapActionsMap.test.js +3 -2
- package/src/App/store/mapReducer.js +2 -1
- package/src/InteractiveMap/InteractiveMap.js +4 -0
- package/src/config/appConfig.js +5 -8
- package/src/config/appConfig.test.js +1 -2
- package/src/config/defaults.js +0 -2
- package/src/config/events.js +28 -0
- package/src/config/mapTheme.js +56 -0
- package/src/config/patternConfig.js +16 -0
- package/src/config/symbolConfig.js +80 -0
- package/src/scss/main.scss +1 -0
- package/src/scss/settings/_colors.scss +0 -9
- package/src/scss/settings/_dimensions.scss +0 -1
- package/src/services/patternRegistry.js +40 -0
- package/src/services/patternRegistry.test.js +48 -0
- package/src/services/symbolRegistry.js +113 -0
- package/src/services/symbolRegistry.test.js +262 -0
- package/src/types.js +93 -11
- package/src/utils/getSafeZoneInset.js +9 -7
- package/src/utils/getSafeZoneInset.test.js +10 -10
- package/src/utils/patternUtils.js +94 -0
- package/src/utils/patternUtils.test.js +160 -0
- package/src/utils/symbolUtils.js +85 -0
- package/src/utils/symbolUtils.test.js +156 -0
- package/webpack.dev.mjs +1 -1
- package/docs/api/slot-map.svg +0 -1
- package/plugins/beta/datasets/src/api/hideDataset.js +0 -14
- package/plugins/beta/datasets/src/api/hideFeatures.js +0 -41
- package/plugins/beta/datasets/src/api/showDataset.js +0 -14
- package/plugins/beta/datasets/src/api/showFeatures.js +0 -44
- package/plugins/beta/datasets/src/handleSetMapStyle.js +0 -54
- package/plugins/beta/datasets/src/mapLayers.js +0 -164
- /package/src/{utils → services}/logger.js +0 -0
- /package/src/{utils → services}/logger.test.js +0 -0
package/dist/esm/im-shell.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";var n=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=window.location)||void 0===t?void 0:t.search;return new URLSearchParams(n).get(e)},r=e=>{var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e;if("hybrid"!==t)return!1;var i=null!=n?n:r;return window.matchMedia("(max-width: ".concat(i,"px)")).matches},i=e=>{var{behaviour:t}=e;return["mapOnly","buttonFirst"].includes(t)||r(e)},o={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:!1,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",mapViewParamKey:"mv",maxMobileWidth:640,minDesktopWidth:835,markerColor:"#ff0000",markerShape:"pin",nudgePanDelta:5,nudgeZoomDelta:.1,panDelta:100,pageTitle:"Map view",preserveStateOnClose:!1,readMapText:!1,reverseGeocodeProvider:null,zoomDelta:1};function a(e){var t,n;e._isHidden?null===(t=e.showApp)||void 0===t||t.call(e):null===(n=e.loadApp)||void 0===n||n.call(e)}function s(e){var t,n;e.config.preserveStateOnClose?null===(t=e.hideApp)||void 0===t||t.call(e):null===(n=e.removeApp)||void 0===n||n.call(e)}function l(){var e=n(o.mapViewParamKey);for(var t of c.values()){var i,l=t.id===e,d="hybrid"===t.config.behaviour&&!r(t.config),p=null===(i=t.rootEl)||void 0===i?void 0:i.children.length;!l||p&&!t._isHidden?l||!p||d||s(t):a(t)}}var c=new Map,d=!1;var p={register:function(e){d||(window.addEventListener("popstate",l),d=!0),c.set(e.id,e)},unregister:function(e){c.delete(e.id)}};function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function v(e){var n=function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?u(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},null==e?void 0:e.dataset),r={};for(var i of Object.keys(n))r[i]=h(n[i]);return r}function m(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var f=(e,t,n,r)=>e!==t&&!(null!=n&&n.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&r.contains(e);function b(e){var t,{containerEl:n,isFullscreen:r,boundaryEl:i=document.body}=e,o=Array.from(i.querySelectorAll("[data-fm-inert]"));if(n&&(o=o.filter(e=>!n.contains(e))),o.forEach(e=>{e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),r){null===(t=document.activeElement)||void 0===t||t.blur();for(var a=n;null!==(s=a)&&void 0!==s&&s.parentNode&&a!==i&&a!==document.body;){var s,l=a.parentNode;for(var c of l.children)f(c,a,n,i)&&(c.setAttribute("aria-hidden","true"),c.dataset.fmInert="");a=l}}}function _(e){var{config:t,rootEl:i}=e,{pageTitle:a,behaviour:s,containerHeight:l}=t,c=function(e){var{id:t,behaviour:i}=e,a=n(o.mapViewParamKey)===t;return"mapOnly"===i||a&&("buttonFirst"===i||r(e))}(t);["mapOnly","buttonFirst","hybrid"].includes(s)&&(b({containerEl:i,isFullscreen:c}),document.documentElement.classList.toggle("im-is-fullscreen",c),i.classList.toggle("im-is-fullscreen",c)),["buttonFirst","hybrid"].includes(s)&&function(e){var{pageTitle:t,isFullscreen:n}=e,r=document.title.split(": "),i=r[r.length-1];document.title=n?"".concat(t,": ").concat(i):i}({pageTitle:a,isFullscreen:c});var d=c||"buttonFirst"!==s&&!r(t)?l:"auto";i.style.height=c?"100%":d}function P(){document.body.classList.remove("im-is-loading")}function y(e){var{id:t,behaviour:i}=e,a=n(o.mapViewParamKey)===t;return["mapOnly","inline"].includes(i)||"hybrid"===i&&!r(e)||a}function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?E(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function g(e){var t,{maxMobileWidth:n,minDesktopWidth:r,containerEl:i}=e,o="unknown",a=new Set,s=e=>{e!==o&&(o=e,requestAnimationFrame(()=>{o===e&&a.forEach(t=>t(e))}))};if(i){var l=function(e,t,n){e.style.containerType="inline-size";var r=e.getBoundingClientRect().width,i=t(r);e.dataset.breakpoint=i;var o=new window.ResizeObserver(r=>{var i,o,a=(null===(i=r[0])||void 0===i||null===(i=i.borderBoxSize)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.inlineSize)||(null===(o=r[0])||void 0===o?void 0:o.contentRect.width),s=t(a);e.dataset.breakpoint=s,n(s)});return o.observe(e),{initialType:i,cleanup:()=>{o.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(i,e=>function(e,t,n){return e<=t?"mobile":e>=n?"desktop":"tablet"}(e,n,r),s);o=l.initialType,s(l.initialType),t=l.cleanup}else{var c=function(e,t,n){var r={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},i=()=>{var e="tablet";r.mobile.matches?e="mobile":r.desktop.matches&&(e="desktop"),n(e)};return r.mobile.addEventListener("change",i),r.desktop.addEventListener("change",i),i(),{cleanup:()=>{r.mobile.removeEventListener("change",i),r.desktop.removeEventListener("change",i)}}}(n,r,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 k={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_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_EXIT:"map:exit",MAP_DESTROY:"map:destroy"};class B{constructor(){this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),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,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return this.events[e]?(this.events[e].forEach(t=>{try{t(...n)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}destroy(){this.events={}}}if("undefined"!=typeof crypto&&!crypto.randomUUID){var S=0;crypto.randomUUID=()=>(S=Math.max(Date.now(),S+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var n=t<12?Number.parseInt(S.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?n:3&n|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 n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function R(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?C(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):C(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}class N{constructor(e){var n=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 B,this.config=this._buildConfig(n),function(e,t){var{mapProvider:n,deviceNotSupportedText:r}=t,i=null==n?void 0:n.checkDeviceCapabilities();return n?!(null==i||!i.isSupported)||(m(e,r),P(),console.log(null==i?void 0:i.error),!1):(console.log("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&p.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 n=e=>{var t,n="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";setTimeout(()=>D(n),150)},r=e=>{"Tab"===e.key&&D("keyboard")};return window.addEventListener("pointerdown",n,{passive:!0}),window.addEventListener("keydown",r,{passive:!0}),()=>{e.removeEventListener("change",t),window.removeEventListener("pointerdown",n),window.removeEventListener("keydown",r)}}(),this._initialize())}_buildConfig(e){var t=v(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return A(A({},o),e)}(R(R({id:this.id,title:document.title},t),e))}_initialize(){["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(e,t,n){var{id:r,buttonText:i,buttonClass:a}=e,s='\n <a class="'.concat(a,"\" 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(i,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");t.insertAdjacentHTML("beforebegin",s);var l=t.previousElementSibling,c=new URL(window.location.href);return c.searchParams.set(o.mapViewParamKey,r),l.setAttribute("href",c.toString()),l.addEventListener("click",e=>{e.preventDefault(),n(e)}),l}(this.config,this.rootEl,e=>{this._handleButtonClick(e)})),this._hybridBehaviourCleanup=function(e){var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e.config;if("buttonFirst"===t&&e._breakpointDetector.subscribe(()=>{y(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var i=null!=n?n:r,o=window.matchMedia("(max-width: ".concat(i,"px)")),a=()=>{y(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():_(e):e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),y(this.config)?this.loadApp():P()}_handleButtonClick(e){history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():this.loadApp()}_removeMapParamFromUrl(e,t){var n=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return n.test(e)?e.replace(n,(e,t)=>"&"===t?"?":"").replace(/\?$/,""):e}_handleExitClick(){this.config.preserveStateOnClose?this.hideApp():this.removeApp();var e=this.config.mapViewParamKey,t=location.href,n=this._removeMapParamFromUrl(t,e);history.replaceState(history.state,"",n)}loadApp(){var t=this;return e(function*(){t._openButton&&(t._openButton.style.display="none");try{var{initialiseApp:n}=yield import(/* webpackChunkName: "im-core" */ "./im-core.js"),{MapProvider:r,mapFramework:i,mapProviderConfig:o}=yield t.config.mapProvider.load();t.config.reverseGeocodeProvider&&function(t,n){var{url:r,transformRequest:i,load:o}=t;x=function(){var t=e(function*(e,t){return(yield o())(r,i,n,e,t)});return function(e,n){return t.apply(this,arguments)}}()}(t.config.reverseGeocodeProvider,o.crs);var a=yield n(t.rootEl,R(R({id:t.id,initialBreakpoint:t._breakpointDetector.getBreakpoint(),initialInterfaceType:"unknown"===w?(w="mouse","mouse"):w},t.config),{},{MapProvider:r,mapProviderConfig:o,mapFramework:i,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])}),_(t)}catch(e){throw m(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()),_(this),this.eventBus.emit(k.MAP_DESTROY,{mapId:this.id})}hideApp(){this._isHidden=!0,this.rootEl.style.display="none",b({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[e.length-1])}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),_(this)}destroy(){var e,t,n;this.removeApp(),null===(e=this._breakpointDetector)||void 0===e||e.destroy(),null===(t=this._interfaceDetectorCleanup)||void 0===t||t.call(this),null===(n=this._hybridBehaviourCleanup)||void 0===n||n.call(this),p.unregister(this),this.eventBus.destroy()}on(){this.eventBus.on(...arguments)}off(){this.eventBus.off(...arguments)}emit(){this.eventBus.emit(...arguments)}addMarker(e,t,n){this.eventBus.emit(k.APP_ADD_MARKER,{id:e,coords:t,options:n})}removeMarker(e){this.eventBus.emit(k.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(k.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(k.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,n){this.eventBus.emit(k.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:n})}addPanel(e,t){this.eventBus.emit(k.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(k.APP_REMOVE_PANEL,e)}showPanel(e){this.eventBus.emit(k.APP_SHOW_PANEL,e)}hidePanel(e){this.eventBus.emit(k.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(k.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emit(k.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emit(k.MAP_SET_VIEW,e)}}export{k as E,N as I,P as a,i as g,M as r,T as s,b as t};
|
|
1
|
+
import e from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";var n=function(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=window.location)||void 0===t?void 0:t.search;return new URLSearchParams(n).get(e)},r=e=>{var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e;if("hybrid"!==t)return!1;var i=null!=n?n:r;return window.matchMedia("(max-width: ".concat(i,"px)")).matches},i=e=>{var{behaviour:t}=e;return["mapOnly","buttonFirst"].includes(t)||r(e)},o={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:!1,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",mapViewParamKey:"mv",maxMobileWidth:640,minDesktopWidth:835,nudgePanDelta:5,nudgeZoomDelta:.1,panDelta:100,pageTitle:"Map view",preserveStateOnClose:!1,readMapText:!1,reverseGeocodeProvider:null,zoomDelta:1};function a(e){var t,n;e._isHidden?null===(t=e.showApp)||void 0===t||t.call(e):null===(n=e.loadApp)||void 0===n||n.call(e)}function s(e){var t,n;e.config.preserveStateOnClose?null===(t=e.hideApp)||void 0===t||t.call(e):null===(n=e.removeApp)||void 0===n||n.call(e)}function l(){var e=n(o.mapViewParamKey);for(var t of c.values()){var i,l=t.id===e,d="hybrid"===t.config.behaviour&&!r(t.config),p=null===(i=t.rootEl)||void 0===i?void 0:i.children.length;!l||p&&!t._isHidden?l||!p||d||s(t):a(t)}}var c=new Map,d=!1;var p={register:function(e){d||(window.addEventListener("popstate",l),d=!0),c.set(e.id,e)},unregister:function(e){c.delete(e.id)}};function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function h(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function v(e){var n=function(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?u(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({},null==e?void 0:e.dataset),r={};for(var i of Object.keys(n))r[i]=h(n[i]);return r}function m(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var f=(e,t,n,r)=>e!==t&&!(null!=n&&n.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&r.contains(e);function b(e){var t,{containerEl:n,isFullscreen:r,boundaryEl:i=document.body}=e,o=Array.from(i.querySelectorAll("[data-fm-inert]"));if(n&&(o=o.filter(e=>!n.contains(e))),o.forEach(e=>{e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),r){null===(t=document.activeElement)||void 0===t||t.blur();for(var a=n;null!==(s=a)&&void 0!==s&&s.parentNode&&a!==i&&a!==document.body;){var s,l=a.parentNode;for(var c of l.children)f(c,a,n,i)&&(c.setAttribute("aria-hidden","true"),c.dataset.fmInert="");a=l}}}function P(e){var{config:t,rootEl:i}=e,{pageTitle:a,behaviour:s,containerHeight:l}=t,c=function(e){var{id:t,behaviour:i}=e,a=n(o.mapViewParamKey)===t;return"mapOnly"===i||a&&("buttonFirst"===i||r(e))}(t);["mapOnly","buttonFirst","hybrid"].includes(s)&&(b({containerEl:i,isFullscreen:c}),document.documentElement.classList.toggle("im-is-fullscreen",c),i.classList.toggle("im-is-fullscreen",c)),["buttonFirst","hybrid"].includes(s)&&function(e){var{pageTitle:t,isFullscreen:n}=e,r=document.title.split(": "),i=r[r.length-1];document.title=n?"".concat(t,": ").concat(i):i}({pageTitle:a,isFullscreen:c});var d=c||"buttonFirst"!==s&&!r(t)?l:"auto";i.style.height=c?"100%":d}function _(){document.body.classList.remove("im-is-loading")}function E(e){var{id:t,behaviour:i}=e,a=n(o.mapViewParamKey)===t;return["mapOnly","inline"].includes(i)||"hybrid"===i&&!r(e)||a}function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?y(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function g(e){var t,{maxMobileWidth:n,minDesktopWidth:r,containerEl:i}=e,o="unknown",a=new Set,s=e=>{e!==o&&(o=e,requestAnimationFrame(()=>{o===e&&a.forEach(t=>t(e))}))};if(i){var l=function(e,t,n){e.style.containerType="inline-size";var r=e.getBoundingClientRect().width,i=t(r);e.dataset.breakpoint=i;var o=new window.ResizeObserver(r=>{var i,o,a=(null===(i=r[0])||void 0===i||null===(i=i.borderBoxSize)||void 0===i||null===(i=i[0])||void 0===i?void 0:i.inlineSize)||(null===(o=r[0])||void 0===o?void 0:o.contentRect.width),s=t(a);e.dataset.breakpoint=s,n(s)});return o.observe(e),{initialType:i,cleanup:()=>{o.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(i,e=>function(e,t,n){return e<=t?"mobile":e>=n?"desktop":"tablet"}(e,n,r),s);o=l.initialType,s(l.initialType),t=l.cleanup}else{var c=function(e,t,n){var r={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},i=()=>{var e="tablet";r.mobile.matches?e="mobile":r.desktop.matches&&(e="desktop"),n(e)};return r.mobile.addEventListener("change",i),r.desktop.addEventListener("change",i),i(),{cleanup:()=>{r.mobile.removeEventListener("change",i),r.desktop.removeEventListener("change",i)}}}(n,r,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 B={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_VISIBLE:"app:visible",APP_HIDDEN:"app:hidden",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_EXIT:"map:exit",MAP_DESTROY:"map:destroy"};class k{constructor(){this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),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,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return this.events[e]?(this.events[e].forEach(t=>{try{t(...n)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}destroy(){this.events={}}}if("undefined"!=typeof crypto&&!crypto.randomUUID){var S=0;crypto.randomUUID=()=>(S=Math.max(Date.now(),S+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var n=t<12?Number.parseInt(S.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?n:3&n|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 R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function C(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?R(Object(r),!0).forEach(function(n){t(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}class I{constructor(e){var n=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(n),function(e,t){var{mapProvider:n,deviceNotSupportedText:r}=t,i=null==n?void 0:n.checkDeviceCapabilities();return n?!(null==i||!i.isSupported)||(m(e,r),_(),console.log(null==i?void 0:i.error),!1):(console.log("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&p.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 n=e=>{var t,n="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";setTimeout(()=>D(n),150)},r=e=>{"Tab"===e.key&&D("keyboard")};return window.addEventListener("pointerdown",n,{passive:!0}),window.addEventListener("keydown",r,{passive:!0}),()=>{e.removeEventListener("change",t),window.removeEventListener("pointerdown",n),window.removeEventListener("keydown",r)}}(),this._initialize())}_buildConfig(e){var t=v(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return A(A({},o),e)}(C(C({id:this.id,title:document.title},t),e))}_initialize(){["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(e,t,n){var{id:r,buttonText:i,buttonClass:a}=e,s='\n <a class="'.concat(a,"\" 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(i,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");t.insertAdjacentHTML("beforebegin",s);var l=t.previousElementSibling,c=new URL(window.location.href);return c.searchParams.set(o.mapViewParamKey,r),l.setAttribute("href",c.toString()),l.addEventListener("click",e=>{e.preventDefault(),n(e)}),l}(this.config,this.rootEl,e=>{this._handleButtonClick(e)})),this._hybridBehaviourCleanup=function(e){var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e.config;if("buttonFirst"===t&&e._breakpointDetector.subscribe(()=>{E(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var i=null!=n?n:r,o=window.matchMedia("(max-width: ".concat(i,"px)")),a=()=>{E(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():P(e):e._root&&e.hideApp()};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)}return null}(this),E(this.config)?this.loadApp():_()}_handleButtonClick(e){history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():this.loadApp()}_removeMapParamFromUrl(e,t){var n=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return n.test(e)?e.replace(n,(e,t)=>"&"===t?"?":"").replace(/\?$/,""):e}_handleExitClick(){this.config.preserveStateOnClose?this.hideApp():this.removeApp();var e=this.config.mapViewParamKey,t=location.href,n=this._removeMapParamFromUrl(t,e);history.replaceState(history.state,"",n)}loadApp(){var t=this;return e(function*(){t._openButton&&(t._openButton.style.display="none");try{var{initialiseApp:n}=yield import(/* webpackChunkName: "im-core" */ "./im-core.js"),{MapProvider:r,mapFramework:i,mapProviderConfig:o}=yield t.config.mapProvider.load();t.config.reverseGeocodeProvider&&function(t,n){var{url:r,transformRequest:i,load:o}=t;x=function(){var t=e(function*(e,t){return(yield o())(r,i,n,e,t)});return function(e,n){return t.apply(this,arguments)}}()}(t.config.reverseGeocodeProvider,o.crs);var a=yield n(t.rootEl,C(C({id:t.id,initialBreakpoint:t._breakpointDetector.getBreakpoint(),initialInterfaceType:"unknown"===w?(w="mouse","mouse"):w},t.config),{},{MapProvider:r,mapProviderConfig:o,mapFramework:i,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])}),P(t)}catch(e){throw m(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()),P(this),this.eventBus.emit(B.MAP_DESTROY,{mapId:this.id})}hideApp(){this._isHidden=!0,this.rootEl.style.display="none",b({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[e.length-1]),this.eventBus.emit(B.APP_HIDDEN)}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),P(this),this.eventBus.emit(B.APP_VISIBLE)}destroy(){var e,t,n;this.removeApp(),null===(e=this._breakpointDetector)||void 0===e||e.destroy(),null===(t=this._interfaceDetectorCleanup)||void 0===t||t.call(this),null===(n=this._hybridBehaviourCleanup)||void 0===n||n.call(this),p.unregister(this),this.eventBus.destroy()}on(){this.eventBus.on(...arguments)}off(){this.eventBus.off(...arguments)}emit(){this.eventBus.emit(...arguments)}addMarker(e,t,n){this.eventBus.emit(B.APP_ADD_MARKER,{id:e,coords:t,options:n})}removeMarker(e){this.eventBus.emit(B.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit(B.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit(B.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,n){this.eventBus.emit(B.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:n})}addPanel(e,t){this.eventBus.emit(B.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit(B.APP_REMOVE_PANEL,e)}showPanel(e){this.eventBus.emit(B.APP_SHOW_PANEL,e)}hidePanel(e){this.eventBus.emit(B.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit(B.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emit(B.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emit(B.MAP_SET_VIEW,e)}}export{B as E,I,_ as a,i as g,M as r,T as s,b as t};
|