@defra/forms-engine-plugin 4.14.4 → 4.15.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.
- package/.public/assets-manifest.json +10 -1
- package/.public/javascripts/im-search-plugin.min.js +2 -0
- package/.public/javascripts/im-search-plugin.min.js.map +1 -0
- package/.public/javascripts/shared.min.js +1 -1
- package/.public/javascripts/shared.min.js.map +1 -1
- package/.public/javascripts/vendor/@defra.min.js +2 -0
- package/.public/javascripts/vendor/@defra.min.js.map +1 -0
- package/.public/javascripts/vendor/maplibre-gl.min.js +3 -0
- package/.public/javascripts/vendor/maplibre-gl.min.js.LICENSE.txt +4 -0
- package/.public/javascripts/vendor/maplibre-gl.min.js.map +1 -0
- package/.public/javascripts/vendor/preact.min.js +2 -0
- package/.public/javascripts/vendor/preact.min.js.map +1 -0
- package/.public/stylesheets/application.min.css +1 -1
- package/.public/stylesheets/application.min.css.map +1 -1
- package/.server/client/javascripts/geospatial-map.js +9 -4
- package/.server/client/javascripts/geospatial-map.js.map +1 -1
- package/.server/client/javascripts/map.js +18 -12
- package/.server/client/javascripts/map.js.map +1 -1
- package/.server/client/stylesheets/shared.scss +7 -0
- package/.server/server/plugins/map/routes/index.d.ts +1 -2
- package/.server/server/plugins/map/routes/index.js +2 -32
- package/.server/server/plugins/map/routes/index.js.map +1 -1
- package/.server/server/plugins/map/service.d.ts +0 -7
- package/.server/server/plugins/map/service.js +0 -12
- package/.server/server/plugins/map/service.js.map +1 -1
- package/.server/server/plugins/map/service.test.js +0 -43
- package/.server/server/plugins/map/service.test.js.map +1 -1
- package/package.json +2 -1
- package/src/client/javascripts/geospatial-map.js +9 -5
- package/src/client/javascripts/map.js +18 -13
- package/src/client/stylesheets/shared.scss +7 -0
- package/src/server/plugins/map/routes/index.js +1 -37
- package/src/server/plugins/map/service.js +0 -13
- package/.server/server/plugins/map/test/__stubs__/nearest.d.ts +0 -37
- package/.server/server/plugins/map/test/__stubs__/nearest.js +0 -38
- package/.server/server/plugins/map/test/__stubs__/nearest.js.map +0 -1
- 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 @@
|
|
|
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
|