{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/button-loader/button-loader.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/button-loader/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/newsletter-form/newsletter-constraints.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/newsletter-form/newsletter-form.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/newsletter-form/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/shipping-form/gift-constraints.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/add-alert-message/add-alert-message.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/add-alert-message/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/create-message-string/create-message-string.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/create-message-string/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/api-error-handler/api-error-handler.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/api-error-handler/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/error-handler/error-handler.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/error-handler/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/serialize-object/serialize-object.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/serialize-object/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/date-nl.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/has-house-number.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/house-number.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/house-number-addition.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/is-eighteen.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/email-exists.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/min-age.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/checked.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/validators/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/helpers/single-async-validator.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/form/form.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/form/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/gtmFooterSubscribeButtonClick.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parse-json/parse-json.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/parse-json/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/store/lib/component.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/store/store/store.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/only-words.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/password.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/ean.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/date-nl.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/email.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/phone.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/zipcode.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/house-number.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/house-number-addition.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/names.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/cd.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/pec.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/address.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/validation/regex/index.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/validate.js/validate.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/module.js"],"names":["SUCCESS_CLASS","SUCCESS_TIMER","ButtonLoader","constructor","element","shouldAnimate","show","classList","add","remove","setAttribute","Events","$trigger","data","target","hide","showSucces","removeAttribute","focus","setTimeout","newsletterConstraints","customValidationMessages","dwfrm_register_privacyTerms","presence","allowEmpty","dwfrm_register_profile_customer_subscribe","dwfrm_newsletter_email","email","length","dwfrm_profile_customer_email","maximum","dwfrm_newsletter_companyName","dwfrm_newsletter_firstname","format","dwfrm_profile_customer_firstname","pattern","validation","names","dwfrm_newsletter_lastname","dwfrm_profile_customer_lastname","dwfrm_contact_country","JS_HOOK_NEWSLETTER_ALERT","JS_HOOK_NEWSLETTER_FORM_FIELDS_WRAPPER","JS_HOOK_NEWSLETTER_WRAPPER","JS_HOOK_NEWSLETTER_BUTTON","JS_HOOK_NEWSLETTER_TEXT_WRAPPER","JS_HOOK_CONSENT_ONE","JS_HOOK_CONSENT_TWO","HIDDEN_CLASS","NEWSLETTER_TEXT_WRAPPER_OPENED","NewsletterForm","Form","clickedEl","affectedEl","checked","messageSelector","fieldsWrapper","form","querySelector","modalId","dataset","newsletterFormWrapper","document","newsletterButton","newsletterTextWrapper","consent1","consent2","initConstraints","_bindEvents","bindChangeEvents","bindSubmitEvents","addEventListener","$on","updateFields","emailFormField","getElementById","emailPrefillField","value","constraints","afterSubmitFormSuccess","receivedMsgBody","success","gtmFooterSubscribeButtonClick","addAlertMessage","message","hook","type","reset","ScrollTo","scrollTo","giftConstraints","dwfrm_gift_firstName","dwfrm_gift_lastName","dwfrm_gift_giftMessage","dwfrm_gift_email","JS_HOOK_MESSAGE","JS_HOOK_CONTENT","scroll","selector","status","el","content","innerHTML","variantClass","className","replace","contains","offset","createMessageString","errors","errorHtml","forEach","error","apiErrorHandler","redirectUrl","window","location","href","serverErrors","errorMessage","responseJSON","errorHandler","response","Error","serializeObject","elements","serialized","i","field","name","disabled","dateNL","options","day","month","year","split","m","parseInt","d","y","date","Date","validDate","getFullYear","getMonth","getDate","hasHouseNumber","hasNumber","test","houseNumber","validHouseNumber","regex","houseNumberRegex","slice","match","houseNumberAndAddition","validHouseAndAddition","houseNumberAdditionRegex","isEighteen","is18OrOlder","JS_HOOK_EMAIL_EXISTS_MSG","JS_HOOK_NEW_CUSTOMER_MSG","emailExists","key","validate","Promise","resolve","formItem","fieldset","closest","emailExistsMsg","newCustomerMsg","showEmailExistsMsg","showNewCustomerMsg","checkEmailExistsSuccess","exists","params","API","post","endpoint","then","catch","minAge","birthDate","age","singleAsyncValidator","async","single","newOptions","extend","fullMessages","JS_HOOK_DEFAULT_SUBMIT","ALERT_SELECTOR","FORM_SELECTOR","INPUT_TYPES","FORM_ITEM_CLASS","FORM_ITEM_WARN_CLASS","FORM_ITEM_ERROR_CLASS","FORM_ITEM_ERROR_ARIA","FORM_ITEM_DESCRIBE_ARIA","FORM_ITEM_SUCCESS_CLASS","FORM_ITEM_ERROR_MESSAGE_HOOK","REGEX_REMOVE_NEWLINES_AND_WHITESPACE","Component","store","getAttribute","gtmObj","formSelector","class","inputTypes","warnClass","errorClass","errorAria","describeAria","successClass","defaultValidators","getDefaultValidators","getCustomValidationMessages","customConstraints","buttonLoaders","defaultSubmit","initInputs","init","bindEvents","setInitialValidators","debounceSingleFieldValidation","debounce","input","singleFieldValidation","changeListener","keyupListener","inputs","querySelectorAll","updateInputs","obj","_constraints","initButtonLoaders","addButtonLoader","hideButtonLoaders","loader","push","getButtonElement","tagName","toLowerCase","parseDefaults","defaults","parseJSON","Object","keys","validators","customValidators","processServerErrors","fieldErrors","showErrors","submitFormSuccess","afterSubmitFormError","JSON","parse","submitFormError","simpleAfterSubmitFormError","preSubmitForm","submitForm","serializeForm","validateFormSuccess","event","currentTarget","validateFormError","validateForm","preventDefault","errorKeys","isAnyError","some","fatalError","getErrorData","validateSingle","custom","inputValue","id","preValidateFields","validateFields","filter","items","collectFormValues","actualConstraints","item","singleFieldValidationSuccess","showSuccessForInput","singleFieldValidationError","showErrorsForInput","numberFieldContainsText","scrolledToError","offsetParent","getErrorContainer","hasAttribute","formItemErrorContainer","resetFormItem","warning","textContent","labelContent","trim","errorId","map","eventName","keyCode","getErrorMessage","errorData","errorList","Array","find","warn","subscribe","newsletterSubscriptionForm","userType","action","user_type","subscribeButton","json","defaultValue","parsed","e","props","watch","watchCollection","stateChanged","Store","state","prevState","prop","callback","newState","previousPropState","newPropState","isArray","undefined","actions","mutations","callbacks","self","Proxy","initialState","set","processCallbacks","console","String","dispatch","actionKey","payload","dispatchWithPromise","reject","_state","_prevState","cb","commit","mutationKey","assign","onlyWords","password","ean","emailRegex","phoneRegex","zipCodeRegex","zipCodeRegexStreetOptional","houseNumberAddition","cd","pec","addressRegex","dateNLRegex","eanRegex","onlyWordsRegex","passwordRegex","zipCode","cdRegex","pecRegex"],"mappings":"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AEA;;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;;ACRA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;AClBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,UAAU,mBAAO,CAAC,2CAAO;AACzB,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC5BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;;AAEA,kCAAkC,6BAA6B,EAAE;AACjE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,MAAM,GAAG,MAAM,GAAG,MAAM;AAC1D;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,4DAA4D;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,KAAK,IAAI,oBAAoB;AAC/E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP,mDAAmD,OAAO;AAC1D;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP,KAAK;;AAEL;AACA,2BAA2B;AAC3B;AACA;AACA,OAAO;AACP,gBAAgB,cAAc,GAAG,oBAAoB;AACrD,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO,6BAA6B,KAAK,EAAE,GAAG;AAC9C,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,sBAAsB,IAAI,IAAI,WAAW;AACzC;AACA,8BAA8B,IAAI;AAClC,2CAA2C,IAAI;AAC/C,mBAAmB,IAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL,iBAAiB,IAAI;AACrB,6BAA6B,KAAK,KAAK;AACvC,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,oCAAoC,sBAAsB,EAAE;AAC5D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,eAAe;AACf,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,SAAS,6BAA6B;AACtC;AACA,SAAS,mBAAmB,GAAG,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,UAAU,WAAW;AACrD,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B,cAAc,aAAa;AACvD,OAAO;AACP;AACA,KAAK;;AAEL;AACA,SAAS,kCAAkC;AAC3C;AACA,QAAQ,qBAAqB,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA,SAAS,0BAA0B,GAAG,0BAA0B;AAChE;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;AACpD;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,kCAAkC,iBAAiB,EAAE;AACrD;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA;AACA,0DAA0D,YAAY;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C,MAAM;AAClD,mCAAmC,UAAU;AAC7C;;AAEA;AACA;AACA;AACA,sCAAsC,MAAM;AAC5C,mCAAmC,eAAe;AAClD;;AAEA;AACA;AACA;AACA,qCAAqC,MAAM;AAC3C,mCAAmC,eAAe;AAClD;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA,kDAAkD,cAAc,EAAE;AAClE,kDAAkD,eAAe,EAAE;AACnE,kDAAkD,gBAAgB,EAAE;AACpE,kDAAkD,cAAc,EAAE;AAClE,kDAAkD,eAAe,EAAE;AACnE,kDAAkD,oBAAoB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK,GAAG,MAAM;;AAErC;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,KAAK;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,2BAA2B,YAAY,eAAe;AACtD;AACA,KAAK;AACL;AACA;AACA,mBAAmB;AACnB;;AAEA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,gCAAgC,aAAa;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2DAA2D,MAAM;AACjE;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C,KAAK;AACL;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0CAA0C,EAAE,+BAA+B,EAAE,2NAA2N,EAAE;AAC1S,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;AACA,2BAA2B;AAC3B;AACA;AACA,2BAA2B,UAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,uCAAuC;AACzE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C,GAAG;;AAElD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kCAAkC,IAAI,EAAE,EAAE;AAC1C,+CAA+C,IAAI,EAAE,EAAE;AACvD,oDAAoD,IAAI,EAAE,EAAE;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,IAAI,qBAAqB,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,IAAI;AACrB;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mFAAmF,KAAK;;AAExF;AACA;AACA;;AAEA,kCAAkC,6CAA6C;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,yDAAyD,8FAAM;AAC/D,CAAC;AACD,QAAQ,KAA8B,wCAAwC,SAAI;AAClF,QAAQ,KAA6B,uCAAuC,SAAI;AAChF,QAAQ,8FAAwE;;;;;;;;;;;;;;ACpuChF;AACA;AACA;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA","file":"js/NewsletterForm.js","sourcesContent":["import Events from '@utilities/events';\n\nconst SUCCESS_CLASS = 'is--success';\nconst SUCCESS_TIMER = 3000;\n\nclass ButtonLoader {\n constructor(element, shouldAnimate = true) {\n this.element = element;\n this.shouldAnimate = shouldAnimate;\n }\n\n /**\n * Shows the loader\n */\n show() {\n if (!this.element) return;\n this.element.classList.add('disabled');\n this.element.classList.remove(SUCCESS_CLASS);\n this.element.setAttribute('disabled', 'disabled');\n this.element.setAttribute('tabindex', '-1');\n if (this.shouldAnimate) Events.$trigger('loader::show', { data: { target: this.element } });\n }\n\n /**\n * Hides the loader\n */\n hide(showSucces = false) {\n if (!this.element) return;\n if (this.shouldAnimate) Events.$trigger('loader::hide');\n this.element.classList.remove('disabled');\n this.element.removeAttribute('disabled');\n this.element.removeAttribute('tabindex');\n if (this.shouldAnimate) this.element.focus();\n\n if (showSucces) {\n this.element.classList.add(SUCCESS_CLASS);\n setTimeout(() => {\n this.element.classList.remove(SUCCESS_CLASS);\n }, SUCCESS_TIMER);\n }\n }\n}\n\nexport default ButtonLoader;\n","import ButtonLoader from './button-loader'\n\nexport default ButtonLoader\n","// import idx from \"idx\";\n// import validation from \"@utilities/validation/regex\";\n\nimport idx from \"idx\";\nimport validation from \"@utilities/validation/regex\";\n\nconst newsletterConstraints = (customValidationMessages) => ({\n dwfrm_register_privacyTerms: {\n presence: {\n allowEmpty: false\n }\n },\n dwfrm_register_profile_customer_subscribe: {\n presence: {\n allowEmpty: false\n },\n },\n dwfrm_newsletter_email: {\n email: true,\n presence: {\n allowEmpty: false\n },\n length: {\n ...idx(customValidationMessages, (_) => _.dwfrm_profile_customer_email.length),\n maximum: 50,\n }\n },\n dwfrm_newsletter_companyName: {\n presence: {\n allowEmpty: false\n },\n length: {\n ...idx(customValidationMessages, (_) => _.dwfrm_profile_customer_email.length),\n maximum: 50,\n }\n },\n dwfrm_newsletter_firstname: {\n presence: {\n allowEmpty: false\n },\n format: {\n ...idx(customValidationMessages, (_) => _.dwfrm_profile_customer_firstname.format),\n pattern: validation.names,\n }\n },\n dwfrm_newsletter_lastname: {\n presence: {\n allowEmpty: false\n },\n format: {\n ...idx(customValidationMessages, (_) => _.dwfrm_profile_customer_lastname.format),\n pattern: validation.names,\n }\n },\n dwfrm_contact_country: {\n presence: {\n allowEmpty: false\n }\n }\n});\n\nexport default newsletterConstraints;\n","import Form from '@utilities/form';\nimport addAlertMessage from '@utilities/errors/add-alert-message';\nimport ScrollTo from \"@utilities/scroll-to\";\nimport Events from \"@utilities/events\";\nimport gtmFooterSubscribeButtonClick from '@utilities/gtmFooterSubscribeButtonClick';\nimport newsletterConstraints from './newsletter-constraints';\n\nconst JS_HOOK_NEWSLETTER_ALERT = '[js-hook-newsletter-alert]';\nconst JS_HOOK_NEWSLETTER_FORM_FIELDS_WRAPPER = '[js-hook-newsletter-form-fields-wrapper]';\nconst JS_HOOK_NEWSLETTER_WRAPPER = '[js-hook-newsletter-form-wrapper]';\nconst JS_HOOK_NEWSLETTER_BUTTON = '[js-hook-newsletter-button]';\nconst JS_HOOK_NEWSLETTER_TEXT_WRAPPER = '[js-hook-newsletter-text-wrapper]';\nconst JS_HOOK_CONSENT_ONE = '[js-hook-consent-one]';\nconst JS_HOOK_CONSENT_TWO = '[js-hook-consent-two]';\n\nconst HIDDEN_CLASS = 'u-hidden';\nconst NEWSLETTER_TEXT_WRAPPER_OPENED = 'is--open'\n\n/**\n * Used to handle newsletter requests from user\n *\n * @class NewsletterForm\n * @extends {Form}\n */\nclass NewsletterForm extends Form {\n constructor(element) {\n super(element);\n\n this.messageSelector = JS_HOOK_NEWSLETTER_ALERT;\n this.fieldsWrapper = this.form.querySelector(JS_HOOK_NEWSLETTER_FORM_FIELDS_WRAPPER);\n this.modalId = this.form.dataset.modalId;\n this.newsletterFormWrapper = document.querySelector(JS_HOOK_NEWSLETTER_WRAPPER)\n this.newsletterButton = document.querySelector(JS_HOOK_NEWSLETTER_BUTTON);\n this.newsletterTextWrapper = document.querySelector(JS_HOOK_NEWSLETTER_TEXT_WRAPPER);\n this.consent1 = document.querySelector(JS_HOOK_CONSENT_ONE);\n this.consent2 = document.querySelector(JS_HOOK_CONSENT_TWO);\n\n // Init constraints\n this.initConstraints();\n\n // Events: Submit & Change Events\n this._bindEvents();\n this.bindChangeEvents();\n this.bindSubmitEvents();\n }\n\n _bindEvents() {\n if (this.newsletterButton !== null) {\n this.newsletterButton.addEventListener('click', () => {\n this.newsletterButton.classList.add(HIDDEN_CLASS);\n this.newsletterTextWrapper.classList.add(NEWSLETTER_TEXT_WRAPPER_OPENED);\n this.newsletterFormWrapper.classList.remove(HIDDEN_CLASS);\n }, false);\n }\n\n if (this.consent1 && this.consent2) {\n this.consent1.addEventListener('change', ()=>{\n if (this.consent1.checked){\n this.consent2.removeAttribute('disabled');\n }else{\n this.consent2.setAttribute('disabled', 'disabled');\n this.consent2.removeAttribute('checked');\n }\n });\n }\n\n if (this.modalId) {\n Events.$on('modal::opened[newsletter-form-modal]', () => NewsletterForm.updateFields());\n }\n }\n\n static updateFields() {\n const emailFormField = document.getElementById('dwfrm_newsletter_email');\n const emailPrefillField = document.getElementById('newsletter-email-toggle-field');\n\n emailFormField.value = emailPrefillField ? emailPrefillField.value : '';\n }\n\n // Allow second consent only when first is accepted\n updateProfileCheckbox = (clickedEl, affectedEl) => {\n if(clickedEl.target.checked) {\n affectedEl.removeAttribute('disabled');\n } else {\n affectedEl.checked = false;\n affectedEl.setAttribute('disabled', 'disabled');\n }\n }\n\n /**\n * Init constraints for form validation for validate.js\n */\n initConstraints() {\n this.constraints = newsletterConstraints(this.customValidationMessages);\n }\n\n afterSubmitFormSuccess({receivedMsgBody, success}) {\n if(receivedMsgBody && success) {\n gtmFooterSubscribeButtonClick(true);\n addAlertMessage({ message: receivedMsgBody, hook: this.messageSelector, type: 'success' });\n this.fieldsWrapper.classList.add(HIDDEN_CLASS);\n this.form.reset();\n this.newsletterTextWrapper.classList.remove(NEWSLETTER_TEXT_WRAPPER_OPENED);\n\n ScrollTo.scrollTo(this.form, 350, 180);\n }\n }\n}\n\nexport default NewsletterForm;\n","import NewsletterForm from './newsletter-form'\n\nexport default NewsletterForm\n","const giftConstraints = function () {\n\n const constraints = {\n dwfrm_gift_firstName: {\n presence: {\n allowEmpty: false,\n },\n },\n\n dwfrm_gift_lastName: {\n presence: {\n allowEmpty: false,\n },\n },\n\n dwfrm_gift_giftMessage: {\n presence: {\n allowEmpty: false,\n },\n },\n\n dwfrm_gift_email: {\n presence: {\n allowEmpty: false,\n },\n email: true,\n }\n }\n\n return constraints;\n};\n\nexport default giftConstraints;\n","import Events from '@utilities/events'\n\nconst JS_HOOK_MESSAGE = '[js-hook-message]'\nconst JS_HOOK_CONTENT = '[js-hook-alert-content]'\n\n/**\n * Add alert message to page\n *\n * @param {String} message - the message string to show\n * @param {String} hook - [js-hook-message] or custom hook\n * @param {String} type - success, warning or error type\n */\nconst addAlertMessage = function ({ message, hook, type, scroll = false }) {\n const selector = hook || JS_HOOK_MESSAGE\n const status = type || 'error'\n\n const el = document.querySelector(selector)\n\n if (!el) return\n const content = el.querySelector(JS_HOOK_CONTENT)\n content.innerHTML = message\n\n // Add classes and show\n const variantClass = `alert--${status}`;\n el.className = el.className.replace(/(?:^|\\W)alert--(\\w+)(?!\\w)/g, ` ${variantClass}`)\n if(!el.classList.contains(variantClass)) el.classList.add(variantClass)\n el.classList.remove('u-hidden')\n el.removeAttribute('aria-hidden')\n el.focus()\n\n // Scroll to alert\n if (!el.classList.contains('is--relative') && !scroll) return\n Events.$trigger('scroll-to::scroll', {\n data: {\n target: el,\n offset: 130,\n },\n })\n}\nexport default addAlertMessage\n","import addAlertMessage from './add-alert-message'\n\nexport default addAlertMessage\n","const createMessageString = function (errors) {\n let errorHtml = ''\n errors.forEach((error) => {\n errorHtml += `
${error}
`\n })\n return errorHtml\n}\nexport default createMessageString\n","import createMessageString from './create-message-string'\n\nexport default createMessageString\n","import createMessageString from '@utilities/errors/create-message-string'\nimport addAlertMessage from '../add-alert-message'\n\n/**\n * Process API error\n *\n * @param {Object|String} error - error message\n * @param {string} selector - error message selector\n */\nconst apiErrorHandler = function (error, selector) {\n if (!error) return\n const { redirectUrl } = error\n if (redirectUrl) {\n window.location.href = redirectUrl\n } else if (error.serverErrors && error.serverErrors.length) {\n addAlertMessage({\n message: createMessageString(error.serverErrors),\n hook: selector,\n type: 'error',\n scroll: 'true'\n })\n } else {\n const errorMessage = error.errorMessage || error.message || error.responseJSON\n if (!errorMessage) return\n addAlertMessage({ message: errorMessage, hook: selector, type: 'error', scroll: 'true' })\n }\n}\n\nexport default apiErrorHandler\n","import apiErrorHandler from './api-error-handler'\n\nexport default apiErrorHandler\n","import idx from 'idx'\nimport Events from '@utilities/events'\nimport apiErrorHandler from '../api-error-handler'\n\n/**\n * Process errors from API or JS errors\n *\n * @param {Object} error - error message\n */\nconst errorHandler = function (error) {\n Events.$trigger('loader::hide')\n const data = idx(error, (_) => _.response.data)\n if (data) {\n apiErrorHandler(data)\n } else {\n throw new Error(`JAVASCRIPT ERROR: ${error}`)\n }\n}\n\nexport default errorHandler\n","import errorHandler from './error-handler'\n\nexport default errorHandler\n","/**\n * Serialize all form data into an Object\n * @param {Node} form The form to serialize\n * @return {Object} The serialized form obbject\n */\nconst serializeObject = function (form) {\n if (!form || !form.elements) return ''\n\n // Setup our serialized data\n const serialized = {}\n\n // Loop through each field in the form\n for (let i = 0; i < form.elements.length; i++) {\n const field = form.elements[i]\n\n // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\n if (\n !field.name ||\n field.disabled ||\n field.type === 'file' ||\n field.type === 'reset' ||\n field.type === 'submit' ||\n field.type === 'button'\n ) {\n /* eslint-disable-next-line */\n continue\n }\n\n // Convert field data to a query string\n if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {\n serialized[field.name] = field.value\n }\n }\n\n return serialized\n}\nexport default serializeObject\n","import serializeObject from './serialize-object'\n\nexport default serializeObject\n","/**\n * Check if a date is valid\n * @param {String} value | input value\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst dateNL = function (value, options) {\n if (!value) return null\n const [day, month, year] = value.split('-')\n // This instruction will create a date object\n const m = parseInt(month, 10) - 1\n const d = parseInt(day, 10)\n const y = parseInt(year, 10)\n const date = new Date(y, m, d)\n const validDate = date.getFullYear() === y && date.getMonth() === m && date.getDate() === d\n if (day && month && year && !validDate) {\n return options.message\n }\n return null\n}\nexport default dateNL\n","/**\n * Custom validator for valid house number\n * @param {String} value | input value\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst hasHouseNumber = function (value, options) {\n const hasNumber = /\\d+/.test(value)\n if (!hasNumber) {\n return options\n }\n return null\n}\nexport default hasHouseNumber\n","import regex from '../regex'\n\n/**\n * Custom validator for valid house number\n * @param {String} value | input value\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst houseNumber = function (value, options) {\n const validHouseNumber =\n value &&\n regex.houseNumberRegex.test(value) &&\n value.length <= 10 &&\n !value.slice(-1).match(/[a-zA-Z]/i)\n if (!validHouseNumber) {\n return options.message\n }\n return null\n}\nexport default houseNumber\n","import regex from '../regex'\n\n/**\n * Custom validator for valid house number + addition\n * @param {String} value | input value\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst houseNumberAndAddition = function (value, options) {\n const validHouseAndAddition =\n value &&\n regex.houseNumberRegex.test(value) &&\n value.length <= 10 &&\n !regex.houseNumberAdditionRegex.test(value)\n if (!validHouseAndAddition) {\n return options.message\n }\n return null\n}\nexport default houseNumberAndAddition\n","/**\n * Check if person is 18 years or older\n * @param {String} value | input value\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst isEighteen = function (value, options) {\n if (!value) return null\n const [day, month, year] = value.split('-')\n const is18OrOlder =\n new Date(parseInt(year, 10) + 18, parseInt(month, 10) - 1, parseInt(day, 10)) <= new Date()\n if (day && month && year && !is18OrOlder) {\n return options.message\n }\n return null\n}\nexport default isEighteen\n","import validate from 'validate.js'\nimport API from 'storefront/utilities/api'\n\nconst JS_HOOK_EMAIL_EXISTS_MSG = '[js-hook-order-account-email-exists]'\nconst JS_HOOK_NEW_CUSTOMER_MSG = '[js-hook-order-account-new-customer]'\nconst HIDDEN_CLASS = 'u-hidden'\n\n/**\n * Custom validator to check if email exists\n * @param {String} value | input value\n * @param {Object} options\n * @returns {Promise} returns resolved promise with message\n */\nconst emailExists = function (value, options, key) {\n return new validate.Promise((resolve) => {\n const formItem = document.querySelector(`[name$='${key}']`)\n const fieldset = formItem.closest('fieldset')\n // const emailMessages = fieldset.querySelector(JS_HOOK_EMAIL_MESSAGES);\n const emailExistsMsg = fieldset.querySelector(JS_HOOK_EMAIL_EXISTS_MSG)\n const newCustomerMsg = fieldset.querySelector(JS_HOOK_NEW_CUSTOMER_MSG)\n // if (!value) resolve();\n\n function showEmailExistsMsg() {\n emailExistsMsg.classList.remove(HIDDEN_CLASS)\n newCustomerMsg.classList.add(HIDDEN_CLASS)\n }\n\n function showNewCustomerMsg() {\n newCustomerMsg.classList.remove(HIDDEN_CLASS)\n emailExistsMsg.classList.add(HIDDEN_CLASS)\n }\n\n function checkEmailExistsSuccess(data) {\n if (data && data.exists) {\n showEmailExistsMsg()\n } else {\n showNewCustomerMsg()\n }\n resolve()\n }\n\n const params = {\n email: value,\n }\n\n API.post(options.endpoint, params)\n .then((response) => checkEmailExistsSuccess(response.data))\n .catch(() => resolve())\n })\n}\nexport default emailExists\n","/**\n * Check if birth date exceeds the minimum to prevent unrealistic birth dates\n * @param {String} value - input value: date (format: 01-02-1993)\n * @param {Object} options - message - feedback message\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst minAge = function (value, options) {\n if (!value || !options.message) return null\n\n const [day, month, year] = value.split('-')\n\n if (!day || !month || !year) return null\n\n const birthDate = new Date(+year, month - 1, +day)\n const age = new Date() - birthDate\n\n // Check if age is older dan 120 years\n if (!birthDate || age > 120 * 365 * 24 * 60 * 60 * 1000) return options.message\n\n return null\n}\n\nexport default minAge\n","/**\n * Custom validator for valid checkbox\n * @param {String} value | input checked\n * @param {Object} options\n * @returns {String|null} returns null which validates as true in validate.js or an error string\n */\nconst checked = function (value, options) {\n const message = options && options.message ? options.message : this.options.message\n if (value !== true) {\n return message\n }\n return null\n}\n\nexport default checked\n","/**\n * Custom validators\n */\nimport dateNL from './date-nl'\nimport hasHouseNumber from './has-house-number'\nimport houseNumber from './house-number'\nimport houseNumberAndAddition from './house-number-addition'\nimport isEighteen from './is-eighteen'\nimport emailExists from './email-exists'\nimport minAge from './min-age'\nimport checked from './checked'\n\nexport default {\n dateNL,\n emailExists,\n houseNumberAndAddition,\n houseNumber,\n hasHouseNumber,\n isEighteen,\n minAge,\n checked,\n}\n","import validate from 'validate.js'\n\n/**\n * Add an async single validate function to ValidateJS\n * Extend ValidateJS core functionality\n */\nconst singleAsyncValidator = () => {\n validate.async.single = function (value, constraints, options) {\n const key = options.key || 'single'\n const newOptions = validate.extend({}, validate.single.options, options, {\n format: 'flat',\n fullMessages: false,\n })\n return validate.async({ [key]: value }, { [key]: constraints }, newOptions)\n }\n}\nexport default singleAsyncValidator\n","import validate from 'validate.js';\nimport debounce from 'lodash/debounce';\nimport API from '@utilities/api';\nimport parseJSON from '@utilities/parse-json';\nimport serializeObject from '@utilities/serialize-object';\nimport Events from '@utilities/events';\nimport errorHandler from '@utilities/errors/error-handler';\nimport customValidators from '@utilities/validation/validators';\nimport ButtonLoader from '@components/button-loader';\nimport apiErrorHandler from '@utilities/errors/api-error-handler';\nimport singleAsyncValidator from '@utilities/validation/helpers/single-async-validator';\nimport Component from '@utilities/store/lib/component';\nimport giftConstraints from '../../components/shipping-form/gift-constraints';\n\nconst JS_HOOK_DEFAULT_SUBMIT = '[type=\"submit\"]:not(.u-sr-only)';\nconst ALERT_SELECTOR = '[js-hook-message]';\nconst FORM_SELECTOR = '.c-form';\nconst INPUT_TYPES =\n 'input[name]:not(:disabled):not([type=\"hidden\"]):not([data-ignored]), textarea[name]:not([data-ignored]), select[name]:not([data-ignored])';\nconst FORM_ITEM_CLASS = '.form__item';\nconst FORM_ITEM_WARN_CLASS = 'form__item--warn';\nconst FORM_ITEM_ERROR_CLASS = 'form__item--error';\nconst FORM_ITEM_ERROR_ARIA = 'aria-invalid';\nconst FORM_ITEM_DESCRIBE_ARIA = 'aria-describedby';\nconst FORM_ITEM_SUCCESS_CLASS = 'form__item--success';\nconst FORM_ITEM_ERROR_MESSAGE_HOOK = '.form__item-error:not([data-ignored])';\nconst REGEX_REMOVE_NEWLINES_AND_WHITESPACE = /[\\n\\r]+|[\\s]{2,}/g;\n\nclass Form extends Component {\n constructor(element, store) {\n super({ store, element });\n\n this.form = element;\n this.endpoint = element.getAttribute('action');\n this.gtmObj = element.dataset.gtmObj;\n\n this.messageSelector = ALERT_SELECTOR;\n this.formSelector = FORM_SELECTOR;\n\n this.class = FORM_ITEM_CLASS;\n this.inputTypes = INPUT_TYPES;\n this.warnClass = FORM_ITEM_WARN_CLASS;\n this.errorClass = FORM_ITEM_ERROR_CLASS;\n this.errorAria = FORM_ITEM_ERROR_ARIA;\n this.describeAria = FORM_ITEM_DESCRIBE_ARIA;\n this.successClass = FORM_ITEM_SUCCESS_CLASS;\n this.message = FORM_ITEM_ERROR_MESSAGE_HOOK;\n\n // Constraints & Validation\n this.defaultValidators = this.getDefaultValidators();\n this.customValidationMessages = this.getCustomValidationMessages();\n this.constraints = {};\n this.customConstraints = {};\n\n // Buttons\n this.buttonLoaders = [];\n this.defaultSubmit = this.form.querySelector(JS_HOOK_DEFAULT_SUBMIT);\n\n this.initInputs();\n this.init();\n this.bindEvents();\n }\n\n init() {\n // Validators\n this.setInitialValidators();\n singleAsyncValidator();\n\n // Events\n const debounceSingleFieldValidation = debounce(\n (input) => this.singleFieldValidation(input),\n 800,\n );\n this.changeListener = (input) => debounceSingleFieldValidation(input);\n this.keyupListener = (input) => this.singleFieldValidation(input);\n }\n\n initInputs() {\n this.inputs = [...this.form.querySelectorAll(this.inputTypes)];\n }\n\n updateInputs() {\n this.initInputs();\n this.bindChangeEvents();\n }\n\n bindEvents() {\n Events.$on('form::update-inputs', () => this.updateInputs());\n }\n\n set constraints(obj) {\n this._constraints = obj;\n }\n\n get constraints() {\n return this._constraints;\n }\n\n initButtonLoaders() {\n if (this.defaultSubmit) {\n this.addButtonLoader(this.defaultSubmit, false);\n }\n }\n\n hideButtonLoaders() {\n this.buttonLoaders.forEach((loader) => loader.hide());\n this.buttonLoaders = [];\n }\n\n /**\n * Changes the button loader\n * @param {HTMLElement} element - DOM element of the button\n * @param {Boolean} shouldAnimate - button should animate with a loader element\n */\n addButtonLoader(element, shouldAnimate) {\n if (!element) return;\n this.buttonLoaders.push(new ButtonLoader(element, shouldAnimate));\n this.buttonLoaders[this.buttonLoaders.length - 1].show();\n }\n\n getButtonElement(target) {\n if (!target) return null;\n if (target.tagName.toLowerCase() === 'form') {\n return this.form.querySelector('[type=\"submit\"]');\n }\n if (target.tagName.toLowerCase() === 'button') {\n return target;\n }\n return null;\n }\n\n getDefaultValidators() {\n const { data, error } = Form.parseDefaults(this.form.dataset.defaultValidators);\n if (error) return new Error(`Form.js - getDefaultValidators - Error: ${error}`);\n return data;\n }\n\n getCustomValidationMessages() {\n const { data, error } = Form.parseDefaults(this.form.dataset.customValidationMessages);\n if (error) return new Error(`Form.js - getCustomValidationMessages - Error: ${error}`);\n return data;\n }\n\n /**\n * Parse an object containing defaults\n * @param {Object} defaults - defaults object\n */\n static parseDefaults(defaults) {\n const data = parseJSON(defaults, {});\n if (!data)\n return {\n error: \"Couldn't parse defaults in Form.js - function parseDefaults\",\n };\n return { data };\n }\n\n /**\n * Set initial validators on ValidateJS.\n * Add defaultValidator messages & custom validators for ean, zipcode etc\n */\n setInitialValidators() {\n if (!this.defaultValidators) return;\n\n // Init Default Validators\n Object.keys(this.defaultValidators).forEach((key) => {\n validate.validators[key].options = this.defaultValidators[key];\n });\n\n // Init Custom Validators\n Object.keys(customValidators).forEach((key) => {\n validate.validators[key] = customValidators[key];\n });\n }\n\n /**\n * Shows errors from backend/server in form per field or on top of form when it is a generic server error\n * @param {Object} data - the response data\n */\n processServerErrors(data) {\n if (data.fieldErrors?.length) {\n data.fieldErrors.forEach((error) => {\n if (Object.keys(error).length) {\n this.showErrors(error);\n }\n });\n }\n\n if (data.serverErrors?.length || data.errorMessage?.length) {\n apiErrorHandler(data, this.messageSelector);\n }\n }\n\n /**\n * Submit form success handler\n * @param {Object} data - data returned from API call\n */\n submitFormSuccess(data) {\n if (data.error) {\n if (typeof this.afterSubmitFormError === 'function') {\n this.afterSubmitFormError(data);\n } else {\n this.processServerErrors(data);\n }\n }\n // If extended form provides afterSubmitFormSuccess function, this will be called\n else if (typeof this.afterSubmitFormSuccess === 'function') {\n this.afterSubmitFormSuccess(data);\n }\n\n if (this.gtmObj) {\n Events.$trigger('gtm::push', {\n data: JSON.parse(this.gtmObj),\n });\n }\n\n if (data.redirectUrl) {\n window.location.href = data.redirectUrl;\n } else {\n this.hideButtonLoaders();\n }\n }\n\n submitFormError(error) {\n this.hideButtonLoaders();\n\n // If extended form provides simpleAfterSubmitFormError function, this will be called\n if (typeof this.simpleAfterSubmitFormError === 'function') {\n this.simpleAfterSubmitFormError();\n }\n\n errorHandler(error);\n }\n\n /**\n * Post form to API\n */\n preSubmitForm() {\n this.submitForm(this.serializeForm());\n }\n\n serializeForm() {\n return serializeObject(this.form);\n }\n\n submitForm(data) {\n API.post(this.endpoint, data)\n .then((response) => this.submitFormSuccess(response.data))\n .catch((error) => this.submitFormError(error));\n }\n\n /**\n * Form validation success handler\n *\n * @param event, submit event\n */\n validateFormSuccess(event) {\n if (event) {\n const target = this.getButtonElement(event.currentTarget);\n this.addButtonLoader(target, true);\n }\n this.preSubmitForm();\n }\n\n /**\n * Form validation error handler\n *\n * @param {Array} errors | errors returned from ValidateJS\n */\n validateFormError(errors) {\n if (errors instanceof Error) {\n // This means an exception was thrown from a validator\n apiErrorHandler(errors, this.messageSelector);\n } else {\n this.showErrors(errors);\n }\n }\n\n /**\n * Submit the shipping form\n * @param event, submit event\n */\n validateForm(event = null) {\n if (event) event.preventDefault();\n\n this.validate()\n .then(\n () => this.validateFormSuccess(event),\n (errors) => {\n const errorKeys = Object.keys(errors);\n\n // if there are errors without warning, fail validation\n const isAnyError = errorKeys.some((key) => {\n const { fatalError } = getErrorData(errors[key]);\n return fatalError;\n });\n\n if (isAnyError) {\n this.validateFormError(errors);\n return;\n }\n this.validateFormSuccess(event);\n },\n )\n .catch((error) => errorHandler(error));\n }\n\n /**\n * Validate a single field\n *\n * @param {HTMLElement} input | input that fired onChange event\n * @returns {Promise}\n */\n validateSingle(input, custom) {\n let inputValue = input.value;\n if (input.type === 'checkbox') inputValue = input.checked;\n let constraints;\n\n if (input.id === 'dwfrm_gift_firstName' || input.id === 'dwfrm_gift_lastName' || input.id === 'dwfrm_gift_email') {\n constraints = giftConstraints();;\n } else {\n constraints = custom === false ? this.constraints : this.customConstraints;\n }\n\n return validate.async.single(inputValue, constraints[input.name], {\n key: input.name,\n });\n }\n\n /**\n * Prevalidate filled fields\n */\n preValidateFields() {\n this.validateFields(this.inputs.filter((input) => input.value.length > 0));\n }\n\n /**\n * Validate fields from an array\n *\n * @param {HTMLElement[]} inputs | inputs array\n */\n validateFields(inputs) {\n ;[...inputs].forEach((input) => this.singleFieldValidation(input));\n }\n\n /**\n * Validate the form\n *\n * @returns {Promise}\n */\n validate() {\n const items = validate.collectFormValues(this.form);\n\n // create new constraints object\n // based on non hidden input fields\n const actualConstraints = {};\n\n Object.keys(items).forEach((item) => {\n const key = item;\n if (!this.constraints[key]) return;\n actualConstraints[key] = this.constraints[key];\n });\n\n return validate.async(items, actualConstraints, { fullMessages: false });\n }\n\n /**\n * Single field validation success handler\n *\n * @param {HTMLElement} input | input that fired onChange event\n */\n singleFieldValidationSuccess(input) {\n this.showSuccessForInput(input);\n }\n\n /**\n * Single field validation error handler\n *\n * @param {HTMLElement} input | input that fired onChange event\n * @param {Array} errors | errors returned from ValidateJS\n */\n singleFieldValidationError(input, errors) {\n this.showErrorsForInput(input, errors);\n return errors;\n }\n\n /**\n * Single field validation:\n * Can be called as onChange event or to validate a single input\n * @param {HTMLElement} input | input that fired onChange event\n */\n singleFieldValidation(input, custom = false) {\n if (Form.numberFieldContainsText(input)) {\n input.value = '';\n }\n\n return this.validateSingle(input, custom)\n .then(\n () => this.singleFieldValidationSuccess(input),\n (errors) => this.singleFieldValidationError(input, errors),\n )\n .catch((error) => apiErrorHandler(error));\n }\n\n /**\n * Checks if input type=\"number\" fields contain text\n *\n * @param {HTMLElement} input | input element to check\n * @returns {Boolean} return true if number field contains text, false otherwise\n */\n static numberFieldContainsText(input) {\n if (input.getAttribute('type') === 'number') {\n return !/^\\d+$/.test(input.value);\n }\n\n return false;\n }\n\n /**\n * Gather validation errors and show per input\n *\n * @param {Array} errors | errors returned from ValidateJS\n */\n showErrors(errors) {\n if (!errors) return;\n // const formItems = this.form.querySelectorAll(this.inputTypes)\n\n let scrolledToError = false;\n ;[...this.inputs].forEach((input) => {\n if (!scrolledToError && errors[input.name]) {\n const { fatalError } = getErrorData(errors[input.name]);\n\n if (fatalError) {\n input.focus();\n Events.$trigger('scroll-to::scroll', {\n data: {\n target: input.offsetParent !== null ? input : input.closest(FORM_ITEM_CLASS),\n offset: 180,\n },\n });\n scrolledToError = true;\n }\n }\n this.showErrorsForInput(input, errors[input.name]);\n });\n }\n\n getErrorContainer(input) {\n if (input.name === 'brandCode') return false;\n const formItem = input.closest(this.class);\n\n return formItem?.querySelector(this.message);\n }\n\n /**\n * Display validation error on a specific field\n *\n * @param {HTMLElement} input | input to show error on\n * @param {Array} errors | errors returned from ValidateJS or Backend\n */\n showErrorsForInput(input, errors) {\n if (input.hasAttribute('data-ignored')) return; // Allows us to ignore certain inputs. https://validatejs.org/#utilities-collect-form-values doesn't seem to work.\n\n const formItem = input.closest(this.class);\n const formItemErrorContainer = this.getErrorContainer(input);\n\n if (!formItemErrorContainer) {\n return;\n }\n\n // reset form input state\n this.resetFormItem(formItem, input);\n if (errors) {\n const { warning, fatalError, errorMessage } = getErrorData(errors);\n input.setAttribute(this.errorAria, true);\n input.setAttribute(this.describeAria, formItemErrorContainer.id);\n formItem.classList.add(!fatalError && warning ? this.warnClass : this.errorClass);\n formItemErrorContainer.textContent = errorMessage;\n formItemErrorContainer.removeAttribute('aria-hidden');\n const labelContent =\n document\n .querySelector(`label[for=\"${input.id}\"]`)\n ?.textContent.replace(REGEX_REMOVE_NEWLINES_AND_WHITESPACE, ' ')\n .trim() || '';\n Events.$trigger('gtm::errorEvent', {\n data: {\n errorMessage,\n errorId: labelContent,\n },\n });\n } else if (input.value.length > 0) {\n formItem.classList.add(this.successClass);\n }\n }\n\n showSuccessForInput(input) {\n const formItem = input.closest(this.class);\n this.resetFormItem(formItem, input);\n\n if (input.value.length > 0) {\n formItem.classList.add(this.successClass);\n }\n }\n\n /**\n * Remove error classes and any old error message\n * @param {HTMLElement} formItem | input parent that holds error/success classes\n * @param {HTMLElement} input | input element\n */\n resetFormItem(formItem, input) {\n const formItemErrorContainer = this.getErrorContainer(input);\n input.removeAttribute(this.errorAria);\n input.removeAttribute(this.describeAria);\n\n if (formItemErrorContainer) {\n formItemErrorContainer.setAttribute('aria-hidden', 'true');\n formItemErrorContainer.textContent = '';\n }\n\n if (formItem) {\n formItem.classList.remove(this.errorClass);\n formItem.classList.remove(this.warnClass);\n formItem.classList.remove(this.successClass);\n }\n }\n\n bindSubmitEvents() {\n // TODO: For debug of forms, keep for now\n // this.form.addEventListener('submit', event => {\n // event.preventDefault(event);\n // this.submitForm();\n // });\n this.form.addEventListener('submit', (event) => this.validateForm(event));\n }\n\n /**\n * Bind change events of input elements\n */\n bindChangeEvents() {\n this.inputs.map((input) => {\n const eventName =\n input.tagName === 'SELECT' || input.type === 'checkbox' || input.type === 'radio'\n ? 'change'\n : 'keyup';\n input.addEventListener(eventName, (event) => {\n if (event.keyCode !== 9 && eventName === 'change') {\n this.changeListener(input);\n } else if (event.keyCode !== 9) {\n this.keyupListener(input);\n }\n });\n input.addEventListener('paste', () => this.changeListener(input));\n });\n this.hideButtonLoaders();\n }\n}\n\nfunction getErrorMessage(errorData) {\n if (errorData) {\n if (errorData.message) {\n return errorData.message;\n }\n return errorData;\n }\n return false;\n}\n\nfunction getErrorData(errors) {\n const errorList = errors.constructor === Array ? [...errors] : [errors];\n const fatalError = errorList.find((error) => !error.warn);\n const warning = errorList.find((error) => error.warn);\n\n return {\n fatalError,\n warning,\n errorMessage: getErrorMessage(fatalError || warning),\n };\n}\n\nexport default Form;\n","import Form from './form'\n\nexport default Form\n","// Imports\nimport Events from '@utilities/events';\n\n/**\n * GTM envent on footer subscribe button (newsletter_footer)\n * @param {Boolean} subscribe - true if it is a subscription action / false if it is opening a subscription form\n *\n * @return {Void}\n */\nconst gtmFooterSubscribeButtonClick = function(subscribe) {\n if (subscribe) {\n const newsletterSubscriptionForm = document.querySelector('.newsletter-subscription-form__form');\n\n if (newsletterSubscriptionForm) {\n let userType = newsletterSubscriptionForm.querySelector('input[name=\"dwfrm_newsletter_accountType\"]:checked')\n ? newsletterSubscriptionForm.querySelector('input[name=\"dwfrm_newsletter_accountType\"]:checked').value\n : null;\n\n // data normalization\n userType = userType === 'private' ? 'consumer' : userType;\n\n Events.$trigger('gtm::push', {\n data: {\n event: 'newsletter',\n action: 'subscribe',\n user_type: userType\n }\n });\n }\n } else {\n const subscribeButton = document.querySelector('[js-hook-newsletter-button-gtm]');\n\n if (subscribeButton) {\n subscribeButton.addEventListener('click', () => {\n Events.$trigger('gtm::push', {\n data: {\n event: 'newsletter',\n action: 'click'\n }\n });\n });\n }\n }\n};\n\nexport default gtmFooterSubscribeButtonClick;\n","const parseJSON = function (json, defaultValue) {\n // This function cannot be optimised, it's best to\n // keep it small!\n let parsed\n\n try {\n parsed = JSON.parse(json)\n } catch (e) {\n parsed = defaultValue\n }\n\n return parsed || null // Could be undefined!\n}\n\nexport default parseJSON\n","import parseJSON from './parse-json'\n\nexport default parseJSON\n","// @ts-ignore\nimport idx from 'idx'\n\nimport Store from '../store/store'\n\nclass Component {\n constructor(props = {}) {\n this.watch = Component.watch || function() {}\n this.watchCollection = Component.watchCollection || function() {}\n this.stateChanged = this.stateChanged || function() {}\n if (props.store instanceof Store) {\n // This fires every time the state updates\n props.store.subscribe((state, prevState) => {\n this.stateChanged(state, prevState)\n })\n }\n\n if (props.element) {\n this.element = props.element\n }\n }\n\n static watchCollection(store, prop, callback) {\n const { state: newState, prevState } = store\n const previousPropState = idx(prevState, _ => _[prop])\n const newPropState = idx(newState, _ => _[prop])\n if (Array.isArray(previousPropState)) {\n if (\n previousPropState &&\n previousPropState.length &&\n newPropState.length !== previousPropState.length\n ) {\n // Make sure the callback is a function\n if (typeof callback === 'function') {\n return callback()\n }\n }\n }\n return undefined\n }\n\n static watch(store, prop, callback) {\n const { state: newState, prevState } = store\n const previousPropState = idx(prevState, _ => _[prop])\n const newPropState = idx(newState, _ => _[prop])\n if (\n typeof newPropState === 'boolean' ||\n typeof newPropState === 'string' ||\n typeof newPropState === 'number'\n ) {\n if (previousPropState && newPropState !== previousPropState) {\n // Make sure the callback is a function\n if (typeof callback === 'function') {\n return callback()\n }\n }\n }\n return undefined\n }\n}\nexport default Component\n","class Store {\n constructor(params) {\n // Add some default objects to hold our actions, mutations and state\n // Look in the passed params object for actions and mutations\n // that might have been passed in\n this.actions = params.actions || {}\n this.mutations = params.mutations || {}\n this.state = {}\n this.prevState = {}\n\n // A status enum to set during actions and mutations\n this.status = 'resting'\n\n // We store callbacks for when the state changes in here\n this.callbacks = []\n\n // Set our state to be a Proxy. We are setting the default state by\n // checking the params and defaulting to an empty object if no default\n // state is passed in\n const self = this\n self.state = new Proxy(params.initialState || {}, {\n set(state, key, value) {\n // Set the value as we would normally\n state[key] = value\n\n // eslint-disable-next-line\n // console.log(`stateChange: ${String(key)}: ${value}`)\n\n // Fire off our callback processor because if there's listeners,\n // they're going to want to know that something has changed\n self.processCallbacks(self.state, self.prevState)\n\n if (self.status !== 'mutation') {\n // eslint-disable-next-line\n console.warn(`You should use a mutation to set ${String(key)}`)\n }\n // Reset the status ready for the next operation\n self.status = 'resting'\n\n return true\n },\n })\n }\n\n /**\n * A dispatcher for actions that looks in the actions\n * collection and runs the action if it can find it\n *\n * @param {string} actionKey\n * @param {object} payload\n * @returns {boolean}\n * @memberof Store\n */\n dispatch(actionKey, payload) {\n // Run a quick check to see if the action actually exists\n // before we try to run it\n if (typeof this.actions[actionKey] !== 'function') {\n console.error(`Action \"${actionKey}\" doesn't exist.`)\n return false\n }\n\n // Let anything that's watching the status know that we're dispatching an action\n this.status = 'action'\n\n // Actually call the action and pass it the Store context and whatever payload was passed\n return this.actions[actionKey](this, payload)\n }\n\n /**\n * A dispatcher for actions that looks in the actions\n * collection and runs the action if it can find it\n * and returns a Promise that resolves when the action is completed\n *\n * @param {string} actionKey\n * @param {object} payload\n * @returns {Promise}\n * @memberof Store\n */\n dispatchWithPromise(actionKey, payload) {\n return new Promise((resolve, reject) => {\n // Run a quick check to see if the action actually exists\n // before we try to run it\n if (typeof this.actions[actionKey] !== 'function') {\n console.error(`Action \"${actionKey}\" doesn't exist.`);\n reject(new Error(`Action \"${actionKey}\" doesn't exist.`));\n } else {\n // Add a callback to the store\n // eslint-disable-next-line no-unused-vars\n const callback = (_state, _prevState) => {\n if (this.status === 'mutation') {\n // Action has completed, remove the callback and resolve the Promise\n this.callbacks = this.callbacks.filter(cb => cb !== callback);\n resolve();\n }\n };\n \n this.subscribe(callback);\n this.dispatch(actionKey, payload)\n .then(() => {})\n .catch((error) => {\n this.callbacks = this.callbacks.filter(cb => cb !== callback);\n reject(error);\n });\n }\n });\n }\n\n \n\n /**\n * Look for a mutation and modify the state object\n * if that mutation exists by calling it\n *\n * @param {string} mutationKey\n * @param {object} payload\n * @returns {boolean}\n * @memberof Store\n */\n commit(mutationKey, payload) {\n // Run a quick check to see if this mutation actually exists\n // before trying to run it\n if (typeof this.mutations[mutationKey] !== 'function') {\n console.error(`Mutation \"${mutationKey}\" doesn't exist`)\n return false\n }\n\n // Let anything that's watching the status know that we're mutating state\n this.status = 'mutation'\n\n this.prevState = Object.assign({}, this.state)\n\n // Get a new version of the state by running the mutation and storing the result of it\n const newState = this.mutations[mutationKey](this.state, payload)\n\n // Update the old state with the new state returned from our mutation\n this.state = newState\n\n return true\n }\n\n /**\n * Fire off each callback that's run whenever the state changes\n * We pass in some data as the one and only parameter.\n * Returns a boolean depending if callbacks were found or not\n *\n * @param {object} state\n * @param {object} prevState\n * @returns {boolean}\n */\n processCallbacks(state, prevState) {\n if (!this.callbacks.length) {\n return false\n }\n\n // We've got callbacks, so loop each one and fire it off\n this.callbacks.forEach(callback => callback(state, prevState))\n\n return true\n }\n\n /**\n * Allow an outside entity to subscribe to state changes with a valid callback.\n * Returns boolean based on wether or not the callback was added to the collection\n *\n * @param {function} callback\n * @returns {boolean}\n */\n subscribe(callback) {\n if (typeof callback !== 'function') {\n console.error('You can only subscribe to Store changes with a valid function')\n return false\n }\n\n // A valid function, so it belongs in our collection\n this.callbacks.push(callback)\n\n return true\n }\n}\n\nexport default Store\n","/**\n * Regex to check only words, no other characters then a space\n * @type {RegExp}\n */\n\nconst onlyWords = /^[\\w\\s]+$/\n\nexport default onlyWords\n","/**\n * Regex to check password\n * Per https://stackoverflow.com/questions/19605150/regex-for-password-must-contain-at-least-eight-characters-at-least-one-number-a\n * Min 1 uppercase letter.\n * Min 1 number.\n * Min 9 characters.\n * Max 30 characters\n * @type {RegExp}\n */\n\nconst password = /^(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d@$!%*?&.,\\-|+~#_/()[\\]{}=]{9,30}$/\n\nexport default password\n","/**\n * Regex to check ean barcodes\n * @type {RegExp}\n */\n\nconst ean = /^\\d{13}$/\n\nexport default ean\n","/**\n * Regex to check a dutch date format\n * @type {RegExp}\n */\n\nconst dateNL = /^(\\d{1,2})(\\/|-)(\\d{1,2})(\\/|-)(\\d{4})$/\n\nexport default dateNL\n","/**\n * Regex to check emails against\n * @type {RegExp}\n */\n\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,10}))$/\n\nexport default emailRegex\n","/**\n * Regex to check dutch phone numbers against\n * @type {RegExp}\n */\nconst phoneRegex = /^\\s*\\+?\\s*([0-9][\\s-]*){9,20}$/\n\nexport default phoneRegex\n","/**\n * Regex to check dutch zipcodes against\n * @type {RegExp}\n */\n\nconst zipCodeRegex = /^[1-9][0-9]{3}?(?!sa|sd|ss)[a-z|A-Z]{2}$/i\nconst zipCodeRegexStreetOptional = /^[1-9][0-9]{3}(?:(?!sa|sd|ss)[a-z|A-Z]{2})?$/i\n\nexport default { zipCodeRegex, zipCodeRegexStreetOptional }\n","/**\n * Regex to check dutch housenumbers\n * @type {RegExp}\n */\n\nconst houseNumber = /^(?:[a-zA-Z0-9 ]+(?:-(?!$))?)+$/\n\nexport default houseNumber\n","/**\n * Regex to check dutch housenumber additions\n * @type {RegExp}\n */\n\nconst houseNumberAddition = /^[a-zA-Z]+$/\n\nexport default houseNumberAddition\n","/**\n * Regex to check names, with some special characters allowed\n * @type {RegExp}\n */\n\nconst names = /^(?:[\\p{L}\\p{Mn}\\p{Pd}.,'\\s]+)+$/u\n\nexport default names\n","/**\n * Regex to check cd field\n * @type {RegExp}\n */\n\nconst cd = /^[A-Z0-9]{7}$/\n\nexport default cd\n","/**\n * Regex to check pec field\n * @type {RegExp}\n */\n\nconst pec = /^[a-zA-Z0-9-_+]{1}[a-zA-Z0-9-_.+]{0,62}[a-zA-Z0-9-_+]{1}@[a-zA-Z0-9-.]{1,128}[.]{1}[a-zA-Z]{2,60}$/\n\nexport default pec\n","/**\n * Regex to check addresses against\n * @type {RegExp}\n */\n\nconst addressRegex = /^(?:[\\p{L}\\p{Mn}\\p{Pd}.,'\\s\\d]+)+$/u\n\nexport default addressRegex\n","/**\n * Validation types\n */\nimport onlyWordsRegex from './only-words'\nimport passwordRegex from './password'\nimport eanRegex from './ean'\nimport dateNLRegex from './date-nl'\nimport emailRegex from './email'\nimport phoneRegex from './phone'\nimport zipCode from './zipcode'\nimport houseNumberRegex from './house-number'\nimport houseNumberAdditionRegex from './house-number-addition'\nimport names from './names'\nimport cdRegex from './cd'\nimport pecRegex from './pec'\nimport addressRegex from './address'\n\nexport default {\n dateNLRegex,\n eanRegex,\n emailRegex,\n houseNumberRegex,\n houseNumberAdditionRegex,\n names,\n onlyWordsRegex,\n passwordRegex,\n phoneRegex,\n zipCode,\n cdRegex,\n pecRegex,\n addressRegex\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/*!\n * validate.js 0.13.1\n *\n * (c) 2013-2019 Nicklas Ansman, 2013 Wrapp\n * Validate.js may be freely distributed under the MIT license.\n * For all details and documentation:\n * http://validatejs.org/\n */\n\n(function(exports, module, define) {\n \"use strict\";\n\n // The main function that calls the validators specified by the constraints.\n // The options are the following:\n // - format (string) - An option that controls how the returned value is formatted\n // * flat - Returns a flat array of just the error messages\n // * grouped - Returns the messages grouped by attribute (default)\n // * detailed - Returns an array of the raw validation data\n // - fullMessages (boolean) - If `true` (default) the attribute name is prepended to the error.\n //\n // Please note that the options are also passed to each validator.\n var validate = function(attributes, constraints, options) {\n options = v.extend({}, v.options, options);\n\n var results = v.runValidations(attributes, constraints, options)\n , attr\n , validator;\n\n if (results.some(function(r) { return v.isPromise(r.error); })) {\n throw new Error(\"Use validate.async if you want support for promises\");\n }\n return validate.processValidationResults(results, options);\n };\n\n var v = validate;\n\n // Copies over attributes from one or more sources to a single destination.\n // Very much similar to underscore's extend.\n // The first argument is the target object and the remaining arguments will be\n // used as sources.\n v.extend = function(obj) {\n [].slice.call(arguments, 1).forEach(function(source) {\n for (var attr in source) {\n obj[attr] = source[attr];\n }\n });\n return obj;\n };\n\n v.extend(validate, {\n // This is the version of the library as a semver.\n // The toString function will allow it to be coerced into a string\n version: {\n major: 0,\n minor: 13,\n patch: 1,\n metadata: null,\n toString: function() {\n var version = v.format(\"%{major}.%{minor}.%{patch}\", v.version);\n if (!v.isEmpty(v.version.metadata)) {\n version += \"+\" + v.version.metadata;\n }\n return version;\n }\n },\n\n // Below is the dependencies that are used in validate.js\n\n // The constructor of the Promise implementation.\n // If you are using Q.js, RSVP or any other A+ compatible implementation\n // override this attribute to be the constructor of that promise.\n // Since jQuery promises aren't A+ compatible they won't work.\n Promise: typeof Promise !== \"undefined\" ? Promise : /* istanbul ignore next */ null,\n\n EMPTY_STRING_REGEXP: /^\\s*$/,\n\n // Runs the validators specified by the constraints object.\n // Will return an array of the format:\n // [{attribute: \"