{"version":3,"file":"bundle-checkout-components.min.js","sources":["bundle-checkout-components.js"],"sourcesContent":["\"use strict\";\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createAddress(containerEl, deps) {\r\n var formDeps = deps.formDeps, getAddress = deps.getAddress, isNew = deps.isNew, disableDefaultAddress = deps.disableDefaultAddress, countryChangeEnabled = deps.countryChangeEnabled;\r\n var popupEl = eXpress.html.querySelector(document, '.p-my-account-address', true);\r\n var popupFormEl = eXpress.html.querySelector(document, '.technical-address-form', true);\r\n var buttonContainerEl = eXpress.html.querySelector(popupEl, '.technical-address-button-container', true);\r\n var saveDeliveryAddressButtonEl = eXpress.html.querySelector(buttonContainerEl, '.technical-save-address-button', true);\r\n var addressForm = checkout.createPersonalDataForm(eXpress.html.querySelector(containerEl, '.technical-address-form', true), {\r\n onSubmit: formDeps.onSubmit,\r\n getZipCodeDefinitionAsync: formDeps.getZipCodeDefinitionAsync,\r\n getCitiesForCountryCodeAndSearchTerm: formDeps.getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: formDeps.getGetCitiesByZipCode,\r\n alternativeSubmitButtonEl: saveDeliveryAddressButtonEl\r\n });\r\n if (!isNew) {\r\n eXpress.utils.showLoadingDialog(getAddress().then(function (res) { return addressForm.fillFormData(res, disableDefaultAddress, countryChangeEnabled); }));\r\n }\r\n var isCompanyEl = eXpress.html.querySelector(popupEl, '.technical-company', false);\r\n var isCompany = isCompanyEl && isCompanyEl.checked;\r\n var overrideDefaultRegions = popupFormEl.dataset.defaultRegions || '';\r\n addressForm.updateCountry(containerEl.dataset.defaultRegion, isCompany, false, overrideDefaultRegions);\r\n return {\r\n setErrors: addressForm.setErrors,\r\n dispose: addressForm.dispose,\r\n };\r\n }\r\n checkout.createAddress = createAddress;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createAdyenDropIn(containerEl, deps) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var locale, clientKey, countryCode, currency, amount, refreshMiniBasket, environment, enableStoreDetails, placeOrderContainerEl, resetButtonEl, loadingEl, obKlarna, eventDisposables, _a, AdyenCheckout, Dropin, adyenDropInComponent, adyenCheckoutObject, configuration, dropInOpts, selectedPaymentBrand, forceNewOrder, reason, selectedClass, nextSelectedClass, paymentMethodClass, buttonSelector, paymentMethodSelector, paymentMethodHeaderTitleSelector, getTestOrderOptionValue, getPaymentMethods, validate, initiatePayment, submitAdditionalDetails, placeOfflineOrder, newsletterEl, personalMessageEl, testOrderOptionEl, updateCartHandlingCost, disableStoredPaymentMethod, fetchRecaptchaToken, recaptchaEnabled, onBankTransferSubmit, deselectPaymentMethod, onBankTransferClick, injectCustomInvoiceMethod, injectKlarnaAdditionalFeeMessage, injectSwishMessage, toggleSelectedPaymentMethodState, toggleDisableAllButtonStates, toggleDisableButtonState, injectExtraPaymentMethods, onBrand, init;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n locale = containerEl.dataset.locale || \"\";\r\n clientKey = containerEl.dataset.clientkey || \"\";\r\n countryCode = containerEl.dataset.countrycode || \"\";\r\n currency = containerEl.dataset.currency || \"\";\r\n amount = containerEl.dataset.amount || \"\";\r\n refreshMiniBasket = containerEl.dataset.refreshminibasket === \"true\";\r\n environment = containerEl.dataset.isproduction === \"true\" ? \"live\" : \"test\";\r\n enableStoreDetails = containerEl.dataset.enablestoredetails === \"true\";\r\n placeOrderContainerEl = eXpress.html.querySelector(document, \".technical-place-order-checkout-step\", true);\r\n resetButtonEl = eXpress.html.querySelector(placeOrderContainerEl, \".technical-reset\", true);\r\n loadingEl = eXpress.html.querySelector(document, '.adyen-loading', false);\r\n obKlarna = undefined;\r\n eventDisposables = eXpress.utils.compositeDisposable([]);\r\n _a = window.AdyenWeb, AdyenCheckout = _a.AdyenCheckout, Dropin = _a.Dropin;\r\n forceNewOrder = false;\r\n reason = eXpress.utils.getParameter('reason', document.location.href, false);\r\n selectedClass = \"adyen-checkout__payment-method--selected\";\r\n nextSelectedClass = \"adyen-checkout__payment-method--next-selected\";\r\n paymentMethodClass = \"adyen-checkout__payment-method\";\r\n buttonSelector = \".adyen-checkout__button\";\r\n paymentMethodSelector = \".adyen-checkout__payment-method\";\r\n paymentMethodHeaderTitleSelector = \".adyen-checkout__payment-method__header__title\";\r\n if (reason && reason.toLowerCase() === 'refused') {\r\n forceNewOrder = true;\r\n }\r\n getTestOrderOptionValue = deps.getTestOrderOptionValue, getPaymentMethods = deps.getPaymentMethods, validate = deps.validate, initiatePayment = deps.initiatePayment, submitAdditionalDetails = deps.submitAdditionalDetails, placeOfflineOrder = deps.placeOfflineOrder, newsletterEl = deps.newsletterEl, personalMessageEl = deps.personalMessageEl, testOrderOptionEl = deps.testOrderOptionEl, updateCartHandlingCost = deps.updateCartHandlingCost, disableStoredPaymentMethod = deps.disableStoredPaymentMethod, fetchRecaptchaToken = deps.fetchRecaptchaToken, recaptchaEnabled = deps.recaptchaEnabled;\r\n onBankTransferSubmit = function (e) {\r\n e.preventDefault();\r\n if (validate()) {\r\n toggleDisableAllButtonStates(true);\r\n toggleDisableButtonState(resetButtonEl, true, false);\r\n var bankTransferEl = eXpress.html.querySelector(containerEl, '.technical-bank-transfer', true);\r\n var printPaymentFormEl = eXpress.html.querySelector(bankTransferEl, \"#printPaymentForm\", false);\r\n placeOfflineOrder(newsletterEl.checked, personalMessageEl.checked, printPaymentFormEl && printPaymentFormEl.checked || false, selectedPaymentBrand, getTestOrderOptionValue(testOrderOptionEl));\r\n }\r\n };\r\n deselectPaymentMethod = function () {\r\n var bankTransferEl = eXpress.html.querySelector(containerEl, '.technical-bank-transfer', false);\r\n if (bankTransferEl) {\r\n bankTransferEl.classList.remove(selectedClass);\r\n bankTransferEl.classList.remove(nextSelectedClass);\r\n var paymentHeaderTitle = eXpress.html.querySelector(bankTransferEl, paymentMethodHeaderTitleSelector, true);\r\n paymentHeaderTitle.setAttribute(\"aria-checked\", \"false\");\r\n paymentHeaderTitle.setAttribute(\"aria-expanded\", \"false\");\r\n var paymentMethodDetailsEl = eXpress.html.querySelector(bankTransferEl, '.adyen-checkout-pm-details-wrapper', true);\r\n paymentMethodDetailsEl.setAttribute(\"aria-hidden\", \"true\");\r\n }\r\n };\r\n onBankTransferClick = function (ev) {\r\n selectedPaymentBrand = \"banktransfer\";\r\n toggleDisableAllButtonStates(false);\r\n toggleDisableButtonState(resetButtonEl, false, false);\r\n refreshMiniBasket && updateCartHandlingCost(0, 1);\r\n var currentEl = ev.currentTarget;\r\n var bankTransferEl = eXpress.html.getParentOrSelfWithClassName(currentEl, \"technical-bank-transfer\");\r\n if (bankTransferEl) {\r\n if (eXpress.html.hasClass(bankTransferEl, selectedClass))\r\n return;\r\n adyenDropInComponent.closeActivePaymentMethod();\r\n var paymentHeaderTitle = eXpress.html.querySelector(bankTransferEl, paymentMethodHeaderTitleSelector, true);\r\n paymentHeaderTitle.setAttribute(\"aria-checked\", \"true\");\r\n paymentHeaderTitle.setAttribute(\"aria-expanded\", \"true\");\r\n var paymentMethodDetailsEl = eXpress.html.querySelector(bankTransferEl, '.adyen-checkout-pm-details-wrapper', true);\r\n paymentMethodDetailsEl.setAttribute(\"aria-hidden\", \"false\");\r\n bankTransferEl.classList.add(selectedClass);\r\n var previousPaymentMethodLi = bankTransferEl.previousElementSibling;\r\n if (previousPaymentMethodLi) {\r\n previousPaymentMethodLi = previousPaymentMethodLi.previousElementSibling;\r\n previousPaymentMethodLi && previousPaymentMethodLi.classList.add(nextSelectedClass);\r\n }\r\n }\r\n };\r\n injectCustomInvoiceMethod = function (templatesEl) {\r\n var template = templatesEl.children[0];\r\n var divEl = document.createElement(\"div\");\r\n template.classList.forEach(function (c) { divEl.classList.add(c); });\r\n divEl.classList.add(\"technical-bank-transfer\");\r\n divEl.innerHTML = template.innerHTML;\r\n if (containerEl) {\r\n var paymentList = eXpress.html.querySelector(containerEl, \".adyen-checkout__payment-methods-list--otherPayments\", false);\r\n if (paymentList) {\r\n var existingListEl = eXpress.html.querySelector(paymentList, \".technical-bank-transfer\", false);\r\n if (!existingListEl) {\r\n paymentList.insertAdjacentElement(\"beforeend\", divEl);\r\n divEl = eXpress.html.querySelector(paymentList, \".technical-bank-transfer\", true);\r\n var bankTransferTitleEl = eXpress.html.querySelector(divEl, \".adyen-checkout__payment-method__header\", true);\r\n var bankTransferButtonEl = eXpress.html.querySelector(divEl, \".technical-submit-bank-transfer\", true);\r\n if (eventDisposables && eventDisposables.add) {\r\n eventDisposables.add([\r\n eXpress.html.addEventListener(bankTransferTitleEl, \"click\", onBankTransferClick),\r\n eXpress.html.addEventListener(bankTransferButtonEl, \"click\", onBankTransferSubmit)\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n injectKlarnaAdditionalFeeMessage = function (listEl, description, feeMessage) {\r\n var contentEl = eXpress.html.querySelector(listEl, \".adyen-checkout__payment-method__details__content\", false);\r\n if (contentEl) {\r\n var buttonEl = eXpress.html.querySelector(contentEl, buttonSelector, false);\r\n if (buttonEl) {\r\n var remarkEl = eXpress.html.querySelector(contentEl, \".m-adyen-drop-in__remarks\", false);\r\n if (!remarkEl && obKlarna) {\r\n obKlarna.disconnect();\r\n var remarksDiv = document.createElement(\"div\");\r\n remarksDiv.classList.add(\"m-adyen-drop-in__remarks\");\r\n var feeMessageEl = document.createElement(\"p\");\r\n feeMessageEl.innerHTML = feeMessage;\r\n feeMessageEl.classList.add(\"a-typography--remarks\");\r\n var descriptionEl = document.createElement(\"p\");\r\n descriptionEl.innerHTML = description;\r\n descriptionEl.classList.add(\"m-adyen-drop-in__description\");\r\n remarksDiv.append(descriptionEl);\r\n remarksDiv.append(feeMessageEl);\r\n if (contentEl.parentElement)\r\n contentEl.parentElement.insertBefore(remarksDiv, contentEl);\r\n buttonEl.classList.remove(\"adyen-checkout__button--standalone\");\r\n }\r\n }\r\n }\r\n };\r\n injectSwishMessage = function (message) {\r\n var swishDropin = eXpress.html.querySelector(document, \".technical-dropin-container\");\r\n if (swishDropin) {\r\n var msgEl = eXpress.html.querySelector(swishDropin, \".adyen-checkout__qr-loader__subtitle\", false);\r\n if (msgEl) {\r\n var remarksDiv = document.createElement(\"div\");\r\n remarksDiv.classList.add(\"m-adyen-drop-in__remarks\");\r\n var messageEl = document.createElement(\"p\");\r\n messageEl.innerHTML = message;\r\n messageEl.classList.add(\"a-typography--remarks\");\r\n remarksDiv.append(messageEl);\r\n if (msgEl.parentElement)\r\n msgEl.parentElement.insertBefore(remarksDiv, msgEl);\r\n }\r\n else\r\n setTimeout(function () { injectSwishMessage(message); }, 100);\r\n }\r\n else\r\n setTimeout(function () { injectSwishMessage(message); }, 100);\r\n };\r\n toggleSelectedPaymentMethodState = function (el, select) {\r\n if (el)\r\n el.classList.toggle(selectedClass, select);\r\n };\r\n toggleDisableAllButtonStates = function (disable) {\r\n var buttonEls = eXpress.html.querySelectorAll(document, buttonSelector);\r\n buttonEls.forEach(function (buttonEl) {\r\n toggleDisableButtonState(buttonEl, disable);\r\n });\r\n var els = eXpress.html.querySelectorAll(document, paymentMethodSelector);\r\n els.forEach(function (el) { toggleSelectedPaymentMethodState(el, false); });\r\n };\r\n toggleDisableButtonState = function (buttonEl, disable, changeAttribute) {\r\n if (changeAttribute === void 0) { changeAttribute = true; }\r\n if (disable) {\r\n buttonEl.classList.add(\"a-button--disabled\");\r\n if (changeAttribute)\r\n buttonEl.setAttribute(\"disabled\", \"true\");\r\n }\r\n else {\r\n buttonEl.classList.remove(\"a-button--disabled\");\r\n if (changeAttribute)\r\n buttonEl.removeAttribute(\"disabled\");\r\n }\r\n };\r\n injectExtraPaymentMethods = function () {\r\n if (placeOrderContainerEl) {\r\n var templatesEl = eXpress.html.querySelector(placeOrderContainerEl, \".technical-banktransfer-templates\", false);\r\n if (templatesEl)\r\n injectCustomInvoiceMethod(templatesEl);\r\n }\r\n };\r\n onBrand = function (callBack) {\r\n if (callBack && callBack.brand) {\r\n selectedPaymentBrand = callBack.brand;\r\n }\r\n };\r\n init = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getPaymentMethods().then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var translations;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n translations = {};\r\n if (loadingEl)\r\n eXpress.html.hide(loadingEl);\r\n if (res.translations)\r\n translations = res.translations;\r\n if (!res.redirectUrl) return [3, 1];\r\n window.location.href = res.redirectUrl;\r\n return [3, 3];\r\n case 1:\r\n configuration = {\r\n paymentMethodsResponse: res,\r\n clientKey: clientKey,\r\n locale: locale === \"nl_BE\" ? \"nl_NL\" : locale,\r\n translations: translations,\r\n environment: environment,\r\n showPayButton: true,\r\n countryCode: countryCode,\r\n onError: function (error, component) {\r\n if (error.name !== 'CANCEL')\r\n return;\r\n adyenDropInComponent.closeActivePaymentMethod();\r\n deselectPaymentMethod();\r\n },\r\n onPaymentMethodsRequest: function (data, actions) { return __awaiter(_this, void 0, void 0, function () {\r\n var paymentMethods;\r\n return __generator(this, function (_a) {\r\n paymentMethods = getPaymentMethods();\r\n actions.resolve(paymentMethods);\r\n return [2];\r\n });\r\n }); },\r\n onSubmit: function (state, component, actions) {\r\n var submit = function (token) {\r\n var swishAppNotAvailable = containerEl.dataset.swishappnotavailable || \"\";\r\n if (state.isValid && validate()) {\r\n toggleDisableAllButtonStates(true);\r\n var data = {\r\n Newsletter: newsletterEl.checked,\r\n PersonalMessage: personalMessageEl.checked,\r\n ForceNewOrder: forceNewOrder,\r\n PaymentRequest: state.data,\r\n Token: token || '',\r\n TestOrderOption: getTestOrderOptionValue(testOrderOptionEl),\r\n PaymentBrand: state.data.paymentMethod && state.data.paymentMethod.brand ? state.data.paymentMethod.brand : selectedPaymentBrand,\r\n PaymentName: state.data.paymentMethod.storedPaymentMethodId && state.data.paymentMethod.storedPaymentMethodId !== ''\r\n ? 'storedcard'\r\n : res.paymentMethods && res.paymentMethods.find(function (p) { return p.type === (state.data.paymentMethod.type === \"scheme\" && selectedPaymentBrand === \"bcmc\"\r\n ? selectedPaymentBrand\r\n : state.data.paymentMethod.type); }).name || '',\r\n SupportedShopperInteractions: res.storedPaymentMethods && state.data.paymentMethod.storedPaymentMethodId && state.data.paymentMethod.storedPaymentMethodId !== ''\r\n ? res.storedPaymentMethods.find(function (s) { return s.id === state.data.paymentMethod.storedPaymentMethodId; }).supportedShopperInteractions\r\n : []\r\n };\r\n var liElSwish = eXpress.html.querySelector(document, \".adyen-checkout__payment-method--swish\");\r\n if (liElSwish)\r\n injectSwishMessage(swishAppNotAvailable);\r\n initiatePayment(data, component, actions);\r\n }\r\n else {\r\n component.setStatus('ready');\r\n return false;\r\n }\r\n };\r\n if (recaptchaEnabled) {\r\n fetchRecaptchaToken().then(function (token) {\r\n submit(token);\r\n });\r\n }\r\n else {\r\n submit();\r\n }\r\n },\r\n onAdditionalDetails: function (state, component, actions) {\r\n submitAdditionalDetails(state.data, component, actions);\r\n }\r\n };\r\n dropInOpts = {\r\n openFirstPaymentMethod: false,\r\n openFirstStoredPaymentMethod: false,\r\n showStoredPaymentMethods: true,\r\n showRemovePaymentMethodButton: true,\r\n paymentMethodsConfiguration: {\r\n bcmc: {\r\n hasHolderName: true,\r\n enableStoreDetails: enableStoreDetails,\r\n holderNameRequired: true,\r\n onBrand: onBrand\r\n },\r\n card: {\r\n hasHolderName: true,\r\n enableStoreDetails: enableStoreDetails,\r\n holderNameRequired: true,\r\n hideCVC: false,\r\n onBrand: onBrand\r\n },\r\n applepay: {\r\n amount: {\r\n currency: currency,\r\n value: amount,\r\n countryCode: 'BE'\r\n },\r\n onClick: function (resolve) {\r\n validate();\r\n return resolve(true);\r\n }\r\n },\r\n paypal: {\r\n environment: environment,\r\n countryCode: countryCode,\r\n amount: {\r\n currency: currency,\r\n value: amount\r\n },\r\n onClick: function () {\r\n return validate();\r\n }\r\n },\r\n bcmc_mobile: {\r\n icon: eXpress.utils.resolveVersionedUrlCdn('/appdata/', 'img/payconiq.png')\r\n },\r\n threeDS2: { challengeWindowSize: '05' }\r\n },\r\n onSelect: function (component) {\r\n validate();\r\n selectedPaymentBrand = component.props.type;\r\n toggleDisableButtonState(resetButtonEl, false, false);\r\n toggleDisableAllButtonStates(false);\r\n var bankTransferEl = eXpress.html.querySelector(containerEl, \".technical-bank-transfer\", false);\r\n bankTransferEl && deselectPaymentMethod();\r\n var message = containerEl.dataset.klarnamessage || \"\";\r\n var description = containerEl.dataset.klarnadescription || \"\";\r\n if (component._id) {\r\n var currentEl_1 = eXpress.html.querySelector(containerEl, \"#container-\" + component._id, true);\r\n var obOptionalCvc = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n if (!mutation.addedNodes)\r\n return;\r\n var optionalCvcEl = eXpress.html.querySelector(currentEl_1, \".adyen-checkout__field__cvc--optional\", false);\r\n if (optionalCvcEl)\r\n optionalCvcEl.style.display = \"none\";\r\n });\r\n });\r\n obOptionalCvc.observe(currentEl_1, { childList: true, subtree: true, attributes: false, characterData: false });\r\n if (placeOrderContainerEl && message && description) {\r\n var liEl_1 = eXpress.html.getParentWithClassName(currentEl_1, \"adyen-checkout__payment-method--klarna\");\r\n if (liEl_1) {\r\n refreshMiniBasket && updateCartHandlingCost(1, 1);\r\n if (obKlarna === undefined) {\r\n obKlarna = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n if (!mutation.addedNodes)\r\n return;\r\n injectKlarnaAdditionalFeeMessage(liEl_1, description, message);\r\n });\r\n });\r\n obKlarna.observe(liEl_1, { childList: true, subtree: true, attributes: false, characterData: false });\r\n }\r\n }\r\n else {\r\n var noKlarnaLiEl = eXpress.html.getParentWithClassName(currentEl_1, paymentMethodClass);\r\n toggleSelectedPaymentMethodState(noKlarnaLiEl, true);\r\n refreshMiniBasket && updateCartHandlingCost(1, 3);\r\n }\r\n }\r\n }\r\n },\r\n onDisableStoredPaymentMethod: function (storedPaymentMethodId, resolve, reject) {\r\n disableStoredPaymentMethod({ RecurringDetailReference: storedPaymentMethodId }).then(function (res) {\r\n if (res.redirectUrl)\r\n window.location.href = res.redirectUrl;\r\n if (res.success) {\r\n resolve();\r\n toggleDisableButtonState(resetButtonEl, true, false);\r\n }\r\n else\r\n reject();\r\n });\r\n },\r\n onReady: function () { injectExtraPaymentMethods(); }\r\n };\r\n return [4, AdyenCheckout(configuration)];\r\n case 2:\r\n adyenCheckoutObject = _a.sent();\r\n adyenDropInComponent = new Dropin(adyenCheckoutObject, dropInOpts).mount(containerEl);\r\n _a.label = 3;\r\n case 3: return [2];\r\n }\r\n });\r\n }); });\r\n eXpress.html.addEventListener(resetButtonEl, 'click', function (ev) {\r\n ev.preventDefault();\r\n if (resetButtonEl && !resetButtonEl.classList.contains(\"a-button--disabled\")) {\r\n adyenCheckoutObject.remove(adyenDropInComponent);\r\n eXpress.utils.showLoadingDialog(getPaymentMethods().then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n adyenCheckoutObject.setOptions({\r\n paymentMethodsResponse: res\r\n });\r\n adyenDropInComponent = new Dropin(adyenCheckoutObject, dropInOpts).mount(containerEl);\r\n refreshMiniBasket && updateCartHandlingCost(1, 3);\r\n toggleDisableButtonState(resetButtonEl, true, false);\r\n containerEl.scrollIntoView();\r\n return [2];\r\n });\r\n }); }));\r\n }\r\n });\r\n return [2];\r\n });\r\n }); };\r\n return [4, init()];\r\n case 1:\r\n _b.sent();\r\n return [2, {\r\n dispose: function () { obKlarna && obKlarna.disconnect(); eventDisposables && eventDisposables.dispose(); }\r\n }];\r\n }\r\n });\r\n });\r\n }\r\n checkout.createAdyenDropIn = createAdyenDropIn;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createConfirmation(containerEl, deps) {\r\n var beaContainerEl = eXpress.html.querySelector(containerEl, \".technical-bea-container\", false);\r\n var beaSubmitButtonEl = eXpress.html.querySelector(containerEl, \".technical-bea-submit\", false);\r\n var beaAccnrInputContainerEl = eXpress.html.querySelector(containerEl, \".technical-beaaccnr-input-container\", false);\r\n var loginContainer = eXpress.html.querySelector(document, \".technical-login-container\", false);\r\n var loginForm = eXpress.html.querySelector(document, \".technical-login-form\", false);\r\n var loginAuthenticationLinks = eXpress.html.querySelector(document, \".technical-login\", false);\r\n var loginFormComponent;\r\n var registerContainer = eXpress.html.querySelector(document, \".technical-register-container\", false);\r\n var registerForm = eXpress.html.querySelector(document, \".technical-register-form\", false);\r\n var eventDisposables = eXpress.utils.compositeDisposable([]);\r\n var doMondoCall = deps.doMondoCall, showLoginPopup = deps.showLoginPopup;\r\n var orderId;\r\n var beaAccnr;\r\n var onBeaSubmit = function (e) {\r\n e.preventDefault();\r\n if (beaContainerEl && beaAccnrInputContainerEl) {\r\n beaAccnrInputContainerEl.classList.remove(\"a-form-input--error\");\r\n beaContainerEl.classList.remove(\"m-bea-form--success\");\r\n var beaAccnrEl = eXpress.html.querySelector(beaAccnrInputContainerEl, \".technical-beaaccnr\", false);\r\n if (beaAccnrEl && beaAccnrEl.value) {\r\n beaAccnr = beaAccnrEl.value;\r\n doMondoCall(orderId, beaAccnr).then(function (res) {\r\n if (res.success === 'False')\r\n beaAccnrInputContainerEl.classList.add(\"a-form-input--error\");\r\n else {\r\n beaContainerEl.classList.add(\"m-bea-form--success\");\r\n beaContainerEl.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n }\r\n });\r\n }\r\n else {\r\n beaAccnrInputContainerEl.classList.add(\"a-form-input--error\");\r\n }\r\n }\r\n };\r\n var loggedInWithAccount = function () {\r\n document.location.reload();\r\n };\r\n var init = function () {\r\n if (beaSubmitButtonEl && eventDisposables && eventDisposables.add) {\r\n orderId = beaSubmitButtonEl.getAttribute(\"data-orderid\") || '';\r\n eventDisposables.add([\r\n eXpress.html.addEventListener(beaSubmitButtonEl, 'click', onBeaSubmit)\r\n ]);\r\n }\r\n if (loginContainer && loginForm) {\r\n loginFormComponent = eXpress.components.main.createStandardInlineLogin(loginContainer, loginForm, {\r\n showForgotPasswordPopup: deps.showForgotPasswordPopup,\r\n popups: deps.popups\r\n }, null, loggedInWithAccount);\r\n loginFormComponent.hideCloseButton();\r\n loginFormComponent.disableInput(\"email\");\r\n }\r\n if (registerContainer && registerForm) {\r\n eXpress.components.main.createStandardInlineRegister(registerContainer, registerForm, {\r\n showForgotPasswordPopup: deps.showForgotPasswordPopup,\r\n popups: deps.popups\r\n }, null, loggedInWithAccount);\r\n }\r\n loginAuthenticationLinks && loginAuthenticationLinks.addEventListener('click', function (_) { return showLoginPopup(loginAuthenticationLinks.dataset.mode, loginAuthenticationLinks.dataset.email); });\r\n };\r\n init();\r\n return {\r\n dispose: function () { eventDisposables && eventDisposables.dispose(); },\r\n loginForm: loginFormComponent\r\n };\r\n }\r\n checkout.createConfirmation = createConfirmation;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createDeliveryAddress(containerEl, deps) {\r\n var formDeps = deps.formDeps, getAddress = deps.getAddress, isNew = deps.isNew, disableDefaultAddress = deps.disableDefaultAddress, countryChangeEnabled = deps.countryChangeEnabled;\r\n var popupEl = eXpress.html.querySelector(document, '.p-delivery-address', true);\r\n var buttonContainerEl = eXpress.html.querySelector(popupEl, '.technical-delivery-address-button-container', true);\r\n var saveDeliveryAddressButtonEl = eXpress.html.querySelector(buttonContainerEl, '.technical-save-delivery-address-button', true);\r\n var deliveryAddressForm = checkout.createPersonalDataForm(eXpress.html.querySelector(containerEl, '.technical-delivery-address-form', true), {\r\n onSubmit: formDeps.onSubmit,\r\n getZipCodeDefinitionAsync: formDeps.getZipCodeDefinitionAsync,\r\n getCitiesForCountryCodeAndSearchTerm: formDeps.getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: formDeps.getGetCitiesByZipCode,\r\n alternativeSubmitButtonEl: saveDeliveryAddressButtonEl\r\n });\r\n if (!isNew) {\r\n eXpress.utils.showLoadingDialog(getAddress()\r\n .then(function (res) { return deliveryAddressForm.fillFormData(res, disableDefaultAddress, countryChangeEnabled); }));\r\n }\r\n else {\r\n deliveryAddressForm.updateCountry(containerEl.dataset.defaultRegion, false);\r\n }\r\n return {\r\n setErrors: deliveryAddressForm.setErrors,\r\n dispose: deliveryAddressForm.dispose,\r\n };\r\n }\r\n checkout.createDeliveryAddress = createDeliveryAddress;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createDeliveryInfo(deliveryFormEl, rightColumnEl, gtmData, deps) {\r\n var blocked = false;\r\n var deliveryAddressPickerPopup = deps.deliveryAddressPickerPopup, changeMiniBasketServerSide = deps.changeMiniBasketServerSide, getLabelAsync = deps.getLabelAsync, pickupPickerPopup = deps.pickupPickerPopup, updateDeliveryChoices = deps.updateDeliveryChoices, pickCorrectAddressPopup = deps.pickCorrectAddressPopup, submitPartialDeliveryAddress = deps.submitPartialDeliveryAddress, hideTopMessage = deps.hideTopMessage, showTopMessage = deps.showTopMessage, iconsPopup = deps.iconsPopup, logError = deps.logError;\r\n var deliveryAddressPickerButtonEl = eXpress.html.querySelector(deliveryFormEl, \".technical-delivery-address-picker-button-homedelivery\");\r\n var pickupPickerButtonEl = eXpress.html.querySelector(deliveryFormEl, \".technical-delivery-address-picker-button-pickupdelivery\");\r\n var nextButtons = eXpress.html.querySelectorAll(rightColumnEl, \".technical-checkout-step-confirm-button\");\r\n var groups = eXpress.html.querySelectorAll(deliveryFormEl, \".technical-method-group\");\r\n var radios = eXpress.html.querySelectorAll(deliveryFormEl, \".technical-delivery-time-picker-radio\");\r\n var debugSectionEl = eXpress.html.querySelector(deliveryFormEl, \"#debugSection\");\r\n var prettyButtonEl = eXpress.html.querySelector(deliveryFormEl, \"#pretty\");\r\n var thumbInfoEls = eXpress.html.querySelectorAll(deliveryFormEl, '.technical-time-picker-thumb-info');\r\n var goToDeliveryMethodsLabels = eXpress.html.querySelectorAll(deliveryFormEl, '.technical-method-group-gotodatepicker');\r\n var iconsEls = eXpress.html.querySelectorAll(deliveryFormEl, '.technical-icons-popup');\r\n var resetSelectedRadioButtonAfterSlideChange = true;\r\n var activeClass = \"m-delivery-time-selector__option--selected\";\r\n var disabledClass = \"m-delivery-time-selector__option--disabled\";\r\n var currentVisibleItems;\r\n var changeHomeDeliveryAddress = function (newAddress1, newAddress2, jsonAddress) {\r\n var homeDeliveryAddress1El = eXpress.html.querySelector(deliveryFormEl, '.technical-home-address1', false);\r\n var homeDeliveryAddress2El = eXpress.html.querySelector(deliveryFormEl, '.technical-home-address2', false);\r\n selectHomeDeliveryOption();\r\n var radio = eXpress.html.querySelector(deliveryFormEl, 'input[type=\"radio\"][value*=\"home\"]');\r\n if (radio)\r\n radio.dataset.currentAddress = jsonAddress;\r\n if (homeDeliveryAddress1El)\r\n homeDeliveryAddress1El.innerHTML = newAddress1;\r\n if (homeDeliveryAddress2El)\r\n homeDeliveryAddress2El.innerHTML = newAddress2;\r\n };\r\n var selectHomeDeliveryOption = function () {\r\n var radio = eXpress.html.querySelector(deliveryFormEl, 'input[type=\"radio\"][value*=\"home\"]');\r\n if (radio) {\r\n if (radio.dataset.forceaddresspopup === \"true\")\r\n radio.dataset.forceaddresspopup = 'false';\r\n if (!radio.checked)\r\n radio.click();\r\n }\r\n };\r\n var getSelectedMethodGroup = function () {\r\n var selectedMethod = eXpress.html.querySelector(deliveryFormEl, 'input[name=\"methodGroup\"]:checked');\r\n if (!selectedMethod)\r\n return undefined;\r\n var selectedMethodGroupStr = selectedMethod.value;\r\n if (!selectedMethodGroupStr)\r\n return undefined;\r\n return selectedMethodGroupStr;\r\n };\r\n var getDeliveryChoicesItemGroup = function (selectedMethodGroupStr) {\r\n var items = [];\r\n var radios = eXpress.html.querySelectorAll(deliveryFormEl, 'input[name^=\"' + selectedMethodGroupStr + '-\"]:checked');\r\n radios.forEach(function (r) {\r\n var ids = r.dataset.cartitemids;\r\n if (ids)\r\n items.push({\r\n SelectedMethod: r.value,\r\n CartItemIds: ids.split('|'),\r\n ProductionSchedule: parseInt(r.dataset.prodsched || \"2\", 10)\r\n });\r\n });\r\n return items;\r\n };\r\n var getDeliveryChoicesItemGroups = function (selectedMethodGroupStr, withDefaults) {\r\n if (withDefaults === void 0) { withDefaults = false; }\r\n var items = [];\r\n var radios = eXpress.html.querySelectorAll(deliveryFormEl, 'input[name^=\"' + selectedMethodGroupStr + '-\"]');\r\n var groups = radios.map(function (r) { return r.name; }).filter(function (value, index, self) { return self.indexOf(value) === index; });\r\n groups.forEach(function (g) {\r\n var radiosInGroup = radios.filter(function (r) { return r.name == g; });\r\n var selected = radiosInGroup.find(function (r) { return r.checked; });\r\n if (!selected && withDefaults) {\r\n selected = radiosInGroup.find(function (r) { return !r.checked && r.dataset.default === 'true'; });\r\n }\r\n if (selected) {\r\n var ids = selected.dataset.cartitemids;\r\n if (ids)\r\n items.push({\r\n SelectedMethod: selected.value,\r\n CartItemIds: ids.split('|'),\r\n ProductionSchedule: parseInt(selected.dataset.prodsched || \"2\", 10)\r\n });\r\n }\r\n });\r\n return items;\r\n };\r\n var calculateSelectedShipping = function () {\r\n var selectedMethodGroupStr = getSelectedMethodGroup();\r\n if (!selectedMethodGroupStr) {\r\n document.location.reload();\r\n return;\r\n }\r\n var items = getDeliveryChoicesItemGroups(selectedMethodGroupStr);\r\n if (!items || items.length === 0)\r\n return;\r\n var postalInformationEl = eXpress.html.querySelector(deliveryFormEl, '#postal_information_personal_data', false);\r\n var postalInformation = '';\r\n if (postalInformationEl)\r\n postalInformation = postalInformationEl.value;\r\n changeMiniBasketServerSide(selectedMethodGroupStr, items, postalInformation);\r\n };\r\n var onWindowResize = function () {\r\n setRightColTopPosition(rightColumnEl);\r\n rightColumnEl.style.transform = \"0\";\r\n };\r\n var setRightColTopPosition = function (div) {\r\n if (window.innerHeight < div.clientHeight)\r\n div.style.top = (window.innerHeight - div.clientHeight - 20) + 'px';\r\n else\r\n div.style.top = '0px';\r\n };\r\n var prettyFi = function () {\r\n var textEl = eXpress.html.querySelector(debugSectionEl, \"textarea\");\r\n if (textEl) {\r\n var ugly = textEl.value;\r\n var json = JSON.parse(ugly);\r\n textEl.value = JSON.stringify(json, undefined, 4);\r\n }\r\n };\r\n var onNextButtonClick = function (event) {\r\n if (blocked)\r\n return;\r\n var buttonEl = (event.currentTarget || event.srcElement);\r\n var button = components.main.createButton(buttonEl);\r\n button.disable();\r\n if (eXpress.html.querySelectorAll(deliveryFormEl, 'input[name=\"methodGroup\"]:checked').length === 0) {\r\n getLabelAsync(\"Label.Delivery.DeliveryMethod.NoDeliveryMethodSelected\").then(function (res) { return showTopMessage(components.main.PageLogStyle.Error, res); });\r\n button.enable();\r\n return;\r\n }\r\n var selectedMethod = eXpress.html.querySelector(deliveryFormEl, 'input[name=\"methodGroup\"]:checked');\r\n if (!selectedMethod) {\r\n document.location.reload();\r\n return;\r\n }\r\n var selectedMethodGroupStr = selectedMethod.value;\r\n if (!selectedMethodGroupStr) {\r\n document.location.reload();\r\n return;\r\n }\r\n if (eXpress.html.querySelectorAll(deliveryFormEl, '#choices-' + selectedMethodGroupStr + ' .technical-method-group-items-content').length !==\r\n eXpress.html.querySelectorAll(deliveryFormEl, '#choices-' + selectedMethodGroupStr + ' .technical-method-group-items-content .technical-delivery-time-picker-radio:checked').length) {\r\n getLabelAsync(\"Label.Delivery.DeliveryMethod.NoDeliveryMomentSelected\").then(function (res) { return showTopMessage(components.main.PageLogStyle.Error, res); });\r\n button.enable();\r\n return;\r\n }\r\n if (eXpress.html.querySelectorAll(deliveryFormEl, 'input[name=\"methodGroup\"]:checked:not([data-forceaddresspopup=\"true\"])').length === 0) {\r\n getLabelAsync(\"Label.Delivery.DeliveryMethod.NoPickUpPointSelected\").then(function (res) { return showTopMessage(components.main.PageLogStyle.Error, res); });\r\n button.enable();\r\n return;\r\n }\r\n if (selectedMethodGroupStr === 'homedelivery' && selectedMethod.dataset.currentAddress) {\r\n var address_1 = JSON.parse(selectedMethod.dataset.currentAddress);\r\n var useExternalAddressValidation = (selectedMethod.dataset.useexternaladdressvalidation || 'true') === \"true\";\r\n if (useExternalAddressValidation)\r\n components.main.validateAddressAsync(address_1.Street || '', address_1.HouseNumber || '', address_1.ZipCode || '', address_1.City || '', address_1.RegionCountryISO || '', { logError: logError }).then(function (res) {\r\n if (res) {\r\n pickCorrectAddressPopup([\r\n { Street: eXpress.utils.capitalizeFirstLetterOfWords(res.street), HouseNumber: res.nr, ZipCode: res.zip, City: res.city, RegionCountryISO: address_1.RegionCountryISO, BoxNumber: address_1.BoxNumber, IsDefault: true },\r\n { Street: address_1.Street, HouseNumber: address_1.HouseNumber, ZipCode: address_1.ZipCode, City: address_1.City, BoxNumber: address_1.BoxNumber, RegionCountryISO: address_1.RegionCountryISO }\r\n ], function () { button.enable(); }, function (popup) {\r\n var list = eXpress.html.querySelector(popup, '.technical-pick-delivery-address-container', true);\r\n for (var i = 0; i < list.children.length; i++) {\r\n var input = eXpress.html.querySelector(list.children[i], 'input', true);\r\n eXpress.html.addEventListener(input, 'change', function (ev) {\r\n ev.preventDefault();\r\n });\r\n eXpress.html.addEventListener(list.children[i], 'click', function (ev) {\r\n var current = eXpress.html.querySelector(list, '.technical-default-address-tile.m-address-tile--active,.technical-address-tile.m-address-tile--active', true);\r\n current.classList.remove('m-address-tile--active');\r\n eXpress.html.querySelector(current, 'input', true).checked = false;\r\n if (ev.currentTarget) {\r\n var changed = eXpress.html.querySelector(ev.currentTarget, '.technical-default-address-tile,.technical-address-tile', true);\r\n changed.classList.add('m-address-tile--active');\r\n eXpress.html.querySelector(changed, 'input', true).checked = true;\r\n }\r\n });\r\n }\r\n var continueButton = eXpress.html.querySelector(popup, '.technical-add-delivery-address-button', true);\r\n eXpress.html.addEventListener(continueButton, 'click', function () {\r\n var addressTile = eXpress.html.querySelector(popup, '.technical-default-address-tile', true);\r\n var hasSameDeliveryAddress = false;\r\n if (addressTile)\r\n hasSameDeliveryAddress = addressTile.getAttribute('data-hassamedeliveryaddress') === \"True\";\r\n var recommended = eXpress.html.querySelector(popup, '.technical-default-address-tile input', true);\r\n if (recommended.checked) {\r\n eXpress.analytics.trackAddressValidationEvent(\"ClickedAddressSuggestionDeliveryOptions\");\r\n var address_2 = JSON.parse(recommended.value);\r\n if (address_2.Street) {\r\n submitPartialDeliveryAddress(address_2.Street, hasSameDeliveryAddress).then(function () {\r\n doActualSubmit(buttonEl, button, selectedMethodGroupStr);\r\n });\r\n }\r\n }\r\n else {\r\n eXpress.analytics.trackAddressValidationEvent(\"ClickedOwnAddressDeliveryOptions\");\r\n doActualSubmit(buttonEl, button, selectedMethodGroupStr);\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n doActualSubmit(buttonEl, button, selectedMethodGroupStr);\r\n }\r\n });\r\n else\r\n doActualSubmit(buttonEl, button, selectedMethodGroupStr);\r\n return;\r\n }\r\n doActualSubmit(buttonEl, button, selectedMethodGroupStr);\r\n };\r\n var doActualSubmit = function (buttonEl, button, selectedMethodGroupStr) {\r\n blocked = true;\r\n var items = getDeliveryChoicesItemGroup(selectedMethodGroupStr);\r\n if (!buttonEl.dataset)\r\n throw new Error(\"Clicking next step on deliveryoptions: Button has no dataset: button css classes: \" + buttonEl.className);\r\n if (!buttonEl.dataset.posid)\r\n throw new Error(\"Clicking next step on deliveryoptions: Button has no posID: button css classes: \" + buttonEl.className);\r\n if (!buttonEl.dataset.accountid)\r\n throw new Error(\"Clicking next step on deliveryoptions: Button has no accountID: button css classes: \" + buttonEl.className);\r\n if (!buttonEl.dataset.cartid)\r\n throw new Error(\"Clicking next step on deliveryoptions: Button has cartID: button css classes: \" + buttonEl.className);\r\n var postalInformationEl = eXpress.html.querySelector(deliveryFormEl, '#postal_information_personal_data', false);\r\n var postalInformation = '';\r\n if (postalInformationEl)\r\n postalInformation = postalInformationEl.value;\r\n eXpress.utils.showLoadingDialog(updateDeliveryChoices((buttonEl.dataset.posid), (buttonEl.dataset.accountid), (buttonEl.dataset.cartid), selectedMethodGroupStr, items, postalInformation)\r\n .then(function (res) {\r\n if (res) {\r\n if (gtmData) {\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push(JSON.parse(gtmData));\r\n }\r\n document.location.href = res;\r\n return eXpress.utils.wait(99999);\r\n }\r\n else {\r\n button.enable();\r\n }\r\n }));\r\n };\r\n var onTimeSelectorClick = function (clickedEl, allEls) {\r\n var selectedEl = allEls.find(function (el) { return eXpress.html.hasClass(el, activeClass); });\r\n if (selectedEl) {\r\n if (selectedEl.dataset.day === clickedEl.dataset.day)\r\n return;\r\n eXpress.html.removeClass(selectedEl, activeClass);\r\n }\r\n eXpress.html.addClass(clickedEl, activeClass);\r\n var selectedDay = clickedEl.dataset.day || '';\r\n var itemGroupContentEl = eXpress.html.getParentWithClassName(clickedEl, 'technical-method-group-items-content');\r\n if (itemGroupContentEl) {\r\n var resetUserChoice = false;\r\n var radioWithLowestPrice_1;\r\n var deliveryTypesRadioContainerEl = eXpress.html.querySelector(itemGroupContentEl, '.technical-delivery-types-radio-container', true);\r\n var radios_1 = eXpress.html.querySelectorAll(deliveryTypesRadioContainerEl, 'input[type=\"radio\"]');\r\n var selectedRadio = eXpress.html.querySelector(deliveryTypesRadioContainerEl, 'input[type=\"radio\"]:checked');\r\n var _loop_1 = function (i) {\r\n var radio = radios_1[i];\r\n var allowedDatesString = radio.dataset.days || '';\r\n var radioNoLongerAvailable = true;\r\n radio.dataset.availablefordate = 'false';\r\n allowedDatesString.split('|').forEach(function (d) {\r\n if (selectedDay === d) {\r\n radioNoLongerAvailable = false;\r\n radio.dataset.availablefordate = 'true';\r\n if (radio.offsetParent) {\r\n if (radioWithLowestPrice_1) {\r\n var currentLowestExtraPrice = 0;\r\n var newExtraPrice = 0;\r\n if (radioWithLowestPrice_1.dataset.extraprice)\r\n currentLowestExtraPrice = parseFloat(radioWithLowestPrice_1.dataset.extraprice);\r\n if (radio.dataset.extraprice)\r\n newExtraPrice = parseFloat(radio.dataset.extraprice);\r\n if (newExtraPrice < currentLowestExtraPrice)\r\n radioWithLowestPrice_1 = radio;\r\n }\r\n else {\r\n radioWithLowestPrice_1 = radio;\r\n }\r\n }\r\n }\r\n });\r\n if (radioNoLongerAvailable && radio === selectedRadio)\r\n resetUserChoice = true;\r\n };\r\n for (var i = 0; i < radios_1.length; i++) {\r\n _loop_1(i);\r\n }\r\n if (!selectedRadio || (resetUserChoice && resetSelectedRadioButtonAfterSlideChange)) {\r\n for (var i = 0; i < radios_1.length; i++) {\r\n var radio = radios_1[i];\r\n if (radio.offsetParent && radio.dataset.availablefordate === 'true' && (radioWithLowestPrice_1 && radio.id === radioWithLowestPrice_1.id)) {\r\n radio.click();\r\n break;\r\n }\r\n }\r\n }\r\n resetSelectedRadioButtonAfterSlideChange = true;\r\n }\r\n };\r\n var addOnTimeSelectorClick = function (clickedEl, allEls) {\r\n clickedEl.addEventListener('click', function () { return onTimeSelectorClick(clickedEl, allEls); });\r\n };\r\n var initTimeSelectorElements = function (groupEl) {\r\n var timeSelectorEls = eXpress.html.querySelectorAll(groupEl, '.technical-delivery-time-selector:not(.illegal)');\r\n if (timeSelectorEls.length > 1) {\r\n timeSelectorEls.forEach(function (el) {\r\n if (!eXpress.html.hasClass(el, disabledClass))\r\n addOnTimeSelectorClick(el, timeSelectorEls);\r\n });\r\n }\r\n };\r\n var onGroupChange = function (e) {\r\n var radio = (e.target || e.srcElement);\r\n if (radio.checked) {\r\n hideTopMessage();\r\n var val_1 = radio.value;\r\n if (!deliveryFormEl)\r\n return;\r\n var deliveryAddresses = eXpress.html.querySelectorAll(deliveryFormEl, '.technical-method-adress-picker');\r\n for (var i = 0; i < deliveryAddresses.length; i++) {\r\n var labelDeliveryMethods = eXpress.html.querySelector(deliveryAddresses[i], '.technical-method-group-gotodatepicker', false);\r\n var radiobutton = eXpress.html.querySelector(deliveryAddresses[i], '.technical-method-group');\r\n if (!labelDeliveryMethods || !radiobutton)\r\n continue;\r\n labelDeliveryMethods.classList.toggle('a-link--disabled', !radiobutton.checked);\r\n }\r\n var methodGroupContentEl = eXpress.html.querySelector(deliveryFormEl, '.technical-method-group-content', true);\r\n eXpress.html.show(methodGroupContentEl);\r\n var items = eXpress.html.querySelectorAll(deliveryFormEl, '.technical-method-group-content-item');\r\n items.map(function (item) {\r\n if (item.id !== 'choices-' + val_1) {\r\n eXpress.html.hide(item);\r\n }\r\n else {\r\n eXpress.html.show(item);\r\n checkAndHideIllegalMethods(radio.dataset.forceshipmentmethods || '', item);\r\n var groupItemsContentEls = eXpress.html.querySelectorAll(item, '.technical-method-group-items-content');\r\n groupItemsContentEls.forEach(function (groupItem) { return initTimeSelectorElements(groupItem); });\r\n }\r\n });\r\n truncateThumbs();\r\n currentVisibleItems = document.getElementById('choices-' + val_1);\r\n if (currentVisibleItems) {\r\n calculateSelectedShipping();\r\n }\r\n if (radio.dataset.forceaddresspopup === 'true' && pickupPickerButtonEl && !disableButtonClick) {\r\n disableButtonClick = true;\r\n pickupPickerPopup(pickupPickerButtonEl.dataset.deliverymethod || '', parseFloat(pickupPickerButtonEl.dataset.baseprice || '0')).always(function () { disableButtonClick = false; });\r\n }\r\n }\r\n };\r\n var checkAndHideIllegalMethods = function (forceShipmentMethod, groupContentItem) {\r\n var allPackages = eXpress.html.querySelectorAll(groupContentItem, '.technical-method-group-items-content');\r\n var visibleRadioCount = 0;\r\n allPackages.forEach(function (onePackage) {\r\n var allRadios = eXpress.html.querySelector(onePackage, '.technical-delivery-types-radio-container', true).children;\r\n for (var i = 0; i < allRadios.length; i++) {\r\n eXpress.html.show(allRadios[i]);\r\n }\r\n var forceShipmentMethods = forceShipmentMethod ? forceShipmentMethod.toLowerCase().split(',') : [];\r\n if (forceShipmentMethods.length == 0) {\r\n return;\r\n }\r\n var selectedRadioWasHidden = false;\r\n var foundDays = [];\r\n var firstVisibleMethodRadioButton = null;\r\n var firstActivatedDay = \"\";\r\n for (var i = 0; i < allRadios.length; i++) {\r\n var childRadio = eXpress.html.querySelector(allRadios[i], '.technical-delivery-time-picker-radio', true);\r\n if (!forceShipmentMethods.includes(childRadio.value.toLowerCase()) && childRadio.value.toLowerCase() !== 'email') {\r\n if (childRadio.checked)\r\n selectedRadioWasHidden = true;\r\n eXpress.html.hide(allRadios[i]);\r\n }\r\n else {\r\n if (!firstVisibleMethodRadioButton) {\r\n firstVisibleMethodRadioButton = childRadio;\r\n }\r\n var radioDays = childRadio.dataset.days ? childRadio.dataset.days.split(\"|\") : undefined;\r\n if (radioDays) {\r\n if (!firstActivatedDay)\r\n firstActivatedDay = radioDays[0];\r\n foundDays.push.apply(foundDays, radioDays);\r\n }\r\n visibleRadioCount++;\r\n }\r\n }\r\n var days = eXpress.html.querySelectorAll(onePackage, '.technical-delivery-time-selector');\r\n var activateDayDiv = null;\r\n for (var i = 0; i < days.length; i++) {\r\n var day = days[i].dataset.day;\r\n if (day) {\r\n if (foundDays.indexOf(day) > -1) {\r\n days[i].classList.remove(\"illegal\", \"u-hide\");\r\n if (!activateDayDiv && day === firstActivatedDay)\r\n activateDayDiv = days[i];\r\n }\r\n else {\r\n days[i].classList.add(\"illegal\", \"u-hide\");\r\n }\r\n }\r\n }\r\n if (firstVisibleMethodRadioButton && (selectedRadioWasHidden || visibleRadioCount === 1)) {\r\n firstVisibleMethodRadioButton.checked = true;\r\n if (activateDayDiv) {\r\n days.forEach(function (day) {\r\n day.classList.remove(activeClass);\r\n });\r\n activateDayDiv.classList.add(activeClass);\r\n }\r\n }\r\n });\r\n };\r\n var onRadioChange = function (e) {\r\n hideTopMessage();\r\n var radio = (e.target || e.srcElement);\r\n if (radio.checked)\r\n calculateSelectedShipping();\r\n var parent = eXpress.html.getParentWithClassName(radio, 'technical-method-group-items-content');\r\n if (parent) {\r\n var radios_2 = eXpress.html.querySelectorAll(parent, 'input[type=\"radio\"]');\r\n var timeSelectorEls = eXpress.html.querySelectorAll(parent, '.technical-delivery-time-selector:not(.illegal)');\r\n radios_2.forEach(function (el) { return el.disabled = true; });\r\n var activeTimeSelector = eXpress.html.querySelector(parent, '.' + activeClass);\r\n var selectedTimeSelectorDay_1 = (activeTimeSelector === null || activeTimeSelector === void 0 ? void 0 : activeTimeSelector.dataset.day) || '';\r\n var radioDateString = radio.dataset.days || '';\r\n var radioAllAllowedDates_1 = radioDateString.split('|');\r\n var switchTimeSelector_1 = true;\r\n radioAllAllowedDates_1.forEach(function (d) {\r\n if (d === selectedTimeSelectorDay_1)\r\n switchTimeSelector_1 = false;\r\n });\r\n if (switchTimeSelector_1) {\r\n if (activeClass && activeTimeSelector)\r\n eXpress.html.removeClass(activeTimeSelector, activeClass);\r\n timeSelectorEls.every(function (el) {\r\n var slideDay = el.dataset.day || '';\r\n if (radioAllAllowedDates_1.indexOf(slideDay) >= 0) {\r\n eXpress.html.addClass(el, activeClass);\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n radios_2.forEach(function (el) { return el.disabled = false; });\r\n }\r\n };\r\n var disableButtonClick = false;\r\n if (debugSectionEl && prettyButtonEl)\r\n eXpress.html.addEventListener(prettyButtonEl, \"click\", prettyFi);\r\n eXpress.html.addEventListener(window, \"resize\", eXpress.utils.debounce(onWindowResize, 250));\r\n if (deliveryAddressPickerButtonEl)\r\n eXpress.html.addEventListener(deliveryAddressPickerButtonEl, 'click', function () {\r\n if (!disableButtonClick) {\r\n disableButtonClick = true;\r\n deliveryAddressPickerPopup().always(function () { disableButtonClick = false; });\r\n }\r\n });\r\n if (pickupPickerButtonEl)\r\n eXpress.html.addEventListener(pickupPickerButtonEl, 'click', function () {\r\n if (!disableButtonClick) {\r\n disableButtonClick = true;\r\n pickupPickerPopup(pickupPickerButtonEl.dataset.deliverymethod || '', parseFloat(pickupPickerButtonEl.dataset.baseprice || '0')).always(function () { disableButtonClick = false; });\r\n }\r\n });\r\n if (nextButtons)\r\n nextButtons.forEach(function (nextButton) { return eXpress.html.addEventListener(nextButton, \"click\", onNextButtonClick); });\r\n if (groups)\r\n groups.forEach(function (group) { return eXpress.html.addEventListener(group, \"click\", onGroupChange); });\r\n if (radios)\r\n radios.forEach(function (radio) { return eXpress.html.addEventListener(radio, \"change\", onRadioChange); });\r\n if (goToDeliveryMethodsLabels)\r\n goToDeliveryMethodsLabels.forEach(function (label) { return eXpress.html.addEventListener(label, 'click', function (e) {\r\n var labelHtmlElement = label;\r\n if (label.classList.contains('a-link--disabled') || !labelHtmlElement || !labelHtmlElement.hash)\r\n e.preventDefault();\r\n }); });\r\n var checkedGroup = groups.filter(function (g) { return g.checked; });\r\n if (checkedGroup.length > 0) {\r\n var group = checkedGroup[0].value;\r\n currentVisibleItems = document.getElementById('choices-' + group);\r\n if (currentVisibleItems) {\r\n var forceShipmentMethods = checkedGroup[0].dataset.forceshipmentmethods;\r\n if (forceShipmentMethods && forceShipmentMethods.length > 0)\r\n checkAndHideIllegalMethods(forceShipmentMethods, currentVisibleItems);\r\n var groupContentEls = eXpress.html.querySelectorAll(currentVisibleItems, '.technical-method-group-items-content');\r\n groupContentEls.forEach(function (el) { return initTimeSelectorElements(el); });\r\n }\r\n }\r\n var truncateThumbs = function () {\r\n thumbInfoEls.map(function (el) {\r\n var temp = el.innerHTML;\r\n el.innerHTML = 'TestTest';\r\n var height = el.clientHeight;\r\n el.innerHTML = temp;\r\n shave(el, height, { character: '\\u2026', spaces: false });\r\n });\r\n };\r\n eXpress.html.addEventListener(window, \"resize\", eXpress.utils.debounce(truncateThumbs, 250));\r\n iconsEls.forEach(function (i) {\r\n eXpress.html.addEventListener(i, \"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (disableButtonClick)\r\n return;\r\n disableButtonClick = true;\r\n iconsPopup('Label.Delivery.DeliveryMethod.PickUpPoint.Info.Title', 'Label.Delivery.DeliveryMethod.PickUpPoint.Info').always(function () { return disableButtonClick = false; });\r\n });\r\n });\r\n truncateThumbs();\r\n var resizeObserver = new ResizeObserver(function (entries) {\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var entry = entries_1[_i];\r\n if (entry.contentRect && entry.target)\r\n if (entry.contentRect.height != entry.target.clientHeight)\r\n setRightColTopPosition(entry.target);\r\n }\r\n });\r\n resizeObserver.observe(rightColumnEl);\r\n return {\r\n changeHomeDeliveryAddress: changeHomeDeliveryAddress,\r\n selectHomeDeliveryOption: selectHomeDeliveryOption\r\n };\r\n }\r\n checkout.createDeliveryInfo = createDeliveryInfo;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createDiscount(discountEl, deps) {\r\n var introEl;\r\n var titleEl;\r\n var formEl;\r\n var buttonEl;\r\n var inputContainerEl;\r\n var inputEl;\r\n var promoCodeEl;\r\n var deleteEl;\r\n var discountTextEl;\r\n var mgmLinkEl;\r\n var eventDisposables;\r\n var introClicker;\r\n var onMglLinkElClick = function (e) {\r\n e.preventDefault();\r\n var mgmPromoCode = discountTextEl.dataset.promocode || '';\r\n deps.changePromoCode(mgmPromoCode).then(function (res) {\r\n discountTextEl.classList.add('u-hide');\r\n if (res.InvalidPromoMessage) {\r\n onDeleteClick(mgmPromoCode);\r\n inputContainerEl.classList.add(\"a-form-input--error\");\r\n var messageEl = eXpress.html.querySelector(inputContainerEl, '.technical-discount-error', false);\r\n if (messageEl)\r\n messageEl.innerHTML = res.InvalidPromoMessage;\r\n return;\r\n }\r\n eXpress.analytics.trackMgmEvent('MGMPromoCodeRe-enabled');\r\n if (promoCodeEl)\r\n promoCodeEl.innerHTML = mgmPromoCode;\r\n discountEl.classList.add('m-discount--success');\r\n if (deps.refreshMiniBasket)\r\n deps.refreshMiniBasket(res.NewMiniBasketHtml);\r\n });\r\n };\r\n var onIntroClick = function () {\r\n initIntro();\r\n inputContainerEl.classList.remove(\"a-form-input--error\");\r\n };\r\n var onButtonClick = function (event) {\r\n event.preventDefault();\r\n var promoCode = inputEl.value;\r\n if (!promoCode)\r\n return;\r\n if (!eXpress.utils.isValidTextWithoutAngleBrackets(promoCode)) {\r\n setErrorMessage(promoCode);\r\n return;\r\n }\r\n deps.changePromoCode(promoCode).then(function (res) {\r\n if (res.InvalidPromoMessage) {\r\n inputContainerEl.classList.add(\"a-form-input--error\");\r\n var messageEl = eXpress.html.querySelector(inputContainerEl, '.technical-discount-error', false);\r\n if (messageEl)\r\n messageEl.innerHTML = res.InvalidPromoMessage;\r\n }\r\n else {\r\n if (promoCodeEl)\r\n promoCodeEl.innerHTML = promoCode;\r\n discountEl.classList.add('m-discount--success');\r\n if (deps.refreshMiniBasket)\r\n deps.refreshMiniBasket(res.NewMiniBasketHtml);\r\n }\r\n });\r\n };\r\n var clearError = function () {\r\n inputContainerEl.classList.remove(\"a-form-input--error\");\r\n };\r\n var refreshServerSide = function (newContent) {\r\n if (newContent) {\r\n replaceHtml(newContent);\r\n return;\r\n }\r\n };\r\n var replaceHtml = function (htmlString) {\r\n var node = eXpress.html.htmlToElement(htmlString);\r\n if (node) {\r\n discountEl.replaceWith(node);\r\n discountEl = node;\r\n addHandlers();\r\n }\r\n };\r\n var onDeleteClick = function (overrideinputValue) {\r\n deps.changePromoCode('').then(function (res) {\r\n inputEl.value = overrideinputValue || '';\r\n introEl.classList.add(\"u-hide\");\r\n titleEl.classList.remove(\"u-hide\");\r\n formEl.classList.add(\"m-discount--slide\");\r\n discountEl.classList.remove('m-discount--success');\r\n discountTextEl.classList.add(\"u-hide\");\r\n if (deps.refreshMiniBasket)\r\n deps.refreshMiniBasket(res.NewMiniBasketHtml);\r\n });\r\n };\r\n var initIntro = function () {\r\n discountEl.classList.remove(\"m-discount--clickable\");\r\n introEl.remove();\r\n introClicker.dispose();\r\n titleEl.classList.remove(\"u-hide\");\r\n formEl.classList.add(\"m-discount--slide\");\r\n };\r\n var setErrorMessage = function (promoCode, error) {\r\n var messageEl = eXpress.html.querySelector(inputContainerEl, '.technical-discount-error', false);\r\n inputContainerEl.classList.add(\"a-form-input--error\");\r\n if (messageEl) {\r\n var messageElDataError = error ? error : messageEl.getAttribute(\"data-error\");\r\n if (messageElDataError)\r\n messageEl.innerHTML = messageElDataError.replace(\"[promocode]\", promoCode);\r\n }\r\n };\r\n var addHandlers = function () {\r\n introEl = eXpress.html.querySelector(discountEl, \".technical-discount-intro\", true);\r\n titleEl = eXpress.html.querySelector(discountEl, \".technical-discount-title\", true);\r\n formEl = eXpress.html.querySelector(discountEl, \".technical-discount-from\", true);\r\n buttonEl = eXpress.html.querySelector(discountEl, \".technical-discount-button\", true);\r\n inputContainerEl = eXpress.html.querySelector(formEl, \".technical-discount-inputcontainer\", true);\r\n inputEl = eXpress.html.querySelector(inputContainerEl, \".technical-discount-input\", true);\r\n promoCodeEl = eXpress.html.querySelector(discountEl, \".technical-discount-promocode\", false);\r\n deleteEl = eXpress.html.querySelector(discountEl, \".technical-discount-delete\", true);\r\n discountTextEl = eXpress.html.querySelector(discountEl, '.technical-discount-text', true);\r\n mgmLinkEl = eXpress.html.querySelector(discountTextEl, '.technical-apply-mgm', false);\r\n if (eventDisposables)\r\n dispose();\r\n eventDisposables = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(buttonEl, 'click', onButtonClick),\r\n eXpress.html.addEventListener(deleteEl, 'click', function (_) { return onDeleteClick(); }),\r\n eXpress.html.addEventListener(inputEl, 'focus', clearError),\r\n eXpress.html.addEventListener(formEl, 'submit', onButtonClick)\r\n ]);\r\n introClicker = eXpress.html.addEventListener(discountEl, 'click', onIntroClick);\r\n if (mgmLinkEl)\r\n eXpress.html.addEventListener(mgmLinkEl, 'click', onMglLinkElClick);\r\n var invalidPromoCode = discountEl.dataset.invalidpromocode;\r\n var invalidPromoError = discountEl.dataset.invalidpromoerror;\r\n if (invalidPromoCode && invalidPromoError) {\r\n initIntro();\r\n setErrorMessage(invalidPromoCode, invalidPromoError);\r\n }\r\n };\r\n var dispose = function () {\r\n if (introClicker)\r\n introClicker.dispose();\r\n eventDisposables.dispose();\r\n };\r\n addHandlers();\r\n return {\r\n dispose: function () { return dispose(); },\r\n refreshServerSide: function (newContent) { return refreshServerSide(newContent); }\r\n };\r\n }\r\n checkout.createDiscount = createDiscount;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createGoogleMap(containerEl, googleApiKey, googleMapId, options) {\r\n if (options === void 0) { options = {}; }\r\n var apiKey = googleApiKey;\r\n var mapId = googleMapId;\r\n var googleMapEl;\r\n var infoWindow;\r\n var isInitialized = false;\r\n var isInError = false;\r\n var markerInfos = [];\r\n var currentMapCenter = { latitude: 0, longitude: 0 };\r\n var disableMapRecenter = false;\r\n var mapRecenterTimeout;\r\n var mapRecentered = options.mapRecentered;\r\n var centerMap = function (latitude, longitude) {\r\n if (isInitialized) {\r\n if (currentMapCenter.latitude != latitude || currentMapCenter.longitude != longitude)\r\n googleMapEl.setCenter(new google.maps.LatLng(latitude, longitude, false));\r\n currentMapCenter = { latitude: latitude, longitude: longitude };\r\n }\r\n else if (!isInError)\r\n setTimeout(function () { centerMap(latitude, longitude); }, 500);\r\n };\r\n var clearMarkers = function () {\r\n markerInfos.forEach(function (m) { return m.MapsMarker.map = null; });\r\n markerInfos = [];\r\n };\r\n var setMarkerContent = function (markerInfo) {\r\n if (markerInfo.IsSelected) {\r\n return;\r\n }\r\n if (!infoWindow) {\r\n infoWindow = new google.maps.InfoWindow({ minWidth: 280 });\r\n }\r\n else {\r\n infoWindow.close();\r\n }\r\n infoWindow.setContent(markerInfo.Marker.Text);\r\n disableMapRecenter = true;\r\n clearTimeout(mapRecenterTimeout);\r\n mapRecenterTimeout = setTimeout(function () { disableMapRecenter = false; }, 2000);\r\n infoWindow.open({ anchor: markerInfo.MapsMarker, shouldFocus: false });\r\n markerInfos.forEach(function (m) {\r\n m.MapsMarker.content = getNewPin(markerInfo.Marker, false);\r\n m.IsSelected = false;\r\n });\r\n markerInfo.MapsMarker.content = getNewPin(markerInfo.Marker, true);\r\n markerInfo.IsSelected = true;\r\n };\r\n var attachMarkerClickEvent = function (markerInfo) {\r\n markerInfo.MapsMarker.addListener('click', function (_a) {\r\n var domEvent = _a.domEvent, latLng = _a.latLng;\r\n eXpress.html.querySelectorAll(document, \".technical-select-store\").forEach(function (e) {\r\n e.classList.remove(\"m-address-tile--active\");\r\n if (e.dataset.indx && +e.dataset.indx === markerInfo.Marker.Index) {\r\n e.classList.add(\"m-address-tile--active\");\r\n if (e.parentElement)\r\n e.scrollIntoView({ behavior: \"smooth\" });\r\n setMarkerContent(markerInfo);\r\n }\r\n });\r\n });\r\n };\r\n var getNewPin = function (marker, isLarge) {\r\n var baseWidth = 22;\r\n var baseHeight = 33;\r\n var height = baseHeight * (isLarge ? 1.7 : 1);\r\n var pinSvgString = '';\r\n var parser = new DOMParser();\r\n var pinSvg = parser.parseFromString(pinSvgString, 'image/svg+xml').documentElement;\r\n return pinSvg;\r\n };\r\n var showMarker = function (marker) {\r\n addMarkerToMap(marker);\r\n var markerInfo = markerInfos.filter(function (m) { return m.Marker.Index === marker.Index; })[0];\r\n if (markerInfo)\r\n setMarkerContent(markerInfo);\r\n };\r\n var addMarkerToMap = function (marker) {\r\n if (!marker.Latitude\r\n || !marker.Longitude\r\n || isInError) {\r\n return;\r\n }\r\n if (!isInitialized) {\r\n setTimeout(function () { addMarkerToMap(marker); }, 500);\r\n return;\r\n }\r\n var currentMarkerInfo = markerInfos.filter(function (m) { return m.Marker.Index === marker.Index; })[0];\r\n if (!currentMarkerInfo) {\r\n currentMarkerInfo = {\r\n MapsMarker: new google.maps.marker.AdvancedMarkerElement({\r\n map: googleMapEl,\r\n position: new google.maps.LatLng(marker.Latitude, marker.Longitude),\r\n content: getNewPin(marker, false),\r\n gmpClickable: true,\r\n }),\r\n Marker: marker,\r\n IsSelected: false,\r\n };\r\n attachMarkerClickEvent(currentMarkerInfo);\r\n markerInfos.push(currentMarkerInfo);\r\n }\r\n };\r\n var initializeMap = function () {\r\n googleMapEl = new google.maps.Map(containerEl, {\r\n zoom: 12,\r\n center: new google.maps.LatLng(0, 0),\r\n scrollwheel: true,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP,\r\n streetViewControl: false,\r\n mapTypeControl: false,\r\n mapId: mapId\r\n });\r\n if (mapRecentered) {\r\n googleMapEl.addListener(\"center_changed\", eXpress.utils.debounce(triggerMapCentered, 200));\r\n }\r\n isInitialized = true;\r\n };\r\n var triggerMapCentered = function () {\r\n if (!mapRecentered || disableMapRecenter) {\r\n return;\r\n }\r\n var center = googleMapEl.getCenter();\r\n if (!center) {\r\n return;\r\n }\r\n var latitude = center.lat();\r\n var longitude = center.lng();\r\n if (currentMapCenter.latitude != latitude || currentMapCenter.longitude != longitude) {\r\n mapRecentered(center.lat(), center.lng());\r\n currentMapCenter = { latitude: latitude, longitude: longitude };\r\n }\r\n };\r\n var init = function () {\r\n var src = \"https://maps.googleapis.com/maps/api/js?key=\" + apiKey + \"&libraries=marker\";\r\n if (!document.querySelector('script[src=\"' + src + '\"]')) {\r\n loadScript(src).then(function () { return initializeMap(); }).fail(function () { return isInError = true; });\r\n }\r\n else {\r\n initializeMap();\r\n }\r\n };\r\n var loadScript = function (url) {\r\n var deferred = $.Deferred();\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.defer = true;\r\n script.src = url;\r\n var firstScriptEl = document.getElementsByTagName('script')[0];\r\n firstScriptEl.parentElement.insertBefore(script, firstScriptEl);\r\n script.addEventListener('load', function () {\r\n deferred.resolve();\r\n });\r\n script.addEventListener('error', function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise();\r\n };\r\n var deInit = function () {\r\n };\r\n init();\r\n return {\r\n createMarker: function (marker) { return addMarkerToMap(marker); },\r\n clearMarkers: clearMarkers,\r\n showMarker: showMarker,\r\n centerMap: centerMap,\r\n dispose: deInit\r\n };\r\n }\r\n checkout.createGoogleMap = createGoogleMap;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n var MiniBasket = (function () {\r\n function MiniBasket(miniBasketEl, deps) {\r\n this.miniBasketEl = miniBasketEl;\r\n this.deps = deps;\r\n this.addHandlers();\r\n }\r\n MiniBasket.prototype.addHandlers = function () {\r\n var productsCollapse = eXpress.html.querySelector(this.miniBasketEl, '.technical-products-collapsable-title', false);\r\n if (productsCollapse)\r\n eXpress.html.addEventListener(productsCollapse, \"click\", function (ev) {\r\n var parent = eXpress.html.getParentWithClassName(ev.currentTarget, \"technical-products-collapsable\");\r\n if (parent)\r\n parent.classList.toggle(\"is-collapse-open\");\r\n });\r\n var collapse = eXpress.html.querySelector(this.miniBasketEl, \".technical-discount-collapsable-title\", false);\r\n if (collapse)\r\n eXpress.html.addEventListener(collapse, \"click\", function (ev) {\r\n var parent = eXpress.html.getParentWithClassName(ev.currentTarget, \"technical-discount-collapsable\");\r\n if (parent)\r\n parent.classList.toggle(\"is-collapse-open\");\r\n });\r\n };\r\n MiniBasket.prototype.refreshServerSide = function (overrideMiniBasketHtml) {\r\n var _this = this;\r\n if (overrideMiniBasketHtml) {\r\n this.replaceHtml(overrideMiniBasketHtml);\r\n return;\r\n }\r\n if (!this.deps.refreshMiniBasketApi)\r\n return;\r\n this.deps.refreshMiniBasketApi().then(function (res) {\r\n _this.replaceHtml(res.NewMiniBasketHtml);\r\n });\r\n };\r\n MiniBasket.prototype.replaceHtml = function (htmlString) {\r\n var reOpenDiscounts = false;\r\n var configCollapse = true;\r\n var discountCollapse = eXpress.html.querySelector(this.miniBasketEl, \".technical-discount-collapsable\");\r\n if (discountCollapse && discountCollapse.classList.contains(\"is-collapse-open\"))\r\n reOpenDiscounts = true;\r\n var productsCollapse = eXpress.html.querySelector(this.miniBasketEl, '.technical-products-collapsable');\r\n var reOpenProducts = (productsCollapse && productsCollapse.classList.contains('is-collapse-open')) || false;\r\n var node = eXpress.html.htmlToElement(htmlString);\r\n if (node) {\r\n this.miniBasketEl.replaceWith(node);\r\n this.miniBasketEl = node;\r\n this.addHandlers();\r\n }\r\n discountCollapse = eXpress.html.querySelector(this.miniBasketEl, \".technical-discount-collapsable\");\r\n if (discountCollapse) {\r\n configCollapse = discountCollapse.dataset.collapsedConfig === 'true';\r\n if (reOpenDiscounts || !configCollapse)\r\n discountCollapse.classList.add('is-collapse-open');\r\n else\r\n discountCollapse.classList.remove('is-collapse-open');\r\n }\r\n productsCollapse = eXpress.html.querySelector(this.miniBasketEl, '.technical-products-collapsable');\r\n if (productsCollapse)\r\n productsCollapse.classList.toggle('is-collapse-open', reOpenProducts);\r\n };\r\n return MiniBasket;\r\n }());\r\n checkout.MiniBasket = MiniBasket;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createOrders(containerEl, deps) {\r\n var orderCount = +(containerEl.dataset.ordercount || 10);\r\n var selectedOrderNumber = eXpress.utils.getParameter(\"ordernumber\");\r\n var getOrderItemAsync = deps.getOrderItemAsync, openTrailDialog = deps.openTrailDialog;\r\n var createCollapsables = function (collapseEls) {\r\n var counter = 0;\r\n return collapseEls.map(function (el) {\r\n counter++;\r\n var orderId = el.dataset.orderid;\r\n var orderNumber = el.dataset.ordernumber;\r\n var onBeforeOpen = function () {\r\n var contentEl = eXpress.html.querySelector(el, \".technical-collapse-content\", true);\r\n if (contentEl.innerHTML.indexOf(\"m-order-tile\") !== -1)\r\n return $.Deferred().resolve().promise();\r\n return getOrderItemAsync(orderId)\r\n .then(function (res) {\r\n if (res.redirectUrl) {\r\n document.location.href = res.redirectUrl;\r\n }\r\n else {\r\n contentEl.insertAdjacentHTML(\"beforeend\", res.content);\r\n init1Order(eXpress.html.querySelector(contentEl, \".technical-order-details\", true));\r\n }\r\n });\r\n };\r\n var onBeforeClose = function () {\r\n if (counter === 1)\r\n eXpress.analytics.trackOrderStatusEvent('FirstTabClose', { orderNumber: orderNumber }, orderCount);\r\n return $.Deferred().resolve().promise();\r\n };\r\n var collapsable = eXpress.components.main.createCollapsable(el, {\r\n onBeforeOpen: onBeforeOpen,\r\n onBeforeClose: onBeforeClose,\r\n scrollIntoViewAfterOpen: true,\r\n titleElSelector: '.technical-collapsable-title'\r\n });\r\n collapsable.orderNumber = orderNumber;\r\n collapsable.isOldOrder = eXpress.html.hasClass(el, 'technical-older-order');\r\n return collapsable;\r\n });\r\n };\r\n var init1Order = function (orderDetails) {\r\n var isConsolidated = orderDetails.classList.contains('technical-consolidated-order');\r\n var orderNumber = orderDetails.dataset.ordernumber || '';\r\n var trailDialogButtons = eXpress.html.querySelectorAll(orderDetails, \".technical-trail-dialog\");\r\n trailDialogButtons.forEach(function (el) { return el.addEventListener('click', function (ev) {\r\n ev.preventDefault();\r\n openTrailDialog(ev);\r\n eXpress.analytics.trackOrderStatusEvent(\"TrailDialogOpen\", { orderNumber: orderNumber, orderStatus: el.dataset.status, paymentStatus: el.dataset.paid, pvc: el.dataset.pvc });\r\n }); });\r\n var pdfLink = eXpress.html.querySelector(orderDetails, '.technical-orderpdf-download');\r\n if (pdfLink)\r\n pdfLink.addEventListener('click', function (ev) { return eXpress.analytics.trackOrderStatusEvent(isConsolidated ? \"ConsolidatedOrderPDFDownload\" : \"OrderPDFDownload\", { orderNumber: orderNumber }); });\r\n var creditnoteLinks = eXpress.html.querySelectorAll(orderDetails, '.technical-creditnotepdf-download');\r\n creditnoteLinks.forEach(function (link) { return link.addEventListener('click', function (ev) { return eXpress.analytics.trackOrderStatusEvent(isConsolidated ? \"ConsolidatedCreditPDFDownload\" : \"CreditPDFDownload\", { orderNumber: orderNumber }); }); });\r\n eXpress.html.inViewTrigger(orderDetails, function () {\r\n eXpress.analytics.trackOrderStatusEvent(\"OrderDetailsRead\", { orderNumber: orderNumber });\r\n });\r\n var paymentDetailsEl = eXpress.html.querySelector(orderDetails, '.technical-payment-details', false);\r\n if (paymentDetailsEl) {\r\n eXpress.html.inViewTrigger(paymentDetailsEl, function () {\r\n eXpress.analytics.trackOrderStatusEvent(\"PaymentDetailsRead\", { orderNumber: orderNumber });\r\n });\r\n }\r\n var ttLinks = eXpress.html.querySelectorAll(orderDetails, '.technical-tracktrace');\r\n ttLinks.forEach(function (link) { return link.addEventListener('click', function (ev) {\r\n var orderStatus = '';\r\n var pvc = '';\r\n var parent = eXpress.html.getParentWithClassName(link, \"technical-order-item-tile\");\r\n if (parent) {\r\n var trailButton = eXpress.html.querySelector(parent, '.technical-trail-dialog', false);\r\n if (trailButton) {\r\n orderStatus = trailButton.dataset.status || '';\r\n pvc = trailButton.dataset.pvc || '';\r\n }\r\n }\r\n eXpress.analytics.trackOrderStatusEvent(\"TrackTraceClick\", { orderNumber: orderNumber, orderStatus: orderStatus, pvc: pvc });\r\n }); });\r\n var voucherLinks = eXpress.html.querySelectorAll(orderDetails, '.technical-voucher');\r\n voucherLinks.forEach(function (link) { return link.addEventListener('click', function (ev) {\r\n var orderStatus = '';\r\n var pvc = '';\r\n var parent = eXpress.html.getParentWithClassName(link, \"technical-order-item-tile\");\r\n if (parent) {\r\n var trailButton = eXpress.html.querySelector(parent, '.technical-trail-dialog', false);\r\n if (trailButton) {\r\n orderStatus = trailButton.dataset.status || '';\r\n pvc = trailButton.dataset.pvc || '';\r\n }\r\n }\r\n eXpress.analytics.trackOrderStatusEvent(\"VoucherDownload\", { orderNumber: orderNumber, orderStatus: orderStatus, pvc: pvc });\r\n }); });\r\n };\r\n var toggleOlderOrders = function (show) {\r\n return collapsables.filter(function (c) { return c.isOldOrder; })\r\n .forEach(function (c) { return show ? c.show() : c.hide(); });\r\n };\r\n var createOlderButton = function () {\r\n var buttonEl = eXpress.html.querySelector(containerEl, \".technical-show-older-button\", true);\r\n var hideLabel = buttonEl.dataset.hideLabel || \"\";\r\n var showLabel = buttonEl.textContent || \"\";\r\n var olderShown = false;\r\n var toggleButton = function () {\r\n olderShown = !olderShown;\r\n buttonEl.innerText = olderShown ? hideLabel : showLabel;\r\n eXpress.analytics.trackOrderStatusEvent(olderShown ? 'OlderOrdersShow' : 'OlderOrdersHide', {}, orderCount);\r\n toggleOlderOrders(olderShown);\r\n };\r\n buttonEl.addEventListener('click', toggleButton);\r\n return {\r\n dispose: function () { return buttonEl.removeEventListener('click', toggleButton); },\r\n toggleButton: toggleButton\r\n };\r\n };\r\n var collapsables = createCollapsables(eXpress.html.querySelectorAll(containerEl, \".m-collapsable\"));\r\n collapsables\r\n .filter(function (c) { return !c.isOldOrder; })\r\n .forEach(function (c) { return c.show(); });\r\n var olderButton = collapsables.some(function (o) { return o.isOldOrder || false; }) && createOlderButton();\r\n if (selectedOrderNumber) {\r\n collapsables.forEach(function (c) { return c.close(); });\r\n var selected = collapsables.filter(function (c) { return (c.orderNumber) ? c.orderNumber.toLowerCase() === selectedOrderNumber.toLowerCase() : false; })[0];\r\n if (selected.isOldOrder) {\r\n olderButton && olderButton.toggleButton();\r\n }\r\n selected.open(true);\r\n }\r\n var alreadyLoadedContent = eXpress.html.querySelectorAll(containerEl, \".technical-order-details\");\r\n alreadyLoadedContent.forEach(function (el) { init1Order(el); });\r\n var noOrders = eXpress.html.querySelector(containerEl, '.technical-no-orders', false);\r\n if (noOrders)\r\n eXpress.html.inViewTrigger(noOrders, function (element) {\r\n eXpress.analytics.trackOrderStatusEvent(\"NoOrdersRead\", {});\r\n });\r\n return {\r\n dispose: function () {\r\n collapsables.map(function (c) { return c.dispose(); });\r\n olderButton && olderButton.dispose();\r\n }\r\n };\r\n }\r\n checkout.createOrders = createOrders;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createPersonalData(containerEl, deps) {\r\n var sameAddressEl = eXpress.html.querySelector(containerEl, '.technical-same-address', false);\r\n var getZipCodeDefinitionAsync = deps.getZipCodeDefinitionAsync, getCitiesForCountryCodeAndSearchTerm = deps.getCitiesForCountryCodeAndSearchTerm, getGetCitiesByZipCode = deps.getGetCitiesByZipCode, submitPersonalData = deps.submitPersonalData, showTopMessage = deps.showTopMessage, hideTopMessage = deps.hideTopMessage, showAccountSoftDeletedPopup = deps.showAccountSoftDeletedPopup;\r\n var formEl = eXpress.html.querySelector(containerEl, '.technical-personal-data', true);\r\n var companyCheck = eXpress.html.querySelector(formEl, '.technical-company', false);\r\n var onSubmit = function (formData) {\r\n var billingAddress = {};\r\n var deliveryAddress = {};\r\n var keys = Object.keys(formData);\r\n for (var i = 0, l = keys.length; i < l; i++) {\r\n var key = keys[i];\r\n if (key.match('billingaddress')) {\r\n billingAddress[key.replace('billingaddress', '')] = formData[key];\r\n }\r\n else if (key.match('deliveryaddress')) {\r\n deliveryAddress[key.replace('deliveryaddress', '')] = formData[key];\r\n }\r\n }\r\n if (!sameAddressEl || (sameAddressEl && sameAddressEl.checked))\r\n deliveryAddress = billingAddress;\r\n var password = formData['password'];\r\n var convertedFormData = {\r\n BillingAddress: Object.keys(billingAddress).length !== 0 ? billingAddress : null,\r\n DeliveryAddress: Object.keys(deliveryAddress).length !== 0 ? deliveryAddress : null,\r\n MobileNumber: formData['mobilenumber'] || '',\r\n Password: password ? eXpress.utils.stringToBase64(password) : '',\r\n Email: formData['email'] || '',\r\n PersonalNumber: formData['personalnumber'] || '',\r\n VatNumber: companyCheck && companyCheck.checked ? formData['vatnumber'] || '' : '',\r\n CompanyName: companyCheck && companyCheck.checked ? formData['companyname'] || '' : '',\r\n FirstName: formData['firstname'] || '',\r\n LastName: formData['lastname'] || '',\r\n IsCompany: companyCheck && companyCheck.checked || false\r\n };\r\n submitPersonalData(convertedFormData)\r\n .then(function (res) {\r\n if (res.redirectUrl) {\r\n window.location.href = res.redirectUrl;\r\n return eXpress.utils.wait(99999);\r\n }\r\n res.softDelete && showAccountSoftDeletedPopup(convertedFormData, function (name, error) { return personalDataForm.setErrors(false, { name: name, error: error }); }, \"/cart/personaldata\");\r\n res.blockingErrorMessage && showTopMessage(components.main.PageLogStyle.Error, res.blockingErrorMessage);\r\n res.errorMessage && personalDataForm.setErrors(false, { name: res.errorMessage.name, error: res.errorMessage.message });\r\n return $.Deferred().resolve().promise();\r\n });\r\n return $.Deferred().resolve().promise();\r\n };\r\n var personalDataForm = createPersonalDataForm(formEl, {\r\n onSubmit: function (formData) { return eXpress.utils.showLoadingDialog(onSubmit(formData)); },\r\n getZipCodeDefinitionAsync: getZipCodeDefinitionAsync,\r\n getCitiesForCountryCodeAndSearchTerm: getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: getGetCitiesByZipCode,\r\n alternativeSubmitButtonEl: eXpress.html.querySelector(containerEl, '.technical-personal-data-submit', true),\r\n hideTopMessage: hideTopMessage,\r\n showTopMessage: showTopMessage,\r\n updateCountryText: false\r\n });\r\n return {\r\n updatePersonalDataForm: function (accountData) { return personalDataForm.updateWithAccountData(accountData); },\r\n finishPersonalDataInlineLogin: function (data) {\r\n personalDataForm.fillFormData(data);\r\n }\r\n };\r\n }\r\n checkout.createPersonalData = createPersonalData;\r\n function createPersonalDataForm(formEL, deps) {\r\n var privateCheck = eXpress.html.querySelector(formEL, '.technical-private', false);\r\n var companyCheck = eXpress.html.querySelector(formEL, '.technical-company', false);\r\n var sameAddressEl = eXpress.html.querySelector(formEL, '.technical-same-address', false);\r\n var companynameDivEl = eXpress.html.querySelector(formEL, '.technical-company-name', false);\r\n var deliveryAddress = eXpress.html.querySelector(formEL, '#technical-delivery-address', false);\r\n var billingAddress = eXpress.html.querySelector(formEL, '#technical-billing-address', false);\r\n var addressId = billingAddress === null || billingAddress === void 0 ? void 0 : billingAddress.dataset.id;\r\n var popupCase = addressId == '00000000-0000-0000-0000-000000000000' ? AddressComponentCases.Create : AddressComponentCases.Edit;\r\n var address = formEL.id === 'technical-address' ? formEL : eXpress.html.querySelector(formEL, '#technical-address', false);\r\n var companyVatNumberDivEl = eXpress.html.querySelector(formEL, '.technical-company-vat-number', false);\r\n var orderAsCompanyMessage = formEL.dataset.orderAsCompanyMessage || '';\r\n var showOrderAsCompanyMessage = formEL.dataset.showOrderAsCompanyMessage === 'true' || false;\r\n var companyChecked = companyCheck && companyCheck.checked;\r\n var billingAddressSection;\r\n var deliveryAddressSection;\r\n var addressSection;\r\n var eventDisposables = eXpress.utils.compositeDisposable([]);\r\n var onSubmit = deps.onSubmit, getZipCodeDefinitionAsync = deps.getZipCodeDefinitionAsync, getCitiesForCountryCodeAndSearchTerm = deps.getCitiesForCountryCodeAndSearchTerm, getGetCitiesByZipCode = deps.getGetCitiesByZipCode, alternativeSubmitButtonEl = deps.alternativeSubmitButtonEl, hideTopMessage = deps.hideTopMessage, showTopMessage = deps.showTopMessage, updateCountryText = deps.updateCountryText;\r\n var onSameAddressClick = function () {\r\n deliveryAddress && deliveryAddress.classList.toggle('u-hide');\r\n };\r\n var onCompanyCheckClick = function () {\r\n if (companyCheck && companyCheck.checked && !companyChecked) {\r\n companynameDivEl && companynameDivEl.classList.toggle('u-hide');\r\n companyVatNumberDivEl && companyVatNumberDivEl.classList.toggle('u-hide');\r\n companyChecked = true;\r\n var defaultRegionCode = formEL.dataset.defaultCountry || formEL.dataset.defaultRegions || '';\r\n var selectedDeliveryRegionCode = void 0, selectedBillingRegionCode = '';\r\n if (addressSection)\r\n addressSection.updateCountry(defaultRegionCode, true);\r\n if (deliveryAddressSection) {\r\n selectedDeliveryRegionCode = deliveryAddressSection.getCurrentRegionCode();\r\n deliveryAddressSection.updateCountry(defaultRegionCode, true);\r\n }\r\n if (billingAddressSection) {\r\n selectedBillingRegionCode = billingAddressSection.getCurrentRegionCode();\r\n billingAddressSection.updateCountry(defaultRegionCode, true);\r\n }\r\n if (showTopMessage && (defaultRegionCode !== selectedDeliveryRegionCode || defaultRegionCode !== selectedBillingRegionCode))\r\n showTopMessage(components.main.PageLogStyle.WarningOrange, orderAsCompanyMessage);\r\n personalDataForm.setErrors(true);\r\n }\r\n };\r\n var onPrivateCheckClick = function () {\r\n if (privateCheck && privateCheck.checked && companyChecked) {\r\n companynameDivEl && companynameDivEl.classList.toggle('u-hide');\r\n companyVatNumberDivEl && companyVatNumberDivEl.classList.toggle('u-hide');\r\n companyChecked = false;\r\n if (addressSection)\r\n addressSection.disableCountry(false, true);\r\n if (deliveryAddressSection)\r\n deliveryAddressSection.disableCountry(false, true);\r\n if (billingAddressSection)\r\n billingAddressSection.disableCountry(false, true);\r\n if (hideTopMessage)\r\n hideTopMessage();\r\n personalDataForm.setErrors(true);\r\n }\r\n };\r\n if (eventDisposables && eventDisposables.add) {\r\n if (sameAddressEl)\r\n eventDisposables.add([eXpress.html.addEventListener(sameAddressEl, 'click', onSameAddressClick)]);\r\n if (companyCheck)\r\n eventDisposables.add([eXpress.html.addEventListener(companyCheck, 'change', onCompanyCheckClick)]);\r\n if (privateCheck)\r\n eventDisposables.add([eXpress.html.addEventListener(privateCheck, 'click', onPrivateCheckClick)]);\r\n }\r\n var personalDataForm = components.main.initForm(formEL, {\r\n onSubmitForm: onSubmit,\r\n alternativeButton: alternativeSubmitButtonEl,\r\n submitOnEnter: true,\r\n validatorOptions: { onValidate: hideTopMessage }\r\n });\r\n if (deliveryAddress) {\r\n if (sameAddressEl)\r\n window.onload = function () { deliveryAddress.classList.toggle('u-hide', sameAddressEl.checked); };\r\n deliveryAddressSection = createAddressSection(deliveryAddress, popupCase, {\r\n getZipCodeDefinitionAsync: getZipCodeDefinitionAsync,\r\n updateCountryText: updateCountryText !== null && updateCountryText !== void 0 ? updateCountryText : true,\r\n getCitiesForCountryCodeAndSearchTerm: getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: getGetCitiesByZipCode,\r\n clearFormInput: function (name) { return personalDataForm.clearInputs(true, name); },\r\n }, 'deliveryAddress');\r\n }\r\n if (billingAddress) {\r\n billingAddressSection = createAddressSection(billingAddress, popupCase, {\r\n getZipCodeDefinitionAsync: getZipCodeDefinitionAsync,\r\n updateCountryText: updateCountryText !== null && updateCountryText !== void 0 ? updateCountryText : true,\r\n getCitiesForCountryCodeAndSearchTerm: getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: getGetCitiesByZipCode,\r\n clearFormInput: function (name) { return personalDataForm.clearInputs(true, name); }\r\n }, 'billingAddress');\r\n }\r\n if (address) {\r\n addressSection = createAddressSection(address, popupCase, {\r\n getZipCodeDefinitionAsync: getZipCodeDefinitionAsync,\r\n updateCountryText: updateCountryText !== null && updateCountryText !== void 0 ? updateCountryText : true,\r\n getCitiesForCountryCodeAndSearchTerm: getCitiesForCountryCodeAndSearchTerm,\r\n getGetCitiesByZipCode: getGetCitiesByZipCode,\r\n clearFormInput: function (name) { return personalDataForm.clearInputs(true, name); }\r\n }, 'address');\r\n }\r\n var updateWithAccountData = function (data) {\r\n var nameValues = [];\r\n Object.keys(data).map(function (k) {\r\n if (data[k]) {\r\n nameValues.push({ name: k, value: data[k] });\r\n }\r\n });\r\n personalDataForm.setValues.apply(personalDataForm, nameValues);\r\n personalDataForm.disableForm(false);\r\n data['Email'] && personalDataForm.disableInput('email');\r\n };\r\n var fillFormData = function (data, disableDefaultAddress, countryChangeEnabled) {\r\n var nameValues = [];\r\n if (deliveryAddress && data.DeliveryAddress) {\r\n fillAddress(data.DeliveryAddress, 'deliveryAddress', nameValues);\r\n deliveryAddressSection.updateCountry(nameValues.filter(function (nv) { return nv.name === 'deliveryAddressCountryId'; })[0].value);\r\n }\r\n if (billingAddress && data.BillingAddress) {\r\n fillAddress(data.BillingAddress, 'billingAddress', nameValues);\r\n billingAddressSection.updateCountry(nameValues.filter(function (nv) { return nv.name === 'billingAddressCountryId'; })[0].value);\r\n }\r\n if (data.PersonalNumber)\r\n nameValues.push({ name: 'PersonalNumber', value: data.PersonalNumber });\r\n if (data.MobileNumber)\r\n nameValues.push({ name: 'MobileNumber', value: data.MobileNumber });\r\n if (data.Email)\r\n nameValues.push({ name: 'Email', value: data.Email });\r\n personalDataForm.setValues.apply(personalDataForm, nameValues);\r\n if (!addressSection)\r\n personalDataForm.disableForm(false);\r\n personalDataForm.disableInput('email');\r\n if (!countryChangeEnabled) {\r\n if (data.BillingAddress)\r\n personalDataForm.disableInput(\"billingAddressCountryId\");\r\n if (data.DeliveryAddress)\r\n personalDataForm.disableInput(\"deliveryAddressCountryId\");\r\n }\r\n if (!data.BillingAddress && data.DeliveryAddress && data.DeliveryAddress.VatNumber && !addressSection)\r\n personalDataForm.disableInput('VatNumber');\r\n if (!data.BillingAddress && data.DeliveryAddress && data.DeliveryAddress.IsDefault || disableDefaultAddress)\r\n personalDataForm.disableInput('DefaultAddress');\r\n personalDataForm.hideInput('password');\r\n if (data.PersonalNumber)\r\n personalDataForm.hideInput('PersonalNumber');\r\n };\r\n var fillAddress = function (address, prefix, nameValues) {\r\n Object.keys(address).map(function (k) {\r\n if (address[k]) {\r\n var alternateName = undefined;\r\n if (k.toLocaleLowerCase() === 'regioncountryiso'\r\n || k.toLocaleLowerCase() === 'country') {\r\n alternateName = \"CountryId\";\r\n }\r\n if (k.toLocaleLowerCase() === 'isdefault') {\r\n nameValues.push({ name: 'DefaultAddress', value: address[k] });\r\n }\r\n else if (k.toLocaleLowerCase() === 'firstname' || k.toLocaleLowerCase() === 'lastname' || k.toLocaleLowerCase() === 'vatnumber' || k.toLocaleLowerCase() === 'companyname') {\r\n if (address[k] && !nameValues[k])\r\n nameValues.push({ name: k, value: address[k] });\r\n }\r\n else {\r\n nameValues.push({ name: prefix + (alternateName ? alternateName : k), value: address[k] });\r\n }\r\n }\r\n });\r\n };\r\n if (showOrderAsCompanyMessage && orderAsCompanyMessage && showTopMessage)\r\n showTopMessage(components.main.PageLogStyle.WarningOrange, orderAsCompanyMessage);\r\n return __assign(__assign(__assign(__assign(__assign({}, personalDataForm), deliveryAddressSection), billingAddressSection), addressSection), { fillFormData: fillFormData, updateWithAccountData: updateWithAccountData, dispose: function () {\r\n personalDataForm.dispose();\r\n deliveryAddressSection && deliveryAddressSection.dispose();\r\n billingAddressSection && billingAddressSection.dispose();\r\n addressSection && addressSection.dispose();\r\n eventDisposables.dispose();\r\n } });\r\n }\r\n checkout.createPersonalDataForm = createPersonalDataForm;\r\n var AddressComponentCases;\r\n (function (AddressComponentCases) {\r\n AddressComponentCases[AddressComponentCases[\"Edit\"] = 0] = \"Edit\";\r\n AddressComponentCases[AddressComponentCases[\"Create\"] = 1] = \"Create\";\r\n })(AddressComponentCases || (AddressComponentCases = {}));\r\n var createAddressSection = function (addressSectionEl, popupCase, deps, prefix) {\r\n var getZipCodeDefinitionAsync = deps.getZipCodeDefinitionAsync, updateCountryText = deps.updateCountryText, getCitiesForCountryCodeAndSearchTerm = deps.getCitiesForCountryCodeAndSearchTerm, getGetCitiesByZipCode = deps.getGetCitiesByZipCode, clearFormInput = deps.clearFormInput;\r\n var countrySelectBoxEl = eXpress.html.querySelector(addressSectionEl, \"#\".concat(prefix ? prefix : '', \"CountryId\"), true);\r\n var zipCodeInputEl = eXpress.html.querySelector(addressSectionEl, \"#\".concat(prefix ? prefix : '', \"ZipCode\"), true);\r\n var cityInputEl = eXpress.html.querySelector(addressSectionEl, \"#\".concat(prefix ? prefix : '', \"City\"), true);\r\n var citiesSelectEl = eXpress.html.querySelector(addressSectionEl, \"#\".concat(prefix ? prefix : '', \"Cities\"), true);\r\n var cityRemoveButtonEl = eXpress.html.querySelector(addressSectionEl, '.technical-remove-city-selection', true);\r\n var defaultRegions = addressSectionEl.dataset.defaultRegions || '';\r\n var deliveryAbroadEnabled = addressSectionEl.dataset.deliveryAbroadEnabled ? addressSectionEl.dataset.deliveryAbroadEnabled === \"true\" : true;\r\n var cityInputElWithAutoComplete;\r\n var firstZipCheck = popupCase === AddressComponentCases.Edit ? true : false;\r\n var previousZip = '-1';\r\n var findZipCodeFromSelect = true;\r\n var toggleCitySelectControl = function (show) {\r\n eXpress.html.toggleClass(eXpress.html.getParentWithClassName(citiesSelectEl, 'a-form-input'), 'u-hide', !show);\r\n eXpress.html.toggleClass(eXpress.html.getParentWithClassName(cityInputEl, 'a-form-input'), 'u-hide', show);\r\n eXpress.html.toggleClass(cityRemoveButtonEl, 'u-hide', !show);\r\n citiesSelectEl.removeAttribute(\"required\");\r\n cityInputEl.removeAttribute(\"required\");\r\n show\r\n ? citiesSelectEl.setAttribute(\"required\", \"required\")\r\n : cityInputEl.setAttribute(\"required\", \"required\");\r\n };\r\n var resetCityControls = function () {\r\n var prefix = 'deliveryaddress';\r\n clearFormInput(\"\".concat(prefix, \"city\"));\r\n clearFormInput(\"\".concat(prefix, \"cities\"));\r\n toggleCitySelectControl(false);\r\n };\r\n var onZipCodeKey = function (fromSelect) {\r\n var regexp = zipCodeInputEl.getAttribute('regex');\r\n var value = zipCodeInputEl.value;\r\n var currentCity = cityInputEl.value;\r\n var selectedIndex = -1;\r\n if (!value || (previousZip === value && !fromSelect) || !regexp || !new RegExp(regexp).test(value))\r\n return;\r\n previousZip = value;\r\n getGetCitiesByZipCode(value, currentSelectedCountry).then(function (res) {\r\n if (res && res.length) {\r\n citiesSelectEl.innerHTML = '';\r\n res.forEach(function (city, index) {\r\n var option = document.createElement('option');\r\n option.value = city;\r\n option.innerHTML = city;\r\n citiesSelectEl.appendChild(option);\r\n if (city.toLowerCase() == currentCity.toLowerCase())\r\n selectedIndex = index;\r\n });\r\n }\r\n if (selectedIndex > -1)\r\n citiesSelectEl.selectedIndex = selectedIndex;\r\n if (firstZipCheck && selectedIndex < 0) {\r\n firstZipCheck = false;\r\n }\r\n else {\r\n if (firstZipCheck)\r\n firstZipCheck = false;\r\n cityInputEl.value = (selectedIndex > -1 && currentCity) || (res && res[0] && res[0]) || currentCity;\r\n toggleCitySelectControl(res && res.length > 0);\r\n }\r\n });\r\n };\r\n var currentSelectedCountry = countrySelectBoxEl.value;\r\n var updateCountryAsync = function (regionCode, disable, resetOptions, overrideDefaultRegions) {\r\n if (disable === void 0) { disable = false; }\r\n if (resetOptions === void 0) { resetOptions = false; }\r\n if (overrideDefaultRegions === void 0) { overrideDefaultRegions = ''; }\r\n countrySetDisabled(false);\r\n if (regionCode && regionCode !== currentSelectedCountry) {\r\n if (countrySelectBoxEl.value !== regionCode)\r\n countrySelectBoxEl.value = regionCode;\r\n currentSelectedCountry = regionCode;\r\n disable && countrySetDisabled(disable, resetOptions, overrideDefaultRegions);\r\n var disableSetAsDefault_1 = false;\r\n if (overrideDefaultRegions)\r\n disableSetAsDefault_1 = !deliveryAbroadEnabled && overrideDefaultRegions.indexOf(currentSelectedCountry) !== -1;\r\n else\r\n disableSetAsDefault_1 = !deliveryAbroadEnabled && defaultRegions.indexOf(currentSelectedCountry) !== -1;\r\n return getZipCodeDefinitionAsync(regionCode)\r\n .then(function (res) { return res && updateAddressSection(res, disableSetAsDefault_1, true); });\r\n }\r\n else {\r\n disable && countrySetDisabled(disable, resetOptions, overrideDefaultRegions);\r\n return $.Deferred().resolve().promise();\r\n }\r\n };\r\n var onCountrySelectedChange = function () {\r\n currentSelectedCountry = countrySelectBoxEl.options[countrySelectBoxEl.selectedIndex].value;\r\n };\r\n var getSelectedCountry = function () {\r\n return currentSelectedCountry;\r\n };\r\n var updateAddressSection = function (def, disableSetAsDefault, clearInputs) {\r\n var inputEls = eXpress.html.querySelectorAll(addressSectionEl, 'input').filter(function (el) { return el.name.toLowerCase() !== \"deliveryaddressfirstname\" && el.name.toLowerCase() !== \"deliveryaddresslastname\"; });\r\n if (clearInputs)\r\n clearAddressSection(inputEls);\r\n var countryInputEl = eXpress.html.querySelector(document, '#' + (prefix ? prefix : '') + 'CountryId', false);\r\n if (updateCountryText && countryInputEl)\r\n updateAddressSelect(countryInputEl, def);\r\n var zipcodeInputEl = inputEls.find(function (x) { return x.id === ((prefix ? prefix : '') + 'ZipCode'); });\r\n if (zipcodeInputEl) {\r\n if (prefix && prefix === 'deliveryAddress')\r\n zipcodeInputEl.setAttribute(\"blacklist\", def.BlackListedZipCodes);\r\n updateAddressInput(zipcodeInputEl, def);\r\n if (countryInputEl)\r\n zipcodeInputEl.setAttribute('format-example', countryInputEl.value === 'SWE' && def.ExampleZipCodeOfRegion ? def.ExampleZipCodeOfRegion : '');\r\n }\r\n setPlaceholder(inputEls, prefix, 'ZipCode', def.LabelPlaceHolder);\r\n toggleCitySelectControl(false);\r\n citiesSelectEl.value = '';\r\n disableDefaultAddressInputElement(inputEls.filter(function (el) { return el.id === \"DefaultAddress\"; })[0], disableSetAsDefault);\r\n };\r\n var setPlaceholder = function (inputEls, prefix, key, val) {\r\n var inputEl = inputEls.find(function (x) { return x.id === ((prefix ? prefix : '') + key); });\r\n if (inputEl) {\r\n inputEl.setAttribute('placeholder', val !== null && val !== void 0 ? val : \"\");\r\n }\r\n };\r\n var disableDefaultAddressInputElement = function (el, disable) {\r\n if (el) {\r\n var parent_1 = eXpress.html.getParentWithClassName(el, \"a-form-input\");\r\n if (disable) {\r\n el.disabled = true;\r\n el.checked = false;\r\n parent_1 && parent_1.classList.add(\"a-form-input--disabled\");\r\n }\r\n else {\r\n el.disabled = false;\r\n parent_1 && parent_1.classList.remove(\"a-form-input--disabled\");\r\n }\r\n }\r\n };\r\n var clearAddressSection = function (inputEls, clearNames) {\r\n if (clearNames === void 0) { clearNames = false; }\r\n return inputEls.map(function (el) {\r\n if (clearNames)\r\n clearFormInput(el.id.toLowerCase());\r\n else if (!el.id.toLowerCase().includes('firstname') && !el.id.toLowerCase().includes('lastname')) {\r\n clearFormInput(el.id.toLowerCase());\r\n }\r\n });\r\n };\r\n var updateAddressSelect = function (selectEl, rule) {\r\n if (rule) {\r\n Object.keys(rule)\r\n .forEach(function (key) { return addOrRemoveRulesToSelect(selectEl, key.toLowerCase(), rule[key]); });\r\n }\r\n };\r\n var updateAddressInput = function (inputEl, rule) {\r\n if (rule) {\r\n Object.keys(rule)\r\n .forEach(function (key) { return addOrRemoveRulesToInput(inputEl, key.toLowerCase(), rule[key]); });\r\n }\r\n };\r\n var addAutoCompleteToInputEl = function (el) {\r\n return components.main.createTextInputWithAutoComplete(el, {\r\n autoCompleteSearch: function (term) { return getCitiesForCountryCodeAndSearchTerm(term, currentSelectedCountry)\r\n .then(function (res) { return res.map(function (x) { return ({ value: x.zipcode, label: x.name }); }); }); },\r\n onSelect: function (item) {\r\n item.value && (zipCodeInputEl.value = item.value);\r\n if (item.value)\r\n onZipCodeKey(findZipCodeFromSelect);\r\n },\r\n preventSubmit: true,\r\n });\r\n };\r\n var addOrRemoveRulesToSelect = function (el, ruleName, ruleValue) {\r\n var inputContainerEl = el.parentElement;\r\n var infoTextEl = eXpress.html.querySelector(inputContainerEl, '.a-form-input__info-text');\r\n switch (ruleName.toLowerCase()) {\r\n case 'nodeliverypossible':\r\n if (infoTextEl)\r\n infoTextEl.innerHTML = ruleValue ? ruleValue.toString() : \"\";\r\n break;\r\n default:\r\n break;\r\n }\r\n infoTextEl && infoTextEl.textContent\r\n ? eXpress.html.removeClass(infoTextEl, 'u-hide')\r\n : infoTextEl && eXpress.html.addClass(infoTextEl, 'u-hide');\r\n };\r\n var addOrRemoveRulesToInput = function (el, ruleName, ruleValue) {\r\n var inputContainerEl = el.parentElement;\r\n var labelEl = eXpress.html.querySelector(inputContainerEl, '.a-form-input__label');\r\n var infoTextEl = eXpress.html.querySelector(inputContainerEl, '.a-form-input__info-text');\r\n switch (ruleName.toLowerCase()) {\r\n case 'maxlength':\r\n case 'regex':\r\n case 'autocomplete':\r\n case 'mandatory':\r\n ruleValue ? el.setAttribute(ruleName, ruleName === \"autocomplete\" ? \"shipping \".concat(ruleValue.toString()) : ruleValue.toString()) : el.removeAttribute(ruleName);\r\n break;\r\n case 'label':\r\n if (labelEl)\r\n labelEl.innerHTML = ruleValue.toString();\r\n break;\r\n case 'labelplaceholder':\r\n el.setAttribute('placeholder', ruleValue.toString());\r\n break;\r\n case 'example':\r\n case 'examplezipcode':\r\n if (infoTextEl)\r\n infoTextEl.innerHTML = ruleValue ? ruleValue.toString() : \"\";\r\n break;\r\n case 'zipcodesuggestions':\r\n if (!el)\r\n break;\r\n el.dataset.zipcodesuggestions = ruleValue ? ruleValue.toString() : \"true\";\r\n cityInputElWithAutoComplete && cityInputElWithAutoComplete.dispose();\r\n if (ruleValue.toString() === \"true\")\r\n cityInputElWithAutoComplete = addAutoCompleteToInputEl(el);\r\n break;\r\n default:\r\n break;\r\n }\r\n infoTextEl && infoTextEl.textContent\r\n ? eXpress.html.removeClass(infoTextEl, 'u-hide')\r\n : infoTextEl && eXpress.html.addClass(infoTextEl, 'u-hide');\r\n };\r\n components.main.createSelectBox(countrySelectBoxEl.parentElement, function (value) { return updateCountryAsync(value || \"\", false, false); });\r\n components.main.createSelectBox(citiesSelectEl.parentElement, function (city) { return cityInputEl.value = city || \"\"; });\r\n if (cityInputEl && cityInputEl.dataset.zipcodesuggestions && cityInputEl.dataset.zipcodesuggestions === \"true\") {\r\n cityInputElWithAutoComplete = addAutoCompleteToInputEl(eXpress.html.querySelector(addressSectionEl, \"#\".concat(prefix ? prefix : '', \"City\"), true));\r\n }\r\n var disposableEvents = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(zipCodeInputEl, 'keyup', function () { onZipCodeKey(!findZipCodeFromSelect); }),\r\n eXpress.html.addEventListener(zipCodeInputEl, 'focusout', function () { onZipCodeKey(!findZipCodeFromSelect); }),\r\n eXpress.html.addEventListener(cityRemoveButtonEl, 'click', resetCityControls),\r\n eXpress.html.addEventListener(countrySelectBoxEl, 'change', onCountrySelectedChange)\r\n ]);\r\n var countrySetDisabled = function (disabled, resetOptions, overrideDefaultRegions) {\r\n var _a, _b;\r\n if (resetOptions === void 0) { resetOptions = false; }\r\n if (overrideDefaultRegions === void 0) { overrideDefaultRegions = ''; }\r\n var regionsToCheck = overrideDefaultRegions || defaultRegions;\r\n if (disabled) {\r\n var parentEl = eXpress.html.getParentWithClassName(countrySelectBoxEl, 'a-form-input');\r\n if (parentEl && parentEl.classList.contains('a-form-input--error'))\r\n parentEl.classList.remove('a-form-input--error');\r\n if (regionsToCheck.indexOf(\"|\") !== -1) {\r\n for (var i = 0; i < countrySelectBoxEl.options.length; i++) {\r\n var option = countrySelectBoxEl.options[i];\r\n if (defaultRegions.indexOf(option.value) === -1) {\r\n option.hidden = true;\r\n }\r\n }\r\n }\r\n else {\r\n countrySelectBoxEl.disabled = true;\r\n (_a = countrySelectBoxEl.parentElement) === null || _a === void 0 ? void 0 : _a.classList.add('a-form-input--disabled');\r\n }\r\n }\r\n else {\r\n if (regionsToCheck.indexOf(\"|\") !== -1 && resetOptions) {\r\n for (var i = 0; i < countrySelectBoxEl.options.length; i++) {\r\n var option = countrySelectBoxEl.options[i];\r\n option.hidden = false;\r\n }\r\n }\r\n else {\r\n countrySelectBoxEl.disabled = false;\r\n (_b = countrySelectBoxEl.parentElement) === null || _b === void 0 ? void 0 : _b.classList.remove('a-form-input--disabled');\r\n }\r\n }\r\n };\r\n onZipCodeKey(!findZipCodeFromSelect);\r\n return {\r\n dispose: function () {\r\n resetCityControls();\r\n disposableEvents.dispose();\r\n },\r\n updateCountry: updateCountryAsync,\r\n disableCountry: countrySetDisabled,\r\n getCurrentRegionCode: getSelectedCountry\r\n };\r\n };\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createPickDeliveryAddress(popupEl, deps) {\r\n var setDefaultDeliveryAddressAsync = deps.setDefaultDeliveryAddressAsync, deliveryAddressPopup = deps.deliveryAddressPopup, removeDeliveryAddressConfirmationPopup = deps.removeDeliveryAddressConfirmationPopup, parentDialog = deps.parentDialog, selectHomeDeliveryOption = deps.selectHomeDeliveryOption;\r\n var containerEl = eXpress.html.querySelector(popupEl, '.technical-pick-delivery-address-container', true);\r\n var buttonContainerEl = eXpress.html.querySelector(popupEl, '.technical-pick-delivery-address-button-container', true);\r\n var addressTileEls = eXpress.html.querySelectorAll(containerEl, '.technical-address-tile, .technical-default-address-tile');\r\n var disabledAddressTileEls = eXpress.html.querySelectorAll(containerEl, '.technical-address-tile-disabled');\r\n var editDeliveryAddressButtonEls = eXpress.html.querySelectorAll(containerEl, '.technical-edit-delivery-address-button');\r\n var deleteDeliveryAddressButtonEls = eXpress.html.querySelectorAll(containerEl, '.technical-delete-delivery-address-button');\r\n var addDeliveryAddressButtonEl = eXpress.html.querySelector(buttonContainerEl, '.technical-add-delivery-address-button', true);\r\n var onAddressTileClick = function (ev, el) {\r\n var currentEl = ev.target;\r\n if (!currentEl.classList.contains(\"technical-edit-delivery-address-button\") &&\r\n !currentEl.classList.contains(\"technical-delete-delivery-address-button\")) {\r\n var isDefaultAddressTile = eXpress.html.getParentWithClassName(currentEl, 'technical-default-address-tile');\r\n if (!isDefaultAddressTile) {\r\n var addressId = el.dataset.id ? el.dataset.id : \"\";\r\n if (addressId) {\r\n setDefaultDeliveryAddressAsync(addressId);\r\n }\r\n }\r\n else {\r\n selectHomeDeliveryOption();\r\n parentDialog.close(true);\r\n }\r\n }\r\n };\r\n var onDisabledAddressTileClick = function (ev, el) {\r\n var currentEl = ev.target;\r\n if (!currentEl.classList.contains(\"technical-edit-delivery-address-button\") && !currentEl.classList.contains(\"technical-delete-delivery-address-button\")) {\r\n ev.preventDefault();\r\n return false;\r\n }\r\n };\r\n var onAddAddressButtonClick = function (ev) {\r\n deliveryAddressPopup(parentDialog);\r\n };\r\n var onDeleteAddressButtonClick = function (ev) {\r\n var buttonEl = ev.target;\r\n var addressTileEl = eXpress.html.getParentWithClassName(buttonEl, 'technical-address-tile')\r\n || eXpress.html.getParentWithClassName(buttonEl, 'technical-address-tile-disabled');\r\n if (addressTileEl) {\r\n var addressId = addressTileEl.dataset.id ? addressTileEl.dataset.id : \"\";\r\n if (addressId !== \"\")\r\n removeDeliveryAddressConfirmationPopup(parentDialog, addressId);\r\n }\r\n };\r\n var onEditAddressButtonClick = function (ev) {\r\n var buttonEl = ev.target;\r\n var isDisabled = eXpress.html.getParentWithClassName(buttonEl, 'technical-address-tile-disabled') !== null;\r\n var addressTileEl = eXpress.html.getParentWithClassName(buttonEl, 'technical-address-tile')\r\n || eXpress.html.getParentWithClassName(buttonEl, 'technical-default-address-tile')\r\n || eXpress.html.getParentWithClassName(buttonEl, 'technical-address-tile-disabled');\r\n if (addressTileEl) {\r\n var countryChangeEnabled = addressTileEl.dataset.countryEnabled === \"true\";\r\n deliveryAddressPopup(parentDialog, addressTileEl.dataset.id || \"\", isDisabled, countryChangeEnabled);\r\n }\r\n };\r\n var init = function () {\r\n addressTileEls.forEach(function (el) { return el.addEventListener('click', function (ev) { return onAddressTileClick(ev, el); }); });\r\n disabledAddressTileEls.forEach(function (el) { return el.addEventListener('click', function (ev) { return onDisabledAddressTileClick(ev, el); }); });\r\n editDeliveryAddressButtonEls.forEach(function (el) { return el.addEventListener('click', onEditAddressButtonClick); });\r\n deleteDeliveryAddressButtonEls.forEach(function (el) { return el.addEventListener('click', onDeleteAddressButtonClick); });\r\n addDeliveryAddressButtonEl.addEventListener('click', onAddAddressButtonClick);\r\n };\r\n var deInit = function () {\r\n addressTileEls.forEach(function (el) { return el.removeEventListener(\"click\", function (ev) { return onAddressTileClick(ev, el); }); });\r\n disabledAddressTileEls.forEach(function (el) { return el.removeEventListener('click', function (ev) { return onDisabledAddressTileClick(ev, el); }); });\r\n editDeliveryAddressButtonEls.forEach(function (el) { return el.removeEventListener('click', onEditAddressButtonClick); });\r\n deleteDeliveryAddressButtonEls.forEach(function (el) { return el.removeEventListener(\"click\", onDeleteAddressButtonClick); });\r\n addDeliveryAddressButtonEl.removeEventListener(\"click\", onAddAddressButtonClick);\r\n };\r\n init();\r\n return {\r\n dispose: deInit\r\n };\r\n }\r\n checkout.createPickDeliveryAddress = createPickDeliveryAddress;\r\n })(checkout = components.checkout || (components.checkout = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var checkout;\r\n (function (checkout) {\r\n function createPickupDelivery(popupEl, deps) {\r\n var savePickupPointsAsync = deps.savePickupPointsAsync, searchPickupPoints = deps.searchPickupPoints, searchPickupPointsByCoordinates = deps.searchPickupPointsByCoordinates, changeCountryForPickupPointsAsync = deps.changeCountryForPickupPointsAsync, getCitiesForCountryCodeAndSearchTerm = deps.getCitiesForCountryCodeAndSearchTerm, createMarker = deps.createMarker, showMarker = deps.showMarker, centerMap = deps.centerMap, clearMarkers = deps.clearMarkers, showTopMessage = deps.showTopMessage, pickupChangeAddress = deps.pickupChangeAddress;\r\n var pickupFormEl = eXpress.html.querySelector(popupEl, 'form.technical-pickup-form', true);\r\n var pickupPointsListEl = eXpress.html.querySelector(popupEl, \".technical-pickuppoints\", true);\r\n var pickupPointsContainer = eXpress.html.querySelector(popupEl, \".technical-map-container\", true);\r\n var pickupPointsNoResultsEl = eXpress.html.querySelector(popupEl, \".technical-pickuppoints-noresult\", true);\r\n var selectedCountry = pickupFormEl.dataset.countrycode ? pickupFormEl.dataset.countrycode : 'BEL';\r\n var selectPickUpLabel = pickupFormEl.getAttribute(\"data-pickup-select-label\") || \"Select a collection point\";\r\n var zipCodeInputEl = eXpress.html.querySelector(pickupFormEl, \"#ZipCode\", true);\r\n var cityInputEl = eXpress.html.querySelector(pickupFormEl, '#City', true);\r\n var preselectedZipCode = zipCodeInputEl.value;\r\n var formComponent = components.main.initForm(pickupFormEl, {\r\n onSubmitForm: function (formData) { return searchAndUpdatePickuppoints(formData['zipcode']); },\r\n validatorOptions: ({\r\n shouldScrollToFirstError: true,\r\n ignore: '.ignore'\r\n })\r\n });\r\n var changeCountry = function (e) {\r\n e.preventDefault();\r\n var countryInputEl = e.currentTarget;\r\n selectedCountry = countryInputEl.value;\r\n changeCountryForPickups(selectedCountry, countryInputEl.options[countryInputEl.selectedIndex].getAttribute(\"data-searchtype\") || undefined, countryInputEl.options[countryInputEl.selectedIndex].getAttribute(\"selected\") || undefined);\r\n };\r\n var changeCountryForPickups = function (selectedCountry, searchType, selected) {\r\n changeCountryForPickupPointsAsync(selectedCountry, searchType)\r\n .then(function (res) {\r\n if (res) {\r\n var showOnlyInSearchEls = eXpress.html.querySelectorAll(popupEl, \".technical-show-in-search\");\r\n if (res.showAsList)\r\n showOnlyInSearchEls.forEach(function (el) { return el.classList.add(\"u-hide\"); });\r\n else\r\n showOnlyInSearchEls.forEach(function (el) { return el.classList.remove(\"u-hide\"); });\r\n if (zipCodeInputEl) {\r\n var zipCodeExampleEl = eXpress.html.querySelector(popupEl, \".technical-zipcode-exampletext\", false);\r\n if (zipCodeExampleEl && res.zipCodeExample)\r\n zipCodeExampleEl.innerHTML = res.zipCodeExample;\r\n if ((zipCodeInputEl.parentElement && zipCodeInputEl.parentElement.classList.contains('u-hide')) || (zipCodeInputEl.classList.contains('u-hide'))) {\r\n zipCodeInputEl.removeAttribute('required');\r\n zipCodeInputEl.removeAttribute('maxlength');\r\n zipCodeInputEl.removeAttribute('regex');\r\n zipCodeInputEl.value = '';\r\n }\r\n else {\r\n zipCodeInputEl.setAttribute('required', 'required');\r\n zipCodeInputEl.setAttribute(\"regex\", res.zipCodeRegex);\r\n if (selected && preselectedZipCode.match(res.zipCodeRegex))\r\n zipCodeInputEl.value = preselectedZipCode;\r\n }\r\n }\r\n if (zipCodeInputEl && zipCodeInputEl.value && !res.showAsList) {\r\n searchAndUpdatePickuppoints(zipCodeInputEl.value);\r\n }\r\n else {\r\n updatePickupPointList(res.res, true);\r\n attachEventAndMarkerForStoreToMap(true);\r\n }\r\n }\r\n return res;\r\n });\r\n };\r\n var updatePickupPointList = function (data, scollToTop) {\r\n pickupPointsListEl.innerHTML = data;\r\n if (scollToTop)\r\n pickupPointsContainer.scrollIntoView({ block: 'nearest' });\r\n };\r\n var searchAndUpdatePickuppoints = function (zipcode) {\r\n if (zipcode) {\r\n return searchPickupPoints(zipcode)\r\n .then(function (res) {\r\n if (res) {\r\n updatePickupPointList(res, true);\r\n attachEventAndMarkerForStoreToMap(true);\r\n }\r\n eXpress.html.toggleClass(pickupPointsNoResultsEl, 'u-hide', !!res);\r\n });\r\n }\r\n else {\r\n return $.Deferred().resolve().promise();\r\n }\r\n };\r\n var searchAndUpdatePickuppointsByCoordinates = function (latitude, longitude) {\r\n if (latitude && longitude) {\r\n return searchPickupPointsByCoordinates(latitude, longitude)\r\n .then(function (res) {\r\n if (res) {\r\n updatePickupPointList(res, false);\r\n attachEventAndMarkerForStoreToMap(false);\r\n }\r\n eXpress.html.toggleClass(pickupPointsNoResultsEl, 'u-hide', !!res);\r\n });\r\n }\r\n else {\r\n return $.Deferred().resolve().promise();\r\n }\r\n };\r\n var attachEventAndMarkerForStoreToMap = function (allowCenterMap) {\r\n if (pickupPointsListEl) {\r\n var storesToSelect_1 = eXpress.html.querySelectorAll(pickupPointsListEl, '.technical-select-store');\r\n if (allowCenterMap && storesToSelect_1.length > 0) {\r\n var latitude = parseFloat((storesToSelect_1[0].dataset.lat || \"0\").replace(\",\", \".\"));\r\n var longitude = parseFloat((storesToSelect_1[0].dataset.lng || \"0\").replace(\",\", \".\"));\r\n centerMap(latitude, longitude);\r\n }\r\n storesToSelect_1\r\n .forEach(function (el) {\r\n var radios = eXpress.html.querySelectorAll(document, '.technical-delivery-time-picker-radio');\r\n var arr = radios.filter(function (f) { return f.dataset.shipmentpartnername && el.dataset.partnercode && f.dataset.shipmentpartnername.toLowerCase() === el.dataset.partnercode.toLowerCase(); });\r\n if (arr.length) {\r\n var shipmentPartner = arr[0];\r\n if (shipmentPartner.dataset.showshipmentinfo && JSON.parse(shipmentPartner.dataset.showshipmentinfo)) {\r\n var shipmentPartnerExtraCost = eXpress.html.querySelector(el, '.technical-shipment-extracost');\r\n if (shipmentPartnerExtraCost) {\r\n shipmentPartnerExtraCost.classList.remove(\"u-hide\");\r\n shipmentPartnerExtraCost.innerHTML = shipmentPartner.dataset.shipmentextracost || '';\r\n }\r\n var shipmentPartnerFirstDeliveryDay = eXpress.html.querySelector(el, '.technical-shipment-day');\r\n if (shipmentPartnerFirstDeliveryDay) {\r\n shipmentPartnerFirstDeliveryDay.classList.remove(\"u-hide\");\r\n shipmentPartnerFirstDeliveryDay.innerHTML = shipmentPartner.dataset.shipmentday || '';\r\n }\r\n }\r\n }\r\n });\r\n pickupPointsContainer.classList.remove(\"u-hide\");\r\n if (storesToSelect_1 && storesToSelect_1.length < 1 && pickupPointsNoResultsEl) {\r\n pickupPointsContainer.classList.add(\"u-hide\");\r\n }\r\n else {\r\n clearMarkers();\r\n storesToSelect_1.map(function (el) { return ({\r\n data: convertStoreElement(el),\r\n el: el\r\n }); })\r\n .reverse()\r\n .forEach(function (e) { return selectStore(e, storesToSelect_1.indexOf(e.el)); });\r\n }\r\n }\r\n else if (pickupPointsContainer.classList.contains(\"u-hide\")) {\r\n pickupPointsContainer.classList.add(\"u-hide\");\r\n }\r\n };\r\n var showMarkerInfo = function (storeEl, marker) {\r\n if (pickupPointsListEl)\r\n eXpress.html.querySelectorAll(pickupPointsListEl, \".m-address-tile--active\")\r\n .forEach(function (el) { return el.classList.remove(\"m-address-tile--active\"); });\r\n storeEl.classList.add(\"m-address-tile--active\");\r\n showMarker(marker);\r\n };\r\n var selectStoreAndClose = function (store) {\r\n if (formComponent.validate()) {\r\n var firstNameEl = eXpress.html.querySelector(pickupFormEl, \"#FirstName\", true);\r\n var firstName = firstNameEl.value;\r\n var lastNameEl = eXpress.html.querySelector(pickupFormEl, \"#LastName\", true);\r\n var lastName = lastNameEl.value;\r\n var zipCodeInputEl_1 = eXpress.html.querySelector(pickupFormEl, \"#ZipCode\", true);\r\n var zipCode = zipCodeInputEl_1.value;\r\n var mobilePhoneEl = eXpress.html.querySelector(pickupFormEl, \"#MobileNumber\", false);\r\n var mobileNumber = mobilePhoneEl && mobilePhoneEl.value;\r\n var customerData_1 = {\r\n FirstName: firstName,\r\n LastName: lastName,\r\n PostalCode: zipCode,\r\n SendSms: !!mobileNumber,\r\n MobileNumber: mobileNumber || '',\r\n Address: store.address,\r\n PostalCity: store.postalCity,\r\n Name: store.name\r\n };\r\n savePickupPointsAsync(customerData_1, store.dropoffPointId, store.partnerCode)\r\n .then(function (res) {\r\n if (res.Error) {\r\n showTopMessage(components.main.PageLogStyle.Error, res.Error);\r\n }\r\n else {\r\n pickupChangeAddress(customerData_1.Name, \"\".concat(customerData_1.FirstName, \" \").concat(customerData_1.LastName, \", \").concat(customerData_1.Address, \", \").concat(customerData_1.PostalCity), store.forceShipmentMethods, store.phone, store.holiday);\r\n }\r\n });\r\n }\r\n };\r\n var selectStore = function (store, index) {\r\n var data = store.data, el = store.el;\r\n var selectButtonEl = eXpress.html.querySelector(el, \".technical-select-button\", true);\r\n var infoText = \"\\n\\t\\t\\t\\t