PageSourceSearch

https://mailbook.nl/build/chunk-addressbook-63ccf4bc62ab2d0d6b35.js

js mailbook.nl collected 2026-10-08 04:30:00 UTC 142,187 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[882],{568:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(390),s=n(194),l=n(262),r=n(896),i=n(213),o=n(264);class d extends a.Ay.Component{handleTitle(e){const{title:t,body:n,onChange:a}=this.props,s=e.currentTarget.value;if(s.length<i.P4.title||t.length>=i.P4.title)return void a({title:s,body:n});const l=s.lastIndexOf(" "),r=/\S$/.test(s)&&l>i.P4.title-25;a({title:r?s.slice(0,l):s,body:(r?s.slice(l+1):"")+n}),this.continueInBody()}continueInBody(){const e=()=>{const e=document.getElementById(`body-${this.props.lang}`);return e&&document.activeElement!==e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length)),!!e};e()||window.requestAnimationFrame(e)}handleMove(e){e.preventDefault();const{title:t,body:n,onChange:a}=this.props,s=t.slice(0,i.P4.title+1),l=Math.max(s.lastIndexOf(". "),s.lastIndexOf("! "),s.lastIndexOf("? "))+1,r=l>=20?l:s.lastIndexOf(" ");a({title:t.slice(0,r).trim(),body:[t.slice(r).trim(),n].filter(Boolean).join("\n")})}render(){const{title:e,body:t,lang:n,placeholder:s}=this.props,d=i.P4.title-e.length;return this.shown=this.shown||d<=0||!!t,a.Ay.createElement("div",{className:"request-text"},a.Ay.createElement(l.A,{className:"title-textarea",id:`title-${n}`,value:e,maxLength:i.P4.title,placeholder:s,onChange:e=>this.handleTitle(e),rows:"2"}),d<0?a.Ay.createElement("p",{className:"note field-note"},(0,o.Oj)({nl:`Je titel is ${-d} tekens langer dan er passen. `,en:`Your title is ${-d} characters longer than fits. `}),a.Ay.createElement("a",{href:"#",onClick:e=>this.handleMove(e)},(0,o.Oj)({nl:"Zet de rest in de tekst eronder",en:"Move the rest to the text below"}))):d<=20?a.Ay.createElement("p",{className:"note field-note"},0===d?(0,o.Oj)({nl:"Je titel is vol. Ga verder in de tekst eronder.",en:"Your title is full. Go on in the text below."}):(0,o.Oj)({nl:`Nog ${d} tekens`,en:`${d} characters left`})):null,this.shown?a.Ay.createElement("div",{className:"request-text-body"},a.Ay.createElement(r.A,{htmlFor:`body-${n}`},(0,o.Oj)({nl:"Meer vertellen",en:"Tell more"}),a.Ay.createElement("span",{className:"extra"},(0,o.Oj)({nl:"optioneel",en:"optional"}))),a.Ay.createElement(l.A,{id:`body-${n}`,value:t,maxLength:i.P4.body,placeholder:(0,o.Oj)({nl:"Wat je verder nog kwijt wilt. Dit staat onder je titel.",en:"What else you want to say. This sits under your title."}),onChange:t=>this.props.onChange({title:e,body:t.currentTarget.value}),rows:"2"})):null)}}d.propTypes={lang:s.A.string,title:s.A.string,body:s.A.string,placeholder:s.A.string,onChange:s.A.func},d.defaultProps={lang:"nl",title:"",body:"",placeholder:"",onChange:()=>{}}},745:function(e,t,n){n.d(t,{A:function(){return r}});var a=n(390),s=n(856),l=n(194);function r({steps:e,current:t,onPick:n}){return a.Ay.createElement("div",{className:"step-progress"},e.map((l,r)=>{const i=`step-progress-item ${t>=l.num?"active":""} ${t===l.num?"current":""}`;return a.Ay.createElement(s.FK,{key:l.num},n?a.Ay.createElement("button",{type:"button",className:i,"aria-current":t===l.num?"step":void 0,onClick:()=>n(l.num)},a.Ay.createElement("span",{className:"step-progress-number"},l.num),a.Ay.createElement("span",{className:"step-progress-label"},l.label)):a.Ay.createElement("div",{className:i},a.Ay.createElement("div",{className:"step-progress-number"},l.num),a.Ay.createElement("div",{className:"step-progress-label"},l.label)),r<e.length-1&&a.Ay.createElement("div",{className:"step-progress-line "+(t>l.num?"active":"")}))}))}r.propTypes={steps:l.A.array.isRequired,current:l.A.number.isRequired,onPick:l.A.func},r.defaultProps={onPick:null}},887:function(e,t,n){n.d(t,{A:function(){return i}});var a=n(390),s=n(194),l=n(213),r=n(264);function i({from:e,title:t,body:n,link:s,color:i,sober:o,lang:d,onShare:c}){const m=(0,l.f$)(i),u={nl:"Opslaan",en:"Save",fr:"Sauvegarder",es:"Guardar",de:"Speichern"};return a.Ay.createElement("div",{className:"request-stage"+(o?" sober":""),style:o?null:{"--band":m.band,"--band-ink":m.ink}},a.Ay.createElement("div",{className:"request-card","aria-hidden":"true"},a.Ay.createElement("span",{className:"request-from"},e),a.Ay.createElement("strong",{className:"request-title"},t),n?a.Ay.createElement("span",{className:"request-body"},n):null,a.Ay.createElement("span",{className:"request-field wide"}),a.Ay.createElement("span",{className:"request-field"}),a.Ay.createElement("span",{className:"request-field"}),a.Ay.createElement("span",{className:"request-save"}
1,d?u[d]:(0,r.Oj)(u))),c?a.Ay.createElement("a",{href:"#",className:"request-link",onClick:e=>{e.preventDefault(),c()}},s):a.Ay.createElement("span",{className:"request-link"},s))}i.propTypes={from:s.A.string,title:s.A.string,body:s.A.string,link:s.A.string,color:s.A.string,sober:s.A.bool,lang:s.A.string,onShare:s.A.func},i.defaultProps={color:"orange",sober:!1}},971:function(e,t,n){n.r(t),n.d(t,{default:function(){return ge}});var a=n(390),s=n(856),l=n(194),r=n(134),i=n(264);const o=[["year",31536e6],["month",2592e6],["week",6048e5],["day",864e5],["hour",36e5],["minute",6e4]];function d({date:e}){const t=new Date(e);return a.Ay.createElement("time",{dateTime:t.toISOString(),title:t.toLocaleString((0,i.IJ)())},function(e,t){const n=new Date(e).getTime()-Date.now(),a=new Intl.RelativeTimeFormat(t,{numeric:"auto"});for(const[e,t]of o)if(Math.abs(n)>=t)return a.format(Math.round(n/t),e);return a.format(Math.round(n/1e3),"second")}(e,(0,i.IJ)()))}d.propTypes={date:l.A.oneOfType([l.A.number,l.A.string,l.A.instanceOf(Date)])};var c=n(711),m=n(523),u=n(699),h=n(368),p=(n(262),n(20)),y=n(392),g=n(213);class A extends a.Ay.Component{constructor(e){super(e),this.state={isOpen:!!e.alwaysOpen},this.focus=a.Ay.createRef()}componentDidMount(){document.addEventListener("mousedown",e=>this.handleUnfocus(e))}componentWillUnmount(){document.removeEventListener("mousedown",e=>this.handleUnfocus(e))}handleUnfocus(e){this.focus&&this.focus.current&&!this.focus.current.contains(e.target)&&this.setState({isOpen:!1})}toggleOpen(e){e&&e.preventDefault(),this.setState(e=>({isOpen:!e.isOpen}))}handleSelectAll(e){const{addresses:t,attr:n,onHandleChecked:a,onHandleFilter:s,maxSelect:l}=this.props;e&&e.preventDefault();let r=0;Object.keys(t).forEach(e=>{s(t[e])&&(!l||r<l)&&(a(e,n,!0),r++)})}handleDeselectAll(e){const{addresses:t,attr:n,onHandleChecked:a,onHandleFilter:s}=this.props;e&&e.preventDefault(),Object.keys(t).forEach(e=>{s(t[e])&&a(e,n,!1)})}render(){const{isOpen:e}=this.state,{addresses:t,user:n,attr:l,label:r,onHandleFilter:o,onHandleChecked:d,alwaysOpen:c,isMinimal:m,showLabel:u}=this.props,h=(0,g.k5)(t),p=h.length>0&&h.filter(e=>o(e)).map(e=>{const t=(0,g.M0)(e,n.country),s=Array.isArray(e.labels)&&e.labels.length>0?a.Ay.createElement("div",{className:"input-labels-group"},e.labels.map(e=>a.Ay.createElement("div",{key:e,className:"input-label"},e.trim()))):null;return a.Ay.createElement("tr",{key:e._key,onClick:t=>{t.preventDefault(),d(e._key,l)}},a.Ay.createElement("td",{className:"action first-column"},a.Ay.createElement("div",{className:"checkmark "+(!0===e[l]?"checked":"")})),a.Ay.createElement("td",{className:"name"},a.Ay.createElement("div",{className:"address"},a.Ay.createElement("div",{className:"to"},t.to),a.Ay.createElement("div",{className:"line1"},t.line1),a.Ay.createElement("div",{className:"line2"},t.line2),a.Ay.createElement("div",{className:"country"},t.country?t.country:""),u&&null!==s?a.Ay.createElement("div",{className:"label"},s):null)))}),y=h.filter(e=>!0===e[l]),A=a.Ay.createElement(s.FK,null,a.Ay.createElement("a",{href:"#",onClick:e=>{this.handleSelectAll(e)}},(0,i.Oj)({nl:"Selecteer alle",en:"Select all"})),a.Ay.createElement("div",{style:{padding:"0 4px"}}," · "),a.Ay.createElement("a",{href:"#",onClick:e=>{this.handleDeselectAll(e)}},(0,i.Oj)({nl:"geen",en:"none"}))),b=a.Ay.createElement("div",{style:{display:"flex"}},a.Ay.createElement("div",{style:{flex:"1"},onClick:e=>{this.toggleOpen(e)}},y.length>0?a.Ay.createElement("div",null,y.length," ",(0,i.Oj)({nl:"geselecteerd",en:"selected"})):a.Ay.createElement("div",null,(0,i.Oj)({nl:"Selecteer adressen",en:"Select addresses"}))),e?A:a.Ay.createElement("div",{className:"select-indicator",onClick:e=>{this.toggleOpen(e)}},a.Ay.createElement("div",{className:"select-dropdown"})));return a.Ay.createElement("div",{className:"field select-component "+(c?"always-open":"")},r?a.Ay.createElement("label",null,a.Ay.createElement("span",null,r)):"",a.Ay.createElement("div",{style:{position:"relative"},ref:this.focus},p.length>0?a.Ay.createElement("div",{className:"text-input"},b):a.Ay.createElement("div",null,(0,i.Oj)({nl:"Geen beschikbare adressen",en:"No addresses available"})),a.Ay.createElement("div",{className:`select-options ${e?"open":"closed"}
1 ${m?"minimal":""}`},a.Ay.createElement("div",{className:"addresses"},a.Ay.createElement("table",{className:"table"},p)))))}}var b=(0,i.lB)(A);A.propTypes={addresses:l.A.object,user:l.A.object,onHandleFilter:l.A.func,onHandleChecked:l.A.func,onMessage:l.A.func},A.defaultProps={addresses:{},user:{},onHandleFilter:()=>{},onHandleChecked:()=>{},onMessage:()=>{}};var v=n(318),E=n(832),k=n(36);const f=["font","fontSize","color","border","decoration"],w={font:"mailbook",fontSize:"",color:"",border:"",decoration:""},j=e=>f.reduce((t,n)=>({...t,[n]:e[n]}),{}),O=(e,t)=>f.every(n=>(e[n]||"")===(t[n]||""));class N extends a.Ay.Component{constructor(e){super(e),this.state={history:{undo:0,redo:0}},this.past=[],this.future=[],this.opened=j(e.settings),this.handleKey=this.handleKey.bind(this)}componentDidMount(){window.addEventListener("keydown",this.handleKey),document.documentElement.classList.add("label-designing")}componentWillUnmount(){window.removeEventListener("keydown",this.handleKey),document.documentElement.classList.remove("label-designing")}handleKey(e){if("Escape"===e.key)return e.preventDefault(),void this.cancel();(e.metaKey||e.ctrlKey)&&"z"===e.key.toLowerCase()&&(e.preventDefault(),e.shiftKey?this.redo():this.undo())}change(e){const t=j(this.props.settings);O(t,{...t,...e})||(this.past.push(t),this.future=[],this.props.onChange(e),this.setState({history:{undo:this.past.length,redo:0}}))}undo(){this.past.length&&(this.future.push(j(this.props.settings)),this.props.onChange(this.past.pop()),this.setState({history:{undo:this.past.length,redo:this.future.length}}))}redo(){this.future.length&&(this.past.push(j(this.props.settings)),this.props.onChange(this.future.pop()),this.setState({history:{undo:this.past.length,redo:this.future.length}}))}cancel(){this.props.onChange(this.opened),this.props.onDone()}tiles(e,t,n,s,l=this.props.settings[e]||""){return t.map(t=>a.Ay.createElement("button",{type:"button",key:t.id||"none",className:`studio-tile ${s} ${t.id===l?"selected":""}`,title:(0,i.Oj)(t.name),"aria-pressed":t.id===l,onClick:()=>this.change({[e]:t.id})},n(t)))}renderStudio(){const{settings:e,address:t,country:n,position:s,price:l,onBrowse:r,onDone:o}=this.props,{history:d}=this.state,c=(0,k.kG)(e.color).hex,m=(0,k.b6)(e.color);return a.Ay.createElement("div",{className:"studio",role:"dialog","aria-label":(0,i.Oj)({nl:"Ontwerp je etiket",en:"Design your label"})},a.Ay.createElement("div",{className:"composer-corner"},a.Ay.createElement("button",{type:"button",className:"composer-step",disabled:!d.undo,onClick:()=>this.undo(),"aria-label":(0,i.Oj)({nl:"Ongedaan maken",en:"Undo"}),title:(0,i.Oj)({nl:"Ongedaan maken (⌘Z)",en:"Undo (⌘Z)"}),dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true"><path d="M7 5L3 9l4 4M3.5 9H12a4.5 4.5 0 0 1 0 9h-2" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'}}),a.Ay.createElement("button",{type:"button",className:"composer-step",disabled:!d.redo,onClick:()=>this.redo(),"aria-label":(0,i.Oj)({nl:"Opnieuw",en:"Redo"}),title:(0,i.Oj)({nl:"Opnieuw (⇧⌘Z)",en:"Redo (⇧⌘Z)"}),dangerouslySetInnerHTML:{__html:'<svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true"><path d="M13 5l4 4-4 4M16.5 9H8a4.5 4.5 0 0 0 0 9h2" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'}}),a.Ay.createElement("button",{type:"button",className:"composer-close",onClick:()=>this.cancel(),"aria-label":(0,i.Oj)({nl:"Stoppen",en:"Stop"})},"×")),a.Ay.createElement("div",{className:"studio-fonts",role:"group","aria-label":(0,i.Oj)({nl:"Lettertype",en:"Font"})}
1,this.tiles("font",k.CC,e=>a.Ay.createElement("span",{className:"studio-font",style:{fontFamily:`"${e.family}"`,color:c}},(0,i.Oj)(e.name)),"font",e.font||"mailbook")),a.Ay.createElement("div",{className:"studio-stage"},a.Ay.createElement(v.A,{className:"studio-label",address:t,country:n,settings:e}),s?a.Ay.createElement("div",{className:"studio-browse"},a.Ay.createElement("button",{type:"button",className:"previous",onClick:()=>r(-1),"aria-label":(0,i.Oj)({nl:"Vorig adres",en:"Previous address"})}),a.Ay.createElement("span",null,(0,i.Oj)({nl:`Voorbeeld ${s}`,en:`Preview ${s}`})),a.Ay.createElement("button",{type:"button",className:"next",onClick:()=>r(1),"aria-label":(0,i.Oj)({nl:"Volgend adres",en:"Next address"})})):null),a.Ay.createElement("div",{className:"studio-rail left"},a.Ay.createElement("div",{className:"studio-group",role:"group","aria-label":(0,i.Oj)({nl:"Inkt",en:"Ink"})},a.Ay.createElement("span",{className:"studio-caption"},(0,i.Oj)({nl:"Inkt",en:"Ink"})),this.tiles("color",k.yt,e=>a.Ay.createElement("span",{className:"studio-swatch",style:{background:`linear-gradient(135deg, ${e.hex} 0 50%, ${(0,k.b6)(e.id)} 50% 100%)`}}),"ink")),a.Ay.createElement("div",{className:"studio-group",role:"group","aria-label":(0,i.Oj)({nl:"Adresruimte",en:"Address spacing"})},a.Ay.createElement("span",{className:"studio-caption"},(0,i.Oj)({nl:"Ruimte",en:"Spacing"})),this.tiles("fontSize",(0,k.Fe)(e.fontSize),e=>{const t=63.5-2*e.padding,n=3.6+.8*e.offset,s=n+2.2;return a.Ay.createElement("svg",{className:"studio-spacing",viewBox:"0 0 63.5 38.1"},[1,.84,.62].map((l,r)=>a.Ay.createElement("rect",{key:r,x:e.padding,y:(38.1-(3*s-2.2))/2+r*s,width:t*l,height:n,rx:n/2,fill:c})))},"spacing"))),a.Ay.createElement("div",{className:"studio-rail right"},a.Ay.createElement("div",{className:"studio-group",role:"group","aria-label":(0,i.Oj)({nl:"Icoon",en:"Icon"})},a.Ay.createElement("span",{className:"studio-caption"},(0,i.Oj)({nl:"Icoon",en:"Icon"})),this.tiles("decoration",(0,k.LE)(e.decoration),e=>e.shapes.length?((e,t,n,s,l)=>a.Ay.createElement("svg",{viewBox:t},e.map((e,t)=>a.Ay.createElement("path",{key:t,d:(0,k.jY)(e.path),fill:void 0===e.fill?"none":(0,k.Mb)(e.fill,n,s),stroke:void 0===e.stroke?"none":(0,k.Mb)(e.stroke,n,s),strokeWidth:l(e),strokeDasharray:e.dash?e.dash.join(" "):void 0}))))(e.shapes,(0,k.mi)(e.shapes),c,m,e=>e.width||k.XE.width):a.Ay.createElement("span",{className:"studio-none"},(0,i.Oj)({nl:"Geen",en:"None"})),"icon"))),a.Ay.createElement("div",{className:"studio-bar"},a.Ay.createElement(h.A,{type:"button",className:"secondary studio-save",onClick:()=>o()},l?(0,i.Oj)({nl:`Opslaan · ${l}`,en:`Save · ${l}`}):(0,i.Oj)({nl:"Opslaan",en:"Save"})),a.Ay.createElement("button",{type:"button",className:"studio-reset",disabled:O(j(e),w),onClick:()=>this.change(w)},(0,i.Oj)({nl:"Standaard etiket",en:"Default label"}))))}render(){return(0,E.d5)(this.renderStudio(),document.body)}}N.propTypes={settings:l.A.object,address:l.A.object,country:l.A.string,position:l.A.string,price:l.A.string,onBrowse:l.A.func,onChange:l.A.func,onDone:l.A.func},N.defaultProps={settings:{},address:{},country:"nl",position:null,price:null,onBrowse:()=>{},onChange:()=>{},onDone:()=>{}};var S=n(177),C=n(159),x=n(341),D=n(413);class T extends a.Ay.Component{constructor(e){super(e);const t=e.addresses[e.user.settings.ownAddress],n={};t&&!e.user.streetname&&["to","streetname","housenr","postcode","city","state","country"].forEach(e=>{t[e]&&(n[e]=t[e])}),this.state={label:null,title:"",user:{...e.user,...n},product:this.getProduct(),settings:{type:"white",font:"mailbook",delivery:"package",stamps:!1,link:!1,postage:"default"},error:{},addresses:e.addresses},this.host=document.location.protocol+"//"+document.location.hostname,this.scrollPos={},this.listener=e=>{e&&e.preventDefault();const t=this.getView(),n=this.getTitle(),a=this.scrollPos[t]||1;this.setState({view:t,title:n},()=>{document.title=n+" - Mailbook",e&&window.requestAnimationFrame(()=>window.scrollTo(0,a))})}}componentDidMount(){const{addresses:e}=this.state;window.addEventListener("hashchange",this.listener),this.listener(),this.typing=e=>{const t="focusin"===e.type?e.target:e.relatedTarget,n=!!t&&/^(INPUT|TEXTAREA)$/.test(t.tagName)&&!/^(checkbox|radio)$/.test(t.type);document.documentElement.classList.toggle("typing",n)},document.addEventListener("focusin",this.typing),document.addEventListener("focusout",this.typing),Object.keys(e).forEach(t=>{e[t].addressRecipient=t!==this.props.user.settings.ownAddress}),this.setState({addresses:e},()=>{"Complete"===this.getView()&&this.checkPaymentStatus()})}componentWillUnmount(){window.removeEventListener("hashchange",this.listener),document.removeEventListener("focusin",this.typing),document.removeEventListener("focusout",this.typing),document.documentElement.classList.remove("typing")}getProduct(){let e={type:"label"};const t=["view","type","id","subview"];return document.location.hash.split("-").map((n,a)=>{e[t[a]]=n}),e}getView(){const e=this.getProduct();let t=e.type.charAt(0).toUpperCase()+e.type.slice(1);return/(complete|recipients|sending|pay|design|qr)/i.test(e.subview)&&(t=e.subview.charAt(0).toUpperCase()+e.subview.slice(1)),t}setView(e){const{product:t,settings:n}=this.state;this.hideError(),this.scrollPos[this.getView()]=document.documentElement.scrollTop||document.body.scrollTop,document.location.hash="order-"+t.type+"-"+n.type+"-"+e.toLowerCase()}getTitle(){const e=this.getProduct(),{paymentStatus:t}=this.state;let n;return"label"==e.type&&(n=(0,i.Oj)({nl:"Ontvang jouw adressen op adresetiketten",en:"Get your addresses on labels shipped to your home"}),"recipients"==e.subview?n=(0,i.Oj)({nl:"Selecteer adressen",en:"Select addresses"}):"design"==e.subview?n=(0,i.Oj)({nl:"Personaliseer je etiket",en:"Personalize your label"}):"qr"==e.subview?n=(0,i.Oj)({nl:"Personaliseer je sticker",en:"Customize your sticker"}):"complete"==e.subview?n="failed"===t||"canceled"===t?(0,i.Oj)({nl:"Betaling niet gelukt",en:"Payment failed"}):"succeeded"===t?(0,i.Oj)({nl:"Bestelling succesvol",en:"Order successful"}):(0,i.Oj)({nl:"Bestelling",en:"Order"}):"pay"==e.subview&&(n=(0,i.Oj)({nl:"Betaling",en:"Payment"}))),n}hideError(){this.showError({message:null,error:{}})}showError(e){e.error&&this.setState({error:e.error}),this.props.onMessage(e.message)}handleChecked(e,t,n=void 0){const{addresses:a}=this.state;a[e]&&(a[e][t]=void 0===n?!a[e][t]:n,this.setState({addresses:a}))}handleInputState(e,t="user"){const{error:n}=this.state,a=this.state[t],s=e.currentTarget;let l="checkbox"===s.type?s.checked:s.value,r={[s.id]:l};n[s.id]&&l&&l.length>0&&this.hideError();const i={...a,...r};this.setState({[t]:i})}handleCountryState(e){const{user:t}=this.state,n=e.currentTarget;null===n&&(n={value:null});const a={...t,country:n.value.toLowerCase()};this.setState({user:a})}validateGiftDraft(e){return!!(!e.link||e.envelopieKey&&"new"!==e.envelopieKey||(0,x.e5)(e))||(this.showError({message:(0,i.Oj)({nl:"Gebruik letters, cijfers, leestekens, valutatekens en emoji. De titel mag maximaal 200 tekens bevatten en het bericht 4000. Regeleinden kunnen alleen in het bericht.",en:"Use letters, numbers, punctuation, currency symbols and emoji. The title can contain up to 200 characters and the message 4000. Line breaks are only allowed in the message."})}),!1)}handleOrder(e,t=null){const{error:n,user:a,product:s,addresses:l,settings:r}=this.state;return event&&event.preventDefault(),new Promise(async(o,d)=>
1{if(!this.validateGiftDraft(r))return d();if(!a.city||!a.postcode||!a.streetname)return n.city=!a.city,n.postcode=!a.postcode,n.streetname=!a.streetname,this.showError({error:n,message:(0,i.Oj)({nl:"We hebben een volledig adres nodig om je bestelling te kunnen versturen.",en:"We need a complete address to complete your order."})}),d();const c=await(0,g.FH)("/response",{m:"order",user:a,product:s,addresses:l,settings:r,order:e,intent:t}).catch(()=>(this.showError({message:(0,i.Oj)({nl:"We konden de bestelling niet opslaan. Probeer later nog een keer.",en:"We could not handle your order. Try again later."})}),d()));return c&&!c.error?o(c):(this.showError({message:(0,i.Oj)({nl:"We konden de bestelling niet opslaan. Probeer later nog een keer.",en:"We could not handle your order. Try again later."})}),d())})}componentDidUpdate(e,t){"Complete"!==this.state.view||"Complete"===t.view||this.state.paymentChecked||this.checkPaymentStatus()}updateTitle(){const e=this.getTitle();this.setState({title:e},()=>{document.title=e+" - Mailbook"})}checkPaymentStatus(){const e=new URLSearchParams(window.location.search),t=e.get("payment_intent"),n=e.get("redirect_status");"succeeded"===n?this.setState({paymentStatus:"succeeded",paymentChecked:!0},()=>this.updateTitle()):"failed"===n?this.setState({paymentStatus:"failed",paymentChecked:!0},()=>this.updateTitle()):t?(this.setState({paymentStatus:"checking",paymentChecked:!0}),(0,g.FH)("/response",{m:"verify-payment",intent:t}).then(e=>{"succeeded"===e.status?this.setState({paymentStatus:"succeeded"},()=>this.updateTitle()):this.setState({paymentStatus:e.status||"unknown"},()=>this.updateTitle())}).catch(()=>{this.setState({paymentStatus:"unknown"},()=>this.updateTitle())})):this.setState({paymentStatus:"unknown",paymentChecked:!0},()=>this.updateTitle())}renderComplete(){const{user:e,product:t,paymentStatus:n}=this.state;if(!n||"checking"===n)return a.Ay.createElement("form",{className:"saved order"},a.Ay.createElement("p",{className:"call-out"},(0,i.Oj)({nl:"Betaling wordt gecontroleerd...",en:"Verifying payment..."})));if("failed"===n||"canceled"===n)return a.Ay.createElement("form",{className:"saved order"},a.Ay.createElement("p",{className:"call-out error"},(0,i.Oj)({nl:"Je betaling is niet gelukt. We versturen pas de bestelling na een succesvolle betaling. Probeer het opnieuw of kies een andere betaalmethode.",en:"Your payment was not successful. Please try again or choose a different payment method."})),a.Ay.createElement("div",{className:"field row column"},a.Ay.createElement(h.A,{type:"submit",onClick:()=>{document.location.hash="order-"+t.type}},(0,i.Oj)({nl:"Opnieuw proberen",en:"Try again"}))));if("processing"===n||"requires_action"===n)return a.Ay.createElement("form",{className:"saved order"},a.Ay.createElement("p",{className:"call-out info"},(0,i.Oj)({nl:"Je betaling wordt nog verwerkt. Je ontvangt een e-mail zodra de betaling is bevestigd.",en:"Your payment is still being processed. You will receive an email once the payment is confirmed."})),a.Ay.createElement("div",{className:"field row column"},a.Ay.createElement(h.A,{type:"submit",onClick:()=>{document.location.hash="home"}},(0,i.Oj)({nl:"Ga door",en:"Continue"}))));if("unknown"===n)return a.Ay.createElement("form",{className:"saved order"},a.Ay.createElement("p",{className:"call-out info"},(0,i.Oj)({nl:"We konden de status van je betaling niet verifiëren. Controleer je e-mail voor een bevestiging of neem contact met ons op.",en:"We couldn't verify your payment status. Please check your email for confirmation or contact us."})),a.Ay.createElement("div",{className:"field row column"},a.Ay.createElement(h.A,{type:"submit",onClick:()=>{document.location.hash="home"}},(0,i.Oj)({nl:"Ga door",en:"Continue"}))));let s=(0,i.Oj)({nl:"Je betaling is gelukt en je bestelling is ontvangen. Je krijgt per e-mail een bevestiging met daarin de details van je bestelling en bezorging.",en:"Your payment was submitted and your order retrieved. You will retrieve a confirmation email with details of your order and delivery schedule."});const l=C.yJ&&"label"===t.type&&4!==Number(e.type)?a.Ay.createElement(C.Ay,{variant:"success",user:e,onUserUpdate:this.props.onUserUpdate,onMessage:this.props.onMessage}):null;return a.Ay.createElement("form",{className:"saved order"},a.Ay.createElement("p",{className:"call-out"},s),l,a.Ay.createElement("div",{className:"field row column"},a.Ay.createElement(h.A,{type:"submit",onClick:()=>{document.location.hash="home"}},(0,i.Oj)({nl:"Ga door",en:"Continue"}))),a.Ay.createElement("img",{height:"1",width:"1",src:"https://www.googleadservices.com/pagead/conversion/11432820824/?value=20.0&currency_code=EUR&label=CbdPCJGU2f4YENiAzMsq&guid=ON&script=0"}))}renderPay(){const{error:e,user:t,addresses:n,product:l,settings:r}=this.state,i=(0,g.mr)(n,t,l,r),{total:o}=i,d=i.items.map(e=>a.Ay.createElement("li",null,e.description)),c=a.Ay.createElement("div",{className:"call-out"},a.Ay.createElement("h3",null,"Besteloverzicht:"),a.Ay.createElement("ul",null,d),a.Ay.createElement("p",null,"Totaal bedrag bestelling ",a.Ay.createElement("strong",null,(0,g.$g)(o,t)),".")),m=this.createPaymentButton(i);return a.Ay.createElement(s.FK,null,c,a.Ay.createElement("form",null,a.Ay.createElement(y.A,{elements:{to:!1,contact:!1,label:!1,
1consent:!1,delete:!1},user:{owner:!1},error:e,address:t,onHandleInputState:e=>this.handleInputState(e),onHandleCountryState:e=>this.handleCountryState(e),onHandleAutofill:e=>this.setState(t=>({user:{...t.user,...e}}))}),m))}renderRecipients(){const{addresses:e,user:t,product:n,settings:s,error:l}=this.state,{onMessage:r}=this.props;(0,g.mr)(e,t,n,s);const o=a.Ay.createElement(b,{addresses:e,user:t,attr:"addressRecipient",onHandleFilter:()=>!0,onHandleChecked:(e,t,n)=>this.handleChecked(e,t,n),onMessage:e=>r(e),alwaysOpen:!0,showLabel:!0});if("label"==n.type){const t=(0,g.$U)(e,s).recipients>0;return a.Ay.createElement("form",null,o,a.Ay.createElement("div",{className:"sticky"},a.Ay.createElement(h.A,{disabled:!t,onClick:()=>this.setView("Order")},(0,i.Oj)({nl:"Volgende",en:"Next"}))))}}renderSending(){return"WIP"}paperTypes(e){const{user:t}=this.state;return[{id:"white",name:{nl:"Wit",en:"White"},note:{nl:"Premium wit, staat op elke envelop.",en:"Premium white, suits any envelope."}},{id:"transparant",name:{nl:"Transparant",en:"Transparent"},note:{nl:"Lijkt gedrukt op de envelop, mooi op witte of licht gekleurde enveloppen.",en:"Looks printed on the envelope, lovely on white or light envelopes."}},{id:"textured",name:{nl:"Textuur",en:"Textured"},note:{nl:"Licht crèmekleurig papier met een fijne structuur.",en:"Light cream paper with a fine structure."}},{id:"gold",name:{nl:"Goud",en:"Gold"},note:{nl:"Licht glanzend goudkleurig.",en:"Slightly glossy gold."}}].map(n=>({...n,price:e.additionalPrice[n.id]>0?`+${(0,g.$g)(e.additionalPrice[n.id],t)}`:null}))}recipientAddresses(){const{addresses:e}=this.state,t=Object.keys(e).map(t=>e[t]),n=t.filter(e=>!0===e.addressRecipient);return n.length?n:t}exampleAddress(){const{previewIndex:e=0}=this.state,t=this.recipientAddresses();return t[(e%t.length+t.length)%t.length]}renderLabelPreview(e=null){const{user:t,settings:n,previewIndex:s=0}=this.state,l=this.recipientAddresses(),r=(s%l.length+l.length)%l.length;return a.Ay.createElement("div",{className:"label-stage"},a.Ay.createElement(v.A,{className:"stage",address:this.exampleAddress(),country:t.country,settings:n}),l.length>1?a.Ay.createElement("div",{className:"studio-browse"},a.Ay.createElement("button",{type:"button",className:"previous",onClick:()=>this.setState({previewIndex:s-1}),"aria-label":(0,i.Oj)({nl:"Vorig adres",en:"Previous address"})}),a.Ay.createElement("span",null,(0,i.Oj)({nl:`Voorbeeld ${r+1} / ${l.length}`,en:`Preview ${r+1} / ${l.length}`})),a.Ay.createElement("button",{type:"button",className:"next",onClick:()=>this.setState({previewIndex:s+1}),"aria-label":(0,i.Oj)({nl:"Volgend adres",en:"Next address"})})):null,e?a.Ay.createElement("p",{className:"note stage-note"},e):null)}renderDesign(){const{user:e,settings:t,previewIndex:n=0}=this.state,s=this.recipientAddresses(),l=(n%s.length+s.length)%s.length,r=(0,k.wR)(t);return a.Ay.createElement(N,{settings:t,address:this.exampleAddress(),country:e.country,position:s.length>1?`${l+1} / ${s.length}`:null,price:r>0?`+${(0,g.$g)(r,e)}`:null,onBrowse:e=>this.setState({previewIndex:n+e}),onChange:e=>this.setState(t=>({settings:{...t.settings,...e}})),onDone:()=>this.setView("Order")})}renderQrSticker(){const{user:e,settings:t}=this.state,n=(0,i.Oj)(x.GT),l=[...new Set([n,(0,i.Oj)({nl:"Feliciteer!",en:"Congrats!"}),(0,i.Oj)({nl:"Gefeliciteerd",en:"Send your wishes"}),(0,i.Oj)({nl:"Reageer hier",en:"Say hello"}),...2===Number(e.type)?[(0,i.Oj)({nl:"Welkom baby!",en:"Welcome baby!"})]:[]])],r=t.linkTip??n,o=this.state.customStickerText||!l.includes(r),d=e.envelopies||[],c=this.stickerPage(),m="new"===c;return a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"label-stage"},a.Ay.createElement(S.A,{text:r,envelopieKey:m?null:c,colourful:"party"===t.linkQr,confetti:!!t.linkConfetti})),a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Tekst op de sticker",en:"Sticker text"}))),a.Ay.createElement("div",{className:"sticker-texts",role:"group"},l.map(e=>a.Ay.createElement("button",{type:"button",key:e,className:"sticker-text option "+(o||e!==r?"":"on"),"aria-pressed":!o&&e===r,onClick:()=>this.setState({customStickerText:!1,settings:{...t,linkTip:e}})},e)),a.Ay.createElement("button",{type:"button",className:"sticker-text option own "+(o?"on":""),"aria-pressed":o,onClick:()=>this.setState({customStickerText:!0},()=>document.getElementById("customLinkTip")?.focus())},(0,i.Oj)({nl:"Eigen tekst",en:"Own text"}))),o?a.Ay.createElement(p.A,{type:"text",id:"customLinkTip",maxlength:16,value:r,placeholder:(0,i.Oj)({nl:"Maximaal 16 tekens",en:"Up to 16 characters"}),onChange:e=>this.setState({settings:{...t,linkTip:e.currentTarget.value.slice(0,16)}})}):null),a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Feestelijk",en:"Festive"}))),a.Ay.createElement("div",{className:"sticker-texts",role:"group"},a.Ay.createElement("button",{type:"button",className:"sticker-text option "+("party"===t.linkQr?"on":""),"aria-pressed":"party"===t.linkQr,onClick:()=>this.setState({settings:{...t,linkQr:"party"===t.linkQr?"":"party"}})},(0,i.Oj)({nl:"QR in feestkleuren",en:"QR in party colours"})),a.Ay.createElement("button",{type:"button",className:"sticker-text option "+(t.linkConfetti?"on":""),"aria-pressed":!!t.linkConfetti,onClick:()=>this.setState({settings:{...t,linkConfetti:!t.linkConfetti}})}
1,(0,i.Oj)({nl:"Confetti",en:"Confetti"})))),d.length?a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Naar welk prikbord?",en:"Which board does it open?"}))),d.map(e=>{const n=!(!e.settings||!e.settings.isActive);return this.renderChoice(e.envelopieKey,c===e.envelopieKey,e.settings&&e.settings.title||(0,i.Oj)({nl:"Naamloos prikbord",en:"Untitled board"}),n?(0,i.Oj)({nl:"Live",en:"Live"}):(0,i.Oj)({nl:"Staat uit, gaat aan met je bestelling",en:"Off, switched on with your order"}),()=>this.setState({settings:{...t,envelopieKey:e.envelopieKey}}))}),this.renderChoice("new",m,(0,i.Oj)({nl:"Nieuw prikbord",en:"New board"}),(0,i.Oj)({nl:"Voor deze kaart, staat meteen aan",en:"For this card, on at once"}),()=>this.setState({settings:{...t,envelopieKey:"new"}}))):null,m?a.Ay.createElement(s.FK,null,this.renderEnvelopieSetup(),a.Ay.createElement("p",{className:"note paper-note"},(0,i.Oj)({nl:"Je prikbord staat na het bestellen meteen aan. Titel en bericht pas je daarna nog aan.",en:"Your board is on as soon as you order. You can change its title and message afterwards."}))):null,a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement(h.A,{className:"secondary",onClick:e=>this.handleSaveQr(e)},(0,i.Oj)({nl:"Opslaan",en:"Save"}))))}stickerPage(){const{user:e,settings:t}=this.state;if(t.envelopieKey)return t.envelopieKey;const n=e.envelopies||[],a=n.find(e=>e.settings&&e.settings.isActive)??n[0];return a?a.envelopieKey:"new"}renderChoice(e,t,n,s,l){return a.Ay.createElement("button",{type:"button",key:e,className:"order-extra option choice "+(t?"on":""),"aria-pressed":t,onClick:l},a.Ay.createElement("span",{className:"order-extra-check"}),a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,n),a.Ay.createElement("span",null,s)))}handleSaveQr(e){e.preventDefault(),(0,D.u4)("qr-sticker","save");const{user:t,settings:n}=this.state,a=(0,x.dm)(t),s={...n,link:!0,envelopieKey:this.stickerPage(),envelopieTitle:n.envelopieTitle??(0,i.Oj)(a.title),envelopieDescription:n.envelopieDescription??(0,i.Oj)(a.description)};this.validateGiftDraft(s)&&this.setState({settings:s},()=>this.setView("Order"))}handleLinkToggle(e){const{user:t,settings:n}=this.state;if((0,D.u4)("qr-sticker",e?"tick":"untick"),!e)return void this.setState({settings:{...n,link:!1}});const a=t.envelopies.find(e=>e.settings.isActive)??t.envelopies[0];this.setState({settings:{...n,link:!0,envelopieKey:n.envelopieKey??a.envelopieKey,envelopieTitle:n.envelopieTitle??(0,i.Oj)((0,x.dm)(t).title),envelopieDescription:n.envelopieDescription??(0,i.Oj)((0,x.dm)(t).description)}})}renderEnvelopieSetup(){const{user:e,settings:t}=this.state,n=(0,x.dm)(e),s=(0,i.Oj)(n.title);return a.Ay.createElement("section",{className:"qr-gift-setup"},a.Ay.createElement(p.A,{id:"envelopieTitle",type:"input",label:(0,i.Oj)({nl:"Titel van je prikbord",en:"Title of your board"}),placeholder:s,value:t.envelopieTitle??s,onChange:e=>this.setState({settings:{...t,envelopieTitle:e.currentTarget.value}})}),a.Ay.createElement(p.A,{id:"envelopieDescription",type:"textarea",rows:"3",label:(0,i.Oj)({nl:"Bericht voor wie de sticker scant",en:"Message for whoever scans the sticker"}),placeholder:(0,i.Oj)(n.description),value:t.envelopieDescription??(0,i.Oj)(n.description),onChange:e=>this.setState({settings:{...t,envelopieDescription:e.currentTarget.value}})}))}renderQr(){return a.Ay.createElement("div",{className:"order qr-order"},a.Ay.createElement("form",{onSubmit:e=>e.preventDefault()},this.renderQrSticker()))}renderExtra(e,t,n,s,l,r){return a.Ay.createElement("button",{type:"button",id:e,className:"order-extra option "+(t?"on":""),"aria-pressed":t,onClick:()=>r(!t)},a.Ay.createElement("span",{className:"order-extra-check"}),a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,n),a.Ay.createElement("span",null,s)),l?a.Ay.createElement("span",{className:"chip quiet order-extra-price"},l):null)}renderAction(e,t,n,s,l){return a.Ay.createElement("button",{type:"button",id:e,className:"order-extra option action",onClick:l},a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,t),a.Ay.createElement("span",null,n)),s?a.Ay.createElement("span",{className:"chip quiet order-extra-price"},s):null,a.Ay.createElement("span",{className:"order-extra-go","aria-hidden":"true"}))}renderLabel(e=!1){const{user:t,error:n,product:l,addresses:r,settings:o}=this.state;let{returnToError:d}=this.state;const c=(0,g.mr)(r,t,l,o),{promo:m,promoMessage:u}=c,A=(0,g.$U)(r,o),b=/nl|be|de|fr|es/i.test(t.country);if(e&&(0===A.total||!b))return null;const v=this.createPaymentButton(c);if(0===A.total)return a.Ay.createElement(s.FK,null,a.Ay.createElement("p",{className:"call-out"},(0,i.Oj)({nl:a.Ay.createElement("span",null,"Verzamel eerst de adressen van vrienden en familie, daarna kan je deze hier op adresetiketten per post bestellen."),en:a.Ay.createElement("span",null,"First start collecting addresses of friends and family, then you can order them on labels")})));if(!b)return a.Ay.createElement(s.FK,null,a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"call-out"},(0,i.Oj)({en:a.Ay.createElement("span",null,"Unfortunately we don't ship to the ",t.country.toUpperCase()," anymore. You can DIY your labels with"," ",a.Ay.createElement("a",{href:"https://mailbook.app/news/how-to-create-labels"},"this guide")," or go straight to"," ",a.Ay.createElement("a",{href:"#labels"},"downloading")," your addresses as labels for printing.")})),a.Ay.createElement("div",{className:"field row column end"},a.Ay.createElement(h.A,{onClick:e=>{e.preventDefault(),this.setState({user:{...t,country:"nl"}})}},(0,i.Oj)({en:"Change country",nl:"Land wijzigen"})))));let E="";const f=(0,g.wH)(t);0==f.days&&f.before>0?E=(0,i.Oj)({nl:`Vóór ${f.before}.00 besteld is vandaag al verzonden`,en:`Order before ${f.before}.00, shipped today`}):1==f.days?E=(0,i.Oj)({nl:"Vandaag besteld, morgen verstuurd",en:"Order today, shipped tomorrow"}):f.days>1&&(E=(0,i.Oj)({nl:`Bezorgd binnen ${f.daysMin}-${f.daysMax} werkdagen`,en:`Delivered within ${f.daysMin}-${f.daysMax} business days`}));const w=(0,k.wR)(o)>0,j=this.paperTypes(c),O=j.find(e=>e.id===o.type)||j[0],N=a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"field paper"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Papier",en:"Paper"}))),a.Ay.createElement("div",{className:"paper-tiles",role:"group"},j.map(e=>a.Ay.createElement("button",{type:"button",key:e.id,className:"paper-tile option "+(e.id===O.id?"on":""),"aria-pressed":e.id===O.id,onClick:()=>this.setState({settings:{...o,type:e.id}})},a.Ay.createElement("span",{className:`paper-swatch ${e.id}`}),a.Ay.createElement("span",{className:"paper-name"},(0,i.Oj)(e.name)),a.Ay.createElement("span",{className:"paper-price"},e.price||(0,i.Oj)({nl:"inbegrepen",en:"included"})))))),a.Ay.createElement("div",{className:"field label-design"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Jouw etiket",en:"Your label"}))),this.renderLabelPreview((0,i.Oj)(O.note)),this.renderAction("order-recipients",(0,i.Oj)({nl:"Adressen kiezen",en:"Choose addresses"}),A.recipients<A.total?(0,i.Oj)({nl:`${A.recipients} van je ${A.total} adressen krijgen een etiket`,en:`${A.recipients} of your ${A.total} addresses get a label`}):(0,i.Oj)({nl:`Alle ${A.recipients} adressen uit je adresboek krijgen een etiket`,en:`All ${A.recipients} addresses in your address book get a label`}),`${A.recipients}x`,()=>this.setView("Recipients")),this.renderAction("order-design",w?(0,i.Oj)({nl:"Je eigen ontwerp",en:"Your own design"}):(0,i.Oj)({nl:"Ontwerp je etiket",en:"Design your label"}),w?(0,i.Oj)({nl:"Pas lettertype, inkt, rand of icoon aan",en:"Change the font, ink, border or icon"}):(0,i.Oj)({nl:"Maak hem persoonlijk: lettertype, inkt, rand en icoon",en:"Make it yours: font, ink, border and icon"}),"+€5",()=>this.setView("Design")))),T=(t.firstName+" "+t.lastName).trim().substr(0,21)+"\n"+((t.streetname??"De Brink").substr(0,16)+" "+(t.housenr??"1-A")).trim()+"\n"+(t.city??"Lutjebroek").substr(0,21),M=a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",{htmlFor:"returnTo"},(0,i.Oj)({nl:"Jouw afzendersticker",en:"Your return address sticker"}))),a.Ay.createElement("div",{className:"label-stage return-stage"}
1,a.Ay.createElement("div",{className:"return-label",style:{"--lines":Math.min(3,(o.returnTo||T).split("\n").length)}},a.Ay.createElement(p.A,{type:"textarea",rows:3,maxRows:3,id:"returnTo",value:o.returnTo??null,onChange:e=>{const t=e.currentTarget.value,n=t?.split("\n"),a=[0,1,2];d=null;const s=a.map(e=>(n[e]&&n[e].length>21?(d=(0,i.Oj)({nl:`De ${e+1}e regel heeft zijn maximum lengte bereikt.`,en:`Line ${e+1} has reached its maximum length.`}),n[e]=n[e].substr(0,21)):n.length>a.length&&(d=(0,i.Oj)({nl:`Je kan maximaal ${a.length} regels gebruiken.`,en:`You can use ${a.length} lines at most.`})),n[e])).filter(e=>void 0!==e).join("\n");this.setState({settings:{...o,returnTo:s},returnToError:d})},placeholder:T})),a.Ay.createElement("p",{className:d?"stage-note warning":"stage-note"},d||(0,i.Oj)({nl:"Tik op de sticker om de tekst aan te passen: 3 regels van 21 tekens.",en:"Tap the sticker to change its text: 3 lines of 21 characters."})))),K=a.Ay.createElement(s.FK,null,this.renderExtra("return",!!o.return,(0,i.Oj)({nl:"Afzenderstickers",en:"Return address stickers"}),(0,i.Oj)({nl:`${A.recipients}x met jouw adres, voor de achterkant van de envelop`,en:`${A.recipients}x with your address, for the back of the envelope`}),`+${(0,g.$g)(c.additionalPrice.return,t)}`,e=>this.setState({settings:{...o,return:e}})),o.return?M:null),$=!o.envelopieKey||"new"===o.envelopieKey,P=t.envelopies.find(e=>e.envelopieKey===o.envelopieKey),L=$?o.envelopieTitle:P?.settings.title||(0,i.Oj)({nl:`Pagina #${o.envelopieKey}`,en:`Page #${o.envelopieKey}`}),F=a.Ay.createElement(s.FK,null,this.renderExtra("link",!!o.link,(0,i.Oj)({nl:"Felicitatiestickers",en:"Congratulation stickers"}),(0,i.Oj)({nl:`${A.recipients}x met een QR-code naar je felicitatie prikbord`,en:`${A.recipients}x with a QR code to your congratulations board`}),(0,i.Oj)({nl:"gratis",en:"free"}),e=>this.handleLinkToggle(e)),o.link?a.Ay.createElement("div",{className:"sticker-summary"},a.Ay.createElement(S.A,{text:o.linkTip??(0,i.Oj)(x.GT),envelopieKey:$?null:o.envelopieKey,colourful:"party"===o.linkQr,confetti:!!o.linkConfetti}),a.Ay.createElement("div",null,a.Ay.createElement("p",null,(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,"Wie hem scant, komt op ",$?"je nieuwe prikbord":"je prikbord"," ",a.Ay.createElement("strong",null,L)," en kan jullie super handig direct feliciteren."),en:a.Ay.createElement(s.FK,null,"Whoever scans it lands on ",$?"your new board":"your board"," ",a.Ay.createElement("strong",null,L)," ","and can congratulate you.")})),a.Ay.createElement(h.A,{type:"button",className:"white small",onClick:e=>{e.preventDefault(),(0,D.u4)("qr-sticker","view"),this.setView("Qr")}},(0,i.Oj)({nl:"Sticker aanpassen",en:"Change sticker"})))):null),U=C.yJ&&4!==Number(t.type)&&t.envelopies.length>0,V=a.Ay.createElement(p.A,{type:"input",id:"promo",value:o.promo,onChange:e=>{this.setState({settings:{...o,promo:e.currentTarget.value?.toUpperCase()}})},placeholder:(0,i.Oj)({nl:"Jouw kortingscode",en:"Your discount code"})}),z="nl"==t.country||"be"==t.country?a.Ay.createElement(s.FK,null,this.renderExtra("hasPromo",!!o.hasPromo,(0,i.Oj)({nl:"Kortingscode",en:"Discount code"}),(0,i.Oj)({nl:"Ik heb een kortingscode",en:"I have a discount code"}),null,e=>this.setState({settings:{...o,hasPromo:e}})),o.hasPromo?a.Ay.createElement(s.FK,null,V,!0===m?a.Ay.createElement("p",{className:"call-out"},(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,"De kortingscode ",a.Ay.createElement("strong",null,o.promo)," is toegepast en geeft je nu ",u,"."),en:a.Ay.createElement(s.FK,null,"The discount code ",a.Ay.createElement("strong",null,o.promo)," is applied and gives you ",u,".")})):a.Ay.createElement("p",{className:"note field-note"},(0,i.Oj)({nl:"Tip: vraag vrienden die eerder bij Mailbook bestelden om een kortingscode.",en:"Tip: ask friends who ordered at Mailbook before for a discount code."}))):null):null,I=a.Ay.createElement("div",{className:"field extras"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Handig om toe te voegen",en:"Extras to add"}))),K,U?F:null,z),B={...t,to:t.to??t.business};return a.Ay.createElement("div",{className:"order",style:e?{display:"none"}:null},a.Ay.createElement("div",{className:"call-out"},(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,a.Ay.createElement("p",null,"Je adressen gedrukt op adresetiketten en thuisbezorgd. Plak ze op een envelop en verstuur zo je post.")),en:a.Ay.createElement(s.FK,null,a.Ay.createElement("p",null,"Your addresses printed on labels and shipped to your home. Just stick them on an envelope and send out your mail."))}),a.Ay.createElement("div",{className:"reviews"},a.Ay.createElement("img",{className:"stars",width:"512",height:"96",src:"/img/reviews.svg"}),a.Ay.createElement("a",{href:"https://www.google.com/maps/place/Mailbook/@52.3845445,4.919022,622m/data=!3m1!1e3!4m8!3m7!1s0x47c609a98e7b2a19:0x606d0cc61d49622c!8m2!3d52.3845445!4d4.9215969!9m1!1b1!16s%2Fg%2F11q7bc6n7l?entry=ttu&g_ep=EgoyMDI1MDkyMy4wIKXMDSoASAFQAw%3D%3D",target:"_blank",className:"explain"},a.Ay.createElement("span",null,"4.9")," ",(0,i.Oj)({nl:"van 200+ reviews",en:"from 200+ reviews"}))),a.Ay.createElement("ul",null,a.Ay.createElement("li",null,(0,i.Oj)({nl:"Jouw adressen gedrukt op hoge 
1kwaliteit adresetiketten",en:"Your addresses printed on high quality address labels"})),a.Ay.createElement("li",null,(0,i.Oj)({nl:"Alle adressen netjes uitgelijnd",en:"All addresses neatly alligned"})),a.Ay.createElement("li",null,E))),a.Ay.createElement("form",null,N,I,a.Ay.createElement(y.A,{elements:{to:!1,contact:!1,label:!1,consent:!1,delete:!1,addressLabel:(0,i.Oj)({nl:"Bezorgadres",en:"Delivery address"})},user:{owner:!1},error:n,address:B,onHandleInputState:e=>this.handleInputState(e),onHandleCountryState:e=>this.handleCountryState(e),onHandleAutofill:e=>this.setState(t=>({user:{...t.user,...e}}))}),a.Ay.createElement("h2",null,a.Ay.createElement("em",null),(0,i.Oj)({nl:a.Ay.createElement("span",null,"Betaalmethodes"),en:a.Ay.createElement("span",null,"Payment methodes")})),v))}createPaymentButton(e){const{user:t,product:n,addresses:s,settings:l}=this.state,{onMessage:r}=this.props,i=document.createElement("a");i.href=document.location,i.hash="order-"+n.type+"-"+l.type+"-complete";const o=i.href;return a.Ay.createElement(m.A,{success:o,user:t,product:n,order:e,onMessage:e=>r(e),onBeforePay:t=>this.handleOrder(e,t),sticky:!0})}renderEmpty(){return null}switchView(){const e=this.getView();try{return this["render"+e]()}catch(t){return console.log(t,e),this.renderEmpty()}}render(){const{title:e,product:t}=this.state,n=this.getView();if("label"!==t.type||"Pay"===n||"Complete"===n)return a.Ay.createElement(u.A,{title:e},this.switchView());const s="Label"!==n;return a.Ay.createElement(u.A,{title:e},this.renderLabel(s),s?this.switchView():null)}}
1T.propTypes={user:l.A.object,addresses:l.A.object,language:l.A.object,onMessage:l.A.func,onUserUpdate:l.A.func},T.defaultProps={user:{},addresses:{},language:{local:"nl"},onMessage:()=>{},onUserUpdate:()=>{}};var M=(0,i.lB)(T);class K extends a.Ay.Component{constructor(e){super(e),this.state={expandedOrder:null,orderPayments:{}}}handleOrderExpand(e,t){e&&e.preventDefault();const{expandedOrder:n,orderPayments:a}=this.state;if(n===t)return void this.setState({expandedOrder:null});this.setState({expandedOrder:t});const s=r.A.get("nonce");a&&a[t]||(0,g.FH)("/response",{m:"payment-details",nonce:s,orderKey:t}).then(e=>{e.payment?this.setState(n=>({orderPayments:{...n.orderPayments,[t]:e.payment}})):e.error&&this.props.onMessage(e.error)})}handleInvoice(e){const t=r.A.get("nonce");return(0,g.FH)("/response",{m:"return-invoice",nonce:t,orderKey:e}).then(e=>{if(e.invoice_url)window.location.href=e.invoice_url;else if(e.error)return this.props.onMessage(e.error),Promise.reject()})}handleBack(e){e&&e.preventDefault(),document.location.hash="home"}formatPrice(e,t){if(!e)return null;const n=e/100;return"eur"===t?`€${n.toFixed(2)}`:`$${n.toFixed(2)}`}render(){const{expandedOrder:e,orderPayments:t}=this.state,{user:n}=this.props,l=n.orders?Object.values(n.orders).filter(e=>e.orderKey).sort((e,t)=>(t.created||0)-(e.created||0)):[],r=e=>{if(!e.settings)return null;const t=[];if(e.settings.type){const n="white"===e.settings.type?(0,i.Oj)({nl:"Wit",en:"White"}):"transparant"===e.settings.type?(0,i.Oj)({nl:"Transparant",en:"Transparent"}):e.settings.type;t.push(n)}return e.settings.font&&t.push(e.settings.font),t.length>0?t.join(" · "):null},o=l.length>0?a.Ay.createElement("ul",{className:"item-list"},l.map(n=>{const s=e===n.orderKey,l=t?t[n.orderKey]:null;return a.Ay.createElement("li",{key:n.orderKey,className:"item "+(s?"expanded":""),onClick:e=>this.handleOrderExpand(e,n.orderKey,n)},a.Ay.createElement("div",{className:"item-row"},a.Ay.createElement("div",{className:"item-info"},a.Ay.createElement("div",{className:"item-title"},(e=>{if(!e.product||!e.product.type)return(0,i.Oj)({nl:"Bestelling",en:"Order"});switch(e.product.type){case"label":return(0,i.Oj)({nl:"Adresetiketten",en:"Address labels"});case"card":return(0,i.Oj)({nl:"Kaartje",en:"Card"});case"request-update":return(0,i.Oj)({nl:"Adresupdate verzoek",en:"Address update request"});default:return(0,i.Oj)({nl:"Bestelling",en:"Order"})}})(n)),r(n)&&a.Ay.createElement("div",{className:"item-subtitle"},r(n)),a.Ay.createElement("div",{className:"item-meta"},n.created?a.Ay.createElement(d,{date:n.created}):null)),a.Ay.createElement("div",{className:"item-key"},"#",n.orderKey)),s&&a.Ay.createElement("div",{className:"item-expanded"},l?a.Ay.createElement("div",{className:"payment-details"},a.Ay.createElement("div",{className:"detail-row"},a.Ay.createElement("span",{className:"detail-label"},(0,i.Oj)({nl:"Status",en:"Status"})),a.Ay.createElement("span",{className:`detail-value status-${l.status}`},(e=>{switch(e){case"succeeded":return(0,i.Oj)({nl:"Betaald",en:"Paid"});case"processing":return(0,i.Oj)({nl:"Verwerken",en:"Processing"});case"requires_payment_method":return(0,i.Oj)({nl:"Wacht op betaling",en:"Awaiting payment"});case"canceled":return(0,i.Oj)({nl:"Geannuleerd",en:"Canceled"});default:return e}})(l.status))),a.Ay.createElement("div",{className:"detail-row"},a.Ay.createElement("span",{className:"detail-label"},(0,i.Oj)({nl:"Bedrag",en:"Amount"})),a.Ay.createElement("span",{className:"detail-value"},this.formatPrice(l.amount,l.currency))),l.payment_method&&a.Ay.createElement("div",{className:"detail-row"},a.Ay.createElement("span",{className:"detail-label"},(0,i.Oj)({nl:"Betaalmethode",en:"Payment method"})),a.Ay.createElement("span",{className:"detail-value"},l.payment_method)),"succeeded"===l.status&&a.Ay.createElement("div",{className:"detail-row"},a.Ay.createElement(h.A,{className:"text",spinnerTheme:"blue",onClick:e=>(e.stopPropagation(),this.handleInvoice(n.orderKey)),onError:()=>{}},(0,i.Oj)({nl:"Bekijk factuur",en:"View invoice"})))):a.Ay.createElement("div",{className:"detail-loading"},(0,i.Oj)({nl:"Laden...",en:"Loading..."}))))})):a.Ay.createElement("p",{className:"no-items"},(0,i.Oj)({nl:"Je hebt nog geen bestellingen geplaatst.",en:"You haven't placed any orders yet."})),c=a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"call-out"},a.Ay.createElement("p",null,(0,i.Oj)({nl:a.Ay.createElement("span",null,"Met Mailbook kan je alle adressen ",a.Ay.createElement("a",{href:"#order-label"},"thuis laten bezorgen")," op adresetiketten. Hieronder de laatste succesvolle bestellingen. Klik op een bestelling voor meer details."),en:a.Ay.createElement("span",null,"With Mailbook you can have all addresses ",a.Ay.createElement("a",{href:"#order-label"},"delivered to your home")," on address labels. Below are your latest successful orders. Click on an order for more details.")}))),o,a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#",className:"button text",onClick:e=>this.handleBack(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"})))));return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Jouw bestellingen",en:"Your orders"})}
1,c)}}K.propTypes={user:l.A.object,language:l.A.object},K.defaultProps={user:{},language:{local:"nl"}};var $=(0,i.lB)(K),P=n(919),L=n(253),F=n(37),U=n(745),V=n(82);const z=[{"--x":"20%","--y":"34%","--r":"-7deg"},{"--x":"50%","--y":"28%","--r":"3deg"},{"--x":"80%","--y":"36%","--r":"-3deg"},{"--x":"34%","--y":"72%","--r":"5deg"},{"--x":"66%","--y":"70%","--r":"-5deg"}];class I extends a.Ay.Component{constructor(e){super(e);const t=this.getView();this.state={view:t,editingEnvelopieKey:this.getEditingEnvelopieKey(),editStep:1,linkSettings:{},saving:{},creating:!1,contributors:{},loadingContributors:{},stats:{},dialog:null},this.host=document.location.protocol+"//"+document.location.hostname,this.listener=()=>{const e=this.getView(),t=this.getEditingEnvelopieKey();document.documentElement.classList.toggle("gift",/^#gifts/i.test(document.location.hash)),this.setState({view:e,editingEnvelopieKey:t,editStep:this.getEditStepFromHash()}),"List"===e&&this.loadListContributors(),"Edit"===e&&t&&(this.initEditView(t),4===this.getEditStepFromHash()&&this.loadContributors(t))}}componentDidMount(){window.addEventListener("hashchange",this.listener),window.addEventListener("popstate",this.listener),this.listener()}componentWillUnmount(){document.documentElement.classList.remove("gift"),window.removeEventListener("hashchange",this.listener),window.removeEventListener("popstate",this.listener)}getView(){const e=document.location.hash;return/gifts-saved-/i.test(e)?"Saved":/gifts-(edit|share)-/i.test(e)?"Edit":"List"}getEditingEnvelopieKey(){const e=document.location.hash.match(/gifts-(?:edit|saved|share)-([^&#]+?)(?:-step-\d)?(?:&|$)/i);return e?e[1]:null}getEditStepFromHash(){if(/gifts-share-/i.test(document.location.hash))return 4;const e=document.location.hash.match(/-step-(\d)/i),t=e?parseInt(e[1],10):1;return t>=1&&t<=4?t:1}setView(e,t=null){window.requestAnimationFrame(()=>window.scroll(0,1)),document.location.hash="Edit"===e&&t?"gifts-edit-"+t:"Saved"===e&&t?"gifts-saved-"+t:"gifts"}getEnvelopies(){const{user:e}=this.props;return e.envelopies||[]}initEditView(e){const t=this.getEnvelopieByKey(e);if(!t)return;if(this.state.linkSettings[e])return;const n=t.settings||{};this.setState(t=>({linkSettings:{...t.linkSettings,[e]:{isActive:!!n.isActive,giftTitle:n.title||"",giftDescription:n.description||"",giftTheme:n.theme||"",giftPaper:n.paper||x.rM[0].id,currency:n.currency||"eur",recipientName:n.recipientName||"",shipping:n.shipping||{firstName:"",lastName:"",streetname:"",housenr:"",city:"",postcode:"",country:"NL"},gifts:!!n.gifts,giftDetails:n.giftDetails}}})),this.loadContributors(e),this.loadStats(e)}handleEnvelopieExpand(e,t){e&&e.preventDefault(),this.setView("Edit",t)}async loadListContributors(){for(const e of this.getEnvelopies()){const t=e.envelopieKey;this.state.contributors[t]||this.state.loadingContributors[t]||await this.loadContributors(t)}}async loadContributors(e){this.setState(t=>({loadingContributors:{...t.loadingContributors,[e]:!0}}));const t=r.A.get("nonce");try{const n=await(0,g.FH)("/response",{m:"get-gift-contributors",nonce:t,envelopieKey:e});n.contributors?this.setState(t=>({contributors:{...t.contributors,[e]:n.contributors},loadingContributors:{...t.loadingContributors,[e]:!1}})):this.setState(t=>({loadingContributors:{...t.loadingContributors,[e]:!1}}))}catch(t){this.setState(t=>({loadingContributors:{...t.loadingContributors,[e]:!1}}))}}async loadStats(e){const t=r.A.get("nonce");try{const n=await(0,g.FH)("/response",{m:"get-envelopie-stats",nonce:t,envelopieKey:e});n.stats&&this.setState(t=>({stats:{...t.stats,[e]:{stats:n.stats,total:n.total}}}))}catch(e){}}getEnvelopieByKey(e){return this.getEnvelopies().find(t=>t.envelopieKey===e)}handleBack(e){e&&e.preventDefault();const{view:t}=this.state;"Edit"===t?this.setView("List"):document.location.hash="home"}handleSettingChange(e,t,n){this.setState(a=>({linkSettings:{...a.linkSettings,[e]:{...a.linkSettings[e],[t]:n}}}))}pickTheme(e,t){const n=e.envelopieKey,a=this.state.linkSettings[n]||{},s={giftTheme:t};x.dc.some(e=>(0,x.ee)(e.id)===a.giftPaper)&&(s.giftPaper=(0,x.ee)(t));const l=x.dc.map(e=>(0,x.$p)(e.id,this.props.user)),r=(e,t)=>!e||l.some(n=>(0,i.Oj)(n[t])===e),o=(0,x.$p)(t,this.props.user);r(a.giftTitle,"title")&&(s.giftTitle=(0,i.Oj)(o.title)),r(a.giftDescription,"description")&&(s.giftDescription=(0,i.Oj)(o.description)),this.setState(e=>({linkSettings:{...e.linkSettings,[n]:{...e.linkSettings[n],...s}}}))}handleShippingAddressChange(e,t){const{id:n,value:a}=t.currentTarget;this.setState(t=>{const s=t.linkSettings[e]||{},l=s.shipping||{};return{linkSettings:{...t.linkSettings,[e]:{...s,shipping:{...l,[n]:a}}}}})}async handleSave(e,t,n=null){e&&e.preventDefault();const{linkSettings:a}=this.state,s=a[t]||{};this.setState(e=>({saving:{...e.saving,[t]:!0}}));const l={m:"save-envelopie",nonce:r.A.get("nonce"),envelopieKey:t,isActive:!!s.isActive,title:s.giftTitle||"",description:s.giftDescription||"",theme:s.giftTheme||"",paper:s.giftPaper,currency:s.currency||"eur",recipientName:s.recipientName||"",shipping:s.shipping||{},gifts:!!s.gifts,forgetGiftDetails:!!s.forgetGiftDetails};try{const e=await(0,g.FH)("/response",l);if(this.setState(e=>({saving:{...e.saving,[t]:!1}})),e.success){if(s.isActive&&(0,D.u4)("envelopie-live",t),e.envelopie){const{onUserUpdate:n,user:a}=this.props;if(n){const s=(a.envelopies||[]).map(n=>n.envelopieKey===t?{...n,...e.envelopie}:n);n({...a,envelopies:s})}}n?this.setEditStep(n):this.props.onMessage((0,i.Oj)({nl:"Opgeslagen.",en:"Saved."}))}}catch(e){this.setState(e=>({saving:{...e.saving,[t]:!1}}))}}async handleCreateEnvelopie(e){e&&e.preventDefault(),this.setState({creating:!0});const t={m:"create-envelopie",nonce:r.A.get("nonce"),currency:/us/i.test(window.__LOCAL||"")?"usd":"eur"};try{const e=await(0,g.FH)("/response",t);if(this.setState({creating:!1}),e.success&&e.envelopieKey&&e.envelopie){(0,D.u4)("envelopie-created",e.envelopieKey);const t=(0,D.Zl)();t&&(0,D.u4)("envelopie-from",t);const{onUserUpdate:n,user:a}=this.props;if(n){const t=[...a.envelopies||[],e.envelopie];n({...a,envelopies:t})}this.setView("Edit",e.envelopieKey)}else this.showMessage(e.error||(0,i.Oj)({nl:"Aanmaken lukte niet.",en:"Could not create the page."}))}catch(e){this.setState({creating:!1}),this.showMessage((0,i.Oj)({nl:"Aanmaken lukte niet.",en:"Could not create the page."}))}}async handleDeleteEnvelopie(e){const{user:t,onUserUpdate:n}=this.props,a=(0,i.Oj)({nl:"Verwijderen lukte niet.",en:"Could not delete the board."});try{if(!(await(0,g.FH)("/response",{m:"delete-envelopie",nonce:r.A.get("nonce"),envelopieKey:e})).success)return void this.showMessage(a)}catch(e){return void this.showMessage(a)}(0,D.u4)("envelopie-deleted",e);const s=t=>{const n={...t};return delete n[e],n};this.setState(e=>({linkSettings:s(e.linkSettings),contributors:s(e.contributors),stats:s(e.stats)})),n({...t,envelopies:this.getEnvelopies().filter(t=>t.envelopieKey!==e)}),this.showMessage((0,i.Oj)({nl:"Prikbord verwijderd.",en:"Board deleted."}))}getQrCodeDataUrl(e){const t=(0,V.A)("L");t.addData(e),t.make();const n=t.createSvgTag(4,0);return"data:image/svg+xml;base64,"+btoa(n)}isEnvelopieActive(e){return!!e&&!!(e.settings||{}).isActive}formatDate(e){return e?new Date(e).toLocaleDateString("nl-NL",{day:"numeric",month:"short",year:"numeric"}):""}showMessage(e){const{onMessage:t}=this.props;t&&t(e)}leaveEventStep(e,t){const n=this.state.linkSettings[e]||{};n.giftTheme?(n.giftTitle||"").trim()?(n.giftDescription||"").trim()?this.setEditStep(t):this.props.onMessage((0,i.Oj)({nl:"Schrijf een persoonlijk bericht voor vrienden en familie.",en:"Write a personal message for friends and family."})):this.props.onMessage((0,i.Oj)({nl:"Geef je pagina eerst een titel.",en:"Give your page a title first."})):this.props.onMessage((0,i.Oj)({nl:"Kies eerst wat er te vieren valt.",en:"First pick what there is to celebrate."}))}jumpToStep(e){const{editStep:t,editingEnvelopieKey:n}=this.state;e!==t&&(1===t&&e>1?this.leaveEventStep(n,e):this.setEditStep(e))}setEditStep(e){window.requestAnimationFrame(()=>window.scroll(0,1)),document.location.hash="gifts-edit-"+this.state.editingEnvelopieKey+(e>1?"-step-"+e:"")}renderEditProgress(e){const t=[{num:1,label:(0,i.Oj)({nl:"Gelegenheid",en:"Occasion"})},{num:2,label:(0,i.Oj)({nl:"Kaart",en:"Card"})},{num:3,label:(0,i.Oj)({nl:"Kado",en:"Gift"})},{num:4,label:(0,i.Oj)({nl:"Activeer",en:"Activate"})}];return a.Ay.createElement(U.A,{steps:t,current:e,onPick:e=>this.jumpToStep(e)})}renderStatsLine(e){const{stats:t}=this.state,n=t[e];if(!n||!n.stats.length)return null;const s=(0,i.Oj)({nl:"bevestigingsmail",en:"confirmation email"}),l={direct:(0,i.Oj)({nl:"direct",en:"direct"}),"qr-code":(0,i.Oj)({nl:"QR code",en:"QR code"}),qr:(0,i.Oj)({nl:"QR code",en:"QR code"}),"qr-label":(0,i.Oj)({nl:"felicitatiesticker",en:"congratulation sticker"}),whatsapp:"WhatsApp","link-share":(0,i.Oj)({nl:"gedeelde link",en:"shared link"}),preview:(0,i.Oj)({nl:"voorvertoning",en:"preview"}),owner:(0,i.Oj)({nl:"eigen link",en:"own link"}),"envelope-email":s,"contribution-email":s,"contribute-email":s,"offer-email":(0,i.Oj)({nl:"kado-aanbod mail",en:"gift offer mail"}),"claimed-email":(0,i.Oj)({nl:"kado-betaalmail",en:"gift payment mail"}),"reminder-email":(0,i.Oj)({nl:"kado-herinnering",en:"gift reminder"}),"sent-email":(0,i.Oj)({nl:"kaart-verstuurd mail",en:"card sent mail"})};return a.Ay.createElement("div",{className:"contributors-section"},a.Ay.createElement("h4",null,(0,i.Oj)({nl:"Statistieken",en:"Stats"})),a.Ay.createElement("p",{className:"stats-line"},a.Ay.createElement("strong",null,n.total)," ",(0,i.Oj)({nl:"paginaweergaven",en:"page views"})," - ",n.stats.map(e=>`${l[e.source]||e.source} ${e.views}`).join(" · ")))}async remindContributor(e,t){const n=await(0,g.FH)("/response",{m:"remind-contribution",nonce:r.A.get("nonce"),envelopieKey:e,contributionKey:t});n.success?(this.setState(a=>({contributors:{...a.contributors,[e]:(a.contributors[e]||[]).map(e=>e.key===t?{...e,remindedAt:n.remindedAt}:e)}})),this.showMessage((0,i.Oj)({nl:"Herinnering verstuurd.",en:"Reminder sent."}))):this.showMessage(n.error)}async toggleHidden(e,t){const n=await(0,g.FH)("/felicitatie",{m:"hide",nonce:r.A.get("nonce"),contributionKey:t.key,hidden:!t.hidden}).catch(()=>({}));n.success?this.setState(a=>({contributors:{...a.contributors,[e]:a.contributors[e].map(e=>e.key===t.key?{...e,hidden:n.hidden}:e)}})):this.props.onMessage((0,i.Oj)({nl:"Dat lukte niet. Probeer het nog eens.",en:"That did not work. Please try again."}))}async settleContributor(e,t,n){const a=await(0,g.FH)("/response",{m:"settle-contribution",nonce:r.A.get("nonce"),envelopieKey:e,contributionKey:t,settled:n});a.success?this.setState(n=>({contributors:{...n.contributors,[e]:(n.contributors[e]||[]).map(e=>e.key===t?{...e,settled:a.settled}:e)}})):this.showMessage(a.error)}formatDate(e){if(!e)return null;const t=new Date(e),n={day:"numeric",month:"long",year:"numeric"};return(0,i.Oj)({nl:t.toLocaleDateString("nl-NL",n),en:t.toLocaleDateString("en-US",n)})}contributorBadges(e){const t=[];return"envelope"===e.type&&t.push(e.cardSent?(0,i.Oj)({nl:"kaart verstuurd",en:"card sent"}):(0,i.Oj)({nl:"kaart gaat mee met de volgende postronde",en:"card goes with the next postal run"})),"digital"===e.type&&t.push((0,i.Oj)({nl:"digitale kaart gemaild",en:"digital card emailed"})),e.gifterPaid&&t.push((0,i.Oj)({nl:"volgens gever betaald",en:"giver marked paid"})),t}renderContributorsTable(e){const{contributors:t,loadingContributors:n}=this.state,l=(0,i.Oj)({nl:"Ontvangen felicitaties",en:"Received congratulations"}),r=t[e]||[];return n[e]?a.Ay.createElement("div",{className:"contributors-section"},a.Ay.createElement("h4",null,l),a.Ay.createElement("p",null,(0,i.Oj)({nl:"Laden...",en:"Loading..."}))):0===r.length?a.Ay.createElement("div",{className:"contributors-section"},a.Ay.createElement("h4",null,l),a.Ay.createElement("p",{className:"no-items"},(0,i.Oj)({nl:"Nog geen felicitaties ontvangen.",en:"No congratulations received yet."}))):a.Ay.createElement("div",{className:"contributors-section"},a.Ay.createElement("h4",null,l),a.Ay.createElement("ul",{className:"card-list felicitatie-list"},r.map((t,n)=>{const l=this.contributorBadges(t),r=parseFloat(t.amount)>0;return t.hidden&&l.push((0,i.Oj)({nl:"verborgen op je pagina",en:"hidden on your page"})),t.offer&&l.push("open"===t.offer?(0,i.Oj)({nl:"kado aangeboden, wacht op jouw betaalgegevens",en:"gift offered, waiting for your payment details"}):(0,i.Oj)({nl:"betaalgegevens gestuurd",en:"payment details sent"})),t.settled&&l.push((0,i.Oj)({nl:`door jou gemarkeerd als betaald (${t.settled})`,en:`marked paid by you (${t.settled})`})),t.remindedAt&&l.push((0,i.Oj)({nl:`herinnering gestuurd (${t.remindedAt})`,en:`reminder sent (${t.remindedAt})`})),a.Ay.createElement("li",{key:t.key||n,className:"card-item "+(t.hidden?"hidden":"")},a.Ay.createElement("a",{className:"felicitatie-thumb",href:`${(0,x.kL)({envelopieKey:e})}#source=owner`,target:"_blank",rel:"noopener noreferrer","aria-label":(0,i.Oj)({nl:"Bekijk op je prikbord",en:"View on your board"})},t.design&&t.design.front?a.Ay.createElement("img",{src:t.design.front,alt:"",loading:"lazy"}):a.Ay.createElement("span",{dangerouslySetInnerHTML:{__html:(0,P.l9)((0,P.zD)(t))}})),a.Ay.createElement("div",{className:"felicitatie-info"},a.Ay.createElement("div",{className:"card-main"},a.Ay.createElement("span",{className:"card-name"},`${t.firstName||""} ${t.lastName||""}`.trim()||(0,i.Oj)({nl:"Anoniem",en:"Anonymous"})),r&&a.Ay.createElement("span",{className:"card-amount"},"€",t.amount)),a.Ay.createElement("div",{className:"note card-meta"},t.email," · ",a.Ay.createElement(d,{date:t.created})),l.length>0&&a.Ay.createElement("div",{className:"note card-status"},l.join(" · ")),a.Ay.createElement("div",{className:"card-actions"},a.Ay.createElement("button",{type:"button",className:"white small",onClick:()=>this.toggleHidden(e,t)},t.hidden?(0,i.Oj)({nl:"Toon op pagina",en:"Show on page"}):(0,i.Oj)({nl:"Verberg op pagina",en:"Hide on page"})),"open"===t.offer?a.Ay.createElement("a",{className:"button white small",href:`${(0,i.Oj)({nl:"/feliciteer/",en:"/congratulate/"})}${e}#claim-${t.key}-${t.claimToken}`},(0,i.Oj)({nl:"Laat weten hoe",en:"Say how"})):r?t.settled?a.Ay.createElement("button",{type:"button",className:"button text",onClick:()=>
1this.settleContributor(e,t.key,!1)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Ongedaan maken",en:"Undo"}))):a.Ay.createElement(s.FK,null,a.Ay.createElement("button",{type:"button",className:"white small",title:(0,i.Oj)({nl:"Markeer als betaald zodra het op je rekening staat",en:"Mark as paid once it is in your account"}),onClick:()=>this.settleContributor(e,t.key,!0)},(0,i.Oj)({nl:"Markeer als betaald",en:"Mark as paid"})),t.email&&!t.remindedAt?a.Ay.createElement("button",{type:"button",className:"white small",onClick:()=>this.remindContributor(e,t.key)},(0,i.Oj)({nl:"Stuur herinnering",en:"Send reminder"})):null):null)))})))}renderMiniBoard(e){const{contributors:t}=this.state,n=(t[e.envelopieKey]||[]).filter(e=>!e.hidden).slice(0,z.length);return a.Ay.createElement("a",{className:"prikbord-board",style:(0,x.CB)((e.settings||{}).paper),href:(0,x.kL)(e),target:"_blank",rel:"noopener noreferrer","aria-label":(0,i.Oj)({nl:"Bekijk het prikbord",en:"View the board"})},n.length?n.map((e,t)=>a.Ay.createElement("span",{key:e.key||t,className:"prikbord-card",style:z[t]},e.design&&e.design.front?a.Ay.createElement("img",{src:e.design.front,alt:"",loading:"lazy"}):a.Ay.createElement("span",{className:"prikbord-face",dangerouslySetInnerHTML:{__html:(0,P.l9)((0,P.zD)(e))}}))):z.slice(0,3).map((e,t)=>a.Ay.createElement("span",{key:t,className:"prikbord-card empty",style:e})))}renderList(){const{creating:e,contributors:t}=this.state,{user:n,onUserUpdate:l,onMessage:r}=this.props,o=[...this.getEnvelopies()].sort((e,t)=>(this.isEnvelopieActive(t)?1:0)-(this.isEnvelopieActive(e)?1:0)),d=o.some(e=>this.isEnvelopieActive(e)),c=C.yJ&&/gifts-link/i.test(document.location.hash)&&4!==Number(n.type),m=c?(0,C.ak)(n):null;let u=null;return c&&(0,C.oB)(n)?u="open":m&&m.settings?.envelopieKey?u="linked":m&&(u="late"),a.Ay.createElement(s.FK,null,u?a.Ay.createElement(C.Ay,{variant:u,user:n,onUserUpdate:l,onMessage:r,onCreate:e=>this.handleCreateEnvelopie(e)}):null,o.length?a.Ay.createElement("p",{className:"lead prikbord-lead"},(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,"Vrienden en familie prikken hier hun felicitatie op."," ",a.Ay.createElement("a",{target:"_blank",href:"/nieuws/felicitatiepagina"},"Zo werkt het")),en:a.Ay.createElement(s.FK,null,"Friends and family pin their congratulations here."," ",a.Ay.createElement("a",{target:"_blank",href:"/news/congratulations-page"},"How it works"))})):a.Ay.createElement("div",{className:"call-out gift-intro"},a.Ay.createElement("span",{className:"gift-intro-visual single",dangerouslySetInnerHTML:{__html:(0,P.l9)({kind:"note",theme:"stippen",from:(0,i.Oj)({nl:"Van Oma Ria",en:"From Grandma"}),message:(0,i.Oj)({nl:"Welkom kleintje!",en:"Welcome, little one!"})},150)}}),a.Ay.createElement("div",{className:"gift-intro-text"},(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,a.Ay.createElement("p",null,"Verzamel gemakkelijk persoonlijke felicitaties op een digitaal prikbord. Vrienden en familie prikken er hun kaartje op, en wie wil stuurt er een echte kaart per post bij."),a.Ay.createElement("ul",{className:"gift-intro-why"},a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Digitaal prikbord")," - iedereen claimt een plek en kiest een ontwerp, gratis"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Echte kaart als optie")," - met eigen foto's, stickers en een kop in uitgeknipte letters, per post bezorgd"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Makkelijk te delen")," - stuur je link via WhatsApp, of zet een gratis sticker op je kaartjes"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Kado erbij als je wilt")," - wie je feliciteert biedt een bedrag aan, jij laat weten hoe, 100% naar jou")),a.Ay.createElement("p",null,a.Ay.createElement("a",{target:"_blank",href:"/nieuws/felicitatiepagina"},"Lees hoe het werkt"),".")),en:a.Ay.createElement(s.FK,null,a.Ay.createElement("p",null,"Collect personal congratulations the easy way on a digital pin board. Friends and family pin their card on it, and anyone who likes sends a real card by post too."),a.Ay.createElement("ul",{className:"gift-intro-why"},a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Digital pin board")," - everyone claims a spot and picks a design, for free"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"A real card as an option")," - with their own photos, stickers and a cut-out headline, delivered by post"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"Easy to share")," - send your link on WhatsApp, or put a free sticker on your cards"),a.Ay.createElement("li",null,a.Ay.createElement("strong",null,"A gift if you like")," - whoever congratulates you offers an amount, you say how, 100% to you")),a.Ay.createElement("p",null,a.Ay.createElement("a",{target:"_blank",href:"/news/congratulations-page"},"Read how it works"),"."))}))),o.length?a.Ay.createElement("ul",{className:"prikbord-list"},o.map(e=>{const n=e.envelopieKey,s=this.isEnvelopieActive(e),l=e.settings||{},r=t[n],o=(r||[]).reduce((e,t)=>
1e+(parseFloat(String(t.amount||"").replace(",","."))||0),0),d=(o%1?o.toFixed(2):String(o)).replace(".",","),c=[];r&&c.push(r.length?(0,i.Oj)({nl:`${r.length} ${1===r.length?"felicitatie":"felicitaties"}`,en:`${r.length} ${1===r.length?"congratulation":"congratulations"}`}):(0,i.Oj)({nl:"Nog geen felicitaties",en:"No congratulations yet"})),o>0&&c.push((0,i.Oj)({nl:`€${d} aan kado's`,en:`€${d} in gifts`}));const m=l.title?`"${l.title}"`:(0,i.Oj)({nl:"dit prikbord",en:"this board"}),u=r&&r.length?(0,i.Oj)({nl:1===r.length?", en de felicitatie erop is weg":`, en de ${r.length} felicitaties erop zijn weg`,en:1===r.length?", and the congratulation on it is gone":`, and the ${r.length} congratulations on it are gone`}):"";return a.Ay.createElement("li",{key:n,className:"prikbord "+(s?"live":"off")},this.renderMiniBoard(e),a.Ay.createElement("div",{className:"prikbord-info"},a.Ay.createElement("span",{className:`chip ${s?"good":"quiet"} prikbord-status`},s?(0,i.Oj)({nl:"Live",en:"Live"}):(0,i.Oj)({nl:"Staat uit",en:"Off"})),a.Ay.createElement("h3",{className:"prikbord-title"},l.title||(0,i.Oj)({nl:"Naamloos prikbord",en:"Untitled board"})),c.length?a.Ay.createElement("p",{className:"note prikbord-meta"},c.join(" · ")):null,s?null:a.Ay.createElement("a",{className:"urgency-banner",href:`#gifts-edit-${n}-step-4`},(0,i.Oj)({nl:"Zet hem aan, dan kan iedereen je feliciteren.",en:"Switch it on and anyone can congratulate you."})),a.Ay.createElement("div",{className:"prikbord-actions"},a.Ay.createElement("button",{type:"button",className:"white small",onClick:()=>window.open((0,x.kL)(e),"_blank","noopener")},(0,i.Oj)({nl:"Bekijk",en:"View"})),a.Ay.createElement("button",{type:"button",className:"white small",onClick:e=>this.handleEnvelopieExpand(e,n)},(0,i.Oj)({nl:"Bewerken",en:"Edit"})),s?a.Ay.createElement("button",{type:"button",className:"white small",onClick:()=>{document.location.hash="gifts-edit-"+n+"-step-4"}},(0,i.Oj)({nl:"Felicitaties",en:"Congratulations"})):null,a.Ay.createElement("button",{type:"button",className:"white small",onClick:()=>this.setState({dialog:{title:(0,i.Oj)({nl:"Prikbord verwijderen",en:"Delete board"}),message:(0,i.Oj)({nl:`Weet je zeker dat je ${m} wilt verwijderen? De link en de QR-code ernaartoe werken dan niet meer${u}. Dit kan niet ongedaan worden.`,en:`Are you sure you want to delete ${m}? Its link and QR code stop working${u}. This cannot be undone.`}),onConfirm:()=>{this.setState({dialog:null}),this.handleDeleteEnvelopie(n)}}})},(0,i.Oj)({nl:"Verwijder",en:"Delete"})))))})):null,d?a.Ay.createElement("p",{className:"prikbord-tip"},(0,i.Oj)({nl:a.Ay.createElement("span",null,"Tip: bestel ",a.Ay.createElement("a",{href:"#order-label"},"adresetiketten")," en ontvang gratis felicitatiestickers: een QR-code op je kaart die vrienden en familie direct naar je prikbord brengt."),en:a.Ay.createElement("span",null,"Tip: order ",a.Ay.createElement("a",{href:"#order-label"},"address labels")," and receive free congratulation stickers: a QR code on your card that takes friends and family straight to your board.")})):null,a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{className:"button secondary",disabled:e,onClick:e=>this.handleCreateEnvelopie(e)},e?(0,i.Oj)({nl:"Aanmaken...",en:"Creating..."}):(0,i.Oj)({nl:"+ Nieuw prikbord",en:"+ New board"})),a.Ay.createElement("a",{href:"#",className:"button text",onClick:e=>this.handleBack(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"})))))}renderEditPreview(e){const t=(0,x.$p)(e.giftTheme,this.props.user);return a.Ay.createElement("div",{className:"edit-stage",style:(0,x.CB)(e.giftPaper),"aria-hidden":"true"},a.Ay.createElement("div",{className:"edit-announcement"},a.Ay.createElement("strong",null,e.giftTitle||(0,i.Oj)(t.title)),a.Ay.createElement("span",{className:"edit-announcement-text"},e.giftDescription||(0,i.Oj)(t.description)),e.recipientName?a.Ay.createElement("span",{className:"edit-announcement-from"},e.recipientName):null),a.Ay.createElement("div",{className:"edit-spot"},(0,i.Oj)({nl:"Jouw felicitatie hier",en:"Your card here"})))}renderEditStep1(e,t){return a.Ay.createElement("form",{className:"gift-form"},a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"Wat valt er te vieren?",en:"What is there to celebrate?"}))),a.Ay.createElement("div",{className:"occasion-tiles",role:"group"},x.dc.map(n=>a.Ay.createElement("button",{type:"button",key:n.id,className:"occasion-tile option "+(t.giftTheme===n.id?"on":""),"aria-pressed":t.giftTheme===n.id,onClick:()=>this.pickTheme(e,n.id)},a.Ay.createElement(F.Ay,{type:n.type}),a.Ay.createElement("span",null,(0,i.Oj)(n.label)))))),a.Ay.createElement("div",{className:"field"},a.Ay.createElement("div",{className:"label-wrapper"},a.Ay.createElement("label",null,(0,i.Oj)({nl:"De kleur van je prikbord",en:"The colour of your board"}))),a.Ay.createElement("div",{className:"swatches",role:"group"},x.rM.map(n=>a.Ay.createElement("button",{type:"button",key:n.id,className:"swatch"+(t.giftPaper===n.id?" selected":""),style:{background:n.swatch},title:(0,i.Oj)(n.name),"aria-label":(0,i.Oj)(n.name),"aria-pressed":t.giftPaper===n.id,onClick:()=>this.handleSettingChange(e.envelopieKey,"giftPaper",n.id)})))),a.Ay.createElement(p.A,{type:"textarea",rows:"1",label:(0,i.Oj)({nl:"Titel van je pagina",en:"Title of your page"}),help:(0,i.Oj)({nl:"De grote kop bovenaan je pagina. Deze titel staat ook in het browsertabblad.",en:"The main heading at the top of your page. This title also appears in the browser tab."}),placeholder:(0,i.Oj)((0,x.$p)(t.giftTheme,this.props.user).title),value:t.giftTitle||"",onChange:t=>this.handleSettingChange(e.envelopieKey,"giftTitle",t.target.value)}),a.Ay.createElement(p.A,{type:"textarea",rows:"2",label:(0,i.Oj)({nl:"Persoonlijk bericht",en:"Personal message"}),help:(0,i.Oj)({nl:"Dit bericht staat onder je titel, voor iedereen die je pagina opent.",en:"This message appears below your title, for everyone who opens your page."}),placeholder:(0,i.Oj)((0,x.$p)(t.giftTheme,this.props.user).description),value:t.giftDescription||"",onChange:t=>this.handleSettingChange(e.envelopieKey,"giftDescription",t.target.value)}),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"button",onClick:()=>this.leaveEventStep(e.envelopieKey,2)},(0,i.Oj)({nl:"Volgende",en:"Next"}))))}renderEditStep2(e,t){return a.Ay.createElement("form",{className:"gift-form"},a.Ay.createElement("div",{className:"call-out"},a.Ay.createElement("p",null,(0,i.Oj)({nl:"Echte felicitatiekaarten worden per post bezorgd. Vul in op welke naam en welk adres.",en:"Real congratulation cards come by post. Fill in the name and address they go to."}))),a.Ay.createElement(p.A,{type:"text",label:(0,i.Oj)({nl:"Naam ontvanger",en:"Recipient name"}),help:(0,i.Oj)({nl:"Wie feliciteer je? Deze naam staat op de felicitatieknop en bij de bezorgoptie voor de kaart.",en:"Who is being congratulated? This name appears on the congratulate button and with the card delivery option."}),placeholder:(0,i.Oj)({nl:"Bijv. Yvo en Annemiek",en:"E.g. John and Jane"}),value:t.recipientName||"",onChange:t=>this.handleSettingChange(e.envelopieKey,"recipientName",t.target.value)}),a.Ay.createElement(y.A,{address:t.shipping||{},user:{},error:{},onHandleInputState:t=>this.handleShippingAddressChange(e.envelopieKey,t),onHandleCountryState:t=>this.handleShippingAddressChange(e.envelopieKey,t),elements:{to:!1,name:!0,contacts:!1,address:!0,label:!1,
1consent:!1,delete:!1,addressLabel:(0,i.Oj)({nl:"Ontvangst adres",en:"Delivery address"})}}),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"white",onClick:()=>this.setEditStep(1)},(0,i.Oj)({nl:"Vorige",en:"Back"})),a.Ay.createElement("button",{type:"button",className:"button",disabled:this.state.saving[e.envelopieKey],onClick:t=>this.handleSave(t,e.envelopieKey,3)},this.state.saving[e.envelopieKey]?(0,i.Oj)({nl:"Opslaan...",en:"Saving..."}):(0,i.Oj)({nl:"Opslaan",en:"Save"}))))}renderChoice(e,t,n,s,l){return a.Ay.createElement("button",{type:"button",key:e,className:"order-extra option choice "+(t?"on":""),"aria-pressed":t,onClick:l},a.Ay.createElement("span",{className:"order-extra-check"}),a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,n),a.Ay.createElement("span",null,s)))}renderEditStep3(e){const t=e.envelopieKey,n=this.state.linkSettings[t]||{},s=e=>this.setState(n=>({linkSettings:{...n.linkSettings,[t]:{...n.linkSettings[t],...e}}}));return a.Ay.createElement("form",{className:"gift-form"},this.renderChoice("no-gifts",!n.gifts,(0,i.Oj)({nl:"Alleen felicitaties",en:"Congratulations only"}),(0,i.Oj)({nl:"Vrienden en familie prikken een kaartje op je bord, en wie wil stuurt een echte kaart.",en:"Friends and family pin a card on your board, and anyone who likes sends a real one."}),()=>s({gifts:!1})),this.renderChoice("gifts",!!n.gifts,(0,i.Oj)({nl:"Felicitaties, en een kado als iemand wil",en:"Congratulations, and a gift if anyone likes"}),(0,i.Oj)({nl:"Wie je feliciteert kan er een bedrag bij aanbieden. Wij mailen je elk aanbod, jij laat weten hoe je het ontvangt: het geld komt rechtstreeks bij jou binnen.",en:"Whoever congratulates you can offer an amount with it. We email you every offer, you say how you receive it: the money goes straight to you."}),()=>s({gifts:!0})),n.gifts&&n.giftDetails?a.Ay.createElement("p",{className:"note gift-details"},(0,i.Oj)({nl:`Kado's krijgen meteen je rekeningnummer ${n.giftDetails.iban} (${n.giftDetails.name}).`,en:`Gifts get your account number ${n.giftDetails.iban} (${n.giftDetails.name}) right away.`})," ",a.Ay.createElement("button",{type:"button",className:"button text",onClick:()=>s({giftDetails:null,forgetGiftDetails:!0})},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Voortaan eerst mij vragen",en:"Ask me first from now on"})))):null,a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"white",onClick:()=>this.setEditStep(2)},(0,i.Oj)({nl:"Vorige",en:"Back"})),a.Ay.createElement("button",{type:"button",className:"button",disabled:this.state.saving[t],onClick:e=>this.handleSave(e,t,4)},(0,i.Oj)({nl:"Volgende",en:"Next"}))))}renderLiveSwitch(e,t){const n=e.envelopieKey,s=!!t.isActive;return a.Ay.createElement("button",{type:"button",className:"order-extra option "+(s?"on":""),"aria-pressed":s,disabled:this.state.saving[n],onClick:()=>this.setState(e=>({linkSettings:{...e.linkSettings,[n]:{...e.linkSettings[n],isActive:!s}}}),()=>this.handleSave(null,n))},a.Ay.createElement("span",{className:"order-extra-check"}),a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,s?(0,i.Oj)({nl:"Je prikbord staat aan",en:"Your board is on"}):(0,i.Oj)({nl:"Je prikbord staat uit",en:"Your board is off"})),a.Ay.createElement("span",null,s?(0,i.Oj)({nl:"Iedereen met de link kan je feliciteren.",en:"Anyone with the link can congratulate you."}):(0,i.Oj)({nl:"Zet hem aan, dan kan iedereen met de link je feliciteren.",en:"Switch it on and anyone with the link can congratulate you."}))))}renderEditStep4(e,t){const n=this.isEnvelopieActive(e),l=(0,x.fi)(e);return(0,x.tu)(e.envelopieKey),a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"edit-result"},this.renderMiniBoard(e),a.Ay.createElement("div",{className:"edit-result-side"},this.renderLiveSwitch(e,t),a.Ay.createElement("a",{className:"order-extra option action",href:(0,x.kL)(e)+"#source=preview",target:"_blank",rel:"noopener noreferrer"},a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,(0,i.Oj)({nl:"Bekijk je prikbord",en:"View your board"})),a.Ay.createElement("span",null,(0,i.Oj)({nl:"Zoals je vrienden en familie het zien",en:"As your friends and family see it"}))),a.Ay.createElement("span",{className:"order-extra-go","aria-hidden":"true"})))),n&&a.Ay.createElement(L.A,{className:"gift-share-section",id:e.envelopieKey,url:l+"#source=link-share",whatsapp:l+"#source=whatsapp",title:t.giftTitle||(0,i.Oj)({nl:"Felicitaties",en:"
1Congratulations"}),text:(0,i.Oj)({nl:`Prik een felicitatie op het prikbord van ${t.recipientName||t.giftTitle||"ons"}!`,en:`Pin your congratulations on ${t.recipientName||t.giftTitle||"our"} board!`}),label:(0,i.Oj)({nl:"Deel deze link",en:"Share this link"}),onMessage:e=>this.showMessage(e)},a.Ay.createElement("button",{className:"white small",onClick:t=>{t.preventDefault(),window.open("/response?json="+window.encodeURIComponent(JSON.stringify({m:"envelopie-qr",key:e.envelopieKey})))}},a.Ay.createElement("span",{className:"qr"}),"QR Code")),this.renderContributorsTable(e.envelopieKey),null,a.Ay.createElement("form",{className:"gift-form",onSubmit:e=>e.preventDefault()},a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"white",onClick:()=>this.setEditStep(3)},(0,i.Oj)({nl:"Vorige",en:"Back"})),a.Ay.createElement("button",{className:"button",onClick:e=>this.handleBack(e)},(0,i.Oj)({nl:"Terug naar overzicht",en:"Back to overview"})))))}renderEdit(){const{editingEnvelopieKey:e,editStep:t,linkSettings:n}=this.state,l=this.getEnvelopieByKey(e);if(!l)return a.Ay.createElement(s.FK,null,a.Ay.createElement("p",null,(0,i.Oj)({nl:"Pagina niet gevonden.",en:"Page not found."})),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#",className:"button text",onClick:e=>this.handleBack(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"})))));const r=n[e]||{};return a.Ay.createElement(s.FK,null,this.renderEditProgress(t),t<4?this.renderEditPreview(r):null,1===t&&this.renderEditStep1(l,r),2===t&&this.renderEditStep2(l,r),3===t&&this.renderEditStep3(l),4===t&&this.renderEditStep4(l,r))}renderSaved(){const{editingEnvelopieKey:e,linkSettings:t}=this.state,{user:n}=this.props,l=this.getEnvelopieByKey(e);if(!l)return this.setView("List");const r=t[e]||{},o=(0,x.fi)(l);(0,x.tu)(l.envelopieKey);const d=this.isEnvelopieActive(l);n.urlSlug;const c=(0,i.Oj)({nl:`Stuur een kaart naar ${r.recipientName||r.giftTitle||"ons"}!`,en:`Send a card to ${r.recipientName||r.giftTitle||"us"}!`});return a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"saved-success"},a.Ay.createElement("div",{className:"saved-icon"},a.Ay.createElement("span",{className:"icon-mark",dangerouslySetInnerHTML:{__html:(0,P.l9)({kind:"front",theme:"creme"},64)}})),a.Ay.createElement("h2",null,(0,i.Oj)({nl:"Je pagina is opgeslagen!",en:"Your page has been saved!"}))),a.Ay.createElement(L.A,{className:"gift-share-section",id:l.envelopieKey,url:o+"#source=link-share",whatsapp:o+"#source=whatsapp",title:r.giftTitle||(0,i.Oj)({nl:"Felicitaties",en:"Congratulations"}),text:c,label:a.Ay.createElement(s.FK,null,(0,i.Oj)({nl:"Deel deze link met je vrienden en familie",en:"Share this link with your friends and family"}),a.Ay.createElement("span",{className:"share-description"},(0,i.Oj)({nl:"Via deze link kunnen mensen je feliciteren, digitaal of met een echte kaart.",en:"People can congratulate you through this link, digitally or with a real card."}))),onMessage:e=>this.showMessage(e)},a.Ay.createElement("button",{className:"white small",onClick:e=>{e.preventDefault(),window.open("/response?json="+window.encodeURIComponent(JSON.stringify({m:"envelopie-qr",key:l.envelopieKey})))}},a.Ay.createElement("span",{className:"qr"}),"QR Code")),!d&&a.Ay.createElement("div",{className:"warning-box"},a.Ay.createElement("p",null,(0,i.Oj)({nl:"Deze pagina staat uit. Zet hem aan in de instellingen.",en:"This page is off. Switch it on in the settings."})),a.Ay.createElement(h.A,{className:"small",onClick:e=>{e.preventDefault(),this.setView("Edit",l.envelopieKey)}},(0,i.Oj)({nl:"Instellingen",en:"Settings"}))),a.Ay.createElement("div",{className:"field row end",style:{marginTop:"24px"}},a.Ay.createElement("a",{href:"#",className:"button secondary",onClick:e=>this.handleBack(e)},(0,i.Oj)({nl:"Terug naar overzicht",en:"Back to overview"}))))}render(){const{view:e,editingEnvelopieKey:t,linkSettings:n,dialog:l}=this.state;let r,o;return r="Saved"===e&&t?(0,i.Oj)({nl:"Prikbord opgeslagen",en:"Board saved"}):"Edit"===e&&t?(0,i.Oj)({nl:"Prikbord bewerken",en:"Edit board"}):(0,i.Oj)({nl:"Felicitatie prikbord",en:"Congratulations board"}),o="Saved"===e?this.renderSaved():"Edit"===e?this.renderEdit():this.renderList(),a.Ay.createElement(s.FK,null,a.Ay.createElement(u.A,{title:r},o),l?a.Ay.createElement(u.A,{dialog:!0,onHide:()=>this.setState({dialog:null}),title:l.title},a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"call-out"},l.message),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"white",onClick:()=>this.setState({dialog:null})},(0,i.Oj)({nl:"Annuleren",en:"Cancel"})),a.Ay.createElement(h.A,{className:"warning",onClick:l.onConfirm},(0,i.Oj)({nl:"Verwijderen",en:"Delete"}))))):null)}}I.propTypes={user:l.A.object,language:l.A.object,onMessage:l.A.func,onUserUpdate:l.A.func},I.defaultProps={user:{},language:{local:"nl"},onMessage:()=>{},onUserUpdate:()=>{}};var B=(0,i.lB)(I),H=n(896);function R(e,t,n,s){return a.Ay.createElement("div",{className:"choice-row",role:"group"},t.map(e=>a.Ay.createElement("button",{type:"button",key:e.value,id:e.id,className:"choice option"+(n===e.value?" on":""),"aria-pressed":n===e.value,onClick:()=>s(e.value)},e.label)))}function W(e,t,n,a,s){const l=r.A.get("nonce");(0,g.FH)("/response",{m:"update",nonce:l,user:e}).then(l=>{l.success?(l.newSlug&&(e.urlSlug=l.newSlug,delete e.newSlug),e.local=l.local,a(e),s((0,i.Oj)({nl:"Instellingen opgeslagen",en:"Settings saved"})),l.newSlug&&window.history.replaceState(null,"",t+"/"+l.newSlug+(0,i.Oj)({nl:"/adresboek",en:"/addressbook"})+n)):"slug_taken"===l.error?s((0,i.Oj)({nl:"Deze link is al in gebruik. Kies een andere.",en:"This link is already taken. Choose another one."})):"slug_reserved"===l.error?s((0,i.Oj)({nl:"Deze link is gereserveerd. Kies een andere.",en:"This link is reserved. Choose another one."})):"slug_too_short"===l.error?s((0,i.Oj)({nl:"De link moet minimaal 3 tekens lang zijn.",en:"The link must be at least 3 characters long."})):s((0,i.Oj)({nl:"Kon instellingen niet opslaan",en:"Could not save settings"}))})}class q extends a.Ay.Component{constructor(e){super(e),this.state={user:e.user,view:"settings"},this.host=document.location.protocol+"//"+document.location.hostname}getView(){return this.state.view}setView(e){this.setState({view:e},()=>window.requestAnimationFrame(()=>window.scroll(0,1)))}handleSettingsChange(e){e&&e.preventDefault(),W(this.state.user,this.host,"#settings",this.props.onUserUpdate,this.props.onMessage)}renderDelete(){const{user:e}=this.state,t=(0,i.Oj)({nl:"[email protected]",en:"[email protected]"}),n=e.key.substring(0,6);return a.Ay.createElement("div",null,a.Ay.createElement("div",{className:"call-out"},a.Ay.createElement("p",null,(0,i.Oj)({nl:a.Ay.createElement(s.FK,null,"Stuur een e-mail naar ",a.Ay.createElement("a",{href:"mailto:"+t+"?subject=Verwijder Mailbook "+e.urlSlug},t)," met de code ",a.Ay.createElement("strong",null,n)," om je Mailbook te verwijderen."),en:a.Ay.createElement(s.FK,null,"Send an email to ",a.Ay.createElement("a",{href:"mailto:"+t+"?subject=Delete Mailbook "+e.urlSlug},t)," with the code ",a.Ay.createElement("strong",null,n)," to delete your Mailbook.")}
1))),a.Ay.createElement(h.A,{onClick:()=>this.setView("settings")},(0,i.Oj)({nl:"Terug",en:"Back"})))}renderSettings(){const{user:e}=this.state,t=(0,i.Oj)(window.countries).find(t=>t.value.toLowerCase()===(0,g.Hw)(e.local));return a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"field row"},a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,{htmlFor:"firstName"},(0,i.Oj)({nl:"Voornaam",en:"First name"})),a.Ay.createElement("input",{id:"firstName",value:e.firstName,placeholder:(0,i.Oj)({nl:"Wat is je voornaam?",en:"What is your first name?"}),onChange:t=>{e.firstName=t.currentTarget.value,this.setState({user:e})}})),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,{htmlFor:"lastName"},(0,i.Oj)({nl:"Achternaam",en:"Last name"})),a.Ay.createElement("input",{id:"lastName",value:e.lastName,placeholder:(0,i.Oj)({nl:"Wat is je achternaam?",en:"What is your last name?"}),onChange:t=>{e.lastName=t.currentTarget.value,this.setState({user:e})}}))),e.email?a.Ay.createElement("div",{className:"field"}
1,a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"E-mailadres",en:"E-mail address"})),a.Ay.createElement("p",{className:"field-text"},e.email)):null,a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"Jouw land",en:"Your country"})),a.Ay.createElement("p",{className:"field-text"},t?t.label:(0,i.Oj)({nl:"Nog niet bekend",en:"Not known yet"})," ",a.Ay.createElement("a",{href:"#own"},(0,i.Oj)({nl:"Aanpassen",en:"Change"})))),(n=(0,i.Oj)({nl:"E-mail updates",en:"E-mail updates"}),a.Ay.createElement("h2",null,a.Ay.createElement("em",null),a.Ay.createElement("span",null,n))),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"Een e-mail als er nieuwe adressen zijn?",en:"An e-mail when new addresses came in?"})),R(0,[{value:"0",id:"updateNone",label:(0,i.Oj)({nl:"Niet",en:"None"})},{value:"1",id:"updateDaily",label:(0,i.Oj)({nl:"Dagelijks",en:"Daily"})},{value:"7",id:"updateWeekly",label:(0,i.Oj)({nl:"Wekelijks",en:"Weekly"})}],"1"==e.updates||"7"==e.updates?String(e.updates):"0",t=>{e.updates=t,this.setState({user:e})})),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#home",className:"button text"},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"}))),a.Ay.createElement(h.A,{className:"warning",onClick:e=>{e.preventDefault(),this.setView("delete")}},(0,i.Oj)({nl:"Verwijder mijn Mailbook",en:"Delete my Mailbook"})),a.Ay.createElement(h.A,{type:"submit",onClick:e=>this.handleSettingsChange(e)},(0,i.Oj)({nl:"Opslaan",en:"Save"}))));var n}switchView(){return"delete"===this.getView()?this.renderDelete():this.renderSettings()}render(){return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Adresboek instellingen",en:"Address book settings"})},this.switchView())}}q.propTypes={user:l.A.object,language:l.A.object,onUserUpdate:l.A.func,onMessage:l.A.func},q.defaultProps={user:{},language:{local:"nl"},onUserUpdate:()=>{},onMessage:()=>{}};var J=(0,i.lB)(q),_=n(568),G=n(887);class Y extends a.Ay.Component{constructor(e){super(e),this.state={user:e.user,editLang:null},this.host=document.location.protocol+"//"+document.location.hostname}handleShare(){const{user:e}=this.state,{onMessage:t}=this.props,n=this.host+"/"+e.urlSlug+(0,i.Oj)({nl:"/voegtoe?",en:"/add?"})+"key="+e.addKey+"&h="+(0,g.sk)(e.title);navigator.share?navigator.share({title:"Mailbook",text:(0,i.Oj)(e.title),url:n}).catch(()=>{}):navigator.clipboard.writeText(n).then(()=>t((0,i.Oj)({nl:"De link is gekopieerd naar je klembord.",en:"The link has been copied to your clipboard"})))}handleSettingsChange(e){e&&e.preventDefault(),W(this.state.user,this.host,"#request",this.props.onUserUpdate,this.props.onMessage)}render(){const{user:e}=this.state,{language:t}=this.props,n=t.local?t.local.split("-")[0].toLowerCase():"nl",s=4===Number(e.type),l=[{id:"nl",name:"Nederlands",in:{nl:"het Nederlands",en:"Dutch"}},{id:"en",name:"English",in:{nl:"het Engels",en:"English"}},{id:"fr",name:"Français",in:{nl:"het Frans",en:"French"}},{id:"es",name:"Español",in:{nl:"het Spaans",en:"Spanish"}},{id:"de",name:"Deutsch",in:{nl:"het Duits",en:"German"}}].sort((e,t)=>(t.id===n)-(e.id===n)),r=this.state.editLang||n,o=l.find(e=>e.id===r),d=(0,g.QC)(e),c=void 0!==e.newSlug?e.newSlug:e.urlSlug;return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Je adresverzoek",en:"Your address request"})},a.Ay.createElement("form",null,a.Ay.createElement(G.A,{from:d,title:(m=e.title,m[r]||m.en||m[Object.keys(m)[0]]),body:e.settings.body[r],link:`${this.host.replace(/^https?:\/\//,"")}/${c}`,color:e.settings.color,sober:s,lang:r,onShare:()=>this.handleShare()}),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,{htmlFor:`title-${r}`},(0,i.Oj)({nl:"De titel van je adresverzoek",en:"The title of your address request"})),a.Ay.createElement("div",{className:"language-tabs",role:"tablist"},l.map(t=>a.Ay.createElement("button",{type:"button",role:"tab",key:t.id,className:`language-tab option${t.id===r?" on":""}${e.title[t.id]?" filled":""}`,"aria-selected":t.id===r,onClick:()=>this.setState({editLang:t.id})},t.name))),a.Ay.createElement(_.A,{key:r,lang:r,title:e.title[r],body:e.settings.body[r],placeholder:(0,i.Oj)({nl:"Deze titel staat bovenaan je adresverzoek.",en:"This title sits at the top of your address request."}),onChange:({title:t,body:n})=>{e.title[r]=t,e.settings.body[r]=n,this.setState({user:e})}}
1),r===n?null:a.Ay.createElement("p",{className:"note field-note"},(0,i.Oj)({nl:`Voor wie je adresverzoek in ${o.in.nl} opent. Laat je dit leeg, dan zien zij de titel in een taal die je wel hebt ingevuld.`,en:`For whoever opens your address request in ${o.in.en}. Leave it empty and they see the title in a language you did fill in.`}))),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"Waarvoor verzamel je adressen?",en:"What are you collecting addresses for?"})),a.Ay.createElement("div",{className:"occasion-tiles settings",role:"group"},g.gK.map(t=>a.Ay.createElement("button",{type:"button",key:t.type,className:"occasion-tile option "+(e.type==t.type?"on":""),"aria-pressed":e.type==t.type,onClick:()=>{e.type=t.type,this.setState({user:e})}},a.Ay.createElement(F.Ay,{type:t.type}),a.Ay.createElement("span",null,(0,i.Oj)(t.label)))))),s?null:a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"De kleur achter je adresverzoek",en:"The colour behind your address request"})),a.Ay.createElement("div",{className:"swatches",role:"group"},g.NP.map(t=>a.Ay.createElement("button",{type:"button",key:t.id,className:"swatch"+(e.settings.color===t.id?" selected":""),style:{background:t.band},title:(0,i.Oj)(t.name),"aria-label":(0,i.Oj)(t.name),"aria-pressed":e.settings.color===t.id,onClick:()=>{e.settings.color=t.id,this.setState({user:e})}})))),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,{htmlFor:"business"},(0,i.Oj)({nl:"De naam boven je adresverzoek",en:"The name over your address request"}),a.Ay.createElement("span",{className:"extra"},(0,i.Oj)({nl:"optioneel",en:"optional"}))),a.Ay.createElement("input",{id:"business",value:e.business||"",placeholder:[e.firstName,e.lastName].filter(Boolean).join(" "),onChange:t=>{e.business=t.currentTarget.value,this.setState({user:e})}}),a.Ay.createElement("p",{className:"note field-note"},(0,i.Oj)({nl:"Bijvoorbeeld jullie namen samen, of de naam van je bedrijf of vereniging.",en:"For instance both your names, or the name of your business or club."}))),a.Ay.createElement("div",{className:"field"},a.Ay.createElement(H.A,{htmlFor:"urlSlug"},(0,i.Oj)({nl:"Je link",en:"Your link"})),a.Ay.createElement("div",{className:"field row slug-field"},a.Ay.createElement("span",{className:"slug-prefix"},this.host.replace(/^https?:\/\//,""),"/"),a.Ay.createElement("input",{id:"urlSlug",value:c,placeholder:e.urlSlug,onChange:t=>{e.newSlug=(0,g.L7)(t.currentTarget.value),this.setState({user:e})}}))),a.Ay.createElement("div",{className:"field"}
1,a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"Vraag je contacten ook om hun e-mailadres en telefoonnummer?",en:"Ask your contacts for their e-mail address and phone number too?"})),R(0,[{value:"yes",id:"contactYes",label:(0,i.Oj)({nl:"Ja",en:"Yes"})},{value:"no",id:"contactNo",label:(0,i.Oj)({nl:"Nee",en:"No"})}],"no"===e.contacts?"no":"yes",t=>{e.contacts=t,this.setState({user:e})})),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#home",className:"button text"},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"}))),a.Ay.createElement(h.A,{type:"submit",onClick:e=>this.handleSettingsChange(e)},(0,i.Oj)({nl:"Opslaan",en:"Save"})))));var m}}Y.propTypes={user:l.A.object,language:l.A.object,onUserUpdate:l.A.func,onMessage:l.A.func},Y.defaultProps={user:{},language:{local:"nl"},onUserUpdate:()=>{},onMessage:()=>{}};var Q=(0,i.lB)(Y);class Z extends a.Ay.Component{constructor(e){super(e),this.state={picked:e.user.settings.ownAddress,mail:null}}resend(e){e.preventDefault(),this.props.onResend().then(e=>this.setState({mail:e.success?"sent":"limit"}))}renderEmail(){const{user:e}=this.props,{mail:t}=this.state,n=!!e.settings.ownAddress;let l=null;return"sent"===t?l=(0,i.Oj)({nl:"De mail is onderweg. Klik daarin op de knop om te bevestigen.",en:"The mail is on its way. Click the button in it to confirm."}):"limit"===t?l=(0,i.Oj)({nl:"Je hebt deze mail vandaag al twee keer gekregen. Kijk ook even bij je ongewenste mail, of probeer het morgen opnieuw.",en:"You already got this mail twice today. Have a look in your spam folder too, or try again tomorrow."}):!e.emailVerified&&n?l=a.Ay.createElement(s.FK,null,(0,i.Oj)({nl:"Bevestig het met de knop in de mail die je van ons kreeg. Geen mail gezien? ",en:"Confirm it with the button in the mail we sent you. No mail? "}),a.Ay.createElement("a",{href:"#own",onClick:e=>this.resend(e)},(0,i.Oj)({nl:"Stuur hem opnieuw",en:"Send it again"})),"."):e.emailVerified||(l=(0,i.Oj)({nl:"Sla je je eigen adres op, dan krijg je een mail om dit e-mailadres te bevestigen.",en:"When you save your own address, you get a mail to confirm this e-mail address."})),a.Ay.createElement("div",{className:"field own-address-email"}
1,a.Ay.createElement(H.A,null,(0,i.Oj)({nl:"Het e-mailadres dat erbij hoort",en:"The e-mail address it goes with"})),a.Ay.createElement("p",null,a.Ay.createElement("strong",null,e.email),a.Ay.createElement("span",{className:"chip own-address "+(e.emailVerified?"good":"quiet")},e.emailVerified?(0,i.Oj)({nl:"bevestigd",en:"confirmed"}):(0,i.Oj)({nl:"nog niet bevestigd",en:"not confirmed yet"}))),l?a.Ay.createElement("p",{className:"note field-note"},l):null)}render(){const{user:e,addresses:t,onOwn:n}=this.props,{picked:l}=this.state,r=t[l],o=Object.keys(t).map(n=>({key:n,to:(0,g.M0)(t[n],e.country).to,city:t[n].city})).filter(e=>e.to).sort((e,t)=>e.to.localeCompare(t.to));return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Je eigen adres",en:"Your own address"})},a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"field"},a.Ay.createElement("p",{className:"note field-note own-address-why"},(0,i.Oj)({nl:"Koppel je e-mailadres aan je eigen postadres, zodat je het gemakkelijk deelt met Mailbook als iemand je erom vraagt. We delen het nooit automatisch.",en:"Link your e-mail address to your own postal address, so you share it easily through Mailbook when someone asks you for it. We never share it automatically."})),r?a.Ay.createElement("div",{className:"label-stage address-check as-preview"},a.Ay.createElement("div",{className:"address-label"},a.Ay.createElement(v.A,{className:"stage",address:{...r},country:(0,g.Hw)(e.local),settings:{}})),a.Ay.createElement("p",{className:"note stage-note"},a.Ay.createElement("a",{href:`#edit-${l}`},(0,i.Oj)({nl:"Pas dit adres aan",en:"Change this address"})))):null,o.length?a.Ay.createElement(s.FK,null,a.Ay.createElement(H.A,{htmlFor:"ownAddress"},r?(0,i.Oj)({nl:"Een ander adres is van mij",en:"Another entry is mine"}):(0,i.Oj)({nl:"Welk adres in je adresboek is van jou?",en:"Which address in your address book is yours?"})),a.Ay.createElement("select",{id:"ownAddress",value:r?l:"",onChange:e=>this.setState({picked:e.currentTarget.value})},a.Ay.createElement("option",{value:""},(0,i.Oj)({nl:"Geen",en:"None"})),o.map(e=>a.Ay.createElement("option",{key:e.key,value:e.key},e.to,e.city?`, ${e.city}`:"")))):null,r?null:a.Ay.createElement("a",{href:"#add-own",className:"order-extra option action own-address-add"},a.Ay.createElement("span",{className:"order-extra-text"},a.Ay.createElement("strong",null,(0,i.Oj)({nl:"Voeg je eigen adres toe",en:"Add your own address"})),a.Ay.createElement("span",null,o.length?(0,i.Oj)({nl:"Staat het er nog niet tussen? Vul het in.",en:"Not in the list yet? Fill it in."}):(0,i.Oj)({nl:"Eén keer invullen, daarna nooit meer.",en:"Fill it in once, and never again."}))),a.Ay.createElement("span",{className:"order-extra-go","aria-hidden":"true"}))),this.renderEmail(),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#home",className:"button text"},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"}))),o.length?a.Ay.createElement(h.A,{type:"submit",disabled:l===e.settings.ownAddress,onClick:e=>{e.preventDefault(),n(l)}},(0,i.Oj)({nl:"Opslaan",en:"Save"})):null)))}}Z.propTypes={user:l.A.object,addresses:l.A.object,onOwn:l.A.func,onResend:l.A.func},Z.defaultProps={user:{},addresses:{},onOwn:()=>{},onResend:()=>Promise.resolve({})};var X=(0,i.lB)(Z),ee=n(503);class te extends a.Ay.Component{controllers=[];delayTimers=[];cancelled=!1;constructor(e){super(e),this.state={status:"done",disabled:!1},this.form=a.Ay.createRef()}componentDidMount(){}componentWillUnmount(){this.cancelUploads()}cancelUploads(){"loading"===this.state.status&&(this.cancelled=!0,this.controllers.forEach(e=>e.abort()),this.delayTimers.forEach(e=>clearTimeout(e)),this.setState({status:"done"}))}async handleInputState(e){const{status:t}=this.state,{request:n,onData:a,onError:s,fileFilter:l}=this.props;if(e.preventDefault(),"loading"==t){if(!window.confirm("Dit annuleert lopende uploads. Weet je het zeker?"))return;this.cancelUploads()}this.cancelled=!1,this.setState({status:"loading"});let r=Array.from(e.target.files);if(0==r.length)return void this.setState({status:"done"});let i=0;if(l){const e=r.length;if(r=r.filter(l),i=e-r.length,0===r.length)return s({message:`${i} bestanden overgeslagen (bestaan al).`}),void this.setState({status:"done"})}r.length>500&&s({message:"Will only handle maximum 500 files."}),a({files:r});const o=[];for(let e=0;e<r.length&&!this.cancelled;e+=5){const t=r.slice(e,e+5),l=new AbortController;this.controllers.push(l);const i=(0,g.Se)("/response",t,n,l.signal).then(e=>{e?.error?(this.setState({status:"error"}),s?.({message:e.error})):a?.(e)}).catch(e=>{"AbortError"!==e.name&&(this.setState({status:"error"}),s?.({message:e.message}))});o.push(i),e+5<r.length&&await new Promise(e=>{const t=setTimeout(e,1500);this.delayTimers.push(t)})}if(!this.cancelled&&(await Promise.allSettled(o),this.setState({status:"done"}),r.length>0||i>0)){let e="";r.length>0&&i>0?e=`${r.length} bestanden geüpload, ${i} bestanden overgeslagen (bestaan al).`:r.length>0?e=`${r.length} bestanden geüpload.`:i>0&&(e=`${i} bestanden overgeslagen (bestaan al).`),e&&a({message:e})}this.form.current.reset()}render(){const{status:e}=this.state,t=this.props.children,n=["button","loading"===this.state.status&&"loading","done"===this.state.status&&"done","error"===this.state.status&&"error",this.props.disabled&&"disabled"].filter(
1Boolean).join(" ");return a.Ay.createElement("div",{className:"upload-button"},a.Ay.createElement("form",{ref:this.form},a.Ay.createElement("button",{type:"button",className:n,onClick:()=>this.fileInput&&this.fileInput.click()},a.Ay.createElement("span",{className:"button-content"},a.Ay.createElement("span",null,t),"loading"==e?a.Ay.createElement(ee.A,{size:25,theme:"white"}):null)),a.Ay.createElement("input",{ref:e=>this.fileInput=e,name:"files[]",type:"file",className:"hidden",multiple:this.props.multiple,accept:this.props.accept||".pdf, .html",onChange:e=>this.handleInputState(e)})))}}te.propTypes={disabled:l.A.bool,onClick:l.A.func,onData:l.A.func,onError:l.A.func,error:l.A.object,request:l.A.object,fileFilter:l.A.func,accept:l.A.string},te.defaultProps={disabled:!1,onClick:e=>e.preventDefault(),onData:e=>e.preventDefault(),onError:e=>e&&console.log(e),error:{},request:{},fileFilter:null};var ne=n(804);class ae extends a.Ay.Component{constructor(e){super(e),this.state={imported:{},saved:null,error:null,handoff:!1}}componentDidMount(){const e=(0,ne.ms)();e&&(this.setState({handoff:"reading"}),(0,g.Se)("/response",[(0,ne.T6)(e)],{m:"import"}).then(e=>{this.setState({handoff:"read"}),e.error?this.handleUploadError({message:e.error}):this.handleUploadData(e,!0)}).catch(e=>{this.setState({handoff:"read"}),this.handleUploadError(e)}))}handleChecked(e,t,n){let{imported:a}=this.state;a[e]&&(a[e][t]=void 0!==n?n:!a[e][t],this.setState({imported:a}))}async handleSave(e){const{imported:t}=this.state,{user:n,onAddressUpdate:a,language:s}=this.props;e&&e.preventDefault();const l=(0,g.k5)(t).filter(e=>!0===e.import);let r=0;for(const e of l)try{const t=await(0,g.FH)("/response",{m:"save",address:e,slug:n.slug,key:e.key,owner:!!n.owner,addKey:n.addKey,local:s.local});t&&t.address&&(a(t.address),r++)}catch(e){}this.state.handoff?this.setState({imported:{}},()=>{window.location.hash="order"}):this.setState({imported:{},saved:r})}handleUploadData(e,t=!1){if(e&&e.addresses){const n={};e.addresses.forEach((e,a)=>{const s=String(a);n[s]={...e,_key:s,import:t}}),this.setState({imported:n,error:null})}}handleUploadError(e){this.setState({error:e?.message||"Upload failed. Please try again."})}handleFilter(e){const t=e.firstName||e.lastName||e.to||e.email,n=e.streetname||e.city;return t||n}render(){const{imported:e,saved:t,error:n,handoff:s}=this.state,{user:l}=this.props,r=Object.keys(e).length>0,o=null!==t?3:r?2:1,d=[{num:1,label:(0,i.Oj)({nl:"Bestand",en:"File"})},{num:2,label:(0,i.Oj)({nl:"Controleren",en:"Check"})},{num:3,label:(0,i.Oj)({nl:"Klaar",en:"Done"})}],c=(0,g.k5)(e).filter(e=>!0===e.import).length,m=a.Ay.createElement("p",{className:"call-out"},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Je adressen uit Google Sheets worden gelezen. Even wachten...",en:"Reading your addresses from Google Sheets. Hold on..."})),a.Ay.createElement(ee.A,{size:25,theme:"blue"})),p=a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"call-out"},a.Ay.createElement("span",null,(0,i.Oj)({nl:a.Ay.createElement("span",null,"Importeer een Excel adressenbestand. AI herkent automatisch de kolomindeling en zet deze om naar het juiste formaat."),en:a.Ay.createElement("span",null,"Import your own Excel address file. AI automatically recognizes column formats and converts them to the correct structure.")}))),a.Ay.createElement(te,{request:{m:"import"},accept:".xls,.xlsx,.csv",onData:e=>this.handleUploadData(e),onError:e=>this.handleUploadError(e)},(0,i.Oj)({nl:"Upload bestand",en:"Upload file"})),n&&a.Ay.createElement("p",{className:"import-error"},n)),y=a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"note"},(0,i.Oj)({nl:`${Object.keys(e).length} adressen herkend. Vink aan wat je adresboek in mag; ${c} ${1===c?"staat":"staan"} aangevinkt.`,en:`${Object.keys(e).length} addresses recognised. Tick the ones that go into your address book; ${c} ticked.`})),a.Ay.createElement(b,{addresses:e,user:l,attr:"import",alwaysOpen:!0,onHandleFilter:e=>this.handleFilter(e),onHandleChecked:(e,t,n)=>this.handleChecked(e,t,n)}),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#import",className:"button text",onClick:e=>{e.preventDefault(),this.setState({imported:{}})}},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Ander bestand",en:"Another file"}))),a.Ay.createElement(h.A,{disabled:0===c,onClick:e=>this.handleSave(e)},(0,i.Oj)({nl:`Importeer ${c} ${1===c?"adres":"adressen"}`,en:`Import ${c} ${1===c?"address":"addresses"}`})))),A=a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"call-out"},(0,i.Oj)({nl:`${t} ${1===t?"adres staat":"adressen staan"} nu in je adresboek.`,en:`${t} ${1===t?"address is":"addresses are"} in your address book now.`})),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#import",className:"button text",onClick:e=>{e.preventDefault(),this.setState({saved:null})}},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Nog een bestand",en:"Another file"}))),a.Ay.createElement("a",{href:"#home",className:"button"},(0,i.Oj)({nl:"Bekijk adresboek",en:"View address book"})))),v=3===o?A:2===o?y:p;return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Importeer",en:"Import"})},a.Ay.createElement(U.A,{steps:d,current:o}),"reading"===s?m:v)}}
1ae.propTypes={user:l.A.object,addresses:l.A.object,onMessage:l.A.func,onAddressUpdate:l.A.func},ae.defaultProps={user:{},addresses:{},onMessage:()=>{},onAddressUpdate:()=>{}};var se=(0,i.lB)(ae),le=n(168);class re extends a.Ay.Component{constructor(e){super(e),this.state={settings:{paper:null},addresses:e.addresses},this.host=document.location.protocol+"//"+document.location.hostname,this.options={en:[{brand:"Avery",id:"J8163",columns:2,rows:7},{brand:"Avery",id:"J8160",columns:3,rows:7,label:"(default)"},{brand:"Avery",id:"J8560",columns:3,rows:7},{brand:"Avery",id:"L7160",columns:3,rows:7},{brand:"Avery",id:"L7560",columns:3,rows:7},{brand:"Avery",id:"J8159",columns:3,rows:8},{brand:"Avery",id:"L7159",columns:3,rows:8}],"en-us":[{brand:"Avery",id:"5163",columns:2,rows:5,page:"Letter"},{brand:"Avery",id:"5162",columns:2,rows:7,page:"Letter"},{brand:"Avery",id:"6871",columns:3,rows:6,page:"Letter"},{brand:"Avery",id:"8160",columns:3,rows:10,page:"Letter"},{brand:"Avery",id:"5160",columns:3,rows:10,label:"(default)",page:"Letter"}]}}componentDidMount(){const{addresses:e}=this.state;Object.keys(e).forEach(t=>{e[t].addressRecipient=t!==this.props.user.settings.ownAddress}),this.setState({addresses:e})}handleChecked(e,t,n=void 0){const{addresses:a}=this.state;a[e]&&(a[e][t]=void 0===n?!a[e][t]:n,this.setState({addresses:a}))}onPaperState(e){const{settings:t}=this.state,n=e.currentTarget;null===n&&(n={value:null});const a={...t,paper:n.value};this.setState({settings:a})}orderLabel(e){e.preventDefault(),document.location.hash="order"}downloadLabel(e){const{settings:t,addresses:n}=this.state,{user:a,language:s,onPromoMessage:l}=this.props;e&&e.preventDefault();const o=(0,i.Oj)(this.options).find(e=>e.id===t.paper);let d={m:"download",nonce:r.A.get("nonce"),local:s.local,settings:{format:"label",...o,country:(0,g.Hw)(a.local)},addresses:n};l();var c=document.createElement("form");c.style.display="none",c.setAttribute("method","post"),c.setAttribute("action",this.host+"/response");var m=document.createElement("input");m.setAttribute("name","json"),m.setAttribute("value",JSON.stringify(d)),c.appendChild(m),document.body.appendChild(c),c.target="_blank",c.submit()}render(){const{settings:e,addresses:t}=this.state,{onMessage:n}=this.props,s=a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"call-out"},a.Ay.createElement("span",null,(0,i.Oj)({nl:a.Ay.createElement("p",null,"Jouw adressen kan je ook gemakkelijk zelf op adresetiketten printen. 💡 Geen adresetiketten papier in huis?"," ",a.Ay.createElement("a",{href:"#order"},"Ontvang alle adressen op adresetiketten per post thuis"),"."),en:a.Ay.createElement("p",null,"Download and print your addresses on labels yourself. 💡 Don't have label sheets?"," ",a.Ay.createElement("a",{href:"#order"},"Get your addresses on labels delivered to your home"),".")}))),a.Ay.createElement(p.A,{type:"select",label:(0,i.Oj)({nl:"Selecteer jouw etiketten product of indeling:",en:"Choose your label product or format:"}),id:"paper",options:(0,i.Oj)(this.options).map(e=>({label:(0,i.Oj)({nl:`${e.rows*e.columns} per pagina - ${e.brand} ${e.id} ${e.label?e.label:""}`.trim(),en:`${e.rows*e.columns} per sheet - ${e.brand} ${e.id} ${e.label?e.label:""}`.trim()}),value:e.id}
1)),value:e.paper,onChange:e=>this.onPaperState(e),name:"paper",placeholder:(0,i.Oj)({nl:"Kies je series of indeling…",en:"Choose your series or formatting…"}),clearable:!1}),a.Ay.createElement(b,{label:(0,i.Oj)({nl:"Selecteer adressen voor etiketten",en:"Select addresses for labels"}),addresses:t,showLabel:!0,attr:"addressRecipient",onHandleFilter:()=>!0,onHandleChecked:(e,t,n)=>this.handleChecked(e,t,n),onMessage:e=>n(e),alwaysOpen:!1,isMinimal:!0}),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement(h.A,{disabled:null===!e.paper,onClick:e=>this.downloadLabel(e)},(0,i.Oj)({nl:"Download etiketten",en:"Download labels"}))),a.Ay.createElement("p",{style:{marginTop:14}},(0,i.Oj)({nl:"Je krijgt een pdf: die open je in je browser of pdf-lezer. Print op werkelijke grootte (100%, niet ‘passend maken’), anders lopen de etiketten uit het raster.",en:"You get a pdf: open it in your browser or any pdf reader. Print it at actual size (100%, not ‘fit to page’), or the labels drift out of the grid."})));return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"🖨 Adresetiketten bestand",en:"🖨 Address labels file"})},s)}}re.propTypes={user:l.A.object,addresses:l.A.object,language:l.A.object,onMessage:l.A.func,onPromoMessage:l.A.func},re.defaultProps={user:{},addresses:{},language:{local:"nl"},onMessage:()=>{},onPromoMessage:()=>{},alwaysOpen:!1};var ie=(0,i.lB)(re);class oe extends a.Ay.Component{constructor(e){super(e),this.state={label:null}}handleLabelState(e){const t=e.currentTarget;null===t&&(t={value:null});const n=t.value;this.setState({label:n})}render(){const{label:e}=this.state,t=(0,g.k5)(this.props.addresses),n=t.filter(t=>"all"!==e?t.email&&t.labels&&t.labels.some(t=>t===e):t.email).map(e=>e.email).join(","),s=t.filter(e=>!e.email).map(e=>e.to?e.to:e.firstName+" "+e.lastName).join(", ");let l={};t.map(e=>{e.labels&&e.labels.map(e=>{e in l?l[e].count++:l[e]={count:1,label:e}})});const r=(0,g.k5)(l).filter(e=>e.count>=1).map(e=>({label:`${e.label} (${e.count})`,value:e.label}));r.unshift({label:(0,i.Oj)({nl:"Allemaal",en:"All"}),value:"all"});const o=a.Ay.createElement("form",null,a.Ay.createElement("p",{className:"call-out"},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Kopier en plak onderstaande e-mail lijst om jouw contacten te e-mailen.",en:"Copy and paste the email list below to send an email to your contacts."}))),a.Ay.createElement(p.A,{label:"Filer",type:"select",id:"labels",options:r,value:this.state.label,onChange:e=>this.handleLabelState(e),placeholder:(0,i.Oj)({nl:"Kies een label…",en:"Choose a label…"}),clearable:!1}),a.Ay.createElement("div",{className:"field"},a.Ay.createElement("textarea",{id:"emails",style:{whiteSpace:"unset",minHeight:"200px"},onClick:e=>(0,g.Zt)(e,this.textInput),ref:e=>{this.textInput=e},value:n,readOnly:!0})),s.length>0?a.Ay.createElement("span",{style:{display:"block"}},(0,i.Oj)({nl:"Let op! Deze contacten hebben geen e-mailadres opgegeven:",en:"Note! These contacts have no email address set:"})," ",a.Ay.createElement("strong",null,s)):null);return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"E-mailadressen lijst",en:"Email addresses list"})},o)}}oe.propTypes={user:l.A.object,addresses:l.A.object,language:l.A.object,onMessage:l.A.func},oe.defaultProps={user:{},addresses:{},language:{local:"nl"},onMessage:()=>{}};var de=n(185);class ce{constructor(e){this.channel="undefined"!=typeof window&&"BroadcastChannel"in window?new window.BroadcastChannel("mailbook-"+e):null}post(e){this.channel&&this.channel.postMessage(e)}subscribe(e){if(!this.channel)return()=>{};const t=t=>e(t.data);return this.channel.addEventListener("message",t),()=>this.channel.removeEventListener("message",t)}close(){this.channel&&this.channel.close()}}var me=n(251),ue=n(376);const he=["minimum","band"];function pe(e){if("delete"==e.action)return{key:e.key,action:"delete"};const t={...e};return delete t.checked,delete t.addressRecipient,delete t._key,{key:e.key,action:"save",address:t}}class ye extends a.Ay.Component{constructor(e){super(e),this.state={more:!1,user:e.user,addresses:e.addresses,view:this.getView(),sort:{key:"firstName",direction:"asc",firstName:!0},search:"",editMode:!1,layoutMode:"full",dialog:null,pending:{}},this.moreAnchor={current:null},this.host=document.location.protocol+"//"+document.location.hostname,this.textInput={},this.viewScrollPos=1,this.sync=new ce("addressbook-"+e.user.slug),this.listener=e=>{e&&e.preventDefault();const t=this.getView();if(t===this.state.view)return;const n="View"==t?this.viewScrollPos:1;this.setState({view:t},()=>window.requestAnimationFrame(()=>window.scrollTo(0,n)))}}componentDidMount(){window.history.scrollRestoration&&(window.history.scrollRestoration="manual"),window.addEventListener("hashchange",this.listener),this.unsubscribe=this.sync.subscribe(e=>this.handleRemoteChange(e)),(0,ne.NT)()&&this.setView("Import"),(0,ue.b)(this.headerSummary())}componentDidUpdate(){(0,ue.b)(this.headerSummary())}headerSummary(){const{user:e,addresses:t}=this.state;return{addresses:Object.keys(t).length,live:e.envelopies.some(e=>e.settings.isActive),orders:Object.keys(e.orders).length}}componentWillUnmount(){window.removeEventListener("hashchange",this.listener),this.unsubscribe(),this.sync.close()}getView(){let e="View";const t=document.location.hash.slice(1);return/^settings/i.test(t)?e="Settings":/^request/i.test(t)?e="RequestSettings":/^own/i.test(t)?e="Own":/^export/i.test(t)?e="Export":/^import/i.test(t)?e="Import":/^labels/i.test(t)?e="Labels":/^emails/i.test(t)?e="Emails":/^orders/i.test(t)?e="Orders":/^gifts/i.test(t)?e="Gifts":/^order/i.test(t)?e="Order":/^add/i.test(t)?e="Add":/^edit/i.test(t)&&(e="Edit"),e}setView(e){const{view:t}=this.state;return"View"==t&&(this.viewScrollPos=document.documentElement.scrollTop||document.body.scrollTop),document.location.hash=e.toLowerCase(),!0}handleAddressbook(e){e&&e.preventDefault(),this.setView("View")}handleOrderLabels(e){e&&e.preventDefault(),this.setView("Order-label")}handleOrderCard(e){e&&e.preventDefault(),document.location="/kaartje/geboorte"}handleAddressEdit(e,t){const{user:n}=this.state;e&&e.preventDefault(),this.setView("Edit-"+t._key)}handleAddressAdd(e){const{user:t}=this.state;e&&e.preventDefault(),this.setView("Add")}
1handleAddressesUpdate(e){const{addresses:t,pending:n}=this.state;if(e.key){"delete"==e.action?delete t[e.key]:t[e.key]=e;const a=e.key in n;delete n[e.key],this.setState({addresses:t,pending:n},()=>a&&this.announcePending()),this.sync.post(pe(e))}}handleRemoteChange(e){const{pending:t}=this.state;e&&e.key&&(t[e.key]="delete"==e.action?null:e.address,this.setState({pending:t},()=>this.announcePending()))}handleAdopt(e){const{addresses:t,pending:n}=this.state,{onMessage:a}=this.props;e&&e.preventDefault(),Object.keys(n).forEach(e=>{const a=n[e],s=t[e];null!==a?(s?["addressRecipient","checked"].forEach(e=>{e in s&&(a[e]=s[e])}):a.addressRecipient=!0,t[e]=a):delete t[e]}),this.setState({addresses:t,pending:{}},()=>this.announcePending()),a((0,i.Oj)({nl:"De wijzigingen uit het andere tabblad zijn overgenomen.",en:"The changes from the other tab were adopted."}))}handleIgnore(e){e&&e.preventDefault(),this.setState({pending:{}},()=>this.announcePending())}announcePending(){const{pending:e}=this.state,{onMessage:t}=this.props,n=Object.keys(e).length;t(0!==n?{id:"tab-sync",sticky:!0,text:1===n?(0,i.Oj)({nl:"In een ander tabblad is een adres gewijzigd. Neem de wijziging over om hier met de laatste gegevens te werken.",en:"An address was changed in another tab. Adopt the change to keep working with the latest data here."}
1):(0,i.Oj)({nl:`In een ander tabblad zijn ${n} adressen gewijzigd. Neem de wijzigingen over om hier met de laatste gegevens te werken.`,en:`${n} addresses were changed in another tab. Adopt the changes to keep working with the latest data here.`}),actions:[{label:(0,i.Oj)({nl:"Negeren",en:"Ignore"}),onClick:e=>this.handleIgnore(e)},{label:(0,i.Oj)({nl:"Wijzigingen overnemen",en:"Adopt changes"}),onClick:e=>this.handleAdopt(e),primary:!0}]}:{id:"tab-sync",remove:!0})}handleUserUpdate(e){this.setState({user:e})}handleExportContacts(e){const{user:t}=this.state,{language:n,onMessage:a}=this.props,s=e.currentTarget.id;e&&e.preventDefault();let l={m:"addresses",nonce:r.A.get("nonce"),settings:{local:n.local},local:n.local};switch(s){case"labels":this.setView("Labels");break;case"email":this.setView("Emails");break;case"order":case"transparant":case"white":this.setView("Order-label");break;default:this.handlePromoMessage(),l.settings.format=s,window.open(this.host+"/response?json="+JSON.stringify(l))}return!1}handleLabelFilter(e,t){e.stopPropagation(),this.setState({search:"labels:"+t.toLowerCase()})}handleKill(e){e&&e.preventDefault();const{user:t}=this.state,n=r.A.get("nonce");(0,g.FH)("/response",{m:"kill",nonce:n}).then(e=>{if("killed"!==e.result)return this.showError({message:e.error});r.A.remove("addressbook",{domain:"."+document.location.hostname,path:"/"}),r.A.remove("nonce",{domain:"."+document.location.hostname,path:"/"}),document.location=this.host}).catch(()=>this.showError({message:"We hebben technische problemen op dit moment."}))}handleSearchState(e){e&&e.preventDefault();const t=e.currentTarget.value;this.setState({search:t})}handleSort(e,t){e&&e.preventDefault();const{sort:n}=this.state;"lastName"!=t||"dsc"!=n.direction||n.firstName?"lastName"==t&&"asc"==n.direction&&1==n.firstName?t="firstName":n.firstName=!1:(n.firstName=!0,t="firstName"),n.direction=n.key===t&&"asc"==n.direction?"dsc":"asc",n.key=t,this.setState({sort:n})}handleToggleEditMode(e){e&&e.preventDefault();const{addresses:t,editMode:n}=this.state;Object.keys(t).forEach(e=>{t[e].checked=!1}),this.setState({addresses:t,editMode:!n})}handleSelectAll(e){let{addresses:t}=this.state;e&&e.preventDefault(),Object.keys(t).forEach(e=>{t[e].checked=!0}),this.setState({addresses:t,editMode:!0})}handleChecked(e,t){const{addresses:n}=this.state;e&&e.preventDefault(),t&&n[t]&&(n[t].checked=!n[t].checked,this.setState({addresses:n}))}async handleDeleteSelected(e){let{addresses:t,user:n,editMode:a}=this.state;const{onMessage:s,language:l}=this.props;e&&e.preventDefault();const r=(0,g.k5)(t).filter(e=>!0===e.checked);s((0,i.Oj)({nl:"Adressen worden nu verwijderd uit jouw adresboek.",en:"Addresses are being deleted from your address book."}));let o=0,d=0;for(const e of r)try{const a=await(0,g.FH)("/response",{m:"delete",key:e._key,slug:n.slug,local:l.local});a&&a.address?(delete t[a.address.key],o++,this.sync.post(pe({key:a.address.key,action:"delete"}))):d++}catch(e){d++}this.setState({addresses:{...t},editMode:!1});const c=d>0?(0,i.Oj)({nl:` (${d} mislukt)`,en:` (${d} failed)`}):"";s((0,i.Oj)({nl:`${o} adressen verwijderd.`,en:`${o} addresses deleted.`})+c)}handlePromoMessage(){const{onMessage:e}=this.props;e((0,i.Oj)({nl:a.Ay.createElement(s.FK,null,"Je kan ook jouw adressen op adresetiketten ",a.Ay.createElement("a",{href:"#order-label"},"thuis laten bezorgen"),"!"),en:a.Ay.createElement(s.FK,null,"You can also have your addresses ",a.Ay.createElement("a",{href:"#order-label"},"delivered to your home")," on labels.")}))}setLayout(e){const{layoutMode:t}=this.state;if(e===t)return;const n={card:["minimum","band"],full:[]}[e],a=document.querySelector("html");he.forEach(e=>a.classList.toggle(e,n.includes(e))),this.setState({layoutMode:e})}addressesList(){const{addresses:e,search:t,sort:n,user:l,editMode:r}=this.state,{language:o}=this.props,c=[{label:"",key:null},{label:(0,i.Oj)({nl:"Adres",en:"Address"}),key:"to"},{label:(0,i.Oj)({nl:"Labels",en:"Labels"}),key:null},{label:(0,i.Oj)({nl:"Op naam",en:"By name"}),key:"lastName"},{label:(0,i.Oj)({nl:"Toegevoegd op",en:"Added on"}),key:"created"}];let m=(0,g.k5)(e);m=m.length>0?m.map(e=>{const t=(0,g.M0)(e,(0,g.Hw)(l.local));return{...e,...t}}):[];const u=a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"field row addressbook"},a.Ay.createElement("input",{type:"search",className:"search",placeholder:(0,i.Oj)({nl:"Zoeken…",en:"Search…"}),onKeyPress:e=>"Enter"!==e.key||e.preventDefault(),onChange:e=>this.handleSearchState(e),value:t,tabIndex:"0",enterKeyHint:"search"}),a.Ay.createElement("button",{onClick:e=>this.handleAddressAdd(e)},(0,i.Oj)({nl:"+ Voeg adres toe",en:"+ Add address"})),a.Ay.createElement("button",{className:"secondary first order paid",onClick:e=>this.handleOrderLabels(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Bestel op adresetiketten",en:"Order as labels"}))),a.Ay.createElement("button",{ref:e=>this.moreAnchor.current=e,className:"white more","aria-label":(0,i.Oj)({nl:"Meer opties",en:"More options"}),"aria-expanded":this.state.more,onClick:e=>{e.preventDefault(),this.setState({more:!this.state.more})}}
1,a.Ay.createElement("svg",{viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true"},a.Ay.createElement("circle",{cx:"5",cy:"12",r:"2"}),a.Ay.createElement("circle",{cx:"12",cy:"12",r:"2"}),a.Ay.createElement("circle",{cx:"19",cy:"12",r:"2"})),a.Ay.createElement("span",{className:"more-label"},(0,i.Oj)({nl:"Meer opties",en:"More options"}))),a.Ay.createElement(me.A,{open:this.state.more,onClose:()=>this.setState({more:!1}),anchorRef:this.moreAnchor,groups:[{items:[{icon:"upload",label:{nl:"Importeren",en:"Import"},onPick:()=>this.handleMore("Import")},...m.length>0?[{icon:"download",label:{nl:"Download adresboek",en:"Download"},onPick:()=>this.handleMore("Export")},{icon:"trash",label:r?{nl:"Annuleer verwijderen",en:"Cancel deleting"}:{nl:"Verwijder adressen",en:"Delete addresses"},onPick:e=>{this.setState({more:!1}),this.handleToggleEditMode(e)}}]:[]]}]})));let p=m.filter(e=>!0===e.checked)?.length;const y=r?a.Ay.createElement("div",{className:"field row end addressbook"},a.Ay.createElement("button",{className:"white",onClick:e=>this.handleSelectAll(e)},(0,i.Oj)({nl:"Selecteer alle",en:"Select all"})),a.Ay.createElement(h.A,{type:"submit",className:"warning",onClick:e=>{e.preventDefault(),this.setState({dialog:{title:(0,i.Oj)({nl:"Adressen verwijderen",en:"Delete addresses"}),message:(0,i.Oj)({nl:`Weet je zeker dat je ${p} adressen wilt verwijderen? Dit kan niet ongedaan worden.`,en:`Are you sure you want to delete ${p} addresses? This cannot be undone.`}),onConfirm:()=>{this.setState({dialog:null}),this.handleDeleteSelected(e)}}})}},(0,i.Oj)({nl:`Verwijder ${p} geselecteerde`,en:`Delete ${p} selected`})),a.Ay.createElement("a",{href:"#",className:"button text",onClick:e=>this.handleToggleEditMode(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Annuleer",en:"Cancel"})))):null,A=t.indexOf(":")>0,b=new RegExp("\\b"+t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"i");t&&(m=m.filter(e=>Object.keys(e).some(t=>Array.isArray(e[t])?e[t].some(e=>b.test((A?t+":":"")+e)):b.test((A?t+":":"")+e[t])))),n&&m.sort((e,t)=>e[n.key]&&t[n.key]?"asc"===n.direction?e[n.key].toString().localeCompare(t[n.key]):t[n.key].toString().localeCompare(e[n.key]):1);let v=m&&m.length>0?m.map((e,t)=>a.Ay.createElement(s.FK,null,a.Ay.createElement("tr",{key:`address-${e._key}`,onClick:t=>r?this.handleChecked(t,e._key):this.handleAddressEdit(t,e)},a.Ay.createElement("td",{className:"first-column"},r?a.Ay.createElement("div",{className:`checkmark ${e.checked?"checked":null}`}):`${t+1}.`),a.Ay.createElement("td",{className:"name"},a.Ay.createElement("div",{className:"address"},a.Ay.createElement("div",{className:"to"},e.to,e._key===l.settings.ownAddress?a.Ay.createElement("span",{className:"chip own-address"},(0,i.Oj)({nl:"Dit ben jij",en:"This is you"})):null),a.Ay.createElement("div",{className:"line1"},e.line1),a.Ay.createElement("div",{className:"line2"},e.line2),a.Ay.createElement("div",{className:"country"},e.country?e.country:""))),a.Ay.createElement("td",null,Array.isArray(e.labels)&&e.labels.length>0?a.Ay.createElement("div",{className:"input-labels-group"},e.labels.map(e=>a.Ay.createElement("div",{key:e,className:"input-label",onClick:t=>this.handleLabelFilter(t,e)},e.trim()))):null),a.Ay.createElement("td",{className:"owner",title:e.firstName+" "+e.lastName},e.firstName," ",e.lastName),a.Ay.createElement("td",null,a.Ay.createElement(d,{date:e.created}))))):null,E=c.map(e=>a.Ay.createElement("th",{key:e.label,className:e.key?"sort":"",onClick:t=>!!e.key&&this.handleSort(t,e.key)},e.label));const k=this.host+"/"+l.urlSlug+(0,i.Oj)({nl:"/voegtoe?",en:"/add?"})+(l.addKey?"key="+l.addKey:"")+"&h="+(0,g.sk)(l.title),f=this.commonShareInput(k,"intro");let w=(0,i.Oj)({nl:"Je hebt nog geen adressen verzameld. Deel onderstaande persoonlijke link met je contacten zodat zij hun adresgegevens kunnen toevoegen.",en:"You don't have any addresses yet. Share the personal link below with your contacts so they can add their address."});9==l.type&&(w=(0,i.Oj)({nl:`Je hebt nog geen adressen verzameld. Deel de onderstaande link met uw zakelijke contacten zodat zij gemakkelijk hun adresgegevens kunnen toevoegen aan het adresboek van ${l.business}.`,en:`You don't have any addresses yet. Share the link below with your business contacts so they can provide their address to the the address book for ${l.business}.`}));const j=a.Ay.createElement("div",{className:"zero-contacts"},a.Ay.createElement("p",null,w),a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"field"},f))),O=a.Ay.createElement("div",{className:"zero-contacts"},a.Ay.createElement("p",null,(0,i.Oj)({nl:"Geen zoekresultaten.",en:"No search results."}))),N=v?a.Ay.createElement("form",{className:"overflow"},a.Ay.createElement("table",{className:"table",translate:"no"},a.Ay.createElement("tbody",null,a.Ay.createElement("tr",{className:"header"},E),v))):t?O:j;return a.Ay.createElement(s.FK,null,a.Ay.createElement("div",{className:"addresses"},a.Ay.createElement("div",{className:"header"},a.Ay.createElement("form",null,u)),N,a.Ay.createElement("div",{className:"header actions"+(r?" sticky":"")},a.Ay.createElement("form",null,y))))}commonShareInput(e,t=""){return a.Ay.createElement(s.FK,null,a.Ay.createElement("input",{className:"copy",id:"url",onClick:e=>(0,g.Zt)(e,this.textInput[t]),ref:e=>{this.textInput[t]=e},defaultValue:e}),a.Ay.createElement("button",{className:"copy white",onClick:e=>(0,g.C)(e,this.textInput[t]).then(()=>{this.showError({message:(0,i.Oj)({nl:"De link is gekopieerd naar je klembord.",en:"The link has been copied to your clipboard"})})})},(0,i.Oj)({nl:"Kopieer",en:"Copy"})))}shareHeader(){const{user:e}=this.state,t=this.host+"/"+e.urlSlug+(0,i.Oj)({nl:"/voegtoe?",en:"/add?"})+(e.addKey?"key="+e.addKey:"")+"&h="+(0,g.sk)(e.title);let n=(0,i.Oj)({nl:"Verstuur jouw adresverzoek naar vrienden",en:"Request address from friends & family"});9==e.type&&(n=(0,i.Oj)({nl:"Verstuur jouw adresverzoek naar zakelijke contacten",en:"Request address from business contacts"}));let s=(0,i.Oj)({nl:"☝️ Ik ben adressen aan het verzamelen. Kan jij ook jouw adres toevoegen aan mijn Mailbook?\n\n",en:"☝️ I'm collecting addresses to 
1send out cards. Could you add yours? It takes a minute:\n\n"});9==e.type&&(s=(0,i.Oj)({nl:`☝️ Wij zijn adressen aan het verzamelen${e.business?` voor ${e.business}`:""}. Kan jij ook je contact gegevens toevoegen?\n\n`,en:`☝️ We're collecting addresses${e.business?` for ${e.business}`:""}. Could you add yours? It takes a minute:\n\n`})),12==e.type&&(s=(0,i.Oj)({nl:"☝️ Ik ben geslaagd! Ik stuur kaartjes rond. Kan jij je adres toevoegen, dan weet ik waar die van jou heen moet?\n\n",en:"☝️ I'm graduating! I'm sending out announcements. Could you add your address so I know where to send yours?\n\n"}));const l=navigator.share?a.Ay.createElement("button",{className:"white",onClick:e=>{e.preventDefault(),navigator.share({title:"Mailbook",text:s,url:t}).catch(()=>{})}},a.Ay.createElement("span",{className:/iPhone|Mac OS/.test(navigator.userAgent)?"link-ios":"link"}),(0,i.Oj)({nl:"Deel",en:"Share"})):null,r=a.Ay.createElement("button",{className:"white",onClick:e=>{e.preventDefault(),window.open("https://api.whatsapp.com/send?&text="+window.encodeURIComponent(s+" "+t))}},a.Ay.createElement("span",{className:"whatsapp"}),"WhatsApp"),o=a.Ay.createElement("button",{className:"white",onClick:e=>{e.preventDefault(),window.open("mailto:?body="+window.encodeURIComponent(s+" "+t))}},a.Ay.createElement("span",{className:"email"}),"Email"),d="us"==e.country?o:r;return a.Ay.createElement("div",{className:"share"},a.Ay.createElement("h2",null,a.Ay.createElement("label",{htmlFor:"url"},n)),a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"field"},this.commonShareInput(t,"header")),a.Ay.createElement("div",{className:"share-buttons"},l,d)))}renderSettings(){const{user:e}=this.state,{language:t,onMessage:n}=this.props;return a.Ay.createElement(J,{user:e,language:t,onUserUpdate:e=>this.handleUserUpdate(e),onMessage:n,onKill:()=>this.handleKill()})}renderRequestSettings(){const{user:e}=this.state,{language:t,onMessage:n}=this.props;return a.Ay.createElement(Q,{user:e,language:t,onUserUpdate:e=>this.handleUserUpdate(e),onMessage:n})}renderOwn(){const{user:e,addresses:t}=this.state;return a.Ay.createElement(X,{key:e.settings.ownAddress,user:e,addresses:t,onOwn:e=>this.handleOwnAddress(e),onResend:()=>(0,g.FH)("/response",{m:"verify-mail",nonce:r.A.get("nonce")})})}renderImport(){const{addresses:e,user:t}=this.state,{onMessage:n,language:s}=this.props;return a.Ay.createElement(se,{user:t,language:s,addresses:e,onAddressUpdate:e=>this.handleAddressesUpdate(e),onMessage:n})}renderEmails(){const{addresses:e,user:t}=this.state,{onMessage:n,language:s}=this.props;return a.Ay.createElement(oe,{user:t,language:s,addresses:e,onMessage:n})}renderLabels(){const{addresses:e,user:t}=this.state,{onMessage:n,language:s}=this.props;return a.Ay.createElement(ie,{user:t,language:s,addresses:e,onMessage:n,onPromoMessage:()=>this.handlePromoMessage()})}renderOrder(){const{addresses:e,user:t}=this.state,{onMessage:n,language:s}=this.props;return a.Ay.createElement(M,{user:t,language:s,addresses:e,onMessage:n,onUserUpdate:e=>this.handleUserUpdate(e)})}renderOrders(){const{user:e}=this.state,{language:t,onMessage:n}=this.props;return a.Ay.createElement($,{user:e,language:t,onMessage:n})}renderGifts(){const{user:e}=this.state,{language:t,onMessage:n}=this.props;return a.Ay.createElement(B,{user:e,language:t,onMessage:n,onUserUpdate:e=>this.handleUserUpdate(e)})}renderExport(){const e=a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"field"},a.Ay.createElement("ul",{className:"exports"},a.Ay.createElement("li",{id:"order",className:"paid",onClick:e=>this.handleExportContacts(e)},a.Ay.createElement("span",{className:"title"},(0,i.Oj)({nl:"Bestel adresetiketten",en:"Order address labels"})),a.Ay.createElement("span",null,(0,i.Oj)({nl:"Ontvang alle adressen per post thuis op witte of transparante labels.",en:"Order your addresses on white or transparent labels delivered to your home."}))),a.Ay.createElement("li",{id:"xlsx",onClick:e=>this.handleExportContacts(e)},a.Ay.createElement("span",{className:"title"},(0,i.Oj)({nl:"Download Excel bestand",en:"Download Excel file"})),a.Ay.createElement("span",null,(0,i.Oj)({nl:"De adressen in een bestand dat je kan openen en bewerken met Excel, Numbers of Google Sheets.",en:"Your addresses in a file which you can open and edit in Excel, Numbers or Google Sheets."}))),a.Ay.createElement("li",{id:"labels",onClick:e=>this.handleExportContacts(e)},a.Ay.createElement("span",{className:"title"},(0,i.Oj)({nl:"Download adresetiketten bestand",en:"Download address labels file"})),a.Ay.createElement("span",null,(0,i.Oj)({nl:"De adressen zelf gemakkelijk printen op adresetiketten.",en:"Print your addresses on labels yourself."}))),a.Ay.createElement("li",{id:"email",onClick:e=>this.handleExportContacts(e)},a.Ay.createElement("span",{className:"title"},(0,i.Oj)({nl:"Download als e-mailadressen lijst",en:"Download as email addresses list"})),a.Ay.createElement("span",null,(0,i.Oj)({nl:"De e-mailadressen als lijst om gemakkelijk een e-mail te versturen naar je adresboek.",en:"All email addresses listed to easily send out an email to your address book."}))))),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("a",{href:"#",className:"button text",onClick:e=>this.handleAddressbook(e)},a.Ay.createElement("span",null,(0,i.Oj)({nl:"Terug",en:"Back"})))));return a.Ay.createElement(u.A,{title:(0,i.Oj)({nl:"Download jouw adresboek",en:"Download your address book"})},e)}renderAdd(){const{user:e}=this.state,{onMessage:t,language:n}=this.props,s=/^#?add-own/i.test(document.location.hash),l=s?{firstName:e.firstName,lastName:e.lastName,email:e.email}:{};return a.Ay.createElement(c.A,{key:s?"own":"add",user:e,address:l,own:s,onOwn:e=>this.handleOwnAddress(e),onMessage:t,onAddressUpdate:e=>this.handleAddressesUpdate(e)})}handleMore(e){this.setState({more:!1}),this.setView(e)}handleOwnAddress(e){const t={...this.state.user,settings:{...this.state.user.settings,ownAddress:e}};(0,g.FH)("/response",{m:"update",nonce:r.A.get("nonce"),user:t}).then(e=>{e.success&&(t.local=e.local,this.handleUserUpdate(t),this.props.onMessage(e.verifyMail?(0,i.Oj)({nl:"Je eigen adres is opgeslagen. We hebben je een mail gestuurd om je e-mailadres te bevestigen.",en:"Your own address is saved. We sent you a mail to confirm your e-mail address."}):(0,i.Oj)({nl:"Je eigen adres is opgeslagen",en:"Your own address is saved"}))),document.location.hash="own"})}currentAddress(){return(0,g.ou)(this.state.addresses)}
1renderRequest(){const{user:e}=this.state,{onMessage:t}=this.props,n=this.currentAddress();return a.Ay.createElement(c.A,{decor:!0,user:e,key:n?n.key:null,address:n,onMessage:t,onAddressUpdate:e=>this.handleAddressesUpdate(e)})}renderEdit(){const{user:e}=this.state,{onMessage:t}=this.props,n=this.currentAddress();return a.Ay.createElement(c.A,{user:e,key:n?n.key:null,address:n,onMessage:t,onAddressUpdate:e=>this.handleAddressesUpdate(e)})}renderView(){const{addresses:e,user:t}=this.state;if(!t.slug)return"Invalid page";if(!t.key)return this.renderRequest();const n=a.Ay.createElement(de.A,{placing:"header",addresses:e,user:t,onUserUpdate:e=>this.handleUserUpdate(e),onMessage:this.props.onMessage}),l=a.Ay.createElement(de.A,{placing:"footer",addresses:e,user:t}),r=this.shareHeader(),i=this.addressesList();return a.Ay.createElement(s.FK,null,r,n,i,l)}hideError(){this.showError({message:null,error:{}})}showError(e){this.props.onMessage(e.message)}layoutFor(e){return"View"===e?"full":"card"}switchView(){const e=this.getView();this.setLayout(this.layoutFor(e));try{return this["render"+e]()}catch(t){return console.log(t,e),this.renderView()}}render(){const{dialog:e,user:t}=this.state,n=this.switchView(),l="card"===this.layoutFor(this.getView());return a.Ay.createElement(s.FK,null,l&&t.key&&4!==Number(t.type)?a.Ay.createElement(le.A,{type:t.type}):null,n,e?a.Ay.createElement(u.A,{dialog:!0,onHide:()=>this.setState({dialog:null}),title:e.title},a.Ay.createElement("form",null,a.Ay.createElement("div",{className:"call-out"},e.message),a.Ay.createElement("div",{className:"field row end"},a.Ay.createElement("button",{type:"button",className:"white",onClick:()=>this.setState({dialog:null})},(0,i.Oj)({nl:"Annuleren",en:"Cancel"})),a.Ay.createElement(h.A,{className:"warning",onClick:e.onConfirm},(0,i.Oj)({nl:"Verwijderen",en:"Delete"}))))):null)}}ye.propTypes={user:l.A.object,addresses:l.A.object,onMessage:l.A.func,view:l.A.string},ye.defaultProps={user:{},addresses:{},onMessage:()=>{},view:"View"};var ge=(0,i.lB)(ye)}}]);

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.