@defra/interactive-map 0.0.15-alpha → 0.0.16-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/assets/css/docusaurus.css +104 -0
  2. package/assets/images/favicon.svg +1 -0
  3. package/assets/images/hero.png +0 -0
  4. package/dist/esm/im-core.js +1 -1
  5. package/dist/umd/im-core.js +1 -1
  6. package/dist/umd/index.js +1 -1
  7. package/docs/api/slot-map.svg +1 -0
  8. package/docs/api/slots.md +89 -6
  9. package/docs/api.md +1 -1
  10. package/docs/architecture.md +3 -1
  11. package/docs/{demo.mdx → examples.mdx} +1 -1
  12. package/docs/getting-started.md +1 -3
  13. package/docs/index.mdx +42 -0
  14. package/docs/plugins/interact.md +176 -55
  15. package/docs/plugins/map-styles.md +64 -7
  16. package/docs/plugins/search.md +207 -63
  17. package/docs/plugins.md +7 -15
  18. package/docusaurus.config.cjs +34 -34
  19. package/jest.setup.js +1 -1
  20. package/package.json +5 -4
  21. package/plugins/beta/datasets/src/DatasetsInit.jsx +1 -1
  22. package/plugins/beta/datasets/src/api/addDataset.js +1 -1
  23. package/plugins/beta/datasets/src/api/hideDataset.js +1 -1
  24. package/plugins/beta/datasets/src/api/hideFeatures.js +1 -1
  25. package/plugins/beta/datasets/src/api/removeDataset.js +1 -1
  26. package/plugins/beta/datasets/src/api/showDataset.js +1 -1
  27. package/plugins/beta/datasets/src/api/showFeatures.js +1 -1
  28. package/plugins/beta/datasets/src/datasets.js +4 -4
  29. package/plugins/beta/datasets/src/defaults.js +1 -1
  30. package/plugins/beta/datasets/src/fetch/createDynamicSource.js +5 -5
  31. package/plugins/beta/datasets/src/handleSetMapStyle.js +1 -1
  32. package/plugins/beta/datasets/src/manifest.js +3 -3
  33. package/plugins/beta/datasets/src/mapLayers.js +2 -3
  34. package/plugins/beta/datasets/src/panels/Key.jsx +31 -29
  35. package/plugins/beta/datasets/src/panels/Layers.jsx +8 -9
  36. package/plugins/beta/datasets/src/utils/bbox.js +4 -4
  37. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
  38. package/plugins/beta/draw-es/src/DrawInit.jsx +16 -16
  39. package/plugins/beta/draw-es/src/api/addFeature.js +3 -3
  40. package/plugins/beta/draw-es/src/api/deleteFeature.js +3 -3
  41. package/plugins/beta/draw-es/src/api/editFeature.js +3 -3
  42. package/plugins/beta/draw-es/src/api/newPolygon.js +3 -3
  43. package/plugins/beta/draw-es/src/events.js +52 -20
  44. package/plugins/beta/draw-es/src/events.test.js +301 -0
  45. package/plugins/beta/draw-es/src/graphic.js +1 -1
  46. package/plugins/beta/draw-es/src/manifest.js +4 -4
  47. package/plugins/beta/draw-es/src/reducer.js +1 -1
  48. package/plugins/beta/draw-es/src/sketchViewModel.js +1 -1
  49. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  50. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  51. package/plugins/beta/draw-ml/src/DrawInit.jsx +49 -52
  52. package/plugins/beta/draw-ml/src/api/deleteFeature.js +1 -1
  53. package/plugins/beta/draw-ml/src/api/editFeature.js +8 -5
  54. package/plugins/beta/draw-ml/src/api/newLine.js +0 -1
  55. package/plugins/beta/draw-ml/src/api/newPolygon.js +0 -1
  56. package/plugins/beta/draw-ml/src/api/split.js +4 -4
  57. package/plugins/beta/draw-ml/src/defaults.js +1 -1
  58. package/plugins/beta/draw-ml/src/events.js +8 -6
  59. package/plugins/beta/draw-ml/src/manifest.js +15 -15
  60. package/plugins/beta/draw-ml/src/mapboxDraw.js +1 -1
  61. package/plugins/beta/draw-ml/src/mapboxSnap.js +17 -18
  62. package/plugins/beta/draw-ml/src/modes/createDrawMode.js +31 -31
  63. package/plugins/beta/draw-ml/src/modes/disabledMode.js +1 -1
  64. package/plugins/beta/draw-ml/src/modes/editVertex/touchHandlers.js +11 -11
  65. package/plugins/beta/draw-ml/src/modes/editVertex/undoHandlers.js +7 -7
  66. package/plugins/beta/draw-ml/src/modes/editVertex/vertexOperations.js +8 -8
  67. package/plugins/beta/draw-ml/src/modes/editVertex/vertexQueries.js +7 -7
  68. package/plugins/beta/draw-ml/src/modes/editVertexMode.js +32 -24
  69. package/plugins/beta/draw-ml/src/reducer.js +1 -1
  70. package/plugins/beta/draw-ml/src/undoStack.js +4 -4
  71. package/plugins/beta/draw-ml/src/utils/snapHelpers.js +12 -12
  72. package/plugins/beta/draw-ml/src/utils/spatial.js +11 -11
  73. package/plugins/beta/frame/src/Frame.jsx +4 -4
  74. package/plugins/beta/frame/src/FrameInit.jsx +4 -4
  75. package/plugins/beta/frame/src/api/addFrame.js +1 -1
  76. package/plugins/beta/frame/src/api/editFeature.js +1 -1
  77. package/plugins/beta/frame/src/config.js +1 -1
  78. package/plugins/beta/frame/src/manifest.js +3 -3
  79. package/plugins/beta/frame/src/reducer.js +1 -1
  80. package/plugins/beta/frame/src/utils.js +1 -1
  81. package/plugins/beta/map-styles/src/MapStyles.jsx +18 -18
  82. package/plugins/beta/scale-bar/src/ScaleBar.jsx +5 -5
  83. package/plugins/beta/use-location/src/UseLocation.jsx +1 -1
  84. package/plugins/beta/use-location/src/defaults.js +1 -1
  85. package/plugins/beta/use-location/src/events.js +3 -3
  86. package/plugins/interact/src/InteractInit.jsx +1 -2
  87. package/plugins/interact/src/api/enable.js +8 -5
  88. package/plugins/interact/src/api/enable.test.js +2 -2
  89. package/plugins/interact/src/api/selectFeature.js +4 -4
  90. package/plugins/interact/src/api/unselectFeature.js +5 -5
  91. package/plugins/interact/src/defaults.js +0 -1
  92. package/plugins/interact/src/events.test.js +15 -15
  93. package/plugins/interact/src/hooks/useHighlightSync.js +1 -1
  94. package/plugins/interact/src/hooks/useInteractionHandlers.js +2 -2
  95. package/plugins/interact/src/hooks/useInteractionHandlers.test.js +5 -5
  96. package/plugins/interact/src/manifest.js +2 -2
  97. package/plugins/interact/src/manifest.test.js +3 -4
  98. package/plugins/interact/src/reducer.js +3 -3
  99. package/plugins/interact/src/reducer.test.js +0 -1
  100. package/plugins/interact/src/utils/spatial.js +10 -10
  101. package/plugins/interact/src/utils/spatial.test.js +14 -14
  102. package/plugins/search/dist/css/index.css +1 -1
  103. package/plugins/search/dist/esm/im-search-plugin.js +1 -1
  104. package/plugins/search/dist/esm/index.js +1 -1
  105. package/plugins/search/dist/umd/im-search-plugin.js +1 -1
  106. package/plugins/search/dist/umd/index.js +1 -1
  107. package/plugins/search/src/Search.jsx +7 -6
  108. package/plugins/search/src/Search.test.jsx +23 -23
  109. package/plugins/search/src/components/CloseButton/CloseButton.jsx +15 -15
  110. package/plugins/search/src/components/CloseButton/CloseButton.test.jsx +2 -2
  111. package/plugins/search/src/components/Form/Form.jsx +14 -14
  112. package/plugins/search/src/components/Form/Form.test.jsx +11 -11
  113. package/plugins/search/src/components/OpenButton/OpenButton.jsx +16 -15
  114. package/plugins/search/src/components/OpenButton/OpenButton.test.jsx +6 -2
  115. package/plugins/search/src/components/SubmitButton/SubmitButton.jsx +15 -15
  116. package/plugins/search/src/components/Suggestions/Suggestions.jsx +6 -6
  117. package/plugins/search/src/components/Suggestions/Suggestions.test.jsx +4 -4
  118. package/plugins/search/src/datasets.js +12 -13
  119. package/plugins/search/src/datasets.test.js +1 -1
  120. package/plugins/search/src/defaults.js +1 -1
  121. package/plugins/search/src/events/fetchSuggestions.js +3 -3
  122. package/plugins/search/src/events/fetchSuggestions.test.js +1 -1
  123. package/plugins/search/src/events/formHandlers.js +3 -3
  124. package/plugins/search/src/events/formHandlers.test.js +1 -1
  125. package/plugins/search/src/events/index.js +2 -2
  126. package/plugins/search/src/events/index.test.js +2 -2
  127. package/plugins/search/src/events/inputHandlers.js +4 -4
  128. package/plugins/search/src/events/inputHandlers.test.js +1 -1
  129. package/plugins/search/src/events/suggestionHandlers.js +2 -2
  130. package/plugins/search/src/events/suggestionHandlers.test.js +1 -1
  131. package/plugins/search/src/index.js +2 -1
  132. package/plugins/search/src/index.test.js +3 -3
  133. package/plugins/search/src/manifest.js +6 -4
  134. package/plugins/search/src/reducer.js +1 -2
  135. package/plugins/search/src/reducer.test.js +2 -2
  136. package/plugins/search/src/search.scss +10 -3
  137. package/plugins/search/src/utils/parseOsNamesResults.js +1 -2
  138. package/plugins/search/src/utils/parseOsNamesResults.test.js +2 -2
  139. package/plugins/search/src/utils/updateMap.js +1 -1
  140. package/plugins/search/src/utils/updateMap.test.js +5 -5
  141. package/providers/beta/esri/dist/esm/im-esri-provider.js +1 -1
  142. package/providers/beta/esri/src/esriProvider.js +5 -5
  143. package/providers/beta/esri/src/utils/coords.js +1 -1
  144. package/providers/beta/esri/src/utils/esriFixes.js +1 -1
  145. package/providers/beta/esri/src/utils/query.js +4 -4
  146. package/providers/beta/esri/src/utils/spatial.js +1 -2
  147. package/providers/beta/esri/src/utils/spatial.test.js +4 -1
  148. package/providers/beta/open-names/src/utils/mapToLocationModel.test.js +1 -1
  149. package/providers/maplibre/src/appEvents.test.js +1 -1
  150. package/providers/maplibre/src/index.js +1 -1
  151. package/providers/maplibre/src/index.test.js +3 -5
  152. package/providers/maplibre/src/mapEvents.test.js +15 -5
  153. package/providers/maplibre/src/maplibreProvider.test.js +6 -2
  154. package/providers/maplibre/src/utils/calculateLinearTextSize.js +4 -4
  155. package/providers/maplibre/src/utils/calculateLinearTextSize.test.js +3 -3
  156. package/providers/maplibre/src/utils/detectWebgl.test.js +1 -1
  157. package/providers/maplibre/src/utils/highlightFeatures.js +2 -2
  158. package/providers/maplibre/src/utils/highlightFeatures.test.js +12 -6
  159. package/providers/maplibre/src/utils/labels.js +19 -20
  160. package/providers/maplibre/src/utils/labels.test.js +15 -13
  161. package/providers/maplibre/src/utils/maplibreFixes.test.js +1 -1
  162. package/providers/maplibre/src/utils/queryFeatures.js +6 -6
  163. package/providers/maplibre/src/utils/queryFeatures.test.js +13 -13
  164. package/providers/maplibre/src/utils/spatial.js +0 -1
  165. package/providers/maplibre/src/utils/spatial.test.js +26 -27
  166. package/src/App/registry/pluginRegistry.js +17 -0
  167. package/src/App/registry/pluginRegistry.test.js +33 -0
  168. package/src/App/renderer/mapButtons.js +3 -2
  169. package/src/App/store/appDispatchMiddleware.js +33 -1
  170. package/src/App/store/appDispatchMiddleware.test.js +250 -222
  171. package/src/config/appConfig.js +2 -2
  172. package/src/utils/logger.js +6 -0
  173. package/src/utils/logger.test.js +32 -0
  174. package/webpack.dev.mjs +22 -18
  175. package/docs/govuk-prototype.md +0 -23
  176. package/docs/index.md +0 -19
package/dist/umd/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.InteractiveMap=t())}(this,()=>(()=>{"use strict";var e,t,n,r,o={698(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var i in r={},t)"key"!==i&&(r[i]=t[i]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:o,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=o,t.jsxs=o},869(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),c=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),d=Symbol.for("react.activity"),v=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,m={};function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function g(){}function _(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=b.prototype;var w=_.prototype=new g;w.constructor=_,y(w,b.prototype),w.isPureReactComponent=!0;var E=Array.isArray;function P(){}var A={H:null,A:null,T:null,S:null},S=Object.prototype.hasOwnProperty;function O(e,t,r){var o=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==o?o:null,props:r}}function k(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var j=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function x(e,t,o,i,a){var u=typeof e;"undefined"!==u&&"boolean"!==u||(e=null);var c,l,s=!1;if(null===e)s=!0;else switch(u){case"bigint":case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0;break;case p:return x((s=e._init)(e._payload),t,o,i,a)}}if(s)return a=a(e),s=""===i?"."+T(e,0):i,E(a)?(o="",null!=s&&(o=s.replace(j,"$&/")+"/"),x(a,t,o,"",function(e){return e})):null!=a&&(k(a)&&(c=a,l=o+(null==a.key||e&&e.key===a.key?"":(""+a.key).replace(j,"$&/")+"/")+s,a=O(c.type,l,c.props)),t.push(a)),1;s=0;var f,d=""===i?".":i+":";if(E(e))for(var h=0;h<e.length;h++)s+=x(i=e[h],t,o,u=d+T(i,h),a);else if("function"==typeof(h=null===(f=e)||"object"!=typeof f?null:"function"==typeof(f=v&&f[v]||f["@@iterator"])?f:null))for(e=h.call(e),h=0;!(i=e.next()).done;)s+=x(i=i.value,t,o,u=d+T(i,h++),a);else if("object"===u){if("function"==typeof e.then)return x(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(P,P):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,i,a);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return s}function C(e,t,n){if(null==e)return e;var r=[],o=0;return x(e,r,"","",function(e){return t.call(n,e,o++)}),r}function M(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var D="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},R={map:C,forEach:function(e,t,n){C(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return C(e,function(){t++}),t},toArray:function(e){return C(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=d,t.Children=R,t.Component=b,t.Fragment=o,t.Profiler=a,t.PureComponent=_,t.StrictMode=i,t.Suspense=s,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=A,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return A.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=y({},e.props),o=e.key;if(null!=t)for(i in void 0!==t.key&&(o=""+t.key),t)!S.call(t,i)||"key"===i||"__self"===i||"__source"===i||"ref"===i&&void 0===t.ref||(r[i]=t[i]);var i=arguments.length-2;if(1===i)r.children=n;else if(1<i){for(var a=Array(i),u=0;u<i;u++)a[u]=arguments[u+2];r.children=a}return O(e.type,o,r)},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:u,_context:e},e},t.createElement=function(e,t,n){var r,o={},i=null;if(null!=t)for(r in void 0!==t.key&&(i=""+t.key),t)S.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var a=arguments.length-2;if(1===a)o.children=n;else if(1<a){for(var u=Array(a),c=0;c<a;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in a=e.defaultProps)void 0===o[r]&&(o[r]=a[r]);return O(e,i,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=k,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:M}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=A.T,n={};A.T=n;try{var r=e(),o=A.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(P,D)}catch(e){D(e)}finally{null!==t&&null!==n.types&&(t.types=n.types),A.T=t}},t.unstable_useCacheRefresh=function(){return A.H.useCacheRefresh()},t.use=function(e){return A.H.use(e)},t.useActionState=function(e,t,n){return A.H.useActionState(e,t,n)},t.useCallback=function(e,t){return A.H.useCallback(e,t)},t.useContext=function(e){return A.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return A.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return A.H.useEffect(e,t)},t.useEffectEvent=function(e){return A.H.useEffectEvent(e)},t.useId=function(){return A.H.useId()},t.useImperativeHandle=function(e,t,n){return A.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return A.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return A.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return A.H.useMemo(e,t)},t.useOptimistic=function(e,t){return A.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return A.H.useReducer(e,t,n)},t.useRef=function(e){return A.H.useRef(e)},t.useState=function(e){return A.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return A.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return A.H.useTransition()},t.version="19.2.4"},540(e,t,n){e.exports=n(869)},848(e,t,n){e.exports=n(698)},205(e,t,n){n.d(t,{N:()=>u,i:()=>c});var r=n(637),o=n(901),i=n(201),a=n(43);function u(e){var t=e.config,n=e.rootEl,u=t.pageTitle,c=t.behaviour,l=t.containerHeight,s=function(e){var t=e.id,n=e.behaviour,o=(0,r.q)(a.A.mapViewParamKey)===t;return"mapOnly"===n||o&&("buttonFirst"===n||(0,i.w)(e))}(t);["mapOnly","buttonFirst","hybrid"].includes(c)&&((0,o.U)({containerEl:n,isFullscreen:s}),document.documentElement.classList.toggle("im-is-fullscreen",s),n.classList.toggle("im-is-fullscreen",s)),["buttonFirst","hybrid"].includes(c)&&function(e){var t=e.pageTitle,n=e.isFullscreen,r=document.title.split(": "),o=r[r.length-1];document.title=n?"".concat(t,": ").concat(o):o}({pageTitle:u,isFullscreen:s});var f=s||"buttonFirst"!==c&&!(0,i.w)(t)?l:"auto";n.style.height=s?"100%":f}function c(){document.body.classList.remove("im-is-loading")}},43(e,t,n){n.d(t,{A:()=>r});const r={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}},12(e,t,n){n.d(t,{q:()=>r});var r={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"}},233(e,t,n){function r(){var e,t,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function u(n,r,i,a){var u=r&&r.prototype instanceof l?r:l,s=Object.create(u.prototype);return o(s,"_invoke",function(n,r,o){var i,a,u,l=0,s=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return i=t,a=0,u=e,p.n=n,c}};function d(n,r){for(a=n,u=r,t=0;!f&&l&&!o&&t<s.length;t++){var o,i=s[t],d=p.p,v=i[2];n>3?(o=v===r)&&(u=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=n<2&&d<i[1])?(a=0,p.v=r,p.n=i[1]):d<v&&(o=n<3||i[0]>r||r>v)&&(i[4]=n,i[5]=r,p.n=v,a=0))}if(o||n>1)return c;throw f=!0,r}return function(o,s,v){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&d(s,v),a=s,u=v;(t=a<2?e:u)||!f;){i||(a?a<3?(a>1&&(p.n=-1),d(a,u)):p.n=u:p.v=u);try{if(l=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(f=p.n<0)?u:n.call(r,p))!==c)break}catch(t){i=e,a=1,u=t}finally{l=1}}return{value:t,done:f}}}(n,i,a),!0),s}var c={};function l(){}function s(){}function f(){}t=Object.getPrototypeOf;var p=[][i]?t(t([][i]())):(o(t={},i,function(){return this}),t),d=f.prototype=l.prototype=Object.create(p);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,o(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return s.prototype=f,o(d,"constructor",f),o(f,"constructor",s),s.displayName="GeneratorFunction",o(f,a,"GeneratorFunction"),o(d),o(d,a,"Generator"),o(d,i,function(){return this}),o(d,"toString",function(){return"[object Generator]"}),(r=function(){return{w:u,m:v}})()}function o(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}o=function(e,t,n,r){function a(t,n){o(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},o(e,t,n,r)}function i(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}n.d(t,{H:()=>u,R:()=>c});var a=null;function u(e,t){var n=e.url,o=e.transformRequest,u=e.load;a=function(){var e,a=(e=r().m(function e(i,a){var c;return r().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,u();case 1:return c=e.v,e.a(2,c(n,o,t,i,a))}},e)}),function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function u(e){i(a,r,o,u,c,"next",e)}function c(e){i(a,r,o,u,c,"throw",e)}u(void 0)})});return function(e,t){return a.apply(this,arguments)}}()}function c(e,t){if(!a)throw new Error("ReverseGeocode not initialised");return a(e,t)}},902(e,t,n){n.d(t,{C1:()=>a,Ey:()=>c,ip:()=>u});var r=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",o=new Set;function i(e){r!==e&&(r=e,o.forEach(function(t){t(e)}))}function a(){var e=window.matchMedia("(pointer: coarse)"),t=function(e){i(e.matches?"touch":"mouse")};e.addEventListener("change",t);var n=function(e){var t,n="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";setTimeout(function(){return i(n)},150)},r=function(e){"Tab"===e.key&&i("keyboard")};return window.addEventListener("pointerdown",n,{passive:!0}),window.addEventListener("keydown",r,{passive:!0}),function(){e.removeEventListener("change",t),window.removeEventListener("pointerdown",n),window.removeEventListener("keydown",r)}}function u(){return"unknown"===r?(r="mouse","mouse"):r}function c(e){return o.add(e),function(){o.delete(e)}}},201(e,t,n){n.d(t,{g:()=>o,w:()=>r});var r=function(e){var t=e.behaviour,n=e.hybridWidth,r=e.maxMobileWidth;if("hybrid"!==t)return!1;var o=null!=n?n:r;return window.matchMedia("(max-width: ".concat(o,"px)")).matches},o=function(e){var t=e.behaviour;return["mapOnly","buttonFirst"].includes(t)||r(e)}},637(e,t,n){n.d(t,{q:()=>r});var r=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)}},901(e,t,n){function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){c=!0,a=e},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{U:()=>a});var i=function(e,t,n,r){return e!==t&&!(null!=n&&n.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&r.contains(e)};function a(e){var t,n=e.containerEl,o=e.isFullscreen,a=e.boundaryEl,u=void 0===a?document.body:a,c=Array.from(u.querySelectorAll("[data-fm-inert]"));if(n&&(c=c.filter(function(e){return!n.contains(e)})),c.forEach(function(e){e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),o){null===(t=document.activeElement)||void 0===t||t.blur();for(var l=n;null!==(s=l)&&void 0!==s&&s.parentNode&&l!==u&&l!==document.body;){var s,f,p=l.parentNode,d=r(p.children);try{for(d.s();!(f=d.n()).done;){var v=f.value;i(v,l,n,u)&&(v.setAttribute("aria-hidden","true"),v.dataset.fmInert="")}}catch(e){d.e(e)}finally{d.f()}l=p}}}}},i={};function a(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,a),n.exports}a.m=o,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&r&&n;("object"==typeof u||"function"==typeof u)&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>n[e]);return i.default=()=>n,a.d(o,i),o},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((t,n)=>(a.f[n](e,t),t),[])),a.u=e=>"im-core.js",a.miniCssF=e=>{},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},r="defra.InteractiveMap:",a.l=(e,t,o,i)=>{if(n[e])n[e].push(t);else{var u,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==r+o){u=f;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",r+o),u.src=e),n[e]=[t];var p=(t,r)=>{u.onerror=u.onload=null,clearTimeout(d);var o=n[e];if(delete n[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach(e=>e(r)),t)return t(r)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=p.bind(null,u.onerror),u.onload=p.bind(null,u.onload),c&&document.head.appendChild(u)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={57:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,o)=>r=e[t]=[n,o]);n.push(r[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,r[1](u)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,o,[i,u,c]=n,l=0;if(i.some(t=>0!==e[t])){for(r in u)a.o(u,r)&&(a.m[r]=u[r]);c&&c(a)}for(t&&t(n);l<i.length;l++)o=i[l],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0},n=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var u={};a.d(u,{default:()=>te});var c=a(540),l=a(848),s=a.t(l,2),f=a(637),p=a(201),d=a(43);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(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 y(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 m(){var e,t=(0,f.q)(d.A.mapViewParamKey),n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return v(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}(b.values());try{for(n.s();!(e=n.n()).done;){var r,o=e.value,i=o.id===t,a="hybrid"===o.config.behaviour&&!(0,p.w)(o.config),u=null===(r=o.rootEl)||void 0===r?void 0:r.children.length;!i||u&&!o._isHidden?i||!u||a||y(o):h(o)}}catch(e){n.e(e)}finally{n.f()}}var b=new Map,g=!1;const _=function(e){g||(window.addEventListener("popstate",m),g=!0),b.set(e.id,e)},w=function(e){b.delete(e.id)};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function P(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,t,n){return(t=function(e){var t=function(e){if("object"!=E(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=E(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==E(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function O(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var k=a(205);function j(e){var t=e.id,n=e.behaviour,r=(0,f.q)(d.A.mapViewParamKey)===t;return["mapOnly","inline"].includes(n)||"hybrid"===n&&!(0,p.w)(e)||r}function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function x(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 t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?x(Object(n),!0).forEach(function(t){M(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function M(e,t,n){return(t=function(e){var t=function(e){if("object"!=T(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==T(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=a(902),R=a(233),L=a(12);function B(e){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B(e)}function N(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,I(r.key),r)}}function I(e){var t=function(e){if("object"!=B(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==B(t)?t:t+""}var H=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.events={}},t=[{key:"on",value:function(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this}},{key:"off",value:function(e,t){return this.events[e]?(this.events[e]=t?this.events[e].filter(function(e){return e!==t}):[],this):this}},{key:"emit",value:function(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(function(t){try{t.apply(void 0,n)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}},{key:"destroy",value:function(){this.events={}}}],t&&N(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();new H;var U=a(901);if("undefined"!=typeof crypto&&!crypto.randomUUID){var F=0;crypto.randomUUID=function(){return F=Math.max(Date.now(),F+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e,t){var n=t<12?Number.parseInt(F.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}}var $="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;if($&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}}),$&&"undefined"!=typeof URL&&URL.createObjectURL){var q=URL.createObjectURL.bind(URL);URL.createObjectURL=function(e){return 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"})),q(e)}}function G(e){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},G(e)}function V(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,r,o,i){var c=r&&r.prototype instanceof u?r:u,l=Object.create(c.prototype);return W(l,"_invoke",function(n,r,o){var i,u,c,l=0,s=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return i=t,u=0,c=e,p.n=n,a}};function d(n,r){for(u=n,c=r,t=0;!f&&l&&!o&&t<s.length;t++){var o,i=s[t],d=p.p,v=i[2];n>3?(o=v===r)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=n<2&&d<i[1])?(u=0,p.v=r,p.n=i[1]):d<v&&(o=n<3||i[0]>r||r>v)&&(i[4]=n,i[5]=r,p.n=v,u=0))}if(o||n>1)return a;throw f=!0,r}return function(o,s,v){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&d(s,v),u=s,c=v;(t=u<2?e:c)||!f;){i||(u?u<3?(u>1&&(p.n=-1),d(u,c)):p.n=c:p.v=c);try{if(l=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(f=p.n<0)?c:n.call(r,p))!==a)break}catch(t){i=e,u=1,c=t}finally{l=1}}return{value:t,done:f}}}(n,o,i),!0),l}var a={};function u(){}function c(){}function l(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(W(t={},r,function(){return this}),t),f=l.prototype=u.prototype=Object.create(s);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,W(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,W(f,"constructor",l),W(l,"constructor",c),c.displayName="GeneratorFunction",W(l,o,"GeneratorFunction"),W(f),W(f,o,"Generator"),W(f,r,function(){return this}),W(f,"toString",function(){return"[object Generator]"}),(V=function(){return{w:i,m:p}})()}function W(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}W=function(e,t,n,r){function i(t,n){W(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},W(e,t,n,r)}function z(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function K(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 Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach(function(t){J(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,X(r.key),r)}}function J(e,t,n){return(t=X(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X(e){var t=function(e){if("object"!=G(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=G(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==G(t)?t:t+""}var Q=function(){return e=function e(t){var n,r,o,i,a,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),J(this,"_openButton",null),J(this,"_root",null),J(this,"_breakpointDetector",null),J(this,"_interfaceDetectorCleanup",null),J(this,"_hybridBehaviourCleanup",null),J(this,"_isHidden",!1),this.id=t,this.rootEl=document.getElementById(t),!this.rootEl)throw new Error('Element with id "'.concat(t,'" not found'));this.eventBus=new H,this.config=this._buildConfig(u),n=this.rootEl,o=(r=this.config).mapProvider,i=r.deviceNotSupportedText,a=null==o?void 0:o.checkDeviceCapabilities(),(o?null!=a&&a.isSupported||(O(n,i),(0,k.i)(),console.log(null==a?void 0:a.error),0):(console.log("No map provider"),0))&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&_(this),this._breakpointDetector=function(e){var t,n=e.maxMobileWidth,r=e.minDesktopWidth,o=e.containerEl,i="unknown",a=new Set,u=function(e){e!==i&&(i=e,requestAnimationFrame(function(){i===e&&a.forEach(function(t){return t(e)})}))};if(o){var c=function(e,t,n){e.style.containerType="inline-size";var r=e.getBoundingClientRect().width,o=t(r);e.dataset.breakpoint=o;var i=new window.ResizeObserver(function(r){var o,i,a=(null===(o=r[0])||void 0===o||null===(o=o.borderBoxSize)||void 0===o||null===(o=o[0])||void 0===o?void 0:o.inlineSize)||(null===(i=r[0])||void 0===i?void 0:i.contentRect.width),u=t(a);e.dataset.breakpoint=u,n(u)});return i.observe(e),{initialType:o,cleanup:function(){i.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(o,function(e){return function(e,t,n){return e<=t?"mobile":e>=n?"desktop":"tablet"}(e,n,r)},u);i=c.initialType,u(c.initialType),t=c.cleanup}else{var l=function(e,t,n){var r={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},o=function(){var e="tablet";r.mobile.matches?e="mobile":r.desktop.matches&&(e="desktop"),n(e)};return r.mobile.addEventListener("change",o),r.desktop.addEventListener("change",o),o(),{cleanup:function(){r.mobile.removeEventListener("change",o),r.desktop.removeEventListener("change",o)}}}(n,r,u);t=l.cleanup}return{subscribe:function(e){return a.add(e),function(){return a.delete(e)}},getBreakpoint:function(){return i},destroy:function(){var e;null===(e=t)||void 0===e||e(),a.clear()}}}({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=(0,D.C1)(),this._initialize())},t=[{key:"_buildConfig",value:function(e){var t=function(e){for(var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach(function(t){A(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},null==e?void 0:e.dataset),n={},r=0,o=Object.keys(t);r<o.length;r++){var i=o[r];n[i]=S(t[i])}return n}(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return C(C({},d.A),e)}(Y(Y({id:this.id,title:document.title},t),e))}},{key:"_initialize",value:function(){var e=this;["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(t,n){var r=t.id,o=t.buttonText,i=t.buttonClass,a='\n <a class="'.concat(i,"\" 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(o,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");n.insertAdjacentHTML("beforebegin",a);var u=n.previousElementSibling,c=new URL(window.location.href);return c.searchParams.set(d.A.mapViewParamKey,r),u.setAttribute("href",c.toString()),u.addEventListener("click",function(t){t.preventDefault(),function(t){e._handleButtonClick(t)}(t)}),u}(this.config,this.rootEl)),this._hybridBehaviourCleanup=function(e){var t=e.config,n=t.behaviour,r=t.hybridWidth,o=t.maxMobileWidth;if("buttonFirst"===n&&e._breakpointDetector.subscribe(function(){j(e.config)?e.loadApp():e.removeApp()}),"hybrid"===n){var i=null!=r?r:o,a=window.matchMedia("(max-width: ".concat(i,"px)")),u=function(){j(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():(0,k.N)(e):e._root&&e.hideApp()};return a.addEventListener("change",u),function(){return a.removeEventListener("change",u)}}return null}(this),j(this.config)?this.loadApp():(0,k.i)()}},{key:"_handleButtonClick",value:function(e){history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():this.loadApp()}},{key:"_removeMapParamFromUrl",value:function(e,t){var n=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return n.test(e)?e.replace(n,function(e,t){return"&"===t?"?":""}).replace(/\?$/,""):e}},{key:"_handleExitClick",value:function(){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)}},{key:"loadApp",value:(n=V().m(function e(){var t,n,r,o,i,u,c,l,s,f=this;return V().w(function(e){for(;;)switch(e.p=e.n){case 0:return this._openButton&&(this._openButton.style.display="none"),e.p=1,e.n=2,a.e(935).then(a.bind(a,521));case 2:return t=e.v,n=t.initialiseApp,e.n=3,this.config.mapProvider.load();case 3:return r=e.v,o=r.MapProvider,i=r.mapFramework,u=r.mapProviderConfig,this.config.reverseGeocodeProvider&&(0,R.H)(this.config.reverseGeocodeProvider,u.crs),e.n=4,n(this.rootEl,Y(Y({id:this.id,initialBreakpoint:this._breakpointDetector.getBreakpoint(),initialInterfaceType:(0,D.ip)()},this.config),{},{MapProvider:o,mapProviderConfig:u,mapFramework:i,eventBus:this.eventBus,breakpointDetector:this._breakpointDetector,handleExitClick:this._handleExitClick.bind(this)}));case 4:c=e.v,this._root=c._root,delete c._root,l=new Set(["on","off","emit"]),Object.keys(c).forEach(function(e){l.has(e)||(f[e]=c[e])}),(0,k.N)(this),e.n=6;break;case 5:throw e.p=5,s=e.v,O(this.rootEl,this.config.genericErrorText),console.error(s),s;case 6:return e.a(2)}},e,this,[[1,5]])}),r=function(){var e=this,t=arguments;return new Promise(function(r,o){var i=n.apply(e,t);function a(e){z(i,r,o,a,u,"next",e)}function u(e){z(i,r,o,a,u,"throw",e)}a(void 0)})},function(){return r.apply(this,arguments)})},{key:"removeApp",value:function(){this._root&&"function"==typeof this.unmount&&(this.unmount(),this._root=null),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),(0,k.N)(this),this.eventBus.emit(L.q.MAP_DESTROY,{mapId:this.id})}},{key:"hideApp",value:function(){this._isHidden=!0,this.rootEl.style.display="none",(0,U.U)({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])}},{key:"showApp",value:function(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),(0,k.N)(this)}},{key:"destroy",value:function(){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),w(this),this.eventBus.destroy()}},{key:"on",value:function(){var e;(e=this.eventBus).on.apply(e,arguments)}},{key:"off",value:function(){var e;(e=this.eventBus).off.apply(e,arguments)}},{key:"emit",value:function(){var e;(e=this.eventBus).emit.apply(e,arguments)}},{key:"addMarker",value:function(e,t,n){this.eventBus.emit(L.q.APP_ADD_MARKER,{id:e,coords:t,options:n})}},{key:"removeMarker",value:function(e){this.eventBus.emit(L.q.APP_REMOVE_MARKER,e)}},{key:"setMode",value:function(e){this.eventBus.emit(L.q.APP_SET_MODE,e)}},{key:"addButton",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_BUTTON,{id:e,config:t})}},{key:"toggleButtonState",value:function(e,t,n){this.eventBus.emit(L.q.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:n})}},{key:"addPanel",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_PANEL,{id:e,config:t})}},{key:"removePanel",value:function(e){this.eventBus.emit(L.q.APP_REMOVE_PANEL,e)}},{key:"showPanel",value:function(e){this.eventBus.emit(L.q.APP_SHOW_PANEL,e)}},{key:"hidePanel",value:function(e){this.eventBus.emit(L.q.APP_HIDE_PANEL,e)}},{key:"addControl",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_CONTROL,{id:e,config:t})}},{key:"fitToBounds",value:function(e){this.eventBus.emit(L.q.MAP_FIT_TO_BOUNDS,e)}},{key:"setView",value:function(e){this.eventBus.emit(L.q.MAP_SET_VIEW,e)}}],t&&Z(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,n,r}(),ee="undefined"==typeof window?globalThis:window;ee.defra=ee.defra||{},ee.preactCompat=c,ee.preactJsxRuntime=s,ee.preactHooks={useState:c.useState},ee.defra.InteractiveMap=Q,ee.preactCompat.default||(ee.preactCompat.default=ee.preactCompat),ee.preactCompat.createRoot||(ee.preactCompat.createRoot=function(e){return{render:function(t){ee.preactCompat.render(t,e)},unmount:function(){ee.preactCompat.render(null,e)}}});const te=Q;return u.default})());
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("defra",[],t):"object"==typeof exports?exports.defra=t():(e.defra=e.defra||{},e.defra.InteractiveMap=t())}(this,()=>(()=>{"use strict";var e,t,n,r,o={698(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var i in r={},t)"key"!==i&&(r[i]=t[i]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:o,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=o,t.jsxs=o},869(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),c=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),d=Symbol.for("react.activity"),v=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,m={};function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function g(){}function _(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=b.prototype;var w=_.prototype=new g;w.constructor=_,y(w,b.prototype),w.isPureReactComponent=!0;var E=Array.isArray;function P(){}var A={H:null,A:null,T:null,S:null},S=Object.prototype.hasOwnProperty;function O(e,t,r){var o=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==o?o:null,props:r}}function k(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var j=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function x(e,t,o,i,a){var u=typeof e;"undefined"!==u&&"boolean"!==u||(e=null);var c,l,s=!1;if(null===e)s=!0;else switch(u){case"bigint":case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0;break;case p:return x((s=e._init)(e._payload),t,o,i,a)}}if(s)return a=a(e),s=""===i?"."+T(e,0):i,E(a)?(o="",null!=s&&(o=s.replace(j,"$&/")+"/"),x(a,t,o,"",function(e){return e})):null!=a&&(k(a)&&(c=a,l=o+(null==a.key||e&&e.key===a.key?"":(""+a.key).replace(j,"$&/")+"/")+s,a=O(c.type,l,c.props)),t.push(a)),1;s=0;var f,d=""===i?".":i+":";if(E(e))for(var h=0;h<e.length;h++)s+=x(i=e[h],t,o,u=d+T(i,h),a);else if("function"==typeof(h=null===(f=e)||"object"!=typeof f?null:"function"==typeof(f=v&&f[v]||f["@@iterator"])?f:null))for(e=h.call(e),h=0;!(i=e.next()).done;)s+=x(i=i.value,t,o,u=d+T(i,h++),a);else if("object"===u){if("function"==typeof e.then)return x(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(P,P):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,i,a);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return s}function C(e,t,n){if(null==e)return e;var r=[],o=0;return x(e,r,"","",function(e){return t.call(n,e,o++)}),r}function M(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var D="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},R={map:C,forEach:function(e,t,n){C(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return C(e,function(){t++}),t},toArray:function(e){return C(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=d,t.Children=R,t.Component=b,t.Fragment=o,t.Profiler=a,t.PureComponent=_,t.StrictMode=i,t.Suspense=s,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=A,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return A.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=y({},e.props),o=e.key;if(null!=t)for(i in void 0!==t.key&&(o=""+t.key),t)!S.call(t,i)||"key"===i||"__self"===i||"__source"===i||"ref"===i&&void 0===t.ref||(r[i]=t[i]);var i=arguments.length-2;if(1===i)r.children=n;else if(1<i){for(var a=Array(i),u=0;u<i;u++)a[u]=arguments[u+2];r.children=a}return O(e.type,o,r)},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:u,_context:e},e},t.createElement=function(e,t,n){var r,o={},i=null;if(null!=t)for(r in void 0!==t.key&&(i=""+t.key),t)S.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var a=arguments.length-2;if(1===a)o.children=n;else if(1<a){for(var u=Array(a),c=0;c<a;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in a=e.defaultProps)void 0===o[r]&&(o[r]=a[r]);return O(e,i,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=k,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:M}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=A.T,n={};A.T=n;try{var r=e(),o=A.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(P,D)}catch(e){D(e)}finally{null!==t&&null!==n.types&&(t.types=n.types),A.T=t}},t.unstable_useCacheRefresh=function(){return A.H.useCacheRefresh()},t.use=function(e){return A.H.use(e)},t.useActionState=function(e,t,n){return A.H.useActionState(e,t,n)},t.useCallback=function(e,t){return A.H.useCallback(e,t)},t.useContext=function(e){return A.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return A.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return A.H.useEffect(e,t)},t.useEffectEvent=function(e){return A.H.useEffectEvent(e)},t.useId=function(){return A.H.useId()},t.useImperativeHandle=function(e,t,n){return A.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return A.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return A.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return A.H.useMemo(e,t)},t.useOptimistic=function(e,t){return A.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return A.H.useReducer(e,t,n)},t.useRef=function(e){return A.H.useRef(e)},t.useState=function(e){return A.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return A.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return A.H.useTransition()},t.version="19.2.4"},540(e,t,n){e.exports=n(869)},848(e,t,n){e.exports=n(698)},205(e,t,n){n.d(t,{N:()=>u,i:()=>c});var r=n(637),o=n(901),i=n(201),a=n(43);function u(e){var t=e.config,n=e.rootEl,u=t.pageTitle,c=t.behaviour,l=t.containerHeight,s=function(e){var t=e.id,n=e.behaviour,o=(0,r.q)(a.A.mapViewParamKey)===t;return"mapOnly"===n||o&&("buttonFirst"===n||(0,i.w)(e))}(t);["mapOnly","buttonFirst","hybrid"].includes(c)&&((0,o.U)({containerEl:n,isFullscreen:s}),document.documentElement.classList.toggle("im-is-fullscreen",s),n.classList.toggle("im-is-fullscreen",s)),["buttonFirst","hybrid"].includes(c)&&function(e){var t=e.pageTitle,n=e.isFullscreen,r=document.title.split(": "),o=r[r.length-1];document.title=n?"".concat(t,": ").concat(o):o}({pageTitle:u,isFullscreen:s});var f=s||"buttonFirst"!==c&&!(0,i.w)(t)?l:"auto";n.style.height=s?"100%":f}function c(){document.body.classList.remove("im-is-loading")}},43(e,t,n){n.d(t,{A:()=>r});const r={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}},12(e,t,n){n.d(t,{q:()=>r});var r={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"}},233(e,t,n){function r(){var e,t,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function u(n,r,i,a){var u=r&&r.prototype instanceof l?r:l,s=Object.create(u.prototype);return o(s,"_invoke",function(n,r,o){var i,a,u,l=0,s=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return i=t,a=0,u=e,p.n=n,c}};function d(n,r){for(a=n,u=r,t=0;!f&&l&&!o&&t<s.length;t++){var o,i=s[t],d=p.p,v=i[2];n>3?(o=v===r)&&(u=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=n<2&&d<i[1])?(a=0,p.v=r,p.n=i[1]):d<v&&(o=n<3||i[0]>r||r>v)&&(i[4]=n,i[5]=r,p.n=v,a=0))}if(o||n>1)return c;throw f=!0,r}return function(o,s,v){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&d(s,v),a=s,u=v;(t=a<2?e:u)||!f;){i||(a?a<3?(a>1&&(p.n=-1),d(a,u)):p.n=u:p.v=u);try{if(l=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(f=p.n<0)?u:n.call(r,p))!==c)break}catch(t){i=e,a=1,u=t}finally{l=1}}return{value:t,done:f}}}(n,i,a),!0),s}var c={};function l(){}function s(){}function f(){}t=Object.getPrototypeOf;var p=[][i]?t(t([][i]())):(o(t={},i,function(){return this}),t),d=f.prototype=l.prototype=Object.create(p);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,o(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return s.prototype=f,o(d,"constructor",f),o(f,"constructor",s),s.displayName="GeneratorFunction",o(f,a,"GeneratorFunction"),o(d),o(d,a,"Generator"),o(d,i,function(){return this}),o(d,"toString",function(){return"[object Generator]"}),(r=function(){return{w:u,m:v}})()}function o(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}o=function(e,t,n,r){function a(t,n){o(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},o(e,t,n,r)}function i(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}n.d(t,{H:()=>u,R:()=>c});var a=null;function u(e,t){var n=e.url,o=e.transformRequest,u=e.load;a=function(){var e,a=(e=r().m(function e(i,a){var c;return r().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,u();case 1:return c=e.v,e.a(2,c(n,o,t,i,a))}},e)}),function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function u(e){i(a,r,o,u,c,"next",e)}function c(e){i(a,r,o,u,c,"throw",e)}u(void 0)})});return function(e,t){return a.apply(this,arguments)}}()}function c(e,t){if(!a)throw new Error("ReverseGeocode not initialised");return a(e,t)}},902(e,t,n){n.d(t,{C1:()=>a,Ey:()=>c,ip:()=>u});var r=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",o=new Set;function i(e){r!==e&&(r=e,o.forEach(function(t){t(e)}))}function a(){var e=window.matchMedia("(pointer: coarse)"),t=function(e){i(e.matches?"touch":"mouse")};e.addEventListener("change",t);var n=function(e){var t,n="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";setTimeout(function(){return i(n)},150)},r=function(e){"Tab"===e.key&&i("keyboard")};return window.addEventListener("pointerdown",n,{passive:!0}),window.addEventListener("keydown",r,{passive:!0}),function(){e.removeEventListener("change",t),window.removeEventListener("pointerdown",n),window.removeEventListener("keydown",r)}}function u(){return"unknown"===r?(r="mouse","mouse"):r}function c(e){return o.add(e),function(){o.delete(e)}}},201(e,t,n){n.d(t,{g:()=>o,w:()=>r});var r=function(e){var t=e.behaviour,n=e.hybridWidth,r=e.maxMobileWidth;if("hybrid"!==t)return!1;var o=null!=n?n:r;return window.matchMedia("(max-width: ".concat(o,"px)")).matches},o=function(e){var t=e.behaviour;return["mapOnly","buttonFirst"].includes(t)||r(e)}},637(e,t,n){n.d(t,{q:()=>r});var r=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)}},901(e,t,n){function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,c=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){c=!0,a=e},f:function(){try{u||null==n.return||n.return()}finally{if(c)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{U:()=>a});var i=function(e,t,n,r){return e!==t&&!(null!=n&&n.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&r.contains(e)};function a(e){var t,n=e.containerEl,o=e.isFullscreen,a=e.boundaryEl,u=void 0===a?document.body:a,c=Array.from(u.querySelectorAll("[data-fm-inert]"));if(n&&(c=c.filter(function(e){return!n.contains(e)})),c.forEach(function(e){e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),o){null===(t=document.activeElement)||void 0===t||t.blur();for(var l=n;null!==(s=l)&&void 0!==s&&s.parentNode&&l!==u&&l!==document.body;){var s,f,p=l.parentNode,d=r(p.children);try{for(d.s();!(f=d.n()).done;){var v=f.value;i(v,l,n,u)&&(v.setAttribute("aria-hidden","true"),v.dataset.fmInert="")}}catch(e){d.e(e)}finally{d.f()}l=p}}}}},i={};function a(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,a),n.exports}a.m=o,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&r&&n;("object"==typeof u||"function"==typeof u)&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>n[e]);return i.default=()=>n,a.d(o,i),o},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce((t,n)=>(a.f[n](e,t),t),[])),a.u=e=>"im-core.js",a.miniCssF=e=>{},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},r="defra.InteractiveMap:",a.l=(e,t,o,i)=>{if(n[e])n[e].push(t);else{var u,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==r+o){u=f;break}}u||(c=!0,(u=document.createElement("script")).charset="utf-8",a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",r+o),u.src=e),n[e]=[t];var p=(t,r)=>{u.onerror=u.onload=null,clearTimeout(d);var o=n[e];if(delete n[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach(e=>e(r)),t)return t(r)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=p.bind(null,u.onerror),u.onload=p.bind(null,u.onload),c&&document.head.appendChild(u)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={57:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,o)=>r=e[t]=[n,o]);n.push(r[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,r[1](u)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,o,[i,u,c]=n,l=0;if(i.some(t=>0!==e[t])){for(r in u)a.o(u,r)&&(a.m[r]=u[r]);c&&c(a)}for(t&&t(n);l<i.length;l++)o=i[l],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0},n=this.webpackChunkdefra_DefraMap=this.webpackChunkdefra_DefraMap||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var u={};a.d(u,{default:()=>te});var c=a(540),l=a(848),s=a.t(l,2),f=a(637),p=a(201),d=a(43);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(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 y(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 m(){var e,t=(0,f.q)(d.A.mapViewParamKey),n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return v(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}(b.values());try{for(n.s();!(e=n.n()).done;){var r,o=e.value,i=o.id===t,a="hybrid"===o.config.behaviour&&!(0,p.w)(o.config),u=null===(r=o.rootEl)||void 0===r?void 0:r.children.length;!i||u&&!o._isHidden?i||!u||a||y(o):h(o)}}catch(e){n.e(e)}finally{n.f()}}var b=new Map,g=!1;const _=function(e){g||(window.addEventListener("popstate",m),g=!0),b.set(e.id,e)},w=function(e){b.delete(e.id)};function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function P(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,t,n){return(t=function(e){var t=function(e){if("object"!=E(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=E(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==E(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function O(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var k=a(205);function j(e){var t=e.id,n=e.behaviour,r=(0,f.q)(d.A.mapViewParamKey)===t;return["mapOnly","inline"].includes(n)||"hybrid"===n&&!(0,p.w)(e)||r}function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function x(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 t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?x(Object(n),!0).forEach(function(t){M(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function M(e,t,n){return(t=function(e){var t=function(e){if("object"!=T(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=T(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==T(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var D=a(902),R=a(233),L=a(12);function B(e){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B(e)}function N(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,I(r.key),r)}}function I(e){var t=function(e){if("object"!=B(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==B(t)?t:t+""}var H=function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.events={}},t=[{key:"on",value:function(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this}},{key:"off",value:function(e,t){return this.events[e]?(this.events[e]=t?this.events[e].filter(function(e){return e!==t}):[],this):this}},{key:"emit",value:function(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(function(t){try{t.apply(void 0,n)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}},{key:"destroy",value:function(){this.events={}}}],t&&N(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();new H;var U=a(901);if("undefined"!=typeof crypto&&!crypto.randomUUID){var F=0;crypto.randomUUID=function(){return F=Math.max(Date.now(),F+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e,t){var n=t<12?Number.parseInt(F.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}}var $="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;if($&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}}),$&&"undefined"!=typeof URL&&URL.createObjectURL){var q=URL.createObjectURL.bind(URL);URL.createObjectURL=function(e){return 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"})),q(e)}}function G(e){return G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},G(e)}function V(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,r,o,i){var c=r&&r.prototype instanceof u?r:u,l=Object.create(c.prototype);return W(l,"_invoke",function(n,r,o){var i,u,c,l=0,s=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return i=t,u=0,c=e,p.n=n,a}};function d(n,r){for(u=n,c=r,t=0;!f&&l&&!o&&t<s.length;t++){var o,i=s[t],d=p.p,v=i[2];n>3?(o=v===r)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=n<2&&d<i[1])?(u=0,p.v=r,p.n=i[1]):d<v&&(o=n<3||i[0]>r||r>v)&&(i[4]=n,i[5]=r,p.n=v,u=0))}if(o||n>1)return a;throw f=!0,r}return function(o,s,v){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&d(s,v),u=s,c=v;(t=u<2?e:c)||!f;){i||(u?u<3?(u>1&&(p.n=-1),d(u,c)):p.n=c:p.v=c);try{if(l=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(f=p.n<0)?c:n.call(r,p))!==a)break}catch(t){i=e,u=1,c=t}finally{l=1}}return{value:t,done:f}}}(n,o,i),!0),l}var a={};function u(){}function c(){}function l(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(W(t={},r,function(){return this}),t),f=l.prototype=u.prototype=Object.create(s);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,W(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,W(f,"constructor",l),W(l,"constructor",c),c.displayName="GeneratorFunction",W(l,o,"GeneratorFunction"),W(f),W(f,o,"Generator"),W(f,r,function(){return this}),W(f,"toString",function(){return"[object Generator]"}),(V=function(){return{w:i,m:p}})()}function W(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}W=function(e,t,n,r){function i(t,n){W(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},W(e,t,n,r)}function z(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void n(e)}u.done?t(c):Promise.resolve(c).then(r,o)}function K(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 Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?K(Object(n),!0).forEach(function(t){J(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):K(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,X(r.key),r)}}function J(e,t,n){return(t=X(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function X(e){var t=function(e){if("object"!=G(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=G(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==G(t)?t:t+""}var Q=function(){return e=function e(t){var n,r,o,i,a,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),J(this,"_openButton",null),J(this,"_root",null),J(this,"_breakpointDetector",null),J(this,"_interfaceDetectorCleanup",null),J(this,"_hybridBehaviourCleanup",null),J(this,"_isHidden",!1),this.id=t,this.rootEl=document.getElementById(t),!this.rootEl)throw new Error('Element with id "'.concat(t,'" not found'));this.eventBus=new H,this.config=this._buildConfig(u),n=this.rootEl,o=(r=this.config).mapProvider,i=r.deviceNotSupportedText,a=null==o?void 0:o.checkDeviceCapabilities(),(o?null!=a&&a.isSupported||(O(n,i),(0,k.i)(),console.log(null==a?void 0:a.error),0):(console.log("No map provider"),0))&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&_(this),this._breakpointDetector=function(e){var t,n=e.maxMobileWidth,r=e.minDesktopWidth,o=e.containerEl,i="unknown",a=new Set,u=function(e){e!==i&&(i=e,requestAnimationFrame(function(){i===e&&a.forEach(function(t){return t(e)})}))};if(o){var c=function(e,t,n){e.style.containerType="inline-size";var r=e.getBoundingClientRect().width,o=t(r);e.dataset.breakpoint=o;var i=new window.ResizeObserver(function(r){var o,i,a=(null===(o=r[0])||void 0===o||null===(o=o.borderBoxSize)||void 0===o||null===(o=o[0])||void 0===o?void 0:o.inlineSize)||(null===(i=r[0])||void 0===i?void 0:i.contentRect.width),u=t(a);e.dataset.breakpoint=u,n(u)});return i.observe(e),{initialType:o,cleanup:function(){i.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(o,function(e){return function(e,t,n){return e<=t?"mobile":e>=n?"desktop":"tablet"}(e,n,r)},u);i=c.initialType,u(c.initialType),t=c.cleanup}else{var l=function(e,t,n){var r={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},o=function(){var e="tablet";r.mobile.matches?e="mobile":r.desktop.matches&&(e="desktop"),n(e)};return r.mobile.addEventListener("change",o),r.desktop.addEventListener("change",o),o(),{cleanup:function(){r.mobile.removeEventListener("change",o),r.desktop.removeEventListener("change",o)}}}(n,r,u);t=l.cleanup}return{subscribe:function(e){return a.add(e),function(){return a.delete(e)}},getBreakpoint:function(){return i},destroy:function(){var e;null===(e=t)||void 0===e||e(),a.clear()}}}({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=(0,D.C1)(),this._initialize())},t=[{key:"_buildConfig",value:function(e){var t=function(e){for(var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?P(Object(n),!0).forEach(function(t){A(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},null==e?void 0:e.dataset),n={},r=0,o=Object.keys(t);r<o.length;r++){var i=o[r];n[i]=S(t[i])}return n}(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return C(C({},d.A),e)}(Y(Y({id:this.id,title:document.title},t),e))}},{key:"_initialize",value:function(){var e=this;["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(t,n){var r=t.id,o=t.buttonText,i=t.buttonClass,a='\n <a class="'.concat(i,"\" 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(o,"</span>\n <span class='im-u-visually-hidden'> (Visual only)</span>\n </a>\n ");n.insertAdjacentHTML("beforebegin",a);var u=n.previousElementSibling,c=new URL(window.location.href);return c.searchParams.set(d.A.mapViewParamKey,r),u.setAttribute("href",c.toString()),u.addEventListener("click",function(t){t.preventDefault(),function(t){e._handleButtonClick(t)}(t)}),u}(this.config,this.rootEl)),this._hybridBehaviourCleanup=function(e){var t=e.config,n=t.behaviour,r=t.hybridWidth,o=t.maxMobileWidth;if("buttonFirst"===n&&e._breakpointDetector.subscribe(function(){j(e.config)?e.loadApp():e.removeApp()}),"hybrid"===n){var i=null!=r?r:o,a=window.matchMedia("(max-width: ".concat(i,"px)")),u=function(){j(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():(0,k.N)(e):e._root&&e.hideApp()};return a.addEventListener("change",u),function(){return a.removeEventListener("change",u)}}return null}(this),j(this.config)?this.loadApp():(0,k.i)()}},{key:"_handleButtonClick",value:function(e){history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():this.loadApp()}},{key:"_removeMapParamFromUrl",value:function(e,t){var n=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return n.test(e)?e.replace(n,function(e,t){return"&"===t?"?":""}).replace(/\?$/,""):e}},{key:"_handleExitClick",value:function(){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)}},{key:"loadApp",value:(n=V().m(function e(){var t,n,r,o,i,u,c,l,s,f=this;return V().w(function(e){for(;;)switch(e.p=e.n){case 0:return this._openButton&&(this._openButton.style.display="none"),e.p=1,e.n=2,a.e(935).then(a.bind(a,317));case 2:return t=e.v,n=t.initialiseApp,e.n=3,this.config.mapProvider.load();case 3:return r=e.v,o=r.MapProvider,i=r.mapFramework,u=r.mapProviderConfig,this.config.reverseGeocodeProvider&&(0,R.H)(this.config.reverseGeocodeProvider,u.crs),e.n=4,n(this.rootEl,Y(Y({id:this.id,initialBreakpoint:this._breakpointDetector.getBreakpoint(),initialInterfaceType:(0,D.ip)()},this.config),{},{MapProvider:o,mapProviderConfig:u,mapFramework:i,eventBus:this.eventBus,breakpointDetector:this._breakpointDetector,handleExitClick:this._handleExitClick.bind(this)}));case 4:c=e.v,this._root=c._root,delete c._root,l=new Set(["on","off","emit"]),Object.keys(c).forEach(function(e){l.has(e)||(f[e]=c[e])}),(0,k.N)(this),e.n=6;break;case 5:throw e.p=5,s=e.v,O(this.rootEl,this.config.genericErrorText),console.error(s),s;case 6:return e.a(2)}},e,this,[[1,5]])}),r=function(){var e=this,t=arguments;return new Promise(function(r,o){var i=n.apply(e,t);function a(e){z(i,r,o,a,u,"next",e)}function u(e){z(i,r,o,a,u,"throw",e)}a(void 0)})},function(){return r.apply(this,arguments)})},{key:"removeApp",value:function(){this._root&&"function"==typeof this.unmount&&(this.unmount(),this._root=null),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),(0,k.N)(this),this.eventBus.emit(L.q.MAP_DESTROY,{mapId:this.id})}},{key:"hideApp",value:function(){this._isHidden=!0,this.rootEl.style.display="none",(0,U.U)({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])}},{key:"showApp",value:function(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),(0,k.N)(this)}},{key:"destroy",value:function(){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),w(this),this.eventBus.destroy()}},{key:"on",value:function(){var e;(e=this.eventBus).on.apply(e,arguments)}},{key:"off",value:function(){var e;(e=this.eventBus).off.apply(e,arguments)}},{key:"emit",value:function(){var e;(e=this.eventBus).emit.apply(e,arguments)}},{key:"addMarker",value:function(e,t,n){this.eventBus.emit(L.q.APP_ADD_MARKER,{id:e,coords:t,options:n})}},{key:"removeMarker",value:function(e){this.eventBus.emit(L.q.APP_REMOVE_MARKER,e)}},{key:"setMode",value:function(e){this.eventBus.emit(L.q.APP_SET_MODE,e)}},{key:"addButton",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_BUTTON,{id:e,config:t})}},{key:"toggleButtonState",value:function(e,t,n){this.eventBus.emit(L.q.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:n})}},{key:"addPanel",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_PANEL,{id:e,config:t})}},{key:"removePanel",value:function(e){this.eventBus.emit(L.q.APP_REMOVE_PANEL,e)}},{key:"showPanel",value:function(e){this.eventBus.emit(L.q.APP_SHOW_PANEL,e)}},{key:"hidePanel",value:function(e){this.eventBus.emit(L.q.APP_HIDE_PANEL,e)}},{key:"addControl",value:function(e,t){this.eventBus.emit(L.q.APP_ADD_CONTROL,{id:e,config:t})}},{key:"fitToBounds",value:function(e){this.eventBus.emit(L.q.MAP_FIT_TO_BOUNDS,e)}},{key:"setView",value:function(e){this.eventBus.emit(L.q.MAP_SET_VIEW,e)}}],t&&Z(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,n,r}(),ee="undefined"==typeof window?globalThis:window;ee.defra=ee.defra||{},ee.preactCompat=c,ee.preactJsxRuntime=s,ee.preactHooks={useState:c.useState},ee.defra.InteractiveMap=Q,ee.preactCompat.default||(ee.preactCompat.default=ee.preactCompat),ee.preactCompat.createRoot||(ee.preactCompat.createRoot=function(e){return{render:function(t){ee.preactCompat.render(t,e)},unmount:function(){ee.preactCompat.render(null,e)}}});const te=Q;return u.default})());
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 838 629" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" xmlns:v="https://vecta.io/nano"><defs><style>@font-face{font-family:"CourierNewPS-BoldMT";src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff"); font-weight:bold;font-style:normal;}</style></defs><style><![CDATA[.B{font-family:CourierNewPS-BoldMT, Courier New, monospace}.C{font-weight:700}.D{font-size:18px}.E{fill:#0969da}.F{font-family:ArialMT, Arial, sans-serif}.G{font-size:14px}.H{fill:#484949}]]></style><g fill="none" stroke="#d1d9e0"><path d="M171 121v327m496-327v327M171 284H1m836 0H667"/><path d="M1 61h836" stroke-width=".999"/><path d="M1 1h836v627H1z" stroke-width=".993"/><path d="M1 568h836M1 121l836 .001M279 61v60m280-60v60"/><path d="M1 448h836M1 508h836"/><path d="M251 508v-60"/><path d="M294 368h250v60H294z" stroke-width="1.001"/></g><text x="386.349" y="27.083" class="B C D E">banner</text><text x="383.347" y="43.182" class="F G H">mobile only</text><text x="381.44" y="594.177" class="B C D E">actions</text><text x="383.839" y="610.276" class="F G H">mobile only</text><text x="381.351" y="394.259" class="B C D E">actions</text><text x="375.571" y="410.358" class="F G H">tablet/desktop</text><text x="110.175" y="481.538" class="F G H">Logo</text><text x="386.195" y="534.177" class="B C D E">bottom</text><text x="383.193" y="550.276" class="F G H">mobile only</text><text x="96.226" y="94.819" class="B C D E">top-left</text><text x="364.776" y="94.819" class="B C D E">top-middle</text><text x="648.825" y="94.819" class="B C D E">top-right</text><text x="685.986" y="368.985" class="B C D E">right-bottom</text><text x="686.61" y="481.819" class="B C D E">footer-right</text><text x="25.795" y="371.554" class="B C D E">left-bottom</text><text x="702.664" y="203.591" class="B C D E">right-top</text><text x="42.472" y="206.319" class="B C D E">left-top</text></svg>
package/docs/api/slots.md CHANGED
@@ -4,11 +4,49 @@ Slots are named regions in the UI where buttons, controls, and panels can be pla
4
4
 
5
5
  ## Slot Map
6
6
 
7
- <!-- TODO: Add visual diagram showing slot locations -->
7
+ <img src="./slot-map.svg" alt="Slot map showing the position of each named slot in the UI layout" width="838" />
8
+
9
+ `banner` appears at the top of the map on mobile and tablet. On desktop it moves into the `top-middle` column.
10
+
11
+ `bottom` is typically used on mobile. At tablet and desktop breakpoints, panels assigned to `bottom` automatically fall back to `left-top`.
8
12
 
9
13
  ## Available Slots
10
14
 
11
- <!-- TODO: Document available slots and their positions -->
15
+ | Slot | Typical use |
16
+ |---|---|
17
+ | `top-left` | Buttons and controls in the top-left corner |
18
+ | `top-middle` | Buttons, controls, and the search bar on desktop |
19
+ | `top-right` | Buttons and controls in the top-right corner |
20
+ | `banner` | Search bar, navigation bar, or full-width controls |
21
+ | `left-top` | Panels stacked on the left side (upper) |
22
+ | `left-bottom` | Panels stacked on the left side (lower) |
23
+ | `right-top` | Panels stacked on the right side (upper) |
24
+ | `right-bottom` | Panels stacked on the right side (lower) |
25
+ | `middle` | Overlays centred on the map (e.g. loading screens) |
26
+ | `footer-right` | Scale bar or other footer controls |
27
+ | `bottom` | Full-width area below the map — typically for mobile panels |
28
+ | `actions` | Centred action bar above the footer |
29
+ | `side` | Persistent side panel alongside the map |
30
+
31
+ ## Slot Eligibility
32
+
33
+ Not all element types can use every slot. The table below shows which slots are available for each element type.
34
+
35
+ | Slot | Buttons | Panels | Controls |
36
+ |---|:---:|:---:|:---:|
37
+ | `top-left` | ✓ | | ✓ |
38
+ | `top-middle` | ✓ | | |
39
+ | `top-right` | ✓ | | ✓ |
40
+ | `banner` | | ✓ | ✓ |
41
+ | `left-top` | ✓ | ✓ | |
42
+ | `left-bottom` | ✓ | ✓ | |
43
+ | `right-top` | ✓ | ✓ | |
44
+ | `right-bottom` | ✓ | ✓ | |
45
+ | `middle` | | ✓ | ✓ |
46
+ | `footer-right` | | | ✓ |
47
+ | `bottom` | | ✓ | ✓ |
48
+ | `actions` | ✓ | | ✓ |
49
+ | `side` | | ✓ | |
12
50
 
13
51
  ## Usage
14
52
 
@@ -16,10 +54,55 @@ Specify a slot in the breakpoint configuration for buttons, controls, or panels:
16
54
 
17
55
  ```js
18
56
  {
19
- mobile: { slot: 'top-left' },
20
- tablet: { slot: 'top-left' },
21
- desktop: { slot: 'top-left' }
57
+ mobile: { slot: 'bottom' },
58
+ tablet: { slot: 'left-top' },
59
+ desktop: { slot: 'left-top' }
60
+ }
61
+ ```
62
+
63
+ Different slots can be used at each breakpoint, allowing an element to reposition itself as the layout changes.
64
+
65
+ > [!NOTE]
66
+ > At tablet and desktop breakpoints, panels assigned to `bottom` automatically fall back to `left-top`.
67
+
68
+ ## Ordering
69
+
70
+ Multiple elements can share the same slot. Panels and controls render in the order they were registered. For buttons, this can be overridden using the `order` property in the breakpoint configuration.
71
+
72
+ - **No order** (default) — button renders in registration order.
73
+ - **Positive integer** — position hint (1-based). A button with `order: 1` will appear first; `order: 2` second, and so on.
74
+
75
+ ```js
76
+ {
77
+ desktop: { slot: 'left-top', order: 1 }
78
+ }
79
+ ```
80
+
81
+ > [!NOTE]
82
+ > Order values are clamped to the valid range. If you specify an order larger than the number of buttons in the slot, the button is placed last.
83
+
84
+ When buttons belong to a group, `order` controls position within the group. The group itself is positioned in the slot using `group.order`.
85
+
86
+ ## Button-Adjacent Panels
87
+
88
+ A panel can be configured to appear adjacent to the button that opened it by using a button-adjacent slot name:
89
+
90
+ ```js
91
+ {
92
+ desktop: { slot: 'map-styles-button' }
93
+ }
94
+ ```
95
+
96
+ The slot name is the button's `id` converted to kebab-case, followed by `-button`. For example, a button with `id: 'mapStyles'` uses the slot `map-styles-button`. The panel will be positioned next to the triggering button in the DOM.
97
+
98
+ ## Modal Panels
99
+
100
+ Setting `modal: true` in a panel's breakpoint config adds modal behaviour to the panel. Internally the panel is moved to a dedicated modal slot to ensure correct stacking order, but it is visually positioned to match its configured slot — for example, a button-adjacent panel will still appear next to its button — and gains a greyed-out backdrop, constrained keyboard focus, and other modal semantics.
101
+
102
+ ```js
103
+ {
104
+ desktop: { slot: 'map-styles-button', modal: true }
22
105
  }
23
106
  ```
24
107
 
25
- Elements in the same slot are rendered in order based on their `order` property (where supported).
108
+ Only one modal panel can be visible at a time. If multiple modals are open, only the most recently opened one is shown.
package/docs/api.md CHANGED
@@ -6,7 +6,7 @@ The `InteractiveMap` object represents an instance of an InteractiveMap on your
6
6
 
7
7
  You create an instance of a InteractiveMap by specifying a `container` and `options` in the `constructor`. An InteractiveMap is then initialized on the page and returns an instance of an InteractiveMap object.
8
8
 
9
- ## Getting started
9
+ ## Getting started <!-- no-sidebar -->
10
10
 
11
11
  For installation and setup instructions, see the [Getting started](./getting-started.md) guide.
12
12
 
@@ -7,7 +7,9 @@ At its core, it provides:
7
7
  * A plugin system for extending functionality
8
8
  * An abstraction layer over multiple mapping engines
9
9
 
10
- The system is designed so that **the core controls rendering and layout**, while **plugins declaratively contribute behaviour and UI.** ---
10
+ The system is designed so that **the core controls rendering and layout**, while **plugins declaratively contribute behaviour and UI.**
11
+
12
+ ---
11
13
 
12
14
  ## High-level Structure
13
15
 
@@ -1,7 +1,7 @@
1
1
  import DemoMapInline from '../demo/DemoMapInline.js'
2
2
  import DemoMapButton from '../demo/DemoMapButton.js'
3
3
 
4
- # Demo
4
+ # Examples
5
5
 
6
6
  See [Getting started](getting-started) for installation and full configuration options.
7
7
 
@@ -111,6 +111,4 @@ Each plugin distributes its own CSS. Import or copy only the CSS for the plugins
111
111
 
112
112
  Following installation the InteractiveMap plugin will be added to your prototype. You can now create pages with a map, and configure for specific use cases.
113
113
 
114
- See [Install and use plugins](https://prototype-kit.service.gov.uk/docs/install-and-use-plugins).
115
-
116
- See [Configuring InteractiveMap in a GOVUK Prototype](./govuk-prototype.md).
114
+ See [GOV.UK Prototype Kit - Install and use plugins](https://prototype-kit.service.gov.uk/docs/install-and-use-plugins).
package/docs/index.mdx ADDED
@@ -0,0 +1,42 @@
1
+ import Link from '@docusaurus/Link';
2
+
3
+ <div className="app-section app-section--features">
4
+ <div className="govuk-width-container">
5
+ <div className="govuk-grid-row">
6
+ <div className="govuk-grid-column-one-third">
7
+ <h2>Inclusive and accessible</h2>
8
+ <p>Designed for everyone, including people using touch, keyboard navigation and assistive technologies. Compliant with WCAG standards for public-facing services.</p>
9
+ </div>
10
+ <div className="govuk-grid-column-one-third">
11
+ <h2>Consistent with GOV.UK</h2>
12
+ <p>Built with the GOV.UK Design System, providing familiar patterns and a predictable mapping interface that delivers a consistent experience across all government services.</p>
13
+ </div>
14
+ <div className="govuk-grid-column-one-third">
15
+ <h2>Open source and flexible</h2>
16
+ <p>Open source, with a lightweight, configurable core. Extend it with plugins for search, drawing tools and map styles, swap in a custom map provider, or build your own.</p>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <div className="app-section">
22
+ <div className="govuk-width-container">
23
+ <div className="govuk-grid-row">
24
+ <div className="govuk-grid-column-two-thirds">
25
+ <h2>Documentation</h2>
26
+ <h3><Link to="/getting-started" className="govuk-link">Getting Started</Link></h3>
27
+ <p>How to install and configure the component. Covers setup, initialisation options, and integration with common build tools.</p>
28
+ <h3><Link to="/examples" className="govuk-link">Examples</Link></h3>
29
+ <p>Live interactive demos showing the component in action, including inline maps, button-triggered maps, and various configuration options.</p>
30
+ <h3><Link to="/api" className="govuk-link">API Reference</Link></h3>
31
+ <p>Full reference for all configuration options, events, methods, and plugin interfaces exposed by the component.</p>
32
+ <h3><Link to="/plugins" className="govuk-link">Plugins</Link></h3>
33
+ <p>Extend the component with built-in plugins for search, map styles, drawing tools, and more. Includes a guide to building your own.</p>
34
+ <h3><Link to="/architecture" className="govuk-link">Architecture</Link></h3>
35
+ <p>Technical overview of how the component is structured, including the plugin system, rendering pipeline, and integration patterns.</p>
36
+ <hr className="govuk-section-break govuk-section-break--visible govuk-section-break--xl" />
37
+ <h2>Support</h2>
38
+ <p>For issues and feature requests, visit our <a href="https://github.com/DEFRA/interactive-map" className="govuk-link">GitHub repository</a>.</p>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>