@defra/forms-engine-plugin 4.14.4 → 4.16.0

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 (56) hide show
  1. package/.public/assets-manifest.json +10 -1
  2. package/.public/javascripts/im-search-plugin.min.js +2 -0
  3. package/.public/javascripts/im-search-plugin.min.js.map +1 -0
  4. package/.public/javascripts/shared.min.js +1 -1
  5. package/.public/javascripts/shared.min.js.map +1 -1
  6. package/.public/javascripts/vendor/@defra.min.js +2 -0
  7. package/.public/javascripts/vendor/@defra.min.js.map +1 -0
  8. package/.public/javascripts/vendor/maplibre-gl.min.js +3 -0
  9. package/.public/javascripts/vendor/maplibre-gl.min.js.LICENSE.txt +4 -0
  10. package/.public/javascripts/vendor/maplibre-gl.min.js.map +1 -0
  11. package/.public/javascripts/vendor/preact.min.js +2 -0
  12. package/.public/javascripts/vendor/preact.min.js.map +1 -0
  13. package/.public/stylesheets/application.min.css +1 -1
  14. package/.public/stylesheets/application.min.css.map +1 -1
  15. package/.server/client/javascripts/geospatial-map.js +9 -4
  16. package/.server/client/javascripts/geospatial-map.js.map +1 -1
  17. package/.server/client/javascripts/map.js +18 -12
  18. package/.server/client/javascripts/map.js.map +1 -1
  19. package/.server/client/stylesheets/_prose.scss +19 -0
  20. package/.server/client/stylesheets/shared.scss +7 -0
  21. package/.server/server/forms/simple-form.yaml +19 -0
  22. package/.server/server/plugins/engine/components/NotificationBanner.d.ts +56 -0
  23. package/.server/server/plugins/engine/components/NotificationBanner.js +28 -0
  24. package/.server/server/plugins/engine/components/NotificationBanner.js.map +1 -0
  25. package/.server/server/plugins/engine/components/helpers/components.d.ts +1 -1
  26. package/.server/server/plugins/engine/components/helpers/components.js +3 -0
  27. package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
  28. package/.server/server/plugins/engine/components/index.d.ts +1 -0
  29. package/.server/server/plugins/engine/components/index.js +1 -0
  30. package/.server/server/plugins/engine/components/index.js.map +1 -1
  31. package/.server/server/plugins/engine/views/components/notificationbanner.html +15 -0
  32. package/.server/server/plugins/map/routes/index.d.ts +1 -2
  33. package/.server/server/plugins/map/routes/index.js +2 -32
  34. package/.server/server/plugins/map/routes/index.js.map +1 -1
  35. package/.server/server/plugins/map/service.d.ts +0 -7
  36. package/.server/server/plugins/map/service.js +0 -12
  37. package/.server/server/plugins/map/service.js.map +1 -1
  38. package/.server/server/plugins/map/service.test.js +0 -43
  39. package/.server/server/plugins/map/service.test.js.map +1 -1
  40. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  41. package/package.json +2 -1
  42. package/src/client/javascripts/geospatial-map.js +9 -5
  43. package/src/client/javascripts/map.js +18 -13
  44. package/src/client/stylesheets/_prose.scss +19 -0
  45. package/src/client/stylesheets/shared.scss +7 -0
  46. package/src/server/forms/simple-form.yaml +19 -0
  47. package/src/server/plugins/engine/components/NotificationBanner.ts +32 -0
  48. package/src/server/plugins/engine/components/helpers/components.ts +5 -0
  49. package/src/server/plugins/engine/components/index.ts +1 -0
  50. package/src/server/plugins/engine/views/components/notificationbanner.html +15 -0
  51. package/src/server/plugins/map/routes/index.js +1 -37
  52. package/src/server/plugins/map/service.js +0 -13
  53. package/.server/server/plugins/map/test/__stubs__/nearest.d.ts +0 -37
  54. package/.server/server/plugins/map/test/__stubs__/nearest.js +0 -38
  55. package/.server/server/plugins/map/test/__stubs__/nearest.js.map +0 -1
  56. package/src/server/plugins/map/test/__stubs__/nearest.js +0 -46
@@ -25,11 +25,20 @@
25
25
  "assets/rebrand/images/govuk-icon-mask.svg": "assets/rebrand/images/govuk-icon-mask.svg",
26
26
  "assets/rebrand/images/govuk-opengraph-image.png": "assets/rebrand/images/govuk-opengraph-image.png",
27
27
  "assets/rebrand/manifest.json": "assets/rebrand/manifest.json",
28
+ "im-search-plugin.js": "javascripts/im-search-plugin.min.js",
29
+ "im-search-plugin.js.map": "javascripts/im-search-plugin.min.js.map",
28
30
  "javascripts/application.min.js.LICENSE.txt": "javascripts/application.min.js.LICENSE.txt",
29
31
  "javascripts/shared.min.js.LICENSE.txt": "javascripts/shared.min.js.LICENSE.txt",
32
+ "javascripts/vendor/maplibre-gl.min.js.LICENSE.txt": "javascripts/vendor/maplibre-gl.min.js.LICENSE.txt",
30
33
  "shared.js": "javascripts/shared.min.js",
31
34
  "shared.js.map": "javascripts/shared.min.js.map",
32
35
  "stylesheets/application.scss": "stylesheets/application.min.css",
36
+ "vendor/@defra.js": "javascripts/vendor/@defra.min.js",
37
+ "vendor/@defra.js.map": "javascripts/vendor/@defra.min.js.map",
33
38
  "vendor/accessible-autocomplete.js": "javascripts/vendor/accessible-autocomplete.min.js",
34
- "vendor/accessible-autocomplete.js.map": "javascripts/vendor/accessible-autocomplete.min.js.map"
39
+ "vendor/accessible-autocomplete.js.map": "javascripts/vendor/accessible-autocomplete.min.js.map",
40
+ "vendor/maplibre-gl.js": "javascripts/vendor/maplibre-gl.min.js",
41
+ "vendor/maplibre-gl.js.map": "javascripts/vendor/maplibre-gl.min.js.map",
42
+ "vendor/preact.js": "javascripts/vendor/preact.min.js",
43
+ "vendor/preact.js.map": "javascripts/vendor/preact.min.js.map"
35
44
  }
@@ -0,0 +1,2 @@
1
+ (self.webpackChunk=self.webpackChunk||[]).push([[254],{354:(e,c,r)=>{function f(e,c){return c||(c=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(c)}}))}r.d(c,{A:()=>f})}}]);
2
+ //# sourceMappingURL=im-search-plugin.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascripts/im-search-plugin.min.js","mappings":"qEAAA,SAASA,EAAuBC,EAAGC,GACjC,OAAOA,IAAMA,EAAID,EAAEE,MAAM,IAAKC,OAAOC,OAAOD,OAAOE,iBAAiBL,EAAG,CACrEM,IAAK,CACHC,MAAOJ,OAAOC,OAAOH,MAG3B,C","sources":["webpack:///../../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js"],"sourcesContent":["function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };"],"names":["_taggedTemplateLiteral","e","t","slice","Object","freeze","defineProperties","raw","value"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see shared.min.js.LICENSE.txt */
2
- var t,e,n,r={6:(t,e,n)=>{n.d(e,{addFeatureToMap:()=>y,createFeatureHTML:()=>k,createFeaturesHTML:()=>b,focusFeature:()=>w,getBoundingBox:()=>f,getGeoJSON:()=>g,getHelpPanelHtml:()=>l,getUIManager:()=>S,processGeospatial:()=>v}),n.r(e);var r=n(356);function o(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const n=[1/0,1/0,-1/0,-1/0];return(0,r.Fh)(t,t=>{n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]<t[0]&&(n[2]=t[0]),n[3]<t[1]&&(n[3]=t[1])}),n}var i=n(559);function a(){return a=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},a.apply(null,arguments)}const s={showLabel:!0,label:"How to use this map",mobile:{slot:"drawer",open:!0,dismissible:!0,modal:!1},tablet:{slot:"drawer",open:!0,dismissible:!0,modal:!1},desktop:{slot:"drawer",open:!0,dismissible:!0,modal:!1}};function l(t,e,n){const r=function(t,e){return t&&e?"a line or shape":t?"a line":e?"a shape":""}(e,n),o=r?`<li>Double‑click, or select 'Done', when you have finished drawing ${r}</li>`:"",i=function(t,e,n){const r=[];return t&&r.push("points"),e&&r.push("lines"),n&&r.push("shapes"),function(t){if(0===t.length)return"";if(1===t.length)return t[0];if(2===t.length)return`${t[0]} or ${t[1]}`;const e=t.pop();return`${t.join(", ")} or ${e}`}(r)}(t,e,n);return`<p class="govuk-body-s govuk-!-margin-bottom-2">You can add ${i} to the map.</p><ul class="govuk-list govuk-list--number govuk-body-s"><li>Search for a county, place or postcode</li><li>Use the + and - icons to zoom in and out</li>${o}<li>Give the location a name</li></ul>`}const u={stroke:"rgba(0, 11, 112, 1)",fill:"rgba(0, 11, 112, 0.2)",strokeWidth:2},c={stroke:"rgb(0, 0, 0)",fill:"rgba(255, 221, 0, 0.2)",strokeWidth:2},d={Point:"Point",LineString:"Line",Polygon:"Shape"},h='<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" /><circle cx="12" cy="10" r="3" />',m='<path d="M19.5 7v10M4.5 7v10M7 19.5h10M7 4.5h10"/><path d="M22 18v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zm0-15v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 18v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 3v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1z"/>',p='<path d="M5.706 16.294L16.294 5.706"/><path d="M21 2v3c0 .549-.451 1-1 1h-3c-.549 0-1-.451-1-1V2c0-.549.451-1 1-1h3c.549 0 1 .451 1 1zM6 17v3c0 .549-.451 1-1 1H2c-.549 0-1-.451-1-1v-3c0-.549.451-1 1-1h3c.549 0 1 .451 1 1z"/>';function g(t){const e=t.value.trim();return{type:"FeatureCollection",features:e?JSON.parse(e):[]}}function f(t){return o(t)}function v(t,e,n){const r=window.defra;if(!(e instanceof HTMLDivElement))return;const o=e.querySelector(".govuk-textarea");if(!(o instanceof HTMLTextAreaElement))return;const{listEl:d,mapId:v}=function(t,e){const n=document.createElement("div"),r=`geospatialmap_${e}`;n.setAttribute("id",r),n.setAttribute("class","map-container");const o=document.createElement("div"),i=`${r}_list`;return o.setAttribute("id",i),t.after(n),n.after(o),t.classList.add("js-hidden"),{mapEl:n,listEl:o,mapId:r}}(o,n),b=g(o),k=b.features.length?f(b):void 0,M=r.drawMLPlugin(),L=[M],x=e.dataset.country;if(x){const e=r.datasetsMaplibrePlugin({datasets:[{id:"invalid-area",label:"Invalid areas",geojson:`${t.apiPath}/maps/countries.geojson?omit=${x}`,showInKey:!1,showInMenu:!1,style:{stroke:"gray",strokeWidth:1,fill:"rgba(211,211,211,0.8)"}},{id:"valid-area",label:"Valid areas",geojson:`${t.apiPath}/maps/countries.geojson?only=${x}`,showInKey:!1,showInMenu:!1,style:{stroke:"rgba(0,112,60,1)",strokeWidth:1}}]});L.push(e)}const A=a({},i.defaultConfig,{bounds:k,plugins:L}),{map:N,interactPlugin:C}=(0,i.createMap)(v,A,t),_=function(t){function e(e){return t.features.find(t=>t.id===e)}return{getFeatures:function(){return t.features},getFeature:e,addFeature:function(e){e.properties.coordinateGridReference=(0,i.getCoordinateGridRef)(e),e.properties.centroidGridReference=(0,i.getCentroidGridRef)(e),E(e),t.features.push(e)},updateFeature:function(t,n){const r=e(t);return r&&(r.properties.coordinateGridReference=(0,i.getCoordinateGridRef)(r),r.properties.centroidGridReference=(0,i.getCentroidGridRef)(r),r.geometry=n,E(r)),r},removeFeature:function(e){const n=t.features.findIndex(t=>t.id===e);return n>-1?t.features.splice(n,1):void 0}}}(b);!function(t){const{map:e}=t;e.on(i.EVENTS.mapReady,function(t){const{map:e,activeFeatureManager:n,uiManager:r,interactPlugin:o,drawPlugin:d}=t,{toggleActionButtons:g,renderList:f,getAllowableGeometryTypes:v}=r,{resetActiveFeature:b}=n;return function(n){const k=v(),E=k.includes("point"),S=k.includes("line"),M=k.includes("shape");e.addPanel("info",a({},s,{html:l(E,S,M)})),E&&e.addButton("btnAddPoint",{variant:"tertiary",label:"Add point",iconSvgContent:h,onClick:()=>{b(),g(!0),f(!0),o.enable()},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),M&&e.addButton("btnAddPolygon",{variant:"tertiary",label:"Add shape",iconSvgContent:m,onClick:()=>{b(),g(!0),f(!0),d.newPolygon($(),c)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),S&&e.addButton("btnAddLine",{variant:"tertiary",label:"Add line",iconSvgContent:p,onClick:()=>{b(),g(!0),f(!0),d.newLine($(),u)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),t.mapProvider=n.map,e.on(i.EVENTS.drawReady,function(t){const{featuresManager:e,uiManager:n,drawPlugin:r,map:o}=t,{renderList:i}=n,{getFeatures:a}=e;return function(){a().forEach(t=>y(t,r,o)),i()}}(t)),e.on(i.EVENTS.drawCreated,function(t){const{featuresManager:e,uiManager:n}=t,{addFeature:r}=e,{renderList:o,toggleActionButtons:i,focusDescriptionInput:s}=n;return function(t){r(a({},t,{properties:{description:""}})),o(),i(!1),s()}}(t)),e.on(i.EVENTS.drawEdited,function(t){const{featuresManager:e,activeFeatureManager:n,uiManager:r}=t,{updateFeature:o}=e,{getActiveFeature:i,resetActiveFeature:a}=n,{renderList:s,toggleActionButtons:l}=r;return function(t){const e=t,n=e.id;i()===n&&(o(n,e.geometry),s()),a(),l(!1)}}(t)),e.on(i.EVENTS.drawCancelled,function(t){const{uiManager:e,activeFeatureManager:n}=t,{toggleActionButtons:r,renderList:o}=e,{resetActiveFeature:i}=n;return function(){r(!1),i(),o()}}(t)),e.on(i.EVENTS.interactMarkerChange,function(t){const{featuresManager:e,activeFeatureManager:n,map:r,interactPlugin:o,uiManager:i}=t,{addFeature:a,updateFeature:s}=e,{getActiveFeature:l,resetActiveFeature:u}=n,{renderList:c,focusDescriptionInput:d,toggleActionButtons:h}=i;return function(t){const e=l();if(e){const n=s(e,{type:"Point",coordinates:t.coords});r.addMarker(e,t.coords),n&&c(),u()}else{const e=$();a({type:"Feature",properties:{description:""},geometry:{type:"Point",coordinates:t.coords},id:e}),r.addMarker(e,t.coords),c(),d()}r.removeMarker("location"),o.disable(),h(!1)}}(t));const{listEl:L}=r;L.addEventListener("click",function(t){const{map:e,mapProvider:n,featuresManager:r,activeFeatureManager:o,interactPlugin:i,uiManager:a,drawPlugin:s}=t,{getFeature:l,removeFeature:u}=r,{getActiveFeature:c,setActiveFeature:d}=o,{renderList:h,toggleActionButtons:m}=a;return function(t){const r=t.target;if(r instanceof HTMLElement){if(c())return t.preventDefault(),void t.stopPropagation();if("A"===r.tagName&&r.dataset.action&&r.dataset.id&&r.dataset.type){const{action:o,id:a,type:c}=r.dataset;"edit"===o?function(t,e){d(t),"Point"===e?(i.selectFeature({featureId:t}),i.enable()):s.editFeature(t);const r=l(t);r&&n&&w(r,n),m(!0),h(!0)}(a,c):(t.preventDefault(),t.stopPropagation(),"delete"===o&&function(t,n){"Point"===n?(e.removeMarker(t),u(t)):(s.deleteFeature(t),u(t)),h()}(a,c))}}}}(t),!1),L.addEventListener("change",function(t){const{featuresManager:e,uiManager:n}=t,{getFeature:r}=e,{renderValue:o}=n;return function(t){t.preventDefault(),t.stopPropagation();const e=t.target;if(!(e instanceof HTMLInputElement&&e.dataset.id))return;const{id:n}=e.dataset,i=r(n);i&&(i.properties.description=e.value.trim(),o())}}(t),!1),L.addEventListener("keydown",function(t){t.target instanceof HTMLInputElement&&("Enter"!==t.code&&"NumpadEnter"!==t.code||(t.preventDefault(),t.stopPropagation()))},!1)}}(t))}({map:N,featuresManager:_,activeFeatureManager:function(){let t;return{getActiveFeature:function(){return t},setActiveFeature:function(e){t=e},resetActiveFeature:function(){t=void 0}}}(),uiManager:S(b,N,v,d,o,{geometryTypes:e.dataset.geometrytypes}),interactPlugin:C,drawPlugin:M})}function y(t,e,n){switch(t.geometry.type){case"Polygon":e.addFeature(a({},t,c));break;case"LineString":e.addFeature(a({},t,u));break;case"Point":n.addMarker(t.id,t.geometry.coordinates)}}function b(t,e,n=!1,r=!1){return`<dl class="govuk-summary-list">\n ${t.map((t,o)=>k(t,o,e,n,r)).join("\n")}\n </dl>`}function w(t,e){e.fitBounds(o(t))}function k(t,e,n,r=!1,o=!1){const i=t.geometry.coordinates.flat(2),a=[];for(let l=0;l<i.length;l+=2)a.push(i.slice(l,l+2).join(", "));const s=a.map(t=>`<li>${t}</li>`).join("");return`<div class="govuk-summary-list__row govuk-summary-list__row--no-border">\n <dt class="govuk-summary-list__key">\n <div class="govuk-form-group">\n <label class="govuk-label govuk-label--s" ${o?"":`for="description_${e}"`}>Location ${e+1} description</label>\n ${o?`<p class="govuk-body govuk-!-margin-bottom-0">${t.properties.description}</p>`:`<input class="govuk-input govuk-!-width-two-thirds" type="text" id="description_${e}" value="${t.properties.description}" data-id="${t.id}">`}\n </div>\n </dt>\n <dd class="govuk-summary-list__actions">\n <ul class="govuk-summary-list__actions-list">${o?`<li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state" href="#${n}" data-action="focus" data-id="${t.id}">Show<span class="govuk-visually-hidden"> location</span></a>\n</li>`:`<li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state ${r?"govuk-link--disabled":""}" href="#${n}" data-action="edit" data-id="${t.id}"\n data-type="${t.geometry.type}">Update<span class="govuk-visually-hidden"> location</span></a>\n</li><li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state ${r?"govuk-link--disabled":""}" href="#" data-action="delete" data-id="${t.id}"\n data-type="${t.geometry.type}">Delete<span class="govuk-visually-hidden"> location</span></a>\n</li>`}</ul>\n </dd>\n</div>\n<div class="govuk-summary-list__row">\n <details class="govuk-details govuk-!-margin-bottom-2">\n <summary class="govuk-details__summary">\n <span class="govuk-details__summary-text">Coordinates</span>\n </summary>\n <div class="govuk-details__text">\n <dl class="govuk-summary-list">\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Type</dt>\n <dd class="govuk-summary-list__value">${d[t.geometry.type]}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Centre grid reference</dt>\n <dd class="govuk-summary-list__value">${t.properties.centroidGridReference}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">First point grid reference</dt>\n <dd class="govuk-summary-list__value">${t.properties.coordinateGridReference}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Detailed coordinates</dt>\n <dd class="govuk-summary-list__value">\n <ol class="govuk-list govuk-list--number">${s}</ol>\n </dd>\n </div>\n </dl>\n </div>\n </details>\n</div>`}function $(){return window.crypto.randomUUID()}function E(t){const{geometry:e}=t;function n(t){t[0]=+t[0].toFixed(7),t[1]=+t[1].toFixed(7)}"Point"===e.type?n(e.coordinates):"LineString"===e.type?e.coordinates.forEach(n):e.coordinates.flat().forEach(n)}function S(t,e,n,r,o,i){function a(){return null!=i&&i.geometryTypes?i.geometryTypes.split(","):["point","line","shape"]}const s=function(t,e){return function(){e.value=JSON.stringify(t.features,null,2)}}(t,o),l=function(t,e,n,r){return function(o=!1){const i=b(t.features,e,o);n.innerHTML=i,r()}}(t,n,r,s);return{renderList:l,renderValue:s,listEl:r,toggleActionButtons:function(t){const n=a();n.includes("point")&&e.toggleButtonState("btnAddPoint","hidden",t),n.includes("shape")&&e.toggleButtonState("btnAddPolygon","hidden",t),n.includes("line")&&e.toggleButtonState("btnAddLine","hidden",t)},focusDescriptionInput:function(){const t=r.querySelectorAll("input");if(t.length){const e=t.item(t.length-1);e.focus(),e.select()}},getAllowableGeometryTypes:a}}},559:(t,e,n)=>{n.d(e,{EVENTS:()=>q,centerMap:()=>U,createMap:()=>H,defaultConfig:()=>B,eastingNorthingToLatLong:()=>P,formSubmitFactory:()=>W,getCentroidGridRef:()=>G,getCoordinateGridRef:()=>D,initMaps:()=>z,latLongToEastingNorthing:()=>I,latLongToOsGridRef:()=>R,makeTileRequestTransformer:()=>V,osGridRefToLatLong:()=>j}),n.r(e);function r(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}Math.PI;var o=n(356);function i(t,e={}){let n=0,i=0,a=0;return(0,o.Fh)(t,function(t){n+=t[0],i+=t[1],a++},!0),function(t,e,n={}){if(!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!r(t[0])||!r(t[1]))throw new Error("coordinates must contain numbers");return function(t,e,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}({type:"Point",coordinates:t},e,n)}([n/a,i/a],e.properties)}let a=" ";class s{static get separator(){return a}static set separator(t){a=t}static parse(t){if(!isNaN(parseFloat(t))&&isFinite(t))return Number(t);const e=String(t).trim().replace(/^-/,"").replace(/[NSEW]$/i,"").split(/[^0-9.,]+/);if(""==e[e.length-1]&&e.splice(e.length-1),""==e)return NaN;let n=null;switch(e.length){case 3:n=e[0]/1+e[1]/60+e[2]/3600;break;case 2:n=e[0]/1+e[1]/60;break;case 1:n=e[0];break;default:return NaN}return/^-|[WS]$/i.test(t.trim())&&(n=-n),Number(n)}static toDms(t,e="d",n=void 0){if(isNaN(t))return null;if("string"==typeof t&&""==t.trim())return null;if("boolean"==typeof t)return null;if(t==1/0)return null;if(null==t)return null;if(void 0===n)switch(e){case"d":case"deg":n=4;break;case"dm":case"deg+min":n=2;break;case"dms":case"deg+min+sec":n=0;break;default:e="d",n=4}t=Math.abs(t);let r=null,o=null,i=null,a=null;switch(e){default:case"d":case"deg":o=t.toFixed(n),o<100&&(o="0"+o),o<10&&(o="0"+o),r=o+"°";break;case"dm":case"deg+min":o=Math.floor(t),i=(60*t%60).toFixed(n),60==i&&(i=(0).toFixed(n),o++),o=("000"+o).slice(-3),i<10&&(i="0"+i),r=o+"°"+s.separator+i+"′";break;case"dms":case"deg+min+sec":o=Math.floor(t),i=Math.floor(3600*t/60)%60,a=(3600*t%60).toFixed(n),60==a&&(a=(0).toFixed(n),i++),60==i&&(i=0,o++),o=("000"+o).slice(-3),i=("00"+i).slice(-2),a<10&&(a="0"+a),r=o+"°"+s.separator+i+"′"+s.separator+a+"″"}return r}static toLat(t,e,n){const r=s.toDms(s.wrap90(t),e,n);return null===r?"–":r.slice(1)+s.separator+(t<0?"S":"N")}static toLon(t,e,n){const r=s.toDms(s.wrap180(t),e,n);return null===r?"–":r+s.separator+(t<0?"W":"E")}static toBrng(t,e,n){const r=s.toDms(s.wrap360(t),e,n);return null===r?"–":r.replace("360","0")}static fromLocale(t){const e=123456.789.toLocaleString(),n={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(n.thousands,"⁜").replace(n.decimal,".").replace("⁜",",")}static toLocale(t){const e=123456.789.toLocaleString(),n={thousands:e.slice(3,4),decimal:e.slice(7,8)};return t.replace(/,([0-9])/,"⁜$1").replace(".",n.decimal).replace("⁜",n.thousands)}static compassPoint(t,e=3){if(![1,2,3].includes(Number(e)))throw new RangeError(`invalid precision ‘${e}’`);t=s.wrap360(t);const n=4*2**(e-1);return["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.round(t*n/360)%n*16/n]}static wrap90(t){if(-90<=t&&t<=90)return t;const e=t;return 1*Math.abs(((e-90)%360+360)%360-180)-90}static wrap180(t){if(-180<=t&&t<=180)return t;const e=360;return((360*t/e-180)%e+e)%e-180}static wrap360(t){if(0<=t&&t<360)return t;const e=360;return(360*t/e%e+e)%e}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const l=s;class u{constructor(t,e,n){if(isNaN(t)||isNaN(e)||isNaN(n))throw new TypeError(`invalid vector [${t},${e},${n}]`);this.x=Number(t),this.y=Number(e),this.z=Number(n)}get length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}plus(t){if(!(t instanceof u))throw new TypeError("v is not Vector3d object");return new u(this.x+t.x,this.y+t.y,this.z+t.z)}minus(t){if(!(t instanceof u))throw new TypeError("v is not Vector3d object");return new u(this.x-t.x,this.y-t.y,this.z-t.z)}times(t){if(isNaN(t))throw new TypeError(`invalid scalar value ‘${t}’`);return new u(this.x*t,this.y*t,this.z*t)}dividedBy(t){if(isNaN(t))throw new TypeError(`invalid scalar value ‘${t}’`);return new u(this.x/t,this.y/t,this.z/t)}dot(t){if(!(t instanceof u))throw new TypeError("v is not Vector3d object");return this.x*t.x+this.y*t.y+this.z*t.z}cross(t){if(!(t instanceof u))throw new TypeError("v is not Vector3d object");const e=this.y*t.z-this.z*t.y,n=this.z*t.x-this.x*t.z,r=this.x*t.y-this.y*t.x;return new u(e,n,r)}negate(){return new u(-this.x,-this.y,-this.z)}unit(){const t=this.length;if(1==t)return this;if(0==t)return this;const e=this.x/t,n=this.y/t,r=this.z/t;return new u(e,n,r)}angleTo(t,e=void 0){if(!(t instanceof u))throw new TypeError("v is not Vector3d object");if(!(e instanceof u||null==e))throw new TypeError("n is not Vector3d object");const n=null==e||this.cross(t).dot(e)>=0?1:-1,r=this.cross(t).length*n,o=this.dot(t);return Math.atan2(r,o)}rotateAround(t,e){if(!(t instanceof u))throw new TypeError("axis is not Vector3d object");const n=e.toRadians(),r=this.unit(),o=t.unit(),i=Math.sin(n),a=Math.cos(n),s=1-a,l=o.x,c=o.y,d=o.z,h=[[s*l*l+a,s*l*c-i*d,s*l*d+i*c],[s*l*c+i*d,s*c*c+a,s*c*d-i*l],[s*l*d-i*c,s*c*d+i*l,s*d*d+a]],m=[h[0][0]*r.x+h[0][1]*r.y+h[0][2]*r.z,h[1][0]*r.x+h[1][1]*r.y+h[1][2]*r.z,h[2][0]*r.x+h[2][1]*r.y+h[2][2]*r.z];return new u(m[0],m[1],m[2])}toString(t=3){return`[${this.x.toFixed(t)},${this.y.toFixed(t)},${this.z.toFixed(t)}]`}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const c=u,d={WGS84:{a:6378137,b:6356752.314245,f:1/298.257223563}},h={WGS84:{ellipsoid:d.WGS84}};Object.freeze(d.WGS84),Object.freeze(h.WGS84);class m{constructor(t,e,n=0){if(isNaN(t)||null==t)throw new TypeError(`invalid lat ‘${t}’`);if(isNaN(e)||null==e)throw new TypeError(`invalid lon ‘${e}’`);if(isNaN(n)||null==n)throw new TypeError(`invalid height ‘${n}’`);this._lat=l.wrap90(Number(t)),this._lon=l.wrap180(Number(e)),this._height=Number(n)}get lat(){return this._lat}get latitude(){return this._lat}set lat(t){if(this._lat=isNaN(t)?l.wrap90(l.parse(t)):l.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${t}’`)}set latitude(t){if(this._lat=isNaN(t)?l.wrap90(l.parse(t)):l.wrap90(Number(t)),isNaN(this._lat))throw new TypeError(`invalid latitude ‘${t}’`)}get lon(){return this._lon}get lng(){return this._lon}get longitude(){return this._lon}set lon(t){if(this._lon=isNaN(t)?l.wrap180(l.parse(t)):l.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${t}’`)}set lng(t){if(this._lon=isNaN(t)?l.wrap180(l.parse(t)):l.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${t}’`)}set longitude(t){if(this._lon=isNaN(t)?l.wrap180(l.parse(t)):l.wrap180(Number(t)),isNaN(this._lon))throw new TypeError(`invalid longitude ‘${t}’`)}get height(){return this._height}set height(t){if(this._height=Number(t),isNaN(this._height))throw new TypeError(`invalid height ‘${t}’`)}get datum(){return this._datum}set datum(t){this._datum=t}static get ellipsoids(){return d}static get datums(){return h}static parse(...t){if(0==t.length)throw new TypeError("invalid (empty) point");let e,n,r;if("object"==typeof t[0]&&(1==t.length||!isNaN(parseFloat(t[1])))){const o=t[0];if("Point"==o.type&&Array.isArray(o.coordinates)?([n,e,r]=o.coordinates,r=r||0):(null!=o.latitude&&(e=o.latitude),null!=o.lat&&(e=o.lat),null!=o.longitude&&(n=o.longitude),null!=o.lng&&(n=o.lng),null!=o.lon&&(n=o.lon),null!=o.height&&(r=o.height),e=l.wrap90(l.parse(e)),n=l.wrap180(l.parse(n))),null!=t[1]&&(r=t[1]),isNaN(e)||isNaN(n))throw new TypeError(`invalid point ‘${JSON.stringify(t[0])}’`)}if("string"==typeof t[0]&&2==t[0].split(",").length&&([e,n]=t[0].split(","),e=l.wrap90(l.parse(e)),n=l.wrap180(l.parse(n)),r=t[1]||0,isNaN(e)||isNaN(n)))throw new TypeError(`invalid point ‘${t[0]}’`);if(null==e&&null==n&&([e,n]=t,e=l.wrap90(l.parse(e)),n=l.wrap180(l.parse(n)),r=t[2]||0,isNaN(e)||isNaN(n)))throw new TypeError(`invalid point ‘${t.toString()}’`);return new this(e,n,r)}toCartesian(){const t=this.datum?this.datum.ellipsoid:this.referenceFrame?this.referenceFrame.ellipsoid:d.WGS84,e=this.lat.toRadians(),n=this.lon.toRadians(),r=this.height,{a:o,f:i}=t,a=Math.sin(e),s=Math.cos(e),l=Math.sin(n),u=Math.cos(n),c=2*i-i*i,h=o/Math.sqrt(1-c*a*a);return new p((h+r)*s*u,(h+r)*s*l,(h*(1-c)+r)*a)}equals(t){if(!(t instanceof m))throw new TypeError(`invalid point ‘${t}’`);return!(Math.abs(this.lat-t.lat)>Number.EPSILON||Math.abs(this.lon-t.lon)>Number.EPSILON||Math.abs(this.height-t.height)>Number.EPSILON||this.datum!=t.datum||this.referenceFrame!=t.referenceFrame||this.epoch!=t.epoch)}toString(t="d",e=void 0,n=null){if(!["d","dm","dms","n"].includes(t))throw new RangeError(`invalid format ‘${t}’`);const r=(this.height>=0?" +":" ")+this.height.toFixed(n)+"m";return"n"==t?(null==e&&(e=4),`${this.lat.toFixed(e)}, ${this.lon.toFixed(e)}${null==n?"":r}`):`${l.toLat(this.lat,t,e)}, ${l.toLon(this.lon,t,e)}${null==n?"":r}`}}class p extends c{constructor(t,e,n){super(t,e,n)}toLatLon(t=d.WGS84){if(!t||!t.a)throw new TypeError(`invalid ellipsoid ‘${t}’`);const{x:e,y:n,z:r}=this,{a:o,b:i,f:a}=t,s=2*a-a*a,l=s/(1-s),u=Math.sqrt(e*e+n*n),c=i*r/(o*u)*(1+l*i/Math.sqrt(u*u+r*r)),h=c/Math.sqrt(1+c*c),p=h/c,g=isNaN(p)?0:Math.atan2(r+l*i*h*h*h,u-s*o*p*p*p),f=Math.atan2(n,e),v=Math.sin(g),y=u*Math.cos(g)+r*v-o*o/(o/Math.sqrt(1-s*v*v));return new m(g.toDegrees(),f.toDegrees(),y)}toString(t=0){return`[${this.x.toFixed(t)},${this.y.toFixed(t)},${this.z.toFixed(t)}]`}}const g={WGS84:{a:6378137,b:6356752.314245,f:1/298.257223563},Airy1830:{a:6377563.396,b:6356256.909,f:1/299.3249646},AiryModified:{a:6377340.189,b:6356034.448,f:1/299.3249646},Bessel1841:{a:6377397.155,b:6356078.962818,f:1/299.1528128},Clarke1866:{a:6378206.4,b:6356583.8,f:1/294.978698214},Clarke1880IGN:{a:6378249.2,b:6356515,f:1/293.466021294},GRS80:{a:6378137,b:6356752.31414,f:1/298.257222101},Intl1924:{a:6378388,b:6356911.946,f:1/297},WGS72:{a:6378135,b:6356750.5,f:1/298.26}},f={ED50:{ellipsoid:g.Intl1924,transform:[89.5,93.8,123.1,-1.2,0,0,.156]},ETRS89:{ellipsoid:g.GRS80,transform:[0,0,0,0,0,0,0]},Irl1975:{ellipsoid:g.AiryModified,transform:[-482.53,130.596,-564.557,-8.15,1.042,.214,.631]},NAD27:{ellipsoid:g.Clarke1866,transform:[8,-160,-176,0,0,0,0]},NAD83:{ellipsoid:g.GRS80,transform:[.9956,-1.9103,-.5215,-62e-5,.025915,.009426,.011599]},NTF:{ellipsoid:g.Clarke1880IGN,transform:[168,60,-320,0,0,0,0]},OSGB36:{ellipsoid:g.Airy1830,transform:[-446.448,125.157,-542.06,20.4894,-.1502,-.247,-.8421]},Potsdam:{ellipsoid:g.Bessel1841,transform:[-582,-105,-414,-8.3,1.04,.35,-3.08]},TokyoJapan:{ellipsoid:g.Bessel1841,transform:[148,-507,-685,0,0,0,0]},WGS72:{ellipsoid:g.WGS72,transform:[0,0,-4.5,-.22,0,0,.554]},WGS84:{ellipsoid:g.WGS84,transform:[0,0,0,0,0,0,0]}};Object.keys(g).forEach(t=>Object.freeze(g[t])),Object.keys(f).forEach(t=>{Object.freeze(f[t]),Object.freeze(f[t].transform)});class v extends m{constructor(t,e,n=0,r=f.WGS84){if(!r||null==r.ellipsoid)throw new TypeError(`unrecognised datum ‘${r}’`);super(t,e,n),this._datum=r}get datum(){return this._datum}static get ellipsoids(){return g}static get datums(){return f}static parse(...t){let e=f.WGS84;if((4==t.length||3==t.length&&"object"==typeof t[2])&&(e=t.pop()),!e||null==e.ellipsoid)throw new TypeError(`unrecognised datum ‘${e}’`);const n=super.parse(...t);return n._datum=e,n}convertDatum(t){if(!t||null==t.ellipsoid)throw new TypeError(`unrecognised datum ‘${t}’`);return this.toCartesian().convertDatum(t).toLatLon()}toCartesian(){const t=super.toCartesian();return new y(t.x,t.y,t.z,this.datum)}}class y extends p{constructor(t,e,n,r=void 0){if(r&&null==r.ellipsoid)throw new TypeError(`unrecognised datum ‘${r}’`);super(t,e,n),r&&(this._datum=r)}get datum(){return this._datum}set datum(t){if(!t||null==t.ellipsoid)throw new TypeError(`unrecognised datum ‘${t}’`);this._datum=t}toLatLon(t=void 0){t&&(console.info("datum parameter to Cartesian_Datum.toLatLon is deprecated: set datum before calling toLatLon()"),this.datum=t);const e=this.datum||f.WGS84;if(!e||null==e.ellipsoid)throw new TypeError(`unrecognised datum ‘${e}’`);const n=super.toLatLon(e.ellipsoid);return new v(n.lat,n.lon,n.height,this.datum)}convertDatum(t){if(!t||null==t.ellipsoid)throw new TypeError(`unrecognised datum ‘${t}’`);if(!this.datum)throw new TypeError("cartesian coordinate has no datum");let e=null,n=null;null!=this.datum&&this.datum!=f.WGS84||(e=this,n=t.transform),t==f.WGS84&&(e=this,n=this.datum.transform.map(t=>-t)),null==n&&(e=this.convertDatum(f.WGS84),n=t.transform);const r=e.applyTransform(n);return r.datum=t,r}applyTransform(t){const{x:e,y:n,z:r}=this,o=t[0],i=t[1],a=t[2],s=t[3]/1e6+1,l=(t[4]/3600).toRadians(),u=(t[5]/3600).toRadians(),c=(t[6]/3600).toRadians();return new y(o+e*s-n*c+r*u,i+e*c+n*s-r*l,a-e*u+n*l+r*s)}}const b={trueOrigin:{lat:49,lon:-2},falseOrigin:{easting:-4e5,northing:1e5},scaleFactor:.9996012717,ellipsoid:v.ellipsoids.Airy1830};class w{constructor(t,e){if(this.easting=Number(t),this.northing=Number(e),isNaN(t)||this.easting<0||this.easting>7e5)throw new RangeError(`invalid easting ‘${t}’`);if(isNaN(e)||this.northing<0||this.northing>13e5)throw new RangeError(`invalid northing ‘${e}’`)}toLatLon(t=v.datums.WGS84){const{easting:e,northing:n}=this,{a:r,b:o}=b.ellipsoid,i=b.trueOrigin.lat.toRadians(),a=b.trueOrigin.lon.toRadians(),s=-b.falseOrigin.easting,l=-b.falseOrigin.northing,u=b.scaleFactor,c=1-o*o/(r*r),d=(r-o)/(r+o),h=d*d,m=d*d*d;let p=i,g=0;do{p=(n-l-g)/(r*u)+p,g=o*u*((1+d+5/4*h+5/4*m)*(p-i)-(3*d+3*d*d+21/8*m)*Math.sin(p-i)*Math.cos(p+i)+(15/8*h+15/8*m)*Math.sin(2*(p-i))*Math.cos(2*(p+i))-35/24*m*Math.sin(3*(p-i))*Math.cos(3*(p+i)))}while(Math.abs(n-l-g)>=1e-5);const f=Math.cos(p),y=Math.sin(p),w=r*u/Math.sqrt(1-c*y*y),$=r*u*(1-c)/Math.pow(1-c*y*y,1.5),E=w/$-1,S=Math.tan(p),M=S*S,L=M*M,x=1/f,A=w*w*w,N=A*w*w,C=e-s,_=C*C,T=_*C,F=_*_,O=T*_;p=p-S/(2*$*w)*_+S/(24*$*A)*(5+3*M+E-9*M*E)*F-S/(720*$*N)*(61+90*M+45*L)*(F*_);const I=a+x/w*C-x/(6*A)*(w/$+2*M)*T+x/(120*N)*(5+28*M+24*L)*O-x/(N*w*w*5040)*(61+662*M+1320*L+L*M*720)*(O*_);let P=new k(p.toDegrees(),I.toDegrees(),0,v.datums.OSGB36);return t!=v.datums.OSGB36&&(P=P.convertDatum(t),P=new k(P.lat,P.lon,P.height,P.datum)),P}static parse(t){let e=(t=String(t).trim()).match(/^(\d+),\s*(\d+)$/);if(e)return new w(e[1],e[2]);if(e=t.match(/^[HNST][ABCDEFGHJKLMNOPQRSTUVWXYZ]\s*[0-9]+\s*[0-9]+$/i),!e)throw new Error(`invalid grid reference ‘${t}’`);let n=t.toUpperCase().charCodeAt(0)-"A".charCodeAt(0),r=t.toUpperCase().charCodeAt(1)-"A".charCodeAt(0);n>7&&n--,r>7&&r--;const o=(n-2)%5*5+r%5,i=19-5*Math.floor(n/5)-Math.floor(r/5);let a=t.slice(2).trim().split(/\s+/);if(1==a.length&&(a=[a[0].slice(0,a[0].length/2),a[0].slice(a[0].length/2)]),a[0].length!=a[1].length)throw new Error(`invalid grid reference ‘${t}’`);a[0]=a[0].padEnd(5,"0"),a[1]=a[1].padEnd(5,"0");const s=o+a[0],l=i+a[1];return new w(s,l)}toString(t=10){if(![0,2,4,6,8,10,12,14,16].includes(Number(t)))throw new RangeError(`invalid precision ‘${t}’`);let{easting:e,northing:n}=this;if(0==t){const t={useGrouping:!1,minimumIntegerDigits:6,maximumFractionDigits:3};return`${e.toLocaleString("en",t)},${n.toLocaleString("en",t)}`}const r=Math.floor(e/1e5),o=Math.floor(n/1e5);let i=19-o-(19-o)%5+Math.floor((r+10)/5),a=5*(19-o)%25+r%5;i>7&&i++,a>7&&a++;const s=String.fromCharCode(i+"A".charCodeAt(0),a+"A".charCodeAt(0));return e=Math.floor(e%1e5/Math.pow(10,5-t/2)),n=Math.floor(n%1e5/Math.pow(10,5-t/2)),e=e.toString().padStart(t/2,"0"),n=n.toString().padStart(t/2,"0"),`${s} ${e} ${n}`}}class k extends v{toOsGrid(){const t=this.datum==v.datums.OSGB36?this:this.convertDatum(v.datums.OSGB36),e=t.lat.toRadians(),n=t.lon.toRadians(),{a:r,b:o}=b.ellipsoid,i=b.trueOrigin.lat.toRadians(),a=b.trueOrigin.lon.toRadians(),s=-b.falseOrigin.easting,l=-b.falseOrigin.northing,u=b.scaleFactor,c=1-o*o/(r*r),d=(r-o)/(r+o),h=d*d,m=d*d*d,p=Math.cos(e),g=Math.sin(e),f=r*u/Math.sqrt(1-c*g*g),y=r*u*(1-c)/Math.pow(1-c*g*g,1.5),k=f/y-1,$=o*u*((1+d+5/4*h+5/4*m)*(e-i)-(3*d+3*d*d+21/8*m)*Math.sin(e-i)*Math.cos(e+i)+(15/8*h+15/8*m)*Math.sin(2*(e-i))*Math.cos(2*(e+i))-35/24*m*Math.sin(3*(e-i))*Math.cos(3*(e+i))),E=p*p*p,S=E*p*p,M=Math.tan(e)*Math.tan(e),L=M*M,x=n-a,A=x*x,N=A*x,C=N*x,_=C*x;let T=$+l+f/2*g*p*A+f/24*g*E*(5-M+9*k)*C+f/720*g*S*(61-58*M+L)*(_*x),F=s+f*p*x+f/6*E*(f/y-M)*N+f/120*S*(5-18*M+L+14*k-58*M*k)*_;T=Number(T.toFixed(3)),F=Number(F.toFixed(3));try{return new w(F,T)}catch(O){throw new Error(`${O.message} from (${t.lat.toFixed(6)},${t.lon.toFixed(6)}).toOsGrid()`)}}convertDatum(t){const e=super.convertDatum(t);return new k(e.lat,e.lon,e.height,e.datum)}}var $=n(6);const E="input.govuk-input";function S(t,e){const n=t.trim()&&Number(t.trim()),r=e.trim()&&Number(e.trim());return n&&r&&n>=49.85&&n<=60.859&&r>=-13.687&&r<=1.767?{valid:!0,value:{lat:n,long:r}}:{valid:!1}}function M(t,e){const n=t.trim()&&Number(t.trim()),r=e.trim()&&Number(e.trim());return n&&r&&n>=0&&n<=7e5&&r>=0&&r<=13e5?{valid:!0,value:{easting:n,northing:r}}:{valid:!1}}function L(t){if(!t)return{valid:!1};const e=/^((([sS]|[nN])[a-hA-Hj-zJ-Z])|(([tT]|[oO])[abfglmqrvwABFGLMQRVW])|([hH][l-zL-Z])|([jJ][lmqrvwLMQRVW]))\s?(([0-9]{3})\s?([0-9]{3})|([0-9]{4})\s?([0-9]{4})|([0-9]{5})\s?([0-9]{5}))$/.exec(t);return null===e?{valid:!1}:{valid:!0,value:e[0]}}function x(t){const e=t.querySelectorAll(E);if(2!==e.length)throw new Error("Expected 2 inputs for lat and long");return{latInput:e[0],longInput:e[1]}}function A(t){const e=t.querySelectorAll(E);if(2!==e.length)throw new Error("Expected 2 inputs for easting and northing");return{eastingInput:e[0],northingInput:e[1]}}function N(t){const e=t.querySelector(E);if(null===e)throw new Error("Expected 1 input for osgridref");return e}function C(t){return{zoom:"16",center:t,markers:[{id:"location",coords:t}]}}function _(t,e,n){var r;if(!(e instanceof HTMLDivElement))return;const o=e.querySelector(".app-location-field-inputs");if(!(o instanceof HTMLDivElement))return;const i=e.dataset.locationtype;if(!i||!["latlongfield","eastingnorthingfield","osgridreffield"].includes(i))return;const a=document.createElement("div"),s=`map_${n}`;a.setAttribute("id",s),a.setAttribute("class","map-container");const l=null!=(r=function(t){switch(t.dataset.locationtype){case"latlongfield":return function(t){const{latInput:e,longInput:n}=x(t),r=S(e.value,n.value);if(r.valid)return C([r.value.long,r.value.lat])}(t);case"eastingnorthingfield":return function(t){const{eastingInput:e,northingInput:n}=A(t),r=M(e.value,n.value);if(!r.valid)return;const o=P(r.value);return C([o.long,o.lat])}(t);case"osgridreffield":return function(t){const e=L(N(t).value);if(!e.valid)return;const n=j(e.value);return C([n.long,n.lat])}(t);default:throw new Error("Not implemented")}}(e))?r:B;o.after(a);const{map:u,interactPlugin:c}=H(s,l,t);u.on(q.mapReady,function(t){switch(i){case"latlongfield":!function(t,e,n){const{latInput:r,longInput:o}=x(t);function i(){const t=S(r.value,o.value);if(t.valid){const r=[t.value.long,t.value.lat];U(e,n,r)}}e.on(q.interactMarkerChange,function(t){r.value=t.coords[1].toFixed(7),o.value=t.coords[0].toFixed(7)}),r.addEventListener("change",i,!1),o.addEventListener("change",i,!1)}(e,u,t.map);break;case"eastingnorthingfield":!function(t,e,n){const{eastingInput:r,northingInput:o}=A(t);function i(){const t=M(r.value,o.value);if(t.valid){const r=P(t.value),o=[r.long,r.lat];U(e,n,o)}}e.on(q.interactMarkerChange,function(t){const e=I({lat:t.coords[1],long:t.coords[0]});r.value=e.easting.toFixed(0),o.value=e.northing.toFixed(0)}),r.addEventListener("change",i,!1),o.addEventListener("change",i,!1)}(e,u,t.map);break;case"osgridreffield":!function(t,e,n){const r=N(t);e.on(q.interactMarkerChange,function(t){const e=R({lat:t.coords[1],long:t.coords[0]});r.value=e}),r.addEventListener("change",function(){const t=L(r.value);if(t.valid){const r=j(t.value),o=[r.long,r.lat];U(e,n,o)}},!1)}(e,u,t.map);break;default:throw new Error("Not implemented")}u.addPanel("info",{showLabel:!0,label:"How to use the map",mobile:{slot:"drawer",open:!0,dismissible:!0,modal:!1},tablet:{slot:"drawer",open:!0,dismissible:!0,modal:!1},desktop:{slot:"drawer",open:!0,dismissible:!0,modal:!1},html:"<ul><li>Search for a place or postcode</li><li>Use the + and - icons to zoom in and out</li><li>Use a mouse or keyboard to centre the point at the location</li><li>Click to add the location to the map</li></ul>"}),c.enable()})}function T(){return T=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},T.apply(null,arguments)}const F=169,O={VTS_OUTDOOR_URL:"/api/maps/vts/OS_VTS_3857_Outdoor.json",VTS_DARK_URL:"/api/maps/vts/OS_VTS_3857_Dark.json",VTS_BLACK_AND_WHITE_URL:"/api/maps/vts/OS_VTS_3857_Black_and_White.json",VTS_AERIAL_URL:"/api/maps/vts/esri-aerial.json"};function I({lat:t,long:e}){return new k(t,e).toOsGrid()}function P({easting:t,northing:e}){const n=new w(t,e).toLatLon();return{lat:n.latitude,long:n.longitude}}function R({lat:t,long:e}){return new k(t,e).toOsGrid().toString()}function j(t){const e=w.parse(t).toLatLon();return{lat:e.latitude,long:e.longitude}}function D(t){if("Point"===t.geometry.type){const[e,n]=t.geometry.coordinates;return new k(n,e).toOsGrid().toString()}if("LineString"===t.geometry.type){const[e,n]=t.geometry.coordinates[0];return new k(n,e).toOsGrid().toString()}{const[e,n]=t.geometry.coordinates[0][0];return new k(n,e).toOsGrid().toString()}}function G(t){if("Point"===t.geometry.type){const[e,n]=t.geometry.coordinates;return new k(n,e).toOsGrid().toString()}{const e=i(t),[n,r]=e.geometry.coordinates;return new k(r,n).toOsGrid().toString()}}const B={zoom:"6",center:[-2.421975,53.825564]},q={mapReady:"map:ready",interactMarkerChange:"interact:markerchange",drawReady:"draw:ready",drawCreated:"draw:created",drawEdited:"draw:edited",drawCancelled:"draw:cancelled"};function W(t){return function(e){e.submitter instanceof HTMLButtonElement&&t.includes(e.submitter)||e.preventDefault()}}function z(t={}){const{assetPath:e="/assets",apiPath:n="/form/api",data:r=O}=t,o=document.querySelectorAll(".app-location-field"),i=document.querySelectorAll(".app-geospatial-field");if(o.length){const t=o[0].closest("form");if(null===t)return;const e=Array.from(t.querySelectorAll("button"));t.addEventListener("submit",W(e),!1)}if(i.length){const t=i[0].closest("form");if(null===t)return;const e=Array.from(t.querySelectorAll("button"));t.addEventListener("submit",W(e),!1)}o.forEach((t,o)=>{_({assetPath:e,apiPath:n,data:r},t,o)}),i.forEach((t,o)=>{(0,$.processGeospatial)({assetPath:e,apiPath:n,data:r},t,o)})}function V(t){return function(e,n){if(e.startsWith("https://api.os.uk")){if("Tile"===n)return{url:e.replace("https://api.os.uk/maps/vector/v1/vts",`${window.location.origin}${t}`),headers:{}};if("Style"!==n)return{url:`${t}/map-proxy?url=${encodeURIComponent(e)}`,headers:{}}}if(e.startsWith("https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main")){const n=e.substring(84);return{url:`${t}/maps/vts${n}`,headers:{}}}return{url:e,headers:{}}}}function H(t,e,n){var r;const{assetPath:o,apiPath:i,data:a=O}=n,s="Ordnance survey logo",l=window.defra,u=l.interactPlugin({markerColor:{outdoor:"#ff0000",dark:"#00ff00"},interactionModes:["placeMarker"],multiSelect:!1});return{map:new l.InteractiveMap(t,T({enableFullscreen:!0,autoColorScheme:!1,mapProvider:l.maplibreProvider(),reverseGeocodeProvider:l.openNamesProvider({url:`${i}/reverse-geocode-proxy?easting={easting}&northing={northing}`}),behaviour:"inline",minZoom:6,maxZoom:18,containerHeight:"400px",enableZoomControls:!0,transformRequest:V(i)},e,{plugins:[l.mapStylesPlugin({mapStyles:[{id:"outdoor",label:"Outdoor",url:a.VTS_OUTDOOR_URL,thumbnail:`${o}/interactive-map/assets/images/outdoor-map-thumb.jpg`,logo:`${o}/interactive-map/assets/images/os-logo.svg`,logoAltText:s,attribution:`Contains OS data ${String.fromCodePoint(F)} Crown copyright and database rights ${(new Date).getFullYear()}`,backgroundColor:"#f5f5f0"},{id:"dark",label:"Dark",url:a.VTS_DARK_URL,mapColorScheme:"dark",appColorScheme:"dark",thumbnail:`${o}/interactive-map/assets/images/dark-map-thumb.jpg`,logo:`${o}/interactive-map/assets/images/os-logo-white.svg`,logoAltText:s,attribution:`Contains OS data ${String.fromCodePoint(F)} Crown copyright and database rights ${(new Date).getFullYear()}`},{id:"black-and-white",label:"Black/White",url:a.VTS_BLACK_AND_WHITE_URL,thumbnail:`${o}/interactive-map/assets/images/black-and-white-map-thumb.jpg`,logo:`${o}/interactive-map/assets/images/os-logo-black.svg`,logoAltText:s,attribution:`Contains OS data ${String.fromCodePoint(F)} Crown copyright and database rights ${(new Date).getFullYear()}`},{id:"aerial",label:"Aerial",url:a.VTS_AERIAL_URL,thumbnail:`${o}/interactive-map/assets/images/aerial-map-thumb.jpg`,logo:`${o}/interactive-map/assets/images/esri-logo.png`,logoAltText:"Powered by Esri",attribution:`Tiles ${String.fromCodePoint(F)} Esri — Source: Esri, Maxar, Earthstar Geographics, and the GIS User Community ${(new Date).getFullYear()}`}]}),u,l.searchPlugin({osNamesURL:`${i}/geocode-proxy?query={query}`,width:"300px",showMarker:!1}),l.scaleBarPlugin({units:"metric"}),...null!=(r=e.plugins)?r:[]]})),interactPlugin:u}}function U(t,e,n){t.addMarker("location",n),e.flyTo({center:n,zoom:14,essential:!0})}},356:(t,e,n)=>{function r(t,e,n){if(null!==t)for(var o,i,a,s,l,u,c,d,h=0,m=0,p=t.type,g="FeatureCollection"===p,f="Feature"===p,v=g?t.features.length:1,y=0;y<v;y++){l=(d=!!(c=g?t.features[y].geometry:f?t.geometry:t)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var b=0;b<l;b++){var w=0,k=0;if(null!==(s=d?c.geometries[b]:c)){u=s.coordinates;var $=s.type;switch(h=!n||"Polygon"!==$&&"MultiPolygon"!==$?0:1,$){case null:break;case"Point":if(!1===e(u,m,y,w,k))return!1;m++,w++;break;case"LineString":case"MultiPoint":for(o=0;o<u.length;o++){if(!1===e(u[o],m,y,w,k))return!1;m++,"MultiPoint"===$&&w++}"LineString"===$&&w++;break;case"Polygon":case"MultiLineString":for(o=0;o<u.length;o++){for(i=0;i<u[o].length-h;i++){if(!1===e(u[o][i],m,y,w,k))return!1;m++}"MultiLineString"===$&&w++,"Polygon"===$&&k++}"Polygon"===$&&w++;break;case"MultiPolygon":for(o=0;o<u.length;o++){for(k=0,i=0;i<u[o].length;i++){for(a=0;a<u[o][i].length-h;a++){if(!1===e(u[o][i][a],m,y,w,k))return!1;m++}k++}w++}break;case"GeometryCollection":for(o=0;o<s.geometries.length;o++)if(!1===r(s.geometries[o],e,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}n.d(e,{Fh:()=>r})}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var n=o[t]={exports:{}};return r[t](n,n.exports,i),n.exports}function a(t){const e=t.currentTarget;if("true"===e.dataset.debouncing)return t.preventDefault(),void t.stopImmediatePropagation();e.dataset.debouncing="true",setTimeout(()=>{delete e.dataset.debouncing},1e4)}function s(t){a(t)}function l(t){"Enter"!==t.key&&" "!==t.key||a(t)}i.m=r,e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.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);i.r(o);var a={};t=t||[null,e({}),e([]),e(e)];for(var s=2&r&&n;("object"==typeof s||"function"==typeof s)&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach(t=>a[t]=()=>n[t]);return a.default=()=>n,i.d(o,a),o},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,n)=>(i.f[n](t,e),e),[])),i.u=t=>"javascripts/vendor/accessible-autocomplete.min.js",i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},i.l=(t,e,r,o)=>{if(n[t])n[t].push(e);else{var a,s;if(void 0!==r)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var c=l[u];if(c.getAttribute("src")==t){a=c;break}}a||(s=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",i.nc&&a.setAttribute("nonce",i.nc),a.src=t),n[t]=[e];var d=(e,r)=>{a.onerror=a.onload=null,clearTimeout(h);var o=n[t];if(delete n[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(r)),e)return e(r)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),s&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;if("string"==typeof import.meta.url&&(t=import.meta.url),!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t+"../"})(),(()=>{var t={804:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,o)=>r=t[e]=[n,o]);n.push(r[2]=o);var a=i.p+i.u(e),s=new Error;i.l(a,n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,r[1](s)}},"chunk-"+e,e)}};var e=(e,n)=>{var r,o,a=n[0],s=n[1],l=n[2],u=0;if(a.some(e=>0!==t[e])){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);l&&l(i)}for(e&&e(n);u<a.length;u++)o=a[u],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0},n=self.webpackChunk=self.webpackChunk||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})();const u="aria-describedby",c="error-summary-title";function d(t,e,n){var r;const o=document.getElementById("uploadedFilesContainer"),i=o?o.closest("form"):null;if(!(i&&i instanceof HTMLFormElement))return;const a=i.querySelector("p.govuk-body");if(!a)return;const s=function(t,e){let n=null==t?void 0:t.querySelector("#statusInformation");if(!n){n=document.createElement("div"),n.id="statusInformation",n.className="govuk-visually-hidden",n.setAttribute("aria-live","polite");try{!function(t,e,n){var r;null!=e&&e.nextSibling&&e.parentNode===t?t.insertBefore(n,e.nextSibling):(null!=(r=null==e?void 0:e.parentNode)?r:t).appendChild(n)}(t,e,n)}catch(r){try{null==t||t.appendChild(n)}catch(o){document.body.appendChild(n)}}}return n}(i,a),l=n.querySelector('input[type="file"]');l&&l.setAttribute(u,"statusInformation");const c=function(t,e){let n=t.querySelector("dl.govuk-summary-list");if(!n){n=document.createElement("dl"),n.className="govuk-summary-list govuk-summary-list--long-key";const r=t.querySelector(".govuk-button-group");r?t.insertBefore(n,r):t.insertBefore(n,e.nextSibling)}return n}(i,a),d=document.querySelector(`[data-filename="${null==t?void 0:t.name}"]`);d&&d.remove();const h=function(t,e){var n,r;const o=document.createElement("div");return o.className="govuk-summary-list__row",o.setAttribute("data-filename",null!=(n=null==t?void 0:t.name)?n:""),o.innerHTML=`\n <dt class="govuk-summary-list__key">\n ${null!=(r=null==t?void 0:t.name)?r:""}\n </dt>\n <dd class="govuk-summary-list__value">\n <strong class="govuk-tag govuk-tag--yellow">${e}</strong>\n </dd>\n <dd class="govuk-summary-list__actions">\n </dd>\n `,o}(t,e);c.insertBefore(h,c.firstChild),s.textContent=`${null!=(r=null==t?void 0:t.name)?r:""} ${e}`}function h(t,e,n){if(document.querySelector(".govuk-error-summary"))return void(document.getElementById(c)?n.setAttribute(u,c):n.removeAttribute(u));e&&(e.innerHTML=`\n <div class="govuk-error-summary" data-module="govuk-error-summary">\n <div role="alert">\n <h2 class="govuk-error-summary__title" id="${c}">\n There is a problem\n </h2>\n <div class="govuk-error-summary__body">\n <ul class="govuk-list govuk-error-summary__list">\n <li>\n <a href="#file-upload">${t}</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n `,n.setAttribute(u,c));const r=n.closest(".govuk-form-group");if(r){r.classList.add("govuk-form-group--error"),n.classList.add("govuk-file-upload--error");const e=n.id;let o=document.getElementById(`${e}-error`);o||(o=document.createElement("p"),o.id=`${e}-error`,o.className="govuk-error-message",o.innerHTML=`<span class="govuk-visually-hidden">Error:</span> ${t}`,r.insertBefore(o,n)),n.setAttribute(u,`error-summary-title ${e}-error`)}}function m(){window.history.replaceState(null,"",window.location.href),window.location.href=window.location.pathname}function p(){var t;const e=document.querySelector('form:has(input[type="file"])'),n=e?e.querySelector('input[type="file"]'):null,r=e?e.querySelector(".upload-file-button"):null,o=null!=(t=Array.from(document.querySelectorAll("button.govuk-button")).find(t=>"Continue"===t.textContent.trim()))?t:null,i=document.querySelector(".govuk-error-summary-container");if(!e||!n||!r)return;const a=e;let s=[],l=!1;const u=a.dataset.uploadId;n.addEventListener("change",()=>{i&&(i.innerHTML=""),n.files&&n.files.length>0&&(s=Array.from(n.files))}),r.addEventListener("click",t=>{if(0===s.length)return t.preventDefault(),void h("Select a file",i,n);l?t.preventDefault():(l=!0,function(t,e,n,r,o){for(let i=o.length-1;i>=0;i--)d(o[i],"Uploading…",t);e.focus(),setTimeout(()=>{e.disabled=!0,n.disabled=!0,r.disabled=!0},100)}(a,n,r,o,s),function(t,e,n,r,o,i){var a;if(!e.action||!i)return!1;t.preventDefault();const s=new FormData(e),l=!!e.dataset.proxyUrl,u=null!=(a=e.dataset.proxyUrl)?a:e.action,c={method:"POST",body:s,redirect:l?"follow":"manual"};l&&(c.mode="no-cors"),fetch(u,c).then(()=>{!function(t){let e=0;const n=setInterval(()=>{if(e++,e>=300)return clearInterval(n),void m();const r=function(t,e){const n=t.replace(/\/preview\/(draft|live)/g,"").replace(/\/{2,}/g,"/").replace(/\/$/,"").split("/").filter(Boolean);return`${n.length>2?`/${n.slice(0,n.length-2).join("/")}`:""}/upload-status/${e}`}(window.location.pathname,t);fetch(r,{headers:{Accept:"application/json"}}).then(t=>{if(!t.ok)throw new Error("Network response was not ok");return t.json()}).then(t=>{"ready"===t.uploadStatus&&(clearInterval(n),m())}).catch(()=>{clearInterval(n),m()})},1e3)}(i)}).catch(()=>(n.disabled=!1,r.disabled=!1,h("There was a problem uploading the file",o,n),null))}(t,a,n,r,i,u))})}function g(t,e={}){var n;const r=t.getAttribute("tabindex");function o(){var n;null==(n=e.onBlur)||n.call(t),r||t.removeAttribute("tabindex")}r||t.setAttribute("tabindex","-1"),t.addEventListener("focus",function(){t.addEventListener("blur",o,{once:!0})},{once:!0}),null==(n=e.onBeforeFocus)||n.call(t),t.focus()}function f(t=document.body){return!!t&&t.classList.contains("govuk-frontend-supported")}function v(t){return!!t&&"object"==typeof t&&!function(t){return Array.isArray(t)}(t)}function y(t){return!!t&&(t instanceof Element||t instanceof Document)}function b(t,e){return`${t.moduleName}: ${e}`}class w extends Error{constructor(...t){super(...t),this.name="GOVUKFrontendError"}}class k extends w{constructor(t=document.body){const e="noModule"in HTMLScriptElement.prototype?'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet':"GOV.UK Frontend is not supported in this browser";super(t?e:'GOV.UK Frontend initialised without `<script type="module">`'),this.name="SupportError"}}class $ extends w{constructor(...t){super(...t),this.name="ConfigError"}}class E extends w{constructor(t){let e="string"==typeof t?t:"";if(v(t)){const{component:n,identifier:r,element:o,expectedType:i}=t;e=r,e+=o?` is not of type ${null!=i?i:"HTMLElement"}`:" not found",n&&(e=b(n,e))}super(e),this.name="ElementError"}}class S extends w{constructor(t){super("string"==typeof t?t:b(t,"Root element (`$root`) already initialised")),this.name="InitError"}}class M{get $root(){return this._$root}constructor(t){this._$root=void 0;const e=this.constructor;if("string"!=typeof e.moduleName)throw new S("`moduleName` not defined in component");if(!(t instanceof e.elementType))throw new E({element:t,component:e,identifier:"Root element (`$root`)",expectedType:e.elementType.name});this._$root=t,e.checkSupport(),this.checkInitialised();const n=e.moduleName;this.$root.setAttribute(`data-${n}-init`,"")}checkInitialised(){const t=this.constructor,e=t.moduleName;if(e&&function(t,e){return t instanceof HTMLElement&&t.hasAttribute(`data-${e}-init`)}(this.$root,e))throw new S(t)}static checkSupport(){if(!f())throw new k}}M.elementType=HTMLElement;const L=Symbol.for("configOverride");class x extends M{[L](t){return{}}get config(){return this._config}constructor(t,e){super(t),this._config=void 0;const n=this.constructor;if(!v(n.defaults))throw new $(b(n,"Config passed as parameter into constructor but no defaults defined"));const r=function(t,e){if(!v(t.schema))throw new $(b(t,"Config passed as parameter into constructor but no schema defined"));const n={},r=Object.entries(t.schema.properties);for(const o of r){const[r,i]=o,a=r.toString();a in e&&(n[a]=A(e[a],i)),"object"===(null==i?void 0:i.type)&&(n[a]=C(t.schema,e,r))}return n}(n,this._$root.dataset);this._config=N(n.defaults,null!=e?e:{},this[L](r),r)}}function A(t,e){const n=t?t.trim():"";let r,o=null==e?void 0:e.type;switch(o||(["true","false"].includes(n)&&(o="boolean"),n.length>0&&isFinite(Number(n))&&(o="number")),o){case"boolean":r="true"===n;break;case"number":r=Number(n);break;default:r=t}return r}function N(...t){const e={};for(const n of t)for(const t of Object.keys(n)){const r=e[t],o=n[t];v(r)&&v(o)?e[t]=N(r,o):e[t]=o}return e}function C(t,e,n){const r=t.properties[n];if("object"!==(null==r?void 0:r.type))return;const o={[n]:{}};for(const[i,a]of Object.entries(e)){let t=o;const e=i.split(".");for(const[r,o]of e.entries())v(t)&&(r<e.length-1?(v(t[o])||(t[o]={}),t=t[o]):i!==n&&(t[o]=A(a)))}return o[n]}function _(t,e,n){let r;const o=function(t){let e,n=document;if(v(t)){const r=t;(y(r.scope)||null===r.scope)&&(n=r.scope),"function"==typeof r.onError&&(e=r.onError)}return y(t)?n=t:null===t?n=null:"function"==typeof t&&(e=t),{scope:n,onError:e}}(n);try{var i;if(!f())throw new k;if(null===o.scope)throw new E({element:o.scope,component:t,identifier:"Scope element (`$scope`)"});r=null==(i=o.scope)?void 0:i.querySelectorAll(`[data-module="${t.moduleName}"]`)}catch(a){return o.onError?o.onError(a,{component:t,config:e}):console.log(a),[]}return Array.from(null!=r?r:[]).map(n=>{try{return void 0!==e?new t(n,e):new t(n)}catch(a){return o.onError?o.onError(a,{element:n,component:t,config:e}):console.log(a),null}}).filter(Boolean)}class T extends x{constructor(t,e={}){super(t,e),this.debounceFormSubmitTimer=null,this.$root.addEventListener("keydown",t=>this.handleKeyDown(t)),this.$root.addEventListener("click",t=>this.debounce(t))}handleKeyDown(t){const e=t.target;" "===t.key&&e instanceof HTMLElement&&"button"===e.getAttribute("role")&&(t.preventDefault(),e.click())}debounce(t){if(this.config.preventDoubleClick)return this.debounceFormSubmitTimer?(t.preventDefault(),!1):void(this.debounceFormSubmitTimer=window.setTimeout(()=>{this.debounceFormSubmitTimer=null},1e3))}}function F(t,e){const n=t.closest(`[${e}]`);return n?n.getAttribute(e):null}T.moduleName="govuk-button",T.defaults=Object.freeze({preventDoubleClick:!1}),T.schema=Object.freeze({properties:{preventDoubleClick:{type:"boolean"}}});class O{constructor(t={},e={}){var n;this.translations=void 0,this.locale=void 0,this.translations=t,this.locale=null!=(n=e.locale)?n:document.documentElement.lang||"en"}t(t,e){if(!t)throw new Error("i18n: lookup key missing");let n=this.translations[t];if("number"==typeof(null==e?void 0:e.count)&&v(n)){const r=n[this.getPluralSuffix(t,e.count)];r&&(n=r)}if("string"==typeof n){if(n.match(/%{(.\S+)}/)){if(!e)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(n,e)}return n}return t}replacePlaceholders(t,e){const n=Intl.NumberFormat.supportedLocalesOf(this.locale).length?new Intl.NumberFormat(this.locale):void 0;return t.replace(/%{(.\S+)}/g,function(t,r){if(Object.prototype.hasOwnProperty.call(e,r)){const t=e[r];return!1===t||"number"!=typeof t&&"string"!=typeof t?"":"number"==typeof t?n?n.format(t):`${t}`:t}throw new Error(`i18n: no data found to replace ${t} placeholder in string`)})}hasIntlPluralRulesSupport(){return Boolean("PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)}getPluralSuffix(t,e){if(e=Number(e),!isFinite(e))return"other";const n=this.translations[t],r=this.hasIntlPluralRulesSupport()?new Intl.PluralRules(this.locale).select(e):"other";if(v(n)){if(r in n)return r;if("other"in n)return console.warn(`i18n: Missing plural form ".${r}" for "${this.locale}" locale. Falling back to ".other".`),"other"}throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)}}class I extends x{[L](t){let e={};return("maxwords"in t||"maxlength"in t)&&(e={maxlength:void 0,maxwords:void 0}),e}constructor(t,e={}){var n,r;super(t,e),this.$textarea=void 0,this.$visibleCountMessage=void 0,this.$screenReaderCountMessage=void 0,this.lastInputTimestamp=null,this.lastInputValue="",this.valueChecker=null,this.i18n=void 0,this.maxLength=void 0;const o=this.$root.querySelector(".govuk-js-character-count");if(!(o instanceof HTMLTextAreaElement||o instanceof HTMLInputElement))throw new E({component:I,element:o,expectedType:"HTMLTextareaElement or HTMLInputElement",identifier:"Form field (`.govuk-js-character-count`)"});const i=function(t,e){const n=[];for(const[r,o]of Object.entries(t)){const t=[];if(Array.isArray(o)){for(const{required:n,errorMessage:r}of o)n.every(t=>!!e[t])||t.push(r);"anyOf"!==r||o.length-t.length>=1||n.push(...t)}}return n}(I.schema,this.config);if(i[0])throw new $(b(I,i[0]));this.i18n=new O(this.config.i18n,{locale:F(this.$root,"lang")}),this.maxLength=null!=(n=null!=(r=this.config.maxwords)?r:this.config.maxlength)?n:1/0,this.$textarea=o;const a=`${this.$textarea.id}-info`,s=document.getElementById(a);if(!s)throw new E({component:I,element:s,identifier:`Count message (\`id="${a}"\`)`});this.$errorMessage=this.$root.querySelector(".govuk-error-message"),s.textContent.match(/^\s*$/)&&(s.textContent=this.i18n.t("textareaDescription",{count:this.maxLength})),this.$textarea.insertAdjacentElement("afterend",s);const l=document.createElement("div");l.className="govuk-character-count__sr-status govuk-visually-hidden",l.setAttribute("aria-live","polite"),this.$screenReaderCountMessage=l,s.insertAdjacentElement("afterend",l);const u=document.createElement("div");u.className=s.className,u.classList.add("govuk-character-count__status"),u.setAttribute("aria-hidden","true"),this.$visibleCountMessage=u,s.insertAdjacentElement("afterend",u),s.classList.add("govuk-visually-hidden"),this.$textarea.removeAttribute("maxlength"),this.bindChangeEvents(),window.addEventListener("pageshow",()=>this.updateCountMessage()),this.updateCountMessage()}bindChangeEvents(){this.$textarea.addEventListener("keyup",()=>this.handleKeyUp()),this.$textarea.addEventListener("focus",()=>this.handleFocus()),this.$textarea.addEventListener("blur",()=>this.handleBlur())}handleKeyUp(){this.updateVisibleCountMessage(),this.lastInputTimestamp=Date.now()}handleFocus(){this.valueChecker=window.setInterval(()=>{(!this.lastInputTimestamp||Date.now()-500>=this.lastInputTimestamp)&&this.updateIfValueChanged()},1e3)}handleBlur(){this.valueChecker&&window.clearInterval(this.valueChecker)}updateIfValueChanged(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())}updateCountMessage(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()}updateVisibleCountMessage(){const t=this.maxLength-this.count(this.$textarea.value)<0;this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled",!this.isOverThreshold()),this.$errorMessage||this.$textarea.classList.toggle("govuk-textarea--error",t),this.$visibleCountMessage.classList.toggle("govuk-error-message",t),this.$visibleCountMessage.classList.toggle("govuk-hint",!t),this.$visibleCountMessage.textContent=this.getCountMessage()}updateScreenReaderCountMessage(){this.isOverThreshold()?this.$screenReaderCountMessage.removeAttribute("aria-hidden"):this.$screenReaderCountMessage.setAttribute("aria-hidden","true"),this.$screenReaderCountMessage.textContent=this.getCountMessage()}count(t){var e;return this.config.maxwords?(null!=(e=t.match(/\S+/g))?e:[]).length:t.length}getCountMessage(){const t=this.maxLength-this.count(this.$textarea.value),e=this.config.maxwords?"words":"characters";return this.formatCountMessage(t,e)}formatCountMessage(t,e){if(0===t)return this.i18n.t(`${e}AtLimit`);const n=t<0?"OverLimit":"UnderLimit";return this.i18n.t(`${e}${n}`,{count:Math.abs(t)})}isOverThreshold(){if(!this.config.threshold)return!0;const t=this.count(this.$textarea.value);return this.maxLength*this.config.threshold/100<=t}}I.moduleName="govuk-character-count",I.defaults=Object.freeze({threshold:0,i18n:{charactersUnderLimit:{one:"You have %{count} character remaining",other:"You have %{count} characters remaining"},charactersAtLimit:"You have 0 characters remaining",charactersOverLimit:{one:"You have %{count} character too many",other:"You have %{count} characters too many"},wordsUnderLimit:{one:"You have %{count} word remaining",other:"You have %{count} words remaining"},wordsAtLimit:"You have 0 words remaining",wordsOverLimit:{one:"You have %{count} word too many",other:"You have %{count} words too many"},textareaDescription:{other:""}}}),I.schema=Object.freeze({properties:{i18n:{type:"object"},maxwords:{type:"number"},maxlength:{type:"number"},threshold:{type:"number"}},anyOf:[{required:["maxwords"],errorMessage:'Either "maxlength" or "maxwords" must be provided'},{required:["maxlength"],errorMessage:'Either "maxlength" or "maxwords" must be provided'}]});class P extends M{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="checkbox"]');if(!e.length)throw new E({component:P,identifier:'Form inputs (`<input type="checkbox">`)'});this.$inputs=e,this.$inputs.forEach(t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new E({component:P,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}}),window.addEventListener("pageshow",()=>this.syncAllConditionalReveals()),this.syncAllConditionalReveals(),this.$root.addEventListener("click",t=>this.handleClick(t))}syncAllConditionalReveals(){this.$inputs.forEach(t=>this.syncConditionalRevealWithInputState(t))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const n=document.getElementById(e);if(null!=n&&n.classList.contains("govuk-checkboxes__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),n.classList.toggle("govuk-checkboxes__conditional--hidden",!e)}}unCheckAllInputsExcept(t){document.querySelectorAll(`input[type="checkbox"][name="${t.name}"]`).forEach(e=>{t.form===e.form&&e!==t&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))})}unCheckExclusiveInputs(t){document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${t.name}"]`).forEach(e=>{t.form===e.form&&(e.checked=!1,this.syncConditionalRevealWithInputState(e))})}handleClick(t){const e=t.target;e instanceof HTMLInputElement&&"checkbox"===e.type&&(e.getAttribute("aria-controls")&&this.syncConditionalRevealWithInputState(e),e.checked&&("exclusive"===e.getAttribute("data-behaviour")?this.unCheckAllInputsExcept(e):this.unCheckExclusiveInputs(e)))}}P.moduleName="govuk-checkboxes";class R extends x{constructor(t,e={}){super(t,e),this.config.disableAutoFocus||g(this.$root),this.$root.addEventListener("click",t=>this.handleClick(t))}handleClick(t){const e=t.target;e&&this.focusTarget(e)&&t.preventDefault()}focusTarget(t){if(!(t instanceof HTMLAnchorElement))return!1;const e=t.hash.replace("#","");if(!e)return!1;const n=document.getElementById(e);if(!n)return!1;const r=this.getAssociatedLegendOrLabel(n);return!!r&&(r.scrollIntoView(),n.focus({preventScroll:!0}),!0)}getAssociatedLegendOrLabel(t){var e;const n=t.closest("fieldset");if(n){const e=n.getElementsByTagName("legend");if(e.length){const n=e[0];if(t instanceof HTMLInputElement&&("checkbox"===t.type||"radio"===t.type))return n;const r=n.getBoundingClientRect().top,o=t.getBoundingClientRect();if(o.height&&window.innerHeight&&o.top+o.height-r<window.innerHeight/2)return n}}return null!=(e=document.querySelector(`label[for='${t.getAttribute("id")}']`))?e:t.closest("label")}}R.moduleName="govuk-error-summary",R.defaults=Object.freeze({disableAutoFocus:!1}),R.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class j extends M{constructor(t){super(t),this.$menuButton=void 0,this.$menu=void 0,this.menuIsOpen=!1,this.mql=null;const e=this.$root.querySelector(".govuk-js-header-toggle");if(!e)return this;this.$root.classList.add("govuk-header--with-js-navigation");const n=e.getAttribute("aria-controls");if(!n)throw new E({component:j,identifier:'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'});const r=document.getElementById(n);if(!r)throw new E({component:j,element:r,identifier:`Navigation (\`<ul id="${n}">\`)`});this.$menu=r,this.$menuButton=e,this.setupResponsiveChecks(),this.$menuButton.addEventListener("click",()=>this.handleMenuButtonClick())}setupResponsiveChecks(){const t=function(){const t="--govuk-breakpoint-desktop";return{property:t,value:window.getComputedStyle(document.documentElement).getPropertyValue(t)||void 0}}();if(!t.value)throw new E({component:j,identifier:`CSS custom property (\`${t.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${t.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",()=>this.checkMode()):this.mql.addListener(()=>this.checkMode()),this.checkMode()}checkMode(){this.mql&&this.$menu&&this.$menuButton&&(this.mql.matches?(this.$menu.removeAttribute("hidden"),this.$menuButton.setAttribute("hidden","")):(this.$menuButton.removeAttribute("hidden"),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden","")))}handleMenuButtonClick(){this.menuIsOpen=!this.menuIsOpen,this.checkMode()}}j.moduleName="govuk-header";class D extends x{constructor(t,e={}){super(t,e),"alert"!==this.$root.getAttribute("role")||this.config.disableAutoFocus||g(this.$root)}}D.moduleName="govuk-notification-banner",D.defaults=Object.freeze({disableAutoFocus:!1}),D.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class G extends M{constructor(t){super(t),this.$inputs=void 0;const e=this.$root.querySelectorAll('input[type="radio"]');if(!e.length)throw new E({component:G,identifier:'Form inputs (`<input type="radio">`)'});this.$inputs=e,this.$inputs.forEach(t=>{const e=t.getAttribute("data-aria-controls");if(e){if(!document.getElementById(e))throw new E({component:G,identifier:`Conditional reveal (\`id="${e}"\`)`});t.setAttribute("aria-controls",e),t.removeAttribute("data-aria-controls")}}),window.addEventListener("pageshow",()=>this.syncAllConditionalReveals()),this.syncAllConditionalReveals(),this.$root.addEventListener("click",t=>this.handleClick(t))}syncAllConditionalReveals(){this.$inputs.forEach(t=>this.syncConditionalRevealWithInputState(t))}syncConditionalRevealWithInputState(t){const e=t.getAttribute("aria-controls");if(!e)return;const n=document.getElementById(e);if(null!=n&&n.classList.contains("govuk-radios__conditional")){const e=t.checked;t.setAttribute("aria-expanded",e.toString()),n.classList.toggle("govuk-radios__conditional--hidden",!e)}}handleClick(t){const e=t.target;if(!(e instanceof HTMLInputElement)||"radio"!==e.type)return;const n=document.querySelectorAll('input[type="radio"][aria-controls]'),r=e.form,o=e.name;n.forEach(t=>{const e=t.form===r;t.name===o&&e&&this.syncConditionalRevealWithInputState(t)})}}G.moduleName="govuk-radios";class B extends M{constructor(t){var e;super(t);const n=this.$root.hash,r=null!=(e=this.$root.getAttribute("href"))?e:"";if(this.$root.origin!==window.location.origin||this.$root.pathname!==window.location.pathname)return;const o=n.replace("#","");if(!o)throw new E(`Skip link: Target link (\`href="${r}"\`) has no hash fragment`);const i=document.getElementById(o);if(!i)throw new E({component:B,element:i,identifier:`Target content (\`id="${o}"\`)`});this.$root.addEventListener("click",()=>g(i,{onBeforeFocus(){i.classList.add("govuk-skip-link-focused-element")},onBlur(){i.classList.remove("govuk-skip-link-focused-element")}}))}}B.elementType=HTMLAnchorElement,B.moduleName="govuk-skip-link";var q=i(559),W=i(6);const z=function(){_(T),_(I),_(P),_(R),_(j),_(D),_(G),_(B)},V=function(){const t=document.querySelectorAll('[data-module="govuk-accessible-autocomplete"]');t.length&&i.e(7).then(i.t.bind(i,60,19)).then(e=>{const{default:n}=e;t.forEach(t=>function(t,e){if(!t)return;const n={id:t.id,selectElement:t};e(n);const r=document.querySelector(`#${n.id}`),o=[...t.options].map(t=>t.text);null==r||r.addEventListener("blur",()=>{r.value&&o.includes(r.value)||(t.value="")})}(t.querySelector("select"),n.enhanceSelectElement))}).catch(console.error)},H=function(){const t=document.querySelectorAll(".prevent-multiple-clicks");for(const e of t)e.addEventListener("click",s),e.addEventListener("keydown",l)},U=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",p):p()},Y=function(){if(window.opener){const t=document.querySelector(".js-preview-banner-close");null==t||t.removeAttribute("hidden"),null==t||t.addEventListener("click",t=>{t.preventDefault(),window.close()})}};function K(){z(),V(),H(),U(),Y()}export{W as geospatialMap,K as initAll,V as initAllAutocomplete,z as initAllGovuk,H as initDebounceClick,U as initFileUpload,Y as initPreviewCloseLink,q as map};export const initMaps=q.initMaps;
2
+ var e,t,n,r={535:(e,t,n)=>{n.d(t,{addFeatureToMap:()=>O,createFeatureHTML:()=>M,createFeaturesHTML:()=>_,focusFeature:()=>S,getBoundingBox:()=>A,getGeoJSON:()=>k,getHelpPanelHtml:()=>f,getUIManager:()=>L,processGeospatial:()=>P}),n.r(t);var r=n(321),o=n(585);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach(function(t){(0,o.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var s={load:()=>Promise.all([n.e(402),n.e(641)]).then(n.bind(n,886))};function l(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 u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach(function(t){(0,o.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var c=n(356);function d(e,t={}){if(null!=e.bbox&&!0!==t.recompute)return e.bbox;const n=[1/0,1/0,-1/0,-1/0];return(0,c.Fh)(e,e=>{n[0]>e[0]&&(n[0]=e[0]),n[1]>e[1]&&(n[1]=e[1]),n[2]<e[0]&&(n[2]=e[0]),n[3]<e[1]&&(n[3]=e[1])}),n}var h=n(571);function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(null,arguments)}const m={showLabel:!0,label:"How to use this map",mobile:{slot:"drawer",open:!0,dismissible:!0,modal:!1},tablet:{slot:"drawer",open:!0,dismissible:!0,modal:!1},desktop:{slot:"drawer",open:!0,dismissible:!0,modal:!1}};function f(e,t,n){const r=function(e,t){return e&&t?"a line or shape":e?"a line":t?"a shape":""}(t,n),o=r?`<li>Double‑click, or select 'Done', when you have finished drawing ${r}</li>`:"",i=function(e,t,n){const r=[];return e&&r.push("points"),t&&r.push("lines"),n&&r.push("shapes"),function(e){if(0===e.length)return"";if(1===e.length)return e[0];if(2===e.length)return`${e[0]} or ${e[1]}`;const t=e.pop();return`${e.join(", ")} or ${t}`}(r)}(e,t,n);return`<p class="govuk-body-s govuk-!-margin-bottom-2">You can add ${i} to the map.</p><ul class="govuk-list govuk-list--number govuk-body-s"><li>Search for a county, place or postcode</li><li>Use the + and - icons to zoom in and out</li>${o}<li>Give the location a name</li></ul>`}const g={stroke:"rgba(0, 11, 112, 1)",fill:"rgba(0, 11, 112, 0.2)",strokeWidth:2},v={stroke:"rgb(0, 0, 0)",fill:"rgba(255, 221, 0, 0.2)",strokeWidth:2},y={Point:"Point",LineString:"Line",Polygon:"Shape"},b='<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" /><circle cx="12" cy="10" r="3" />',w='<path d="M19.5 7v10M4.5 7v10M7 19.5h10M7 4.5h10"/><path d="M22 18v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zm0-15v3a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 18v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1zM7 3v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1z"/>',E='<path d="M5.706 16.294L16.294 5.706"/><path d="M21 2v3c0 .549-.451 1-1 1h-3c-.549 0-1-.451-1-1V2c0-.549.451-1 1-1h3c.549 0 1 .451 1 1zM6 17v3c0 .549-.451 1-1 1H2c-.549 0-1-.451-1-1v-3c0-.549.451-1 1-1h3c.549 0 1 .451 1 1z"/>';function k(e){const t=e.value.trim();return{type:"FeatureCollection",features:t?JSON.parse(t):[]}}function A(e){return d(e)}function P(e,t,o){if(!(t instanceof HTMLDivElement))return;const i=t.querySelector(".govuk-textarea");if(!(i instanceof HTMLTextAreaElement))return;const{listEl:l,mapId:c}=function(e,t){const n=document.createElement("div"),r=`geospatialmap_${t}`;n.setAttribute("id",r),n.setAttribute("class","map-container");const o=document.createElement("div"),i=`${r}_list`;return o.setAttribute("id",i),e.after(n),n.after(o),e.classList.add("js-hidden"),{mapEl:n,listEl:o,mapId:r}}(i,o),d=k(i),y=d.features.length?A(d):void 0,P=function(){var e;return u(u({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"draw",load:(e=(0,r.A)(function*(){return(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,327))).manifest}),function(){return e.apply(this,arguments)})})}(),_=[P],M=t.dataset.country;if(M){const t=function(){var e,t=a(a({noKeyItemText:"No features displayed"},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"datasets",load:(e=(0,r.A)(function*(){return(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,407))).manifest}),function(){return e.apply(this,arguments)})});return t}({layerAdapter:s,datasets:[{id:"invalid-area",label:"Invalid areas",geojson:`${e.apiPath}/maps/countries.geojson?omit=${M}`,showInKey:!1,showInMenu:!1,style:{stroke:"gray",strokeWidth:1,fill:"rgba(211,211,211,0.8)"}},{id:"valid-area",label:"Valid areas",geojson:`${e.apiPath}/maps/countries.geojson?only=${M}`,showInKey:!1,showInMenu:!1,style:{stroke:"rgba(0,112,60,1)",strokeWidth:1}}]});_.push(t)}const T=p({},h.defaultConfig,{bounds:y,plugins:_}),{map:C,interactPlugin:N}=(0,h.createMap)(c,T,e),j=function(e){function t(t){return e.features.find(e=>e.id===t)}return{getFeatures:function(){return e.features},getFeature:t,addFeature:function(t){t.properties.coordinateGridReference=(0,h.getCoordinateGridRef)(t),t.properties.centroidGridReference=(0,h.getCentroidGridRef)(t),$(t),e.features.push(t)},updateFeature:function(e,n){const r=t(e);return r&&(r.properties.coordinateGridReference=(0,h.getCoordinateGridRef)(r),r.properties.centroidGridReference=(0,h.getCentroidGridRef)(r),r.geometry=n,$(r)),r},removeFeature:function(t){const n=e.features.findIndex(e=>e.id===t);return n>-1?e.features.splice(n,1):void 0}}}(d);!function(e){const{map:t}=e;t.on(h.EVENTS.mapReady,function(e){const{map:t,activeFeatureManager:n,uiManager:r,interactPlugin:o,drawPlugin:i}=e,{toggleActionButtons:a,renderList:s,getAllowableGeometryTypes:l}=r,{resetActiveFeature:u}=n;return function(n){const c=l(),d=c.includes("point"),y=c.includes("line"),k=c.includes("shape");t.addPanel("info",p({},m,{html:f(d,y,k)})),d&&t.addButton("btnAddPoint",{variant:"tertiary",label:"Add point",iconSvgContent:b,onClick:()=>{u(),a(!0),s(!0),o.enable()},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),k&&t.addButton("btnAddPolygon",{variant:"tertiary",label:"Add shape",iconSvgContent:w,onClick:()=>{u(),a(!0),s(!0),i.newPolygon(x(),v)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),y&&t.addButton("btnAddLine",{variant:"tertiary",label:"Add line",iconSvgContent:E,onClick:()=>{u(),a(!0),s(!0),i.newLine(x(),g)},mobile:{slot:"actions"},tablet:{slot:"actions"},desktop:{slot:"actions"}}),e.mapProvider=n.map,t.on(h.EVENTS.drawReady,function(e){const{featuresManager:t,uiManager:n,drawPlugin:r,map:o}=e,{renderList:i}=n,{getFeatures:a}=t;return function(){a().forEach(e=>O(e,r,o)),i()}}(e)),t.on(h.EVENTS.drawCreated,function(e){const{featuresManager:t,uiManager:n}=e,{addFeature:r}=t,{renderList:o,toggleActionButtons:i,focusDescriptionInput:a}=n;return function(e){r(p({},e,{properties:{description:""}})),o(),i(!1),a()}}(e)),t.on(h.EVENTS.drawEdited,function(e){const{featuresManager:t,activeFeatureManager:n,uiManager:r}=e,{updateFeature:o}=t,{getActiveFeature:i,resetActiveFeature:a}=n,{renderList:s,toggleActionButtons:l}=r;return function(e){const t=e,n=t.id;i()===n&&(o(n,t.geometry),s()),a(),l(!1)}}(e)),t.on(h.EVENTS.drawCancelled,function(e){const{uiManager:t,activeFeatureManager:n}=e,{toggleActionButtons:r,renderList:o}=t,{resetActiveFeature:i}=n;return function(){r(!1),i(),o()}}(e)),t.on(h.EVENTS.interactMarkerChange,function(e){const{featuresManager:t,activeFeatureManager:n,map:r,interactPlugin:o,uiManager:i}=e,{addFeature:a,updateFeature:s}=t,{getActiveFeature:l,resetActiveFeature:u}=n,{renderList:c,focusDescriptionInput:d,toggleActionButtons:h}=i;return function(e){const t=l();if(t){const n=s(t,{type:"Point",coordinates:e.coords});r.addMarker(t,e.coords),n&&c(),u()}else{const t=x();a({type:"Feature",properties:{description:""},geometry:{type:"Point",coordinates:e.coords},id:t}),r.addMarker(t,e.coords),c(),d()}r.removeMarker("location"),o.disable(),h(!1)}}(e));const{listEl:A}=r;A.addEventListener("click",function(e){const{map:t,mapProvider:n,featuresManager:r,activeFeatureManager:o,interactPlugin:i,uiManager:a,drawPlugin:s}=e,{getFeature:l,removeFeature:u}=r,{getActiveFeature:c,setActiveFeature:d}=o,{renderList:h,toggleActionButtons:p}=a;return function(e){const r=e.target;if(r instanceof HTMLElement){if(c())return e.preventDefault(),void e.stopPropagation();if("A"===r.tagName&&r.dataset.action&&r.dataset.id&&r.dataset.type){const{action:o,id:a,type:c}=r.dataset;"edit"===o?function(e,t){d(e),"Point"===t?(i.selectFeature({featureId:e}),i.enable()):s.editFeature(e);const r=l(e);r&&n&&S(r,n),p(!0),h(!0)}(a,c):(e.preventDefault(),e.stopPropagation(),"delete"===o&&function(e,n){"Point"===n?(t.removeMarker(e),u(e)):(s.deleteFeature(e),u(e)),h()}(a,c))}}}}(e),!1),A.addEventListener("change",function(e){const{featuresManager:t,uiManager:n}=e,{getFeature:r}=t,{renderValue:o}=n;return function(e){e.preventDefault(),e.stopPropagation();const t=e.target;if(!(t instanceof HTMLInputElement&&t.dataset.id))return;const{id:n}=t.dataset,i=r(n);i&&(i.properties.description=t.value.trim(),o())}}(e),!1),A.addEventListener("keydown",function(e){e.target instanceof HTMLInputElement&&("Enter"!==e.code&&"NumpadEnter"!==e.code||(e.preventDefault(),e.stopPropagation()))},!1)}}(e))}({map:C,featuresManager:j,activeFeatureManager:function(){let e;return{getActiveFeature:function(){return e},setActiveFeature:function(t){e=t},resetActiveFeature:function(){e=void 0}}}(),uiManager:L(d,C,c,l,i,{geometryTypes:t.dataset.geometrytypes}),interactPlugin:N,drawPlugin:P})}function O(e,t,n){switch(e.geometry.type){case"Polygon":t.addFeature(p({},e,v));break;case"LineString":t.addFeature(p({},e,g));break;case"Point":n.addMarker(e.id,e.geometry.coordinates)}}function _(e,t,n=!1,r=!1){return`<dl class="govuk-summary-list">\n ${e.map((e,o)=>M(e,o,t,n,r)).join("\n")}\n </dl>`}function S(e,t){t.fitBounds(d(e))}function M(e,t,n,r=!1,o=!1){const i=e.geometry.coordinates.flat(2),a=[];for(let l=0;l<i.length;l+=2)a.push(i.slice(l,l+2).join(", "));const s=a.map(e=>`<li>${e}</li>`).join("");return`<div class="govuk-summary-list__row govuk-summary-list__row--no-border">\n <dt class="govuk-summary-list__key">\n <div class="govuk-form-group">\n <label class="govuk-label govuk-label--s" ${o?"":`for="description_${t}"`}>Location ${t+1} description</label>\n ${o?`<p class="govuk-body govuk-!-margin-bottom-0">${e.properties.description}</p>`:`<input class="govuk-input govuk-!-width-two-thirds" type="text" id="description_${t}" value="${e.properties.description}" data-id="${e.id}">`}\n </div>\n </dt>\n <dd class="govuk-summary-list__actions">\n <ul class="govuk-summary-list__actions-list">${o?`<li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state" href="#${n}" data-action="focus" data-id="${e.id}">Show<span class="govuk-visually-hidden"> location</span></a>\n</li>`:`<li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state ${r?"govuk-link--disabled":""}" href="#${n}" data-action="edit" data-id="${e.id}"\n data-type="${e.geometry.type}">Update<span class="govuk-visually-hidden"> location</span></a>\n</li><li class="govuk-summary-list__actions-list-item">\n <a class="govuk-link govuk-link--no-visited-state ${r?"govuk-link--disabled":""}" href="#" data-action="delete" data-id="${e.id}"\n data-type="${e.geometry.type}">Delete<span class="govuk-visually-hidden"> location</span></a>\n</li>`}</ul>\n </dd>\n</div>\n<div class="govuk-summary-list__row">\n <details class="govuk-details govuk-!-margin-bottom-2">\n <summary class="govuk-details__summary">\n <span class="govuk-details__summary-text">Coordinates</span>\n </summary>\n <div class="govuk-details__text">\n <dl class="govuk-summary-list">\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Type</dt>\n <dd class="govuk-summary-list__value">${y[e.geometry.type]}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Centre grid reference</dt>\n <dd class="govuk-summary-list__value">${e.properties.centroidGridReference}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">First point grid reference</dt>\n <dd class="govuk-summary-list__value">${e.properties.coordinateGridReference}</dd>\n </div>\n <div class="govuk-summary-list__row">\n <dt class="govuk-summary-list__key">Detailed coordinates</dt>\n <dd class="govuk-summary-list__value">\n <ol class="govuk-list govuk-list--number">${s}</ol>\n </dd>\n </div>\n </dl>\n </div>\n </details>\n</div>`}function x(){return window.crypto.randomUUID()}function $(e){const{geometry:t}=e;function n(e){e[0]=+e[0].toFixed(7),e[1]=+e[1].toFixed(7)}"Point"===t.type?n(t.coordinates):"LineString"===t.type?t.coordinates.forEach(n):t.coordinates.flat().forEach(n)}function L(e,t,n,r,o,i){function a(){return null!=i&&i.geometryTypes?i.geometryTypes.split(","):["point","line","shape"]}const s=function(e,t){return function(){t.value=JSON.stringify(e.features,null,2)}}(e,o),l=function(e,t,n,r){return function(o=!1){const i=_(e.features,t,o);n.innerHTML=i,r()}}(e,n,r,s);return{renderList:l,renderValue:s,listEl:r,toggleActionButtons:function(e){const n=a();n.includes("point")&&t.toggleButtonState("btnAddPoint","hidden",e),n.includes("shape")&&t.toggleButtonState("btnAddPolygon","hidden",e),n.includes("line")&&t.toggleButtonState("btnAddLine","hidden",e)},focusDescriptionInput:function(){const e=r.querySelectorAll("input");if(e.length){const t=e.item(e.length-1);t.focus(),t.select()}},getAllowableGeometryTypes:a}}},571:(e,t,n)=>{n.d(t,{EVENTS:()=>te,centerMap:()=>ae,createMap:()=>ie,defaultConfig:()=>ee,eastingNorthingToLatLong:()=>Y,formSubmitFactory:()=>ne,getCentroidGridRef:()=>X,getCoordinateGridRef:()=>J,initMaps:()=>re,latLongToEastingNorthing:()=>K,latLongToOsGridRef:()=>Q,makeTileRequestTransformer:()=>oe,osGridRefToLatLong:()=>Z}),n.r(t);var r=n(196),o=n(321),i=n(585);function a(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 s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach(function(t){(0,i.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function l(){var e,{manifest:t,mapStyles:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{id:"mapStyles",manifest:t,mapStyles:r,load:(e=(0,o.A)(function*(){return(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,171))).manifest}),function(){return e.apply(this,arguments)}),handlesMapStyle:!0,api:{}}}function u(){var e,{manifest:t,units:r="metric"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{id:"scaleBar",manifest:t,units:r,load:(e=(0,o.A)(function*(){return(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,415))).manifest}),function(){return e.apply(this,arguments)})}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach(function(t){(0,i.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function h(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.expanded&&(t.manifest={controls:[{id:"search",mobile:{slot:"banner"}}]}),d(d({showMarker:!0,placeholder:"Search"},t),{},{id:"search",load:(e=(0,o.A)(function*(){return(yield Promise.all([n.e(402),n.e(641),n.e(254)]).then(n.bind(n,710))).manifest}),function(){return e.apply(this,arguments)})})}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 m(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){(0,i.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}function f(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{checkDeviceCapabilities:()=>{var e=(()=>{if(!window.WebGLRenderingContext)return{isEnabled:!1,error:"WebGL is not supported"};var t=document.createElement("canvas"),n=!1;for(var r of["webgl2","webgl1"])try{if((n=t.getContext(r))&&"function"==typeof n.getParameter)return{isEnabled:!0}}catch(e){}return{isEnabled:!1,error:"WebGL is supported, but disabled"}})(),t=document.documentMode;return{isSupported:e.isEnabled&&"function"==typeof"".replaceAll,error:t?"Internet Explorer is not supported":e.error}},load:(e=(0,o.A)(function*(){var e=yield n.e(264).then(n.t.bind(n,825,19));return t.workerUrl&&(e.workerUrl=t.workerUrl),{MapProvider:(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,814))).default,mapProviderConfig:m(m({},t),{},{crs:"EPSG:4326"}),mapFramework:e}}),function(){return e.apply(this,arguments)})}}function g(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}Math.PI;var v=n(356);function y(e,t={}){let n=0,r=0,o=0;return(0,v.Fh)(e,function(e){n+=e[0],r+=e[1],o++},!0),function(e,t,n={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!g(e[0])||!g(e[1]))throw new Error("coordinates must contain numbers");return function(e,t,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=t||{},r.geometry=e,r}({type:"Point",coordinates:e},t,n)}([n/o,r/o],t.properties)}let b=" ";class w{static get separator(){return b}static set separator(e){b=e}static parse(e){if(!isNaN(parseFloat(e))&&isFinite(e))return Number(e);const t=String(e).trim().replace(/^-/,"").replace(/[NSEW]$/i,"").split(/[^0-9.,]+/);if(""==t[t.length-1]&&t.splice(t.length-1),""==t)return NaN;let n=null;switch(t.length){case 3:n=t[0]/1+t[1]/60+t[2]/3600;break;case 2:n=t[0]/1+t[1]/60;break;case 1:n=t[0];break;default:return NaN}return/^-|[WS]$/i.test(e.trim())&&(n=-n),Number(n)}static toDms(e,t="d",n=void 0){if(isNaN(e))return null;if("string"==typeof e&&""==e.trim())return null;if("boolean"==typeof e)return null;if(e==1/0)return null;if(null==e)return null;if(void 0===n)switch(t){case"d":case"deg":n=4;break;case"dm":case"deg+min":n=2;break;case"dms":case"deg+min+sec":n=0;break;default:t="d",n=4}e=Math.abs(e);let r=null,o=null,i=null,a=null;switch(t){default:case"d":case"deg":o=e.toFixed(n),o<100&&(o="0"+o),o<10&&(o="0"+o),r=o+"°";break;case"dm":case"deg+min":o=Math.floor(e),i=(60*e%60).toFixed(n),60==i&&(i=(0).toFixed(n),o++),o=("000"+o).slice(-3),i<10&&(i="0"+i),r=o+"°"+w.separator+i+"′";break;case"dms":case"deg+min+sec":o=Math.floor(e),i=Math.floor(3600*e/60)%60,a=(3600*e%60).toFixed(n),60==a&&(a=(0).toFixed(n),i++),60==i&&(i=0,o++),o=("000"+o).slice(-3),i=("00"+i).slice(-2),a<10&&(a="0"+a),r=o+"°"+w.separator+i+"′"+w.separator+a+"″"}return r}static toLat(e,t,n){const r=w.toDms(w.wrap90(e),t,n);return null===r?"–":r.slice(1)+w.separator+(e<0?"S":"N")}static toLon(e,t,n){const r=w.toDms(w.wrap180(e),t,n);return null===r?"–":r+w.separator+(e<0?"W":"E")}static toBrng(e,t,n){const r=w.toDms(w.wrap360(e),t,n);return null===r?"–":r.replace("360","0")}static fromLocale(e){const t=123456.789.toLocaleString(),n={thousands:t.slice(3,4),decimal:t.slice(7,8)};return e.replace(n.thousands,"⁜").replace(n.decimal,".").replace("⁜",",")}static toLocale(e){const t=123456.789.toLocaleString(),n={thousands:t.slice(3,4),decimal:t.slice(7,8)};return e.replace(/,([0-9])/,"⁜$1").replace(".",n.decimal).replace("⁜",n.thousands)}static compassPoint(e,t=3){if(![1,2,3].includes(Number(t)))throw new RangeError(`invalid precision ‘${t}’`);e=w.wrap360(e);const n=4*2**(t-1);return["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.round(e*n/360)%n*16/n]}static wrap90(e){if(-90<=e&&e<=90)return e;const t=e;return 1*Math.abs(((t-90)%360+360)%360-180)-90}static wrap180(e){if(-180<=e&&e<=180)return e;const t=360;return((360*e/t-180)%t+t)%t-180}static wrap360(e){if(0<=e&&e<360)return e;const t=360;return(360*e/t%t+t)%t}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const E=w;class k{constructor(e,t,n){if(isNaN(e)||isNaN(t)||isNaN(n))throw new TypeError(`invalid vector [${e},${t},${n}]`);this.x=Number(e),this.y=Number(t),this.z=Number(n)}get length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}plus(e){if(!(e instanceof k))throw new TypeError("v is not Vector3d object");return new k(this.x+e.x,this.y+e.y,this.z+e.z)}minus(e){if(!(e instanceof k))throw new TypeError("v is not Vector3d object");return new k(this.x-e.x,this.y-e.y,this.z-e.z)}times(e){if(isNaN(e))throw new TypeError(`invalid scalar value ‘${e}’`);return new k(this.x*e,this.y*e,this.z*e)}dividedBy(e){if(isNaN(e))throw new TypeError(`invalid scalar value ‘${e}’`);return new k(this.x/e,this.y/e,this.z/e)}dot(e){if(!(e instanceof k))throw new TypeError("v is not Vector3d object");return this.x*e.x+this.y*e.y+this.z*e.z}cross(e){if(!(e instanceof k))throw new TypeError("v is not Vector3d object");const t=this.y*e.z-this.z*e.y,n=this.z*e.x-this.x*e.z,r=this.x*e.y-this.y*e.x;return new k(t,n,r)}negate(){return new k(-this.x,-this.y,-this.z)}unit(){const e=this.length;if(1==e)return this;if(0==e)return this;const t=this.x/e,n=this.y/e,r=this.z/e;return new k(t,n,r)}angleTo(e,t=void 0){if(!(e instanceof k))throw new TypeError("v is not Vector3d object");if(!(t instanceof k||null==t))throw new TypeError("n is not Vector3d object");const n=null==t||this.cross(e).dot(t)>=0?1:-1,r=this.cross(e).length*n,o=this.dot(e);return Math.atan2(r,o)}rotateAround(e,t){if(!(e instanceof k))throw new TypeError("axis is not Vector3d object");const n=t.toRadians(),r=this.unit(),o=e.unit(),i=Math.sin(n),a=Math.cos(n),s=1-a,l=o.x,u=o.y,c=o.z,d=[[s*l*l+a,s*l*u-i*c,s*l*c+i*u],[s*l*u+i*c,s*u*u+a,s*u*c-i*l],[s*l*c-i*u,s*u*c+i*l,s*c*c+a]],h=[d[0][0]*r.x+d[0][1]*r.y+d[0][2]*r.z,d[1][0]*r.x+d[1][1]*r.y+d[1][2]*r.z,d[2][0]*r.x+d[2][1]*r.y+d[2][2]*r.z];return new k(h[0],h[1],h[2])}toString(e=3){return`[${this.x.toFixed(e)},${this.y.toFixed(e)},${this.z.toFixed(e)}]`}}Number.prototype.toRadians=function(){return this*Math.PI/180},Number.prototype.toDegrees=function(){return 180*this/Math.PI};const A=k,P={WGS84:{a:6378137,b:6356752.314245,f:1/298.257223563}},O={WGS84:{ellipsoid:P.WGS84}};Object.freeze(P.WGS84),Object.freeze(O.WGS84);class _{constructor(e,t,n=0){if(isNaN(e)||null==e)throw new TypeError(`invalid lat ‘${e}’`);if(isNaN(t)||null==t)throw new TypeError(`invalid lon ‘${t}’`);if(isNaN(n)||null==n)throw new TypeError(`invalid height ‘${n}’`);this._lat=E.wrap90(Number(e)),this._lon=E.wrap180(Number(t)),this._height=Number(n)}get lat(){return this._lat}get latitude(){return this._lat}set lat(e){if(this._lat=isNaN(e)?E.wrap90(E.parse(e)):E.wrap90(Number(e)),isNaN(this._lat))throw new TypeError(`invalid lat ‘${e}’`)}set latitude(e){if(this._lat=isNaN(e)?E.wrap90(E.parse(e)):E.wrap90(Number(e)),isNaN(this._lat))throw new TypeError(`invalid latitude ‘${e}’`)}get lon(){return this._lon}get lng(){return this._lon}get longitude(){return this._lon}set lon(e){if(this._lon=isNaN(e)?E.wrap180(E.parse(e)):E.wrap180(Number(e)),isNaN(this._lon))throw new TypeError(`invalid lon ‘${e}’`)}set lng(e){if(this._lon=isNaN(e)?E.wrap180(E.parse(e)):E.wrap180(Number(e)),isNaN(this._lon))throw new TypeError(`invalid lng ‘${e}’`)}set longitude(e){if(this._lon=isNaN(e)?E.wrap180(E.parse(e)):E.wrap180(Number(e)),isNaN(this._lon))throw new TypeError(`invalid longitude ‘${e}’`)}get height(){return this._height}set height(e){if(this._height=Number(e),isNaN(this._height))throw new TypeError(`invalid height ‘${e}’`)}get datum(){return this._datum}set datum(e){this._datum=e}static get ellipsoids(){return P}static get datums(){return O}static parse(...e){if(0==e.length)throw new TypeError("invalid (empty) point");let t,n,r;if("object"==typeof e[0]&&(1==e.length||!isNaN(parseFloat(e[1])))){const o=e[0];if("Point"==o.type&&Array.isArray(o.coordinates)?([n,t,r]=o.coordinates,r=r||0):(null!=o.latitude&&(t=o.latitude),null!=o.lat&&(t=o.lat),null!=o.longitude&&(n=o.longitude),null!=o.lng&&(n=o.lng),null!=o.lon&&(n=o.lon),null!=o.height&&(r=o.height),t=E.wrap90(E.parse(t)),n=E.wrap180(E.parse(n))),null!=e[1]&&(r=e[1]),isNaN(t)||isNaN(n))throw new TypeError(`invalid point ‘${JSON.stringify(e[0])}’`)}if("string"==typeof e[0]&&2==e[0].split(",").length&&([t,n]=e[0].split(","),t=E.wrap90(E.parse(t)),n=E.wrap180(E.parse(n)),r=e[1]||0,isNaN(t)||isNaN(n)))throw new TypeError(`invalid point ‘${e[0]}’`);if(null==t&&null==n&&([t,n]=e,t=E.wrap90(E.parse(t)),n=E.wrap180(E.parse(n)),r=e[2]||0,isNaN(t)||isNaN(n)))throw new TypeError(`invalid point ‘${e.toString()}’`);return new this(t,n,r)}toCartesian(){const e=this.datum?this.datum.ellipsoid:this.referenceFrame?this.referenceFrame.ellipsoid:P.WGS84,t=this.lat.toRadians(),n=this.lon.toRadians(),r=this.height,{a:o,f:i}=e,a=Math.sin(t),s=Math.cos(t),l=Math.sin(n),u=Math.cos(n),c=2*i-i*i,d=o/Math.sqrt(1-c*a*a);return new S((d+r)*s*u,(d+r)*s*l,(d*(1-c)+r)*a)}equals(e){if(!(e instanceof _))throw new TypeError(`invalid point ‘${e}’`);return!(Math.abs(this.lat-e.lat)>Number.EPSILON||Math.abs(this.lon-e.lon)>Number.EPSILON||Math.abs(this.height-e.height)>Number.EPSILON||this.datum!=e.datum||this.referenceFrame!=e.referenceFrame||this.epoch!=e.epoch)}toString(e="d",t=void 0,n=null){if(!["d","dm","dms","n"].includes(e))throw new RangeError(`invalid format ‘${e}’`);const r=(this.height>=0?" +":" ")+this.height.toFixed(n)+"m";return"n"==e?(null==t&&(t=4),`${this.lat.toFixed(t)}, ${this.lon.toFixed(t)}${null==n?"":r}`):`${E.toLat(this.lat,e,t)}, ${E.toLon(this.lon,e,t)}${null==n?"":r}`}}class S extends A{constructor(e,t,n){super(e,t,n)}toLatLon(e=P.WGS84){if(!e||!e.a)throw new TypeError(`invalid ellipsoid ‘${e}’`);const{x:t,y:n,z:r}=this,{a:o,b:i,f:a}=e,s=2*a-a*a,l=s/(1-s),u=Math.sqrt(t*t+n*n),c=i*r/(o*u)*(1+l*i/Math.sqrt(u*u+r*r)),d=c/Math.sqrt(1+c*c),h=d/c,p=isNaN(h)?0:Math.atan2(r+l*i*d*d*d,u-s*o*h*h*h),m=Math.atan2(n,t),f=Math.sin(p),g=u*Math.cos(p)+r*f-o*o/(o/Math.sqrt(1-s*f*f));return new _(p.toDegrees(),m.toDegrees(),g)}toString(e=0){return`[${this.x.toFixed(e)},${this.y.toFixed(e)},${this.z.toFixed(e)}]`}}const M={WGS84:{a:6378137,b:6356752.314245,f:1/298.257223563},Airy1830:{a:6377563.396,b:6356256.909,f:1/299.3249646},AiryModified:{a:6377340.189,b:6356034.448,f:1/299.3249646},Bessel1841:{a:6377397.155,b:6356078.962818,f:1/299.1528128},Clarke1866:{a:6378206.4,b:6356583.8,f:1/294.978698214},Clarke1880IGN:{a:6378249.2,b:6356515,f:1/293.466021294},GRS80:{a:6378137,b:6356752.31414,f:1/298.257222101},Intl1924:{a:6378388,b:6356911.946,f:1/297},WGS72:{a:6378135,b:6356750.5,f:1/298.26}},x={ED50:{ellipsoid:M.Intl1924,transform:[89.5,93.8,123.1,-1.2,0,0,.156]},ETRS89:{ellipsoid:M.GRS80,transform:[0,0,0,0,0,0,0]},Irl1975:{ellipsoid:M.AiryModified,transform:[-482.53,130.596,-564.557,-8.15,1.042,.214,.631]},NAD27:{ellipsoid:M.Clarke1866,transform:[8,-160,-176,0,0,0,0]},NAD83:{ellipsoid:M.GRS80,transform:[.9956,-1.9103,-.5215,-62e-5,.025915,.009426,.011599]},NTF:{ellipsoid:M.Clarke1880IGN,transform:[168,60,-320,0,0,0,0]},OSGB36:{ellipsoid:M.Airy1830,transform:[-446.448,125.157,-542.06,20.4894,-.1502,-.247,-.8421]},Potsdam:{ellipsoid:M.Bessel1841,transform:[-582,-105,-414,-8.3,1.04,.35,-3.08]},TokyoJapan:{ellipsoid:M.Bessel1841,transform:[148,-507,-685,0,0,0,0]},WGS72:{ellipsoid:M.WGS72,transform:[0,0,-4.5,-.22,0,0,.554]},WGS84:{ellipsoid:M.WGS84,transform:[0,0,0,0,0,0,0]}};Object.keys(M).forEach(e=>Object.freeze(M[e])),Object.keys(x).forEach(e=>{Object.freeze(x[e]),Object.freeze(x[e].transform)});class $ extends _{constructor(e,t,n=0,r=x.WGS84){if(!r||null==r.ellipsoid)throw new TypeError(`unrecognised datum ‘${r}’`);super(e,t,n),this._datum=r}get datum(){return this._datum}static get ellipsoids(){return M}static get datums(){return x}static parse(...e){let t=x.WGS84;if((4==e.length||3==e.length&&"object"==typeof e[2])&&(t=e.pop()),!t||null==t.ellipsoid)throw new TypeError(`unrecognised datum ‘${t}’`);const n=super.parse(...e);return n._datum=t,n}convertDatum(e){if(!e||null==e.ellipsoid)throw new TypeError(`unrecognised datum ‘${e}’`);return this.toCartesian().convertDatum(e).toLatLon()}toCartesian(){const e=super.toCartesian();return new L(e.x,e.y,e.z,this.datum)}}class L extends S{constructor(e,t,n,r=void 0){if(r&&null==r.ellipsoid)throw new TypeError(`unrecognised datum ‘${r}’`);super(e,t,n),r&&(this._datum=r)}get datum(){return this._datum}set datum(e){if(!e||null==e.ellipsoid)throw new TypeError(`unrecognised datum ‘${e}’`);this._datum=e}toLatLon(e=void 0){e&&(console.info("datum parameter to Cartesian_Datum.toLatLon is deprecated: set datum before calling toLatLon()"),this.datum=e);const t=this.datum||x.WGS84;if(!t||null==t.ellipsoid)throw new TypeError(`unrecognised datum ‘${t}’`);const n=super.toLatLon(t.ellipsoid);return new $(n.lat,n.lon,n.height,this.datum)}convertDatum(e){if(!e||null==e.ellipsoid)throw new TypeError(`unrecognised datum ‘${e}’`);if(!this.datum)throw new TypeError("cartesian coordinate has no datum");let t=null,n=null;null!=this.datum&&this.datum!=x.WGS84||(t=this,n=e.transform),e==x.WGS84&&(t=this,n=this.datum.transform.map(e=>-e)),null==n&&(t=this.convertDatum(x.WGS84),n=e.transform);const r=t.applyTransform(n);return r.datum=e,r}applyTransform(e){const{x:t,y:n,z:r}=this,o=e[0],i=e[1],a=e[2],s=e[3]/1e6+1,l=(e[4]/3600).toRadians(),u=(e[5]/3600).toRadians(),c=(e[6]/3600).toRadians();return new L(o+t*s-n*c+r*u,i+t*c+n*s-r*l,a-t*u+n*l+r*s)}}const T={trueOrigin:{lat:49,lon:-2},falseOrigin:{easting:-4e5,northing:1e5},scaleFactor:.9996012717,ellipsoid:$.ellipsoids.Airy1830};class C{constructor(e,t){if(this.easting=Number(e),this.northing=Number(t),isNaN(e)||this.easting<0||this.easting>7e5)throw new RangeError(`invalid easting ‘${e}’`);if(isNaN(t)||this.northing<0||this.northing>13e5)throw new RangeError(`invalid northing ‘${t}’`)}toLatLon(e=$.datums.WGS84){const{easting:t,northing:n}=this,{a:r,b:o}=T.ellipsoid,i=T.trueOrigin.lat.toRadians(),a=T.trueOrigin.lon.toRadians(),s=-T.falseOrigin.easting,l=-T.falseOrigin.northing,u=T.scaleFactor,c=1-o*o/(r*r),d=(r-o)/(r+o),h=d*d,p=d*d*d;let m=i,f=0;do{m=(n-l-f)/(r*u)+m,f=o*u*((1+d+5/4*h+5/4*p)*(m-i)-(3*d+3*d*d+21/8*p)*Math.sin(m-i)*Math.cos(m+i)+(15/8*h+15/8*p)*Math.sin(2*(m-i))*Math.cos(2*(m+i))-35/24*p*Math.sin(3*(m-i))*Math.cos(3*(m+i)))}while(Math.abs(n-l-f)>=1e-5);const g=Math.cos(m),v=Math.sin(m),y=r*u/Math.sqrt(1-c*v*v),b=r*u*(1-c)/Math.pow(1-c*v*v,1.5),w=y/b-1,E=Math.tan(m),k=E*E,A=k*k,P=1/g,O=y*y*y,_=O*y*y,S=t-s,M=S*S,x=M*S,L=M*M,C=x*M;m=m-E/(2*b*y)*M+E/(24*b*O)*(5+3*k+w-9*k*w)*L-E/(720*b*_)*(61+90*k+45*A)*(L*M);const j=a+P/y*S-P/(6*O)*(y/b+2*k)*x+P/(120*_)*(5+28*k+24*A)*C-P/(_*y*y*5040)*(61+662*k+1320*A+A*k*720)*(C*M);let D=new N(m.toDegrees(),j.toDegrees(),0,$.datums.OSGB36);return e!=$.datums.OSGB36&&(D=D.convertDatum(e),D=new N(D.lat,D.lon,D.height,D.datum)),D}static parse(e){let t=(e=String(e).trim()).match(/^(\d+),\s*(\d+)$/);if(t)return new C(t[1],t[2]);if(t=e.match(/^[HNST][ABCDEFGHJKLMNOPQRSTUVWXYZ]\s*[0-9]+\s*[0-9]+$/i),!t)throw new Error(`invalid grid reference ‘${e}’`);let n=e.toUpperCase().charCodeAt(0)-"A".charCodeAt(0),r=e.toUpperCase().charCodeAt(1)-"A".charCodeAt(0);n>7&&n--,r>7&&r--;const o=(n-2)%5*5+r%5,i=19-5*Math.floor(n/5)-Math.floor(r/5);let a=e.slice(2).trim().split(/\s+/);if(1==a.length&&(a=[a[0].slice(0,a[0].length/2),a[0].slice(a[0].length/2)]),a[0].length!=a[1].length)throw new Error(`invalid grid reference ‘${e}’`);a[0]=a[0].padEnd(5,"0"),a[1]=a[1].padEnd(5,"0");const s=o+a[0],l=i+a[1];return new C(s,l)}toString(e=10){if(![0,2,4,6,8,10,12,14,16].includes(Number(e)))throw new RangeError(`invalid precision ‘${e}’`);let{easting:t,northing:n}=this;if(0==e){const e={useGrouping:!1,minimumIntegerDigits:6,maximumFractionDigits:3};return`${t.toLocaleString("en",e)},${n.toLocaleString("en",e)}`}const r=Math.floor(t/1e5),o=Math.floor(n/1e5);let i=19-o-(19-o)%5+Math.floor((r+10)/5),a=5*(19-o)%25+r%5;i>7&&i++,a>7&&a++;const s=String.fromCharCode(i+"A".charCodeAt(0),a+"A".charCodeAt(0));return t=Math.floor(t%1e5/Math.pow(10,5-e/2)),n=Math.floor(n%1e5/Math.pow(10,5-e/2)),t=t.toString().padStart(e/2,"0"),n=n.toString().padStart(e/2,"0"),`${s} ${t} ${n}`}}class N extends ${toOsGrid(){const e=this.datum==$.datums.OSGB36?this:this.convertDatum($.datums.OSGB36),t=e.lat.toRadians(),n=e.lon.toRadians(),{a:r,b:o}=T.ellipsoid,i=T.trueOrigin.lat.toRadians(),a=T.trueOrigin.lon.toRadians(),s=-T.falseOrigin.easting,l=-T.falseOrigin.northing,c=T.scaleFactor,d=1-o*o/(r*r),h=(r-o)/(r+o),p=h*h,m=h*h*h,f=Math.cos(t),g=Math.sin(t),v=r*c/Math.sqrt(1-d*g*g),y=r*c*(1-d)/Math.pow(1-d*g*g,1.5),b=v/y-1,w=o*c*((1+h+5/4*p+5/4*m)*(t-i)-(3*h+3*h*h+21/8*m)*Math.sin(t-i)*Math.cos(t+i)+(15/8*p+15/8*m)*Math.sin(2*(t-i))*Math.cos(2*(t+i))-35/24*m*Math.sin(3*(t-i))*Math.cos(3*(t+i))),E=f*f*f,k=E*f*f,A=Math.tan(t)*Math.tan(t),P=A*A,O=n-a,_=O*O,S=_*O,M=S*O,x=M*O;let L=w+l+v/2*g*f*_+v/24*g*E*(5-A+9*b)*M+v/720*g*k*(61-58*A+P)*(x*O),N=s+v*f*O+v/6*E*(v/y-A)*S+v/120*k*(5-18*A+P+14*b-58*A*b)*x;L=Number(L.toFixed(3)),N=Number(N.toFixed(3));try{return new C(N,L)}catch(u){throw new Error(`${u.message} from (${e.lat.toFixed(6)},${e.lon.toFixed(6)}).toOsGrid()`)}}convertDatum(e){const t=super.convertDatum(e);return new N(t.lat,t.lon,t.height,t.datum)}}var j=n(535);const D="input.govuk-input";function F(e,t){const n=e.trim()&&Number(e.trim()),r=t.trim()&&Number(t.trim());return n&&r&&n>=49.85&&n<=60.859&&r>=-13.687&&r<=1.767?{valid:!0,value:{lat:n,long:r}}:{valid:!1}}function I(e,t){const n=e.trim()&&Number(e.trim()),r=t.trim()&&Number(t.trim());return n&&r&&n>=0&&n<=7e5&&r>=0&&r<=13e5?{valid:!0,value:{easting:n,northing:r}}:{valid:!1}}function R(e){if(!e)return{valid:!1};const t=/^((([sS]|[nN])[a-hA-Hj-zJ-Z])|(([tT]|[oO])[abfglmqrvwABFGLMQRVW])|([hH][l-zL-Z])|([jJ][lmqrvwLMQRVW]))\s?(([0-9]{3})\s?([0-9]{3})|([0-9]{4})\s?([0-9]{4})|([0-9]{5})\s?([0-9]{5}))$/.exec(e);return null===t?{valid:!1}:{valid:!0,value:t[0]}}function B(e){const t=e.querySelectorAll(D);if(2!==t.length)throw new Error("Expected 2 inputs for lat and long");return{latInput:t[0],longInput:t[1]}}function G(e){const t=e.querySelectorAll(D);if(2!==t.length)throw new Error("Expected 2 inputs for easting and northing");return{eastingInput:t[0],northingInput:t[1]}}function W(e){const t=e.querySelector(D);if(null===t)throw new Error("Expected 1 input for osgridref");return t}function q(e){return{zoom:"16",center:e,markers:[{id:"location",coords:e}]}}function V(e,t,n){var r;if(!(t instanceof HTMLDivElement))return;const o=t.querySelector(".app-location-field-inputs");if(!(o instanceof HTMLDivElement))return;const i=t.dataset.locationtype;if(!i||!["latlongfield","eastingnorthingfield","osgridreffield"].includes(i))return;const a=document.createElement("div"),s=`map_${n}`;a.setAttribute("id",s),a.setAttribute("class","map-container");const l=null!=(r=function(e){switch(e.dataset.locationtype){case"latlongfield":return function(e){const{latInput:t,longInput:n}=B(e),r=F(t.value,n.value);if(r.valid)return q([r.value.long,r.value.lat])}(e);case"eastingnorthingfield":return function(e){const{eastingInput:t,northingInput:n}=G(e),r=I(t.value,n.value);if(!r.valid)return;const o=Y(r.value);return q([o.long,o.lat])}(e);case"osgridreffield":return function(e){const t=R(W(e).value);if(!t.valid)return;const n=Z(t.value);return q([n.long,n.lat])}(e);default:throw new Error("Not implemented")}}(t))?r:ee;o.after(a);const{map:u,interactPlugin:c}=ie(s,l,e);u.on(te.mapReady,function(e){switch(i){case"latlongfield":!function(e,t,n){const{latInput:r,longInput:o}=B(e);function i(){const e=F(r.value,o.value);if(e.valid){const r=[e.value.long,e.value.lat];ae(t,n,r)}}t.on(te.interactMarkerChange,function(e){r.value=e.coords[1].toFixed(7),o.value=e.coords[0].toFixed(7)}),r.addEventListener("change",i,!1),o.addEventListener("change",i,!1)}(t,u,e.map);break;case"eastingnorthingfield":!function(e,t,n){const{eastingInput:r,northingInput:o}=G(e);function i(){const e=I(r.value,o.value);if(e.valid){const r=Y(e.value),o=[r.long,r.lat];ae(t,n,o)}}t.on(te.interactMarkerChange,function(e){const t=K({lat:e.coords[1],long:e.coords[0]});r.value=t.easting.toFixed(0),o.value=t.northing.toFixed(0)}),r.addEventListener("change",i,!1),o.addEventListener("change",i,!1)}(t,u,e.map);break;case"osgridreffield":!function(e,t,n){const r=W(e);t.on(te.interactMarkerChange,function(e){const t=Q({lat:e.coords[1],long:e.coords[0]});r.value=t}),r.addEventListener("change",function(){const e=R(r.value);if(e.valid){const r=Z(e.value),o=[r.long,r.lat];ae(t,n,o)}},!1)}(t,u,e.map);break;default:throw new Error("Not implemented")}u.addPanel("info",{showLabel:!0,label:"How to use the map",mobile:{slot:"drawer",open:!0,dismissible:!0,modal:!1},tablet:{slot:"drawer",open:!0,dismissible:!0,modal:!1},desktop:{slot:"drawer",open:!0,dismissible:!0,modal:!1},html:"<ul><li>Search for a place or postcode</li><li>Use the + and - icons to zoom in and out</li><li>Use a mouse or keyboard to centre the point at the location</li><li>Click to add the location to the map</li></ul>"}),c.enable()})}function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},H.apply(null,arguments)}const z=169,U={VTS_OUTDOOR_URL:"/api/maps/vts/OS_VTS_3857_Outdoor.json",VTS_DARK_URL:"/api/maps/vts/OS_VTS_3857_Dark.json",VTS_BLACK_AND_WHITE_URL:"/api/maps/vts/OS_VTS_3857_Black_and_White.json",VTS_AERIAL_URL:"/api/maps/vts/esri-aerial.json"};function K({lat:e,long:t}){return new N(e,t).toOsGrid()}function Y({easting:e,northing:t}){const n=new C(e,t).toLatLon();return{lat:n.latitude,long:n.longitude}}function Q({lat:e,long:t}){return new N(e,t).toOsGrid().toString()}function Z(e){const t=C.parse(e).toLatLon();return{lat:t.latitude,long:t.longitude}}function J(e){if("Point"===e.geometry.type){const[t,n]=e.geometry.coordinates;return new N(n,t).toOsGrid().toString()}if("LineString"===e.geometry.type){const[t,n]=e.geometry.coordinates[0];return new N(n,t).toOsGrid().toString()}{const[t,n]=e.geometry.coordinates[0][0];return new N(n,t).toOsGrid().toString()}}function X(e){if("Point"===e.geometry.type){const[t,n]=e.geometry.coordinates;return new N(n,t).toOsGrid().toString()}{const t=y(e),[n,r]=t.geometry.coordinates;return new N(r,n).toOsGrid().toString()}}const ee={zoom:"6",center:[-2.421975,53.825564]},te={mapReady:"map:ready",interactMarkerChange:"interact:markerchange",drawReady:"draw:ready",drawCreated:"draw:created",drawEdited:"draw:edited",drawCancelled:"draw:cancelled"};function ne(e){return function(t){t.submitter instanceof HTMLButtonElement&&e.includes(t.submitter)||t.preventDefault()}}function re(e={}){const{assetPath:t="/assets",apiPath:n="/form/api",data:r=U}=e,o=document.querySelectorAll(".app-location-field"),i=document.querySelectorAll(".app-geospatial-field");if(o.length){const e=o[0].closest("form");if(null===e)return;const t=Array.from(e.querySelectorAll("button"));e.addEventListener("submit",ne(t),!1)}if(i.length){const e=i[0].closest("form");if(null===e)return;const t=Array.from(e.querySelectorAll("button"));e.addEventListener("submit",ne(t),!1)}o.forEach((e,o)=>{V({assetPath:t,apiPath:n,data:r},e,o)}),i.forEach((e,o)=>{(0,j.processGeospatial)({assetPath:t,apiPath:n,data:r},e,o)})}function oe(e){return function(t,n){if(t.startsWith("https://api.os.uk")){if("Tile"===n)return{url:t.replace("https://api.os.uk/maps/vector/v1/vts",`${window.location.origin}${e}`),headers:{}};if("Style"!==n)return{url:`${e}/map-proxy?url=${encodeURIComponent(t)}`,headers:{}}}if(t.startsWith("https://raw.githubusercontent.com/OrdnanceSurvey/OS-Vector-Tile-API-Stylesheets/main")){const n=t.substring(84);return{url:`${e}/maps/vts${n}`,headers:{}}}return{url:t,headers:{}}}}function ie(e,t,i){var a;const{assetPath:c,apiPath:d,data:p=U}=i,m="Ordnance survey logo",g=function(){var e;return s(s({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"interact",load:(e=(0,o.A)(function*(){return(yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,706))).manifest}),function(){return e.apply(this,arguments)})})}({markerColor:{outdoor:"#ff0000",dark:"#00ff00"},interactionModes:["placeMarker"],multiSelect:!1});return{map:new r.I(e,H({enableFullscreen:!0,autoColorScheme:!1,mapProvider:f(),behaviour:"inline",minZoom:6,maxZoom:18,containerHeight:"400px",enableZoomControls:!0,transformRequest:oe(d)},t,{plugins:[l({mapStyles:[{id:"outdoor",label:"Outdoor",url:p.VTS_OUTDOOR_URL,thumbnail:`${c}/interactive-map/assets/images/outdoor-map-thumb.jpg`,logo:`${c}/interactive-map/assets/images/os-logo.svg`,logoAltText:m,attribution:`Contains OS data ${String.fromCodePoint(z)} Crown copyright and database rights ${(new Date).getFullYear()}`,backgroundColor:"#f5f5f0"},{id:"dark",label:"Dark",url:p.VTS_DARK_URL,mapColorScheme:"dark",appColorScheme:"dark",thumbnail:`${c}/interactive-map/assets/images/dark-map-thumb.jpg`,logo:`${c}/interactive-map/assets/images/os-logo-white.svg`,logoAltText:m,attribution:`Contains OS data ${String.fromCodePoint(z)} Crown copyright and database rights ${(new Date).getFullYear()}`},{id:"black-and-white",label:"Black/White",url:p.VTS_BLACK_AND_WHITE_URL,thumbnail:`${c}/interactive-map/assets/images/black-and-white-map-thumb.jpg`,logo:`${c}/interactive-map/assets/images/os-logo-black.svg`,logoAltText:m,attribution:`Contains OS data ${String.fromCodePoint(z)} Crown copyright and database rights ${(new Date).getFullYear()}`},{id:"aerial",label:"Aerial",url:p.VTS_AERIAL_URL,thumbnail:`${c}/interactive-map/assets/images/aerial-map-thumb.jpg`,logo:`${c}/interactive-map/assets/images/esri-logo.png`,logoAltText:"Powered by Esri",attribution:`Tiles ${String.fromCodePoint(z)} Esri — Source: Esri, Maxar, Earthstar Geographics, and the GIS User Community ${(new Date).getFullYear()}`}]}),g,h({osNamesURL:`${d}/geocode-proxy?query={query}`,width:"300px",showMarker:!1}),u({units:"metric"}),...null!=(a=t.plugins)?a:[]]})),interactPlugin:g}}function ae(e,t,n){e.addMarker("location",n),t.flyTo({center:n,zoom:14,essential:!0})}},321:(e,t,n)=>{function r(e,t,n,r,o,i,a){try{var s=e[i](a),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise(function(o,i){var a=e.apply(t,n);function s(e){r(a,o,i,s,l,"next",e)}function l(e){r(a,o,i,s,l,"throw",e)}s(void 0)})}}n.d(t,{A:()=>o})},585:(e,t,n)=>{function r(e){return r="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},r(e)}function o(e,t,n){return(t=function(e){var t=function(e){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==r(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,{A:()=>o})},505:(e,t,n)=>{function r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,{A:()=>r})},196:(e,t,n)=>{n.d(t,{E:()=>$,I:()=>F,a:()=>y,g:()=>l,r:()=>x,s:()=>S,t:()=>g});var r=n(321),o=n(585),i=n(505),a=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)},s=e=>{var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e;if("hybrid"!==t)return!1;var o=null!=n?n:r;return window.matchMedia("(max-width: ".concat(o,"px)")).matches},l=e=>{var{behaviour:t}=e;return["mapOnly","buttonFirst"].includes(t)||s(e)};function u(){c.forEach(e=>{!function(e,t){var n;if(!1!==e.config.manageHistoryState){var r=e.id===t,o="hybrid"===e.config.behaviour&&!s(e.config),i=null===(n=e.rootEl)||void 0===n?void 0:n.children.length;!r||i&&!e._isHidden?r||!i||o||function(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)}(e):function(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)}(e)}}(e,a(e.config.mapViewQueryParam))})}var c=new Map,d=!1;function h(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 p(e){try{return JSON.parse(e)}catch(e){return console.log(e),null}}function m(e,t){e.innerHTML='<div class="im-c-error">'.concat(t,"</div>")}var f=(e,t,n,r)=>e!==t&&!(null!=n&&n.contains(e))&&e.matches(":not([aria-hidden]):not([data-fm-inert])")&&r.contains(e);function g(e){var t,{containerEl:n,isFullscreen:r,boundaryEl:o=document.body}=e,i=Array.from(o.querySelectorAll("[data-fm-inert]"));if(n&&(i=i.filter(e=>!n.contains(e))),i.forEach(e=>{e.removeAttribute("aria-hidden"),delete e.dataset.fmInert}),r){null===(t=document.activeElement)||void 0===t||t.blur();for(var a=n;null!==(s=a)&&void 0!==s&&s.parentNode&&a!==o&&a!==document.body;){var s,l=a.parentNode;for(var u of l.children)f(u,a,n,o)&&(u.setAttribute("aria-hidden","true"),u.dataset.fmInert="");a=l}}}function v(e){var{isFullscreen:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{config:n,rootEl:r}=e,{pageTitle:o,behaviour:i,containerHeight:l}=n,u=null!=t?t:function(e){var{id:t,behaviour:n,manageHistoryState:r}=e;return"mapOnly"===n||("buttonFirst"===n?!1===r||a(e.mapViewQueryParam)===t:s(e)&&a(e.mapViewQueryParam)===t)}(n);["mapOnly","buttonFirst","hybrid"].includes(i)&&(g({containerEl:r,isFullscreen:u}),document.documentElement.classList.toggle("im-is-fullscreen",u),r.classList.toggle("im-is-fullscreen",u)),["buttonFirst","hybrid"].includes(i)&&function(e){var{pageTitle:t,isFullscreen:n}=e,r=document.title.split(": "),o=r[r.length-1];document.title=n?"".concat(t,": ").concat(o):o}({pageTitle:o,isFullscreen:u});var c=u||"buttonFirst"!==i&&!s(n)?l:"auto";r.style.height=u?"100%":c}function y(){document.body.classList.remove("im-is-loading")}function b(e){var{id:t,behaviour:n}=e,r=a(e.mapViewQueryParam)===t;return["mapOnly","inline"].includes(n)||"hybrid"===n&&!s(e)||r}var w={appColorScheme:"light",autoColorScheme:!1,backgroundColor:"var(--background-color)",behaviour:"buttonFirst",buttonClass:"im-c-open-map-button",buttonText:"Map view",containerHeight:"600px",deviceNotSupportedText:"Your device is not supported. A map is available with a more up-to-date browser or device.",enableFullscreen:!1,enableZoomControls:!0,genericErrorText:"There was a problem loading the map. Please try again later.",hasExitButton:!1,hybridWidth:null,keyboardHintText:'<span class="im-u-visually-hidden">Press </span><kbd>Alt</kbd> + <kbd>K</kbd> <span class="im-u-visually-hidden">to view </span>keyboard shortcuts',mapLabel:"Interactive map",mapProvider:null,mapSize:"small",manageHistoryState:!0,mapViewQueryParam:"mv",urlPosition:"sync",maxMobileWidth:640,minDesktopWidth:835,nudgePanDelta:5,nudgeZoomDelta:.1,panDelta:100,pageTitle:"Map view",preserveStateOnClose:!1,readMapText:!1,reverseGeocodeProvider:null,zoomDelta:1},E=["mapViewParamKey"];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 A(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){(0,o.A)(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}var P=window.matchMedia("(pointer: coarse)").matches?"touch":"unknown",O=new Set;function _(e){P!==e&&(P=e,O.forEach(t=>{t(e)}))}function S(e){return O.add(e),()=>{O.delete(e)}}var M=null;function x(e,t){if(!M)throw new Error("ReverseGeocode not initialised");return M(e,t)}var $={APP_ADD_MARKER:"app:addmarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"};class L{constructor(){this.events={},this._queued={}}on(e,t){if(this.events[e]||(this.events[e]=[]),this.events[e].push(t),void 0!==this._queued[e]){try{t(...this._queued[e])}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}delete this._queued[e]}return this}off(e,t){return this.events[e]?(this.events[e]=t?this.events[e].filter(e=>e!==t):[],this):this}emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return this.events[e]?(this.events[e].forEach(t=>{try{t(...n)}catch(t){console.error("Error in event handler for '".concat(e,"':"),t)}}),this):this}emitWhenReady(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]&&0!==this.events[e].length?this.emit(e,...n):(this._queued[e]=n,this)}destroy(){this.events={},this._queued={}}}if("undefined"!=typeof crypto&&!crypto.randomUUID){var T=0;crypto.randomUUID=()=>(T=Math.max(Date.now(),T+1),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e,t)=>{var n=t<12?Number.parseInt(T.toString(16).padStart(12,"0")[t],16):16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)}))}var C="undefined"!=typeof AbortController&&!Object.getPrototypeOf((new AbortController).signal).throwIfAborted;if(C&&(Object.getPrototypeOf((new AbortController).signal).throwIfAborted=function(){if(this.aborted){var e=new Error("The operation was aborted.");throw e.name="AbortError",e}}),C&&"undefined"!=typeof URL&&URL.createObjectURL){var N=URL.createObjectURL.bind(URL);URL.createObjectURL=e=>(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"})),N(e))}function j(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 D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach(function(t){(0,o.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}class F{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,o.A)(this,"_openButton",null),(0,o.A)(this,"_root",null),(0,o.A)(this,"_breakpointDetector",null),(0,o.A)(this,"_interfaceDetectorCleanup",null),(0,o.A)(this,"_hybridBehaviourCleanup",null),(0,o.A)(this,"_isHidden",!1),this.id=e,this.rootEl=document.getElementById(e),!this.rootEl)throw new Error('Element with id "'.concat(e,'" not found'));this.eventBus=new L,this.config=this._buildConfig(t),function(e,t){var{mapProvider:n,deviceNotSupportedText:r}=t,o=null==n?void 0:n.checkDeviceCapabilities();return n?!(null==o||!o.isSupported)||(m(e,r),y(),console.log(null==o?void 0:o.error),!1):(console.log("No map provider"),!1)}(this.rootEl,this.config)&&(["buttonFirst","hybrid"].includes(this.config.behaviour)&&function(e){d||(globalThis.addEventListener("popstate",u),d=!0),c.set(e.id,e)}(this),this._breakpointDetector=function(e){var t,{maxMobileWidth:n,minDesktopWidth:r,containerEl:o}=e,i="unknown",a=new Set,s=e=>{e!==i&&(i=e,requestAnimationFrame(()=>{i===e&&a.forEach(t=>t(e))}))};if(o){var l=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(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),s=t(a);e.dataset.breakpoint=s,n(s)});return i.observe(e),{initialType:o,cleanup:()=>{i.disconnect(),e.style.containerType="",delete e.dataset.breakpoint}}}(o,e=>function(e,t,n){return e<=t?"mobile":e>=n?"desktop":"tablet"}(e,n,r),s);i=l.initialType,s(l.initialType),t=l.cleanup}else{var u=function(e,t,n){var r={mobile:window.matchMedia("(max-width: ".concat(e,"px)")),desktop:window.matchMedia("(min-width: ".concat(t,"px)"))},o=()=>{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:()=>{r.mobile.removeEventListener("change",o),r.desktop.removeEventListener("change",o)}}}(n,r,s);t=u.cleanup}return{subscribe:e=>(a.add(e),()=>a.delete(e)),getBreakpoint:()=>i,destroy:()=>{var e;null===(e=t)||void 0===e||e(),a.clear()}}}({maxMobileWidth:this.config.maxMobileWidth,minDesktopWidth:this.config.minDesktopWidth,containerEl:this.rootEl}),this._interfaceDetectorCleanup=function(){var e=window.matchMedia("(pointer: coarse)"),t=e=>{_(e.matches?"touch":"mouse")};e.addEventListener("change",t);var n=e=>{var t,n="pen"===(t=e.pointerType)||"touch"===t?"touch":"mouse"===t?"mouse":"unknown";setTimeout(()=>_(n),150)},r=e=>{"Tab"===e.key&&_("keyboard")};return window.addEventListener("pointerdown",n,{passive:!0}),window.addEventListener("keydown",r,{passive:!0}),()=>{e.removeEventListener("change",t),window.removeEventListener("pointerdown",n),window.removeEventListener("keydown",r)}}(),this._initialize())}_buildConfig(e){var t=function(e){var t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach(function(t){(0,o.A)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},null==e?void 0:e.dataset),n={};for(var r of Object.keys(t))n[r]=p(t[r]);return n}(this.rootEl);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{mapViewParamKey:t}=e,n=(0,i.A)(e,E),r=A(A({},w),n);return void 0!==t&&(console.warn("[InteractiveMap] mapViewParamKey is deprecated — use mapViewQueryParam instead."),r.mapViewQueryParam=t),r}(D(D({id:this.id,title:document.title},t),e))}_initialize(){["buttonFirst","hybrid"].includes(this.config.behaviour)&&(this._openButton=function(e,t,n){var{id:r,buttonText:o,buttonClass:i}=e,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 ");t.insertAdjacentHTML("beforebegin",a);var s=t.previousElementSibling,l=new URL(window.location.href);return l.searchParams.set(e.mapViewQueryParam,r),s.setAttribute("href",l.toString()),s.addEventListener("click",e=>{e.preventDefault(),n(e)}),s}(this.config,this.rootEl,e=>{this._handleButtonClick(e)})),this._hybridBehaviourCleanup=function(e){var{behaviour:t,hybridWidth:n,maxMobileWidth:r}=e.config;if("buttonFirst"===t&&e._breakpointDetector.subscribe(()=>{b(e.config)?e.loadApp():e.removeApp()}),"hybrid"===t){var o=null!=n?n:r,i=window.matchMedia("(max-width: ".concat(o,"px)")),a=()=>{b(e.config)?e._isHidden?e.showApp():null==e._root?e.loadApp():v(e):e._root&&e.hideApp()};return i.addEventListener("change",a),()=>i.removeEventListener("change",a)}return null}(this),b(this.config)?this.loadApp():y()}_handleButtonClick(e){this.config.manageHistoryState&&history.pushState({isBack:!0},"",e.currentTarget.getAttribute("href")),this._isHidden?this.showApp():this.loadApp()}_removeMapParamFromUrl(e,t){var n=new RegExp("[?&]".concat(t,"=[^&]*(&|$)"));return n.test(e)?e.replace(n,(e,t)=>"&"===t?"?":"").replace(/\?$/,""):e}_handleExitClick(){var e;if(this.config.preserveStateOnClose?this.hideApp():this.removeApp(),this.config.manageHistoryState)if(null!==(e=history.state)&&void 0!==e&&e.isBack)history.back();else{var t=this.config.mapViewQueryParam,n=this._removeMapParamFromUrl(location.href,t);history.replaceState(history.state,"",n)}}loadApp(){var e=this;return(0,r.A)(function*(){e._openButton&&(e._openButton.style.display="none");try{var{initialiseApp:t}=yield Promise.all([n.e(402),n.e(641)]).then(n.bind(n,967)),{MapProvider:o,mapFramework:i,mapProviderConfig:a}=yield e.config.mapProvider.load();e.config.reverseGeocodeProvider&&function(e,t){var{url:n,transformRequest:o,load:i}=e;M=function(){var e=(0,r.A)(function*(e,r){return(yield i())(n,o,t,e,r)});return function(t,n){return e.apply(this,arguments)}}()}(e.config.reverseGeocodeProvider,a.crs);var s=yield t(e.rootEl,D(D({id:e.id,initialBreakpoint:e._breakpointDetector.getBreakpoint(),initialInterfaceType:"unknown"===P?(P="mouse","mouse"):P},e.config),{},{MapProvider:o,mapProviderConfig:a,mapFramework:i,eventBus:e.eventBus,breakpointDetector:e._breakpointDetector,handleExitClick:e._handleExitClick.bind(e)}));e._root=s._root,delete s._root;var l=new Set(["on","off","emit"]);Object.keys(s).forEach(t=>{l.has(t)||(e[t]=s[t])}),v(e),e.eventBus.emit($.APP_OPENED,{statePreserved:!1})}catch(u){throw m(e.rootEl,e.config.genericErrorText),console.error(u),u}})()}removeApp(){this._root&&"function"==typeof this.unmount&&(this.unmount(),this._root=null),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),v(this,{isFullscreen:!1}),this.eventBus.emit($.APP_CLOSED,{statePreserved:!1}),this.eventBus.emit($.MAP_DESTROY,{mapId:this.id})}hideApp(){this._isHidden=!0,this.rootEl.style.display="none",g({containerEl:this.rootEl,isFullscreen:!1}),this._openButton&&(this._openButton.removeAttribute("style"),this._openButton.focus()),document.documentElement.classList.remove("im-is-fullscreen"),this.rootEl.classList.remove("im-is-fullscreen");var e=document.title.split(": ");e.length>1&&(document.title=e.at(-1)),this.eventBus.emit($.APP_CLOSED,{statePreserved:!0})}showApp(){this._isHidden=!1,this.rootEl.style.display="",this._openButton&&(this._openButton.style.display="none"),v(this),this.eventBus.emit($.APP_OPENED,{statePreserved:!0})}destroy(){var e,t,n;this.removeApp(),null===(e=this._breakpointDetector)||void 0===e||e.destroy(),null===(t=this._interfaceDetectorCleanup)||void 0===t||t.call(this),null===(n=this._hybridBehaviourCleanup)||void 0===n||n.call(this),function(e){c.delete(e.id)}(this),this.eventBus.destroy()}on(){this.eventBus.on(...arguments)}off(){this.eventBus.off(...arguments)}emit(){this.eventBus.emit(...arguments)}addMarker(e,t,n){this.eventBus.emit($.APP_ADD_MARKER,{id:e,coords:t,options:n})}removeMarker(e){this.eventBus.emit($.APP_REMOVE_MARKER,e)}setMode(e){this.eventBus.emit($.APP_SET_MODE,e)}addButton(e,t){this.eventBus.emit($.APP_ADD_BUTTON,{id:e,config:t})}toggleButtonState(e,t,n){this.eventBus.emit($.APP_TOGGLE_BUTTON_STATE,{id:e,prop:t,value:n})}addPanel(e,t){this.eventBus.emit($.APP_ADD_PANEL,{id:e,config:t})}removePanel(e){this.eventBus.emit($.APP_REMOVE_PANEL,e)}showPanel(e){var{focus:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.eventBus.emit($.APP_SHOW_PANEL,{id:e,focus:t})}hidePanel(e){this.eventBus.emit($.APP_HIDE_PANEL,e)}addControl(e,t){this.eventBus.emit($.APP_ADD_CONTROL,{id:e,config:t})}fitToBounds(e){this.eventBus.emitWhenReady($.MAP_FIT_TO_BOUNDS,e)}setView(e){this.eventBus.emitWhenReady($.MAP_SET_VIEW,e)}open(){this._isHidden?this.showApp():this._root||this.loadApp()}close(){this._handleExitClick()}}},356:(e,t,n)=>{function r(e,t,n){if(null!==e)for(var o,i,a,s,l,u,c,d,h=0,p=0,m=e.type,f="FeatureCollection"===m,g="Feature"===m,v=f?e.features.length:1,y=0;y<v;y++){l=(d=!!(c=f?e.features[y].geometry:g?e.geometry:e)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var b=0;b<l;b++){var w=0,E=0;if(null!==(s=d?c.geometries[b]:c)){u=s.coordinates;var k=s.type;switch(h=!n||"Polygon"!==k&&"MultiPolygon"!==k?0:1,k){case null:break;case"Point":if(!1===t(u,p,y,w,E))return!1;p++,w++;break;case"LineString":case"MultiPoint":for(o=0;o<u.length;o++){if(!1===t(u[o],p,y,w,E))return!1;p++,"MultiPoint"===k&&w++}"LineString"===k&&w++;break;case"Polygon":case"MultiLineString":for(o=0;o<u.length;o++){for(i=0;i<u[o].length-h;i++){if(!1===t(u[o][i],p,y,w,E))return!1;p++}"MultiLineString"===k&&w++,"Polygon"===k&&E++}"Polygon"===k&&w++;break;case"MultiPolygon":for(o=0;o<u.length;o++){for(E=0,i=0;i<u[o].length;i++){for(a=0;a<u[o][i].length-h;a++){if(!1===t(u[o][i][a],p,y,w,E))return!1;p++}E++}w++}break;case"GeometryCollection":for(o=0;o<s.geometries.length;o++)if(!1===r(s.geometries[o],t,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}n.d(t,{Fh:()=>r})}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e].call(n.exports,n,n.exports,i),n.exports}function a(e){const t=e.currentTarget;if("true"===t.dataset.debouncing)return e.preventDefault(),void e.stopImmediatePropagation();t.dataset.debouncing="true",setTimeout(()=>{delete t.dataset.debouncing},1e4)}function s(e){a(e)}function l(e){"Enter"!==e.key&&" "!==e.key||a(e)}i.m=r,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.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);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;("object"==typeof s||"function"==typeof s)&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach(e=>a[e]=()=>n[e]);return a.default=()=>n,i.d(o,a),o},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce((t,n)=>(i.f[n](e,t),t),[])),i.u=e=>"javascripts/"+{7:"vendor/accessible-autocomplete",254:"im-search-plugin",264:"vendor/maplibre-gl",402:"vendor/@defra",641:"vendor/preact"}[e]+".min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},i.l=(e,t,r,o)=>{if(n[e])n[e].push(t);else{var a,s;if(void 0!==r)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var c=l[u];if(c.getAttribute("src")==e){a=c;break}}a||(s=!0,(a=document.createElement("script")).type="module",a.charset="utf-8",i.nc&&a.setAttribute("nonce",i.nc),a.src=e),n[e]=[t];var d=(t,r)=>{a.onerror=a.onload=null,clearTimeout(h);var o=n[e];if(delete n[e],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(e=>e(r)),t)return t(r)},h=setTimeout(d.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=d.bind(null,a.onerror),a.onload=d.bind(null,a.onload),s&&document.head.appendChild(a)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e+"../"})(),(()=>{var e={804:0};i.f.j=(t,n)=>{var r=i.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 a=i.p+i.u(t),s=new Error;i.l(a,n=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,r[1](s)}},"chunk-"+t,t)}};var t=(t,n)=>{var r,o,a=n[0],s=n[1],l=n[2],u=0;if(a.some(t=>0!==e[t])){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);l&&l(i)}for(t&&t(n);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},n=self.webpackChunk=self.webpackChunk||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();const u="aria-describedby",c="error-summary-title";function d(e,t,n){var r;const o=document.getElementById("uploadedFilesContainer"),i=o?o.closest("form"):null;if(!(i&&i instanceof HTMLFormElement))return;const a=i.querySelector("p.govuk-body");if(!a)return;const s=function(e,t){let n=null==e?void 0:e.querySelector("#statusInformation");if(!n){n=document.createElement("div"),n.id="statusInformation",n.className="govuk-visually-hidden",n.setAttribute("aria-live","polite");try{!function(e,t,n){var r;null!=t&&t.nextSibling&&t.parentNode===e?e.insertBefore(n,t.nextSibling):(null!=(r=null==t?void 0:t.parentNode)?r:e).appendChild(n)}(e,t,n)}catch(r){try{null==e||e.appendChild(n)}catch(o){document.body.appendChild(n)}}}return n}(i,a),l=n.querySelector('input[type="file"]');l&&l.setAttribute(u,"statusInformation");const c=function(e,t){let n=e.querySelector("dl.govuk-summary-list");if(!n){n=document.createElement("dl"),n.className="govuk-summary-list govuk-summary-list--long-key";const r=e.querySelector(".govuk-button-group");r?e.insertBefore(n,r):e.insertBefore(n,t.nextSibling)}return n}(i,a),d=document.querySelector(`[data-filename="${null==e?void 0:e.name}"]`);d&&d.remove();const h=function(e,t){var n,r;const o=document.createElement("div");return o.className="govuk-summary-list__row",o.setAttribute("data-filename",null!=(n=null==e?void 0:e.name)?n:""),o.innerHTML=`\n <dt class="govuk-summary-list__key">\n ${null!=(r=null==e?void 0:e.name)?r:""}\n </dt>\n <dd class="govuk-summary-list__value">\n <strong class="govuk-tag govuk-tag--yellow">${t}</strong>\n </dd>\n <dd class="govuk-summary-list__actions">\n </dd>\n `,o}(e,t);c.insertBefore(h,c.firstChild),s.textContent=`${null!=(r=null==e?void 0:e.name)?r:""} ${t}`}function h(e,t,n){if(document.querySelector(".govuk-error-summary"))return void(document.getElementById(c)?n.setAttribute(u,c):n.removeAttribute(u));t&&(t.innerHTML=`\n <div class="govuk-error-summary" data-module="govuk-error-summary">\n <div role="alert">\n <h2 class="govuk-error-summary__title" id="${c}">\n There is a problem\n </h2>\n <div class="govuk-error-summary__body">\n <ul class="govuk-list govuk-error-summary__list">\n <li>\n <a href="#file-upload">${e}</a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n `,n.setAttribute(u,c));const r=n.closest(".govuk-form-group");if(r){r.classList.add("govuk-form-group--error"),n.classList.add("govuk-file-upload--error");const t=n.id;let o=document.getElementById(`${t}-error`);o||(o=document.createElement("p"),o.id=`${t}-error`,o.className="govuk-error-message",o.innerHTML=`<span class="govuk-visually-hidden">Error:</span> ${e}`,r.insertBefore(o,n)),n.setAttribute(u,`error-summary-title ${t}-error`)}}function p(){window.history.replaceState(null,"",window.location.href),window.location.href=window.location.pathname}function m(){var e;const t=document.querySelector('form:has(input[type="file"])'),n=t?t.querySelector('input[type="file"]'):null,r=t?t.querySelector(".upload-file-button"):null,o=null!=(e=Array.from(document.querySelectorAll("button.govuk-button")).find(e=>"Continue"===e.textContent.trim()))?e:null,i=document.querySelector(".govuk-error-summary-container");if(!t||!n||!r)return;const a=t;let s=[],l=!1;const u=a.dataset.uploadId;n.addEventListener("change",()=>{i&&(i.innerHTML=""),n.files&&n.files.length>0&&(s=Array.from(n.files))}),r.addEventListener("click",e=>{if(0===s.length)return e.preventDefault(),void h("Select a file",i,n);l?e.preventDefault():(l=!0,function(e,t,n,r,o){for(let i=o.length-1;i>=0;i--)d(o[i],"Uploading…",e);t.focus(),setTimeout(()=>{t.disabled=!0,n.disabled=!0,r.disabled=!0},100)}(a,n,r,o,s),function(e,t,n,r,o,i){var a;if(!t.action||!i)return!1;e.preventDefault();const s=new FormData(t),l=!!t.dataset.proxyUrl,u=null!=(a=t.dataset.proxyUrl)?a:t.action,c={method:"POST",body:s,redirect:l?"follow":"manual"};l&&(c.mode="no-cors"),fetch(u,c).then(()=>{!function(e){let t=0;const n=setInterval(()=>{if(t++,t>=300)return clearInterval(n),void p();const r=function(e,t){const n=e.replace(/\/preview\/(draft|live)/g,"").replace(/\/{2,}/g,"/").replace(/\/$/,"").split("/").filter(Boolean);return`${n.length>2?`/${n.slice(0,n.length-2).join("/")}`:""}/upload-status/${t}`}(window.location.pathname,e);fetch(r,{headers:{Accept:"application/json"}}).then(e=>{if(!e.ok)throw new Error("Network response was not ok");return e.json()}).then(e=>{"ready"===e.uploadStatus&&(clearInterval(n),p())}).catch(()=>{clearInterval(n),p()})},1e3)}(i)}).catch(()=>(n.disabled=!1,r.disabled=!1,h("There was a problem uploading the file",o,n),null))}(e,a,n,r,i,u))})}function f(e,t={}){var n;const r=e.getAttribute("tabindex");function o(){var n;null==(n=t.onBlur)||n.call(e),r||e.removeAttribute("tabindex")}r||e.setAttribute("tabindex","-1"),e.addEventListener("focus",function(){e.addEventListener("blur",o,{once:!0})},{once:!0}),null==(n=t.onBeforeFocus)||n.call(e),e.focus()}function g(e=document.body){return!!e&&e.classList.contains("govuk-frontend-supported")}function v(e){return!!e&&"object"==typeof e&&!function(e){return Array.isArray(e)}(e)}function y(e){return!!e&&(e instanceof Element||e instanceof Document)}function b(e,t){return`${e.moduleName}: ${t}`}class w extends Error{constructor(...e){super(...e),this.name="GOVUKFrontendError"}}class E extends w{constructor(e=document.body){const t="noModule"in HTMLScriptElement.prototype?'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet':"GOV.UK Frontend is not supported in this browser";super(e?t:'GOV.UK Frontend initialised without `<script type="module">`'),this.name="SupportError"}}class k extends w{constructor(...e){super(...e),this.name="ConfigError"}}class A extends w{constructor(e){let t="string"==typeof e?e:"";if(v(e)){const{component:n,identifier:r,element:o,expectedType:i}=e;t=r,t+=o?` is not of type ${null!=i?i:"HTMLElement"}`:" not found",n&&(t=b(n,t))}super(t),this.name="ElementError"}}class P extends w{constructor(e){super("string"==typeof e?e:b(e,"Root element (`$root`) already initialised")),this.name="InitError"}}class O{get $root(){return this._$root}constructor(e){this._$root=void 0;const t=this.constructor;if("string"!=typeof t.moduleName)throw new P("`moduleName` not defined in component");if(!(e instanceof t.elementType))throw new A({element:e,component:t,identifier:"Root element (`$root`)",expectedType:t.elementType.name});this._$root=e,t.checkSupport(),this.checkInitialised();const n=t.moduleName;this.$root.setAttribute(`data-${n}-init`,"")}checkInitialised(){const e=this.constructor,t=e.moduleName;if(t&&function(e,t){return e instanceof HTMLElement&&e.hasAttribute(`data-${t}-init`)}(this.$root,t))throw new P(e)}static checkSupport(){if(!g())throw new E}}O.elementType=HTMLElement;const _=Symbol.for("configOverride");class S extends O{[_](e){return{}}get config(){return this._config}constructor(e,t){super(e),this._config=void 0;const n=this.constructor;if(!v(n.defaults))throw new k(b(n,"Config passed as parameter into constructor but no defaults defined"));const r=function(e,t){if(!v(e.schema))throw new k(b(e,"Config passed as parameter into constructor but no schema defined"));const n={},r=Object.entries(e.schema.properties);for(const o of r){const[r,i]=o,a=r.toString();a in t&&(n[a]=M(t[a],i)),"object"===(null==i?void 0:i.type)&&(n[a]=$(e.schema,t,r))}return n}(n,this._$root.dataset);this._config=x(n.defaults,null!=t?t:{},this[_](r),r)}}function M(e,t){const n=e?e.trim():"";let r,o=null==t?void 0:t.type;switch(o||(["true","false"].includes(n)&&(o="boolean"),n.length>0&&isFinite(Number(n))&&(o="number")),o){case"boolean":r="true"===n;break;case"number":r=Number(n);break;default:r=e}return r}function x(...e){const t={};for(const n of e)for(const e of Object.keys(n)){const r=t[e],o=n[e];v(r)&&v(o)?t[e]=x(r,o):t[e]=o}return t}function $(e,t,n){const r=e.properties[n];if("object"!==(null==r?void 0:r.type))return;const o={[n]:{}};for(const[i,a]of Object.entries(t)){let e=o;const t=i.split(".");for(const[r,o]of t.entries())v(e)&&(r<t.length-1?(v(e[o])||(e[o]={}),e=e[o]):i!==n&&(e[o]=M(a)))}return o[n]}function L(e,t,n){let r;const o=function(e){let t,n=document;if(v(e)){const r=e;(y(r.scope)||null===r.scope)&&(n=r.scope),"function"==typeof r.onError&&(t=r.onError)}return y(e)?n=e:null===e?n=null:"function"==typeof e&&(t=e),{scope:n,onError:t}}(n);try{var i;if(!g())throw new E;if(null===o.scope)throw new A({element:o.scope,component:e,identifier:"Scope element (`$scope`)"});r=null==(i=o.scope)?void 0:i.querySelectorAll(`[data-module="${e.moduleName}"]`)}catch(a){return o.onError?o.onError(a,{component:e,config:t}):console.log(a),[]}return Array.from(null!=r?r:[]).map(n=>{try{return void 0!==t?new e(n,t):new e(n)}catch(a){return o.onError?o.onError(a,{element:n,component:e,config:t}):console.log(a),null}}).filter(Boolean)}class T extends S{constructor(e,t={}){super(e,t),this.debounceFormSubmitTimer=null,this.$root.addEventListener("keydown",e=>this.handleKeyDown(e)),this.$root.addEventListener("click",e=>this.debounce(e))}handleKeyDown(e){const t=e.target;" "===e.key&&t instanceof HTMLElement&&"button"===t.getAttribute("role")&&(e.preventDefault(),t.click())}debounce(e){if(this.config.preventDoubleClick)return this.debounceFormSubmitTimer?(e.preventDefault(),!1):void(this.debounceFormSubmitTimer=window.setTimeout(()=>{this.debounceFormSubmitTimer=null},1e3))}}function C(e,t){const n=e.closest(`[${t}]`);return n?n.getAttribute(t):null}T.moduleName="govuk-button",T.defaults=Object.freeze({preventDoubleClick:!1}),T.schema=Object.freeze({properties:{preventDoubleClick:{type:"boolean"}}});class N{constructor(e={},t={}){var n;this.translations=void 0,this.locale=void 0,this.translations=e,this.locale=null!=(n=t.locale)?n:document.documentElement.lang||"en"}t(e,t){if(!e)throw new Error("i18n: lookup key missing");let n=this.translations[e];if("number"==typeof(null==t?void 0:t.count)&&v(n)){const r=n[this.getPluralSuffix(e,t.count)];r&&(n=r)}if("string"==typeof n){if(n.match(/%{(.\S+)}/)){if(!t)throw new Error("i18n: cannot replace placeholders in string if no option data provided");return this.replacePlaceholders(n,t)}return n}return e}replacePlaceholders(e,t){const n=Intl.NumberFormat.supportedLocalesOf(this.locale).length?new Intl.NumberFormat(this.locale):void 0;return e.replace(/%{(.\S+)}/g,function(e,r){if(Object.prototype.hasOwnProperty.call(t,r)){const e=t[r];return!1===e||"number"!=typeof e&&"string"!=typeof e?"":"number"==typeof e?n?n.format(e):`${e}`:e}throw new Error(`i18n: no data found to replace ${e} placeholder in string`)})}hasIntlPluralRulesSupport(){return Boolean("PluralRules"in window.Intl&&Intl.PluralRules.supportedLocalesOf(this.locale).length)}getPluralSuffix(e,t){if(t=Number(t),!isFinite(t))return"other";const n=this.translations[e],r=this.hasIntlPluralRulesSupport()?new Intl.PluralRules(this.locale).select(t):"other";if(v(n)){if(r in n)return r;if("other"in n)return console.warn(`i18n: Missing plural form ".${r}" for "${this.locale}" locale. Falling back to ".other".`),"other"}throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`)}}class j extends S{[_](e){let t={};return("maxwords"in e||"maxlength"in e)&&(t={maxlength:void 0,maxwords:void 0}),t}constructor(e,t={}){var n,r;super(e,t),this.$textarea=void 0,this.$visibleCountMessage=void 0,this.$screenReaderCountMessage=void 0,this.lastInputTimestamp=null,this.lastInputValue="",this.valueChecker=null,this.i18n=void 0,this.maxLength=void 0;const o=this.$root.querySelector(".govuk-js-character-count");if(!(o instanceof HTMLTextAreaElement||o instanceof HTMLInputElement))throw new A({component:j,element:o,expectedType:"HTMLTextareaElement or HTMLInputElement",identifier:"Form field (`.govuk-js-character-count`)"});const i=function(e,t){const n=[];for(const[r,o]of Object.entries(e)){const e=[];if(Array.isArray(o)){for(const{required:n,errorMessage:r}of o)n.every(e=>!!t[e])||e.push(r);"anyOf"!==r||o.length-e.length>=1||n.push(...e)}}return n}(j.schema,this.config);if(i[0])throw new k(b(j,i[0]));this.i18n=new N(this.config.i18n,{locale:C(this.$root,"lang")}),this.maxLength=null!=(n=null!=(r=this.config.maxwords)?r:this.config.maxlength)?n:1/0,this.$textarea=o;const a=`${this.$textarea.id}-info`,s=document.getElementById(a);if(!s)throw new A({component:j,element:s,identifier:`Count message (\`id="${a}"\`)`});this.$errorMessage=this.$root.querySelector(".govuk-error-message"),s.textContent.match(/^\s*$/)&&(s.textContent=this.i18n.t("textareaDescription",{count:this.maxLength})),this.$textarea.insertAdjacentElement("afterend",s);const l=document.createElement("div");l.className="govuk-character-count__sr-status govuk-visually-hidden",l.setAttribute("aria-live","polite"),this.$screenReaderCountMessage=l,s.insertAdjacentElement("afterend",l);const u=document.createElement("div");u.className=s.className,u.classList.add("govuk-character-count__status"),u.setAttribute("aria-hidden","true"),this.$visibleCountMessage=u,s.insertAdjacentElement("afterend",u),s.classList.add("govuk-visually-hidden"),this.$textarea.removeAttribute("maxlength"),this.bindChangeEvents(),window.addEventListener("pageshow",()=>this.updateCountMessage()),this.updateCountMessage()}bindChangeEvents(){this.$textarea.addEventListener("keyup",()=>this.handleKeyUp()),this.$textarea.addEventListener("focus",()=>this.handleFocus()),this.$textarea.addEventListener("blur",()=>this.handleBlur())}handleKeyUp(){this.updateVisibleCountMessage(),this.lastInputTimestamp=Date.now()}handleFocus(){this.valueChecker=window.setInterval(()=>{(!this.lastInputTimestamp||Date.now()-500>=this.lastInputTimestamp)&&this.updateIfValueChanged()},1e3)}handleBlur(){this.valueChecker&&window.clearInterval(this.valueChecker)}updateIfValueChanged(){this.$textarea.value!==this.lastInputValue&&(this.lastInputValue=this.$textarea.value,this.updateCountMessage())}updateCountMessage(){this.updateVisibleCountMessage(),this.updateScreenReaderCountMessage()}updateVisibleCountMessage(){const e=this.maxLength-this.count(this.$textarea.value)<0;this.$visibleCountMessage.classList.toggle("govuk-character-count__message--disabled",!this.isOverThreshold()),this.$errorMessage||this.$textarea.classList.toggle("govuk-textarea--error",e),this.$visibleCountMessage.classList.toggle("govuk-error-message",e),this.$visibleCountMessage.classList.toggle("govuk-hint",!e),this.$visibleCountMessage.textContent=this.getCountMessage()}updateScreenReaderCountMessage(){this.isOverThreshold()?this.$screenReaderCountMessage.removeAttribute("aria-hidden"):this.$screenReaderCountMessage.setAttribute("aria-hidden","true"),this.$screenReaderCountMessage.textContent=this.getCountMessage()}count(e){var t;return this.config.maxwords?(null!=(t=e.match(/\S+/g))?t:[]).length:e.length}getCountMessage(){const e=this.maxLength-this.count(this.$textarea.value),t=this.config.maxwords?"words":"characters";return this.formatCountMessage(e,t)}formatCountMessage(e,t){if(0===e)return this.i18n.t(`${t}AtLimit`);const n=e<0?"OverLimit":"UnderLimit";return this.i18n.t(`${t}${n}`,{count:Math.abs(e)})}isOverThreshold(){if(!this.config.threshold)return!0;const e=this.count(this.$textarea.value);return this.maxLength*this.config.threshold/100<=e}}j.moduleName="govuk-character-count",j.defaults=Object.freeze({threshold:0,i18n:{charactersUnderLimit:{one:"You have %{count} character remaining",other:"You have %{count} characters remaining"},charactersAtLimit:"You have 0 characters remaining",charactersOverLimit:{one:"You have %{count} character too many",other:"You have %{count} characters too many"},wordsUnderLimit:{one:"You have %{count} word remaining",other:"You have %{count} words remaining"},wordsAtLimit:"You have 0 words remaining",wordsOverLimit:{one:"You have %{count} word too many",other:"You have %{count} words too many"},textareaDescription:{other:""}}}),j.schema=Object.freeze({properties:{i18n:{type:"object"},maxwords:{type:"number"},maxlength:{type:"number"},threshold:{type:"number"}},anyOf:[{required:["maxwords"],errorMessage:'Either "maxlength" or "maxwords" must be provided'},{required:["maxlength"],errorMessage:'Either "maxlength" or "maxwords" must be provided'}]});class D extends O{constructor(e){super(e),this.$inputs=void 0;const t=this.$root.querySelectorAll('input[type="checkbox"]');if(!t.length)throw new A({component:D,identifier:'Form inputs (`<input type="checkbox">`)'});this.$inputs=t,this.$inputs.forEach(e=>{const t=e.getAttribute("data-aria-controls");if(t){if(!document.getElementById(t))throw new A({component:D,identifier:`Conditional reveal (\`id="${t}"\`)`});e.setAttribute("aria-controls",t),e.removeAttribute("data-aria-controls")}}),window.addEventListener("pageshow",()=>this.syncAllConditionalReveals()),this.syncAllConditionalReveals(),this.$root.addEventListener("click",e=>this.handleClick(e))}syncAllConditionalReveals(){this.$inputs.forEach(e=>this.syncConditionalRevealWithInputState(e))}syncConditionalRevealWithInputState(e){const t=e.getAttribute("aria-controls");if(!t)return;const n=document.getElementById(t);if(null!=n&&n.classList.contains("govuk-checkboxes__conditional")){const t=e.checked;e.setAttribute("aria-expanded",t.toString()),n.classList.toggle("govuk-checkboxes__conditional--hidden",!t)}}unCheckAllInputsExcept(e){document.querySelectorAll(`input[type="checkbox"][name="${e.name}"]`).forEach(t=>{e.form===t.form&&t!==e&&(t.checked=!1,this.syncConditionalRevealWithInputState(t))})}unCheckExclusiveInputs(e){document.querySelectorAll(`input[data-behaviour="exclusive"][type="checkbox"][name="${e.name}"]`).forEach(t=>{e.form===t.form&&(t.checked=!1,this.syncConditionalRevealWithInputState(t))})}handleClick(e){const t=e.target;t instanceof HTMLInputElement&&"checkbox"===t.type&&(t.getAttribute("aria-controls")&&this.syncConditionalRevealWithInputState(t),t.checked&&("exclusive"===t.getAttribute("data-behaviour")?this.unCheckAllInputsExcept(t):this.unCheckExclusiveInputs(t)))}}D.moduleName="govuk-checkboxes";class F extends S{constructor(e,t={}){super(e,t),this.config.disableAutoFocus||f(this.$root),this.$root.addEventListener("click",e=>this.handleClick(e))}handleClick(e){const t=e.target;t&&this.focusTarget(t)&&e.preventDefault()}focusTarget(e){if(!(e instanceof HTMLAnchorElement))return!1;const t=e.hash.replace("#","");if(!t)return!1;const n=document.getElementById(t);if(!n)return!1;const r=this.getAssociatedLegendOrLabel(n);return!!r&&(r.scrollIntoView(),n.focus({preventScroll:!0}),!0)}getAssociatedLegendOrLabel(e){var t;const n=e.closest("fieldset");if(n){const t=n.getElementsByTagName("legend");if(t.length){const n=t[0];if(e instanceof HTMLInputElement&&("checkbox"===e.type||"radio"===e.type))return n;const r=n.getBoundingClientRect().top,o=e.getBoundingClientRect();if(o.height&&window.innerHeight&&o.top+o.height-r<window.innerHeight/2)return n}}return null!=(t=document.querySelector(`label[for='${e.getAttribute("id")}']`))?t:e.closest("label")}}F.moduleName="govuk-error-summary",F.defaults=Object.freeze({disableAutoFocus:!1}),F.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class I extends O{constructor(e){super(e),this.$menuButton=void 0,this.$menu=void 0,this.menuIsOpen=!1,this.mql=null;const t=this.$root.querySelector(".govuk-js-header-toggle");if(!t)return this;this.$root.classList.add("govuk-header--with-js-navigation");const n=t.getAttribute("aria-controls");if(!n)throw new A({component:I,identifier:'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'});const r=document.getElementById(n);if(!r)throw new A({component:I,element:r,identifier:`Navigation (\`<ul id="${n}">\`)`});this.$menu=r,this.$menuButton=t,this.setupResponsiveChecks(),this.$menuButton.addEventListener("click",()=>this.handleMenuButtonClick())}setupResponsiveChecks(){const e=function(){const e="--govuk-breakpoint-desktop";return{property:e,value:window.getComputedStyle(document.documentElement).getPropertyValue(e)||void 0}}();if(!e.value)throw new A({component:I,identifier:`CSS custom property (\`${e.property}\`) on pseudo-class \`:root\``});this.mql=window.matchMedia(`(min-width: ${e.value})`),"addEventListener"in this.mql?this.mql.addEventListener("change",()=>this.checkMode()):this.mql.addListener(()=>this.checkMode()),this.checkMode()}checkMode(){this.mql&&this.$menu&&this.$menuButton&&(this.mql.matches?(this.$menu.removeAttribute("hidden"),this.$menuButton.setAttribute("hidden","")):(this.$menuButton.removeAttribute("hidden"),this.$menuButton.setAttribute("aria-expanded",this.menuIsOpen.toString()),this.menuIsOpen?this.$menu.removeAttribute("hidden"):this.$menu.setAttribute("hidden","")))}handleMenuButtonClick(){this.menuIsOpen=!this.menuIsOpen,this.checkMode()}}I.moduleName="govuk-header";class R extends S{constructor(e,t={}){super(e,t),"alert"!==this.$root.getAttribute("role")||this.config.disableAutoFocus||f(this.$root)}}R.moduleName="govuk-notification-banner",R.defaults=Object.freeze({disableAutoFocus:!1}),R.schema=Object.freeze({properties:{disableAutoFocus:{type:"boolean"}}});class B extends O{constructor(e){super(e),this.$inputs=void 0;const t=this.$root.querySelectorAll('input[type="radio"]');if(!t.length)throw new A({component:B,identifier:'Form inputs (`<input type="radio">`)'});this.$inputs=t,this.$inputs.forEach(e=>{const t=e.getAttribute("data-aria-controls");if(t){if(!document.getElementById(t))throw new A({component:B,identifier:`Conditional reveal (\`id="${t}"\`)`});e.setAttribute("aria-controls",t),e.removeAttribute("data-aria-controls")}}),window.addEventListener("pageshow",()=>this.syncAllConditionalReveals()),this.syncAllConditionalReveals(),this.$root.addEventListener("click",e=>this.handleClick(e))}syncAllConditionalReveals(){this.$inputs.forEach(e=>this.syncConditionalRevealWithInputState(e))}syncConditionalRevealWithInputState(e){const t=e.getAttribute("aria-controls");if(!t)return;const n=document.getElementById(t);if(null!=n&&n.classList.contains("govuk-radios__conditional")){const t=e.checked;e.setAttribute("aria-expanded",t.toString()),n.classList.toggle("govuk-radios__conditional--hidden",!t)}}handleClick(e){const t=e.target;if(!(t instanceof HTMLInputElement)||"radio"!==t.type)return;const n=document.querySelectorAll('input[type="radio"][aria-controls]'),r=t.form,o=t.name;n.forEach(e=>{const t=e.form===r;e.name===o&&t&&this.syncConditionalRevealWithInputState(e)})}}B.moduleName="govuk-radios";class G extends O{constructor(e){var t;super(e);const n=this.$root.hash,r=null!=(t=this.$root.getAttribute("href"))?t:"";if(this.$root.origin!==window.location.origin||this.$root.pathname!==window.location.pathname)return;const o=n.replace("#","");if(!o)throw new A(`Skip link: Target link (\`href="${r}"\`) has no hash fragment`);const i=document.getElementById(o);if(!i)throw new A({component:G,element:i,identifier:`Target content (\`id="${o}"\`)`});this.$root.addEventListener("click",()=>f(i,{onBeforeFocus(){i.classList.add("govuk-skip-link-focused-element")},onBlur(){i.classList.remove("govuk-skip-link-focused-element")}}))}}G.elementType=HTMLAnchorElement,G.moduleName="govuk-skip-link";var W=i(571),q=i(535);const V=function(){L(T),L(j),L(D),L(F),L(I),L(R),L(B),L(G)},H=function(){const e=document.querySelectorAll('[data-module="govuk-accessible-autocomplete"]');e.length&&i.e(7).then(i.t.bind(i,60,19)).then(t=>{const{default:n}=t;e.forEach(e=>function(e,t){if(!e)return;const n={id:e.id,selectElement:e};t(n);const r=document.querySelector(`#${n.id}`),o=[...e.options].map(e=>e.text);null==r||r.addEventListener("blur",()=>{r.value&&o.includes(r.value)||(e.value="")})}(e.querySelector("select"),n.enhanceSelectElement))}).catch(console.error)},z=function(){const e=document.querySelectorAll(".prevent-multiple-clicks");for(const t of e)t.addEventListener("click",s),t.addEventListener("keydown",l)},U=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",m):m()},K=function(){if(window.opener){const e=document.querySelector(".js-preview-banner-close");null==e||e.removeAttribute("hidden"),null==e||e.addEventListener("click",e=>{e.preventDefault(),window.close()})}};function Y(){V(),H(),z(),U(),K()}export{q as geospatialMap,Y as initAll,H as initAllAutocomplete,V as initAllGovuk,z as initDebounceClick,U as initFileUpload,K as initPreviewCloseLink,W as map};export const initMaps=W.initMaps;
3
3
  //# sourceMappingURL=shared.min.js.map