1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[71294],{294(e,t,s){s.r(t),s.d(t,{default:()=>h});class i{static debounce(e,t){let s,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(){for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];i&&!s&&setTimeout(e.bind(e,...n),0),clearTimeout(s),s=setTimeout(e.bind(e,...n),t)}}}var r=s(795),n=s(321),o=s(635),l=s(368),d=s(319);class h extends window.PluginBaseClass{static #e=this.options={postcodeSelector:'[name="postcode"]',houseNumberSelector:'[name="houseNumber"]',houseNumberAdditionSelector:'[name="houseNumberAddition"]',streetSelector:'[name="street"]',citySelector:'[name="city"]',isHouseNumberAdditionSeparate:!1,showStreetAndCityFields:!1,enableStreetAndCityOverride:!1,messages:{invalidHouseNumber:null,invalidAddressAddition:null,emptyAddition:null},enableLogging:!1};init(){this._initServices(),this._initElements(),this._registerEvents(),this.houseNumberWithAdditionRegex=/(?<houseNumber>[1-9]\d{0,4})(?<houseNumberAddition>\D.*)?$/i}_initServices(){this.client=new l.A,this.alertGenerator=new o.A,this.logger=new d.A("Dutch address",this.options.enableLogging);let e=window.PluginManager.getPluginInstanceFromElement(this.el.closest("[data-postcode-address-field-switch]"),"PostcodeAddressFieldSwitch");this.emitter=e.$emitter;let t=r.A.querySelector(this.el,".memo-postcode__dutch-address_alerts");this.alert=new n.A(t)}_initElements(){this.postcodeElement=r.A.querySelector(this.el,this.options.postcodeSelector),this.houseNumberElement=r.A.querySelector(this.el,this.options.houseNumberSelector),this.options.isHouseNumberAdditionSeparate&&(this.houseNumberAdditionElement=r.A.querySelector(this.el,this.options.houseNumberAdditionSelector)),this.options.showStreetAndCityFields&&(this.streetElement=r.A.querySelector(this.el,this.options.streetSelector),this.cityElement=r.A.querySelector(this.el,this.options.citySelector)),this.options.isHouseNumberAdditionSeparate?this.AdditionListElement=this.houseNumberAdditionElement.list:this.AdditionListElement=this.houseNumberElement.list}_registerEvents(){let e=this.onPreSearch.bind(this),t=i.debounce(e,500,!0),s=this.onSearch.bind(this),r=i.debounce(s,500);if(this.postcodeElement.addEventListener("keyup",t),this.postcodeElement.addEventListener("keyup",r),this.houseNumberElement.addEventListener("keyup",t),this.houseNumberElement.addEventListener("keyup",r),this.options.isHouseNumberAdditionSeparate&&(this.houseNumberAdditionElement.addEventListener("keyup",t),this.houseNumberAdditionElement.addEventListener("keyup",r)),this.options.showStreetAndCityFields&&this.options.enableStreetAndCityOverride){let e=this.onOverrideAddress.bind(this),t=i.debounce(e,500);this.streetElement.addEventListener("change",t),this.cityElement.addEventListener("change",t)}let n=this.onFormSubmit.bind(this);this.el.closest("form").addEventListener("submit",n),this.emitter.unsubscribe("show-address"),this.emitter.subscribe("show-address",this.onShowAddress.bind(this))}onPreSearch(){this.emitter.publish("update-address",[])}onSearch(){let e=this.postcodeElement.value,{houseNumber:t,houseNumberAddition:s}=this._getHouseNumber();if(this.alert.remove(),this.client.abort(),this.AdditionListElement.innerHTML="",!e||!t)return;let i=new URLSearchParams(Object.fromEntries(Object.entries({postcode:e,houseNumber:t,houseNumberAddition:s}).filter(e=>!!e[1])));this.logger.debug("Searching address",{postcode:e,houseNumber:t,houseNumberAddition:s,options:this._getOptionsForLogContext()}),this.client.get(`${window.router["frontend.memo.postcode.address.postcode"]}?${i.toString()}`).then(i=>{let{address:r,additions:n}=i;if(this.hasInputChanged({postcode:e,houseNumber:t,houseNumberAddition:s})){this.logger.debug("Input has changed");return}try{if(this.logger.debug("Received address",{address:r,additions:n,initial:{postcode:e,houseNumber:t,houseNumberAddition:s},options:this._getOptionsForLogContext()}),this.postcodeElement.setCustomValidity(""),this.houseNumberElement.setCustomValidity(""),this.emitter.publish("update-address",{...r,addition:s}),this._fillAddressFields({...r,postcode:e,houseNumber:t,addition:s}),n.some(e=>e.toLowerCase()===s.trim().toLowerCase()))return this.alertGenerator.success(this._composeAddress(r));return this.logger.debug("Invalid house number addition",{houseNumberAddition:s,additions:n,options:this._getOptionsForLogContext()}),this._handleInvalidAddition(t,s,n)}catch(e){return this.logger.error(e.toString(),{exception:e}),"Error"}}).catch(i=>this.hasInputChanged({postcode:e,houseNumber:t,houseNumberAddition:s})?(this.logger.debug("Input has changed"),""):(this.logger.debug("Invalid address",{error:i,options:this._getOptionsForLogContext()}
1),this.emitter.publish("update-address",[]),this._fillAddressFields({postcode:e,houseNumber:t,addition:s}),this.postcodeElement.setCustomValidity(i.message),this.houseNumberElement.setCustomValidity(i.message),this.alertGenerator.danger(i.message))).then(e=>e&&this.alert.show(e,!0))}hasInputChanged(e){let{postcode:t,houseNumber:s,houseNumberAddition:i}=e,r=this.postcodeElement.value,{houseNumber:n,houseNumberAddition:o}=this._getHouseNumber();return t!==r||s!==n||i!==o}onFormSubmit(){this.houseNumberElement.reportValidity()}onOverrideAddress(){this.alert.remove(),this.postcodeElement.setCustomValidity(""),this.houseNumberElement.setCustomValidity("");let{houseNumber:e,houseNumberAddition:t}=this._getHouseNumber(),s={postcode:this.postcodeElement.value,houseNumber:e,houseNumberAddition:t,street:this.streetElement.value,city:this.cityElement.value};this.logger.debug("Address override",{address:s,options:this._getOptionsForLogContext()}),this.emitter.publish("update-address",s),this._fillAddressFields(s)}onShowAddress(e){let t=e.detail;0!==Object.keys(t).length&&(this.logger.debug("Showing existing address",{address:t,options:this._getOptionsForLogContext()}),this._fillAddressFields(t),this.alertGenerator.success(this._composeAddress(t)).then(e=>this.alert.show(e)))}_composeAddress(e){return`${e.street||""} ${`${e.houseNumber||""} ${e.addition||""}`.trim()}, ${e.postcode||""} ${e.city||""}`}_fillAddressFields(e){this.logger.debug("Filling address fields",{address:e,options:this._getOptionsForLogContext()}),this.postcodeElement.value=e.postcode||"",this.houseNumberElement.value=e.houseNumber||"",this.options.isHouseNumberAdditionSeparate?this.houseNumberAdditionElement.value=e.addition||"":this.houseNumberElement.value=`${this.houseNumberElement.value} ${e.addition||""}`.trim()||"",this.options.showStreetAndCityFields&&(this.streetElement.value=e.street||"",this.cityElement.value=e.city||"")}_getHouseNumber(){if(this.options.isHouseNumberAdditionSeparate)return{houseNumber:this.houseNumberElement.value,houseNumberAddition:this.houseNumberAdditionElement.value};let e=this.houseNumberWithAdditionRegex.exec(this.houseNumberElement.value);return null!==e?this._ensureStrings(e.groups):(this.houseNumberElement.value.length>0&&this.alertGenerator.danger(this.options.messages.invalidHouseNumber).then(e=>this.alert.show(e)),{})}_handleInvalidAddition(e,t,s){return s.forEach(t=>{let s=document.createElement("option");s.value=s.label=s.innerHTML=this.options.isHouseNumberAdditionSeparate?t.trim():`${e} ${t}`.trim(),this.AdditionListElement.insertAdjacentElement("beforeend",s)}),this.alertGenerator.warning(s.map(e=>e.trim()||this.options.messages.emptyAddition),this.options.messages.invalidAddressAddition)}_ensureStrings(e){return Object.fromEntries(Object.entries(e).map(e=>{let[t,s]=e;return[t,(s||"").trim()]}))}_getOptionsForLogContext(){return{isHouseNumberAdditionSeparate:this.options.isHouseNumberAdditionSeparate,showStreetAndCityFields:this.options.showStreetAndCityFields,enableStreetAndCityOverride:this.options.enableStreetAndCityOverride}}}},319(e,t,s){s.d(t,{A:()=>r});var i=s(368);class r{constructor(e="",t=!0){this.client=new i.A,this.prefix=e,this.enabled=t}log(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this.enabled)return this.prefix&&(t=`[${this.prefix}] ${t}`),this.client.post(window.router["frontend.memo.postcode.debug.log"],{level:e,message:t,context:s}).catch(()=>"")}debug(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(100,e,t)}info(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(200,e,t)}notice(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(250,e,t)}warning(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(300,e,t)}error(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(400,e,t)}critical(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(500,e,t)}alert(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(550,e,t)}emergency(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.log(600,e,t)}}},321(e,t,s){s.d(t,{A:()=>r});var i=s(795);
1class r{constructor(e){this.el=e}hasAlert(){return!1!==i.A.querySelectorAll(this.el,".alert",!1)}hasWarning(){return!1!==i.A.querySelectorAll(this.el,".alert-warning",!1)}hasError(){return!1!==i.A.querySelectorAll(this.el,".alert-danger",!1)}show(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];t&&this.remove(),this.el.insertAdjacentHTML("beforeend",e)}remove(){let e=i.A.querySelectorAll(this.el,".alert",!1);e&&e.forEach(e=>e.remove())}}},368(e,t,s){s.d(t,{A:()=>r});class i{constructor(){this._request=null,this._errorHandlingInternal=!1}get(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json",i=this._createPreparedRequest("GET",e,s);return this._sendRequest(i,null,t)}post(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("POST",e,i);return this._sendRequest(r,t,s)}delete(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("DELETE",e,i);return this._sendRequest(r,t,s)}patch(e,t,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"application/json";i=this._getContentType(t,i);let r=this._createPreparedRequest("PATCH",e,i);return this._sendRequest(r,t,s)}abort(){if(this._request)return this._request.abort()}setErrorHandlingInternal(e){this._errorHandlingInternal=e}_registerOnLoaded(e,t){t&&(!0===this._errorHandlingInternal?(e.addEventListener("load",()=>{t(e.responseText,e)}),e.addEventListener("abort",()=>{console.warn(`the request to ${e.responseURL} was aborted`)}),e.addEventListener("error",()=>{console.warn(`the request to ${e.responseURL} failed with status ${e.status}`)}),e.addEventListener("timeout",()=>{console.warn(`the request to ${e.responseURL} timed out`)})):e.addEventListener("loadend",()=>{t(e.responseText,e)}))}_sendRequest(e,t,s){return this._registerOnLoaded(e,s),e.send(t),e}_getContentType(e,t){return e instanceof FormData&&(t=!1),t}_createPreparedRequest(e,t,s){return this._request=new XMLHttpRequest,this._request.open(e,t),this._request.setRequestHeader("X-Requested-With","XMLHttpRequest"),s&&this._request.setRequestHeader("Content-type",s),this._request}}class r{constructor(){this.client=new i}get(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/json";return new Promise((s,i)=>{this.client.get(e,(e,t)=>this._resolveResponse(t,s,i),t)})}post(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json";return new Promise((i,r)=>{this.client.post(e,this._resolveRequest(t,s),(e,t)=>this._resolveResponse(t,i,r),s)})}delete(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json";return new Promise((i,r)=>{this.client.delete(e,this._resolveRequest(t,s),(e,t)=>this._resolveResponse(t,i,r),s)})}patch(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/json";return new Promise((i,r)=>{this.client.patch(e,this._resolveRequest(t,s),(e,t)=>this._resolveResponse(t,i,r),s)})}abort(){this.client.abort()}_resolveRequest(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/json";return t.includes("application/json")?JSON.stringify(e):e}_resolveResponse(e,t,s){let i=e.responseText,r=e.getResponseHeader("Content-Type");if(!r){e.status<400?t():s();return}r.includes("application/json")&&(i=JSON.parse(e.responseText)),e.status<400?t(i):s(i)}}},635(e,t,s){s.d(t,{A:()=>r});var i=s(368);class r{constructor(){this.client=new i.A,this.cache=new Map}generate(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"success",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=!(arguments.length>4)||void 0===arguments[4]||arguments[4],n=JSON.stringify(arguments);return this.cache.has(n)?Promise.resolve(this.cache.get(n)):this.client.post(window.router["frontend.memo.postcode.alert.generate"],{content:e,type:t,heading:s,dismissible:i,showIcon:r}).catch(()=>"").then(e=>this.cache.set(n,e).get(n))}success(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"success",t,s,i)}warning(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"warning",t,s,i)}danger(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"danger",t,s,i)}info(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];
1return this.generate(e,"info",t,s,i)}primary(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"primary",t,s,i)}secondary(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"secondary",t,s,i)}light(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"light",t,s,i)}dark(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];return this.generate(e,"dark",t,s,i)}}},707(e,t,s){s.d(t,{A:()=>i});class i{static ucFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}static lcFirst(e){return e.charAt(0).toLowerCase()+e.slice(1)}static toDashCase(e){return e.replace(/([A-Z])/g,"-$1").replace(/^-/,"").toLowerCase()}static toLowerCamelCase(e,t){let s=i.toUpperCamelCase(e,t);return i.lcFirst(s)}static toUpperCamelCase(e,t){return t?e.split(t).map(e=>i.ucFirst(e.toLowerCase())).join(""):i.ucFirst(e.toLowerCase())}static parsePrimitive(e){try{return/^\d+(.|,)\d+$/.test(e)&&(e=e.replace(",",".")),JSON.parse(e)}catch(t){return e.toString()}}}},795(e,t,s){s.d(t,{A:()=>r});var i=s(707);class r{static isNode(e){return"object"==typeof e&&null!==e&&(e===document||e===window||e instanceof Node)}static hasAttribute(e,t){if(!r.isNode(e))throw Error("The element must be a valid HTML Node!");return"function"==typeof e.hasAttribute&&e.hasAttribute(t)}static getAttribute(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!1===r.hasAttribute(e,t))throw Error(`The required property "${t}" does not exist!`);if("function"!=typeof e.getAttribute){if(s)throw Error("This node doesn't support the getAttribute function!");return}return e.getAttribute(t)}static getDataAttribute(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=t.replace(/^data(|-)/,""),o=i.A.toLowerCamelCase(n,"-");if(!r.isNode(e)){if(s)throw Error("The passed node is not a valid HTML Node!");return}if(void 0===e.dataset){if(s)throw Error("This node doesn't support the dataset attribute!");return}let l=e.dataset[o];if(void 0===l){if(s)throw Error(`The required data attribute "${t}" does not exist on ${e}!`);return l}return i.A.parsePrimitive(l)}static querySelector(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelector(t)||!1;if(s&&!1===i)throw Error(`The required element "${t}" does not exist in parent node!`);return i}static querySelectorAll(e,t){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(s&&!r.isNode(e))throw Error("The parent node is not a valid HTML Node!");let i=e.querySelectorAll(t);if(0===i.length&&(i=!1),s&&!1===i)throw Error(`At least one item of "${t}" must exist in parent node!`);return i}static getFocusableElements(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,t=` 2 input:not([tabindex^="-"]):not([disabled]):not([type="hidden"]), 3 select:not([tabindex^="-"]):not([disabled]), 4 textarea:not([tabindex^="-"]):not([disabled]), 5 button:not([tabindex^="-"]):not([disabled]), 6 a[href]:not([tabindex^="-"]):not([disabled]), 7 [tabindex]:not([tabindex^="-"]):not([disabled]) 8 `;return e.querySelectorAll(t)}static getFirstFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body;return this.getFocusableElements(e)[0]}static getLastFocusableElement(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,t=this.getFocusableElements(e);return t[t.length-1]}}}}]);
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.