1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3680],{3548:function(e,t,n){n.d(t,{L9:function(){return c},MR:function(){return d},Y6:function(){return a},Z0:function(){return s},tM:function(){return i}});var o=n(83125);let r=void 0!==n(40257)?"G-5CH9HN08M6":"";function i(e){if(r&&window.gtag){if(e){var t,n;window.gtag("config",r,{user_id:e.id,send_page_view:!1,...a()});let o=(null!==(t=e.role)&&void 0!==t?t:"user").slice(0,36);window.gtag("set","user_properties",{logged_in:"yes",account_role:o,moderator_level:String(Math.min(99,Math.max(0,null!==(n=e.moderator_level)&&void 0!==n?n:0))),email_verified:e.is_verified?"yes":"no"})}else window.gtag("config",r,{user_id:null,send_page_view:!1,...a()}),window.gtag("set","user_properties",{logged_in:"no",account_role:"",moderator_level:"0",email_verified:"no"})}}function a(){return{app_mode:(0,o.Rb)()}}function s(e,t){r&&window.gtag&&window.gtag("config",r,{page_path:e,page_title:t,...a()})}function c(e,t){r&&window.gtag&&window.gtag("event",e,{...a(),...t})}let d={mapView:()=>c("map_view"),mapLocateMe:()=>c("map_locate_me"),mapSearchAddress:()=>c("map_search_address"),addPostboxStart:()=>c("add_postbox_start"),addPostboxSubmit:()=>c("add_postbox_submit",{method:"form"}),addPostboxSuccess:()=>c("add_postbox_success"),correctionSubmit:e=>c("correction_submit",{field:e}),postboxView:(e,t)=>c("postbox_view",{postbox_id:e,reign_name:null==t?void 0:t.reign_name,postbox_type_name:null==t?void 0:t.postbox_type_name,subtype:null==t?void 0:t.subtype,in_service:null==t?void 0:t.in_service,country_name:null==t?void 0:t.country_name}),search:e=>c("search",{search_category:function(e){let t=e.trim();return/^[A-Z]{1,2}\d[\dA-Z]?\s*\d[A-Z]{2}$/i.test(t)?"postcode":/^\d{2,}[A-Z]?$/i.test(t)?"registration":t?"place_or_name":"filter"}(e)}),login:e=>c("login",{method:e}),signUp:e=>c("sign_up",{method:e}),share:e=>c("share",{method:e}),sectionView:e=>c("section_view",{section:e}),loginStart:()=>c("login_start"),signUpStart:()=>c("sign_up_start"),forgotPasswordStart:()=>c("forgot_password_start"),correctionStart:()=>c("correction_start"),postboxClickFromMap:e=>c("postbox_click_from_map",{postbox_id:e}),softPromptShown:e=>c("soft_prompt_shown",{prompt_kind:e}),softPromptSnooze:(e,t)=>c("soft_prompt_snooze",{prompt_kind:e,action:t}),softPromptDismissForever:e=>c("soft_prompt_dismiss_forever",{prompt_kind:e})}},70312:function(e,t,n){n.d(t,{Dj:function(){return s},k_:function(){return c},mY:function(){return a},so:function(){return i}});var o=n(2265),r=n(99204);let i=n(79125).s;function a(e){localStorage.setItem("country_code",e.toUpperCase()),window.location.reload()}function s(){let[e,t]=(0,o.useState)(null),[n,a]=(0,o.useState)(!0),[s,c]=(0,o.useState)(null);return(0,o.useEffect)(()=>{(async function(){try{let e=i();if(e){let n=await r.x1.getCountry(e);t(n)}else{let e=await r.x1.getDefaultCountry();t(e),e&&localStorage.setItem("country_code",e.country_code)}}catch(e){c(e.message||"Failed to load country");try{let e=await r.x1.getDefaultCountry();t(e)}catch(e){console.error("Failed to load default country:",e)}}finally{a(!1)}})()},[]),{country:e,loading:n,error:s}}function c(e){let[t,n]=(0,o.useState)([]),[i,a]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{if(!e){a(!1);return}(async function(){try{let t=await r.x1.getCountryReigns(e);n(t)}catch(e){console.error("Failed to load reigns:",e)}finally{a(!1)}})()},[e]),{reigns:t,loading:i}}},60974:function(e,t,n){n.d(t,{bi:function(){return g},dY:function(){return c},jo:function(){return m},n$:function(){return a},uQ:function(){return f}});let o="held",r=new Set;function i(){r.forEach(e=>{try{e()}catch(e){}})}function a(e){return r.add(e),()=>{r.delete(e)}}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();return t>=e+1728e5}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();return Math.max(0,Math.ceil((e+1728e5-t)/36e5))}async function d(e,t){let n=await new Promise((e,t)=>{if("undefined"==typeof indexedDB){t(Error("IndexedDB not available"));return}let n=indexedDB.open("postboxmap_held_drafts_v1",1);n.onerror=()=>t(n.error),n.onsuccess=()=>e(n.result),n.onupgradeneeded=e=>{let t=e.target.result;t.objectStoreNames.contains(o)||t.createObjectStore(o,{keyPath:"id"})}});try{let r=n.transaction(o,e),i=r.objectStore(o),a=new Promise((e,t)=>
1{r.oncomplete=()=>e(),r.onerror=()=>t(r.error),r.onabort=()=>t(r.error||Error("IndexedDB transaction aborted"))});try{let e=await Promise.resolve(t(i));return await a,e}catch(e){try{r.abort()}catch(e){}throw await a.catch(()=>void 0),e}}finally{n.close()}}function u(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}async function l(){return d("readonly",e=>u(e.getAll()))}async function p(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();return d("readwrite",async t=>{let n=await u(t.getAll()),o=0;for(let r of n||[])s(r.createdAt,e)&&(await u(t.delete(r.id)),o+=1);return o})}async function f(){let e=Date.now();return await p(e)>0&&i(),(await l()).filter(t=>!s(t.createdAt,e)).sort((e,t)=>t.createdAt-e.createdAt)}async function m(e){if(await p(),(await l()).filter(e=>!s(e.createdAt)).length>=50)throw Error("You already have ".concat(50," saved drafts. Submit or delete some before saving another."));let t={id:crypto.randomUUID(),createdAt:Date.now(),payload:e};return await d("readwrite",e=>u(e.put(t))),i(),t}async function g(e){await d("readwrite",t=>u(t.delete(e))),i()}},36680:function(e,t,n){n.d(t,{Br:function(){return p},DO:function(){return y},fn:function(){return g},uR:function(){return _},wo:function(){return f},xd:function(){return m}});var o=n(99204),r=n(11233);let i="submissions";function a(e){return new Promise(t=>setTimeout(t,e))}function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=e.trim();return n.length<=t?n:"".concat(n.slice(0,t-1),"â¦")}function c(e){if(!e||"object"!=typeof e||!("response"in e))return;let t=e.response;return"number"==typeof(null==t?void 0:t.status)?t.status:void 0}let d=new Set;function u(){d.forEach(e=>{try{e()}catch(e){}})}function l(){return new Promise((e,t)=>{if("undefined"==typeof indexedDB){t(Error("IndexedDB not available"));return}let n=indexedDB.open("postboxmap_queue_v1",1);n.onerror=()=>t(n.error),n.onsuccess=()=>e(n.result),n.onupgradeneeded=e=>{let t=e.target.result;t.objectStoreNames.contains(i)||t.createObjectStore(i,{keyPath:"id"})}})}function p(e){return d.add(e),()=>d.delete(e)}async function f(){let e=await l();return new Promise((t,n)=>{let o=e.transaction(i,"readonly"),r=o.objectStore(i).getAll();r.onsuccess=()=>{let e=r.result||[];e.sort((e,t)=>e.createdAt-t.createdAt),t(e)},r.onerror=()=>n(r.error),o.oncomplete=()=>e.close()})}async function m(e,t){let n=await f();if(n.length>=50)throw Error("Queue full (max ".concat(50,"). Please try again when online."));let o=(null==t?void 0:t.trim())||crypto.randomUUID();if(n.find(e=>e.id===o))return o;let r={id:o,createdAt:Date.now(),payload:e},a=await l();return new Promise((e,t)=>{let n=a.transaction(i,"readwrite"),s=n.objectStore(i).add(r);s.onsuccess=()=>{u(),e(o)},s.onerror=()=>t(s.error),n.oncomplete=()=>a.close()})}async function g(){let e=await f();return 0!==e.length&&(await w(e[0].id),!0)}async function w(e){let t=await l();return new Promise((n,o)=>{let r=t.transaction(i,"readwrite"),a=r.objectStore(i).delete(e);a.onsuccess=()=>{u(),n()},a.onerror=()=>o(a.error),r.oncomplete=()=>t.close()})}function _(e,t,n){var o,r,i,a,s,c,d,u,l,p,f,m,g,w;let _=new FormData;_.append("name",e.name),_.append("location",e.location),_.append("reign",e.reign),_.append("in_service",String(e.in_service)),(null===(o=e.box_status)||void 0===o?void 0:o.trim())&&_.append("box_status",e.box_status.trim()),t&&_.append("g-recaptcha-response",t),_.append("notes",null!==(w=e.notes)&&void 0!==w?w:""),(null===(r=e.postbox_type_id)||void 0===r?void 0:r.trim())&&_.append("postbox_type_id",e.postbox_type_id.trim()),(null===(i=e.date)||void 0===i?void 0:i.trim())&&_.append("date",e.date.trim()),(null===(a=e.reg_no)||void 0===a?void 0:a.trim())&&_.append("reg_no",e.reg_no.trim()),(null===(s=e.designation_code)||void 0===s?void 0:s.trim())&&_.append("designation_code",e.designation_code.trim().slice(0,80)),(null===(c=e.grid_reference)||void 0===c?void 0:c.trim())&&_.append("grid_reference",e.grid_reference.trim()),(null===(d=e.road)||void 0===d?void 0:d.trim())&&_.append("road",e.road.trim()),(null===(u=e.town)||void 0===u?void 0:u.trim())&&_.append("town",e.town.trim()),(null===(l=e.county)||void 0===l?void 0:l.trim())&&_.append("county",e.county.trim()),(null===(p=e.subtype)||void 0===p?void 0:p.trim())&&_.append("subtype",e.subtype.trim().slice(0,80)),(null===(f=e.manufacturer)||void 0===f?void 0:f.trim())&&_.append("manufacturer",e.manufacturer.trim().slice(0,100)),(null===(m=e.finish)||void 0===m?void 0:m.trim())&&_.append("finish",e.finish.trim().slice(0,80)),Array.isArray(e.structural_features)&&e.structural_features.length>0&&_.append("structural_features",JSON.stringify(e.structural_features));let v=null==n?void 0:null===(g=n.stagingId)||void 0===g?void 0:g.trim();return v&&_.append("staging_id",v),(null==n?void 0:n.omitImages)||v||e.images.forEac
1h(e=>{_.append("images",new File([e.blob],e.name,{type:e.type}))}),e.images.length>0&&_.append("main_image_index",String(Math.min(e.main_image_index,e.images.length-1))),e.submission_source&&_.append("submission_source",e.submission_source),_}let v="postboxmap:toast";async function y(e){let{submitPostbox:t,getRecaptchaToken:n,stageSubmitPostboxImages:i,abortSubmitPostboxStaging:d,onSubmissionSuccess:u}=e;if("undefined"!=typeof navigator&&!navigator.onLine)return{flushed:0,failed:0};let l=await f();if(0===l.length)return{flushed:0,failed:0};let p=0,m=0,g="";for(let e of l){let s=null;try{let o=await (0,r.J2)(e.payload.images);if(!o.ok){m+=1,g=o.message,await a(1500);continue}let d={...e.payload,images:o.images},l=await n();if(i&&o.files.length>0){let e=await (0,r.TJ)(o.files,(e,t)=>i(e,t));if(e.ok)s=e.stagingId;else{let t=c(e.error);if(401===t||429===t)throw e.error}}let f=_(d,l,{stagingId:s||void 0,omitImages:!!s}),v=await t(f,e.payload.countryCode,e.id);if(await w(e.id),u)try{await u(e.payload,v)}catch(e){}p+=1}catch(t){s&&d&&d(s).catch(()=>void 0);let e=c(t);if(401===e)return window.dispatchEvent(new CustomEvent(v,{detail:{message:"Sign in again to send your queued postboxes.",type:"info"}})),{flushed:p,failed:m,stopped:"auth"};if(429===e)return window.dispatchEvent(new CustomEvent(v,{detail:{message:"Too many requests. Wait a minute, then tap Retry again.",type:"error"}})),{flushed:p,failed:m,stopped:"rate_limit"};m+=1,g=(0,r.t2)(t)?r.gM:(0,o.UO)((0,r.a8)(t,(0,o.iC)(t,"Could not send."))),await a(1500)}}return p>0&&0===m?window.dispatchEvent(new CustomEvent(v,{detail:{message:1===p?"Queued postbox submitted.":"".concat(p," queued postboxes submitted."),type:"success"}})):p>0&&m>0?window.dispatchEvent(new CustomEvent(v,{detail:{message:1===m?"Sent ".concat(p,". One postbox could not be sent yet (").concat(s(g),"). Tap Retry again or use Discard oldest."):"Sent ".concat(p,". ").concat(m," could not be sent yet. Tap Retry again, or Discard oldest if the first postbox blocks the rest."),type:"info"}})):m>0&&window.dispatchEvent(new CustomEvent(v,{detail:{message:1===m?s(g||"Could not send. Check your connection and try again.",200):"".concat(m," postboxes could not be sent. ").concat(s(g||"Check your connection and try again.")),type:"error"}})),{flushed:p,failed:m}}},49347:function(e,t,n){n.d(t,{Au:function(){return o},Su:function(){return r}});let o="calc(5rem + env(safe-area-inset-bottom, 0px))",r="1.25rem"},79074:function(e,t,n){n.d(t,{U:function(){return a}});let o=n(40257).env.NEXT_PUBLIC_RECAPTCHA_SITE_KEY,r="google-recaptcha-v3",i=null;async function a(e){if(!o)return null;try{var t,n;await (o&&("function"!=typeof(null===(t=window.grecaptcha)||void 0===t?void 0:t.ready)||"function"!=typeof(null===(n=window.grecaptcha)||void 0===n?void 0:n.execute))?i||(i=new Promise((e,t)=>{let n=document.getElementById(r);if(n){var a;n.addEventListener("load",()=>e(),{once:!0}),n.addEventListener("error",()=>t(Error("reCAPTCHA script failed")),{once:!0}),"function"==typeof(null===(a=window.grecaptcha)||void 0===a?void 0:a.ready)&&e();return}let s=document.createElement("script");s.id=r,s.async=!0,s.src="https://www.google.com/recaptcha/api.js?render=".concat(o),s.onload=()=>e(),s.onerror=()=>{i=null,t(Error("reCAPTCHA script failed"))},document.head.appendChild(s)})):Promise.resolve())}catch(e){return null}let a=window.grecaptcha;return"function"!=typeof(null==a?void 0:a.ready)||"function"!=typeof(null==a?void 0:a.execute)?null:new Promise(t=>{let n=!1,r=e=>{n||(n=!0,clearTimeout(i),t(e))},i=setTimeout(()=>r(null),8e3);a.ready(()=>{a.execute(o,{action:e}).then(e=>r(e)).catch(()=>r(null))})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.